fabrikantencore 2.12.17 → 2.13.1
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-translate/beheer-translate.component.mjs +3 -3
- package/esm2022/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.mjs +3 -9
- package/esm2022/src/app/modules/fabrikantencore/components/fab-form/fab-form.component.mjs +41 -6
- package/esm2022/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.mjs +12 -5
- package/esm2022/src/app/modules/fabrikantencore/components/fab-popup-text/fab-popup-text.component.mjs +45 -0
- package/esm2022/src/app/modules/fabrikantencore/fabrikantencore.module.mjs +6 -3
- package/esm2022/src/app/modules/fabrikantencore/services/fabrikanten.service.mjs +10 -1
- package/esm2022/src/app/modules/fabrikantencore/swagger/SwaggerClient.mjs +11 -2
- package/fesm2022/fabrikantencore.mjs +189 -100
- package/fesm2022/fabrikantencore.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.d.ts +0 -2
- package/src/app/modules/fabrikantencore/components/fab-form/fab-form.component.d.ts +2 -1
- package/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.d.ts +2 -0
- package/src/app/modules/fabrikantencore/components/fab-popup-text/fab-popup-text.component.d.ts +20 -0
- package/src/app/modules/fabrikantencore/fabrikantencore.module.d.ts +30 -29
- package/src/app/modules/fabrikantencore/services/fabrikanten.service.d.ts +1 -0
- package/src/app/modules/fabrikantencore/swagger/SwaggerClient.d.ts +11 -4
|
@@ -374,12 +374,12 @@ class BeheerTranslateComponent {
|
|
|
374
374
|
return "";
|
|
375
375
|
}
|
|
376
376
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerTranslateComponent, deps: [{ token: i1.TranslateApiClient }, { token: i2.AuthenticationService }, { token: i3.MatLegacySnackBar }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
377
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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\r\n <div>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Item</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedChoice\" (selectionChange)=\"UpdateChoice()\">\r\n <mat-option *ngFor=\"let choice of PossibleChoices\" [value]=\"choice\">\r\n {{ choice.text }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <button mat-raised-button (click)=\"ShowParameters()\" class=\"save-button\">\r\n Parameters\r\n </button>\r\n </div>\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\" style=\"height: 100%;\">\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\" style=\"height: calc(100% - 48px);\">\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 style=\"height: 100%;\">\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 });
|
|
377
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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\r\n <div>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Item</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedChoice\" (selectionChange)=\"UpdateChoice()\">\r\n <mat-option *ngFor=\"let choice of PossibleChoices\" [value]=\"choice\">\r\n {{ choice.text }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <button mat-raised-button (click)=\"ShowParameters()\" class=\"save-button\">\r\n Parameters\r\n </button>\r\n </div>\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\" style=\"height: 100%;\">\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\" style=\"height: calc(100% - 48px);\">\r\n <tr>\r\n <ng-container *ngIf=\"IsHTML()\">\r\n <td class=\"cat-row header-cell\">\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 header-cell\" *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 style=\"height: 100%;\">\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 class=\"content-cell\" style=\"padding: 10px;\">\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 class=\"content-cell\" *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 .header-cell{height:20px}app-beheer-translate .content-cell{vertical-align:top}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 });
|
|
378
378
|
}
|
|
379
379
|
export { BeheerTranslateComponent };
|
|
380
380
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerTranslateComponent, decorators: [{
|
|
381
381
|
type: Component,
|
|
382
|
-
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\r\n <div>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Item</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedChoice\" (selectionChange)=\"UpdateChoice()\">\r\n <mat-option *ngFor=\"let choice of PossibleChoices\" [value]=\"choice\">\r\n {{ choice.text }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <button mat-raised-button (click)=\"ShowParameters()\" class=\"save-button\">\r\n Parameters\r\n </button>\r\n </div>\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\" style=\"height: 100%;\">\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\" style=\"height: calc(100% - 48px);\">\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 style=\"height: 100%;\">\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"] }]
|
|
382
|
+
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\r\n <div>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Item</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedChoice\" (selectionChange)=\"UpdateChoice()\">\r\n <mat-option *ngFor=\"let choice of PossibleChoices\" [value]=\"choice\">\r\n {{ choice.text }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <button mat-raised-button (click)=\"ShowParameters()\" class=\"save-button\">\r\n Parameters\r\n </button>\r\n </div>\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\" style=\"height: 100%;\">\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\" style=\"height: calc(100% - 48px);\">\r\n <tr>\r\n <ng-container *ngIf=\"IsHTML()\">\r\n <td class=\"cat-row header-cell\">\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 header-cell\" *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 style=\"height: 100%;\">\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 class=\"content-cell\" style=\"padding: 10px;\">\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 class=\"content-cell\" *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 .header-cell{height:20px}app-beheer-translate .content-cell{vertical-align:top}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"] }]
|
|
383
383
|
}], ctorParameters: function () { return [{ type: i1.TranslateApiClient }, { type: i2.AuthenticationService }, { type: i3.MatLegacySnackBar }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { tablediv: [{
|
|
384
384
|
type: ViewChild,
|
|
385
385
|
args: ['tablediv']
|
|
@@ -387,4 +387,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
387
387
|
type: ViewChild,
|
|
388
388
|
args: ['fileInput']
|
|
389
389
|
}] } });
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBeUQsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTWxKLE9BQU8sRUFBRSxrQkFBa0IsRUFBdUgsbUNBQW1DLEVBQXFELG1CQUFtQixFQUF3QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBcUQsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVuYyxNQU1hLHdCQUF3QjtJQWtEekI7SUFDQTtJQUNBO0lBQ0E7SUFwREgsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLHdCQUF3QixDQUEyQjtJQUNuRCxVQUFVLEdBQStDLElBQUksS0FBSyxFQUF1QyxDQUFDO0lBQzFHLGVBQWUsR0FBdUMsSUFBSSxLQUFLLEVBQStCLENBQUM7SUFDL0YsY0FBYyxDQUE4QjtJQUM1QyxxQkFBcUIsR0FBaUMsSUFBSSxDQUFDO0lBRTNELFNBQVMsR0FBVyxDQUFDLENBQUM7SUFDdEIsWUFBWSxHQUFXLENBQUMsQ0FBQztJQUN6QixhQUFhLEdBQVcsRUFBRSxDQUFDO0lBRWxDLElBQVcsbUJBQW1CO1FBQzVCLE9BQU8s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RSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUk7Nk1BMEJkLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFFRyxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMZWdhY3lQYWdlRXZlbnQgYXMgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXBhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdExlZ2FjeVNuYWNrQmFyIGFzIE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXNuYWNrLWJhcic7XHJcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3JDb25maWcgfSBmcm9tICdAa29sa292L2FuZ3VsYXItZWRpdG9yJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFNhdmVDaGFuZ2VzUmVxdWVzdCwgVXBsb2FkRXhwb3J0Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VzRW50cnlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc0tleVZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwsIENyZWF0ZUV4cG9ydFJlcXVlc3QsIENyZWF0ZUV4cG9ydFJlc3BvbnNlLCBMb2dpblJlc3BvbnNlTW9kZWwsIFJlYWRFeHBvcnRSZXF1ZXN0LCBUcmFuc2xhdGVBcGlDbGllbnQsIFRyYW5zbGF0ZUtleUNhdGVnb3J5Vmlld01vZGVsLCBUcmFuc2xhdGlvbkNhdGVnb3J5LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5IH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci10cmFuc2xhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iZWhlZXItdHJhbnNsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9iZWhlZXItdHJhbnNsYXRlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmVoZWVyVHJhbnNsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrIHtcclxuICBwdWJsaWMgTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIE9wZW5DaGFuZ2VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbDogQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsO1xyXG4gIHB1YmxpYyBBY3RpdmVTdWJzOiBBcnJheTxCZWhlZXJMYW5ndWFnZXNTdWJDYXRlZ29yeVZpZXdNb2RlbD4gPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWw+KCk7XHJcbiAgcHVibGljIFBvc3NpYmxlQ2hvaWNlczogQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsPiA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw+KCk7XHJcbiAgcHVibGljIFNlbGVjdGVkQ2hvaWNlOiBCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw7XHJcbiAgcHVibGljIFVwbG9hZEV4cG9ydFZpZXdNb2RlbDogVXBsb2FkRXhwb3J0Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHB1YmxpYyBwYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIGFtb3VudExlbmd0aDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgYW1vdW50UGVyUGFnZTogbnVtYmVyID0gMTA7XHJcblxyXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbDogQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbDogQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZCgndGFibGVkaXYnKSB0YWJsZWRpdjogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0OiBFbGVtZW50UmVmO1xyXG5cclxuICBlZGl0b3JDb25maWc6IEFuZ3VsYXJFZGl0b3JDb25maWcgPSB7XHJcbiAgICBlZGl0YWJsZTogdHJ1ZSxcclxuICAgIHNwZWxsY2hlY2s6IGZhbHNlLFxyXG4gICAgaGVpZ2h0OiAnYXV0bycsXHJcbiAgICBtaW5IZWlnaHQ6ICcwJyxcclxuICAgIG1heEhlaWdodDogJ2F1dG8nLFxyXG4gICAgd2lkdGg6ICdhdXRvJyxcclxuICAgIG1pbldpZHRoOiAnMCcsXHJcbiAgICB0cmFuc2xhdGU6ICdubycsXHJcbiAgICBlbmFibGVUb29sYmFyOiB0cnVlLFxyXG4gICAgc2hvd1Rvb2xiYXI6IHRydWUsXHJcbiAgICBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOiAnJyxcclxuICAgIGRlZmF1bHRGb250TmFtZTogJycsXHJcbiAgICBkZWZhdWx0Rm9udFNpemU6ICcnLFxyXG4gICAgc2FuaXRpemU6IHRydWUsXHJcbiAgICB0b29sYmFyUG9zaXRpb246ICd0b3AnLFxyXG4gICAgdG9vbGJhckhpZGRlbkJ1dHRvbnM6IFtcclxuICAgICAgWydmb250TmFtZSddXHJcbiAgICBdXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIFRyYW5zbGF0ZUFwaUNsaWVudDogVHJhbnNsYXRlQXBpQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxyXG4gICAgcHJpdmF0ZSBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcclxuICAgIHRoaXMuUmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLlJlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRUcmFuc2xhdGlvbnModGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVQYWdlRXZlbnQoZTogUGFnZUV2ZW50KSB7XHJcbiAgICAvL3RoaXMucGFnZUV2ZW50ID0gZTtcclxuICAgIC8vdGhpcy5sZW5ndGggPSBlLmxlbmd0aDtcclxuICAgIC8vdGhpcy5wYWdlU2l6ZSA9IGUucGFnZVNpemU7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IGUucGFnZUluZGV4O1xyXG5cclxuICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dQYXJhbWV0ZXJzKCk6IHZvaWQge1xyXG4gICAgdmFyIGFsbHBhcmFtZXRlcnMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG4gICAgdmFyIGh0bWwgPSBcIlwiO1xyXG5cclxuICAgIHZhciBlbnRyaWVzID0gdGhpcy5TZWxlY3RlZENob2ljZS5lbnRyaWVzO1xyXG5cclxuICAgIGlmIChlbnRyaWVzICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGVudHJpZXNbaV0ubGFuZ3VhZ2VJZCA9PSB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWw/LmlkKSB7XHJcbiAgICAgICAgICBodG1sID0gZW50cmllc1tpXS52YWx1ZSArIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGVuZCA9IGZhbHNlO1xyXG4gICAgdmFyIGluZGV4ID0gMDtcclxuXHJcbiAgICB3aGlsZSAoIWVuZCkge1xyXG4gICAgICB2YXIgcG9zID0gaHRtbC5pbmRleE9mKFwiI3tcIiwgaW5kZXgpO1xyXG5cclxuICAgICAgaWYgKHBvcyA+IDApIHtcclxuICAgICAgICBpbmRleCA9IHBvcztcclxuXHJcbiAgICAgICAgdmFyIGVuZHBvcyA9IGh0bWwuaW5kZXhPZihcIn0jXCIsIGluZGV4KTtcclxuXHJcbiAgICAgICAgaWYgKGVuZHBvcyA+IDApIHtcclxuICAgICAgICAgIGFsbHBhcmFtZXRlcnMucHVzaChodG1sLnN1YnN0cmluZyhwb3MgKyAyLCBlbmRwb3MpKTtcclxuXHJcbiAgICAgICAgICBpbmRleCA9IGVuZHBvcztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBlbmQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBlbmQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHRleHQgPSBcIlBhcmFtZXRlcnM6IFwiO1xyXG4gICAgdmFyIHVuaXF1ZXBhcmFtZXRlcnMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxscGFyYW1ldGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodW5pcXVlcGFyYW1ldGVycy5pbmRleE9mKGFsbHBhcmFtZXRlcnNbaV0pID09IC0xKSB7XHJcbiAgICAgICAgdW5pcXVlcGFyYW1ldGVycy5wdXNoKGFsbHBhcmFtZXRlcnNbaV0pO1xyXG4gICAgICAgIHRleHQgKz0gYWxscGFyYW1ldGVyc1tpXSArIFwiLCBcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFsZXJ0KHRleHQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlZnJlc2hQYWdpbmF0b3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFtb3VudExlbmd0aCA9IDA7XHJcbiAgICB0aGlzLkFjdGl2ZVN1YnMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWw+KCk7XHJcbiAgICB0aGlzLlBvc3NpYmxlQ2hvaWNlcyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw+KCk7XHJcblxyXG4gICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLnBhZ2VJbmRleCAqIHRoaXMuYW1vdW50UGVyUGFnZTtcclxuICAgIHZhciBlbmRJbmRleCA9ICh0aGlzLnBhZ2VJbmRleCArIDEpICogdGhpcy5hbW91bnRQZXJQYWdlO1xyXG4gICAgdmFyIGl0ZW1zYWRkZWQgPSAwO1xyXG5cclxuICAgIGlmICh0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG5cclxuICAgICAgdmFyIHN1YmNhdHMgPSB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwuc3ViQ2F0ZWdvcmllcztcclxuXHJcbiAgICAgIGlmIChzdWJjYXRzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YmNhdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHZhciBrZXlzID0gc3ViY2F0c1tpXS5rZXlzO1xyXG5cclxuICAgICAgICAgIGlmIChrZXlzICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHZhciBzdWJjYXQ6IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyBqKyspIHtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYW1vdW50TGVuZ3RoID49IHN0YXJ0SW5kZXggJiYgdGhpcy5hbW91bnRMZW5ndGggPCBlbmRJbmRleCAmJiBpdGVtc2FkZGVkIDwgdGhpcy5hbW91bnRQZXJQYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3ViY2F0ID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0ID0gbmV3IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsKCk7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5ID0gc3ViY2F0c1tpXS50cmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQuaHRtbCA9IHN1YmNhdHNbaV0uaHRtbDtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0LmtleXMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsPigpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5BY3RpdmVTdWJzLnB1c2goc3ViY2F0KTtcclxuICAgICAgICAgICAgICAgICAgaXRlbXNhZGRlZCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdWJjYXQ/LmtleXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQua2V5cy5wdXNoKGtleXNbal0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuU2VsZWN0ZWRDaG9pY2UgPSBrZXlzW2pdO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5Qb3NzaWJsZUNob2ljZXMucHVzaChrZXlzW2pdKTtcclxuICAgICAgICAgICAgICB0aGlzLmFtb3VudExlbmd0aCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVXBkYXRlQ2hvaWNlKCk6IHZvaWQge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLlBvc3NpYmxlQ2hvaWNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5Qb3NzaWJsZUNob2ljZXNbaV0gPT0gdGhpcy5TZWxlY3RlZENob2ljZSkge1xyXG4gICAgICAgIHRoaXMucGFnZUluZGV4ID0gaTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlc2l6ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYmxlZGl2Py5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5Jc0hUTUwoKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmFtb3VudFBlclBhZ2UgIT0gMSkge1xyXG4gICAgICAgICAgdGhpcy5hbW91bnRQZXJQYWdlID0gMTtcclxuXHJcbiAgICAgICAgICB0aGlzLmVkaXRvckNvbmZpZy5oZWlnaHQgPSBNYXRoLmZsb29yKHRoaXMudGFibGVkaXY/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodCAtIDQwMCkgKyBcInB4XCI7XHJcblxyXG4gICAgICAgICAgdGhpcy5SZWZyZXNoUGFnaW5hdG9yKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBpdGVtY291bnQgPSBNYXRoLmZsb29yKChwYXJzZUludCh0aGlzLnRhYmxlZGl2Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSAtIDI1MCkgLyA1Nyk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtY291bnQgPiAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5hbW91bnRQZXJQYWdlICE9IGl0ZW1jb3VudCkge1xyXG4gICAgICAgICAgICB0aGlzLmFtb3VudFBlclBhZ2UgPSBpdGVtY291bnQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLlJlZnJlc2hQYWdpbmF0b3IoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRFbnRyeShlbnRyaWVzOiBCZWhlZXJMYW5ndWFnZXNFbnRyeVZpZXdNb2RlbFtdLCBsYW5ndWFnZTogQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwpOiBCZWhlZXJMYW5ndWFnZXNFbnRyeVZpZXdNb2RlbCB8IG51bGwge1xyXG4gICAgaWYgKGVudHJpZXMuZW50cmllcyAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChlbnRyaWVzW2ldLmxhbmd1YWdlSWQgPT0gbGFuZ3VhZ2UuaWQpIHtcclxuICAgICAgICAgIHJldHVybiBlbnRyaWVzW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIExvYWRUcmFuc2xhdGlvbnMoQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC5nZXRCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSkuc3Vic2NyaWJlKChtb2RlbDogQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsKSA9PiB7XHJcbiAgICAgIHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgICBpZiAodGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwuY2F0ZWdvcmllcyAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsID0gdGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwuY2F0ZWdvcmllc1swXTtcclxuICAgICAgICB0aGlzLlJlZnJlc2hQYWdpbmF0b3IoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZEJlaGVlckxhbmd1YWdlVmlld01vZGVsID0gdGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzWzBdO1xyXG4gICAgICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubG9naW5SZXNwb25zZU1vZGVsID0gbmV3IExvZ2luUmVzcG9uc2VNb2RlbCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlKTtcclxuXHJcbiAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC5zYXZlQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsKHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5PcGVuQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRG93bmxvYWRFeGNlbCgpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5vcGVuKCcvRG93bmxvYWQvQ3JlYXRlVHJhbnNsYXRpb25zRXhjZWwnLCAnX2JsYW5rJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVXBsb2FkRXhjZWwoKTogdm9pZCB7XHJcbiAgICBsZXQgaW5wdXRFbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpbnB1dEVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBDYW5jZWxDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5VcGxvYWRFeHBvcnRWaWV3TW9kZWwgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNhdmVDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBTYXZlQ2hhbmdlc1JlcXVlc3QoKTtcclxuXHJcbiAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcbiAgICBpZiAodGhpcy5VcGxvYWRFeHBvcnRWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICByZXF1ZXN0LnVwbG9hZEV4cG9ydFZpZXdNb2RlbCA9IHRoaXMuVXBsb2FkRXhwb3J0Vmlld01vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LnNhdmVDaGFuZ2VzKHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuVXBsb2FkRXhwb3J0Vmlld01vZGVsID0gbnVsbDtcclxuICAgICAgdGhpcy5Mb2FkVHJhbnNsYXRpb25zKHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEhhbmRsZShldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG5cclxuICAgIGlmIChmaWxlKSB7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQudXBsb2FkRXhwb3J0KHsgZGF0YTogZmlsZSwgZmlsZU5hbWU6IGZpbGUubmFtZSB9KS5zdWJzY3JpYmUoKG1vZGVsOiBVcGxvYWRFeHBvcnRWaWV3TW9kZWwpID0+IHtcclxuICAgICAgICB0aGlzLlVwbG9hZEV4cG9ydFZpZXdNb2RlbCA9IG1vZGVsO1xyXG4gICAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIFVwZGF0ZUNoYW5nZWQoZW50cnk6IEJlaGVlckxhbmd1YWdlc0VudHJ5Vmlld01vZGVsKTogdm9pZCB7XHJcbiAgICBlbnRyeS5jaGFuZ2VkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLlNob3dTbmFja0JhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dTbmFja0JhcigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5PcGVuQ2hhbmdlcykge1xyXG4gICAgICB0aGlzLk9wZW5DaGFuZ2VzID0gdHJ1ZTtcclxuXHJcbiAgICAgIHZhciBzbmFjayA9IHRoaXMuc25hY2tCYXIub3BlbihcIlVuc2F2ZWQgY2hhbmdlcy4uLlwiLCBcIlNhdmVcIik7XHJcblxyXG4gICAgICBzbmFjay5vbkFjdGlvbigpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5TYXZlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEV4cG9ydCgpOiB2b2lkIHtcclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IENyZWF0ZUV4cG9ydFJlcXVlc3QoKTtcclxuXHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQuY3JlYXRlRXhwb3J0KHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IENyZWF0ZUV4cG9ydFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KG1vZGVsLnVybCk7XHJcblxyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBJbXBvcnQoKTogdm9pZCB7XHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZWFkRXhwb3J0UmVxdWVzdCgpO1xyXG5cclxuXHJcbiAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC5yZWFkRXhwb3J0KHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcblxyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBJc0hUTUwoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5TZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgdmFyIHN1YmNhdHMgPSB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwuc3ViQ2F0ZWdvcmllcztcclxuXHJcbiAgICAgIGlmIChzdWJjYXRzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YmNhdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChzdWJjYXRzW2ldLmh0bWwpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93Q2hhbmdlcygpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLlVwbG9hZEV4cG9ydFZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuVXBsb2FkRXhwb3J0Vmlld01vZGVsLmNoYW5nZXMgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5VcGxvYWRFeHBvcnRWaWV3TW9kZWwuY2hhbmdlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0TGFuZ3VhZ2VDb3VudCgpOiBudW1iZXIge1xyXG4gICAgdmFyIGNvdW50ID0gMDtcclxuICAgIGlmICh0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBsYW5ndWFnZXMgPSB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXM7XHJcblxyXG4gICAgICBpZiAobGFuZ3VhZ2VzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhbmd1YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGxhbmd1YWdlc1tpXS5zZWxlY3RlZClcclxuICAgICAgICAgICAgY291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY291bnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0VGV4dCgpOiBzdHJpbmcge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLkFjdGl2ZVN1YnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIGtleXMgPSB0aGlzLkFjdGl2ZVN1YnNbaV0ua2V5cztcclxuXHJcbiAgICAgIGlmIChrZXlzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGtleXMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgIGlmIChrZXlzW2tdLnRleHQgIT0gbnVsbCAmJiBrZXlzW2tdLnRleHQgIT0gXCJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4ga2V5c1trXS50ZXh0ICsgXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcbn1cclxuIiwiPGFwcC1iZWhlZXItbmF2PjwvYXBwLWJlaGVlci1uYXY+XHJcblxyXG48YXBwLWZhYi1sb2FkZXIgKm5nSWY9XCJMb2FkaW5nXCI+PC9hcHAtZmFiLWxvYWRlcj5cclxuXHJcbjxkaXYgKm5nSWY9XCIhTG9hZGluZ1wiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhU2hvd0NoYW5nZXMoKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpc3BsYXlmbGV4XCIgI3RhYmxlZGl2ICh3aW5kb3c6cmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYWluLWJhclwiPlxyXG4gICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+R3JvdXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWxcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cInRoaXMucGFnZUluZGV4ID0gMDsgUmVmcmVzaFBhZ2luYXRvcigpOyBSZXNpemUoKTtcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjYXQgb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmNhdGVnb3JpZXNcIiBbdmFsdWVdPVwiY2F0XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0aW9uQ2F0ZWdvcnlbY2F0LnRyYW5zbGF0aW9uQ2F0ZWdvcnldIH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIUlzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImxhbmd1YWdlLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmYWItZmxhZyBbY291bnRyeV09XCJsYW5ndWFnZS5mbGFnXCI+PC9mYWItZmxhZz4ge3sgbGFuZ3VhZ2UubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIklzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhbmd1YWdlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWxcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNcIiBbdmFsdWVdPVwibGFuZ3VhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwibGFuZ3VhZ2UuZmxhZ1wiPjwvZmFiLWZsYWc+IHt7IGxhbmd1YWdlLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5JdGVtPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiU2VsZWN0ZWRDaG9pY2VcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIlVwZGF0ZUNob2ljZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGNob2ljZSBvZiBQb3NzaWJsZUNob2ljZXNcIiBbdmFsdWVdPVwiY2hvaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBjaG9pY2UudGV4dCB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiU2hvd1BhcmFtZXRlcnMoKVwiIGNsYXNzPVwic2F2ZS1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgUGFyYW1ldGVyc1xyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGJyIC8+PGJyIC8+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNhdmUoKVwiIGNsYXNzPVwic2F2ZS1idXR0b25cIiBbZGlzYWJsZWRdPVwiIU9wZW5DaGFuZ2VzXCI+XHJcbiAgICAgICAgICAgICAgU2F2ZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFJc0hUTUwoKVwiPlxyXG4gICAgICAgICAgICAgIDxiciAvPjxiciAvPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkRvd25sb2FkRXhjZWwoKVwiIGNsYXNzPVwic2F2ZS1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgIERvd25sb2FkIEV4Y2VsXHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJyIC8+PGJyIC8+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiVXBsb2FkRXhjZWwoKVwiIGNsYXNzPVwic2F2ZS1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgIFVwbG9hZCBFeGNlbFxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCAjZmlsZUlucHV0IHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiLnhscywueGxzeFwiIHN0eWxlPVwiZGlzcGxheTpub25lXCIgKGNoYW5nZSk9XCJIYW5kbGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICA8L21hdC1jYXJkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWFpbi1iYXIgZmxleGF1dG9cIj5cclxuICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXgtaGVpZ2h0XCI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCAhPSBudWxsXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgPGgxPlxyXG4gICAgICAgICAgICAgICAge3sgVHJhbnNsYXRpb25DYXRlZ29yeVtTZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsLnRyYW5zbGF0aW9uQ2F0ZWdvcnldIH19XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiR2V0VGV4dCgpICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICh7eyBHZXRUZXh0KCkgfX0pXHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2gxPlxyXG5cclxuICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJmdWxsLXdpZHRoXCIgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwJSAtIDQ4cHgpO1wiPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjYXQtcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwiU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbC5mbGFnXCI+PC9mYWItZmxhZz4ge3sgU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIUlzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCIgY2xhc3M9XCJjYXQtcm93XCI+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjYXQtcm93XCIgKm5nSWY9XCJsYW5ndWFnZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwibGFuZ3VhZ2UuZmxhZ1wiPjwvZmFiLWZsYWc+IHt7IGxhbmd1YWdlLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViY2F0IG9mIEFjdGl2ZVN1YnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrZXkgb2Ygc3ViY2F0LmtleXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlczsgaW5kZXggYXMgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImxhbmd1YWdlID09IFNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+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=
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBeUQsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTWxKLE9BQU8sRUFBRSxrQkFBa0IsRUFBdUgsbUNBQW1DLEVBQXFELG1CQUFtQixFQUF3QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBcUQsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVuYyxNQU1hLHdCQUF3QjtJQWtEekI7SUFDQTtJQUNBO0lBQ0E7SUFwREgsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLHdCQUF3QixDQUEyQjtJQUNuRCxVQUFVLEdBQStDLElBQUksS0FBSyxFQUF1QyxDQUFDO0lBQzFHLGVBQWUsR0FBdUMsSUFBSSxLQUFLLEVBQStCLENBQUM7SUFDL0YsY0FBYyxDQUE4QjtJQUM1QyxxQkFBcUIsR0FBaUMsSUFBSSxDQUFDO0lBRTNELFNBQVMsR0FBVyxDQUFDLENBQUM7SUFDdEIsWUFBWSxHQUFXLENBQUMsQ0FBQztJQUN6QixhQUFhLEdBQVcsRUFBRSxDQUFDO0lBRWxDLElBQVcsbUJBQW1CO1FBQzVCLE9BQU8s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RSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUk7Nk1BMEJkLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFFRyxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMZWdhY3lQYWdlRXZlbnQgYXMgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXBhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdExlZ2FjeVNuYWNrQmFyIGFzIE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXNuYWNrLWJhcic7XHJcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3JDb25maWcgfSBmcm9tICdAa29sa292L2FuZ3VsYXItZWRpdG9yJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFNhdmVDaGFuZ2VzUmVxdWVzdCwgVXBsb2FkRXhwb3J0Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VzRW50cnlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc0tleVZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCwgQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwsIENyZWF0ZUV4cG9ydFJlcXVlc3QsIENyZWF0ZUV4cG9ydFJlc3BvbnNlLCBMb2dpblJlc3BvbnNlTW9kZWwsIFJlYWRFeHBvcnRSZXF1ZXN0LCBUcmFuc2xhdGVBcGlDbGllbnQsIFRyYW5zbGF0ZUtleUNhdGVnb3J5Vmlld01vZGVsLCBUcmFuc2xhdGlvbkNhdGVnb3J5LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5IH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci10cmFuc2xhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iZWhlZXItdHJhbnNsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9iZWhlZXItdHJhbnNsYXRlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmVoZWVyVHJhbnNsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrIHtcclxuICBwdWJsaWMgTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIE9wZW5DaGFuZ2VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbDogQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsO1xyXG4gIHB1YmxpYyBBY3RpdmVTdWJzOiBBcnJheTxCZWhlZXJMYW5ndWFnZXNTdWJDYXRlZ29yeVZpZXdNb2RlbD4gPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWw+KCk7XHJcbiAgcHVibGljIFBvc3NpYmxlQ2hvaWNlczogQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsPiA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw+KCk7XHJcbiAgcHVibGljIFNlbGVjdGVkQ2hvaWNlOiBCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw7XHJcbiAgcHVibGljIFVwbG9hZEV4cG9ydFZpZXdNb2RlbDogVXBsb2FkRXhwb3J0Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHB1YmxpYyBwYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIGFtb3VudExlbmd0aDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgYW1vdW50UGVyUGFnZTogbnVtYmVyID0gMTA7XHJcblxyXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbDogQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbDogQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZCgndGFibGVkaXYnKSB0YWJsZWRpdjogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0OiBFbGVtZW50UmVmO1xyXG5cclxuICBlZGl0b3JDb25maWc6IEFuZ3VsYXJFZGl0b3JDb25maWcgPSB7XHJcbiAgICBlZGl0YWJsZTogdHJ1ZSxcclxuICAgIHNwZWxsY2hlY2s6IGZhbHNlLFxyXG4gICAgaGVpZ2h0OiAnYXV0bycsXHJcbiAgICBtaW5IZWlnaHQ6ICcwJyxcclxuICAgIG1heEhlaWdodDogJ2F1dG8nLFxyXG4gICAgd2lkdGg6ICdhdXRvJyxcclxuICAgIG1pbldpZHRoOiAnMCcsXHJcbiAgICB0cmFuc2xhdGU6ICdubycsXHJcbiAgICBlbmFibGVUb29sYmFyOiB0cnVlLFxyXG4gICAgc2hvd1Rvb2xiYXI6IHRydWUsXHJcbiAgICBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOiAnJyxcclxuICAgIGRlZmF1bHRGb250TmFtZTogJycsXHJcbiAgICBkZWZhdWx0Rm9udFNpemU6ICcnLFxyXG4gICAgc2FuaXRpemU6IHRydWUsXHJcbiAgICB0b29sYmFyUG9zaXRpb246ICd0b3AnLFxyXG4gICAgdG9vbGJhckhpZGRlbkJ1dHRvbnM6IFtcclxuICAgICAgWydmb250TmFtZSddXHJcbiAgICBdXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIFRyYW5zbGF0ZUFwaUNsaWVudDogVHJhbnNsYXRlQXBpQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxyXG4gICAgcHJpdmF0ZSBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcclxuICAgIHRoaXMuUmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLlJlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRUcmFuc2xhdGlvbnModGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVQYWdlRXZlbnQoZTogUGFnZUV2ZW50KSB7XHJcbiAgICAvL3RoaXMucGFnZUV2ZW50ID0gZTtcclxuICAgIC8vdGhpcy5sZW5ndGggPSBlLmxlbmd0aDtcclxuICAgIC8vdGhpcy5wYWdlU2l6ZSA9IGUucGFnZVNpemU7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IGUucGFnZUluZGV4O1xyXG5cclxuICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dQYXJhbWV0ZXJzKCk6IHZvaWQge1xyXG4gICAgdmFyIGFsbHBhcmFtZXRlcnMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG4gICAgdmFyIGh0bWwgPSBcIlwiO1xyXG5cclxuICAgIHZhciBlbnRyaWVzID0gdGhpcy5TZWxlY3RlZENob2ljZS5lbnRyaWVzO1xyXG5cclxuICAgIGlmIChlbnRyaWVzICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGVudHJpZXNbaV0ubGFuZ3VhZ2VJZCA9PSB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWw/LmlkKSB7XHJcbiAgICAgICAgICBodG1sID0gZW50cmllc1tpXS52YWx1ZSArIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGVuZCA9IGZhbHNlO1xyXG4gICAgdmFyIGluZGV4ID0gMDtcclxuXHJcbiAgICB3aGlsZSAoIWVuZCkge1xyXG4gICAgICB2YXIgcG9zID0gaHRtbC5pbmRleE9mKFwiI3tcIiwgaW5kZXgpO1xyXG5cclxuICAgICAgaWYgKHBvcyA+IDApIHtcclxuICAgICAgICBpbmRleCA9IHBvcztcclxuXHJcbiAgICAgICAgdmFyIGVuZHBvcyA9IGh0bWwuaW5kZXhPZihcIn0jXCIsIGluZGV4KTtcclxuXHJcbiAgICAgICAgaWYgKGVuZHBvcyA+IDApIHtcclxuICAgICAgICAgIGFsbHBhcmFtZXRlcnMucHVzaChodG1sLnN1YnN0cmluZyhwb3MgKyAyLCBlbmRwb3MpKTtcclxuXHJcbiAgICAgICAgICBpbmRleCA9IGVuZHBvcztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBlbmQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBlbmQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHRleHQgPSBcIlBhcmFtZXRlcnM6IFwiO1xyXG4gICAgdmFyIHVuaXF1ZXBhcmFtZXRlcnMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxscGFyYW1ldGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodW5pcXVlcGFyYW1ldGVycy5pbmRleE9mKGFsbHBhcmFtZXRlcnNbaV0pID09IC0xKSB7XHJcbiAgICAgICAgdW5pcXVlcGFyYW1ldGVycy5wdXNoKGFsbHBhcmFtZXRlcnNbaV0pO1xyXG4gICAgICAgIHRleHQgKz0gYWxscGFyYW1ldGVyc1tpXSArIFwiLCBcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFsZXJ0KHRleHQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlZnJlc2hQYWdpbmF0b3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFtb3VudExlbmd0aCA9IDA7XHJcbiAgICB0aGlzLkFjdGl2ZVN1YnMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWw+KCk7XHJcbiAgICB0aGlzLlBvc3NpYmxlQ2hvaWNlcyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw+KCk7XHJcblxyXG4gICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLnBhZ2VJbmRleCAqIHRoaXMuYW1vdW50UGVyUGFnZTtcclxuICAgIHZhciBlbmRJbmRleCA9ICh0aGlzLnBhZ2VJbmRleCArIDEpICogdGhpcy5hbW91bnRQZXJQYWdlO1xyXG4gICAgdmFyIGl0ZW1zYWRkZWQgPSAwO1xyXG5cclxuICAgIGlmICh0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG5cclxuICAgICAgdmFyIHN1YmNhdHMgPSB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwuc3ViQ2F0ZWdvcmllcztcclxuXHJcbiAgICAgIGlmIChzdWJjYXRzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YmNhdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHZhciBrZXlzID0gc3ViY2F0c1tpXS5rZXlzO1xyXG5cclxuICAgICAgICAgIGlmIChrZXlzICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHZhciBzdWJjYXQ6IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyBqKyspIHtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYW1vdW50TGVuZ3RoID49IHN0YXJ0SW5kZXggJiYgdGhpcy5hbW91bnRMZW5ndGggPCBlbmRJbmRleCAmJiBpdGVtc2FkZGVkIDwgdGhpcy5hbW91bnRQZXJQYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3ViY2F0ID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0ID0gbmV3IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsKCk7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5ID0gc3ViY2F0c1tpXS50cmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQuaHRtbCA9IHN1YmNhdHNbaV0uaHRtbDtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0LmtleXMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsPigpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5BY3RpdmVTdWJzLnB1c2goc3ViY2F0KTtcclxuICAgICAgICAgICAgICAgICAgaXRlbXNhZGRlZCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdWJjYXQ/LmtleXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQua2V5cy5wdXNoKGtleXNbal0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuU2VsZWN0ZWRDaG9pY2UgPSBrZXlzW2pdO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5Qb3NzaWJsZUNob2ljZXMucHVzaChrZXlzW2pdKTtcclxuICAgICAgICAgICAgICB0aGlzLmFtb3VudExlbmd0aCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVXBkYXRlQ2hvaWNlKCk6IHZvaWQge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLlBvc3NpYmxlQ2hvaWNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5Qb3NzaWJsZUNob2ljZXNbaV0gPT0gdGhpcy5TZWxlY3RlZENob2ljZSkge1xyXG4gICAgICAgIHRoaXMucGFnZUluZGV4ID0gaTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlc2l6ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYmxlZGl2Py5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5Jc0hUTUwoKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmFtb3VudFBlclBhZ2UgIT0gMSkge1xyXG4gICAgICAgICAgdGhpcy5hbW91bnRQZXJQYWdlID0gMTtcclxuXHJcbiAgICAgICAgICB0aGlzLmVkaXRvckNvbmZpZy5oZWlnaHQgPSBNYXRoLmZsb29yKHRoaXMudGFibGVkaXY/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodCAtIDQwMCkgKyBcInB4XCI7XHJcblxyXG4gICAgICAgICAgdGhpcy5SZWZyZXNoUGFnaW5hdG9yKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBpdGVtY291bnQgPSBNYXRoLmZsb29yKChwYXJzZUludCh0aGlzLnRhYmxlZGl2Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSAtIDI1MCkgLyA1Nyk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtY291bnQgPiAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5hbW91bnRQZXJQYWdlICE9IGl0ZW1jb3VudCkge1xyXG4gICAgICAgICAgICB0aGlzLmFtb3VudFBlclBhZ2UgPSBpdGVtY291bnQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLlJlZnJlc2hQYWdpbmF0b3IoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRFbnRyeShlbnRyaWVzOiBCZWhlZXJMYW5ndWFnZXNFbnRyeVZpZXdNb2RlbFtdLCBsYW5ndWFnZTogQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwpOiBCZWhlZXJMYW5ndWFnZXNFbnRyeVZpZXdNb2RlbCB8IG51bGwge1xyXG4gICAgaWYgKGVudHJpZXMuZW50cmllcyAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChlbnRyaWVzW2ldLmxhbmd1YWdlSWQgPT0gbGFuZ3VhZ2UuaWQpIHtcclxuICAgICAgICAgIHJldHVybiBlbnRyaWVzW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIExvYWRUcmFuc2xhdGlvbnMoQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC5nZXRCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSkuc3Vic2NyaWJlKChtb2RlbDogQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsKSA9PiB7XHJcbiAgICAgIHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgICBpZiAodGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwuY2F0ZWdvcmllcyAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsID0gdGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwuY2F0ZWdvcmllc1swXTtcclxuICAgICAgICB0aGlzLlJlZnJlc2hQYWdpbmF0b3IoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZEJlaGVlckxhbmd1YWdlVmlld01vZGVsID0gdGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzWzBdO1xyXG4gICAgICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubG9naW5SZXNwb25zZU1vZGVsID0gbmV3IExvZ2luUmVzcG9uc2VNb2RlbCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlKTtcclxuXHJcbiAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC5zYXZlQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsKHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5PcGVuQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRG93bmxvYWRFeGNlbCgpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5vcGVuKCcvRG93bmxvYWQvQ3JlYXRlVHJhbnNsYXRpb25zRXhjZWwnLCAnX2JsYW5rJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVXBsb2FkRXhjZWwoKTogdm9pZCB7XHJcbiAgICBsZXQgaW5wdXRFbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpbnB1dEVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBDYW5jZWxDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5VcGxvYWRFeHBvcnRWaWV3TW9kZWwgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNhdmVDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBTYXZlQ2hhbmdlc1JlcXVlc3QoKTtcclxuXHJcbiAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcbiAgICBpZiAodGhpcy5VcGxvYWRFeHBvcnRWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICByZXF1ZXN0LnVwbG9hZEV4cG9ydFZpZXdNb2RlbCA9IHRoaXMuVXBsb2FkRXhwb3J0Vmlld01vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LnNhdmVDaGFuZ2VzKHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuVXBsb2FkRXhwb3J0Vmlld01vZGVsID0gbnVsbDtcclxuICAgICAgdGhpcy5Mb2FkVHJhbnNsYXRpb25zKHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEhhbmRsZShldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG5cclxuICAgIGlmIChmaWxlKSB7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQudXBsb2FkRXhwb3J0KHsgZGF0YTogZmlsZSwgZmlsZU5hbWU6IGZpbGUubmFtZSB9KS5zdWJzY3JpYmUoKG1vZGVsOiBVcGxvYWRFeHBvcnRWaWV3TW9kZWwpID0+IHtcclxuICAgICAgICB0aGlzLlVwbG9hZEV4cG9ydFZpZXdNb2RlbCA9IG1vZGVsO1xyXG4gICAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIFVwZGF0ZUNoYW5nZWQoZW50cnk6IEJlaGVlckxhbmd1YWdlc0VudHJ5Vmlld01vZGVsKTogdm9pZCB7XHJcbiAgICBlbnRyeS5jaGFuZ2VkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLlNob3dTbmFja0JhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dTbmFja0JhcigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5PcGVuQ2hhbmdlcykge1xyXG4gICAgICB0aGlzLk9wZW5DaGFuZ2VzID0gdHJ1ZTtcclxuXHJcbiAgICAgIHZhciBzbmFjayA9IHRoaXMuc25hY2tCYXIub3BlbihcIlVuc2F2ZWQgY2hhbmdlcy4uLlwiLCBcIlNhdmVcIik7XHJcblxyXG4gICAgICBzbmFjay5vbkFjdGlvbigpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5TYXZlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEV4cG9ydCgpOiB2b2lkIHtcclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IENyZWF0ZUV4cG9ydFJlcXVlc3QoKTtcclxuXHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQuY3JlYXRlRXhwb3J0KHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IENyZWF0ZUV4cG9ydFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KG1vZGVsLnVybCk7XHJcblxyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBJbXBvcnQoKTogdm9pZCB7XHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZWFkRXhwb3J0UmVxdWVzdCgpO1xyXG5cclxuXHJcbiAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC5yZWFkRXhwb3J0KHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcblxyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBJc0hUTUwoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5TZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgdmFyIHN1YmNhdHMgPSB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwuc3ViQ2F0ZWdvcmllcztcclxuXHJcbiAgICAgIGlmIChzdWJjYXRzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YmNhdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChzdWJjYXRzW2ldLmh0bWwpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93Q2hhbmdlcygpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLlVwbG9hZEV4cG9ydFZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuVXBsb2FkRXhwb3J0Vmlld01vZGVsLmNoYW5nZXMgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5VcGxvYWRFeHBvcnRWaWV3TW9kZWwuY2hhbmdlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0TGFuZ3VhZ2VDb3VudCgpOiBudW1iZXIge1xyXG4gICAgdmFyIGNvdW50ID0gMDtcclxuICAgIGlmICh0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBsYW5ndWFnZXMgPSB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXM7XHJcblxyXG4gICAgICBpZiAobGFuZ3VhZ2VzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhbmd1YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGxhbmd1YWdlc1tpXS5zZWxlY3RlZClcclxuICAgICAgICAgICAgY291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY291bnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0VGV4dCgpOiBzdHJpbmcge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLkFjdGl2ZVN1YnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIGtleXMgPSB0aGlzLkFjdGl2ZVN1YnNbaV0ua2V5cztcclxuXHJcbiAgICAgIGlmIChrZXlzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGtleXMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgIGlmIChrZXlzW2tdLnRleHQgIT0gbnVsbCAmJiBrZXlzW2tdLnRleHQgIT0gXCJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4ga2V5c1trXS50ZXh0ICsgXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcbn1cclxuIiwiPGFwcC1iZWhlZXItbmF2PjwvYXBwLWJlaGVlci1uYXY+XHJcblxyXG48YXBwLWZhYi1sb2FkZXIgKm5nSWY9XCJMb2FkaW5nXCI+PC9hcHAtZmFiLWxvYWRlcj5cclxuXHJcbjxkaXYgKm5nSWY9XCIhTG9hZGluZ1wiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhU2hvd0NoYW5nZXMoKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpc3BsYXlmbGV4XCIgI3RhYmxlZGl2ICh3aW5kb3c6cmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYWluLWJhclwiPlxyXG4gICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+R3JvdXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWxcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cInRoaXMucGFnZUluZGV4ID0gMDsgUmVmcmVzaFBhZ2luYXRvcigpOyBSZXNpemUoKTtcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjYXQgb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmNhdGVnb3JpZXNcIiBbdmFsdWVdPVwiY2F0XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0aW9uQ2F0ZWdvcnlbY2F0LnRyYW5zbGF0aW9uQ2F0ZWdvcnldIH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIUlzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImxhbmd1YWdlLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmYWItZmxhZyBbY291bnRyeV09XCJsYW5ndWFnZS5mbGFnXCI+PC9mYWItZmxhZz4ge3sgbGFuZ3VhZ2UubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIklzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhbmd1YWdlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWxcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNcIiBbdmFsdWVdPVwibGFuZ3VhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwibGFuZ3VhZ2UuZmxhZ1wiPjwvZmFiLWZsYWc+IHt7IGxhbmd1YWdlLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5JdGVtPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiU2VsZWN0ZWRDaG9pY2VcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIlVwZGF0ZUNob2ljZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGNob2ljZSBvZiBQb3NzaWJsZUNob2ljZXNcIiBbdmFsdWVdPVwiY2hvaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBjaG9pY2UudGV4dCB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiU2hvd1BhcmFtZXRlcnMoKVwiIGNsYXNzPVwic2F2ZS1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgUGFyYW1ldGVyc1xyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGJyIC8+PGJyIC8+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNhdmUoKVwiIGNsYXNzPVwic2F2ZS1idXR0b25cIiBbZGlzYWJsZWRdPVwiIU9wZW5DaGFuZ2VzXCI+XHJcbiAgICAgICAgICAgICAgU2F2ZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFJc0hUTUwoKVwiPlxyXG4gICAgICAgICAgICAgIDxiciAvPjxiciAvPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkRvd25sb2FkRXhjZWwoKVwiIGNsYXNzPVwic2F2ZS1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgIERvd25sb2FkIEV4Y2VsXHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJyIC8+PGJyIC8+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiVXBsb2FkRXhjZWwoKVwiIGNsYXNzPVwic2F2ZS1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgIFVwbG9hZCBFeGNlbFxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCAjZmlsZUlucHV0IHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiLnhscywueGxzeFwiIHN0eWxlPVwiZGlzcGxheTpub25lXCIgKGNoYW5nZSk9XCJIYW5kbGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICA8L21hdC1jYXJkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWFpbi1iYXIgZmxleGF1dG9cIj5cclxuICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXgtaGVpZ2h0XCI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCAhPSBudWxsXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgPGgxPlxyXG4gICAgICAgICAgICAgICAge3sgVHJhbnNsYXRpb25DYXRlZ29yeVtTZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsLnRyYW5zbGF0aW9uQ2F0ZWdvcnldIH19XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiR2V0VGV4dCgpICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICh7eyBHZXRUZXh0KCkgfX0pXHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2gxPlxyXG5cclxuICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJmdWxsLXdpZHRoXCIgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwJSAtIDQ4cHgpO1wiPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjYXQtcm93IGhlYWRlci1jZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwiU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbC5mbGFnXCI+PC9mYWItZmxhZz4ge3sgU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIUlzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCIgY2xhc3M9XCJjYXQtcm93XCI+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjYXQtcm93IGhlYWRlci1jZWxsXCIgKm5nSWY9XCJsYW5ndWFnZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwibGFuZ3VhZ2UuZmxhZ1wiPjwvZmFiLWZsYWc+IHt7IGxhbmd1YWdlLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViY2F0IG9mIEFjdGl2ZVN1YnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrZXkgb2Ygc3ViY2F0LmtleXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlczsgaW5kZXggYXMgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImxhbmd1YWdlID09IFNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbmd1bGFyLWVkaXRvciBbY29uZmlnXT1cImVkaXRvckNvbmZpZ1wiIFsobmdNb2RlbCldPVwiR2V0RW50cnkoa2V5LmVudHJpZXMsIGxhbmd1YWdlKS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIlVwZGF0ZUNoYW5nZWQoR2V0RW50cnkoa2V5LmVudHJpZXMsIGxhbmd1YWdlKSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hbmd1bGFyLWVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViY2F0IG9mIEFjdGl2ZVN1YnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGtleSBvZiBzdWJjYXQua2V5c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY29udGVudC1jZWxsXCIgc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGlvblN1YkNhdGVnb3J5W3N1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5XSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwia2V5LnRleHQgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe3sga2V5LnRleHQgfX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlczsgaW5kZXggYXMgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjb250ZW50LWNlbGxcIiAqbmdJZj1cImxhbmd1YWdlLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJmdWxsd2lkdGhcIiAqbmdJZj1cIkdldEVudHJ5KGtleS5lbnRyaWVzLCBsYW5ndWFnZSkgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgVHJhbnNsYXRpb25TdWJDYXRlZ29yeVtzdWJjYXQudHJhbnNsYXRpb25TdWJDYXRlZ29yeV0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJHZXRFbnRyeShrZXkuZW50cmllcywgbGFuZ3VhZ2UpLnZhbHVlXCIgKGtleXVwKT1cIlVwZGF0ZUNoYW5nZWQoR2V0RW50cnkoa2V5LmVudHJpZXMsIGxhbmd1YWdlKSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPG1hdC1wYWdpbmF0b3IgI3BhZ2luYXRvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZSk9XCJoYW5kbGVQYWdlRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsZW5ndGhdPVwiYW1vdW50TGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cImFtb3VudFBlclBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlUGFnZVNpemVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGVjdCBwYWdlXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LXBhZ2luYXRvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPC9tYXQtY2FyZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJTaG93Q2hhbmdlcygpXCI+XHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYWluLWJhciBmbGV4YXV0b1wiPlxyXG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiQ2FuY2VsQ2hhbmdlcygpXCI+XHJcbiAgICAgICAgICBDYW5jZWxcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAmbmJzcDtcclxuICAgICAgICAmbmJzcDtcclxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJTYXZlQ2hhbmdlcygpXCI+XHJcbiAgICAgICAgICBTYXZlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgPGJyIC8+XHJcblxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImZ1bGx3aWR0aFwiIGNlbGxwYWRkaW5nPVwiMlwiIGNlbGxzcGFjaW5nPVwiMlwiPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGQ+PC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWJvdHRvbVwiIHN0eWxlPVwibWluLXdpZHRoOiAxMDBweDtcIj48Yj5MYW5ndWFnZTwvYj48L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYm90dG9tXCI+PGI+T2xkPC9iPjwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b21cIj48Yj5OZXc8L2I+PC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGNoYW5nZSBvZiB0aGlzLlVwbG9hZEV4cG9ydFZpZXdNb2RlbC5jaGFuZ2VzXCI+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IFsobmdNb2RlbCldPVwiY2hhbmdlLnNhdmVcIj5cclxuICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWJvdHRvbS1ncmV5XCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhbmd1YWdlLmlkID09IGNoYW5nZS5sYW5ndWFnZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmYWItZmxhZyBbY291bnRyeV09XCJsYW5ndWFnZS5mbGFnXCI+PC9mYWItZmxhZz4ge3sgbGFuZ3VhZ2UubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b20tZ3JleVwiPnt7IGNoYW5nZS5vbGRWYWx1ZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b20tZ3JleVwiPnt7IGNoYW5nZS5uZXdWYWx1ZSB9fTwvdGQ+XHJcblxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1jYXJkPlxyXG4gICAgPGJyIC8+XHJcbiAgICA8YnIgLz5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -67,12 +67,6 @@ class FabBreadcrumbComponent {
|
|
|
67
67
|
}
|
|
68
68
|
return false;
|
|
69
69
|
}
|
|
70
|
-
ShowBeheerLink() {
|
|
71
|
-
return this.FabrikantenService.FabrikantenSettingsViewModel?.activePipelineStep == "Development";
|
|
72
|
-
}
|
|
73
|
-
OpenBeheer() {
|
|
74
|
-
window.open("/beheer", "_blank");
|
|
75
|
-
}
|
|
76
70
|
HideBreadcrumb() {
|
|
77
71
|
if (this.FabrikantenService.FabrikantenSettingsViewModel != null) {
|
|
78
72
|
if (this.FabrikantenService.FabrikantenSettingsViewModel.hideBreadcrumbInIframe) {
|
|
@@ -84,13 +78,13 @@ class FabBreadcrumbComponent {
|
|
|
84
78
|
return false;
|
|
85
79
|
}
|
|
86
80
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FabBreadcrumbComponent, deps: [{ token: i1.MobileService }, { token: i2.FabrikantenService }, { token: i3.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
87
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FabBreadcrumbComponent, selector: "app-fab-breadcrumb", inputs: { showfiltermenubutton: "showfiltermenubutton" }, ngImport: i0, template: "<div class=\"header\" *ngIf=\"ShowHeader()\" [ngClass]=\"{'tinybutton': this.MobileService.MobileInterfaceTiny}\">\r\n <div *ngIf=\"ShowBack() && !HideBreadcrumb()\">\r\n <button class=\"buttonsize\" mat-stroked-button (click)=\"Back()\">\r\n <div class=\"header\" >\r\n <div class=\"header-back\">\r\n <mat-icon class=\"icon arrow_back\">arrow_back</mat-icon>\r\n </div>\r\n <div class=\"header-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Back) }}\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n <ng-container *ngIf=\"!MobileService.MobileInterface && !HideBreadcrumb()\">\r\n <ng-container *ngFor=\"let step of FabrikantenService.GetSteps()\">\r\n <div class=\"stepicon\">\r\n <mat-icon class=\"chevron_right\">chevron_right</mat-icon>\r\n </div>\r\n <div class=\"step\" (click)=\"UndoStep(step)\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Category, TranslationSubCategory.Name, step.id) }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"this.FabrikantenService.FabrikantenViewModel?.selectedProduct != null\">\r\n <div class=\"stepicon\">\r\n <mat-icon class=\"chevron_right\">chevron_right</mat-icon>\r\n </div>\r\n <div class=\"step\">\r\n <span *ngIf=\"FabrikantenService.GetSteps().length == 0\">Productconfiguratie: </span>{{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, FabrikantenService.FabrikantenViewModel?.selectedProduct?.id) }}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"MobileService.MobileInterface && showfiltermenubutton\">\r\n <button class=\"open-filters-button buttonsize\" mat-stroked-button (click)=\"MobileService.OpenNav()\">\r\n <div class=\"header\">\r\n <div class=\"header-back\">\r\n <mat-icon class=\"icon menu\">menu</mat-icon>\r\n </div>\r\n <div class=\"header-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.FilterMenu) }}\r\n </div>\r\n </div>\r\n </button>\r\n <div class=\"flexauto\">\r\n\r\n </div>\r\n <button class=\"open-filters-button buttonsize\" *ngIf=\"FabrikantenService.ShowActionMenu()\" mat-stroked-button (click)=\"MobileService.OpenAction()\">\r\n <div class=\"header\">\r\n <div class=\"header-back\">\r\n <mat-icon class=\"icon menu\">menu</mat-icon>\r\n </div>\r\n <div class=\"header-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.ActionMenu) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-container *ngIf=\"MobileService.MobileInterface && showfiltermenubutton && this.FabrikantenService.FabrikantenViewModel?.selectedProduct != null && !HideBreadcrumb()\">\r\n <div class=\"paddingleft step center\" (click)=\"Back()\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, FabrikantenService.FabrikantenViewModel?.selectedProduct?.id) }}\r\n </div>\r\n</ng-container>\r\n
|
|
81
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FabBreadcrumbComponent, selector: "app-fab-breadcrumb", inputs: { showfiltermenubutton: "showfiltermenubutton" }, ngImport: i0, template: "<div class=\"header\" *ngIf=\"ShowHeader()\" [ngClass]=\"{'tinybutton': this.MobileService.MobileInterfaceTiny}\">\r\n <div *ngIf=\"ShowBack() && !HideBreadcrumb()\">\r\n <button class=\"buttonsize\" mat-stroked-button (click)=\"Back()\">\r\n <div class=\"header\" >\r\n <div class=\"header-back\">\r\n <mat-icon class=\"icon arrow_back\">arrow_back</mat-icon>\r\n </div>\r\n <div class=\"header-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Back) }}\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n <ng-container *ngIf=\"!MobileService.MobileInterface && !HideBreadcrumb()\">\r\n <ng-container *ngFor=\"let step of FabrikantenService.GetSteps()\">\r\n <div class=\"stepicon\">\r\n <mat-icon class=\"chevron_right\">chevron_right</mat-icon>\r\n </div>\r\n <div class=\"step\" (click)=\"UndoStep(step)\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Category, TranslationSubCategory.Name, step.id) }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"this.FabrikantenService.FabrikantenViewModel?.selectedProduct != null\">\r\n <div class=\"stepicon\">\r\n <mat-icon class=\"chevron_right\">chevron_right</mat-icon>\r\n </div>\r\n <div class=\"step\">\r\n <span *ngIf=\"FabrikantenService.GetSteps().length == 0\">Productconfiguratie: </span>{{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, FabrikantenService.FabrikantenViewModel?.selectedProduct?.id) }}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"MobileService.MobileInterface && showfiltermenubutton\">\r\n <button class=\"open-filters-button buttonsize\" mat-stroked-button (click)=\"MobileService.OpenNav()\">\r\n <div class=\"header\">\r\n <div class=\"header-back\">\r\n <mat-icon class=\"icon menu\">menu</mat-icon>\r\n </div>\r\n <div class=\"header-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.FilterMenu) }}\r\n </div>\r\n </div>\r\n </button>\r\n <div class=\"flexauto\">\r\n\r\n </div>\r\n <button class=\"open-filters-button buttonsize\" *ngIf=\"FabrikantenService.ShowActionMenu()\" mat-stroked-button (click)=\"MobileService.OpenAction()\">\r\n <div class=\"header\">\r\n <div class=\"header-back\">\r\n <mat-icon class=\"icon menu\">menu</mat-icon>\r\n </div>\r\n <div class=\"header-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.ActionMenu) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-container *ngIf=\"MobileService.MobileInterface && showfiltermenubutton && this.FabrikantenService.FabrikantenViewModel?.selectedProduct != null && !HideBreadcrumb()\">\r\n <div class=\"paddingleft step center\" (click)=\"Back()\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, FabrikantenService.FabrikantenViewModel?.selectedProduct?.id) }}\r\n </div>\r\n</ng-container>\r\n", styles: ["app-fab-breadcrumb .header{display:flex;padding:4px}app-fab-breadcrumb .center{text-align:center}app-fab-breadcrumb .tinybutton{padding:1px!important}app-fab-breadcrumb .tinybutton .header-title{text-transform:capitalize;font-size:12px!important;line-height:26px!important}app-fab-breadcrumb .tinybutton .mat-stroked-button{padding:0 8px!important}app-fab-breadcrumb .buttonsize{height:40px;line-height:25px}app-fab-breadcrumb .flexauto{flex:auto}app-fab-breadcrumb .fullwidth{width:100%}app-fab-breadcrumb .paddingleft{padding-left:5px}app-fab-breadcrumb .displayflex{display:flex}app-fab-breadcrumb .header-back{cursor:pointer}app-fab-breadcrumb .product-conf{padding-left:5px}app-fab-breadcrumb .open-filters-button{margin-left:5px}app-fab-breadcrumb .title{text-transform:capitalize;line-height:35px;font-size:30px;flex:auto;padding-left:5px}app-fab-breadcrumb .icon{position:relative;top:2px}app-fab-breadcrumb .header-title{text-transform:capitalize;font-size:16px;position:relative;top:2px;margin-left:3px}app-fab-breadcrumb .step{font-size:16px;vertical-align:middle;line-height:39px;font-family:Roboto;font-weight:500;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}app-fab-breadcrumb .step:first-letter{text-transform:capitalize}app-fab-breadcrumb .step:hover{text-decoration:underline}app-fab-breadcrumb .stepicon{padding-top:7px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.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: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
88
82
|
}
|
|
89
83
|
export { FabBreadcrumbComponent };
|
|
90
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FabBreadcrumbComponent, decorators: [{
|
|
91
85
|
type: Component,
|
|
92
|
-
args: [{ selector: 'app-fab-breadcrumb', encapsulation: ViewEncapsulation.None, template: "<div class=\"header\" *ngIf=\"ShowHeader()\" [ngClass]=\"{'tinybutton': this.MobileService.MobileInterfaceTiny}\">\r\n <div *ngIf=\"ShowBack() && !HideBreadcrumb()\">\r\n <button class=\"buttonsize\" mat-stroked-button (click)=\"Back()\">\r\n <div class=\"header\" >\r\n <div class=\"header-back\">\r\n <mat-icon class=\"icon arrow_back\">arrow_back</mat-icon>\r\n </div>\r\n <div class=\"header-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Back) }}\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n <ng-container *ngIf=\"!MobileService.MobileInterface && !HideBreadcrumb()\">\r\n <ng-container *ngFor=\"let step of FabrikantenService.GetSteps()\">\r\n <div class=\"stepicon\">\r\n <mat-icon class=\"chevron_right\">chevron_right</mat-icon>\r\n </div>\r\n <div class=\"step\" (click)=\"UndoStep(step)\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Category, TranslationSubCategory.Name, step.id) }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"this.FabrikantenService.FabrikantenViewModel?.selectedProduct != null\">\r\n <div class=\"stepicon\">\r\n <mat-icon class=\"chevron_right\">chevron_right</mat-icon>\r\n </div>\r\n <div class=\"step\">\r\n <span *ngIf=\"FabrikantenService.GetSteps().length == 0\">Productconfiguratie: </span>{{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, FabrikantenService.FabrikantenViewModel?.selectedProduct?.id) }}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"MobileService.MobileInterface && showfiltermenubutton\">\r\n <button class=\"open-filters-button buttonsize\" mat-stroked-button (click)=\"MobileService.OpenNav()\">\r\n <div class=\"header\">\r\n <div class=\"header-back\">\r\n <mat-icon class=\"icon menu\">menu</mat-icon>\r\n </div>\r\n <div class=\"header-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.FilterMenu) }}\r\n </div>\r\n </div>\r\n </button>\r\n <div class=\"flexauto\">\r\n\r\n </div>\r\n <button class=\"open-filters-button buttonsize\" *ngIf=\"FabrikantenService.ShowActionMenu()\" mat-stroked-button (click)=\"MobileService.OpenAction()\">\r\n <div class=\"header\">\r\n <div class=\"header-back\">\r\n <mat-icon class=\"icon menu\">menu</mat-icon>\r\n </div>\r\n <div class=\"header-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.ActionMenu) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-container *ngIf=\"MobileService.MobileInterface && showfiltermenubutton && this.FabrikantenService.FabrikantenViewModel?.selectedProduct != null && !HideBreadcrumb()\">\r\n <div class=\"paddingleft step center\" (click)=\"Back()\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, FabrikantenService.FabrikantenViewModel?.selectedProduct?.id) }}\r\n </div>\r\n</ng-container>\r\n
|
|
86
|
+
args: [{ selector: 'app-fab-breadcrumb', encapsulation: ViewEncapsulation.None, template: "<div class=\"header\" *ngIf=\"ShowHeader()\" [ngClass]=\"{'tinybutton': this.MobileService.MobileInterfaceTiny}\">\r\n <div *ngIf=\"ShowBack() && !HideBreadcrumb()\">\r\n <button class=\"buttonsize\" mat-stroked-button (click)=\"Back()\">\r\n <div class=\"header\" >\r\n <div class=\"header-back\">\r\n <mat-icon class=\"icon arrow_back\">arrow_back</mat-icon>\r\n </div>\r\n <div class=\"header-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Back) }}\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n <ng-container *ngIf=\"!MobileService.MobileInterface && !HideBreadcrumb()\">\r\n <ng-container *ngFor=\"let step of FabrikantenService.GetSteps()\">\r\n <div class=\"stepicon\">\r\n <mat-icon class=\"chevron_right\">chevron_right</mat-icon>\r\n </div>\r\n <div class=\"step\" (click)=\"UndoStep(step)\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Category, TranslationSubCategory.Name, step.id) }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"this.FabrikantenService.FabrikantenViewModel?.selectedProduct != null\">\r\n <div class=\"stepicon\">\r\n <mat-icon class=\"chevron_right\">chevron_right</mat-icon>\r\n </div>\r\n <div class=\"step\">\r\n <span *ngIf=\"FabrikantenService.GetSteps().length == 0\">Productconfiguratie: </span>{{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, FabrikantenService.FabrikantenViewModel?.selectedProduct?.id) }}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"MobileService.MobileInterface && showfiltermenubutton\">\r\n <button class=\"open-filters-button buttonsize\" mat-stroked-button (click)=\"MobileService.OpenNav()\">\r\n <div class=\"header\">\r\n <div class=\"header-back\">\r\n <mat-icon class=\"icon menu\">menu</mat-icon>\r\n </div>\r\n <div class=\"header-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.FilterMenu) }}\r\n </div>\r\n </div>\r\n </button>\r\n <div class=\"flexauto\">\r\n\r\n </div>\r\n <button class=\"open-filters-button buttonsize\" *ngIf=\"FabrikantenService.ShowActionMenu()\" mat-stroked-button (click)=\"MobileService.OpenAction()\">\r\n <div class=\"header\">\r\n <div class=\"header-back\">\r\n <mat-icon class=\"icon menu\">menu</mat-icon>\r\n </div>\r\n <div class=\"header-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.ActionMenu) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-container *ngIf=\"MobileService.MobileInterface && showfiltermenubutton && this.FabrikantenService.FabrikantenViewModel?.selectedProduct != null && !HideBreadcrumb()\">\r\n <div class=\"paddingleft step center\" (click)=\"Back()\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, FabrikantenService.FabrikantenViewModel?.selectedProduct?.id) }}\r\n </div>\r\n</ng-container>\r\n", styles: ["app-fab-breadcrumb .header{display:flex;padding:4px}app-fab-breadcrumb .center{text-align:center}app-fab-breadcrumb .tinybutton{padding:1px!important}app-fab-breadcrumb .tinybutton .header-title{text-transform:capitalize;font-size:12px!important;line-height:26px!important}app-fab-breadcrumb .tinybutton .mat-stroked-button{padding:0 8px!important}app-fab-breadcrumb .buttonsize{height:40px;line-height:25px}app-fab-breadcrumb .flexauto{flex:auto}app-fab-breadcrumb .fullwidth{width:100%}app-fab-breadcrumb .paddingleft{padding-left:5px}app-fab-breadcrumb .displayflex{display:flex}app-fab-breadcrumb .header-back{cursor:pointer}app-fab-breadcrumb .product-conf{padding-left:5px}app-fab-breadcrumb .open-filters-button{margin-left:5px}app-fab-breadcrumb .title{text-transform:capitalize;line-height:35px;font-size:30px;flex:auto;padding-left:5px}app-fab-breadcrumb .icon{position:relative;top:2px}app-fab-breadcrumb .header-title{text-transform:capitalize;font-size:16px;position:relative;top:2px;margin-left:3px}app-fab-breadcrumb .step{font-size:16px;vertical-align:middle;line-height:39px;font-family:Roboto;font-weight:500;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}app-fab-breadcrumb .step:first-letter{text-transform:capitalize}app-fab-breadcrumb .step:hover{text-decoration:underline}app-fab-breadcrumb .stepicon{padding-top:7px}\n"] }]
|
|
93
87
|
}], ctorParameters: function () { return [{ type: i1.MobileService }, { type: i2.FabrikantenService }, { type: i3.TranslateService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { showfiltermenubutton: [{
|
|
94
88
|
type: Input
|
|
95
89
|
}] } });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWJyZWFkY3J1bWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1icmVhZGNydW1iL2ZhYi1icmVhZGNydW1iLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItYnJlYWRjcnVtYi9mYWItYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBZ0IsS0FBSyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTdHLE9BQU8sRUFBZ0MsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7QUFFeEgsTUFNYSxzQkFBc0I7SUFheEI7SUFDQTtJQUNBO0lBQ0M7SUFkRCxvQkFBb0IsQ0FBVTtJQUV2QyxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLHNCQUFzQjtRQUMvQixPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUNTLGFBQTRCLEVBQzVCLGtCQUFzQyxFQUN0QyxnQkFBa0MsRUFDakMsaUJBQW9DO1FBSHJDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQUksQ0FBQztJQUVuRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN4RTthQUNJO1lBQ0gsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQy9DLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3BCLHlDQUF5QztnQkFDekMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ2pHO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sUUFBUSxDQUFDLFFBQXNDO1FBQ3BELG1GQUFtRjtRQUNuRixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsZUFBZSxJQUFJLElBQUksRUFBRTtZQUN6RSxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNsRCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQzdDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDakUsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ25FLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixFQUFFLGtCQUFrQixJQUFJLGFBQWEsQ0FBQztJQUNuRyxDQUFDO0lBRU0sVUFBVTtRQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixJQUFJLElBQUksRUFBRTtZQUNoRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxzQkFBc0IsRUFBRTtnQkFDL0UsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUU7b0JBQzlCLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2FBQ0Y7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt3R0F4RlUsc0JBQXNCOzRGQUF0QixzQkFBc0Isb0hDWm5DLDY2R0F3RUE7O1NENURhLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG9CQUFvQixpQkFHZixpQkFBaUIsQ0FBQyxJQUFJO29NQUk1QixvQkFBb0I7c0JBQTVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZhYnJpa2FudGVuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhYnJpa2FudGVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2JpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9iaWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGYWJyaWthbnRlbkNhdGVnb3J5Vmlld01vZGVsLCBUcmFuc2xhdGlvbkNhdGVnb3J5LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5IH0gZnJvbSAnLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWZhYi1icmVhZGNydW1iJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmFiLWJyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZhYi1icmVhZGNydW1iLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmFiQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dmaWx0ZXJtZW51YnV0dG9uOiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uQ2F0ZWdvcnkoKSB7XHJcbiAgICByZXR1cm4gVHJhbnNsYXRpb25DYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgTW9iaWxlU2VydmljZTogTW9iaWxlU2VydmljZSxcclxuICAgIHB1YmxpYyBGYWJyaWthbnRlblNlcnZpY2U6IEZhYnJpa2FudGVuU2VydmljZSxcclxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuTW9iaWxlU2VydmljZS5VcGRhdGVTY3JlZW5TaXplKHdpbmRvdy5pbm5lcldpZHRoLCB3aW5kb3cuaW5uZXJIZWlnaHQsIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEJhY2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuUmVtb3ZlUHJvZHVjdFNlbGVjdGlvbih0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB2YXIgYXJyYXkgPSB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5HZXRTdGVwcygpO1xyXG4gICAgICBpZiAoYXJyYXkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vdGhpcy5VbmRvU3RlcChhcnJheVthcnJheS5sZW5ndGggLSAxXSk7XHJcbiAgICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuUmVzZXRTZWxlY3Rpb25DYXRlZ29yeShhcnJheVthcnJheS5sZW5ndGggLSAxXSwgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBVbmRvU3RlcChjYXRlZ29yeTogRmFicmlrYW50ZW5DYXRlZ29yeVZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgLy90aGlzLkZhYnJpa2FudGVuU2VydmljZS5SZXNldFNlbGVjdGlvbkNhdGVnb3J5KGNhdGVnb3J5LCB0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5SZW1vdmVQcm9kdWN0U2VsZWN0aW9uKHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dCYWNrKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuR2V0U3RlcHMoKS5sZW5ndGggPT0gMCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd0hlYWRlcigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLlNob3dCYWNrKCkgJiYgIXRoaXMuSGlkZUJyZWFkY3J1bWIoKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuTW9iaWxlU2VydmljZS5Nb2JpbGVJbnRlcmZhY2UgJiYgIXRoaXMuSGlkZUJyZWFkY3J1bWIoKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5Nb2JpbGVTZXJ2aWNlLk1vYmlsZUludGVyZmFjZSAmJiB0aGlzLnNob3dmaWx0ZXJtZW51YnV0dG9uKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93QmVoZWVyTGluaygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsPy5hY3RpdmVQaXBlbGluZVN0ZXAgPT0gXCJEZXZlbG9wbWVudFwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIE9wZW5CZWhlZXIoKTogdm9pZCB7XHJcbiAgICB3aW5kb3cub3BlbihcIi9iZWhlZXJcIiwgXCJfYmxhbmtcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgSGlkZUJyZWFkY3J1bWIoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLmhpZGVCcmVhZGNydW1iSW5JZnJhbWUpIHtcclxuICAgICAgICBpZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImhlYWRlclwiICpuZ0lmPVwiU2hvd0hlYWRlcigpXCIgW25nQ2xhc3NdPVwieyd0aW55YnV0dG9uJzogdGhpcy5Nb2JpbGVTZXJ2aWNlLk1vYmlsZUludGVyZmFjZVRpbnl9XCI+XHJcbiAgPGRpdiAqbmdJZj1cIlNob3dCYWNrKCkgJiYgIUhpZGVCcmVhZGNydW1iKClcIj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25zaXplXCIgbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJCYWNrKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWJhY2tcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gYXJyb3dfYmFja1wiPmFycm93X2JhY2s8L21hdC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGl0bGVcIj5cclxuICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuQmFjaykgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIU1vYmlsZVNlcnZpY2UuTW9iaWxlSW50ZXJmYWNlICYmICFIaWRlQnJlYWRjcnVtYigpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdGVwIG9mIEZhYnJpa2FudGVuU2VydmljZS5HZXRTdGVwcygpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwaWNvblwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNoZXZyb25fcmlnaHRcIj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwXCIgKGNsaWNrKT1cIlVuZG9TdGVwKHN0ZXApXCI+XHJcbiAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNhdGVnb3J5LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIHN0ZXAuaWQpIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RlcGljb25cIj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjaGV2cm9uX3JpZ2h0XCI+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RlcFwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkdldFN0ZXBzKCkubGVuZ3RoID09IDBcIj5Qcm9kdWN0Y29uZmlndXJhdGllOiA8L3NwYW4+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LlByb2R1Y3QsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3Q/LmlkKSB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJNb2JpbGVTZXJ2aWNlLk1vYmlsZUludGVyZmFjZSAmJiBzaG93ZmlsdGVybWVudWJ1dHRvblwiPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cIm9wZW4tZmlsdGVycy1idXR0b24gYnV0dG9uc2l6ZVwiIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwiTW9iaWxlU2VydmljZS5PcGVuTmF2KClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItYmFja1wiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBtZW51XCI+bWVudTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aXRsZVwiPlxyXG4gICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5GaWx0ZXJNZW51KSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXhhdXRvXCI+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwib3Blbi1maWx0ZXJzLWJ1dHRvbiBidXR0b25zaXplXCIgKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuU2hvd0FjdGlvbk1lbnUoKVwiIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwiTW9iaWxlU2VydmljZS5PcGVuQWN0aW9uKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItYmFja1wiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBtZW51XCI+bWVudTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aXRsZVwiPlxyXG4gICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5BY3Rpb25NZW51KSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJNb2JpbGVTZXJ2aWNlLk1vYmlsZUludGVyZmFjZSAmJiBzaG93ZmlsdGVybWVudWJ1dHRvbiAmJiB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwgJiYgIUhpZGVCcmVhZGNydW1iKClcIj5cclxuICA8ZGl2IGNsYXNzPVwicGFkZGluZ2xlZnQgc3RlcCBjZW50ZXJcIiAoY2xpY2spPVwiQmFjaygpXCI+XHJcbiAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuUHJvZHVjdCwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5OYW1lLCBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlbGVjdGVkUHJvZHVjdD8uaWQpIH19XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dCZWhlZXJMaW5rKClcIj5cclxuICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IDJweDsgcmlnaHQ6IDJweDtcIj5cclxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJPcGVuQmVoZWVyKClcIj5cclxuICAgICAgQmVoZWVyXHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWJyZWFkY3J1bWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1icmVhZGNydW1iL2ZhYi1icmVhZGNydW1iLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItYnJlYWRjcnVtYi9mYWItYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBZ0IsS0FBSyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTdHLE9BQU8sRUFBZ0MsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7QUFFeEgsTUFNYSxzQkFBc0I7SUFheEI7SUFDQTtJQUNBO0lBQ0M7SUFkRCxvQkFBb0IsQ0FBVTtJQUV2QyxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLHNCQUFzQjtRQUMvQixPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUNTLGFBQTRCLEVBQzVCLGtCQUFzQyxFQUN0QyxnQkFBa0MsRUFDakMsaUJBQW9DO1FBSHJDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQUksQ0FBQztJQUVuRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN4RTthQUNJO1lBQ0gsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQy9DLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3BCLHlDQUF5QztnQkFDekMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ2pHO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sUUFBUSxDQUFDLFFBQXNDO1FBQ3BELG1GQUFtRjtRQUNuRixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsZUFBZSxJQUFJLElBQUksRUFBRTtZQUN6RSxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNsRCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQzdDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDakUsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ25FLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixJQUFJLElBQUksRUFBRTtZQUNoRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxzQkFBc0IsRUFBRTtnQkFDL0UsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUU7b0JBQzlCLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2FBQ0Y7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt3R0FoRlUsc0JBQXNCOzRGQUF0QixzQkFBc0Isb0hDWm5DLGlzR0FnRUE7O1NEcERhLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG9CQUFvQixpQkFHZixpQkFBaUIsQ0FBQyxJQUFJO29NQUk1QixvQkFBb0I7c0JBQTVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZhYnJpa2FudGVuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhYnJpa2FudGVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2JpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9iaWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGYWJyaWthbnRlbkNhdGVnb3J5Vmlld01vZGVsLCBUcmFuc2xhdGlvbkNhdGVnb3J5LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5IH0gZnJvbSAnLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWZhYi1icmVhZGNydW1iJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmFiLWJyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZhYi1icmVhZGNydW1iLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmFiQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dmaWx0ZXJtZW51YnV0dG9uOiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uQ2F0ZWdvcnkoKSB7XHJcbiAgICByZXR1cm4gVHJhbnNsYXRpb25DYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgTW9iaWxlU2VydmljZTogTW9iaWxlU2VydmljZSxcclxuICAgIHB1YmxpYyBGYWJyaWthbnRlblNlcnZpY2U6IEZhYnJpa2FudGVuU2VydmljZSxcclxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuTW9iaWxlU2VydmljZS5VcGRhdGVTY3JlZW5TaXplKHdpbmRvdy5pbm5lcldpZHRoLCB3aW5kb3cuaW5uZXJIZWlnaHQsIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEJhY2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuUmVtb3ZlUHJvZHVjdFNlbGVjdGlvbih0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB2YXIgYXJyYXkgPSB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5HZXRTdGVwcygpO1xyXG4gICAgICBpZiAoYXJyYXkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vdGhpcy5VbmRvU3RlcChhcnJheVthcnJheS5sZW5ndGggLSAxXSk7XHJcbiAgICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuUmVzZXRTZWxlY3Rpb25DYXRlZ29yeShhcnJheVthcnJheS5sZW5ndGggLSAxXSwgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBVbmRvU3RlcChjYXRlZ29yeTogRmFicmlrYW50ZW5DYXRlZ29yeVZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgLy90aGlzLkZhYnJpa2FudGVuU2VydmljZS5SZXNldFNlbGVjdGlvbkNhdGVnb3J5KGNhdGVnb3J5LCB0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5SZW1vdmVQcm9kdWN0U2VsZWN0aW9uKHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dCYWNrKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuR2V0U3RlcHMoKS5sZW5ndGggPT0gMCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd0hlYWRlcigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLlNob3dCYWNrKCkgJiYgIXRoaXMuSGlkZUJyZWFkY3J1bWIoKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuTW9iaWxlU2VydmljZS5Nb2JpbGVJbnRlcmZhY2UgJiYgIXRoaXMuSGlkZUJyZWFkY3J1bWIoKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5Nb2JpbGVTZXJ2aWNlLk1vYmlsZUludGVyZmFjZSAmJiB0aGlzLnNob3dmaWx0ZXJtZW51YnV0dG9uKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBIaWRlQnJlYWRjcnVtYigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuaGlkZUJyZWFkY3J1bWJJbklmcmFtZSkge1xyXG4gICAgICAgIGlmICh3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaGVhZGVyXCIgKm5nSWY9XCJTaG93SGVhZGVyKClcIiBbbmdDbGFzc109XCJ7J3RpbnlidXR0b24nOiB0aGlzLk1vYmlsZVNlcnZpY2UuTW9iaWxlSW50ZXJmYWNlVGlueX1cIj5cclxuICA8ZGl2ICpuZ0lmPVwiU2hvd0JhY2soKSAmJiAhSGlkZUJyZWFkY3J1bWIoKVwiPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbnNpemVcIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIkJhY2soKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCIgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItYmFja1wiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBhcnJvd19iYWNrXCI+YXJyb3dfYmFjazwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aXRsZVwiPlxyXG4gICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5CYWNrKSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhTW9iaWxlU2VydmljZS5Nb2JpbGVJbnRlcmZhY2UgJiYgIUhpZGVCcmVhZGNydW1iKClcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN0ZXAgb2YgRmFicmlrYW50ZW5TZXJ2aWNlLkdldFN0ZXBzKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXBpY29uXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2hldnJvbl9yaWdodFwiPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXBcIiAoY2xpY2spPVwiVW5kb1N0ZXAoc3RlcClcIj5cclxuICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ2F0ZWdvcnksIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgc3RlcC5pZCkgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlbGVjdGVkUHJvZHVjdCAhPSBudWxsXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwaWNvblwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNoZXZyb25fcmlnaHRcIj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuR2V0U3RlcHMoKS5sZW5ndGggPT0gMFwiPlByb2R1Y3Rjb25maWd1cmF0aWU6IDwvc3Bhbj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuUHJvZHVjdCwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5OYW1lLCBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlbGVjdGVkUHJvZHVjdD8uaWQpIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIk1vYmlsZVNlcnZpY2UuTW9iaWxlSW50ZXJmYWNlICYmIHNob3dmaWx0ZXJtZW51YnV0dG9uXCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwib3Blbi1maWx0ZXJzLWJ1dHRvbiBidXR0b25zaXplXCIgbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJNb2JpbGVTZXJ2aWNlLk9wZW5OYXYoKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1iYWNrXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIG1lbnVcIj5tZW51PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+XHJcbiAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkZpbHRlck1lbnUpIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleGF1dG9cIj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJvcGVuLWZpbHRlcnMtYnV0dG9uIGJ1dHRvbnNpemVcIiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5TaG93QWN0aW9uTWVudSgpXCIgbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJNb2JpbGVTZXJ2aWNlLk9wZW5BY3Rpb24oKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1iYWNrXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIG1lbnVcIj5tZW51PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+XHJcbiAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkFjdGlvbk1lbnUpIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIk1vYmlsZVNlcnZpY2UuTW9iaWxlSW50ZXJmYWNlICYmIHNob3dmaWx0ZXJtZW51YnV0dG9uICYmIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCAmJiAhSGlkZUJyZWFkY3J1bWIoKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJwYWRkaW5nbGVmdCBzdGVwIGNlbnRlclwiIChjbGljayk9XCJCYWNrKClcIj5cclxuICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Qcm9kdWN0LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIEZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0Py5pZCkgfX1cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|