fabrikantencore 2.11.8 → 2.11.11
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/src/app/modules/fabrikantencore/beheer/components/beheer-inlog/beheer-inlog.component.mjs +3 -3
- package/esm2022/src/app/modules/fabrikantencore/beheer/components/beheer-project/beheer-project.component.mjs +3 -3
- package/esm2022/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.mjs +16 -3
- package/esm2022/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.mjs +81 -23
- package/esm2022/src/app/modules/fabrikantencore/services/authentication.service.mjs +8 -1
- package/esm2022/src/app/modules/fabrikantencore/swagger/SwaggerClient.mjs +5 -1
- package/fesm2022/fabrikantencore.mjs +148 -67
- package/fesm2022/fabrikantencore.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.d.ts +1 -0
- package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.d.ts +9 -2
- package/src/app/modules/fabrikantencore/services/authentication.service.d.ts +1 -0
- package/src/app/modules/fabrikantencore/swagger/SwaggerClient.d.ts +4 -1
|
@@ -14,8 +14,8 @@ class BeheerInlogComponent {
|
|
|
14
14
|
authenticationService;
|
|
15
15
|
router;
|
|
16
16
|
securityApiClient;
|
|
17
|
-
Username = "
|
|
18
|
-
Password = "
|
|
17
|
+
Username = "";
|
|
18
|
+
Password = "";
|
|
19
19
|
Message = "";
|
|
20
20
|
LoginIPResponseModel;
|
|
21
21
|
constructor(authenticationService, router, securityApiClient) {
|
|
@@ -51,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
51
51
|
type: Component,
|
|
52
52
|
args: [{ selector: 'app-beheer-inlog', encapsulation: ViewEncapsulation.None, template: "\r\n<div class=\"container\">\r\n <div class=\"inlogdialog\">\r\n <mat-card>\r\n <mat-card-content>\r\n <div>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Gebruikersnaam</mat-label>\r\n <input type=\"text\" [(ngModel)]=\"Username\" matInput value=\"\" (keyup.enter)=\"Login()\">\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Wachtwoord</mat-label>\r\n <input type=\"password\" [(ngModel)]=\"Password\" matInput value=\"\" (keyup.enter)=\"Login()\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"button-bar\">\r\n <span *ngIf=\"authenticationService.LoadingLogin\">\r\n <app-fab-loader class=\"loader\"></app-fab-loader>\r\n <br />\r\n <br />\r\n <br />\r\n </span>\r\n\r\n <ng-container *ngIf=\"!authenticationService.LoadingLogin\">\r\n <div class=\"error-box\">\r\n {{ Message }}\r\n </div>\r\n <button mat-raised-button (click)=\"Login()\" class=\"login-button\">\r\n <span >\r\n Login\r\n </span>\r\n </button>\r\n </ng-container>\r\n </div>\r\n <div>\r\n IP Address: {{ LoginIPResponseModel?.ipAddress }}\r\n </div>\r\n <div>\r\n FabrikantenCore: {{ LoginIPResponseModel?.fabrikantenCoreVersion }}\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n \r\n </div>\r\n</div>\r\n", styles: ["app-beheer-inlog .container{width:100%;height:100%;display:flex;justify-content:center;align-items:center}app-beheer-inlog .error-box{font-size:12px;text-align:center;color:red;padding:3px}app-beheer-inlog .login-button{width:70px}app-beheer-inlog .loader{height:20px;top:6px;position:relative}app-beheer-inlog .inlogdialog{width:300px}app-beheer-inlog .button-bar{text-align:right}app-beheer-inlog mat-form-field{width:100%}body{background:url(/assets/bouwconnect-achtergrond.png) fixed}\n"] }]
|
|
53
53
|
}], ctorParameters: function () { return [{ type: i1.AuthenticationService }, { type: i2.Router }, { type: i3.SecurityApiClient }]; } });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLWlubG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvYmVoZWVyL2NvbXBvbmVudHMvYmVoZWVyLWlubG9nL2JlaGVlci1pbmxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1pbmxvZy9iZWhlZXItaW5sb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBS3JFLE1BTWEsb0JBQW9CO0lBU1o7SUFBcUQ7SUFBd0I7SUFQekYsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUN0QixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBRXRCLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFFckIsb0JBQW9CLENBQXVCO0lBRWxELFlBQW1CLHFCQUE0QyxFQUFTLE1BQWMsRUFBVSxpQkFBb0M7UUFBakgsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRWxJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQTJCLEVBQUUsRUFBRTtZQUN6RixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQTRCO1FBQ3pDLElBQUksTUFBTSxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDckQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUNyRDthQUNJO1lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQTRCLEVBQUUsT0FBZTtRQUMxRCxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO3VHQW5DVSxvQkFBb0I7MkZBQXBCLG9CQUFvQix3RENYakMsd2xEQWdEQTs7U0RyQ2Esb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usa0JBQWtCLGlCQUdiLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTG9naW5JUFJlc3BvbnNlTW9kZWwsIFNlY3VyaXR5QXBpQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYmVoZWVyLWlubG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmVoZWVyLWlubG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9iZWhlZXItaW5sb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCZWhlZXJJbmxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHB1YmxpYyBVc2VybmFtZTogc3RyaW5nID0gXCJcIjtcclxuICBwdWJsaWMgUGFzc3dvcmQ6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIHB1YmxpYyBNZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBwdWJsaWMgTG9naW5JUFJlc3BvbnNlTW9kZWw6IExvZ2luSVBSZXNwb25zZU1vZGVsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBzZWN1cml0eUFwaUNsaWVudDogU2VjdXJpdHlBcGlDbGllbnQpIHtcclxuXHJcbiAgICB0aGlzLnNlY3VyaXR5QXBpQ2xpZW50LmdldExvZ2luSVBSZXNwb25zZU1vZGVsKCkuc3Vic2NyaWJlKChtb2RlbDogTG9naW5JUFJlc3BvbnNlTW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5Mb2dpbklQUmVzcG9uc2VNb2RlbCA9IG1vZGVsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2dpbigpOiB2b2lkIHtcclxuICAgIHRoaXMuTWVzc2FnZSA9IFwiXCI7XHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5sb2dpbih0aGlzLlVzZXJuYW1lLCB0aGlzLlBhc3N3b3JkLCB0aGlzLCB0aGlzLlN1Y2Nlc3MsIHRoaXMuRmFpbHVyZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU3VjY2VzcyhiZWhlZXI6IEJlaGVlcklubG9nQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICBpZiAoYmVoZWVyLmF1dGhlbnRpY2F0aW9uU2VydmljZS5Db25maWd1cmF0b3JSaWdodHMoKSkge1xyXG4gICAgICBiZWhlZXIucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9iZWhlZXIvY29uZmlndXJhdG9yJyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgYmVoZWVyLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvYmVoZWVyJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRmFpbHVyZShiZWhlZXI6IEJlaGVlcklubG9nQ29tcG9uZW50LCBtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGJlaGVlci5NZXNzYWdlID0gbWVzc2FnZTtcclxuICB9XHJcbn1cclxuIiwiXHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5sb2dkaWFsb2dcIj5cclxuICAgIDxtYXQtY2FyZD5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPkdlYnJ1aWtlcnNuYWFtPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiVXNlcm5hbWVcIiBtYXRJbnB1dCB2YWx1ZT1cIlwiIChrZXl1cC5lbnRlcik9XCJMb2dpbigpXCI+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5XYWNodHdvb3JkPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBbKG5nTW9kZWwpXT1cIlBhc3N3b3JkXCIgbWF0SW5wdXQgdmFsdWU9XCJcIiAoa2V5dXAuZW50ZXIpPVwiTG9naW4oKVwiPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1iYXJcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYXV0aGVudGljYXRpb25TZXJ2aWNlLkxvYWRpbmdMb2dpblwiPlxyXG4gICAgICAgICAgICA8YXBwLWZhYi1sb2FkZXIgY2xhc3M9XCJsb2FkZXJcIj48L2FwcC1mYWItbG9hZGVyPlxyXG4gICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYXV0aGVudGljYXRpb25TZXJ2aWNlLkxvYWRpbmdMb2dpblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItYm94XCI+XHJcbiAgICAgICAgICAgICAge3sgTWVzc2FnZSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTG9naW4oKVwiIGNsYXNzPVwibG9naW4tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gPlxyXG4gICAgICAgICAgICAgICAgTG9naW5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIElQIEFkZHJlc3M6IHt7IExvZ2luSVBSZXNwb25zZU1vZGVsPy5pcEFkZHJlc3MgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgRmFicmlrYW50ZW5Db3JlOiB7eyBMb2dpbklQUmVzcG9uc2VNb2RlbD8uZmFicmlrYW50ZW5Db3JlVmVyc2lvbiB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1jYXJkPlxyXG4gICAgXHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -149,13 +149,13 @@ class BeheerProjectComponent {
|
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BeheerProjectComponent, deps: [{ token: i1.ConfiguratorApiClient }, { token: i1.FormApiClient }, { token: i2.TranslateService }, { token: i3.AuthenticationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
152
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: BeheerProjectComponent, selector: "app-beheer-project", inputs: { input: "input" }, ngImport: i0, template: "<div *ngIf=\"Loading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!Loading()\" style=\"display: flex;\">\n <div style=\"width: 50%;\">\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\n <mat-label>Name</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"ProjectViewModel.name\">\n </mat-form-field>\n\n <app-fab-form [form]=\"FabrikantenFormViewModel\"></app-fab-form>\n </div>\n <div class=\"configurations-list\">\n <div *ngIf=\"BCBProductInstanceViewModel == null\">\n <b>Configuratie's</b>\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n <td></td>\n </tr>\n <tr *ngFor=\"let instance of ProjectViewModel.instances\">\n <td class=\"selectable\" (click)=\"Select(instance)\">{{ instance.id }}</td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, instance.productId) }}\n </td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ instance.dateTimeModified }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"Delete(instance)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n </div>\n\n <div *ngIf=\"BCBProductInstanceViewModel != null\">\n <app-beheer-bcb-instance [input]=\"BCBProductInstanceViewModel\"></app-beheer-bcb-instance>\n <br />\n <br />\n <br />\n <div>\n <button mat-raised-button (click)=\"Select(null)\">\n Terug\n </button>\n </div>\n </div>\n </div>\n</div>\n<br />\n<br />\n<button mat-raised-button (click)=\"Save()\">\n Save\n</button>\n<br />\n<br />\n", styles: ["app-beheer-project .form-button-row{display:none}app-beheer-project .configurations-list{width:50%;padding:10px}app-beheer-project .selectable{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i10.FabFormComponent, selector: "app-fab-form", inputs: ["form"], outputs: ["completed"] }, { kind: "component", type: i11.BeheerBcbInstanceComponent, selector: "app-beheer-bcb-instance", inputs: ["input"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
152
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: BeheerProjectComponent, selector: "app-beheer-project", inputs: { input: "input" }, ngImport: i0, template: "<div *ngIf=\"Loading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!Loading()\" style=\"display: flex;\">\n <div style=\"width: 50%;\">\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\n <mat-label>Name</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"ProjectViewModel.name\">\n </mat-form-field>\n\n <app-fab-form [form]=\"FabrikantenFormViewModel\"></app-fab-form>\n </div>\n <div class=\"configurations-list\">\n <div *ngIf=\"BCBProductInstanceViewModel == null\">\n <b>Configuratie's</b>\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Unique Code</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n <td></td>\n </tr>\n <tr *ngFor=\"let instance of ProjectViewModel.instances\">\n <td class=\"selectable\" (click)=\"Select(instance)\">{{ instance.id }}</td>\n <td class=\"selectable\" (click)=\"Select(instance)\">{{ instance.uniqueCode }}</td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, instance.productId) }}\n </td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ instance.dateTimeModified }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"Delete(instance)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n </div>\n\n <div *ngIf=\"BCBProductInstanceViewModel != null\">\n <app-beheer-bcb-instance [input]=\"BCBProductInstanceViewModel\"></app-beheer-bcb-instance>\n <br />\n <br />\n <br />\n <div>\n <button mat-raised-button (click)=\"Select(null)\">\n Terug\n </button>\n </div>\n </div>\n </div>\n</div>\n<br />\n<br />\n<button mat-raised-button (click)=\"Save()\">\n Save\n</button>\n<br />\n<br />\n", styles: ["app-beheer-project .form-button-row{display:none}app-beheer-project .configurations-list{width:50%;padding:10px}app-beheer-project .selectable{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i10.FabFormComponent, selector: "app-fab-form", inputs: ["form"], outputs: ["completed"] }, { kind: "component", type: i11.BeheerBcbInstanceComponent, selector: "app-beheer-bcb-instance", inputs: ["input"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
153
153
|
}
|
|
154
154
|
export { BeheerProjectComponent };
|
|
155
155
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BeheerProjectComponent, decorators: [{
|
|
156
156
|
type: Component,
|
|
157
|
-
args: [{ selector: 'app-beheer-project', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"Loading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!Loading()\" style=\"display: flex;\">\n <div style=\"width: 50%;\">\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\n <mat-label>Name</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"ProjectViewModel.name\">\n </mat-form-field>\n\n <app-fab-form [form]=\"FabrikantenFormViewModel\"></app-fab-form>\n </div>\n <div class=\"configurations-list\">\n <div *ngIf=\"BCBProductInstanceViewModel == null\">\n <b>Configuratie's</b>\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n <td></td>\n </tr>\n <tr *ngFor=\"let instance of ProjectViewModel.instances\">\n <td class=\"selectable\" (click)=\"Select(instance)\">{{ instance.id }}</td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, instance.productId) }}\n </td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ instance.dateTimeModified }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"Delete(instance)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n </div>\n\n <div *ngIf=\"BCBProductInstanceViewModel != null\">\n <app-beheer-bcb-instance [input]=\"BCBProductInstanceViewModel\"></app-beheer-bcb-instance>\n <br />\n <br />\n <br />\n <div>\n <button mat-raised-button (click)=\"Select(null)\">\n Terug\n </button>\n </div>\n </div>\n </div>\n</div>\n<br />\n<br />\n<button mat-raised-button (click)=\"Save()\">\n Save\n</button>\n<br />\n<br />\n", styles: ["app-beheer-project .form-button-row{display:none}app-beheer-project .configurations-list{width:50%;padding:10px}app-beheer-project .selectable{cursor:pointer}\n"] }]
|
|
157
|
+
args: [{ selector: 'app-beheer-project', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"Loading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!Loading()\" style=\"display: flex;\">\n <div style=\"width: 50%;\">\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\n <mat-label>Name</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"ProjectViewModel.name\">\n </mat-form-field>\n\n <app-fab-form [form]=\"FabrikantenFormViewModel\"></app-fab-form>\n </div>\n <div class=\"configurations-list\">\n <div *ngIf=\"BCBProductInstanceViewModel == null\">\n <b>Configuratie's</b>\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Unique Code</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n <td></td>\n </tr>\n <tr *ngFor=\"let instance of ProjectViewModel.instances\">\n <td class=\"selectable\" (click)=\"Select(instance)\">{{ instance.id }}</td>\n <td class=\"selectable\" (click)=\"Select(instance)\">{{ instance.uniqueCode }}</td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, instance.productId) }}\n </td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ instance.dateTimeModified }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"Delete(instance)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n </div>\n\n <div *ngIf=\"BCBProductInstanceViewModel != null\">\n <app-beheer-bcb-instance [input]=\"BCBProductInstanceViewModel\"></app-beheer-bcb-instance>\n <br />\n <br />\n <br />\n <div>\n <button mat-raised-button (click)=\"Select(null)\">\n Terug\n </button>\n </div>\n </div>\n </div>\n</div>\n<br />\n<br />\n<button mat-raised-button (click)=\"Save()\">\n Save\n</button>\n<br />\n<br />\n", styles: ["app-beheer-project .form-button-row{display:none}app-beheer-project .configurations-list{width:50%;padding:10px}app-beheer-project .selectable{cursor:pointer}\n"] }]
|
|
158
158
|
}], ctorParameters: function () { return [{ type: i1.ConfiguratorApiClient }, { type: i1.FormApiClient }, { type: i2.TranslateService }, { type: i3.AuthenticationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { input: [{
|
|
159
159
|
type: Input
|
|
160
160
|
}] } });
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXByb2plY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9iZWhlZXIvY29tcG9uZW50cy9iZWhlZXItcHJvamVjdC9iZWhlZXItcHJvamVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1wcm9qZWN0L2JlaGVlci1wcm9qZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTZCLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQW9GLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLDJCQUEyQixFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBeUIsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQStCLG9DQUFvQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFJdlgsTUFNYSxzQkFBc0I7SUFpQ2I7SUFDVjtJQUNEO0lBQ0E7SUFDQTtJQW5DRixVQUFVLEdBQVksS0FBSyxDQUFDO0lBQzVCLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFaEMsZ0JBQWdCLENBQW1CO0lBQ25DLGVBQWUsR0FBWSxJQUFJLENBQUM7SUFFaEMsd0JBQXdCLENBQTJCO0lBQ25ELFdBQVcsR0FBWSxJQUFJLENBQUM7SUFFNUIsMkJBQTJCLEdBQXVDLElBQUksQ0FBQztJQUU5RSxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLHNCQUFzQjtRQUMvQixPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFHRCxJQUFhLEtBQUssQ0FBQyxLQUF1QjtRQUN4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QUksSUFBSSxFQUFFO29DQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTt3Q0FFcEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzt3Q0FFNUIsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFOzRDQUVsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnREFDdEMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7b0RBQzVDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztpREFDdEM7NkNBQ0Y7eUNBRUY7cUNBQ0Y7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7Z0JBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDL0IsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7Z0JBQ3JCLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUVyQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzt1R0FyTFUsc0JBQXNCOzJGQUF0QixzQkFBc0Isc0ZDWG5DLHUrREE0REE7O1NEakRhLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG9CQUFvQixpQkFHZixpQkFBaUIsQ0FBQyxJQUFJOzJPQXdCeEIsS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwsIFByb2plY3RWaWV3TW9kZWwsIEZvcm1BcGlDbGllbnQsIENvbmZpZ3VyYXRvckFwaUNsaWVudCwgU2F2ZVByb2plY3RSZXF1ZXN0TW9kZWwsIExvZ2luUmVzcG9uc2VNb2RlbCwgRmFicmlrYW50ZW5Gb3JtUmVxdWVzdE1vZGVsLCBGb3JtVHlwZSwgRm9ybUluc3RhbmNlUmVxdWVzdE1vZGVsLCBGb3JtSW5zdGFuY2VWaWV3TW9kZWwsIFRyYW5zbGF0aW9uQ2F0ZWdvcnksIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnksIEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCwgRGVsZXRlQkNCUHJvZHVjdEluc3RhbmNlUmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci1wcm9qZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JlaGVlci1wcm9qZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmVoZWVyLXByb2plY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBCZWhlZXJQcm9qZWN0Q29tcG9uZW50IHtcblxuICBwdWJsaWMgRm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgSW5zdGFuY2VMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgUHJvamVjdFZpZXdNb2RlbDogUHJvamVjdFZpZXdNb2RlbDtcbiAgcHVibGljIExvYWRpbmdJbnN0YW5jZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHVibGljIEZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbDogRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsO1xuICBwdWJsaWMgTG9hZGluZ0Zvcm06IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHB1YmxpYyBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWw6IEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxuXG5cbiAgQElucHV0KCkgc2V0IGlucHV0KHZhbHVlOiBQcm9qZWN0Vmlld01vZGVsKSB7XG4gICAgdGhpcy5Qcm9qZWN0Vmlld01vZGVsID0gdmFsdWU7XG4gICAgdGhpcy5JbnN0YW5jZUxvYWRlZCA9IHRydWU7XG5cbiAgICB0aGlzLkxvYWRJbnN0YW5jZSgpO1xuICB9XG5cbiAgcHVibGljIExvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuTG9hZGluZ0Zvcm0gfHwgdGhpcy5Mb2FkaW5nSW5zdGFuY2UgfHwgIXRoaXMuSW5zdGFuY2VMb2FkZWQ7XHJcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgQ29uZmlndXJhdG9yQXBpQ2xpZW50OiBDb25maWd1cmF0b3JBcGlDbGllbnQsXG4gICAgcHJpdmF0ZSBGb3JtQXBpQ2xpZW50OiBGb3JtQXBpQ2xpZW50LFxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG5cbiAgICB0aGlzLkxvYWRGb3JtKCk7XHJcbiAgfVxuXG4gIHB1YmxpYyBTZWxlY3QoaW5zdGFuY2U6IEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsID0gaW5zdGFuY2U7XG4gIH1cblxuICBwdWJsaWMgRGVsZXRlKGluc3RhbmNlOiBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoY29uZmlybShcIldlZXQgamUgaGV0IHpla2VyP1wiKSkge1xuICAgICAgLy90aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgRGVsZXRlQkNCUHJvZHVjdEluc3RhbmNlUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcbiAgICAgIHJlcXVlc3QuYmNiSW5zdGFuY2VJZCA9IGluc3RhbmNlLmlkO1xyXG5cclxuICAgICAgdGhpcy5Db25maWd1cmF0b3JBcGlDbGllbnQuZGVsZXRlSW5zdGFuY2UocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAvL3RoaXMuTG9hZENvbmZpZ3VyYXRpb25zKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdmFyIGluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXNbaV0uaWQgPT0gaW5zdGFuY2UuaWQpIHtcclxuICAgICAgICAgICAgICBpbmRleCA9IGk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLlByb2plY3RWaWV3TW9kZWwuaW5zdGFuY2VzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgICAvL3RoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIFNhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5Mb2FkaW5nSW5zdGFuY2UgPSB0cnVlO1xuXG4gICAgdmFyIG1vZGVsID0gbmV3IFNhdmVQcm9qZWN0UmVxdWVzdE1vZGVsKCk7XG5cbiAgICBtb2RlbC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xuICAgIG1vZGVsLnByb2plY3RWaWV3TW9kZWwgPSB0aGlzLlByb2plY3RWaWV3TW9kZWw7XG5cbiAgICB0aGlzLkNvbmZpZ3VyYXRvckFwaUNsaWVudC5zYXZlUHJvamVjdChtb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5TYXZlRm9ybSgpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxuXG4gIHB1YmxpYyBTYXZlRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IHRydWU7XG5cbiAgICB0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbC5jdXN0b21Db25uZWN0SWQgPSB0aGlzLlByb2plY3RWaWV3TW9kZWwuaWQ7XG5cbiAgICB0aGlzLkZvcm1BcGlDbGllbnQuc2F2ZUZvcm0odGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuTG9hZGluZ0luc3RhbmNlID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ0luc3RhbmNlID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XG5cbiAgcHVibGljIExvYWRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuTG9hZGluZ0Zvcm0gPSB0cnVlO1xuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgRmFicmlrYW50ZW5Gb3JtUmVxdWVzdE1vZGVsKCk7XG5cbiAgICByZXF1ZXN0LmZvcm1UeXBlID0gRm9ybVR5cGUuUHJvamVjdEZvcm07XG5cbiAgICB0aGlzLkZvcm1BcGlDbGllbnQuZ2V0Rm9ybShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgICAgdGhpcy5Mb2FkaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkZvcm1Mb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkSW5zdGFuY2UoKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxuXG4gIHB1YmxpYyBMb2FkSW5zdGFuY2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuRm9ybUxvYWRlZCAmJiB0aGlzLkluc3RhbmNlTG9hZGVkKSB7XG4gICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IHRydWU7XG5cbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IEZvcm1JbnN0YW5jZVJlcXVlc3RNb2RlbCgpO1xuXG4gICAgICByZXF1ZXN0LmN1c3RvbUNvbm5lY3RJZCA9IHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pZDtcbiAgICAgIHJlcXVlc3QuZm9ybUlkID0gdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwuaWQ7XG4gICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XG5cbiAgICAgIHRoaXMuRm9ybUFwaUNsaWVudC5nZXRGb3JtSW5zdGFuY2UocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogRm9ybUluc3RhbmNlVmlld01vZGVsKSA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMuRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLmZvcm1JbnN0YW5jZUlkID0gbW9kZWwuaWQ7XHJcblxyXG4gICAgICAgIHZhciBpbnN0YW5jZXMgPSBtb2RlbC5mb3JtSW5wdXRJbnN0YW5jZXM7XHJcblxyXG4gICAgICAgIGlmIChpbnN0YW5jZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcclxuXHJcbiAgICAgICAgICAgIHZhciBmb3JtY2F0cyA9IHRoaXMuRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLmZvcm1DYXRlZ29yaWVzO1xyXG5cclxuICAgICAgICAgICAgaWYgKGZvcm1jYXRzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGZvcm1jYXRzLmxlbmd0aDsgaisrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHJvd3MgPSBmb3JtY2F0c1tqXS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChyb3dzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCByb3dzLmxlbmd0aDsgaysrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dHMgPSByb3dzW2tdLmlucHV0cztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0cyAhPSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBpbnB1dHMubGVuZ3RoOyBsKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0c1tsXS5pZCA9PSBpbnN0YW5jZXNbaV0uZm9ybUlucHV0SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHNbbF0udmFsdWUgPSBpbnN0YW5jZXNbaV0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiTG9hZGluZygpXCI+XG4gIDxhcHAtZmFiLWxvYWRlcj48L2FwcC1mYWItbG9hZGVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhTG9hZGluZygpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICA8ZGl2IHN0eWxlPVwid2lkdGg6IDUwJTtcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxuICAgICAgPG1hdC1sYWJlbD5OYW1lPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIlByb2plY3RWaWV3TW9kZWwubmFtZVwiPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8YXBwLWZhYi1mb3JtIFtmb3JtXT1cIkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbFwiPjwvYXBwLWZhYi1mb3JtPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyYXRpb25zLWxpc3RcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsID09IG51bGxcIj5cbiAgICAgIDxiPkNvbmZpZ3VyYXRpZSdzPC9iPlxuICAgICAgPHRhYmxlIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYm90dG9tXCIgc3R5bGU9XCJ3aWR0aDogMjBweDtcIj48Yj5JZDwvYj48L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b21cIj48Yj5OYW1lPC9iPjwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWJvdHRvbVwiPjwvdGQ+XG4gICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaW5zdGFuY2Ugb2YgUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXNcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3RhYmxlXCIgKGNsaWNrKT1cIlNlbGVjdChpbnN0YW5jZSlcIj57eyBpbnN0YW5jZS5pZCB9fTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwic2VsZWN0YWJsZVwiIChjbGljayk9XCJTZWxlY3QoaW5zdGFuY2UpXCI+XG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuUHJvZHVjdCwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5OYW1lLCBpbnN0YW5jZS5wcm9kdWN0SWQpIH19XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3RhYmxlXCIgKGNsaWNrKT1cIlNlbGVjdChpbnN0YW5jZSlcIj5cbiAgICAgICAgICAgIHt7IGluc3RhbmNlLmRhdGVUaW1lTW9kaWZpZWQgfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkRlbGV0ZShpbnN0YW5jZSlcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxuICAgICAgICAgICAgICBWZXJ3aWpkZXJlblxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsICE9IG51bGxcIj5cbiAgICAgIDxhcHAtYmVoZWVyLWJjYi1pbnN0YW5jZSBbaW5wdXRdPVwiQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsXCI+PC9hcHAtYmVoZWVyLWJjYi1pbnN0YW5jZT5cbiAgICAgIDxiciAvPlxuICAgICAgPGJyIC8+XG4gICAgICA8YnIgLz5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNlbGVjdChudWxsKVwiPlxuICAgICAgICAgIFRlcnVnXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48YnIgLz5cbjxiciAvPlxuPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiU2F2ZSgpXCI+XG4gIFNhdmVcbjwvYnV0dG9uPlxuPGJyIC8+XG48YnIgLz5cbiJdfQ==
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXByb2plY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9iZWhlZXIvY29tcG9uZW50cy9iZWhlZXItcHJvamVjdC9iZWhlZXItcHJvamVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1wcm9qZWN0L2JlaGVlci1wcm9qZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTZCLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQW9GLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLDJCQUEyQixFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBeUIsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQStCLG9DQUFvQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFJdlgsTUFNYSxzQkFBc0I7SUFpQ2I7SUFDVjtJQUNEO0lBQ0E7SUFDQTtJQW5DRixVQUFVLEdBQVksS0FBSyxDQUFDO0lBQzVCLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFaEMsZ0JBQWdCLENBQW1CO0lBQ25DLGVBQWUsR0FBWSxJQUFJLENBQUM7SUFFaEMsd0JBQXdCLENBQTJCO0lBQ25ELFdBQVcsR0FBWSxJQUFJLENBQUM7SUFFNUIsMkJBQTJCLEdBQXVDLElBQUksQ0FBQztJQUU5RSxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLHNCQUFzQjtRQUMvQixPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFHRCxJQUFhLEtBQUssQ0FBQyxLQUF1QjtRQUN4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QUksSUFBSSxFQUFFO29DQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTt3Q0FFcEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzt3Q0FFNUIsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFOzRDQUVsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnREFDdEMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7b0RBQzVDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztpREFDdEM7NkNBQ0Y7eUNBRUY7cUNBQ0Y7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7Z0JBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDL0IsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7Z0JBQ3JCLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUVyQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzt1R0FyTFUsc0JBQXNCOzJGQUF0QixzQkFBc0Isc0ZDWG5DLHNvRUE4REE7O1NEbkRhLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG9CQUFvQixpQkFHZixpQkFBaUIsQ0FBQyxJQUFJOzJPQXdCeEIsS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwsIFByb2plY3RWaWV3TW9kZWwsIEZvcm1BcGlDbGllbnQsIENvbmZpZ3VyYXRvckFwaUNsaWVudCwgU2F2ZVByb2plY3RSZXF1ZXN0TW9kZWwsIExvZ2luUmVzcG9uc2VNb2RlbCwgRmFicmlrYW50ZW5Gb3JtUmVxdWVzdE1vZGVsLCBGb3JtVHlwZSwgRm9ybUluc3RhbmNlUmVxdWVzdE1vZGVsLCBGb3JtSW5zdGFuY2VWaWV3TW9kZWwsIFRyYW5zbGF0aW9uQ2F0ZWdvcnksIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnksIEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCwgRGVsZXRlQkNCUHJvZHVjdEluc3RhbmNlUmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci1wcm9qZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JlaGVlci1wcm9qZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmVoZWVyLXByb2plY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBCZWhlZXJQcm9qZWN0Q29tcG9uZW50IHtcblxuICBwdWJsaWMgRm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgSW5zdGFuY2VMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgUHJvamVjdFZpZXdNb2RlbDogUHJvamVjdFZpZXdNb2RlbDtcbiAgcHVibGljIExvYWRpbmdJbnN0YW5jZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHVibGljIEZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbDogRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsO1xuICBwdWJsaWMgTG9hZGluZ0Zvcm06IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHB1YmxpYyBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWw6IEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxuXG5cbiAgQElucHV0KCkgc2V0IGlucHV0KHZhbHVlOiBQcm9qZWN0Vmlld01vZGVsKSB7XG4gICAgdGhpcy5Qcm9qZWN0Vmlld01vZGVsID0gdmFsdWU7XG4gICAgdGhpcy5JbnN0YW5jZUxvYWRlZCA9IHRydWU7XG5cbiAgICB0aGlzLkxvYWRJbnN0YW5jZSgpO1xuICB9XG5cbiAgcHVibGljIExvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuTG9hZGluZ0Zvcm0gfHwgdGhpcy5Mb2FkaW5nSW5zdGFuY2UgfHwgIXRoaXMuSW5zdGFuY2VMb2FkZWQ7XHJcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgQ29uZmlndXJhdG9yQXBpQ2xpZW50OiBDb25maWd1cmF0b3JBcGlDbGllbnQsXG4gICAgcHJpdmF0ZSBGb3JtQXBpQ2xpZW50OiBGb3JtQXBpQ2xpZW50LFxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG5cbiAgICB0aGlzLkxvYWRGb3JtKCk7XHJcbiAgfVxuXG4gIHB1YmxpYyBTZWxlY3QoaW5zdGFuY2U6IEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsID0gaW5zdGFuY2U7XG4gIH1cblxuICBwdWJsaWMgRGVsZXRlKGluc3RhbmNlOiBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoY29uZmlybShcIldlZXQgamUgaGV0IHpla2VyP1wiKSkge1xuICAgICAgLy90aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgRGVsZXRlQkNCUHJvZHVjdEluc3RhbmNlUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcbiAgICAgIHJlcXVlc3QuYmNiSW5zdGFuY2VJZCA9IGluc3RhbmNlLmlkO1xyXG5cclxuICAgICAgdGhpcy5Db25maWd1cmF0b3JBcGlDbGllbnQuZGVsZXRlSW5zdGFuY2UocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAvL3RoaXMuTG9hZENvbmZpZ3VyYXRpb25zKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdmFyIGluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXNbaV0uaWQgPT0gaW5zdGFuY2UuaWQpIHtcclxuICAgICAgICAgICAgICBpbmRleCA9IGk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLlByb2plY3RWaWV3TW9kZWwuaW5zdGFuY2VzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgICAvL3RoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIFNhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5Mb2FkaW5nSW5zdGFuY2UgPSB0cnVlO1xuXG4gICAgdmFyIG1vZGVsID0gbmV3IFNhdmVQcm9qZWN0UmVxdWVzdE1vZGVsKCk7XG5cbiAgICBtb2RlbC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xuICAgIG1vZGVsLnByb2plY3RWaWV3TW9kZWwgPSB0aGlzLlByb2plY3RWaWV3TW9kZWw7XG5cbiAgICB0aGlzLkNvbmZpZ3VyYXRvckFwaUNsaWVudC5zYXZlUHJvamVjdChtb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5TYXZlRm9ybSgpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxuXG4gIHB1YmxpYyBTYXZlRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IHRydWU7XG5cbiAgICB0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbC5jdXN0b21Db25uZWN0SWQgPSB0aGlzLlByb2plY3RWaWV3TW9kZWwuaWQ7XG5cbiAgICB0aGlzLkZvcm1BcGlDbGllbnQuc2F2ZUZvcm0odGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuTG9hZGluZ0luc3RhbmNlID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ0luc3RhbmNlID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XG5cbiAgcHVibGljIExvYWRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuTG9hZGluZ0Zvcm0gPSB0cnVlO1xuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgRmFicmlrYW50ZW5Gb3JtUmVxdWVzdE1vZGVsKCk7XG5cbiAgICByZXF1ZXN0LmZvcm1UeXBlID0gRm9ybVR5cGUuUHJvamVjdEZvcm07XG5cbiAgICB0aGlzLkZvcm1BcGlDbGllbnQuZ2V0Rm9ybShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgICAgdGhpcy5Mb2FkaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkZvcm1Mb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkSW5zdGFuY2UoKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxuXG4gIHB1YmxpYyBMb2FkSW5zdGFuY2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuRm9ybUxvYWRlZCAmJiB0aGlzLkluc3RhbmNlTG9hZGVkKSB7XG4gICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IHRydWU7XG5cbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IEZvcm1JbnN0YW5jZVJlcXVlc3RNb2RlbCgpO1xuXG4gICAgICByZXF1ZXN0LmN1c3RvbUNvbm5lY3RJZCA9IHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pZDtcbiAgICAgIHJlcXVlc3QuZm9ybUlkID0gdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwuaWQ7XG4gICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XG5cbiAgICAgIHRoaXMuRm9ybUFwaUNsaWVudC5nZXRGb3JtSW5zdGFuY2UocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogRm9ybUluc3RhbmNlVmlld01vZGVsKSA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMuRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLmZvcm1JbnN0YW5jZUlkID0gbW9kZWwuaWQ7XHJcblxyXG4gICAgICAgIHZhciBpbnN0YW5jZXMgPSBtb2RlbC5mb3JtSW5wdXRJbnN0YW5jZXM7XHJcblxyXG4gICAgICAgIGlmIChpbnN0YW5jZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcclxuXHJcbiAgICAgICAgICAgIHZhciBmb3JtY2F0cyA9IHRoaXMuRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLmZvcm1DYXRlZ29yaWVzO1xyXG5cclxuICAgICAgICAgICAgaWYgKGZvcm1jYXRzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGZvcm1jYXRzLmxlbmd0aDsgaisrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHJvd3MgPSBmb3JtY2F0c1tqXS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChyb3dzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCByb3dzLmxlbmd0aDsgaysrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dHMgPSByb3dzW2tdLmlucHV0cztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0cyAhPSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBpbnB1dHMubGVuZ3RoOyBsKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0c1tsXS5pZCA9PSBpbnN0YW5jZXNbaV0uZm9ybUlucHV0SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHNbbF0udmFsdWUgPSBpbnN0YW5jZXNbaV0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiTG9hZGluZygpXCI+XG4gIDxhcHAtZmFiLWxvYWRlcj48L2FwcC1mYWItbG9hZGVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhTG9hZGluZygpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICA8ZGl2IHN0eWxlPVwid2lkdGg6IDUwJTtcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxuICAgICAgPG1hdC1sYWJlbD5OYW1lPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIlByb2plY3RWaWV3TW9kZWwubmFtZVwiPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8YXBwLWZhYi1mb3JtIFtmb3JtXT1cIkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbFwiPjwvYXBwLWZhYi1mb3JtPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyYXRpb25zLWxpc3RcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsID09IG51bGxcIj5cbiAgICAgIDxiPkNvbmZpZ3VyYXRpZSdzPC9iPlxuICAgICAgPHRhYmxlIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYm90dG9tXCIgc3R5bGU9XCJ3aWR0aDogMjBweDtcIj48Yj5JZDwvYj48L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b21cIj48Yj5VbmlxdWUgQ29kZTwvYj48L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b21cIj48Yj5OYW1lPC9iPjwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWJvdHRvbVwiPjwvdGQ+XG4gICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaW5zdGFuY2Ugb2YgUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXNcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3RhYmxlXCIgKGNsaWNrKT1cIlNlbGVjdChpbnN0YW5jZSlcIj57eyBpbnN0YW5jZS5pZCB9fTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwic2VsZWN0YWJsZVwiIChjbGljayk9XCJTZWxlY3QoaW5zdGFuY2UpXCI+e3sgaW5zdGFuY2UudW5pcXVlQ29kZSB9fTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwic2VsZWN0YWJsZVwiIChjbGljayk9XCJTZWxlY3QoaW5zdGFuY2UpXCI+XG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuUHJvZHVjdCwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5OYW1lLCBpbnN0YW5jZS5wcm9kdWN0SWQpIH19XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3RhYmxlXCIgKGNsaWNrKT1cIlNlbGVjdChpbnN0YW5jZSlcIj5cbiAgICAgICAgICAgIHt7IGluc3RhbmNlLmRhdGVUaW1lTW9kaWZpZWQgfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkRlbGV0ZShpbnN0YW5jZSlcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxuICAgICAgICAgICAgICBWZXJ3aWpkZXJlblxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsICE9IG51bGxcIj5cbiAgICAgIDxhcHAtYmVoZWVyLWJjYi1pbnN0YW5jZSBbaW5wdXRdPVwiQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsXCI+PC9hcHAtYmVoZWVyLWJjYi1pbnN0YW5jZT5cbiAgICAgIDxiciAvPlxuICAgICAgPGJyIC8+XG4gICAgICA8YnIgLz5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNlbGVjdChudWxsKVwiPlxuICAgICAgICAgIFRlcnVnXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48YnIgLz5cbjxiciAvPlxuPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiU2F2ZSgpXCI+XG4gIFNhdmVcbjwvYnV0dG9uPlxuPGJyIC8+XG48YnIgLz5cbiJdfQ==
|
|
@@ -340,13 +340,26 @@ class BeheerTranslateComponent {
|
|
|
340
340
|
}
|
|
341
341
|
return count;
|
|
342
342
|
}
|
|
343
|
+
GetText() {
|
|
344
|
+
for (var i = 0; i < this.ActiveSubs.length; i++) {
|
|
345
|
+
var keys = this.ActiveSubs[i].keys;
|
|
346
|
+
if (keys != null) {
|
|
347
|
+
for (var k = 0; k < keys.length; k++) {
|
|
348
|
+
if (keys[k].text != null && keys[k].text != "") {
|
|
349
|
+
return keys[k].text + "";
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return "";
|
|
355
|
+
}
|
|
343
356
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BeheerTranslateComponent, deps: [{ token: i1.TranslateApiClient }, { token: i2.AuthenticationService }, { token: i3.MatLegacySnackBar }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
344
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: BeheerTranslateComponent, selector: "app-beheer-translate", viewQueries: [{ propertyName: "tablediv", first: true, predicate: ["tablediv"], descendants: true }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<app-fab-loader *ngIf=\"Loading\"></app-fab-loader>\r\n\r\n<div *ngIf=\"!Loading\">\r\n <ng-container *ngIf=\"!ShowChanges()\">\r\n <div class=\"displayflex\" #tablediv (window:resize)=\"onResize($event)\">\r\n <div>\r\n <mat-card class=\"main-bar\">\r\n <mat-card-content>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Group</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguagesCategoryViewModel\" (selectionChange)=\"this.pageIndex = 0; RefreshPaginator(); Resize();\">\r\n <mat-option *ngFor=\"let cat of BeheerLanguagesViewModel.categories\" [value]=\"cat\">\r\n {{ TranslationCategory[cat.translationCategory] }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div *ngIf=\"!IsHTML()\">\r\n <div *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <mat-checkbox [(ngModel)]=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"IsHTML()\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Language</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguageViewModel\">\r\n <mat-option *ngFor=\"let language of BeheerLanguagesViewModel.languages\" [value]=\"language\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <br /><br />\r\n <button mat-raised-button (click)=\"Save()\" class=\"save-button\" [disabled]=\"!OpenChanges\">\r\n Save\r\n </button>\r\n <br /><br />\r\n <button mat-raised-button (click)=\"DownloadExcel()\" class=\"save-button\">\r\n Download Excel\r\n </button>\r\n <br /><br />\r\n <button mat-raised-button (click)=\"UploadExcel()\" class=\"save-button\">\r\n Upload Excel\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".xls,.xlsx\" style=\"display:none\" (change)=\"Handle($event)\">\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <mat-card class=\"main-bar flexauto\">\r\n <mat-card-content>\r\n <div class=\"max-height\">\r\n\r\n <div *ngIf=\"SelectedBeheerLanguagesCategoryViewModel != null\">\r\n <h1>{{ TranslationCategory[SelectedBeheerLanguagesCategoryViewModel.translationCategory] }}</h1>\r\n\r\n <table class=\"full-width\">\r\n <tr>\r\n <ng-container *ngIf=\"IsHTML()\">\r\n <td class=\"cat-row\">\r\n <fab-flag [country]=\"SelectedBeheerLanguageViewModel.flag\"></fab-flag> {{ SelectedBeheerLanguageViewModel.name }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!IsHTML()\">\r\n <td colspan=\"2\" class=\"cat-row\"></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td class=\"cat-row\" *ngIf=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </tr>\r\n\r\n <ng-container *ngIf=\"IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <ng-container *ngFor=\"let key of subcat.keys\">\r\n <tr>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language == SelectedBeheerLanguageViewModel\">\r\n <div>\r\n <angular-editor [config]=\"editorConfig\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (ngModelChange)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </angular-editor>\r\n </div>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <tr *ngFor=\"let key of subcat.keys\">\r\n <td>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n <ng-container *ngIf=\"key.text != ''\">\r\n ({{ key.text }})\r\n </ng-container>\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\" *ngIf=\"GetEntry(key.entries, language) != null\">\r\n <mat-label>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </div>\r\n </div>\r\n <div>\r\n <mat-paginator #paginator\r\n (page)=\"handlePageEvent($event)\"\r\n [length]=\"amountLength\"\r\n [pageSize]=\"amountPerPage\"\r\n [showFirstLastButtons]=\"true\"\r\n [hidePageSize]=\"true\"\r\n [pageIndex]=\"pageIndex\"\r\n aria-label=\"Select page\">\r\n </mat-paginator>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"ShowChanges()\">\r\n <mat-card class=\"main-bar flexauto\">\r\n <mat-card-content>\r\n\r\n <button mat-raised-button (click)=\"CancelChanges()\">\r\n Cancel\r\n </button>\r\n \r\n \r\n <button mat-raised-button (click)=\"SaveChanges()\">\r\n Save\r\n </button>\r\n <br />\r\n <br />\r\n\r\n <table class=\"fullwidth\" cellpadding=\"2\" cellspacing=\"2\">\r\n <tr>\r\n <td></td>\r\n <td class=\"border-bottom\" style=\"min-width: 100px;\"><b>Language</b></td>\r\n <td class=\"border-bottom\"><b>Old</b></td>\r\n <td class=\"border-bottom\"><b>New</b></td>\r\n </tr>\r\n <tr *ngFor=\"let change of this.UploadExportViewModel.changes\">\r\n <td>\r\n <mat-checkbox [(ngModel)]=\"change.save\">\r\n </mat-checkbox>\r\n </td>\r\n <td class=\"border-bottom-grey\">\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <ng-container *ngIf=\"language.id == change.languageId\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n <td class=\"border-bottom-grey\">{{ change.oldValue }}</td>\r\n <td class=\"border-bottom-grey\">{{ change.newValue }}</td>\r\n\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <br />\r\n <br />\r\n </ng-container>\r\n</div>\r\n", styles: [".mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#aaa!important}snack-bar-container .mat-button-wrapper{color:#aaa}app-beheer-translate .mat-form-field-wrapper{margin-bottom:-16px}app-beheer-translate .cat-row{font-weight:700;border-bottom:1px solid #000;padding-top:20px}app-beheer-translate .border-bottom{border-bottom:1px solid #000}app-beheer-translate .border-bottom-grey{border-bottom:1px solid #F0F0F0}app-beheer-translate .save-button{width:100%}app-beheer-translate .displayflex{display:flex}app-beheer-translate .flexauto{flex:auto}app-beheer-translate .max-height{height:calc(100vH - 174px);overflow:auto}app-beheer-translate .fullwidth{width:100%}app-beheer-translate .main{margin:20px;max-height:calc(100vH - 235px);overflow:auto}app-beheer-translate .main-bar{margin:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["html", "viewMode", "blur", "focus"] }, { kind: "component", type: i6.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i10.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i10.MatLegacyCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i11.MatLegacyPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i12.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i13.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i14.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i15.BeheerNavComponent, selector: "app-beheer-nav" }, { kind: "component", type: i16.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i17.FabFlagComponent, selector: "fab-flag", inputs: ["country"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
357
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: BeheerTranslateComponent, selector: "app-beheer-translate", viewQueries: [{ propertyName: "tablediv", first: true, predicate: ["tablediv"], descendants: true }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<app-fab-loader *ngIf=\"Loading\"></app-fab-loader>\r\n\r\n<div *ngIf=\"!Loading\">\r\n <ng-container *ngIf=\"!ShowChanges()\">\r\n <div class=\"displayflex\" #tablediv (window:resize)=\"onResize($event)\">\r\n <div>\r\n <mat-card class=\"main-bar\">\r\n <mat-card-content>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Group</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguagesCategoryViewModel\" (selectionChange)=\"this.pageIndex = 0; RefreshPaginator(); Resize();\">\r\n <mat-option *ngFor=\"let cat of BeheerLanguagesViewModel.categories\" [value]=\"cat\">\r\n {{ TranslationCategory[cat.translationCategory] }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div *ngIf=\"!IsHTML()\">\r\n <div *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <mat-checkbox [(ngModel)]=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"IsHTML()\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Language</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguageViewModel\">\r\n <mat-option *ngFor=\"let language of BeheerLanguagesViewModel.languages\" [value]=\"language\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <br /><br />\r\n <button mat-raised-button (click)=\"Save()\" class=\"save-button\" [disabled]=\"!OpenChanges\">\r\n Save\r\n </button>\r\n <ng-container *ngIf=\"!IsHTML()\">\r\n <br /><br />\r\n <button mat-raised-button (click)=\"DownloadExcel()\" class=\"save-button\">\r\n Download Excel\r\n </button>\r\n <br /><br />\r\n <button mat-raised-button (click)=\"UploadExcel()\" class=\"save-button\">\r\n Upload Excel\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".xls,.xlsx\" style=\"display:none\" (change)=\"Handle($event)\">\r\n </ng-container>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <mat-card class=\"main-bar flexauto\">\r\n <mat-card-content>\r\n <div class=\"max-height\">\r\n\r\n <div *ngIf=\"SelectedBeheerLanguagesCategoryViewModel != null\">\r\n <h1>\r\n {{ TranslationCategory[SelectedBeheerLanguagesCategoryViewModel.translationCategory] }}\r\n <ng-container *ngIf=\"GetText() != ''\">\r\n ({{ GetText() }})\r\n </ng-container>\r\n </h1>\r\n\r\n <table class=\"full-width\">\r\n <tr>\r\n <ng-container *ngIf=\"IsHTML()\">\r\n <td class=\"cat-row\">\r\n <fab-flag [country]=\"SelectedBeheerLanguageViewModel.flag\"></fab-flag> {{ SelectedBeheerLanguageViewModel.name }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!IsHTML()\">\r\n <td colspan=\"2\" class=\"cat-row\"></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td class=\"cat-row\" *ngIf=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </tr>\r\n\r\n <ng-container *ngIf=\"IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <ng-container *ngFor=\"let key of subcat.keys\">\r\n <tr>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language == SelectedBeheerLanguageViewModel\">\r\n <div>\r\n <angular-editor [config]=\"editorConfig\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (ngModelChange)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </angular-editor>\r\n </div>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <tr *ngFor=\"let key of subcat.keys\">\r\n <td>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n <ng-container *ngIf=\"key.text != ''\">\r\n ({{ key.text }})\r\n </ng-container>\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\" *ngIf=\"GetEntry(key.entries, language) != null\">\r\n <mat-label>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </div>\r\n </div>\r\n <div>\r\n <mat-paginator #paginator\r\n (page)=\"handlePageEvent($event)\"\r\n [length]=\"amountLength\"\r\n [pageSize]=\"amountPerPage\"\r\n [showFirstLastButtons]=\"true\"\r\n [hidePageSize]=\"true\"\r\n [pageIndex]=\"pageIndex\"\r\n aria-label=\"Select page\">\r\n </mat-paginator>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"ShowChanges()\">\r\n <mat-card class=\"main-bar flexauto\">\r\n <mat-card-content>\r\n\r\n <button mat-raised-button (click)=\"CancelChanges()\">\r\n Cancel\r\n </button>\r\n \r\n \r\n <button mat-raised-button (click)=\"SaveChanges()\">\r\n Save\r\n </button>\r\n <br />\r\n <br />\r\n\r\n <table class=\"fullwidth\" cellpadding=\"2\" cellspacing=\"2\">\r\n <tr>\r\n <td></td>\r\n <td class=\"border-bottom\" style=\"min-width: 100px;\"><b>Language</b></td>\r\n <td class=\"border-bottom\"><b>Old</b></td>\r\n <td class=\"border-bottom\"><b>New</b></td>\r\n </tr>\r\n <tr *ngFor=\"let change of this.UploadExportViewModel.changes\">\r\n <td>\r\n <mat-checkbox [(ngModel)]=\"change.save\">\r\n </mat-checkbox>\r\n </td>\r\n <td class=\"border-bottom-grey\">\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <ng-container *ngIf=\"language.id == change.languageId\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n <td class=\"border-bottom-grey\">{{ change.oldValue }}</td>\r\n <td class=\"border-bottom-grey\">{{ change.newValue }}</td>\r\n\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <br />\r\n <br />\r\n </ng-container>\r\n</div>\r\n", styles: [".mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#aaa!important}snack-bar-container .mat-button-wrapper{color:#aaa}app-beheer-translate .mat-form-field-wrapper{margin-bottom:-16px}app-beheer-translate .cat-row{font-weight:700;border-bottom:1px solid #000;padding-top:20px}app-beheer-translate .border-bottom{border-bottom:1px solid #000}app-beheer-translate .border-bottom-grey{border-bottom:1px solid #F0F0F0}app-beheer-translate .save-button{width:100%}app-beheer-translate .displayflex{display:flex}app-beheer-translate .flexauto{flex:auto}app-beheer-translate .max-height{height:calc(100vH - 174px);overflow:auto}app-beheer-translate .fullwidth{width:100%}app-beheer-translate .main{margin:20px;max-height:calc(100vH - 235px);overflow:auto}app-beheer-translate .main-bar{margin:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["html", "viewMode", "blur", "focus"] }, { kind: "component", type: i6.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i10.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i10.MatLegacyCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i11.MatLegacyPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i12.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i13.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i14.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i15.BeheerNavComponent, selector: "app-beheer-nav" }, { kind: "component", type: i16.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i17.FabFlagComponent, selector: "fab-flag", inputs: ["country"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
345
358
|
}
|
|
346
359
|
export { BeheerTranslateComponent };
|
|
347
360
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BeheerTranslateComponent, decorators: [{
|
|
348
361
|
type: Component,
|
|
349
|
-
args: [{ selector: 'app-beheer-translate', encapsulation: ViewEncapsulation.None, template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<app-fab-loader *ngIf=\"Loading\"></app-fab-loader>\r\n\r\n<div *ngIf=\"!Loading\">\r\n <ng-container *ngIf=\"!ShowChanges()\">\r\n <div class=\"displayflex\" #tablediv (window:resize)=\"onResize($event)\">\r\n <div>\r\n <mat-card class=\"main-bar\">\r\n <mat-card-content>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Group</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguagesCategoryViewModel\" (selectionChange)=\"this.pageIndex = 0; RefreshPaginator(); Resize();\">\r\n <mat-option *ngFor=\"let cat of BeheerLanguagesViewModel.categories\" [value]=\"cat\">\r\n {{ TranslationCategory[cat.translationCategory] }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div *ngIf=\"!IsHTML()\">\r\n <div *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <mat-checkbox [(ngModel)]=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"IsHTML()\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Language</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguageViewModel\">\r\n <mat-option *ngFor=\"let language of BeheerLanguagesViewModel.languages\" [value]=\"language\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <br /><br />\r\n <button mat-raised-button (click)=\"Save()\" class=\"save-button\" [disabled]=\"!OpenChanges\">\r\n Save\r\n </button>\r\n <br /><br />\r\n
|
|
362
|
+
args: [{ selector: 'app-beheer-translate', encapsulation: ViewEncapsulation.None, template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<app-fab-loader *ngIf=\"Loading\"></app-fab-loader>\r\n\r\n<div *ngIf=\"!Loading\">\r\n <ng-container *ngIf=\"!ShowChanges()\">\r\n <div class=\"displayflex\" #tablediv (window:resize)=\"onResize($event)\">\r\n <div>\r\n <mat-card class=\"main-bar\">\r\n <mat-card-content>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Group</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguagesCategoryViewModel\" (selectionChange)=\"this.pageIndex = 0; RefreshPaginator(); Resize();\">\r\n <mat-option *ngFor=\"let cat of BeheerLanguagesViewModel.categories\" [value]=\"cat\">\r\n {{ TranslationCategory[cat.translationCategory] }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div *ngIf=\"!IsHTML()\">\r\n <div *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <mat-checkbox [(ngModel)]=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"IsHTML()\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Language</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguageViewModel\">\r\n <mat-option *ngFor=\"let language of BeheerLanguagesViewModel.languages\" [value]=\"language\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <br /><br />\r\n <button mat-raised-button (click)=\"Save()\" class=\"save-button\" [disabled]=\"!OpenChanges\">\r\n Save\r\n </button>\r\n <ng-container *ngIf=\"!IsHTML()\">\r\n <br /><br />\r\n <button mat-raised-button (click)=\"DownloadExcel()\" class=\"save-button\">\r\n Download Excel\r\n </button>\r\n <br /><br />\r\n <button mat-raised-button (click)=\"UploadExcel()\" class=\"save-button\">\r\n Upload Excel\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".xls,.xlsx\" style=\"display:none\" (change)=\"Handle($event)\">\r\n </ng-container>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <mat-card class=\"main-bar flexauto\">\r\n <mat-card-content>\r\n <div class=\"max-height\">\r\n\r\n <div *ngIf=\"SelectedBeheerLanguagesCategoryViewModel != null\">\r\n <h1>\r\n {{ TranslationCategory[SelectedBeheerLanguagesCategoryViewModel.translationCategory] }}\r\n <ng-container *ngIf=\"GetText() != ''\">\r\n ({{ GetText() }})\r\n </ng-container>\r\n </h1>\r\n\r\n <table class=\"full-width\">\r\n <tr>\r\n <ng-container *ngIf=\"IsHTML()\">\r\n <td class=\"cat-row\">\r\n <fab-flag [country]=\"SelectedBeheerLanguageViewModel.flag\"></fab-flag> {{ SelectedBeheerLanguageViewModel.name }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!IsHTML()\">\r\n <td colspan=\"2\" class=\"cat-row\"></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <td class=\"cat-row\" *ngIf=\"language.selected\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </tr>\r\n\r\n <ng-container *ngIf=\"IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <ng-container *ngFor=\"let key of subcat.keys\">\r\n <tr>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language == SelectedBeheerLanguageViewModel\">\r\n <div>\r\n <angular-editor [config]=\"editorConfig\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (ngModelChange)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </angular-editor>\r\n </div>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!IsHTML()\">\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <tr *ngFor=\"let key of subcat.keys\">\r\n <td>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n <ng-container *ngIf=\"key.text != ''\">\r\n ({{ key.text }})\r\n </ng-container>\r\n </td>\r\n <td></td>\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages; index as i\">\r\n <td *ngIf=\"language.selected\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\" *ngIf=\"GetEntry(key.entries, language) != null\">\r\n <mat-label>\r\n {{ TranslationSubCategory[subcat.translationSubCategory] }}\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"GetEntry(key.entries, language).value\" (keyup)=\"UpdateChanged(GetEntry(key.entries, language))\">\r\n </mat-form-field>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </table>\r\n </div>\r\n </div>\r\n <div>\r\n <mat-paginator #paginator\r\n (page)=\"handlePageEvent($event)\"\r\n [length]=\"amountLength\"\r\n [pageSize]=\"amountPerPage\"\r\n [showFirstLastButtons]=\"true\"\r\n [hidePageSize]=\"true\"\r\n [pageIndex]=\"pageIndex\"\r\n aria-label=\"Select page\">\r\n </mat-paginator>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"ShowChanges()\">\r\n <mat-card class=\"main-bar flexauto\">\r\n <mat-card-content>\r\n\r\n <button mat-raised-button (click)=\"CancelChanges()\">\r\n Cancel\r\n </button>\r\n \r\n \r\n <button mat-raised-button (click)=\"SaveChanges()\">\r\n Save\r\n </button>\r\n <br />\r\n <br />\r\n\r\n <table class=\"fullwidth\" cellpadding=\"2\" cellspacing=\"2\">\r\n <tr>\r\n <td></td>\r\n <td class=\"border-bottom\" style=\"min-width: 100px;\"><b>Language</b></td>\r\n <td class=\"border-bottom\"><b>Old</b></td>\r\n <td class=\"border-bottom\"><b>New</b></td>\r\n </tr>\r\n <tr *ngFor=\"let change of this.UploadExportViewModel.changes\">\r\n <td>\r\n <mat-checkbox [(ngModel)]=\"change.save\">\r\n </mat-checkbox>\r\n </td>\r\n <td class=\"border-bottom-grey\">\r\n <ng-container *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <ng-container *ngIf=\"language.id == change.languageId\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n <td class=\"border-bottom-grey\">{{ change.oldValue }}</td>\r\n <td class=\"border-bottom-grey\">{{ change.newValue }}</td>\r\n\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <br />\r\n <br />\r\n </ng-container>\r\n</div>\r\n", styles: [".mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#aaa!important}snack-bar-container .mat-button-wrapper{color:#aaa}app-beheer-translate .mat-form-field-wrapper{margin-bottom:-16px}app-beheer-translate .cat-row{font-weight:700;border-bottom:1px solid #000;padding-top:20px}app-beheer-translate .border-bottom{border-bottom:1px solid #000}app-beheer-translate .border-bottom-grey{border-bottom:1px solid #F0F0F0}app-beheer-translate .save-button{width:100%}app-beheer-translate .displayflex{display:flex}app-beheer-translate .flexauto{flex:auto}app-beheer-translate .max-height{height:calc(100vH - 174px);overflow:auto}app-beheer-translate .fullwidth{width:100%}app-beheer-translate .main{margin:20px;max-height:calc(100vH - 235px);overflow:auto}app-beheer-translate .main-bar{margin:20px}\n"] }]
|
|
350
363
|
}], ctorParameters: function () { return [{ type: i1.TranslateApiClient }, { type: i2.AuthenticationService }, { type: i3.MatLegacySnackBar }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { tablediv: [{
|
|
351
364
|
type: ViewChild,
|
|
352
365
|
args: ['tablediv']
|
|
@@ -354,4 +367,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
354
367
|
type: ViewChild,
|
|
355
368
|
args: ['fileInput']
|
|
356
369
|
}] } });
|
|
357
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBeUQsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTWxKLE9BQU8sRUFBRSxrQkFBa0IsRUFBdUgsbUNBQW1DLEVBQXFELG1CQUFtQixFQUF3QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBcUQsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVuYyxNQU1hLHdCQUF3QjtJQWdEekI7SUFDQTtJQUNBO0lBQ0E7SUFsREgsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLHdCQUF3QixDQUEyQjtJQUNuRCxVQUFVLEdBQStDLElBQUksS0FBSyxFQUF1QyxDQUFDO0lBQzFHLHFCQUFxQixHQUFpQyxJQUFJLENBQUM7SUFFM0QsU0FBUyxHQUFXLENBQUMsQ0FBQztJQUN0QixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFFbEMsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxzQkFB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LFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFFRyxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMZWdhY3lQYWdlRXZlbnQgYXMgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXBhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdExlZ2FjeVNuYWNrQmFyIGFzIE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXNuYWNrLWJhcic7XHJcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3JDb25maWcgfSBmcm9tICdAa29sa292L2FuZ3VsYXItZWRpdG9yJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFNhdmVDaGFuZ2VzUmVxdWVzdCwgVXBsb2FkRXhwb3J0Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VzRW50cnlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc0tleVZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwsIENyZWF0ZUV4cG9ydFJlcXVlc3QsIENyZWF0ZUV4cG9ydFJlc3BvbnNlLCBMb2dpblJlc3BvbnNlTW9kZWwsIFJlYWRFeHBvcnRSZXF1ZXN0LCBUcmFuc2xhdGVBcGlDbGllbnQsIFRyYW5zbGF0ZUtleUNhdGVnb3J5Vmlld01vZGVsLCBUcmFuc2xhdGlvbkNhdGVnb3J5LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5IH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci10cmFuc2xhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iZWhlZXItdHJhbnNsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9iZWhlZXItdHJhbnNsYXRlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmVoZWVyVHJhbnNsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrIHtcclxuICBwdWJsaWMgTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIE9wZW5DaGFuZ2VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbDogQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsO1xyXG4gIHB1YmxpYyBBY3RpdmVTdWJzOiBBcnJheTxCZWhlZXJMYW5ndWFnZXNTdWJDYXRlZ29yeVZpZXdNb2RlbD4gPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWw+KCk7XHJcbiAgcHVibGljIFVwbG9hZEV4cG9ydFZpZXdNb2RlbDogVXBsb2FkRXhwb3J0Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHB1YmxpYyBwYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIGFtb3VudExlbmd0aDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgYW1vdW50UGVyUGFnZTogbnVtYmVyID0gMTA7XHJcblxyXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbDogQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbDogQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZCgndGFibGVkaXYnKSB0YWJsZWRpdjogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0OiBFbGVtZW50UmVmO1xyXG5cclxuICBlZGl0b3JDb25maWc6IEFuZ3VsYXJFZGl0b3JDb25maWcgPSB7XHJcbiAgICBlZGl0YWJsZTogdHJ1ZSxcclxuICAgIHNwZWxsY2hlY2s6IGZhbHNlLFxyXG4gICAgaGVpZ2h0OiAnYXV0bycsXHJcbiAgICBtaW5IZWlnaHQ6ICcwJyxcclxuICAgIG1heEhlaWdodDogJ2F1dG8nLFxyXG4gICAgd2lkdGg6ICdhdXRvJyxcclxuICAgIG1pbldpZHRoOiAnMCcsXHJcbiAgICB0cmFuc2xhdGU6ICdubycsXHJcbiAgICBlbmFibGVUb29sYmFyOiB0cnVlLFxyXG4gICAgc2hvd1Rvb2xiYXI6IHRydWUsXHJcbiAgICBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOiAnJyxcclxuICAgIGRlZmF1bHRGb250TmFtZTogJycsXHJcbiAgICBkZWZhdWx0Rm9udFNpemU6ICcnLFxyXG4gICAgc2FuaXRpemU6IHRydWUsXHJcbiAgICB0b29sYmFyUG9zaXRpb246ICd0b3AnLFxyXG4gICAgdG9vbGJhckhpZGRlbkJ1dHRvbnM6IFtcclxuICAgICAgWydmb250TmFtZSddXHJcbiAgICBdXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIFRyYW5zbGF0ZUFwaUNsaWVudDogVHJhbnNsYXRlQXBpQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxyXG4gICAgcHJpdmF0ZSBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcclxuICAgIHRoaXMuUmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLlJlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRUcmFuc2xhdGlvbnModGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVQYWdlRXZlbnQoZTogUGFnZUV2ZW50KSB7XHJcbiAgICAvL3RoaXMucGFnZUV2ZW50ID0gZTtcclxuICAgIC8vdGhpcy5sZW5ndGggPSBlLmxlbmd0aDtcclxuICAgIC8vdGhpcy5wYWdlU2l6ZSA9IGUucGFnZVNpemU7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IGUucGFnZUluZGV4O1xyXG5cclxuICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlZnJlc2hQYWdpbmF0b3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFtb3VudExlbmd0aCA9IDA7XHJcbiAgICB0aGlzLkFjdGl2ZVN1YnMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWw+KCk7XHJcblxyXG4gICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLnBhZ2VJbmRleCAqIHRoaXMuYW1vdW50UGVyUGFnZTtcclxuICAgIHZhciBlbmRJbmRleCA9ICh0aGlzLnBhZ2VJbmRleCArIDEpICogdGhpcy5hbW91bnRQZXJQYWdlO1xyXG4gICAgdmFyIGl0ZW1zYWRkZWQgPSAwO1xyXG5cclxuICAgIGlmICh0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG5cclxuICAgICAgdmFyIHN1YmNhdHMgPSB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwuc3ViQ2F0ZWdvcmllcztcclxuXHJcbiAgICAgIGlmIChzdWJjYXRzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YmNhdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHZhciBrZXlzID0gc3ViY2F0c1tpXS5rZXlzO1xyXG5cclxuICAgICAgICAgIGlmIChrZXlzICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHZhciBzdWJjYXQ6IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyBqKyspIHtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYW1vdW50TGVuZ3RoID49IHN0YXJ0SW5kZXggJiYgdGhpcy5hbW91bnRMZW5ndGggPCBlbmRJbmRleCAmJiBpdGVtc2FkZGVkIDwgdGhpcy5hbW91bnRQZXJQYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3ViY2F0ID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0ID0gbmV3IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsKCk7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5ID0gc3ViY2F0c1tpXS50cmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQuaHRtbCA9IHN1YmNhdHNbaV0uaHRtbDtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0LmtleXMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsPigpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5BY3RpdmVTdWJzLnB1c2goc3ViY2F0KTtcclxuICAgICAgICAgICAgICAgICAgaXRlbXNhZGRlZCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdWJjYXQ/LmtleXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQua2V5cy5wdXNoKGtleXNbal0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5hbW91bnRMZW5ndGgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vdmFyIGZpbHRlcnMgPSBzdWJjYXRzW2ldLmZpbHRlcnM7XHJcblxyXG4gICAgICAgICAgLy9pZiAoZmlsdGVycyAhPSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgLy8gIHZhciBzdWJjYXQ6IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgLy8gIGZvciAodmFyIGogPSAwOyBqIDwgZmlsdGVycy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgLy8gICAgdmFyIG9wdGlvbnMgPSBmaWx0ZXJzW2pdLm9wdGlvbnM7XHJcbiAgICAgICAgICAvLyAgICB2YXIgZmlsdGVybW9kZWw6IEJlaGVlckxhbmd1YWdlc0ZpbHRlclZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgICAgIC8vICAgIGlmIChvcHRpb25zICE9IG51bGwpIHtcclxuICAgICAgICAgIC8vICAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCBvcHRpb25zLmxlbmd0aDsgbysrKSB7XHJcbiAgICAgICAgICAvLyAgICAgICAgaWYgKHRoaXMuYW1vdW50TGVuZ3RoID49IHN0YXJ0SW5kZXggJiYgdGhpcy5hbW91bnRMZW5ndGggPCBlbmRJbmRleCAmJiBpdGVtc2FkZGVkIDwgdGhpcy5hbW91bnRQZXJQYWdlKSB7XHJcbiAgICAgICAgICAvLyAgICAgICAgICBpZiAoc3ViY2F0ID09IG51bGwpIHtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgc3ViY2F0ID0gbmV3IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsKCk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIHN1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5ID0gc3ViY2F0c1tpXS50cmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBzdWJjYXQuaHRtbCA9IHN1YmNhdHNbaV0uaHRtbDtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgc3ViY2F0LmtleXMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsPigpO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBzdWJjYXQuZmlsdGVycyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNGaWx0ZXJWaWV3TW9kZWw+KCk7XHJcblxyXG4gICAgICAgICAgLy8gICAgICAgICAgICB0aGlzLkFjdGl2ZVN1YnMucHVzaChzdWJjYXQpO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vICAgICAgICAgIGlmIChzdWJjYXQ/LmZpbHRlcnMgIT0gbnVsbCAmJiBmaWx0ZXJtb2RlbCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIGZpbHRlcm1vZGVsID0gbmV3IEJlaGVlckxhbmd1YWdlc0ZpbHRlclZpZXdNb2RlbChmaWx0ZXJzW2pdKTtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgZmlsdGVybW9kZWwub3B0aW9ucyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw+KCk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIHN1YmNhdC5maWx0ZXJzLnB1c2goZmlsdGVybW9kZWwpO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBpdGVtc2FkZGVkKys7XHJcbiAgICAgICAgICAvLyAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gICAgICAgICAgaWYgKGZpbHRlcm1vZGVsPy5vcHRpb25zICE9IG51bGwpIHtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgZmlsdGVybW9kZWwub3B0aW9ucy5wdXNoKG9wdGlvbnNbb10pO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBpdGVtc2FkZGVkKys7XHJcbiAgICAgICAgICAvLyAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vICAgICAgICB0aGlzLmFtb3VudExlbmd0aCsrO1xyXG4gICAgICAgICAgLy8gICAgICB9XHJcbiAgICAgICAgICAvLyAgICB9XHJcbiAgICAgICAgICAvLyAgfVxyXG4gICAgICAgICAgLy99XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVzaXplKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGFibGVkaXY/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodCAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLklzSFRNTCgpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYW1vdW50UGVyUGFnZSAhPSAxKSB7XHJcbiAgICAgICAgICB0aGlzLmFtb3VudFBlclBhZ2UgPSAxO1xyXG5cclxuICAgICAgICAgIHRoaXMuZWRpdG9yQ29uZmlnLmhlaWdodCA9IE1hdGguZmxvb3IodGhpcy50YWJsZWRpdj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0IC0gNDAwKSArIFwicHhcIjtcclxuXHJcbiAgICAgICAgICB0aGlzLlJlZnJlc2hQYWdpbmF0b3IoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIGl0ZW1jb3VudCA9IE1hdGguZmxvb3IoKHBhcnNlSW50KHRoaXMudGFibGVkaXYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpIC0gMjUwKSAvIDU3KTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW1jb3VudCA+IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmFtb3VudFBlclBhZ2UgIT0gaXRlbWNvdW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW1vdW50UGVyUGFnZSA9IGl0ZW1jb3VudDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEVudHJ5KGVudHJpZXM6IEJlaGVlckxhbmd1YWdlc0VudHJ5Vmlld01vZGVsW10sIGxhbmd1YWdlOiBCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbCk6IEJlaGVlckxhbmd1YWdlc0VudHJ5Vmlld01vZGVsIHwgbnVsbCB7XHJcbiAgICBpZiAoZW50cmllcy5lbnRyaWVzICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGVudHJpZXNbaV0ubGFuZ3VhZ2VJZCA9PSBsYW5ndWFnZS5pZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGVudHJpZXNbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZFRyYW5zbGF0aW9ucyhDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LmdldEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlKS5zdWJzY3JpYmUoKG1vZGVsOiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwgPSBtb2RlbDtcclxuXHJcbiAgICAgIGlmICh0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5jYXRlZ29yaWVzICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgPSB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5jYXRlZ29yaWVzWzBdO1xyXG4gICAgICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwgPSB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbMF07XHJcbiAgICAgICAgdGhpcy5SZWZyZXNoUGFnaW5hdG9yKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2F2ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LnNhdmVCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwodGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLk9wZW5DaGFuZ2VzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEb3dubG9hZEV4Y2VsKCk6IHZvaWQge1xyXG4gICAgd2luZG93Lm9wZW4oJy9Eb3dubG9hZC9DcmVhdGVUcmFuc2xhdGlvbnNFeGNlbCcsICdfYmxhbmsnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBVcGxvYWRFeGNlbCgpOiB2b2lkIHtcclxuICAgIGxldCBpbnB1dEVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlucHV0RWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIENhbmNlbENoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLlVwbG9hZEV4cG9ydFZpZXdNb2RlbCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2F2ZUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFNhdmVDaGFuZ2VzUmVxdWVzdCgpO1xyXG5cclxuICAgIHJlcXVlc3QubG9naW5SZXNwb25zZU1vZGVsID0gbmV3IExvZ2luUmVzcG9uc2VNb2RlbCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlKTtcclxuICAgIGlmICh0aGlzLlVwbG9hZEV4cG9ydFZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIHJlcXVlc3QudXBsb2FkRXhwb3J0Vmlld01vZGVsID0gdGhpcy5VcGxvYWRFeHBvcnRWaWV3TW9kZWw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQuc2F2ZUNoYW5nZXMocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5VcGxvYWRFeHBvcnRWaWV3TW9kZWwgPSBudWxsO1xyXG4gICAgICB0aGlzLkxvYWRUcmFuc2xhdGlvbnModGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGFsZXJ0KGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgSGFuZGxlKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XHJcblxyXG4gICAgaWYgKGZpbGUpIHtcclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC51cGxvYWRFeHBvcnQoeyBkYXRhOiBmaWxlLCBmaWxlTmFtZTogZmlsZS5uYW1lIH0pLnN1YnNjcmliZSgobW9kZWw6IFVwbG9hZEV4cG9ydFZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuVXBsb2FkRXhwb3J0Vmlld01vZGVsID0gbW9kZWw7XHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGFsZXJ0KGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVXBkYXRlQ2hhbmdlZChlbnRyeTogQmVoZWVyTGFuZ3VhZ2VzRW50cnlWaWV3TW9kZWwpOiB2b2lkIHtcclxuICAgIGVudHJ5LmNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuU2hvd1NuYWNrQmFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1NuYWNrQmFyKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLk9wZW5DaGFuZ2VzKSB7XHJcbiAgICAgIHRoaXMuT3BlbkNoYW5nZXMgPSB0cnVlO1xyXG5cclxuICAgICAgdmFyIHNuYWNrID0gdGhpcy5zbmFja0Jhci5vcGVuKFwiVW5zYXZlZCBjaGFuZ2VzLi4uXCIsIFwiU2F2ZVwiKTtcclxuXHJcbiAgICAgIHNuYWNrLm9uQWN0aW9uKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLlNhdmUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRXhwb3J0KCk6IHZvaWQge1xyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgQ3JlYXRlRXhwb3J0UmVxdWVzdCgpO1xyXG5cclxuXHJcbiAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC5jcmVhdGVFeHBvcnQocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogQ3JlYXRlRXhwb3J0UmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQobW9kZWwudXJsKTtcclxuXHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGFsZXJ0KGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEltcG9ydCgpOiB2b2lkIHtcclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlYWRFeHBvcnRSZXF1ZXN0KCk7XHJcblxyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LnJlYWRFeHBvcnQocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuXHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGFsZXJ0KGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIElzSFRNTCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgc3ViY2F0cyA9IHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbC5zdWJDYXRlZ29yaWVzO1xyXG5cclxuICAgICAgaWYgKHN1YmNhdHMgIT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3ViY2F0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHN1YmNhdHNbaV0uaHRtbClcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dDaGFuZ2VzKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuVXBsb2FkRXhwb3J0Vmlld01vZGVsICE9IG51bGwgJiYgdGhpcy5VcGxvYWRFeHBvcnRWaWV3TW9kZWwuY2hhbmdlcyAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLlVwbG9hZEV4cG9ydFZpZXdNb2RlbC5jaGFuZ2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRMYW5ndWFnZUNvdW50KCk6IG51bWJlciB7XHJcbiAgICB2YXIgY291bnQgPSAwO1xyXG4gICAgaWYgKHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgdmFyIGxhbmd1YWdlcyA9IHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlcztcclxuXHJcbiAgICAgIGlmIChsYW5ndWFnZXMgIT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFuZ3VhZ2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAobGFuZ3VhZ2VzW2ldLnNlbGVjdGVkKVxyXG4gICAgICAgICAgICBjb3VudCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb3VudDtcclxuICB9XHJcbn1cclxuIiwiPGFwcC1iZWhlZXItbmF2PjwvYXBwLWJlaGVlci1uYXY+XHJcblxyXG48YXBwLWZhYi1sb2FkZXIgKm5nSWY9XCJMb2FkaW5nXCI+PC9hcHAtZmFiLWxvYWRlcj5cclxuXHJcbjxkaXYgKm5nSWY9XCIhTG9hZGluZ1wiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhU2hvd0NoYW5nZXMoKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpc3BsYXlmbGV4XCIgI3RhYmxlZGl2ICh3aW5kb3c6cmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYWluLWJhclwiPlxyXG4gICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+R3JvdXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWxcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cInRoaXMucGFnZUluZGV4ID0gMDsgUmVmcmVzaFBhZ2luYXRvcigpOyBSZXNpemUoKTtcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjYXQgb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmNhdGVnb3JpZXNcIiBbdmFsdWVdPVwiY2F0XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0aW9uQ2F0ZWdvcnlbY2F0LnRyYW5zbGF0aW9uQ2F0ZWdvcnldIH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIUlzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImxhbmd1YWdlLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmYWItZmxhZyBbY291bnRyeV09XCJsYW5ndWFnZS5mbGFnXCI+PC9mYWItZmxhZz4ge3sgbGFuZ3VhZ2UubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIklzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhbmd1YWdlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWxcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNcIiBbdmFsdWVdPVwibGFuZ3VhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwibGFuZ3VhZ2UuZmxhZ1wiPjwvZmFiLWZsYWc+IHt7IGxhbmd1YWdlLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGJyIC8+PGJyIC8+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNhdmUoKVwiIGNsYXNzPVwic2F2ZS1idXR0b25cIiBbZGlzYWJsZWRdPVwiIU9wZW5DaGFuZ2VzXCI+XHJcbiAgICAgICAgICAgICAgU2F2ZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJyIC8+PGJyIC8+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkRvd25sb2FkRXhjZWwoKVwiIGNsYXNzPVwic2F2ZS1idXR0b25cIj5cclxuICAgICAgICAgICAgICBEb3dubG9hZCBFeGNlbFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJyIC8+PGJyIC8+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlVwbG9hZEV4Y2VsKClcIiBjbGFzcz1cInNhdmUtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgVXBsb2FkIEV4Y2VsXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cIi54bHMsLnhsc3hcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiIChjaGFuZ2UpPVwiSGFuZGxlKCRldmVudClcIj5cclxuICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICA8L21hdC1jYXJkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWFpbi1iYXIgZmxleGF1dG9cIj5cclxuICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXgtaGVpZ2h0XCI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgPGgxPnt7IFRyYW5zbGF0aW9uQ2F0ZWdvcnlbU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbC50cmFuc2xhdGlvbkNhdGVnb3J5XSB9fTwvaDE+XHJcblxyXG4gICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIklzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2F0LXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGZhYi1mbGFnIFtjb3VudHJ5XT1cIlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwuZmxhZ1wiPjwvZmFiLWZsYWc+IHt7IFNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFJc0hUTUwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiIGNsYXNzPVwiY2F0LXJvd1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2F0LXJvd1wiICpuZ0lmPVwibGFuZ3VhZ2Uuc2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGZhYi1mbGFnIFtjb3VudHJ5XT1cImxhbmd1YWdlLmZsYWdcIj48L2ZhYi1mbGFnPiB7eyBsYW5ndWFnZS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIklzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YmNhdCBvZiBBY3RpdmVTdWJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQga2V5IG9mIHN1YmNhdC5rZXlzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXM7IGluZGV4IGFzIGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJsYW5ndWFnZSA9PSBTZWxlY3RlZEJlaGVlckxhbmd1YWdlVmlld01vZGVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YW5ndWxhci1lZGl0b3IgW2NvbmZpZ109XCJlZGl0b3JDb25maWdcIiBbKG5nTW9kZWwpXT1cIkdldEVudHJ5KGtleS5lbnRyaWVzLCBsYW5ndWFnZSkudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJVcGRhdGVDaGFuZ2VkKEdldEVudHJ5KGtleS5lbnRyaWVzLCBsYW5ndWFnZSkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYW5ndWxhci1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIUlzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YmNhdCBvZiBBY3RpdmVTdWJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBrZXkgb2Ygc3ViY2F0LmtleXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgVHJhbnNsYXRpb25TdWJDYXRlZ29yeVtzdWJjYXQudHJhbnNsYXRpb25TdWJDYXRlZ29yeV0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImtleS50ZXh0ICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHt7IGtleS50ZXh0IH19KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXM7IGluZGV4IGFzIGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibGFuZ3VhZ2Uuc2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cImZ1bGx3aWR0aFwiICpuZ0lmPVwiR2V0RW50cnkoa2V5LmVudHJpZXMsIGxhbmd1YWdlKSAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGlvblN1YkNhdGVnb3J5W3N1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5XSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIkdldEVudHJ5KGtleS5lbnRyaWVzLCBsYW5ndWFnZSkudmFsdWVcIiAoa2V5dXApPVwiVXBkYXRlQ2hhbmdlZChHZXRFbnRyeShrZXkuZW50cmllcywgbGFuZ3VhZ2UpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8bWF0LXBhZ2luYXRvciAjcGFnaW5hdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlKT1cImhhbmRsZVBhZ2VFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xlbmd0aF09XCJhbW91bnRMZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwiYW1vdW50UGVyUGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVQYWdlU2l6ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZWN0IHBhZ2VcIj5cclxuICAgICAgICAgICAgPC9tYXQtcGFnaW5hdG9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8L21hdC1jYXJkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dDaGFuZ2VzKClcIj5cclxuICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1haW4tYmFyIGZsZXhhdXRvXCI+XHJcbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG5cclxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJDYW5jZWxDaGFuZ2VzKClcIj5cclxuICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICZuYnNwO1xyXG4gICAgICAgICZuYnNwO1xyXG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNhdmVDaGFuZ2VzKClcIj5cclxuICAgICAgICAgIFNhdmVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnIgLz5cclxuICAgICAgICA8YnIgLz5cclxuXHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiZnVsbHdpZHRoXCIgY2VsbHBhZGRpbmc9XCIyXCIgY2VsbHNwYWNpbmc9XCIyXCI+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0ZD48L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYm90dG9tXCIgc3R5bGU9XCJtaW4td2lkdGg6IDEwMHB4O1wiPjxiPkxhbmd1YWdlPC9iPjwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b21cIj48Yj5PbGQ8L2I+PC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWJvdHRvbVwiPjxiPk5ldzwvYj48L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgY2hhbmdlIG9mIHRoaXMuVXBsb2FkRXhwb3J0Vmlld01vZGVsLmNoYW5nZXNcIj5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJjaGFuZ2Uuc2F2ZVwiPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYm90dG9tLWdyZXlcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFuZ3VhZ2UuaWQgPT0gY2hhbmdlLmxhbmd1YWdlSWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGZhYi1mbGFnIFtjb3VudHJ5XT1cImxhbmd1YWdlLmZsYWdcIj48L2ZhYi1mbGFnPiB7eyBsYW5ndWFnZS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWJvdHRvbS1ncmV5XCI+e3sgY2hhbmdlLm9sZFZhbHVlIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWJvdHRvbS1ncmV5XCI+e3sgY2hhbmdlLm5ld1ZhbHVlIH19PC90ZD5cclxuXHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgICA8YnIgLz5cclxuICAgIDxiciAvPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuIl19
|
|
370
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBeUQsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTWxKLE9BQU8sRUFBRSxrQkFBa0IsRUFBdUgsbUNBQW1DLEVBQXFELG1CQUFtQixFQUF3QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBcUQsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVuYyxNQU1hLHdCQUF3QjtJQWdEekI7SUFDQTtJQUNBO0lBQ0E7SUFsREgsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLHdCQUF3QixDQUEyQjtJQUNuRCxVQUFVLEdBQStDLElBQUksS0FBSyxFQUF1QyxDQUFDO0lBQzFHLHFCQUFxQixHQUFpQyxJQUFJLENBQUM7SUFFM0QsU0FBUyxHQUFXLENBQUMsQ0FBQztJQUN0QixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFFbEMsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDO0lBRU0sd0NBQXdDLEdBQTRDLElBQUksQ0FBQztJQUN6RiwrQkFBK0IsR0FBbUMsSUFBSSxDQUFDO0lBRXZELFFBQVEsQ0FBYTtJQUVwQixTQUFTLENBQWE7SUFFOUMsWUFBWSxHQUF3QjtRQUNsQyxRQUFRLEVBQUUsSUFBSTtRQUNkLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLE1BQU0sRUFBRSxNQUFNO1FBQ2QsU0FBUyxFQUFFLEdBQUc7UUFDZCxTQUFTLEVBQUUsTUFBTTtRQUNqQixLQUFLLEVBQUUsTUFBTTtRQUNiLFFBQVEsRUFBRSxHQUFHO1FBQ2IsU0FBUyxFQUFFLElBQUk7UUFDZixhQUFhLEVBQUUsSUFBSTtRQUNuQixXQUFXLEVBQUUsSUFBSTtRQUNqQix5QkFBeUIsRUFBRSxFQUFFO1FBQzdCLGVBQWUsRUFBRSxFQUFFO1FBQ25CLGVBQWUsRUFBRSxFQUFFO1FBQ25CLFFBQVEsRUFBRSxJQUFJO1FBQ2QsZUFBZSxFQUFFLEtBQUs7UUFDdEIsb0JBQW9CLEVBQUU7WUFDcEIsQ0FBQyxVQUFVLENBQUM7U0FDYjtLQUNGLENBQUM7SUFFRixZQUNVLGtCQUFzQyxFQUN0QyxxQkFBNEMsRUFDNUMsUUFBcUIsRUFDckIsaUJBQW9DO1FBSHBDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFDOUMsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsZUFBZSxDQUFDLENBQVk7UUFDMUIscUJBQXFCO1FBQ3JCLHlCQUF5QjtRQUN6Qiw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRTdCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBdUMsQ0FBQztRQUVuRSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDckQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRW5CLElBQUksSUFBSSxDQUFDLHdDQUF3QyxJQUFJLElBQUksRUFBRTtZQUV6RCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsd0NBQXdDLENBQUMsYUFBYSxDQUFDO1lBRTFFLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtnQkFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3ZDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBRTNCLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTt3QkFFaEIsSUFBSSxNQUFNLEdBQStDLElBQUksQ0FBQzt3QkFFOUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7NEJBRXBDLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0NBQ3RHLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtvQ0FDbEIsTUFBTSxHQUFHLElBQUksbUNBQW1DLEVBQUUsQ0FBQztvQ0FDbkQsTUFBTSxDQUFDLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztvQ0FDbEUsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29DQUM5QixNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksS0FBSyxFQUErQixDQUFDO29DQUV2RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQ0FDN0IsVUFBVSxFQUFFLENBQUM7aUNBQ2Q7Z0NBRUQsSUFBSSxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRTtvQ0FDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUNBQzNCOzZCQUNGOzRCQUVELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzt5QkFDckI7cUJBQ0Y7b0JBRUQsbUNBQW1DO29CQUVuQyx3QkFBd0I7b0JBRXhCLGtFQUFrRTtvQkFFbEUsOENBQThDO29CQUM5Qyx1Q0FBdUM7b0JBQ3ZDLG9FQUFvRTtvQkFFcEUsNEJBQTRCO29CQUM1QixrREFBa0Q7b0JBQ2xELG1IQUFtSDtvQkFDbkgsaUNBQWlDO29CQUNqQyxpRUFBaUU7b0JBQ2pFLGdGQUFnRjtvQkFDaEYsNENBQTRDO29CQUM1QyxxRUFBcUU7b0JBQ3JFLDJFQUEyRTtvQkFFM0UsMkNBQTJDO29CQUMzQyxhQUFhO29CQUViLGlFQUFpRTtvQkFDakUsMkVBQTJFO29CQUMzRSw2RUFBNkU7b0JBQzdFLCtDQUErQztvQkFDL0MsMkJBQTJCO29CQUMzQixhQUFhO29CQUViLCtDQUErQztvQkFDL0MsbURBQW1EO29CQUNuRCwyQkFBMkI7b0JBQzNCLGFBQWE7b0JBQ2IsV0FBVztvQkFFWCw4QkFBOEI7b0JBQzlCLFNBQVM7b0JBQ1QsT0FBTztvQkFDUCxLQUFLO29CQUNMLEdBQUc7aUJBQ0o7YUFDRjtTQUNGO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxZQUFZLElBQUksSUFBSSxFQUFFO1lBQ3RELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNqQixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxFQUFFO29CQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztvQkFFdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxZQUFZLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUUvRixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztpQkFDekI7YUFDRjtpQkFDSTtnQkFDSCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUU1RixJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUU7b0JBQ2pCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxTQUFTLEVBQUU7d0JBQ25DLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO3dCQUUvQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztxQkFDekI7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVNLFFBQVEsQ0FBQyxPQUF3QyxFQUFFLFFBQWlDO1FBQ3pGLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7WUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFO29CQUN4QyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbkI7YUFDRjtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsaUJBQW9DO1FBRTFELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUErQixFQUFFLEVBQUU7WUFDN0ksSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztZQUV0QyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO2dCQUNwRCxJQUFJLENBQUMsd0NBQXdDLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDekI7WUFFRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFO2dCQUNuRCxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDekI7WUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUVyQixpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQyxDQUFDLEVBQUUsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUNyQixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRztnQkFDckIsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUNqQjtnQkFDSCxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFDckMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2Q7WUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXZDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXZILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pHLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QyxDQUFDLEVBQUUsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUNyQixLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUVyQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sYUFBYTtRQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksWUFBWSxHQUFnQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQTRCLENBQUM7UUFDNUUsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFcEIsSUFBSSxPQUFPLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBRXZDLE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pHLElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksRUFBRTtZQUN0QyxPQUFPLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1NBQzVEO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzFELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7WUFDbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hELENBQUMsRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFO1lBQ3JCLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHO2dCQUNyQixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7aUJBQ2pCO2dCQUNILEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUNyQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDZDtZQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFVO1FBQ3RCLE1BQU0sSUFBSSxHQUFTLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXpDLElBQUksSUFBSSxFQUFFO1lBRVIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFFcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQTRCLEVBQUUsRUFBRTtnQkFDbkgsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHO29CQUNyQixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7cUJBQ2pCO29CQUNILEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO29CQUNyQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2Q7Z0JBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTSxhQUFhLENBQUMsS0FBb0M7UUFDdkQsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBRXhCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRTdELEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUM5QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLE9BQU8sR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFHeEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUEyQixFQUFFLEVBQUU7WUFDdEYsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuQixDQUFDLEVBQUUsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUNyQixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRztnQkFDckIsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUNqQjtnQkFDSCxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFDckMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2Q7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxPQUFPLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBR3RDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUUzRCxDQUFDLEVBQUUsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUNyQixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRztnQkFDckIsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUNqQjtnQkFDSCxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFDckMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2Q7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxJQUFJLENBQUMsd0NBQXdDLElBQUksSUFBSSxFQUFFO1lBQ3pELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxhQUFhLENBQUM7WUFFMUUsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFO2dCQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdkMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTt3QkFDakIsT0FBTyxJQUFJLENBQUM7aUJBQ2Y7YUFDRjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7WUFDcEYsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2pELE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLEVBQUU7WUFDekMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQztZQUV4RCxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7Z0JBQ3JCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUN6QyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO3dCQUN2QixLQUFLLEVBQUUsQ0FBQztpQkFDWDthQUNGO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxPQUFPO1FBQ1osS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9DLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBRW5DLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtnQkFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3BDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUU7d0JBQzlDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7cUJBQzFCO2lCQUNGO2FBQ0Y7U0FDRjtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzt1R0FyYVUsd0JBQXdCOzJGQUF4Qix3QkFBd0IsMlBDZHJDLHVrUkEyTEE7O1NEN0thLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLHNCQUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSTs2TUF3QmQsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUVHLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExlZ2FjeVBhZ2VFdmVudCBhcyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0TGVnYWN5U25hY2tCYXIgYXMgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc25hY2stYmFyJztcclxuaW1wb3J0IHsgQW5ndWxhckVkaXRvckNvbmZpZyB9IGZyb20gJ0Brb2xrb3YvYW5ndWxhci1lZGl0b3InO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2F2ZUNoYW5nZXNSZXF1ZXN0LCBVcGxvYWRFeHBvcnRWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNFbnRyeVZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNTdWJDYXRlZ29yeVZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbCwgQ3JlYXRlRXhwb3J0UmVxdWVzdCwgQ3JlYXRlRXhwb3J0UmVzcG9uc2UsIExvZ2luUmVzcG9uc2VNb2RlbCwgUmVhZEV4cG9ydFJlcXVlc3QsIFRyYW5zbGF0ZUFwaUNsaWVudCwgVHJhbnNsYXRlS2V5Q2F0ZWdvcnlWaWV3TW9kZWwsIFRyYW5zbGF0aW9uQ2F0ZWdvcnksIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi8uLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYmVoZWVyLXRyYW5zbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JlaGVlci10cmFuc2xhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2JlaGVlci10cmFuc2xhdGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCZWhlZXJUcmFuc2xhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xyXG4gIHB1YmxpYyBMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgT3BlbkNoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsOiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWw7XHJcbiAgcHVibGljIEFjdGl2ZVN1YnM6IEFycmF5PEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsPiA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNTdWJDYXRlZ29yeVZpZXdNb2RlbD4oKTtcclxuICBwdWJsaWMgVXBsb2FkRXhwb3J0Vmlld01vZGVsOiBVcGxvYWRFeHBvcnRWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHVibGljIHBhZ2VJbmRleDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgYW1vdW50TGVuZ3RoOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBhbW91bnRQZXJQYWdlOiBudW1iZXIgPSAxMDtcclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvbkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uQ2F0ZWdvcnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkoKSB7XHJcbiAgICByZXR1cm4gVHJhbnNsYXRpb25TdWJDYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsOiBCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyBTZWxlY3RlZEJlaGVlckxhbmd1YWdlVmlld01vZGVsOiBCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBAVmlld0NoaWxkKCd0YWJsZWRpdicpIHRhYmxlZGl2OiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGVkaXRvckNvbmZpZzogQW5ndWxhckVkaXRvckNvbmZpZyA9IHtcclxuICAgIGVkaXRhYmxlOiB0cnVlLFxyXG4gICAgc3BlbGxjaGVjazogZmFsc2UsXHJcbiAgICBoZWlnaHQ6ICdhdXRvJyxcclxuICAgIG1pbkhlaWdodDogJzAnLFxyXG4gICAgbWF4SGVpZ2h0OiAnYXV0bycsXHJcbiAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgbWluV2lkdGg6ICcwJyxcclxuICAgIHRyYW5zbGF0ZTogJ25vJyxcclxuICAgIGVuYWJsZVRvb2xiYXI6IHRydWUsXHJcbiAgICBzaG93VG9vbGJhcjogdHJ1ZSxcclxuICAgIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICcnLFxyXG4gICAgZGVmYXVsdEZvbnROYW1lOiAnJyxcclxuICAgIGRlZmF1bHRGb250U2l6ZTogJycsXHJcbiAgICBzYW5pdGl6ZTogdHJ1ZSxcclxuICAgIHRvb2xiYXJQb3NpdGlvbjogJ3RvcCcsXHJcbiAgICB0b29sYmFySGlkZGVuQnV0dG9uczogW1xyXG4gICAgICBbJ2ZvbnROYW1lJ11cclxuICAgIF1cclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgVHJhbnNsYXRlQXBpQ2xpZW50OiBUcmFuc2xhdGVBcGlDbGllbnQsXHJcbiAgICBwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXHJcbiAgICBwcml2YXRlIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5SZXNpemUoKTtcclxuICB9XHJcblxyXG4gIG9uUmVzaXplKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuUmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZFRyYW5zbGF0aW9ucyh0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVBhZ2VFdmVudChlOiBQYWdlRXZlbnQpIHtcclxuICAgIC8vdGhpcy5wYWdlRXZlbnQgPSBlO1xyXG4gICAgLy90aGlzLmxlbmd0aCA9IGUubGVuZ3RoO1xyXG4gICAgLy90aGlzLnBhZ2VTaXplID0gZS5wYWdlU2l6ZTtcclxuICAgIHRoaXMucGFnZUluZGV4ID0gZS5wYWdlSW5kZXg7XHJcblxyXG4gICAgdGhpcy5SZWZyZXNoUGFnaW5hdG9yKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVmcmVzaFBhZ2luYXRvcigpOiB2b2lkIHtcclxuICAgIHRoaXMuYW1vdW50TGVuZ3RoID0gMDtcclxuICAgIHRoaXMuQWN0aXZlU3VicyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNTdWJDYXRlZ29yeVZpZXdNb2RlbD4oKTtcclxuXHJcbiAgICB2YXIgc3RhcnRJbmRleCA9IHRoaXMucGFnZUluZGV4ICogdGhpcy5hbW91bnRQZXJQYWdlO1xyXG4gICAgdmFyIGVuZEluZGV4ID0gKHRoaXMucGFnZUluZGV4ICsgMSkgKiB0aGlzLmFtb3VudFBlclBhZ2U7XHJcbiAgICB2YXIgaXRlbXNhZGRlZCA9IDA7XHJcblxyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCAhPSBudWxsKSB7XHJcblxyXG4gICAgICB2YXIgc3ViY2F0cyA9IHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbC5zdWJDYXRlZ29yaWVzO1xyXG5cclxuICAgICAgaWYgKHN1YmNhdHMgIT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3ViY2F0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdmFyIGtleXMgPSBzdWJjYXRzW2ldLmtleXM7XHJcblxyXG4gICAgICAgICAgaWYgKGtleXMgIT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdmFyIHN1YmNhdDogQmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwga2V5cy5sZW5ndGg7IGorKykge1xyXG5cclxuICAgICAgICAgICAgICBpZiAodGhpcy5hbW91bnRMZW5ndGggPj0gc3RhcnRJbmRleCAmJiB0aGlzLmFtb3VudExlbmd0aCA8IGVuZEluZGV4ICYmIGl0ZW1zYWRkZWQgPCB0aGlzLmFtb3VudFBlclBhZ2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzdWJjYXQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQgPSBuZXcgQmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWwoKTtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0LnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkgPSBzdWJjYXRzW2ldLnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmNhdC5odG1sID0gc3ViY2F0c1tpXS5odG1sO1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQua2V5cyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw+KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLkFjdGl2ZVN1YnMucHVzaChzdWJjYXQpO1xyXG4gICAgICAgICAgICAgICAgICBpdGVtc2FkZGVkKys7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHN1YmNhdD8ua2V5cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmNhdC5rZXlzLnB1c2goa2V5c1tqXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLmFtb3VudExlbmd0aCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy92YXIgZmlsdGVycyA9IHN1YmNhdHNbaV0uZmlsdGVycztcclxuXHJcbiAgICAgICAgICAvL2lmIChmaWx0ZXJzICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAvLyAgdmFyIHN1YmNhdDogQmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAvLyAgZm9yICh2YXIgaiA9IDA7IGogPCBmaWx0ZXJzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAvLyAgICB2YXIgb3B0aW9ucyA9IGZpbHRlcnNbal0ub3B0aW9ucztcclxuICAgICAgICAgIC8vICAgIHZhciBmaWx0ZXJtb2RlbDogQmVoZWVyTGFuZ3VhZ2VzRmlsdGVyVmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgLy8gICAgaWYgKG9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgLy8gICAgICBmb3IgKHZhciBvID0gMDsgbyA8IG9wdGlvbnMubGVuZ3RoOyBvKyspIHtcclxuICAgICAgICAgIC8vICAgICAgICBpZiAodGhpcy5hbW91bnRMZW5ndGggPj0gc3RhcnRJbmRleCAmJiB0aGlzLmFtb3VudExlbmd0aCA8IGVuZEluZGV4ICYmIGl0ZW1zYWRkZWQgPCB0aGlzLmFtb3VudFBlclBhZ2UpIHtcclxuICAgICAgICAgIC8vICAgICAgICAgIGlmIChzdWJjYXQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBzdWJjYXQgPSBuZXcgQmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWwoKTtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgc3ViY2F0LnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkgPSBzdWJjYXRzW2ldLnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIHN1YmNhdC5odG1sID0gc3ViY2F0c1tpXS5odG1sO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBzdWJjYXQua2V5cyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw+KCk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIHN1YmNhdC5maWx0ZXJzID0gbmV3IEFycmF5PEJlaGVlckxhbmd1YWdlc0ZpbHRlclZpZXdNb2RlbD4oKTtcclxuXHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIHRoaXMuQWN0aXZlU3Vicy5wdXNoKHN1YmNhdCk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gICAgICAgICAgaWYgKHN1YmNhdD8uZmlsdGVycyAhPSBudWxsICYmIGZpbHRlcm1vZGVsID09IG51bGwpIHtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgZmlsdGVybW9kZWwgPSBuZXcgQmVoZWVyTGFuZ3VhZ2VzRmlsdGVyVmlld01vZGVsKGZpbHRlcnNbal0pO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBmaWx0ZXJtb2RlbC5vcHRpb25zID0gbmV3IEFycmF5PEJlaGVlckxhbmd1YWdlc0tleVZpZXdNb2RlbD4oKTtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgc3ViY2F0LmZpbHRlcnMucHVzaChmaWx0ZXJtb2RlbCk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIGl0ZW1zYWRkZWQrKztcclxuICAgICAgICAgIC8vICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyAgICAgICAgICBpZiAoZmlsdGVybW9kZWw/Lm9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBmaWx0ZXJtb2RlbC5vcHRpb25zLnB1c2gob3B0aW9uc1tvXSk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIGl0ZW1zYWRkZWQrKztcclxuICAgICAgICAgIC8vICAgICAgICAgIH1cclxuICAgICAgICAgIC8vICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gICAgICAgIHRoaXMuYW1vdW50TGVuZ3RoKys7XHJcbiAgICAgICAgICAvLyAgICAgIH1cclxuICAgICAgICAgIC8vICAgIH1cclxuICAgICAgICAgIC8vICB9XHJcbiAgICAgICAgICAvL31cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZXNpemUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZWRpdj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0ICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuSXNIVE1MKCkpIHtcclxuICAgICAgICBpZiAodGhpcy5hbW91bnRQZXJQYWdlICE9IDEpIHtcclxuICAgICAgICAgIHRoaXMuYW1vdW50UGVyUGFnZSA9IDE7XHJcblxyXG4gICAgICAgICAgdGhpcy5lZGl0b3JDb25maWcuaGVpZ2h0ID0gTWF0aC5mbG9vcih0aGlzLnRhYmxlZGl2Py5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgLSA0MDApICsgXCJweFwiO1xyXG5cclxuICAgICAgICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgaXRlbWNvdW50ID0gTWF0aC5mbG9vcigocGFyc2VJbnQodGhpcy50YWJsZWRpdi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCkgLSAyNTApIC8gNTcpO1xyXG5cclxuICAgICAgICBpZiAoaXRlbWNvdW50ID4gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuYW1vdW50UGVyUGFnZSAhPSBpdGVtY291bnQpIHtcclxuICAgICAgICAgICAgdGhpcy5hbW91bnRQZXJQYWdlID0gaXRlbWNvdW50O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5SZWZyZXNoUGFnaW5hdG9yKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0RW50cnkoZW50cmllczogQmVoZWVyTGFuZ3VhZ2VzRW50cnlWaWV3TW9kZWxbXSwgbGFuZ3VhZ2U6IEJlaGVlckxhbmd1YWdlVmlld01vZGVsKTogQmVoZWVyTGFuZ3VhZ2VzRW50cnlWaWV3TW9kZWwgfCBudWxsIHtcclxuICAgIGlmIChlbnRyaWVzLmVudHJpZXMgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZW50cmllc1tpXS5sYW5ndWFnZUlkID09IGxhbmd1YWdlLmlkKSB7XHJcbiAgICAgICAgICByZXR1cm4gZW50cmllc1tpXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2FkVHJhbnNsYXRpb25zKENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQuZ2V0QmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpLnN1YnNjcmliZSgobW9kZWw6IEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCA9IG1vZGVsO1xyXG5cclxuICAgICAgaWYgKHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmNhdGVnb3JpZXMgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCA9IHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmNhdGVnb3JpZXNbMF07XHJcbiAgICAgICAgdGhpcy5SZWZyZXNoUGFnaW5hdG9yKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXMgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbCA9IHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1swXTtcclxuICAgICAgICB0aGlzLlJlZnJlc2hQYWdpbmF0b3IoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGFsZXJ0KGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTYXZlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQuc2F2ZUJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCh0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuT3BlbkNoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkRXhjZWwoKTogdm9pZCB7XHJcbiAgICB3aW5kb3cub3BlbignL0Rvd25sb2FkL0NyZWF0ZVRyYW5zbGF0aW9uc0V4Y2VsJywgJ19ibGFuaycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFVwbG9hZEV4Y2VsKCk6IHZvaWQge1xyXG4gICAgbGV0IGlucHV0RWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaW5wdXRFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ2FuY2VsQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuVXBsb2FkRXhwb3J0Vmlld01vZGVsID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTYXZlQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgU2F2ZUNoYW5nZXNSZXF1ZXN0KCk7XHJcblxyXG4gICAgcmVxdWVzdC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuVXBsb2FkRXhwb3J0Vmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgcmVxdWVzdC51cGxvYWRFeHBvcnRWaWV3TW9kZWwgPSB0aGlzLlVwbG9hZEV4cG9ydFZpZXdNb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC5zYXZlQ2hhbmdlcyhyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLlVwbG9hZEV4cG9ydFZpZXdNb2RlbCA9IG51bGw7XHJcbiAgICAgIHRoaXMuTG9hZFRyYW5zbGF0aW9ucyh0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBIYW5kbGUoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcclxuXHJcbiAgICBpZiAoZmlsZSkge1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LnVwbG9hZEV4cG9ydCh7IGRhdGE6IGZpbGUsIGZpbGVOYW1lOiBmaWxlLm5hbWUgfSkuc3Vic2NyaWJlKChtb2RlbDogVXBsb2FkRXhwb3J0Vmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5VcGxvYWRFeHBvcnRWaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBVcGRhdGVDaGFuZ2VkKGVudHJ5OiBCZWhlZXJMYW5ndWFnZXNFbnRyeVZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgZW50cnkuY2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5TaG93U25hY2tCYXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93U25hY2tCYXIoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuT3BlbkNoYW5nZXMpIHtcclxuICAgICAgdGhpcy5PcGVuQ2hhbmdlcyA9IHRydWU7XHJcblxyXG4gICAgICB2YXIgc25hY2sgPSB0aGlzLnNuYWNrQmFyLm9wZW4oXCJVbnNhdmVkIGNoYW5nZXMuLi5cIiwgXCJTYXZlXCIpO1xyXG5cclxuICAgICAgc25hY2sub25BY3Rpb24oKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuU2F2ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBFeHBvcnQoKTogdm9pZCB7XHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBDcmVhdGVFeHBvcnRSZXF1ZXN0KCk7XHJcblxyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LmNyZWF0ZUV4cG9ydChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBDcmVhdGVFeHBvcnRSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydChtb2RlbC51cmwpO1xyXG5cclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgSW1wb3J0KCk6IHZvaWQge1xyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVhZEV4cG9ydFJlcXVlc3QoKTtcclxuXHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQucmVhZEV4cG9ydChyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgSXNIVE1MKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBzdWJjYXRzID0gdGhpcy5TZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsLnN1YkNhdGVnb3JpZXM7XHJcblxyXG4gICAgICBpZiAoc3ViY2F0cyAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWJjYXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoc3ViY2F0c1tpXS5odG1sKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd0NoYW5nZXMoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5VcGxvYWRFeHBvcnRWaWV3TW9kZWwgIT0gbnVsbCAmJiB0aGlzLlVwbG9hZEV4cG9ydFZpZXdNb2RlbC5jaGFuZ2VzICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuVXBsb2FkRXhwb3J0Vmlld01vZGVsLmNoYW5nZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldExhbmd1YWdlQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHZhciBjb3VudCA9IDA7XHJcbiAgICBpZiAodGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgbGFuZ3VhZ2VzID0gdGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzO1xyXG5cclxuICAgICAgaWYgKGxhbmd1YWdlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYW5ndWFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChsYW5ndWFnZXNbaV0uc2VsZWN0ZWQpXHJcbiAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvdW50O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFRleHQoKTogc3RyaW5nIHtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5BY3RpdmVTdWJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHZhciBrZXlzID0gdGhpcy5BY3RpdmVTdWJzW2ldLmtleXM7XHJcblxyXG4gICAgICBpZiAoa2V5cyAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBrZXlzLmxlbmd0aDsgaysrKSB7XHJcbiAgICAgICAgICBpZiAoa2V5c1trXS50ZXh0ICE9IG51bGwgJiYga2V5c1trXS50ZXh0ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGtleXNba10udGV4dCArIFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtYmVoZWVyLW5hdj48L2FwcC1iZWhlZXItbmF2PlxyXG5cclxuPGFwcC1mYWItbG9hZGVyICpuZ0lmPVwiTG9hZGluZ1wiPjwvYXBwLWZhYi1sb2FkZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwiIUxvYWRpbmdcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIVNob3dDaGFuZ2VzKClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5ZmxleFwiICN0YWJsZWRpdiAod2luZG93OnJlc2l6ZSk9XCJvblJlc2l6ZSgkZXZlbnQpXCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWFpbi1iYXJcIj5cclxuICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cclxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPkdyb3VwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJTZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJ0aGlzLnBhZ2VJbmRleCA9IDA7IFJlZnJlc2hQYWdpbmF0b3IoKTsgUmVzaXplKCk7XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgY2F0IG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5jYXRlZ29yaWVzXCIgW3ZhbHVlXT1cImNhdFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGlvbkNhdGVnb3J5W2NhdC50cmFuc2xhdGlvbkNhdGVnb3J5XSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFJc0hUTUwoKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJsYW5ndWFnZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwibGFuZ3VhZ2UuZmxhZ1wiPjwvZmFiLWZsYWc+IHt7IGxhbmd1YWdlLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJJc0hUTUwoKVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYW5ndWFnZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJTZWxlY3RlZEJlaGVlckxhbmd1YWdlVmlld01vZGVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCIgW3ZhbHVlXT1cImxhbmd1YWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZhYi1mbGFnIFtjb3VudHJ5XT1cImxhbmd1YWdlLmZsYWdcIj48L2ZhYi1mbGFnPiB7eyBsYW5ndWFnZS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxiciAvPjxiciAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJTYXZlKClcIiBjbGFzcz1cInNhdmUtYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFPcGVuQ2hhbmdlc1wiPlxyXG4gICAgICAgICAgICAgIFNhdmVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgICA8YnIgLz48YnIgLz5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJEb3dubG9hZEV4Y2VsKClcIiBjbGFzcz1cInNhdmUtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICBEb3dubG9hZCBFeGNlbFxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxiciAvPjxiciAvPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlVwbG9hZEV4Y2VsKClcIiBjbGFzcz1cInNhdmUtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICBVcGxvYWQgRXhjZWxcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cIi54bHMsLnhsc3hcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiIChjaGFuZ2UpPVwiSGFuZGxlKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1haW4tYmFyIGZsZXhhdXRvXCI+XHJcbiAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF4LWhlaWdodFwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgIDxoMT5cclxuICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0aW9uQ2F0ZWdvcnlbU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbC50cmFuc2xhdGlvbkNhdGVnb3J5XSB9fVxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkdldFRleHQoKSAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAoe3sgR2V0VGV4dCgpIH19KVxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9oMT5cclxuXHJcbiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjYXQtcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwiU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbC5mbGFnXCI+PC9mYWItZmxhZz4ge3sgU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIUlzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCIgY2xhc3M9XCJjYXQtcm93XCI+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjYXQtcm93XCIgKm5nSWY9XCJsYW5ndWFnZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwibGFuZ3VhZ2UuZmxhZ1wiPjwvZmFiLWZsYWc+IHt7IGxhbmd1YWdlLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViY2F0IG9mIEFjdGl2ZVN1YnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrZXkgb2Ygc3ViY2F0LmtleXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlczsgaW5kZXggYXMgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImxhbmd1YWdlID09IFNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbmd1bGFyLWVkaXRvciBbY29uZmlnXT1cImVkaXRvckNvbmZpZ1wiIFsobmdNb2RlbCldPVwiR2V0RW50cnkoa2V5LmVudHJpZXMsIGxhbmd1YWdlKS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIlVwZGF0ZUNoYW5nZWQoR2V0RW50cnkoa2V5LmVudHJpZXMsIGxhbmd1YWdlKSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hbmd1bGFyLWVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViY2F0IG9mIEFjdGl2ZVN1YnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGtleSBvZiBzdWJjYXQua2V5c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGlvblN1YkNhdGVnb3J5W3N1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5XSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwia2V5LnRleHQgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe3sga2V5LnRleHQgfX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlczsgaW5kZXggYXMgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJsYW5ndWFnZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIGNsYXNzPVwiZnVsbHdpZHRoXCIgKm5nSWY9XCJHZXRFbnRyeShrZXkuZW50cmllcywgbGFuZ3VhZ2UpICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnlbc3ViY2F0LnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnldIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiR2V0RW50cnkoa2V5LmVudHJpZXMsIGxhbmd1YWdlKS52YWx1ZVwiIChrZXl1cCk9XCJVcGRhdGVDaGFuZ2VkKEdldEVudHJ5KGtleS5lbnRyaWVzLCBsYW5ndWFnZSkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxtYXQtcGFnaW5hdG9yICNwYWdpbmF0b3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2UpPVwiaGFuZGxlUGFnZUV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbbGVuZ3RoXT1cImFtb3VudExlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJhbW91bnRQZXJQYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVBhZ2VTaXplXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY3QgcGFnZVwiPlxyXG4gICAgICAgICAgICA8L21hdC1wYWdpbmF0b3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2hvd0NoYW5nZXMoKVwiPlxyXG4gICAgPG1hdC1jYXJkIGNsYXNzPVwibWFpbi1iYXIgZmxleGF1dG9cIj5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcblxyXG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkNhbmNlbENoYW5nZXMoKVwiPlxyXG4gICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiU2F2ZUNoYW5nZXMoKVwiPlxyXG4gICAgICAgICAgU2F2ZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxiciAvPlxyXG4gICAgICAgIDxiciAvPlxyXG5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJmdWxsd2lkdGhcIiBjZWxscGFkZGluZz1cIjJcIiBjZWxsc3BhY2luZz1cIjJcIj5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRkPjwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b21cIiBzdHlsZT1cIm1pbi13aWR0aDogMTAwcHg7XCI+PGI+TGFuZ3VhZ2U8L2I+PC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWJvdHRvbVwiPjxiPk9sZDwvYj48L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYm90dG9tXCI+PGI+TmV3PC9iPjwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBjaGFuZ2Ugb2YgdGhpcy5VcGxvYWRFeHBvcnRWaWV3TW9kZWwuY2hhbmdlc1wiPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImNoYW5nZS5zYXZlXCI+XHJcbiAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b20tZ3JleVwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYW5ndWFnZS5pZCA9PSBjaGFuZ2UubGFuZ3VhZ2VJZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwibGFuZ3VhZ2UuZmxhZ1wiPjwvZmFiLWZsYWc+IHt7IGxhbmd1YWdlLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYm90dG9tLWdyZXlcIj57eyBjaGFuZ2Uub2xkVmFsdWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYm90dG9tLWdyZXlcIj57eyBjaGFuZ2UubmV3VmFsdWUgfX08L3RkPlxyXG5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPC9tYXQtY2FyZD5cclxuICAgIDxiciAvPlxyXG4gICAgPGJyIC8+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG4iXX0=
|