@paperless/angular 0.1.0-alpha.248 → 0.1.0-alpha.249

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -198,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImpo
198
198
  template: ``,
199
199
  }]
200
200
  }], ctorParameters: function () { return []; } });
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGFwZXJsZXNzL3NyYy9saWIvbW9kdWxlcy90YWJsZS9iYXNlL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7SUFvQi9CLGtCQUFrQixTQUFsQixrQkFDbEIsU0FBUSxpQkFBaUI7SUE4R3pCO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUE1R0YsaUJBQVksR0FBVSxFQUFFLENBQUM7UUFFNUIsZUFBVSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRS9CLDRCQUF1QixHQUFRLEVBQUUsQ0FBQztRQUVsQyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUdwQix3QkFBbUIsR0FBaUI7WUFDeEMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQzlCLElBQUksRUFBRSxDQUFDO1lBQ1AsV0FBVyxFQUFFLElBQUk7WUFDakIsS0FBSyxFQUFFLEVBQUU7WUFDVCxPQUFPLEVBQUUsRUFBRTtZQUNYLFlBQVksRUFBRSxFQUFFO1NBQ25CLENBQUM7UUFDSyx1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S0FBSyxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ2QsSUFBSSxHQUFHLEtBQUssY0FBYyxFQUFFO2dCQUN4QixTQUFTO2FBQ1o7WUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDN0QsYUFBYTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzVCO1NBQ0o7UUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4RCxDQUFDO0NBQ0osQ0FBQTtnSEF0UHFCLGtCQUFrQjtvR0FBbEIsa0JBQWtCLDJFQUYxQixFQUFFO0FBRU0sa0JBQWtCO0lBSnZDLFlBQVksQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQztHQUlsQixrQkFBa0IsQ0FzUHZDO1NBdFBxQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFIdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsRUFBRTtpQkFDZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBRdWlja0ZpbHRlciB9IGZyb20gJ0BwYXBlcmxlc3MvY29yZSc7XG5pbXBvcnQgeyB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2UsIGZpbHRlciwgbWFwLCBwYWlyd2lzZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgY3JlYXRlRm9ybUZpbHRlcnMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBGb3JtQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBUYWJsZVF1aWNrRmlsdGVyID0gUXVpY2tGaWx0ZXIgJiB7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBtZXRyaWNOYW1lPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZU9wdGlvbnMge1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgcGFnZTogbnVtYmVyO1xuICAgIHF1aWNrRmlsdGVyOiBUYWJsZVF1aWNrRmlsdGVyIHwgc3RyaW5nIHwgbnVsbDtcbiAgICBxdWVyeTogc3RyaW5nO1xuICAgIGZpbHRlcnM6IGFueVtdO1xuICAgIHNlbGVjdGVkUm93czogYW55W107XG59XG5cbkBVbnRpbERlc3Ryb3koeyBjaGVja1Byb3BlcnRpZXM6IHRydWUgfSlcbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlOiBgYCxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVRhYmxlQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBGb3JtQmFzZUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0XG57XG4gICAgcHJvdGVjdGVkIHF1aWNrRmlsdGVyczogYW55W10gPSBbXTtcblxuICAgIHB1YmxpYyBmaWx0ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgcHVibGljIGZpbHRlckZvcm1RdWlja0ZpbHRlcktleT86IHN0cmluZztcbiAgICBwdWJsaWMgZGVmYXVsdEZpbHRlckZvcm1WYWx1ZXM6IGFueSA9IHt9O1xuXG4gICAgcHVibGljIHBhZ2VTaXplRGVmYXVsdCA9IDEyO1xuICAgIHB1YmxpYyB0YWJsZU9wdGlvbnM/OiBGb3JtQ29udHJvbDxUYWJsZU9wdGlvbnM+O1xuXG4gICAgcHJpdmF0ZSBfZGVmYXVsdFRhYmxlVmFsdWVzOiBUYWJsZU9wdGlvbnMgPSB7XG4gICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplRGVmYXVsdCxcbiAgICAgICAgcGFnZTogMSxcbiAgICAgICAgcXVpY2tGaWx0ZXI6IG51bGwsXG4gICAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgICAgZmlsdGVyczogW10sXG4gICAgICAgIHNlbGVjdGVkUm93czogW10sXG4gICAgfTtcbiAgICBwdWJsaWMgZGVmYXVsdFRhYmxlVmFsdWVzOiBQYXJ0aWFsPFRhYmxlT3B0aW9ucz4gPSB7fTtcblxuICAgIGdldCBwYWdlU2l6ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlT3B0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRUYWJsZVZhbHVlcy5wYWdlU2l6ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlT3B0aW9ucy52YWx1ZS5wYWdlU2l6ZTtcbiAgICB9XG5cbiAgICBnZXQgcGFnZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlT3B0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRUYWJsZVZhbHVlcy5wYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVPcHRpb25zLnZhbHVlLnBhZ2U7XG4gICAgfVxuXG4gICAgZ2V0IHF1aWNrRmlsdGVyKCkge1xuICAgICAgICBpZiAoIXRoaXMudGFibGVPcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFRhYmxlVmFsdWVzLnF1aWNrRmlsdGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVPcHRpb25zLnZhbHVlLnF1aWNrRmlsdGVyO1xuICAgIH1cbiAgICBzZXQgcXVpY2tGaWx0ZXIocXVpY2tGaWx0ZXI6IFRhYmxlUXVpY2tGaWx0ZXIgfCBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIHRoaXMudGFibGVWYWx1ZXMgPSB7XG4gICAgICAgICAgICBxdWlja0ZpbHRlcixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXQgcXVlcnkoKSB7XG4gICAgICAgIGlmICghdGhpcy50YWJsZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VGFibGVWYWx1ZXMucXVlcnk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy50YWJsZU9wdGlvbnMudmFsdWUucXVlcnk7XG4gICAgfVxuICAgIHNldCBxdWVyeShxdWVyeTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMudGFibGVWYWx1ZXMgPSB7XG4gICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXQgZmlsdGVycygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlT3B0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRUYWJsZVZhbHVlcy5maWx0ZXJzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVPcHRpb25zLnZhbHVlLmZpbHRlcnM7XG4gICAgfVxuICAgIHNldCBmaWx0ZXJzKGZpbHRlcnM6IGFueVtdKSB7XG4gICAgICAgIHRoaXMudGFibGVWYWx1ZXMgPSB7XG4gICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldCBzZWxlY3RlZFJvd3MoKSB7XG4gICAgICAgIGlmICghdGhpcy50YWJsZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VGFibGVWYWx1ZXMuc2VsZWN0ZWRSb3dzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVPcHRpb25zLnZhbHVlLnNlbGVjdGVkUm93cztcbiAgICB9XG4gICAgc2V0IHNlbGVjdGVkUm93cyhzZWxlY3RlZFJvd3M6IGFueVtdKSB7XG4gICAgICAgIHRoaXMudGFibGVWYWx1ZXMgPSB7XG4gICAgICAgICAgICBzZWxlY3RlZFJvd3MsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gc2V0dGVyXG4gICAgZ2V0IHBhcnNlZERlZmF1bHRUYWJsZVZhbHVlcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZmF1bHRUYWJsZVZhbHVlcyxcbiAgICAgICAgICAgIC4uLnRoaXMuZGVmYXVsdFRhYmxlVmFsdWVzLFxuICAgICAgICAgICAgcGFnZVNpemU6IHRoaXMuZGVmYXVsdFRhYmxlVmFsdWVzPy5wYWdlU2l6ZSB8fCB0aGlzLnBhZ2VTaXplRGVmYXVsdCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXQgdGFibGVWYWx1ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlT3B0aW9ucz8udmFsdWUgPz8ge307XG4gICAgfVxuXG4gICAgc2V0IHRhYmxlVmFsdWVzKHZhbHVlczogUGFydGlhbDxUYWJsZU9wdGlvbnM+KSB7XG4gICAgICAgIHRoaXMuX3NldFRhYmxlVmFsdWVzKHtcbiAgICAgICAgICAgIC4uLnRoaXMudGFibGVWYWx1ZXMsXG4gICAgICAgICAgICAuLi52YWx1ZXMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnRhYmxlT3B0aW9ucyA9IG5ldyBGb3JtQ29udHJvbDxUYWJsZU9wdGlvbnM+KHtcbiAgICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhcnNlZERlZmF1bHRUYWJsZVZhbHVlcy5wYWdlU2l6ZSxcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFyc2VkRGVmYXVsdFRhYmxlVmFsdWVzLnBhZ2UsXG4gICAgICAgICAgICBxdWlja0ZpbHRlcjogdGhpcy5wYXJzZWREZWZhdWx0VGFibGVWYWx1ZXMucXVpY2tGaWx0ZXIsXG4gICAgICAgICAgICBxdWVyeTogdGhpcy5wYXJzZWREZWZhdWx0VGFibGVWYWx1ZXMucXVlcnksXG4gICAgICAgICAgICBmaWx0ZXJzOiB0aGlzLnBhcnNlZERlZmF1bHRUYWJsZVZhbHVlcy5maWx0ZXJzLFxuICAgICAgICAgICAgc2VsZWN0ZWRSb3dzOiB0aGlzLnBhcnNlZERlZmF1bHRUYWJsZVZhbHVlcy5zZWxlY3RlZFJvd3MsXG4gICAgICAgIH0pIGFzIEZvcm1Db250cm9sPFRhYmxlT3B0aW9ucz47XG5cbiAgICAgICAgdGhpcy50YWJsZU9wdGlvbnMudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodGhpcy50YWJsZU9wdGlvbnMudmFsdWUpLFxuICAgICAgICAgICAgICAgIHBhaXJ3aXNlKCksXG4gICAgICAgICAgICAgICAgbWFwKChbcHJldmlvdXMsIG5leHRdKSA9PiB0aGlzLl9nZXRDaGFuZ2VzKHByZXZpb3VzLCBuZXh0KSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChjaGFuZ2VzOiBhbnkpID0+ICEhY2hhbmdlcyksXG4gICAgICAgICAgICAgICAgZGVib3VuY2UoKGNoYW5nZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoYW5nZXM/LnF1ZXJ5ICYmIE9iamVjdC5rZXlzKGNoYW5nZXMpPy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aW1lcigzMDApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRpbWVyKDApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZXM6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlcz8uc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjaGFuZ2VzKT8ubGVuZ3RoID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlczogVGFibGVPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoYW5nZXM/LnBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRQYWdlT3JSZWZyZXNoKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9yZWZyZXNoKCk7XG4gICAgfVxuXG4gICAgcmVzZXRUYWJsZShlbWl0RXZlbnQgPSB0cnVlLCBmb3JjZVJlZnJlc2ggPSBudWxsKSB7XG4gICAgICAgIHRoaXMuX3NldFRhYmxlVmFsdWVzKHRoaXMucGFyc2VkRGVmYXVsdFRhYmxlVmFsdWVzLCBlbWl0RXZlbnQpO1xuXG4gICAgICAgIGlmIChmb3JjZVJlZnJlc2gpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGx5Rm9ybUZpbHRlcnModmFsdWVzOiBhbnkgPSBudWxsKSB7XG4gICAgICAgIHZhbHVlcyA9IHZhbHVlcyA/PyB0aGlzLmZpbHRlckZvcm0udmFsdWU7XG5cbiAgICAgICAgY29uc3QgeyBmaWx0ZXJzLCBxdWlja0ZpbHRlciB9ID0gY3JlYXRlRm9ybUZpbHRlcnMoXG4gICAgICAgICAgICB2YWx1ZXMsXG4gICAgICAgICAgICB0aGlzLnF1aWNrRmlsdGVycyxcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybVF1aWNrRmlsdGVyS2V5XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHF1aWNrRmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLnF1aWNrRmlsdGVyID0gcXVpY2tGaWx0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpbHRlcnMgPSBmaWx0ZXJzO1xuICAgIH1cblxuICAgIHJlc2V0Rm9ybUZpbHRlcnMocmVzZXRRdWlja0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlczogYW55ID0gdGhpcy5maWx0ZXJGb3JtLnZhbHVlO1xuICAgICAgICBjb25zdCBkZWZhdWx0UXVpY2tGaWx0ZXIgPSB0aGlzLnF1aWNrRmlsdGVycy5maW5kKChmKSA9PiBmLmRlZmF1bHQpO1xuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHZhbHVlcykpIHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IHRoaXMuZmlsdGVyRm9ybVF1aWNrRmlsdGVyS2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc2V0UXVpY2tGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBkZWZhdWx0UXVpY2tGaWx0ZXIudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YWx1ZXNba2V5XSA9IHRoaXMuZGVmYXVsdEZpbHRlckZvcm1WYWx1ZXNba2V5XSA/PyBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLnNldFZhbHVlKHZhbHVlcyk7XG4gICAgICAgIHRoaXMuYXBwbHlGb3JtRmlsdGVycyh2YWx1ZXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmVmcmVzaCgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXNldFBhZ2VPclJlZnJlc2goKSB7XG4gICAgICAgIGlmICghdGhpcy50YWJsZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBhZ2UgIT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVPcHRpb25zLmdldCgncGFnZScpPy5zZXRWYWx1ZSgxKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3JlZnJlc2goKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRUYWJsZVZhbHVlcyhkYXRhOiBQYXJ0aWFsPFRhYmxlT3B0aW9ucz4sIGVtaXRFdmVudCA9IHRydWUpIHtcbiAgICAgICAgdGhpcy50YWJsZU9wdGlvbnM/LnNldFZhbHVlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMudGFibGVPcHRpb25zLnZhbHVlLFxuICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBlbWl0RXZlbnQgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldENoYW5nZXMocHJldmlvdXM6IFRhYmxlT3B0aW9ucywgbmV4dDogVGFibGVPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGNoYW5nZXM6IFBhcnRpYWw8VGFibGVPcHRpb25zPiA9IHt9O1xuXG4gICAgICAgIGxldCBrZXk6IGtleW9mIFRhYmxlT3B0aW9ucztcbiAgICAgICAgZm9yIChrZXkgaW4gbmV4dCkge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3NlbGVjdGVkUm93cycpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHByZXZpb3VzW2tleV0pICE9PSBKU09OLnN0cmluZ2lmeShuZXh0W2tleV0pKSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGNoYW5nZXNba2V5XSA9IG5leHRba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhjaGFuZ2VzKS5sZW5ndGggPyBjaGFuZ2VzIDogbnVsbDtcbiAgICB9XG59XG4iXX0=
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGFwZXJsZXNzL3NyYy9saWIvbW9kdWxlcy90YWJsZS9iYXNlL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7SUFvQi9CLGtCQUFrQixTQUFsQixrQkFDbEIsU0FBUSxpQkFBaUI7SUE4R3pCO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUE1R0YsaUJBQVksR0FBVSxFQUFFLENBQUM7UUFFNUIsZUFBVSxHQUFtQixJQUFJLFNBQVMsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUVwRCw0QkFBdUIsR0FBUSxFQUFFLENBQUM7UUFFbEMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFHcEIsd0JBQW1CLEdBQWlCO1lBQ3hDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUM5QixJQUFJLEVBQUUsQ0FBQztZQUNQLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLEtBQUssRUFBRSxFQUFFO1lBQ1QsT0FBTyxFQUFFLEVBQUU7WUFDWCxZQUFZLEVBQUUsRUFBRTtTQUNuQixDQUFDO1FBQ0ss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LEtBQUssR0FBRyxJQUFJLElBQUksRUFBRTtZQUNkLElBQUksR0FBRyxLQUFLLGNBQWMsRUFBRTtnQkFDeEIsU0FBUzthQUNaO1lBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQzdELGFBQWE7Z0JBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM1QjtTQUNKO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDeEQsQ0FBQztDQUNKLENBQUE7Z0hBdFBxQixrQkFBa0I7b0dBQWxCLGtCQUFrQiwyRUFGMUIsRUFBRTtBQUVNLGtCQUFrQjtJQUp2QyxZQUFZLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUM7R0FJbEIsa0JBQWtCLENBc1B2QztTQXRQcUIsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBSHZDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLEVBQUU7aUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgUXVpY2tGaWx0ZXIgfSBmcm9tICdAcGFwZXJsZXNzL2NvcmUnO1xuaW1wb3J0IHsgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlLCBmaWx0ZXIsIG1hcCwgcGFpcndpc2UsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNyZWF0ZUZvcm1GaWx0ZXJzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRm9ybUJhc2VDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0uY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgVGFibGVRdWlja0ZpbHRlciA9IFF1aWNrRmlsdGVyICYge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbWV0cmljTmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVPcHRpb25zIHtcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuICAgIHBhZ2U6IG51bWJlcjtcbiAgICBxdWlja0ZpbHRlcjogVGFibGVRdWlja0ZpbHRlciB8IHN0cmluZyB8IG51bGw7XG4gICAgcXVlcnk6IHN0cmluZztcbiAgICBmaWx0ZXJzOiBhbnlbXTtcbiAgICBzZWxlY3RlZFJvd3M6IGFueVtdO1xufVxuXG5AVW50aWxEZXN0cm95KHsgY2hlY2tQcm9wZXJ0aWVzOiB0cnVlIH0pXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZTogYGAsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VUYWJsZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9ybUJhc2VDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAgIHByb3RlY3RlZCBxdWlja0ZpbHRlcnM6IGFueVtdID0gW107XG5cbiAgICBwdWJsaWMgZmlsdGVyRm9ybTogRm9ybUdyb3VwPGFueT4gPSBuZXcgRm9ybUdyb3VwPGFueT4oe30pO1xuICAgIHB1YmxpYyBmaWx0ZXJGb3JtUXVpY2tGaWx0ZXJLZXk/OiBzdHJpbmc7XG4gICAgcHVibGljIGRlZmF1bHRGaWx0ZXJGb3JtVmFsdWVzOiBhbnkgPSB7fTtcblxuICAgIHB1YmxpYyBwYWdlU2l6ZURlZmF1bHQgPSAxMjtcbiAgICBwdWJsaWMgdGFibGVPcHRpb25zPzogRm9ybUNvbnRyb2w8VGFibGVPcHRpb25zPjtcblxuICAgIHByaXZhdGUgX2RlZmF1bHRUYWJsZVZhbHVlczogVGFibGVPcHRpb25zID0ge1xuICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZURlZmF1bHQsXG4gICAgICAgIHBhZ2U6IDEsXG4gICAgICAgIHF1aWNrRmlsdGVyOiBudWxsLFxuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIGZpbHRlcnM6IFtdLFxuICAgICAgICBzZWxlY3RlZFJvd3M6IFtdLFxuICAgIH07XG4gICAgcHVibGljIGRlZmF1bHRUYWJsZVZhbHVlczogUGFydGlhbDxUYWJsZU9wdGlvbnM+ID0ge307XG5cbiAgICBnZXQgcGFnZVNpemUoKSB7XG4gICAgICAgIGlmICghdGhpcy50YWJsZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VGFibGVWYWx1ZXMucGFnZVNpemU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy50YWJsZU9wdGlvbnMudmFsdWUucGFnZVNpemU7XG4gICAgfVxuXG4gICAgZ2V0IHBhZ2UoKSB7XG4gICAgICAgIGlmICghdGhpcy50YWJsZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VGFibGVWYWx1ZXMucGFnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlT3B0aW9ucy52YWx1ZS5wYWdlO1xuICAgIH1cblxuICAgIGdldCBxdWlja0ZpbHRlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlT3B0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRUYWJsZVZhbHVlcy5xdWlja0ZpbHRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlT3B0aW9ucy52YWx1ZS5xdWlja0ZpbHRlcjtcbiAgICB9XG4gICAgc2V0IHF1aWNrRmlsdGVyKHF1aWNrRmlsdGVyOiBUYWJsZVF1aWNrRmlsdGVyIHwgc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnRhYmxlVmFsdWVzID0ge1xuICAgICAgICAgICAgcXVpY2tGaWx0ZXIsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0IHF1ZXJ5KCkge1xuICAgICAgICBpZiAoIXRoaXMudGFibGVPcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFRhYmxlVmFsdWVzLnF1ZXJ5O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVPcHRpb25zLnZhbHVlLnF1ZXJ5O1xuICAgIH1cbiAgICBzZXQgcXVlcnkocXVlcnk6IHN0cmluZykge1xuICAgICAgICB0aGlzLnRhYmxlVmFsdWVzID0ge1xuICAgICAgICAgICAgcXVlcnksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0IGZpbHRlcnMoKSB7XG4gICAgICAgIGlmICghdGhpcy50YWJsZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VGFibGVWYWx1ZXMuZmlsdGVycztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlT3B0aW9ucy52YWx1ZS5maWx0ZXJzO1xuICAgIH1cbiAgICBzZXQgZmlsdGVycyhmaWx0ZXJzOiBhbnlbXSkge1xuICAgICAgICB0aGlzLnRhYmxlVmFsdWVzID0ge1xuICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0ZWRSb3dzKCkge1xuICAgICAgICBpZiAoIXRoaXMudGFibGVPcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFRhYmxlVmFsdWVzLnNlbGVjdGVkUm93cztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlT3B0aW9ucy52YWx1ZS5zZWxlY3RlZFJvd3M7XG4gICAgfVxuICAgIHNldCBzZWxlY3RlZFJvd3Moc2VsZWN0ZWRSb3dzOiBhbnlbXSkge1xuICAgICAgICB0aGlzLnRhYmxlVmFsdWVzID0ge1xuICAgICAgICAgICAgc2VsZWN0ZWRSb3dzLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIHNldHRlclxuICAgIGdldCBwYXJzZWREZWZhdWx0VGFibGVWYWx1ZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWZhdWx0VGFibGVWYWx1ZXMsXG4gICAgICAgICAgICAuLi50aGlzLmRlZmF1bHRUYWJsZVZhbHVlcyxcbiAgICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLmRlZmF1bHRUYWJsZVZhbHVlcz8ucGFnZVNpemUgfHwgdGhpcy5wYWdlU2l6ZURlZmF1bHQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0IHRhYmxlVmFsdWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZU9wdGlvbnM/LnZhbHVlID8/IHt9O1xuICAgIH1cblxuICAgIHNldCB0YWJsZVZhbHVlcyh2YWx1ZXM6IFBhcnRpYWw8VGFibGVPcHRpb25zPikge1xuICAgICAgICB0aGlzLl9zZXRUYWJsZVZhbHVlcyh7XG4gICAgICAgICAgICAuLi50aGlzLnRhYmxlVmFsdWVzLFxuICAgICAgICAgICAgLi4udmFsdWVzLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy50YWJsZU9wdGlvbnMgPSBuZXcgRm9ybUNvbnRyb2w8VGFibGVPcHRpb25zPih7XG4gICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYXJzZWREZWZhdWx0VGFibGVWYWx1ZXMucGFnZVNpemUsXG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhcnNlZERlZmF1bHRUYWJsZVZhbHVlcy5wYWdlLFxuICAgICAgICAgICAgcXVpY2tGaWx0ZXI6IHRoaXMucGFyc2VkRGVmYXVsdFRhYmxlVmFsdWVzLnF1aWNrRmlsdGVyLFxuICAgICAgICAgICAgcXVlcnk6IHRoaXMucGFyc2VkRGVmYXVsdFRhYmxlVmFsdWVzLnF1ZXJ5LFxuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5wYXJzZWREZWZhdWx0VGFibGVWYWx1ZXMuZmlsdGVycyxcbiAgICAgICAgICAgIHNlbGVjdGVkUm93czogdGhpcy5wYXJzZWREZWZhdWx0VGFibGVWYWx1ZXMuc2VsZWN0ZWRSb3dzLFxuICAgICAgICB9KSBhcyBGb3JtQ29udHJvbDxUYWJsZU9wdGlvbnM+O1xuXG4gICAgICAgIHRoaXMudGFibGVPcHRpb25zLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcyksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMudGFibGVPcHRpb25zLnZhbHVlKSxcbiAgICAgICAgICAgICAgICBwYWlyd2lzZSgpLFxuICAgICAgICAgICAgICAgIG1hcCgoW3ByZXZpb3VzLCBuZXh0XSkgPT4gdGhpcy5fZ2V0Q2hhbmdlcyhwcmV2aW91cywgbmV4dCkpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoY2hhbmdlczogYW55KSA9PiAhIWNoYW5nZXMpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlKChjaGFuZ2VzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VzPy5xdWVyeSAmJiBPYmplY3Qua2V5cyhjaGFuZ2VzKT8ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGltZXIoMzAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aW1lcigwKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2VzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXM/LnNlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY2hhbmdlcyk/Lmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZXM6IFRhYmxlT3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VzPy5wYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2goKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0UGFnZU9yUmVmcmVzaCgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fcmVmcmVzaCgpO1xuICAgIH1cblxuICAgIHJlc2V0VGFibGUoZW1pdEV2ZW50ID0gdHJ1ZSwgZm9yY2VSZWZyZXNoID0gbnVsbCkge1xuICAgICAgICB0aGlzLl9zZXRUYWJsZVZhbHVlcyh0aGlzLnBhcnNlZERlZmF1bHRUYWJsZVZhbHVlcywgZW1pdEV2ZW50KTtcblxuICAgICAgICBpZiAoZm9yY2VSZWZyZXNoKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhcHBseUZvcm1GaWx0ZXJzKHZhbHVlczogYW55ID0gbnVsbCkge1xuICAgICAgICB2YWx1ZXMgPSB2YWx1ZXMgPz8gdGhpcy5maWx0ZXJGb3JtLnZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHsgZmlsdGVycywgcXVpY2tGaWx0ZXIgfSA9IGNyZWF0ZUZvcm1GaWx0ZXJzKFxuICAgICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgICAgdGhpcy5xdWlja0ZpbHRlcnMsXG4gICAgICAgICAgICB0aGlzLmZpbHRlckZvcm1RdWlja0ZpbHRlcktleVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChxdWlja0ZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5xdWlja0ZpbHRlciA9IHF1aWNrRmlsdGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maWx0ZXJzID0gZmlsdGVycztcbiAgICB9XG5cbiAgICByZXNldEZvcm1GaWx0ZXJzKHJlc2V0UXVpY2tGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBjb25zdCB2YWx1ZXM6IGFueSA9IHRoaXMuZmlsdGVyRm9ybS52YWx1ZTtcbiAgICAgICAgY29uc3QgZGVmYXVsdFF1aWNrRmlsdGVyID0gdGhpcy5xdWlja0ZpbHRlcnMuZmluZCgoZikgPT4gZi5kZWZhdWx0KTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZXMpKSB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSB0aGlzLmZpbHRlckZvcm1RdWlja0ZpbHRlcktleSkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNldFF1aWNrRmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlc1trZXldID0gZGVmYXVsdFF1aWNrRmlsdGVyLnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSB0aGlzLmRlZmF1bHRGaWx0ZXJGb3JtVmFsdWVzW2tleV0gPz8gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmlsdGVyRm9ybS5zZXRWYWx1ZSh2YWx1ZXMpO1xuICAgICAgICB0aGlzLmFwcGx5Rm9ybUZpbHRlcnModmFsdWVzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2goKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVzZXRQYWdlT3JSZWZyZXNoKCkge1xuICAgICAgICBpZiAoIXRoaXMudGFibGVPcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wYWdlICE9PSAxKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlT3B0aW9ucy5nZXQoJ3BhZ2UnKT8uc2V0VmFsdWUoMSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yZWZyZXNoKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0VGFibGVWYWx1ZXMoZGF0YTogUGFydGlhbDxUYWJsZU9wdGlvbnM+LCBlbWl0RXZlbnQgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMudGFibGVPcHRpb25zPy5zZXRWYWx1ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLnRhYmxlT3B0aW9ucy52YWx1ZSxcbiAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50IH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRDaGFuZ2VzKHByZXZpb3VzOiBUYWJsZU9wdGlvbnMsIG5leHQ6IFRhYmxlT3B0aW9ucykge1xuICAgICAgICBjb25zdCBjaGFuZ2VzOiBQYXJ0aWFsPFRhYmxlT3B0aW9ucz4gPSB7fTtcblxuICAgICAgICBsZXQga2V5OiBrZXlvZiBUYWJsZU9wdGlvbnM7XG4gICAgICAgIGZvciAoa2V5IGluIG5leHQpIHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdzZWxlY3RlZFJvd3MnKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShwcmV2aW91c1trZXldKSAhPT0gSlNPTi5zdHJpbmdpZnkobmV4dFtrZXldKSkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBjaGFuZ2VzW2tleV0gPSBuZXh0W2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoY2hhbmdlcykubGVuZ3RoID8gY2hhbmdlcyA6IG51bGw7XG4gICAgfVxufVxuIl19