Socket
Socket
Sign inDemoInstall

@glimmer/object

Package Overview
Dependencies
Maintainers
11
Versions
160
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/object - npm Package Compare versions

Comparing version 0.38.1 to 0.39.0

dist/commonjs/es2017/index.d.ts.map

2

dist/commonjs/es2017/index.js

@@ -80,2 +80,2 @@ 'use strict';

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7MkNBQVMsQUFBTzs7Ozs7O21CQUFFLEFBQVM7Ozs7OzttQkFBRSxBQUFZLEFBQXdCLEFBQU0sQUFBYyxBQUFDLEFBQ3RGLEFBQU87Ozs7Ozs7OztxQkFBRSxBQUFROzs7Ozs7cUJBQUUsQUFBUSxBQUFFLEFBQU0sQUFBZ0IsQUFBQyxBQUNwRCxBQUFPOzs7Ozs7Ozs7a0JBQUUsQUFBSzs7Ozs7O2tCQUFFLEFBQVM7Ozs7OztrQkFBRSxBQUFPLEFBQUUsQUFBTSxBQUFhLEFBQUMsQUFDeEQsQUFBTzs7Ozs7Ozs7O3dCQUFFLEFBQVc7Ozs7Ozt3QkFBRSxBQUFLLEFBQUUsQUFBTSxBQUFtQixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCwgQ2xhc3NNZXRhLCBJbnN0YW5jZU1ldGEsIEdsaW1tZXJPYmplY3RGYWN0b3J5IH0gZnJvbSAnLi9saWIvb2JqZWN0JztcbmV4cG9ydCB7IGNvbXB1dGVkLCBvYnNlcnZlciB9IGZyb20gJy4vbGliL2NvbXB1dGVkJztcbmV4cG9ydCB7IE1peGluLCBCbHVlcHJpbnQsIHRvTWl4aW4gfSBmcm9tICcuL2xpYi9taXhpbic7XG5leHBvcnQgeyBhbGlhc01ldGhvZCwgYWxpYXMgfSBmcm9tICcuL2xpYi9kZXNjcmlwdG9ycyc7XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OzttQkFBQSxTOzs7Ozs7bUJBQUEsWTs7Ozs7Ozs7O3FCQUNBLFE7Ozs7OztxQkFBQSxROzs7Ozs7Ozs7a0JBQ0EsSzs7Ozs7O2tCQUFBLFM7Ozs7OztrQkFBQSxPOzs7Ozs7Ozs7d0JBQ0EsVzs7Ozs7O3dCQUFBLEsiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0LCBDbGFzc01ldGEsIEluc3RhbmNlTWV0YSwgR2xpbW1lck9iamVjdEZhY3RvcnkgfSBmcm9tICcuL2xpYi9vYmplY3QnO1xuZXhwb3J0IHsgY29tcHV0ZWQsIG9ic2VydmVyIH0gZnJvbSAnLi9saWIvY29tcHV0ZWQnO1xuZXhwb3J0IHsgTWl4aW4sIEJsdWVwcmludCwgdG9NaXhpbiB9IGZyb20gJy4vbGliL21peGluJztcbmV4cG9ydCB7IGFsaWFzTWV0aG9kLCBhbGlhcyB9IGZyb20gJy4vbGliL2Rlc2NyaXB0b3JzJztcbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -153,2 +153,2 @@ 'use strict';

function observer(..._args) {}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztRQWtNZ0IsQUFBUTtRQWVSLEFBQVE7O0FBak54QixBQUFPLEFBQUUsQUFBMEIsQUFBRSxBQUFJLEFBQUUsQUFBTSxBQUEyQixBQUFDOztBQUM3RSxBQUFPLEFBQUUsQUFBVyxBQUFhLEFBQU0sQUFBVSxBQUFDOztBQUNsRCxBQUFPLEFBQWMsQUFBUyxBQUFFLEFBQU0sQUFBUyxBQUFDLEFBeUJoRCxBQUFNOztNQUFPLEFBQWtCLEFBQVEsQUFBUztnQkFLbEMsQUFBNEIsVUFBRSxPQUFtQixBQUFFLElBQzdELEFBQUssQUFBRSxBQUFDO0FBSEY7YUFBUSxXQUFXLEFBQUUsQUFBQyxBQUk1QixBQUFJO2FBQUMsQUFBUSxXQUFHLEFBQVEsQUFBQyxBQUN6QixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBVTtlQUFDLEFBQWUsU0FBRSxBQUFXLEtBQUUsQUFBb0IsV0FDM0QsQUFBUztrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBMEIsaURBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUFDLEFBQy9FLEFBQVM7a0JBQUMsQUFBbUIsb0JBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQyxBQUNsRCxBQUFTO2tCQUFDLEFBQVUsV0FBQyxBQUFHLEFBQUMsQUFBQyxBQUMxQjtlQUFPLElBQUksQUFBUSxTQUFDLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQyxBQUNyQyxBQUFDO0FBRUQsQUFBUTthQUFDLEdBQUcsQUFBZSxPQUN6QixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUssTUFBQyxBQUFHLElBQUMsQUFBQyxBQUFDLEFBQUUsS0FBQyxBQUFDLEVBQUMs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QUM1RTtBQUZNLFdBRUEsQUFDTDtjQUFNLElBQUksQUFBUyxVQUFDLEFBQTJELEFBQUMsQUFBQyxBQUNsRixBQUNIO0FBQUM7QUFFRCxBQUFNO2tCQUFtQixHQUFHLEFBQVksT0FBRyxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQsIE1ldGEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IEVNUFRZX0NBQ0hFLCBDbGFzc01ldGEgfSBmcm9tICcuL29iamVjdCc7XG5pbXBvcnQgeyBEZXNjcmlwdG9yLCBCbHVlcHJpbnQgfSBmcm9tICcuL21peGluJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZEdldENhbGxiYWNrIHtcbiAgKCk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkU2V0Q2FsbGJhY2sge1xuICAodmFsOiBhbnkpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5Q29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gIChrZXk6IHN0cmluZywgdmFsOiBhbnkpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWREZXNjcmlwdG9yIHtcbiAgZ2V0PzogQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIHNldD86IENvbXB1dGVkU2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrO1xufVxuXG50eXBlIENvbXB1dGVkQXJndW1lbnQgPSBDb21wdXRlZEdldENhbGxiYWNrIHwgQ29tcHV0ZWREZXNjcmlwdG9yO1xuXG5leHBvcnQgY2xhc3MgQ29tcHV0ZWRCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gIHByaXZhdGUgZGVwczogc3RyaW5nW11bXTtcbiAgcHJpdmF0ZSBtZXRhZGF0YTogT2JqZWN0ID0ge307XG5cbiAgY29uc3RydWN0b3IoYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvciwgZGVwczogc3RyaW5nW11bXSA9IFtdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gICAgdGhpcy5kZXBzID0gZGVwcztcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBjbGFzc01ldGEuYWRkUmVmZXJlbmNlVHlwZUZvcihrZXksIENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50KGtleSwgdGhpcy5kZXBzKSk7XG4gICAgY2xhc3NNZXRhLmFkZFByb3BlcnR5TWV0YWRhdGEoa2V5LCB0aGlzLm1ldGFkYXRhKTtcbiAgICBjbGFzc01ldGEuYWRkU2xvdEZvcihrZXkpO1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWQodGhpcy5hY2Nlc3Nvcik7XG4gIH1cblxuICBwcm9wZXJ0eSguLi5wYXRoczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmRlcHMgPSBwYXRocy5tYXAoZCA9PiBkLnNwbGl0KCcuJykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbWV0YShvYmplY3Q6IE9iamVjdCkge1xuICAgIHRoaXMubWV0YWRhdGEgPSBvYmplY3Q7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB2b2xhdGlsZSgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5jbGFzcyBDb21wdXRlZCBpbXBsZW1lbnRzIERlc2NyaXB0b3Ige1xuICBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBjb25maWd1cmFibGU6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yO1xuICAnNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjJyA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcikge1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBmYWxzZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgZGVmaW5lKHByb3RvdHlwZTogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwga2V5LCB3cmFwQWNjZXNzb3IoaG9tZSwga2V5LCB0aGlzLmFjY2Vzc29yKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gd3JhcEFjY2Vzc29yKFxuICBob21lOiBPYmplY3QsXG4gIGFjY2Vzc29yTmFtZTogc3RyaW5nLFxuICBfZGVzYzogQ29tcHV0ZWREZXNjcmlwdG9yXG4pOiBQcm9wZXJ0eURlc2NyaXB0b3Ige1xuICBsZXQgc3VwZXJEZXNjID0gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGhvbWUsIGFjY2Vzc29yTmFtZSk7XG5cbiAgbGV0IG9yaWdpbmFsR2V0OiBDb21wdXRlZEdldENhbGxiYWNrO1xuICBsZXQgb3JpZ2luYWxTZXQ6IENvbXB1dGVkU2V0Q2FsbGJhY2s7XG5cbiAgbGV0IGRlc2M6IFByb3BlcnR5RGVzY3JpcHRvciA9IHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgfTtcblxuICBsZXQgZ2V0ID0gX2Rlc2MuZ2V0O1xuXG4gIGlmIChnZXQgJiYgZ2V0Lmxlbmd0aCA+IDApIHtcbiAgICBvcmlnaW5hbEdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChnZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW5hbEdldCA9IF9kZXNjLmdldCBhcyBDb21wdXRlZEdldENhbGxiYWNrO1xuICB9XG5cbiAgbGV0IHNldCA9IF9kZXNjLnNldDtcblxuICBpZiAoc2V0ICYmIHNldC5sZW5ndGggPiAxKSB7XG4gICAgb3JpZ2luYWxTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc2V0IGFzIGFueSkuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUsIHZhbHVlKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsU2V0ID0gX2Rlc2Muc2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgY2FjaGVHZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBpZiAoTWV0YS5leGlzdHModGhpcykpIHtcbiAgICAgIGxldCBzbG90ID0gTWV0YS5mb3IodGhpcykuZ2V0U2xvdHMoKVthY2Nlc3Nvck5hbWVdO1xuICAgICAgaWYgKHNsb3QgIT09IEVNUFRZX0NBQ0hFKSByZXR1cm4gc2xvdDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JpZ2luYWxHZXQuY2FsbCh0aGlzKTtcbiAgfTtcblxuICBsZXQgY2FjaGVTZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGlmIChvcmlnaW5hbFNldCkge1xuICAgIGNhY2hlU2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKHRoaXMpO1xuICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuXG4gICAgICBsZXQgcmV0ID0gb3JpZ2luYWxTZXQuY2FsbCh0aGlzLCB2YWx1ZSk7XG5cbiAgICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzbG90c1thY2Nlc3Nvck5hbWVdID0gcmV0O1xuICAgICAgfVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgc2xvdHNbYWNjZXNzb3JOYW1lXSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBpZiAoIXN1cGVyRGVzYyB8fCAndmFsdWUnIGluIHN1cGVyRGVzYykge1xuICAgIGRlc2MuZ2V0ID0gY2FjaGVHZXQ7XG4gICAgZGVzYy5zZXQgPSBjYWNoZVNldDtcbiAgICByZXR1cm4gZGVzYztcbiAgfVxuXG4gIGRlc2MuZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKHN1cGVyRGVzYyBhcyBhbnkpLmdldC5jYWxsKHRoaXMpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlR2V0LmNhbGwodGhpcyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICBkZXNjLnNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuc2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjYWNoZVNldC5jYWxsKHRoaXMsIHZhbCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gZGVzYztcbn1cblxuZnVuY3Rpb24gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHN1YmplY3Q6IGFueSwgbmFtZTogc3RyaW5nKSB7XG4gIGxldCBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdCwgbmFtZSk7XG4gIGxldCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihzdWJqZWN0KTtcbiAgd2hpbGUgKHR5cGVvZiBwZCA9PT0gJ3VuZGVmaW5lZCcgJiYgcHJvdG8gIT09IG51bGwpIHtcbiAgICBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG5hbWUpO1xuICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKTtcbiAgfVxuICByZXR1cm4gcGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZChkZXNjOiBDb21wdXRlZERlc2NyaXB0b3IpOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZChcbiAgZ2V0dGVyOiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFja1xuKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pOiBDb21wdXRlZEJsdWVwcmludDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKC4uLmFyZ3M6IGFueVtdKSB7XG4gIGxldCBsYXN0OiBDb21wdXRlZEFyZ3VtZW50ID0gYXJncy5wb3AoKTtcbiAgbGV0IGRlcHMgPSBhcmdzO1xuXG4gIGlmICh0eXBlb2YgbGFzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQoe1xuICAgICAgZ2V0OiBsYXN0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrLFxuICAgIH0pLnByb3BlcnR5KC4uLmRlcHMpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBsYXN0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQobGFzdCBhcyBDb21wdXRlZERlc2NyaXB0b3IpLnByb3BlcnR5KC4uLmRlcHMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbXB1dGVkIGV4cGVjdHMgYSBmdW5jdGlvbiBvciBhbiBvYmplY3QgYXMgbGFzdCBhcmd1bWVudCcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlciguLi5fYXJnczogYW55W10pIHt9XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvY29tcHV0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBa01NLFEsR0FBQSxRO1FBZUEsUSxHQUFBLFE7Ozs7QUFoTk47O0FBQ0E7O0FBeUJNLE1BQUEsaUJBQUEsU0FBQSxnQkFBQSxDQUEwQztBQUs5QyxnQkFBQSxRQUFBLEVBQTBDLE9BQTFDLEVBQUEsRUFBK0Q7QUFDN0Q7QUFITSxhQUFBLFFBQUEsR0FBQSxFQUFBO0FBSU4sYUFBQSxRQUFBLEdBQUEsUUFBQTtBQUNBLGFBQUEsSUFBQSxHQUFBLElBQUE7QUFDRDtBQUVELGVBQUEsT0FBQSxFQUFBLEdBQUEsRUFBQSxTQUFBLEVBQTZEO0FBQzNELGtCQUFBLG1CQUFBLENBQUEsR0FBQSxFQUFtQyxpREFBQSxHQUFBLEVBQWdDLEtBQW5FLElBQW1DLENBQW5DO0FBQ0Esa0JBQUEsbUJBQUEsQ0FBQSxHQUFBLEVBQW1DLEtBQW5DLFFBQUE7QUFDQSxrQkFBQSxVQUFBLENBQUEsR0FBQTtBQUNBLGVBQU8sSUFBQSxRQUFBLENBQWEsS0FBcEIsUUFBTyxDQUFQO0FBQ0Q7QUFFRCxhQUFTLEdBQVQsS0FBQSxFQUEyQjtBQUN6QixhQUFBLElBQUEsR0FBWSxNQUFBLEdBQUEsQ0FBVSxLQUFLLEVBQUEsS0FBQSxDQUEzQixHQUEyQixDQUFmLENBQVo7QUFDQSxlQUFBLElBQUE7QUFDRDtBQUVELFNBQUEsTUFBQSxFQUFtQjtBQUNqQixhQUFBLFFBQUEsR0FBQSxNQUFBO0FBQ0EsZUFBQSxJQUFBO0FBQ0Q7QUFFRCxlQUFRO0FBQ04sZUFBQSxJQUFBO0FBQ0Q7QUE5QjZDO1FBQTFDLGlCLEdBQUEsaUI7QUFpQ04sTUFBQSxRQUFBLENBQWM7QUFPWixnQkFBQSxRQUFBLEVBQXdDO0FBRnhDLGFBQUEsc0NBQUEsSUFBQSxJQUFBO0FBR0UsYUFBQSxRQUFBLEdBQUEsUUFBQTtBQUNBLGFBQUEsVUFBQSxHQUFBLEtBQUE7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QUEsUUFBQSxDQUFtQixHQUFuQixLQUFBLEVBQWtDLENBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludCwgTWV0YSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRU1QVFlfQ0FDSEUsIENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IERlc2NyaXB0b3IsIEJsdWVwcmludCB9IGZyb20gJy4vbWl4aW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gICh2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nLCB2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZERlc2NyaXB0b3Ige1xuICBnZXQ/OiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgc2V0PzogQ29tcHV0ZWRTZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2s7XG59XG5cbnR5cGUgQ29tcHV0ZWRBcmd1bWVudCA9IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBDb21wdXRlZERlc2NyaXB0b3I7XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgcHJpdmF0ZSBkZXBzOiBzdHJpbmdbXVtdO1xuICBwcml2YXRlIG1ldGFkYXRhOiBPYmplY3QgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yLCBkZXBzOiBzdHJpbmdbXVtdID0gW10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICB0aGlzLmRlcHMgPSBkZXBzO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGNsYXNzTWV0YS5hZGRSZWZlcmVuY2VUeXBlRm9yKGtleSwgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQoa2V5LCB0aGlzLmRlcHMpKTtcbiAgICBjbGFzc01ldGEuYWRkUHJvcGVydHlNZXRhZGF0YShrZXksIHRoaXMubWV0YWRhdGEpO1xuICAgIGNsYXNzTWV0YS5hZGRTbG90Rm9yKGtleSk7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZCh0aGlzLmFjY2Vzc29yKTtcbiAgfVxuXG4gIHByb3BlcnR5KC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVwcyA9IHBhdGhzLm1hcChkID0+IGQuc3BsaXQoJy4nKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtZXRhKG9iamVjdDogT2JqZWN0KSB7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG9iamVjdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZvbGF0aWxlKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmNsYXNzIENvbXB1dGVkIGltcGxlbWVudHMgRGVzY3JpcHRvciB7XG4gIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcblxuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yKSB7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gZmFsc2U7XG4gIH1cblxuICBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHdyYXBBY2Nlc3Nvcihob21lLCBrZXksIHRoaXMuYWNjZXNzb3IpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cmFwQWNjZXNzb3IoXG4gIGhvbWU6IE9iamVjdCxcbiAgYWNjZXNzb3JOYW1lOiBzdHJpbmcsXG4gIF9kZXNjOiBDb21wdXRlZERlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB7XG4gIGxldCBzdXBlckRlc2MgPSBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoaG9tZSwgYWNjZXNzb3JOYW1lKTtcblxuICBsZXQgb3JpZ2luYWxHZXQ6IENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIGxldCBvcmlnaW5hbFNldDogQ29tcHV0ZWRTZXRDYWxsYmFjaztcblxuICBsZXQgZGVzYzogUHJvcGVydHlEZXNjcmlwdG9yID0ge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9O1xuXG4gIGxldCBnZXQgPSBfZGVzYy5nZXQ7XG5cbiAgaWYgKGdldCAmJiBnZXQubGVuZ3RoID4gMCkge1xuICAgIG9yaWdpbmFsR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKGdldCBhcyBhbnkpLmNhbGwodGhpcywgYWNjZXNzb3JOYW1lKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsR2V0ID0gX2Rlc2MuZ2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgc2V0ID0gX2Rlc2Muc2V0O1xuXG4gIGlmIChzZXQgJiYgc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICBvcmlnaW5hbFNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgcmV0dXJuIChzZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSwgdmFsdWUpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luYWxTZXQgPSBfZGVzYy5zZXQgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgfVxuXG4gIGxldCBjYWNoZUdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGlmIChNZXRhLmV4aXN0cyh0aGlzKSkge1xuICAgICAgbGV0IHNsb3QgPSBNZXRhLmZvcih0aGlzKS5nZXRTbG90cygpW2FjY2Vzc29yTmFtZV07XG4gICAgICBpZiAoc2xvdCAhPT0gRU1QVFlfQ0FDSEUpIHJldHVybiBzbG90O1xuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW5hbEdldC5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIGxldCBjYWNoZVNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgaWYgKG9yaWdpbmFsU2V0KSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICAgIGxldCByZXQgPSBvcmlnaW5hbFNldC5jYWxsKHRoaXMsIHZhbHVlKTtcblxuICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSByZXQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSBzbG90c1thY2Nlc3Nvck5hbWVdID0gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghc3VwZXJEZXNjIHx8ICd2YWx1ZScgaW4gc3VwZXJEZXNjKSB7XG4gICAgZGVzYy5nZXQgPSBjYWNoZUdldDtcbiAgICBkZXNjLnNldCA9IGNhY2hlU2V0O1xuICAgIHJldHVybiBkZXNjO1xuICB9XG5cbiAgZGVzYy5nZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuZ2V0LmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVHZXQuY2FsbCh0aGlzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIGRlc2Muc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWw6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MgYXMgYW55KS5zZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlU2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBkZXNjO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdDogYW55LCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKTtcbiAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHN1YmplY3QpO1xuICB3aGlsZSAodHlwZW9mIHBkID09PSAndW5kZWZpbmVkJyAmJiBwcm90byAhPT0gbnVsbCkge1xuICAgIHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbmFtZSk7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiBwZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKGRlc2M6IENvbXB1dGVkRGVzY3JpcHRvcik6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKFxuICBnZXR0ZXI6IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrXG4pOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSk6IENvbXB1dGVkQmx1ZXByaW50O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pIHtcbiAgbGV0IGxhc3Q6IENvbXB1dGVkQXJndW1lbnQgPSBhcmdzLnBvcCgpO1xuICBsZXQgZGVwcyA9IGFyZ3M7XG5cbiAgaWYgKHR5cGVvZiBsYXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludCh7XG4gICAgICBnZXQ6IGxhc3QgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2ssXG4gICAgfSkucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGxhc3QgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludChsYXN0IGFzIENvbXB1dGVkRGVzY3JpcHRvcikucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29tcHV0ZWQgZXhwZWN0cyBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCBhcyBsYXN0IGFyZ3VtZW50Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVyKC4uLl9hcmdzOiBhbnlbXSkge31cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -63,2 +63,2 @@ 'use strict';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O1FBc0NnQixBQUFXO1FBOEJYLEFBQUs7O0FBcEVyQixBQUFPLEFBQUUsQUFBUyxBQUFFLEFBQVUsQUFBRSxBQUFNLEFBQVMsQUFBQzs7QUFFaEQsQUFBTyxBQUFFLEFBQWlCLEFBQUUsQUFBTSxBQUFZLEFBQUM7O0FBRS9DLE1BQU0sQUFBc0IsQUFBUSxBQUFVO2dCQUdoQyxBQUFZLE1BQ3RCLEFBQUssQUFBRSxBQUFDO0FBQ1IsQUFBSTthQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQztBQUVELEFBQU07V0FBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQWEsT0FDL0M7WUFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQWMsQUFBQyxBQUUvQixBQUFNO2VBQUMsQUFBYyxlQUFDLEFBQU0sUUFBRSxBQUFHO3dCQUNuQixBQUFJLEFBQ2hCLEFBQVk7MEJBQUUsQUFBSSxBQUNsQixBQUFHO2tCQUNEO3VCQUFPLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUNwQixBQUFDLEFBQ0YsQUFBQyxBQUFDLEFBQ0w7QUFQcUMsQUFPcEMsQUFDRjtBQVBLLEFBQVU7O0FBVGQ7QUFrQkYsTUFBTSxBQUFxQixBQUFRLEFBQVM7Z0JBRzlCLEFBQVksTUFDdEIsQUFBSyxBQUFFLEFBQUM7QUFDUixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBVTtlQUFDLEFBQWUsU0FBRSxBQUFZLE1BQUUsQUFBZ0IsT0FDeEQ7ZUFBTyxJQUFJLEFBQXFCLHNCQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUM5QyxBQUFDLEFBQ0Y7QUFFRCxBQUFNO0FBVko7cUJBVTBCLEFBQVksTUFDdEM7V0FBTyxJQUFJLEFBQW9CLHFCQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3hDLEFBQUM7O0FBRUQsTUFBTSxBQUFlLEFBQVEsQUFBaUI7Z0JBR2hDLEFBQWMsTUFDeEI7WUFBSSxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFDLEdBQUUsQ0FBQyxBQUFDLEFBQUMsQUFBQyxBQUMvQjtZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsQUFBQyxBQUVqQztZQUFJLEFBQUcsTUFBRyxZQUNSO21CQUFPLEFBQUksS0FBQyxBQUFNLE9BQUMsQ0FBQyxBQUFHLEtBQUUsQUFBQyxBQUFFLEFBQUUsTUFBQyxBQUFHLElBQUMsQUFBQyxBQUFDLElBQUUsQUFBSSxBQUFDLEFBQUMsQUFDL0MsQUFBQyxBQUFDO0FBRUY7WUFBSSxBQUFHLE1BQUcsVUFBb0IsQUFBVSxPQUN0QztnQkFBSSxBQUFDLElBQUcsQUFBTSxPQUFDLEFBQU0sT0FBQyxDQUFDLEFBQUcsS0FBRSxBQUFDLEFBQUUsQUFBRSxNQUFDLEFBQUcsSUFBQyxBQUFDLEFBQUMsSUFBRSxBQUFJLEFBQUMsQUFBQyxBQUNoRCxBQUFDO2NBQUMsQUFBSSxBQUFDLFFBQUcsQUFBSyxBQUFDLEFBQ2xCLEFBQUMsQUFBQztBQUVGLEFBQUs7Y0FBQyxFQUFFLEFBQUcsS0FBRSxBQUFHLEFBQUUsT0FBRSxDQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDNUIsQUFBSTthQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQztBQUVELEFBQVU7ZUFBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQWUsTUFDckQ7WUFBSSxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQUMsQUFBQyxPQUFLLEFBQUcsS0FBRSxNQUFNLElBQUksQUFBSyxBQUFDLHdCQUFrQixBQUFHLEFBQVcsQUFBQyxBQUFDLEdBQzVFO2VBQU8sQUFBSyxNQUFDLEFBQVUsV0FBQyxBQUFNLFFBQUUsQUFBRyxLQUFFLEFBQUksQUFBQyxBQUFDLEFBQzdDLEFBQUMsQUFDRjtBQUVELEFBQU07QUF2Qko7ZUF1Qm9CLEFBQVksTUFDaEM7V0FBTyxJQUFJLEFBQWMsZUFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUFDLEFBQUMsQUFDN0MsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsdWVwcmludCwgRGVzY3JpcHRvciB9IGZyb20gJy4vbWl4aW4nO1xuaW1wb3J0IHsgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgQ29tcHV0ZWRCbHVlcHJpbnQgfSBmcm9tICcuL2NvbXB1dGVkJztcblxuY2xhc3MgQWxpYXNNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lOiBPYmplY3QpIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMubmFtZSBhcyBzdHJpbmc7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQodGhpczogdHlwZW9mIHRhcmdldCkge1xuICAgICAgICByZXR1cm4gdGhpc1tuYW1lXTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgQWxpYXNNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZERlc2NyaXB0b3IodGhpcy5uYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXNNZXRob2QobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZEJsdWVwcmludChuYW1lKTtcbn1cblxuY2xhc3MgQWxpYXNCbHVlcHJpbnQgZXh0ZW5kcyBDb21wdXRlZEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nW10pIHtcbiAgICBsZXQgcGFyZW50ID0gbmFtZS5zbGljZSgwLCAtMSk7XG4gICAgbGV0IGxhc3QgPSBuYW1lW25hbWUubGVuZ3RoIC0gMV07XG5cbiAgICBsZXQgZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gbmFtZS5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICB9O1xuXG4gICAgbGV0IHNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IHAgPSBwYXJlbnQucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgICBwW2xhc3RdID0gdmFsdWU7XG4gICAgfTtcblxuICAgIHN1cGVyKHsgZ2V0LCBzZXQgfSwgW25hbWVdKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIG1ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGlmICh0aGlzLm5hbWVbMF0gPT09IGtleSkgdGhyb3cgbmV3IEVycm9yKGBTZXR0aW5nIGFsaWFzICcke2tleX0nIG9uIHNlbGZgKTtcbiAgICByZXR1cm4gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgbWV0YSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzKG5hbWU6IHN0cmluZyk6IEJsdWVwcmludCB7XG4gIHJldHVybiBuZXcgQWxpYXNCbHVlcHJpbnQobmFtZS5zcGxpdCgnLicpKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvZGVzY3JpcHRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUF1Q00sVyxHQUFBLFc7UUE4QkEsSyxHQUFBLEs7Ozs7QUFuRU47O0FBR0EsTUFBQSxxQkFBQSxTQUFBLGlCQUFBLENBQThDO0FBRzVDLGdCQUFBLElBQUEsRUFBd0I7QUFDdEI7QUFDQSxhQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0Q7QUFFRCxXQUFBLE1BQUEsRUFBQSxHQUFBLEVBQUEsS0FBQSxFQUErQztBQUM3QyxZQUFJLE9BQU8sS0FBWCxJQUFBO0FBRUEsZUFBQSxjQUFBLENBQUEsTUFBQSxFQUFBLEdBQUEsRUFBbUM7QUFDakMsd0JBRGlDLElBQUE7QUFFakMsMEJBRmlDLElBQUE7QUFHakMsa0JBQUc7QUFDRCx1QkFBTyxLQUFQLElBQU8sQ0FBUDtBQUNEO0FBTGdDLFNBQW5DO0FBT0Q7QUFsQjJDO0FBcUI5QyxNQUFBLG9CQUFBLFNBQUEsZ0JBQUEsQ0FBNEM7QUFHMUMsZ0JBQUEsSUFBQSxFQUF3QjtBQUN0QjtBQUNBLGFBQUEsSUFBQSxHQUFBLElBQUE7QUFDRDtBQUVELGVBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxLQUFBLEVBQTBEO0FBQ3hELGVBQU8sSUFBQSxxQkFBQSxDQUEwQixLQUFqQyxJQUFPLENBQVA7QUFDRDtBQVZ5QztBQWF0QyxTQUFBLFdBQUEsQ0FBQSxJQUFBLEVBQWtDO0FBQ3RDLFdBQU8sSUFBQSxvQkFBQSxDQUFQLElBQU8sQ0FBUDtBQUNEO0FBRUQsTUFBQSxjQUFBLFNBQUEsMkJBQUEsQ0FBOEM7QUFHNUMsZ0JBQUEsSUFBQSxFQUEwQjtBQUN4QixZQUFJLFNBQVMsS0FBQSxLQUFBLENBQUEsQ0FBQSxFQUFjLENBQTNCLENBQWEsQ0FBYjtBQUNBLFlBQUksT0FBTyxLQUFLLEtBQUEsTUFBQSxHQUFoQixDQUFXLENBQVg7QUFFQSxZQUFJLE1BQU0sWUFBQTtBQUNSLG1CQUFPLEtBQUEsTUFBQSxDQUFZLENBQUEsR0FBQSxFQUFBLENBQUEsS0FBWSxJQUF4QixDQUF3QixDQUF4QixFQUFQLElBQU8sQ0FBUDtBQURGLFNBQUE7QUFJQSxZQUFJLE1BQU0sVUFBQSxLQUFBLEVBQThCO0FBQ3RDLGdCQUFJLElBQUksT0FBQSxNQUFBLENBQWMsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxLQUFZLElBQTFCLENBQTBCLENBQTFCLEVBQVIsSUFBUSxDQUFSO0FBQ0EsY0FBQSxJQUFBLElBQUEsS0FBQTtBQUZGLFNBQUE7QUFLQSxjQUFNLEVBQUEsR0FBQSxFQUFOLEdBQU0sRUFBTixFQUFvQixDQUFwQixJQUFvQixDQUFwQjtBQUNBLGFBQUEsSUFBQSxHQUFBLElBQUE7QUFDRDtBQUVELGVBQUEsTUFBQSxFQUFBLEdBQUEsRUFBQSxJQUFBLEVBQXVEO0FBQ3JELFlBQUksS0FBQSxJQUFBLENBQUEsQ0FBQSxNQUFKLEdBQUEsRUFBMEIsTUFBTSxJQUFBLEtBQUEsQ0FBVSxrQkFBa0IsR0FBbEMsV0FBTSxDQUFOO0FBQzFCLGVBQU8sTUFBQSxVQUFBLENBQUEsTUFBQSxFQUFBLEdBQUEsRUFBUCxJQUFPLENBQVA7QUFDRDtBQXZCMkM7QUEwQnhDLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBNEI7QUFDaEMsV0FBTyxJQUFBLGNBQUEsQ0FBbUIsS0FBQSxLQUFBLENBQTFCLEdBQTBCLENBQW5CLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsdWVwcmludCwgRGVzY3JpcHRvciB9IGZyb20gJy4vbWl4aW4nO1xuaW1wb3J0IHsgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgQ29tcHV0ZWRCbHVlcHJpbnQgfSBmcm9tICcuL2NvbXB1dGVkJztcbmltcG9ydCB7IERpY3QgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuY2xhc3MgQWxpYXNNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IERpY3QsIGtleTogc3RyaW5nLCBfaG9tZTogT2JqZWN0KSB7XG4gICAgbGV0IG5hbWUgPSB0aGlzLm5hbWUgYXMgc3RyaW5nO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0KHRoaXM6IHR5cGVvZiB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbbmFtZV07XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIEFsaWFzTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIF9rZXk6IHN0cmluZywgX21ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgQWxpYXNNZXRob2REZXNjcmlwdG9yKHRoaXMubmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzTWV0aG9kKG5hbWU6IHN0cmluZyk6IEJsdWVwcmludCB7XG4gIHJldHVybiBuZXcgQWxpYXNNZXRob2RCbHVlcHJpbnQobmFtZSk7XG59XG5cbmNsYXNzIEFsaWFzQmx1ZXByaW50IGV4dGVuZHMgQ29tcHV0ZWRCbHVlcHJpbnQge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZ1tdKSB7XG4gICAgbGV0IHBhcmVudCA9IG5hbWUuc2xpY2UoMCwgLTEpO1xuICAgIGxldCBsYXN0ID0gbmFtZVtuYW1lLmxlbmd0aCAtIDFdO1xuXG4gICAgbGV0IGdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIG5hbWUucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgfTtcblxuICAgIGxldCBzZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIGxldCBwID0gcGFyZW50LnJlZHVjZSgob2JqLCBuKSA9PiBvYmpbbl0sIHRoaXMpO1xuICAgICAgcFtsYXN0XSA9IHZhbHVlO1xuICAgIH07XG5cbiAgICBzdXBlcih7IGdldCwgc2V0IH0sIFtuYW1lXSk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBtZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBpZiAodGhpcy5uYW1lWzBdID09PSBrZXkpIHRocm93IG5ldyBFcnJvcihgU2V0dGluZyBhbGlhcyAnJHtrZXl9JyBvbiBzZWxmYCk7XG4gICAgcmV0dXJuIHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIG1ldGEpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhcyhuYW1lOiBzdHJpbmcpOiBCbHVlcHJpbnQge1xuICByZXR1cm4gbmV3IEFsaWFzQmx1ZXByaW50KG5hbWUuc3BsaXQoJy4nKSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -278,2 +278,2 @@ 'use strict';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztRQWdNZ0IsQUFBTTtRQWtCTixBQUFnQjtRQVloQixBQUFPO1FBK0dQLEFBQVU7O0FBN1UxQixBQUFPLEFBQUUsQUFBVSxBQUFFLEFBQU0sQUFBMkIsQUFBQzs7QUFDdkQsQUFBTyxBQUFRLEFBQUksQUFBRSxBQUFNLEFBQUUsQUFBTSxBQUFlLEFBQUM7O0FBQ25ELEFBQXNCLEFBRXBCLEFBQVMsQUFDVCxBQUFZLEFBQ1osQUFBVyxBQUNaLEFBQU0sQUFBVSxBQUFDOztBQUVsQixBQUFPLEFBQUUsQUFBSSxBQUFFLEFBQU0sQUFBUyxBQUFDOztBQUUvQixNQUFNLEVBQUUsQUFBTyxBQUFFLFlBQUcsQUFBSyxBQUFDLEFBRTFCLEFBQU07QUFBQyxNQUFNLEFBQVUsa0NBQUcsQUFBc0MsQUFBQyxBQUNqRSxBQUFNO0FBQUMsTUFBTSxBQUFTLGdDQUFHLEFBQXNDLEFBQUMsQUFFaEUsQUFBTTtNQUFnQixBQUFVO2tCQUM5QjthQUFzQywwQ0FBRyxBQUFJLEFBQUMsQUFFaEQsQUFBQztBQUVELEFBQU07QUFMTjs7TUFLc0IsQUFBUztrQkFDN0I7YUFBc0MsMENBQUcsQUFBSSxBQUFDLEFBRWhELEFBQUM7QUFTRCxBQUFNO0FBWk47O01BWWEsQUFBSztnQkE0QkosQUFBc0IsWUFBRSxBQUFlO2FBM0JqQyxhQUFjLEFBQVcsQUFBQyxLQUFwQyxDQUFxQyxBQUF1QixBQUM1RDthQUFzQix5QkFBYSxBQUFFLEFBQUMsQUFDdEM7YUFBZ0IsbUJBQWEsQUFBRSxBQUFDLEFBQ2hDO2FBQVksZUFBWSxBQUFFLEFBQUMsQUF5QmpDLEFBQUk7YUFBQyxBQUFNLE9BQUMsQUFBVSxBQUFDLEFBQUMsQUFDeEIsQUFBSTthQUFDLEFBQVksYUFBQyxBQUFJLEtBQUMsR0FBRyxB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T0FBTyxBQUFRLFNBQUMsQUFBSyxNQUFDLEFBQUksTUFBRSxBQUFJLEFBQUMsQUFBQyxBQUU3QztZQUFJLEFBQVMsWUFBRyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQzVCLEFBQUk7YUFBQyxBQUFNLEFBQUcsQUFBSSxBQUFDLEFBRW5CO1lBQUksQUFDRjttQkFBTyxBQUFRLFNBQUMsQUFBSyxNQUFDLEFBQUksTUFBRSxBQUFJLEFBQUMsQUFBQyxBQUNuQztrQkFBUyxBQUNSLEFBQUk7aUJBQUMsQUFBTSxTQUFHLEFBQVMsQUFBQyxBQUN6QixBQUNIO0FBQUMsQUFBQyxBQUNKO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDTEFTU19NRVRBIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBEaWN0LCBkaWN0LCBhc3NpZ24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCBHbGltbWVyT2JqZWN0LCB7XG4gIEdsaW1tZXJPYmplY3RGYWN0b3J5LFxuICBDbGFzc01ldGEsXG4gIEluc3RhbmNlTWV0YSxcbiAgdHVyYm9jaGFyZ2UsXG59IGZyb20gJy4vb2JqZWN0JztcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuXG5leHBvcnQgY29uc3QgREVTQ1JJUFRPUiA9ICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnO1xuZXhwb3J0IGNvbnN0IEJMVUVQUklOVCA9ICc4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVzY3JpcHRvciB7XG4gICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnID0gdHJ1ZTtcbiAgYWJzdHJhY3QgZGVmaW5lKHByb3RvdHlwZTogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsdWVwcmludCB7XG4gICc4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDUnID0gdHJ1ZTtcbiAgYWJzdHJhY3QgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25zIHtcbiAgY29uY2F0ZW5hdGVkUHJvcGVydGllcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbDtcbiAgbWVyZ2VkUHJvcGVydGllcz86IHN0cmluZ1tdIHwgc3RyaW5nO1xuICBfc3VwZXI/OiBGdW5jdGlvbjtcbiAgW2luZGV4OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBNaXhpbiB7XG4gIHByaXZhdGUgZXh0ZW5zaW9uczogRGljdDxhbnk+ID0gbnVsbCBhcyBhbnk7IC8vIGFzc2lnbmVkIGJlZm9yZSB1c2VkXG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGRlcGVuZGVuY2llczogTWl4aW5bXSA9IFtdO1xuXG4gIHN0YXRpYyBjcmVhdGUoLi4uYXJnczogKE1peGluIHwgRXh0ZW5zaW9ucylbXSkge1xuICAgIGxldCBleHRlbnNpb25zID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIFtdKTtcbiAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbnMgaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHt9LCBhcmdzIGFzIE1peGluW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGVwcyA9IGFyZ3Muc2xpY2UoMCwgLTEpLm1hcCh0b01peGluKTtcbiAgICAgIHJldHVybiBuZXcgdGhpcyhleHRlbnNpb25zIGFzIEV4dGVuc2lvbnMsIGRlcHMpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBtaXhpbnMob2JqOiBhbnkpOiBNaXhpbltdIHtcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSByZXR1cm4gW107XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICBpZiAoIW1ldGEpIHJldHVybiBbXTtcblxuICAgIHJldHVybiBtZXRhLmdldEFwcGxpZWRNaXhpbnMoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMsIG1peGluczogTWl4aW5bXSkge1xuICAgIHRoaXMucmVvcGVuKGV4dGVuc2lvbnMpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2goLi4ubWl4aW5zKTtcbiAgfVxuXG4gIGRldGVjdChvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgcmV0dXJuIG9iai5kZXBlbmRlbmNpZXMuaW5kZXhPZih0aGlzKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgbGV0IG1ldGEgPSBDbGFzc01ldGEuZm9yKG9iaik7XG4gICAgcmV0dXJuICEhbWV0YSAmJiBtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKTtcbiAgfVxuXG4gIHJlb3BlbihleHRlbnNpb25zOiBFeHRlbnNpb25zKSB7XG4gICAgaWYgKHRoaXMuZXh0ZW5zaW9ucykge1xuICAgICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCh0b01peGluKHRoaXMuZXh0ZW5zaW9ucykpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXh0ZW5zaW9ucyA9PT0gJ29iamVjdCcgJiYgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnIGluIGV4dGVuc2lvbnMpIHtcbiAgICAgIGxldCBjb25jYXQ6IHN0cmluZ1tdO1xuICAgICAgbGV0IHJhd0NvbmNhdCA9IGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcblxuICAgICAgaWYgKGlzQXJyYXkocmF3Q29uY2F0KSkge1xuICAgICAgICBjb25jYXQgPSAocmF3Q29uY2F0IGFzIHN0cmluZ1tdKS5zbGljZSgpO1xuICAgICAgfSBlbHNlIGlmIChyYXdDb25jYXQgPT09IG51bGwgfHwgcmF3Q29uY2F0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uY2F0ID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25jYXQgPSBbcmF3Q29uY2F0IGFzIHN0cmluZ107XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBjb25jYXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnbWVyZ2VkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IG1lcmdlZDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3TWVyZ2VkID0gZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdNZXJnZWQpKSB7XG4gICAgICAgIG1lcmdlZCA9IChyYXdNZXJnZWQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd01lcmdlZCA9PT0gbnVsbCB8fCByYXdNZXJnZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtZXJnZWQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZCA9IFtyYXdNZXJnZWQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IG1lcmdlZDtcbiAgICB9XG5cbiAgICBsZXQgbm9ybWFsaXplZDogRGljdDxCbHVlcHJpbnQ+ID0gT2JqZWN0LmtleXMoZXh0ZW5zaW9ucykucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gZXh0ZW5zaW9uc1trZXldO1xuXG4gICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgTWV0aG9kQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgaWYgKHZhbHVlICYmIEJMVUVQUklOVCBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIG9ialtrZXldID0gbmV3IERhdGFCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCBkaWN0PEJsdWVwcmludD4oKSk7XG5cbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBkaWN0PGFueT4oKTtcbiAgICBhc3NpZ24odGhpcy5leHRlbnNpb25zLCB0dXJib2NoYXJnZShub3JtYWxpemVkKSk7XG4gIH1cblxuICBhcHBseSh0YXJnZXQ6IGFueSkge1xuICAgIGxldCBtZXRhOiBDbGFzc01ldGEgPSAodGFyZ2V0W0NMQVNTX01FVEFdID0gdGFyZ2V0W0NMQVNTX01FVEFdIHx8IG5ldyBDbGFzc01ldGEoKSk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uYXBwbHkodGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXModGFyZ2V0LCB0YXJnZXQsIG1ldGEpO1xuICAgIG1ldGEuYWRkTWl4aW4odGhpcyk7XG4gICAgbWV0YS5zZWFsKCk7XG4gICAgbWV0YS5yZXNlYWwodGFyZ2V0KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGUoT3JpZ2luYWw6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICBPcmlnaW5hbC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE9yaWdpbmFsLnByb3RvdHlwZSk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kUHJvdG90eXBlKE9yaWdpbmFsKSk7XG4gICAgdGhpcy5leHRlbmRQcm90b3R5cGVPbnRvKE9yaWdpbmFsLCBPcmlnaW5hbCk7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhTdWJjbGFzcy5wcm90b3R5cGUsIFBhcmVudC5wcm90b3R5cGUsIFN1YmNsYXNzW0NMQVNTX01FVEFdKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbih0aGlzKTtcbiAgfVxuXG4gIGV4dGVuZFN0YXRpYyhUYXJnZXQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRTdGF0aWMoVGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXMoVGFyZ2V0LCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoVGFyZ2V0KSwgVGFyZ2V0W0NMQVNTX01FVEFdW0NMQVNTX01FVEFdKTtcbiAgICBUYXJnZXRbQ0xBU1NfTUVUQV0uYWRkU3RhdGljTWl4aW4odGhpcyk7XG4gIH1cblxuICBtZXJnZVByb3BlcnRpZXModGFyZ2V0OiBPYmplY3QsIHBhcmVudDogT2JqZWN0LCBtZXRhOiBDbGFzc01ldGEpIHtcbiAgICBpZiAobWV0YS5oYXNBcHBsaWVkTWl4aW4odGhpcykpIHJldHVybjtcbiAgICBtZXRhLmFkZEFwcGxpZWRNaXhpbih0aGlzKTtcblxuICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRNZXJnZWRQcm9wZXJ0eShrLCBwYXJlbnRba10pKTtcbiAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMuZm9yRWFjaChrID0+IG1ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoaywgW10pKTtcblxuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKFxuICAgICAgdGFyZ2V0LFxuICAgICAgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnXG4gICAgKTtcbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IG1ldGEuZ2V0TWVyZ2VkUHJvcGVydGllcygpIH0pLmRlZmluZSh0YXJnZXQsICdtZXJnZWRQcm9wZXJ0aWVzJyk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLmV4dGVuc2lvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGxldCBleHRlbnNpb246IEJsdWVwcmludCA9IHRoaXMuZXh0ZW5zaW9ucyFba2V5XTtcbiAgICAgIGxldCBkZXNjID0gZXh0ZW5zaW9uLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXkgYXMgc3RyaW5nLCBtZXRhKTtcbiAgICAgIGRlc2MuZGVmaW5lKHRhcmdldCwga2V5IGFzIHN0cmluZywgcGFyZW50KTtcbiAgICB9KTtcblxuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogUk9PVCB9KS5kZWZpbmUodGFyZ2V0LCAnX3N1cGVyJyBhcyBzdHJpbmcpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEV4dGVuc2lvbiA9IE1peGluIHwgRXh0ZW5zaW9ucztcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZDxUIGV4dGVuZHMgR2xpbW1lck9iamVjdD4oXG4gIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4sXG4gIC4uLmV4dGVuc2lvbnM6IEV4dGVuc2lvbltdXG4pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+IHtcbiAgbGV0IFN1cGVyID0gUGFyZW50IGFzIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuXG4gIGxldCBTdWJjbGFzcyA9IGNsYXNzIGV4dGVuZHMgU3VwZXIge307XG4gIFN1YmNsYXNzW0NMQVNTX01FVEFdID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQoUGFyZW50W0NMQVNTX01FVEFdKTtcblxuICBsZXQgbWl4aW5zID0gZXh0ZW5zaW9ucy5tYXAodG9NaXhpbik7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5hZGRTdWJjbGFzcyhTdWJjbGFzcyBhcyBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KTtcbiAgbWl4aW5zLmZvckVhY2gobSA9PiBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbihtKSk7XG5cbiAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudCk7XG5cbiAgcmV0dXJuIFN1YmNsYXNzIGFzIGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGlua1N1YmNsYXNzZXMoUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5nZXRTdWJjbGFzc2VzKCkuZm9yRWFjaCgoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pID0+IHtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5yZXNldChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUGFyZW50LnByb3RvdHlwZSk7XG5cbiAgICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MsIFBhcmVudCk7XG5cbiAgICAvLyByZWN1cnNlIGludG8gc3ViLXN1YmNsYXNzZXNcbiAgICByZWxpbmtTdWJjbGFzc2VzKFN1YmNsYXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b01peGluKGV4dGVuc2lvbjogRXh0ZW5zaW9uKTogTWl4aW4ge1xuICBpZiAoZXh0ZW5zaW9uIGluc3RhbmNlb2YgTWl4aW4pIHJldHVybiBleHRlbnNpb247XG4gIGVsc2UgcmV0dXJuIG5ldyBNaXhpbihleHRlbnNpb24gYXMgT2JqZWN0LCBbXSk7XG59XG5cbmNsYXNzIFZhbHVlRGVzY3JpcHRvciBleHRlbmRzIERlc2NyaXB0b3Ige1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHdyaXRhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgdmFsdWU6IGFueTtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICB3cml0YWJsZSA9IHRydWUsXG4gICAgdmFsdWUsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLndyaXRhYmxlID0gd3JpdGFibGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgX2hvbWU/OiBhbnkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICB3cml0YWJsZTogdGhpcy53cml0YWJsZSxcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgd3JpdGFibGUgPSB0cnVlLFxuICAgIHZhbHVlLFxuICB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBsZXQgeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9ID0gdGhpcztcblxuICAgIGlmIChjbGFzc01ldGEuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5IGFzIHN0cmluZykpIHtcbiAgICAgIGNsYXNzTWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nLCB2YWx1ZSk7XG4gICAgICB2YWx1ZSA9IGNsYXNzTWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKTtcbiAgICB9IGVsc2UgaWYgKGNsYXNzTWV0YS5oYXNNZXJnZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgY2xhc3NNZXRhLmFkZE1lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcsIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldE1lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjY2Vzc29yQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIGdldDogKCkgPT4gYW55O1xuICBzZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIGdldCxcbiAgICBzZXQsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvciAmIHsgZ2V0OiBhbnk7IHNldDogYW55IH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy5nZXQgPSBnZXQ7XG4gICAgdGhpcy5zZXQgPSBzZXQ7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gbmV3IFZhbHVlRGVzY3JpcHRvcih7XG4gICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgZ2V0OiB0aGlzLmdldCxcbiAgICAgIHNldDogdGhpcy5zZXQsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgTWV0aG9kRGVzY3JpcHRvciBleHRlbmRzIFZhbHVlRGVzY3JpcHRvciB7XG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGhvbWU6IE9iamVjdCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB3cmFwTWV0aG9kKGhvbWUsIGtleSwgdGhpcy52YWx1ZSk7XG4gICAgc3VwZXIuZGVmaW5lKHRhcmdldCwga2V5LCBob21lKTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBEYXRhQmx1ZXByaW50IHtcbiAgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogTWV0aG9kRGVzY3JpcHRvciB7XG4gICAgbGV0IGRlc2MgPSBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBjbGFzc01ldGEpO1xuICAgIHJldHVybiBuZXcgTWV0aG9kRGVzY3JpcHRvcihkZXNjIGFzIFByb3BlcnR5RGVzY3JpcHRvcik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBNZXRob2QoaG9tZTogT2JqZWN0LCBtZXRob2ROYW1lOiBzdHJpbmcsIG9yaWdpbmFsOiAoLi4uYXJnczogYW55W10pID0+IGFueSkge1xuICBpZiAoISgobWV0aG9kTmFtZSBhcyBzdHJpbmcpIGluIGhvbWUpKSByZXR1cm4gbWF5YmVXcmFwKG9yaWdpbmFsKTtcblxuICBsZXQgc3VwZXJNZXRob2QgPSBob21lW21ldGhvZE5hbWVdO1xuXG4gIGxldCBmdW5jID0gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IHN1cGVyTWV0aG9kO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIChmdW5jIGFzIGFueSkuX193cmFwcGVkID0gdHJ1ZTtcblxuICByZXR1cm4gZnVuYztcbn1cblxuZnVuY3Rpb24gbWF5YmVXcmFwKG9yaWdpbmFsOiBGdW5jdGlvbikge1xuICBpZiAoJ19fd3JhcHBlZCcgaW4gb3JpZ2luYWwpIHJldHVybiBvcmlnaW5hbDtcblxuICByZXR1cm4gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvbWl4aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBaU1NLE0sR0FBQSxNO1FBa0JBLGdCLEdBQUEsZ0I7UUFZQSxPLEdBQUEsTztRQStHQSxVLEdBQUEsVTs7OztBQTdVTjs7QUFDQTs7QUFPQTs7QUFHQSxNQUFNLEVBQUEsT0FBQSxLQUFOLEtBQUE7QUFFTyxNQUFNLGtDQUFOLHNDQUFBO0FBQ0EsTUFBTSxnQ0FBTixzQ0FBQTtBQUVELE1BQUEsVUFBQSxDQUEwQjtBQUFoQyxrQkFBQTtBQUNFLGFBQUEsc0NBQUEsSUFBQSxJQUFBO0FBRUQ7QUFIK0I7UUFBMUIsVSxHQUFBLFU7QUFLQSxNQUFBLFNBQUEsQ0FBeUI7QUFBL0Isa0JBQUE7QUFDRSxhQUFBLHNDQUFBLElBQUEsSUFBQTtBQUVEO0FBSDhCO1FBQXpCLFMsR0FBQSxTO0FBWUEsTUFBQSxLQUFBLENBQVk7QUE0QmhCLGdCQUFBLFVBQUEsRUFBQSxNQUFBLEVBQW1EO0FBM0IzQyxhQUFBLFVBQUEsR0FBQSxJQUFBLENBMkIyQyxDQTNCTjtBQUNyQyxhQUFBLHNCQUFBLEdBQUEsRUFBQTtBQUNBLGFBQUEsZ0JBQUEsR0FBQSxFQUFBO0FBQ0EsYUFBQSxZQUFBLEdBQUEsRUFBQTtBQXlCTixhQUFBLE1BQUEsQ0FBQSxVQUFBO0FBQ0EsYUFBQSxZQUFBLENBQUEsSUFBQSxDQUF1QixHQUF2QixNQUFBO0FBQ0Q7QUF6QkQsV0FBQSxNQUFBLENBQWMsR0FBZCxJQUFBLEVBQTZDO0FBQzNDLFlBQUksYUFBYSxLQUFLLEtBQUEsTUFBQSxHQUF0QixDQUFpQixDQUFqQjtBQUVBLFlBQUksS0FBQSxNQUFBLEtBQUosQ0FBQSxFQUF1QjtBQUNyQixtQkFBTyxJQUFBLElBQUEsQ0FBQSxFQUFBLEVBQVAsRUFBTyxDQUFQO0FBREYsU0FBQSxNQUVPLElBQUksc0JBQUosS0FBQSxFQUFpQztBQUN0QyxtQkFBTyxJQUFBLElBQUEsQ0FBQSxFQUFBLEVBQVAsSUFBTyxDQUFQO0FBREssU0FBQSxNQUVBO0FBQ0wsZ0JBQUksT0FBTyxLQUFBLEtBQUEsQ0FBQSxDQUFBLEVBQWMsQ0FBZCxDQUFBLEVBQUEsR0FBQSxDQUFYLE9BQVcsQ0FBWDtBQUNBLG1CQUFPLElBQUEsSUFBQSxDQUFBLFVBQUEsRUFBUCxJQUFPLENBQVA7QUFDRDtBQUNGO0FBRUQsV0FBQSxNQUFBLENBQUEsR0FBQSxFQUFzQjtBQUNwQixZQUFJLE9BQUEsR0FBQSxLQUFBLFFBQUEsSUFBMkIsUUFBL0IsSUFBQSxFQUE2QyxPQUFBLEVBQUE7QUFFN0MsWUFBSSxPQUFPLGtCQUFBLEdBQUEsQ0FBWCxHQUFXLENBQVg7QUFDQSxZQUFJLENBQUosSUFBQSxFQUFXLE9BQUEsRUFBQTtBQUVYLGVBQU8sS0FBUCxnQkFBTyxFQUFQO0FBQ0Q7QUFPRCxXQUFBLEdBQUEsRUFBZTtBQUNiLFlBQUksT0FBQSxHQUFBLEtBQUEsUUFBQSxJQUEyQixRQUEvQixJQUFBLEVBQTZDLE9BQUEsS0FBQTtBQUU3QyxZQUFJLGVBQUosS0FBQSxFQUEwQjtBQUN4QixtQkFBTyxJQUFBLFlBQUEsQ0FBQSxPQUFBLENBQUEsSUFBQSxNQUFtQyxDQUExQyxDQUFBO0FBQ0Q7QUFFRCxZQUFJLE9BQU8sa0JBQUEsR0FBQSxDQUFYLEdBQVcsQ0FBWDtBQUNBLGVBQU8sQ0FBQyxDQUFELElBQUEsSUFBVSxLQUFBLGVBQUEsQ0FBakIsSUFBaUIsQ0FBakI7QUFDRDtBQUVELFdBQUEsVUFBQSxFQUE2QjtBQUMzQixZQUFJLEtBQUosVUFBQSxFQUFxQjtBQUNuQixpQkFBQSxZQUFBLENBQUEsSUFBQSxDQUF1QixRQUFRLEtBQS9CLFVBQXVCLENBQXZCO0FBQ0Q7QUFFRCxZQUFJLE9BQUEsVUFBQSxLQUFBLFFBQUEsSUFBa0MsNEJBQXRDLFVBQUEsRUFBOEU7QUFDNUUsZ0JBQUEsTUFBQTtBQUNBLGdCQUFJLFlBQVksV0FBaEIsc0JBQUE7QUFFQSxnQkFBSSxRQUFKLFNBQUksQ0FBSixFQUF3QjtBQUN0Qix5QkFBVSxVQUFWLEtBQVUsRUFBVjtBQURGLGFBQUEsTUFFTyxJQUFJLGNBQUEsSUFBQSxJQUFzQixjQUExQixTQUFBLEVBQW1EO0FBQ3hELHlCQUFBLEVBQUE7QUFESyxhQUFBLE1BRUE7QUFDTCx5QkFBUyxDQUFULFNBQVMsQ0FBVDtBQUNEO0FBRUQsbUJBQU8sV0FBUCxzQkFBQTtBQUNBLGlCQUFBLHNCQUFBLEdBQUEsTUFBQTtBQUNEO0FBRUQsWUFBSSxPQUFBLFVBQUEsS0FBQSxRQUFBLElBQWtDLHNCQUF0QyxVQUFBLEVBQXdFO0FBQ3RFLGdCQUFBLE1BQUE7QUFDQSxnQkFBSSxZQUFZLFdBQWhCLGdCQUFBO0FBRUEsZ0JBQUksUUFBSixTQUFJLENBQUosRUFBd0I7QUFDdEIseUJBQVUsVUFBVixLQUFVLEVBQVY7QUFERixhQUFBLE1BRU8sSUFBSSxjQUFBLElBQUEsSUFBc0IsY0FBMUIsU0FBQSxFQUFtRDtBQUN4RCx5QkFBQSxFQUFBO0FBREssYUFBQSxNQUVBO0FBQ0wseUJBQVMsQ0FBVCxTQUFTLENBQVQ7QUFDRDtBQUVELG1CQUFPLFdBQVAsZ0JBQUE7QUFDQSxpQkFBQSxnQkFBQSxHQUFBLE1BQUE7QUFDRDtBQUVELFlBQUksYUFBOEIsT0FBQSxJQUFBLENBQUEsVUFBQSxFQUFBLE1BQUEsQ0FBK0IsQ0FBQSxHQUFBLEVBQUEsR0FBQSxLQUFhO0FBQzVFLGdCQUFJLFFBQVEsV0FBWixHQUFZLENBQVo7QUFFQSxvQkFBUSxPQUFSLEtBQUE7QUFDRSxxQkFBQSxVQUFBO0FBQ0Usd0JBQUEsR0FBQSxJQUFXLElBQUEsZUFBQSxDQUFvQixFQUEvQixLQUErQixFQUFwQixDQUFYO0FBQ0E7QUFDRixxQkFBQSxRQUFBO0FBQ0Usd0JBQUksU0FBUyxhQUFiLEtBQUEsRUFBaUM7QUFDL0IsNEJBQUEsR0FBQSxJQUFBLEtBQUE7QUFDQTtBQUNEO0FBQ0g7QUFDQTtBQUNFLHdCQUFBLEdBQUEsSUFBVyxJQUFBLGFBQUEsQ0FBa0IsRUFBN0IsS0FBNkIsRUFBbEIsQ0FBWDtBQVhKO0FBY0EsbUJBQUEsR0FBQTtBQWpCZ0MsU0FBQSxFQUFsQyxpQkFBa0MsQ0FBbEM7QUFvQkEsYUFBQSxVQUFBLEdBQUEsaUJBQUE7QUFDQSwwQkFBTyxLQUFQLFVBQUEsRUFBd0IseUJBQXhCLFVBQXdCLENBQXhCO0FBQ0Q7QUFFRCxVQUFBLE1BQUEsRUFBaUI7QUFDZixZQUFJLE9BQW1CLE9BQUEsMkJBQUEsSUFBcUIsT0FBQSwyQkFBQSxLQUFzQixJQUFsRSxpQkFBa0UsRUFBbEU7QUFDQSxhQUFBLFlBQUEsQ0FBQSxPQUFBLENBQTBCLEtBQUssRUFBQSxLQUFBLENBQS9CLE1BQStCLENBQS9CO0FBQ0EsYUFBQSxlQUFBLENBQUEsTUFBQSxFQUFBLE1BQUEsRUFBQSxJQUFBO0FBQ0EsYUFBQSxRQUFBLENBQUEsSUFBQTtBQUNBLGFBQUEsSUFBQTtBQUNBLGFBQUEsTUFBQSxDQUFBLE1BQUE7QUFFQSxlQUFBLE1BQUE7QUFDRDtBQUVELG9CQUFBLFFBQUEsRUFBbUQ7QUFDakQsaUJBQUEsU0FBQSxHQUFxQixPQUFBLE1BQUEsQ0FBYyxTQUFuQyxTQUFxQixDQUFyQjtBQUNBLGFBQUEsWUFBQSxDQUFBLE9BQUEsQ0FBMEIsS0FBSyxFQUFBLGVBQUEsQ0FBL0IsUUFBK0IsQ0FBL0I7QUFDQSxhQUFBLG1CQUFBLENBQUEsUUFBQSxFQUFBLFFBQUE7QUFDRDtBQUVELHdCQUFBLFFBQUEsRUFBQSxNQUFBLEVBQTBGO0FBQ3hGLGFBQUEsWUFBQSxDQUFBLE9BQUEsQ0FBMEIsS0FBSyxFQUFBLG1CQUFBLENBQUEsUUFBQSxFQUEvQixNQUErQixDQUEvQjtBQUNBLGFBQUEsZUFBQSxDQUFxQixTQUFyQixTQUFBLEVBQXlDLE9BQXpDLFNBQUEsRUFBMkQsU0FBM0QsMkJBQTJELENBQTNEO0FBQ0EsaUJBQUEsMkJBQUEsRUFBQSxRQUFBLENBQUEsSUFBQTtBQUNEO0FBRUQsaUJBQUEsTUFBQSxFQUE4QztBQUM1QyxhQUFBLFlBQUEsQ0FBQSxPQUFBLENBQTBCLEtBQUssRUFBQSxZQUFBLENBQS9CLE1BQStCLENBQS9CO0FBQ0EsYUFBQSxlQUFBLENBQUEsTUFBQSxFQUE2QixPQUFBLGNBQUEsQ0FBN0IsTUFBNkIsQ0FBN0IsRUFBNEQsT0FBQSwyQkFBQSxFQUE1RCwyQkFBNEQsQ0FBNUQ7QUFDQSxlQUFBLDJCQUFBLEVBQUEsY0FBQSxDQUFBLElBQUE7QUFDRDtBQUVELG9CQUFBLE1BQUEsRUFBQSxNQUFBLEVBQUEsSUFBQSxFQUFtRTtBQUNqRSxZQUFJLEtBQUEsZUFBQSxDQUFKLElBQUksQ0FBSixFQUFnQztBQUNoQyxhQUFBLGVBQUEsQ0FBQSxJQUFBO0FBRUEsYUFBQSxnQkFBQSxDQUFBLE9BQUEsQ0FBOEIsS0FBSyxLQUFBLGlCQUFBLENBQUEsQ0FBQSxFQUEwQixPQUE3RCxDQUE2RCxDQUExQixDQUFuQztBQUNBLGFBQUEsc0JBQUEsQ0FBQSxPQUFBLENBQW9DLEtBQUssS0FBQSx1QkFBQSxDQUFBLENBQUEsRUFBekMsRUFBeUMsQ0FBekM7QUFFQSxZQUFBLGVBQUEsQ0FBb0IsRUFBRSxPQUFPLEtBQTdCLHlCQUE2QixFQUFULEVBQXBCLEVBQUEsTUFBQSxDQUFBLE1BQUEsRUFBQSx3QkFBQTtBQUlBLFlBQUEsZUFBQSxDQUFvQixFQUFFLE9BQU8sS0FBN0IsbUJBQTZCLEVBQVQsRUFBcEIsRUFBQSxNQUFBLENBQUEsTUFBQSxFQUFBLGtCQUFBO0FBRUEsZUFBQSxJQUFBLENBQVksS0FBWixVQUFBLEVBQUEsT0FBQSxDQUFxQyxPQUFNO0FBQ3pDLGdCQUFJLFlBQXVCLEtBQUEsVUFBQSxDQUEzQixHQUEyQixDQUEzQjtBQUNBLGdCQUFJLE9BQU8sVUFBQSxVQUFBLENBQUEsTUFBQSxFQUFBLEdBQUEsRUFBWCxJQUFXLENBQVg7QUFDQSxpQkFBQSxNQUFBLENBQUEsTUFBQSxFQUFBLEdBQUEsRUFBQSxNQUFBO0FBSEYsU0FBQTtBQU1BLFlBQUEsZUFBQSxDQUFvQixFQUFFLE9BQXRCLFdBQW9CLEVBQXBCLEVBQUEsTUFBQSxDQUFBLE1BQUEsRUFBQSxRQUFBO0FBQ0Q7QUExSmU7UUFBWixLLEdBQUEsSztBQStKQSxTQUFBLE1BQUEsQ0FBQSxNQUFBLEVBRUosR0FGSSxVQUFBLEVBRXNCO0FBRTFCLFFBQUksUUFBSixNQUFBO0FBRUEsUUFBSSxXQUFXLGNBQUEsS0FBQSxDQUFmLEVBQUE7QUFDQSxhQUFBLDJCQUFBLElBQXVCLHFCQUFBLFVBQUEsQ0FBd0IsT0FBL0MsMkJBQStDLENBQXhCLENBQXZCO0FBRUEsUUFBSSxTQUFTLFdBQUEsR0FBQSxDQUFiLE9BQWEsQ0FBYjtBQUNBLFdBQUEsMkJBQUEsRUFBQSxXQUFBLENBQUEsUUFBQTtBQUNBLFdBQUEsT0FBQSxDQUFlLEtBQUssU0FBQSwyQkFBQSxFQUFBLFFBQUEsQ0FBcEIsQ0FBb0IsQ0FBcEI7QUFFQSxzQkFBQSxjQUFBLENBQUEsUUFBQSxFQUFBLE1BQUE7QUFFQSxXQUFBLFFBQUE7QUFDRDtBQUVLLFNBQUEsZ0JBQUEsQ0FBQSxNQUFBLEVBQTREO0FBQ2hFLFdBQUEsMkJBQUEsRUFBQSxhQUFBLEdBQUEsT0FBQSxDQUEyQyxZQUF3QztBQUNqRixpQkFBQSwyQkFBQSxFQUFBLEtBQUEsQ0FBMkIsT0FBM0IsMkJBQTJCLENBQTNCO0FBQ0EsaUJBQUEsU0FBQSxHQUFxQixPQUFBLE1BQUEsQ0FBYyxPQUFuQyxTQUFxQixDQUFyQjtBQUVBLDBCQUFBLGNBQUEsQ0FBQSxRQUFBLEVBQUEsTUFBQTtBQUVBO0FBQ0EseUJBQUEsUUFBQTtBQVBGLEtBQUE7QUFTRDtBQUVLLFNBQUEsT0FBQSxDQUFBLFNBQUEsRUFBc0M7QUFDMUMsUUFBSSxxQkFBSixLQUFBLEVBQWdDLE9BQWhDLFNBQWdDLENBQWhDLEtBQ0ssT0FBTyxJQUFBLEtBQUEsQ0FBQSxTQUFBLEVBQVAsRUFBTyxDQUFQO0FBQ047QUFFRCxNQUFBLGVBQUEsU0FBQSxVQUFBLENBQXdDO0FBTXRDLGdCQUFZLEVBQ1YsYUFEVSxJQUFBLEVBRVYsZUFGVSxJQUFBLEVBR1YsV0FIVSxJQUFBLEVBQVosS0FBWSxFQUFaLEVBS3FCO0FBQ25CO0FBQ0EsYUFBQSxVQUFBLEdBQUEsVUFBQTtBQUNBLGFBQUEsWUFBQSxHQUFBLFlBQUE7QUFDQSxhQUFBLFFBQUEsR0FBQSxRQUFBO0FBQ0EsYUFBQSxLQUFBLEdBQUEsS0FBQTtBQUNEO0FBRUQsV0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLEtBQUEsRUFBK0M7QUFDN0MsZUFBQSxjQUFBLENBQUEsTUFBQSxFQUFBLEdBQUEsRUFBbUM7QUFDakMsd0JBQVksS0FEcUIsVUFBQTtBQUVqQywwQkFBYyxLQUZtQixZQUFBO0FBR2pDLHNCQUFVLEtBSHVCLFFBQUE7QUFJakMsbUJBQU8sS0FBSztBQUpxQixTQUFuQztBQU1EO0FBMUJxQztBQTZCbEMsTUFBQSxhQUFBLFNBQUEsU0FBQSxDQUFzQztBQU0xQyxnQkFBWSxFQUNWLGFBRFUsSUFBQSxFQUVWLGVBRlUsSUFBQSxFQUdWLFdBSFUsSUFBQSxFQUFaLEtBQVksRUFBWixFQUtxQjtBQUNuQjtBQUNBLGFBQUEsVUFBQSxHQUFBLFVBQUE7QUFDQSxhQUFBLFlBQUEsR0FBQSxZQUFBO0FBQ0EsYUFBQSxLQUFBLEdBQUEsS0FBQTtBQUNBLGFBQUEsUUFBQSxHQUFBLFFBQUE7QUFDRDtBQUVELGVBQUEsT0FBQSxFQUFBLEdBQUEsRUFBQSxTQUFBLEVBQTZEO0FBQzNELFlBQUksRUFBQSxVQUFBLEVBQUEsWUFBQSxFQUFBLFFBQUEsRUFBQSxLQUFBLEtBQUosSUFBQTtBQUVBLFlBQUksVUFBQSx1QkFBQSxDQUFKLEdBQUksQ0FBSixFQUFzRDtBQUNwRCxzQkFBQSx1QkFBQSxDQUFBLEdBQUEsRUFBQSxLQUFBO0FBQ0Esb0JBQVEsVUFBQSx1QkFBQSxDQUFSLEdBQVEsQ0FBUjtBQUZGLFNBQUEsTUFHTyxJQUFJLFVBQUEsaUJBQUEsQ0FBSixHQUFJLENBQUosRUFBZ0Q7QUFDckQsc0JBQUEsaUJBQUEsQ0FBQSxHQUFBLEVBQUEsS0FBQTtBQUNBLG9CQUFRLFVBQUEsaUJBQUEsQ0FBUixHQUFRLENBQVI7QUFDRDtBQUVELGVBQU8sSUFBQSxlQUFBLENBQW9CLEVBQUEsVUFBQSxFQUFBLFlBQUEsRUFBQSxRQUFBLEVBQTNCLEtBQTJCLEVBQXBCLENBQVA7QUFDRDtBQS9CeUM7UUFBdEMsYSxHQUFBLGE7QUFrQ0EsTUFBQSxpQkFBQSxTQUFBLFNBQUEsQ0FBbUQ7QUFNdkQsZ0JBQVksRUFDVixhQURVLElBQUEsRUFFVixlQUZVLElBQUEsRUFBQSxHQUFBLEVBQVosR0FBWSxFQUFaLEVBSzhDO0FBQzVDO0FBQ0EsYUFBQSxVQUFBLEdBQUEsVUFBQTtBQUNBLGFBQUEsWUFBQSxHQUFBLFlBQUE7QUFDQSxhQUFBLEdBQUEsR0FBQSxHQUFBO0FBQ0EsYUFBQSxHQUFBLEdBQUEsR0FBQTtBQUNEO0FBRUQsZUFBQSxPQUFBLEVBQUEsSUFBQSxFQUFBLFVBQUEsRUFBK0Q7QUFDN0QsZUFBTyxJQUFBLGVBQUEsQ0FBb0I7QUFDekIsd0JBQVksS0FEYSxVQUFBO0FBRXpCLDBCQUFjLEtBRlcsWUFBQTtBQUd6QixpQkFBSyxLQUhvQixHQUFBO0FBSXpCLGlCQUFLLEtBQUs7QUFKZSxTQUFwQixDQUFQO0FBTUQ7QUExQnNEO1FBQW5ELGlCLEdBQUEsaUI7QUE2Qk4sTUFBQSxnQkFBQSxTQUFBLGVBQUEsQ0FBOEM7QUFDNUMsV0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLElBQUEsRUFBZ0Q7QUFDOUMsYUFBQSxLQUFBLEdBQWEsV0FBQSxJQUFBLEVBQUEsR0FBQSxFQUFzQixLQUFuQyxLQUFhLENBQWI7QUFDQSxjQUFBLE1BQUEsQ0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLElBQUE7QUFDRDtBQUoyQztBQU85QyxNQUFBLGVBQUEsU0FBQSxhQUFBLENBQTJDO0FBQ3pDLGVBQUEsTUFBQSxFQUFBLEdBQUEsRUFBQSxTQUFBLEVBQTREO0FBQzFELFlBQUksT0FBTyxNQUFBLFVBQUEsQ0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFYLFNBQVcsQ0FBWDtBQUNBLGVBQU8sSUFBQSxnQkFBQSxDQUFQLElBQU8sQ0FBUDtBQUNEO0FBSndDO0FBT3JDLFNBQUEsVUFBQSxDQUFBLElBQUEsRUFBQSxVQUFBLEVBQUEsUUFBQSxFQUFzRjtBQUMxRixRQUFJLEVBQUcsY0FBUCxJQUFJLENBQUosRUFBdUMsT0FBTyxVQUFQLFFBQU8sQ0FBUDtBQUV2QyxRQUFJLGNBQWMsS0FBbEIsVUFBa0IsQ0FBbEI7QUFFQSxRQUFJLE9BQU8sVUFBOEIsR0FBOUIsSUFBQSxFQUE0QztBQUNyRCxZQUFJLENBQUosSUFBQSxFQUFXLE9BQU8sU0FBQSxLQUFBLENBQUEsSUFBQSxFQUFQLElBQU8sQ0FBUDtBQUVYLFlBQUksWUFBWSxLQUFoQixNQUFBO0FBQ0EsYUFBQSxNQUFBLEdBQUEsV0FBQTtBQUVBLFlBQUk7QUFDRixtQkFBTyxTQUFBLEtBQUEsQ0FBQSxJQUFBLEVBQVAsSUFBTyxDQUFQO0FBREYsU0FBQSxTQUVVO0FBQ1IsaUJBQUEsTUFBQSxHQUFBLFNBQUE7QUFDRDtBQVZILEtBQUE7QUFhQyxTQUFBLFNBQUEsR0FBQSxJQUFBO0FBRUQsV0FBQSxJQUFBO0FBQ0Q7QUFFRCxTQUFBLFNBQUEsQ0FBQSxRQUFBLEVBQXFDO0FBQ25DLFFBQUksZUFBSixRQUFBLEVBQTZCLE9BQUEsUUFBQTtBQUU3QixXQUFPLFVBQThCLEdBQTlCLElBQUEsRUFBNEM7QUFDakQsWUFBSSxDQUFKLElBQUEsRUFBVyxPQUFPLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBUCxJQUFPLENBQVA7QUFFWCxZQUFJLFlBQVksS0FBaEIsTUFBQTtBQUNBLGFBQUEsTUFBQSxHQUFBLFdBQUE7QUFFQSxZQUFJO0FBQ0YsbUJBQU8sU0FBQSxLQUFBLENBQUEsSUFBQSxFQUFQLElBQU8sQ0FBUDtBQURGLFNBQUEsU0FFVTtBQUNSLGlCQUFBLE1BQUEsR0FBQSxTQUFBO0FBQ0Q7QUFWSCxLQUFBO0FBWUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDTEFTU19NRVRBIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBkaWN0LCBhc3NpZ24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCBHbGltbWVyT2JqZWN0LCB7XG4gIEdsaW1tZXJPYmplY3RGYWN0b3J5LFxuICBDbGFzc01ldGEsXG4gIEluc3RhbmNlTWV0YSxcbiAgdHVyYm9jaGFyZ2UsXG59IGZyb20gJy4vb2JqZWN0JztcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRGljdCB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuXG5leHBvcnQgY29uc3QgREVTQ1JJUFRPUiA9ICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnO1xuZXhwb3J0IGNvbnN0IEJMVUVQUklOVCA9ICc4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVzY3JpcHRvciB7XG4gICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnID0gdHJ1ZTtcbiAgYWJzdHJhY3QgZGVmaW5lKHByb3RvdHlwZTogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsdWVwcmludCB7XG4gICc4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDUnID0gdHJ1ZTtcbiAgYWJzdHJhY3QgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25zIHtcbiAgY29uY2F0ZW5hdGVkUHJvcGVydGllcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbDtcbiAgbWVyZ2VkUHJvcGVydGllcz86IHN0cmluZ1tdIHwgc3RyaW5nO1xuICBfc3VwZXI/OiBGdW5jdGlvbjtcbiAgW2luZGV4OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBNaXhpbiB7XG4gIHByaXZhdGUgZXh0ZW5zaW9uczogRGljdDxhbnk+ID0gbnVsbCBhcyBhbnk7IC8vIGFzc2lnbmVkIGJlZm9yZSB1c2VkXG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGRlcGVuZGVuY2llczogTWl4aW5bXSA9IFtdO1xuXG4gIHN0YXRpYyBjcmVhdGUoLi4uYXJnczogKE1peGluIHwgRXh0ZW5zaW9ucylbXSkge1xuICAgIGxldCBleHRlbnNpb25zID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIFtdKTtcbiAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbnMgaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHt9LCBhcmdzIGFzIE1peGluW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGVwcyA9IGFyZ3Muc2xpY2UoMCwgLTEpLm1hcCh0b01peGluKTtcbiAgICAgIHJldHVybiBuZXcgdGhpcyhleHRlbnNpb25zIGFzIEV4dGVuc2lvbnMsIGRlcHMpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBtaXhpbnMob2JqOiBhbnkpOiBNaXhpbltdIHtcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSByZXR1cm4gW107XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICBpZiAoIW1ldGEpIHJldHVybiBbXTtcblxuICAgIHJldHVybiBtZXRhLmdldEFwcGxpZWRNaXhpbnMoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMsIG1peGluczogTWl4aW5bXSkge1xuICAgIHRoaXMucmVvcGVuKGV4dGVuc2lvbnMpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2goLi4ubWl4aW5zKTtcbiAgfVxuXG4gIGRldGVjdChvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgcmV0dXJuIG9iai5kZXBlbmRlbmNpZXMuaW5kZXhPZih0aGlzKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgbGV0IG1ldGEgPSBDbGFzc01ldGEuZm9yKG9iaik7XG4gICAgcmV0dXJuICEhbWV0YSAmJiBtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKTtcbiAgfVxuXG4gIHJlb3BlbihleHRlbnNpb25zOiBFeHRlbnNpb25zKSB7XG4gICAgaWYgKHRoaXMuZXh0ZW5zaW9ucykge1xuICAgICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCh0b01peGluKHRoaXMuZXh0ZW5zaW9ucykpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXh0ZW5zaW9ucyA9PT0gJ29iamVjdCcgJiYgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnIGluIGV4dGVuc2lvbnMpIHtcbiAgICAgIGxldCBjb25jYXQ6IHN0cmluZ1tdO1xuICAgICAgbGV0IHJhd0NvbmNhdCA9IGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcblxuICAgICAgaWYgKGlzQXJyYXkocmF3Q29uY2F0KSkge1xuICAgICAgICBjb25jYXQgPSAocmF3Q29uY2F0IGFzIHN0cmluZ1tdKS5zbGljZSgpO1xuICAgICAgfSBlbHNlIGlmIChyYXdDb25jYXQgPT09IG51bGwgfHwgcmF3Q29uY2F0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uY2F0ID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25jYXQgPSBbcmF3Q29uY2F0IGFzIHN0cmluZ107XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBjb25jYXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnbWVyZ2VkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IG1lcmdlZDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3TWVyZ2VkID0gZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdNZXJnZWQpKSB7XG4gICAgICAgIG1lcmdlZCA9IChyYXdNZXJnZWQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd01lcmdlZCA9PT0gbnVsbCB8fCByYXdNZXJnZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtZXJnZWQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZCA9IFtyYXdNZXJnZWQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IG1lcmdlZDtcbiAgICB9XG5cbiAgICBsZXQgbm9ybWFsaXplZDogRGljdDxCbHVlcHJpbnQ+ID0gT2JqZWN0LmtleXMoZXh0ZW5zaW9ucykucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gZXh0ZW5zaW9uc1trZXldO1xuXG4gICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgTWV0aG9kQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgaWYgKHZhbHVlICYmIEJMVUVQUklOVCBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIG9ialtrZXldID0gbmV3IERhdGFCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCBkaWN0PEJsdWVwcmludD4oKSk7XG5cbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBkaWN0PGFueT4oKTtcbiAgICBhc3NpZ24odGhpcy5leHRlbnNpb25zLCB0dXJib2NoYXJnZShub3JtYWxpemVkKSk7XG4gIH1cblxuICBhcHBseSh0YXJnZXQ6IGFueSkge1xuICAgIGxldCBtZXRhOiBDbGFzc01ldGEgPSAodGFyZ2V0W0NMQVNTX01FVEFdID0gdGFyZ2V0W0NMQVNTX01FVEFdIHx8IG5ldyBDbGFzc01ldGEoKSk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uYXBwbHkodGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXModGFyZ2V0LCB0YXJnZXQsIG1ldGEpO1xuICAgIG1ldGEuYWRkTWl4aW4odGhpcyk7XG4gICAgbWV0YS5zZWFsKCk7XG4gICAgbWV0YS5yZXNlYWwodGFyZ2V0KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGUoT3JpZ2luYWw6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICBPcmlnaW5hbC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE9yaWdpbmFsLnByb3RvdHlwZSk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kUHJvdG90eXBlKE9yaWdpbmFsKSk7XG4gICAgdGhpcy5leHRlbmRQcm90b3R5cGVPbnRvKE9yaWdpbmFsLCBPcmlnaW5hbCk7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhTdWJjbGFzcy5wcm90b3R5cGUsIFBhcmVudC5wcm90b3R5cGUsIFN1YmNsYXNzW0NMQVNTX01FVEFdKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbih0aGlzKTtcbiAgfVxuXG4gIGV4dGVuZFN0YXRpYyhUYXJnZXQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRTdGF0aWMoVGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXMoVGFyZ2V0LCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoVGFyZ2V0KSwgVGFyZ2V0W0NMQVNTX01FVEFdW0NMQVNTX01FVEFdKTtcbiAgICBUYXJnZXRbQ0xBU1NfTUVUQV0uYWRkU3RhdGljTWl4aW4odGhpcyk7XG4gIH1cblxuICBtZXJnZVByb3BlcnRpZXModGFyZ2V0OiBPYmplY3QsIHBhcmVudDogRGljdDxEaWN0PiwgbWV0YTogQ2xhc3NNZXRhKSB7XG4gICAgaWYgKG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpKSByZXR1cm47XG4gICAgbWV0YS5hZGRBcHBsaWVkTWl4aW4odGhpcyk7XG5cbiAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMuZm9yRWFjaChrID0+IG1ldGEuYWRkTWVyZ2VkUHJvcGVydHkoaywgcGFyZW50W2tdKSk7XG4gICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KGssIFtdKSk7XG5cbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IG1ldGEuZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpIH0pLmRlZmluZShcbiAgICAgIHRhcmdldCxcbiAgICAgICdjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzJ1xuICAgICk7XG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldE1lcmdlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUodGFyZ2V0LCAnbWVyZ2VkUHJvcGVydGllcycpO1xuXG4gICAgT2JqZWN0LmtleXModGhpcy5leHRlbnNpb25zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBsZXQgZXh0ZW5zaW9uOiBCbHVlcHJpbnQgPSB0aGlzLmV4dGVuc2lvbnMhW2tleV07XG4gICAgICBsZXQgZGVzYyA9IGV4dGVuc2lvbi5kZXNjcmlwdG9yKHRhcmdldCwga2V5IGFzIHN0cmluZywgbWV0YSk7XG4gICAgICBkZXNjLmRlZmluZSh0YXJnZXQsIGtleSBhcyBzdHJpbmcsIHBhcmVudCk7XG4gICAgfSk7XG5cbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IFJPT1QgfSkuZGVmaW5lKHRhcmdldCwgJ19zdXBlcicgYXMgc3RyaW5nKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBFeHRlbnNpb24gPSBNaXhpbiB8IEV4dGVuc2lvbnM7XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQ8VCBleHRlbmRzIEdsaW1tZXJPYmplY3Q+KFxuICBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+LFxuICAuLi5leHRlbnNpb25zOiBFeHRlbnNpb25bXVxuKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiB7XG4gIGxldCBTdXBlciA9IFBhcmVudCBhcyB0eXBlb2YgR2xpbW1lck9iamVjdDtcblxuICBsZXQgU3ViY2xhc3MgPSBjbGFzcyBleHRlbmRzIFN1cGVyIHt9O1xuICBTdWJjbGFzc1tDTEFTU19NRVRBXSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KFBhcmVudFtDTEFTU19NRVRBXSk7XG5cbiAgbGV0IG1peGlucyA9IGV4dGVuc2lvbnMubWFwKHRvTWl4aW4pO1xuICBQYXJlbnRbQ0xBU1NfTUVUQV0uYWRkU3ViY2xhc3MoU3ViY2xhc3MgYXMgR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pik7XG4gIG1peGlucy5mb3JFYWNoKG0gPT4gU3ViY2xhc3NbQ0xBU1NfTUVUQV0uYWRkTWl4aW4obSkpO1xuXG4gIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcyBhcyBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQpO1xuXG4gIHJldHVybiBTdWJjbGFzcyBhcyBhbnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxpbmtTdWJjbGFzc2VzKFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICBQYXJlbnRbQ0xBU1NfTUVUQV0uZ2V0U3ViY2xhc3NlcygpLmZvckVhY2goKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSA9PiB7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0ucmVzZXQoUGFyZW50W0NMQVNTX01FVEFdKTtcbiAgICBTdWJjbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFBhcmVudC5wcm90b3R5cGUpO1xuXG4gICAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzLCBQYXJlbnQpO1xuXG4gICAgLy8gcmVjdXJzZSBpbnRvIHN1Yi1zdWJjbGFzc2VzXG4gICAgcmVsaW5rU3ViY2xhc3NlcyhTdWJjbGFzcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9NaXhpbihleHRlbnNpb246IEV4dGVuc2lvbik6IE1peGluIHtcbiAgaWYgKGV4dGVuc2lvbiBpbnN0YW5jZW9mIE1peGluKSByZXR1cm4gZXh0ZW5zaW9uO1xuICBlbHNlIHJldHVybiBuZXcgTWl4aW4oZXh0ZW5zaW9uIGFzIE9iamVjdCwgW10pO1xufVxuXG5jbGFzcyBWYWx1ZURlc2NyaXB0b3IgZXh0ZW5kcyBEZXNjcmlwdG9yIHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgd3JpdGFibGUgPSB0cnVlLFxuICAgIHZhbHVlLFxuICB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lPzogYW55KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgd3JpdGFibGU6IHRoaXMud3JpdGFibGUsXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YUJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIHdyaXRhYmxlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIHdyaXRhYmxlID0gdHJ1ZSxcbiAgICB2YWx1ZSxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLndyaXRhYmxlID0gd3JpdGFibGU7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgbGV0IHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSA9IHRoaXM7XG5cbiAgICBpZiAoY2xhc3NNZXRhLmhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5IGFzIHN0cmluZywgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5IGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIGlmIChjbGFzc01ldGEuaGFzTWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZykpIHtcbiAgICAgIGNsYXNzTWV0YS5hZGRNZXJnZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nLCB2YWx1ZSk7XG4gICAgICB2YWx1ZSA9IGNsYXNzTWV0YS5nZXRNZXJnZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFZhbHVlRGVzY3JpcHRvcih7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBY2Nlc3NvckJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBnZXQ6ICgpID0+IGFueTtcbiAgc2V0OiAodmFsdWU6IGFueSkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICBnZXQsXG4gICAgc2V0LFxuICB9OiBQcm9wZXJ0eURlc2NyaXB0b3IgJiB7IGdldDogYW55OyBzZXQ6IGFueSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMuZ2V0ID0gZ2V0O1xuICAgIHRoaXMuc2V0ID0gc2V0O1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIF9rZXk6IHN0cmluZywgX2NsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIG5ldyBWYWx1ZURlc2NyaXB0b3Ioe1xuICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgIGdldDogdGhpcy5nZXQsXG4gICAgICBzZXQ6IHRoaXMuc2V0LFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZERlc2NyaXB0b3IgZXh0ZW5kcyBWYWx1ZURlc2NyaXB0b3Ige1xuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gd3JhcE1ldGhvZChob21lLCBrZXksIHRoaXMudmFsdWUpO1xuICAgIHN1cGVyLmRlZmluZSh0YXJnZXQsIGtleSwgaG9tZSk7XG4gIH1cbn1cblxuY2xhc3MgTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgRGF0YUJsdWVwcmludCB7XG4gIGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IE1ldGhvZERlc2NyaXB0b3Ige1xuICAgIGxldCBkZXNjID0gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgY2xhc3NNZXRhKTtcbiAgICByZXR1cm4gbmV3IE1ldGhvZERlc2NyaXB0b3IoZGVzYyBhcyBQcm9wZXJ0eURlc2NyaXB0b3IpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwTWV0aG9kKGhvbWU6IERpY3QsIG1ldGhvZE5hbWU6IHN0cmluZywgb3JpZ2luYWw6ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55KSB7XG4gIGlmICghKChtZXRob2ROYW1lIGFzIHN0cmluZykgaW4gaG9tZSkpIHJldHVybiBtYXliZVdyYXAob3JpZ2luYWwpO1xuXG4gIGxldCBzdXBlck1ldGhvZCA9IGhvbWVbbWV0aG9kTmFtZV07XG5cbiAgbGV0IGZ1bmMgPSBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gc3VwZXJNZXRob2QgYXMgYW55O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIChmdW5jIGFzIGFueSkuX193cmFwcGVkID0gdHJ1ZTtcblxuICByZXR1cm4gZnVuYztcbn1cblxuZnVuY3Rpb24gbWF5YmVXcmFwKG9yaWdpbmFsOiBGdW5jdGlvbikge1xuICBpZiAoJ19fd3JhcHBlZCcgaW4gb3JpZ2luYWwpIHJldHVybiBvcmlnaW5hbDtcblxuICByZXR1cm4gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -315,2 +315,2 @@ 'use strict';

GlimmerObject.isClass = true;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBb0NnQixBQUFXOztBQXBDM0IsQUFBTyxBQUFFLEFBQUksQUFBeUIsQUFBaUIsQUFBRSxBQUFNLEFBQTJCLEFBQUM7O0FBQzNGLEFBQU8sQUFBUSxBQUFJLEFBQUUsQUFBTSxBQUFFLEFBQWMsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDbkUsQUFBTyxBQUFTLEFBQU0sQUFBSSxBQUFXLEFBQUUsQUFBTyxBQUFFLEFBQWdCLEFBQUUsQUFBVSxBQUFFLEFBQU0sQUFBUyxBQUFDOztBQUk5RixBQUFPLEFBQUUsQUFBSSxBQUFFLEFBQU0sQUFBUyxBQUFDOztBQUUvQixBQUFPLEFBQUUsQUFBSSxBQUFFLEFBQU0sQUFBb0IsQUFBQyxBQUUxQyxBQUFNOztBQU5OLE1BQU0sRUFBRSxBQUFPLEFBQUUsWUFBRyxBQUFLLEFBQUM7QUFNbkIsTUFBTSxBQUFXLG9DQUFHLFNBQVMsQUFBVyxjQUFJLEFBQUMsQUFBQztBQUVyRCxNQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDLEFBd0IxRCxBQUFNO3FCQUF5QixBQUFNLEtBQ25DLEFBQXNCO0FBQ3RCLEFBQXlCO0FBQ3pCO1dBQU8sQUFBRyxBQUFDLEFBQ2IsQUFBQzs7QUFFRCxNQUFlLEFBQVcsQUFBUSxBQUFJO3dCQUNoQixHQUFHLEFBQVksT0FDakM7Y0FBTSxJQUFJLEFBQUssTUFBQyxBQUFnRCxBQUFDLEFBQUMsQUFDcEUsQUFBQyxBQUNGO0FBRUQsQUFBTTtBQUxKLEFBQW1CO01BS1IsQUFBUztrQkFDWjthQUFjLGlCQUFHLEFBQUksQUFBOEIsQUFBQyxBQUNwRDthQUFnQixtQkFBRyxBQUFJLEFBQU8sQUFBQyxBQUMvQjthQUFzQix5QkFBRyxBQUFJLEFBQVMsQUFBQyxBQUN2QzthQUF5Qiw0QkFBRyxB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QU8sVUFBRyxBQUFJLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXRhLCBJbm5lclJlZmVyZW5jZUZhY3RvcnksIFByb3BlcnR5UmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBEaWN0LCBkaWN0LCBhc3NpZ24sIGluaXRpYWxpemVHdWlkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBNaXhpbiwgZXh0ZW5kIGFzIGV4dGVuZENsYXNzLCB0b01peGluLCByZWxpbmtTdWJjbGFzc2VzLCB3cmFwTWV0aG9kIH0gZnJvbSAnLi9taXhpbic7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmltcG9ydCB7IFJPT1QgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYnVtcCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbmV4cG9ydCBjb25zdCBFTVBUWV9DQUNIRSA9IGZ1bmN0aW9uIEVNUFRZX0NBQ0hFKCkge307XG5cbmNvbnN0IENMQVNTX01FVEEgPSAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JztcblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RXaXRoTWl4aW5zIHtcbiAgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YTtcbiAgX21ldGE6IE1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VXaXRoTWl4aW5zIHtcbiAgY29uc3RydWN0b3I6IE9iamVjdFdpdGhNaXhpbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4ge1xuICBuZXcgPFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgZXh0ZW5kKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGV4dGVuZDxUPihleHRlbnNpb246IFQpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPjtcbiAgZXh0ZW5kKC4uLmV4dGVuc2lvbnM6IE9iamVjdFtdKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8T2JqZWN0PjtcbiAgY3JlYXRlPFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgcmVvcGVuPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkO1xuICByZW9wZW5DbGFzczxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Q7XG4gIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkO1xuICAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogSW5zdGFuY2VNZXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVyYm9jaGFyZ2U8VD4ob2JqOiBUKTogVCB7XG4gIC8vIGZ1bmN0aW9uIER1bW15KCkge31cbiAgLy8gRHVtbXkucHJvdG90eXBlID0gb2JqO1xuICByZXR1cm4gb2JqO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBTZWFsZWRNZXRhIGV4dGVuZHMgTWV0YSB7XG4gIGFkZFJlZmVyZW5jZVR5cGVGb3IoLi4uX2FyZ3M6IGFueVtdKTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IG1vZGlmeSByZWZlcmVuY2UgdHlwZXMgb24gYSBzZWFsZWQgbWV0YScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbGFzc01ldGEge1xuICBwcml2YXRlIHJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgcHJpdmF0ZSBwcm9wZXJ0eU1ldGFkYXRhID0gZGljdDxhbnk+KCk7XG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gIHByaXZhdGUgaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcbiAgcHJpdmF0ZSBoYXNNZXJnZWRQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHByaXZhdGUgbWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgYXBwbGllZE1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN0YXRpY01peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN1YmNsYXNzZXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSA9IFtdO1xuICBwcml2YXRlIHNsb3RzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgSW5zdGFuY2VNZXRhQ29uc3RydWN0b3I6IE9wdGlvbjx0eXBlb2YgTWV0YT4gPSBudWxsO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICBsZXQgbWV0YSA9IG5ldyB0aGlzKCk7XG4gICAgbWV0YS5yZXNldChwYXJlbnQpO1xuICAgIHJldHVybiBtZXRhO1xuICB9XG5cbiAgc3RhdGljIGZvcihvYmplY3Q6IE9iamVjdFdpdGhNaXhpbnMgfCBJbnN0YW5jZVdpdGhNaXhpbnMpOiBPcHRpb248Q2xhc3NNZXRhPiB7XG4gICAgaWYgKENMQVNTX01FVEEgaW4gb2JqZWN0KSByZXR1cm4gKG9iamVjdCBhcyBPYmplY3RXaXRoTWl4aW5zKVtDTEFTU19NRVRBXTtcbiAgICBlbHNlIGlmIChvYmplY3QuY29uc3RydWN0b3IpXG4gICAgICByZXR1cm4gKG9iamVjdCBhcyBJbnN0YW5jZVdpdGhNaXhpbnMpLmNvbnN0cnVjdG9yW0NMQVNTX01FVEFdIHx8IG51bGw7XG4gICAgZWxzZSByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGluaXQob2JqZWN0OiBHbGltbWVyT2JqZWN0LCBhdHRyczogT3B0aW9uPE9iamVjdD4pIHtcbiAgICBpZiAodHlwZW9mIGF0dHJzICE9PSAnb2JqZWN0JyB8fCBhdHRycyA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgbGV0IGNvbmNhdFByb3BzID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBjb25jYXRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBjb25jYXQgPSBjb25jYXRQcm9wc1twcm9wXS5zbGljZSgpO1xuICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGNvbmNhdC5jb25jYXQoYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgbGV0IG1lcmdlZFByb3BzID0gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBtZXJnZWRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIG1lcmdlZFByb3BzW3Byb3BdKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBhc3NpZ24obWVyZ2VkLCBhdHRyc1twcm9wXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLnN0YXRpY01peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGFkZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMubWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgZ2V0U3RhdGljTWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucztcbiAgfVxuXG4gIGdldE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5taXhpbnM7XG4gIH1cblxuICBhZGRBcHBsaWVkTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5hcHBsaWVkTWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgaGFzQXBwbGllZE1peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpZWRNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICB9XG5cbiAgZ2V0QXBwbGllZE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zO1xuICB9XG5cbiAgaGFzU3RhdGljTWl4aW4obWl4aW46IE1peGluKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUFsbE1peGlucyhTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0TWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0U3RhdGljTWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kU3RhdGljKFN1YmNsYXNzKSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG5cbiAgYWRkU3ViY2xhc3MoY29uc3RydWN0b3I6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLnN1YmNsYXNzZXMucHVzaChjb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBnZXRTdWJjbGFzc2VzKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViY2xhc3NlcztcbiAgfVxuXG4gIGFkZFByb3BlcnR5TWV0YWRhdGEocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgfVxuXG4gIG1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV07XG4gIH1cblxuICBhZGRSZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcsIHR5cGU6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gPSB0eXBlO1xuICB9XG5cbiAgYWRkU2xvdEZvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgdGhpcy5zbG90cy5wdXNoKHByb3BlcnR5KTtcbiAgfVxuXG4gIGhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmICgocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCB2YWwgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldLmNvbmNhdCh2YWx1ZSk7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaGFzTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWVyZ2VkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogT2JqZWN0KSB7XG4gICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IHBhc3NlZCBpbiBcXGAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgICl9XFxgIGFzIHRoZSB2YWx1ZSBmb3IgXFxgZm9vXFxgIGJ1dCBcXGBmb29cXGAgY2Fubm90IGJlIGFuIEFycmF5YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzICYmIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSBtZXJnZU1lcmdlZFByb3BlcnRpZXMoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlID09PSBudWxsID8gdmFsdWUgOiB2YWx1ZSB8fCB7fTtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZlcmVuY2VUeXBlcygpOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gIH1cblxuICBnZXRQcm9wZXJ0eU1ldGFkYXRhKCk6IERpY3Q8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGEgPSBkaWN0KCk7XG4gICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHBhcmVudC5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0gPSBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXS5zbGljZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzTWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50Lm1lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdID0gYXNzaWduKHt9LCBwYXJlbnQubWVyZ2VkUHJvcGVydGllc1twcm9wXSk7XG4gICAgICB9XG5cbiAgICAgIGFzc2lnbih0aGlzLnJlZmVyZW5jZVR5cGVzLCBwYXJlbnQucmVmZXJlbmNlVHlwZXMpO1xuICAgICAgYXNzaWduKHRoaXMucHJvcGVydHlNZXRhZGF0YSwgcGFyZW50LnByb3BlcnR5TWV0YWRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2VhbChvYmo6IE9iamVjdCkge1xuICAgIGxldCBtZXRhID0gTWV0YS5mb3Iob2JqKTtcbiAgICBsZXQgZnJlc2ggPSBuZXcgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciEob2JqLCB7fSk7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzID0gbWV0YS5nZXRSZWZlcmVuY2VUeXBlcygpO1xuICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcblxuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihyZWZlcmVuY2VUeXBlcywgdGhpcy5yZWZlcmVuY2VUeXBlcykpO1xuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihzbG90cywgZnJlc2guZ2V0U2xvdHMoKSkpO1xuICB9XG5cbiAgc2VhbCgpIHtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXM6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+ID0gdHVyYm9jaGFyZ2UoXG4gICAgICBhc3NpZ24oe30sIHRoaXMucmVmZXJlbmNlVHlwZXMpXG4gICAgKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMubWVyZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyAmJiAhdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbigpIHt9O1xuICAgIH1cblxuICAgIGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cbiAgICBjbGFzcyBTbG90cyB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc2xvdHMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICB0aGlzW25hbWVdID0gRU1QVFlfQ0FDSEU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIFNlYWxlZE1ldGEge1xuICAgICAgcHJvdGVjdGVkIHNsb3RzOiBTbG90cyA9IG5ldyBTbG90cygpO1xuICAgICAgcHVibGljIHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHJlZmVyZW5jZVR5cGVzO1xuXG4gICAgICBnZXRSZWZlcmVuY2VUeXBlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgICB9XG5cbiAgICAgIHJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZyk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldIHx8IFByb3BlcnR5UmVmZXJlbmNlO1xuICAgICAgfVxuXG4gICAgICBnZXRTbG90cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHM7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHR1cmJvY2hhcmdlKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWVyZ2VkUHJvcGVydGllcyhhdHRyczogT2JqZWN0LCBwYXJlbnQ6IE9iamVjdCkge1xuICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBwYXJlbnQpO1xuXG4gIGZvciAobGV0IHByb3AgaW4gYXR0cnMpIHtcbiAgICBpZiAocHJvcCBpbiBwYXJlbnQgJiYgdHlwZW9mIHBhcmVudFtwcm9wXSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgYXR0cnNbcHJvcF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCB3cmFwcGVkID0gd3JhcE1ldGhvZChwYXJlbnQsIHByb3AsIGF0dHJzW3Byb3BdKTtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IHdyYXBwZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IGF0dHJzW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZU1ldGEgZXh0ZW5kcyBDbGFzc01ldGEge1xuICBwdWJsaWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YSA9IENsYXNzTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPEluc3RhbmNlTWV0YT4pOiBJbnN0YW5jZU1ldGEge1xuICAgIHJldHVybiBzdXBlci5mcm9tUGFyZW50KHBhcmVudCkgYXMgSW5zdGFuY2VNZXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBJbnN0YW5jZU1ldGEpIHtcbiAgICBzdXBlci5yZXNldChwYXJlbnQpO1xuICAgIGlmIChwYXJlbnQpIHRoaXNbQ0xBU1NfTUVUQV0ucmVzZXQocGFyZW50W0NMQVNTX01FVEFdKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgc3VwZXIuc2VhbCgpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsaW1tZXJPYmplY3Qge1xuICBzdGF0aWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuICBzdGF0aWMgaXNDbGFzcyA9IHRydWU7XG5cbiAgc3RhdGljIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcblxuICBzdGF0aWMgZXh0ZW5kKHRoaXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIC4uLmV4dGVuc2lvbnM6IGFueVtdKSB7XG4gICAgcmV0dXJuIGV4dGVuZENsYXNzKHRoaXMsIC4uLmV4dGVuc2lvbnMpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShhdHRycz86IE9iamVjdCB8IG51bGwpOiBHbGltbWVyT2JqZWN0IHtcbiAgICByZXR1cm4gbmV3IHRoaXMoYXR0cnMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRQcm90b3R5cGUodGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG5cbiAgICByZWxpbmtTdWJjbGFzc2VzKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFN0YXRpYyh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIHN0YXRpYyBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgbGV0IHZhbHVlID0gdGhpc1tDTEFTU19NRVRBXS5tZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5KTtcbiAgICBpZiAoIXZhbHVlKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWV0YUZvclByb3BlcnR5KCkgY291bGQgbm90IGZpbmQgYSBjb21wdXRlZCBwcm9wZXJ0eSB3aXRoIGtleSAnJHtwcm9wZXJ0eX0nLmBcbiAgICAgICk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBsZXQgbWV0YWRhdGEgPSB0aGlzW0NMQVNTX01FVEFdLmdldFByb3BlcnR5TWV0YWRhdGEoKTtcbiAgICBpZiAoIW1ldGFkYXRhKSByZXR1cm47XG5cbiAgICBmb3IgKGxldCBwcm9wIGluIG1ldGFkYXRhKSB7XG4gICAgICBjYWxsYmFjayhwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgX3N1cGVyID0gUk9PVDtcbiAgX21ldGEgPSBudWxsO1xuICBfZ3VpZCE6IG51bWJlcjsgLy8gU2V0IGJ5IGluaXRpYWxpemVHdWlkKHRoaXMpIGluIGNvbnN0cnVjdG9yXG5cbiAgaW5pdCgpIHt9XG5cbiAgY29uc3RydWN0b3IoYXR0cnM/OiBPYmplY3QgfCBudWxsKSB7XG4gICAgaWYgKGF0dHJzKSBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBHbGltbWVyT2JqZWN0KVtDTEFTU19NRVRBXS5pbml0KHRoaXMsIGF0dHJzIHx8IG51bGwpO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcbiAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXNba2V5XTtcbiAgfVxuXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNba2V5XSA9IHZhbHVlO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMoYXR0cnM6IE9iamVjdCkge1xuICAgIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgYnVtcCgpO1xuICB9XG5cbiAgZGVzdHJveSgpIHt9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztRQW9DTSxXLEdBQUEsVzs7OztBQW5DTjs7QUFDQTs7QUFJQTs7QUFFQTs7QUFKQSxNQUFNLEVBQUEsT0FBQSxLQUFOLEtBQUE7QUFNTyxNQUFNLG9DQUFjLFNBQUEsV0FBQSxHQUFvQixDQUF4QyxDQUFBO0FBRVAsTUFBTSxhQUFOLHNDQUFBO0FBd0JNLFNBQUEsV0FBQSxDQUFBLEdBQUEsRUFBK0I7QUFDbkM7QUFDQTtBQUNBLFdBQUEsR0FBQTtBQUNEO0FBRUQsTUFBQSxVQUFBLFNBQUEscUJBQUEsQ0FBc0M7QUFDcEMsd0JBQW9CLEdBQXBCLEtBQUEsRUFBbUM7QUFDakMsY0FBTSxJQUFBLEtBQUEsQ0FBTixnREFBTSxDQUFOO0FBQ0Q7QUFIbUM7QUFNaEMsTUFBQSxTQUFBLENBQWdCO0FBQXRCLGtCQUFBO0FBQ1UsYUFBQSxjQUFBLEdBQUEsaUJBQUE7QUFDQSxhQUFBLGdCQUFBLEdBQUEsaUJBQUE7QUFDQSxhQUFBLHNCQUFBLEdBQUEsaUJBQUE7QUFDQSxhQUFBLHlCQUFBLEdBQUEsS0FBQTtBQUNBLGFBQUEsZ0JBQUEsR0FBQSxpQkFBQTtBQUNBLGFBQUEsbUJBQUEsR0FBQSxLQUFBO0FBQ0EsYUFBQSxNQUFBLEdBQUEsRUFBQTtBQUNBLGFBQUEsYUFBQSxHQUFBLEVBQUE7QUFDQSxhQUFBLFlBQUEsR0FBQSxFQUFBO0FBQ0EsYUFBQSxVQUFBLEdBQUEsRUFBQTtBQUNBLGFBQUEsS0FBQSxHQUFBLEVBQUE7QUFDRCxhQUFBLHVCQUFBLEdBQUEsSUFBQTtBQWtQUjtBQWhQQyxXQUFBLFVBQUEsQ0FBQSxNQUFBLEVBQTJDO0FBQ3pDLFlBQUksT0FBTyxJQUFYLElBQVcsRUFBWDtBQUNBLGFBQUEsS0FBQSxDQUFBLE1BQUE7QUFDQSxlQUFBLElBQUE7QUFDRDtBQUVELFdBQUEsR0FBQSxDQUFBLE1BQUEs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O0FBQ2IsZUFBTyxLQUFQLEdBQU8sQ0FBUDtBQUNEO0FBRUQsUUFBQSxHQUFBLEVBQUEsS0FBQSxFQUEyQjtBQUN6QixhQUFBLEdBQUEsSUFBQSxLQUFBO0FBQ0E7QUFDRDtBQUVELGtCQUFBLEtBQUEsRUFBMkI7QUFDekIsMEJBQUEsSUFBQSxFQUFBLEtBQUE7QUFDQTtBQUNEO0FBRUQsY0FBTyxDQUFLO0FBNUVvQjtrQkFBcEIsYTtBQUdMLGNBQUEsc0NBQUEsSUFBdUQsYUFBQSxVQUFBLENBQXZELElBQXVELENBQXZEO0FBQ0EsY0FBQSxPQUFBLEdBQUEsSUFBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ldGEsIElubmVyUmVmZXJlbmNlRmFjdG9yeSwgUHJvcGVydHlSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IGRpY3QsIGFzc2lnbiwgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IE1peGluLCBleHRlbmQgYXMgZXh0ZW5kQ2xhc3MsIHRvTWl4aW4sIHJlbGlua1N1YmNsYXNzZXMsIHdyYXBNZXRob2QgfSBmcm9tICcuL21peGluJztcblxuY29uc3QgeyBpc0FycmF5IH0gPSBBcnJheTtcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgT3B0aW9uLCBEaWN0IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBidW1wIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcblxuZXhwb3J0IGNvbnN0IEVNUFRZX0NBQ0hFID0gZnVuY3Rpb24gRU1QVFlfQ0FDSEUoKSB7fTtcblxuY29uc3QgQ0xBU1NfTUVUQSA9ICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdFdpdGhNaXhpbnMge1xuICAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogQ2xhc3NNZXRhO1xuICBfbWV0YTogTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZVdpdGhNaXhpbnMge1xuICBjb25zdHJ1Y3RvcjogT2JqZWN0V2l0aE1peGlucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPiB7XG4gIG5ldyA8VT4oYXR0cnM/OiBVKTogR2xpbW1lck9iamVjdCAmIFQgJiBVO1xuICBleHRlbmQoKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8T2JqZWN0PjtcbiAgZXh0ZW5kPFQ+KGV4dGVuc2lvbjogVCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+O1xuICBleHRlbmQoLi4uZXh0ZW5zaW9uczogT2JqZWN0W10pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxPYmplY3Q+O1xuICBjcmVhdGU8VT4oYXR0cnM/OiBVKTogR2xpbW1lck9iamVjdCAmIFQgJiBVO1xuICByZW9wZW48VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQ7XG4gIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkO1xuICBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdDtcbiAgZWFjaENvbXB1dGVkUHJvcGVydHkoY2FsbGJhY2s6IChzOiBzdHJpbmcsIG86IE9iamVjdCkgPT4gdm9pZCk6IHZvaWQ7XG4gICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBJbnN0YW5jZU1ldGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dXJib2NoYXJnZTxUPihvYmo6IFQpOiBUIHtcbiAgLy8gZnVuY3Rpb24gRHVtbXkoKSB7fVxuICAvLyBEdW1teS5wcm90b3R5cGUgPSBvYmo7XG4gIHJldHVybiBvYmo7XG59XG5cbmFic3RyYWN0IGNsYXNzIFNlYWxlZE1ldGEgZXh0ZW5kcyBNZXRhIHtcbiAgYWRkUmVmZXJlbmNlVHlwZUZvciguLi5fYXJnczogYW55W10pOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgbW9kaWZ5IHJlZmVyZW5jZSB0eXBlcyBvbiBhIHNlYWxlZCBtZXRhJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsYXNzTWV0YSB7XG4gIHByaXZhdGUgcmVmZXJlbmNlVHlwZXMgPSBkaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PigpO1xuICBwcml2YXRlIHByb3BlcnR5TWV0YWRhdGEgPSBkaWN0PGFueT4oKTtcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgcHJpdmF0ZSBoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHByaXZhdGUgbWVyZ2VkUHJvcGVydGllcyA9IGRpY3Q8T2JqZWN0PigpO1xuICBwcml2YXRlIGhhc01lcmdlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBhcHBsaWVkTWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgc3RhdGljTWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgc3ViY2xhc3NlczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PltdID0gW107XG4gIHByaXZhdGUgc2xvdHM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyBJbnN0YW5jZU1ldGFDb25zdHJ1Y3RvcjogT3B0aW9uPHR5cGVvZiBNZXRhPiA9IG51bGw7XG5cbiAgc3RhdGljIGZyb21QYXJlbnQocGFyZW50OiBPcHRpb248Q2xhc3NNZXRhPikge1xuICAgIGxldCBtZXRhID0gbmV3IHRoaXMoKTtcbiAgICBtZXRhLnJlc2V0KHBhcmVudCk7XG4gICAgcmV0dXJuIG1ldGE7XG4gIH1cblxuICBzdGF0aWMgZm9yKG9iamVjdDogT2JqZWN0V2l0aE1peGlucyB8IEluc3RhbmNlV2l0aE1peGlucyk6IE9wdGlvbjxDbGFzc01ldGE+IHtcbiAgICBpZiAoQ0xBU1NfTUVUQSBpbiBvYmplY3QpIHJldHVybiAob2JqZWN0IGFzIE9iamVjdFdpdGhNaXhpbnMpW0NMQVNTX01FVEFdO1xuICAgIGVsc2UgaWYgKG9iamVjdC5jb25zdHJ1Y3RvcilcbiAgICAgIHJldHVybiAob2JqZWN0IGFzIEluc3RhbmNlV2l0aE1peGlucykuY29uc3RydWN0b3JbQ0xBU1NfTUVUQV0gfHwgbnVsbDtcbiAgICBlbHNlIHJldHVybiBudWxsO1xuICB9XG5cbiAgaW5pdChvYmplY3Q6IEdsaW1tZXJPYmplY3QsIGF0dHJzOiBPcHRpb248RGljdD4pIHtcbiAgICBpZiAodHlwZW9mIGF0dHJzICE9PSAnb2JqZWN0JyB8fCBhdHRycyA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgbGV0IGNvbmNhdFByb3BzID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBjb25jYXRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBjb25jYXQgPSBjb25jYXRQcm9wc1twcm9wXS5zbGljZSgpO1xuICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGNvbmNhdC5jb25jYXQoYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgbGV0IG1lcmdlZFByb3BzID0gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBtZXJnZWRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIG1lcmdlZFByb3BzW3Byb3BdKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBhc3NpZ24obWVyZ2VkLCBhdHRyc1twcm9wXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLnN0YXRpY01peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGFkZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMubWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgZ2V0U3RhdGljTWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucztcbiAgfVxuXG4gIGdldE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5taXhpbnM7XG4gIH1cblxuICBhZGRBcHBsaWVkTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5hcHBsaWVkTWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgaGFzQXBwbGllZE1peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpZWRNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICB9XG5cbiAgZ2V0QXBwbGllZE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zO1xuICB9XG5cbiAgaGFzU3RhdGljTWl4aW4obWl4aW46IE1peGluKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUFsbE1peGlucyhTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0TWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0U3RhdGljTWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kU3RhdGljKFN1YmNsYXNzKSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG5cbiAgYWRkU3ViY2xhc3MoY29uc3RydWN0b3I6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLnN1YmNsYXNzZXMucHVzaChjb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBnZXRTdWJjbGFzc2VzKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViY2xhc3NlcztcbiAgfVxuXG4gIGFkZFByb3BlcnR5TWV0YWRhdGEocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgfVxuXG4gIG1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV07XG4gIH1cblxuICBhZGRSZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcsIHR5cGU6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gPSB0eXBlO1xuICB9XG5cbiAgYWRkU2xvdEZvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgdGhpcy5zbG90cy5wdXNoKHByb3BlcnR5KTtcbiAgfVxuXG4gIGhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmICgocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCB2YWwgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldLmNvbmNhdCh2YWx1ZSk7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaGFzTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWVyZ2VkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogRGljdCkge1xuICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHRydWU7XG5cbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBwYXNzZWQgaW4gXFxgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICApfVxcYCBhcyB0aGUgdmFsdWUgZm9yIFxcYGZvb1xcYCBidXQgXFxgZm9vXFxgIGNhbm5vdCBiZSBhbiBBcnJheWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcyAmJiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gbWVyZ2VNZXJnZWRQcm9wZXJ0aWVzKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IHZhbHVlIDogdmFsdWUgfHwge307XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVmZXJlbmNlVHlwZXMoKTogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlNZXRhZGF0YSgpOiBEaWN0PGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGE7XG4gIH1cblxuICByZXNldChwYXJlbnQ6IE9wdGlvbjxDbGFzc01ldGE+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlcyA9IGRpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+KCk7XG4gICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhID0gZGljdCgpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gZGljdDxPYmplY3Q+KCk7XG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BdID0gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0uc2xpY2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc01lcmdlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5tZXJnZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wXSA9IGFzc2lnbih7fSwgcGFyZW50Lm1lcmdlZFByb3BlcnRpZXNbcHJvcF0pO1xuICAgICAgfVxuXG4gICAgICBhc3NpZ24odGhpcy5yZWZlcmVuY2VUeXBlcywgcGFyZW50LnJlZmVyZW5jZVR5cGVzKTtcbiAgICAgIGFzc2lnbih0aGlzLnByb3BlcnR5TWV0YWRhdGEsIHBhcmVudC5wcm9wZXJ0eU1ldGFkYXRhKTtcbiAgICB9XG4gIH1cblxuICByZXNlYWwob2JqOiBPYmplY3QpIHtcbiAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKG9iaik7XG4gICAgbGV0IGZyZXNoID0gbmV3IHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IhKG9iaiwge30pO1xuICAgIGxldCByZWZlcmVuY2VUeXBlcyA9IG1ldGEuZ2V0UmVmZXJlbmNlVHlwZXMoKTtcbiAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICB0dXJib2NoYXJnZShhc3NpZ24ocmVmZXJlbmNlVHlwZXMsIHRoaXMucmVmZXJlbmNlVHlwZXMpKTtcbiAgICB0dXJib2NoYXJnZShhc3NpZ24oc2xvdHMsIGZyZXNoLmdldFNsb3RzKCkpKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHR1cmJvY2hhcmdlKFxuICAgICAgYXNzaWduKHt9LCB0aGlzLnJlZmVyZW5jZVR5cGVzKVxuICAgICk7XG4gICAgdHVyYm9jaGFyZ2UodGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLm1lcmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgJiYgIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG5cbiAgICBsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xuXG4gICAgY2xhc3MgU2xvdHMge1xuICAgICAgW2luZGV4OiBzdHJpbmddOiB1bmtub3duO1xuXG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc2xvdHMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICB0aGlzW25hbWVdID0gRU1QVFlfQ0FDSEU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIFNlYWxlZE1ldGEge1xuICAgICAgcHJvdGVjdGVkIHNsb3RzOiBTbG90cyA9IG5ldyBTbG90cygpO1xuICAgICAgcHVibGljIHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHJlZmVyZW5jZVR5cGVzO1xuXG4gICAgICBnZXRSZWZlcmVuY2VUeXBlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgICB9XG5cbiAgICAgIHJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZyk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldIHx8IFByb3BlcnR5UmVmZXJlbmNlO1xuICAgICAgfVxuXG4gICAgICBnZXRTbG90cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHM7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHR1cmJvY2hhcmdlKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWVyZ2VkUHJvcGVydGllcyhhdHRyczogRGljdCwgcGFyZW50OiBEaWN0KSB7XG4gIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIHBhcmVudCk7XG5cbiAgZm9yIChsZXQgcHJvcCBpbiBhdHRycykge1xuICAgIGlmIChwcm9wIGluIHBhcmVudCAmJiB0eXBlb2YgcGFyZW50W3Byb3BdID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBhdHRyc1twcm9wXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwTWV0aG9kKHBhcmVudCwgcHJvcCwgYXR0cnNbcHJvcF0gYXMgYW55KTtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IHdyYXBwZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IGF0dHJzW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZU1ldGEgZXh0ZW5kcyBDbGFzc01ldGEge1xuICBwdWJsaWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YSA9IENsYXNzTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPEluc3RhbmNlTWV0YT4pOiBJbnN0YW5jZU1ldGEge1xuICAgIHJldHVybiBzdXBlci5mcm9tUGFyZW50KHBhcmVudCkgYXMgSW5zdGFuY2VNZXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBJbnN0YW5jZU1ldGEpIHtcbiAgICBzdXBlci5yZXNldChwYXJlbnQpO1xuICAgIGlmIChwYXJlbnQpIHRoaXNbQ0xBU1NfTUVUQV0ucmVzZXQocGFyZW50W0NMQVNTX01FVEFdKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgc3VwZXIuc2VhbCgpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsaW1tZXJPYmplY3Qge1xuICBbaW5kZXg6IHN0cmluZ106IHVua25vd247XG5cbiAgc3RhdGljICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBJbnN0YW5jZU1ldGEgPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChudWxsKTtcbiAgc3RhdGljIGlzQ2xhc3MgPSB0cnVlO1xuXG4gIHN0YXRpYyBleHRlbmQoKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuICBzdGF0aWMgZXh0ZW5kPFQ+KGV4dGVuc2lvbjogVCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQoLi4uZXh0ZW5zaW9uczogT2JqZWN0W10pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgc3RhdGljIGV4dGVuZCh0aGlzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCAuLi5leHRlbnNpb25zOiBhbnlbXSkge1xuICAgIHJldHVybiBleHRlbmRDbGFzcyh0aGlzLCAuLi5leHRlbnNpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUoYXR0cnM/OiBPYmplY3QgfCBudWxsKTogR2xpbW1lck9iamVjdCB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKGF0dHJzKTtcbiAgfVxuXG4gIHN0YXRpYyByZW9wZW48VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQge1xuICAgIHRvTWl4aW4oZXh0ZW5zaW9ucykuZXh0ZW5kUHJvdG90eXBlKHRoaXMpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuXG4gICAgcmVsaW5rU3ViY2xhc3Nlcyh0aGlzKTtcbiAgfVxuXG4gIHN0YXRpYyByZW9wZW5DbGFzczxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRTdGF0aWModGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cblxuICBzdGF0aWMgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIGxldCB2YWx1ZSA9IHRoaXNbQ0xBU1NfTUVUQV0ubWV0YWRhdGFGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgaWYgKCF2YWx1ZSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYG1ldGFGb3JQcm9wZXJ0eSgpIGNvdWxkIG5vdCBmaW5kIGEgY29tcHV0ZWQgcHJvcGVydHkgd2l0aCBrZXkgJyR7cHJvcGVydHl9Jy5gXG4gICAgICApO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IG1ldGFkYXRhID0gdGhpc1tDTEFTU19NRVRBXS5nZXRQcm9wZXJ0eU1ldGFkYXRhKCk7XG4gICAgaWYgKCFtZXRhZGF0YSkgcmV0dXJuO1xuXG4gICAgZm9yIChsZXQgcHJvcCBpbiBtZXRhZGF0YSkge1xuICAgICAgY2FsbGJhY2socHJvcCwgbWV0YWRhdGFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIF9zdXBlciA9IFJPT1Q7XG4gIF9tZXRhID0gbnVsbDtcbiAgX2d1aWQhOiBudW1iZXI7IC8vIFNldCBieSBpbml0aWFsaXplR3VpZCh0aGlzKSBpbiBjb25zdHJ1Y3RvclxuXG4gIGluaXQoKSB7fVxuXG4gIGNvbnN0cnVjdG9yKGF0dHJzPzogT2JqZWN0IHwgbnVsbCkge1xuICAgIGlmIChhdHRycykgYXNzaWduKHRoaXMsIGF0dHJzKTtcbiAgICAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgR2xpbW1lck9iamVjdClbQ0xBU1NfTUVUQV0uaW5pdCh0aGlzLCBhdHRycyB8fCBudWxsKTtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG4gICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzW2tleV07XG4gIH1cblxuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgICBidW1wKCk7XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKGF0dHJzOiBPYmplY3QpIHtcbiAgICBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7fVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -30,2 +30,2 @@ 'use strict';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O1FBcUJnQixBQUFJO1FBR0osQUFBUTtBQXhCeEIsTUFBTSxBQUFpQixvQkFBRyxBQUFtQyxBQUFDLEFBRTlELEFBQU07TUFBTyxBQUFhLG9EQUN4QjtRQUFJLEFBQWUsOEJBRWY7ZUFBTyxBQUFJLEFBQUMsQUFDZCxBQUFDO0FBRkQsTUFHRyxBQUFRLEFBQUUsV0FDVixBQUFPLFFBQUMsQUFBYSxBQUFDLGlCQUFHLENBQUMsQUFBQyxBQUFDLEFBRWpDO1FBQUksQUFBZSxpQkFBRSxBQUNuQjtlQUFPLFNBQVMsQUFBYSxjQUFDLEFBQWMsTUFDMUM7bUJBQU8sQUFBaUIsa0JBQUMsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFRLEFBQUUsQUFBQyxBQUFDLEFBQ2pELEFBQUMsQUFBQztBQUNIO0FBRUQ7V0FBTyxTQUFTLEFBQWEsZ0JBQzNCO2VBQU8sQUFBSSxBQUFDLEFBQ2QsQUFBQyxBQUFDLEFBQ0o7QUFBQyxBQUFDLEFBQUUsQUFBQztBQWpCRSxBQUFzQixBQW1CN0IsQUFBTSxDQW5Cd0I7Y0FtQlQsR0FBRyxBQUFZLE9BQUcsQUFBQztBQUN2QyxBQUFZLEtBQUMsQUFBVSxhQUFHLEFBQUssQUFBQyxBQUVqQyxBQUFNO2tCQUFtQixBQUFjLE1BQ3JDO1FBQUksQUFBSSxLQUFDLEFBQVksQUFBQyxrQkFBSyxBQUFTLFdBQUUsQUFDcEMsQUFBSTthQUFDLEFBQVksQUFBQyxnQkFBRyxBQUFhLGNBQUMsQUFBSSxBQUFDLEFBQUMsQUFDMUM7QUFDRDtXQUFPLEFBQUksS0FBQyxBQUFZLEFBQUMsQUFBQyxBQUM1QixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSEFTX1NVUEVSX1BBVFRFUk4gPSAvXFwuKF9zdXBlcnxjYWxsXFwodGhpc3xhcHBseVxcKHRoaXMpLztcblxuZXhwb3J0IGNvbnN0IGNoZWNrSGFzU3VwZXIgPSAoZnVuY3Rpb24oKSB7XG4gIGxldCBzb3VyY2VBdmFpbGFibGUgPVxuICAgIGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgICAgLnRvU3RyaW5nKClcbiAgICAgIC5pbmRleE9mKCdyZXR1cm4gdGhpcycpID4gLTE7XG5cbiAgaWYgKHNvdXJjZUF2YWlsYWJsZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gSEFTX1NVUEVSX1BBVFRFUk4udGVzdChmdW5jLnRvU3RyaW5nKCkpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn0pKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBST09UKC4uLl9hcmdzOiBhbnlbXSkge31cbihST09UIGFzIGFueSkuX19oYXNTdXBlciA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzU3VwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgaWYgKGZ1bmNbJ19faGFzU3VwZXInXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZnVuY1snX19oYXNTdXBlciddID0gY2hlY2tIYXNTdXBlcihmdW5jKTtcbiAgfVxuICByZXR1cm4gZnVuY1snX19oYXNTdXBlciddO1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUF1Qk0sSSxHQUFBLEk7UUFHQSxRLEdBQUEsUTtBQXhCTixNQUFNLG9CQUFOLG1DQUFBO0FBRU8sTUFBTSx3Q0FBaUIsWUFBQTtBQUM1QixRQUFJLGtCQUNGLFlBQUE7QUFDRSxlQUFBLElBQUE7QUFERixLQUFBLENBQUEsUUFBQSxHQUFBLE9BQUEsQ0FBQSxhQUFBLElBSTRCLENBTDlCLENBQUE7QUFPQSxRQUFBLGVBQUEsRUFBcUI7QUFDbkIsZUFBTyxTQUFBLGFBQUEsQ0FBQSxJQUFBLEVBQXFDO0FBQzFDLG1CQUFPLGtCQUFBLElBQUEsQ0FBdUIsS0FBOUIsUUFBOEIsRUFBdkIsQ0FBUDtBQURGLFNBQUE7QUFHRDtBQUVELFdBQU8sU0FBQSxhQUFBLEdBQXNCO0FBQzNCLGVBQUEsSUFBQTtBQURGLEtBQUE7QUFkSyxDQUF1QixFQUF2QjtBQW1CRCxTQUFBLElBQUEsQ0FBZSxHQUFmLEtBQUEsRUFBOEIsQ0FBSTtBQUN2QyxLQUFBLFVBQUEsR0FBQSxLQUFBO0FBRUssU0FBQSxRQUFBLENBQUEsSUFBQSxFQUF3QztBQUM1QyxRQUFJLEtBQUEsWUFBQSxNQUFKLFNBQUEsRUFBc0M7QUFDcEMsYUFBQSxZQUFBLElBQXFCLGNBQXJCLElBQXFCLENBQXJCO0FBQ0Q7QUFDRCxXQUFPLEtBQVAsWUFBTyxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmNvbnN0IEhBU19TVVBFUl9QQVRURVJOID0gL1xcLihfc3VwZXJ8Y2FsbFxcKHRoaXN8YXBwbHlcXCh0aGlzKS87XG5cbmV4cG9ydCBjb25zdCBjaGVja0hhc1N1cGVyID0gKGZ1bmN0aW9uKCkge1xuICBsZXQgc291cmNlQXZhaWxhYmxlID1cbiAgICBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAgIC50b1N0cmluZygpXG4gICAgICAuaW5kZXhPZigncmV0dXJuIHRoaXMnKSA+IC0xO1xuXG4gIGlmIChzb3VyY2VBdmFpbGFibGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcihmdW5jOiBGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIEhBU19TVVBFUl9QQVRURVJOLnRlc3QoZnVuYy50b1N0cmluZygpKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG59KSgpO1xuXG5leHBvcnQgZnVuY3Rpb24gUk9PVCguLi5fYXJnczogYW55W10pIHt9XG4oUk9PVCBhcyBhbnkpLl9faGFzU3VwZXIgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uICYgRGljdCkge1xuICBpZiAoZnVuY1snX19oYXNTdXBlciddID09PSB1bmRlZmluZWQpIHtcbiAgICBmdW5jWydfX2hhc1N1cGVyJ10gPSBjaGVja0hhc1N1cGVyKGZ1bmMpO1xuICB9XG4gIHJldHVybiBmdW5jWydfX2hhc1N1cGVyJ107XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -80,2 +80,2 @@ 'use strict';

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7MkNBQVMsQUFBTzs7Ozs7O21CQUFFLEFBQVM7Ozs7OzttQkFBRSxBQUFZLEFBQXdCLEFBQU0sQUFBYyxBQUFDLEFBQ3RGLEFBQU87Ozs7Ozs7OztxQkFBRSxBQUFROzs7Ozs7cUJBQUUsQUFBUSxBQUFFLEFBQU0sQUFBZ0IsQUFBQyxBQUNwRCxBQUFPOzs7Ozs7Ozs7a0JBQUUsQUFBSzs7Ozs7O2tCQUFFLEFBQVM7Ozs7OztrQkFBRSxBQUFPLEFBQUUsQUFBTSxBQUFhLEFBQUMsQUFDeEQsQUFBTzs7Ozs7Ozs7O3dCQUFFLEFBQVc7Ozs7Ozt3QkFBRSxBQUFLLEFBQUUsQUFBTSxBQUFtQixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCwgQ2xhc3NNZXRhLCBJbnN0YW5jZU1ldGEsIEdsaW1tZXJPYmplY3RGYWN0b3J5IH0gZnJvbSAnLi9saWIvb2JqZWN0JztcbmV4cG9ydCB7IGNvbXB1dGVkLCBvYnNlcnZlciB9IGZyb20gJy4vbGliL2NvbXB1dGVkJztcbmV4cG9ydCB7IE1peGluLCBCbHVlcHJpbnQsIHRvTWl4aW4gfSBmcm9tICcuL2xpYi9taXhpbic7XG5leHBvcnQgeyBhbGlhc01ldGhvZCwgYWxpYXMgfSBmcm9tICcuL2xpYi9kZXNjcmlwdG9ycyc7XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OzttQkFBQSxTOzs7Ozs7bUJBQUEsWTs7Ozs7Ozs7O3FCQUNBLFE7Ozs7OztxQkFBQSxROzs7Ozs7Ozs7a0JBQ0EsSzs7Ozs7O2tCQUFBLFM7Ozs7OztrQkFBQSxPOzs7Ozs7Ozs7d0JBQ0EsVzs7Ozs7O3dCQUFBLEsiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0LCBDbGFzc01ldGEsIEluc3RhbmNlTWV0YSwgR2xpbW1lck9iamVjdEZhY3RvcnkgfSBmcm9tICcuL2xpYi9vYmplY3QnO1xuZXhwb3J0IHsgY29tcHV0ZWQsIG9ic2VydmVyIH0gZnJvbSAnLi9saWIvY29tcHV0ZWQnO1xuZXhwb3J0IHsgTWl4aW4sIEJsdWVwcmludCwgdG9NaXhpbiB9IGZyb20gJy4vbGliL21peGluJztcbmV4cG9ydCB7IGFsaWFzTWV0aG9kLCBhbGlhcyB9IGZyb20gJy4vbGliL2Rlc2NyaXB0b3JzJztcbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -213,2 +213,2 @@ "use strict";

function observer() {}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztRQWtNZ0IsQUFBUSxBQUFDO1FBZVQsQUFBUSxBQUFDLEFBQUcsQUFBWTs7QUFqTnhDLEFBQU8sQUFBRSxBQUEwQixBQUFFLEFBQUksQUFBRSxBQUFNLEFBQTJCLEFBQUM7O0FBQzdFLEFBQU8sQUFBRSxBQUFXLEFBQWEsQUFBTSxBQUFVLEFBQUM7O0FBQ2xELEFBQU8sQUFBYyxBQUFTLEFBQUUsQUFBTSxBQUFTLEFBQUMsQUF5QmhELEFBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBTyxBQUFrQjs7OytCQUtqQixBQUE0QixVQUN0QyxBQUFLLEFBQUUsQUFBQztZQURnQywyRUFBbUIsQUFBRTs7OztxREFGdkQ7O2NBQVEsV0FBVyxBQUFFLEFBQUMsQUFJNUIsQUFBSTtjQUFDLEFBQVEsV0FBRyxBQUFRLEFBQUMsQUFDekIsQUFBSTtjQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQztlQUVELEFBQVU7OztpRUFBQyxBQUFlLFNBQUUsQUFBVyxLQUFFLEFBQW9CLFdBQzNELEFBQVM7a0JBQUMsQUFBbUIsb0JBQUMsQUFBRyxLQUFFLEFBQTBCLGlEQUFDLEFBQUcsS0FBRSxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUMvRSxBQUFTO2tCQUFDLEFBQW1CLG9CQUFDLEFBQUcsS0FBRSxBQUFJLEtBQUMsQUFBUSxBQUFDLEFBQUMsQUFDbEQsQUFBUztrQkFBQyxBQUFVLFdBQUMsQUFBRyxBQUFDLEFBQUMsQUFDMUI7ZUFBTyxJQUFJLEFBQVEsU0FBQyxBQUFJLEtBQUMsQUFBUSxBQUFDLEFBQUMsQUFDckMsQUFBQyxBQUVELEFBQVE7OztnQ0FBQywrQkFDUCxBQUFJOzhGQURNLEFBQWU7Ozs7YUFDcEIsQUFB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QUFDdEI7ZUFBVSxPQUFPLEFBQUksU0FBSyxBQUFRLFVBQUUsQUFDbkM7OztlQUFPLGFBQUksQUFBaUIsa0JBQUMsQUFBMEIsQUFBQyxPQUFDLEFBQVEsQUFBQyxzQkFEN0QsQUFDZ0UsQUFBSSxBQUFDLEFBQUMsQUFDNUU7V0FBTSxBQUNMO2NBQU0sSUFBSSxBQUFTLFVBQUMsQUFBMkQsQUFBQyxBQUFDLEFBQ2xGLEFBQ0gsQUFBQzs7QUFFRCxBQUFNO29CQUFxQyxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQsIE1ldGEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IEVNUFRZX0NBQ0hFLCBDbGFzc01ldGEgfSBmcm9tICcuL29iamVjdCc7XG5pbXBvcnQgeyBEZXNjcmlwdG9yLCBCbHVlcHJpbnQgfSBmcm9tICcuL21peGluJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZEdldENhbGxiYWNrIHtcbiAgKCk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkU2V0Q2FsbGJhY2sge1xuICAodmFsOiBhbnkpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5Q29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gIChrZXk6IHN0cmluZywgdmFsOiBhbnkpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWREZXNjcmlwdG9yIHtcbiAgZ2V0PzogQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIHNldD86IENvbXB1dGVkU2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrO1xufVxuXG50eXBlIENvbXB1dGVkQXJndW1lbnQgPSBDb21wdXRlZEdldENhbGxiYWNrIHwgQ29tcHV0ZWREZXNjcmlwdG9yO1xuXG5leHBvcnQgY2xhc3MgQ29tcHV0ZWRCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gIHByaXZhdGUgZGVwczogc3RyaW5nW11bXTtcbiAgcHJpdmF0ZSBtZXRhZGF0YTogT2JqZWN0ID0ge307XG5cbiAgY29uc3RydWN0b3IoYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvciwgZGVwczogc3RyaW5nW11bXSA9IFtdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gICAgdGhpcy5kZXBzID0gZGVwcztcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBjbGFzc01ldGEuYWRkUmVmZXJlbmNlVHlwZUZvcihrZXksIENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50KGtleSwgdGhpcy5kZXBzKSk7XG4gICAgY2xhc3NNZXRhLmFkZFByb3BlcnR5TWV0YWRhdGEoa2V5LCB0aGlzLm1ldGFkYXRhKTtcbiAgICBjbGFzc01ldGEuYWRkU2xvdEZvcihrZXkpO1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWQodGhpcy5hY2Nlc3Nvcik7XG4gIH1cblxuICBwcm9wZXJ0eSguLi5wYXRoczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmRlcHMgPSBwYXRocy5tYXAoZCA9PiBkLnNwbGl0KCcuJykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbWV0YShvYmplY3Q6IE9iamVjdCkge1xuICAgIHRoaXMubWV0YWRhdGEgPSBvYmplY3Q7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB2b2xhdGlsZSgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5jbGFzcyBDb21wdXRlZCBpbXBsZW1lbnRzIERlc2NyaXB0b3Ige1xuICBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBjb25maWd1cmFibGU6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yO1xuICAnNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjJyA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcikge1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBmYWxzZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgZGVmaW5lKHByb3RvdHlwZTogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwga2V5LCB3cmFwQWNjZXNzb3IoaG9tZSwga2V5LCB0aGlzLmFjY2Vzc29yKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gd3JhcEFjY2Vzc29yKFxuICBob21lOiBPYmplY3QsXG4gIGFjY2Vzc29yTmFtZTogc3RyaW5nLFxuICBfZGVzYzogQ29tcHV0ZWREZXNjcmlwdG9yXG4pOiBQcm9wZXJ0eURlc2NyaXB0b3Ige1xuICBsZXQgc3VwZXJEZXNjID0gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGhvbWUsIGFjY2Vzc29yTmFtZSk7XG5cbiAgbGV0IG9yaWdpbmFsR2V0OiBDb21wdXRlZEdldENhbGxiYWNrO1xuICBsZXQgb3JpZ2luYWxTZXQ6IENvbXB1dGVkU2V0Q2FsbGJhY2s7XG5cbiAgbGV0IGRlc2M6IFByb3BlcnR5RGVzY3JpcHRvciA9IHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgfTtcblxuICBsZXQgZ2V0ID0gX2Rlc2MuZ2V0O1xuXG4gIGlmIChnZXQgJiYgZ2V0Lmxlbmd0aCA+IDApIHtcbiAgICBvcmlnaW5hbEdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChnZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW5hbEdldCA9IF9kZXNjLmdldCBhcyBDb21wdXRlZEdldENhbGxiYWNrO1xuICB9XG5cbiAgbGV0IHNldCA9IF9kZXNjLnNldDtcblxuICBpZiAoc2V0ICYmIHNldC5sZW5ndGggPiAxKSB7XG4gICAgb3JpZ2luYWxTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc2V0IGFzIGFueSkuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUsIHZhbHVlKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsU2V0ID0gX2Rlc2Muc2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgY2FjaGVHZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBpZiAoTWV0YS5leGlzdHModGhpcykpIHtcbiAgICAgIGxldCBzbG90ID0gTWV0YS5mb3IodGhpcykuZ2V0U2xvdHMoKVthY2Nlc3Nvck5hbWVdO1xuICAgICAgaWYgKHNsb3QgIT09IEVNUFRZX0NBQ0hFKSByZXR1cm4gc2xvdDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JpZ2luYWxHZXQuY2FsbCh0aGlzKTtcbiAgfTtcblxuICBsZXQgY2FjaGVTZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGlmIChvcmlnaW5hbFNldCkge1xuICAgIGNhY2hlU2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKHRoaXMpO1xuICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuXG4gICAgICBsZXQgcmV0ID0gb3JpZ2luYWxTZXQuY2FsbCh0aGlzLCB2YWx1ZSk7XG5cbiAgICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzbG90c1thY2Nlc3Nvck5hbWVdID0gcmV0O1xuICAgICAgfVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgc2xvdHNbYWNjZXNzb3JOYW1lXSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBpZiAoIXN1cGVyRGVzYyB8fCAndmFsdWUnIGluIHN1cGVyRGVzYykge1xuICAgIGRlc2MuZ2V0ID0gY2FjaGVHZXQ7XG4gICAgZGVzYy5zZXQgPSBjYWNoZVNldDtcbiAgICByZXR1cm4gZGVzYztcbiAgfVxuXG4gIGRlc2MuZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKHN1cGVyRGVzYyBhcyBhbnkpLmdldC5jYWxsKHRoaXMpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlR2V0LmNhbGwodGhpcyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICBkZXNjLnNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuc2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjYWNoZVNldC5jYWxsKHRoaXMsIHZhbCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gZGVzYztcbn1cblxuZnVuY3Rpb24gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHN1YmplY3Q6IGFueSwgbmFtZTogc3RyaW5nKSB7XG4gIGxldCBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdCwgbmFtZSk7XG4gIGxldCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihzdWJqZWN0KTtcbiAgd2hpbGUgKHR5cGVvZiBwZCA9PT0gJ3VuZGVmaW5lZCcgJiYgcHJvdG8gIT09IG51bGwpIHtcbiAgICBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG5hbWUpO1xuICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKTtcbiAgfVxuICByZXR1cm4gcGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZChkZXNjOiBDb21wdXRlZERlc2NyaXB0b3IpOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZChcbiAgZ2V0dGVyOiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFja1xuKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pOiBDb21wdXRlZEJsdWVwcmludDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKC4uLmFyZ3M6IGFueVtdKSB7XG4gIGxldCBsYXN0OiBDb21wdXRlZEFyZ3VtZW50ID0gYXJncy5wb3AoKTtcbiAgbGV0IGRlcHMgPSBhcmdzO1xuXG4gIGlmICh0eXBlb2YgbGFzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQoe1xuICAgICAgZ2V0OiBsYXN0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrLFxuICAgIH0pLnByb3BlcnR5KC4uLmRlcHMpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBsYXN0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQobGFzdCBhcyBDb21wdXRlZERlc2NyaXB0b3IpLnByb3BlcnR5KC4uLmRlcHMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbXB1dGVkIGV4cGVjdHMgYSBmdW5jdGlvbiBvciBhbiBvYmplY3QgYXMgbGFzdCBhcmd1bWVudCcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlciguLi5fYXJnczogYW55W10pIHt9XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvY29tcHV0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBa01NLFEsR0FBQSxRO1FBZUEsUSxHQUFBLFE7O0FBak5OOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBLElBQUEsZ0RBQUEsVUFBQSxVQUFBLEVBQUE7QUFBQSxjQUFBLGlCQUFBLEVBQUEsVUFBQTs7QUFLRSxhQUFBLGlCQUFBLENBQUEsUUFBQSxFQUErRDtBQUFBLFlBQXJCLE9BQXFCLFVBQUEsTUFBQSxHQUFBLENBQUEsSUFBQSxVQUFBLENBQUEsTUFBQSxTQUFBLEdBQUEsVUFBQSxDQUFBLENBQUEsR0FBL0QsRUFBK0Q7O0FBQUEsd0JBQUEsSUFBQSxFQUFBLGlCQUFBOztBQUFBLFlBQUEsUUFBQSwyQkFBQSxJQUFBLEVBQzdELFdBQUEsSUFBQSxDQUQ2RCxJQUM3RCxDQUQ2RCxDQUFBOztBQUZ2RCxjQUFBLFFBQUEsR0FBQSxFQUFBO0FBSU4sY0FBQSxRQUFBLEdBQUEsUUFBQTtBQUNBLGNBQUEsSUFBQSxHQUFBLElBQUE7QUFINkQsZUFBQSxLQUFBO0FBSTlEOztBQVRILHNCQUFBLFNBQUEsQ0FBQSxVQUFBLEdBQUEsU0FBQSxVQUFBLENBQUEsT0FBQSxFQUFBLEdBQUEsRUFBQSxTQUFBLEVBVytEO0FBQzNELGtCQUFBLG1CQUFBLENBQUEsR0FBQSxFQUFtQyxpREFBQSxHQUFBLEVBQWdDLEtBQW5FLElBQW1DLENBQW5DO0FBQ0Esa0JBQUEsbUJBQUEsQ0FBQSxHQUFBLEVBQW1DLEtBQW5DLFFBQUE7QUFDQSxrQkFBQSxVQUFBLENBQUEsR0FBQTtBQUNBLGVBQU8sSUFBQSxRQUFBLENBQWEsS0FBcEIsUUFBTyxDQUFQO0FBZkosS0FBQTs7QUFBQSxzQkFBQSxTQUFBLENBQUEsUUFBQSxHQUFBLFNBQUEsUUFBQSxHQWtCNkI7QUFBQSxhQUFBLElBQUEsT0FBQSxV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TSxDQUFOO0FBQ0Q7QUFDRjtBQUVLLFNBQUEsUUFBQSxHQUFrQyxDQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQsIE1ldGEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IEVNUFRZX0NBQ0hFLCBDbGFzc01ldGEgfSBmcm9tICcuL29iamVjdCc7XG5pbXBvcnQgeyBEZXNjcmlwdG9yLCBCbHVlcHJpbnQgfSBmcm9tICcuL21peGluJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZEdldENhbGxiYWNrIHtcbiAgKCk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkU2V0Q2FsbGJhY2sge1xuICAodmFsOiBhbnkpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5Q29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gIChrZXk6IHN0cmluZywgdmFsOiBhbnkpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWREZXNjcmlwdG9yIHtcbiAgZ2V0PzogQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIHNldD86IENvbXB1dGVkU2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrO1xufVxuXG50eXBlIENvbXB1dGVkQXJndW1lbnQgPSBDb21wdXRlZEdldENhbGxiYWNrIHwgQ29tcHV0ZWREZXNjcmlwdG9yO1xuXG5leHBvcnQgY2xhc3MgQ29tcHV0ZWRCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gIHByaXZhdGUgZGVwczogc3RyaW5nW11bXTtcbiAgcHJpdmF0ZSBtZXRhZGF0YTogT2JqZWN0ID0ge307XG5cbiAgY29uc3RydWN0b3IoYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvciwgZGVwczogc3RyaW5nW11bXSA9IFtdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gICAgdGhpcy5kZXBzID0gZGVwcztcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBjbGFzc01ldGEuYWRkUmVmZXJlbmNlVHlwZUZvcihrZXksIENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50KGtleSwgdGhpcy5kZXBzKSk7XG4gICAgY2xhc3NNZXRhLmFkZFByb3BlcnR5TWV0YWRhdGEoa2V5LCB0aGlzLm1ldGFkYXRhKTtcbiAgICBjbGFzc01ldGEuYWRkU2xvdEZvcihrZXkpO1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWQodGhpcy5hY2Nlc3Nvcik7XG4gIH1cblxuICBwcm9wZXJ0eSguLi5wYXRoczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmRlcHMgPSBwYXRocy5tYXAoZCA9PiBkLnNwbGl0KCcuJykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbWV0YShvYmplY3Q6IE9iamVjdCkge1xuICAgIHRoaXMubWV0YWRhdGEgPSBvYmplY3Q7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB2b2xhdGlsZSgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5jbGFzcyBDb21wdXRlZCBpbXBsZW1lbnRzIERlc2NyaXB0b3Ige1xuICBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBjb25maWd1cmFibGU6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yO1xuICAnNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjJyA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcikge1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBmYWxzZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgZGVmaW5lKHByb3RvdHlwZTogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwga2V5LCB3cmFwQWNjZXNzb3IoaG9tZSwga2V5LCB0aGlzLmFjY2Vzc29yKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gd3JhcEFjY2Vzc29yKFxuICBob21lOiBPYmplY3QsXG4gIGFjY2Vzc29yTmFtZTogc3RyaW5nLFxuICBfZGVzYzogQ29tcHV0ZWREZXNjcmlwdG9yXG4pOiBQcm9wZXJ0eURlc2NyaXB0b3Ige1xuICBsZXQgc3VwZXJEZXNjID0gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGhvbWUsIGFjY2Vzc29yTmFtZSk7XG5cbiAgbGV0IG9yaWdpbmFsR2V0OiBDb21wdXRlZEdldENhbGxiYWNrO1xuICBsZXQgb3JpZ2luYWxTZXQ6IENvbXB1dGVkU2V0Q2FsbGJhY2s7XG5cbiAgbGV0IGRlc2M6IFByb3BlcnR5RGVzY3JpcHRvciA9IHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgfTtcblxuICBsZXQgZ2V0ID0gX2Rlc2MuZ2V0O1xuXG4gIGlmIChnZXQgJiYgZ2V0Lmxlbmd0aCA+IDApIHtcbiAgICBvcmlnaW5hbEdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChnZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW5hbEdldCA9IF9kZXNjLmdldCBhcyBDb21wdXRlZEdldENhbGxiYWNrO1xuICB9XG5cbiAgbGV0IHNldCA9IF9kZXNjLnNldDtcblxuICBpZiAoc2V0ICYmIHNldC5sZW5ndGggPiAxKSB7XG4gICAgb3JpZ2luYWxTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc2V0IGFzIGFueSkuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUsIHZhbHVlKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsU2V0ID0gX2Rlc2Muc2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgY2FjaGVHZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBpZiAoTWV0YS5leGlzdHModGhpcykpIHtcbiAgICAgIGxldCBzbG90ID0gTWV0YS5mb3IodGhpcykuZ2V0U2xvdHMoKVthY2Nlc3Nvck5hbWVdO1xuICAgICAgaWYgKHNsb3QgIT09IEVNUFRZX0NBQ0hFKSByZXR1cm4gc2xvdDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JpZ2luYWxHZXQuY2FsbCh0aGlzKTtcbiAgfTtcblxuICBsZXQgY2FjaGVTZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGlmIChvcmlnaW5hbFNldCkge1xuICAgIGNhY2hlU2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKHRoaXMpO1xuICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuXG4gICAgICBsZXQgcmV0ID0gb3JpZ2luYWxTZXQuY2FsbCh0aGlzLCB2YWx1ZSk7XG5cbiAgICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzbG90c1thY2Nlc3Nvck5hbWVdID0gcmV0O1xuICAgICAgfVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgc2xvdHNbYWNjZXNzb3JOYW1lXSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBpZiAoIXN1cGVyRGVzYyB8fCAndmFsdWUnIGluIHN1cGVyRGVzYykge1xuICAgIGRlc2MuZ2V0ID0gY2FjaGVHZXQ7XG4gICAgZGVzYy5zZXQgPSBjYWNoZVNldDtcbiAgICByZXR1cm4gZGVzYztcbiAgfVxuXG4gIGRlc2MuZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKHN1cGVyRGVzYyBhcyBhbnkpLmdldC5jYWxsKHRoaXMpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlR2V0LmNhbGwodGhpcyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICBkZXNjLnNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuc2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjYWNoZVNldC5jYWxsKHRoaXMsIHZhbCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gZGVzYztcbn1cblxuZnVuY3Rpb24gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHN1YmplY3Q6IGFueSwgbmFtZTogc3RyaW5nKSB7XG4gIGxldCBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdCwgbmFtZSk7XG4gIGxldCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihzdWJqZWN0KTtcbiAgd2hpbGUgKHR5cGVvZiBwZCA9PT0gJ3VuZGVmaW5lZCcgJiYgcHJvdG8gIT09IG51bGwpIHtcbiAgICBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG5hbWUpO1xuICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKTtcbiAgfVxuICByZXR1cm4gcGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZChkZXNjOiBDb21wdXRlZERlc2NyaXB0b3IpOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZChcbiAgZ2V0dGVyOiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFja1xuKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pOiBDb21wdXRlZEJsdWVwcmludDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKC4uLmFyZ3M6IGFueVtdKSB7XG4gIGxldCBsYXN0OiBDb21wdXRlZEFyZ3VtZW50ID0gYXJncy5wb3AoKTtcbiAgbGV0IGRlcHMgPSBhcmdzO1xuXG4gIGlmICh0eXBlb2YgbGFzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQoe1xuICAgICAgZ2V0OiBsYXN0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrLFxuICAgIH0pLnByb3BlcnR5KC4uLmRlcHMpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBsYXN0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQobGFzdCBhcyBDb21wdXRlZERlc2NyaXB0b3IpLnByb3BlcnR5KC4uLmRlcHMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbXB1dGVkIGV4cGVjdHMgYSBmdW5jdGlvbiBvciBhbiBvYmplY3QgYXMgbGFzdCBhcmd1bWVudCcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlciguLi5fYXJnczogYW55W10pIHt9XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -125,2 +125,2 @@ "use strict";

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O1FBc0NnQixBQUFXO1FBOEJYLEFBQUs7O0FBcEVyQixBQUFPLEFBQUUsQUFBUyxBQUFFLEFBQVUsQUFBRSxBQUFNLEFBQVMsQUFBQzs7QUFFaEQsQUFBTyxBQUFFLEFBQWlCLEFBQUUsQUFBTSxBQUFZLEFBQUMsQUFFL0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBTSxBQUFzQjs7O21DQUdkLEFBQVksTUFDdEIsQUFBSyxBQUFFLEFBQUM7OztxREFDUixBQUFJOztjQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQztlQUVELEFBQU07Ozs2REFBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQWEsT0FDL0M7WUFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQWMsQUFBQyxBQUUvQixBQUFNO2VBQUMsQUFBYyxlQUFDLEFBQU0sUUFBRSxBQUFHO3dCQUNuQixBQUFJLEFBQ2hCLEFBQVk7MEJBQUUsQUFBSSxBQUNsQixBQUFHO2dDQUNEO3VCQUFPLEFBQUksS0FKb0IsQUFJbkIsQUFBSSxBQUFDLEFBQUMsQUFDcEIsQUFBQyxBQUNGLEFBQUMsQUFBQyxBQUNMLEFBQUMsQUFDRjtBQVBLLEFBQVUsQUFTaEI7Ozs7O0FBckJvQyxBQUFVLEFBRzVDOztJQWtCSSxBQUFxQjs7O2tDQUdiLEFBQVksTUFDdEIsQUFBSyxBQUFFLEFBQUM7OztzREFDUixBQUFJOztlQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQztlQUVELEFBQVU7OztvRUFBQyxBQUFlLFNBQUUsQUFBWSxNQUFFLEFBQWdCLE9BQ3hEO2VBQU8sSUFBSSxBQUFxQixzQkFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDOUMsQUFBQyxBQUNGOzs7O0FBWGtDLEFBQVMsQUFHMUMsQUFVRixBQUFNOztxQkFBc0IsQUFBWSxNQUN0QztXQUFPLElBQUksQUFBb0IscUJBQUMsQUFBSSxBQUFDLEFBQUMsQUFDeEMsQUFBQyxBQUVEOzs7SUFBTSxBQUFlOzs7NEJBR1AsQUFBYyxNQUN4Qjs7O1lBQUksQUFBTSxTQUFHLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBQyxHQUFFLENBQUMsQUFBQyxBQUFDLEFBQUMsQUFDL0I7WUFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFNLFNBQUcsQUFBQyxBQUFDLEFBQUMsQUFFakM7WUFBSSxBQUFHLE1BQUcsZUFDUjt3QkFBWSxBQUFNLGlCQUFFLEFBQUcsS0FBRSxBQUFDLEFBQUUsQUFBRSxHQUFYO3VCQUFZLEFBQUcsSUFBQyxBQUFDLEFBQUM7QUFBOUIsQUFBSSxlQUE0QixBQUFJLEFBQUMsQUFBQyxBQUMvQyxBQUFDLEFBQUMsQUFFRjs7WUFBSSxBQUFHLE1BQUcsYUFBb0IsQUFBVSxPQUN0QztnQkFBSSxBQUFDLFdBQVUsQUFBTSxpQkFBRSxBQUFHLEtBQUUsQUFBQyxBQUFFLEFBQUUsR0FBWDt1QkFBWSxBQUFHLElBQUMsQUFBQyxBQUFDO0FBQWhDLEFBQU0sZUFBNEIsQUFBSSxBQUFDLEFBQUMsQUFDaEQsQUFBQztjQUFDLEFBQUksQUFBQyxRQUFHLEFBQUssQUFBQyxBQUNsQixBQUFDLEFBQUMsQUFFRixBQUFLOzs7b0ZBQUMsRUFBRSxBQUFHLFVBQUUsQUFBRyxBQUFFLFlBQUUsQ0FBQyxBQUFJLEFBQUMsQUFBQyxBQUFDLEFBQzVCLEFBQUk7O2VBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO2VBRUQsQUFBVTs7OzhEQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBZSxNQUNyRDtZQUFJLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBQyxBQUFDLE9BQUssQUFBRyxLQUFFLE1BQU0sSUFBSSxBQUFLLEFBQUMsMkJBQWtCLEFBQUcsQUFBVyxBQUFDLEFBQUMsQUFDNUU7ZUFBTyxBQUFLLDZCQUFDLEFBQVUsc0JBQUMsQUFBTSxRQUFFLEFBQUcsS0FBRSxBQUFJLEFBQUMsQUFBQyxBQUM3QyxBQUFDLEFBQ0Y7Ozs7QUF4QjRCLEFBQWlCLEFBRzVDLEFBdUJGLEFBQU07O2VBQWdCLEFBQVksTUFDaEM7V0FBTyxJQUFJLEFBQWMsZUFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUFDLEFBQUMsQUFDN0MsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsdWVwcmludCwgRGVzY3JpcHRvciB9IGZyb20gJy4vbWl4aW4nO1xuaW1wb3J0IHsgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgQ29tcHV0ZWRCbHVlcHJpbnQgfSBmcm9tICcuL2NvbXB1dGVkJztcblxuY2xhc3MgQWxpYXNNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lOiBPYmplY3QpIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMubmFtZSBhcyBzdHJpbmc7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQodGhpczogdHlwZW9mIHRhcmdldCkge1xuICAgICAgICByZXR1cm4gdGhpc1tuYW1lXTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgQWxpYXNNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZERlc2NyaXB0b3IodGhpcy5uYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXNNZXRob2QobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZEJsdWVwcmludChuYW1lKTtcbn1cblxuY2xhc3MgQWxpYXNCbHVlcHJpbnQgZXh0ZW5kcyBDb21wdXRlZEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nW10pIHtcbiAgICBsZXQgcGFyZW50ID0gbmFtZS5zbGljZSgwLCAtMSk7XG4gICAgbGV0IGxhc3QgPSBuYW1lW25hbWUubGVuZ3RoIC0gMV07XG5cbiAgICBsZXQgZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gbmFtZS5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICB9O1xuXG4gICAgbGV0IHNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IHAgPSBwYXJlbnQucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgICBwW2xhc3RdID0gdmFsdWU7XG4gICAgfTtcblxuICAgIHN1cGVyKHsgZ2V0LCBzZXQgfSwgW25hbWVdKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIG1ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGlmICh0aGlzLm5hbWVbMF0gPT09IGtleSkgdGhyb3cgbmV3IEVycm9yKGBTZXR0aW5nIGFsaWFzICcke2tleX0nIG9uIHNlbGZgKTtcbiAgICByZXR1cm4gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgbWV0YSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzKG5hbWU6IHN0cmluZyk6IEJsdWVwcmludCB7XG4gIHJldHVybiBuZXcgQWxpYXNCbHVlcHJpbnQobmFtZS5zcGxpdCgnLicpKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvZGVzY3JpcHRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUF1Q00sVyxHQUFBLFc7UUE4QkEsSyxHQUFBLEs7O0FBckVOOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBR0Esd0I7OztBQUdFLGFBQUEscUJBQUEsQ0FBQSxJQUFBLEVBQXdCO0FBQUEsd0JBQUEsSUFBQSxFQUFBLHFCQUFBOztBQUFBLFlBQUEsUUFBQSwyQkFBQSxJQUFBLEVBQ3RCLFlBQUEsSUFBQSxDQURzQixJQUN0QixDQURzQixDQUFBOztBQUV0QixjQUFBLElBQUEsR0FBQSxJQUFBO0FBRnNCLGVBQUEsS0FBQTtBQUd2Qjs7b0NBRUQsTSxtQkFBQSxNLEVBQUEsRyxFQUFBLEssRUFBK0M7QUFDN0MsWUFBSSxPQUFPLEtBQVgsSUFBQTtBQUVBLGVBQUEsY0FBQSxDQUFBLE1BQUEsRUFBQSxHQUFBLEVBQW1DO0FBQ2pDLHdCQURpQyxJQUFBO0FBRWpDLDBCQUZpQyxJQUFBO0FBQUEsaUJBQUEsU0FBQSxHQUFBLEdBRzlCO0FBQ0QsdUJBQU8sS0FBUCxJQUFPLENBQVA7QUFDRDtBQUxnQyxTQUFuQzs7OztFQVhKLGlCOztJQXFCQSx1Qjs7O0FBR0UsYUFBQSxvQkFBQSxDQUFBLElBQUEsRUFBd0I7QUFBQSx3QkFBQSxJQUFBLEVBQUEsb0JBQUE7O0FBQUEsWUFBQSxTQUFBLDJCQUFBLElBQUEsRUFDdEIsV0FBQSxJQUFBLENBRHNCLElBQ3RCLENBRHNCLENBQUE7O0FBRXRCLGVBQUEsSUFBQSxHQUFBLElBQUE7QUFGc0IsZUFBQSxNQUFBO0FBR3ZCOzttQ0FFRCxVLHVCQUFBLE8sRUFBQSxJLEVBQUEsSyxFQUEwRDtBQUN4RCxlQUFPLElBQUEscUJBQUEsQ0FBMEIsS0FBakMsSUFBTyxDQUFQOzs7O0VBVEosZ0I7O0FBYU0sU0FBQSxXQUFBLENBQUEsSUFBQSxFQUFrQztBQUN0QyxXQUFPLElBQUEsb0JBQUEsQ0FBUCxJQUFPLENBQVA7QUFDRDs7SUFFRCxpQjs7O0FBR0UsYUFBQSxjQUFBLENBQUEsSUFBQSxFQUEwQjtBQUFBLHdCQUFBLElBQUEsRUFBQSxjQUFBOztBQUN4QixZQUFJLFNBQVMsS0FBQSxLQUFBLENBQUEsQ0FBQSxFQUFjLENBQTNCLENBQWEsQ0FBYjtBQUNBLFlBQUksT0FBTyxLQUFLLEtBQUEsTUFBQSxHQUFoQixDQUFXLENBQVg7QUFFQSxZQUFJLE1BQU0sU0FBTixHQUFNLEdBQUE7QUFDUixtQkFBTyxLQUFBLE1BQUEsQ0FBWSxVQUFBLEdBQUEsRUFBQSxDQUFBLEVBQUE7QUFBQSx1QkFBWSxJQUF4QixDQUF3QixDQUFaO0FBQVosYUFBQSxFQUFQLElBQU8sQ0FBUDtBQURGLFNBQUE7QUFJQSxZQUFJLE1BQU0sU0FBTixHQUFNLENBQUEsS0FBQSxFQUE4QjtBQUN0QyxnQkFBSSxJQUFJLE9BQUEsTUFBQSxDQUFjLFVBQUEsR0FBQSxFQUFBLENBQUEsRUFBQTtBQUFBLHVCQUFZLElBQTFCLENBQTBCLENBQVo7QUFBZCxhQUFBLEVBQVIsSUFBUSxDQUFSO0FBQ0EsY0FBQSxJQUFBLElBQUEsS0FBQTtBQUZGLFNBQUE7O0FBUndCLFlBQUEsU0FBQSwyQkFBQSxJQUFBLEVBYXhCLG1CQUFBLElBQUEsQ0FBQSxJQUFBLEVBQU0sRUFBQSxLQUFBLEdBQUEsRUFBTixLQUFBLEdBQU0sRUFBTixFQUFvQixDQWJJLElBYUosQ0FBcEIsQ0Fid0IsQ0FBQTs7QUFjeEIsZUFBQSxJQUFBLEdBQUEsSUFBQTtBQWR3QixlQUFBLE1BQUE7QUFlekI7OzZCQUVELFUsdUJBQUEsTSxFQUFBLEcsRUFBQSxJLEVBQXVEO0FBQ3JELFlBQUksS0FBQSxJQUFBLENBQUEsQ0FBQSxNQUFKLEdBQUEsRUFBMEIsTUFBTSxJQUFBLEtBQUEsQ0FBQSxxQkFBTixHQUFNLEdBQU4sWUFBTSxDQUFOO0FBQzFCLGVBQU8sbUJBQUEsU0FBQSxDQUFBLFVBQUEsQ0FBQSxJQUFBLENBQUEsSUFBQSxFQUFBLE1BQUEsRUFBQSxHQUFBLEVBQVAsSUFBTyxDQUFQOzs7O0VBdEJKLDJCOztBQTBCTSxTQUFBLEtBQUEsQ0FBQSxJQUFBLEVBQTRCO0FBQ2hDLFdBQU8sSUFBQSxjQUFBLENBQW1CLEtBQUEsS0FBQSxDQUExQixHQUEwQixDQUFuQixDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCbHVlcHJpbnQsIERlc2NyaXB0b3IgfSBmcm9tICcuL21peGluJztcbmltcG9ydCB7IENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IENvbXB1dGVkQmx1ZXByaW50IH0gZnJvbSAnLi9jb21wdXRlZCc7XG5pbXBvcnQgeyBEaWN0IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmNsYXNzIEFsaWFzTWV0aG9kRGVzY3JpcHRvciBleHRlbmRzIERlc2NyaXB0b3Ige1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBEaWN0LCBrZXk6IHN0cmluZywgX2hvbWU6IE9iamVjdCkge1xuICAgIGxldCBuYW1lID0gdGhpcy5uYW1lIGFzIHN0cmluZztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiB0eXBlb2YgdGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzW25hbWVdO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBBbGlhc01ldGhvZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9tZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kRGVzY3JpcHRvcih0aGlzLm5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhc01ldGhvZChuYW1lOiBzdHJpbmcpOiBCbHVlcHJpbnQge1xuICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kQmx1ZXByaW50KG5hbWUpO1xufVxuXG5jbGFzcyBBbGlhc0JsdWVwcmludCBleHRlbmRzIENvbXB1dGVkQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmdbXSkge1xuICAgIGxldCBwYXJlbnQgPSBuYW1lLnNsaWNlKDAsIC0xKTtcbiAgICBsZXQgbGFzdCA9IG5hbWVbbmFtZS5sZW5ndGggLSAxXTtcblxuICAgIGxldCBnZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiBuYW1lLnJlZHVjZSgob2JqLCBuKSA9PiBvYmpbbl0sIHRoaXMpO1xuICAgIH07XG5cbiAgICBsZXQgc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICBsZXQgcCA9IHBhcmVudC5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICAgIHBbbGFzdF0gPSB2YWx1ZTtcbiAgICB9O1xuXG4gICAgc3VwZXIoeyBnZXQsIHNldCB9LCBbbmFtZV0pO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgaWYgKHRoaXMubmFtZVswXSA9PT0ga2V5KSB0aHJvdyBuZXcgRXJyb3IoYFNldHRpbmcgYWxpYXMgJyR7a2V5fScgb24gc2VsZmApO1xuICAgIHJldHVybiBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBtZXRhKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXMobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc0JsdWVwcmludChuYW1lLnNwbGl0KCcuJykpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -437,2 +437,2 @@ "use strict";

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztRQWdNZ0IsQUFBTTtRQWtCTixBQUFnQjtRQVloQixBQUFPO1FBK0dQLEFBQVU7O0FBN1UxQixBQUFPLEFBQUUsQUFBVSxBQUFFLEFBQU0sQUFBMkIsQUFBQzs7QUFDdkQsQUFBTyxBQUFRLEFBQUksQUFBRSxBQUFNLEFBQUUsQUFBTSxBQUFlLEFBQUM7O0FBQ25ELEFBQXNCLEFBRXBCLEFBQVMsQUFDVCxBQUFZLEFBQ1osQUFBVyxBQUNaLEFBQU0sQUFBVSxBQUFDOztBQUVsQixBQUFPLEFBQUUsQUFBSSxBQUFFLEFBQU0sQUFBUyxBQUFDLEFBRS9CLEFBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBRSxBQUFPLEFBQUUsVUFBRyxBQUFLLEFBQUMsTUFFMUIsQUFBTTs7QUFBQyxJQUFNLEFBQVUsa0NBQUcsQUFBc0MsQUFBQyxBQUNqRSxBQUFNO0FBQUMsSUFBTSxBQUFTLGdDQUFHLEFBQXNDLEFBQUMsQUFFaEUsQUFBTTtJQUFOLEFBQXNCLEFBQVUsd0RBQzlCOzs7U0FBc0MsMENBQUcsQUFBSSxBQUFDLEFBRWhELEFBQUM7QUFFRCxBQUFNO0lBQU4sQUFBc0IsQUFBUyxxREFDN0I7OztTQUFzQywwQ0FBRyxBQUFJLEFBQUMsQUFFaEQsQUFBQztBQVNELEFBQU07SUFBTyxBQUFLLEFBNEJoQjttQkFBWSxBQUFzQixZQUFFLEFBQWU7Ozs7O2FBM0JqQyxhQUFjLEFBQVcsQUFBQyxLQUFwQyxDQUFxQyxBQUF1QixBQUM1RDthQUFzQix5QkFBYSxBQUFFLEFBQUMsQUFDdEM7YUFBZ0IsbUJBQWEsQUFBRSxBQUFDLEFBQ2hDO2FBQVksZUFBWSxBQUFFLEFBQUMsQUF5QmpDLEFBQUk7YUFBQyxBQUFNLE9BQUMsQUFBVSxBQUFDLEFBQUMsQUFD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LEFBQUMsQUFDekIsQUFDSCxBQUFDLEFBQUM7QUFFRCxBQUFZOztTQUFDLEFBQVMsWUFBRyxBQUFJLEFBQUMsQUFFL0I7V0FBTyxBQUFJLEFBQUMsQUFDZCxBQUFDOztBQUVELFNBQVMsQUFBUyxVQUFDLEFBQWtCLFVBQ25DO1FBQUksQUFBVyxlQUFJLEFBQVEsVUFBRSxPQUFPLEFBQVEsQUFBQyxBQUU3QztXQUFPLEFBQThCLFlBQ25DO21HQURzQyxBQUFXOzs7O1lBQzdDLENBQUMsQUFBSSxNQUFFLE9BQU8sQUFBUSxTQUFDLEFBQUssTUFBQyxBQUFJLE1BQUUsQUFBSSxBQUFDLEFBQUMsQUFFN0M7WUFBSSxBQUFTLFlBQUcsQUFBSSxLQUFDLEFBQU0sQUFBQyxBQUM1QixBQUFJO2FBQUMsQUFBTSxBQUFHLEFBQUksQUFBQyxBQUVuQjtZQUFJLEFBQ0Y7bUJBQU8sQUFBUSxTQUFDLEFBQUssTUFBQyxBQUFJLE1BQUUsQUFBSSxBQUFDLEFBQUMsQUFDbkM7a0JBQVMsQUFDUixBQUFJO2lCQUFDLEFBQU0sU0FBRyxBQUFTLEFBQUMsQUFDekIsQUFDSCxBQUFDLEFBQUMsQUFDSjtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ0xBU1NfTUVUQSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRGljdCwgZGljdCwgYXNzaWduIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgR2xpbW1lck9iamVjdCwge1xuICBHbGltbWVyT2JqZWN0RmFjdG9yeSxcbiAgQ2xhc3NNZXRhLFxuICBJbnN0YW5jZU1ldGEsXG4gIHR1cmJvY2hhcmdlLFxufSBmcm9tICcuL29iamVjdCc7XG5cbmltcG9ydCB7IFJPT1QgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgeyBpc0FycmF5IH0gPSBBcnJheTtcblxuZXhwb3J0IGNvbnN0IERFU0NSSVBUT1IgPSAnNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjJztcbmV4cG9ydCBjb25zdCBCTFVFUFJJTlQgPSAnOGQ5N2NmNWYtZGI5ZS00OGQ4LWE2YjItN2E3NWI3MTcwODA1JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERlc2NyaXB0b3Ige1xuICAnNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjJyA9IHRydWU7XG4gIGFic3RyYWN0IGRlZmluZShwcm90b3R5cGU6IE9iamVjdCwga2V5OiBzdHJpbmcsIGhvbWU6IE9iamVjdCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCbHVlcHJpbnQge1xuICAnOGQ5N2NmNWYtZGI5ZS00OGQ4LWE2YjItN2E3NWI3MTcwODA1JyA9IHRydWU7XG4gIGFic3RyYWN0IGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9ucyB7XG4gIGNvbmNhdGVuYXRlZFByb3BlcnRpZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGw7XG4gIG1lcmdlZFByb3BlcnRpZXM/OiBzdHJpbmdbXSB8IHN0cmluZztcbiAgX3N1cGVyPzogRnVuY3Rpb247XG4gIFtpbmRleDogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgTWl4aW4ge1xuICBwcml2YXRlIGV4dGVuc2lvbnM6IERpY3Q8YW55PiA9IG51bGwgYXMgYW55OyAvLyBhc3NpZ25lZCBiZWZvcmUgdXNlZFxuICBwcml2YXRlIGNvbmNhdGVuYXRlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgbWVyZ2VkUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBkZXBlbmRlbmNpZXM6IE1peGluW10gPSBbXTtcblxuICBzdGF0aWMgY3JlYXRlKC4uLmFyZ3M6IChNaXhpbiB8IEV4dGVuc2lvbnMpW10pIHtcbiAgICBsZXQgZXh0ZW5zaW9ucyA9IGFyZ3NbYXJncy5sZW5ndGggLSAxXTtcblxuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHt9LCBbXSk7XG4gICAgfSBlbHNlIGlmIChleHRlbnNpb25zIGluc3RhbmNlb2YgTWl4aW4pIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgYXJncyBhcyBNaXhpbltdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGRlcHMgPSBhcmdzLnNsaWNlKDAsIC0xKS5tYXAodG9NaXhpbik7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoZXh0ZW5zaW9ucyBhcyBFeHRlbnNpb25zLCBkZXBzKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgbWl4aW5zKG9iajogYW55KTogTWl4aW5bXSB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIFtdO1xuXG4gICAgbGV0IG1ldGEgPSBDbGFzc01ldGEuZm9yKG9iaik7XG4gICAgaWYgKCFtZXRhKSByZXR1cm4gW107XG5cbiAgICByZXR1cm4gbWV0YS5nZXRBcHBsaWVkTWl4aW5zKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihleHRlbnNpb25zOiBFeHRlbnNpb25zLCBtaXhpbnM6IE1peGluW10pIHtcbiAgICB0aGlzLnJlb3BlbihleHRlbnNpb25zKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKC4uLm1peGlucyk7XG4gIH1cblxuICBkZXRlY3Qob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAob2JqIGluc3RhbmNlb2YgTWl4aW4pIHtcbiAgICAgIHJldHVybiBvYmouZGVwZW5kZW5jaWVzLmluZGV4T2YodGhpcykgIT09IC0xO1xuICAgIH1cblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIHJldHVybiAhIW1ldGEgJiYgbWV0YS5oYXNBcHBsaWVkTWl4aW4odGhpcyk7XG4gIH1cblxuICByZW9wZW4oZXh0ZW5zaW9uczogRXh0ZW5zaW9ucykge1xuICAgIGlmICh0aGlzLmV4dGVuc2lvbnMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2godG9NaXhpbih0aGlzLmV4dGVuc2lvbnMpKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICBsZXQgY29uY2F0OiBzdHJpbmdbXTtcbiAgICAgIGxldCByYXdDb25jYXQgPSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHJhd0NvbmNhdCkpIHtcbiAgICAgICAgY29uY2F0ID0gKHJhd0NvbmNhdCBhcyBzdHJpbmdbXSkuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAocmF3Q29uY2F0ID09PSBudWxsIHx8IHJhd0NvbmNhdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbmNhdCA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uY2F0ID0gW3Jhd0NvbmNhdCBhcyBzdHJpbmddO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gY29uY2F0O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXh0ZW5zaW9ucyA9PT0gJ29iamVjdCcgJiYgJ21lcmdlZFByb3BlcnRpZXMnIGluIGV4dGVuc2lvbnMpIHtcbiAgICAgIGxldCBtZXJnZWQ6IHN0cmluZ1tdO1xuICAgICAgbGV0IHJhd01lcmdlZCA9IGV4dGVuc2lvbnMubWVyZ2VkUHJvcGVydGllcztcblxuICAgICAgaWYgKGlzQXJyYXkocmF3TWVyZ2VkKSkge1xuICAgICAgICBtZXJnZWQgPSAocmF3TWVyZ2VkIGFzIHN0cmluZ1tdKS5zbGljZSgpO1xuICAgICAgfSBlbHNlIGlmIChyYXdNZXJnZWQgPT09IG51bGwgfHwgcmF3TWVyZ2VkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWVyZ2VkID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXJnZWQgPSBbcmF3TWVyZ2VkIGFzIHN0cmluZ107XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBleHRlbnNpb25zLm1lcmdlZFByb3BlcnRpZXM7XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBtZXJnZWQ7XG4gICAgfVxuXG4gICAgbGV0IG5vcm1hbGl6ZWQ6IERpY3Q8Qmx1ZXByaW50PiA9IE9iamVjdC5rZXlzKGV4dGVuc2lvbnMpLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IGV4dGVuc2lvbnNba2V5XTtcblxuICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgIG9ialtrZXldID0gbmV3IE1ldGhvZEJsdWVwcmludCh7IHZhbHVlIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICAgIGlmICh2YWx1ZSAmJiBCTFVFUFJJTlQgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBEYXRhQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSwgZGljdDxCbHVlcHJpbnQ+KCkpO1xuXG4gICAgdGhpcy5leHRlbnNpb25zID0gZGljdDxhbnk+KCk7XG4gICAgYXNzaWduKHRoaXMuZXh0ZW5zaW9ucywgdHVyYm9jaGFyZ2Uobm9ybWFsaXplZCkpO1xuICB9XG5cbiAgYXBwbHkodGFyZ2V0OiBhbnkpIHtcbiAgICBsZXQgbWV0YTogQ2xhc3NNZXRhID0gKHRhcmdldFtDTEFTU19NRVRBXSA9IHRhcmdldFtDTEFTU19NRVRBXSB8fCBuZXcgQ2xhc3NNZXRhKCkpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmFwcGx5KHRhcmdldCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKHRhcmdldCwgdGFyZ2V0LCBtZXRhKTtcbiAgICBtZXRhLmFkZE1peGluKHRoaXMpO1xuICAgIG1ldGEuc2VhbCgpO1xuICAgIG1ldGEucmVzZWFsKHRhcmdldCk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgZXh0ZW5kUHJvdG90eXBlKE9yaWdpbmFsOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgT3JpZ2luYWwucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShPcmlnaW5hbC5wcm90b3R5cGUpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZShPcmlnaW5hbCkpO1xuICAgIHRoaXMuZXh0ZW5kUHJvdG90eXBlT250byhPcmlnaW5hbCwgT3JpZ2luYWwpO1xuICB9XG5cbiAgZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXMoU3ViY2xhc3MucHJvdG90eXBlLCBQYXJlbnQucHJvdG90eXBlLCBTdWJjbGFzc1tDTEFTU19NRVRBXSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uYWRkTWl4aW4odGhpcyk7XG4gIH1cblxuICBleHRlbmRTdGF0aWMoVGFyZ2V0OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kU3RhdGljKFRhcmdldCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFRhcmdldCwgT2JqZWN0LmdldFByb3RvdHlwZU9mKFRhcmdldCksIFRhcmdldFtDTEFTU19NRVRBXVtDTEFTU19NRVRBXSk7XG4gICAgVGFyZ2V0W0NMQVNTX01FVEFdLmFkZFN0YXRpY01peGluKHRoaXMpO1xuICB9XG5cbiAgbWVyZ2VQcm9wZXJ0aWVzKHRhcmdldDogT2JqZWN0LCBwYXJlbnQ6IE9iamVjdCwgbWV0YTogQ2xhc3NNZXRhKSB7XG4gICAgaWYgKG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpKSByZXR1cm47XG4gICAgbWV0YS5hZGRBcHBsaWVkTWl4aW4odGhpcyk7XG5cbiAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMuZm9yRWFjaChrID0+IG1ldGEuYWRkTWVyZ2VkUHJvcGVydHkoaywgcGFyZW50W2tdKSk7XG4gICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KGssIFtdKSk7XG5cbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IG1ldGEuZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpIH0pLmRlZmluZShcbiAgICAgIHRhcmdldCxcbiAgICAgICdjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzJ1xuICAgICk7XG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldE1lcmdlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUodGFyZ2V0LCAnbWVyZ2VkUHJvcGVydGllcycpO1xuXG4gICAgT2JqZWN0LmtleXModGhpcy5leHRlbnNpb25zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBsZXQgZXh0ZW5zaW9uOiBCbHVlcHJpbnQgPSB0aGlzLmV4dGVuc2lvbnMhW2tleV07XG4gICAgICBsZXQgZGVzYyA9IGV4dGVuc2lvbi5kZXNjcmlwdG9yKHRhcmdldCwga2V5IGFzIHN0cmluZywgbWV0YSk7XG4gICAgICBkZXNjLmRlZmluZSh0YXJnZXQsIGtleSBhcyBzdHJpbmcsIHBhcmVudCk7XG4gICAgfSk7XG5cbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IFJPT1QgfSkuZGVmaW5lKHRhcmdldCwgJ19zdXBlcicgYXMgc3RyaW5nKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBFeHRlbnNpb24gPSBNaXhpbiB8IEV4dGVuc2lvbnM7XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQ8VCBleHRlbmRzIEdsaW1tZXJPYmplY3Q+KFxuICBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+LFxuICAuLi5leHRlbnNpb25zOiBFeHRlbnNpb25bXVxuKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiB7XG4gIGxldCBTdXBlciA9IFBhcmVudCBhcyB0eXBlb2YgR2xpbW1lck9iamVjdDtcblxuICBsZXQgU3ViY2xhc3MgPSBjbGFzcyBleHRlbmRzIFN1cGVyIHt9O1xuICBTdWJjbGFzc1tDTEFTU19NRVRBXSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KFBhcmVudFtDTEFTU19NRVRBXSk7XG5cbiAgbGV0IG1peGlucyA9IGV4dGVuc2lvbnMubWFwKHRvTWl4aW4pO1xuICBQYXJlbnRbQ0xBU1NfTUVUQV0uYWRkU3ViY2xhc3MoU3ViY2xhc3MgYXMgR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pik7XG4gIG1peGlucy5mb3JFYWNoKG0gPT4gU3ViY2xhc3NbQ0xBU1NfTUVUQV0uYWRkTWl4aW4obSkpO1xuXG4gIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcyBhcyBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQpO1xuXG4gIHJldHVybiBTdWJjbGFzcyBhcyBhbnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxpbmtTdWJjbGFzc2VzKFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICBQYXJlbnRbQ0xBU1NfTUVUQV0uZ2V0U3ViY2xhc3NlcygpLmZvckVhY2goKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSA9PiB7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0ucmVzZXQoUGFyZW50W0NMQVNTX01FVEFdKTtcbiAgICBTdWJjbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFBhcmVudC5wcm90b3R5cGUpO1xuXG4gICAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzLCBQYXJlbnQpO1xuXG4gICAgLy8gcmVjdXJzZSBpbnRvIHN1Yi1zdWJjbGFzc2VzXG4gICAgcmVsaW5rU3ViY2xhc3NlcyhTdWJjbGFzcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9NaXhpbihleHRlbnNpb246IEV4dGVuc2lvbik6IE1peGluIHtcbiAgaWYgKGV4dGVuc2lvbiBpbnN0YW5jZW9mIE1peGluKSByZXR1cm4gZXh0ZW5zaW9uO1xuICBlbHNlIHJldHVybiBuZXcgTWl4aW4oZXh0ZW5zaW9uIGFzIE9iamVjdCwgW10pO1xufVxuXG5jbGFzcyBWYWx1ZURlc2NyaXB0b3IgZXh0ZW5kcyBEZXNjcmlwdG9yIHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgd3JpdGFibGUgPSB0cnVlLFxuICAgIHZhbHVlLFxuICB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lPzogYW55KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgd3JpdGFibGU6IHRoaXMud3JpdGFibGUsXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YUJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIHdyaXRhYmxlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIHdyaXRhYmxlID0gdHJ1ZSxcbiAgICB2YWx1ZSxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLndyaXRhYmxlID0gd3JpdGFibGU7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgbGV0IHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSA9IHRoaXM7XG5cbiAgICBpZiAoY2xhc3NNZXRhLmhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5IGFzIHN0cmluZywgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5IGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIGlmIChjbGFzc01ldGEuaGFzTWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZykpIHtcbiAgICAgIGNsYXNzTWV0YS5hZGRNZXJnZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nLCB2YWx1ZSk7XG4gICAgICB2YWx1ZSA9IGNsYXNzTWV0YS5nZXRNZXJnZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFZhbHVlRGVzY3JpcHRvcih7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBY2Nlc3NvckJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBnZXQ6ICgpID0+IGFueTtcbiAgc2V0OiAodmFsdWU6IGFueSkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICBnZXQsXG4gICAgc2V0LFxuICB9OiBQcm9wZXJ0eURlc2NyaXB0b3IgJiB7IGdldDogYW55OyBzZXQ6IGFueSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMuZ2V0ID0gZ2V0O1xuICAgIHRoaXMuc2V0ID0gc2V0O1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIF9rZXk6IHN0cmluZywgX2NsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIG5ldyBWYWx1ZURlc2NyaXB0b3Ioe1xuICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgIGdldDogdGhpcy5nZXQsXG4gICAgICBzZXQ6IHRoaXMuc2V0LFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZERlc2NyaXB0b3IgZXh0ZW5kcyBWYWx1ZURlc2NyaXB0b3Ige1xuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gd3JhcE1ldGhvZChob21lLCBrZXksIHRoaXMudmFsdWUpO1xuICAgIHN1cGVyLmRlZmluZSh0YXJnZXQsIGtleSwgaG9tZSk7XG4gIH1cbn1cblxuY2xhc3MgTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgRGF0YUJsdWVwcmludCB7XG4gIGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IE1ldGhvZERlc2NyaXB0b3Ige1xuICAgIGxldCBkZXNjID0gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgY2xhc3NNZXRhKTtcbiAgICByZXR1cm4gbmV3IE1ldGhvZERlc2NyaXB0b3IoZGVzYyBhcyBQcm9wZXJ0eURlc2NyaXB0b3IpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwTWV0aG9kKGhvbWU6IE9iamVjdCwgbWV0aG9kTmFtZTogc3RyaW5nLCBvcmlnaW5hbDogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpIHtcbiAgaWYgKCEoKG1ldGhvZE5hbWUgYXMgc3RyaW5nKSBpbiBob21lKSkgcmV0dXJuIG1heWJlV3JhcChvcmlnaW5hbCk7XG5cbiAgbGV0IHN1cGVyTWV0aG9kID0gaG9tZVttZXRob2ROYW1lXTtcblxuICBsZXQgZnVuYyA9IGZ1bmN0aW9uKHRoaXM6IEdsaW1tZXJPYmplY3QsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKCF0aGlzKSByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG5cbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBzdXBlck1ldGhvZDtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICAoZnVuYyBhcyBhbnkpLl9fd3JhcHBlZCA9IHRydWU7XG5cbiAgcmV0dXJuIGZ1bmM7XG59XG5cbmZ1bmN0aW9uIG1heWJlV3JhcChvcmlnaW5hbDogRnVuY3Rpb24pIHtcbiAgaWYgKCdfX3dyYXBwZWQnIGluIG9yaWdpbmFsKSByZXR1cm4gb3JpZ2luYWw7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHRoaXM6IEdsaW1tZXJPYmplY3QsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKCF0aGlzKSByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG5cbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBST09UO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvbWl4aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBaU1NLE0sR0FBQSxNO1FBa0JBLGdCLEdBQUEsZ0I7UUFZQSxPLEdBQUEsTztRQStHQSxVLEdBQUEsVTs7QUE5VU47O0FBQ0E7O0FBQ0E7O0FBT0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFHTSxVQUFOLE1BQU0sTzs7QUFFQyxJQUFNLGtDQUFOLHNDQUFBO0FBQ0EsSUFBTSxnQ0FBTixzQ0FBQTtBQUVQLElBQUEsa0NBQUEsU0FBQSxVQUFBLEdBQUE7QUFBQSxvQkFBQSxJQUFBLEVBQUEsVUFBQTs7QUFDRSxTQUFBLHNDQUFBLElBQUEsSUFBQTtBQURGLENBQUE7QUFLQSxJQUFBLGdDQUFBLFNBQUEsU0FBQSxHQUFBO0FBQUEsb0JBQUEsSUFBQSxFQUFBLFNBQUE7O0FBQ0UsU0FBQSxzQ0FBQSxJQUFBLElBQUE7QUFERixDQUFBO0FBWUEsSUFBQSx3QkFBQSxZQUFBO0FBNEJFLGFBQUEsS0FBQSxDQUFBLFVBQUEsRUFBQSxNQUFBLEVBQW1EO0FBQUEsWUFBQSxhQUFBOztBQUFBLHdCQUFBLElBQUEsRUFBQSxLQUFBOztBQTNCM0MsYUFBQSxVQUFBLEdBQUEsSUFBQSxDQTJCMkMsQ0EzQk47QUFDckMsYUFBQSxzQkFBQSxHQUFBLEVBQUE7QUFDQSxhQUFBLGdCQUFBLEdBQUEsRUFBQTtBQUNBLGFBQUEsWUFBQSxHQUFBLEVBQUE7QUF5Qk4sYUFBQSxNQUFBLENBQUEsVUFBQTtBQUNBLFNBQUEsZ0JBQUEsS0FBQSxZQUFBLEVBQUEsSUFBQSxDQUFBLEtBQUEsQ0FBQSxhQUFBLEVBQUEsTUFBQTtBQUNEOztBQS9CSCxVQUFBLE1BQUEsR0FBQSxTQUFBLE1BQUEsR0FNK0M7QUFBQSxhQUFBLElBQUEsT0FBQSxVQUFBLE1BQUEsRUFBN0MsT0FBNkMsTUFBQSxJQUFBLENBQUEsRUFBQSxRQUFBLENBQUEs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SUFBTyxDQUFQO0FBRVgsWUFBSSxZQUFZLEtBQWhCLE1BQUE7QUFDQSxhQUFBLE1BQUEsR0FBQSxXQUFBO0FBRUEsWUFBSTtBQUNGLG1CQUFPLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBUCxJQUFPLENBQVA7QUFERixTQUFBLFNBRVU7QUFDUixpQkFBQSxNQUFBLEdBQUEsU0FBQTtBQUNEO0FBVkgsS0FBQTtBQWFDLFNBQUEsU0FBQSxHQUFBLElBQUE7QUFFRCxXQUFBLElBQUE7QUFDRDtBQUVELFNBQUEsU0FBQSxDQUFBLFFBQUEsRUFBcUM7QUFDbkMsUUFBSSxlQUFKLFFBQUEsRUFBNkIsT0FBQSxRQUFBO0FBRTdCLFdBQU8sWUFBNEM7QUFBQSxhQUFBLElBQUEsUUFBQSxVQUFBLE1BQUEsRUFBNUMsT0FBNEMsTUFBQSxLQUFBLENBQUEsRUFBQSxRQUFBLENBQUEsRUFBQSxRQUFBLEtBQUEsRUFBQSxPQUFBLEVBQUE7QUFBNUMsaUJBQTRDLEtBQTVDLElBQTRDLFVBQUEsS0FBQSxDQUE1QztBQUE0Qzs7QUFDakQsWUFBSSxDQUFKLElBQUEsRUFBVyxPQUFPLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBUCxJQUFPLENBQVA7QUFFWCxZQUFJLFlBQVksS0FBaEIsTUFBQTtBQUNBLGFBQUEsTUFBQSxHQUFBLFdBQUE7QUFFQSxZQUFJO0FBQ0YsbUJBQU8sU0FBQSxLQUFBLENBQUEsSUFBQSxFQUFQLElBQU8sQ0FBUDtBQURGLFNBQUEsU0FFVTtBQUNSLGlCQUFBLE1BQUEsR0FBQSxTQUFBO0FBQ0Q7QUFWSCxLQUFBO0FBWUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDTEFTU19NRVRBIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBkaWN0LCBhc3NpZ24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCBHbGltbWVyT2JqZWN0LCB7XG4gIEdsaW1tZXJPYmplY3RGYWN0b3J5LFxuICBDbGFzc01ldGEsXG4gIEluc3RhbmNlTWV0YSxcbiAgdHVyYm9jaGFyZ2UsXG59IGZyb20gJy4vb2JqZWN0JztcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRGljdCB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuXG5leHBvcnQgY29uc3QgREVTQ1JJUFRPUiA9ICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnO1xuZXhwb3J0IGNvbnN0IEJMVUVQUklOVCA9ICc4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVzY3JpcHRvciB7XG4gICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnID0gdHJ1ZTtcbiAgYWJzdHJhY3QgZGVmaW5lKHByb3RvdHlwZTogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsdWVwcmludCB7XG4gICc4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDUnID0gdHJ1ZTtcbiAgYWJzdHJhY3QgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25zIHtcbiAgY29uY2F0ZW5hdGVkUHJvcGVydGllcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbDtcbiAgbWVyZ2VkUHJvcGVydGllcz86IHN0cmluZ1tdIHwgc3RyaW5nO1xuICBfc3VwZXI/OiBGdW5jdGlvbjtcbiAgW2luZGV4OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBNaXhpbiB7XG4gIHByaXZhdGUgZXh0ZW5zaW9uczogRGljdDxhbnk+ID0gbnVsbCBhcyBhbnk7IC8vIGFzc2lnbmVkIGJlZm9yZSB1c2VkXG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGRlcGVuZGVuY2llczogTWl4aW5bXSA9IFtdO1xuXG4gIHN0YXRpYyBjcmVhdGUoLi4uYXJnczogKE1peGluIHwgRXh0ZW5zaW9ucylbXSkge1xuICAgIGxldCBleHRlbnNpb25zID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIFtdKTtcbiAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbnMgaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHt9LCBhcmdzIGFzIE1peGluW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGVwcyA9IGFyZ3Muc2xpY2UoMCwgLTEpLm1hcCh0b01peGluKTtcbiAgICAgIHJldHVybiBuZXcgdGhpcyhleHRlbnNpb25zIGFzIEV4dGVuc2lvbnMsIGRlcHMpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBtaXhpbnMob2JqOiBhbnkpOiBNaXhpbltdIHtcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSByZXR1cm4gW107XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICBpZiAoIW1ldGEpIHJldHVybiBbXTtcblxuICAgIHJldHVybiBtZXRhLmdldEFwcGxpZWRNaXhpbnMoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMsIG1peGluczogTWl4aW5bXSkge1xuICAgIHRoaXMucmVvcGVuKGV4dGVuc2lvbnMpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2goLi4ubWl4aW5zKTtcbiAgfVxuXG4gIGRldGVjdChvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgcmV0dXJuIG9iai5kZXBlbmRlbmNpZXMuaW5kZXhPZih0aGlzKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgbGV0IG1ldGEgPSBDbGFzc01ldGEuZm9yKG9iaik7XG4gICAgcmV0dXJuICEhbWV0YSAmJiBtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKTtcbiAgfVxuXG4gIHJlb3BlbihleHRlbnNpb25zOiBFeHRlbnNpb25zKSB7XG4gICAgaWYgKHRoaXMuZXh0ZW5zaW9ucykge1xuICAgICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCh0b01peGluKHRoaXMuZXh0ZW5zaW9ucykpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXh0ZW5zaW9ucyA9PT0gJ29iamVjdCcgJiYgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnIGluIGV4dGVuc2lvbnMpIHtcbiAgICAgIGxldCBjb25jYXQ6IHN0cmluZ1tdO1xuICAgICAgbGV0IHJhd0NvbmNhdCA9IGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcblxuICAgICAgaWYgKGlzQXJyYXkocmF3Q29uY2F0KSkge1xuICAgICAgICBjb25jYXQgPSAocmF3Q29uY2F0IGFzIHN0cmluZ1tdKS5zbGljZSgpO1xuICAgICAgfSBlbHNlIGlmIChyYXdDb25jYXQgPT09IG51bGwgfHwgcmF3Q29uY2F0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uY2F0ID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25jYXQgPSBbcmF3Q29uY2F0IGFzIHN0cmluZ107XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBjb25jYXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnbWVyZ2VkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IG1lcmdlZDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3TWVyZ2VkID0gZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdNZXJnZWQpKSB7XG4gICAgICAgIG1lcmdlZCA9IChyYXdNZXJnZWQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd01lcmdlZCA9PT0gbnVsbCB8fCByYXdNZXJnZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtZXJnZWQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZCA9IFtyYXdNZXJnZWQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IG1lcmdlZDtcbiAgICB9XG5cbiAgICBsZXQgbm9ybWFsaXplZDogRGljdDxCbHVlcHJpbnQ+ID0gT2JqZWN0LmtleXMoZXh0ZW5zaW9ucykucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gZXh0ZW5zaW9uc1trZXldO1xuXG4gICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgTWV0aG9kQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgaWYgKHZhbHVlICYmIEJMVUVQUklOVCBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIG9ialtrZXldID0gbmV3IERhdGFCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCBkaWN0PEJsdWVwcmludD4oKSk7XG5cbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBkaWN0PGFueT4oKTtcbiAgICBhc3NpZ24odGhpcy5leHRlbnNpb25zLCB0dXJib2NoYXJnZShub3JtYWxpemVkKSk7XG4gIH1cblxuICBhcHBseSh0YXJnZXQ6IGFueSkge1xuICAgIGxldCBtZXRhOiBDbGFzc01ldGEgPSAodGFyZ2V0W0NMQVNTX01FVEFdID0gdGFyZ2V0W0NMQVNTX01FVEFdIHx8IG5ldyBDbGFzc01ldGEoKSk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uYXBwbHkodGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXModGFyZ2V0LCB0YXJnZXQsIG1ldGEpO1xuICAgIG1ldGEuYWRkTWl4aW4odGhpcyk7XG4gICAgbWV0YS5zZWFsKCk7XG4gICAgbWV0YS5yZXNlYWwodGFyZ2V0KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGUoT3JpZ2luYWw6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICBPcmlnaW5hbC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE9yaWdpbmFsLnByb3RvdHlwZSk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kUHJvdG90eXBlKE9yaWdpbmFsKSk7XG4gICAgdGhpcy5leHRlbmRQcm90b3R5cGVPbnRvKE9yaWdpbmFsLCBPcmlnaW5hbCk7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhTdWJjbGFzcy5wcm90b3R5cGUsIFBhcmVudC5wcm90b3R5cGUsIFN1YmNsYXNzW0NMQVNTX01FVEFdKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbih0aGlzKTtcbiAgfVxuXG4gIGV4dGVuZFN0YXRpYyhUYXJnZXQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRTdGF0aWMoVGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXMoVGFyZ2V0LCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoVGFyZ2V0KSwgVGFyZ2V0W0NMQVNTX01FVEFdW0NMQVNTX01FVEFdKTtcbiAgICBUYXJnZXRbQ0xBU1NfTUVUQV0uYWRkU3RhdGljTWl4aW4odGhpcyk7XG4gIH1cblxuICBtZXJnZVByb3BlcnRpZXModGFyZ2V0OiBPYmplY3QsIHBhcmVudDogRGljdDxEaWN0PiwgbWV0YTogQ2xhc3NNZXRhKSB7XG4gICAgaWYgKG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpKSByZXR1cm47XG4gICAgbWV0YS5hZGRBcHBsaWVkTWl4aW4odGhpcyk7XG5cbiAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMuZm9yRWFjaChrID0+IG1ldGEuYWRkTWVyZ2VkUHJvcGVydHkoaywgcGFyZW50W2tdKSk7XG4gICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KGssIFtdKSk7XG5cbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IG1ldGEuZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpIH0pLmRlZmluZShcbiAgICAgIHRhcmdldCxcbiAgICAgICdjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzJ1xuICAgICk7XG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldE1lcmdlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUodGFyZ2V0LCAnbWVyZ2VkUHJvcGVydGllcycpO1xuXG4gICAgT2JqZWN0LmtleXModGhpcy5leHRlbnNpb25zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBsZXQgZXh0ZW5zaW9uOiBCbHVlcHJpbnQgPSB0aGlzLmV4dGVuc2lvbnMhW2tleV07XG4gICAgICBsZXQgZGVzYyA9IGV4dGVuc2lvbi5kZXNjcmlwdG9yKHRhcmdldCwga2V5IGFzIHN0cmluZywgbWV0YSk7XG4gICAgICBkZXNjLmRlZmluZSh0YXJnZXQsIGtleSBhcyBzdHJpbmcsIHBhcmVudCk7XG4gICAgfSk7XG5cbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IFJPT1QgfSkuZGVmaW5lKHRhcmdldCwgJ19zdXBlcicgYXMgc3RyaW5nKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBFeHRlbnNpb24gPSBNaXhpbiB8IEV4dGVuc2lvbnM7XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQ8VCBleHRlbmRzIEdsaW1tZXJPYmplY3Q+KFxuICBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+LFxuICAuLi5leHRlbnNpb25zOiBFeHRlbnNpb25bXVxuKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiB7XG4gIGxldCBTdXBlciA9IFBhcmVudCBhcyB0eXBlb2YgR2xpbW1lck9iamVjdDtcblxuICBsZXQgU3ViY2xhc3MgPSBjbGFzcyBleHRlbmRzIFN1cGVyIHt9O1xuICBTdWJjbGFzc1tDTEFTU19NRVRBXSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KFBhcmVudFtDTEFTU19NRVRBXSk7XG5cbiAgbGV0IG1peGlucyA9IGV4dGVuc2lvbnMubWFwKHRvTWl4aW4pO1xuICBQYXJlbnRbQ0xBU1NfTUVUQV0uYWRkU3ViY2xhc3MoU3ViY2xhc3MgYXMgR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pik7XG4gIG1peGlucy5mb3JFYWNoKG0gPT4gU3ViY2xhc3NbQ0xBU1NfTUVUQV0uYWRkTWl4aW4obSkpO1xuXG4gIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcyBhcyBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQpO1xuXG4gIHJldHVybiBTdWJjbGFzcyBhcyBhbnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxpbmtTdWJjbGFzc2VzKFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICBQYXJlbnRbQ0xBU1NfTUVUQV0uZ2V0U3ViY2xhc3NlcygpLmZvckVhY2goKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSA9PiB7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0ucmVzZXQoUGFyZW50W0NMQVNTX01FVEFdKTtcbiAgICBTdWJjbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFBhcmVudC5wcm90b3R5cGUpO1xuXG4gICAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzLCBQYXJlbnQpO1xuXG4gICAgLy8gcmVjdXJzZSBpbnRvIHN1Yi1zdWJjbGFzc2VzXG4gICAgcmVsaW5rU3ViY2xhc3NlcyhTdWJjbGFzcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9NaXhpbihleHRlbnNpb246IEV4dGVuc2lvbik6IE1peGluIHtcbiAgaWYgKGV4dGVuc2lvbiBpbnN0YW5jZW9mIE1peGluKSByZXR1cm4gZXh0ZW5zaW9uO1xuICBlbHNlIHJldHVybiBuZXcgTWl4aW4oZXh0ZW5zaW9uIGFzIE9iamVjdCwgW10pO1xufVxuXG5jbGFzcyBWYWx1ZURlc2NyaXB0b3IgZXh0ZW5kcyBEZXNjcmlwdG9yIHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgd3JpdGFibGUgPSB0cnVlLFxuICAgIHZhbHVlLFxuICB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lPzogYW55KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgd3JpdGFibGU6IHRoaXMud3JpdGFibGUsXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YUJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgcHVibGljIHdyaXRhYmxlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIHdyaXRhYmxlID0gdHJ1ZSxcbiAgICB2YWx1ZSxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLndyaXRhYmxlID0gd3JpdGFibGU7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgbGV0IHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSA9IHRoaXM7XG5cbiAgICBpZiAoY2xhc3NNZXRhLmhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5IGFzIHN0cmluZywgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5IGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIGlmIChjbGFzc01ldGEuaGFzTWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZykpIHtcbiAgICAgIGNsYXNzTWV0YS5hZGRNZXJnZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nLCB2YWx1ZSk7XG4gICAgICB2YWx1ZSA9IGNsYXNzTWV0YS5nZXRNZXJnZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFZhbHVlRGVzY3JpcHRvcih7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBY2Nlc3NvckJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBnZXQ6ICgpID0+IGFueTtcbiAgc2V0OiAodmFsdWU6IGFueSkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICBnZXQsXG4gICAgc2V0LFxuICB9OiBQcm9wZXJ0eURlc2NyaXB0b3IgJiB7IGdldDogYW55OyBzZXQ6IGFueSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMuZ2V0ID0gZ2V0O1xuICAgIHRoaXMuc2V0ID0gc2V0O1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIF9rZXk6IHN0cmluZywgX2NsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIG5ldyBWYWx1ZURlc2NyaXB0b3Ioe1xuICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgIGdldDogdGhpcy5nZXQsXG4gICAgICBzZXQ6IHRoaXMuc2V0LFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZERlc2NyaXB0b3IgZXh0ZW5kcyBWYWx1ZURlc2NyaXB0b3Ige1xuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gd3JhcE1ldGhvZChob21lLCBrZXksIHRoaXMudmFsdWUpO1xuICAgIHN1cGVyLmRlZmluZSh0YXJnZXQsIGtleSwgaG9tZSk7XG4gIH1cbn1cblxuY2xhc3MgTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgRGF0YUJsdWVwcmludCB7XG4gIGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IE1ldGhvZERlc2NyaXB0b3Ige1xuICAgIGxldCBkZXNjID0gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgY2xhc3NNZXRhKTtcbiAgICByZXR1cm4gbmV3IE1ldGhvZERlc2NyaXB0b3IoZGVzYyBhcyBQcm9wZXJ0eURlc2NyaXB0b3IpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwTWV0aG9kKGhvbWU6IERpY3QsIG1ldGhvZE5hbWU6IHN0cmluZywgb3JpZ2luYWw6ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55KSB7XG4gIGlmICghKChtZXRob2ROYW1lIGFzIHN0cmluZykgaW4gaG9tZSkpIHJldHVybiBtYXliZVdyYXAob3JpZ2luYWwpO1xuXG4gIGxldCBzdXBlck1ldGhvZCA9IGhvbWVbbWV0aG9kTmFtZV07XG5cbiAgbGV0IGZ1bmMgPSBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gc3VwZXJNZXRob2QgYXMgYW55O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIChmdW5jIGFzIGFueSkuX193cmFwcGVkID0gdHJ1ZTtcblxuICByZXR1cm4gZnVuYztcbn1cblxuZnVuY3Rpb24gbWF5YmVXcmFwKG9yaWdpbmFsOiBGdW5jdGlvbikge1xuICBpZiAoJ19fd3JhcHBlZCcgaW4gb3JpZ2luYWwpIHJldHVybiBvcmlnaW5hbDtcblxuICByZXR1cm4gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -440,2 +440,2 @@ "use strict";

GlimmerObject.isClass = true;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBb0NnQixBQUFXOztBQXBDM0IsQUFBTyxBQUFFLEFBQUksQUFBeUIsQUFBaUIsQUFBRSxBQUFNLEFBQTJCLEFBQUM7O0FBQzNGLEFBQU8sQUFBUSxBQUFJLEFBQUUsQUFBTSxBQUFFLEFBQWMsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDbkUsQUFBTyxBQUFTLEFBQU0sQUFBSSxBQUFXLEFBQUUsQUFBTyxBQUFFLEFBQWdCLEFBQUUsQUFBVSxBQUFFLEFBQU0sQUFBUyxBQUFDLEFBRTlGLEFBQU07O0FBRU4sQUFBTyxBQUFFLEFBQUksQUFBRSxBQUFNLEFBQVMsQUFBQzs7QUFFL0IsQUFBTyxBQUFFLEFBQUksQUFBRSxBQUFNLEFBQW9CLEFBQUMsQUFFMUMsQUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU5FLEFBQU8sQUFBRSxVQUFHLEFBQUssQUFBQzs7QUFNbkIsSUFBTSxBQUFXLG9DQUFHLFNBQVMsQUFBVyxjQUFJLEFBQUMsQUFBQztBQUVyRCxJQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDLEFBd0IxRCxBQUFNO3FCQUF5QixBQUFNLEtBQ25DLEFBQXNCLEFBQ3RCLEFBQXlCO0FBQ3pCOztXQUFPLEFBQUcsQUFBQyxBQUNiLEFBQUMsQUFFRDs7O0lBQWUsQUFBVzs7Ozs7Ozs7O3lCQUNKLEFBQUcsQUFBWSxxREFDakM7Y0FBTSxJQUFJLEFBQUssTUFBQyxBQUFnRCxBQUFDLEFBQUMsQUFDcEUsQUFBQyxBQUNGOzs7O0FBSmlDLEFBQUksQUFDcEMsQUFBbUIsQUFLckIsQUFBTTs7SUFBTixBQUFhLEFBQVM7eUJBQ1o7OzthQUFjLGlCQUFHLEFBQUksQUFBOEIsQUFBQyxBQUNwRDthQUFnQixtQkFBRyxBQUFJLEFBQU8sQUFBQyxB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LEFBQUMsQUFDbEIsQUFBSSxBQUFFLEFBQUMsQUFDVCxBQUFDO0FBRUQsQUFBYTs7O21FQUFDLEFBQWEsT0FDekIsQUFBTTswQkFBQyxBQUFJLE1BQUUsQUFBSyxBQUFDLEFBQUMsQUFDcEIsQUFBSSxBQUFFLEFBQUMsQUFDVCxBQUFDO0FBRUQsQUFBTzs7O3lEQUFJLEFBQUM7Ozs7Ozs7O0FBekVMLGNBQXNDLDBDQUFpQixBQUFZLGFBQUMsQUFBVSxXQUFDLEFBQUksQUFBQyxBQUFDO0FBQ3JGLGNBQU8sVUFBRyxBQUFJLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXRhLCBJbm5lclJlZmVyZW5jZUZhY3RvcnksIFByb3BlcnR5UmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBEaWN0LCBkaWN0LCBhc3NpZ24sIGluaXRpYWxpemVHdWlkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBNaXhpbiwgZXh0ZW5kIGFzIGV4dGVuZENsYXNzLCB0b01peGluLCByZWxpbmtTdWJjbGFzc2VzLCB3cmFwTWV0aG9kIH0gZnJvbSAnLi9taXhpbic7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmltcG9ydCB7IFJPT1QgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYnVtcCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbmV4cG9ydCBjb25zdCBFTVBUWV9DQUNIRSA9IGZ1bmN0aW9uIEVNUFRZX0NBQ0hFKCkge307XG5cbmNvbnN0IENMQVNTX01FVEEgPSAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JztcblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RXaXRoTWl4aW5zIHtcbiAgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YTtcbiAgX21ldGE6IE1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VXaXRoTWl4aW5zIHtcbiAgY29uc3RydWN0b3I6IE9iamVjdFdpdGhNaXhpbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4ge1xuICBuZXcgPFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgZXh0ZW5kKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGV4dGVuZDxUPihleHRlbnNpb246IFQpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPjtcbiAgZXh0ZW5kKC4uLmV4dGVuc2lvbnM6IE9iamVjdFtdKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8T2JqZWN0PjtcbiAgY3JlYXRlPFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgcmVvcGVuPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkO1xuICByZW9wZW5DbGFzczxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Q7XG4gIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkO1xuICAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogSW5zdGFuY2VNZXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVyYm9jaGFyZ2U8VD4ob2JqOiBUKTogVCB7XG4gIC8vIGZ1bmN0aW9uIER1bW15KCkge31cbiAgLy8gRHVtbXkucHJvdG90eXBlID0gb2JqO1xuICByZXR1cm4gb2JqO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBTZWFsZWRNZXRhIGV4dGVuZHMgTWV0YSB7XG4gIGFkZFJlZmVyZW5jZVR5cGVGb3IoLi4uX2FyZ3M6IGFueVtdKTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IG1vZGlmeSByZWZlcmVuY2UgdHlwZXMgb24gYSBzZWFsZWQgbWV0YScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbGFzc01ldGEge1xuICBwcml2YXRlIHJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgcHJpdmF0ZSBwcm9wZXJ0eU1ldGFkYXRhID0gZGljdDxhbnk+KCk7XG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gIHByaXZhdGUgaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcbiAgcHJpdmF0ZSBoYXNNZXJnZWRQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHByaXZhdGUgbWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgYXBwbGllZE1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN0YXRpY01peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN1YmNsYXNzZXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSA9IFtdO1xuICBwcml2YXRlIHNsb3RzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgSW5zdGFuY2VNZXRhQ29uc3RydWN0b3I6IE9wdGlvbjx0eXBlb2YgTWV0YT4gPSBudWxsO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICBsZXQgbWV0YSA9IG5ldyB0aGlzKCk7XG4gICAgbWV0YS5yZXNldChwYXJlbnQpO1xuICAgIHJldHVybiBtZXRhO1xuICB9XG5cbiAgc3RhdGljIGZvcihvYmplY3Q6IE9iamVjdFdpdGhNaXhpbnMgfCBJbnN0YW5jZVdpdGhNaXhpbnMpOiBPcHRpb248Q2xhc3NNZXRhPiB7XG4gICAgaWYgKENMQVNTX01FVEEgaW4gb2JqZWN0KSByZXR1cm4gKG9iamVjdCBhcyBPYmplY3RXaXRoTWl4aW5zKVtDTEFTU19NRVRBXTtcbiAgICBlbHNlIGlmIChvYmplY3QuY29uc3RydWN0b3IpXG4gICAgICByZXR1cm4gKG9iamVjdCBhcyBJbnN0YW5jZVdpdGhNaXhpbnMpLmNvbnN0cnVjdG9yW0NMQVNTX01FVEFdIHx8IG51bGw7XG4gICAgZWxzZSByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGluaXQob2JqZWN0OiBHbGltbWVyT2JqZWN0LCBhdHRyczogT3B0aW9uPE9iamVjdD4pIHtcbiAgICBpZiAodHlwZW9mIGF0dHJzICE9PSAnb2JqZWN0JyB8fCBhdHRycyA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgbGV0IGNvbmNhdFByb3BzID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBjb25jYXRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBjb25jYXQgPSBjb25jYXRQcm9wc1twcm9wXS5zbGljZSgpO1xuICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGNvbmNhdC5jb25jYXQoYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgbGV0IG1lcmdlZFByb3BzID0gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBtZXJnZWRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIG1lcmdlZFByb3BzW3Byb3BdKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBhc3NpZ24obWVyZ2VkLCBhdHRyc1twcm9wXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLnN0YXRpY01peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGFkZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMubWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgZ2V0U3RhdGljTWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucztcbiAgfVxuXG4gIGdldE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5taXhpbnM7XG4gIH1cblxuICBhZGRBcHBsaWVkTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5hcHBsaWVkTWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgaGFzQXBwbGllZE1peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpZWRNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICB9XG5cbiAgZ2V0QXBwbGllZE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zO1xuICB9XG5cbiAgaGFzU3RhdGljTWl4aW4obWl4aW46IE1peGluKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUFsbE1peGlucyhTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0TWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0U3RhdGljTWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kU3RhdGljKFN1YmNsYXNzKSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG5cbiAgYWRkU3ViY2xhc3MoY29uc3RydWN0b3I6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLnN1YmNsYXNzZXMucHVzaChjb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBnZXRTdWJjbGFzc2VzKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViY2xhc3NlcztcbiAgfVxuXG4gIGFkZFByb3BlcnR5TWV0YWRhdGEocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgfVxuXG4gIG1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV07XG4gIH1cblxuICBhZGRSZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcsIHR5cGU6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gPSB0eXBlO1xuICB9XG5cbiAgYWRkU2xvdEZvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgdGhpcy5zbG90cy5wdXNoKHByb3BlcnR5KTtcbiAgfVxuXG4gIGhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmICgocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCB2YWwgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldLmNvbmNhdCh2YWx1ZSk7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaGFzTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWVyZ2VkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogT2JqZWN0KSB7XG4gICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IHBhc3NlZCBpbiBcXGAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgICl9XFxgIGFzIHRoZSB2YWx1ZSBmb3IgXFxgZm9vXFxgIGJ1dCBcXGBmb29cXGAgY2Fubm90IGJlIGFuIEFycmF5YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzICYmIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSBtZXJnZU1lcmdlZFByb3BlcnRpZXMoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlID09PSBudWxsID8gdmFsdWUgOiB2YWx1ZSB8fCB7fTtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZlcmVuY2VUeXBlcygpOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gIH1cblxuICBnZXRQcm9wZXJ0eU1ldGFkYXRhKCk6IERpY3Q8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGEgPSBkaWN0KCk7XG4gICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHBhcmVudC5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0gPSBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXS5zbGljZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzTWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50Lm1lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdID0gYXNzaWduKHt9LCBwYXJlbnQubWVyZ2VkUHJvcGVydGllc1twcm9wXSk7XG4gICAgICB9XG5cbiAgICAgIGFzc2lnbih0aGlzLnJlZmVyZW5jZVR5cGVzLCBwYXJlbnQucmVmZXJlbmNlVHlwZXMpO1xuICAgICAgYXNzaWduKHRoaXMucHJvcGVydHlNZXRhZGF0YSwgcGFyZW50LnByb3BlcnR5TWV0YWRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2VhbChvYmo6IE9iamVjdCkge1xuICAgIGxldCBtZXRhID0gTWV0YS5mb3Iob2JqKTtcbiAgICBsZXQgZnJlc2ggPSBuZXcgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciEob2JqLCB7fSk7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzID0gbWV0YS5nZXRSZWZlcmVuY2VUeXBlcygpO1xuICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcblxuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihyZWZlcmVuY2VUeXBlcywgdGhpcy5yZWZlcmVuY2VUeXBlcykpO1xuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihzbG90cywgZnJlc2guZ2V0U2xvdHMoKSkpO1xuICB9XG5cbiAgc2VhbCgpIHtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXM6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+ID0gdHVyYm9jaGFyZ2UoXG4gICAgICBhc3NpZ24oe30sIHRoaXMucmVmZXJlbmNlVHlwZXMpXG4gICAgKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMubWVyZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyAmJiAhdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbigpIHt9O1xuICAgIH1cblxuICAgIGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cbiAgICBjbGFzcyBTbG90cyB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc2xvdHMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICB0aGlzW25hbWVdID0gRU1QVFlfQ0FDSEU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIFNlYWxlZE1ldGEge1xuICAgICAgcHJvdGVjdGVkIHNsb3RzOiBTbG90cyA9IG5ldyBTbG90cygpO1xuICAgICAgcHVibGljIHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHJlZmVyZW5jZVR5cGVzO1xuXG4gICAgICBnZXRSZWZlcmVuY2VUeXBlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgICB9XG5cbiAgICAgIHJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZyk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldIHx8IFByb3BlcnR5UmVmZXJlbmNlO1xuICAgICAgfVxuXG4gICAgICBnZXRTbG90cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHM7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHR1cmJvY2hhcmdlKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWVyZ2VkUHJvcGVydGllcyhhdHRyczogT2JqZWN0LCBwYXJlbnQ6IE9iamVjdCkge1xuICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBwYXJlbnQpO1xuXG4gIGZvciAobGV0IHByb3AgaW4gYXR0cnMpIHtcbiAgICBpZiAocHJvcCBpbiBwYXJlbnQgJiYgdHlwZW9mIHBhcmVudFtwcm9wXSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgYXR0cnNbcHJvcF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCB3cmFwcGVkID0gd3JhcE1ldGhvZChwYXJlbnQsIHByb3AsIGF0dHJzW3Byb3BdKTtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IHdyYXBwZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IGF0dHJzW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZU1ldGEgZXh0ZW5kcyBDbGFzc01ldGEge1xuICBwdWJsaWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YSA9IENsYXNzTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPEluc3RhbmNlTWV0YT4pOiBJbnN0YW5jZU1ldGEge1xuICAgIHJldHVybiBzdXBlci5mcm9tUGFyZW50KHBhcmVudCkgYXMgSW5zdGFuY2VNZXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBJbnN0YW5jZU1ldGEpIHtcbiAgICBzdXBlci5yZXNldChwYXJlbnQpO1xuICAgIGlmIChwYXJlbnQpIHRoaXNbQ0xBU1NfTUVUQV0ucmVzZXQocGFyZW50W0NMQVNTX01FVEFdKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgc3VwZXIuc2VhbCgpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsaW1tZXJPYmplY3Qge1xuICBzdGF0aWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuICBzdGF0aWMgaXNDbGFzcyA9IHRydWU7XG5cbiAgc3RhdGljIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcblxuICBzdGF0aWMgZXh0ZW5kKHRoaXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIC4uLmV4dGVuc2lvbnM6IGFueVtdKSB7XG4gICAgcmV0dXJuIGV4dGVuZENsYXNzKHRoaXMsIC4uLmV4dGVuc2lvbnMpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShhdHRycz86IE9iamVjdCB8IG51bGwpOiBHbGltbWVyT2JqZWN0IHtcbiAgICByZXR1cm4gbmV3IHRoaXMoYXR0cnMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRQcm90b3R5cGUodGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG5cbiAgICByZWxpbmtTdWJjbGFzc2VzKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFN0YXRpYyh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIHN0YXRpYyBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgbGV0IHZhbHVlID0gdGhpc1tDTEFTU19NRVRBXS5tZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5KTtcbiAgICBpZiAoIXZhbHVlKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWV0YUZvclByb3BlcnR5KCkgY291bGQgbm90IGZpbmQgYSBjb21wdXRlZCBwcm9wZXJ0eSB3aXRoIGtleSAnJHtwcm9wZXJ0eX0nLmBcbiAgICAgICk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBsZXQgbWV0YWRhdGEgPSB0aGlzW0NMQVNTX01FVEFdLmdldFByb3BlcnR5TWV0YWRhdGEoKTtcbiAgICBpZiAoIW1ldGFkYXRhKSByZXR1cm47XG5cbiAgICBmb3IgKGxldCBwcm9wIGluIG1ldGFkYXRhKSB7XG4gICAgICBjYWxsYmFjayhwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgX3N1cGVyID0gUk9PVDtcbiAgX21ldGEgPSBudWxsO1xuICBfZ3VpZCE6IG51bWJlcjsgLy8gU2V0IGJ5IGluaXRpYWxpemVHdWlkKHRoaXMpIGluIGNvbnN0cnVjdG9yXG5cbiAgaW5pdCgpIHt9XG5cbiAgY29uc3RydWN0b3IoYXR0cnM/OiBPYmplY3QgfCBudWxsKSB7XG4gICAgaWYgKGF0dHJzKSBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBHbGltbWVyT2JqZWN0KVtDTEFTU19NRVRBXS5pbml0KHRoaXMsIGF0dHJzIHx8IG51bGwpO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcbiAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXNba2V5XTtcbiAgfVxuXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNba2V5XSA9IHZhbHVlO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMoYXR0cnM6IE9iamVjdCkge1xuICAgIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgYnVtcCgpO1xuICB9XG5cbiAgZGVzdHJveSgpIHt9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztRQW9DTSxXLEdBQUEsVzs7QUFwQ047O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFKTSxVQUFOLE1BQU0sTzs7QUFNQyxJQUFNLG9DQUFjLFNBQUEsV0FBQSxHQUFwQixDQUFBLENBQUE7QUFFUCxJQUFNLGFBQU4sc0NBQUE7QUF3Qk0sU0FBQSxXQUFBLENBQUEsR0FBQSxFQUErQjtBQUNuQztBQUNBO0FBQ0EsV0FBQSxHQUFBO0FBQ0Q7O0lBRUQsYTs7Ozs7Ozs7O3lCQUNFLG1CLGtDQUFtQztBQUNqQyxjQUFNLElBQUEsS0FBQSxDQUFOLGdEQUFNLENBQU47Ozs7RUFGSixxQjs7QUFNQSxJQUFBLGdDQUFBLFlBQUE7QUFBQSxhQUFBLFNBQUEsR0FBQTtBQUFBLHdCQUFBLElBQUEsRUFBQSxTQUFBOztBQUNVLGFBQUEsY0FBQSxHQUFBLGlCQUFBO0FBQ0EsYUFBQSxnQkFBQSxHQUFBLGlCQUFBO0FBQ0EsYUFBQSxzQkFBQSxHQUFBLGlCQUFBO0FBQ0EsYUFBQSx5QkFBQSxHQUFBLEtBQUE7QUFDQSxhQUFBLGdCQUFBLEdBQUEsaUJBQUE7QUFDQSxhQUFBLG1CQUFBLEdBQUEsS0FBQTtBQUNBLGFBQUEsTUFBQSxHQUFBLEVBQUE7QUFDQSxhQUFBLGFBQUEsR0FBQSxFQUFBO0FBQ0EsYUFBQSxZQUFBLEdBQUEsRUFBQTtBQUNBLGFBQUEsVUFBQSxHQUFBLEVBQUE7QUFDQSxhQUFBLEtBQUEsR0FBQSxFQUFBO0FBQ0QsYUFBQSx1QkFBQSxHQUFBLElBQUE7QUFrUFI7O0FBOVBELGNBQUEsVUFBQSxHQUFBLFNBQUEsVUFBQSxDQUFBLE1BQUEsRUFjNkM7QUFDekMsWUFBSSxPQUFPLElBQVgsSUFBVyxFQUFYO0FBQ0EsYUFBQSxLQUFBLENBQUEsTUFBQTtBQUNBLGVB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LEVBQUEsSUFBQTs7O2tCQUdGLGUsNEJBQUEsUSxFQUF1QztBQUNyQyxZQUFJLFFBQVEsS0FBQSxVQUFBLEVBQUEsbUJBQUEsQ0FBWixRQUFZLENBQVo7QUFDQSxZQUFJLENBQUosS0FBQSxFQUNFLE1BQU0sSUFBQSxLQUFBLENBQUEscUVBQU4sUUFBTSxHQUFOLEtBQU0sQ0FBTjtBQUdGLGVBQUEsS0FBQTs7O2tCQUdGLG9CLGlDQUFBLFEsRUFBb0U7QUFDbEUsWUFBSSxXQUFXLEtBQUEsVUFBQSxFQUFmLG1CQUFlLEVBQWY7QUFDQSxZQUFJLENBQUosUUFBQSxFQUFlO0FBRWYsYUFBSyxJQUFMLElBQUEsSUFBQSxRQUFBLEVBQTJCO0FBQ3pCLHFCQUFBLElBQUEsRUFBZSxTQUFmLElBQWUsQ0FBZjtBQUNEOzs7NEJBT0gsSSxtQkFBSSxDOzs0QkFVSixHLGdCQUFBLEcsRUFBZTtBQUNiLGVBQU8sS0FBUCxHQUFPLENBQVA7Ozs0QkFHRixHLGdCQUFBLEcsRUFBQSxLLEVBQTJCO0FBQ3pCLGFBQUEsR0FBQSxJQUFBLEtBQUE7QUFDQTs7OzRCQUdGLGEsMEJBQUEsSyxFQUEyQjtBQUN6QiwwQkFBQSxJQUFBLEVBQUEsS0FBQTtBQUNBOzs7NEJBR0YsTyxzQkFBTyxDOzs7OztrQkE1RUssYTs7O0FBR0wsY0FBQSxzQ0FBQSxJQUF1RCxhQUFBLFVBQUEsQ0FBdkQsSUFBdUQsQ0FBdkQ7QUFDQSxjQUFBLE9BQUEsR0FBQSxJQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWV0YSwgSW5uZXJSZWZlcmVuY2VGYWN0b3J5LCBQcm9wZXJ0eVJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgZGljdCwgYXNzaWduLCBpbml0aWFsaXplR3VpZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgTWl4aW4sIGV4dGVuZCBhcyBleHRlbmRDbGFzcywgdG9NaXhpbiwgcmVsaW5rU3ViY2xhc3Nlcywgd3JhcE1ldGhvZCB9IGZyb20gJy4vbWl4aW4nO1xuXG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBPcHRpb24sIERpY3QgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGJ1bXAgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfQ0FDSEUgPSBmdW5jdGlvbiBFTVBUWV9DQUNIRSgpIHt9O1xuXG5jb25zdCBDTEFTU19NRVRBID0gJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0V2l0aE1peGlucyB7XG4gICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBDbGFzc01ldGE7XG4gIF9tZXRhOiBNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlV2l0aE1peGlucyB7XG4gIGNvbnN0cnVjdG9yOiBPYmplY3RXaXRoTWl4aW5zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+IHtcbiAgbmV3IDxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxPYmplY3Q+O1xuICBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD47XG4gIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGNyZWF0ZTxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgcmVvcGVuQ2xhc3M8VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQ7XG4gIG1ldGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0O1xuICBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZDtcbiAgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1cmJvY2hhcmdlPFQ+KG9iajogVCk6IFQge1xuICAvLyBmdW5jdGlvbiBEdW1teSgpIHt9XG4gIC8vIER1bW15LnByb3RvdHlwZSA9IG9iajtcbiAgcmV0dXJuIG9iajtcbn1cblxuYWJzdHJhY3QgY2xhc3MgU2VhbGVkTWV0YSBleHRlbmRzIE1ldGEge1xuICBhZGRSZWZlcmVuY2VUeXBlRm9yKC4uLl9hcmdzOiBhbnlbXSk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBtb2RpZnkgcmVmZXJlbmNlIHR5cGVzIG9uIGEgc2VhbGVkIG1ldGEnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xhc3NNZXRhIHtcbiAgcHJpdmF0ZSByZWZlcmVuY2VUeXBlcyA9IGRpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+KCk7XG4gIHByaXZhdGUgcHJvcGVydHlNZXRhZGF0YSA9IGRpY3Q8YW55PigpO1xuICBwcml2YXRlIGNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0PGFueVtdPigpO1xuICBwcml2YXRlIGhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzID0gZGljdDxPYmplY3Q+KCk7XG4gIHByaXZhdGUgaGFzTWVyZ2VkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIGFwcGxpZWRNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGF0aWNNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJjbGFzc2VzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+W10gPSBbXTtcbiAgcHJpdmF0ZSBzbG90czogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIEluc3RhbmNlTWV0YUNvbnN0cnVjdG9yOiBPcHRpb248dHlwZW9mIE1ldGE+ID0gbnVsbDtcblxuICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQ6IE9wdGlvbjxDbGFzc01ldGE+KSB7XG4gICAgbGV0IG1ldGEgPSBuZXcgdGhpcygpO1xuICAgIG1ldGEucmVzZXQocGFyZW50KTtcbiAgICByZXR1cm4gbWV0YTtcbiAgfVxuXG4gIHN0YXRpYyBmb3Iob2JqZWN0OiBPYmplY3RXaXRoTWl4aW5zIHwgSW5zdGFuY2VXaXRoTWl4aW5zKTogT3B0aW9uPENsYXNzTWV0YT4ge1xuICAgIGlmIChDTEFTU19NRVRBIGluIG9iamVjdCkgcmV0dXJuIChvYmplY3QgYXMgT2JqZWN0V2l0aE1peGlucylbQ0xBU1NfTUVUQV07XG4gICAgZWxzZSBpZiAob2JqZWN0LmNvbnN0cnVjdG9yKVxuICAgICAgcmV0dXJuIChvYmplY3QgYXMgSW5zdGFuY2VXaXRoTWl4aW5zKS5jb25zdHJ1Y3RvcltDTEFTU19NRVRBXSB8fCBudWxsO1xuICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpbml0KG9iamVjdDogR2xpbW1lck9iamVjdCwgYXR0cnM6IE9wdGlvbjxEaWN0Pikge1xuICAgIGlmICh0eXBlb2YgYXR0cnMgIT09ICdvYmplY3QnIHx8IGF0dHJzID09PSBudWxsKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgY29uY2F0UHJvcHMgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIGNvbmNhdFByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wIGluIGF0dHJzKSB7XG4gICAgICAgICAgbGV0IGNvbmNhdCA9IGNvbmNhdFByb3BzW3Byb3BdLnNsaWNlKCk7XG4gICAgICAgICAgb2JqZWN0W3Byb3BdID0gY29uY2F0LmNvbmNhdChhdHRyc1twcm9wXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgbWVyZ2VkUHJvcHMgPSB0aGlzLm1lcmdlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIG1lcmdlZFByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wIGluIGF0dHJzKSB7XG4gICAgICAgICAgbGV0IG1lcmdlZCA9IGFzc2lnbih7fSwgbWVyZ2VkUHJvcHNbcHJvcF0pO1xuICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGFzc2lnbihtZXJnZWQsIGF0dHJzW3Byb3BdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZFN0YXRpY01peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMuc3RhdGljTWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgYWRkTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5taXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBnZXRTdGF0aWNNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zO1xuICB9XG5cbiAgZ2V0TWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLm1peGlucztcbiAgfVxuXG4gIGFkZEFwcGxpZWRNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLmFwcGxpZWRNaXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBoYXNBcHBsaWVkTWl4aW4obWl4aW46IE1peGluKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucy5pbmRleE9mKG1peGluKSAhPT0gLTE7XG4gIH1cblxuICBnZXRBcHBsaWVkTWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpZWRNaXhpbnM7XG4gIH1cblxuICBoYXNTdGF0aWNNaXhpbihtaXhpbjogTWl4aW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5nZXRNaXhpbnMoKS5mb3JFYWNoKChtOiBNaXhpbikgPT4gbS5leHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5nZXRTdGF0aWNNaXhpbnMoKS5mb3JFYWNoKChtOiBNaXhpbikgPT4gbS5leHRlbmRTdGF0aWMoU3ViY2xhc3MpKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cblxuICBhZGRTdWJjbGFzcyhjb25zdHJ1Y3RvcjogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuc3ViY2xhc3Nlcy5wdXNoKGNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGdldFN1YmNsYXNzZXMoKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PltdIHtcbiAgICByZXR1cm4gdGhpcy5zdWJjbGFzc2VzO1xuICB9XG5cbiAgYWRkUHJvcGVydHlNZXRhZGF0YShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhW3Byb3BlcnR5XSA9IHZhbHVlO1xuICB9XG5cbiAgbWV0YWRhdGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eU1ldGFkYXRhW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGFkZFJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZywgdHlwZTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzW3Byb3BlcnR5XSA9IHR5cGU7XG4gIH1cblxuICBhZGRTbG90Rm9yKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNsb3RzLnB1c2gocHJvcGVydHkpO1xuICB9XG5cbiAgaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldENvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV07XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSBhcyBzdHJpbmdbXTtcbiAgfVxuXG4gIGFkZENvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSB0cnVlO1xuXG4gICAgaWYgKChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgbGV0IHZhbCA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0uY29uY2F0KHZhbHVlKTtcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBoYXNNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV07XG4gIH1cblxuICBnZXRNZXJnZWRQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5tZXJnZWRQcm9wZXJ0aWVzKSBhcyBzdHJpbmdbXTtcbiAgfVxuXG4gIGFkZE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBEaWN0KSB7XG4gICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IHBhc3NlZCBpbiBcXGAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgICl9XFxgIGFzIHRoZSB2YWx1ZSBmb3IgXFxgZm9vXFxgIGJ1dCBcXGBmb29cXGAgY2Fubm90IGJlIGFuIEFycmF5YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzICYmIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSBtZXJnZU1lcmdlZFByb3BlcnRpZXMoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlID09PSBudWxsID8gdmFsdWUgOiB2YWx1ZSB8fCB7fTtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZlcmVuY2VUeXBlcygpOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gIH1cblxuICBnZXRQcm9wZXJ0eU1ldGFkYXRhKCk6IERpY3Q8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGEgPSBkaWN0KCk7XG4gICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHBhcmVudC5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0gPSBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXS5zbGljZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzTWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50Lm1lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdID0gYXNzaWduKHt9LCBwYXJlbnQubWVyZ2VkUHJvcGVydGllc1twcm9wXSk7XG4gICAgICB9XG5cbiAgICAgIGFzc2lnbih0aGlzLnJlZmVyZW5jZVR5cGVzLCBwYXJlbnQucmVmZXJlbmNlVHlwZXMpO1xuICAgICAgYXNzaWduKHRoaXMucHJvcGVydHlNZXRhZGF0YSwgcGFyZW50LnByb3BlcnR5TWV0YWRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2VhbChvYmo6IE9iamVjdCkge1xuICAgIGxldCBtZXRhID0gTWV0YS5mb3Iob2JqKTtcbiAgICBsZXQgZnJlc2ggPSBuZXcgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciEob2JqLCB7fSk7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzID0gbWV0YS5nZXRSZWZlcmVuY2VUeXBlcygpO1xuICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcblxuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihyZWZlcmVuY2VUeXBlcywgdGhpcy5yZWZlcmVuY2VUeXBlcykpO1xuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihzbG90cywgZnJlc2guZ2V0U2xvdHMoKSkpO1xuICB9XG5cbiAgc2VhbCgpIHtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXM6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+ID0gdHVyYm9jaGFyZ2UoXG4gICAgICBhc3NpZ24oe30sIHRoaXMucmVmZXJlbmNlVHlwZXMpXG4gICAgKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMubWVyZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyAmJiAhdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbigpIHt9O1xuICAgIH1cblxuICAgIGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cbiAgICBjbGFzcyBTbG90cyB7XG4gICAgICBbaW5kZXg6IHN0cmluZ106IHVua25vd247XG5cbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzbG90cy5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgIHRoaXNbbmFtZV0gPSBFTVBUWV9DQUNIRTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciA9IGNsYXNzIGV4dGVuZHMgU2VhbGVkTWV0YSB7XG4gICAgICBwcm90ZWN0ZWQgc2xvdHM6IFNsb3RzID0gbmV3IFNsb3RzKCk7XG4gICAgICBwdWJsaWMgcmVmZXJlbmNlVHlwZXM6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+ID0gcmVmZXJlbmNlVHlwZXM7XG5cbiAgICAgIGdldFJlZmVyZW5jZVR5cGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlcztcbiAgICAgIH1cblxuICAgICAgcmVmZXJlbmNlVHlwZUZvcihwcm9wZXJ0eTogc3RyaW5nKTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gfHwgUHJvcGVydHlSZWZlcmVuY2U7XG4gICAgICB9XG5cbiAgICAgIGdldFNsb3RzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zbG90cztcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdHVyYm9jaGFyZ2UodGhpcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VNZXJnZWRQcm9wZXJ0aWVzKGF0dHJzOiBEaWN0LCBwYXJlbnQ6IERpY3QpIHtcbiAgbGV0IG1lcmdlZCA9IGFzc2lnbih7fSwgcGFyZW50KTtcblxuICBmb3IgKGxldCBwcm9wIGluIGF0dHJzKSB7XG4gICAgaWYgKHByb3AgaW4gcGFyZW50ICYmIHR5cGVvZiBwYXJlbnRbcHJvcF0gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGF0dHJzW3Byb3BdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBsZXQgd3JhcHBlZCA9IHdyYXBNZXRob2QocGFyZW50LCBwcm9wLCBhdHRyc1twcm9wXSBhcyBhbnkpO1xuICAgICAgbWVyZ2VkW3Byb3BdID0gd3JhcHBlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVyZ2VkW3Byb3BdID0gYXR0cnNbcHJvcF07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlZDtcbn1cblxuZXhwb3J0IGNsYXNzIEluc3RhbmNlTWV0YSBleHRlbmRzIENsYXNzTWV0YSB7XG4gIHB1YmxpYyAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogQ2xhc3NNZXRhID0gQ2xhc3NNZXRhLmZyb21QYXJlbnQobnVsbCk7XG5cbiAgc3RhdGljIGZyb21QYXJlbnQocGFyZW50OiBPcHRpb248SW5zdGFuY2VNZXRhPik6IEluc3RhbmNlTWV0YSB7XG4gICAgcmV0dXJuIHN1cGVyLmZyb21QYXJlbnQocGFyZW50KSBhcyBJbnN0YW5jZU1ldGE7XG4gIH1cblxuICByZXNldChwYXJlbnQ6IEluc3RhbmNlTWV0YSkge1xuICAgIHN1cGVyLnJlc2V0KHBhcmVudCk7XG4gICAgaWYgKHBhcmVudCkgdGhpc1tDTEFTU19NRVRBXS5yZXNldChwYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICB9XG5cbiAgc2VhbCgpIHtcbiAgICBzdXBlci5zZWFsKCk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2xpbW1lck9iamVjdCB7XG4gIFtpbmRleDogc3RyaW5nXTogdW5rbm93bjtcblxuICBzdGF0aWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuICBzdGF0aWMgaXNDbGFzcyA9IHRydWU7XG5cbiAgc3RhdGljIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcblxuICBzdGF0aWMgZXh0ZW5kKHRoaXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIC4uLmV4dGVuc2lvbnM6IGFueVtdKSB7XG4gICAgcmV0dXJuIGV4dGVuZENsYXNzKHRoaXMsIC4uLmV4dGVuc2lvbnMpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShhdHRycz86IE9iamVjdCB8IG51bGwpOiBHbGltbWVyT2JqZWN0IHtcbiAgICByZXR1cm4gbmV3IHRoaXMoYXR0cnMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRQcm90b3R5cGUodGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG5cbiAgICByZWxpbmtTdWJjbGFzc2VzKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFN0YXRpYyh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIHN0YXRpYyBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgbGV0IHZhbHVlID0gdGhpc1tDTEFTU19NRVRBXS5tZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5KTtcbiAgICBpZiAoIXZhbHVlKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWV0YUZvclByb3BlcnR5KCkgY291bGQgbm90IGZpbmQgYSBjb21wdXRlZCBwcm9wZXJ0eSB3aXRoIGtleSAnJHtwcm9wZXJ0eX0nLmBcbiAgICAgICk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBsZXQgbWV0YWRhdGEgPSB0aGlzW0NMQVNTX01FVEFdLmdldFByb3BlcnR5TWV0YWRhdGEoKTtcbiAgICBpZiAoIW1ldGFkYXRhKSByZXR1cm47XG5cbiAgICBmb3IgKGxldCBwcm9wIGluIG1ldGFkYXRhKSB7XG4gICAgICBjYWxsYmFjayhwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgX3N1cGVyID0gUk9PVDtcbiAgX21ldGEgPSBudWxsO1xuICBfZ3VpZCE6IG51bWJlcjsgLy8gU2V0IGJ5IGluaXRpYWxpemVHdWlkKHRoaXMpIGluIGNvbnN0cnVjdG9yXG5cbiAgaW5pdCgpIHt9XG5cbiAgY29uc3RydWN0b3IoYXR0cnM/OiBPYmplY3QgfCBudWxsKSB7XG4gICAgaWYgKGF0dHJzKSBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBHbGltbWVyT2JqZWN0KVtDTEFTU19NRVRBXS5pbml0KHRoaXMsIGF0dHJzIHx8IG51bGwpO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcbiAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXNba2V5XTtcbiAgfVxuXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNba2V5XSA9IHZhbHVlO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMoYXR0cnM6IE9iamVjdCkge1xuICAgIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgYnVtcCgpO1xuICB9XG5cbiAgZGVzdHJveSgpIHt9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -30,2 +30,2 @@ 'use strict';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O1FBcUJnQixBQUFJLEFBQUMsQUFBRyxBQUFZO1FBR3BCLEFBQVE7QUF4QnhCLElBQU0sQUFBaUIsb0JBQUcsQUFBbUMsQUFBQyxBQUU5RCxBQUFNO0lBQU8sQUFBYSxvREFDeEI7UUFBSSxBQUFlLDhCQUVmO2VBREYsQUFDUyxBQUFJLEFBQUMsQUFDZCxBQUFDO01BQ0UsQUFBUSxBQUFFLFdBQ1YsQUFBTyxRQUFDLEFBQWEsQUFBQyxpQkFBRyxDQUFDLEFBQUMsQUFBQyxBQUVqQztRQUFJLEFBQWUsaUJBQUUsQUFDbkI7ZUFBTyxTQUFTLEFBQWEsY0FBQyxBQUFjLE1BQzFDO21CQUFPLEFBQWlCLGtCQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBUSxBQUFFLEFBQUMsQUFBQyxBQUNqRCxBQUFDLEFBQUMsQUFDSDtBQUVEOztXQUFPLFNBQVMsQUFBYSxnQkFDM0I7ZUFBTyxBQUFJLEFBQUMsQUFDZCxBQUFDLEFBQUMsQUFDSixBQUFDLEFBQUMsQUFBRSxBQUFDO0FBakJFLEFBQXNCO0FBQUMsQUFtQjlCLEFBQU07Z0JBQWlDLEFBQUM7QUFDdkMsQUFBWSxLQUFDLEFBQVUsYUFBRyxBQUFLLEFBQUMsQUFFakMsQUFBTTtrQkFBbUIsQUFBYyxNQUNyQztRQUFJLEFBQUksS0FBQyxBQUFZLEFBQUMsa0JBQUssQUFBUyxXQUFFLEFBQ3BDLEFBQUk7YUFBQyxBQUFZLEFBQUMsZ0JBQUcsQUFBYSxjQUFDLEFBQUksQUFBQyxBQUFDLEFBQzFDLEFBQ0Q7O1dBQU8sQUFBSSxLQUFDLEFBQVksQUFBQyxBQUFDLEFBQzVCLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBIQVNfU1VQRVJfUEFUVEVSTiA9IC9cXC4oX3N1cGVyfGNhbGxcXCh0aGlzfGFwcGx5XFwodGhpcykvO1xuXG5leHBvcnQgY29uc3QgY2hlY2tIYXNTdXBlciA9IChmdW5jdGlvbigpIHtcbiAgbGV0IHNvdXJjZUF2YWlsYWJsZSA9XG4gICAgZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLmluZGV4T2YoJ3JldHVybiB0aGlzJykgPiAtMTtcblxuICBpZiAoc291cmNlQXZhaWxhYmxlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiBIQVNfU1VQRVJfUEFUVEVSTi50ZXN0KGZ1bmMudG9TdHJpbmcoKSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xufSkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIFJPT1QoLi4uX2FyZ3M6IGFueVtdKSB7fVxuKFJPT1QgYXMgYW55KS5fX2hhc1N1cGVyID0gZmFsc2U7XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNTdXBlcihmdW5jOiBGdW5jdGlvbikge1xuICBpZiAoZnVuY1snX19oYXNTdXBlciddID09PSB1bmRlZmluZWQpIHtcbiAgICBmdW5jWydfX2hhc1N1cGVyJ10gPSBjaGVja0hhc1N1cGVyKGZ1bmMpO1xuICB9XG4gIHJldHVybiBmdW5jWydfX2hhc1N1cGVyJ107XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUF1Qk0sSSxHQUFBLEk7UUFHQSxRLEdBQUEsUTtBQXhCTixJQUFNLG9CQUFOLG1DQUFBO0FBRU8sSUFBTSx3Q0FBaUIsWUFBQTtBQUM1QixRQUFJLGtCQUNGLFlBQUE7QUFDRSxlQUFBLElBQUE7QUFERixLQUFBLENBQUEsUUFBQSxHQUFBLE9BQUEsQ0FBQSxhQUFBLElBSTRCLENBTDlCLENBQUE7QUFPQSxRQUFBLGVBQUEsRUFBcUI7QUFDbkIsZUFBTyxTQUFBLGFBQUEsQ0FBQSxJQUFBLEVBQXFDO0FBQzFDLG1CQUFPLGtCQUFBLElBQUEsQ0FBdUIsS0FBOUIsUUFBOEIsRUFBdkIsQ0FBUDtBQURGLFNBQUE7QUFHRDtBQUVELFdBQU8sU0FBQSxhQUFBLEdBQXNCO0FBQzNCLGVBQUEsSUFBQTtBQURGLEtBQUE7QUFkSyxDQUF1QixFQUF2QjtBQW1CRCxTQUFBLElBQUEsR0FBOEIsQ0FBSTtBQUN2QyxLQUFBLFVBQUEsR0FBQSxLQUFBO0FBRUssU0FBQSxRQUFBLENBQUEsSUFBQSxFQUF3QztBQUM1QyxRQUFJLEtBQUEsWUFBQSxNQUFKLFNBQUEsRUFBc0M7QUFDcEMsYUFBQSxZQUFBLElBQXFCLGNBQXJCLElBQXFCLENBQXJCO0FBQ0Q7QUFDRCxXQUFPLEtBQVAsWUFBTyxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmNvbnN0IEhBU19TVVBFUl9QQVRURVJOID0gL1xcLihfc3VwZXJ8Y2FsbFxcKHRoaXN8YXBwbHlcXCh0aGlzKS87XG5cbmV4cG9ydCBjb25zdCBjaGVja0hhc1N1cGVyID0gKGZ1bmN0aW9uKCkge1xuICBsZXQgc291cmNlQXZhaWxhYmxlID1cbiAgICBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAgIC50b1N0cmluZygpXG4gICAgICAuaW5kZXhPZigncmV0dXJuIHRoaXMnKSA+IC0xO1xuXG4gIGlmIChzb3VyY2VBdmFpbGFibGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcihmdW5jOiBGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIEhBU19TVVBFUl9QQVRURVJOLnRlc3QoZnVuYy50b1N0cmluZygpKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG59KSgpO1xuXG5leHBvcnQgZnVuY3Rpb24gUk9PVCguLi5fYXJnczogYW55W10pIHt9XG4oUk9PVCBhcyBhbnkpLl9faGFzU3VwZXIgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uICYgRGljdCkge1xuICBpZiAoZnVuY1snX19oYXNTdXBlciddID09PSB1bmRlZmluZWQpIHtcbiAgICBmdW5jWydfX2hhc1N1cGVyJ10gPSBjaGVja0hhc1N1cGVyKGZ1bmMpO1xuICB9XG4gIHJldHVybiBmdW5jWydfX2hhc1N1cGVyJ107XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -5,2 +5,2 @@ export { default, ClassMeta, InstanceMeta } from './lib/object';

export { aliasMethod, alias } from './lib/descriptors';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQUFBTyxTQUFFLEFBQU8sU0FBRSxBQUFTLFdBQUUsQUFBWSxBQUF3QixvQkFBTSxBQUFjLEFBQUM7QUFDdEYsQUFBTyxTQUFFLEFBQVEsVUFBRSxBQUFRLEFBQUUsZ0JBQU0sQUFBZ0IsQUFBQztBQUNwRCxBQUFPLFNBQUUsQUFBSyxPQUFFLEFBQVMsV0FBRSxBQUFPLEFBQUUsZUFBTSxBQUFhLEFBQUM7QUFDeEQsQUFBTyxTQUFFLEFBQVcsYUFBRSxBQUFLLEFBQUUsYUFBTSxBQUFtQixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCwgQ2xhc3NNZXRhLCBJbnN0YW5jZU1ldGEsIEdsaW1tZXJPYmplY3RGYWN0b3J5IH0gZnJvbSAnLi9saWIvb2JqZWN0JztcbmV4cG9ydCB7IGNvbXB1dGVkLCBvYnNlcnZlciB9IGZyb20gJy4vbGliL2NvbXB1dGVkJztcbmV4cG9ydCB7IE1peGluLCBCbHVlcHJpbnQsIHRvTWl4aW4gfSBmcm9tICcuL2xpYi9taXhpbic7XG5leHBvcnQgeyBhbGlhc01ldGhvZCwgYWxpYXMgfSBmcm9tICcuL2xpYi9kZXNjcmlwdG9ycyc7XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLE9BQVQsRUFBa0IsU0FBbEIsRUFBNkIsWUFBN0IsUUFBdUUsY0FBdkU7QUFDQSxTQUFTLFFBQVQsRUFBbUIsUUFBbkIsUUFBbUMsZ0JBQW5DO0FBQ0EsU0FBUyxLQUFULEVBQWdCLFNBQWhCLEVBQTJCLE9BQTNCLFFBQTBDLGFBQTFDO0FBQ0EsU0FBUyxXQUFULEVBQXNCLEtBQXRCLFFBQW1DLG1CQUFuQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQsIENsYXNzTWV0YSwgSW5zdGFuY2VNZXRhLCBHbGltbWVyT2JqZWN0RmFjdG9yeSB9IGZyb20gJy4vbGliL29iamVjdCc7XG5leHBvcnQgeyBjb21wdXRlZCwgb2JzZXJ2ZXIgfSBmcm9tICcuL2xpYi9jb21wdXRlZCc7XG5leHBvcnQgeyBNaXhpbiwgQmx1ZXByaW50LCB0b01peGluIH0gZnJvbSAnLi9saWIvbWl4aW4nO1xuZXhwb3J0IHsgYWxpYXNNZXRob2QsIGFsaWFzIH0gZnJvbSAnLi9saWIvZGVzY3JpcHRvcnMnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -140,2 +140,2 @@ import { ComputedReferenceBlueprint, Meta } from '@glimmer/object-reference';

export function observer(..._args) {}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQU8sU0FBRSxBQUEwQiw0QkFBRSxBQUFJLEFBQUUsWUFBTSxBQUEyQixBQUFDO0FBQzdFLEFBQU8sU0FBRSxBQUFXLEFBQWEsbUJBQU0sQUFBVSxBQUFDO0FBQ2xELEFBQU8sU0FBYyxBQUFTLEFBQUUsaUJBQU0sQUFBUyxBQUFDO0FBeUJoRCxBQUFNLGFBQU8sQUFBa0IsMEJBQVEsQUFBUztBQUs5QyxnQkFBWSxBQUE0QixVQUFFLE9BQW1CLEFBQUU7QUFDN0QsQUFBSyxBQUFFLEFBQUM7QUFIRixhQUFRLFdBQVcsQUFBRSxBQUFDO0FBSTVCLEFBQUksYUFBQyxBQUFRLFdBQUcsQUFBUSxBQUFDO0FBQ3pCLEFBQUksYUFBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CO0FBQUM7QUFFRCxBQUFVLGVBQUMsQUFBZSxTQUFFLEFBQVcsS0FBRSxBQUFvQjtBQUMzRCxBQUFTLGtCQUFDLEFBQW1CLG9CQUFDLEFBQUcsS0FBRSxBQUEwQiwyQkFBQyxBQUFHLEtBQUUsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQUM7QUFDL0UsQUFBUyxrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDO0FBQ2xELEFBQVMsa0JBQUMsQUFBVSxXQUFDLEFBQUcsQUFBQyxBQUFDO0FBQzFCLGVBQU8sSUFBSSxBQUFRLFNBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ3JDO0FBQUM7QUFFRCxBQUFRLGFBQUMsR0FBRyxBQUFlO0FBQ3pCLEFBQUksYUFBQyxBQUFJLE9BQUcsQUFBSyxNQUFDLEFBQUcsSUFBQyxBQUFDLEFBQUMsQUFBRSxLQUFDLEFBQUMsRUFBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUMs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LEFBQVMsVUFBQyxBQUEyRCxBQUFDLEFBQUM7QUFDbEYsQUFDSDtBQUFDO0FBRUQsQUFBTSxnQkFBVSxBQUFRLFNBQUMsR0FBRyxBQUFZLE9BQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50LCBNZXRhIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBFTVBUWV9DQUNIRSwgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgRGVzY3JpcHRvciwgQmx1ZXByaW50IH0gZnJvbSAnLi9taXhpbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRHZXRDYWxsYmFjayB7XG4gICgpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjayB7XG4gIChrZXk6IHN0cmluZyk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKHZhbDogYW55KTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcsIHZhbDogYW55KTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkRGVzY3JpcHRvciB7XG4gIGdldD86IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrO1xuICBzZXQ/OiBDb21wdXRlZFNldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRTZXRDYWxsYmFjaztcbn1cblxudHlwZSBDb21wdXRlZEFyZ3VtZW50ID0gQ29tcHV0ZWRHZXRDYWxsYmFjayB8IENvbXB1dGVkRGVzY3JpcHRvcjtcblxuZXhwb3J0IGNsYXNzIENvbXB1dGVkQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yO1xuICBwcml2YXRlIGRlcHM6IHN0cmluZ1tdW107XG4gIHByaXZhdGUgbWV0YWRhdGE6IE9iamVjdCA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3IsIGRlcHM6IHN0cmluZ1tdW10gPSBbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIHRoaXMuZGVwcyA9IGRlcHM7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgY2xhc3NNZXRhLmFkZFJlZmVyZW5jZVR5cGVGb3Ioa2V5LCBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludChrZXksIHRoaXMuZGVwcykpO1xuICAgIGNsYXNzTWV0YS5hZGRQcm9wZXJ0eU1ldGFkYXRhKGtleSwgdGhpcy5tZXRhZGF0YSk7XG4gICAgY2xhc3NNZXRhLmFkZFNsb3RGb3Ioa2V5KTtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkKHRoaXMuYWNjZXNzb3IpO1xuICB9XG5cbiAgcHJvcGVydHkoLi4ucGF0aHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5kZXBzID0gcGF0aHMubWFwKGQgPT4gZC5zcGxpdCgnLicpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG1ldGEob2JqZWN0OiBPYmplY3QpIHtcbiAgICB0aGlzLm1ldGFkYXRhID0gb2JqZWN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdm9sYXRpbGUoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuY2xhc3MgQ29tcHV0ZWQgaW1wbGVtZW50cyBEZXNjcmlwdG9yIHtcbiAgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgY29uZmlndXJhYmxlOiBib29sZWFuO1xuXG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYycgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3IpIHtcbiAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBmYWxzZTtcbiAgfVxuXG4gIGRlZmluZShwcm90b3R5cGU6IE9iamVjdCwga2V5OiBzdHJpbmcsIGhvbWU6IE9iamVjdCkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsIGtleSwgd3JhcEFjY2Vzc29yKGhvbWUsIGtleSwgdGhpcy5hY2Nlc3NvcikpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHdyYXBBY2Nlc3NvcihcbiAgaG9tZTogT2JqZWN0LFxuICBhY2Nlc3Nvck5hbWU6IHN0cmluZyxcbiAgX2Rlc2M6IENvbXB1dGVkRGVzY3JpcHRvclxuKTogUHJvcGVydHlEZXNjcmlwdG9yIHtcbiAgbGV0IHN1cGVyRGVzYyA9IGdldFByb3BlcnR5RGVzY3JpcHRvcihob21lLCBhY2Nlc3Nvck5hbWUpO1xuXG4gIGxldCBvcmlnaW5hbEdldDogQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgbGV0IG9yaWdpbmFsU2V0OiBDb21wdXRlZFNldENhbGxiYWNrO1xuXG4gIGxldCBkZXNjOiBQcm9wZXJ0eURlc2NyaXB0b3IgPSB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gIH07XG5cbiAgbGV0IGdldCA9IF9kZXNjLmdldDtcblxuICBpZiAoZ2V0ICYmIGdldC5sZW5ndGggPiAwKSB7XG4gICAgb3JpZ2luYWxHZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoZ2V0IGFzIGFueSkuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luYWxHZXQgPSBfZGVzYy5nZXQgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgfVxuXG4gIGxldCBzZXQgPSBfZGVzYy5zZXQ7XG5cbiAgaWYgKHNldCAmJiBzZXQubGVuZ3RoID4gMSkge1xuICAgIG9yaWdpbmFsU2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICByZXR1cm4gKHNldCBhcyBhbnkpLmNhbGwodGhpcywgYWNjZXNzb3JOYW1lLCB2YWx1ZSk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW5hbFNldCA9IF9kZXNjLnNldCBhcyBDb21wdXRlZEdldENhbGxiYWNrO1xuICB9XG5cbiAgbGV0IGNhY2hlR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgaWYgKE1ldGEuZXhpc3RzKHRoaXMpKSB7XG4gICAgICBsZXQgc2xvdCA9IE1ldGEuZm9yKHRoaXMpLmdldFNsb3RzKClbYWNjZXNzb3JOYW1lXTtcbiAgICAgIGlmIChzbG90ICE9PSBFTVBUWV9DQUNIRSkgcmV0dXJuIHNsb3Q7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yaWdpbmFsR2V0LmNhbGwodGhpcyk7XG4gIH07XG5cbiAgbGV0IGNhY2hlU2V0OiAodmFsdWU6IGFueSkgPT4gdm9pZDtcblxuICBpZiAob3JpZ2luYWxTZXQpIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcblxuICAgICAgbGV0IHJldCA9IG9yaWdpbmFsU2V0LmNhbGwodGhpcywgdmFsdWUpO1xuXG4gICAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2xvdHNbYWNjZXNzb3JOYW1lXSA9IHJldDtcbiAgICAgIH1cbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGNhY2hlU2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKHRoaXMpO1xuICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSB2YWx1ZTtcbiAgICB9O1xuICB9XG5cbiAgaWYgKCFzdXBlckRlc2MgfHwgJ3ZhbHVlJyBpbiBzdXBlckRlc2MpIHtcbiAgICBkZXNjLmdldCA9IGNhY2hlR2V0O1xuICAgIGRlc2Muc2V0ID0gY2FjaGVTZXQ7XG4gICAgcmV0dXJuIGRlc2M7XG4gIH1cblxuICBkZXNjLmdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MgYXMgYW55KS5nZXQuY2FsbCh0aGlzKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjYWNoZUdldC5jYWxsKHRoaXMpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgZGVzYy5zZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbDogYW55KSB7XG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKHN1cGVyRGVzYyBhcyBhbnkpLnNldC5jYWxsKHRoaXMsIHZhbCk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVTZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGRlc2M7XG59XG5cbmZ1bmN0aW9uIGdldFByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0OiBhbnksIG5hbWU6IHN0cmluZykge1xuICBsZXQgcGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN1YmplY3QsIG5hbWUpO1xuICBsZXQgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc3ViamVjdCk7XG4gIHdoaWxlICh0eXBlb2YgcGQgPT09ICd1bmRlZmluZWQnICYmIHByb3RvICE9PSBudWxsKSB7XG4gICAgcGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBuYW1lKTtcbiAgICBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90byk7XG4gIH1cbiAgcmV0dXJuIHBkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoZGVzYzogQ29tcHV0ZWREZXNjcmlwdG9yKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoXG4gIGdldHRlcjogQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2tcbik6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKC4uLmFyZ3M6IGFueVtdKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSkge1xuICBsZXQgbGFzdDogQ29tcHV0ZWRBcmd1bWVudCA9IGFyZ3MucG9wKCk7XG4gIGxldCBkZXBzID0gYXJncztcblxuICBpZiAodHlwZW9mIGxhc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkQmx1ZXByaW50KHtcbiAgICAgIGdldDogbGFzdCBhcyBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjayxcbiAgICB9KS5wcm9wZXJ0eSguLi5kZXBzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgbGFzdCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkQmx1ZXByaW50KGxhc3QgYXMgQ29tcHV0ZWREZXNjcmlwdG9yKS5wcm9wZXJ0eSguLi5kZXBzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjb21wdXRlZCBleHBlY3RzIGEgZnVuY3Rpb24gb3IgYW4gb2JqZWN0IGFzIGxhc3QgYXJndW1lbnQnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZXIoLi4uX2FyZ3M6IGFueVtdKSB7fVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvY29tcHV0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUywwQkFBVCxFQUFxQyxJQUFyQyxRQUFpRCwyQkFBakQ7QUFDQSxTQUFTLFdBQVQsUUFBdUMsVUFBdkM7QUFDQSxTQUFxQixTQUFyQixRQUFzQyxTQUF0QztBQXlCQSxPQUFNLE1BQU8saUJBQVAsU0FBaUMsU0FBakMsQ0FBMEM7QUFLOUMsZ0JBQVksUUFBWixFQUEwQyxPQUFtQixFQUE3RCxFQUErRDtBQUM3RDtBQUhNLGFBQUEsUUFBQSxHQUFtQixFQUFuQjtBQUlOLGFBQUssUUFBTCxHQUFnQixRQUFoQjtBQUNBLGFBQUssSUFBTCxHQUFZLElBQVo7QUFDRDtBQUVELGVBQVcsT0FBWCxFQUE0QixHQUE1QixFQUF5QyxTQUF6QyxFQUE2RDtBQUMzRCxrQkFBVSxtQkFBVixDQUE4QixHQUE5QixFQUFtQywyQkFBMkIsR0FBM0IsRUFBZ0MsS0FBSyxJQUFyQyxDQUFuQztBQUNBLGtCQUFVLG1CQUFWLENBQThCLEdBQTlCLEVBQW1DLEtBQUssUUFBeEM7QUFDQSxrQkFBVSxVQUFWLENBQXFCLEdBQXJCO0FBQ0EsZUFBTyxJQUFJLFFBQUosQ0FBYSxLQUFLLFFBQWxCLENBQVA7QUFDRDtBQUVELGFBQVMsR0FBRyxLQUFaLEVBQTJCO0FBQ3pCLGFBQUssSUFBTCxHQUFZLE1BQU0sR0FBTixDQUFVLEtBQUssRUFBRSxLQUFGLENBQVEsR0FBUixDQUFmLENBQVo7QUFDQSxlQUFPLElBQVA7QUFDRDtBQUVELFNBQUssTUFBTCxFQUFtQjtBQUNqQixhQUFLLFFBQUwsR0FBZ0IsTUFBaEI7QUFDQSxlQUFPLElBQVA7QUFDRDtBQUVELGVBQVE7QUFDTixlQUFPLElBQVA7QUFDRDtBQTlCNkM7QUFpQ2hELE1BQU0sUUFBTixDQUFjO0FBT1osZ0JBQVksUUFBWixFQUF3QztBQUZ4QyxhQUFBLHNDQUFBLElBQXlDLElB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cEIsRUFBOEI7QUFDbkMsZUFBTyxJQUFJLGlCQUFKLENBQXNCLElBQXRCLEVBQWtELFFBQWxELENBQTJELEdBQUcsSUFBOUQsQ0FBUDtBQUNELEtBRk0sTUFFQTtBQUNMLGNBQU0sSUFBSSxTQUFKLENBQWMsMkRBQWQsQ0FBTjtBQUNEO0FBQ0Y7QUFFRCxPQUFNLFNBQVUsUUFBVixDQUFtQixHQUFHLEtBQXRCLEVBQWtDLENBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludCwgTWV0YSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRU1QVFlfQ0FDSEUsIENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IERlc2NyaXB0b3IsIEJsdWVwcmludCB9IGZyb20gJy4vbWl4aW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gICh2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nLCB2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZERlc2NyaXB0b3Ige1xuICBnZXQ/OiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgc2V0PzogQ29tcHV0ZWRTZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2s7XG59XG5cbnR5cGUgQ29tcHV0ZWRBcmd1bWVudCA9IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBDb21wdXRlZERlc2NyaXB0b3I7XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgcHJpdmF0ZSBkZXBzOiBzdHJpbmdbXVtdO1xuICBwcml2YXRlIG1ldGFkYXRhOiBPYmplY3QgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yLCBkZXBzOiBzdHJpbmdbXVtdID0gW10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICB0aGlzLmRlcHMgPSBkZXBzO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGNsYXNzTWV0YS5hZGRSZWZlcmVuY2VUeXBlRm9yKGtleSwgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQoa2V5LCB0aGlzLmRlcHMpKTtcbiAgICBjbGFzc01ldGEuYWRkUHJvcGVydHlNZXRhZGF0YShrZXksIHRoaXMubWV0YWRhdGEpO1xuICAgIGNsYXNzTWV0YS5hZGRTbG90Rm9yKGtleSk7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZCh0aGlzLmFjY2Vzc29yKTtcbiAgfVxuXG4gIHByb3BlcnR5KC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVwcyA9IHBhdGhzLm1hcChkID0+IGQuc3BsaXQoJy4nKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtZXRhKG9iamVjdDogT2JqZWN0KSB7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG9iamVjdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZvbGF0aWxlKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmNsYXNzIENvbXB1dGVkIGltcGxlbWVudHMgRGVzY3JpcHRvciB7XG4gIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcblxuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yKSB7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gZmFsc2U7XG4gIH1cblxuICBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHdyYXBBY2Nlc3Nvcihob21lLCBrZXksIHRoaXMuYWNjZXNzb3IpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cmFwQWNjZXNzb3IoXG4gIGhvbWU6IE9iamVjdCxcbiAgYWNjZXNzb3JOYW1lOiBzdHJpbmcsXG4gIF9kZXNjOiBDb21wdXRlZERlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB7XG4gIGxldCBzdXBlckRlc2MgPSBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoaG9tZSwgYWNjZXNzb3JOYW1lKTtcblxuICBsZXQgb3JpZ2luYWxHZXQ6IENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIGxldCBvcmlnaW5hbFNldDogQ29tcHV0ZWRTZXRDYWxsYmFjaztcblxuICBsZXQgZGVzYzogUHJvcGVydHlEZXNjcmlwdG9yID0ge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9O1xuXG4gIGxldCBnZXQgPSBfZGVzYy5nZXQ7XG5cbiAgaWYgKGdldCAmJiBnZXQubGVuZ3RoID4gMCkge1xuICAgIG9yaWdpbmFsR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKGdldCBhcyBhbnkpLmNhbGwodGhpcywgYWNjZXNzb3JOYW1lKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsR2V0ID0gX2Rlc2MuZ2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgc2V0ID0gX2Rlc2Muc2V0O1xuXG4gIGlmIChzZXQgJiYgc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICBvcmlnaW5hbFNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgcmV0dXJuIChzZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSwgdmFsdWUpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luYWxTZXQgPSBfZGVzYy5zZXQgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgfVxuXG4gIGxldCBjYWNoZUdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGlmIChNZXRhLmV4aXN0cyh0aGlzKSkge1xuICAgICAgbGV0IHNsb3QgPSBNZXRhLmZvcih0aGlzKS5nZXRTbG90cygpW2FjY2Vzc29yTmFtZV07XG4gICAgICBpZiAoc2xvdCAhPT0gRU1QVFlfQ0FDSEUpIHJldHVybiBzbG90O1xuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW5hbEdldC5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIGxldCBjYWNoZVNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgaWYgKG9yaWdpbmFsU2V0KSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICAgIGxldCByZXQgPSBvcmlnaW5hbFNldC5jYWxsKHRoaXMsIHZhbHVlKTtcblxuICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSByZXQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSBzbG90c1thY2Nlc3Nvck5hbWVdID0gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghc3VwZXJEZXNjIHx8ICd2YWx1ZScgaW4gc3VwZXJEZXNjKSB7XG4gICAgZGVzYy5nZXQgPSBjYWNoZUdldDtcbiAgICBkZXNjLnNldCA9IGNhY2hlU2V0O1xuICAgIHJldHVybiBkZXNjO1xuICB9XG5cbiAgZGVzYy5nZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuZ2V0LmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVHZXQuY2FsbCh0aGlzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIGRlc2Muc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWw6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MgYXMgYW55KS5zZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlU2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBkZXNjO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdDogYW55LCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKTtcbiAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHN1YmplY3QpO1xuICB3aGlsZSAodHlwZW9mIHBkID09PSAndW5kZWZpbmVkJyAmJiBwcm90byAhPT0gbnVsbCkge1xuICAgIHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbmFtZSk7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiBwZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKGRlc2M6IENvbXB1dGVkRGVzY3JpcHRvcik6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKFxuICBnZXR0ZXI6IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrXG4pOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSk6IENvbXB1dGVkQmx1ZXByaW50O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pIHtcbiAgbGV0IGxhc3Q6IENvbXB1dGVkQXJndW1lbnQgPSBhcmdzLnBvcCgpO1xuICBsZXQgZGVwcyA9IGFyZ3M7XG5cbiAgaWYgKHR5cGVvZiBsYXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludCh7XG4gICAgICBnZXQ6IGxhc3QgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2ssXG4gICAgfSkucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGxhc3QgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludChsYXN0IGFzIENvbXB1dGVkRGVzY3JpcHRvcikucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29tcHV0ZWQgZXhwZWN0cyBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCBhcyBsYXN0IGFyZ3VtZW50Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVyKC4uLl9hcmdzOiBhbnlbXSkge31cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -53,2 +53,2 @@ import { Blueprint, Descriptor } from './mixin';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQU8sU0FBRSxBQUFTLFdBQUUsQUFBVSxBQUFFLGtCQUFNLEFBQVMsQUFBQztBQUVoRCxBQUFPLFNBQUUsQUFBaUIsQUFBRSx5QkFBTSxBQUFZLEFBQUM7QUFFL0MsTUFBTSxBQUFzQiw4QkFBUSxBQUFVO0FBRzVDLGdCQUFZLEFBQVk7QUFDdEIsQUFBSyxBQUFFLEFBQUM7QUFDUixBQUFJLGFBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQjtBQUFDO0FBRUQsQUFBTSxXQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBYTtBQUMvQyxZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBYyxBQUFDO0FBRS9CLEFBQU0sZUFBQyxBQUFjLGVBQUMsQUFBTSxRQUFFLEFBQUc7QUFDL0IsQUFBVSx3QkFBRSxBQUFJO0FBQ2hCLEFBQVksMEJBQUUsQUFBSTtBQUNsQixBQUFHO0FBQ0QsdUJBQU8sQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3BCO0FBQUMsQUFDRixBQUFDLEFBQUMsQUFDTDtBQVBxQztBQU9wQyxBQUNGOztBQUVELE1BQU0sQUFBcUIsNkJBQVEsQUFBUztBQUcxQyxnQkFBWSxBQUFZO0FBQ3RCLEFBQUssQUFBRSxBQUFDO0FBQ1IsQUFBSSxhQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkI7QUFBQztBQUVELEFBQVUsZUFBQyxBQUFlLFNBQUUsQUFBWSxNQUFFLEFBQWdCO0FBQ3hELGVBQU8sSUFBSSxBQUFxQixzQkFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDOUM7QUFBQyxBQUNGOztBQUVELEFBQU0sZ0JBQVUsQUFBVyxZQUFDLEFBQVk7QUFDdEMsV0FBTyxJQUFJLEFBQW9CLHFCQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3hDO0FBQUM7QUFFRCxNQUFNLEFBQWUsdUJBQVEsQUFBaUI7QUFHNUMsZ0JBQVksQUFBYztBQUN4QixZQUFJLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUMsR0FBRSxDQUFDLEFBQUMsQUFBQyxBQUFDO0FBQy9CLFlBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBTSxTQUFHLEFBQUMsQUFBQyxBQUFDO0FBRWpDLFlBQUksQUFBRyxNQUFHO0FBQ1IsbUJBQU8sQUFBSSxLQUFDLEFBQU0sT0FBQyxDQUFDLEFBQUcsS0FBRSxBQUFDLEFBQUUsQUFBRSxNQUFDLEFBQUcsSUFBQyxBQUFDLEFBQUMsSUFBRSxBQUFJLEFBQUMsQUFBQyxBQUMvQztBQUFDLEFBQUM7QUFFRixZQUFJLEFBQUcsTUFBRyxVQUFvQixBQUFVO0FBQ3RDLGdCQUFJLEFBQUMsSUFBRyxBQUFNLE9BQUMsQUFBTSxPQUFDLENBQUMsQUFBRyxLQUFFLEFBQUMsQUFBRSxBQUFFLE1BQUMsQUFBRyxJQUFDLEFBQUMsQUFBQyxJQUFFLEFBQUksQUFBQyxBQUFDO0FBQ2hELEFBQUMsY0FBQyxBQUFJLEFBQUMsUUFBRyxBQUFLLEFBQUMsQUFDbEI7QUFBQyxBQUFDO0FBRUYsQUFBSyxjQUFDLEVBQUUsQUFBRyxLQUFFLEFBQUcsQUFBRSxPQUFFLENBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQztBQUM1QixBQUFJLGFBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQjtBQUFDO0FBRUQsQUFBVSxlQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBZTtBQUNyRCxZQUFJLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBQyxBQUFDLE9BQUssQUFBRyxLQUFFLE1BQU0sSUFBSSxBQUFLLEFBQUMsd0JBQWtCLEFBQUcsR0FBVyxBQUFDLEFBQUM7QUFDNUUsZUFBTyxBQUFLLE1BQUMsQUFBVSxXQUFDLEFBQU0sUUFBRSxBQUFHLEtBQUUsQUFBSSxBQUFDLEFBQUMsQUFDN0M7QUFBQyxBQUNGOztBQUVELEFBQU0sZ0JBQVUsQUFBSyxNQUFDLEFBQVk7QUFDaEMsV0FBTyxJQUFJLEFBQWMsZUFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUFDLEFBQUMsQUFDN0M7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsdWVwcmludCwgRGVzY3JpcHRvciB9IGZyb20gJy4vbWl4aW4nO1xuaW1wb3J0IHsgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgQ29tcHV0ZWRCbHVlcHJpbnQgfSBmcm9tICcuL2NvbXB1dGVkJztcblxuY2xhc3MgQWxpYXNNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lOiBPYmplY3QpIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMubmFtZSBhcyBzdHJpbmc7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQodGhpczogdHlwZW9mIHRhcmdldCkge1xuICAgICAgICByZXR1cm4gdGhpc1tuYW1lXTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgQWxpYXNNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZERlc2NyaXB0b3IodGhpcy5uYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXNNZXRob2QobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZEJsdWVwcmludChuYW1lKTtcbn1cblxuY2xhc3MgQWxpYXNCbHVlcHJpbnQgZXh0ZW5kcyBDb21wdXRlZEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nW10pIHtcbiAgICBsZXQgcGFyZW50ID0gbmFtZS5zbGljZSgwLCAtMSk7XG4gICAgbGV0IGxhc3QgPSBuYW1lW25hbWUubGVuZ3RoIC0gMV07XG5cbiAgICBsZXQgZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gbmFtZS5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICB9O1xuXG4gICAgbGV0IHNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IHAgPSBwYXJlbnQucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgICBwW2xhc3RdID0gdmFsdWU7XG4gICAgfTtcblxuICAgIHN1cGVyKHsgZ2V0LCBzZXQgfSwgW25hbWVdKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIG1ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGlmICh0aGlzLm5hbWVbMF0gPT09IGtleSkgdGhyb3cgbmV3IEVycm9yKGBTZXR0aW5nIGFsaWFzICcke2tleX0nIG9uIHNlbGZgKTtcbiAgICByZXR1cm4gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgbWV0YSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzKG5hbWU6IHN0cmluZyk6IEJsdWVwcmludCB7XG4gIHJldHVybiBuZXcgQWxpYXNCbHVlcHJpbnQobmFtZS5zcGxpdCgnLicpKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvZGVzY3JpcHRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxTQUFULEVBQW9CLFVBQXBCLFFBQXNDLFNBQXRDO0FBRUEsU0FBUyxpQkFBVCxRQUFrQyxZQUFsQztBQUdBLE1BQU0scUJBQU4sU0FBb0MsVUFBcEMsQ0FBOEM7QUFHNUMsZ0JBQVksSUFBWixFQUF3QjtBQUN0QjtBQUNBLGFBQUssSUFBTCxHQUFZLElBQVo7QUFDRDtBQUVELFdBQU8sTUFBUCxFQUFxQixHQUFyQixFQUFrQyxLQUFsQyxFQUErQztBQUM3QyxZQUFJLE9BQU8sS0FBSyxJQUFoQjtBQUVBLGVBQU8sY0FBUCxDQUFzQixNQUF0QixFQUE4QixHQUE5QixFQUFtQztBQUNqQyx3QkFBWSxJQURxQjtBQUVqQywwQkFBYyxJQUZtQjtBQUdqQyxrQkFBRztBQUNELHVCQUFPLEtBQUssSUFBTCxDQUFQO0FBQ0Q7QUFMZ0MsU0FBbkM7QUFPRDtBQWxCMkM7QUFxQjlDLE1BQU0sb0JBQU4sU0FBbUMsU0FBbkMsQ0FBNEM7QUFHMUMsZ0JBQVksSUFBWixFQUF3QjtBQUN0QjtBQUNBLGFBQUssSUFBTCxHQUFZLElBQVo7QUFDRDtBQUVELGVBQVcsT0FBWCxFQUE0QixJQUE1QixFQUEwQyxLQUExQyxFQUEwRDtBQUN4RCxlQUFPLElBQUkscUJBQUosQ0FBMEIsS0FBSyxJQUEvQixDQUFQO0FBQ0Q7QUFWeUM7QUFhNUMsT0FBTSxTQUFVLFdBQVYsQ0FBc0IsSUFBdEIsRUFBa0M7QUFDdEMsV0FBTyxJQUFJLG9CQUFKLENBQXlCLElBQXpCLENBQVA7QUFDRDtBQUVELE1BQU0sY0FBTixTQUE2QixpQkFBN0IsQ0FBOEM7QUFHNUMsZ0JBQVksSUFBWixFQUEwQjtBQUN4QixZQUFJLFNBQVMsS0FBSyxLQUFMLENBQVcsQ0FBWCxFQUFjLENBQUMsQ0FBZixDQUFiO0FBQ0EsWUFBSSxPQUFPLEtBQUssS0FBSyxNQUFMLEdBQWMsQ0FBbkIsQ0FBWDtBQUVBLFlBQUksTUFBTSxZQUFBO0FBQ1IsbUJBQU8sS0FBSyxNQUFMLENBQVksQ0FBQyxHQUFELEVBQU0sQ0FBTixLQUFZLElBQUksQ0FBSixDQUF4QixFQUFnQyxJQUFoQyxDQUFQO0FBQ0QsU0FGRDtBQUlBLFlBQUksTUFBTSxVQUFvQixLQUFwQixFQUE4QjtBQUN0QyxnQkFBSSxJQUFJLE9BQU8sTUFBUCxDQUFjLENBQUMsR0FBRCxFQUFNLENBQU4sS0FBWSxJQUFJLENBQUosQ0FBMUIsRUFBa0MsSUFBbEMsQ0FBUjtBQUNBLGNBQUUsSUFBRixJQUFVLEtBQVY7QUFDRCxTQUhEO0FBS0EsY0FBTSxFQUFFLEdBQUYsRUFBTyxHQUFQLEVBQU4sRUFBb0IsQ0FBQyxJQUFELENBQXBCO0FBQ0EsYUFBSyxJQUFMLEdBQVksSUFBWjtBQUNEO0FBRUQsZUFBVyxNQUFYLEVBQTJCLEdBQTNCLEVBQXdDLElBQXhDLEVBQXVEO0FBQ3JELFlBQUksS0FBSyxJQUFMLENBQVUsQ0FBVixNQUFpQixHQUFyQixFQUEwQixNQUFNLElBQUksS0FBSixDQUFVLGtCQUFrQixHQUFHLFdBQS9CLENBQU47QUFDMUIsZUFBTyxNQUFNLFVBQU4sQ0FBaUIsTUFBakIsRUFBeUIsR0FBekIsRUFBOEIsSUFBOUIsQ0FBUDtBQUNEO0FBdkIyQztBQTBCOUMsT0FBTSxTQUFVLEtBQVYsQ0FBZ0IsSUFBaEIsRUFBNEI7QUFDaEMsV0FBTyxJQUFJLGNBQUosQ0FBbUIsS0FBSyxLQUFMLENBQVcsR0FBWCxDQUFuQixDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCbHVlcHJpbnQsIERlc2NyaXB0b3IgfSBmcm9tICcuL21peGluJztcbmltcG9ydCB7IENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IENvbXB1dGVkQmx1ZXByaW50IH0gZnJvbSAnLi9jb21wdXRlZCc7XG5pbXBvcnQgeyBEaWN0IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmNsYXNzIEFsaWFzTWV0aG9kRGVzY3JpcHRvciBleHRlbmRzIERlc2NyaXB0b3Ige1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBEaWN0LCBrZXk6IHN0cmluZywgX2hvbWU6IE9iamVjdCkge1xuICAgIGxldCBuYW1lID0gdGhpcy5uYW1lIGFzIHN0cmluZztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiB0eXBlb2YgdGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzW25hbWVdO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBBbGlhc01ldGhvZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9tZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kRGVzY3JpcHRvcih0aGlzLm5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhc01ldGhvZChuYW1lOiBzdHJpbmcpOiBCbHVlcHJpbnQge1xuICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kQmx1ZXByaW50KG5hbWUpO1xufVxuXG5jbGFzcyBBbGlhc0JsdWVwcmludCBleHRlbmRzIENvbXB1dGVkQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmdbXSkge1xuICAgIGxldCBwYXJlbnQgPSBuYW1lLnNsaWNlKDAsIC0xKTtcbiAgICBsZXQgbGFzdCA9IG5hbWVbbmFtZS5sZW5ndGggLSAxXTtcblxuICAgIGxldCBnZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiBuYW1lLnJlZHVjZSgob2JqLCBuKSA9PiBvYmpbbl0sIHRoaXMpO1xuICAgIH07XG5cbiAgICBsZXQgc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICBsZXQgcCA9IHBhcmVudC5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICAgIHBbbGFzdF0gPSB2YWx1ZTtcbiAgICB9O1xuXG4gICAgc3VwZXIoeyBnZXQsIHNldCB9LCBbbmFtZV0pO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgaWYgKHRoaXMubmFtZVswXSA9PT0ga2V5KSB0aHJvdyBuZXcgRXJyb3IoYFNldHRpbmcgYWxpYXMgJyR7a2V5fScgb24gc2VsZmApO1xuICAgIHJldHVybiBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBtZXRhKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXMobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc0JsdWVwcmludChuYW1lLnNwbGl0KCcuJykpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -258,2 +258,2 @@ import { CLASS_META } from '@glimmer/object-reference';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQU8sU0FBRSxBQUFVLEFBQUUsa0JBQU0sQUFBMkIsQUFBQztBQUN2RCxBQUFPLFNBQVEsQUFBSSxNQUFFLEFBQU0sQUFBRSxjQUFNLEFBQWUsQUFBQztBQUNuRCxBQUFzQixTQUVwQixBQUFTLFdBQ1QsQUFBWSxjQUNaLEFBQVcsQUFDWixtQkFBTSxBQUFVLEFBQUM7QUFFbEIsQUFBTyxTQUFFLEFBQUksQUFBRSxZQUFNLEFBQVMsQUFBQztBQUUvQixNQUFNLEVBQUUsQUFBTyxBQUFFLFlBQUcsQUFBSyxBQUFDO0FBRTFCLEFBQU0sT0FBQyxNQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDO0FBQ2pFLEFBQU0sT0FBQyxNQUFNLEFBQVMsWUFBRyxBQUFzQyxBQUFDO0FBRWhFLEFBQU0sYUFBZ0IsQUFBVTtBQUFoQztBQUNFLGFBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRDtBQUFDOztBQUVELEFBQU0sYUFBZ0IsQUFBUztBQUEvQjtBQUNFLGFBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRDtBQUFDOztBQVNELEFBQU0sYUFBTyxBQUFLO0FBNEJoQixnQkFBWSxBQUFzQixZQUFFLEFBQWU7QUEzQjNDLGFBQVUsYUFBYyxBQUFXLEFBQUMsTUFBQyxBQUF1QjtBQUM1RCxhQUFzQix5QkFBYSxBQUFFLEFBQUM7QUFDdEMsYUFBZ0IsbUJBQWEsQUFBRSxBQUFDO0FBQ2hDLGFBQVksZUFBWSxBQUFFLEFBQUM7QUF5QmpDLEFBQUksYUFBQyxBQUFNLE9BQUMsQUFBVSxBQUFDLEFBQUM7QUFDeEIsQUFBSSxhQUFDLEFBQVksYUFBQyxBQUFJLEtBQUMsR0FBRyxBQUFNLEFBQUMsQUFBQyxBQUNwQztBQUFDO0FBekJELEFBQU0sV0FBQyxBQUFNLE9BQUMsR0FBRyxBQUE0QjtBQUMzQyxZQUFJLEFBQVUsYUFBRyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsQUFBQztBQUV2QyxZQUFJLEFBQUksS0FBQyxBQUFNLFdBQUssQUFBQyxHQUFFO0FBQ3JCLG1CQUFPLElBQUksQUFBSSxLQUFDLEFBQUUsSUFBRSxBQUFFLEFBQUMsQUFBQztBQUN6QixtQkFBVSxBQUFVLHNCQUFZLEFBQUssT0FBRTtBQUN0QyxtQkFBTyxJQUFJLEFBQUksS0FBQyxBQUFFLElBQUUsQUFBZSxBQUFDLEFBQUM7QUFDdEMsU0FGTSxNQUVBO0FBQ0wsZ0JBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBQyxHQUFFLENBQUMsQUFBQyxBQUFDLEdBQUMsQUFBRyxJQUFDLEFBQU8sQUFBQyxBQUFDO0FBQzFDLG1CQUFPLElBQUksQUFBSSxLQUFDLEFBQXdCLFlBQUUsQUFBSSxBQUFDLEFBQUM7QUFDakQsQUFDSDtBQUFDO0FBRUQsQUFBTSxXQUFDLEFBQU0sT0FBQyxBQUFRO0FBQ3BCLFlBQUksT0FBTyxBQUFHLFFBQUssQUFBUSxZQUFJLEFBQUcsUUFBSyxBQUFJLE1BQUUsT0FBTyxBQUFFLEFBQUM7QUFFdkQsWUFBSSxBQUFJLE9BQUcsQUFBUyxVQUFDLEFBQUcsSUFBQyxBQUFHLEFBQUMsQUFBQztBQUM5QixZQUFJLENBQUMsQUFBSSxNQUFFLE9BQU8sQUFBRSxBQUFDO0FBRXJCLGVBQU8sQUFBSSxLQUFDLEFBQWdCLEFBQUUsQUFBQyxBQUNqQztBQUFDO0FBT0QsQUFBTSxXQUFDLEFBQVE7QUFDYixZQUFJLE9BQU8sQUFBRyxRQUFLLEFBQVEsWUFBSSxBQUFHLFFBQUssQUFBSSxNQUFFLE9BQU8sQUFBSyxBQUFDO0FBRTFELFlBQUksQUFBRyxlQUFZLEFBQUssT0FBRTtBQUN4QixtQkFBTyxBQUFHLElBQUMsQUFBWSxhQUFDLEFBQU8sUUFBQyxBQUFJLEFBQUMsVUFBSyxDQUFDLEFBQUMsQUFBQztBQUM5QztBQUVELFlBQUksQUFBSSxPQUFHLEFBQVMsVUFBQyxBQUFHLElBQUMsQUFBRyxBQUFDLEFBQUM7QUFDOUIsZUFBTyxDQUFDLENBQUMsQUFBSSxRQUFJLEFBQUksS0FBQyxBQUFlLGdCQUFDLEFBQUksQUFBQyxBQUFDLEFBQzlDO0FBQUM7QUFFRCxBQUFNLFdBQUMsQUFBc0I7QUFDM0IsWUFBSSxBQUFJLEtBQUMsQUFBVSxZQUFFO0FBQ25CLEFBQUksaUJBQUMsQUFBWSxhQUFDLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSSxLQUFDLEFBQVUsQUFBQyxBQUFDLEFBQUM7QUFDbEQ7QUFFRCxZQUFJLE9BQU8sQUFBVSxlQUFLLEFBQVEsWUFBSSxBQUF3Qiw0QkFBSSxBQUFVLFlBQUU7QUFDNUUsZ0JBQUksQUFBZ0IsQUFBQztBQUNyQixnQkFBSSxBQUFTLFlBQUcsQUFBVSxXQUFDLEFBQXNCLEFBQUM7QUFFbEQsZ0JBQUksQUFBTyxRQUFDLEFBQVMsQUFBQyxZQUFFO0FBQ3RCLEFBQU0seUJBQUksQUFBc0IsVUFBQyxBQUFLLEFBQUUsQUFBQztBQUMxQyx1QkFBVSxBQUFTLGNBQUssQUFBSSxRQUFJLEFBQVMsY0FBSyxBQUFTLFdBQUU7QUFDeEQsQUFBTSx5QkFBRyxBQUFFLEFBQUM7QUFDYixhQUZNLE1BRUE7QUFDTCxBQUFNLHlCQUFHLENBQUMsQUFBbUIsQUFBQyxBQUFDO0FBQ2hDO0FBRUQsbUJBQU8sQUFBVSxXQUFDLEFBQXNCLEFBQUM7QUFDekMsQUFBSSxpQkFBQyxBQUFzQix5QkFBRyxBQUFNLEFBQUM7QUFDdEM7QUFFRCxZQUFJLE9BQU8sQUFBVSxlQUFLLEFBQVEsWUFBSSxBQUFrQixzQkFBSSxBQUFVLFlBQUU7QUFDdEUsZ0JBQUksQUFBZ0IsQUFBQztBQUNyQixnQkFBSSxBQUFTLFlBQUcsQUFBVSxXQUFDLEFBQWdCLEFBQUM7QUFFNUMsZ0JBQUksQUFBTyxRQUFDLEFBQVMsQUFBQyxZQUFFO0FBQ3RCLEFBQU0seUJBQUksQUFBc0IsVUFBQyxBQUFLLEFBQUUsQUFBQztBQUMxQyx1QkFBVSxBQUFTLGNBQUssQUFBSSxRQUFJLEFBQVMsY0FBSyxBQUFTLFdBQUU7QUFDeEQsQUFBTSx5QkFBRyxBQUFFLEFBQUM7QUFDYixhQUZNLE1BRUE7QUFDTCxBQUFNLHlCQUFHLENBQUMsQUFBbUIsQUFBQyxBQUFDO0FBQ2hDO0FBRUQsbUJBQU8sQUFBVSxXQUFDLEFBQWdCLEFBQUM7QUFDbkMsQUFBSSxpQkFBQyxBQUFnQixtQkFBRyxBQUFNLEFBQUM7QUFDaEM7QUFFRCxZQUFJLEFBQVUsb0JBQTJCLEFBQUksS0FBQyxBQUFVLEFBQUMsWUFBQyxBQUFNLE9BQUMsQ0FBQyxBQUFHLEtBQUUsQUFBRyxBQUFFLEFBQUU7QUFDNUUsZ0JBQUksQUFBSyxRQUFHLEFBQVUsV0FBQyxBQUFHLEFBQUMsQUFBQztBQUU1QixvQkFBUSxPQUFPLEFBQUssQUFBRTtBQUNwQixxQkFBSyxBQUFVO0FBQ2IsQUFBRyx3QkFBQyxBQUFHLEFBQUMsT0FBRyxJQUFJLEFBQWUsZ0JBQUMsRUFBRSxBQUFLLEFBQUUsQUFBQyxBQUFDO0FBQzFDLEFBQU07QUFDUixxQkFBSyxBQUFRO0FBQ1gsd0JBQUksQUFBSyxTQUFJLEFBQVMsYUFBSSxBQUFLLE9BQUU7QUFDL0IsQUFBRyw0QkFBQyxBQUFHLEFBQUMsT0FBRyxBQUFLLEFBQUM7QUFDakIsQUFBTTtBQUNQO0FBQ0gsQUFBbUI7QUFDbkI7QUFDRSxBQUFHLHdCQUFDLEFBQUcsQUFBQyxPQUFHLElBQUksQUFBYSxjQUFDLEVBQUUsQUFBSyxBQUFFLEFBQUMsQUFBQyxBQUMzQzs7QUFFRCxtQkFBTyxBQUFHLEFBQUMsQUFDYjtBQUFDLFNBbEJpQyxBQUFNLEVBa0JyQyxBQUFJLEFBQWEsQUFBQyxBQUFDO0FBRXRCLEFBQUksYUFBQyxBQUFVLGFBQUcsQUFBSSxBQUFPLEFBQUM7QUFDOUIsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFVLFlBQUUsQUFBVyxZQUFDLEFBQVUsQUFBQyxBQUFDLEFBQUMsQUFDbkQ7QUFBQztBQUVELEFBQUssVUFBQyxBQUFXO0FBQ2YsWUFBSSxBQUFJLEFBQWMsT0FBQyxBQUFNLE9BQUMsQUFBVSxBQUFDLGNBQUcsQUFBTSxPQUFDLEFBQVUsQUFBQyxlQUFJLElBQUksQUFBUyxBQUFFLEFBQUMsQUFBQztBQUNuRixBQUFJLGFBQUMsQUFBWSxhQUFDLEFBQU8sUUFBQyxBQUFDLEFBQUMsQUFBRSxLQUFDLEFBQUMsRUFBQyxBQUFLLE1BQUMsQUFBTSxBQUFDLEFBQUMsQUFBQztBQUNoRCxBQUFJLGFBQUMsQUFBZSxnQkFBQyxBQUFNLFFBQUUsQUFBTSxRQUFFLEFBQUksQUFBQyxBQUFDO0FBQzNDLEFBQUksYUFBQyxBQUFRLFNBQUMsQUFBSSxBQUFDLEFBQUM7QUFDcEIsQUFBSSxhQUFDLEFBQUksQUFBRSxBQUFDO0FBQ1osQUFBSSxhQUFDLEFBQU0sT0FBQyxBQUFNLEFBQUMsQUFBQztBQUVwQixlQUFPLEFBQU0sQUFBQyxBQUNoQjtBQUFDO0FBRUQsQUFBZSxvQkFBQyxBQUFtQztBQUNqRCxBQUFRLGlCQUFDLEFBQVMsWUFBRyxBQUFNLE9BQUMsQUFBTSxPQUFDLEFBQVEsU0FBQyxBQUFTLEFBQUMsQUFBQztBQUN2RCxBQUFJLGFBQUMsQUFBWSxhQUFDLEFBQU8sUUFBQyxBQUFDLEFBQUMsQUFBRSxLQUFDLEFBQUMsRUFBQyxBQUFlLGdCQUFDLEFBQVEsQUFBQyxBQUFDLEFBQUM7QUFDNUQsQUFBSSxhQUFDLEFBQW1CLG9CQUFDLEFBQVEsVUFBRSxBQUFRLEFBQUMsQUFBQyxBQUMvQztBQUFDO0FBRUQsQUFBbUIsd0JBQUMsQUFBbUMsVUFBRSxBQUFpQztBQUN4RixBQUFJLGFBQUMsQUFBWSxhQUFDLEFBQU8sUUFBQyxBQUFDLEFBQUMsQUFBRSxLQUFDLEFBQUMsRUFBQyxBQUFtQixvQkFBQyxBQUFRLFVBQUUsQUFBTSxBQUFDLEFBQUMsQUFBQztBQUN4RSxBQUFJLGFBQUMsQUFBZSxnQkFBQyxBQUFRLFNBQUMsQUFBUyxXQUFFLEFBQU0sT0FBQyxBQUFTLFdBQUUsQUFBUSxTQUFDLEFBQVUsQUFBQyxBQUFDLEFBQUM7QUFDakYsQUFBUSxpQkFBQyxBQUFVLEFBQUMsWUFBQyxBQUFRLFNBQUMsQUFBSSxBQUFDLEFBQUMsQUFDdEM7QUFBQztBQUVELEFBQVksaUJBQUMsQUFBaUM7QUFDNUMsQUFBSSxhQUFDLEFBQVksYUFBQyxBQUFPLFFBQUMsQUFBQyxBQUFDLEFBQUUsS0FBQyxBQUFDLEVBQUMsQUFBWSxhQUFDLEFBQU0sQUFBQyxBQUFDLEFBQUM7QUFDdkQsQUFBSSxhQUFDLEFBQWUsZ0JBQUMsQUFBTSxRQUFFLEFBQU0sT0FBQyxBQUFjLGVBQUMsQUFBTSxBQUFDLFNBQUUsQUFBTSxPQUFDLEFBQVUsQUFBQyxZQUFDLEFBQVUsQUFBQyxBQUFDLEFBQUM7QUFDNUYsQUFBTSxlQUFDLEFBQVUsQUFBQyxZQUFDLEFBQWMsZUFBQyxBQUFJLEFBQUMsQUFBQyxBQUMxQztBQUFDO0FBRUQsQUFBZSxvQkFBQyxBQUFjLFFBQUUsQUFBYyxRQUFFLEFBQWU7QUFDN0QsWUFBSSxBQUFJLEtBQUMsQUFBZSxnQkFBQyxBQUFJLEFBQUMsT0FBRSxBQUFPO0FBQ3ZDLEFBQUksYUFBQyxBQUFlLGdCQUFDLEFBQUksQUFBQyxBQUFDO0FBRTNCLEFBQUksYUFBQyxBQUFnQixpQkFBQyxBQUFPLFFBQUMsQUFBQyxBQUFDLEFBQUUsS0FBQyxBQUFJLEtBQUMsQUFBaUIsa0JBQUMsQUFBQyxHQUFFLEFBQU0sT0FBQyxBQUFDLEFBQUMsQUFBQyxBQUFDLEFBQUM7QUFDekUsQUFBSSxhQUFDLEFBQXNCLHVCQUFDLEFBQU8sUUFBQyxBQUFDLEFBQUMsQUFBRSxLQUFDLEFBQUksS0FBQyxBQUF1Qix3QkFBQyxBQUFDLEdBQUUsQUFBRSxBQUFDLEFBQUMsQUFBQztBQUU5RSxZQUFJLEFBQWUsZ0JBQUMsRUFBRSxBQUFLLE9BQUUsQUFBSSxLQUFDLEFBQXlCLEFBQUUsQUFBRSxBQUFDLCtCQUFDLEFBQU0sT0FDckUsQUFBTSxRQUNOLEFBQXdCLEFBQ3pCLEFBQUM7QUFDRixZQUFJLEFBQWUsZ0JBQUMsRUFBRSxBQUFLLE9BQUUsQUFBSSxLQUFDLEFBQW1CLEFBQUUsQUFBRSxBQUFDLHlCQUFDLEFBQU0sT0FBQyxBQUFNLFFBQUUsQUFBa0IsQUFBQyxBQUFDO0FBRTlGLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQVUsQUFBQyxZQUFDLEFBQU8sUUFBQyxBQUFHLEFBQUMsQUFBRTtBQUN6QyxnQkFBSSxBQUFTLFlBQWMsQUFBSSxLQUFDLEFBQVcsV0FBQyxBQUFHLEFBQUMsQUFBQztBQUNqRCxnQkFBSSxBQUFJLE9BQUcsQUFBUyxVQUFDLEFBQVUsV0FBQyxBQUFNLFFBQUUsQUFBYSxLQUFFLEFBQUksQUFBQyxBQUFDO0FBQzdELEFBQUksaUJBQUMsQUFBTSxPQUFDLEFBQU0sUUFBRSxBQUFhLEtBQUUsQUFBTSxBQUFDLEFBQUMsQUFDN0M7QUFBQyxBQUFDLEFBQUM7QUFFSCxZQUFJLEFBQWUsZ0JBQUMsRUFBRSxBQUFLLE9BQUUsQUFBSSxBQUFFLEFBQUMsUUFBQyxBQUFNLE9BQUMsQUFBTSxRQUFFLEFBQWtCLEFBQUMsQUFBQyxBQUMxRTtBQUFDLEFBQ0Y7O0FBSUQsQUFBTSxnQkFBVSxBQUFNLE9BQ3BCLEFBQStCLFFBQy9CLEdBQUcsQUFBdUI7QUFFMUIsUUFBSSxBQUFLLFFBQUcsQUFBOEIsQUFBQztBQUUzQyxRQUFJLEFBQVEsV0FBRyxBQUFNLGNBQVEsQUFBSyxNQUFHLEFBQUM7QUFDdEMsQUFBUSxhQUFDLEFBQVUsQUFBQyxjQUFHLEFBQVksYUFBQyxBQUFVLFdBQUMsQUFBTSxPQUFDLEFBQVUsQUFBQyxBQUFDLEFBQUM7QUFFbkUsUUFBSSxBQUFNLFNBQUcsQUFBVSxXQUFDLEFBQUcsSUFBQyxBQUFPLEFBQUMsQUFBQztBQUNyQyxBQUFNLFdBQUMsQUFBVSxBQUFDLFlBQUMsQUFBVyxZQUFDLEFBQXFDLEFBQUMsQUFBQztBQUN0RSxBQUFNLFdBQUMsQUFBTyxRQUFDLEFBQUMsQUFBQyxBQUFFLEtBQUMsQUFBUSxTQUFDLEFBQVUsQUFBQyxZQUFDLEFBQVEsU0FBQyxBQUFDLEFBQUMsQUFBQyxBQUFDO0FBRXRELEFBQVMsY0FBQyxBQUFjLGVBQUMsQUFBcUMsVUFBRSxBQUFNLEFBQUMsQUFBQztBQUV4RSxXQUFPLEFBQWUsQUFBQyxBQUN6QjtBQUFDO0FBRUQsQUFBTSxnQkFBVSxBQUFnQixpQkFBQyxBQUFpQztBQUNoRSxBQUFNLFdBQUMsQUFBVSxBQUFDLFlBQUMsQUFBYSxBQUFFLGdCQUFDLEFBQU8sUUFBRSxBQUFtQyxBQUFFLEFBQUUsUUFBeEM7QUFDekMsQUFBUSxpQkFBQyxBQUFVLEFBQUMsWUFBQyxBQUFLLE1BQUMsQUFBTSxPQUFDLEFBQVUsQUFBQyxBQUFDLEFBQUM7QUFDL0MsQUFBUSxpQkFBQyxBQUFTLFlBQUcsQUFBTSxPQUFDLEFBQU0sT0FBQyxBQUFNLE9BQUMsQUFBUyxBQUFDLEFBQUM7QUFFckQsQUFBUyxrQkFBQyxBQUFjLGVBQUMsQUFBUSxVQUFFLEFBQU0sQUFBQyxBQUFDO0FBRTNDLEFBQThCO0FBQzlCLEFBQWdCLHlCQUFDLEFBQVEsQUFBQyxBQUFDLEFBQzdCO0FBQUMsQUFBQyxBQUFDLEFBQ0w7QUFBQztBQUVELEFBQU0sZ0JBQVUsQUFBTyxRQUFDLEFBQW9CO0FBQzFDLFFBQUksQUFBUyxxQkFBWSxBQUFLLE9BQUUsT0FBTyxBQUFTLEFBQUMsZUFDNUMsT0FBTyxJQUFJLEFBQUssTUFBQyxBQUFtQixXQUFFLEFBQUUsQUFBQyxBQUFDLEFBQ2pEO0FBQUM7QUFFRCxNQUFNLEFBQWdCLHdCQUFRLEFBQVU7QUFNdEMsZ0JBQVksRUFDVixBQUFVLGFBQUcsQUFBSSxNQUNqQixBQUFZLGVBQUcsQUFBSSxNQUNuQixBQUFRLFdBQUcsQUFBSSxNQUNmLEFBQUssQUFDYztBQUNuQixBQUFLLEFBQUUsQUFBQztBQUNSLEFBQUksYUFBQyxBQUFVLGFBQUcsQUFBVSxBQUFDO0FBQzdCLEFBQUksYUFBQyxBQUFZLGVBQUcsQUFBWSxBQUFDO0FBQ2pDLEFBQUksYUFBQyxBQUFRLFdBQUcsQUFBUSxBQUFDO0FBQ3pCLEFBQUksYUFBQyxBQUFLLFFBQUcsQUFBSyxBQUFDLEFBQ3JCO0FBQUM7QUFFRCxBQUFNLFdBQUMsQUFBYyxRQUFFLEFBQVcsS0FBRSxBQUFXO0FBQzdDLEFBQU0sZUFBQyxBQUFjLGVBQUMsQUFBTSxRQUFFLEFBQUc7QUFDL0IsQUFBVSx3QkFBRSxBQUFJLEtBQUMsQUFBVTtBQUMzQixBQUFZLDBCQUFFLEFBQUksS0FBQyxBQUFZO0FBQy9CLEFBQVEsc0JBQUUsQUFBSSxLQUFDLEFBQVE7QUFDdkIsQUFBSyxtQkFBRSxBQUFJLEtBQUMsQUFBSyxBQUNsQixBQUFDLEFBQUMsQUFDTDtBQU5xQztBQU1wQyxBQUNGOztBQUVELEFBQU0sYUFBTyxBQUFjLHNCQUFRLEFBQVM7QUFNMUMsZ0JBQVksRUFDVixBQUFVLGFBQUcsQUFBSSxNQUNqQixBQUFZLGVBQUcsQUFBSSxNQUNuQixBQUFRLFdBQUcsQUFBSSxNQUNmLEFBQUssQUFDYztBQUNuQixBQUFLLEFBQUUsQUFBQztBQUNSLEFBQUksYUFBQyxBQUFVLGFBQUcsQUFBVSxBQUFDO0FBQzdCLEFBQUksYUFBQyxBQUFZLGVBQUcsQUFBWSxBQUFDO0FBQ2pDLEFBQUksYUFBQyxBQUFLLFFBQUcsQUFBSyxBQUFDO0FBQ25CLEFBQUksYUFBQyxBQUFRLFdBQUcsQUFBUSxBQUFDLEFBQzNCO0FBQUM7QUFFRCxBQUFVLGVBQUMsQUFBZSxTQUFFLEFBQVcsS0FBRSxBQUFvQjtBQUMzRCxZQUFJLEVBQUUsQUFBVSxZQUFFLEFBQVksY0FBRSxBQUFRLFVBQUUsQUFBSyxBQUFFLFVBQUcsQUFBSSxBQUFDO0FBRXpELFlBQUksQUFBUyxVQUFDLEFBQXVCLHdCQUFDLEFBQWEsQUFBQyxNQUFFO0FBQ3BELEFBQVMsc0JBQUMsQUFBdUIsd0JBQUMsQUFBYSxLQUFFLEFBQUssQUFBQyxBQUFDO0FBQ3hELEFBQUssb0JBQUcsQUFBUyxVQUFDLEFBQXVCLHdCQUFDLEFBQWEsQUFBQyxBQUFDO0FBQzFELGVBQU0sSUFBSSxBQUFTLFVBQUMsQUFBaUIsa0JBQUMsQUFBYSxBQUFDLE1BQUU7QUFDckQsQUFBUyxzQkFBQyxBQUFpQixrQkFBQyxBQUFhLEtBQUUsQUFBSyxBQUFDLEFBQUM7QUFDbEQsQUFBSyxvQkFBRyxBQUFTLFVBQUMsQUFBaUIsa0JBQUMsQUFBYSxBQUFDLEFBQUM7QUFDcEQ7QUFFRCxlQUFPLElBQUksQUFBZSxnQkFBQyxFQUFFLEFBQVUsWUFBRSxBQUFZLGNBQUUsQUFBUSxVQUFFLEFBQUssQUFBRSxBQUFDLEFBQUMsQUFDNUU7QUFBQyxBQUNGOztBQUVELEFBQU0sYUFBZ0IsQUFBa0IsMEJBQVEsQUFBUztBQU12RCxnQkFBWSxFQUNWLEFBQVUsYUFBRyxBQUFJLE1BQ2pCLEFBQVksZUFBRyxBQUFJLE1BQ25CLEFBQUcsS0FDSCxBQUFHLEFBQ3lDO0FBQzVDLEFBQUssQUFBRSxBQUFDO0FBQ1IsQUFBSSxhQUFDLEFBQVUsYUFBRyxBQUFVLEFBQUM7QUFDN0IsQUFBSSxhQUFDLEFBQVksZUFBRyxBQUFZLEFBQUM7QUFDakMsQUFBSSxhQUFDLEFBQUcsTUFBRyxBQUFHLEFBQUM7QUFDZixBQUFJLGFBQUMsQUFBRyxNQUFHLEFBQUcsQUFBQyxBQUNqQjtBQUFDO0FBRUQsQUFBVSxlQUFDLEFBQWUsU0FBRSxBQUFZLE1BQUUsQUFBcUI7QUFDN0QsbUJBQVcsQUFBZTtBQUN4QixBQUFVLHdCQUFFLEFBQUksS0FBQyxBQUFVO0FBQzNCLEFBQVksMEJBQUUsQUFBSSxLQUFDLEFBQVk7QUFDL0IsQUFBRyxpQkFBRSxBQUFJLEtBQUMsQUFBRztBQUNiLEFBQUcsaUJBQUUsQUFBSSxLQUFDLEFBQUcsQUFDZCxBQUFDLEFBQUMsQUFDTDtBQU42QixTQUFwQjtBQU1SLEFBQ0Y7O0FBRUQsTUFBTSxBQUFpQix5QkFBUSxBQUFlO0FBQzVDLEFBQU0sV0FBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQVk7QUFDOUMsQUFBSSxhQUFDLEFBQUssUUFBRyxBQUFVLFdBQUMsQUFBSSxNQUFFLEFBQUcsS0FBRSxBQUFJLEtBQUMsQUFBSyxBQUFDLEFBQUM7QUFDL0MsQUFBSyxjQUFDLEFBQU0sT0FBQyxBQUFNLFFBQUUsQUFBRyxLQUFFLEFBQUksQUFBQyxBQUFDLEFBQ2xDO0FBQUMsQUFDRjs7QUFFRCxNQUFNLEFBQWdCLHdCQUFRLEFBQWE7QUFDekMsQUFBVSxlQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBb0I7QUFDMUQsWUFBSSxBQUFJLE9BQUcsQUFBSyxNQUFDLEFBQVUsV0FBQyxBQUFNLFFBQUUsQUFBRyxLQUFFLEFBQVMsQUFBQyxBQUFDO0FBQ3BELGVBQU8sSUFBSSxBQUFnQixpQkFBQyxBQUEwQixBQUFDLEFBQUMsQUFDMUQ7QUFBQyxBQUNGOztBQUVELEFBQU0sZ0JBQVUsQUFBVSxXQUFDLEFBQVksTUFBRSxBQUFrQixZQUFFLEFBQWlDO0FBQzVGLFFBQUksQUFBQyxFQUFFLEFBQXFCLGNBQUksQUFBSSxBQUFDLE9BQUUsT0FBTyxBQUFTLFVBQUMsQUFBUSxBQUFDLEFBQUM7QUFFbEUsUUFBSSxBQUFXLGNBQUcsQUFBSSxLQUFDLEFBQVUsQUFBQyxBQUFDO0FBRW5DLFFBQUksQUFBSSxPQUFHLFVBQThCLEdBQUcsQUFBVztBQUNyRCxZQUFJLENBQUMsQUFBSSxNQUFFLE9BQU8sQUFBUSxTQUFDLEFBQUssTUFBQyxBQUFJLE1BQUUsQUFBSSxBQUFDLEFBQUM7QUFFN0MsWUFBSSxBQUFTLFlBQUcsQUFBSSxLQUFDLEFBQU0sQUFBQztBQUM1QixBQUFJLGFBQUMsQUFBTSxTQUFHLEFBQVcsQUFBQztBQUUxQixZQUFJO0FBQ0YsbUJBQU8sQUFBUSxTQUFDLEFBQUssTUFBQyxBQUFJLE1BQUUsQUFBSSxBQUFDLEFBQUM7QUFDbkMsa0JBQVM7QUFDUixBQUFJLGlCQUFDLEFBQU0sU0FBRyxBQUFTLEFBQUM7QUFDekIsQUFDSDtBQUFDLEFBQUM7QUFFRCxBQUFZLFNBQUMsQUFBUyxZQUFHLEFBQUksQUFBQztBQUUvQixXQUFPLEFBQUksQUFBQyxBQUNkO0FBQUM7QUFFRCxTQUFTLEFBQVMsVUFBQyxBQUFrQjtBQUNuQyxRQUFJLEFBQVcsZUFBSSxBQUFRLFVBQUUsT0FBTyxBQUFRLEFBQUM7QUFFN0MsV0FBTyxVQUE4QixHQUFHLEFBQVc7QUFDakQsWUFBSSxDQUFDLEFBQUksTUFBRSxPQUFPLEFBQVEsU0FBQyxBQUFLLE1BQUMsQUFBSSxNQUFFLEFBQUksQUFBQyxBQUFDO0FBRTdDLFlBQUksQUFBUyxZQUFHLEFBQUksS0FBQyxBQUFNLEFBQUM7QUFDNUIsQUFBSSxhQUFDLEFBQU0sU0FBRyxBQUFJLEFBQUM7QUFFbkIsWUFBSTtBQUNGLG1CQUFPLEFBQVEsU0FBQyxBQUFLLE1BQUMsQUFBSSxNQUFFLEFBQUksQUFBQyxBQUFDO0FBQ25DLGtCQUFTO0FBQ1IsQUFBSSxpQkFBQyxBQUFNLFNBQUcsQUFBUyxBQUFDO0FBQ3pCLEFBQ0g7QUFBQyxBQUFDLEFBQ0o7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENMQVNTX01FVEEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QsIGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IEdsaW1tZXJPYmplY3QsIHtcbiAgR2xpbW1lck9iamVjdEZhY3RvcnksXG4gIENsYXNzTWV0YSxcbiAgSW5zdGFuY2VNZXRhLFxuICB0dXJib2NoYXJnZSxcbn0gZnJvbSAnLi9vYmplY3QnO1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmV4cG9ydCBjb25zdCBERVNDUklQVE9SID0gJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYyc7XG5leHBvcnQgY29uc3QgQkxVRVBSSU5UID0gJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZXNjcmlwdG9yIHtcbiAgJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYycgPSB0cnVlO1xuICBhYnN0cmFjdCBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmx1ZXByaW50IHtcbiAgJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNScgPSB0cnVlO1xuICBhYnN0cmFjdCBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbnMge1xuICBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsO1xuICBtZXJnZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmc7XG4gIF9zdXBlcj86IEZ1bmN0aW9uO1xuICBbaW5kZXg6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIE1peGluIHtcbiAgcHJpdmF0ZSBleHRlbnNpb25zOiBEaWN0PGFueT4gPSBudWxsIGFzIGFueTsgLy8gYXNzaWduZWQgYmVmb3JlIHVzZWRcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZGVwZW5kZW5jaWVzOiBNaXhpbltdID0gW107XG5cbiAgc3RhdGljIGNyZWF0ZSguLi5hcmdzOiAoTWl4aW4gfCBFeHRlbnNpb25zKVtdKSB7XG4gICAgbGV0IGV4dGVuc2lvbnMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgW10pO1xuICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9ucyBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIGFyZ3MgYXMgTWl4aW5bXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkZXBzID0gYXJncy5zbGljZSgwLCAtMSkubWFwKHRvTWl4aW4pO1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKGV4dGVuc2lvbnMgYXMgRXh0ZW5zaW9ucywgZGVwcyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1peGlucyhvYmo6IGFueSk6IE1peGluW10ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBbXTtcblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIGlmICghbWV0YSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIG1ldGEuZ2V0QXBwbGllZE1peGlucygpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZXh0ZW5zaW9uczogRXh0ZW5zaW9ucywgbWl4aW5zOiBNaXhpbltdKSB7XG4gICAgdGhpcy5yZW9wZW4oZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCguLi5taXhpbnMpO1xuICB9XG5cbiAgZGV0ZWN0KG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gb2JqLmRlcGVuZGVuY2llcy5pbmRleE9mKHRoaXMpICE9PSAtMTtcbiAgICB9XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICByZXR1cm4gISFtZXRhICYmIG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpO1xuICB9XG5cbiAgcmVvcGVuKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMpIHtcbiAgICBpZiAodGhpcy5leHRlbnNpb25zKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKHRvTWl4aW4odGhpcy5leHRlbnNpb25zKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IGNvbmNhdDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3Q29uY2F0ID0gZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdDb25jYXQpKSB7XG4gICAgICAgIGNvbmNhdCA9IChyYXdDb25jYXQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd0NvbmNhdCA9PT0gbnVsbCB8fCByYXdDb25jYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25jYXQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmNhdCA9IFtyYXdDb25jYXQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGNvbmNhdDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdtZXJnZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICBsZXQgbWVyZ2VkOiBzdHJpbmdbXTtcbiAgICAgIGxldCByYXdNZXJnZWQgPSBleHRlbnNpb25zLm1lcmdlZFByb3BlcnRpZXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHJhd01lcmdlZCkpIHtcbiAgICAgICAgbWVyZ2VkID0gKHJhd01lcmdlZCBhcyBzdHJpbmdbXSkuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAocmF3TWVyZ2VkID09PSBudWxsIHx8IHJhd01lcmdlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1lcmdlZCA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkID0gW3Jhd01lcmdlZCBhcyBzdHJpbmddO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gbWVyZ2VkO1xuICAgIH1cblxuICAgIGxldCBub3JtYWxpemVkOiBEaWN0PEJsdWVwcmludD4gPSBPYmplY3Qua2V5cyhleHRlbnNpb25zKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBleHRlbnNpb25zW2tleV07XG5cbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBNZXRob2RCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBpZiAodmFsdWUgJiYgQkxVRVBSSU5UIGluIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgRGF0YUJsdWVwcmludCh7IHZhbHVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIGRpY3Q8Qmx1ZXByaW50PigpKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IGRpY3Q8YW55PigpO1xuICAgIGFzc2lnbih0aGlzLmV4dGVuc2lvbnMsIHR1cmJvY2hhcmdlKG5vcm1hbGl6ZWQpKTtcbiAgfVxuXG4gIGFwcGx5KHRhcmdldDogYW55KSB7XG4gICAgbGV0IG1ldGE6IENsYXNzTWV0YSA9ICh0YXJnZXRbQ0xBU1NfTUVUQV0gPSB0YXJnZXRbQ0xBU1NfTUVUQV0gfHwgbmV3IENsYXNzTWV0YSgpKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5hcHBseSh0YXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyh0YXJnZXQsIHRhcmdldCwgbWV0YSk7XG4gICAgbWV0YS5hZGRNaXhpbih0aGlzKTtcbiAgICBtZXRhLnNlYWwoKTtcbiAgICBtZXRhLnJlc2VhbCh0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZShPcmlnaW5hbDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIE9yaWdpbmFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3JpZ2luYWwucHJvdG90eXBlKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGUoT3JpZ2luYWwpKTtcbiAgICB0aGlzLmV4dGVuZFByb3RvdHlwZU9udG8oT3JpZ2luYWwsIE9yaWdpbmFsKTtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFN1YmNsYXNzLnByb3RvdHlwZSwgUGFyZW50LnByb3RvdHlwZSwgU3ViY2xhc3NbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKHRoaXMpO1xuICB9XG5cbiAgZXh0ZW5kU3RhdGljKFRhcmdldDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhUYXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhUYXJnZXQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihUYXJnZXQpLCBUYXJnZXRbQ0xBU1NfTUVUQV1bQ0xBU1NfTUVUQV0pO1xuICAgIFRhcmdldFtDTEFTU19NRVRBXS5hZGRTdGF0aWNNaXhpbih0aGlzKTtcbiAgfVxuXG4gIG1lcmdlUHJvcGVydGllcyh0YXJnZXQ6IE9iamVjdCwgcGFyZW50OiBPYmplY3QsIG1ldGE6IENsYXNzTWV0YSkge1xuICAgIGlmIChtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKSkgcmV0dXJuO1xuICAgIG1ldGEuYWRkQXBwbGllZE1peGluKHRoaXMpO1xuXG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZE1lcmdlZFByb3BlcnR5KGssIHBhcmVudFtrXSkpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrLCBbXSkpO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUoXG4gICAgICB0YXJnZXQsXG4gICAgICAnY29uY2F0ZW5hdGVkUHJvcGVydGllcydcbiAgICApO1xuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRNZXJnZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ21lcmdlZFByb3BlcnRpZXMnKTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZW5zaW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgbGV0IGV4dGVuc2lvbjogQmx1ZXByaW50ID0gdGhpcy5leHRlbnNpb25zIVtrZXldO1xuICAgICAgbGV0IGRlc2MgPSBleHRlbnNpb24uZGVzY3JpcHRvcih0YXJnZXQsIGtleSBhcyBzdHJpbmcsIG1ldGEpO1xuICAgICAgZGVzYy5kZWZpbmUodGFyZ2V0LCBrZXkgYXMgc3RyaW5nLCBwYXJlbnQpO1xuICAgIH0pO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBST09UIH0pLmRlZmluZSh0YXJnZXQsICdfc3VwZXInIGFzIHN0cmluZyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uID0gTWl4aW4gfCBFeHRlbnNpb25zO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kPFQgZXh0ZW5kcyBHbGltbWVyT2JqZWN0PihcbiAgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPixcbiAgLi4uZXh0ZW5zaW9uczogRXh0ZW5zaW9uW11cbik6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4ge1xuICBsZXQgU3VwZXIgPSBQYXJlbnQgYXMgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgbGV0IFN1YmNsYXNzID0gY2xhc3MgZXh0ZW5kcyBTdXBlciB7fTtcbiAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0gPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuXG4gIGxldCBtaXhpbnMgPSBleHRlbnNpb25zLm1hcCh0b01peGluKTtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmFkZFN1YmNsYXNzKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pO1xuICBtaXhpbnMuZm9yRWFjaChtID0+IFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKG0pKTtcblxuICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MgYXMgR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50KTtcblxuICByZXR1cm4gU3ViY2xhc3MgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsaW5rU3ViY2xhc3NlcyhQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmdldFN1YmNsYXNzZXMoKS5mb3JFYWNoKChTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PikgPT4ge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnJlc2V0KFBhcmVudFtDTEFTU19NRVRBXSk7XG4gICAgU3ViY2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQYXJlbnQucHJvdG90eXBlKTtcblxuICAgIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcywgUGFyZW50KTtcblxuICAgIC8vIHJlY3Vyc2UgaW50byBzdWItc3ViY2xhc3Nlc1xuICAgIHJlbGlua1N1YmNsYXNzZXMoU3ViY2xhc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTWl4aW4oZXh0ZW5zaW9uOiBFeHRlbnNpb24pOiBNaXhpbiB7XG4gIGlmIChleHRlbnNpb24gaW5zdGFuY2VvZiBNaXhpbikgcmV0dXJuIGV4dGVuc2lvbjtcbiAgZWxzZSByZXR1cm4gbmV3IE1peGluKGV4dGVuc2lvbiBhcyBPYmplY3QsIFtdKTtcbn1cblxuY2xhc3MgVmFsdWVEZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIHdyaXRhYmxlID0gdHJ1ZSxcbiAgICB2YWx1ZSxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBfaG9tZT86IGFueSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgIHdyaXRhYmxlOiB0aGlzLndyaXRhYmxlLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGFCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICB3cml0YWJsZSA9IHRydWUsXG4gICAgdmFsdWUsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGxldCB7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0gPSB0aGlzO1xuXG4gICAgaWYgKGNsYXNzTWV0YS5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgY2xhc3NNZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcsIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSBpZiAoY2xhc3NNZXRhLmhhc01lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkTWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZywgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0TWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9KTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWNjZXNzb3JCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgZ2V0OiAoKSA9PiBhbnk7XG4gIHNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgZ2V0LFxuICAgIHNldCxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yICYgeyBnZXQ6IGFueTsgc2V0OiBhbnkgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLmdldCA9IGdldDtcbiAgICB0aGlzLnNldCA9IHNldDtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9jbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICBnZXQ6IHRoaXMuZ2V0LFxuICAgICAgc2V0OiB0aGlzLnNldCxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgVmFsdWVEZXNjcmlwdG9yIHtcbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHdyYXBNZXRob2QoaG9tZSwga2V5LCB0aGlzLnZhbHVlKTtcbiAgICBzdXBlci5kZWZpbmUodGFyZ2V0LCBrZXksIGhvbWUpO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZEJsdWVwcmludCBleHRlbmRzIERhdGFCbHVlcHJpbnQge1xuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBNZXRob2REZXNjcmlwdG9yIHtcbiAgICBsZXQgZGVzYyA9IHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIGNsYXNzTWV0YSk7XG4gICAgcmV0dXJuIG5ldyBNZXRob2REZXNjcmlwdG9yKGRlc2MgYXMgUHJvcGVydHlEZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcE1ldGhvZChob21lOiBPYmplY3QsIG1ldGhvZE5hbWU6IHN0cmluZywgb3JpZ2luYWw6ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55KSB7XG4gIGlmICghKChtZXRob2ROYW1lIGFzIHN0cmluZykgaW4gaG9tZSkpIHJldHVybiBtYXliZVdyYXAob3JpZ2luYWwpO1xuXG4gIGxldCBzdXBlck1ldGhvZCA9IGhvbWVbbWV0aG9kTmFtZV07XG5cbiAgbGV0IGZ1bmMgPSBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gc3VwZXJNZXRob2Q7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgKGZ1bmMgYXMgYW55KS5fX3dyYXBwZWQgPSB0cnVlO1xuXG4gIHJldHVybiBmdW5jO1xufVxuXG5mdW5jdGlvbiBtYXliZVdyYXAob3JpZ2luYWw6IEZ1bmN0aW9uKSB7XG4gIGlmICgnX193cmFwcGVkJyBpbiBvcmlnaW5hbCkgcmV0dXJuIG9yaWdpbmFsO1xuXG4gIHJldHVybiBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvbWl4aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxVQUFULFFBQTJCLDJCQUEzQjtBQUNBLFNBQVMsSUFBVCxFQUFlLE1BQWYsUUFBNkIsZUFBN0I7QUFDQSxTQUVFLFNBRkYsRUFHRSxZQUhGLEVBSUUsV0FKRixRQUtPLFVBTFA7QUFPQSxTQUFTLElBQVQsUUFBcUIsU0FBckI7QUFHQSxNQUFNLEVBQUUsT0FBRixLQUFjLEtBQXBCO0FBRUEsT0FBTyxNQUFNLGFBQWEsc0NBQW5CO0FBQ1AsT0FBTyxNQUFNLFlBQVksc0NBQWxCO0FBRVAsT0FBTSxNQUFnQixVQUFoQixDQUEwQjtBQUFoQyxrQkFBQTtBQUNFLGFBQUEsc0NBQUEsSUFBeUMsSUFBekM7QUFFRDtBQUgrQjtBQUtoQyxPQUFNLE1BQWdCLFNBQWhCLENBQXlCO0FBQS9CLGtCQUFBO0FBQ0UsYUFBQSxzQ0FBQSxJQUF5QyxJQUF6QztBQUVEO0FBSDhCO0FBWS9CLE9BQU0sTUFBTyxLQUFQLENBQVk7QUE0QmhCLGdCQUFZLFVBQVosRUFBb0MsTUFBcEMsRUFBbUQ7QUEzQjNDLGFBQUEsVUFBQSxHQUF3QixJQUF4QixDQTJCMkMsQ0EzQk47QUFDckMsYUFBQSxzQkFBQSxHQUFtQyxFQUFuQztBQUNBLGFBQUEsZ0JBQUEsR0FBNkIsRUFBN0I7QUFDQSxhQUFBLFlBQUEsR0FBd0IsRUFBeEI7QUF5Qk4sYUFBSyxNQUFMLENBQVksVUFBWjtBQUNBLGFBQUssWUFBTCxDQUFrQixJQUFsQixDQUF1QixHQUFHLE1BQTFCO0FBQ0Q7QUF6QkQsV0FBTyxNQUFQLENBQWMsR0FBRyxJQUFqQixFQUE2QztBQUMzQyxZQUFJLGFBQWEsS0FBSyxLQUFLLE1BQUwsR0FBYyxDQUFuQixDQUFqQjtBQUVBLFlBQUksS0FBSyxNQUFMLEtBQWdCLENBQXBCLEVBQXVCO0FBQ3JCLG1CQUFPLElBQUksSUFBSixDQUFTLEVBQVQs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ZixFQUFxQixJQUFyQixDQUFQO0FBQ0QsU0FGRCxTQUVVO0FBQ1IsaUJBQUssTUFBTCxHQUFjLFNBQWQ7QUFDRDtBQUNGLEtBWEQ7QUFZRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENMQVNTX01FVEEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IGRpY3QsIGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IEdsaW1tZXJPYmplY3QsIHtcbiAgR2xpbW1lck9iamVjdEZhY3RvcnksXG4gIENsYXNzTWV0YSxcbiAgSW5zdGFuY2VNZXRhLFxuICB0dXJib2NoYXJnZSxcbn0gZnJvbSAnLi9vYmplY3QnO1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBEaWN0IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmV4cG9ydCBjb25zdCBERVNDUklQVE9SID0gJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYyc7XG5leHBvcnQgY29uc3QgQkxVRVBSSU5UID0gJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZXNjcmlwdG9yIHtcbiAgJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYycgPSB0cnVlO1xuICBhYnN0cmFjdCBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmx1ZXByaW50IHtcbiAgJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNScgPSB0cnVlO1xuICBhYnN0cmFjdCBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbnMge1xuICBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsO1xuICBtZXJnZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmc7XG4gIF9zdXBlcj86IEZ1bmN0aW9uO1xuICBbaW5kZXg6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIE1peGluIHtcbiAgcHJpdmF0ZSBleHRlbnNpb25zOiBEaWN0PGFueT4gPSBudWxsIGFzIGFueTsgLy8gYXNzaWduZWQgYmVmb3JlIHVzZWRcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZGVwZW5kZW5jaWVzOiBNaXhpbltdID0gW107XG5cbiAgc3RhdGljIGNyZWF0ZSguLi5hcmdzOiAoTWl4aW4gfCBFeHRlbnNpb25zKVtdKSB7XG4gICAgbGV0IGV4dGVuc2lvbnMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgW10pO1xuICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9ucyBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIGFyZ3MgYXMgTWl4aW5bXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkZXBzID0gYXJncy5zbGljZSgwLCAtMSkubWFwKHRvTWl4aW4pO1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKGV4dGVuc2lvbnMgYXMgRXh0ZW5zaW9ucywgZGVwcyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1peGlucyhvYmo6IGFueSk6IE1peGluW10ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBbXTtcblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIGlmICghbWV0YSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIG1ldGEuZ2V0QXBwbGllZE1peGlucygpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZXh0ZW5zaW9uczogRXh0ZW5zaW9ucywgbWl4aW5zOiBNaXhpbltdKSB7XG4gICAgdGhpcy5yZW9wZW4oZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCguLi5taXhpbnMpO1xuICB9XG5cbiAgZGV0ZWN0KG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gb2JqLmRlcGVuZGVuY2llcy5pbmRleE9mKHRoaXMpICE9PSAtMTtcbiAgICB9XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICByZXR1cm4gISFtZXRhICYmIG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpO1xuICB9XG5cbiAgcmVvcGVuKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMpIHtcbiAgICBpZiAodGhpcy5leHRlbnNpb25zKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKHRvTWl4aW4odGhpcy5leHRlbnNpb25zKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IGNvbmNhdDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3Q29uY2F0ID0gZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdDb25jYXQpKSB7XG4gICAgICAgIGNvbmNhdCA9IChyYXdDb25jYXQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd0NvbmNhdCA9PT0gbnVsbCB8fCByYXdDb25jYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25jYXQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmNhdCA9IFtyYXdDb25jYXQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGNvbmNhdDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdtZXJnZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICBsZXQgbWVyZ2VkOiBzdHJpbmdbXTtcbiAgICAgIGxldCByYXdNZXJnZWQgPSBleHRlbnNpb25zLm1lcmdlZFByb3BlcnRpZXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHJhd01lcmdlZCkpIHtcbiAgICAgICAgbWVyZ2VkID0gKHJhd01lcmdlZCBhcyBzdHJpbmdbXSkuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAocmF3TWVyZ2VkID09PSBudWxsIHx8IHJhd01lcmdlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1lcmdlZCA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkID0gW3Jhd01lcmdlZCBhcyBzdHJpbmddO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gbWVyZ2VkO1xuICAgIH1cblxuICAgIGxldCBub3JtYWxpemVkOiBEaWN0PEJsdWVwcmludD4gPSBPYmplY3Qua2V5cyhleHRlbnNpb25zKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBleHRlbnNpb25zW2tleV07XG5cbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBNZXRob2RCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBpZiAodmFsdWUgJiYgQkxVRVBSSU5UIGluIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgRGF0YUJsdWVwcmludCh7IHZhbHVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIGRpY3Q8Qmx1ZXByaW50PigpKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IGRpY3Q8YW55PigpO1xuICAgIGFzc2lnbih0aGlzLmV4dGVuc2lvbnMsIHR1cmJvY2hhcmdlKG5vcm1hbGl6ZWQpKTtcbiAgfVxuXG4gIGFwcGx5KHRhcmdldDogYW55KSB7XG4gICAgbGV0IG1ldGE6IENsYXNzTWV0YSA9ICh0YXJnZXRbQ0xBU1NfTUVUQV0gPSB0YXJnZXRbQ0xBU1NfTUVUQV0gfHwgbmV3IENsYXNzTWV0YSgpKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5hcHBseSh0YXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyh0YXJnZXQsIHRhcmdldCwgbWV0YSk7XG4gICAgbWV0YS5hZGRNaXhpbih0aGlzKTtcbiAgICBtZXRhLnNlYWwoKTtcbiAgICBtZXRhLnJlc2VhbCh0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZShPcmlnaW5hbDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIE9yaWdpbmFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3JpZ2luYWwucHJvdG90eXBlKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGUoT3JpZ2luYWwpKTtcbiAgICB0aGlzLmV4dGVuZFByb3RvdHlwZU9udG8oT3JpZ2luYWwsIE9yaWdpbmFsKTtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFN1YmNsYXNzLnByb3RvdHlwZSwgUGFyZW50LnByb3RvdHlwZSwgU3ViY2xhc3NbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKHRoaXMpO1xuICB9XG5cbiAgZXh0ZW5kU3RhdGljKFRhcmdldDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhUYXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhUYXJnZXQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihUYXJnZXQpLCBUYXJnZXRbQ0xBU1NfTUVUQV1bQ0xBU1NfTUVUQV0pO1xuICAgIFRhcmdldFtDTEFTU19NRVRBXS5hZGRTdGF0aWNNaXhpbih0aGlzKTtcbiAgfVxuXG4gIG1lcmdlUHJvcGVydGllcyh0YXJnZXQ6IE9iamVjdCwgcGFyZW50OiBEaWN0PERpY3Q+LCBtZXRhOiBDbGFzc01ldGEpIHtcbiAgICBpZiAobWV0YS5oYXNBcHBsaWVkTWl4aW4odGhpcykpIHJldHVybjtcbiAgICBtZXRhLmFkZEFwcGxpZWRNaXhpbih0aGlzKTtcblxuICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRNZXJnZWRQcm9wZXJ0eShrLCBwYXJlbnRba10pKTtcbiAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMuZm9yRWFjaChrID0+IG1ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoaywgW10pKTtcblxuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKFxuICAgICAgdGFyZ2V0LFxuICAgICAgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnXG4gICAgKTtcbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IG1ldGEuZ2V0TWVyZ2VkUHJvcGVydGllcygpIH0pLmRlZmluZSh0YXJnZXQsICdtZXJnZWRQcm9wZXJ0aWVzJyk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLmV4dGVuc2lvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGxldCBleHRlbnNpb246IEJsdWVwcmludCA9IHRoaXMuZXh0ZW5zaW9ucyFba2V5XTtcbiAgICAgIGxldCBkZXNjID0gZXh0ZW5zaW9uLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXkgYXMgc3RyaW5nLCBtZXRhKTtcbiAgICAgIGRlc2MuZGVmaW5lKHRhcmdldCwga2V5IGFzIHN0cmluZywgcGFyZW50KTtcbiAgICB9KTtcblxuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogUk9PVCB9KS5kZWZpbmUodGFyZ2V0LCAnX3N1cGVyJyBhcyBzdHJpbmcpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEV4dGVuc2lvbiA9IE1peGluIHwgRXh0ZW5zaW9ucztcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZDxUIGV4dGVuZHMgR2xpbW1lck9iamVjdD4oXG4gIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4sXG4gIC4uLmV4dGVuc2lvbnM6IEV4dGVuc2lvbltdXG4pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+IHtcbiAgbGV0IFN1cGVyID0gUGFyZW50IGFzIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuXG4gIGxldCBTdWJjbGFzcyA9IGNsYXNzIGV4dGVuZHMgU3VwZXIge307XG4gIFN1YmNsYXNzW0NMQVNTX01FVEFdID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQoUGFyZW50W0NMQVNTX01FVEFdKTtcblxuICBsZXQgbWl4aW5zID0gZXh0ZW5zaW9ucy5tYXAodG9NaXhpbik7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5hZGRTdWJjbGFzcyhTdWJjbGFzcyBhcyBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KTtcbiAgbWl4aW5zLmZvckVhY2gobSA9PiBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbihtKSk7XG5cbiAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudCk7XG5cbiAgcmV0dXJuIFN1YmNsYXNzIGFzIGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGlua1N1YmNsYXNzZXMoUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5nZXRTdWJjbGFzc2VzKCkuZm9yRWFjaCgoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pID0+IHtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5yZXNldChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUGFyZW50LnByb3RvdHlwZSk7XG5cbiAgICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MsIFBhcmVudCk7XG5cbiAgICAvLyByZWN1cnNlIGludG8gc3ViLXN1YmNsYXNzZXNcbiAgICByZWxpbmtTdWJjbGFzc2VzKFN1YmNsYXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b01peGluKGV4dGVuc2lvbjogRXh0ZW5zaW9uKTogTWl4aW4ge1xuICBpZiAoZXh0ZW5zaW9uIGluc3RhbmNlb2YgTWl4aW4pIHJldHVybiBleHRlbnNpb247XG4gIGVsc2UgcmV0dXJuIG5ldyBNaXhpbihleHRlbnNpb24gYXMgT2JqZWN0LCBbXSk7XG59XG5cbmNsYXNzIFZhbHVlRGVzY3JpcHRvciBleHRlbmRzIERlc2NyaXB0b3Ige1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHdyaXRhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgdmFsdWU6IGFueTtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICB3cml0YWJsZSA9IHRydWUsXG4gICAgdmFsdWUsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLndyaXRhYmxlID0gd3JpdGFibGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgX2hvbWU/OiBhbnkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICB3cml0YWJsZTogdGhpcy53cml0YWJsZSxcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgd3JpdGFibGUgPSB0cnVlLFxuICAgIHZhbHVlLFxuICB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBsZXQgeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9ID0gdGhpcztcblxuICAgIGlmIChjbGFzc01ldGEuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5IGFzIHN0cmluZykpIHtcbiAgICAgIGNsYXNzTWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nLCB2YWx1ZSk7XG4gICAgICB2YWx1ZSA9IGNsYXNzTWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKTtcbiAgICB9IGVsc2UgaWYgKGNsYXNzTWV0YS5oYXNNZXJnZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgY2xhc3NNZXRhLmFkZE1lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcsIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldE1lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjY2Vzc29yQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIGdldDogKCkgPT4gYW55O1xuICBzZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIGdldCxcbiAgICBzZXQsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvciAmIHsgZ2V0OiBhbnk7IHNldDogYW55IH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy5nZXQgPSBnZXQ7XG4gICAgdGhpcy5zZXQgPSBzZXQ7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gbmV3IFZhbHVlRGVzY3JpcHRvcih7XG4gICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgZ2V0OiB0aGlzLmdldCxcbiAgICAgIHNldDogdGhpcy5zZXQsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgTWV0aG9kRGVzY3JpcHRvciBleHRlbmRzIFZhbHVlRGVzY3JpcHRvciB7XG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGhvbWU6IE9iamVjdCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB3cmFwTWV0aG9kKGhvbWUsIGtleSwgdGhpcy52YWx1ZSk7XG4gICAgc3VwZXIuZGVmaW5lKHRhcmdldCwga2V5LCBob21lKTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBEYXRhQmx1ZXByaW50IHtcbiAgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogTWV0aG9kRGVzY3JpcHRvciB7XG4gICAgbGV0IGRlc2MgPSBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBjbGFzc01ldGEpO1xuICAgIHJldHVybiBuZXcgTWV0aG9kRGVzY3JpcHRvcihkZXNjIGFzIFByb3BlcnR5RGVzY3JpcHRvcik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBNZXRob2QoaG9tZTogRGljdCwgbWV0aG9kTmFtZTogc3RyaW5nLCBvcmlnaW5hbDogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpIHtcbiAgaWYgKCEoKG1ldGhvZE5hbWUgYXMgc3RyaW5nKSBpbiBob21lKSkgcmV0dXJuIG1heWJlV3JhcChvcmlnaW5hbCk7XG5cbiAgbGV0IHN1cGVyTWV0aG9kID0gaG9tZVttZXRob2ROYW1lXTtcblxuICBsZXQgZnVuYyA9IGZ1bmN0aW9uKHRoaXM6IEdsaW1tZXJPYmplY3QsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKCF0aGlzKSByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG5cbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBzdXBlck1ldGhvZCBhcyBhbnk7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgKGZ1bmMgYXMgYW55KS5fX3dyYXBwZWQgPSB0cnVlO1xuXG4gIHJldHVybiBmdW5jO1xufVxuXG5mdW5jdGlvbiBtYXliZVdyYXAob3JpZ2luYWw6IEZ1bmN0aW9uKSB7XG4gIGlmICgnX193cmFwcGVkJyBpbiBvcmlnaW5hbCkgcmV0dXJuIG9yaWdpbmFsO1xuXG4gIHJldHVybiBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -299,2 +299,2 @@ import { Meta, PropertyReference } from '@glimmer/object-reference';

GlimmerObject.isClass = true;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQUFBTyxTQUFFLEFBQUksTUFBeUIsQUFBaUIsQUFBRSx5QkFBTSxBQUEyQixBQUFDO0FBQzNGLEFBQU8sU0FBUSxBQUFJLE1BQUUsQUFBTSxRQUFFLEFBQWMsQUFBRSxzQkFBTSxBQUFlLEFBQUM7QUFDbkUsQUFBTyxTQUFTLEFBQU0sVUFBSSxBQUFXLGFBQUUsQUFBTyxTQUFFLEFBQWdCLGtCQUFFLEFBQVUsQUFBRSxrQkFBTSxBQUFTLEFBQUM7QUFFOUYsTUFBTSxFQUFFLEFBQU8sQUFBRSxZQUFHLEFBQUssQUFBQztBQUUxQixBQUFPLFNBQUUsQUFBSSxBQUFFLFlBQU0sQUFBUyxBQUFDO0FBRS9CLEFBQU8sU0FBRSxBQUFJLEFBQUUsWUFBTSxBQUFvQixBQUFDO0FBRTFDLEFBQU0sT0FBQyxNQUFNLEFBQVcsY0FBRyxTQUFTLEFBQVcsY0FBSSxDQUFDLEFBQUM7QUFFckQsTUFBTSxBQUFVLGFBQUcsQUFBc0MsQUFBQztBQXdCMUQsQUFBTSxnQkFBVSxBQUFXLFlBQUksQUFBTTtBQUNuQyxBQUFzQjtBQUN0QixBQUF5QjtBQUN6QixXQUFPLEFBQUcsQUFBQyxBQUNiO0FBQUM7QUFFRCxNQUFlLEFBQVcsbUJBQVEsQUFBSTtBQUNwQyxBQUFtQix3QkFBQyxHQUFHLEFBQVk7QUFDakMsY0FBTSxJQUFJLEFBQUssTUFBQyxBQUFnRCxBQUFDLEFBQUMsQUFDcEU7QUFBQyxBQUNGOztBQUVELEFBQU0sYUFBTyxBQUFTO0FBQXRCO0FBQ1UsYUFBYyxpQkFBRyxBQUFJLEFBQThCLEFBQUM7QUFDcEQsYUFBZ0IsbUJBQUcsQUFBSSxBQUFPLEFBQUM7QUFDL0IsYUFBc0IseUJBQUcsQUFBSSxBQUFTLEFBQUM7QUFDdkMsYUFBeUIsNEJBQUcsQUFBSyxBQUFD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eyBNZXRhLCBJbm5lclJlZmVyZW5jZUZhY3RvcnksIFByb3BlcnR5UmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBEaWN0LCBkaWN0LCBhc3NpZ24sIGluaXRpYWxpemVHdWlkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBNaXhpbiwgZXh0ZW5kIGFzIGV4dGVuZENsYXNzLCB0b01peGluLCByZWxpbmtTdWJjbGFzc2VzLCB3cmFwTWV0aG9kIH0gZnJvbSAnLi9taXhpbic7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmltcG9ydCB7IFJPT1QgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYnVtcCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbmV4cG9ydCBjb25zdCBFTVBUWV9DQUNIRSA9IGZ1bmN0aW9uIEVNUFRZX0NBQ0hFKCkge307XG5cbmNvbnN0IENMQVNTX01FVEEgPSAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JztcblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RXaXRoTWl4aW5zIHtcbiAgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YTtcbiAgX21ldGE6IE1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VXaXRoTWl4aW5zIHtcbiAgY29uc3RydWN0b3I6IE9iamVjdFdpdGhNaXhpbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4ge1xuICBuZXcgPFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgZXh0ZW5kKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGV4dGVuZDxUPihleHRlbnNpb246IFQpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPjtcbiAgZXh0ZW5kKC4uLmV4dGVuc2lvbnM6IE9iamVjdFtdKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8T2JqZWN0PjtcbiAgY3JlYXRlPFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgcmVvcGVuPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkO1xuICByZW9wZW5DbGFzczxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Q7XG4gIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkO1xuICAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogSW5zdGFuY2VNZXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVyYm9jaGFyZ2U8VD4ob2JqOiBUKTogVCB7XG4gIC8vIGZ1bmN0aW9uIER1bW15KCkge31cbiAgLy8gRHVtbXkucHJvdG90eXBlID0gb2JqO1xuICByZXR1cm4gb2JqO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBTZWFsZWRNZXRhIGV4dGVuZHMgTWV0YSB7XG4gIGFkZFJlZmVyZW5jZVR5cGVGb3IoLi4uX2FyZ3M6IGFueVtdKTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IG1vZGlmeSByZWZlcmVuY2UgdHlwZXMgb24gYSBzZWFsZWQgbWV0YScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbGFzc01ldGEge1xuICBwcml2YXRlIHJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgcHJpdmF0ZSBwcm9wZXJ0eU1ldGFkYXRhID0gZGljdDxhbnk+KCk7XG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gIHByaXZhdGUgaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcbiAgcHJpdmF0ZSBoYXNNZXJnZWRQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHByaXZhdGUgbWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgYXBwbGllZE1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN0YXRpY01peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN1YmNsYXNzZXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSA9IFtdO1xuICBwcml2YXRlIHNsb3RzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgSW5zdGFuY2VNZXRhQ29uc3RydWN0b3I6IE9wdGlvbjx0eXBlb2YgTWV0YT4gPSBudWxsO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICBsZXQgbWV0YSA9IG5ldyB0aGlzKCk7XG4gICAgbWV0YS5yZXNldChwYXJlbnQpO1xuICAgIHJldHVybiBtZXRhO1xuICB9XG5cbiAgc3RhdGljIGZvcihvYmplY3Q6IE9iamVjdFdpdGhNaXhpbnMgfCBJbnN0YW5jZVdpdGhNaXhpbnMpOiBPcHRpb248Q2xhc3NNZXRhPiB7XG4gICAgaWYgKENMQVNTX01FVEEgaW4gb2JqZWN0KSByZXR1cm4gKG9iamVjdCBhcyBPYmplY3RXaXRoTWl4aW5zKVtDTEFTU19NRVRBXTtcbiAgICBlbHNlIGlmIChvYmplY3QuY29uc3RydWN0b3IpXG4gICAgICByZXR1cm4gKG9iamVjdCBhcyBJbnN0YW5jZVdpdGhNaXhpbnMpLmNvbnN0cnVjdG9yW0NMQVNTX01FVEFdIHx8IG51bGw7XG4gICAgZWxzZSByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGluaXQob2JqZWN0OiBHbGltbWVyT2JqZWN0LCBhdHRyczogT3B0aW9uPE9iamVjdD4pIHtcbiAgICBpZiAodHlwZW9mIGF0dHJzICE9PSAnb2JqZWN0JyB8fCBhdHRycyA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgbGV0IGNvbmNhdFByb3BzID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBjb25jYXRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBjb25jYXQgPSBjb25jYXRQcm9wc1twcm9wXS5zbGljZSgpO1xuICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGNvbmNhdC5jb25jYXQoYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgbGV0IG1lcmdlZFByb3BzID0gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBtZXJnZWRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIG1lcmdlZFByb3BzW3Byb3BdKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBhc3NpZ24obWVyZ2VkLCBhdHRyc1twcm9wXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLnN0YXRpY01peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGFkZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMubWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgZ2V0U3RhdGljTWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucztcbiAgfVxuXG4gIGdldE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5taXhpbnM7XG4gIH1cblxuICBhZGRBcHBsaWVkTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5hcHBsaWVkTWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgaGFzQXBwbGllZE1peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpZWRNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICB9XG5cbiAgZ2V0QXBwbGllZE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zO1xuICB9XG5cbiAgaGFzU3RhdGljTWl4aW4obWl4aW46IE1peGluKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUFsbE1peGlucyhTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0TWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0U3RhdGljTWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kU3RhdGljKFN1YmNsYXNzKSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG5cbiAgYWRkU3ViY2xhc3MoY29uc3RydWN0b3I6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLnN1YmNsYXNzZXMucHVzaChjb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBnZXRTdWJjbGFzc2VzKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViY2xhc3NlcztcbiAgfVxuXG4gIGFkZFByb3BlcnR5TWV0YWRhdGEocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgfVxuXG4gIG1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV07XG4gIH1cblxuICBhZGRSZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcsIHR5cGU6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gPSB0eXBlO1xuICB9XG5cbiAgYWRkU2xvdEZvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgdGhpcy5zbG90cy5wdXNoKHByb3BlcnR5KTtcbiAgfVxuXG4gIGhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmICgocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCB2YWwgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldLmNvbmNhdCh2YWx1ZSk7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaGFzTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWVyZ2VkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogT2JqZWN0KSB7XG4gICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IHBhc3NlZCBpbiBcXGAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgICl9XFxgIGFzIHRoZSB2YWx1ZSBmb3IgXFxgZm9vXFxgIGJ1dCBcXGBmb29cXGAgY2Fubm90IGJlIGFuIEFycmF5YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzICYmIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSBtZXJnZU1lcmdlZFByb3BlcnRpZXMoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlID09PSBudWxsID8gdmFsdWUgOiB2YWx1ZSB8fCB7fTtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZlcmVuY2VUeXBlcygpOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gIH1cblxuICBnZXRQcm9wZXJ0eU1ldGFkYXRhKCk6IERpY3Q8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGEgPSBkaWN0KCk7XG4gICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHBhcmVudC5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0gPSBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXS5zbGljZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzTWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50Lm1lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdID0gYXNzaWduKHt9LCBwYXJlbnQubWVyZ2VkUHJvcGVydGllc1twcm9wXSk7XG4gICAgICB9XG5cbiAgICAgIGFzc2lnbih0aGlzLnJlZmVyZW5jZVR5cGVzLCBwYXJlbnQucmVmZXJlbmNlVHlwZXMpO1xuICAgICAgYXNzaWduKHRoaXMucHJvcGVydHlNZXRhZGF0YSwgcGFyZW50LnByb3BlcnR5TWV0YWRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2VhbChvYmo6IE9iamVjdCkge1xuICAgIGxldCBtZXRhID0gTWV0YS5mb3Iob2JqKTtcbiAgICBsZXQgZnJlc2ggPSBuZXcgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciEob2JqLCB7fSk7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzID0gbWV0YS5nZXRSZWZlcmVuY2VUeXBlcygpO1xuICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcblxuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihyZWZlcmVuY2VUeXBlcywgdGhpcy5yZWZlcmVuY2VUeXBlcykpO1xuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihzbG90cywgZnJlc2guZ2V0U2xvdHMoKSkpO1xuICB9XG5cbiAgc2VhbCgpIHtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXM6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+ID0gdHVyYm9jaGFyZ2UoXG4gICAgICBhc3NpZ24oe30sIHRoaXMucmVmZXJlbmNlVHlwZXMpXG4gICAgKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMubWVyZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyAmJiAhdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbigpIHt9O1xuICAgIH1cblxuICAgIGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cbiAgICBjbGFzcyBTbG90cyB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc2xvdHMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICB0aGlzW25hbWVdID0gRU1QVFlfQ0FDSEU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIFNlYWxlZE1ldGEge1xuICAgICAgcHJvdGVjdGVkIHNsb3RzOiBTbG90cyA9IG5ldyBTbG90cygpO1xuICAgICAgcHVibGljIHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHJlZmVyZW5jZVR5cGVzO1xuXG4gICAgICBnZXRSZWZlcmVuY2VUeXBlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgICB9XG5cbiAgICAgIHJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZyk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldIHx8IFByb3BlcnR5UmVmZXJlbmNlO1xuICAgICAgfVxuXG4gICAgICBnZXRTbG90cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHM7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHR1cmJvY2hhcmdlKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWVyZ2VkUHJvcGVydGllcyhhdHRyczogT2JqZWN0LCBwYXJlbnQ6IE9iamVjdCkge1xuICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBwYXJlbnQpO1xuXG4gIGZvciAobGV0IHByb3AgaW4gYXR0cnMpIHtcbiAgICBpZiAocHJvcCBpbiBwYXJlbnQgJiYgdHlwZW9mIHBhcmVudFtwcm9wXSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgYXR0cnNbcHJvcF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCB3cmFwcGVkID0gd3JhcE1ldGhvZChwYXJlbnQsIHByb3AsIGF0dHJzW3Byb3BdKTtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IHdyYXBwZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IGF0dHJzW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZU1ldGEgZXh0ZW5kcyBDbGFzc01ldGEge1xuICBwdWJsaWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YSA9IENsYXNzTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPEluc3RhbmNlTWV0YT4pOiBJbnN0YW5jZU1ldGEge1xuICAgIHJldHVybiBzdXBlci5mcm9tUGFyZW50KHBhcmVudCkgYXMgSW5zdGFuY2VNZXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBJbnN0YW5jZU1ldGEpIHtcbiAgICBzdXBlci5yZXNldChwYXJlbnQpO1xuICAgIGlmIChwYXJlbnQpIHRoaXNbQ0xBU1NfTUVUQV0ucmVzZXQocGFyZW50W0NMQVNTX01FVEFdKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgc3VwZXIuc2VhbCgpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsaW1tZXJPYmplY3Qge1xuICBzdGF0aWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuICBzdGF0aWMgaXNDbGFzcyA9IHRydWU7XG5cbiAgc3RhdGljIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcblxuICBzdGF0aWMgZXh0ZW5kKHRoaXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIC4uLmV4dGVuc2lvbnM6IGFueVtdKSB7XG4gICAgcmV0dXJuIGV4dGVuZENsYXNzKHRoaXMsIC4uLmV4dGVuc2lvbnMpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShhdHRycz86IE9iamVjdCB8IG51bGwpOiBHbGltbWVyT2JqZWN0IHtcbiAgICByZXR1cm4gbmV3IHRoaXMoYXR0cnMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRQcm90b3R5cGUodGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG5cbiAgICByZWxpbmtTdWJjbGFzc2VzKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFN0YXRpYyh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIHN0YXRpYyBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgbGV0IHZhbHVlID0gdGhpc1tDTEFTU19NRVRBXS5tZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5KTtcbiAgICBpZiAoIXZhbHVlKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWV0YUZvclByb3BlcnR5KCkgY291bGQgbm90IGZpbmQgYSBjb21wdXRlZCBwcm9wZXJ0eSB3aXRoIGtleSAnJHtwcm9wZXJ0eX0nLmBcbiAgICAgICk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBsZXQgbWV0YWRhdGEgPSB0aGlzW0NMQVNTX01FVEFdLmdldFByb3BlcnR5TWV0YWRhdGEoKTtcbiAgICBpZiAoIW1ldGFkYXRhKSByZXR1cm47XG5cbiAgICBmb3IgKGxldCBwcm9wIGluIG1ldGFkYXRhKSB7XG4gICAgICBjYWxsYmFjayhwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgX3N1cGVyID0gUk9PVDtcbiAgX21ldGEgPSBudWxsO1xuICBfZ3VpZCE6IG51bWJlcjsgLy8gU2V0IGJ5IGluaXRpYWxpemVHdWlkKHRoaXMpIGluIGNvbnN0cnVjdG9yXG5cbiAgaW5pdCgpIHt9XG5cbiAgY29uc3RydWN0b3IoYXR0cnM/OiBPYmplY3QgfCBudWxsKSB7XG4gICAgaWYgKGF0dHJzKSBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBHbGltbWVyT2JqZWN0KVtDTEFTU19NRVRBXS5pbml0KHRoaXMsIGF0dHJzIHx8IG51bGwpO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcbiAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXNba2V5XTtcbiAgfVxuXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNba2V5XSA9IHZhbHVlO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMoYXR0cnM6IE9iamVjdCkge1xuICAgIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgYnVtcCgpO1xuICB9XG5cbiAgZGVzdHJveSgpIHt9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsSUFBVCxFQUFzQyxpQkFBdEMsUUFBK0QsMkJBQS9EO0FBQ0EsU0FBUyxJQUFULEVBQWUsTUFBZixFQUF1QixjQUF2QixRQUE2QyxlQUE3QztBQUNBLFNBQWdCLFVBQVUsV0FBMUIsRUFBdUMsT0FBdkMsRUFBZ0QsZ0JBQWhELEVBQWtFLFVBQWxFLFFBQW9GLFNBQXBGO0FBRUEsTUFBTSxFQUFFLE9BQUYsS0FBYyxLQUFwQjtBQUVBLFNBQVMsSUFBVCxRQUFxQixTQUFyQjtBQUVBLFNBQVMsSUFBVCxRQUFxQixvQkFBckI7QUFFQSxPQUFPLE1BQU0sY0FBYyxTQUFTLFdBQVQsR0FBb0IsQ0FBSyxDQUE3QztBQUVQLE1BQU0sYUFBYSxzQ0FBbkI7QUF3QkEsT0FBTSxTQUFVLFdBQVYsQ0FBeUIsR0FBekIsRUFBK0I7QUFDbkM7QUFDQTtBQUNBLFdBQU8sR0FBUDtBQUNEO0FBRUQsTUFBZSxVQUFmLFNBQWtDLElBQWxDLENBQXNDO0FBQ3BDLHdCQUFvQixHQUFHLEtBQXZCLEVBQW1DO0FBQ2pDLGNBQU0sSUFBSSxLQUFKLENBQVUsZ0RBQVYsQ0FBTjtBQUNEO0FBSG1DO0FBTXRDLE9BQU0sTUFBTyxTQUFQLENBQWdCO0FBQXRCLGtCQUFBO0FBQ1UsYUFBQSxjQUFBLEdBQWlCLE1BQWpCO0FBQ0EsYUFBQSxnQkFBQSxHQUFtQixNQUFuQjtBQUNBLGFBQUEsc0JBQUEsR0FBeUIsTUFBekI7QUFDQSxhQUFBLHlCQUFBLEdBQTRCLEtBQTVCO0FBQ0EsYUFBQSxnQkFBQSxHQUFtQixNQUFuQjtBQUNBLGFBQUEsbUJBQUEsR0FBc0IsS0FBdEI7QUFDQSxhQUFBLE1BQUEsR0FBa0IsRUFBbEI7QUFDQSxhQUFBLGFBQUEsR0FBeUIsRUFBekI7QUFDQSxhQUFBLFlBQUEsR0FBd0IsRUFBeEI7QUFDQSxhQUFBLFVBQUEs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TyxlQUFQLENBQXVCLFFBQXZCLEVBQXVDO0FBQ3JDLFlBQUksUUFBUSxLQUFLLFVBQUwsRUFBaUIsbUJBQWpCLENBQXFDLFFBQXJDLENBQVo7QUFDQSxZQUFJLENBQUMsS0FBTCxFQUNFLE1BQU0sSUFBSSxLQUFKLENBQ0osa0VBQWtFLFFBQVEsSUFEdEUsQ0FBTjtBQUdGLGVBQU8sS0FBUDtBQUNEO0FBRUQsV0FBTyxvQkFBUCxDQUE0QixRQUE1QixFQUFvRTtBQUNsRSxZQUFJLFdBQVcsS0FBSyxVQUFMLEVBQWlCLG1CQUFqQixFQUFmO0FBQ0EsWUFBSSxDQUFDLFFBQUwsRUFBZTtBQUVmLGFBQUssSUFBSSxJQUFULElBQWlCLFFBQWpCLEVBQTJCO0FBQ3pCLHFCQUFTLElBQVQsRUFBZSxTQUFTLElBQVQsQ0FBZjtBQUNEO0FBQ0Y7QUFNRCxXQUFJLENBQUs7QUFVVCxRQUFJLEdBQUosRUFBZTtBQUNiLGVBQU8sS0FBSyxHQUFMLENBQVA7QUFDRDtBQUVELFFBQUksR0FBSixFQUFpQixLQUFqQixFQUEyQjtBQUN6QixhQUFLLEdBQUwsSUFBWSxLQUFaO0FBQ0E7QUFDRDtBQUVELGtCQUFjLEtBQWQsRUFBMkI7QUFDekIsZUFBTyxJQUFQLEVBQWEsS0FBYjtBQUNBO0FBQ0Q7QUFFRCxjQUFPLENBQUs7QUE1RW9CO0FBR3pCLGNBQUEsc0NBQUEsSUFBdUQsYUFBYSxVQUFiLENBQXdCLElBQXhCLENBQXZEO0FBQ0EsY0FBQSxPQUFBLEdBQVUsSUFBViIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ldGEsIElubmVyUmVmZXJlbmNlRmFjdG9yeSwgUHJvcGVydHlSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IGRpY3QsIGFzc2lnbiwgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IE1peGluLCBleHRlbmQgYXMgZXh0ZW5kQ2xhc3MsIHRvTWl4aW4sIHJlbGlua1N1YmNsYXNzZXMsIHdyYXBNZXRob2QgfSBmcm9tICcuL21peGluJztcblxuY29uc3QgeyBpc0FycmF5IH0gPSBBcnJheTtcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgT3B0aW9uLCBEaWN0IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBidW1wIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcblxuZXhwb3J0IGNvbnN0IEVNUFRZX0NBQ0hFID0gZnVuY3Rpb24gRU1QVFlfQ0FDSEUoKSB7fTtcblxuY29uc3QgQ0xBU1NfTUVUQSA9ICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdFdpdGhNaXhpbnMge1xuICAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogQ2xhc3NNZXRhO1xuICBfbWV0YTogTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZVdpdGhNaXhpbnMge1xuICBjb25zdHJ1Y3RvcjogT2JqZWN0V2l0aE1peGlucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPiB7XG4gIG5ldyA8VT4oYXR0cnM/OiBVKTogR2xpbW1lck9iamVjdCAmIFQgJiBVO1xuICBleHRlbmQoKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8T2JqZWN0PjtcbiAgZXh0ZW5kPFQ+KGV4dGVuc2lvbjogVCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+O1xuICBleHRlbmQoLi4uZXh0ZW5zaW9uczogT2JqZWN0W10pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxPYmplY3Q+O1xuICBjcmVhdGU8VT4oYXR0cnM/OiBVKTogR2xpbW1lck9iamVjdCAmIFQgJiBVO1xuICByZW9wZW48VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQ7XG4gIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkO1xuICBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdDtcbiAgZWFjaENvbXB1dGVkUHJvcGVydHkoY2FsbGJhY2s6IChzOiBzdHJpbmcsIG86IE9iamVjdCkgPT4gdm9pZCk6IHZvaWQ7XG4gICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBJbnN0YW5jZU1ldGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dXJib2NoYXJnZTxUPihvYmo6IFQpOiBUIHtcbiAgLy8gZnVuY3Rpb24gRHVtbXkoKSB7fVxuICAvLyBEdW1teS5wcm90b3R5cGUgPSBvYmo7XG4gIHJldHVybiBvYmo7XG59XG5cbmFic3RyYWN0IGNsYXNzIFNlYWxlZE1ldGEgZXh0ZW5kcyBNZXRhIHtcbiAgYWRkUmVmZXJlbmNlVHlwZUZvciguLi5fYXJnczogYW55W10pOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgbW9kaWZ5IHJlZmVyZW5jZSB0eXBlcyBvbiBhIHNlYWxlZCBtZXRhJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsYXNzTWV0YSB7XG4gIHByaXZhdGUgcmVmZXJlbmNlVHlwZXMgPSBkaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PigpO1xuICBwcml2YXRlIHByb3BlcnR5TWV0YWRhdGEgPSBkaWN0PGFueT4oKTtcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgcHJpdmF0ZSBoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHByaXZhdGUgbWVyZ2VkUHJvcGVydGllcyA9IGRpY3Q8T2JqZWN0PigpO1xuICBwcml2YXRlIGhhc01lcmdlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBhcHBsaWVkTWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgc3RhdGljTWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgc3ViY2xhc3NlczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PltdID0gW107XG4gIHByaXZhdGUgc2xvdHM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyBJbnN0YW5jZU1ldGFDb25zdHJ1Y3RvcjogT3B0aW9uPHR5cGVvZiBNZXRhPiA9IG51bGw7XG5cbiAgc3RhdGljIGZyb21QYXJlbnQocGFyZW50OiBPcHRpb248Q2xhc3NNZXRhPikge1xuICAgIGxldCBtZXRhID0gbmV3IHRoaXMoKTtcbiAgICBtZXRhLnJlc2V0KHBhcmVudCk7XG4gICAgcmV0dXJuIG1ldGE7XG4gIH1cblxuICBzdGF0aWMgZm9yKG9iamVjdDogT2JqZWN0V2l0aE1peGlucyB8IEluc3RhbmNlV2l0aE1peGlucyk6IE9wdGlvbjxDbGFzc01ldGE+IHtcbiAgICBpZiAoQ0xBU1NfTUVUQSBpbiBvYmplY3QpIHJldHVybiAob2JqZWN0IGFzIE9iamVjdFdpdGhNaXhpbnMpW0NMQVNTX01FVEFdO1xuICAgIGVsc2UgaWYgKG9iamVjdC5jb25zdHJ1Y3RvcilcbiAgICAgIHJldHVybiAob2JqZWN0IGFzIEluc3RhbmNlV2l0aE1peGlucykuY29uc3RydWN0b3JbQ0xBU1NfTUVUQV0gfHwgbnVsbDtcbiAgICBlbHNlIHJldHVybiBudWxsO1xuICB9XG5cbiAgaW5pdChvYmplY3Q6IEdsaW1tZXJPYmplY3QsIGF0dHJzOiBPcHRpb248RGljdD4pIHtcbiAgICBpZiAodHlwZW9mIGF0dHJzICE9PSAnb2JqZWN0JyB8fCBhdHRycyA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgbGV0IGNvbmNhdFByb3BzID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBjb25jYXRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBjb25jYXQgPSBjb25jYXRQcm9wc1twcm9wXS5zbGljZSgpO1xuICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGNvbmNhdC5jb25jYXQoYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgbGV0IG1lcmdlZFByb3BzID0gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBtZXJnZWRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIG1lcmdlZFByb3BzW3Byb3BdKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBhc3NpZ24obWVyZ2VkLCBhdHRyc1twcm9wXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLnN0YXRpY01peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGFkZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMubWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgZ2V0U3RhdGljTWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucztcbiAgfVxuXG4gIGdldE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5taXhpbnM7XG4gIH1cblxuICBhZGRBcHBsaWVkTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5hcHBsaWVkTWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgaGFzQXBwbGllZE1peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpZWRNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICB9XG5cbiAgZ2V0QXBwbGllZE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zO1xuICB9XG5cbiAgaGFzU3RhdGljTWl4aW4obWl4aW46IE1peGluKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUFsbE1peGlucyhTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0TWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0U3RhdGljTWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kU3RhdGljKFN1YmNsYXNzKSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG5cbiAgYWRkU3ViY2xhc3MoY29uc3RydWN0b3I6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLnN1YmNsYXNzZXMucHVzaChjb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBnZXRTdWJjbGFzc2VzKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViY2xhc3NlcztcbiAgfVxuXG4gIGFkZFByb3BlcnR5TWV0YWRhdGEocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgfVxuXG4gIG1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV07XG4gIH1cblxuICBhZGRSZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcsIHR5cGU6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gPSB0eXBlO1xuICB9XG5cbiAgYWRkU2xvdEZvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgdGhpcy5zbG90cy5wdXNoKHByb3BlcnR5KTtcbiAgfVxuXG4gIGhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmICgocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCB2YWwgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldLmNvbmNhdCh2YWx1ZSk7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaGFzTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWVyZ2VkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogRGljdCkge1xuICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHRydWU7XG5cbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBwYXNzZWQgaW4gXFxgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICApfVxcYCBhcyB0aGUgdmFsdWUgZm9yIFxcYGZvb1xcYCBidXQgXFxgZm9vXFxgIGNhbm5vdCBiZSBhbiBBcnJheWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcyAmJiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gbWVyZ2VNZXJnZWRQcm9wZXJ0aWVzKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IHZhbHVlIDogdmFsdWUgfHwge307XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVmZXJlbmNlVHlwZXMoKTogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlNZXRhZGF0YSgpOiBEaWN0PGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGE7XG4gIH1cblxuICByZXNldChwYXJlbnQ6IE9wdGlvbjxDbGFzc01ldGE+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlcyA9IGRpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+KCk7XG4gICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhID0gZGljdCgpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gZGljdDxPYmplY3Q+KCk7XG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BdID0gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0uc2xpY2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc01lcmdlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5tZXJnZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wXSA9IGFzc2lnbih7fSwgcGFyZW50Lm1lcmdlZFByb3BlcnRpZXNbcHJvcF0pO1xuICAgICAgfVxuXG4gICAgICBhc3NpZ24odGhpcy5yZWZlcmVuY2VUeXBlcywgcGFyZW50LnJlZmVyZW5jZVR5cGVzKTtcbiAgICAgIGFzc2lnbih0aGlzLnByb3BlcnR5TWV0YWRhdGEsIHBhcmVudC5wcm9wZXJ0eU1ldGFkYXRhKTtcbiAgICB9XG4gIH1cblxuICByZXNlYWwob2JqOiBPYmplY3QpIHtcbiAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKG9iaik7XG4gICAgbGV0IGZyZXNoID0gbmV3IHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IhKG9iaiwge30pO1xuICAgIGxldCByZWZlcmVuY2VUeXBlcyA9IG1ldGEuZ2V0UmVmZXJlbmNlVHlwZXMoKTtcbiAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICB0dXJib2NoYXJnZShhc3NpZ24ocmVmZXJlbmNlVHlwZXMsIHRoaXMucmVmZXJlbmNlVHlwZXMpKTtcbiAgICB0dXJib2NoYXJnZShhc3NpZ24oc2xvdHMsIGZyZXNoLmdldFNsb3RzKCkpKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHR1cmJvY2hhcmdlKFxuICAgICAgYXNzaWduKHt9LCB0aGlzLnJlZmVyZW5jZVR5cGVzKVxuICAgICk7XG4gICAgdHVyYm9jaGFyZ2UodGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLm1lcmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgJiYgIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG5cbiAgICBsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xuXG4gICAgY2xhc3MgU2xvdHMge1xuICAgICAgW2luZGV4OiBzdHJpbmddOiB1bmtub3duO1xuXG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc2xvdHMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICB0aGlzW25hbWVdID0gRU1QVFlfQ0FDSEU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIFNlYWxlZE1ldGEge1xuICAgICAgcHJvdGVjdGVkIHNsb3RzOiBTbG90cyA9IG5ldyBTbG90cygpO1xuICAgICAgcHVibGljIHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHJlZmVyZW5jZVR5cGVzO1xuXG4gICAgICBnZXRSZWZlcmVuY2VUeXBlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgICB9XG5cbiAgICAgIHJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZyk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldIHx8IFByb3BlcnR5UmVmZXJlbmNlO1xuICAgICAgfVxuXG4gICAgICBnZXRTbG90cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHM7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHR1cmJvY2hhcmdlKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWVyZ2VkUHJvcGVydGllcyhhdHRyczogRGljdCwgcGFyZW50OiBEaWN0KSB7XG4gIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIHBhcmVudCk7XG5cbiAgZm9yIChsZXQgcHJvcCBpbiBhdHRycykge1xuICAgIGlmIChwcm9wIGluIHBhcmVudCAmJiB0eXBlb2YgcGFyZW50W3Byb3BdID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBhdHRyc1twcm9wXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwTWV0aG9kKHBhcmVudCwgcHJvcCwgYXR0cnNbcHJvcF0gYXMgYW55KTtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IHdyYXBwZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IGF0dHJzW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZU1ldGEgZXh0ZW5kcyBDbGFzc01ldGEge1xuICBwdWJsaWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YSA9IENsYXNzTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPEluc3RhbmNlTWV0YT4pOiBJbnN0YW5jZU1ldGEge1xuICAgIHJldHVybiBzdXBlci5mcm9tUGFyZW50KHBhcmVudCkgYXMgSW5zdGFuY2VNZXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBJbnN0YW5jZU1ldGEpIHtcbiAgICBzdXBlci5yZXNldChwYXJlbnQpO1xuICAgIGlmIChwYXJlbnQpIHRoaXNbQ0xBU1NfTUVUQV0ucmVzZXQocGFyZW50W0NMQVNTX01FVEFdKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgc3VwZXIuc2VhbCgpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsaW1tZXJPYmplY3Qge1xuICBbaW5kZXg6IHN0cmluZ106IHVua25vd247XG5cbiAgc3RhdGljICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBJbnN0YW5jZU1ldGEgPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChudWxsKTtcbiAgc3RhdGljIGlzQ2xhc3MgPSB0cnVlO1xuXG4gIHN0YXRpYyBleHRlbmQoKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuICBzdGF0aWMgZXh0ZW5kPFQ+KGV4dGVuc2lvbjogVCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQoLi4uZXh0ZW5zaW9uczogT2JqZWN0W10pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgc3RhdGljIGV4dGVuZCh0aGlzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCAuLi5leHRlbnNpb25zOiBhbnlbXSkge1xuICAgIHJldHVybiBleHRlbmRDbGFzcyh0aGlzLCAuLi5leHRlbnNpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUoYXR0cnM/OiBPYmplY3QgfCBudWxsKTogR2xpbW1lck9iamVjdCB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKGF0dHJzKTtcbiAgfVxuXG4gIHN0YXRpYyByZW9wZW48VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQge1xuICAgIHRvTWl4aW4oZXh0ZW5zaW9ucykuZXh0ZW5kUHJvdG90eXBlKHRoaXMpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuXG4gICAgcmVsaW5rU3ViY2xhc3Nlcyh0aGlzKTtcbiAgfVxuXG4gIHN0YXRpYyByZW9wZW5DbGFzczxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRTdGF0aWModGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cblxuICBzdGF0aWMgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIGxldCB2YWx1ZSA9IHRoaXNbQ0xBU1NfTUVUQV0ubWV0YWRhdGFGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgaWYgKCF2YWx1ZSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYG1ldGFGb3JQcm9wZXJ0eSgpIGNvdWxkIG5vdCBmaW5kIGEgY29tcHV0ZWQgcHJvcGVydHkgd2l0aCBrZXkgJyR7cHJvcGVydHl9Jy5gXG4gICAgICApO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IG1ldGFkYXRhID0gdGhpc1tDTEFTU19NRVRBXS5nZXRQcm9wZXJ0eU1ldGFkYXRhKCk7XG4gICAgaWYgKCFtZXRhZGF0YSkgcmV0dXJuO1xuXG4gICAgZm9yIChsZXQgcHJvcCBpbiBtZXRhZGF0YSkge1xuICAgICAgY2FsbGJhY2socHJvcCwgbWV0YWRhdGFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIF9zdXBlciA9IFJPT1Q7XG4gIF9tZXRhID0gbnVsbDtcbiAgX2d1aWQhOiBudW1iZXI7IC8vIFNldCBieSBpbml0aWFsaXplR3VpZCh0aGlzKSBpbiBjb25zdHJ1Y3RvclxuXG4gIGluaXQoKSB7fVxuXG4gIGNvbnN0cnVjdG9yKGF0dHJzPzogT2JqZWN0IHwgbnVsbCkge1xuICAgIGlmIChhdHRycykgYXNzaWduKHRoaXMsIGF0dHJzKTtcbiAgICAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgR2xpbW1lck9iamVjdClbQ0xBU1NfTUVUQV0uaW5pdCh0aGlzLCBhdHRycyB8fCBudWxsKTtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG4gICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzW2tleV07XG4gIH1cblxuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgICBidW1wKCk7XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKGF0dHJzOiBPYmplY3QpIHtcbiAgICBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7fVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -23,2 +23,2 @@ const HAS_SUPER_PATTERN = /\.(_super|call\(this|apply\(this)/;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQUFBaUIsb0JBQUcsQUFBbUMsQUFBQztBQUU5RCxBQUFNLGFBQU8sQUFBYSxnQkFBSTtBQUM1QixRQUFJLEFBQWU7QUFFZixlQUFPLEFBQUksQUFBQyxBQUNkO0FBQUMsS0FGRCxDQUdHLEFBQVEsQUFBRSxXQUNWLEFBQU8sUUFBQyxBQUFhLEFBQUMsaUJBQUcsQ0FBQyxBQUFDLEFBQUM7QUFFakMsUUFBSSxBQUFlLGlCQUFFO0FBQ25CLGVBQU8sU0FBUyxBQUFhLGNBQUMsQUFBYztBQUMxQyxtQkFBTyxBQUFpQixrQkFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQVEsQUFBRSxBQUFDLEFBQUMsQUFDakQ7QUFBQyxBQUFDO0FBQ0g7QUFFRCxXQUFPLFNBQVMsQUFBYTtBQUMzQixlQUFPLEFBQUksQUFBQyxBQUNkO0FBQUMsQUFBQyxBQUNKO0FBQUMsQUFBQyxBQUFFLEFBQUMsQ0FqQndCLEVBQXRCO0FBbUJQLEFBQU0sZ0JBQVUsQUFBSSxLQUFDLEdBQUcsQUFBWSxPQUFHLENBQUM7QUFDdkMsQUFBWSxLQUFDLEFBQVUsYUFBRyxBQUFLLEFBQUM7QUFFakMsQUFBTSxnQkFBVSxBQUFRLFNBQUMsQUFBYztBQUNyQyxRQUFJLEFBQUksS0FBQyxBQUFZLEFBQUMsa0JBQUssQUFBUyxXQUFFO0FBQ3BDLEFBQUksYUFBQyxBQUFZLEFBQUMsZ0JBQUcsQUFBYSxjQUFDLEFBQUksQUFBQyxBQUFDO0FBQzFDO0FBQ0QsV0FBTyxBQUFJLEtBQUMsQUFBWSxBQUFDLEFBQUMsQUFDNUI7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEhBU19TVVBFUl9QQVRURVJOID0gL1xcLihfc3VwZXJ8Y2FsbFxcKHRoaXN8YXBwbHlcXCh0aGlzKS87XG5cbmV4cG9ydCBjb25zdCBjaGVja0hhc1N1cGVyID0gKGZ1bmN0aW9uKCkge1xuICBsZXQgc291cmNlQXZhaWxhYmxlID1cbiAgICBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAgIC50b1N0cmluZygpXG4gICAgICAuaW5kZXhPZigncmV0dXJuIHRoaXMnKSA+IC0xO1xuXG4gIGlmIChzb3VyY2VBdmFpbGFibGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcihmdW5jOiBGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIEhBU19TVVBFUl9QQVRURVJOLnRlc3QoZnVuYy50b1N0cmluZygpKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG59KSgpO1xuXG5leHBvcnQgZnVuY3Rpb24gUk9PVCguLi5fYXJnczogYW55W10pIHt9XG4oUk9PVCBhcyBhbnkpLl9faGFzU3VwZXIgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gIGlmIChmdW5jWydfX2hhc1N1cGVyJ10gPT09IHVuZGVmaW5lZCkge1xuICAgIGZ1bmNbJ19faGFzU3VwZXInXSA9IGNoZWNrSGFzU3VwZXIoZnVuYyk7XG4gIH1cbiAgcmV0dXJuIGZ1bmNbJ19faGFzU3VwZXInXTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxvQkFBb0IsbUNBQTFCO0FBRUEsT0FBTyxNQUFNLGdCQUFpQixZQUFBO0FBQzVCLFFBQUksa0JBQ0YsWUFBQTtBQUNFLGVBQU8sSUFBUDtBQUNELEtBRkQsQ0FHRyxRQUhILEdBSUcsT0FKSCxDQUlXLGFBSlgsSUFJNEIsQ0FBQyxDQUwvQjtBQU9BLFFBQUksZUFBSixFQUFxQjtBQUNuQixlQUFPLFNBQVMsYUFBVCxDQUF1QixJQUF2QixFQUFxQztBQUMxQyxtQkFBTyxrQkFBa0IsSUFBbEIsQ0FBdUIsS0FBSyxRQUFMLEVBQXZCLENBQVA7QUFDRCxTQUZEO0FBR0Q7QUFFRCxXQUFPLFNBQVMsYUFBVCxHQUFzQjtBQUMzQixlQUFPLElBQVA7QUFDRCxLQUZEO0FBR0QsQ0FqQjRCLEVBQXRCO0FBbUJQLE9BQU0sU0FBVSxJQUFWLENBQWUsR0FBRyxLQUFsQixFQUE4QixDQUFJO0FBQ3ZDLEtBQWEsVUFBYixHQUEwQixLQUExQjtBQUVELE9BQU0sU0FBVSxRQUFWLENBQW1CLElBQW5CLEVBQXdDO0FBQzVDLFFBQUksS0FBSyxZQUFMLE1BQXVCLFNBQTNCLEVBQXNDO0FBQ3BDLGFBQUssWUFBTCxJQUFxQixjQUFjLElBQWQsQ0FBckI7QUFDRDtBQUNELFdBQU8sS0FBSyxZQUFMLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3QgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuY29uc3QgSEFTX1NVUEVSX1BBVFRFUk4gPSAvXFwuKF9zdXBlcnxjYWxsXFwodGhpc3xhcHBseVxcKHRoaXMpLztcblxuZXhwb3J0IGNvbnN0IGNoZWNrSGFzU3VwZXIgPSAoZnVuY3Rpb24oKSB7XG4gIGxldCBzb3VyY2VBdmFpbGFibGUgPVxuICAgIGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgICAgLnRvU3RyaW5nKClcbiAgICAgIC5pbmRleE9mKCdyZXR1cm4gdGhpcycpID4gLTE7XG5cbiAgaWYgKHNvdXJjZUF2YWlsYWJsZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gSEFTX1NVUEVSX1BBVFRFUk4udGVzdChmdW5jLnRvU3RyaW5nKCkpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn0pKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBST09UKC4uLl9hcmdzOiBhbnlbXSkge31cbihST09UIGFzIGFueSkuX19oYXNTdXBlciA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzU3VwZXIoZnVuYzogRnVuY3Rpb24gJiBEaWN0KSB7XG4gIGlmIChmdW5jWydfX2hhc1N1cGVyJ10gPT09IHVuZGVmaW5lZCkge1xuICAgIGZ1bmNbJ19faGFzU3VwZXInXSA9IGNoZWNrSGFzU3VwZXIoZnVuYyk7XG4gIH1cbiAgcmV0dXJuIGZ1bmNbJ19faGFzU3VwZXInXTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -5,2 +5,2 @@ export { default, ClassMeta, InstanceMeta } from './lib/object';

export { aliasMethod, alias } from './lib/descriptors';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQUFBTyxTQUFFLEFBQU8sU0FBRSxBQUFTLFdBQUUsQUFBWSxBQUF3QixvQkFBTSxBQUFjLEFBQUM7QUFDdEYsQUFBTyxTQUFFLEFBQVEsVUFBRSxBQUFRLEFBQUUsZ0JBQU0sQUFBZ0IsQUFBQztBQUNwRCxBQUFPLFNBQUUsQUFBSyxPQUFFLEFBQVMsV0FBRSxBQUFPLEFBQUUsZUFBTSxBQUFhLEFBQUM7QUFDeEQsQUFBTyxTQUFFLEFBQVcsYUFBRSxBQUFLLEFBQUUsYUFBTSxBQUFtQixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCwgQ2xhc3NNZXRhLCBJbnN0YW5jZU1ldGEsIEdsaW1tZXJPYmplY3RGYWN0b3J5IH0gZnJvbSAnLi9saWIvb2JqZWN0JztcbmV4cG9ydCB7IGNvbXB1dGVkLCBvYnNlcnZlciB9IGZyb20gJy4vbGliL2NvbXB1dGVkJztcbmV4cG9ydCB7IE1peGluLCBCbHVlcHJpbnQsIHRvTWl4aW4gfSBmcm9tICcuL2xpYi9taXhpbic7XG5leHBvcnQgeyBhbGlhc01ldGhvZCwgYWxpYXMgfSBmcm9tICcuL2xpYi9kZXNjcmlwdG9ycyc7XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFBLE9BQUEsRUFBQSxTQUFBLEVBQUEsWUFBQSxRQUFBLGNBQUE7QUFDQSxTQUFBLFFBQUEsRUFBQSxRQUFBLFFBQUEsZ0JBQUE7QUFDQSxTQUFBLEtBQUEsRUFBQSxTQUFBLEVBQUEsT0FBQSxRQUFBLGFBQUE7QUFDQSxTQUFBLFdBQUEsRUFBQSxLQUFBLFFBQUEsbUJBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0LCBDbGFzc01ldGEsIEluc3RhbmNlTWV0YSwgR2xpbW1lck9iamVjdEZhY3RvcnkgfSBmcm9tICcuL2xpYi9vYmplY3QnO1xuZXhwb3J0IHsgY29tcHV0ZWQsIG9ic2VydmVyIH0gZnJvbSAnLi9saWIvY29tcHV0ZWQnO1xuZXhwb3J0IHsgTWl4aW4sIEJsdWVwcmludCwgdG9NaXhpbiB9IGZyb20gJy4vbGliL21peGluJztcbmV4cG9ydCB7IGFsaWFzTWV0aG9kLCBhbGlhcyB9IGZyb20gJy4vbGliL2Rlc2NyaXB0b3JzJztcbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -183,2 +183,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; }

export function observer() {}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQTBCLDRCQUFFLEFBQUksQUFBRSxZQUFNLEFBQTJCLEFBQUM7QUFDN0UsQUFBTyxTQUFFLEFBQVcsQUFBYSxtQkFBTSxBQUFVLEFBQUM7QUFDbEQsQUFBTyxTQUFjLEFBQVMsQUFBRSxpQkFBTSxBQUFTLEFBQUM7QUF5QmhELEFBQU0sV0FBTyxBQUFrQjs7OytCQUtqQixBQUE0QjtBQUN0QyxBQUFLLEFBQUUsQUFBQyxZQURnQywyRUFBbUIsQUFBRTs7OztxREFGdkQ7O2NBQVEsV0FBVyxBQUFFLEFBQUMsQUFJNUIsQUFBSTtjQUFDLEFBQVEsV0FBRyxBQUFRLEFBQUMsQUFDekIsQUFBSTtjQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQzs7QUFFRCxBQUFVOztpRUFBQyxBQUFlLFNBQUUsQUFBVyxLQUFFLEFBQW9CLFdBQzNELEFBQVM7a0JBQUMsQUFBbUIsb0JBQUMsQUFBRyxLQUFFLEFBQTBCLDJCQUFDLEFBQUcsS0FBRSxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUMvRSxBQUFTO2tCQUFDLEFBQW1CLG9CQUFDLEFBQUcsS0FBRSxBQUFJLEtBQUMsQUFBUSxBQUFDLEFBQUMsQUFDbEQsQUFBUztrQkFBQyxBQUFVLFdBQUMsQUFBRyxBQUFDLEFBQUMsQUFDMUI7ZUFBTyxJQUFJLEFBQVEsU0FBQyxBQUFJLEtBQUMsQUFBUSxBQUFDLEFBQUMsQUFDckMsQUFBQztBQUVELEFBQVE7O2dDQUFDO0FBQ1AsQUFBSTtBQURNLEFBQWU7OzthQUNwQixBQUFJLGFBQVMsQUFBRztBQUFDLEFBQUMsQUFBQyxBQUFFLG1CQUFDLEFBQUMsRUFBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUMsQUFBQyxBQUN6QztTQURZLEFBQUs7ZUFDVixBQUFJLEFBQUMsQUFDZCxBQUFDO0FBRUQsQUFBSTs7cURBQUMsQUFBYyxRQUNqQixBQUFJO2FBQUMsQUFBUSxXQUFHLEFBQU0sQUFBQyxBQUN2QjtlQUFPLEFBQUksQUFBQyxBQUNkLEFBQUM7QUFFRCxBQUFROzsrREFDTjtlQUFPLEFBQUksQUFBQyxBQUNkLEFBQUMsQUFDRjtBQUVEOzs7RUFqQ3VDLEFBQVMsQUFLOUM7O0lBNEJJLEFBQVEsQUFPWjtzQkFBWSxBQUE0QjtBQUZ4Qzs7YUFBc0MsMENBQUcsQUFBSSxBQUFDLEFBRzVDLEFBQUk7YUFBQyxBQUFRLFdBQUcsQUFBUSxBQUFDLEFBQ3pCLEFBQUk7YUFBQyxBQUFVLGFBQUcsQUFBSyxBQUFDLEFBQ3hCLEFBQUk7YUFBQyxBQUFZLGVBQUcsQUFBSyxBQUFDLEFBQzVCLEFBQUM7QUFFRCxBQUFNOztnREFBQyxBQUFpQixXQUFFLEFBQVcsS0FBRSxBQUFZLE1BQ2pELEFBQU07ZUFBQyxBQUFjLGVBQUMsQUFBUyxXQUFFLEFBQUcsS0FBRSxBQUFZLGFBQUMsQUFBSSxNQUFFLEFBQUcsS0FBRSxBQUFJLEtBQUMsQUFBUSxBQUFDLEFBQUMsQUFBQyxBQUNoRixBQUFDLEFBQ0Y7Ozs7OztBQUVELFNBQVMsQUFBWSxhQUNuQixBQUFZLE1BQ1osQUFBb0IsY0FDcEIsQUFBeUIsT0FFekI7UUFBSSxBQUFTLFlBQUcsQUFBcUIsc0JBQUMsQUFBSSxNQUFFLEFBQVksQUFBQyxBQUFDLEFBRTFEO1FBQUksQUFBZ0MsQUFBQyxBQUNyQztRQUFJLEFBQWdDLEFBQUMsQUFFckM7UUFBSSxBQUFJO29CQUNNLEFBQUksQUFDaEIsQUFBWTtzQkFGaUIsQUFFZixBQUFJLEFBQ25CLEFBQUMsQUFFRjtBQUpFLEFBQVU7UUFJUixBQUFHLE1BQUcsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUVwQjtRQUFJLEFBQUcsT0FBSSxBQUFHLElBQUMsQUFBTSxTQUFHLEFBQUMsR0FBRSxBQUN6QixBQUFXO3NCQUFHLHVCQUNaO21CQUFRLEFBQVcsSUFBQyxBQUFJLEtBQUMsQUFBSSxNQUFFLEFBQVksQUFBQyxBQUFDLEFBQy9DLEFBQUMsQUFBQztBQUNIO1dBQU0sQUFDTCxBQUFXO3NCQUFHLEFBQUssTUFBQyxBQUEwQixBQUFDLEFBQ2hEO0FBRUQ7UUFBSSxBQUFHLE1BQUcsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUVwQjtRQUFJLEFBQUcsT0FBSSxBQUFHLElBQUMsQUFBTSxTQUFHLEFBQUMsR0FBRSxBQUN6QixBQUFXO3NCQUFHLHFCQUFvQixBQUFVLE9BQzFDO21CQUFRLEFBQVcsSUFBQyxBQUFJLEtBQUMsQUFBSSxNQUFFLEFBQVksY0FBRSxBQUFLLEFBQUMsQUFBQyxBQUN0RCxBQUFDLEFBQUM7QUFDSDtXQUFNLEFBQ0wsQUFBVztzQkFBRyxBQUFLLE1BQUMsQUFBMEIsQUFBQyxBQUNoRDtBQUVEO1FBQUksQUFBUSxXQUFHLG9CQUNiO1lBQUksQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFJLEFBQUMsT0FBRSxBQUNyQjtnQkFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQUcsSUFBQyxBQUFJLEFBQUMsTUFBQyxBQUFRLEFBQUUsV0FBQyxBQUFZLEFBQUMsQUFBQyxBQUNuRDtnQkFBSSxBQUFJLFNBQUssQUFBVyxhQUFFLE9BQU8sQUFBSSxBQUFDLEFBQ3ZDO0FBRUQ7ZUFBTyxBQUFXLFlBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQ2hDLEFBQUMsQUFBQztBQUVGO1FBQUksQUFBOEIsQUFBQyxBQUVuQztRQUFJLEFBQVcsYUFBRSxBQUNmLEFBQVE7bUJBQUcsa0JBQW9CLEFBQVUsT0FDdkM7Z0JBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFHLElBQUMsQUFBSSxBQUFDLEFBQUMsQUFDMUI7Z0JBQUksQUFBSyxRQUFHLEFBQUksS0FBQyxBQUFRLEFBQUUsQUFBQyxBQUU1QjtnQkFBSSxBQUFHLE1BQUcsQUFBVyxZQUFDLEFBQUksS0FBQyxBQUFJLE1BQUUsQUFBSyxBQUFDLEFBQUMsQUFFeEM7Z0JBQUksQUFBRyxRQUFLLEFBQVMsV0FBRSxBQUNyQixBQUFLO3NCQUFDLEFBQVksQUFBQyxnQkFBRyxBQUFHLEFBQUMsQUFDM0IsQUFDSDtBQUFDLEFBQUM7QUFDSDtXQUFNLEFBQ0wsQUFBUTttQkFBRyxrQkFBb0IsQUFBVSxPQUN2QztnQkFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQUcsSUFBQyxBQUFJLEFBQUMsQUFBQyxBQUMxQjtnQkFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQVEsQUFBRSxBQUFDLEFBQzVCO2dCQUFJLEFBQUssVUFBSyxBQUFTLFdBQUUsQUFBSyxNQUFDLEFBQVksQUFBQyxnQkFBRyxBQUFLLEFBQUMsQUFDdkQsQUFBQyxBQUFDO0FBQ0g7QUFFRDtRQUFJLENBQUMsQUFBUyxhQUFJLEFBQU8sV0FBSSxBQUFTLFdBQUUsQUFDdEMsQUFBSTthQUFDLEFBQUcsTUFBRyxBQUFRLEFBQUMsQUFDcEIsQUFBSTthQUFDLEFBQUcsTUFBRyxBQUFRLEFBQUMsQUFDcEI7ZUFBTyxBQUFJLEFBQUMsQUFDYjtBQUVELEFBQUk7U0FBQyxBQUFHLE1BQUcsWUFDVDtZQUFJLEFBQVMsWUFBRyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQzVCLEFBQUk7YUFBQyxBQUFNLFNBQUcsWUFDWjttQkFBUSxBQUFpQixVQUFDLEFBQUcsSUFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDM0MsQUFBQyxBQUFDO0FBRUY7WUFBSSxBQUNGO21CQUFPLEFBQVEsU0FBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDNUI7a0JBQVMsQUFDUixBQUFJO2lCQUFDLEFBQU0sU0FBRyxBQUFTLEFBQUMsQUFDekIsQUFDSDtBQUFDLEFBQUM7QUFFRixBQUFJO1NBQUMsQUFBRyxNQUFHLFVBQW9CLEFBQVEsS0FDckM7WUFBSSxBQUFTLFlBQUcsQUFBSSxLQUFDLEFBQU0sQUFBQyxBQUM1QixBQUFJO2FBQUMsQUFBTSxTQUFHLFlBQ1o7bUJBQVEsQUFBaUIsVUFBQyxBQUFHLElBQUMsQUFBSSxLQUFDLEFBQUksTUFBRSxBQUFHLEFBQUMsQUFBQyxBQUNoRCxBQUFDLEFBQUM7QUFFRjtZQUFJLEFBQ0Y7bUJBQU8sQUFBUSxTQUFDLEFBQUksS0FBQyxBQUFJLE1BQUUsQUFBRyxBQUFDLEFBQUMsQUFDakM7a0JBQVMsQUFDUixBQUFJO2lCQUFDLEFBQU0sU0FBRyxBQUFTLEFBQUMsQUFDekIsQUFDSDtBQUFDLEFBQUM7QUFFRjtXQUFPLEFBQUksQUFBQyxBQUNkLEFBQUM7O0FBRUQsU0FBUyxBQUFxQixzQkFBQyxBQUFZLFNBQUUsQUFBWSxNQUN2RDtRQUFJLEFBQUUsS0FBRyxBQUFNLE9BQUMsQUFBd0IseUJBQUMsQUFBTyxTQUFFLEFBQUksQUFBQyxBQUFDLEFBQ3hEO1FBQUksQUFBSyxRQUFHLEFBQU0sT0FBQyxBQUFjLGVBQUMsQUFBTyxBQUFDLEFBQUMsQUFDM0M7V0FBTyxPQUFPLEFBQUUsT0FBSyxBQUFXLGVBQUksQUFBSyxVQUFLLEFBQUksTUFBRSxBQUNsRCxBQUFFO2FBQUcsQUFBTSxPQUFDLEFBQXdCLHlCQUFDLEFBQUssT0FBRSxBQUFJLEFBQUMsQUFBQyxBQUNsRCxBQUFLO2dCQUFHLEFBQU0sT0FBQyxBQUFjLGVBQUMsQUFBSyxBQUFDLEFBQUMsQUFDdEM7QUFDRDtXQUFPLEFBQUUsQUFBQyxBQUNaLEFBQUM7O0FBUUQsQUFBTSxnQkFBVSxBQUFRLEFBQUM7QUFDdkI7QUFEMEIsQUFBVzs7O1FBQ2pDLEFBQUksT0FBcUIsQUFBSSxLQUFDLEFBQUcsQUFBRSxBQUFDLEFBQ3hDO1FBQUksQUFBSSxPQUFHLEFBQUksQUFBQyxBQUVoQjtRQUFJLE9BQU8sQUFBSSxTQUFLLEFBQVU7QUFBRSxBQUM5Qjs7MkJBQVcsQUFBaUI7aUJBQXJCLEFBQXNCLEFBQ3RCLEFBQXVELEFBQzdELEFBQUM7QUFEQSxBQUFHLFlBQ0YsQUFBUSxBQUFDLHFCQUFHLEFBQUksQUFBQyxBQUFDLEFBQ3RCO2VBQVUsT0FBTyxBQUFJLFNBQUssQUFBUTtBQUFFLEFBQ25DOztlQUFPLGFBQUksQUFBaUIsa0JBQUMsQUFBMEIsQUFBQyxPQUFDLEFBQVEsQUFBQyxzQkFBRyxBQUFJLEFBQUMsQUFBQyxBQUM1RTtBQUZNLFdBRUEsQUFDTDtjQUFNLElBQUksQUFBUyxVQUFDLEFBQTJELEFBQUMsQUFBQyxBQUNsRixBQUNIO0FBQUM7O0FBRUQsQUFBTSxnQkFBVSxBQUFRLEFBQUMsQUFBRyxBQUFZLFdBQUcsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50LCBNZXRhIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBFTVBUWV9DQUNIRSwgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgRGVzY3JpcHRvciwgQmx1ZXByaW50IH0gZnJvbSAnLi9taXhpbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRHZXRDYWxsYmFjayB7XG4gICgpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjayB7XG4gIChrZXk6IHN0cmluZyk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKHZhbDogYW55KTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcsIHZhbDogYW55KTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkRGVzY3JpcHRvciB7XG4gIGdldD86IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrO1xuICBzZXQ/OiBDb21wdXRlZFNldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRTZXRDYWxsYmFjaztcbn1cblxudHlwZSBDb21wdXRlZEFyZ3VtZW50ID0gQ29tcHV0ZWRHZXRDYWxsYmFjayB8IENvbXB1dGVkRGVzY3JpcHRvcjtcblxuZXhwb3J0IGNsYXNzIENvbXB1dGVkQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yO1xuICBwcml2YXRlIGRlcHM6IHN0cmluZ1tdW107XG4gIHByaXZhdGUgbWV0YWRhdGE6IE9iamVjdCA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3IsIGRlcHM6IHN0cmluZ1tdW10gPSBbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIHRoaXMuZGVwcyA9IGRlcHM7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgY2xhc3NNZXRhLmFkZFJlZmVyZW5jZVR5cGVGb3Ioa2V5LCBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludChrZXksIHRoaXMuZGVwcykpO1xuICAgIGNsYXNzTWV0YS5hZGRQcm9wZXJ0eU1ldGFkYXRhKGtleSwgdGhpcy5tZXRhZGF0YSk7XG4gICAgY2xhc3NNZXRhLmFkZFNsb3RGb3Ioa2V5KTtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkKHRoaXMuYWNjZXNzb3IpO1xuICB9XG5cbiAgcHJvcGVydHkoLi4ucGF0aHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5kZXBzID0gcGF0aHMubWFwKGQgPT4gZC5zcGxpdCgnLicpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG1ldGEob2JqZWN0OiBPYmplY3QpIHtcbiAgICB0aGlzLm1ldGFkYXRhID0gb2JqZWN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdm9sYXRpbGUoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuY2xhc3MgQ29tcHV0ZWQgaW1wbGVtZW50cyBEZXNjcmlwdG9yIHtcbiAgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgY29uZmlndXJhYmxlOiBib29sZWFuO1xuXG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYycgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3IpIHtcbiAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBmYWxzZTtcbiAgfVxuXG4gIGRlZmluZShwcm90b3R5cGU6IE9iamVjdCwga2V5OiBzdHJpbmcsIGhvbWU6IE9iamVjdCkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsIGtleSwgd3JhcEFjY2Vzc29yKGhvbWUsIGtleSwgdGhpcy5hY2Nlc3NvcikpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHdyYXBBY2Nlc3NvcihcbiAgaG9tZTogT2JqZWN0LFxuICBhY2Nlc3Nvck5hbWU6IHN0cmluZyxcbiAgX2Rlc2M6IENvbXB1dGVkRGVzY3JpcHRvclxuKTogUHJvcGVydHlEZXNjcmlwdG9yIHtcbiAgbGV0IHN1cGVyRGVzYyA9IGdldFByb3BlcnR5RGVzY3JpcHRvcihob21lLCBhY2Nlc3Nvck5hbWUpO1xuXG4gIGxldCBvcmlnaW5hbEdldDogQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgbGV0IG9yaWdpbmFsU2V0OiBDb21wdXRlZFNldENhbGxiYWNrO1xuXG4gIGxldCBkZXNjOiBQcm9wZXJ0eURlc2NyaXB0b3IgPSB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gIH07XG5cbiAgbGV0IGdldCA9IF9kZXNjLmdldDtcblxuICBpZiAoZ2V0ICYmIGdldC5sZW5ndGggPiAwKSB7XG4gICAgb3JpZ2luYWxHZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoZ2V0IGFzIGFueSkuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luYWxHZXQgPSBfZGVzYy5nZXQgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgfVxuXG4gIGxldCBzZXQgPSBfZGVzYy5zZXQ7XG5cbiAgaWYgKHNldCAmJiBzZXQubGVuZ3RoID4gMSkge1xuICAgIG9yaWdpbmFsU2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICByZXR1cm4gKHNldCBhcyBhbnkpLmNhbGwodGhpcywgYWNjZXNzb3JOYW1lLCB2YWx1ZSk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW5hbFNldCA9IF9kZXNjLnNldCBhcyBDb21wdXRlZEdldENhbGxiYWNrO1xuICB9XG5cbiAgbGV0IGNhY2hlR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgaWYgKE1ldGEuZXhpc3RzKHRoaXMpKSB7XG4gICAgICBsZXQgc2xvdCA9IE1ldGEuZm9yKHRoaXMpLmdldFNsb3RzKClbYWNjZXNzb3JOYW1lXTtcbiAgICAgIGlmIChzbG90ICE9PSBFTVBUWV9DQUNIRSkgcmV0dXJuIHNsb3Q7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yaWdpbmFsR2V0LmNhbGwodGhpcyk7XG4gIH07XG5cbiAgbGV0IGNhY2hlU2V0OiAodmFsdWU6IGFueSkgPT4gdm9pZDtcblxuICBpZiAob3JpZ2luYWxTZXQpIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcblxuICAgICAgbGV0IHJldCA9IG9yaWdpbmFsU2V0LmNhbGwodGhpcywgdmFsdWUpO1xuXG4gICAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2xvdHNbYWNjZXNzb3JOYW1lXSA9IHJldDtcbiAgICAgIH1cbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGNhY2hlU2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKHRoaXMpO1xuICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSB2YWx1ZTtcbiAgICB9O1xuICB9XG5cbiAgaWYgKCFzdXBlckRlc2MgfHwgJ3ZhbHVlJyBpbiBzdXBlckRlc2MpIHtcbiAgICBkZXNjLmdldCA9IGNhY2hlR2V0O1xuICAgIGRlc2Muc2V0ID0gY2FjaGVTZXQ7XG4gICAgcmV0dXJuIGRlc2M7XG4gIH1cblxuICBkZXNjLmdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MgYXMgYW55KS5nZXQuY2FsbCh0aGlzKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjYWNoZUdldC5jYWxsKHRoaXMpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgZGVzYy5zZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbDogYW55KSB7XG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKHN1cGVyRGVzYyBhcyBhbnkpLnNldC5jYWxsKHRoaXMsIHZhbCk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVTZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGRlc2M7XG59XG5cbmZ1bmN0aW9uIGdldFByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0OiBhbnksIG5hbWU6IHN0cmluZykge1xuICBsZXQgcGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN1YmplY3QsIG5hbWUpO1xuICBsZXQgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc3ViamVjdCk7XG4gIHdoaWxlICh0eXBlb2YgcGQgPT09ICd1bmRlZmluZWQnICYmIHByb3RvICE9PSBudWxsKSB7XG4gICAgcGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBuYW1lKTtcbiAgICBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90byk7XG4gIH1cbiAgcmV0dXJuIHBkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoZGVzYzogQ29tcHV0ZWREZXNjcmlwdG9yKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoXG4gIGdldHRlcjogQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2tcbik6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKC4uLmFyZ3M6IGFueVtdKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSkge1xuICBsZXQgbGFzdDogQ29tcHV0ZWRBcmd1bWVudCA9IGFyZ3MucG9wKCk7XG4gIGxldCBkZXBzID0gYXJncztcblxuICBpZiAodHlwZW9mIGxhc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkQmx1ZXByaW50KHtcbiAgICAgIGdldDogbGFzdCBhcyBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjayxcbiAgICB9KS5wcm9wZXJ0eSguLi5kZXBzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgbGFzdCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkQmx1ZXByaW50KGxhc3QgYXMgQ29tcHV0ZWREZXNjcmlwdG9yKS5wcm9wZXJ0eSguLi5kZXBzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjb21wdXRlZCBleHBlY3RzIGEgZnVuY3Rpb24gb3IgYW4gb2JqZWN0IGFzIGxhc3QgYXJndW1lbnQnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZXIoLi4uX2FyZ3M6IGFueVtdKSB7fVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvY29tcHV0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFBLDBCQUFBLEVBQUEsSUFBQSxRQUFBLDJCQUFBO0FBQ0EsU0FBQSxXQUFBLFFBQUEsVUFBQTtBQUNBLFNBQUEsU0FBQSxRQUFBLFNBQUE7QUF5QkEsV0FBTSxpQkFBTjtBQUFBOztBQUtFLCtCQUFBLFFBQUEsRUFBK0Q7QUFBQSxZQUFyQixJQUFxQix1RUFBL0QsRUFBK0Q7O0FBQUE7O0FBQUEscURBQzdELHFCQUQ2RDs7QUFGdkQsY0FBQSxRQUFBLEdBQUEsRUFBQTtBQUlOLGNBQUEsUUFBQSxHQUFBLFFBQUE7QUFDQSxjQUFBLElBQUEsR0FBQSxJQUFBO0FBSDZEO0FBSTlEOztBQVRILGdDQVdFLFVBWEYsdUJBV0UsT0FYRixFQVdFLEdBWEYsRUFXRSxTQVhGLEVBVytEO0FBQzNELGtCQUFBLG1CQUFBLENBQUEsR0FBQSxFQUFtQywyQkFBQSxHQUFBLEVBQWdDLEtBQW5FLElBQW1DLENBQW5DO0FBQ0Esa0JBQUEsbUJBQUEsQ0FBQSxHQUFBLEVBQW1DLEtBQW5DLFFBQUE7QUFDQSxrQkFBQSxVQUFBLENBQUEsR0FBQTtBQUNBLGVBQU8sSUFBQSxRQUFBLENBQWEsS0FBcEIsUUFBTyxDQUFQO0FBQ0QsS0FoQkg7O0FBQUEsZ0NBa0JFLFFBbEJGLHVCQWtCNkI7QUFBQSwwQ0FBM0IsS0FBMkI7QUFBM0IsaUJBQTJCO0FBQUE7O0FBQ3pCLGFBQUEsSUFBQSxHQUFZLE1BQUEsR0FBQSxDQUFVO0FBQUEsbUJBQUssRUFBQSxLQUFBLENBQTNCLEdBQTJCLENBQUw7QUFBQSxTQUFWLENBQVo7QUFDQSxlQUFBLElBQUE7QUFDRCxLQXJCSDs7QUFBQSxnQ0F1QkUsSUF2QkYsaUJBdUJFLE1BdkJGLEVBdUJxQjtBQUNqQixhQUFBLFFBQUEsR0FBQSxNQUFBO0FBQ0EsZUFBQSxJQUFBO0FBQ0QsS0Ex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QixpQkFBSztBQURzQixTQUF0QixHQUFBLFFBQUEsYUFBUCxJQUFPLENBQVA7QUFERixLQUFBLE1BSU8sSUFBSSxPQUFBLElBQUEsS0FBSixRQUFBLEVBQThCO0FBQUE7O0FBQ25DLGVBQU8sYUFBQSxpQkFBQSxDQUFBLElBQUEsR0FBQSxRQUFBLGNBQVAsSUFBTyxDQUFQO0FBREssS0FBQSxNQUVBO0FBQ0wsY0FBTSxJQUFBLFNBQUEsQ0FBTiwyREFBTSxDQUFOO0FBQ0Q7QUFDRjtBQUVELE9BQU0sU0FBQSxRQUFBLEdBQWtDLENBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludCwgTWV0YSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRU1QVFlfQ0FDSEUsIENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IERlc2NyaXB0b3IsIEJsdWVwcmludCB9IGZyb20gJy4vbWl4aW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gICh2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nLCB2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZERlc2NyaXB0b3Ige1xuICBnZXQ/OiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgc2V0PzogQ29tcHV0ZWRTZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2s7XG59XG5cbnR5cGUgQ29tcHV0ZWRBcmd1bWVudCA9IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBDb21wdXRlZERlc2NyaXB0b3I7XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgcHJpdmF0ZSBkZXBzOiBzdHJpbmdbXVtdO1xuICBwcml2YXRlIG1ldGFkYXRhOiBPYmplY3QgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yLCBkZXBzOiBzdHJpbmdbXVtdID0gW10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICB0aGlzLmRlcHMgPSBkZXBzO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGNsYXNzTWV0YS5hZGRSZWZlcmVuY2VUeXBlRm9yKGtleSwgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQoa2V5LCB0aGlzLmRlcHMpKTtcbiAgICBjbGFzc01ldGEuYWRkUHJvcGVydHlNZXRhZGF0YShrZXksIHRoaXMubWV0YWRhdGEpO1xuICAgIGNsYXNzTWV0YS5hZGRTbG90Rm9yKGtleSk7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZCh0aGlzLmFjY2Vzc29yKTtcbiAgfVxuXG4gIHByb3BlcnR5KC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVwcyA9IHBhdGhzLm1hcChkID0+IGQuc3BsaXQoJy4nKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtZXRhKG9iamVjdDogT2JqZWN0KSB7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG9iamVjdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZvbGF0aWxlKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmNsYXNzIENvbXB1dGVkIGltcGxlbWVudHMgRGVzY3JpcHRvciB7XG4gIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcblxuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yKSB7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gZmFsc2U7XG4gIH1cblxuICBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHdyYXBBY2Nlc3Nvcihob21lLCBrZXksIHRoaXMuYWNjZXNzb3IpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cmFwQWNjZXNzb3IoXG4gIGhvbWU6IE9iamVjdCxcbiAgYWNjZXNzb3JOYW1lOiBzdHJpbmcsXG4gIF9kZXNjOiBDb21wdXRlZERlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB7XG4gIGxldCBzdXBlckRlc2MgPSBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoaG9tZSwgYWNjZXNzb3JOYW1lKTtcblxuICBsZXQgb3JpZ2luYWxHZXQ6IENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIGxldCBvcmlnaW5hbFNldDogQ29tcHV0ZWRTZXRDYWxsYmFjaztcblxuICBsZXQgZGVzYzogUHJvcGVydHlEZXNjcmlwdG9yID0ge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9O1xuXG4gIGxldCBnZXQgPSBfZGVzYy5nZXQ7XG5cbiAgaWYgKGdldCAmJiBnZXQubGVuZ3RoID4gMCkge1xuICAgIG9yaWdpbmFsR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKGdldCBhcyBhbnkpLmNhbGwodGhpcywgYWNjZXNzb3JOYW1lKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsR2V0ID0gX2Rlc2MuZ2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgc2V0ID0gX2Rlc2Muc2V0O1xuXG4gIGlmIChzZXQgJiYgc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICBvcmlnaW5hbFNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgcmV0dXJuIChzZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSwgdmFsdWUpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luYWxTZXQgPSBfZGVzYy5zZXQgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgfVxuXG4gIGxldCBjYWNoZUdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGlmIChNZXRhLmV4aXN0cyh0aGlzKSkge1xuICAgICAgbGV0IHNsb3QgPSBNZXRhLmZvcih0aGlzKS5nZXRTbG90cygpW2FjY2Vzc29yTmFtZV07XG4gICAgICBpZiAoc2xvdCAhPT0gRU1QVFlfQ0FDSEUpIHJldHVybiBzbG90O1xuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW5hbEdldC5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIGxldCBjYWNoZVNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgaWYgKG9yaWdpbmFsU2V0KSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICAgIGxldCByZXQgPSBvcmlnaW5hbFNldC5jYWxsKHRoaXMsIHZhbHVlKTtcblxuICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSByZXQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSBzbG90c1thY2Nlc3Nvck5hbWVdID0gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghc3VwZXJEZXNjIHx8ICd2YWx1ZScgaW4gc3VwZXJEZXNjKSB7XG4gICAgZGVzYy5nZXQgPSBjYWNoZUdldDtcbiAgICBkZXNjLnNldCA9IGNhY2hlU2V0O1xuICAgIHJldHVybiBkZXNjO1xuICB9XG5cbiAgZGVzYy5nZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuZ2V0LmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVHZXQuY2FsbCh0aGlzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIGRlc2Muc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWw6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MgYXMgYW55KS5zZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlU2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBkZXNjO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdDogYW55LCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKTtcbiAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHN1YmplY3QpO1xuICB3aGlsZSAodHlwZW9mIHBkID09PSAndW5kZWZpbmVkJyAmJiBwcm90byAhPT0gbnVsbCkge1xuICAgIHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbmFtZSk7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiBwZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKGRlc2M6IENvbXB1dGVkRGVzY3JpcHRvcik6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKFxuICBnZXR0ZXI6IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrXG4pOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSk6IENvbXB1dGVkQmx1ZXByaW50O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pIHtcbiAgbGV0IGxhc3Q6IENvbXB1dGVkQXJndW1lbnQgPSBhcmdzLnBvcCgpO1xuICBsZXQgZGVwcyA9IGFyZ3M7XG5cbiAgaWYgKHR5cGVvZiBsYXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludCh7XG4gICAgICBnZXQ6IGxhc3QgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2ssXG4gICAgfSkucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGxhc3QgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludChsYXN0IGFzIENvbXB1dGVkRGVzY3JpcHRvcikucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29tcHV0ZWQgZXhwZWN0cyBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCBhcyBsYXN0IGFyZ3VtZW50Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVyKC4uLl9hcmdzOiBhbnlbXSkge31cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQVMsV0FBRSxBQUFVLEFBQUUsa0JBQU0sQUFBUyxBQUFDO0FBRWhELEFBQU8sU0FBRSxBQUFpQixBQUFFLHlCQUFNLEFBQVksQUFBQyxBQUUvQzs7SUFBTSxBQUFzQjs7O21DQUdkLEFBQVk7QUFDdEIsQUFBSyxBQUFFLEFBQUM7O3FEQUNSLEFBQUk7O2NBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDOztBQUVELEFBQU07OzZEQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBYSxPQUMvQztZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBYyxBQUFDLEFBRS9CLEFBQU07ZUFBQyxBQUFjLGVBQUMsQUFBTSxRQUFFLEFBQUc7d0JBQ25CLEFBQUksQUFDaEIsQUFBWTswQkFBRSxBQUFJLEFBQ2xCLEFBQUc7Z0NBQ0Q7dUJBQU8sQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3BCLEFBQUMsQUFDRixBQUFDLEFBQUMsQUFDTDtBQVBxQyxBQU9wQyxBQUNGO0FBUEssQUFBVTtBQVNoQjs7O0VBckJvQyxBQUFVLEFBRzVDOztJQWtCSSxBQUFxQjs7O2tDQUdiLEFBQVk7QUFDdEIsQUFBSyxBQUFFLEFBQUM7O3NEQUNSLEFBQUk7O2VBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDOztBQUVELEFBQVU7O29FQUFDLEFBQWUsU0FBRSxBQUFZLE1BQUUsQUFBZ0IsT0FDeEQ7ZUFBTyxJQUFJLEFBQXFCLHNCQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUM5QyxBQUFDLEFBQ0Y7Ozs7RUFYa0MsQUFBUyxBQUcxQzs7QUFVRixBQUFNLGdCQUFVLEFBQVcsWUFBQyxBQUFZLE1BQ3RDO1dBQU8sSUFBSSxBQUFvQixxQkFBQyxBQUFJLEFBQUMsQUFBQyxBQUN4QyxBQUFDO0FBRUQ7O0lBQU0sQUFBZTs7OzRCQUdQLEFBQWM7QUFDeEI7O1lBQUksQUFBTSxTQUFHLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBQyxHQUFFLENBQUMsQUFBQyxBQUFDLEFBQUMsQUFDL0I7WUFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFNLFNBQUcsQUFBQyxBQUFDLEFBQUMsQUFFakM7WUFBSSxBQUFHLE1BQUcsZUFDUjt3QkFBWSxBQUFNLGlCQUFFLEFBQUcsS0FBRSxBQUFDLEFBQUUsQUFBRTtBQUFYLHVCQUFZLEFBQUcsSUFBQyxBQUFDLEFBQUM7YUFBOUIsQUFBSSxFQUE0QixBQUFJLEFBQUMsQUFBQyxBQUMvQyxBQUFDLEFBQUM7QUFFRjtZQUFJLEFBQUcsTUFBRyxhQUFvQixBQUFVLE9BQ3RDO2dCQUFJLEFBQUMsV0FBVSxBQUFNLGlCQUFFLEFBQUcsS0FBRSxBQUFDLEFBQUUsQUFBRTtBQUFYLHVCQUFZLEFBQUcsSUFBQyxBQUFDLEFBQUM7YUFBaEMsQUFBTSxFQUE0QixBQUFJLEFBQUMsQUFBQyxBQUNoRCxBQUFDO2NBQUMsQUFBSSxBQUFDLFFBQUcsQUFBSyxBQUFDLEFBQ2xCLEFBQUMsQUFBQztBQUVGLEFBQUs7O29GQUFDLEVBQUUsQUFBRyxVQUFFLEFBQUcsQUFBRSxZQUFFLENBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUM1QixBQUFJOztlQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQzs7QUFFRCxBQUFVOzs4REFBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQWUsTUFDckQ7WUFBSSxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQUMsQUFBQyxPQUFLLEFBQUcsS0FBRSxNQUFNLElBQUksQUFBSyxBQUFDLDJCQUFrQixBQUFHLEFBQVcsQUFBQyxBQUFDLEFBQzVFO2VBQU8sQUFBSyw2QkFBQyxBQUFVLHNCQUFDLEFBQU0sUUFBRSxBQUFHLEtBQUUsQUFBSSxBQUFDLEFBQUMsQUFDN0MsQUFBQyxBQUNGOzs7O0VBeEI0QixBQUFpQixBQUc1Qzs7QUF1QkYsQUFBTSxnQkFBVSxBQUFLLE1BQUMsQUFBWSxNQUNoQztXQUFPLElBQUksQUFBYyxlQUFDLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUMsQUFBQyxBQUM3QyxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmx1ZXByaW50LCBEZXNjcmlwdG9yIH0gZnJvbSAnLi9taXhpbic7XG5pbXBvcnQgeyBDbGFzc01ldGEgfSBmcm9tICcuL29iamVjdCc7XG5pbXBvcnQgeyBDb21wdXRlZEJsdWVwcmludCB9IGZyb20gJy4vY29tcHV0ZWQnO1xuXG5jbGFzcyBBbGlhc01ldGhvZERlc2NyaXB0b3IgZXh0ZW5kcyBEZXNjcmlwdG9yIHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgX2hvbWU6IE9iamVjdCkge1xuICAgIGxldCBuYW1lID0gdGhpcy5uYW1lIGFzIHN0cmluZztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiB0eXBlb2YgdGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzW25hbWVdO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBBbGlhc01ldGhvZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9tZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kRGVzY3JpcHRvcih0aGlzLm5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhc01ldGhvZChuYW1lOiBzdHJpbmcpOiBCbHVlcHJpbnQge1xuICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kQmx1ZXByaW50KG5hbWUpO1xufVxuXG5jbGFzcyBBbGlhc0JsdWVwcmludCBleHRlbmRzIENvbXB1dGVkQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmdbXSkge1xuICAgIGxldCBwYXJlbnQgPSBuYW1lLnNsaWNlKDAsIC0xKTtcbiAgICBsZXQgbGFzdCA9IG5hbWVbbmFtZS5sZW5ndGggLSAxXTtcblxuICAgIGxldCBnZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiBuYW1lLnJlZHVjZSgob2JqLCBuKSA9PiBvYmpbbl0sIHRoaXMpO1xuICAgIH07XG5cbiAgICBsZXQgc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICBsZXQgcCA9IHBhcmVudC5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICAgIHBbbGFzdF0gPSB2YWx1ZTtcbiAgICB9O1xuXG4gICAgc3VwZXIoeyBnZXQsIHNldCB9LCBbbmFtZV0pO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgaWYgKHRoaXMubmFtZVswXSA9PT0ga2V5KSB0aHJvdyBuZXcgRXJyb3IoYFNldHRpbmcgYWxpYXMgJyR7a2V5fScgb24gc2VsZmApO1xuICAgIHJldHVybiBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBtZXRhKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXMobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc0JsdWVwcmludChuYW1lLnNwbGl0KCcuJykpO1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvZGVzY3JpcHRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFBLFNBQUEsRUFBQSxVQUFBLFFBQUEsU0FBQTtBQUVBLFNBQUEsaUJBQUEsUUFBQSxZQUFBOztJQUdBLHFCOzs7QUFHRSxtQ0FBQSxJQUFBLEVBQXdCO0FBQUE7O0FBQUEscURBQ3RCLHNCQURzQjs7QUFFdEIsY0FBQSxJQUFBLEdBQUEsSUFBQTtBQUZzQjtBQUd2Qjs7b0NBRUQsTSxtQkFBQSxNLEVBQUEsRyxFQUFBLEssRUFBK0M7QUFDN0MsWUFBSSxPQUFPLEtBQVgsSUFBQTtBQUVBLGVBQUEsY0FBQSxDQUFBLE1BQUEsRUFBQSxHQUFBLEVBQW1DO0FBQ2pDLHdCQURpQyxJQUFBO0FBRWpDLDBCQUZpQyxJQUFBO0FBR2pDLGVBSGlDLGlCQUc5QjtBQUNELHVCQUFPLEtBQVAsSUFBTyxDQUFQO0FBQ0Q7QUFMZ0MsU0FBbkM7QUFPRCxLOzs7RUFsQkgsVTs7SUFxQkEsb0I7OztBQUdFLGtDQUFBLElBQUEsRUFBd0I7QUFBQTs7QUFBQSxzREFDdEIscUJBRHNCOztBQUV0QixlQUFBLElBQUEsR0FBQSxJQUFBO0FBRnNCO0FBR3ZCOzttQ0FFRCxVLHVCQUFBLE8sRUFBQSxJLEVBQUEsSyxFQUEwRDtBQUN4RCxlQUFPLElBQUEscUJBQUEsQ0FBMEIsS0FBakMsSUFBTyxDQUFQO0FBQ0QsSzs7O0VBVkgsUzs7QUFhQSxPQUFNLFNBQUEsV0FBQSxDQUFBLElBQUEsRUFBa0M7QUFDdEMsV0FBTyxJQUFBLG9CQUFBLENBQVAsSUFBTyxDQUFQO0FBQ0Q7O0lBRUQsYzs7O0FBR0UsNEJBQUEsSUFBQSxFQUEwQjtBQUFBOztBQUN4QixZQUFJLFNBQVMsS0FBQSxLQUFBLENBQUEsQ0FBQSxFQUFjLENBQTNCLENBQWEsQ0FBYjtBQUNBLFlBQUksT0FBTyxLQUFLLEtBQUEsTUFBQSxHQUFoQixDQUFXLENBQVg7QUFFQSxZQUFJLE1BQU0sU0FBTixHQUFNLEdBQUE7QUFDUixtQkFBTyxLQUFBLE1BQUEsQ0FBWSxVQUFBLEdBQUEsRUFBQSxDQUFBO0FBQUEsdUJBQVksSUFBeEIsQ0FBd0IsQ0FBWjtBQUFBLGFBQVosRUFBUCxJQUFPLENBQVA7QUFERixTQUFBO0FBSUEsWUFBSSxNQUFNLFNBQU4sR0FBTSxDQUFBLEtBQUEsRUFBOEI7QUFDdEMsZ0JBQUksSUFBSSxPQUFBLE1BQUEsQ0FBYyxVQUFBLEdBQUEsRUFBQSxDQUFBO0FBQUEsdUJBQVksSUFBMUIsQ0FBMEIsQ0FBWjtBQUFBLGFBQWQsRUFBUixJQUFRLENBQVI7QUFDQSxjQUFBLElBQUEsSUFBQSxLQUFBO0FBRkYsU0FBQTs7QUFSd0Isc0RBYXhCLDhCQUFNLEVBQUEsUUFBQSxFQUFOLFFBQU0sRUFBTixFQUFvQixDQUFwQixJQUFvQixDQUFwQixDQWJ3Qjs7QUFjeEIsZUFBQSxJQUFBLEdBQUEsSUFBQTtBQWR3QjtBQWV6Qjs7NkJBRUQsVSx1QkFBQSxNLEVBQUEsRyxFQUFBLEksRUFBdUQ7QUFDckQsWUFBSSxLQUFBLElBQUEsQ0FBQSxDQUFBLE1BQUosR0FBQSxFQUEwQixNQUFNLElBQUEsS0FBQSxzQkFBTixHQUFNLGdCQUFOO0FBQzFCLGVBQU8sNkJBQUEsVUFBQSxZQUFBLE1BQUEsRUFBQSxHQUFBLEVBQVAsSUFBTyxDQUFQO0FBQ0QsSzs7O0VBdkJILGlCOztBQTBCQSxPQUFNLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBNEI7QUFDaEMsV0FBTyxJQUFBLGNBQUEsQ0FBbUIsS0FBQSxLQUFBLENBQTFCLEdBQTBCLENBQW5CLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsdWVwcmludCwgRGVzY3JpcHRvciB9IGZyb20gJy4vbWl4aW4nO1xuaW1wb3J0IHsgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgQ29tcHV0ZWRCbHVlcHJpbnQgfSBmcm9tICcuL2NvbXB1dGVkJztcbmltcG9ydCB7IERpY3QgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuY2xhc3MgQWxpYXNNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IERpY3QsIGtleTogc3RyaW5nLCBfaG9tZTogT2JqZWN0KSB7XG4gICAgbGV0IG5hbWUgPSB0aGlzLm5hbWUgYXMgc3RyaW5nO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0KHRoaXM6IHR5cGVvZiB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbbmFtZV07XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIEFsaWFzTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIF9rZXk6IHN0cmluZywgX21ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgQWxpYXNNZXRob2REZXNjcmlwdG9yKHRoaXMubmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzTWV0aG9kKG5hbWU6IHN0cmluZyk6IEJsdWVwcmludCB7XG4gIHJldHVybiBuZXcgQWxpYXNNZXRob2RCbHVlcHJpbnQobmFtZSk7XG59XG5cbmNsYXNzIEFsaWFzQmx1ZXByaW50IGV4dGVuZHMgQ29tcHV0ZWRCbHVlcHJpbnQge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZ1tdKSB7XG4gICAgbGV0IHBhcmVudCA9IG5hbWUuc2xpY2UoMCwgLTEpO1xuICAgIGxldCBsYXN0ID0gbmFtZVtuYW1lLmxlbmd0aCAtIDFdO1xuXG4gICAgbGV0IGdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIG5hbWUucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgfTtcblxuICAgIGxldCBzZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIGxldCBwID0gcGFyZW50LnJlZHVjZSgob2JqLCBuKSA9PiBvYmpbbl0sIHRoaXMpO1xuICAgICAgcFtsYXN0XSA9IHZhbHVlO1xuICAgIH07XG5cbiAgICBzdXBlcih7IGdldCwgc2V0IH0sIFtuYW1lXSk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBtZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBpZiAodGhpcy5uYW1lWzBdID09PSBrZXkpIHRocm93IG5ldyBFcnJvcihgU2V0dGluZyBhbGlhcyAnJHtrZXl9JyBvbiBzZWxmYCk7XG4gICAgcmV0dXJuIHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIG1ldGEpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhcyhuYW1lOiBzdHJpbmcpOiBCbHVlcHJpbnQge1xuICByZXR1cm4gbmV3IEFsaWFzQmx1ZXByaW50KG5hbWUuc3BsaXQoJy4nKSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQVUsQUFBRSxrQkFBTSxBQUEyQixBQUFDO0FBQ3ZELEFBQU8sU0FBUSxBQUFJLE1BQUUsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQ25ELEFBQXNCLFNBRXBCLEFBQVMsV0FDVCxBQUFZLGNBQ1osQUFBVyxBQUNaLG1CQUFNLEFBQVUsQUFBQztBQUVsQixBQUFPLFNBQUUsQUFBSSxBQUFFLFlBQU0sQUFBUyxBQUFDLEFBRS9CLEFBQU07SUFBRSxBQUFPLEFBQUUsVUFBRyxBQUFLLEFBQUM7O0FBRTFCLEFBQU0sT0FBQyxJQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDO0FBQ2pFLEFBQU0sT0FBQyxJQUFNLEFBQVMsWUFBRyxBQUFzQyxBQUFDO0FBRWhFLEFBQU0sV0FBTixBQUFzQixBQUFVO0FBQzlCOztTQUFzQywwQ0FBRyxBQUFJLEFBQUMsQUFFaEQsQUFBQzs7QUFFRCxBQUFNLFdBQU4sQUFBc0IsQUFBUztBQUM3Qjs7U0FBc0MsMENBQUcsQUFBSSxBQUFDLEFBRWhELEFBQUM7O0FBU0QsQUFBTSxXQUFPLEFBQUssQUE0QmhCO21CQUFZLEFBQXNCLFlBQUUsQUFBZTtBQTNCM0M7Ozs7YUFBVSxhQUFjLEFBQVcsQUFBQyxNQUFDLEFBQXVCLEFBQzVEO2FBQXNCLHlCQUFhLEFBQUUsQUFBQyxBQUN0QzthQUFnQixtQkFBYSxBQUFFLEFBQUMsQUFDaEM7YUFBWSxlQUFZLEFBQUUsQUFBQyxBQXlCakMsQUFBSTthQUFDLEFBQU0sT0FBQyxBQUFVLEFBQUMsQUFBQyxBQUN4QixBQUFJOzhCQUFDLEFBQVksY0FBQyxBQUFJLEFBQUMsMEJBQUcsQUFBTSxBQUFDLEFBQUMsQUFDcEMsQUFBQztBQXpCRCxBQUFNOztVQUFD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VUFBQyxBQUFrQixVQUNuQztRQUFJLEFBQVcsZUFBSSxBQUFRLFVBQUUsT0FBTyxBQUFRLEFBQUMsQUFFN0M7V0FBTyxBQUE4QjtBQUNuQztBQURzQyxBQUFXOzs7WUFDN0MsQ0FBQyxBQUFJLE1BQUUsT0FBTyxBQUFRLFNBQUMsQUFBSyxNQUFDLEFBQUksTUFBRSxBQUFJLEFBQUMsQUFBQyxBQUU3QztZQUFJLEFBQVMsWUFBRyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQzVCLEFBQUk7YUFBQyxBQUFNLFNBQUcsQUFBSSxBQUFDLEFBRW5CO1lBQUksQUFDRjttQkFBTyxBQUFRLFNBQUMsQUFBSyxNQUFDLEFBQUksTUFBRSxBQUFJLEFBQUMsQUFBQyxBQUNuQztrQkFBUyxBQUNSLEFBQUk7aUJBQUMsQUFBTSxTQUFHLEFBQVMsQUFBQyxBQUN6QixBQUNIO0FBQUMsQUFBQyxBQUNKO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDTEFTU19NRVRBIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBEaWN0LCBkaWN0LCBhc3NpZ24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCBHbGltbWVyT2JqZWN0LCB7XG4gIEdsaW1tZXJPYmplY3RGYWN0b3J5LFxuICBDbGFzc01ldGEsXG4gIEluc3RhbmNlTWV0YSxcbiAgdHVyYm9jaGFyZ2UsXG59IGZyb20gJy4vb2JqZWN0JztcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuXG5leHBvcnQgY29uc3QgREVTQ1JJUFRPUiA9ICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnO1xuZXhwb3J0IGNvbnN0IEJMVUVQUklOVCA9ICc4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVzY3JpcHRvciB7XG4gICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnID0gdHJ1ZTtcbiAgYWJzdHJhY3QgZGVmaW5lKHByb3RvdHlwZTogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsdWVwcmludCB7XG4gICc4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDUnID0gdHJ1ZTtcbiAgYWJzdHJhY3QgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25zIHtcbiAgY29uY2F0ZW5hdGVkUHJvcGVydGllcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbDtcbiAgbWVyZ2VkUHJvcGVydGllcz86IHN0cmluZ1tdIHwgc3RyaW5nO1xuICBfc3VwZXI/OiBGdW5jdGlvbjtcbiAgW2luZGV4OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBNaXhpbiB7XG4gIHByaXZhdGUgZXh0ZW5zaW9uczogRGljdDxhbnk+ID0gbnVsbCBhcyBhbnk7IC8vIGFzc2lnbmVkIGJlZm9yZSB1c2VkXG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGRlcGVuZGVuY2llczogTWl4aW5bXSA9IFtdO1xuXG4gIHN0YXRpYyBjcmVhdGUoLi4uYXJnczogKE1peGluIHwgRXh0ZW5zaW9ucylbXSkge1xuICAgIGxldCBleHRlbnNpb25zID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIFtdKTtcbiAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbnMgaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHt9LCBhcmdzIGFzIE1peGluW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGVwcyA9IGFyZ3Muc2xpY2UoMCwgLTEpLm1hcCh0b01peGluKTtcbiAgICAgIHJldHVybiBuZXcgdGhpcyhleHRlbnNpb25zIGFzIEV4dGVuc2lvbnMsIGRlcHMpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBtaXhpbnMob2JqOiBhbnkpOiBNaXhpbltdIHtcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSByZXR1cm4gW107XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICBpZiAoIW1ldGEpIHJldHVybiBbXTtcblxuICAgIHJldHVybiBtZXRhLmdldEFwcGxpZWRNaXhpbnMoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMsIG1peGluczogTWl4aW5bXSkge1xuICAgIHRoaXMucmVvcGVuKGV4dGVuc2lvbnMpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2goLi4ubWl4aW5zKTtcbiAgfVxuXG4gIGRldGVjdChvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgcmV0dXJuIG9iai5kZXBlbmRlbmNpZXMuaW5kZXhPZih0aGlzKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgbGV0IG1ldGEgPSBDbGFzc01ldGEuZm9yKG9iaik7XG4gICAgcmV0dXJuICEhbWV0YSAmJiBtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKTtcbiAgfVxuXG4gIHJlb3BlbihleHRlbnNpb25zOiBFeHRlbnNpb25zKSB7XG4gICAgaWYgKHRoaXMuZXh0ZW5zaW9ucykge1xuICAgICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCh0b01peGluKHRoaXMuZXh0ZW5zaW9ucykpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXh0ZW5zaW9ucyA9PT0gJ29iamVjdCcgJiYgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnIGluIGV4dGVuc2lvbnMpIHtcbiAgICAgIGxldCBjb25jYXQ6IHN0cmluZ1tdO1xuICAgICAgbGV0IHJhd0NvbmNhdCA9IGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcblxuICAgICAgaWYgKGlzQXJyYXkocmF3Q29uY2F0KSkge1xuICAgICAgICBjb25jYXQgPSAocmF3Q29uY2F0IGFzIHN0cmluZ1tdKS5zbGljZSgpO1xuICAgICAgfSBlbHNlIGlmIChyYXdDb25jYXQgPT09IG51bGwgfHwgcmF3Q29uY2F0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uY2F0ID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25jYXQgPSBbcmF3Q29uY2F0IGFzIHN0cmluZ107XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBjb25jYXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnbWVyZ2VkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IG1lcmdlZDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3TWVyZ2VkID0gZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdNZXJnZWQpKSB7XG4gICAgICAgIG1lcmdlZCA9IChyYXdNZXJnZWQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd01lcmdlZCA9PT0gbnVsbCB8fCByYXdNZXJnZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtZXJnZWQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZCA9IFtyYXdNZXJnZWQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IG1lcmdlZDtcbiAgICB9XG5cbiAgICBsZXQgbm9ybWFsaXplZDogRGljdDxCbHVlcHJpbnQ+ID0gT2JqZWN0LmtleXMoZXh0ZW5zaW9ucykucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gZXh0ZW5zaW9uc1trZXldO1xuXG4gICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgTWV0aG9kQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgaWYgKHZhbHVlICYmIEJMVUVQUklOVCBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIG9ialtrZXldID0gbmV3IERhdGFCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCBkaWN0PEJsdWVwcmludD4oKSk7XG5cbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBkaWN0PGFueT4oKTtcbiAgICBhc3NpZ24odGhpcy5leHRlbnNpb25zLCB0dXJib2NoYXJnZShub3JtYWxpemVkKSk7XG4gIH1cblxuICBhcHBseSh0YXJnZXQ6IGFueSkge1xuICAgIGxldCBtZXRhOiBDbGFzc01ldGEgPSAodGFyZ2V0W0NMQVNTX01FVEFdID0gdGFyZ2V0W0NMQVNTX01FVEFdIHx8IG5ldyBDbGFzc01ldGEoKSk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uYXBwbHkodGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXModGFyZ2V0LCB0YXJnZXQsIG1ldGEpO1xuICAgIG1ldGEuYWRkTWl4aW4odGhpcyk7XG4gICAgbWV0YS5zZWFsKCk7XG4gICAgbWV0YS5yZXNlYWwodGFyZ2V0KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGUoT3JpZ2luYWw6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICBPcmlnaW5hbC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE9yaWdpbmFsLnByb3RvdHlwZSk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kUHJvdG90eXBlKE9yaWdpbmFsKSk7XG4gICAgdGhpcy5leHRlbmRQcm90b3R5cGVPbnRvKE9yaWdpbmFsLCBPcmlnaW5hbCk7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhTdWJjbGFzcy5wcm90b3R5cGUsIFBhcmVudC5wcm90b3R5cGUsIFN1YmNsYXNzW0NMQVNTX01FVEFdKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbih0aGlzKTtcbiAgfVxuXG4gIGV4dGVuZFN0YXRpYyhUYXJnZXQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRTdGF0aWMoVGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXMoVGFyZ2V0LCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoVGFyZ2V0KSwgVGFyZ2V0W0NMQVNTX01FVEFdW0NMQVNTX01FVEFdKTtcbiAgICBUYXJnZXRbQ0xBU1NfTUVUQV0uYWRkU3RhdGljTWl4aW4odGhpcyk7XG4gIH1cblxuICBtZXJnZVByb3BlcnRpZXModGFyZ2V0OiBPYmplY3QsIHBhcmVudDogT2JqZWN0LCBtZXRhOiBDbGFzc01ldGEpIHtcbiAgICBpZiAobWV0YS5oYXNBcHBsaWVkTWl4aW4odGhpcykpIHJldHVybjtcbiAgICBtZXRhLmFkZEFwcGxpZWRNaXhpbih0aGlzKTtcblxuICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRNZXJnZWRQcm9wZXJ0eShrLCBwYXJlbnRba10pKTtcbiAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMuZm9yRWFjaChrID0+IG1ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoaywgW10pKTtcblxuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKFxuICAgICAgdGFyZ2V0LFxuICAgICAgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnXG4gICAgKTtcbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IG1ldGEuZ2V0TWVyZ2VkUHJvcGVydGllcygpIH0pLmRlZmluZSh0YXJnZXQsICdtZXJnZWRQcm9wZXJ0aWVzJyk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLmV4dGVuc2lvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGxldCBleHRlbnNpb246IEJsdWVwcmludCA9IHRoaXMuZXh0ZW5zaW9ucyFba2V5XTtcbiAgICAgIGxldCBkZXNjID0gZXh0ZW5zaW9uLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXkgYXMgc3RyaW5nLCBtZXRhKTtcbiAgICAgIGRlc2MuZGVmaW5lKHRhcmdldCwga2V5IGFzIHN0cmluZywgcGFyZW50KTtcbiAgICB9KTtcblxuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogUk9PVCB9KS5kZWZpbmUodGFyZ2V0LCAnX3N1cGVyJyBhcyBzdHJpbmcpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEV4dGVuc2lvbiA9IE1peGluIHwgRXh0ZW5zaW9ucztcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZDxUIGV4dGVuZHMgR2xpbW1lck9iamVjdD4oXG4gIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4sXG4gIC4uLmV4dGVuc2lvbnM6IEV4dGVuc2lvbltdXG4pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+IHtcbiAgbGV0IFN1cGVyID0gUGFyZW50IGFzIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuXG4gIGxldCBTdWJjbGFzcyA9IGNsYXNzIGV4dGVuZHMgU3VwZXIge307XG4gIFN1YmNsYXNzW0NMQVNTX01FVEFdID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQoUGFyZW50W0NMQVNTX01FVEFdKTtcblxuICBsZXQgbWl4aW5zID0gZXh0ZW5zaW9ucy5tYXAodG9NaXhpbik7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5hZGRTdWJjbGFzcyhTdWJjbGFzcyBhcyBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KTtcbiAgbWl4aW5zLmZvckVhY2gobSA9PiBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbihtKSk7XG5cbiAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudCk7XG5cbiAgcmV0dXJuIFN1YmNsYXNzIGFzIGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGlua1N1YmNsYXNzZXMoUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5nZXRTdWJjbGFzc2VzKCkuZm9yRWFjaCgoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pID0+IHtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5yZXNldChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUGFyZW50LnByb3RvdHlwZSk7XG5cbiAgICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MsIFBhcmVudCk7XG5cbiAgICAvLyByZWN1cnNlIGludG8gc3ViLXN1YmNsYXNzZXNcbiAgICByZWxpbmtTdWJjbGFzc2VzKFN1YmNsYXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b01peGluKGV4dGVuc2lvbjogRXh0ZW5zaW9uKTogTWl4aW4ge1xuICBpZiAoZXh0ZW5zaW9uIGluc3RhbmNlb2YgTWl4aW4pIHJldHVybiBleHRlbnNpb247XG4gIGVsc2UgcmV0dXJuIG5ldyBNaXhpbihleHRlbnNpb24gYXMgT2JqZWN0LCBbXSk7XG59XG5cbmNsYXNzIFZhbHVlRGVzY3JpcHRvciBleHRlbmRzIERlc2NyaXB0b3Ige1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHdyaXRhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgdmFsdWU6IGFueTtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICB3cml0YWJsZSA9IHRydWUsXG4gICAgdmFsdWUsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLndyaXRhYmxlID0gd3JpdGFibGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgX2hvbWU/OiBhbnkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICB3cml0YWJsZTogdGhpcy53cml0YWJsZSxcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgd3JpdGFibGUgPSB0cnVlLFxuICAgIHZhbHVlLFxuICB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBsZXQgeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9ID0gdGhpcztcblxuICAgIGlmIChjbGFzc01ldGEuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5IGFzIHN0cmluZykpIHtcbiAgICAgIGNsYXNzTWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nLCB2YWx1ZSk7XG4gICAgICB2YWx1ZSA9IGNsYXNzTWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKTtcbiAgICB9IGVsc2UgaWYgKGNsYXNzTWV0YS5oYXNNZXJnZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgY2xhc3NNZXRhLmFkZE1lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcsIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldE1lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjY2Vzc29yQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIGdldDogKCkgPT4gYW55O1xuICBzZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIGdldCxcbiAgICBzZXQsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvciAmIHsgZ2V0OiBhbnk7IHNldDogYW55IH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy5nZXQgPSBnZXQ7XG4gICAgdGhpcy5zZXQgPSBzZXQ7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gbmV3IFZhbHVlRGVzY3JpcHRvcih7XG4gICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgZ2V0OiB0aGlzLmdldCxcbiAgICAgIHNldDogdGhpcy5zZXQsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgTWV0aG9kRGVzY3JpcHRvciBleHRlbmRzIFZhbHVlRGVzY3JpcHRvciB7XG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGhvbWU6IE9iamVjdCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB3cmFwTWV0aG9kKGhvbWUsIGtleSwgdGhpcy52YWx1ZSk7XG4gICAgc3VwZXIuZGVmaW5lKHRhcmdldCwga2V5LCBob21lKTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBEYXRhQmx1ZXByaW50IHtcbiAgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogTWV0aG9kRGVzY3JpcHRvciB7XG4gICAgbGV0IGRlc2MgPSBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBjbGFzc01ldGEpO1xuICAgIHJldHVybiBuZXcgTWV0aG9kRGVzY3JpcHRvcihkZXNjIGFzIFByb3BlcnR5RGVzY3JpcHRvcik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBNZXRob2QoaG9tZTogT2JqZWN0LCBtZXRob2ROYW1lOiBzdHJpbmcsIG9yaWdpbmFsOiAoLi4uYXJnczogYW55W10pID0+IGFueSkge1xuICBpZiAoISgobWV0aG9kTmFtZSBhcyBzdHJpbmcpIGluIGhvbWUpKSByZXR1cm4gbWF5YmVXcmFwKG9yaWdpbmFsKTtcblxuICBsZXQgc3VwZXJNZXRob2QgPSBob21lW21ldGhvZE5hbWVdO1xuXG4gIGxldCBmdW5jID0gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IHN1cGVyTWV0aG9kO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIChmdW5jIGFzIGFueSkuX193cmFwcGVkID0gdHJ1ZTtcblxuICByZXR1cm4gZnVuYztcbn1cblxuZnVuY3Rpb24gbWF5YmVXcmFwKG9yaWdpbmFsOiBGdW5jdGlvbikge1xuICBpZiAoJ19fd3JhcHBlZCcgaW4gb3JpZ2luYWwpIHJldHVybiBvcmlnaW5hbDtcblxuICByZXR1cm4gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvbWl4aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFBLFVBQUEsUUFBQSwyQkFBQTtBQUNBLFNBQUEsSUFBQSxFQUFBLE1BQUEsUUFBQSxlQUFBO0FBQ0EsU0FBQSxTQUFBLEVBQUEsWUFBQSxFQUFBLFdBQUEsUUFBQSxVQUFBO0FBT0EsU0FBQSxJQUFBLFFBQUEsU0FBQTtJQUdNLE8sR0FBTixLLENBQU0sTzs7QUFFTixPQUFPLElBQU0sYUFBTixzQ0FBQTtBQUNQLE9BQU8sSUFBTSxZQUFOLHNDQUFBO0FBRVAsV0FBTSxVQUFOLEdBQUEsc0JBQUE7QUFBQTs7QUFDRSxTQUFBLHNDQUFBLElBQUEsSUFBQTtBQUVELENBSEQ7QUFLQSxXQUFNLFNBQU4sR0FBQSxxQkFBQTtBQUFBOztBQUNFLFNBQUEsc0NBQUEsSUFBQSxJQUFBO0FBRUQsQ0FIRDtBQVlBLFdBQU0sS0FBTjtBQTRCRSxtQkFBQSxVQUFBLEVBQUEsTUFBQSxFQUFtRDtBQUFBOztBQUFBOztBQTNCM0MsYUFBQSxVQUFBLEdBQUEsSUFBQSxDQTJCMkMsQ0EzQk47QUFDckMsYUFBQSxzQkFBQSxHQUFBLEVBQUE7QUFDQSxhQUFBLGdCQUFBLEdBQUEsRUFBQTtBQUNBLGFBQUEsWUFBQSxHQUFBLEVBQUE7QUF5Qk4sYUFBQSxNQUFBLENBQUEsVUFBQTtBQUNBLDhCQUFBLFlBQUEsRUFBQSxJQUFBLHNCQUFBLE1BQUE7QUFDRDs7QUEvQkgsVUFNRSxNQU5GLHFCQU0rQztBQUFBLDBDQUE3QyxJQUE2QztBQUE3QyxnQkFBNkM7QUFBQTs7QUFDM0MsWUFBSSxhQUFhLEtBQUssS0FBQSxNQUFBLEdBQXRCLENBQWlCLENBQWpCO0FBRUEsWUFBSSxLQUFBLE1BQUEsS0FBSixDQUFBLEVBQXVCO0FBQ3JCLG1CQUFPLElBQUEsSUFBQSxDQUFBLEVBQUEsRUFBUCxFQUFPLENBQVA7QUFERixTQUFBLE1B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RXZDLFFBQUksY0FBYyxLQUFsQixVQUFrQixDQUFsQjtBQUVBLFFBQUksT0FBTyxTQUFQLElBQU8sR0FBNEM7QUFBQSwyQ0FBNUMsSUFBNEM7QUFBNUMsZ0JBQTRDO0FBQUE7O0FBQ3JELFlBQUksQ0FBSixJQUFBLEVBQVcsT0FBTyxTQUFBLEtBQUEsQ0FBQSxJQUFBLEVBQVAsSUFBTyxDQUFQO0FBRVgsWUFBSSxZQUFZLEtBQWhCLE1BQUE7QUFDQSxhQUFBLE1BQUEsR0FBQSxXQUFBO0FBRUEsWUFBSTtBQUNGLG1CQUFPLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBUCxJQUFPLENBQVA7QUFERixTQUFBLFNBRVU7QUFDUixpQkFBQSxNQUFBLEdBQUEsU0FBQTtBQUNEO0FBVkgsS0FBQTtBQWFDLFNBQUEsU0FBQSxHQUFBLElBQUE7QUFFRCxXQUFBLElBQUE7QUFDRDtBQUVELFNBQUEsU0FBQSxDQUFBLFFBQUEsRUFBcUM7QUFDbkMsUUFBSSxlQUFKLFFBQUEsRUFBNkIsT0FBQSxRQUFBO0FBRTdCLFdBQU8sWUFBNEM7QUFBQSwyQ0FBNUMsSUFBNEM7QUFBNUMsZ0JBQTRDO0FBQUE7O0FBQ2pELFlBQUksQ0FBSixJQUFBLEVBQVcsT0FBTyxTQUFBLEtBQUEsQ0FBQSxJQUFBLEVBQVAsSUFBTyxDQUFQO0FBRVgsWUFBSSxZQUFZLEtBQWhCLE1BQUE7QUFDQSxhQUFBLE1BQUEsR0FBQSxJQUFBO0FBRUEsWUFBSTtBQUNGLG1CQUFPLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBUCxJQUFPLENBQVA7QUFERixTQUFBLFNBRVU7QUFDUixpQkFBQSxNQUFBLEdBQUEsU0FBQTtBQUNEO0FBVkgsS0FBQTtBQVlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ0xBU1NfTUVUQSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgZGljdCwgYXNzaWduIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgR2xpbW1lck9iamVjdCwge1xuICBHbGltbWVyT2JqZWN0RmFjdG9yeSxcbiAgQ2xhc3NNZXRhLFxuICBJbnN0YW5jZU1ldGEsXG4gIHR1cmJvY2hhcmdlLFxufSBmcm9tICcuL29iamVjdCc7XG5cbmltcG9ydCB7IFJPT1QgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IERpY3QgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuY29uc3QgeyBpc0FycmF5IH0gPSBBcnJheTtcblxuZXhwb3J0IGNvbnN0IERFU0NSSVBUT1IgPSAnNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjJztcbmV4cG9ydCBjb25zdCBCTFVFUFJJTlQgPSAnOGQ5N2NmNWYtZGI5ZS00OGQ4LWE2YjItN2E3NWI3MTcwODA1JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERlc2NyaXB0b3Ige1xuICAnNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjJyA9IHRydWU7XG4gIGFic3RyYWN0IGRlZmluZShwcm90b3R5cGU6IE9iamVjdCwga2V5OiBzdHJpbmcsIGhvbWU6IE9iamVjdCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCbHVlcHJpbnQge1xuICAnOGQ5N2NmNWYtZGI5ZS00OGQ4LWE2YjItN2E3NWI3MTcwODA1JyA9IHRydWU7XG4gIGFic3RyYWN0IGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9ucyB7XG4gIGNvbmNhdGVuYXRlZFByb3BlcnRpZXM/OiBzdHJpbmdbXSB8IHN0cmluZyB8IG51bGw7XG4gIG1lcmdlZFByb3BlcnRpZXM/OiBzdHJpbmdbXSB8IHN0cmluZztcbiAgX3N1cGVyPzogRnVuY3Rpb247XG4gIFtpbmRleDogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgTWl4aW4ge1xuICBwcml2YXRlIGV4dGVuc2lvbnM6IERpY3Q8YW55PiA9IG51bGwgYXMgYW55OyAvLyBhc3NpZ25lZCBiZWZvcmUgdXNlZFxuICBwcml2YXRlIGNvbmNhdGVuYXRlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgbWVyZ2VkUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBkZXBlbmRlbmNpZXM6IE1peGluW10gPSBbXTtcblxuICBzdGF0aWMgY3JlYXRlKC4uLmFyZ3M6IChNaXhpbiB8IEV4dGVuc2lvbnMpW10pIHtcbiAgICBsZXQgZXh0ZW5zaW9ucyA9IGFyZ3NbYXJncy5sZW5ndGggLSAxXTtcblxuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHt9LCBbXSk7XG4gICAgfSBlbHNlIGlmIChleHRlbnNpb25zIGluc3RhbmNlb2YgTWl4aW4pIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgYXJncyBhcyBNaXhpbltdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGRlcHMgPSBhcmdzLnNsaWNlKDAsIC0xKS5tYXAodG9NaXhpbik7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoZXh0ZW5zaW9ucyBhcyBFeHRlbnNpb25zLCBkZXBzKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgbWl4aW5zKG9iajogYW55KTogTWl4aW5bXSB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIFtdO1xuXG4gICAgbGV0IG1ldGEgPSBDbGFzc01ldGEuZm9yKG9iaik7XG4gICAgaWYgKCFtZXRhKSByZXR1cm4gW107XG5cbiAgICByZXR1cm4gbWV0YS5nZXRBcHBsaWVkTWl4aW5zKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihleHRlbnNpb25zOiBFeHRlbnNpb25zLCBtaXhpbnM6IE1peGluW10pIHtcbiAgICB0aGlzLnJlb3BlbihleHRlbnNpb25zKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKC4uLm1peGlucyk7XG4gIH1cblxuICBkZXRlY3Qob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAob2JqIGluc3RhbmNlb2YgTWl4aW4pIHtcbiAgICAgIHJldHVybiBvYmouZGVwZW5kZW5jaWVzLmluZGV4T2YodGhpcykgIT09IC0xO1xuICAgIH1cblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIHJldHVybiAhIW1ldGEgJiYgbWV0YS5oYXNBcHBsaWVkTWl4aW4odGhpcyk7XG4gIH1cblxuICByZW9wZW4oZXh0ZW5zaW9uczogRXh0ZW5zaW9ucykge1xuICAgIGlmICh0aGlzLmV4dGVuc2lvbnMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2godG9NaXhpbih0aGlzLmV4dGVuc2lvbnMpKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICBsZXQgY29uY2F0OiBzdHJpbmdbXTtcbiAgICAgIGxldCByYXdDb25jYXQgPSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHJhd0NvbmNhdCkpIHtcbiAgICAgICAgY29uY2F0ID0gKHJhd0NvbmNhdCBhcyBzdHJpbmdbXSkuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAocmF3Q29uY2F0ID09PSBudWxsIHx8IHJhd0NvbmNhdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbmNhdCA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uY2F0ID0gW3Jhd0NvbmNhdCBhcyBzdHJpbmddO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gY29uY2F0O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXh0ZW5zaW9ucyA9PT0gJ29iamVjdCcgJiYgJ21lcmdlZFByb3BlcnRpZXMnIGluIGV4dGVuc2lvbnMpIHtcbiAgICAgIGxldCBtZXJnZWQ6IHN0cmluZ1tdO1xuICAgICAgbGV0IHJhd01lcmdlZCA9IGV4dGVuc2lvbnMubWVyZ2VkUHJvcGVydGllcztcblxuICAgICAgaWYgKGlzQXJyYXkocmF3TWVyZ2VkKSkge1xuICAgICAgICBtZXJnZWQgPSAocmF3TWVyZ2VkIGFzIHN0cmluZ1tdKS5zbGljZSgpO1xuICAgICAgfSBlbHNlIGlmIChyYXdNZXJnZWQgPT09IG51bGwgfHwgcmF3TWVyZ2VkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWVyZ2VkID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXJnZWQgPSBbcmF3TWVyZ2VkIGFzIHN0cmluZ107XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBleHRlbnNpb25zLm1lcmdlZFByb3BlcnRpZXM7XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBtZXJnZWQ7XG4gICAgfVxuXG4gICAgbGV0IG5vcm1hbGl6ZWQ6IERpY3Q8Qmx1ZXByaW50PiA9IE9iamVjdC5rZXlzKGV4dGVuc2lvbnMpLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IGV4dGVuc2lvbnNba2V5XTtcblxuICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgIG9ialtrZXldID0gbmV3IE1ldGhvZEJsdWVwcmludCh7IHZhbHVlIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICAgIGlmICh2YWx1ZSAmJiBCTFVFUFJJTlQgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBEYXRhQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSwgZGljdDxCbHVlcHJpbnQ+KCkpO1xuXG4gICAgdGhpcy5leHRlbnNpb25zID0gZGljdDxhbnk+KCk7XG4gICAgYXNzaWduKHRoaXMuZXh0ZW5zaW9ucywgdHVyYm9jaGFyZ2Uobm9ybWFsaXplZCkpO1xuICB9XG5cbiAgYXBwbHkodGFyZ2V0OiBhbnkpIHtcbiAgICBsZXQgbWV0YTogQ2xhc3NNZXRhID0gKHRhcmdldFtDTEFTU19NRVRBXSA9IHRhcmdldFtDTEFTU19NRVRBXSB8fCBuZXcgQ2xhc3NNZXRhKCkpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmFwcGx5KHRhcmdldCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKHRhcmdldCwgdGFyZ2V0LCBtZXRhKTtcbiAgICBtZXRhLmFkZE1peGluKHRoaXMpO1xuICAgIG1ldGEuc2VhbCgpO1xuICAgIG1ldGEucmVzZWFsKHRhcmdldCk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgZXh0ZW5kUHJvdG90eXBlKE9yaWdpbmFsOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgT3JpZ2luYWwucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShPcmlnaW5hbC5wcm90b3R5cGUpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZShPcmlnaW5hbCkpO1xuICAgIHRoaXMuZXh0ZW5kUHJvdG90eXBlT250byhPcmlnaW5hbCwgT3JpZ2luYWwpO1xuICB9XG5cbiAgZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXMoU3ViY2xhc3MucHJvdG90eXBlLCBQYXJlbnQucHJvdG90eXBlLCBTdWJjbGFzc1tDTEFTU19NRVRBXSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uYWRkTWl4aW4odGhpcyk7XG4gIH1cblxuICBleHRlbmRTdGF0aWMoVGFyZ2V0OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kU3RhdGljKFRhcmdldCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFRhcmdldCwgT2JqZWN0LmdldFByb3RvdHlwZU9mKFRhcmdldCksIFRhcmdldFtDTEFTU19NRVRBXVtDTEFTU19NRVRBXSk7XG4gICAgVGFyZ2V0W0NMQVNTX01FVEFdLmFkZFN0YXRpY01peGluKHRoaXMpO1xuICB9XG5cbiAgbWVyZ2VQcm9wZXJ0aWVzKHRhcmdldDogT2JqZWN0LCBwYXJlbnQ6IERpY3Q8RGljdD4sIG1ldGE6IENsYXNzTWV0YSkge1xuICAgIGlmIChtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKSkgcmV0dXJuO1xuICAgIG1ldGEuYWRkQXBwbGllZE1peGluKHRoaXMpO1xuXG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZE1lcmdlZFByb3BlcnR5KGssIHBhcmVudFtrXSkpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrLCBbXSkpO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUoXG4gICAgICB0YXJnZXQsXG4gICAgICAnY29uY2F0ZW5hdGVkUHJvcGVydGllcydcbiAgICApO1xuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRNZXJnZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ21lcmdlZFByb3BlcnRpZXMnKTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZW5zaW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgbGV0IGV4dGVuc2lvbjogQmx1ZXByaW50ID0gdGhpcy5leHRlbnNpb25zIVtrZXldO1xuICAgICAgbGV0IGRlc2MgPSBleHRlbnNpb24uZGVzY3JpcHRvcih0YXJnZXQsIGtleSBhcyBzdHJpbmcsIG1ldGEpO1xuICAgICAgZGVzYy5kZWZpbmUodGFyZ2V0LCBrZXkgYXMgc3RyaW5nLCBwYXJlbnQpO1xuICAgIH0pO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBST09UIH0pLmRlZmluZSh0YXJnZXQsICdfc3VwZXInIGFzIHN0cmluZyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uID0gTWl4aW4gfCBFeHRlbnNpb25zO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kPFQgZXh0ZW5kcyBHbGltbWVyT2JqZWN0PihcbiAgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPixcbiAgLi4uZXh0ZW5zaW9uczogRXh0ZW5zaW9uW11cbik6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4ge1xuICBsZXQgU3VwZXIgPSBQYXJlbnQgYXMgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgbGV0IFN1YmNsYXNzID0gY2xhc3MgZXh0ZW5kcyBTdXBlciB7fTtcbiAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0gPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuXG4gIGxldCBtaXhpbnMgPSBleHRlbnNpb25zLm1hcCh0b01peGluKTtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmFkZFN1YmNsYXNzKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pO1xuICBtaXhpbnMuZm9yRWFjaChtID0+IFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKG0pKTtcblxuICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MgYXMgR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50KTtcblxuICByZXR1cm4gU3ViY2xhc3MgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsaW5rU3ViY2xhc3NlcyhQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmdldFN1YmNsYXNzZXMoKS5mb3JFYWNoKChTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PikgPT4ge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnJlc2V0KFBhcmVudFtDTEFTU19NRVRBXSk7XG4gICAgU3ViY2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQYXJlbnQucHJvdG90eXBlKTtcblxuICAgIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcywgUGFyZW50KTtcblxuICAgIC8vIHJlY3Vyc2UgaW50byBzdWItc3ViY2xhc3Nlc1xuICAgIHJlbGlua1N1YmNsYXNzZXMoU3ViY2xhc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTWl4aW4oZXh0ZW5zaW9uOiBFeHRlbnNpb24pOiBNaXhpbiB7XG4gIGlmIChleHRlbnNpb24gaW5zdGFuY2VvZiBNaXhpbikgcmV0dXJuIGV4dGVuc2lvbjtcbiAgZWxzZSByZXR1cm4gbmV3IE1peGluKGV4dGVuc2lvbiBhcyBPYmplY3QsIFtdKTtcbn1cblxuY2xhc3MgVmFsdWVEZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIHdyaXRhYmxlID0gdHJ1ZSxcbiAgICB2YWx1ZSxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBfaG9tZT86IGFueSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgIHdyaXRhYmxlOiB0aGlzLndyaXRhYmxlLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGFCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICB3cml0YWJsZSA9IHRydWUsXG4gICAgdmFsdWUsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGxldCB7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0gPSB0aGlzO1xuXG4gICAgaWYgKGNsYXNzTWV0YS5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgY2xhc3NNZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcsIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSBpZiAoY2xhc3NNZXRhLmhhc01lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkTWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZywgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0TWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9KTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWNjZXNzb3JCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgZ2V0OiAoKSA9PiBhbnk7XG4gIHNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgZ2V0LFxuICAgIHNldCxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yICYgeyBnZXQ6IGFueTsgc2V0OiBhbnkgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLmdldCA9IGdldDtcbiAgICB0aGlzLnNldCA9IHNldDtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9jbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICBnZXQ6IHRoaXMuZ2V0LFxuICAgICAgc2V0OiB0aGlzLnNldCxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgVmFsdWVEZXNjcmlwdG9yIHtcbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHdyYXBNZXRob2QoaG9tZSwga2V5LCB0aGlzLnZhbHVlKTtcbiAgICBzdXBlci5kZWZpbmUodGFyZ2V0LCBrZXksIGhvbWUpO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZEJsdWVwcmludCBleHRlbmRzIERhdGFCbHVlcHJpbnQge1xuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBNZXRob2REZXNjcmlwdG9yIHtcbiAgICBsZXQgZGVzYyA9IHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIGNsYXNzTWV0YSk7XG4gICAgcmV0dXJuIG5ldyBNZXRob2REZXNjcmlwdG9yKGRlc2MgYXMgUHJvcGVydHlEZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcE1ldGhvZChob21lOiBEaWN0LCBtZXRob2ROYW1lOiBzdHJpbmcsIG9yaWdpbmFsOiAoLi4uYXJnczogYW55W10pID0+IGFueSkge1xuICBpZiAoISgobWV0aG9kTmFtZSBhcyBzdHJpbmcpIGluIGhvbWUpKSByZXR1cm4gbWF5YmVXcmFwKG9yaWdpbmFsKTtcblxuICBsZXQgc3VwZXJNZXRob2QgPSBob21lW21ldGhvZE5hbWVdO1xuXG4gIGxldCBmdW5jID0gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IHN1cGVyTWV0aG9kIGFzIGFueTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICAoZnVuYyBhcyBhbnkpLl9fd3JhcHBlZCA9IHRydWU7XG5cbiAgcmV0dXJuIGZ1bmM7XG59XG5cbmZ1bmN0aW9uIG1heWJlV3JhcChvcmlnaW5hbDogRnVuY3Rpb24pIHtcbiAgaWYgKCdfX3dyYXBwZWQnIGluIG9yaWdpbmFsKSByZXR1cm4gb3JpZ2luYWw7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHRoaXM6IEdsaW1tZXJPYmplY3QsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKCF0aGlzKSByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG5cbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBST09UO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFPLFNBQUUsQUFBSSxNQUF5QixBQUFpQixBQUFFLHlCQUFNLEFBQTJCLEFBQUM7QUFDM0YsQUFBTyxTQUFRLEFBQUksTUFBRSxBQUFNLFFBQUUsQUFBYyxBQUFFLHNCQUFNLEFBQWUsQUFBQztBQUNuRSxBQUFPLFNBQVMsQUFBTSxVQUFJLEFBQVcsYUFBRSxBQUFPLFNBQUUsQUFBZ0Isa0JBQUUsQUFBVSxBQUFFLGtCQUFNLEFBQVMsQUFBQyxBQUU5RixBQUFNO0lBQUUsQUFBTyxBQUFFLFVBQUcsQUFBSyxBQUFDOztBQUUxQixBQUFPLFNBQUUsQUFBSSxBQUFFLFlBQU0sQUFBUyxBQUFDO0FBRS9CLEFBQU8sU0FBRSxBQUFJLEFBQUUsWUFBTSxBQUFvQixBQUFDO0FBRTFDLEFBQU0sT0FBQyxJQUFNLEFBQVcsY0FBRyxTQUFTLEFBQVcsY0FBSSxBQUFDLEFBQUM7QUFFckQsSUFBTSxBQUFVLGFBQUcsQUFBc0MsQUFBQztBQXdCMUQsQUFBTSxnQkFBVSxBQUFXLFlBQUksQUFBTSxLQUNuQyxBQUFzQjtBQUN0QixBQUF5QjtBQUN6QjtXQUFPLEFBQUcsQUFBQyxBQUNiLEFBQUM7QUFFRDs7SUFBZSxBQUFXOzs7Ozs7Ozs7eUJBQ0osQUFBRyxBQUFZLHFEQUNqQztjQUFNLElBQUksQUFBSyxNQUFDLEFBQWdELEFBQUMsQUFBQyxBQUNwRSxBQUFDLEFBQ0Y7Ozs7RUFKaUMsQUFBSSxBQUNwQyxBQUFtQjs7QUFLckIsQUFBTSxXQUFOLEFBQWEsQUFBUzs7QUFDWjs7YUFBYyxpQkFBRyxBQUFJLEFBQThCLEFBQUMsQUFDcEQ7YUFBZ0IsbUJBQUcsQUFBSSxBQUFPLEFBQUMsQUFDL0I7YUFBc0IseUJBQUcsQUFBSSxBQUFTLEFBQUMsQUFD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SSxBQUFFLEFBQUMsQUFDVDtBQUFDO0FBRUQsQUFBTzs7eURBQUksQUFBQzs7Ozs7OztBQXpFTCxjQUFzQywwQ0FBaUIsQUFBWSxhQUFDLEFBQVUsV0FBQyxBQUFJLEFBQUMsQUFBQztBQUNyRixjQUFPLFVBQUcsQUFBSSxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWV0YSwgSW5uZXJSZWZlcmVuY2VGYWN0b3J5LCBQcm9wZXJ0eVJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRGljdCwgZGljdCwgYXNzaWduLCBpbml0aWFsaXplR3VpZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgTWl4aW4sIGV4dGVuZCBhcyBleHRlbmRDbGFzcywgdG9NaXhpbiwgcmVsaW5rU3ViY2xhc3Nlcywgd3JhcE1ldGhvZCB9IGZyb20gJy4vbWl4aW4nO1xuXG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGJ1bXAgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfQ0FDSEUgPSBmdW5jdGlvbiBFTVBUWV9DQUNIRSgpIHt9O1xuXG5jb25zdCBDTEFTU19NRVRBID0gJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0V2l0aE1peGlucyB7XG4gICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBDbGFzc01ldGE7XG4gIF9tZXRhOiBNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlV2l0aE1peGlucyB7XG4gIGNvbnN0cnVjdG9yOiBPYmplY3RXaXRoTWl4aW5zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+IHtcbiAgbmV3IDxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxPYmplY3Q+O1xuICBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD47XG4gIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGNyZWF0ZTxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgcmVvcGVuQ2xhc3M8VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQ7XG4gIG1ldGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0O1xuICBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZDtcbiAgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1cmJvY2hhcmdlPFQ+KG9iajogVCk6IFQge1xuICAvLyBmdW5jdGlvbiBEdW1teSgpIHt9XG4gIC8vIER1bW15LnByb3RvdHlwZSA9IG9iajtcbiAgcmV0dXJuIG9iajtcbn1cblxuYWJzdHJhY3QgY2xhc3MgU2VhbGVkTWV0YSBleHRlbmRzIE1ldGEge1xuICBhZGRSZWZlcmVuY2VUeXBlRm9yKC4uLl9hcmdzOiBhbnlbXSk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBtb2RpZnkgcmVmZXJlbmNlIHR5cGVzIG9uIGEgc2VhbGVkIG1ldGEnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xhc3NNZXRhIHtcbiAgcHJpdmF0ZSByZWZlcmVuY2VUeXBlcyA9IGRpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+KCk7XG4gIHByaXZhdGUgcHJvcGVydHlNZXRhZGF0YSA9IGRpY3Q8YW55PigpO1xuICBwcml2YXRlIGNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0PGFueVtdPigpO1xuICBwcml2YXRlIGhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzID0gZGljdDxPYmplY3Q+KCk7XG4gIHByaXZhdGUgaGFzTWVyZ2VkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIGFwcGxpZWRNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGF0aWNNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJjbGFzc2VzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+W10gPSBbXTtcbiAgcHJpdmF0ZSBzbG90czogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIEluc3RhbmNlTWV0YUNvbnN0cnVjdG9yOiBPcHRpb248dHlwZW9mIE1ldGE+ID0gbnVsbDtcblxuICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQ6IE9wdGlvbjxDbGFzc01ldGE+KSB7XG4gICAgbGV0IG1ldGEgPSBuZXcgdGhpcygpO1xuICAgIG1ldGEucmVzZXQocGFyZW50KTtcbiAgICByZXR1cm4gbWV0YTtcbiAgfVxuXG4gIHN0YXRpYyBmb3Iob2JqZWN0OiBPYmplY3RXaXRoTWl4aW5zIHwgSW5zdGFuY2VXaXRoTWl4aW5zKTogT3B0aW9uPENsYXNzTWV0YT4ge1xuICAgIGlmIChDTEFTU19NRVRBIGluIG9iamVjdCkgcmV0dXJuIChvYmplY3QgYXMgT2JqZWN0V2l0aE1peGlucylbQ0xBU1NfTUVUQV07XG4gICAgZWxzZSBpZiAob2JqZWN0LmNvbnN0cnVjdG9yKVxuICAgICAgcmV0dXJuIChvYmplY3QgYXMgSW5zdGFuY2VXaXRoTWl4aW5zKS5jb25zdHJ1Y3RvcltDTEFTU19NRVRBXSB8fCBudWxsO1xuICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpbml0KG9iamVjdDogR2xpbW1lck9iamVjdCwgYXR0cnM6IE9wdGlvbjxPYmplY3Q+KSB7XG4gICAgaWYgKHR5cGVvZiBhdHRycyAhPT0gJ29iamVjdCcgfHwgYXR0cnMgPT09IG51bGwpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBjb25jYXRQcm9wcyA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gY29uY2F0UHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgY29uY2F0ID0gY29uY2F0UHJvcHNbcHJvcF0uc2xpY2UoKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBjb25jYXQuY29uY2F0KGF0dHJzW3Byb3BdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBtZXJnZWRQcm9wcyA9IHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gbWVyZ2VkUHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBtZXJnZWRQcm9wc1twcm9wXSk7XG4gICAgICAgICAgb2JqZWN0W3Byb3BdID0gYXNzaWduKG1lcmdlZCwgYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5zdGF0aWNNaXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBhZGRNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLm1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGdldFN0YXRpY01peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNNaXhpbnM7XG4gIH1cblxuICBnZXRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMubWl4aW5zO1xuICB9XG5cbiAgYWRkQXBwbGllZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMuYXBwbGllZE1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGhhc0FwcGxpZWRNaXhpbihtaXhpbjogTWl4aW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIGdldEFwcGxpZWRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucztcbiAgfVxuXG4gIGhhc1N0YXRpY01peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucy5pbmRleE9mKG1peGluKSAhPT0gLTE7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldE1peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldFN0YXRpY01peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFN0YXRpYyhTdWJjbGFzcykpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIGFkZFN1YmNsYXNzKGNvbnN0cnVjdG9yOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5zdWJjbGFzc2VzLnB1c2goY29uc3RydWN0b3IpO1xuICB9XG5cbiAgZ2V0U3ViY2xhc3NlcygpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+W10ge1xuICAgIHJldHVybiB0aGlzLnN1YmNsYXNzZXM7XG4gIH1cblxuICBhZGRQcm9wZXJ0eU1ldGFkYXRhKHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGFbcHJvcGVydHldID0gdmFsdWU7XG4gIH1cblxuICBtZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGFbcHJvcGVydHldO1xuICB9XG5cbiAgYWRkUmVmZXJlbmNlVHlwZUZvcihwcm9wZXJ0eTogc3RyaW5nLCB0eXBlOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldID0gdHlwZTtcbiAgfVxuXG4gIGFkZFNsb3RGb3IocHJvcGVydHk6IHN0cmluZykge1xuICAgIHRoaXMuc2xvdHMucHVzaChwcm9wZXJ0eSk7XG4gIH1cblxuICBoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIGFzIHN0cmluZ1tdO1xuICB9XG5cbiAgYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHRydWU7XG5cbiAgICBpZiAoKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgdmFsID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XS5jb25jYXQodmFsdWUpO1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGhhc01lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLm1lcmdlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm1lcmdlZFByb3BlcnRpZXMpIGFzIHN0cmluZ1tdO1xuICB9XG5cbiAgYWRkTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IE9iamVjdCkge1xuICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHRydWU7XG5cbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBwYXNzZWQgaW4gXFxgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICApfVxcYCBhcyB0aGUgdmFsdWUgZm9yIFxcYGZvb1xcYCBidXQgXFxgZm9vXFxgIGNhbm5vdCBiZSBhbiBBcnJheWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcyAmJiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gbWVyZ2VNZXJnZWRQcm9wZXJ0aWVzKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IHZhbHVlIDogdmFsdWUgfHwge307XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVmZXJlbmNlVHlwZXMoKTogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlNZXRhZGF0YSgpOiBEaWN0PGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGE7XG4gIH1cblxuICByZXNldChwYXJlbnQ6IE9wdGlvbjxDbGFzc01ldGE+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlcyA9IGRpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+KCk7XG4gICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhID0gZGljdCgpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gZGljdDxPYmplY3Q+KCk7XG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BdID0gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0uc2xpY2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc01lcmdlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5tZXJnZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wXSA9IGFzc2lnbih7fSwgcGFyZW50Lm1lcmdlZFByb3BlcnRpZXNbcHJvcF0pO1xuICAgICAgfVxuXG4gICAgICBhc3NpZ24odGhpcy5yZWZlcmVuY2VUeXBlcywgcGFyZW50LnJlZmVyZW5jZVR5cGVzKTtcbiAgICAgIGFzc2lnbih0aGlzLnByb3BlcnR5TWV0YWRhdGEsIHBhcmVudC5wcm9wZXJ0eU1ldGFkYXRhKTtcbiAgICB9XG4gIH1cblxuICByZXNlYWwob2JqOiBPYmplY3QpIHtcbiAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKG9iaik7XG4gICAgbGV0IGZyZXNoID0gbmV3IHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IhKG9iaiwge30pO1xuICAgIGxldCByZWZlcmVuY2VUeXBlcyA9IG1ldGEuZ2V0UmVmZXJlbmNlVHlwZXMoKTtcbiAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICB0dXJib2NoYXJnZShhc3NpZ24ocmVmZXJlbmNlVHlwZXMsIHRoaXMucmVmZXJlbmNlVHlwZXMpKTtcbiAgICB0dXJib2NoYXJnZShhc3NpZ24oc2xvdHMsIGZyZXNoLmdldFNsb3RzKCkpKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHR1cmJvY2hhcmdlKFxuICAgICAgYXNzaWduKHt9LCB0aGlzLnJlZmVyZW5jZVR5cGVzKVxuICAgICk7XG4gICAgdHVyYm9jaGFyZ2UodGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLm1lcmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgJiYgIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG5cbiAgICBsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xuXG4gICAgY2xhc3MgU2xvdHMge1xuICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHNsb3RzLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgdGhpc1tuYW1lXSA9IEVNUFRZX0NBQ0hFO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLkluc3RhbmNlTWV0YUNvbnN0cnVjdG9yID0gY2xhc3MgZXh0ZW5kcyBTZWFsZWRNZXRhIHtcbiAgICAgIHByb3RlY3RlZCBzbG90czogU2xvdHMgPSBuZXcgU2xvdHMoKTtcbiAgICAgIHB1YmxpYyByZWZlcmVuY2VUeXBlczogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4gPSByZWZlcmVuY2VUeXBlcztcblxuICAgICAgZ2V0UmVmZXJlbmNlVHlwZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzO1xuICAgICAgfVxuXG4gICAgICByZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcpOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzW3Byb3BlcnR5XSB8fCBQcm9wZXJ0eVJlZmVyZW5jZTtcbiAgICAgIH1cblxuICAgICAgZ2V0U2xvdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNsb3RzO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0dXJib2NoYXJnZSh0aGlzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZU1lcmdlZFByb3BlcnRpZXMoYXR0cnM6IE9iamVjdCwgcGFyZW50OiBPYmplY3QpIHtcbiAgbGV0IG1lcmdlZCA9IGFzc2lnbih7fSwgcGFyZW50KTtcblxuICBmb3IgKGxldCBwcm9wIGluIGF0dHJzKSB7XG4gICAgaWYgKHByb3AgaW4gcGFyZW50ICYmIHR5cGVvZiBwYXJlbnRbcHJvcF0gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGF0dHJzW3Byb3BdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBsZXQgd3JhcHBlZCA9IHdyYXBNZXRob2QocGFyZW50LCBwcm9wLCBhdHRyc1twcm9wXSk7XG4gICAgICBtZXJnZWRbcHJvcF0gPSB3cmFwcGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZWRbcHJvcF0gPSBhdHRyc1twcm9wXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkO1xufVxuXG5leHBvcnQgY2xhc3MgSW5zdGFuY2VNZXRhIGV4dGVuZHMgQ2xhc3NNZXRhIHtcbiAgcHVibGljICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBDbGFzc01ldGEgPSBDbGFzc01ldGEuZnJvbVBhcmVudChudWxsKTtcblxuICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQ6IE9wdGlvbjxJbnN0YW5jZU1ldGE+KTogSW5zdGFuY2VNZXRhIHtcbiAgICByZXR1cm4gc3VwZXIuZnJvbVBhcmVudChwYXJlbnQpIGFzIEluc3RhbmNlTWV0YTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogSW5zdGFuY2VNZXRhKSB7XG4gICAgc3VwZXIucmVzZXQocGFyZW50KTtcbiAgICBpZiAocGFyZW50KSB0aGlzW0NMQVNTX01FVEFdLnJlc2V0KHBhcmVudFtDTEFTU19NRVRBXSk7XG4gIH1cblxuICBzZWFsKCkge1xuICAgIHN1cGVyLnNlYWwoKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHbGltbWVyT2JqZWN0IHtcbiAgc3RhdGljICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBJbnN0YW5jZU1ldGEgPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChudWxsKTtcbiAgc3RhdGljIGlzQ2xhc3MgPSB0cnVlO1xuXG4gIHN0YXRpYyBleHRlbmQoKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuICBzdGF0aWMgZXh0ZW5kPFQ+KGV4dGVuc2lvbjogVCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQoLi4uZXh0ZW5zaW9uczogT2JqZWN0W10pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgc3RhdGljIGV4dGVuZCh0aGlzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCAuLi5leHRlbnNpb25zOiBhbnlbXSkge1xuICAgIHJldHVybiBleHRlbmRDbGFzcyh0aGlzLCAuLi5leHRlbnNpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUoYXR0cnM/OiBPYmplY3QgfCBudWxsKTogR2xpbW1lck9iamVjdCB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKGF0dHJzKTtcbiAgfVxuXG4gIHN0YXRpYyByZW9wZW48VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQge1xuICAgIHRvTWl4aW4oZXh0ZW5zaW9ucykuZXh0ZW5kUHJvdG90eXBlKHRoaXMpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuXG4gICAgcmVsaW5rU3ViY2xhc3Nlcyh0aGlzKTtcbiAgfVxuXG4gIHN0YXRpYyByZW9wZW5DbGFzczxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRTdGF0aWModGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cblxuICBzdGF0aWMgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIGxldCB2YWx1ZSA9IHRoaXNbQ0xBU1NfTUVUQV0ubWV0YWRhdGFGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgaWYgKCF2YWx1ZSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYG1ldGFGb3JQcm9wZXJ0eSgpIGNvdWxkIG5vdCBmaW5kIGEgY29tcHV0ZWQgcHJvcGVydHkgd2l0aCBrZXkgJyR7cHJvcGVydHl9Jy5gXG4gICAgICApO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IG1ldGFkYXRhID0gdGhpc1tDTEFTU19NRVRBXS5nZXRQcm9wZXJ0eU1ldGFkYXRhKCk7XG4gICAgaWYgKCFtZXRhZGF0YSkgcmV0dXJuO1xuXG4gICAgZm9yIChsZXQgcHJvcCBpbiBtZXRhZGF0YSkge1xuICAgICAgY2FsbGJhY2socHJvcCwgbWV0YWRhdGFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIF9zdXBlciA9IFJPT1Q7XG4gIF9tZXRhID0gbnVsbDtcbiAgX2d1aWQhOiBudW1iZXI7IC8vIFNldCBieSBpbml0aWFsaXplR3VpZCh0aGlzKSBpbiBjb25zdHJ1Y3RvclxuXG4gIGluaXQoKSB7fVxuXG4gIGNvbnN0cnVjdG9yKGF0dHJzPzogT2JqZWN0IHwgbnVsbCkge1xuICAgIGlmIChhdHRycykgYXNzaWduKHRoaXMsIGF0dHJzKTtcbiAgICAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgR2xpbW1lck9iamVjdClbQ0xBU1NfTUVUQV0uaW5pdCh0aGlzLCBhdHRycyB8fCBudWxsKTtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG4gICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzW2tleV07XG4gIH1cblxuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgICBidW1wKCk7XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKGF0dHJzOiBPYmplY3QpIHtcbiAgICBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7fVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsU0FBQSxJQUFBLEVBQUEsaUJBQUEsUUFBQSwyQkFBQTtBQUNBLFNBQUEsSUFBQSxFQUFBLE1BQUEsRUFBQSxjQUFBLFFBQUEsZUFBQTtBQUNBLFNBQWdCLFVBQWhCLFdBQUEsRUFBQSxPQUFBLEVBQUEsZ0JBQUEsRUFBQSxVQUFBLFFBQUEsU0FBQTtJQUVNLE8sR0FBTixLLENBQU0sTzs7QUFFTixTQUFBLElBQUEsUUFBQSxTQUFBO0FBRUEsU0FBQSxJQUFBLFFBQUEsb0JBQUE7QUFFQSxPQUFPLElBQU0sY0FBYyxTQUFBLFdBQUEsR0FBb0IsQ0FBeEMsQ0FBQTtBQUVQLElBQU0sYUFBTixzQ0FBQTtBQXdCQSxPQUFNLFNBQUEsV0FBQSxDQUFBLEdBQUEsRUFBK0I7QUFDbkM7QUFDQTtBQUNBLFdBQUEsR0FBQTtBQUNEOztJQUVELFU7Ozs7Ozs7Ozt5QkFDRSxtQixrQ0FBbUM7QUFDakMsY0FBTSxJQUFBLEtBQUEsQ0FBTixnREFBTSxDQUFOO0FBQ0QsSzs7O0VBSEgsSTs7QUFNQSxXQUFNLFNBQU47QUFBQSx5QkFBQTtBQUFBOztBQUNVLGFBQUEsY0FBQSxHQUFBLE1BQUE7QUFDQSxhQUFBLGdCQUFBLEdBQUEsTUFBQTtBQUNBLGFBQUEsc0JBQUEsR0FBQSxNQUFBO0FBQ0EsYUFBQSx5QkFBQSxHQUFBLEtBQUE7QUFDQSxhQUFBLGdCQUFBLEdBQUEsTUFBQTtBQUNBLGFBQUEsbUJBQUEsR0FBQSxLQUFBO0FBQ0EsYUFBQSxNQUFBLEdBQUEsRUFBQTtBQUNBLGFBQUEsYUFBQSxHQUFBLEVBQUE7QUFDQSxhQUFBLFlBQUEsR0FBQSxFQUFBO0FBQ0EsYUFBQSxVQUFBLEdBQUEsRUFBQTtBQUNBLGFBQUEsS0FBQSxHQUFBLEVBQUE7QUFDRCxhQUFBLHVCQUFBLEdBQUEsSUFBQTtBQWtQUjs7QUE5UEQs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bUJBQUksQ0FBSyxDOzs0QkFVVCxHLGdCQUFBLEcsRUFBZTtBQUNiLGVBQU8sS0FBUCxHQUFPLENBQVA7QUFDRCxLOzs0QkFFRCxHLGdCQUFBLEcsRUFBQSxLLEVBQTJCO0FBQ3pCLGFBQUEsR0FBQSxJQUFBLEtBQUE7QUFDQTtBQUNELEs7OzRCQUVELGEsMEJBQUEsSyxFQUEyQjtBQUN6QixlQUFBLElBQUEsRUFBQSxLQUFBO0FBQ0E7QUFDRCxLOzs0QkFFRCxPLHNCQUFPLENBQUssQzs7Ozs7ZUE1RUEsYTs7QUFHTCxjQUFBLHNDQUFBLElBQXVELGFBQUEsVUFBQSxDQUF2RCxJQUF1RCxDQUF2RDtBQUNBLGNBQUEsT0FBQSxHQUFBLElBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXRhLCBJbm5lclJlZmVyZW5jZUZhY3RvcnksIFByb3BlcnR5UmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBkaWN0LCBhc3NpZ24sIGluaXRpYWxpemVHdWlkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBNaXhpbiwgZXh0ZW5kIGFzIGV4dGVuZENsYXNzLCB0b01peGluLCByZWxpbmtTdWJjbGFzc2VzLCB3cmFwTWV0aG9kIH0gZnJvbSAnLi9taXhpbic7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmltcG9ydCB7IFJPT1QgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE9wdGlvbiwgRGljdCB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYnVtcCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbmV4cG9ydCBjb25zdCBFTVBUWV9DQUNIRSA9IGZ1bmN0aW9uIEVNUFRZX0NBQ0hFKCkge307XG5cbmNvbnN0IENMQVNTX01FVEEgPSAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JztcblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RXaXRoTWl4aW5zIHtcbiAgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YTtcbiAgX21ldGE6IE1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VXaXRoTWl4aW5zIHtcbiAgY29uc3RydWN0b3I6IE9iamVjdFdpdGhNaXhpbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4ge1xuICBuZXcgPFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgZXh0ZW5kKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGV4dGVuZDxUPihleHRlbnNpb246IFQpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPjtcbiAgZXh0ZW5kKC4uLmV4dGVuc2lvbnM6IE9iamVjdFtdKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8T2JqZWN0PjtcbiAgY3JlYXRlPFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgcmVvcGVuPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkO1xuICByZW9wZW5DbGFzczxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Q7XG4gIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkO1xuICAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogSW5zdGFuY2VNZXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVyYm9jaGFyZ2U8VD4ob2JqOiBUKTogVCB7XG4gIC8vIGZ1bmN0aW9uIER1bW15KCkge31cbiAgLy8gRHVtbXkucHJvdG90eXBlID0gb2JqO1xuICByZXR1cm4gb2JqO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBTZWFsZWRNZXRhIGV4dGVuZHMgTWV0YSB7XG4gIGFkZFJlZmVyZW5jZVR5cGVGb3IoLi4uX2FyZ3M6IGFueVtdKTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IG1vZGlmeSByZWZlcmVuY2UgdHlwZXMgb24gYSBzZWFsZWQgbWV0YScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbGFzc01ldGEge1xuICBwcml2YXRlIHJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgcHJpdmF0ZSBwcm9wZXJ0eU1ldGFkYXRhID0gZGljdDxhbnk+KCk7XG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gIHByaXZhdGUgaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcbiAgcHJpdmF0ZSBoYXNNZXJnZWRQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHByaXZhdGUgbWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgYXBwbGllZE1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN0YXRpY01peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN1YmNsYXNzZXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSA9IFtdO1xuICBwcml2YXRlIHNsb3RzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgSW5zdGFuY2VNZXRhQ29uc3RydWN0b3I6IE9wdGlvbjx0eXBlb2YgTWV0YT4gPSBudWxsO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICBsZXQgbWV0YSA9IG5ldyB0aGlzKCk7XG4gICAgbWV0YS5yZXNldChwYXJlbnQpO1xuICAgIHJldHVybiBtZXRhO1xuICB9XG5cbiAgc3RhdGljIGZvcihvYmplY3Q6IE9iamVjdFdpdGhNaXhpbnMgfCBJbnN0YW5jZVdpdGhNaXhpbnMpOiBPcHRpb248Q2xhc3NNZXRhPiB7XG4gICAgaWYgKENMQVNTX01FVEEgaW4gb2JqZWN0KSByZXR1cm4gKG9iamVjdCBhcyBPYmplY3RXaXRoTWl4aW5zKVtDTEFTU19NRVRBXTtcbiAgICBlbHNlIGlmIChvYmplY3QuY29uc3RydWN0b3IpXG4gICAgICByZXR1cm4gKG9iamVjdCBhcyBJbnN0YW5jZVdpdGhNaXhpbnMpLmNvbnN0cnVjdG9yW0NMQVNTX01FVEFdIHx8IG51bGw7XG4gICAgZWxzZSByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGluaXQob2JqZWN0OiBHbGltbWVyT2JqZWN0LCBhdHRyczogT3B0aW9uPERpY3Q+KSB7XG4gICAgaWYgKHR5cGVvZiBhdHRycyAhPT0gJ29iamVjdCcgfHwgYXR0cnMgPT09IG51bGwpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBjb25jYXRQcm9wcyA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gY29uY2F0UHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgY29uY2F0ID0gY29uY2F0UHJvcHNbcHJvcF0uc2xpY2UoKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBjb25jYXQuY29uY2F0KGF0dHJzW3Byb3BdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBtZXJnZWRQcm9wcyA9IHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gbWVyZ2VkUHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBtZXJnZWRQcm9wc1twcm9wXSk7XG4gICAgICAgICAgb2JqZWN0W3Byb3BdID0gYXNzaWduKG1lcmdlZCwgYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5zdGF0aWNNaXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBhZGRNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLm1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGdldFN0YXRpY01peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNNaXhpbnM7XG4gIH1cblxuICBnZXRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMubWl4aW5zO1xuICB9XG5cbiAgYWRkQXBwbGllZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMuYXBwbGllZE1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGhhc0FwcGxpZWRNaXhpbihtaXhpbjogTWl4aW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIGdldEFwcGxpZWRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucztcbiAgfVxuXG4gIGhhc1N0YXRpY01peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucy5pbmRleE9mKG1peGluKSAhPT0gLTE7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldE1peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldFN0YXRpY01peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFN0YXRpYyhTdWJjbGFzcykpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIGFkZFN1YmNsYXNzKGNvbnN0cnVjdG9yOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5zdWJjbGFzc2VzLnB1c2goY29uc3RydWN0b3IpO1xuICB9XG5cbiAgZ2V0U3ViY2xhc3NlcygpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+W10ge1xuICAgIHJldHVybiB0aGlzLnN1YmNsYXNzZXM7XG4gIH1cblxuICBhZGRQcm9wZXJ0eU1ldGFkYXRhKHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGFbcHJvcGVydHldID0gdmFsdWU7XG4gIH1cblxuICBtZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGFbcHJvcGVydHldO1xuICB9XG5cbiAgYWRkUmVmZXJlbmNlVHlwZUZvcihwcm9wZXJ0eTogc3RyaW5nLCB0eXBlOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldID0gdHlwZTtcbiAgfVxuXG4gIGFkZFNsb3RGb3IocHJvcGVydHk6IHN0cmluZykge1xuICAgIHRoaXMuc2xvdHMucHVzaChwcm9wZXJ0eSk7XG4gIH1cblxuICBoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIGFzIHN0cmluZ1tdO1xuICB9XG5cbiAgYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHRydWU7XG5cbiAgICBpZiAoKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgdmFsID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XS5jb25jYXQodmFsdWUpO1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGhhc01lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLm1lcmdlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm1lcmdlZFByb3BlcnRpZXMpIGFzIHN0cmluZ1tdO1xuICB9XG5cbiAgYWRkTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IERpY3QpIHtcbiAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSB0cnVlO1xuXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBZb3UgcGFzc2VkIGluIFxcYCR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgKX1cXGAgYXMgdGhlIHZhbHVlIGZvciBcXGBmb29cXGAgYnV0IFxcYGZvb1xcYCBjYW5ub3QgYmUgYW4gQXJyYXlgXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICgocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLm1lcmdlZFByb3BlcnRpZXMgJiYgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSAmJiB2YWx1ZSkge1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IG1lcmdlTWVyZ2VkUHJvcGVydGllcyhcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgPT09IG51bGwgPyB2YWx1ZSA6IHZhbHVlIHx8IHt9O1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldFJlZmVyZW5jZVR5cGVzKCk6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlcztcbiAgfVxuXG4gIGdldFByb3BlcnR5TWV0YWRhdGEoKTogRGljdDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eU1ldGFkYXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBPcHRpb248Q2xhc3NNZXRhPikge1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZXMgPSBkaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PigpO1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YSA9IGRpY3QoKTtcbiAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0PGFueVtdPigpO1xuICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IGRpY3Q8T2JqZWN0PigpO1xuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXSA9IHBhcmVudC5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BdLnNsaWNlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHBhcmVudC5oYXNNZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQubWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcF0gPSBhc3NpZ24oe30sIHBhcmVudC5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdKTtcbiAgICAgIH1cblxuICAgICAgYXNzaWduKHRoaXMucmVmZXJlbmNlVHlwZXMsIHBhcmVudC5yZWZlcmVuY2VUeXBlcyk7XG4gICAgICBhc3NpZ24odGhpcy5wcm9wZXJ0eU1ldGFkYXRhLCBwYXJlbnQucHJvcGVydHlNZXRhZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcmVzZWFsKG9iajogT2JqZWN0KSB7XG4gICAgbGV0IG1ldGEgPSBNZXRhLmZvcihvYmopO1xuICAgIGxldCBmcmVzaCA9IG5ldyB0aGlzLkluc3RhbmNlTWV0YUNvbnN0cnVjdG9yIShvYmosIHt9KTtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXMgPSBtZXRhLmdldFJlZmVyZW5jZVR5cGVzKCk7XG4gICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuXG4gICAgdHVyYm9jaGFyZ2UoYXNzaWduKHJlZmVyZW5jZVR5cGVzLCB0aGlzLnJlZmVyZW5jZVR5cGVzKSk7XG4gICAgdHVyYm9jaGFyZ2UoYXNzaWduKHNsb3RzLCBmcmVzaC5nZXRTbG90cygpKSk7XG4gIH1cblxuICBzZWFsKCkge1xuICAgIGxldCByZWZlcmVuY2VUeXBlczogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4gPSB0dXJib2NoYXJnZShcbiAgICAgIGFzc2lnbih7fSwgdGhpcy5yZWZlcmVuY2VUeXBlcylcbiAgICApO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyk7XG4gICAgdHVyYm9jaGFyZ2UodGhpcy5tZXJnZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzICYmICF0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uKCkge307XG4gICAgfVxuXG4gICAgbGV0IHNsb3RzID0gdGhpcy5zbG90cztcblxuICAgIGNsYXNzIFNsb3RzIHtcbiAgICAgIFtpbmRleDogc3RyaW5nXTogdW5rbm93bjtcblxuICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHNsb3RzLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgdGhpc1tuYW1lXSA9IEVNUFRZX0NBQ0hFO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLkluc3RhbmNlTWV0YUNvbnN0cnVjdG9yID0gY2xhc3MgZXh0ZW5kcyBTZWFsZWRNZXRhIHtcbiAgICAgIHByb3RlY3RlZCBzbG90czogU2xvdHMgPSBuZXcgU2xvdHMoKTtcbiAgICAgIHB1YmxpYyByZWZlcmVuY2VUeXBlczogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4gPSByZWZlcmVuY2VUeXBlcztcblxuICAgICAgZ2V0UmVmZXJlbmNlVHlwZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzO1xuICAgICAgfVxuXG4gICAgICByZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcpOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzW3Byb3BlcnR5XSB8fCBQcm9wZXJ0eVJlZmVyZW5jZTtcbiAgICAgIH1cblxuICAgICAgZ2V0U2xvdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNsb3RzO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0dXJib2NoYXJnZSh0aGlzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZU1lcmdlZFByb3BlcnRpZXMoYXR0cnM6IERpY3QsIHBhcmVudDogRGljdCkge1xuICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBwYXJlbnQpO1xuXG4gIGZvciAobGV0IHByb3AgaW4gYXR0cnMpIHtcbiAgICBpZiAocHJvcCBpbiBwYXJlbnQgJiYgdHlwZW9mIHBhcmVudFtwcm9wXSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgYXR0cnNbcHJvcF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCB3cmFwcGVkID0gd3JhcE1ldGhvZChwYXJlbnQsIHByb3AsIGF0dHJzW3Byb3BdIGFzIGFueSk7XG4gICAgICBtZXJnZWRbcHJvcF0gPSB3cmFwcGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZWRbcHJvcF0gPSBhdHRyc1twcm9wXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkO1xufVxuXG5leHBvcnQgY2xhc3MgSW5zdGFuY2VNZXRhIGV4dGVuZHMgQ2xhc3NNZXRhIHtcbiAgcHVibGljICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBDbGFzc01ldGEgPSBDbGFzc01ldGEuZnJvbVBhcmVudChudWxsKTtcblxuICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQ6IE9wdGlvbjxJbnN0YW5jZU1ldGE+KTogSW5zdGFuY2VNZXRhIHtcbiAgICByZXR1cm4gc3VwZXIuZnJvbVBhcmVudChwYXJlbnQpIGFzIEluc3RhbmNlTWV0YTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogSW5zdGFuY2VNZXRhKSB7XG4gICAgc3VwZXIucmVzZXQocGFyZW50KTtcbiAgICBpZiAocGFyZW50KSB0aGlzW0NMQVNTX01FVEFdLnJlc2V0KHBhcmVudFtDTEFTU19NRVRBXSk7XG4gIH1cblxuICBzZWFsKCkge1xuICAgIHN1cGVyLnNlYWwoKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHbGltbWVyT2JqZWN0IHtcbiAgW2luZGV4OiBzdHJpbmddOiB1bmtub3duO1xuXG4gIHN0YXRpYyAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogSW5zdGFuY2VNZXRhID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQobnVsbCk7XG4gIHN0YXRpYyBpc0NsYXNzID0gdHJ1ZTtcblxuICBzdGF0aWMgZXh0ZW5kKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZDxUPihleHRlbnNpb246IFQpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuICBzdGF0aWMgZXh0ZW5kKC4uLmV4dGVuc2lvbnM6IE9iamVjdFtdKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuXG4gIHN0YXRpYyBleHRlbmQodGhpczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgLi4uZXh0ZW5zaW9uczogYW55W10pIHtcbiAgICByZXR1cm4gZXh0ZW5kQ2xhc3ModGhpcywgLi4uZXh0ZW5zaW9ucyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlKGF0dHJzPzogT2JqZWN0IHwgbnVsbCk6IEdsaW1tZXJPYmplY3Qge1xuICAgIHJldHVybiBuZXcgdGhpcyhhdHRycyk7XG4gIH1cblxuICBzdGF0aWMgcmVvcGVuPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFByb3RvdHlwZSh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcblxuICAgIHJlbGlua1N1YmNsYXNzZXModGhpcyk7XG4gIH1cblxuICBzdGF0aWMgcmVvcGVuQ2xhc3M8VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQge1xuICAgIHRvTWl4aW4oZXh0ZW5zaW9ucykuZXh0ZW5kU3RhdGljKHRoaXMpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG5cbiAgc3RhdGljIG1ldGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzW0NMQVNTX01FVEFdLm1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHkpO1xuICAgIGlmICghdmFsdWUpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBtZXRhRm9yUHJvcGVydHkoKSBjb3VsZCBub3QgZmluZCBhIGNvbXB1dGVkIHByb3BlcnR5IHdpdGgga2V5ICcke3Byb3BlcnR5fScuYFxuICAgICAgKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBzdGF0aWMgZWFjaENvbXB1dGVkUHJvcGVydHkoY2FsbGJhY2s6IChzOiBzdHJpbmcsIG86IE9iamVjdCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGxldCBtZXRhZGF0YSA9IHRoaXNbQ0xBU1NfTUVUQV0uZ2V0UHJvcGVydHlNZXRhZGF0YSgpO1xuICAgIGlmICghbWV0YWRhdGEpIHJldHVybjtcblxuICAgIGZvciAobGV0IHByb3AgaW4gbWV0YWRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKHByb3AsIG1ldGFkYXRhW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICBfc3VwZXIgPSBST09UO1xuICBfbWV0YSA9IG51bGw7XG4gIF9ndWlkITogbnVtYmVyOyAvLyBTZXQgYnkgaW5pdGlhbGl6ZUd1aWQodGhpcykgaW4gY29uc3RydWN0b3JcblxuICBpbml0KCkge31cblxuICBjb25zdHJ1Y3RvcihhdHRycz86IE9iamVjdCB8IG51bGwpIHtcbiAgICBpZiAoYXR0cnMpIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIEdsaW1tZXJPYmplY3QpW0NMQVNTX01FVEFdLmluaXQodGhpcywgYXR0cnMgfHwgbnVsbCk7XG4gICAgdGhpcy5fc3VwZXIgPSBST09UO1xuICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgZ2V0KGtleTogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpc1trZXldO1xuICB9XG5cbiAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpc1trZXldID0gdmFsdWU7XG4gICAgYnVtcCgpO1xuICB9XG5cbiAgc2V0UHJvcGVydGllcyhhdHRyczogT2JqZWN0KSB7XG4gICAgYXNzaWduKHRoaXMsIGF0dHJzKTtcbiAgICBidW1wKCk7XG4gIH1cblxuICBkZXN0cm95KCkge31cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -23,2 +23,2 @@ var HAS_SUPER_PATTERN = /\.(_super|call\(this|apply\(this)/;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQU0sQUFBaUIsb0JBQUcsQUFBbUMsQUFBQztBQUU5RCxBQUFNLFdBQU8sQUFBYSw0QkFDeEI7UUFBSSxBQUFlLDhCQUVmO2VBQU8sQUFBSSxBQUFDLEFBQ2QsQUFBQztBQUZELE1BR0csQUFBUSxBQUFFLFdBQ1YsQUFBTyxRQUFDLEFBQWEsQUFBQyxpQkFBRyxDQUFDLEFBQUMsQUFBQyxBQUVqQztRQUFJLEFBQWUsaUJBQUUsQUFDbkI7ZUFBTyxTQUFTLEFBQWEsY0FBQyxBQUFjLE1BQzFDO21CQUFPLEFBQWlCLGtCQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBUSxBQUFFLEFBQUMsQUFBQyxBQUNqRCxBQUFDLEFBQUM7QUFDSDtBQUVEO1dBQU8sU0FBUyxBQUFhLGdCQUMzQjtlQUFPLEFBQUksQUFBQyxBQUNkLEFBQUMsQUFBQyxBQUNKO0FBQUMsQUFBQyxBQUFFLEFBQUM7QUFqQkUsQUFBc0IsQ0FBQztBQW1COUIsQUFBTSxnQkFBVSxBQUFJLEFBQUMsQUFBRyxBQUFZLE9BQUcsQUFBQztBQUN2QyxBQUFZLEtBQUMsQUFBVSxhQUFHLEFBQUssQUFBQztBQUVqQyxBQUFNLGdCQUFVLEFBQVEsU0FBQyxBQUFjLE1BQ3JDO1FBQUksQUFBSSxLQUFDLEFBQVksQUFBQyxrQkFBSyxBQUFTLFdBQUUsQUFDcEMsQUFBSTthQUFDLEFBQVksQUFBQyxnQkFBRyxBQUFhLGNBQUMsQUFBSSxBQUFDLEFBQUMsQUFDMUM7QUFDRDtXQUFPLEFBQUksS0FBQyxBQUFZLEFBQUMsQUFBQyxBQUM1QixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSEFTX1NVUEVSX1BBVFRFUk4gPSAvXFwuKF9zdXBlcnxjYWxsXFwodGhpc3xhcHBseVxcKHRoaXMpLztcblxuZXhwb3J0IGNvbnN0IGNoZWNrSGFzU3VwZXIgPSAoZnVuY3Rpb24oKSB7XG4gIGxldCBzb3VyY2VBdmFpbGFibGUgPVxuICAgIGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgICAgLnRvU3RyaW5nKClcbiAgICAgIC5pbmRleE9mKCdyZXR1cm4gdGhpcycpID4gLTE7XG5cbiAgaWYgKHNvdXJjZUF2YWlsYWJsZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gSEFTX1NVUEVSX1BBVFRFUk4udGVzdChmdW5jLnRvU3RyaW5nKCkpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn0pKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBST09UKC4uLl9hcmdzOiBhbnlbXSkge31cbihST09UIGFzIGFueSkuX19oYXNTdXBlciA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzU3VwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgaWYgKGZ1bmNbJ19faGFzU3VwZXInXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZnVuY1snX19oYXNTdXBlciddID0gY2hlY2tIYXNTdXBlcihmdW5jKTtcbiAgfVxuICByZXR1cm4gZnVuY1snX19oYXNTdXBlciddO1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL29iamVjdC9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsSUFBTSxvQkFBTixtQ0FBQTtBQUVBLE9BQU8sSUFBTSxnQkFBaUIsWUFBQTtBQUM1QixRQUFJLGtCQUNGLFlBQUE7QUFDRSxlQUFBLElBQUE7QUFERixLQUFBLENBQUEsUUFBQSxHQUFBLE9BQUEsQ0FBQSxhQUFBLElBSTRCLENBTDlCLENBQUE7QUFPQSxRQUFBLGVBQUEsRUFBcUI7QUFDbkIsZUFBTyxTQUFBLGFBQUEsQ0FBQSxJQUFBLEVBQXFDO0FBQzFDLG1CQUFPLGtCQUFBLElBQUEsQ0FBdUIsS0FBOUIsUUFBOEIsRUFBdkIsQ0FBUDtBQURGLFNBQUE7QUFHRDtBQUVELFdBQU8sU0FBQSxhQUFBLEdBQXNCO0FBQzNCLGVBQUEsSUFBQTtBQURGLEtBQUE7QUFkSyxDQUF1QixFQUF2QjtBQW1CUCxPQUFNLFNBQUEsSUFBQSxHQUE4QixDQUFJO0FBQ3ZDLEtBQUEsVUFBQSxHQUFBLEtBQUE7QUFFRCxPQUFNLFNBQUEsUUFBQSxDQUFBLElBQUEsRUFBd0M7QUFDNUMsUUFBSSxLQUFBLFlBQUEsTUFBSixTQUFBLEVBQXNDO0FBQ3BDLGFBQUEsWUFBQSxJQUFxQixjQUFyQixJQUFxQixDQUFyQjtBQUNEO0FBQ0QsV0FBTyxLQUFQLFlBQU8sQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdCB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG5jb25zdCBIQVNfU1VQRVJfUEFUVEVSTiA9IC9cXC4oX3N1cGVyfGNhbGxcXCh0aGlzfGFwcGx5XFwodGhpcykvO1xuXG5leHBvcnQgY29uc3QgY2hlY2tIYXNTdXBlciA9IChmdW5jdGlvbigpIHtcbiAgbGV0IHNvdXJjZUF2YWlsYWJsZSA9XG4gICAgZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLmluZGV4T2YoJ3JldHVybiB0aGlzJykgPiAtMTtcblxuICBpZiAoc291cmNlQXZhaWxhYmxlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiBIQVNfU1VQRVJfUEFUVEVSTi50ZXN0KGZ1bmMudG9TdHJpbmcoKSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xufSkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIFJPT1QoLi4uX2FyZ3M6IGFueVtdKSB7fVxuKFJPT1QgYXMgYW55KS5fX2hhc1N1cGVyID0gZmFsc2U7XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNTdXBlcihmdW5jOiBGdW5jdGlvbiAmIERpY3QpIHtcbiAgaWYgKGZ1bmNbJ19faGFzU3VwZXInXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZnVuY1snX19oYXNTdXBlciddID0gY2hlY2tIYXNTdXBlcihmdW5jKTtcbiAgfVxuICByZXR1cm4gZnVuY1snX19oYXNTdXBlciddO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -5,1 +5,2 @@ export { default, ClassMeta, InstanceMeta, GlimmerObjectFactory } from './lib/object';

export { aliasMethod, alias } from './lib/descriptors';
//# sourceMappingURL=index.d.ts.map

@@ -33,1 +33,2 @@ import { ClassMeta } from './object';

export declare function observer(..._args: any[]): void;
//# sourceMappingURL=computed.d.ts.map
import { Blueprint } from './mixin';
export declare function aliasMethod(name: string): Blueprint;
export declare function alias(name: string): Blueprint;
//# sourceMappingURL=descriptors.d.ts.map
import GlimmerObject, { GlimmerObjectFactory, ClassMeta } from './object';
import { Dict } from '@glimmer/interfaces';
export declare const DESCRIPTOR = "5d90f84f-908e-4a42-9749-3d0f523c262c";

@@ -32,3 +33,3 @@ export declare const BLUEPRINT = "8d97cf5f-db9e-48d8-a6b2-7a75b7170805";

extendStatic(Target: GlimmerObjectFactory<any>): void;
mergeProperties(target: Object, parent: Object, meta: ClassMeta): void;
mergeProperties(target: Object, parent: Dict<Dict>, meta: ClassMeta): void;
}

@@ -58,2 +59,3 @@ export declare type Extension = Mixin | Extensions;

}
export declare function wrapMethod(home: Object, methodName: string, original: (...args: any[]) => any): (this: GlimmerObject, ...args: any[]) => any;
export declare function wrapMethod(home: Dict, methodName: string, original: (...args: any[]) => any): (this: GlimmerObject, ...args: any[]) => any;
//# sourceMappingURL=mixin.d.ts.map
import { Meta, InnerReferenceFactory } from '@glimmer/object-reference';
import { Dict } from '@glimmer/util';
import { Mixin } from './mixin';
import { ROOT } from './utils';
import { Option } from '@glimmer/interfaces';
import { Option, Dict } from '@glimmer/interfaces';
export declare const EMPTY_CACHE: () => void;

@@ -42,3 +41,3 @@ export interface ObjectWithMixins {

static for(object: ObjectWithMixins | InstanceWithMixins): Option<ClassMeta>;
init(object: GlimmerObject, attrs: Option<Object>): void;
init(object: GlimmerObject, attrs: Option<Dict>): void;
addStaticMixin(mixin: Mixin): void;

@@ -66,3 +65,3 @@ addMixin(mixin: Mixin): void;

getMergedProperties(): string[];
addMergedProperty(property: string, value: Object): void;
addMergedProperty(property: string, value: Dict): void;
getReferenceTypes(): Dict<InnerReferenceFactory<any>>;

@@ -81,2 +80,3 @@ getPropertyMetadata(): Dict<any>;

export default class GlimmerObject {
[index: string]: unknown;
static 'df8be4c8-4e89-44e2-a8f9-550c8dacdca7': InstanceMeta;

@@ -102,1 +102,2 @@ static isClass: boolean;

}
//# sourceMappingURL=object.d.ts.map

@@ -0,3 +1,5 @@

import { Dict } from '@glimmer/interfaces';
export declare const checkHasSuper: (func: Function) => boolean;
export declare function ROOT(..._args: any[]): void;
export declare function hasSuper(func: Function): any;
export declare function hasSuper(func: Function & Dict): unknown;
//# sourceMappingURL=utils.d.ts.map
{
"name": "@glimmer/object",
"version": "0.38.1",
"version": "0.39.0",
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/object",
"dependencies": {
"@glimmer/interfaces": "^0.38.1",
"@glimmer/object-reference": "^0.38.1",
"@glimmer/reference": "^0.38.1",
"@glimmer/util": "^0.38.1"
"@glimmer/interfaces": "^0.39.0",
"@glimmer/object-reference": "^0.39.0",
"@glimmer/reference": "^0.39.0",
"@glimmer/util": "^0.39.0"
},

@@ -11,0 +11,0 @@ "devDependencies": {

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

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc