@smartbit4all/ng-client 4.1.9 → 4.1.10
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.
- package/esm2022/lib/smart-form/services/smartform.service.mjs +11 -11
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +3 -1
- package/fesm2022/smartbit4all-ng-client.mjs +12 -10
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/package.json +1 -1
- package/smartbit4all-ng-client-4.1.10.tgz +0 -0
- package/smartbit4all-ng-client-4.1.9.tgz +0 -0
|
@@ -294,6 +294,16 @@ export class SmartFormService {
|
|
|
294
294
|
widget.type !== SmartFormWidgetType.COMPONENT &&
|
|
295
295
|
widget.type !== SmartFormWidgetType.MATRIX &&
|
|
296
296
|
widget.type !== SmartFormWidgetType.YOUTUBE_PLAYER) {
|
|
297
|
+
if (compLib === this.componentLibrary.PRIMENG) {
|
|
298
|
+
if (widget.type === SmartFormWidgetType.DATE_PICKER) {
|
|
299
|
+
if (widget.value) {
|
|
300
|
+
widget.value = new Date(widget.value);
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
widget.value = new Date();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
297
307
|
this.createFormControl(`${widget.key}`, widget.value, widget.isDisabled, widget.validators);
|
|
298
308
|
}
|
|
299
309
|
if (widget.type === SmartFormWidgetType.MATRIX) {
|
|
@@ -322,16 +332,6 @@ export class SmartFormService {
|
|
|
322
332
|
if (widget.type === SmartFormWidgetType.CHECK_BOX_2 && widget.valueList?.length) {
|
|
323
333
|
this.createFormControls(widget.valueList, compLib, widget.key);
|
|
324
334
|
}
|
|
325
|
-
if (compLib === this.componentLibrary.PRIMENG) {
|
|
326
|
-
if (widget.type === SmartFormWidgetType.DATE_PICKER) {
|
|
327
|
-
if (widget.value) {
|
|
328
|
-
widget.value = new Date(widget.value);
|
|
329
|
-
}
|
|
330
|
-
else {
|
|
331
|
-
widget.value = new Date();
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
335
|
});
|
|
336
336
|
}
|
|
337
337
|
isValidatorInList(validator, list) {
|
|
@@ -659,4 +659,4 @@ export class SmartFormService {
|
|
|
659
659
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFormService, decorators: [{
|
|
660
660
|
type: Injectable
|
|
661
661
|
}] });
|
|
662
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NlcnZpY2VzL3NtYXJ0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBdUIsMkJBQTJCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBRy9FLE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFbUIsYUFBUSxHQUFXLFdBQVcsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUNwQyxVQUFLLEdBQVEsRUFBRSxDQUFDO1FBb2xCQyxvQkFBZSxHQUFHLElBQUksTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDaEUsNkJBQXdCLEdBQUcsSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzRCwwQkFBcUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxnQ0FBMkIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxzQkFBaUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QywrQkFBMEIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRCx3QkFBbUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxzQkFBaUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMv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Q0FBQyxTQUFTLEVBQ2hCLENBQUM7b0JBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDOUMsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVUsQ0FBQyxDQUFDO1lBQzNDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUEwQjtRQUNuRCxPQUFPLENBQUMsR0FBRyxDQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQXVCLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMxQixNQUFNLENBQUMsYUFBYSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNDLENBQUM7WUFDRCxTQUFTO1lBQ1QsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7K0dBaHhCVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25EZWZpbml0aW9uLCBTZWxlY3Rpb25EZWZpbml0aW9uVHlwZUVudW0sIFNtYXJ0Rm9ybVdpZGdldFR5cGUgfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBTbWFydEZvcm1XaWRnZXQsIFNtYXJ0SXRlbSwgU21hcnRJdGVtcywgU21hcnRTZWxlY3QgfSBmcm9tICcuLi9zbWFydGZvcm0uZm9ybS1tb2RlbCc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybSwgU21hcnRGb3JtQ29tcG9uZW50Q29uc3RyYWludCwgU21hcnRWYWxpZGF0b3IsIFZhbHVlIH0gZnJvbSAnLi4vc21hcnRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgQ29tcG9uZW50TGlicmFyeSB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU21hcnRGb3JtU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbXB0eUtleTogc3RyaW5nID0gJ2UjbSVwQHQqeSc7XHJcbiAgY29tcG9uZW50TGlicmFyeSA9IENvbXBvbmVudExpYnJhcnk7XHJcbiAgZ3JvdXA6IGFueSA9IHt9O1xyXG5cclxuICBmb3JtR3JvdXA/OiBVbnR5cGVkRm9ybUdyb3VwO1xyXG5cclxuICBzbWFydEZvcm0/OiBTbWFydEZvcm07XHJcblxyXG4gIGdldFNtYXJ0Rm9ybVdpZGdldEJ5S2V5KGtleTogc3RyaW5nKTogU21hcnRGb3JtV2lkZ2V0PGFueT4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuZmluZFNtYXJ0Rm9ybVdpZGdldEJ5S2V5KHRoaXMuc21hcnRGb3JtPy53aWRnZXRzISwga2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29sbGVjdEtleXNGcm9tU21hcnRGb3JtKFxyXG4gICAgd2lkZ2V0czogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSB8IFNtYXJ0SXRlbXM8YW55PltdLFxyXG4gICAga2V5czogc3RyaW5nW11cclxuICApOiBzdHJpbmdbXSB7XHJcbiAgICB3aWRnZXRzLmZvckVhY2goKHcpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHcudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiZcclxuICAgICAgICB3LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUwgJiZcclxuICAgICAgICB3LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzIgJiZcclxuICAgICAgICB3LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVJcclxuICAgICAgKSB7XHJcbiAgICAgICAga2V5cy5wdXNoKHcua2V5KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdy50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfQ0hJUFMgfHxcclxuICAgICAgICB3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUIHx8XHJcbiAgICAgICAgdy50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVF9NVUxUSVBMRSB8fFxyXG4gICAgICAgIHcudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1ggfHxcclxuICAgICAgICB3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUkFESU9fQlVUVE9OIHx8XHJcbiAgICAgICAgdy50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUlxyXG4gICAgICApIHtcclxuICAgICAgICBpZiAody52YWx1ZUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgICAga2V5cyA9IHRoaXMuY29sbGVjdEtleXNGcm9tU21hcnRGb3JtKHcudmFsdWVMaXN0LCBrZXlzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAody50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yKSB7XHJcbiAgICAgICAgaWYgKHcudmFsdWVMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgICAgIGxldCBjaGlsZHJlbktleXMgPSB0aGlzLmNvbGxlY3RLZXlzRnJvbVNtYXJ0Rm9ybSh3LnZhbHVlTGlzdCwgW10pO1xyXG4gICAgICAgICAgY2hpbGRyZW5LZXlzID0gY2hpbGRyZW5LZXlzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGtleTogc3RyaW5nKSA9PiBrZXkgIT09IHcua2V5KVxyXG4gICAgICAgICAgICAuZmxhdE1hcCgoa2V5OiBzdHJpbmcpID0+IGAke3cua2V5fS4ke2tleX1gKTtcclxuXHJcbiAgICAgICAgICBrZXlzLnB1c2goLi4uY2hpbGRyZW5LZXlzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBrZXlzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kU21hcnRGb3JtV2lkZ2V0QnlLZXkoXHJcbiAgICB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdLFxyXG4gICAga2V5OiBzdHJpbmdcclxuICApOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB8IHVuZGVmaW5lZCB7XHJcbiAgICBsZXQgd2lkZ2V0Rm91bmRCeUtleTogU21hcnRGb3JtV2lkZ2V0PGFueT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgZm9yIChsZXQgdyBvZiB3aWRnZXRzKSB7XHJcbiAgICAgIGlmICh3LmtleSA9PT0ga2V5KSB7XHJcbiAgICAgICAgcmV0dXJuIHc7XHJcbiAgICAgIH0gZWxzZSBpZiAody50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJiB3LnZhbHVlTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgd2lkZ2V0Rm91bmRCeUtleSA9IHRoaXMuZmluZFNtYXJ0Rm9ybVdpZGdldEJ5S2V5KHcudmFsdWVMaXN0LCBrZXkpO1xyXG4gICAgICAgIGlmICh3aWRnZXRGb3VuZEJ5S2V5KSB7XHJcbiAgICAgICAgICByZXR1cm4gd2lkZ2V0Rm91bmRCeUtleTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB3aWRnZXRGb3VuZEJ5S2V5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWYWx1ZURlZXBseShtb2RlbDogYW55LCBrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICBsZXQgc3BsaXR0ZWRLZXkgPSBrZXkuc3BsaXQoJy4nKTtcclxuICAgIGxldCB2YWx1ZTogYW55O1xyXG5cclxuICAgIHNwbGl0dGVkS2V5LmZvckVhY2goKGs6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgdmFsdWUgPSBtb2RlbFtrXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB2YWx1ZVtrXSA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICB2YWx1ZVtrXSA9PT0gbnVsbCB8fFxyXG4gICAgICAgICAgKCF2YWx1ZSAmJiB0eXBlb2YgdmFsdWVba10gIT09ICdib29sZWFuJylcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHZhbHVlID0gJyc7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhbHVlID0gdmFsdWVba107XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzZXRWYWx1ZURlZXBseShtb2RlbDogYW55LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IHNwbGl0dGVkS2V5cyA9IGtleS5zcGxpdCgnLicpO1xyXG5cclxuICAgIGxldCBkZWVwTW9kZWw6IGFueVtdID0gW21vZGVsXTtcclxuICAgIGxldCB0ZW1wTW9kZWw6IGFueTtcclxuXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc3BsaXR0ZWRLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICB0ZW1wTW9kZWwgPSBkZWVwTW9kZWxbaW5kZXhdO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHR5cGVvZiB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09ICdzdHJpbmcnICYmXHJcbiAgICAgICAgdHlwZW9mIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gJ2Jvb2xlYW4nICYmXHJcbiAgICAgICAgdHlwZW9mIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gJ251bWJlcicgJiZcclxuICAgICAgICB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09IHVuZGVmaW5lZFxyXG4gICAgICApIHtcclxuICAgICAgICBkZWVwTW9kZWwucHVzaCh0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaW5kZXggPT09IHNwbGl0dGVkS2V5cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgbGV0IG9sZFZhbHVlID0gdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dO1xyXG4gICAgICAgIC8vIGlmICh2YWx1ZSA9PT0gJycgJiYgKG9sZFZhbHVlID09PSBudWxsIHx8IG9sZFZhbHVlID09PSB1bmRlZmluZWQpIHRoZW4gZG9uJ3QgY2hhbmdlIHZhbHVlLlxyXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gJycgfHwgKG9sZFZhbHVlICE9PSBudWxsICYmIG9sZFZhbHVlICE9PSB1bmRlZmluZWQpKSB7XHJcbiAgICAgICAgICB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFByb3BlcnR5TmFtZXNEZWVwbHkoZWxlbWVudDogYW55KTogc3RyaW5nW10ge1xyXG4gICAgbGV0IHByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhlbGVtZW50KTtcclxuICAgIHByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHR5cGVvZiBlbGVtZW50W3Byb3BlcnR5XSA9PT0gJ3N0cmluZycgfHxcclxuICAgICAgICB0eXBlb2YgZWxlbWVudFtwcm9wZXJ0eV0gPT09ICdib29sZWFuJyB8fFxyXG4gICAgICAgIHR5cGVvZiBlbGVtZW50W3Byb3BlcnR5XSA9PT0gJ251bWJlcicgfHxcclxuICAgICAgICBlbGVtZW50W3Byb3BlcnR5XSA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgZWxlbWVudFtwcm9wZXJ0eV0gPT09IG51bGwgfHxcclxuICAgICAgICAhZWxlbWVudFtwcm9wZXJ0eV0gfHxcclxuICAgICAgICAhZWxlbWVudFxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGlubmVyUHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydHlOYW1lc0RlZXBseShlbGVtZW50W3Byb3BlcnR5XSk7XHJcbiAgICAgIGlubmVyUHJvcGVydGllcyA9IGlubmVyUHJvcGVydGllcy5tYXAoXHJcbiAgICAgICAgKGlubmVyUHJvcGVydHk6IHN0cmluZykgPT4gYCR7cHJvcGVydHl9LiR7aW5uZXJQcm9wZXJ0eX1gXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBwcm9wZXJ0aWVzLnB1c2goLi4uaW5uZXJQcm9wZXJ0aWVzKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZXNGcm9tTW9kZWwod2lkZ2V0cz86IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10sIGNvbXBMaWI/OiBDb21wb25lbnRMaWJyYXJ5KTogdm9pZCB7XHJcbiAgICBjb25zdCBzbWFydEZvcm0gPSB0aGlzLnNtYXJ0Rm9ybSE7XHJcbiAgICBjb25zdCBkYXRhID0gc21hcnRGb3JtLmNvbXBvbmVudE1vZGVsPy5kYXRhO1xyXG4gICAgaWYgKCFkYXRhKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXdpZGdldHMpIHtcclxuICAgICAgd2lkZ2V0cyA9IHNtYXJ0Rm9ybS53aWRnZXRzO1xyXG4gICAgfVxyXG4gICAgY29uc3Qga2V5czogc3RyaW5nW10gPSB0aGlzLmNvbGxlY3RLZXlzRnJvbVNtYXJ0Rm9ybSh3aWRnZXRzLCBbXSk7XHJcblxyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gfCB1bmRlZmluZWQ7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLmdldFByb3BlcnR5TmFtZXNEZWVwbHkoZGF0YSkpIHtcclxuICAgICAgaWYgKGtleXMuaW5jbHVkZXMoa2V5KSkge1xyXG4gICAgICAgIHdpZGdldCA9IHRoaXMuZmluZFNtYXJ0Rm9ybVdpZGdldEJ5S2V5KHdpZGdldHMsIGtleSk7XHJcbiAgICAgICAgaWYgKHdpZGdldCkge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZURlZXBseShkYXRhLCBrZXkpO1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nICYmIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlRPR0dMRSkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGAke3ZhbHVlfWA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29tcExpYiA9PT0gdGhpcy5jb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpIHtcclxuICAgICAgICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfUElDS0VSKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB3aWRnZXQudmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHdpZGdldC52YWx1ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ESVZJREVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT01QT05FTlQgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVJcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB3aWRnZXQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgaWYgKHdpZGdldC5zaG93TGFiZWwgPT09IHVuZGVmaW5lZCAmJiBzbWFydEZvcm0uc2hvd0xhYmVsKSB7XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnNob3dMYWJlbCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLmNvcHlGcm9tVmFsdWVTZXRUb1ZhbHVlc0xpc3Qod2lkZ2V0LCBzbWFydEZvcm0uY29tcG9uZW50TW9kZWwudmFsdWVTZXRzKTtcclxuXHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHdpZGdldCAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1ggJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnZhbHVlTGlzdC5sZW5ndGggPT09IDFcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB3aWRnZXQudmFsdWVMaXN0ID0gd2lkZ2V0LnZhbHVlTGlzdC5tYXAoKGl0ZW06IFNtYXJ0SXRlbTxhbnk+KSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZURlZXBseShkYXRhLCBrZXkpO1xyXG4gICAgICAgICAgICAgIGl0ZW0udmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIEluIGNhc2Ugb2YgQ2hlY2tCb3gyXHJcbiAgICAgICAgICBsZXQgc3BsaXR0ZWRLZXlzID0ga2V5LnNwbGl0KCcuJyk7XHJcbiAgICAgICAgICBzcGxpdHRlZEtleXMuc3BsaWNlKHNwbGl0dGVkS2V5cy5sZW5ndGggLSAxLCAxKTtcclxuICAgICAgICAgIHdpZGdldCA9IHRoaXMuZmluZFNtYXJ0Rm9ybVdpZGdldEJ5S2V5KHdpZGdldHMsIHNwbGl0dGVkS2V5cy5qb2luKCcuJykpO1xyXG4gICAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1hfMikge1xyXG4gICAgICAgICAgICB0aGlzLmNvcHlGcm9tVmFsdWVTZXRUb1ZhbHVlc0xpc3Qod2lkZ2V0LCBzbWFydEZvcm0uY29tcG9uZW50TW9kZWwudmFsdWVTZXRzKTtcclxuICAgICAgICAgICAgaWYgKHdpZGdldC52YWx1ZUxpc3QpIHtcclxuICAgICAgICAgICAgICB3aWRnZXQudmFsdWVMaXN0ID0gd2lkZ2V0LnZhbHVlTGlzdC5tYXAoKGl0ZW06IFNtYXJ0SXRlbTxhbnk+KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmdldFZhbHVlRGVlcGx5KGRhdGEsIGAke3dpZGdldD8ua2V5fS4ke2l0ZW0ua2V5fWApO1xyXG4gICAgICAgICAgICAgICAgaXRlbS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29weUZyb21WYWx1ZVNldFRvVmFsdWVzTGlzdCh3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+LCB2YWx1ZVNldHM6IGFueSkge1xyXG4gICAgaWYgKFxyXG4gICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QgfHxcclxuICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUX01VTFRJUExFIHx8XHJcbiAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlJBRElPX0JVVFRPTiB8fFxyXG4gICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1ggfHxcclxuICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzIgfHxcclxuICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRFxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh3aWRnZXQuc2VsZWN0aW9uICYmIHZhbHVlU2V0cykge1xyXG4gICAgICAgIGxldCB2YWx1ZVNldCA9IHZhbHVlU2V0c1t3aWRnZXQuc2VsZWN0aW9uLnZhbHVlU2V0TmFtZV07XHJcbiAgICAgICAgaWYgKCF2YWx1ZVNldCkge1xyXG4gICAgICAgICAgY29uc29sZS53YXJuKCd2YWx1ZVNldCBub3QgZm91bmQnLCB3aWRnZXQuc2VsZWN0aW9uLnZhbHVlU2V0TmFtZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCB2YWx1ZVNldERhdGEgPSB2YWx1ZVNldC52YWx1ZVNldERhdGE7XHJcbiAgICAgICAgICBsZXQgdmFsdWVzID0gdmFsdWVTZXREYXRhLnZhbHVlcztcclxuICAgICAgICAgIGxldCBkaXNwbGF5UHJvcGVydHkgPVxyXG4gICAgICAgICAgICAod2lkZ2V0IGFzIFNtYXJ0U2VsZWN0PGFueT4pLnNlbGVjdGlvbj8uZGlzcGxheVByb3BlcnR5ID8/ICdkaXNwbGF5VmFsdWUnO1xyXG4gICAgICAgICAgLy8gY2hlY2sgaXMgZGlzcGxheVByb3BlcnR5IGV4aXN0cywgZmFsbGJhY2sgZm9yIGNvbW1vbiBkaXNwbGF5IHByb3BlcnRpZXNcclxuICAgICAgICAgIGlmICghdGhpcy5jaGVja1Byb3BlcnR5KHZhbHVlcywgZGlzcGxheVByb3BlcnR5KSkge1xyXG4gICAgICAgICAgICBkaXNwbGF5UHJvcGVydHkgPSAnbmFtZSc7IC8vIEdlbmVyaWNWYWx1ZS5uYW1lXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jaGVja1Byb3BlcnR5KHZhbHVlcywgZGlzcGxheVByb3BlcnR5KSkge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXlQcm9wZXJ0eSA9ICdkaXNwbGF5VmFsdWUnOyAvLyBWYWx1ZS5kaXNwbGF5VmFsdWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB3aWRnZXQuc2VsZWN0aW9uLnR5cGUgPT09IFNlbGVjdGlvbkRlZmluaXRpb25UeXBlRW51bS5QUk9QRVJUWSAmJlxyXG4gICAgICAgICAgICAhd2lkZ2V0LnNlbGVjdGlvbi5tYXBwaW5nLmxlbmd0aFxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGxldCBrZXlQcm9wZXJ0eSA9IHZhbHVlU2V0RGF0YS5rZXlQcm9wZXJ0eSA/PyAnb2JqZWN0VXJpJztcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrUHJvcGVydHkodmFsdWVzLCBrZXlQcm9wZXJ0eSkpIHtcclxuICAgICAgICAgICAgICBrZXlQcm9wZXJ0eSA9ICd1cmknOyAvLyBHZW5lcmljVmFsdWUudXJpXHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrUHJvcGVydHkodmFsdWVzLCBrZXlQcm9wZXJ0eSkpIHtcclxuICAgICAgICAgICAgICAgIGtleVByb3BlcnR5ID0gJ29iamVjdFVyaSc7IC8vIFZhbHVlLm9iamVjdFVyaVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB3aWRnZXQudmFsdWVMaXN0ID0gdmFsdWVzLm1hcCgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBrZXk6IHZhbHVlW2tleVByb3BlcnR5XSxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB2YWx1ZVtkaXNwbGF5UHJvcGVydHldLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlW2tleVByb3BlcnR5XSxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5hZGRFbXB0eUl0ZW1Ub1ZhbHVlTGlzdCh3aWRnZXQsIHdpZGdldC5zZWxlY3Rpb24uZW1wdHlMYWJlbCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICB3aWRnZXQuc2VsZWN0aW9uLnR5cGUgPT09IFNlbGVjdGlvbkRlZmluaXRpb25UeXBlRW51bS5PQkpFQ1QgJiZcclxuICAgICAgICAgICAgIXdpZGdldC5zZWxlY3Rpb24ubWFwcGluZy5sZW5ndGhcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB3aWRnZXQudmFsdWVMaXN0ID0gdmFsdWVzLm1hcCgodmFsdWU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBrZXk6IGAke2luZGV4fWAsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdmFsdWVbZGlzcGxheVByb3BlcnR5XSxcclxuICAgICAgICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5hZGRFbXB0eUl0ZW1Ub1ZhbHVlTGlzdCh3aWRnZXQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1Byb3BlcnR5KHZhbHVlczogb2JqZWN0W10sIHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghdmFsdWVzPy5sZW5ndGgpIHtcclxuICAgICAgLy8gbm8gc2FtcGxlIGRhdGEsIGFzc3VtZSBleGlzdGFuY2VcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJvcGVydHkgaW4gdmFsdWVzWzBdO1xyXG4gIH1cclxuXHJcbiAgdG9Gb3JtR3JvdXAoY29tcExpYj86IENvbXBvbmVudExpYnJhcnkpOiBVbnR5cGVkRm9ybUdyb3VwIHtcclxuICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2xzKHRoaXMuc21hcnRGb3JtIS53aWRnZXRzLCBjb21wTGliISk7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwKSB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzID0gdGhpcy5ncm91cDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAodGhpcy5ncm91cCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc21hcnRGb3JtIS52YWxpZGF0b3JzICYmIHRoaXMuc21hcnRGb3JtIS52YWxpZGF0b3JzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5zZXRWYWxpZGF0b3JzKFxyXG4gICAgICAgIHRoaXMuc21hcnRGb3JtIS52YWxpZGF0b3JzLm1hcCgodmFsaWRhdG9yOiBTbWFydFZhbGlkYXRvcikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHZhbGlkYXRvci52YWxpZGF0b3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVGb3JtQ29udHJvbHMoXHJcbiAgICB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdIHwgU21hcnRJdGVtPGFueT5bXSxcclxuICAgIGNvbXBMaWI6IENvbXBvbmVudExpYnJhcnksXHJcbiAgICBwYXJlbnRLZXk/OiBzdHJpbmdcclxuICApOiB2b2lkIHtcclxuICAgIHdpZGdldHMubWFwKCh3aWRnZXQpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUiAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUiAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUiAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTiAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTVBPTkVOVCAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLk1BVFJJWCAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2woYCR7d2lkZ2V0LmtleX1gLCB3aWRnZXQudmFsdWUsIHdpZGdldC5pc0Rpc2FibGVkLCB3aWRnZXQudmFsaWRhdG9ycyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5NQVRSSVgpIHtcclxuICAgICAgICBpZiAod2lkZ2V0LmlzTXVsdGlwbGUpIHtcclxuICAgICAgICAgIGxldCBkYXRhS2V5cyA9IE9iamVjdC5rZXlzKHdpZGdldC52YWx1ZS5kYXRhKTtcclxuICAgICAgICAgIGxldCBpdGVtS2V5cyA9IHdpZGdldC52YWx1ZS5jb2x1bW5zLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB2YWx1ZS5jb2RlKTtcclxuICAgICAgICAgIGRhdGFLZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW1LZXlzLmZvckVhY2goKGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICAgICBgJHt3aWRnZXQua2V5fS5kYXRhLiR7a2V5fS4ke2l0ZW19YCxcclxuICAgICAgICAgICAgICAgIHdpZGdldC52YWx1ZS5kYXRhW2tleV1baXRlbV0sXHJcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsIC8vIFRPRE8gcmVhbGx5IHdlIGRvbid0IHBhc3Mgd2lkZ2V0LmlzRGlzYWJsZWQ/XHJcbiAgICAgICAgICAgICAgICB3aWRnZXQudmFsaWRhdG9yc1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIE9iamVjdC5rZXlzKHdpZGdldC52YWx1ZS5kYXRhKS5tYXAoKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICAgYCR7d2lkZ2V0LmtleX0uJHtrZXl9YCxcclxuICAgICAgICAgICAgICB3aWRnZXQuaXNNdWx0aXBsZSA/IHdpZGdldC52YWx1ZS5kYXRhW2tleV0gOiB3aWRnZXQudmFsdWUuZGF0YVtrZXldWzBdLFxyXG4gICAgICAgICAgICAgIHdpZGdldC5pc0Rpc2FibGVkLFxyXG4gICAgICAgICAgICAgIHdpZGdldC52YWxpZGF0b3JzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0gJiYgcGFyZW50S2V5KSB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbChcclxuICAgICAgICAgIGAke3BhcmVudEtleX0uJHt3aWRnZXQua2V5fWAsXHJcbiAgICAgICAgICB3aWRnZXQudmFsdWUsXHJcbiAgICAgICAgICB3aWRnZXQuaXNEaXNhYmxlZCxcclxuICAgICAgICAgIHVuZGVmaW5lZFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiYgd2lkZ2V0LnZhbHVlTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbHMod2lkZ2V0LnZhbHVlTGlzdCwgY29tcExpYik7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yICYmIHdpZGdldC52YWx1ZUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRm9ybUNvbnRyb2xzKHdpZGdldC52YWx1ZUxpc3QsIGNvbXBMaWIsIHdpZGdldC5rZXkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY29tcExpYiEgPT09IHRoaXMuY29tcG9uZW50TGlicmFyeS5QUklNRU5HKSB7XHJcbiAgICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfUElDS0VSKSB7XHJcbiAgICAgICAgICBpZiAod2lkZ2V0LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZSA9IG5ldyBEYXRlKHdpZGdldC52YWx1ZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB3aWRnZXQudmFsdWUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkYXRvckluTGlzdCh2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yLCBsaXN0PzogU21hcnRWYWxpZGF0b3JbXSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGxpc3QgIT09IHVuZGVmaW5lZCAmJiBsaXN0Lmxlbmd0aCA+IDAgJiYgbGlzdC5zb21lKCh2KSA9PiB2ID09PSB2YWxpZGF0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVGb3JtQ29udHJvbChcclxuICAgIGtleTogc3RyaW5nLFxyXG4gICAgdmFsdWU/OiBzdHJpbmcsXHJcbiAgICBpc0Rpc2FibGVkPzogYm9vbGVhbixcclxuICAgIHZhbGlkYXRvcnM/OiBTbWFydFZhbGlkYXRvcltdXHJcbiAgKTogVW50eXBlZEZvcm1Db250cm9sIHtcclxuICAgIGxldCBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sID0gdGhpcy5ncm91cFtrZXldO1xyXG4gICAgaWYgKCFmb3JtQ29udHJvbCkge1xyXG4gICAgICBmb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICAgICAgdGhpcy5ncm91cFtrZXldID0gZm9ybUNvbnRyb2w7XHJcbiAgICB9XHJcbiAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSB8fCAnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgZm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICB2YWxpZGF0b3JzPy5tYXAoKHZhbGlkYXRvcjogU21hcnRWYWxpZGF0b3IpID0+IHtcclxuICAgICAgZm9ybUNvbnRyb2wuYWRkVmFsaWRhdG9ycyh2YWxpZGF0b3IudmFsaWRhdG9yKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChpc0Rpc2FibGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICBmb3JtQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmb3JtQ29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvcHlWYWx1ZUZyb21Gb3JtVG9XaWRnZXRCZWFucyhcclxuICAgIHdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10sXHJcbiAgICBncm91cDogVW50eXBlZEZvcm1Hcm91cFxyXG4gICk6IHZvaWQge1xyXG4gICAgd2lkZ2V0cy5mb3JFYWNoKCh3aWRnZXQpID0+IHtcclxuICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJiB3aWRnZXQudmFsdWVMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmNvcHlWYWx1ZUZyb21Gb3JtVG9XaWRnZXRCZWFucyh3aWRnZXQudmFsdWVMaXN0LCBncm91cCk7XHJcbiAgICAgIH0gZWxzZSBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTUFUUklYKSB7XHJcbiAgICAgICAgaWYgKHdpZGdldC5pc011bHRpcGxlKSB7XHJcbiAgICAgICAgICBsZXQgZGF0YUtleXMgPSBPYmplY3Qua2V5cyh3aWRnZXQudmFsdWUuZGF0YSk7XHJcbiAgICAgICAgICBsZXQgaXRlbUtleXMgPSB3aWRnZXQudmFsdWUuY29sdW1ucy5tYXAoKHZhbHVlOiBWYWx1ZSkgPT4gdmFsdWUuY29kZSk7XHJcbiAgICAgICAgICBkYXRhS2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICBpdGVtS2V5cy5mb3JFYWNoKChpdGVtOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICB3aWRnZXQudmFsdWUuZGF0YVtrZXldW2l0ZW1dID0gW1xyXG4gICAgICAgICAgICAgICAgZ3JvdXAuY29udHJvbHNbYCR7d2lkZ2V0LmtleX0uZGF0YS4ke2tleX0uJHtpdGVtfWBdLnZhbHVlLFxyXG4gICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgbGV0IGRhdGFrZXlzID0gT2JqZWN0LmtleXMod2lkZ2V0LnZhbHVlLmRhdGEpO1xyXG4gICAgICAgICAgLy9NYXAgY2hlY2tib3gga2V5IC0gYm9vbGVhbiB2YWx1ZSB0byBzdHJpbmcga2V5IGFycmF5XHJcbiAgICAgICAgICBsZXQgdmFsdWVLZXlzID0gd2lkZ2V0LnZhbHVlLmNvbHVtbnMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHZhbHVlLmNvZGUpO1xyXG4gICAgICAgICAgZGF0YWtleXMuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgbGV0IG5ld0RhdGE6IGFueVtdID0gW107XHJcbiAgICAgICAgICAgIHZhbHVlS2V5cy5mb3JFYWNoKCh2YWx1ZUtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gd2lkZ2V0LnZhbHVlLmRhdGFba2V5XVt2YWx1ZUtleV07XHJcbiAgICAgICAgICAgICAgaWYgKHZhbHVlWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdEYXRhLnB1c2godmFsdWVLZXkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZS5kYXRhW2tleV0gPSBuZXdEYXRhO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIE9iamVjdC5rZXlzKHdpZGdldC52YWx1ZS5kYXRhKS5tYXAoKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZS5kYXRhW2tleV0gPSBbZ3JvdXAuY29udHJvbHNbYCR7d2lkZ2V0LmtleX0uJHtrZXl9YF0udmFsdWVdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUiAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0UgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TVkcgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUiAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09NUE9ORU5UICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVJcclxuICAgICAgKSB7XHJcbiAgICAgICAgd2lkZ2V0LnZhbHVlID0gZ3JvdXAuY29udHJvbHNbd2lkZ2V0LmtleV0udmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG9TbWFydEZvcm0oZ3JvdXA6IFVudHlwZWRGb3JtR3JvdXApOiBTbWFydEZvcm0ge1xyXG4gICAgaWYgKHRoaXMuc21hcnRGb3JtKSB7XHJcbiAgICAgIHRoaXMuY29weVZhbHVlRnJvbUZvcm1Ub1dpZGdldEJlYW5zKHRoaXMuc21hcnRGb3JtLndpZGdldHMsIGdyb3VwKTtcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuc21hcnRGb3JtLmNvbXBvbmVudE1vZGVsPy5kYXRhO1xyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuZ2V0UHJvcGVydHlOYW1lc0RlZXBseShkYXRhKSkge1xyXG4gICAgICAgICAgaWYgKGdyb3VwLmNvbnRyb2xzW2tleV0pIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZURlZXBseShkYXRhLCBrZXksIGdyb3VwLmNvbnRyb2xzW2tleV0udmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuc21hcnRGb3JtITtcclxuICB9XHJcblxyXG4gIGdldE1vZGVsKGdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKTogYW55IHtcclxuICAgIGlmICghdGhpcy5zbWFydEZvcm0/LmNvbXBvbmVudE1vZGVsKSB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICAgIGxldCBvcmlnaW5hbE1vZGVsID0gdGhpcy5zbWFydEZvcm0uY29tcG9uZW50TW9kZWwuZGF0YTtcclxuICAgIGxldCBjb3B5T2ZNb2RlbCA9IHsgLi4ub3JpZ2luYWxNb2RlbCB9O1xyXG5cclxuICAgIC8vIGNvcHlPZk1vZGVsIHNob3VsZCBiZSB0aGUgY3VycmVudCBtb2RlbFxyXG4gICAgdGhpcy5zbWFydEZvcm0uY29tcG9uZW50TW9kZWwuZGF0YSA9IGNvcHlPZk1vZGVsO1xyXG4gICAgLy8gY29weSB2YWx1ZSBmcm9tIEZvcm1Hcm91cCBpbnRvIG1vZGVsXHJcbiAgICB0aGlzLnRvU21hcnRGb3JtKGdyb3VwKTtcclxuXHJcbiAgICBsZXQgbmV3TW9kZWwgPSB0aGlzLnNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbC5kYXRhO1xyXG4gICAgdGhpcy5zbWFydEZvcm0uY29tcG9uZW50TW9kZWwuZGF0YSA9IG9yaWdpbmFsTW9kZWw7XHJcblxyXG4gICAgcmV0dXJuIG5ld01vZGVsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUNvbXBvbmVudENvbnN0cmFpbnRzKFxyXG4gICAgd2lkZ2V0czogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSxcclxuICAgIGNvbnN0cmFpbnRzOiBTbWFydEZvcm1Db21wb25lbnRDb25zdHJhaW50W11cclxuICApIHtcclxuICAgIHdpZGdldHMuZm9yRWFjaCgod2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PikgPT4ge1xyXG4gICAgICBsZXQgd2lkZ2V0Q29uc3RyYWludHMgPSBjb25zdHJhaW50cz8uZmlsdGVyKFxyXG4gICAgICAgIC8vKGNvbnN0cmFpbnQ6IFNtYXJ0Rm9ybUNvbXBvbmVudENvbnN0cmFpbnQpID0+IGNvbnN0cmFpbnQuZGF0YU5hbWUgPT09IHdpZGdldC5rZXlcclxuICAgICAgICAoY29uc3RyYWludCkgPT4gdGhpcy5hbnRQYXRoTWF0Y2hlcihjb25zdHJhaW50LmRhdGFOYW1lLCB3aWRnZXQua2V5KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKHdpZGdldENvbnN0cmFpbnRzICYmIHdpZGdldENvbnN0cmFpbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIHdpZGdldENvbnN0cmFpbnRzLmZvckVhY2goKGNvbnN0cmFpbnQpID0+IHtcclxuICAgICAgICAgIGlmIChjb25zdHJhaW50LnZpc2libGUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAod2lkZ2V0LmlzVmlzaWJsZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LmlzVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHdpZGdldC5pc1Zpc2libGUgPSBjb25zdHJhaW50LnZpc2libGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0UgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkZJTEVfVVBMT0FERVIgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5CVVRUT04gJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09NUE9ORU5UICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgbGV0IHZhbGlkYXRvcnMgPSB3aWRnZXQudmFsaWRhdG9ycyA/PyBbXTtcclxuICAgICAgICAgICAgbGV0IHJlcXVpcmVkSW5kZXggPSB2YWxpZGF0b3JzLmZpbmRJbmRleCgodikgPT4gdi52YWxpZGF0b3IgPT09IFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICBsZXQgd2FzTWFuZGF0b3J5ID0gcmVxdWlyZWRJbmRleCA+PSAwO1xyXG4gICAgICAgICAgICBsZXQgdG9iZU1hbmRhdG9yeSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoY29uc3RyYWludC5tYW5kYXRvcnkgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIC8vIG5vdCBzcGVjaWZpZWQgb24gc2VydmVyLCB1c2UgY2xpZW50IHN0YXRlXHJcbiAgICAgICAgICAgICAgLy8gaWYgd2lkZ2V0IGlzIG5vdCB2aXNpYmxlLCBjbGllbnQgc2hvdWxkIGRlZmF1bHQgdG8gbm90IG1hbmRhdG9yeVxyXG4gICAgICAgICAgICAgIHRvYmVNYW5kYXRvcnkgPSB3aWRnZXQuaXNWaXNpYmxlICYmIHdhc01hbmRhdG9yeTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0b2JlTWFuZGF0b3J5ID0gY29uc3RyYWludC5tYW5kYXRvcnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF3YXNNYW5kYXRvcnkgJiYgdG9iZU1hbmRhdG9yeSkge1xyXG4gICAgICAgICAgICAgIC8vIGFkZCByZXF1aXJlZCB2YWxpZGF0b3JcclxuICAgICAgICAgICAgICB3aWRnZXQudmFsaWRhdG9ycyA9IFtcclxuICAgICAgICAgICAgICAgIC4uLnZhbGlkYXRvcnMsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgICAgaXNDdXN0b206IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U6ICcnLFxyXG4gICAgICAgICAgICAgICAgICBuYW1lOiAncmVxdWlyZWQnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgIC8vIHJlbW92ZSBlbXB0eSBpdGVtXHJcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVFbXB0eUl0ZW1Gcm9tVmFsdWVMaXN0KHdpZGdldCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHdhc01hbmRhdG9yeSAmJiAhdG9iZU1hbmRhdG9yeSkge1xyXG4gICAgICAgICAgICAgIC8vIHJlbW92ZSByZXF1aXJlZCB2YWxpZGF0b3JcclxuICAgICAgICAgICAgICB3aWRnZXQudmFsaWRhdG9ycz8uc3BsaWNlKHJlcXVpcmVkSW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgIC8vIGFkZCBlbXB0eSBpdGVtXHJcbiAgICAgICAgICAgICAgbGV0IGVtcHR5TGFiZWwgPSAnJztcclxuICAgICAgICAgICAgICBpZiAoJ3NlbGVjdGlvbicgaW4gd2lkZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBlbXB0eUxhYmVsID0gd2lkZ2V0LnNlbGVjdGlvbj8uZW1wdHlMYWJlbCA/PyAnJztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRFbXB0eUl0ZW1Ub1ZhbHVlTGlzdCh3aWRnZXQsIGVtcHR5TGFiZWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjb25zdHJhaW50LmVuYWJsZWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIGlmICh3aWRnZXQuaXNEaXNhYmxlZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICB3aWRnZXQuaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB3aWRnZXQuaXNEaXNhYmxlZCA9ICFjb25zdHJhaW50LmVuYWJsZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmXHJcbiAgICAgICAgd2lkZ2V0LnZhbHVlTGlzdCAmJlxyXG4gICAgICAgIHdpZGdldC52YWx1ZUxpc3QubGVuZ3RoXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuYXBwbHlDb21wb25lbnRDb25zdHJhaW50cyh3aWRnZXQudmFsdWVMaXN0LCBjb25zdHJhaW50cyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWdleFJlZ2V4Q2hhcnMgPSBuZXcgUmVnRXhwKC9bXFwuXFwtXFxbXFxdXFwvXFx7XFx9XFwoXFwpXFwrXFxeXFwkXFxcXFxcfF0vZyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWdleEFzdGVyaXNrSW5UaGVNaWRkbGUgPSBuZXcgUmVnRXhwKC8oW15cXCpdKVxcKihbXlxcKl0pL2cpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnZXhBc3Rlcmlza0luVGhlRW5kID0gbmV3IFJlZ0V4cCgvKFteXFwqXSlcXCokL2cpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnZXhBc3Rlcmlza0luVGhlQmVnaW5uaW5nID0gbmV3IFJlZ0V4cCgvXlxcKihbXlxcKl0pL2cpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnZXhBc3Rlcmlza09ubHkgPSBuZXcgUmVnRXhwKC9eXFwqJC9nKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2V4RG91YmxlQXN0ZXJpc2tXaXRoRG90ID0gbmV3IFJlZ0V4cCgvXFwqXFwqXFxcXFxcLi9nKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2V4RG91YmxlQXN0ZXJpc2sgPSBuZXcgUmVnRXhwKC9cXCpcXCovZyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWdleFF1ZXN0aW9uTWFyayA9IG5ldyBSZWdFeHAoL1xcPy9nKTtcclxuICBwcml2YXRlIHJlZ2V4QnlQYXR0ZXJuOiBNYXA8c3RyaW5nLCBSZWdFeHA+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBhbnRQYXRoTWF0Y2hlcihwYXR0ZXJuPzogc3RyaW5nLCBwYXRoPzogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXBhdHRlcm4gfHwgIXBhdGgpIHtcclxuICAgICAgLy8gZW1wdHkgcGF0dGVybiBvciBwYXRoIC0+IG5vdCBldmFsdWF0ZWQsIHRydWUgb3IgZmFsc2U/XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGxldCByZWdleCA9IHRoaXMucmVnZXhCeVBhdHRlcm4uZ2V0KHBhdHRlcm4pO1xyXG4gICAgaWYgKHJlZ2V4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgLy8gZXNjYXBlIHJlZ2V4IGNoYXJhY3RlcnMgZXhjZXB0IGZvciA/LCAqLCAqKlxyXG4gICAgICBsZXQgcmVnZXhQYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKHRoaXMucmVnZXhSZWdleENoYXJzLCAnXFxcXCQmJyk7XHJcblxyXG4gICAgICAvLyByZXBsYWNlIGFudC1zdHlsZSB3aWxkY2FyZHMgd2l0aCByZWdleCBlcXVpdmFsZW50c1xyXG5cclxuICAgICAgLy8gcmVwbGFjZSAqIHdpdGggYSBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIGV4Y2VwdCBmb3IgJy4nXHJcbiAgICAgIHJlZ2V4UGF0dGVybiA9IHJlZ2V4UGF0dGVybi5yZXBsYWNlKHRoaXMucmVnZXhBc3Rlcmlza0luVGhlTWlkZGxlLCAnJDFbXi5dKiQyJyk7IC8vIG5vdCogKiBub3QqXHJcbiAgICAgIHJlZ2V4UGF0dGVybiA9IHJlZ2V4UGF0dGVybi5yZXBsYWNlKHRoaXMucmVnZXhBc3Rlcmlza0luVGhlRW5kLCAnJDFbXi5dKicpOyAvLyBub3QqICogRU9MXHJcbiAgICAgIHJlZ2V4UGF0dGVybiA9IHJlZ2V4UGF0dGVybi5yZXBsYWNlKHRoaXMucmVnZXhBc3Rlcmlza0luVGhlQmVnaW5uaW5nLCAnW14uXSokMScpOyAvLyBCT0wgKiBub3QqXHJcbiAgICAgIHJlZ2V4UGF0dGVybiA9IHJlZ2V4UGF0dGVybi5yZXBsYWNlKHRoaXMucmVnZXhBc3Rlcmlza09ubHksICdbXi5dKicpOyAvLyBCT0wgKiBFT0xcclxuXHJcbiAgICAgIC8vIHJlcGxhY2UgKiogd2l0aCBhIHBhdHRlcm4gdGhhdCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgaW5jbHVkaW5nICcuJ1xyXG4gICAgICByZWdleFBhdHRlcm4gPSByZWdleFBhdHRlcm4ucmVwbGFjZSh0aGlzLnJlZ2V4RG91YmxlQXN0ZXJpc2tXaXRoRG90LCAnLionKTsgLy8gKiouXHJcbiAgICAgIHJlZ2V4UGF0dGVybiA9IHJlZ2V4UGF0dGVybi5yZXBsYWNlKHRoaXMucmVnZXhEb3VibGVBc3RlcmlzaywgJy4qJyk7IC8vICoqXHJcblxyXG4gICAgICAvLyByZXBsYWNlID8gd2l0aCBhIHNpbmdsZSBjaGFyYWN0ZXIgbWF0Y2hlclxyXG4gICAgICByZWdleFBhdHRlcm4gPSByZWdleFBhdHRlcm4ucmVwbGFjZSh0aGlzLnJlZ2V4UXVlc3Rpb25NYXJrLCAnLicpO1xyXG5cclxuICAgICAgLy8gY3JlYXRlIGEgUmVnRXhwIG9iamVjdFxyXG4gICAgICByZWdleCA9IG5ldyBSZWdFeHAoJ14nICsgcmVnZXhQYXR0ZXJuICsgJyQnKTtcclxuICAgICAgdGhpcy5yZWdleEJ5UGF0dGVybi5zZXQocGF0dGVybiwgcmVnZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRlc3QgdGhlIHBhdGggYWdhaW5zdCB0aGUgZ2VuZXJhdGVkIHJlZ2V4XHJcbiAgICByZXR1cm4gcmVnZXgudGVzdChwYXRoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5Q29uc3RyYWludHMod2lkZ2V0cz86IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10pOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zbWFydEZvcm0hLmNvbXBvbmVudE1vZGVsPy5jb25zdHJhaW50cyAmJlxyXG4gICAgICB0aGlzLnNtYXJ0Rm9ybSEuY29tcG9uZW50TW9kZWw/LmNvbnN0cmFpbnRzLmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIGlmICghd2lkZ2V0cykge1xyXG4gICAgICAgIHdpZGdldHMgPSB0aGlzLnNtYXJ0Rm9ybSEud2lkZ2V0cztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFwcGx5Q29tcG9uZW50Q29uc3RyYWludHMod2lkZ2V0cywgdGhpcy5zbWFydEZvcm0hLmNvbXBvbmVudE1vZGVsPy5jb25zdHJhaW50cyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRFbXB0eUl0ZW1Ub1ZhbHVlTGlzdCh3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+LCBlbXB0eUxhYmVsPzogc3RyaW5nKSB7XHJcbiAgICBpZiAod2lkZ2V0LnR5cGUgPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QpIHtcclxuICAgICAgY29uc3QgY29udGFpbnNFbXB0eUtleSA9IHdpZGdldC52YWx1ZUxpc3Quc29tZSgodikgPT4gdi5rZXkgPT09IHRoaXMuZW1wdHlLZXkpO1xyXG4gICAgICBpZiAoIWNvbnRhaW5zRW1wdHlLZXkpIHtcclxuICAgICAgICB3aWRnZXQudmFsdWVMaXN0Py51bnNoaWZ0KHtcclxuICAgICAgICAgIGtleTogdGhpcy5lbXB0eUtleSxcclxuICAgICAgICAgIGxhYmVsOiBlbXB0eUxhYmVsID8/ICcnLFxyXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgdmFsdWU6ICcnLCAvLyB0aGlzIHNob3VsZCBiZSB1bmRlZmluZWQsIGJ1dCBGb3JtQ29udHJvbCBjYW5ub3QgYmUgbnVsbCwgZnJvbSB2MTQgaXQgd2lsbFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVFbXB0eUl0ZW1Gcm9tVmFsdWVMaXN0KHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4pIHtcclxuICAgIGlmICgndmFsdWVMaXN0JyBpbiB3aWRnZXQpIHtcclxuICAgICAgaWYgKHdpZGdldC52YWx1ZUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgIGxldCBmaXJzdEl0ZW0gPSB3aWRnZXQudmFsdWVMaXN0WzBdO1xyXG4gICAgICAgIGlmIChmaXJzdEl0ZW0/LmtleSA9PT0gdGhpcy5lbXB0eUtleSkge1xyXG4gICAgICAgICAgd2lkZ2V0LnZhbHVlTGlzdC5zaGlmdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlsdGVyV2lkZ2V0c0J5VmlzaWJpbGl0eSh3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdKTogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSB7XHJcbiAgICByZXR1cm4gd2lkZ2V0cy5maWx0ZXIoKHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4pID0+XHJcbiAgICAgIHdpZGdldC5pc1Zpc2libGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiB3aWRnZXQuaXNWaXNpYmxlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRUcmFuc2xhdGlvbk9mS2V5KGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLnNtYXJ0Rm9ybSEudHJhbnNsYXRlU2VydmljZSEuZ2V0KGtleSkudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB0cmFuc2xhdGVXaWRnZXRzKHdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIFByb21pc2UuYWxsKFxyXG4gICAgICB3aWRnZXRzLm1hcChhc3luYyAod2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PikgPT4ge1xyXG4gICAgICAgIGlmICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUikgcmV0dXJuO1xyXG4gICAgICAgIGlmICh3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIpIHtcclxuICAgICAgICAgIGlmICghd2lkZ2V0Lm9yaWdpbmFsTGFiZWwpIHtcclxuICAgICAgICAgICAgd2lkZ2V0Lm9yaWdpbmFsTGFiZWwgPSBgJHt3aWRnZXQubGFiZWx9YDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vICBMYWJlbFxyXG4gICAgICAgICAgd2lkZ2V0LmxhYmVsID0gYXdhaXQgdGhpcy5nZXRUcmFuc2xhdGlvbk9mS2V5KHdpZGdldC5vcmlnaW5hbExhYmVsKTtcclxuXHJcbiAgICAgICAgICAvLyBQbGFjZWhvbGRlclxyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRCB8fFxyXG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfTlVNQkVSIHx8XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUyB8fFxyXG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlJJQ0hfVEVYVCB8fFxyXG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfQk9YKSAmJlxyXG4gICAgICAgICAgICB3aWRnZXQucGxhY2Vob2xkZXJcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBpZiAoIXdpZGdldC5vcmlnaW5hbFBsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgICAgICAgd2lkZ2V0Lm9yaWdpbmFsUGxhY2Vob2xkZXIgPSBgJHt3aWRnZXQucGxhY2Vob2xkZXJ9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB3aWRnZXQucGxhY2Vob2xkZXIgPSBhd2FpdCB0aGlzLmdldFRyYW5zbGF0aW9uT2ZLZXkod2lkZ2V0Lm9yaWdpbmFsUGxhY2Vob2xkZXIpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFZhbGlkYXRvcnNcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNWRyAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVIgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTVBPTkVOVCAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudmFsaWRhdG9yc1xyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHdpZGdldC52YWxpZGF0b3JzID0gYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnZhbGlkYXRvcnMubWFwKGFzeW5jICh2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkYXRvci5vcmlnaW5hbEVycm9yTWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgICB2YWxpZGF0b3Iub3JpZ2luYWxFcnJvck1lc3NhZ2UgPSBgJHt2YWxpZGF0b3IuZXJyb3JNZXNzYWdlfWA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3IuZXJyb3JNZXNzYWdlID0gYXdhaXQgdGhpcy5nZXRUcmFuc2xhdGlvbk9mS2V5KFxyXG4gICAgICAgICAgICAgICAgICB2YWxpZGF0b3Iub3JpZ2luYWxFcnJvck1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdG9yO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBJbmRpY2F0b3JcclxuICAgICAgICAgIGlmICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1IgJiYgd2lkZ2V0LmluZGljYXRvcikge1xyXG4gICAgICAgICAgICBpZiAoIXdpZGdldC5pbmRpY2F0b3Iub3JpZ2luYWxJbmRpY2F0b3JTdGF0dXNMYWJlbHMpIHtcclxuICAgICAgICAgICAgICB3aWRnZXQuaW5kaWNhdG9yLm9yaWdpbmFsSW5kaWNhdG9yU3RhdHVzTGFiZWxzID1cclxuICAgICAgICAgICAgICAgIHdpZGdldC5pbmRpY2F0b3IuaW5kaWNhdG9yU3RhdHVzTGFiZWxzLm1hcCgobGFiZWw6IHN0cmluZykgPT4gbGFiZWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHdpZGdldC5pbmRpY2F0b3IuaW5kaWNhdG9yU3RhdHVzTGFiZWxzID0gYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgd2lkZ2V0LmluZGljYXRvci5pbmRpY2F0b3JTdGF0dXNMYWJlbHMubWFwKFxyXG4gICAgICAgICAgICAgICAgYXN5bmMgKGxhYmVsOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XHJcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0VHJhbnNsYXRpb25PZktleShcclxuICAgICAgICAgICAgICAgICAgICB3aWRnZXQuaW5kaWNhdG9yIS5vcmlnaW5hbEluZGljYXRvclN0YXR1c0xhYmVscyFbaW5kZXhdXHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUyB8fFxyXG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVCB8fFxyXG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVF9NVUxUSVBMRSB8fFxyXG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWCB8fFxyXG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yIHx8XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUkFESU9fQlVUVE9OKSAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudmFsdWVMaXN0XHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVXaWRnZXRJdGVtcyh3aWRnZXQudmFsdWVMaXN0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVXaWRnZXRzKHdpZGdldC52YWx1ZUxpc3QhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdHJhbnNsYXRlV2lkZ2V0SXRlbXMod2lkZ2V0czogU21hcnRJdGVtczxhbnk+W10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIFByb21pc2UuYWxsKFxyXG4gICAgICB3aWRnZXRzLm1hcChhc3luYyAod2lkZ2V0OiBTbWFydEl0ZW1zPGFueT4pID0+IHtcclxuICAgICAgICBpZiAoIXdpZGdldC5vcmlnaW5hbExhYmVsKSB7XHJcbiAgICAgICAgICB3aWRnZXQub3JpZ2luYWxMYWJlbCA9IGAke3dpZGdldC5sYWJlbH1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAgTGFiZWxcclxuICAgICAgICB3aWRnZXQubGFiZWwgPSBhd2FpdCB0aGlzLmdldFRyYW5zbGF0aW9uT2ZLZXkod2lkZ2V0Lm9yaWdpbmFsTGFiZWwpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
662
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NlcnZpY2VzL3NtYXJ0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBdUIsMkJBQTJCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBRy9FLE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFbUIsYUFBUSxHQUFXLFdBQVcsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUNwQyxVQUFLLEdBQVEsRUFBRSxDQUFDO1FBbWxCQyxvQkFBZSxHQUFHLElBQUksTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDaEUsNkJBQXdCLEdBQUcsSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzRCwwQkFBcUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxnQ0FBMkIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxzQkFBaUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QywrQkFBMEIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRCx3QkFBbUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxzQkFBaUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMv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TSxDQUFDLFNBQVMsRUFDaEIsQ0FBQztvQkFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBVSxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE9BQTBCO1FBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBdUIsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxhQUFhLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0MsQ0FBQztZQUNELFNBQVM7WUFDVCxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RSxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0Evd0JVLGdCQUFnQjttSEFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFNlbGVjdGlvbkRlZmluaXRpb24sIFNlbGVjdGlvbkRlZmluaXRpb25UeXBlRW51bSwgU21hcnRGb3JtV2lkZ2V0VHlwZSB9IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldCwgU21hcnRJdGVtLCBTbWFydEl0ZW1zLCBTbWFydFNlbGVjdCB9IGZyb20gJy4uL3NtYXJ0Zm9ybS5mb3JtLW1vZGVsJztcclxuaW1wb3J0IHsgU21hcnRGb3JtLCBTbWFydEZvcm1Db21wb25lbnRDb25zdHJhaW50LCBTbWFydFZhbGlkYXRvciwgVmFsdWUgfSBmcm9tICcuLi9zbWFydGZvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRMaWJyYXJ5IH0gZnJvbSAnLi4vLi4vdmlldy1jb250ZXh0L3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTbWFydEZvcm1TZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVtcHR5S2V5OiBzdHJpbmcgPSAnZSNtJXBAdCp5JztcclxuICBjb21wb25lbnRMaWJyYXJ5ID0gQ29tcG9uZW50TGlicmFyeTtcclxuICBncm91cDogYW55ID0ge307XHJcblxyXG4gIGZvcm1Hcm91cD86IFVudHlwZWRGb3JtR3JvdXA7XHJcblxyXG4gIHNtYXJ0Rm9ybT86IFNtYXJ0Rm9ybTtcclxuXHJcbiAgZ2V0U21hcnRGb3JtV2lkZ2V0QnlLZXkoa2V5OiBzdHJpbmcpOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5maW5kU21hcnRGb3JtV2lkZ2V0QnlLZXkodGhpcy5zbWFydEZvcm0/LndpZGdldHMhLCBrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2xsZWN0S2V5c0Zyb21TbWFydEZvcm0oXHJcbiAgICB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdIHwgU21hcnRJdGVtczxhbnk+W10sXHJcbiAgICBrZXlzOiBzdHJpbmdbXVxyXG4gICk6IHN0cmluZ1tdIHtcclxuICAgIHdpZGdldHMuZm9yRWFjaCgodykgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdy50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxyXG4gICAgICAgIHcudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCAmJlxyXG4gICAgICAgIHcudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1hfMiAmJlxyXG4gICAgICAgIHcudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUlxyXG4gICAgICApIHtcclxuICAgICAgICBrZXlzLnB1c2gody5rZXkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICB3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUyB8fFxyXG4gICAgICAgIHcudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QgfHxcclxuICAgICAgICB3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUX01VTFRJUExFIHx8XHJcbiAgICAgICAgdy50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWCB8fFxyXG4gICAgICAgIHcudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT04gfHxcclxuICAgICAgICB3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlmICh3LnZhbHVlTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBrZXlzID0gdGhpcy5jb2xsZWN0S2V5c0Zyb21TbWFydEZvcm0ody52YWx1ZUxpc3QsIGtleXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzIpIHtcclxuICAgICAgICBpZiAody52YWx1ZUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgbGV0IGNoaWxkcmVuS2V5cyA9IHRoaXMuY29sbGVjdEtleXNGcm9tU21hcnRGb3JtKHcudmFsdWVMaXN0LCBbXSk7XHJcbiAgICAgICAgICBjaGlsZHJlbktleXMgPSBjaGlsZHJlbktleXNcclxuICAgICAgICAgICAgLmZpbHRlcigoa2V5OiBzdHJpbmcpID0+IGtleSAhPT0gdy5rZXkpXHJcbiAgICAgICAgICAgIC5mbGF0TWFwKChrZXk6IHN0cmluZykgPT4gYCR7dy5rZXl9LiR7a2V5fWApO1xyXG5cclxuICAgICAgICAgIGtleXMucHVzaCguLi5jaGlsZHJlbktleXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGtleXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRTbWFydEZvcm1XaWRnZXRCeUtleShcclxuICAgIHdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10sXHJcbiAgICBrZXk6IHN0cmluZ1xyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHwgdW5kZWZpbmVkIHtcclxuICAgIGxldCB3aWRnZXRGb3VuZEJ5S2V5OiBTbWFydEZvcm1XaWRnZXQ8YW55PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBmb3IgKGxldCB3IG9mIHdpZGdldHMpIHtcclxuICAgICAgaWYgKHcua2V5ID09PSBrZXkpIHtcclxuICAgICAgICByZXR1cm4gdztcclxuICAgICAgfSBlbHNlIGlmICh3LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmIHcudmFsdWVMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgICB3aWRnZXRGb3VuZEJ5S2V5ID0gdGhpcy5maW5kU21hcnRGb3JtV2lkZ2V0QnlLZXkody52YWx1ZUxpc3QsIGtleSk7XHJcbiAgICAgICAgaWYgKHdpZGdldEZvdW5kQnlLZXkpIHtcclxuICAgICAgICAgIHJldHVybiB3aWRnZXRGb3VuZEJ5S2V5O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdpZGdldEZvdW5kQnlLZXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFZhbHVlRGVlcGx5KG1vZGVsOiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcclxuICAgIGxldCBzcGxpdHRlZEtleSA9IGtleS5zcGxpdCgnLicpO1xyXG4gICAgbGV0IHZhbHVlOiBhbnk7XHJcblxyXG4gICAgc3BsaXR0ZWRLZXkuZm9yRWFjaCgoazogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICB2YWx1ZSA9IG1vZGVsW2tdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHZhbHVlW2tdID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgIHZhbHVlW2tdID09PSBudWxsIHx8XHJcbiAgICAgICAgICAoIXZhbHVlICYmIHR5cGVvZiB2YWx1ZVtrXSAhPT0gJ2Jvb2xlYW4nKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdmFsdWUgPSAnJztcclxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZVtrXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIHNldFZhbHVlRGVlcGx5KG1vZGVsOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgc3BsaXR0ZWRLZXlzID0ga2V5LnNwbGl0KCcuJyk7XHJcblxyXG4gICAgbGV0IGRlZXBNb2RlbDogYW55W10gPSBbbW9kZWxdO1xyXG4gICAgbGV0IHRlbXBNb2RlbDogYW55O1xyXG5cclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBzcGxpdHRlZEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIHRlbXBNb2RlbCA9IGRlZXBNb2RlbFtpbmRleF07XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdHlwZW9mIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gJ3N0cmluZycgJiZcclxuICAgICAgICB0eXBlb2YgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSAnYm9vbGVhbicgJiZcclxuICAgICAgICB0eXBlb2YgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSAnbnVtYmVyJyAmJlxyXG4gICAgICAgIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgIGRlZXBNb2RlbC5wdXNoKHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpbmRleCA9PT0gc3BsaXR0ZWRLZXlzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBsZXQgb2xkVmFsdWUgPSB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV07XHJcbiAgICAgICAgLy8gaWYgKHZhbHVlID09PSAnJyAmJiAob2xkVmFsdWUgPT09IG51bGwgfHwgb2xkVmFsdWUgPT09IHVuZGVmaW5lZCkgdGhlbiBkb24ndCBjaGFuZ2UgdmFsdWUuXHJcbiAgICAgICAgaWYgKHZhbHVlICE9PSAnJyB8fCAob2xkVmFsdWUgIT09IG51bGwgJiYgb2xkVmFsdWUgIT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgICAgIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UHJvcGVydHlOYW1lc0RlZXBseShlbGVtZW50OiBhbnkpOiBzdHJpbmdbXSB7XHJcbiAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5rZXlzKGVsZW1lbnQpO1xyXG4gICAgcHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdHlwZW9mIGVsZW1lbnRbcHJvcGVydHldID09PSAnc3RyaW5nJyB8fFxyXG4gICAgICAgIHR5cGVvZiBlbGVtZW50W3Byb3BlcnR5XSA9PT0gJ2Jvb2xlYW4nIHx8XHJcbiAgICAgICAgdHlwZW9mIGVsZW1lbnRbcHJvcGVydHldID09PSAnbnVtYmVyJyB8fFxyXG4gICAgICAgIGVsZW1lbnRbcHJvcGVydHldID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICBlbGVtZW50W3Byb3BlcnR5XSA9PT0gbnVsbCB8fFxyXG4gICAgICAgICFlbGVtZW50W3Byb3BlcnR5XSB8fFxyXG4gICAgICAgICFlbGVtZW50XHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBsZXQgaW5uZXJQcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0eU5hbWVzRGVlcGx5KGVsZW1lbnRbcHJvcGVydHldKTtcclxuICAgICAgaW5uZXJQcm9wZXJ0aWVzID0gaW5uZXJQcm9wZXJ0aWVzLm1hcChcclxuICAgICAgICAoaW5uZXJQcm9wZXJ0eTogc3RyaW5nKSA9PiBgJHtwcm9wZXJ0eX0uJHtpbm5lclByb3BlcnR5fWBcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHByb3BlcnRpZXMucHVzaCguLi5pbm5lclByb3BlcnRpZXMpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcHJvcGVydGllcztcclxuICB9XHJcblxyXG4gIHNldFZhbHVlc0Zyb21Nb2RlbCh3aWRnZXRzPzogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSwgY29tcExpYj86IENvbXBvbmVudExpYnJhcnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNtYXJ0Rm9ybSA9IHRoaXMuc21hcnRGb3JtITtcclxuICAgIGNvbnN0IGRhdGEgPSBzbWFydEZvcm0uY29tcG9uZW50TW9kZWw/LmRhdGE7XHJcbiAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghd2lkZ2V0cykge1xyXG4gICAgICB3aWRnZXRzID0gc21hcnRGb3JtLndpZGdldHM7XHJcbiAgICB9XHJcbiAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IHRoaXMuY29sbGVjdEtleXNGcm9tU21hcnRGb3JtKHdpZGdldHMsIFtdKTtcclxuXHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiB8IHVuZGVmaW5lZDtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuZ2V0UHJvcGVydHlOYW1lc0RlZXBseShkYXRhKSkge1xyXG4gICAgICBpZiAoa2V5cy5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgd2lkZ2V0ID0gdGhpcy5maW5kU21hcnRGb3JtV2lkZ2V0QnlLZXkod2lkZ2V0cywga2V5KTtcclxuICAgICAgICBpZiAod2lkZ2V0KSB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmdldFZhbHVlRGVlcGx5KGRhdGEsIGtleSk7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgJiYgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVE9HR0xFKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gYCR7dmFsdWV9YDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb21wTGliID09PSB0aGlzLmNvbXBvbmVudExpYnJhcnkuUFJJTUVORykge1xyXG4gICAgICAgICAgICBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9QSUNLRVIpIHtcclxuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHdpZGdldC52YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgd2lkZ2V0LnZhbHVlID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVIgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTVBPTkVOVCAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUlxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICBpZiAod2lkZ2V0LnNob3dMYWJlbCA9PT0gdW5kZWZpbmVkICYmIHNtYXJ0Rm9ybS5zaG93TGFiZWwpIHtcclxuICAgICAgICAgICAgICB3aWRnZXQuc2hvd0xhYmVsID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuY29weUZyb21WYWx1ZVNldFRvVmFsdWVzTGlzdCh3aWRnZXQsIHNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbC52YWx1ZVNldHMpO1xyXG5cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgd2lkZ2V0ICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWCAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudmFsdWVMaXN0Lmxlbmd0aCA9PT0gMVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSB3aWRnZXQudmFsdWVMaXN0Lm1hcCgoaXRlbTogU21hcnRJdGVtPGFueT4pID0+IHtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmdldFZhbHVlRGVlcGx5KGRhdGEsIGtleSk7XHJcbiAgICAgICAgICAgICAgaXRlbS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gSW4gY2FzZSBvZiBDaGVja0JveDJcclxuICAgICAgICAgIGxldCBzcGxpdHRlZEtleXMgPSBrZXkuc3BsaXQoJy4nKTtcclxuICAgICAgICAgIHNwbGl0dGVkS2V5cy5zcGxpY2Uoc3BsaXR0ZWRLZXlzLmxlbmd0aCAtIDEsIDEpO1xyXG4gICAgICAgICAgd2lkZ2V0ID0gdGhpcy5maW5kU21hcnRGb3JtV2lkZ2V0QnlLZXkod2lkZ2V0cywgc3BsaXR0ZWRLZXlzLmpvaW4oJy4nKSk7XHJcbiAgICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29weUZyb21WYWx1ZVNldFRvVmFsdWVzTGlzdCh3aWRnZXQsIHNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbC52YWx1ZVNldHMpO1xyXG4gICAgICAgICAgICBpZiAod2lkZ2V0LnZhbHVlTGlzdCkge1xyXG4gICAgICAgICAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSB3aWRnZXQudmFsdWVMaXN0Lm1hcCgoaXRlbTogU21hcnRJdGVtPGFueT4pID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVEZWVwbHkoZGF0YSwgYCR7d2lkZ2V0Py5rZXl9LiR7aXRlbS5rZXl9YCk7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb3B5RnJvbVZhbHVlU2V0VG9WYWx1ZXNMaXN0KHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4sIHZhbHVlU2V0czogYW55KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVCB8fFxyXG4gICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEUgfHxcclxuICAgICAgd2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUkFESU9fQlVUVE9OIHx8XHJcbiAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWCB8fFxyXG4gICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1hfMiB8fFxyXG4gICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEXHJcbiAgICApIHtcclxuICAgICAgaWYgKHdpZGdldC5zZWxlY3Rpb24gJiYgdmFsdWVTZXRzKSB7XHJcbiAgICAgICAgbGV0IHZhbHVlU2V0ID0gdmFsdWVTZXRzW3dpZGdldC5zZWxlY3Rpb24udmFsdWVTZXROYW1lXTtcclxuICAgICAgICBpZiAoIXZhbHVlU2V0KSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ3ZhbHVlU2V0IG5vdCBmb3VuZCcsIHdpZGdldC5zZWxlY3Rpb24udmFsdWVTZXROYW1lKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHZhbHVlU2V0RGF0YSA9IHZhbHVlU2V0LnZhbHVlU2V0RGF0YTtcclxuICAgICAgICAgIGxldCB2YWx1ZXMgPSB2YWx1ZVNldERhdGEudmFsdWVzO1xyXG4gICAgICAgICAgbGV0IGRpc3BsYXlQcm9wZXJ0eSA9XHJcbiAgICAgICAgICAgICh3aWRnZXQgYXMgU21hcnRTZWxlY3Q8YW55Pikuc2VsZWN0aW9uPy5kaXNwbGF5UHJvcGVydHkgPz8gJ2Rpc3BsYXlWYWx1ZSc7XHJcbiAgICAgICAgICAvLyBjaGVjayBpcyBkaXNwbGF5UHJvcGVydHkgZXhpc3RzLCBmYWxsYmFjayBmb3IgY29tbW9uIGRpc3BsYXkgcHJvcGVydGllc1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNoZWNrUHJvcGVydHkodmFsdWVzLCBkaXNwbGF5UHJvcGVydHkpKSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXlQcm9wZXJ0eSA9ICduYW1lJzsgLy8gR2VuZXJpY1ZhbHVlLm5hbWVcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrUHJvcGVydHkodmFsdWVzLCBkaXNwbGF5UHJvcGVydHkpKSB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheVByb3BlcnR5ID0gJ2Rpc3BsYXlWYWx1ZSc7IC8vIFZhbHVlLmRpc3BsYXlWYWx1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHdpZGdldC5zZWxlY3Rpb24udHlwZSA9PT0gU2VsZWN0aW9uRGVmaW5pdGlvblR5cGVFbnVtLlBST1BFUlRZICYmXHJcbiAgICAgICAgICAgICF3aWRnZXQuc2VsZWN0aW9uLm1hcHBpbmcubGVuZ3RoXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgbGV0IGtleVByb3BlcnR5ID0gdmFsdWVTZXREYXRhLmtleVByb3BlcnR5ID8/ICdvYmplY3RVcmknO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tQcm9wZXJ0eSh2YWx1ZXMsIGtleVByb3BlcnR5KSkge1xyXG4gICAgICAgICAgICAgIGtleVByb3BlcnR5ID0gJ3VyaSc7IC8vIEdlbmVyaWNWYWx1ZS51cmlcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tQcm9wZXJ0eSh2YWx1ZXMsIGtleVByb3BlcnR5KSkge1xyXG4gICAgICAgICAgICAgICAga2V5UHJvcGVydHkgPSAnb2JqZWN0VXJpJzsgLy8gVmFsdWUub2JqZWN0VXJpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSB2YWx1ZXMubWFwKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGtleTogdmFsdWVba2V5UHJvcGVydHldLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHZhbHVlW2Rpc3BsYXlQcm9wZXJ0eV0sXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVba2V5UHJvcGVydHldLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFkZEVtcHR5SXRlbVRvVmFsdWVMaXN0KHdpZGdldCwgd2lkZ2V0LnNlbGVjdGlvbi5lbXB0eUxhYmVsKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIHdpZGdldC5zZWxlY3Rpb24udHlwZSA9PT0gU2VsZWN0aW9uRGVmaW5pdGlvblR5cGVFbnVtLk9CSkVDVCAmJlxyXG4gICAgICAgICAgICAhd2lkZ2V0LnNlbGVjdGlvbi5tYXBwaW5nLmxlbmd0aFxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSB2YWx1ZXMubWFwKCh2YWx1ZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGtleTogYCR7aW5kZXh9YCxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB2YWx1ZVtkaXNwbGF5UHJvcGVydHldLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFkZEVtcHR5SXRlbVRvVmFsdWVMaXN0KHdpZGdldCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrUHJvcGVydHkodmFsdWVzOiBvYmplY3RbXSwgcHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF2YWx1ZXM/Lmxlbmd0aCkge1xyXG4gICAgICAvLyBubyBzYW1wbGUgZGF0YSwgYXNzdW1lIGV4aXN0YW5jZVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBwcm9wZXJ0eSBpbiB2YWx1ZXNbMF07XHJcbiAgfVxyXG5cclxuICB0b0Zvcm1Hcm91cChjb21wTGliPzogQ29tcG9uZW50TGlicmFyeSk6IFVudHlwZWRGb3JtR3JvdXAge1xyXG4gICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbHModGhpcy5zbWFydEZvcm0hLndpZGdldHMsIGNvbXBMaWIhKTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtR3JvdXApIHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHMgPSB0aGlzLmdyb3VwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh0aGlzLmdyb3VwKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zbWFydEZvcm0hLnZhbGlkYXRvcnMgJiYgdGhpcy5zbWFydEZvcm0hLnZhbGlkYXRvcnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnNldFZhbGlkYXRvcnMoXHJcbiAgICAgICAgdGhpcy5zbWFydEZvcm0hLnZhbGlkYXRvcnMubWFwKCh2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdmFsaWRhdG9yLnZhbGlkYXRvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUZvcm1Db250cm9scyhcclxuICAgIHdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10gfCBTbWFydEl0ZW08YW55PltdLFxyXG4gICAgY29tcExpYjogQ29tcG9uZW50TGlicmFyeSxcclxuICAgIHBhcmVudEtleT86IHN0cmluZ1xyXG4gICk6IHZvaWQge1xyXG4gICAgd2lkZ2V0cy5tYXAoKHdpZGdldCkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUwgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0UgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TVkcgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ESVZJREVSICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzIgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09NUE9ORU5UICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTUFUUklYICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVJcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKGNvbXBMaWIhID09PSB0aGlzLmNvbXBvbmVudExpYnJhcnkuUFJJTUVORykge1xyXG4gICAgICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfUElDS0VSKSB7XHJcbiAgICAgICAgICAgIGlmICh3aWRnZXQudmFsdWUpIHtcclxuICAgICAgICAgICAgICB3aWRnZXQudmFsdWUgPSBuZXcgRGF0ZSh3aWRnZXQudmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHdpZGdldC52YWx1ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbChgJHt3aWRnZXQua2V5fWAsIHdpZGdldC52YWx1ZSwgd2lkZ2V0LmlzRGlzYWJsZWQsIHdpZGdldC52YWxpZGF0b3JzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLk1BVFJJWCkge1xyXG4gICAgICAgIGlmICh3aWRnZXQuaXNNdWx0aXBsZSkge1xyXG4gICAgICAgICAgbGV0IGRhdGFLZXlzID0gT2JqZWN0LmtleXMod2lkZ2V0LnZhbHVlLmRhdGEpO1xyXG4gICAgICAgICAgbGV0IGl0ZW1LZXlzID0gd2lkZ2V0LnZhbHVlLmNvbHVtbnMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHZhbHVlLmNvZGUpO1xyXG4gICAgICAgICAgZGF0YUtleXMuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgaXRlbUtleXMuZm9yRWFjaCgoaXRlbTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgICAgIGAke3dpZGdldC5rZXl9LmRhdGEuJHtrZXl9LiR7aXRlbX1gLFxyXG4gICAgICAgICAgICAgICAgd2lkZ2V0LnZhbHVlLmRhdGFba2V5XVtpdGVtXSxcclxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCwgLy8gVE9ETyByZWFsbHkgd2UgZG9uJ3QgcGFzcyB3aWRnZXQuaXNEaXNhYmxlZD9cclxuICAgICAgICAgICAgICAgIHdpZGdldC52YWxpZGF0b3JzXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgT2JqZWN0LmtleXMod2lkZ2V0LnZhbHVlLmRhdGEpLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgICBgJHt3aWRnZXQua2V5fS4ke2tleX1gLFxyXG4gICAgICAgICAgICAgIHdpZGdldC5pc011bHRpcGxlID8gd2lkZ2V0LnZhbHVlLmRhdGFba2V5XSA6IHdpZGdldC52YWx1ZS5kYXRhW2tleV1bMF0sXHJcbiAgICAgICAgICAgICAgd2lkZ2V0LmlzRGlzYWJsZWQsXHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnZhbGlkYXRvcnNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSAmJiBwYXJlbnRLZXkpIHtcclxuICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9sKFxyXG4gICAgICAgICAgYCR7cGFyZW50S2V5fS4ke3dpZGdldC5rZXl9YCxcclxuICAgICAgICAgIHdpZGdldC52YWx1ZSxcclxuICAgICAgICAgIHdpZGdldC5pc0Rpc2FibGVkLFxyXG4gICAgICAgICAgdW5kZWZpbmVkXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJiB3aWRnZXQudmFsdWVMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9scyh3aWRnZXQudmFsdWVMaXN0LCBjb21wTGliKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzIgJiYgd2lkZ2V0LnZhbHVlTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbHMod2lkZ2V0LnZhbHVlTGlzdCwgY29tcExpYiwgd2lkZ2V0LmtleSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaXNWYWxpZGF0b3JJbkxpc3QodmFsaWRhdG9yOiBTbWFydFZhbGlkYXRvciwgbGlzdD86IFNtYXJ0VmFsaWRhdG9yW10pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBsaXN0ICE9PSB1bmRlZmluZWQgJiYgbGlzdC5sZW5ndGggPiAwICYmIGxpc3Quc29tZSgodikgPT4gdiA9PT0gdmFsaWRhdG9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRm9ybUNvbnRyb2woXHJcbiAgICBrZXk6IHN0cmluZyxcclxuICAgIHZhbHVlPzogc3RyaW5nLFxyXG4gICAgaXNEaXNhYmxlZD86IGJvb2xlYW4sXHJcbiAgICB2YWxpZGF0b3JzPzogU21hcnRWYWxpZGF0b3JbXVxyXG4gICk6IFVudHlwZWRGb3JtQ29udHJvbCB7XHJcbiAgICBsZXQgZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCA9IHRoaXMuZ3JvdXBba2V5XTtcclxuICAgIGlmICghZm9ybUNvbnRyb2wpIHtcclxuICAgICAgZm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XHJcbiAgICAgIHRoaXMuZ3JvdXBba2V5XSA9IGZvcm1Db250cm9sO1xyXG4gICAgfVxyXG4gICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUgfHwgJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIGZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgdmFsaWRhdG9ycz8ubWFwKCh2YWxpZGF0b3I6IFNtYXJ0VmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgIGZvcm1Db250cm9sLmFkZFZhbGlkYXRvcnModmFsaWRhdG9yLnZhbGlkYXRvcik7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoaXNEaXNhYmxlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgZm9ybUNvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9ybUNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb3B5VmFsdWVGcm9tRm9ybVRvV2lkZ2V0QmVhbnMoXHJcbiAgICB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdLFxyXG4gICAgZ3JvdXA6IFVudHlwZWRGb3JtR3JvdXBcclxuICApOiB2b2lkIHtcclxuICAgIHdpZGdldHMuZm9yRWFjaCgod2lkZ2V0KSA9PiB7XHJcbiAgICAgIGlmICh3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIgJiYgd2lkZ2V0LnZhbHVlTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5jb3B5VmFsdWVGcm9tRm9ybVRvV2lkZ2V0QmVhbnMod2lkZ2V0LnZhbHVlTGlzdCwgZ3JvdXApO1xyXG4gICAgICB9IGVsc2UgaWYgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLk1BVFJJWCkge1xyXG4gICAgICAgIGlmICh3aWRnZXQuaXNNdWx0aXBsZSkge1xyXG4gICAgICAgICAgbGV0IGRhdGFLZXlzID0gT2JqZWN0LmtleXMod2lkZ2V0LnZhbHVlLmRhdGEpO1xyXG4gICAgICAgICAgbGV0IGl0ZW1LZXlzID0gd2lkZ2V0LnZhbHVlLmNvbHVtbnMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHZhbHVlLmNvZGUpO1xyXG4gICAgICAgICAgZGF0YUtleXMuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgaXRlbUtleXMuZm9yRWFjaCgoaXRlbTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnZhbHVlLmRhdGFba2V5XVtpdGVtXSA9IFtcclxuICAgICAgICAgICAgICAgIGdyb3VwLmNvbnRyb2xzW2Ake3dpZGdldC5rZXl9LmRhdGEuJHtrZXl9LiR7aXRlbX1gXS52YWx1ZSxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGxldCBkYXRha2V5cyA9IE9iamVjdC5rZXlzKHdpZGdldC52YWx1ZS5kYXRhKTtcclxuICAgICAgICAgIC8vTWFwIGNoZWNrYm94IGtleSAtIGJvb2xlYW4gdmFsdWUgdG8gc3RyaW5nIGtleSBhcnJheVxyXG4gICAgICAgICAgbGV0IHZhbHVlS2V5cyA9IHdpZGdldC52YWx1ZS5jb2x1bW5zLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB2YWx1ZS5jb2RlKTtcclxuICAgICAgICAgIGRhdGFrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBuZXdEYXRhOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgICAgICB2YWx1ZUtleXMuZm9yRWFjaCgodmFsdWVLZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHdpZGdldC52YWx1ZS5kYXRhW2tleV1bdmFsdWVLZXldO1xyXG4gICAgICAgICAgICAgIGlmICh2YWx1ZVswXSkge1xyXG4gICAgICAgICAgICAgICAgbmV3RGF0YS5wdXNoKHZhbHVlS2V5KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB3aWRnZXQudmFsdWUuZGF0YVtrZXldID0gbmV3RGF0YTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBPYmplY3Qua2V5cyh3aWRnZXQudmFsdWUuZGF0YSkubWFwKChrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICB3aWRnZXQudmFsdWUuZGF0YVtrZXldID0gW2dyb3VwLmNvbnRyb2xzW2Ake3dpZGdldC5rZXl9LiR7a2V5fWBdLnZhbHVlXTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1IgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHICYmXHJcbiAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUiAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTiAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVIgJiZcclxuICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1hfMiAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTVBPTkVOVCAmJlxyXG4gICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSXHJcbiAgICAgICkge1xyXG4gICAgICAgIHdpZGdldC52YWx1ZSA9IGdyb3VwLmNvbnRyb2xzW3dpZGdldC5rZXldLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvU21hcnRGb3JtKGdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKTogU21hcnRGb3JtIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0Rm9ybSkge1xyXG4gICAgICB0aGlzLmNvcHlWYWx1ZUZyb21Gb3JtVG9XaWRnZXRCZWFucyh0aGlzLnNtYXJ0Rm9ybS53aWRnZXRzLCBncm91cCk7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNtYXJ0Rm9ybS5jb21wb25lbnRNb2RlbD8uZGF0YTtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLmdldFByb3BlcnR5TmFtZXNEZWVwbHkoZGF0YSkpIHtcclxuICAgICAgICAgIGlmIChncm91cC5jb250cm9sc1trZXldKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVEZWVwbHkoZGF0YSwga2V5LCBncm91cC5jb250cm9sc1trZXldLnZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnNtYXJ0Rm9ybSE7XHJcbiAgfVxyXG5cclxuICBnZXRNb2RlbChncm91cDogVW50eXBlZEZvcm1Hcm91cCk6IGFueSB7XHJcbiAgICBpZiAoIXRoaXMuc21hcnRGb3JtPy5jb21wb25lbnRNb2RlbCkge1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcbiAgICBsZXQgb3JpZ2luYWxNb2RlbCA9IHRoaXMuc21hcnRGb3JtLmNvbXBvbmVudE1vZGVsLmRhdGE7XHJcbiAgICBsZXQgY29weU9mTW9kZWwgPSB7IC4uLm9yaWdpbmFsTW9kZWwgfTtcclxuXHJcbiAgICAvLyBjb3B5T2ZNb2RlbCBzaG91bGQgYmUgdGhlIGN1cnJlbnQgbW9kZWxcclxuICAgIHRoaXMuc21hcnRGb3JtLmNvbXBvbmVudE1vZGVsLmRhdGEgPSBjb3B5T2ZNb2RlbDtcclxuICAgIC8vIGNvcHkgdmFsdWUgZnJvbSBGb3JtR3JvdXAgaW50byBtb2RlbFxyXG4gICAgdGhpcy50b1NtYXJ0Rm9ybShncm91cCk7XHJcblxyXG4gICAgbGV0IG5ld01vZGVsID0gdGhpcy5zbWFydEZvcm0uY29tcG9uZW50TW9kZWwuZGF0YTtcclxuICAgIHRoaXMuc21hcnRGb3JtLmNvbXBvbmVudE1vZGVsLmRhdGEgPSBvcmlnaW5hbE1vZGVsO1xyXG5cclxuICAgIHJldHVybiBuZXdNb2RlbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlDb21wb25lbnRDb25zdHJhaW50cyhcclxuICAgIHdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10sXHJcbiAgICBjb25zdHJhaW50czogU21hcnRGb3JtQ29tcG9uZW50Q29uc3RyYWludFtdXHJcbiAgKSB7XHJcbiAgICB3aWRnZXRzLmZvckVhY2goKHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4pID0+IHtcclxuICAgICAgbGV0IHdpZGdldENvbnN0cmFpbnRzID0gY29uc3RyYWludHM/LmZpbHRlcihcclxuICAgICAgICAvLyhjb25zdHJhaW50OiBTbWFydEZvcm1Db21wb25lbnRDb25zdHJhaW50KSA9PiBjb25zdHJhaW50LmRhdGFOYW1lID09PSB3aWRnZXQua2V5XHJcbiAgICAgICAgKGNvbnN0cmFpbnQpID0+IHRoaXMuYW50UGF0aE1hdGNoZXIoY29uc3RyYWludC5kYXRhTmFtZSwgd2lkZ2V0LmtleSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICh3aWRnZXRDb25zdHJhaW50cyAmJiB3aWRnZXRDb25zdHJhaW50cy5sZW5ndGgpIHtcclxuICAgICAgICB3aWRnZXRDb25zdHJhaW50cy5mb3JFYWNoKChjb25zdHJhaW50KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY29uc3RyYWludC52aXNpYmxlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHdpZGdldC5pc1Zpc2libGUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHdpZGdldC5pc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB3aWRnZXQuaXNWaXNpYmxlID0gY29uc3RyYWludC52aXNpYmxlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTkRJQ0FUT1IgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUwgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNWRyAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVIgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTVBPTkVOVCAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUlxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGxldCB2YWxpZGF0b3JzID0gd2lkZ2V0LnZhbGlkYXRvcnMgPz8gW107XHJcbiAgICAgICAgICAgIGxldCByZXF1aXJlZEluZGV4ID0gdmFsaWRhdG9ycy5maW5kSW5kZXgoKHYpID0+IHYudmFsaWRhdG9yID09PSBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgbGV0IHdhc01hbmRhdG9yeSA9IHJlcXVpcmVkSW5kZXggPj0gMDtcclxuICAgICAgICAgICAgbGV0IHRvYmVNYW5kYXRvcnkgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQubWFuZGF0b3J5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAvLyBub3Qgc3BlY2lmaWVkIG9uIHNlcnZlciwgdXNlIGNsaWVudCBzdGF0ZVxyXG4gICAgICAgICAgICAgIC8vIGlmIHdpZGdldCBpcyBub3QgdmlzaWJsZSwgY2xpZW50IHNob3VsZCBkZWZhdWx0IHRvIG5vdCBtYW5kYXRvcnlcclxuICAgICAgICAgICAgICB0b2JlTWFuZGF0b3J5ID0gd2lkZ2V0LmlzVmlzaWJsZSAmJiB3YXNNYW5kYXRvcnk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdG9iZU1hbmRhdG9yeSA9IGNvbnN0cmFpbnQubWFuZGF0b3J5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghd2FzTWFuZGF0b3J5ICYmIHRvYmVNYW5kYXRvcnkpIHtcclxuICAgICAgICAgICAgICAvLyBhZGQgcmVxdWlyZWQgdmFsaWRhdG9yXHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnZhbGlkYXRvcnMgPSBbXHJcbiAgICAgICAgICAgICAgICAuLi52YWxpZGF0b3JzLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICAgIGlzQ3VzdG9tOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlcXVpcmVkJyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAvLyByZW1vdmUgZW1wdHkgaXRlbVxyXG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlRW1wdHlJdGVtRnJvbVZhbHVlTGlzdCh3aWRnZXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh3YXNNYW5kYXRvcnkgJiYgIXRvYmVNYW5kYXRvcnkpIHtcclxuICAgICAgICAgICAgICAvLyByZW1vdmUgcmVxdWlyZWQgdmFsaWRhdG9yXHJcbiAgICAgICAgICAgICAgd2lkZ2V0LnZhbGlkYXRvcnM/LnNwbGljZShyZXF1aXJlZEluZGV4LCAxKTtcclxuICAgICAgICAgICAgICAvLyBhZGQgZW1wdHkgaXRlbVxyXG4gICAgICAgICAgICAgIGxldCBlbXB0eUxhYmVsID0gJyc7XHJcbiAgICAgICAgICAgICAgaWYgKCdzZWxlY3Rpb24nIGluIHdpZGdldCkge1xyXG4gICAgICAgICAgICAgICAgZW1wdHlMYWJlbCA9IHdpZGdldC5zZWxlY3Rpb24/LmVtcHR5TGFiZWwgPz8gJyc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuYWRkRW1wdHlJdGVtVG9WYWx1ZUxpc3Qod2lkZ2V0LCBlbXB0eUxhYmVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29uc3RyYWludC5lbmFibGVkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBpZiAod2lkZ2V0LmlzRGlzYWJsZWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgd2lkZ2V0LmlzRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LmlzRGlzYWJsZWQgPSAhY29uc3RyYWludC5lbmFibGVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUiAmJlxyXG4gICAgICAgIHdpZGdldC52YWx1ZUxpc3QgJiZcclxuICAgICAgICB3aWRnZXQudmFsdWVMaXN0Lmxlbmd0aFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmFwcGx5Q29tcG9uZW50Q29uc3RyYWludHMod2lkZ2V0LnZhbHVlTGlzdCwgY29uc3RyYWludHMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnZXhSZWdleENoYXJzID0gbmV3IFJlZ0V4cCgvW1xcLlxcLVxcW1xcXVxcL1xce1xcfVxcKFxcKVxcK1xcXlxcJFxcXFxcXHxdL2cpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnZXhBc3Rlcmlza0luVGhlTWlkZGxlID0gbmV3IFJlZ0V4cCgvKFteXFwqXSlcXCooW15cXCpdKS9nKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2V4QXN0ZXJpc2tJblRoZUVuZCA9IG5ldyBSZWdFeHAoLyhbXlxcKl0pXFwqJC9nKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2V4QXN0ZXJpc2tJblRoZUJlZ2lubmluZyA9IG5ldyBSZWdFeHAoL15cXCooW15cXCpdKS9nKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2V4QXN0ZXJpc2tPbmx5ID0gbmV3IFJlZ0V4cCgvXlxcKiQvZyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWdleERvdWJsZUFzdGVyaXNrV2l0aERvdCA9IG5ldyBSZWdFeHAoL1xcKlxcKlxcXFxcXC4vZyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWdleERvdWJsZUFzdGVyaXNrID0gbmV3IFJlZ0V4cCgvXFwqXFwqL2cpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnZXhRdWVzdGlvbk1hcmsgPSBuZXcgUmVnRXhwKC9cXD8vZyk7XHJcbiAgcHJpdmF0ZSByZWdleEJ5UGF0dGVybjogTWFwPHN0cmluZywgUmVnRXhwPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgYW50UGF0aE1hdGNoZXIocGF0dGVybj86IHN0cmluZywgcGF0aD86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFwYXR0ZXJuIHx8ICFwYXRoKSB7XHJcbiAgICAgIC8vIGVtcHR5IHBhdHRlcm4gb3IgcGF0aCAtPiBub3QgZXZhbHVhdGVkLCB0cnVlIG9yIGZhbHNlP1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgcmVnZXggPSB0aGlzLnJlZ2V4QnlQYXR0ZXJuLmdldChwYXR0ZXJuKTtcclxuICAgIGlmIChyZWdleCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIC8vIGVzY2FwZSByZWdleCBjaGFyYWN0ZXJzIGV4Y2VwdCBmb3IgPywgKiwgKipcclxuICAgICAgbGV0IHJlZ2V4UGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSh0aGlzLnJlZ2V4UmVnZXhDaGFycywgJ1xcXFwkJicpO1xyXG5cclxuICAgICAgLy8gcmVwbGFjZSBhbnQtc3R5bGUgd2lsZGNhcmRzIHdpdGggcmVnZXggZXF1aXZhbGVudHNcclxuXHJcbiAgICAgIC8vIHJlcGxhY2UgKiB3aXRoIGEgcGF0dGVybiB0aGF0IG1hdGNoZXMgYW55IGNoYXJhY3RlciBleGNlcHQgZm9yICcuJ1xyXG4gICAgICByZWdleFBhdHRlcm4gPSByZWdleFBhdHRlcm4ucmVwbGFjZSh0aGlzLnJlZ2V4QXN0ZXJpc2tJblRoZU1pZGRsZSwgJyQxW14uXSokMicpOyAvLyBub3QqICogbm90KlxyXG4gICAgICByZWdleFBhdHRlcm4gPSByZWdleFBhdHRlcm4ucmVwbGFjZSh0aGlzLnJlZ2V4QXN0ZXJpc2tJblRoZUVuZCwgJyQxW14uXSonKTsgLy8gbm90KiAqIEVPTFxyXG4gICAgICByZWdleFBhdHRlcm4gPSByZWdleFBhdHRlcm4ucmVwbGFjZSh0aGlzLnJlZ2V4QXN0ZXJpc2tJblRoZUJlZ2lubmluZywgJ1teLl0qJDEnKTsgLy8gQk9MICogbm90KlxyXG4gICAgICByZWdleFBhdHRlcm4gPSByZWdleFBhdHRlcm4ucmVwbGFjZSh0aGlzLnJlZ2V4QXN0ZXJpc2tPbmx5LCAnW14uXSonKTsgLy8gQk9MICogRU9MXHJcblxyXG4gICAgICAvLyByZXBsYWNlICoqIHdpdGggYSBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIGluY2x1ZGluZyAnLidcclxuICAgICAgcmVnZXhQYXR0ZXJuID0gcmVnZXhQYXR0ZXJuLnJlcGxhY2UodGhpcy5yZWdleERvdWJsZUFzdGVyaXNrV2l0aERvdCwgJy4qJyk7IC8vICoqLlxyXG4gICAgICByZWdleFBhdHRlcm4gPSByZWdleFBhdHRlcm4ucmVwbGFjZSh0aGlzLnJlZ2V4RG91YmxlQXN0ZXJpc2ssICcuKicpOyAvLyAqKlxyXG5cclxuICAgICAgLy8gcmVwbGFjZSA/IHdpdGggYSBzaW5nbGUgY2hhcmFjdGVyIG1hdGNoZXJcclxuICAgICAgcmVnZXhQYXR0ZXJuID0gcmVnZXhQYXR0ZXJuLnJlcGxhY2UodGhpcy5yZWdleFF1ZXN0aW9uTWFyaywgJy4nKTtcclxuXHJcbiAgICAgIC8vIGNyZWF0ZSBhIFJlZ0V4cCBvYmplY3RcclxuICAgICAgcmVnZXggPSBuZXcgUmVnRXhwKCdeJyArIHJlZ2V4UGF0dGVybiArICckJyk7XHJcbiAgICAgIHRoaXMucmVnZXhCeVBhdHRlcm4uc2V0KHBhdHRlcm4sIHJlZ2V4KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0ZXN0IHRoZSBwYXRoIGFnYWluc3QgdGhlIGdlbmVyYXRlZCByZWdleFxyXG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QocGF0aCk7XHJcbiAgfVxyXG5cclxuICBhcHBseUNvbnN0cmFpbnRzKHdpZGdldHM/OiBTbWFydEZvcm1XaWRnZXQ8YW55PltdKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc21hcnRGb3JtIS5jb21wb25lbnRNb2RlbD8uY29uc3RyYWludHMgJiZcclxuICAgICAgdGhpcy5zbWFydEZvcm0hLmNvbXBvbmVudE1vZGVsPy5jb25zdHJhaW50cy5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICBpZiAoIXdpZGdldHMpIHtcclxuICAgICAgICB3aWRnZXRzID0gdGhpcy5zbWFydEZvcm0hLndpZGdldHM7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcHBseUNvbXBvbmVudENvbnN0cmFpbnRzKHdpZGdldHMsIHRoaXMuc21hcnRGb3JtIS5jb21wb25lbnRNb2RlbD8uY29uc3RyYWludHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkRW1wdHlJdGVtVG9WYWx1ZUxpc3Qod2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiwgZW1wdHlMYWJlbD86IHN0cmluZykge1xyXG4gICAgaWYgKHdpZGdldC50eXBlID09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRhaW5zRW1wdHlLZXkgPSB3aWRnZXQudmFsdWVMaXN0LnNvbWUoKHYpID0+IHYua2V5ID09PSB0aGlzLmVtcHR5S2V5KTtcclxuICAgICAgaWYgKCFjb250YWluc0VtcHR5S2V5KSB7XHJcbiAgICAgICAgd2lkZ2V0LnZhbHVlTGlzdD8udW5zaGlmdCh7XHJcbiAgICAgICAgICBrZXk6IHRoaXMuZW1wdHlLZXksXHJcbiAgICAgICAgICBsYWJlbDogZW1wdHlMYWJlbCA/PyAnJyxcclxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcclxuICAgICAgICAgIHZhbHVlOiAnJywgLy8gdGhpcyBzaG91bGQgYmUgdW5kZWZpbmVkLCBidXQgRm9ybUNvbnRyb2wgY2Fubm90IGJlIG51bGwsIGZyb20gdjE0IGl0IHdpbGxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRW1wdHlJdGVtRnJvbVZhbHVlTGlzdCh3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+KSB7XHJcbiAgICBpZiAoJ3ZhbHVlTGlzdCcgaW4gd2lkZ2V0KSB7XHJcbiAgICAgIGlmICh3aWRnZXQudmFsdWVMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgZmlyc3RJdGVtID0gd2lkZ2V0LnZhbHVlTGlzdFswXTtcclxuICAgICAgICBpZiAoZmlyc3RJdGVtPy5rZXkgPT09IHRoaXMuZW1wdHlLZXkpIHtcclxuICAgICAgICAgIHdpZGdldC52YWx1ZUxpc3Quc2hpZnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZpbHRlcldpZGdldHNCeVZpc2liaWxpdHkod2lkZ2V0czogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10ge1xyXG4gICAgcmV0dXJuIHdpZGdldHMuZmlsdGVyKCh3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+KSA9PlxyXG4gICAgICB3aWRnZXQuaXNWaXNpYmxlID09PSB1bmRlZmluZWQgPyB0cnVlIDogd2lkZ2V0LmlzVmlzaWJsZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZ2V0VHJhbnNsYXRpb25PZktleShrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zbWFydEZvcm0hLnRyYW5zbGF0ZVNlcnZpY2UhLmdldChrZXkpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdHJhbnNsYXRlV2lkZ2V0cyh3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBQcm9taXNlLmFsbChcclxuICAgICAgd2lkZ2V0cy5tYXAoYXN5bmMgKHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4pID0+IHtcclxuICAgICAgICBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVIpIHJldHVybjtcclxuICAgICAgICBpZiAod2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSKSB7XHJcbiAgICAgICAgICBpZiAoIXdpZGdldC5vcmlnaW5hbExhYmVsKSB7XHJcbiAgICAgICAgICAgIHdpZGdldC5vcmlnaW5hbExhYmVsID0gYCR7d2lkZ2V0LmxhYmVsfWA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyAgTGFiZWxcclxuICAgICAgICAgIHdpZGdldC5sYWJlbCA9IGF3YWl0IHRoaXMuZ2V0VHJhbnNsYXRpb25PZktleSh3aWRnZXQub3JpZ2luYWxMYWJlbCk7XHJcblxyXG4gICAgICAgICAgLy8gUGxhY2Vob2xkZXJcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTEQgfHxcclxuICAgICAgICAgICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX05VTUJFUiB8fFxyXG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfQ0hJUFMgfHxcclxuICAgICAgICAgICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5SSUNIX1RFWFQgfHxcclxuICAgICAgICAgICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0JPWCkgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnBsYWNlaG9sZGVyXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgaWYgKCF3aWRnZXQub3JpZ2luYWxQbGFjZWhvbGRlcikge1xyXG4gICAgICAgICAgICAgIHdpZGdldC5vcmlnaW5hbFBsYWNlaG9sZGVyID0gYCR7d2lkZ2V0LnBsYWNlaG9sZGVyfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgd2lkZ2V0LnBsYWNlaG9sZGVyID0gYXdhaXQgdGhpcy5nZXRUcmFuc2xhdGlvbk9mS2V5KHdpZGdldC5vcmlnaW5hbFBsYWNlaG9sZGVyKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBWYWxpZGF0b3JzXHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5JTUFHRSAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TVkcgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ESVZJREVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT01QT05FTlQgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnZhbGlkYXRvcnNcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB3aWRnZXQudmFsaWRhdG9ycyA9IGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgIHdpZGdldC52YWxpZGF0b3JzLm1hcChhc3luYyAodmFsaWRhdG9yOiBTbWFydFZhbGlkYXRvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF2YWxpZGF0b3Iub3JpZ2luYWxFcnJvck1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yLm9yaWdpbmFsRXJyb3JNZXNzYWdlID0gYCR7dmFsaWRhdG9yLmVycm9yTWVzc2FnZX1gO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yLmVycm9yTWVzc2FnZSA9IGF3YWl0IHRoaXMuZ2V0VHJhbnNsYXRpb25PZktleShcclxuICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yLm9yaWdpbmFsRXJyb3JNZXNzYWdlXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRvcjtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gSW5kaWNhdG9yXHJcbiAgICAgICAgICBpZiAod2lkZ2V0LnR5cGUgPT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU5ESUNBVE9SICYmIHdpZGdldC5pbmRpY2F0b3IpIHtcclxuICAgICAgICAgICAgaWYgKCF3aWRnZXQuaW5kaWNhdG9yLm9yaWdpbmFsSW5kaWNhdG9yU3RhdHVzTGFiZWxzKSB7XHJcbiAgICAgICAgICAgICAgd2lkZ2V0LmluZGljYXRvci5vcmlnaW5hbEluZGljYXRvclN0YXR1c0xhYmVscyA9XHJcbiAgICAgICAgICAgICAgICB3aWRnZXQuaW5kaWNhdG9yLmluZGljYXRvclN0YXR1c0xhYmVscy5tYXAoKGxhYmVsOiBzdHJpbmcpID0+IGxhYmVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB3aWRnZXQuaW5kaWNhdG9yLmluZGljYXRvclN0YXR1c0xhYmVscyA9IGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgIHdpZGdldC5pbmRpY2F0b3IuaW5kaWNhdG9yU3RhdHVzTGFiZWxzLm1hcChcclxuICAgICAgICAgICAgICAgIGFzeW5jIChsYWJlbDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxyXG4gICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmdldFRyYW5zbGF0aW9uT2ZLZXkoXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LmluZGljYXRvciEub3JpZ2luYWxJbmRpY2F0b3JTdGF0dXNMYWJlbHMhW2luZGV4XVxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgKHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfQ0hJUFMgfHxcclxuICAgICAgICAgICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QgfHxcclxuICAgICAgICAgICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEUgfHxcclxuICAgICAgICAgICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1ggfHxcclxuICAgICAgICAgICAgICB3aWRnZXQudHlwZSA9PT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1hfMiB8fFxyXG4gICAgICAgICAgICAgIHdpZGdldC50eXBlID09PSBTbWFydEZvcm1XaWRnZXRUeXBlLlJBRElPX0JVVFRPTikgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnZhbHVlTGlzdFxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlV2lkZ2V0SXRlbXMod2lkZ2V0LnZhbHVlTGlzdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlV2lkZ2V0cyh3aWRnZXQudmFsdWVMaXN0ISk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHRyYW5zbGF0ZVdpZGdldEl0ZW1zKHdpZGdldHM6IFNtYXJ0SXRlbXM8YW55PltdKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBQcm9taXNlLmFsbChcclxuICAgICAgd2lkZ2V0cy5tYXAoYXN5bmMgKHdpZGdldDogU21hcnRJdGVtczxhbnk+KSA9PiB7XHJcbiAgICAgICAgaWYgKCF3aWRnZXQub3JpZ2luYWxMYWJlbCkge1xyXG4gICAgICAgICAgd2lkZ2V0Lm9yaWdpbmFsTGFiZWwgPSBgJHt3aWRnZXQubGFiZWx9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gIExhYmVsXHJcbiAgICAgICAgd2lkZ2V0LmxhYmVsID0gYXdhaXQgdGhpcy5nZXRUcmFuc2xhdGlvbk9mS2V5KHdpZGdldC5vcmlnaW5hbExhYmVsKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -28,6 +28,8 @@ export class UiActionFileUploadDialogComponent {
|
|
|
28
28
|
async setUp() {
|
|
29
29
|
this.descriptor = await this.manager.getActionDescriptor(this.service.action);
|
|
30
30
|
this.isMultiple = this.service.isMultiple;
|
|
31
|
+
// this.maxSizeMb = this.descriptor.upload?.maxSize;
|
|
32
|
+
// fileFormats = this.descriptor.upload?.formats;
|
|
31
33
|
this.i18n = {
|
|
32
34
|
addFile: this.descriptor.upload?.title ?? 'dokumentum hozzáadása',
|
|
33
35
|
browseOrDrag: this.descriptor.upload?.description ?? 'tallózás vagy behúzás',
|
|
@@ -92,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
92
94
|
type: Inject,
|
|
93
95
|
args: [COMPONENT_LIBRARY]
|
|
94
96
|
}] }, { type: i1.UiActionDescriptorService }] });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2RpYWxvZ3MvdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vZGlhbG9ncy91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFLN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7O0FBT3hFLE1BQU0sT0FBTyxpQ0FBaUM7SUFZNUMsWUFDNkMsT0FBd0MsRUFDakQsT0FBeUIsRUFDbkQsT0FBa0M7UUFGQyxZQUFPLEdBQVAsT0FBTyxDQUFpQztRQUNqRCxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUNuRCxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQVQ1QyxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUVwQyxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBNkR2QixrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQXBEeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2Ys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QUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0F2RlUsaUNBQWlDLGtCQWFsQyx5QkFBeUIsYUFDekIsaUJBQWlCO21HQWRoQixpQ0FBaUMsd0VDWjlDLG9zREFxREE7OzRGRHpDYSxpQ0FBaUM7a0JBTDdDLFNBQVM7K0JBQ0Usa0NBQWtDOzswQkFpQnpDLE1BQU07MkJBQUMseUJBQXlCOzswQkFDaEMsTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVpQWN0aW9uRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uLy4uL2FwaSc7XHJcbmltcG9ydCB7IFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi91aS1hY3Rpb24uZGVzY3JpcHRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVWlBY3Rpb25GaWxlVXBsb2FkRGlhbG9nU2VydmljZSB9IGZyb20gJy4vdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRGaWxlVXBsb2FkZXJJMThuIH0gZnJvbSAnLi4vLi4vLi4vLi4vc21hcnQtZm9ybS9zbWFydGZpbGV1cGxvYWRlci9zbWFydGZpbGV1cGxvYWRlci5tb2RlbCc7XHJcbmltcG9ydCB7IENPTVBPTkVOVF9MSUJSQVJZLCBDb21wb25lbnRMaWJyYXJ5IH0gZnJvbSAnLi4vLi4vLi4vcHJvamVjdHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlBY3Rpb25GaWxlVXBsb2FkRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBjb2RlITogc3RyaW5nO1xyXG5cclxuICBkaWFsb2dUeXBlITogJ2RpYWxvZycgfCAnaW5wdXREaWFsb2cnIHwgJ2lucHV0MkRpYWxvZyc7XHJcblxyXG4gIGRlc2NyaXB0b3I/OiBVaUFjdGlvbkRlc2NyaXB0b3I7XHJcbiAgY29tcG9uZW50TGlicmFyeSA9IENvbXBvbmVudExpYnJhcnk7XHJcbiAgaTE4bj86IFNtYXJ0RmlsZVVwbG9hZGVySTE4bjtcclxuICBtYXhTaXplTWI6IG51bWJlciA9IDI1O1xyXG4gIGZpbGVGb3JtYXRzPzogc3RyaW5nW107XHJcbiAgaXNNdWx0aXBsZT86IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnZmlsZVVwbG9hZERpYWxvZ1NlcnZpY2UnKSBwcml2YXRlIHNlcnZpY2U6IFVpQWN0aW9uRmlsZVVwbG9hZERpYWxvZ1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBwdWJsaWMgY29tcExpYjogQ29tcG9uZW50TGlicmFyeSxcclxuICAgIHByaXZhdGUgbWFuYWdlcjogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5jb2RlID0gdGhpcy5zZXJ2aWNlLmFjdGlvbi5jb2RlITtcclxuICAgIHRoaXMuc2V0VXAoKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuY2FuY2VsKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRVcCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuZGVzY3JpcHRvciA9IGF3YWl0IHRoaXMubWFuYWdlci5nZXRBY3Rpb25EZXNjcmlwdG9yKHRoaXMuc2VydmljZS5hY3Rpb24pO1xyXG5cclxuICAgIHRoaXMuaXNNdWx0aXBsZSA9IHRoaXMuc2VydmljZS5pc011bHRpcGxlO1xyXG5cclxuICAgIHRoaXMuaTE4biA9IHtcclxuICAgICAgYWRkRmlsZTogdGhpcy5kZXNjcmlwdG9yLnVwbG9hZD8udGl0bGUgPz8gJ2Rva3VtZW50dW0gaG96esOhYWTDoXNhJyxcclxuICAgICAgYnJvd3NlT3JEcmFnOiB0aGlzLmRlc2NyaXB0b3IudXBsb2FkPy5kZXNjcmlwdGlvbiA/PyAndGFsbMOzesOhcyB2YWd5IGJlaMO6esOhcycsXHJcbiAgICAgIGZvcm1hdHM6IHRoaXMuZGVzY3JpcHRvci51cGxvYWQ/LmZvcm1hdHMgPz8gJycsXHJcbiAgICAgIG1heFNpemU6IHRoaXMuZGVzY3JpcHRvci51cGxvYWQ/Lm1heFNpemUgPz8gJycsXHJcbiAgICAgIHVwbG9hZDogdGhpcy5kZXNjcmlwdG9yLnVwbG9hZD8udXBsb2FkQnV0dG9uVGl0bGUsXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFRPRE8gc2V0IG1heCBzaXplIGFuZCBmaWxlIGZvcm1hdHMgYnkgVWlBY3Rpb24ucGFyYW1zXHJcblxyXG4gICAgaWYgKHRoaXMuZGVzY3JpcHRvclt0aGlzLnNlcnZpY2UuaW5wdXRUeXBlTmFtZV0pIHtcclxuICAgICAgdGhpcy5kaWFsb2dUeXBlID0gdGhpcy5zZXJ2aWNlLmlucHV0VHlwZU5hbWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpYWxvZ1R5cGUgPSB0aGlzLmRlc2NyaXB0b3IuaW5wdXREaWFsb2cgPyAnaW5wdXREaWFsb2cnIDogJ2RpYWxvZyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUaXRsZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRvciFbdGhpcy5kaWFsb2dUeXBlXSEudGl0bGU7XHJcbiAgfVxyXG4gIGdldFRleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3IhW3RoaXMuZGlhbG9nVHlwZV0hLnRleHQgPz8gJyc7XHJcbiAgfVxyXG4gIGdldEFjdGlvbkJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5kZXNjcmlwdG9yIVt0aGlzLmRpYWxvZ1R5cGVdIS5hY3Rpb25CdXR0b24uY2FwdGlvbjtcclxuICB9XHJcbiAgZ2V0QWN0aW9uQnV0dG9uQ29sb3IoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3IhW3RoaXMuZGlhbG9nVHlwZV0hLmFjdGlvbkJ1dHRvbi5jb2xvcjtcclxuICB9XHJcbiAgZ2V0Q2FuY2VsQnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3IhW3RoaXMuZGlhbG9nVHlwZV0hLmNhbmNlbEJ1dHRvbi5jYXB0aW9uO1xyXG4gIH1cclxuICBnZXRDYW5jZWxCdXR0b25Db2xvcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRvciFbdGhpcy5kaWFsb2dUeXBlXSEuY2FuY2VsQnV0dG9uLmNvbG9yO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkKGZpbGVzOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLm9uU2F2ZShmaWxlcyk7XHJcbiAgfVxyXG4gIHVwbG9hZGVkRmlsZXM6IGFueVtdID0gW107XHJcbiAgb25TZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy51cGxvYWRlZEZpbGVzID0gW107XHJcbiAgICBmb3IgKGxldCBmaWxlIG9mIGV2ZW50LmZpbGVzKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKGZpbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SZW1vdmUoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy51cGxvYWRlZEZpbGVzID0gW107XHJcbiAgfVxyXG5cclxuICB1cGxvYWRGaWxlcyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2Uub25TYXZlKHRoaXMudXBsb2FkZWRGaWxlcyk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuY2FuY2VsKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmb2xkZXJOYW1lRGlhbG9nQ29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlckNvbnRhaW5lclwiPlxyXG4gICAgPGgzIGNsYXNzPVwiY29sb3ItYWNjZW50LTcwMFwiPlxyXG4gICAgICB7eyBnZXRUaXRsZSgpIH19XHJcbiAgICA8L2gzPlxyXG4gICAgQGlmKGNvbXBMaWIgPT09IGNvbXBvbmVudExpYnJhcnkuTUFURVJJQUwpIHtcclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjYW5jZWwoKVwiPlxyXG4gICAgICA8c21hcnQtaWNvbiBbY29sb3JdPVwiJ3ByaW1hcnknXCIgW2ljb25dPVwiJ1gnXCI+PC9zbWFydC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICB9QGVsc2Uge1xyXG4gICAgPHAtYnV0dG9uIGljb249XCJwaSBwaS10aW1lc1wiIFtyb3VuZGVkXT1cInRydWVcIiBbdGV4dF09XCJ0cnVlXCIgKGNsaWNrKT1cImNhbmNlbCgpXCIgLz5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICA8cD5cclxuICAgIHt7IGdldFRleHQoKSB9fVxyXG4gIDwvcD5cclxuICBAaWYoY29tcExpYiA9PT0gY29tcG9uZW50TGlicmFyeS5QUklNRU5HKSB7XHJcblxyXG4gIDxwLWZpbGVVcGxvYWRcclxuICAgIG5hbWU9XCJmaWxlc1tdXCJcclxuICAgIHVybD1cIlwiXHJcbiAgICAob25TZW5kKT1cInVwbG9hZEZpbGVzKCRldmVudClcIlxyXG4gICAgKG9uU2VsZWN0KT1cIm9uU2VsZWN0KCRldmVudClcIlxyXG4gICAgKG9uUmVtb3ZlKT1cIm9uUmVtb3ZlKCRldmVudClcIlxyXG4gICAgW211bHRpcGxlXT1cImlzTXVsdGlwbGVcIlxyXG4gICAgW2FjY2VwdF09XCJmaWxlRm9ybWF0cz8uam9pbignLCcpXCJcclxuICAgIFttYXhGaWxlU2l6ZV09XCJtYXhTaXplTWIgKiAxMDI0ICogMTAyNFwiXHJcbiAgICB1cGxvYWRMYWJlbD1cIkZlbHTDtmx0w6lzXCJcclxuICAgIGNhbmNlbExhYmVsPVwiTcOpZ3NlbVwiXHJcbiAgICBjaG9vc2VMYWJlbD1cIlbDoWxhc3p0w6FzXCJcclxuICA+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGVudFwiPiA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC1maWxlVXBsb2FkPlxyXG4gIH1AZWxzZXtcclxuICA8c21hcnRmaWxldXBsb2FkZXJcclxuICAgIFtpMThuXT1cImkxOG5cIlxyXG4gICAgW2ZpbGVGb3JtYXRzXT1cImZpbGVGb3JtYXRzXCJcclxuICAgIFttYXhTaXplTWJdPVwibWF4U2l6ZU1iXCJcclxuICAgIFt1cGxvYWRDYWxsYmFja109XCJ1cGxvYWQuYmluZCh0aGlzKVwiXHJcbiAgICBbaXNNdWx0aXBsZV09XCJpc011bHRpcGxlXCJcclxuICA+PC9zbWFydGZpbGV1cGxvYWRlcj5cclxuXHJcbiAgfVxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZm9sZGVyTmFtZURpYWxvZ0J1dHRvbnNDb250YWluZXJcIj5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIFtjb2xvcl09XCJnZXRDYW5jZWxCdXR0b25Db2xvcigpXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XHJcbiAgICAgIHt7IGdldENhbmNlbEJ1dHRvbkxhYmVsKCkgfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPCEtLSA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIFtjb2xvcl09XCJnZXRBY3Rpb25CdXR0b25Db2xvcigpXCIgKGNsaWNrKT1cInVwbG9hZCgpXCI+XHJcbiAgICAgIHt7IGdldEFjdGlvbkJ1dHRvbkxhYmVsKCkgfX1cclxuICAgIDwvYnV0dG9uPiAtLT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2RpYWxvZ3MvdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vZGlhbG9ncy91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFLN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7O0FBT3hFLE1BQU0sT0FBTyxpQ0FBaUM7SUFZNUMsWUFDNkMsT0FBd0MsRUFDakQsT0FBeUIsRUFDbkQsT0FBa0M7UUFGQyxZQUFPLEdBQVAsT0FBTyxDQUFpQztRQUNqRCxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUNuRCxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQVQ1QyxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUVwQyxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBOER2QixrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQXJEeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2Ys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QUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQXhGVSxpQ0FBaUMsa0JBYWxDLHlCQUF5QixhQUN6QixpQkFBaUI7bUdBZGhCLGlDQUFpQyx3RUNaOUMsb3NEQXFEQTs7NEZEekNhLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSxrQ0FBa0M7OzBCQWlCekMsTUFBTTsyQkFBQyx5QkFBeUI7OzBCQUNoQyxNQUFNOzJCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVWlBY3Rpb25EZXNjcmlwdG9yIH0gZnJvbSAnLi4vLi4vLi4vYXBpJztcclxuaW1wb3J0IHsgVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3VpLWFjdGlvbi5kZXNjcmlwdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydEZpbGVVcGxvYWRlckkxOG4gfSBmcm9tICcuLi8uLi8uLi8uLi9zbWFydC1mb3JtL3NtYXJ0ZmlsZXVwbG9hZGVyL3NtYXJ0ZmlsZXVwbG9hZGVyLm1vZGVsJztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuLi8uLi8uLi9wcm9qZWN0cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi11aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaUFjdGlvbkZpbGVVcGxvYWREaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIGNvZGUhOiBzdHJpbmc7XHJcblxyXG4gIGRpYWxvZ1R5cGUhOiAnZGlhbG9nJyB8ICdpbnB1dERpYWxvZycgfCAnaW5wdXQyRGlhbG9nJztcclxuXHJcbiAgZGVzY3JpcHRvcj86IFVpQWN0aW9uRGVzY3JpcHRvcjtcclxuICBjb21wb25lbnRMaWJyYXJ5ID0gQ29tcG9uZW50TGlicmFyeTtcclxuICBpMThuPzogU21hcnRGaWxlVXBsb2FkZXJJMThuO1xyXG4gIG1heFNpemVNYjogbnVtYmVyID0gMjU7XHJcbiAgZmlsZUZvcm1hdHM/OiBzdHJpbmdbXTtcclxuICBpc011bHRpcGxlPzogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdmaWxlVXBsb2FkRGlhbG9nU2VydmljZScpIHByaXZhdGUgc2VydmljZTogVWlBY3Rpb25GaWxlVXBsb2FkRGlhbG9nU2VydmljZSxcclxuICAgIEBJbmplY3QoQ09NUE9ORU5UX0xJQlJBUlkpIHB1YmxpYyBjb21wTGliOiBDb21wb25lbnRMaWJyYXJ5LFxyXG4gICAgcHJpdmF0ZSBtYW5hZ2VyOiBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvZGUgPSB0aGlzLnNlcnZpY2UuYWN0aW9uLmNvZGUhO1xyXG4gICAgdGhpcy5zZXRVcCgpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5jYW5jZWwoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNldFVwKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5kZXNjcmlwdG9yID0gYXdhaXQgdGhpcy5tYW5hZ2VyLmdldEFjdGlvbkRlc2NyaXB0b3IodGhpcy5zZXJ2aWNlLmFjdGlvbik7XHJcblxyXG4gICAgdGhpcy5pc011bHRpcGxlID0gdGhpcy5zZXJ2aWNlLmlzTXVsdGlwbGU7XHJcbiAgICAvLyAgdGhpcy5tYXhTaXplTWIgPSB0aGlzLmRlc2NyaXB0b3IudXBsb2FkPy5tYXhTaXplO1xyXG4gICAgLy8gZmlsZUZvcm1hdHMgPSB0aGlzLmRlc2NyaXB0b3IudXBsb2FkPy5mb3JtYXRzO1xyXG4gICAgdGhpcy5pMThuID0ge1xyXG4gICAgICBhZGRGaWxlOiB0aGlzLmRlc2NyaXB0b3IudXBsb2FkPy50aXRsZSA/PyAnZG9rdW1lbnR1bSBob3p6w6FhZMOhc2EnLFxyXG4gICAgICBicm93c2VPckRyYWc6IHRoaXMuZGVzY3JpcHRvci51cGxvYWQ/LmRlc2NyaXB0aW9uID8/ICd0YWxsw7N6w6FzIHZhZ3kgYmVow7p6w6FzJyxcclxuICAgICAgZm9ybWF0czogdGhpcy5kZXNjcmlwdG9yLnVwbG9hZD8uZm9ybWF0cyA/PyAnJyxcclxuICAgICAgbWF4U2l6ZTogdGhpcy5kZXNjcmlwdG9yLnVwbG9hZD8ubWF4U2l6ZSA/PyAnJyxcclxuICAgICAgdXBsb2FkOiB0aGlzLmRlc2NyaXB0b3IudXBsb2FkPy51cGxvYWRCdXR0b25UaXRsZSxcclxuICAgIH07XHJcblxyXG4gICAgLy8gVE9ETyBzZXQgbWF4IHNpemUgYW5kIGZpbGUgZm9ybWF0cyBieSBVaUFjdGlvbi5wYXJhbXNcclxuXHJcbiAgICBpZiAodGhpcy5kZXNjcmlwdG9yW3RoaXMuc2VydmljZS5pbnB1dFR5cGVOYW1lXSkge1xyXG4gICAgICB0aGlzLmRpYWxvZ1R5cGUgPSB0aGlzLnNlcnZpY2UuaW5wdXRUeXBlTmFtZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nVHlwZSA9IHRoaXMuZGVzY3JpcHRvci5pbnB1dERpYWxvZyA/ICdpbnB1dERpYWxvZycgOiAnZGlhbG9nJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5kZXNjcmlwdG9yIVt0aGlzLmRpYWxvZ1R5cGVdIS50aXRsZTtcclxuICB9XHJcbiAgZ2V0VGV4dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRvciFbdGhpcy5kaWFsb2dUeXBlXSEudGV4dCA/PyAnJztcclxuICB9XHJcbiAgZ2V0QWN0aW9uQnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3IhW3RoaXMuZGlhbG9nVHlwZV0hLmFjdGlvbkJ1dHRvbi5jYXB0aW9uO1xyXG4gIH1cclxuICBnZXRBY3Rpb25CdXR0b25Db2xvcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRvciFbdGhpcy5kaWFsb2dUeXBlXSEuYWN0aW9uQnV0dG9uLmNvbG9yO1xyXG4gIH1cclxuICBnZXRDYW5jZWxCdXR0b25MYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRvciFbdGhpcy5kaWFsb2dUeXBlXSEuY2FuY2VsQnV0dG9uLmNhcHRpb247XHJcbiAgfVxyXG4gIGdldENhbmNlbEJ1dHRvbkNvbG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5kZXNjcmlwdG9yIVt0aGlzLmRpYWxvZ1R5cGVdIS5jYW5jZWxCdXR0b24uY29sb3I7XHJcbiAgfVxyXG5cclxuICB1cGxvYWQoZmlsZXM6IGFueVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2Uub25TYXZlKGZpbGVzKTtcclxuICB9XHJcbiAgdXBsb2FkZWRGaWxlczogYW55W10gPSBbXTtcclxuICBvblNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGZpbGUgb2YgZXZlbnQuZmlsZXMpIHtcclxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2goZmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbXTtcclxuICB9XHJcblxyXG4gIHVwbG9hZEZpbGVzKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5vblNhdmUodGhpcy51cGxvYWRlZEZpbGVzKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5jYW5jZWwoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZvbGRlck5hbWVEaWFsb2dDb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyQ29udGFpbmVyXCI+XHJcbiAgICA8aDMgY2xhc3M9XCJjb2xvci1hY2NlbnQtNzAwXCI+XHJcbiAgICAgIHt7IGdldFRpdGxlKCkgfX1cclxuICAgIDwvaDM+XHJcbiAgICBAaWYoY29tcExpYiA9PT0gY29tcG9uZW50TGlicmFyeS5NQVRFUklBTCkge1xyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCI+XHJcbiAgICAgIDxzbWFydC1pY29uIFtjb2xvcl09XCIncHJpbWFyeSdcIiBbaWNvbl09XCInWCdcIj48L3NtYXJ0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIH1AZWxzZSB7XHJcbiAgICA8cC1idXR0b24gaWNvbj1cInBpIHBpLXRpbWVzXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIFt0ZXh0XT1cInRydWVcIiAoY2xpY2spPVwiY2FuY2VsKClcIiAvPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIDxwPlxyXG4gICAge3sgZ2V0VGV4dCgpIH19XHJcbiAgPC9wPlxyXG4gIEBpZihjb21wTGliID09PSBjb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpIHtcclxuXHJcbiAgPHAtZmlsZVVwbG9hZFxyXG4gICAgbmFtZT1cImZpbGVzW11cIlxyXG4gICAgdXJsPVwiXCJcclxuICAgIChvblNlbmQpPVwidXBsb2FkRmlsZXMoJGV2ZW50KVwiXHJcbiAgICAob25TZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAob25SZW1vdmUpPVwib25SZW1vdmUoJGV2ZW50KVwiXHJcbiAgICBbbXVsdGlwbGVdPVwiaXNNdWx0aXBsZVwiXHJcbiAgICBbYWNjZXB0XT1cImZpbGVGb3JtYXRzPy5qb2luKCcsJylcIlxyXG4gICAgW21heEZpbGVTaXplXT1cIm1heFNpemVNYiAqIDEwMjQgKiAxMDI0XCJcclxuICAgIHVwbG9hZExhYmVsPVwiRmVsdMO2bHTDqXNcIlxyXG4gICAgY2FuY2VsTGFiZWw9XCJNw6lnc2VtXCJcclxuICAgIGNob29zZUxhYmVsPVwiVsOhbGFzenTDoXNcIlxyXG4gID5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCI+IDwvbmctdGVtcGxhdGU+XHJcbiAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgfUBlbHNle1xyXG4gIDxzbWFydGZpbGV1cGxvYWRlclxyXG4gICAgW2kxOG5dPVwiaTE4blwiXHJcbiAgICBbZmlsZUZvcm1hdHNdPVwiZmlsZUZvcm1hdHNcIlxyXG4gICAgW21heFNpemVNYl09XCJtYXhTaXplTWJcIlxyXG4gICAgW3VwbG9hZENhbGxiYWNrXT1cInVwbG9hZC5iaW5kKHRoaXMpXCJcclxuICAgIFtpc011bHRpcGxlXT1cImlzTXVsdGlwbGVcIlxyXG4gID48L3NtYXJ0ZmlsZXVwbG9hZGVyPlxyXG5cclxuICB9XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmb2xkZXJOYW1lRGlhbG9nQnV0dG9uc0NvbnRhaW5lclwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgW2NvbG9yXT1cImdldENhbmNlbEJ1dHRvbkNvbG9yKClcIiAoY2xpY2spPVwiY2FuY2VsKClcIj5cclxuICAgICAge3sgZ2V0Q2FuY2VsQnV0dG9uTGFiZWwoKSB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8IS0tIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gW2NvbG9yXT1cImdldEFjdGlvbkJ1dHRvbkNvbG9yKClcIiAoY2xpY2spPVwidXBsb2FkKClcIj5cclxuICAgICAge3sgZ2V0QWN0aW9uQnV0dG9uTGFiZWwoKSB9fVxyXG4gICAgPC9idXR0b24+IC0tPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -4332,6 +4332,16 @@ class SmartFormService {
|
|
|
4332
4332
|
widget.type !== SmartFormWidgetType.COMPONENT &&
|
|
4333
4333
|
widget.type !== SmartFormWidgetType.MATRIX &&
|
|
4334
4334
|
widget.type !== SmartFormWidgetType.YOUTUBE_PLAYER) {
|
|
4335
|
+
if (compLib === this.componentLibrary.PRIMENG) {
|
|
4336
|
+
if (widget.type === SmartFormWidgetType.DATE_PICKER) {
|
|
4337
|
+
if (widget.value) {
|
|
4338
|
+
widget.value = new Date(widget.value);
|
|
4339
|
+
}
|
|
4340
|
+
else {
|
|
4341
|
+
widget.value = new Date();
|
|
4342
|
+
}
|
|
4343
|
+
}
|
|
4344
|
+
}
|
|
4335
4345
|
this.createFormControl(`${widget.key}`, widget.value, widget.isDisabled, widget.validators);
|
|
4336
4346
|
}
|
|
4337
4347
|
if (widget.type === SmartFormWidgetType.MATRIX) {
|
|
@@ -4360,16 +4370,6 @@ class SmartFormService {
|
|
|
4360
4370
|
if (widget.type === SmartFormWidgetType.CHECK_BOX_2 && widget.valueList?.length) {
|
|
4361
4371
|
this.createFormControls(widget.valueList, compLib, widget.key);
|
|
4362
4372
|
}
|
|
4363
|
-
if (compLib === this.componentLibrary.PRIMENG) {
|
|
4364
|
-
if (widget.type === SmartFormWidgetType.DATE_PICKER) {
|
|
4365
|
-
if (widget.value) {
|
|
4366
|
-
widget.value = new Date(widget.value);
|
|
4367
|
-
}
|
|
4368
|
-
else {
|
|
4369
|
-
widget.value = new Date();
|
|
4370
|
-
}
|
|
4371
|
-
}
|
|
4372
|
-
}
|
|
4373
4373
|
});
|
|
4374
4374
|
}
|
|
4375
4375
|
isValidatorInList(validator, list) {
|
|
@@ -9077,6 +9077,8 @@ class UiActionFileUploadDialogComponent {
|
|
|
9077
9077
|
async setUp() {
|
|
9078
9078
|
this.descriptor = await this.manager.getActionDescriptor(this.service.action);
|
|
9079
9079
|
this.isMultiple = this.service.isMultiple;
|
|
9080
|
+
// this.maxSizeMb = this.descriptor.upload?.maxSize;
|
|
9081
|
+
// fileFormats = this.descriptor.upload?.formats;
|
|
9080
9082
|
this.i18n = {
|
|
9081
9083
|
addFile: this.descriptor.upload?.title ?? 'dokumentum hozzáadása',
|
|
9082
9084
|
browseOrDrag: this.descriptor.upload?.description ?? 'tallózás vagy behúzás',
|