@alfresco/aca-content 4.2.0-5658973841 → 4.2.0-5666038651
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/esm2020/folder-rules/manage-rules/manage-rules.smart-component.mjs +3 -3
- package/esm2020/lib/components/files/files.component.mjs +3 -3
- package/esm2020/lib/components/search/search-input/search-input.component.mjs +3 -3
- package/esm2020/lib/components/search/search-input-control/search-input-control.component.mjs +3 -3
- package/esm2020/lib/components/search/search-results-row/search-results-row.component.mjs +3 -3
- package/esm2020/lib/components/sidenav/components/expand-menu.component.mjs +3 -3
- package/esm2020/lib/components/sidenav/sidenav.component.mjs +3 -3
- package/esm2020/lib/components/trashcan/trashcan.component.mjs +3 -3
- package/esm2020/lib/components/view-profile/view-profile.component.mjs +3 -3
- package/fesm2015/alfresco-aca-content-folder-rules.mjs +2 -2
- package/fesm2015/alfresco-aca-content-folder-rules.mjs.map +1 -1
- package/fesm2015/alfresco-aca-content.mjs +16 -16
- package/fesm2015/alfresco-aca-content.mjs.map +1 -1
- package/fesm2020/alfresco-aca-content-folder-rules.mjs +2 -2
- package/fesm2020/alfresco-aca-content-folder-rules.mjs.map +1 -1
- package/fesm2020/alfresco-aca-content.mjs +16 -16
- package/fesm2020/alfresco-aca-content.mjs.map +1 -1
- package/package.json +1 -1
- package/ui/application.scss +0 -4
- package/ui/dynamic-theme/typography.scss +2 -2
- package/ui/mixins.scss +1 -1
- package/ui/overrides/adf-about.theme.scss +14 -12
- package/ui/overrides/adf-pagination.theme.scss +43 -41
- package/ui/overrides/adf-style-fixes.theme.scss +0 -4
- package/ui/overrides/ay11.scss +23 -19
- package/ui/theme.scss +31 -16
- package/ui/variables/variables.scss +1 -1
|
@@ -237,7 +237,7 @@ export class ManageRulesSmartComponent {
|
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
239
|
ManageRulesSmartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ManageRulesSmartComponent, deps: [{ token: i1.Location }, { token: i2.FolderRulesService }, { token: i3.ActivatedRoute }, { token: i4.MatDialog }, { token: i5.NotificationService }, { token: i6.ActionsService }, { token: i7.FolderRuleSetsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
240
|
-
ManageRulesSmartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: ManageRulesSmartComponent, isStandalone: true, selector: "aca-manage-rules", host: { classAttribute: "aca-manage-rules" }, ngImport: i0, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet]=\"mainRuleSet$ | async\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;width:unset!important;flex:1}.aca-manage-rules__actions-bar__buttons{display:flex;align-items:stretch;gap:12px}.aca-manage-rules__actions-bar .mat-slide-toggle-label{font-weight:600;font-size:14px}.aca-manage-rules__actions-bar .vertical-divider{height:50%;margin:0 12px}.aca-manage-rules__container{display:grid;grid-template-columns:minmax(250px,1fr) 3fr;padding:20px;gap:12px;overflow-y:auto;flex:1}.aca-manage-rules__container__rule-details{border:1px solid var(--theme-border-color);border-radius:12px;overflow-y:auto}.aca-manage-rules__container__rule-details__header{position:sticky;top:0;z-index:1;display:flex;flex-direction:row;align-items:flex-start;overflow-x:auto;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--theme-border-color);background-color:var(--theme-background-color);column-gap:20px}.aca-manage-rules__container__rule-details__header__title{display:flex;flex-direction:column;gap:4px;word-wrap:break-word;min-width:100px}.aca-manage-rules__container__rule-details__header__title__name{font-size:1.2em;font-weight:700}.aca-manage-rules__container__rule-details__header__title__description{font-size:.8em;font-style:italic}.aca-manage-rules__container__rule-details__header__buttons{display:flex;flex-direction:row;align-items:stretch;gap:4px}.aca-manage-rules__container__rule-details__header__buttons button{color:var(--theme-text-color)}.aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn{padding:0 8px;min-width:unset}.aca-manage-rules__container__rule-details__header__buttons button .mat-icon{overflow:hidden!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "component", type: PageLayoutComponent, selector: "aca-page-layout", inputs: ["hasError"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i5.ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: i5.ToolbarTitleComponent, selector: "adf-toolbar-title" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatButton, 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: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i12.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: RuleListUiComponent, selector: "aca-rule-list", inputs: ["mainRuleSet", "folderId", "inheritedRuleSets", "hasMoreRuleSets", "ruleSetsLoading", "selectedRule"], outputs: ["loadMoreRuleSets", "loadMoreRules", "selectRule", "ruleEnabledChanged", "ruleSetEditLinkClicked", "ruleSetUnlinkClicked"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "ngmodule", type: TemplateModule }, { kind: "component", type: i5.EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "component", type: GenericErrorComponent, selector: "aca-generic-error", inputs: ["text"] }, { kind: "component", type: RuleDetailsUiComponent, selector: "aca-rule-details", inputs: ["readOnly", "value", "preview", "actionDefinitions", "parameterConstraints", "nodeId"], outputs: ["formValidationChanged", "formValueChanged"] }, { kind: "ngmodule", type: MatDialogModule }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
|
240
|
+
ManageRulesSmartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: ManageRulesSmartComponent, isStandalone: true, selector: "aca-manage-rules", host: { classAttribute: "aca-manage-rules" }, ngImport: i0, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet]=\"mainRuleSet$ | async\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;flex:1}.aca-manage-rules__actions-bar__buttons{display:flex;align-items:stretch;gap:12px}.aca-manage-rules__actions-bar .mat-slide-toggle-label{font-weight:600;font-size:14px}.aca-manage-rules__actions-bar .vertical-divider{height:50%;margin:0 12px}.aca-manage-rules__container{display:grid;grid-template-columns:minmax(250px,1fr) 3fr;padding:20px;gap:12px;overflow-y:auto;flex:1}.aca-manage-rules__container__rule-details{border:1px solid var(--theme-border-color);border-radius:12px;overflow-y:auto}.aca-manage-rules__container__rule-details__header{position:sticky;top:0;z-index:1;display:flex;flex-direction:row;align-items:flex-start;overflow-x:auto;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--theme-border-color);background-color:var(--theme-background-color);column-gap:20px}.aca-manage-rules__container__rule-details__header__title{display:flex;flex-direction:column;gap:4px;word-wrap:break-word;min-width:100px}.aca-manage-rules__container__rule-details__header__title__name{font-size:1.2em;font-weight:700}.aca-manage-rules__container__rule-details__header__title__description{font-size:.8em;font-style:italic}.aca-manage-rules__container__rule-details__header__buttons{display:flex;flex-direction:row;align-items:stretch;gap:4px}.aca-manage-rules__container__rule-details__header__buttons button{color:var(--theme-text-color)}.aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn{padding:0 8px;min-width:unset}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "component", type: PageLayoutComponent, selector: "aca-page-layout", inputs: ["hasError"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i5.ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: i5.ToolbarTitleComponent, selector: "adf-toolbar-title" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatButton, 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: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i12.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: RuleListUiComponent, selector: "aca-rule-list", inputs: ["mainRuleSet", "folderId", "inheritedRuleSets", "hasMoreRuleSets", "ruleSetsLoading", "selectedRule"], outputs: ["loadMoreRuleSets", "loadMoreRules", "selectRule", "ruleEnabledChanged", "ruleSetEditLinkClicked", "ruleSetUnlinkClicked"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "ngmodule", type: TemplateModule }, { kind: "component", type: i5.EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "component", type: GenericErrorComponent, selector: "aca-generic-error", inputs: ["text"] }, { kind: "component", type: RuleDetailsUiComponent, selector: "aca-rule-details", inputs: ["readOnly", "value", "preview", "actionDefinitions", "parameterConstraints", "nodeId"], outputs: ["formValidationChanged", "formValueChanged"] }, { kind: "ngmodule", type: MatDialogModule }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
|
241
241
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ManageRulesSmartComponent, decorators: [{
|
|
242
242
|
type: Component,
|
|
243
243
|
args: [{ standalone: true, imports: [
|
|
@@ -256,6 +256,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
|
|
|
256
256
|
GenericErrorComponent,
|
|
257
257
|
RuleDetailsUiComponent,
|
|
258
258
|
MatDialogModule
|
|
259
|
-
], selector: 'aca-manage-rules', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: { class: 'aca-manage-rules' }, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet]=\"mainRuleSet$ | async\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;
|
|
259
|
+
], selector: 'aca-manage-rules', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: { class: 'aca-manage-rules' }, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet]=\"mainRuleSet$ | async\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;flex:1}.aca-manage-rules__actions-bar__buttons{display:flex;align-items:stretch;gap:12px}.aca-manage-rules__actions-bar .mat-slide-toggle-label{font-weight:600;font-size:14px}.aca-manage-rules__actions-bar .vertical-divider{height:50%;margin:0 12px}.aca-manage-rules__container{display:grid;grid-template-columns:minmax(250px,1fr) 3fr;padding:20px;gap:12px;overflow-y:auto;flex:1}.aca-manage-rules__container__rule-details{border:1px solid var(--theme-border-color);border-radius:12px;overflow-y:auto}.aca-manage-rules__container__rule-details__header{position:sticky;top:0;z-index:1;display:flex;flex-direction:row;align-items:flex-start;overflow-x:auto;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--theme-border-color);background-color:var(--theme-background-color);column-gap:20px}.aca-manage-rules__container__rule-details__header__title{display:flex;flex-direction:column;gap:4px;word-wrap:break-word;min-width:100px}.aca-manage-rules__container__rule-details__header__title__name{font-size:1.2em;font-weight:700}.aca-manage-rules__container__rule-details__header__title__description{font-size:.8em;font-style:italic}.aca-manage-rules__container__rule-details__header__buttons{display:flex;flex-direction:row;align-items:stretch;gap:4px}.aca-manage-rules__container__rule-details__header__buttons button{color:var(--theme-text-color)}.aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn{padding:0 8px;min-width:unset}\n"] }]
|
|
260
260
|
}], ctorParameters: function () { return [{ type: i1.Location }, { type: i2.FolderRulesService }, { type: i3.ActivatedRoute }, { type: i4.MatDialog }, { type: i5.NotificationService }, { type: i6.ActionsService }, { type: i7.FolderRuleSetsService }]; } });
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvbWFuYWdlLXJ1bGVzL21hbmFnZS1ydWxlcy5zbWFydC1jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9mb2xkZXItcnVsZXMvc3JjL21hbmFnZS1ydWxlcy9tYW5hZ2UtcnVsZXMuc21hcnQtY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2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b0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixlQUFlO3FCQUNoQixZQUNTLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxPQUFPLFFBQzFDLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb2xkZXJSdWxlc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mb2xkZXItcnVsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJ1bGUgfSBmcm9tICcuLi9tb2RlbC9ydWxlLm1vZGVsJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTm9kZUluZm8gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBkZWxheSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWRpdFJ1bGVEaWFsb2dVaUNvbXBvbmVudCB9IGZyb20gJy4uL3J1bGUtZGV0YWlscy9lZGl0LXJ1bGUtZGlhbG9nLnVpLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UsIFRlbXBsYXRlTW9kdWxlLCBUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZCB9IGZyb20gJy4uL21vZGVsL3J1bGUtYWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IEFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEZvbGRlclJ1bGVTZXRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZvbGRlci1ydWxlLXNldHMuc2VydmljZSc7XG5pbXBvcnQgeyBSdWxlU2V0IH0gZnJvbSAnLi4vbW9kZWwvcnVsZS1zZXQubW9kZWwnO1xuaW1wb3J0IHsgUnVsZVNldFBpY2tlclNtYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vcnVsZS1zZXQtcGlja2VyL3J1bGUtc2V0LXBpY2tlci5zbWFydC1jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVDaGFuZ2UsIE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IEFjdGlvblBhcmFtZXRlckNvbnN0cmFpbnQgfSBmcm9tICcuLi9tb2RlbC9hY3Rpb24tcGFyYW1ldGVyLWNvbnN0cmFpbnQubW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHZW5lcmljRXJyb3JDb21wb25lbnQsIFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgUnVsZUxpc3RVaUNvbXBvbmVudCB9IGZyb20gJy4uL3J1bGUtbGlzdC9ydWxlLWxpc3QvcnVsZS1saXN0LnVpLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBSdWxlRGV0YWlsc1VpQ29tcG9uZW50IH0gZnJvbSAnLi4vcnVsZS1kZXRhaWxzL3J1bGUtZGV0YWlscy51aS1jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBUb29sYmFyTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgUnVsZUxpc3RVaUNvbXBvbmVudCxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgVGVtcGxhdGVNb2R1bGUsXG4gICAgR2VuZXJpY0Vycm9yQ29tcG9uZW50LFxuICAgIFJ1bGVEZXRhaWxzVWlDb21wb25lbnQsXG4gICAgTWF0RGlhbG9nTW9kdWxlXG4gIF0sXG4gIHNlbGVjdG9yOiAnYWNhLW1hbmFnZS1ydWxlcycsXG4gIHRlbXBsYXRlVXJsOiAnbWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ21hbmFnZS1ydWxlcy5zbWFydC1jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhY2EtbWFuYWdlLXJ1bGVzJyB9XG59KVxuZXhwb3J0IGNsYXNzIE1hbmFnZVJ1bGVzU21hcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIG5vZGVJZCA9ICcnO1xuICBpc0luaGVyaXRhbmNlRW5hYmxlZCA9IHRydWU7XG4gIGlzSW5oZXJpdGFuY2VUb2dnbGVEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIG1haW5SdWxlU2V0JDogT2JzZXJ2YWJsZTxSdWxlU2V0PjtcbiAgaW5oZXJpdGVkUnVsZVNldHMkOiBPYnNlcnZhYmxlPFJ1bGVTZXRbXT47XG4gIHNlbGVjdGVkUnVsZSQ6IE9ic2VydmFibGU8UnVsZT47XG4gIHNlbGVjdGVkUnVsZVNldCQ6IE9ic2VydmFibGU8UnVsZVNldD47XG4gIGhhc01vcmVSdWxlU2V0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHJ1bGVTZXRzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGZvbGRlckluZm8kOiBPYnNlcnZhYmxlPE5vZGVJbmZvPjtcblxuICBhY3Rpb25zTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFjdGlvbkRlZmluaXRpb25zJDogT2JzZXJ2YWJsZTxBY3Rpb25EZWZpbml0aW9uVHJhbnNmb3JtZWRbXT47XG4gIHBhcmFtZXRlckNvbnN0cmFpbnRzJDogT2JzZXJ2YWJsZTxBY3Rpb25QYXJhbWV0ZXJDb25zdHJhaW50W10+O1xuICBjYW5FZGl0TWFpblJ1bGUgPSBmYWxzZTtcbiAgY2FuRWRpdFNlbGVjdGVkUnVsZSA9IGZhbHNlO1xuICBpc01haW5SdWxlU2V0Tm90RW1wdHkgPSBmYWxzZTtcbiAgaXNJbmhlcml0ZWRSdWxlU2V0c05vdEVtcHR5ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfYWN0aW9uRGVmaW5pdGlvbnNTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGZvbGRlclJ1bGVzU2VydmljZTogRm9sZGVyUnVsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgbWF0RGlhbG9nU2VydmljZTogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvbnNTZXJ2aWNlOiBBY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGZvbGRlclJ1bGVTZXRzU2VydmljZTogRm9sZGVyUnVsZVNldHNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1haW5SdWxlU2V0JCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLm1haW5SdWxlU2V0JDtcbiAgICB0aGlzLmluaGVyaXRlZFJ1bGVTZXRzJCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmluaGVyaXRlZFJ1bGVTZXRzJDtcbiAgICB0aGlzLnNlbGVjdGVkUnVsZSQgPSB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5zZWxlY3RlZFJ1bGUkO1xuICAgIHRoaXMuc2VsZWN0ZWRSdWxlU2V0JCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLnNlbGVjdGVkUnVsZVNldCQ7XG4gICAgdGhpcy5oYXNNb3JlUnVsZVNldHMkID0gdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UuaGFzTW9yZVJ1bGVTZXRzJDtcbiAgICB0aGlzLnJ1bGVTZXRzTG9hZGluZyQgPSB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5pc0xvYWRpbmckO1xuICAgIHRoaXMuZm9sZGVySW5mbyQgPSB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5mb2xkZXJJbmZvJDtcblxuICAgIHRoaXMuYWN0aW9uc0xvYWRpbmckID0gdGhpcy5hY3Rpb25zU2VydmljZS5sb2FkaW5nJC5waXBlKGRlbGF5KDApKTtcbiAgICB0aGlzLmFjdGlvbkRlZmluaXRpb25zJCA9IHRoaXMuYWN0aW9uc1NlcnZpY2UuYWN0aW9uRGVmaW5pdGlvbnNMaXN0aW5nJDtcbiAgICB0aGlzLnBhcmFtZXRlckNvbnN0cmFpbnRzJCA9IHRoaXMuYWN0aW9uc1NlcnZpY2UucGFyYW1ldGVyQ29uc3RyYWludHMkO1xuXG4gICAgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UuZGVsZXRlZFJ1bGVJZCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChkZWxldGVkUnVsZUlkKSA9PiB0aGlzLm9uUnVsZURlbGV0ZShkZWxldGVkUnVsZUlkKSk7XG5cbiAgICB0aGlzLmFjdGlvbnNTZXJ2aWNlLmxvYWRBY3Rpb25EZWZpbml0aW9ucygpO1xuXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMubm9kZUlkID0gcGFyYW1zLm5vZGVJZDtcbiAgICAgIGlmICh0aGlzLm5vZGVJZCkge1xuICAgICAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5nZXRSdWxlU2V0dGluZ3ModGhpcy5ub2RlSWQpLnRoZW4oKHJ1bGVTZXR0aW5ncykgPT4ge1xuICAgICAgICAgIHRoaXMuaXNJbmhlcml0YW5jZUVuYWJsZWQgPSBydWxlU2V0dGluZ3MudmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmxvYWRSdWxlU2V0cyh0aGlzLm5vZGVJZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9hY3Rpb25EZWZpbml0aW9uc1N1YiA9IHRoaXMuYWN0aW9uRGVmaW5pdGlvbnMkLnN1YnNjcmliZSgoYWN0aW9uRGVmaW5pdGlvbnM6IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZFtdKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zU2VydmljZS5sb2FkQWN0aW9uUGFyYW1ldGVyQ29uc3RyYWludHMoYWN0aW9uRGVmaW5pdGlvbnMpXG4gICAgKTtcblxuICAgIHRoaXMubWFpblJ1bGVTZXQkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgocnVsZVNldCkgPT4ge1xuICAgICAgdGhpcy5jYW5FZGl0TWFpblJ1bGUgPSB0aGlzLmNhbkVkaXRSdWxlKHJ1bGVTZXQpO1xuICAgICAgdGhpcy5pc01haW5SdWxlU2V0Tm90RW1wdHkgPSAhIXJ1bGVTZXQ7XG4gICAgfSk7XG5cbiAgICB0aGlzLmluaGVyaXRlZFJ1bGVTZXRzJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKGluaGVyaXRlZFJ1bGVTZXQpID0+IHtcbiAgICAgIHRoaXMuaXNJbmhlcml0ZWRSdWxlU2V0c05vdEVtcHR5ID0gaW5oZXJpdGVkUnVsZVNldC5zb21lKChydWxlU2V0KSA9PiBydWxlU2V0LnJ1bGVzLnNvbWUoKHJ1bGU6IFJ1bGUpID0+IHJ1bGUuaXNFbmFibGVkKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkUnVsZVNldCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChydWxlU2V0KSA9PiB7XG4gICAgICB0aGlzLmNhbkVkaXRTZWxlY3RlZFJ1bGUgPSB0aGlzLmNhbkVkaXRSdWxlKHJ1bGVTZXQpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9hY3Rpb25EZWZpbml0aW9uc1N1Yi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ29CYWNrKCk6IHZvaWQge1xuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICB9XG5cbiAgb25TZWxlY3RSdWxlKHJ1bGU6IFJ1bGUpIHtcbiAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5zZWxlY3RSdWxlKHJ1bGUpO1xuICB9XG5cbiAgb3BlbkNyZWF0ZVVwZGF0ZVJ1bGVEaWFsb2cobW9kZWwgPSB7fSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMubWF0RGlhbG9nU2VydmljZS5vcGVuKEVkaXRSdWxlRGlhbG9nVWlDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgIHBhbmVsQ2xhc3M6ICdhY2EtZWRpdC1ydWxlLWRpYWxvZy1jb250YWluZXInLFxuICAgICAgZGF0YToge1xuICAgICAgICBtb2RlbCxcbiAgICAgICAgbm9kZUlkOiB0aGlzLm5vZGVJZCxcbiAgICAgICAgcGFyYW1ldGVyQ29uc3RyYWludHMkOiB0aGlzLnBhcmFtZXRlckNvbnN0cmFpbnRzJCxcbiAgICAgICAgYWN0aW9uRGVmaW5pdGlvbnMkOiB0aGlzLmFjdGlvbkRlZmluaXRpb25zJFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vblN1Ym1pdFJ1bGVEaWFsb2coZGlhbG9nUmVmKTtcbiAgfVxuXG4gIG9uU3VibWl0UnVsZURpYWxvZyhkaWFsb2dSZWYpIHtcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3VibWl0dGVkLnN1YnNjcmliZShhc3luYyAocnVsZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHJ1bGUuaWQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uUnVsZVVwZGF0ZShydWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uUnVsZUNyZWF0ZShydWxlKTtcbiAgICAgICAgfVxuICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IoZXJyb3IucmVzcG9uc2UuYm9keS5lcnJvci5lcnJvcktleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblJ1bGVVcGRhdGUocnVsZTogUnVsZSkge1xuICAgIGNvbnN0IG5ld1J1bGUgPSBhd2FpdCB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS51cGRhdGVSdWxlKHRoaXMubm9kZUlkLCBydWxlLmlkLCBydWxlKTtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5hZGRPclVwZGF0ZVJ1bGVJbk1haW5SdWxlU2V0KG5ld1J1bGUpO1xuICB9XG5cbiAgYXN5bmMgb25SdWxlQ3JlYXRlKHJ1bGVDcmVhdGVQYXJhbXM6IFBhcnRpYWw8UnVsZT4pIHtcbiAgICBjb25zdCBuZXdSdWxlID0gYXdhaXQgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UuY3JlYXRlUnVsZSh0aGlzLm5vZGVJZCwgcnVsZUNyZWF0ZVBhcmFtcyk7XG4gICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UuYWRkT3JVcGRhdGVSdWxlSW5NYWluUnVsZVNldChuZXdSdWxlKTtcbiAgfVxuXG4gIGFzeW5jIG9uUnVsZUVuYWJsZWRUb2dnbGUocnVsZTogUnVsZSwgaXNFbmFibGVkOiBib29sZWFuKSB7XG4gICAgYXdhaXQgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UudXBkYXRlUnVsZSh0aGlzLm5vZGVJZCwgcnVsZS5pZCwgeyAuLi5ydWxlLCBpc0VuYWJsZWQgfSk7XG4gIH1cblxuICBhc3luYyBvbkluaGVyaXRhbmNlVG9nZ2xlQ2hhbmdlKGV2ZW50OiBNYXRTbGlkZVRvZ2dsZUNoYW5nZSkge1xuICAgIHRoaXMuaXNJbmhlcml0YW5jZVRvZ2dsZURpc2FibGVkID0gdHJ1ZTtcbiAgICBjb25zdCBydWxlU2V0dGluZ3MgPSBhd2FpdCB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS51cGRhdGVSdWxlU2V0dGluZ3ModGhpcy5ub2RlSWQsICctaXNJbmhlcml0YW5jZUVuYWJsZWQtJywgeyB2YWx1ZTogZXZlbnQuY2hlY2tlZCB9KTtcbiAgICB0aGlzLmlzSW5oZXJpdGFuY2VFbmFibGVkID0gcnVsZVNldHRpbmdzLnZhbHVlO1xuICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmxvYWRSdWxlU2V0cyh0aGlzLm5vZGVJZCk7XG4gICAgdGhpcy5pc0luaGVyaXRhbmNlVG9nZ2xlRGlzYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9uUnVsZURlbGV0ZUJ1dHRvbkNsaWNrZWQocnVsZTogUnVsZSkge1xuICAgIHRoaXMubWF0RGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdGl0bGU6ICdBQ0FfRk9MREVSX1JVTEVTLkNPTkZJUk1BVElPTl9ESUFMT0cuREVMRVRFX1JVTEUuVElUTEUnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdBQ0FfRk9MREVSX1JVTEVTLkNPTkZJUk1BVElPTl9ESUFMT0cuREVMRVRFX1JVTEUuTUVTU0FHRSdcbiAgICAgICAgfSxcbiAgICAgICAgbWluV2lkdGg6ICczNDZweCdcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5kZWxldGVSdWxlKHRoaXMubm9kZUlkLCBydWxlLmlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblJ1bGVEZWxldGUoZGVsZXRlZFJ1bGVJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UucmVtb3ZlUnVsZUZyb21NYWluUnVsZVNldChkZWxldGVkUnVsZUlkKTtcbiAgfVxuXG4gIG9uTG9hZE1vcmVSdWxlU2V0cygpIHtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5sb2FkTW9yZUluaGVyaXRlZFJ1bGVTZXRzKCk7XG4gIH1cblxuICBvbkxvYWRNb3JlUnVsZXMocnVsZVNldDogUnVsZVNldCkge1xuICAgIHRoaXMuZm9sZGVyUnVsZXNTZXJ2aWNlLmxvYWRSdWxlcyhydWxlU2V0KTtcbiAgfVxuXG4gIGNhbkVkaXRSdWxlKHJ1bGVTZXQ6IFJ1bGVTZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXJ1bGVTZXQgfHwgRm9sZGVyUnVsZVNldHNTZXJ2aWNlLmlzT3duZWRSdWxlU2V0KHJ1bGVTZXQsIHRoaXMubm9kZUlkKTtcbiAgfVxuXG4gIG9wZW5MaW5rUnVsZXNEaWFsb2coZXhpc3RpbmdSdWxlU2V0PzogUnVsZVNldCkge1xuICAgIHRoaXMubWF0RGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oUnVsZVNldFBpY2tlclNtYXJ0Q29tcG9uZW50LCB7XG4gICAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgICAgcGFuZWxDbGFzczogJ2FjYS1ydWxlLXNldC1waWNrZXItY29udGFpbmVyJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG5vZGVJZDogdGhpcy5ub2RlSWQsXG4gICAgICAgICAgZGVmYXVsdE5vZGVJZDogdGhpcy5ub2RlSWQsXG4gICAgICAgICAgZXhpc3RpbmdSdWxlU2V0XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5yZWZyZXNoTWFpblJ1bGVTZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblJ1bGVTZXRVbmxpbmtDbGlja2VkKGxpbmtlZFJ1bGVTZXQ6IFJ1bGVTZXQpIHtcbiAgICB0aGlzLm1hdERpYWxvZ1NlcnZpY2VcbiAgICAgIC5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHRpdGxlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFX1NFVF9MSU5LLlRJVExFJyxcbiAgICAgICAgICBtZXNzYWdlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFX1NFVF9MSU5LLk1FU1NBR0UnXG4gICAgICAgIH0sXG4gICAgICAgIG1pbldpZHRoOiAnMzQ2cHgnXG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmRlbGV0ZVJ1bGVTZXRMaW5rKHRoaXMubm9kZUlkLCBsaW5rZWRSdWxlU2V0LmlkKTtcbiAgICAgICAgICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLnJlZnJlc2hNYWluUnVsZVNldCgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0Vycm9yKCdBQ0FfRk9MREVSX1JVTEVTLkVSUk9SUy5ERUxFVEVfUlVMRV9TRVRfTElOS19GQUlMRUQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8YWNhLXBhZ2UtbGF5b3V0PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtaGVhZGVyXCI+XG4gICAgPGFkZi10b29sYmFyIGNsYXNzPVwiYWRmLXRvb2xiYXItLWlubGluZVwiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvYWRmLXRvb2xiYXI+XG4gICAgPGgxIGNsYXNzPVwiYWNhLXBhZ2UtdGl0bGVcIj57eyAnQUNBX0ZPTERFUl9SVUxFUy5BQ1RJT05TLk1BTkFHRV9SVUxFUycgfCB0cmFuc2xhdGUgfX08L2gxPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoKHJ1bGVTZXRzTG9hZGluZyQgfCBhc3luYykgJiYgKGluaGVyaXRlZFJ1bGVTZXRzJCB8IGFzeW5jKS5sZW5ndGggPT09IDApIHx8IChhY3Rpb25zTG9hZGluZyQgfCBhc3luYyk7IGVsc2Ugb25Mb2FkZWRcIj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNvbkxvYWRlZD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvbGRlckluZm8kIHwgYXN5bmM7IGVsc2UgZ2VuZXJpY0Vycm9yXCI+XG4gICAgICAgICAgPGFkZi10b29sYmFyIGNsYXNzPVwiYWRmLXRvb2xiYXItLWlubGluZSBhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhclwiPlxuXG4gICAgICAgICAgICA8YWRmLXRvb2xiYXItdGl0bGUgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fdGl0bGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1hbGlnbmVyXCI+Zm9sZGVyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiYWNhLXBhZ2UtdGl0bGVcIj57eyAoZm9sZGVySW5mbyQgfCBhc3luYykubmFtZSB9fTp7eydBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkJSRUFEQ1JVTUIuUlVMRVMnIHwgdHJhbnNsYXRlfX08L2gyPlxuICAgICAgICAgICAgPC9hZGYtdG9vbGJhci10aXRsZT5cblxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWFuYWdlLXJ1bGVzLWluaGVyaXRhbmNlLXRvZ2dsZS1idXR0b25cIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0luaGVyaXRhbmNlRW5hYmxlZFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Jbmhlcml0YW5jZVRvZ2dsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzSW5oZXJpdGFuY2VUb2dnbGVEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCI+XG4gICAgICAgICAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkFDVElPTlMuSU5IRVJJVF9SVUxFUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyIHZlcnRpY2FsIGNsYXNzPVwidmVydGljYWwtZGl2aWRlclwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fYnV0dG9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhKG1haW5SdWxlU2V0JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWFuYWdlLXJ1bGVzLWxpbmstYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkxpbmtSdWxlc0RpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5MSU5LX1JVTEVTJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5FZGl0TWFpblJ1bGVcIlxuICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cIm1hbmFnZS1ydWxlcy1jcmVhdGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNyZWF0ZVVwZGF0ZVJ1bGVEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkFDVElPTlMuQ1JFQVRFX1JVTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L2FkZi10b29sYmFyPlxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lclwiICpuZ0lmPVwiaXNNYWluUnVsZVNldE5vdEVtcHR5IHx8IGlzSW5oZXJpdGVkUnVsZVNldHNOb3RFbXB0eTsgZWxzZSBlbXB0eUNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxhY2EtcnVsZS1saXN0XG4gICAgICAgICAgICAgIFttYWluUnVsZVNldF09XCJtYWluUnVsZVNldCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtmb2xkZXJJZF09XCJub2RlSWRcIlxuICAgICAgICAgICAgICBbaW5oZXJpdGVkUnVsZVNldHNdPVwiaW5oZXJpdGVkUnVsZVNldHMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbaGFzTW9yZVJ1bGVTZXRzXT1cImhhc01vcmVSdWxlU2V0cyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtydWxlU2V0c0xvYWRpbmddPVwicnVsZVNldHNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkUnVsZV09XCJzZWxlY3RlZFJ1bGUkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAobG9hZE1vcmVSdWxlU2V0cyk9XCJvbkxvYWRNb3JlUnVsZVNldHMoKVwiXG4gICAgICAgICAgICAgIChsb2FkTW9yZVJ1bGVzKT1cIm9uTG9hZE1vcmVSdWxlcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHNlbGVjdFJ1bGUpPVwib25TZWxlY3RSdWxlKCRldmVudClcIlxuICAgICAgICAgICAgICAocnVsZUVuYWJsZWRDaGFuZ2VkKT1cIm9uUnVsZUVuYWJsZWRUb2dnbGUoJGV2ZW50WzBdLCAkZXZlbnRbMV0pXCJcbiAgICAgICAgICAgICAgKHJ1bGVTZXRFZGl0TGlua0NsaWNrZWQpPVwib3BlbkxpbmtSdWxlc0RpYWxvZygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHJ1bGVTZXRVbmxpbmtDbGlja2VkKT1cIm9uUnVsZVNldFVubGlua0NsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9hY2EtcnVsZS1saXN0PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNcIj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlclwiICpuZ0lmPVwiKHNlbGVjdGVkUnVsZSQgfCBhc3luYykgYXMgc2VsZWN0ZWRSdWxlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX3RpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlcl9fdGl0bGVfX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRSdWxlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX3RpdGxlX19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFJ1bGUuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX2J1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5FZGl0U2VsZWN0ZWRSdWxlOyBlbHNlIGdvVG9Gb2xkZXJCdXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uUnVsZURlbGV0ZUJ1dHRvbkNsaWNrZWQoc2VsZWN0ZWRSdWxlKVwiIGlkPVwiZGVsZXRlLXJ1bGUtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZV9vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJvcGVuQ3JlYXRlVXBkYXRlUnVsZURpYWxvZyhzZWxlY3RlZFJ1bGUpXCIgaWQ9XCJlZGl0LXJ1bGUtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5FRElUX1JVTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ29Ub0ZvbGRlckJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gW3JvdXRlckxpbmtdPVwiWycvbm9kZXMnLCAoc2VsZWN0ZWRSdWxlU2V0JCB8IGFzeW5jKS5vd25pbmdGb2xkZXIuaWQsICdydWxlcyddXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5TRUVfSU5fRk9MREVSJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19jb250YWluZXJfX3J1bGUtZGV0YWlsc19fY29udGVudFwiICpuZ0lmPVwiKHNlbGVjdGVkUnVsZSQgfCBhc3luYykgYXMgc2VsZWN0ZWRSdWxlXCI+XG4gICAgICAgICAgICAgICAgPGFjYS1ydWxlLWRldGFpbHNcbiAgICAgICAgICAgICAgICAgIFthY3Rpb25EZWZpbml0aW9uc109XCJhY3Rpb25EZWZpbml0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbcHJldmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZFJ1bGVcIlxuICAgICAgICAgICAgICAgICAgW25vZGVJZF09XCJub2RlSWRcIj5cbiAgICAgICAgICAgICAgICA8L2FjYS1ydWxlLWRldGFpbHM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5Q29udGVudD5cbiAgICAgICAgICAgIDxhZGYtZW1wdHktY29udGVudFxuICAgICAgICAgICAgICBpY29uPVwibGlicmFyeV9ib29rc1wiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInQUNBX0ZPTERFUl9SVUxFUy5NQU5BR0VfUlVMRVMuRU1QVFlfUlVMRVNfTElTVC5USVRMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLkVNUFRZX1JVTEVTX0xJU1QuU1VCVElUTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvYWRmLWVtcHR5LWNvbnRlbnQ+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNnZW5lcmljRXJyb3I+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1lcnJvclwiPlxuICAgICAgICAgICAgPGFjYS1nZW5lcmljLWVycm9yPjwvYWNhLWdlbmVyaWMtZXJyb3I+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvYWNhLXBhZ2UtbGF5b3V0PlxuIl19
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvbWFuYWdlLXJ1bGVzL21hbmFnZS1ydWxlcy5zbWFydC1jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9mb2xkZXItcnVsZXMvc3JjL21hbmFnZS1ydWxlcy9tYW5hZ2UtcnVsZXMuc21hcnQtY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2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b0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixlQUFlO3FCQUNoQixZQUNTLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxPQUFPLFFBQzFDLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb2xkZXJSdWxlc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mb2xkZXItcnVsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJ1bGUgfSBmcm9tICcuLi9tb2RlbC9ydWxlLm1vZGVsJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTm9kZUluZm8gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBkZWxheSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWRpdFJ1bGVEaWFsb2dVaUNvbXBvbmVudCB9IGZyb20gJy4uL3J1bGUtZGV0YWlscy9lZGl0LXJ1bGUtZGlhbG9nLnVpLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UsIFRlbXBsYXRlTW9kdWxlLCBUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZCB9IGZyb20gJy4uL21vZGVsL3J1bGUtYWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IEFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEZvbGRlclJ1bGVTZXRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZvbGRlci1ydWxlLXNldHMuc2VydmljZSc7XG5pbXBvcnQgeyBSdWxlU2V0IH0gZnJvbSAnLi4vbW9kZWwvcnVsZS1zZXQubW9kZWwnO1xuaW1wb3J0IHsgUnVsZVNldFBpY2tlclNtYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vcnVsZS1zZXQtcGlja2VyL3J1bGUtc2V0LXBpY2tlci5zbWFydC1jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVDaGFuZ2UsIE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IEFjdGlvblBhcmFtZXRlckNvbnN0cmFpbnQgfSBmcm9tICcuLi9tb2RlbC9hY3Rpb24tcGFyYW1ldGVyLWNvbnN0cmFpbnQubW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHZW5lcmljRXJyb3JDb21wb25lbnQsIFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgUnVsZUxpc3RVaUNvbXBvbmVudCB9IGZyb20gJy4uL3J1bGUtbGlzdC9ydWxlLWxpc3QvcnVsZS1saXN0LnVpLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBSdWxlRGV0YWlsc1VpQ29tcG9uZW50IH0gZnJvbSAnLi4vcnVsZS1kZXRhaWxzL3J1bGUtZGV0YWlscy51aS1jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBUb29sYmFyTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgUnVsZUxpc3RVaUNvbXBvbmVudCxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgVGVtcGxhdGVNb2R1bGUsXG4gICAgR2VuZXJpY0Vycm9yQ29tcG9uZW50LFxuICAgIFJ1bGVEZXRhaWxzVWlDb21wb25lbnQsXG4gICAgTWF0RGlhbG9nTW9kdWxlXG4gIF0sXG4gIHNlbGVjdG9yOiAnYWNhLW1hbmFnZS1ydWxlcycsXG4gIHRlbXBsYXRlVXJsOiAnbWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ21hbmFnZS1ydWxlcy5zbWFydC1jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhY2EtbWFuYWdlLXJ1bGVzJyB9XG59KVxuZXhwb3J0IGNsYXNzIE1hbmFnZVJ1bGVzU21hcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIG5vZGVJZCA9ICcnO1xuICBpc0luaGVyaXRhbmNlRW5hYmxlZCA9IHRydWU7XG4gIGlzSW5oZXJpdGFuY2VUb2dnbGVEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIG1haW5SdWxlU2V0JDogT2JzZXJ2YWJsZTxSdWxlU2V0PjtcbiAgaW5oZXJpdGVkUnVsZVNldHMkOiBPYnNlcnZhYmxlPFJ1bGVTZXRbXT47XG4gIHNlbGVjdGVkUnVsZSQ6IE9ic2VydmFibGU8UnVsZT47XG4gIHNlbGVjdGVkUnVsZVNldCQ6IE9ic2VydmFibGU8UnVsZVNldD47XG4gIGhhc01vcmVSdWxlU2V0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHJ1bGVTZXRzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGZvbGRlckluZm8kOiBPYnNlcnZhYmxlPE5vZGVJbmZvPjtcblxuICBhY3Rpb25zTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFjdGlvbkRlZmluaXRpb25zJDogT2JzZXJ2YWJsZTxBY3Rpb25EZWZpbml0aW9uVHJhbnNmb3JtZWRbXT47XG4gIHBhcmFtZXRlckNvbnN0cmFpbnRzJDogT2JzZXJ2YWJsZTxBY3Rpb25QYXJhbWV0ZXJDb25zdHJhaW50W10+O1xuICBjYW5FZGl0TWFpblJ1bGUgPSBmYWxzZTtcbiAgY2FuRWRpdFNlbGVjdGVkUnVsZSA9IGZhbHNlO1xuICBpc01haW5SdWxlU2V0Tm90RW1wdHkgPSBmYWxzZTtcbiAgaXNJbmhlcml0ZWRSdWxlU2V0c05vdEVtcHR5ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfYWN0aW9uRGVmaW5pdGlvbnNTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGZvbGRlclJ1bGVzU2VydmljZTogRm9sZGVyUnVsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgbWF0RGlhbG9nU2VydmljZTogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvbnNTZXJ2aWNlOiBBY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGZvbGRlclJ1bGVTZXRzU2VydmljZTogRm9sZGVyUnVsZVNldHNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1haW5SdWxlU2V0JCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLm1haW5SdWxlU2V0JDtcbiAgICB0aGlzLmluaGVyaXRlZFJ1bGVTZXRzJCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmluaGVyaXRlZFJ1bGVTZXRzJDtcbiAgICB0aGlzLnNlbGVjdGVkUnVsZSQgPSB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5zZWxlY3RlZFJ1bGUkO1xuICAgIHRoaXMuc2VsZWN0ZWRSdWxlU2V0JCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLnNlbGVjdGVkUnVsZVNldCQ7XG4gICAgdGhpcy5oYXNNb3JlUnVsZVNldHMkID0gdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UuaGFzTW9yZVJ1bGVTZXRzJDtcbiAgICB0aGlzLnJ1bGVTZXRzTG9hZGluZyQgPSB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5pc0xvYWRpbmckO1xuICAgIHRoaXMuZm9sZGVySW5mbyQgPSB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5mb2xkZXJJbmZvJDtcblxuICAgIHRoaXMuYWN0aW9uc0xvYWRpbmckID0gdGhpcy5hY3Rpb25zU2VydmljZS5sb2FkaW5nJC5waXBlKGRlbGF5KDApKTtcbiAgICB0aGlzLmFjdGlvbkRlZmluaXRpb25zJCA9IHRoaXMuYWN0aW9uc1NlcnZpY2UuYWN0aW9uRGVmaW5pdGlvbnNMaXN0aW5nJDtcbiAgICB0aGlzLnBhcmFtZXRlckNvbnN0cmFpbnRzJCA9IHRoaXMuYWN0aW9uc1NlcnZpY2UucGFyYW1ldGVyQ29uc3RyYWludHMkO1xuXG4gICAgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UuZGVsZXRlZFJ1bGVJZCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChkZWxldGVkUnVsZUlkKSA9PiB0aGlzLm9uUnVsZURlbGV0ZShkZWxldGVkUnVsZUlkKSk7XG5cbiAgICB0aGlzLmFjdGlvbnNTZXJ2aWNlLmxvYWRBY3Rpb25EZWZpbml0aW9ucygpO1xuXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMubm9kZUlkID0gcGFyYW1zLm5vZGVJZDtcbiAgICAgIGlmICh0aGlzLm5vZGVJZCkge1xuICAgICAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5nZXRSdWxlU2V0dGluZ3ModGhpcy5ub2RlSWQpLnRoZW4oKHJ1bGVTZXR0aW5ncykgPT4ge1xuICAgICAgICAgIHRoaXMuaXNJbmhlcml0YW5jZUVuYWJsZWQgPSBydWxlU2V0dGluZ3MudmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmxvYWRSdWxlU2V0cyh0aGlzLm5vZGVJZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9hY3Rpb25EZWZpbml0aW9uc1N1YiA9IHRoaXMuYWN0aW9uRGVmaW5pdGlvbnMkLnN1YnNjcmliZSgoYWN0aW9uRGVmaW5pdGlvbnM6IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZFtdKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zU2VydmljZS5sb2FkQWN0aW9uUGFyYW1ldGVyQ29uc3RyYWludHMoYWN0aW9uRGVmaW5pdGlvbnMpXG4gICAgKTtcblxuICAgIHRoaXMubWFpblJ1bGVTZXQkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgocnVsZVNldCkgPT4ge1xuICAgICAgdGhpcy5jYW5FZGl0TWFpblJ1bGUgPSB0aGlzLmNhbkVkaXRSdWxlKHJ1bGVTZXQpO1xuICAgICAgdGhpcy5pc01haW5SdWxlU2V0Tm90RW1wdHkgPSAhIXJ1bGVTZXQ7XG4gICAgfSk7XG5cbiAgICB0aGlzLmluaGVyaXRlZFJ1bGVTZXRzJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKGluaGVyaXRlZFJ1bGVTZXQpID0+IHtcbiAgICAgIHRoaXMuaXNJbmhlcml0ZWRSdWxlU2V0c05vdEVtcHR5ID0gaW5oZXJpdGVkUnVsZVNldC5zb21lKChydWxlU2V0KSA9PiBydWxlU2V0LnJ1bGVzLnNvbWUoKHJ1bGU6IFJ1bGUpID0+IHJ1bGUuaXNFbmFibGVkKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkUnVsZVNldCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChydWxlU2V0KSA9PiB7XG4gICAgICB0aGlzLmNhbkVkaXRTZWxlY3RlZFJ1bGUgPSB0aGlzLmNhbkVkaXRSdWxlKHJ1bGVTZXQpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9hY3Rpb25EZWZpbml0aW9uc1N1Yi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ29CYWNrKCk6IHZvaWQge1xuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICB9XG5cbiAgb25TZWxlY3RSdWxlKHJ1bGU6IFJ1bGUpIHtcbiAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5zZWxlY3RSdWxlKHJ1bGUpO1xuICB9XG5cbiAgb3BlbkNyZWF0ZVVwZGF0ZVJ1bGVEaWFsb2cobW9kZWwgPSB7fSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMubWF0RGlhbG9nU2VydmljZS5vcGVuKEVkaXRSdWxlRGlhbG9nVWlDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgIHBhbmVsQ2xhc3M6ICdhY2EtZWRpdC1ydWxlLWRpYWxvZy1jb250YWluZXInLFxuICAgICAgZGF0YToge1xuICAgICAgICBtb2RlbCxcbiAgICAgICAgbm9kZUlkOiB0aGlzLm5vZGVJZCxcbiAgICAgICAgcGFyYW1ldGVyQ29uc3RyYWludHMkOiB0aGlzLnBhcmFtZXRlckNvbnN0cmFpbnRzJCxcbiAgICAgICAgYWN0aW9uRGVmaW5pdGlvbnMkOiB0aGlzLmFjdGlvbkRlZmluaXRpb25zJFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vblN1Ym1pdFJ1bGVEaWFsb2coZGlhbG9nUmVmKTtcbiAgfVxuXG4gIG9uU3VibWl0UnVsZURpYWxvZyhkaWFsb2dSZWYpIHtcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3VibWl0dGVkLnN1YnNjcmliZShhc3luYyAocnVsZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHJ1bGUuaWQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uUnVsZVVwZGF0ZShydWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uUnVsZUNyZWF0ZShydWxlKTtcbiAgICAgICAgfVxuICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IoZXJyb3IucmVzcG9uc2UuYm9keS5lcnJvci5lcnJvcktleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblJ1bGVVcGRhdGUocnVsZTogUnVsZSkge1xuICAgIGNvbnN0IG5ld1J1bGUgPSBhd2FpdCB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS51cGRhdGVSdWxlKHRoaXMubm9kZUlkLCBydWxlLmlkLCBydWxlKTtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5hZGRPclVwZGF0ZVJ1bGVJbk1haW5SdWxlU2V0KG5ld1J1bGUpO1xuICB9XG5cbiAgYXN5bmMgb25SdWxlQ3JlYXRlKHJ1bGVDcmVhdGVQYXJhbXM6IFBhcnRpYWw8UnVsZT4pIHtcbiAgICBjb25zdCBuZXdSdWxlID0gYXdhaXQgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UuY3JlYXRlUnVsZSh0aGlzLm5vZGVJZCwgcnVsZUNyZWF0ZVBhcmFtcyk7XG4gICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UuYWRkT3JVcGRhdGVSdWxlSW5NYWluUnVsZVNldChuZXdSdWxlKTtcbiAgfVxuXG4gIGFzeW5jIG9uUnVsZUVuYWJsZWRUb2dnbGUocnVsZTogUnVsZSwgaXNFbmFibGVkOiBib29sZWFuKSB7XG4gICAgYXdhaXQgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UudXBkYXRlUnVsZSh0aGlzLm5vZGVJZCwgcnVsZS5pZCwgeyAuLi5ydWxlLCBpc0VuYWJsZWQgfSk7XG4gIH1cblxuICBhc3luYyBvbkluaGVyaXRhbmNlVG9nZ2xlQ2hhbmdlKGV2ZW50OiBNYXRTbGlkZVRvZ2dsZUNoYW5nZSkge1xuICAgIHRoaXMuaXNJbmhlcml0YW5jZVRvZ2dsZURpc2FibGVkID0gdHJ1ZTtcbiAgICBjb25zdCBydWxlU2V0dGluZ3MgPSBhd2FpdCB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS51cGRhdGVSdWxlU2V0dGluZ3ModGhpcy5ub2RlSWQsICctaXNJbmhlcml0YW5jZUVuYWJsZWQtJywgeyB2YWx1ZTogZXZlbnQuY2hlY2tlZCB9KTtcbiAgICB0aGlzLmlzSW5oZXJpdGFuY2VFbmFibGVkID0gcnVsZVNldHRpbmdzLnZhbHVlO1xuICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmxvYWRSdWxlU2V0cyh0aGlzLm5vZGVJZCk7XG4gICAgdGhpcy5pc0luaGVyaXRhbmNlVG9nZ2xlRGlzYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9uUnVsZURlbGV0ZUJ1dHRvbkNsaWNrZWQocnVsZTogUnVsZSkge1xuICAgIHRoaXMubWF0RGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdGl0bGU6ICdBQ0FfRk9MREVSX1JVTEVTLkNPTkZJUk1BVElPTl9ESUFMT0cuREVMRVRFX1JVTEUuVElUTEUnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdBQ0FfRk9MREVSX1JVTEVTLkNPTkZJUk1BVElPTl9ESUFMT0cuREVMRVRFX1JVTEUuTUVTU0FHRSdcbiAgICAgICAgfSxcbiAgICAgICAgbWluV2lkdGg6ICczNDZweCdcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5kZWxldGVSdWxlKHRoaXMubm9kZUlkLCBydWxlLmlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblJ1bGVEZWxldGUoZGVsZXRlZFJ1bGVJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UucmVtb3ZlUnVsZUZyb21NYWluUnVsZVNldChkZWxldGVkUnVsZUlkKTtcbiAgfVxuXG4gIG9uTG9hZE1vcmVSdWxlU2V0cygpIHtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5sb2FkTW9yZUluaGVyaXRlZFJ1bGVTZXRzKCk7XG4gIH1cblxuICBvbkxvYWRNb3JlUnVsZXMocnVsZVNldDogUnVsZVNldCkge1xuICAgIHRoaXMuZm9sZGVyUnVsZXNTZXJ2aWNlLmxvYWRSdWxlcyhydWxlU2V0KTtcbiAgfVxuXG4gIGNhbkVkaXRSdWxlKHJ1bGVTZXQ6IFJ1bGVTZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXJ1bGVTZXQgfHwgRm9sZGVyUnVsZVNldHNTZXJ2aWNlLmlzT3duZWRSdWxlU2V0KHJ1bGVTZXQsIHRoaXMubm9kZUlkKTtcbiAgfVxuXG4gIG9wZW5MaW5rUnVsZXNEaWFsb2coZXhpc3RpbmdSdWxlU2V0PzogUnVsZVNldCkge1xuICAgIHRoaXMubWF0RGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oUnVsZVNldFBpY2tlclNtYXJ0Q29tcG9uZW50LCB7XG4gICAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgICAgcGFuZWxDbGFzczogJ2FjYS1ydWxlLXNldC1waWNrZXItY29udGFpbmVyJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG5vZGVJZDogdGhpcy5ub2RlSWQsXG4gICAgICAgICAgZGVmYXVsdE5vZGVJZDogdGhpcy5ub2RlSWQsXG4gICAgICAgICAgZXhpc3RpbmdSdWxlU2V0XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5yZWZyZXNoTWFpblJ1bGVTZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblJ1bGVTZXRVbmxpbmtDbGlja2VkKGxpbmtlZFJ1bGVTZXQ6IFJ1bGVTZXQpIHtcbiAgICB0aGlzLm1hdERpYWxvZ1NlcnZpY2VcbiAgICAgIC5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHRpdGxlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFX1NFVF9MSU5LLlRJVExFJyxcbiAgICAgICAgICBtZXNzYWdlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFX1NFVF9MSU5LLk1FU1NBR0UnXG4gICAgICAgIH0sXG4gICAgICAgIG1pbldpZHRoOiAnMzQ2cHgnXG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmRlbGV0ZVJ1bGVTZXRMaW5rKHRoaXMubm9kZUlkLCBsaW5rZWRSdWxlU2V0LmlkKTtcbiAgICAgICAgICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLnJlZnJlc2hNYWluUnVsZVNldCgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0Vycm9yKCdBQ0FfRk9MREVSX1JVTEVTLkVSUk9SUy5ERUxFVEVfUlVMRV9TRVRfTElOS19GQUlMRUQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8YWNhLXBhZ2UtbGF5b3V0PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtaGVhZGVyXCI+XG4gICAgPGFkZi10b29sYmFyIGNsYXNzPVwiYWRmLXRvb2xiYXItLWlubGluZVwiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvYWRmLXRvb2xiYXI+XG4gICAgPGgxIGNsYXNzPVwiYWNhLXBhZ2UtdGl0bGVcIj57eyAnQUNBX0ZPTERFUl9SVUxFUy5BQ1RJT05TLk1BTkFHRV9SVUxFUycgfCB0cmFuc2xhdGUgfX08L2gxPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoKHJ1bGVTZXRzTG9hZGluZyQgfCBhc3luYykgJiYgKGluaGVyaXRlZFJ1bGVTZXRzJCB8IGFzeW5jKS5sZW5ndGggPT09IDApIHx8IChhY3Rpb25zTG9hZGluZyQgfCBhc3luYyk7IGVsc2Ugb25Mb2FkZWRcIj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNvbkxvYWRlZD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvbGRlckluZm8kIHwgYXN5bmM7IGVsc2UgZ2VuZXJpY0Vycm9yXCI+XG4gICAgICAgICAgPGFkZi10b29sYmFyIGNsYXNzPVwiYWRmLXRvb2xiYXItLWlubGluZSBhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhclwiPlxuXG4gICAgICAgICAgICA8YWRmLXRvb2xiYXItdGl0bGUgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fdGl0bGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1hbGlnbmVyXCI+Zm9sZGVyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiYWNhLXBhZ2UtdGl0bGVcIj57eyAoZm9sZGVySW5mbyQgfCBhc3luYykubmFtZSB9fTp7eydBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkJSRUFEQ1JVTUIuUlVMRVMnIHwgdHJhbnNsYXRlfX08L2gyPlxuICAgICAgICAgICAgPC9hZGYtdG9vbGJhci10aXRsZT5cblxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWFuYWdlLXJ1bGVzLWluaGVyaXRhbmNlLXRvZ2dsZS1idXR0b25cIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0luaGVyaXRhbmNlRW5hYmxlZFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Jbmhlcml0YW5jZVRvZ2dsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzSW5oZXJpdGFuY2VUb2dnbGVEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCI+XG4gICAgICAgICAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkFDVElPTlMuSU5IRVJJVF9SVUxFUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyIHZlcnRpY2FsIGNsYXNzPVwidmVydGljYWwtZGl2aWRlclwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fYnV0dG9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhKG1haW5SdWxlU2V0JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWFuYWdlLXJ1bGVzLWxpbmstYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkxpbmtSdWxlc0RpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5MSU5LX1JVTEVTJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5FZGl0TWFpblJ1bGVcIlxuICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cIm1hbmFnZS1ydWxlcy1jcmVhdGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNyZWF0ZVVwZGF0ZVJ1bGVEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkFDVElPTlMuQ1JFQVRFX1JVTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L2FkZi10b29sYmFyPlxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lclwiICpuZ0lmPVwiaXNNYWluUnVsZVNldE5vdEVtcHR5IHx8IGlzSW5oZXJpdGVkUnVsZVNldHNOb3RFbXB0eTsgZWxzZSBlbXB0eUNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxhY2EtcnVsZS1saXN0XG4gICAgICAgICAgICAgIFttYWluUnVsZVNldF09XCJtYWluUnVsZVNldCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtmb2xkZXJJZF09XCJub2RlSWRcIlxuICAgICAgICAgICAgICBbaW5oZXJpdGVkUnVsZVNldHNdPVwiaW5oZXJpdGVkUnVsZVNldHMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbaGFzTW9yZVJ1bGVTZXRzXT1cImhhc01vcmVSdWxlU2V0cyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtydWxlU2V0c0xvYWRpbmddPVwicnVsZVNldHNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkUnVsZV09XCJzZWxlY3RlZFJ1bGUkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAobG9hZE1vcmVSdWxlU2V0cyk9XCJvbkxvYWRNb3JlUnVsZVNldHMoKVwiXG4gICAgICAgICAgICAgIChsb2FkTW9yZVJ1bGVzKT1cIm9uTG9hZE1vcmVSdWxlcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHNlbGVjdFJ1bGUpPVwib25TZWxlY3RSdWxlKCRldmVudClcIlxuICAgICAgICAgICAgICAocnVsZUVuYWJsZWRDaGFuZ2VkKT1cIm9uUnVsZUVuYWJsZWRUb2dnbGUoJGV2ZW50WzBdLCAkZXZlbnRbMV0pXCJcbiAgICAgICAgICAgICAgKHJ1bGVTZXRFZGl0TGlua0NsaWNrZWQpPVwib3BlbkxpbmtSdWxlc0RpYWxvZygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHJ1bGVTZXRVbmxpbmtDbGlja2VkKT1cIm9uUnVsZVNldFVubGlua0NsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9hY2EtcnVsZS1saXN0PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNcIj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlclwiICpuZ0lmPVwiKHNlbGVjdGVkUnVsZSQgfCBhc3luYykgYXMgc2VsZWN0ZWRSdWxlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX3RpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlcl9fdGl0bGVfX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRSdWxlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX3RpdGxlX19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFJ1bGUuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX2J1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5FZGl0U2VsZWN0ZWRSdWxlOyBlbHNlIGdvVG9Gb2xkZXJCdXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uUnVsZURlbGV0ZUJ1dHRvbkNsaWNrZWQoc2VsZWN0ZWRSdWxlKVwiIGlkPVwiZGVsZXRlLXJ1bGUtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZV9vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJvcGVuQ3JlYXRlVXBkYXRlUnVsZURpYWxvZyhzZWxlY3RlZFJ1bGUpXCIgaWQ9XCJlZGl0LXJ1bGUtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5FRElUX1JVTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ29Ub0ZvbGRlckJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gW3JvdXRlckxpbmtdPVwiWycvbm9kZXMnLCAoc2VsZWN0ZWRSdWxlU2V0JCB8IGFzeW5jKS5vd25pbmdGb2xkZXIuaWQsICdydWxlcyddXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5TRUVfSU5fRk9MREVSJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19jb250YWluZXJfX3J1bGUtZGV0YWlsc19fY29udGVudFwiICpuZ0lmPVwiKHNlbGVjdGVkUnVsZSQgfCBhc3luYykgYXMgc2VsZWN0ZWRSdWxlXCI+XG4gICAgICAgICAgICAgICAgPGFjYS1ydWxlLWRldGFpbHNcbiAgICAgICAgICAgICAgICAgIFthY3Rpb25EZWZpbml0aW9uc109XCJhY3Rpb25EZWZpbml0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbcHJldmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZFJ1bGVcIlxuICAgICAgICAgICAgICAgICAgW25vZGVJZF09XCJub2RlSWRcIj5cbiAgICAgICAgICAgICAgICA8L2FjYS1ydWxlLWRldGFpbHM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5Q29udGVudD5cbiAgICAgICAgICAgIDxhZGYtZW1wdHktY29udGVudFxuICAgICAgICAgICAgICBpY29uPVwibGlicmFyeV9ib29rc1wiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInQUNBX0ZPTERFUl9SVUxFUy5NQU5BR0VfUlVMRVMuRU1QVFlfUlVMRVNfTElTVC5USVRMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLkVNUFRZX1JVTEVTX0xJU1QuU1VCVElUTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvYWRmLWVtcHR5LWNvbnRlbnQ+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNnZW5lcmljRXJyb3I+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1lcnJvclwiPlxuICAgICAgICAgICAgPGFjYS1nZW5lcmljLWVycm9yPjwvYWNhLWdlbmVyaWMtZXJyb3I+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvYWNhLXBhZ2UtbGF5b3V0PlxuIl19
|
|
@@ -294,7 +294,7 @@ export class FilesComponent extends PageComponent {
|
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
296
|
FilesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FilesComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.ContentApiService }, { token: i3.NodeActionsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
297
|
-
FilesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: FilesComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<aca-page-layout [hasError]=\"!isValidPath\">\n <div class=\"aca-page-layout-header\">\n <adf-breadcrumb [root]=\"title\" [folderNode]=\"node\" [maxItems]=\"isSmallScreen ? 1 : 0\" (navigate)=\"onBreadcrumbNavigate($event)\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </div>\n\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\" *ngIf=\"!(showLoader$ | async)\">\n <adf-upload-drag-area [rootFolderId]=\"node?.id\" [disabled]=\"!canUpload\" (updateFileVersion)=\"onUploadNewVersion($event)\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n [selectionMode]=\"'multiple'\"\n [multiselect]=\"
|
|
297
|
+
FilesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: FilesComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<aca-page-layout [hasError]=\"!isValidPath\">\n <div class=\"aca-page-layout-header\">\n <adf-breadcrumb [root]=\"title\" [folderNode]=\"node\" [maxItems]=\"isSmallScreen ? 1 : 0\" (navigate)=\"onBreadcrumbNavigate($event)\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </div>\n\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\" *ngIf=\"!(showLoader$ | async)\">\n <adf-upload-drag-area [rootFolderId]=\"node?.id\" [disabled]=\"!canUpload\" (updateFileVersion)=\"onUploadNewVersion($event)\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n [selectionMode]=\"'multiple'\"\n [multiselect]=\"false\"\n [currentFolderId]=\"node?.id\"\n [loading]=\"true\"\n [showHeader]=\"showHeader\"\n [node]=\"nodeResult\"\n [allowDropFiles]=\"true\"\n [navigate]=\"false\"\n [sorting]=\"['name', 'ASC']\"\n [imageResolver]=\"imageResolver\"\n [headerFilters]=\"true\"\n [filterValue]=\"queryParams\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n (sorting-changed)=\"onSortingChanged($event)\"\n (filterSelection)=\"onFilterSelected($event)\"\n (error)=\"onError()\"\n >\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n\n <adf-custom-empty-content-template *ngIf=\"isFilterHeaderActive\">\n <ng-container>\n <div class=\"empty-search__block\" aria-live=\"polite\">\n <p class=\"empty-search__text\">\n {{ 'APP.BROWSE.SEARCH.NO_FILTER_RESULTS' | translate }}\n </p>\n </div>\n </ng-container>\n </adf-custom-empty-content-template>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </adf-upload-drag-area>\n </div>\n\n <mat-progress-spinner *ngIf=\"showLoader$ | async\"\n id=\"adf-document-list-loading\"\n class=\"adf-document-list-loading-margin\"\n [color]=\"'primary'\"\n [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </div>\n</aca-page-layout>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: BreadcrumbModule }, { kind: "component", type: i6.BreadcrumbComponent, selector: "adf-breadcrumb", inputs: ["folderNode", "root", "rootId", "target", "transform", "maxItems", "readOnly"], outputs: ["navigate"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i7.ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: GenericErrorComponent, selector: "aca-generic-error", inputs: ["text"] }, { kind: "ngmodule", type: UploadModule }, { kind: "component", type: i6.UploadDragAreaComponent, selector: "adf-upload-drag-area" }, { kind: "ngmodule", type: DocumentListModule }, { kind: "component", type: i6.DocumentListComponent, selector: "adf-document-list", inputs: ["includeFields", "where", "display", "permissionsStyle", "locationFormat", "navigate", "showHeader", "navigationMode", "thumbnails", "selectionMode", "multiselect", "contentActions", "contentActionsPosition", "contextMenuActions", "emptyFolderImageUrl", "allowDropFiles", "sorting", "additionalSorting", "sortingMode", "rowStyle", "rowStyleClass", "loading", "_rowFilter", "rowFilter", "imageResolver", "stickyHeader", "headerFilters", "filterValue", "currentFolderId", "preselectNodes", "node", "maxItems"], outputs: ["nodeClick", "nodeDblClick", "folderChange", "preview", "ready", "error", "nodeSelected", "filterSelection"] }, { kind: "directive", type: DocumentListDirective, selector: "[acaDocumentList]" }, { kind: "directive", type: ContextActionsDirective, selector: "[acaContextActions]", inputs: ["acaContextEnable"], exportAs: ["acaContextActions"] }, { kind: "ngmodule", type: DataTableModule }, { kind: "directive", type: i7.CustomEmptyContentTemplateDirective, selector: "adf-custom-empty-content-template, empty-folder-content" }, { kind: "component", type: i7.DataColumnComponent, selector: "data-column", inputs: ["id", "key", "customData", "type", "format", "sortable", "draggable", "isHidden", "title", "formatTooltip", "sr-title", "class", "copyContent", "editable", "focus", "sortingKey"] }, { kind: "component", type: i7.DataColumnListComponent, selector: "data-columns" }, { kind: "ngmodule", type: ExtensionsModule }, { kind: "component", type: i8.DynamicColumnComponent, selector: "adf-dynamic-column", inputs: ["id", "context"] }, { kind: "ngmodule", type: PaginationModule }, { kind: "component", type: i7.PaginationComponent, selector: "adf-pagination", inputs: ["target", "supportedPageSizes", "pagination"], outputs: ["change", "changePageNumber", "changePageSize", "nextPage", "prevPage"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: InfoDrawerComponent, selector: "aca-info-drawer", inputs: ["nodeId", "node"] }, { kind: "component", type: ToolbarActionComponent, selector: "aca-toolbar-action", inputs: ["data", "type", "color", "actionRef"] }, { kind: "directive", type: PaginationDirective, selector: "[acaPagination]" }, { kind: "component", type: PageLayoutComponent, selector: "aca-page-layout", inputs: ["hasError"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
298
298
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FilesComponent, decorators: [{
|
|
299
299
|
type: Component,
|
|
300
300
|
args: [{ standalone: true, imports: [
|
|
@@ -315,6 +315,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
|
|
|
315
315
|
ToolbarActionComponent,
|
|
316
316
|
PaginationDirective,
|
|
317
317
|
PageLayoutComponent
|
|
318
|
-
], encapsulation: ViewEncapsulation.None, template: "<aca-page-layout [hasError]=\"!isValidPath\">\n <div class=\"aca-page-layout-header\">\n <adf-breadcrumb [root]=\"title\" [folderNode]=\"node\" [maxItems]=\"isSmallScreen ? 1 : 0\" (navigate)=\"onBreadcrumbNavigate($event)\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </div>\n\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\" *ngIf=\"!(showLoader$ | async)\">\n <adf-upload-drag-area [rootFolderId]=\"node?.id\" [disabled]=\"!canUpload\" (updateFileVersion)=\"onUploadNewVersion($event)\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n [selectionMode]=\"'multiple'\"\n [multiselect]=\"
|
|
318
|
+
], encapsulation: ViewEncapsulation.None, template: "<aca-page-layout [hasError]=\"!isValidPath\">\n <div class=\"aca-page-layout-header\">\n <adf-breadcrumb [root]=\"title\" [folderNode]=\"node\" [maxItems]=\"isSmallScreen ? 1 : 0\" (navigate)=\"onBreadcrumbNavigate($event)\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </div>\n\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\" *ngIf=\"!(showLoader$ | async)\">\n <adf-upload-drag-area [rootFolderId]=\"node?.id\" [disabled]=\"!canUpload\" (updateFileVersion)=\"onUploadNewVersion($event)\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n [selectionMode]=\"'multiple'\"\n [multiselect]=\"false\"\n [currentFolderId]=\"node?.id\"\n [loading]=\"true\"\n [showHeader]=\"showHeader\"\n [node]=\"nodeResult\"\n [allowDropFiles]=\"true\"\n [navigate]=\"false\"\n [sorting]=\"['name', 'ASC']\"\n [imageResolver]=\"imageResolver\"\n [headerFilters]=\"true\"\n [filterValue]=\"queryParams\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n (sorting-changed)=\"onSortingChanged($event)\"\n (filterSelection)=\"onFilterSelected($event)\"\n (error)=\"onError()\"\n >\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n\n <adf-custom-empty-content-template *ngIf=\"isFilterHeaderActive\">\n <ng-container>\n <div class=\"empty-search__block\" aria-live=\"polite\">\n <p class=\"empty-search__text\">\n {{ 'APP.BROWSE.SEARCH.NO_FILTER_RESULTS' | translate }}\n </p>\n </div>\n </ng-container>\n </adf-custom-empty-content-template>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </adf-upload-drag-area>\n </div>\n\n <mat-progress-spinner *ngIf=\"showLoader$ | async\"\n id=\"adf-document-list-loading\"\n class=\"adf-document-list-loading-margin\"\n [color]=\"'primary'\"\n [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </div>\n</aca-page-layout>\n" }]
|
|
319
319
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.ContentApiService }, { type: i3.NodeActionsService }]; } });
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzL2ZpbGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9maWxlcy9maWxlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxTQUFTLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN2QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxSCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBK0MsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakosT0FBTyxFQUF5QixnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FB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TUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7OzJHQTFTVSxjQUFjOytGQUFkLGNBQWMsK0ZDeEUzQixrbUlBcUdBLDJDRGxESSxZQUFZLG9UQUNaLGVBQWUsMkZBQ2YsZ0JBQWdCLCtOQUNoQixhQUFhLHNJQUNiLHFCQUFxQiwrRUFDckIsWUFBWSx5SEFDWixrQkFBa0IsbXZCQUNsQixxQkFBcUIsOERBQ3JCLHVCQUF1Qiw4SEFDdkIsZUFBZSxzZ0JBQ2YsZ0JBQWdCLGlKQUNoQixnQkFBZ0IsMFBBQ2hCLHdCQUF3QixtT0FDeEIsbUJBQW1CLHdGQUNuQixzQkFBc0IsK0dBQ3RCLG1CQUFtQiw0REFDbkIsbUJBQW1COzJGQUtWLGNBQWM7a0JBeEIxQixTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLHFCQUFxQjt3QkFDckIsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQix3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEIsaUJBRWMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBEYXRhVGFibGVNb2R1bGUsIFBhZ2luYXRpb25Nb2R1bGUsIFNob3dIZWFkZXJNb2RlLCBUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1pbmltYWxOb2RlRW50aXR5LCBNaW5pbWFsTm9kZUVudHJ5RW50aXR5LCBQYXRoRWxlbWVudCwgUGF0aEVsZW1lbnRFbnRpdHkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IE5vZGVBY3Rpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vZGUtYWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENvbnRlbnRBcGlTZXJ2aWNlLFxuICBDb250ZXh0QWN0aW9uc0RpcmVjdGl2ZSxcbiAgR2VuZXJpY0Vycm9yQ29tcG9uZW50LFxuICBJbmZvRHJhd2VyQ29tcG9uZW50LFxuICBQYWdlQ29tcG9uZW50LFxuICBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICBQYWdpbmF0aW9uRGlyZWN0aXZlLFxuICBUb29sYmFyQWN0aW9uQ29tcG9uZW50XG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkJztcbmltcG9ydCB7IFNldEN1cnJlbnRGb2xkZXJBY3Rpb24sIGlzQWRtaW4sIFVwbG9hZEZpbGVWZXJzaW9uQWN0aW9uLCBzaG93TG9hZGVyU2VsZWN0b3IgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZpbHRlclNlYXJjaCwgU2hhcmVEYXRhUm93LCBGaWxlVXBsb2FkRXZlbnQsIEJyZWFkY3J1bWJNb2R1bGUsIFVwbG9hZE1vZHVsZSwgRG9jdW1lbnRMaXN0TW9kdWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IERvY3VtZW50TGlzdFByZXNldFJlZiwgRXh0ZW5zaW9uc01vZHVsZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBEb2N1bWVudExpc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2RvY3VtZW50LWxpc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQnJlYWRjcnVtYk1vZHVsZSxcbiAgICBUb29sYmFyTW9kdWxlLFxuICAgIEdlbmVyaWNFcnJvckNvbXBvbmVudCxcbiAgICBVcGxvYWRNb2R1bGUsXG4gICAgRG9jdW1lbnRMaXN0TW9kdWxlLFxuICAgIERvY3VtZW50TGlzdERpcmVjdGl2ZSxcbiAgICBDb250ZXh0QWN0aW9uc0RpcmVjdGl2ZSxcbiAgICBEYXRhVGFibGVNb2R1bGUsXG4gICAgRXh0ZW5zaW9uc01vZHVsZSxcbiAgICBQYWdpbmF0aW9uTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICBJbmZvRHJhd2VyQ29tcG9uZW50LFxuICAgIFRvb2xiYXJBY3Rpb25Db21wb25lbnQsXG4gICAgUGFnaW5hdGlvbkRpcmVjdGl2ZSxcbiAgICBQYWdlTGF5b3V0Q29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlcy5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRmlsZXNDb21wb25lbnQgZXh0ZW5kcyBQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBpc1ZhbGlkUGF0aCA9IHRydWU7XG4gIGlzQWRtaW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWROb2RlOiBNaW5pbWFsTm9kZUVudGl0eTtcbiAgcXVlcnlQYXJhbXMgPSBudWxsO1xuXG4gIHNob3dMb2FkZXIkID0gdGhpcy5zdG9yZS5zZWxlY3Qoc2hvd0xvYWRlclNlbGVjdG9yKTtcbiAgcHJpdmF0ZSBub2RlUGF0aDogUGF0aEVsZW1lbnRbXTtcblxuICBjb2x1bW5zOiBEb2N1bWVudExpc3RQcmVzZXRSZWZbXSA9IFtdO1xuICBpc0ZpbHRlckhlYWRlckFjdGl2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLCBwcml2YXRlIG5vZGVBY3Rpb25zU2VydmljZTogTm9kZUFjdGlvbnNTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICBjb25zdCB7IGRhdGEgfSA9IHRoaXMucm91dGUuc25hcHNob3Q7XG5cbiAgICB0aGlzLnRpdGxlID0gZGF0YS50aXRsZTtcblxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcC5zdWJzY3JpYmUoKHF1ZXJ5TWFwOiBQYXJhbXMpID0+IHtcbiAgICAgIHRoaXMucXVlcnlQYXJhbXMgPSBxdWVyeU1hcC5wYXJhbXM7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHsgZm9sZGVySWQgfTogUGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCBub2RlSWQgPSBmb2xkZXJJZCB8fCBkYXRhLmRlZmF1bHROb2RlSWQ7XG5cbiAgICAgIHRoaXMuY29udGVudEFwaS5nZXROb2RlKG5vZGVJZCkuc3Vic2NyaWJlKFxuICAgICAgICAobm9kZSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNWYWxpZFBhdGggPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKG5vZGUuZW50cnkgJiYgbm9kZS5lbnRyeS5pc0ZvbGRlcikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50Tm9kZShub2RlLmVudHJ5KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcGVyc29uYWwtZmlsZXMnLCBub2RlLmVudHJ5LnBhcmVudElkXSwge1xuICAgICAgICAgICAgICByZXBsYWNlVXJsOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+ICh0aGlzLmlzVmFsaWRQYXRoID0gZmFsc2UpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gdGhpcy5zdWJzY3JpcHRpb25zLmNvbmNhdChbXG4gICAgICB0aGlzLm5vZGVBY3Rpb25zU2VydmljZS5jb250ZW50Q29waWVkLnN1YnNjcmliZSgobm9kZXMpID0+IHRoaXMub25Db250ZW50Q29waWVkKG5vZGVzKSksXG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZENvbXBsZXRlLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoZmlsZSkgPT4gdGhpcy5vbkZpbGVVcGxvYWRlZEV2ZW50KGZpbGUpKSxcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkRGVsZXRlZC5waXBlKGRlYm91bmNlVGltZSgzMDApKS5zdWJzY3JpYmUoKGZpbGUpID0+IHRoaXMub25GaWxlVXBsb2FkZWRFdmVudChmaWxlKSlcbiAgICBdKTtcblxuICAgIHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoaXNBZG1pbilcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5pc0FkbWluID0gdmFsdWU7XG4gICAgICB9KTtcblxuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZXh0ZW5zaW9ucy5kb2N1bWVudExpc3RQcmVzZXRzLmZpbGVzIHx8IFtdO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q3VycmVudEZvbGRlckFjdGlvbihudWxsKSk7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIG5hdmlnYXRlKG5vZGVJZDogc3RyaW5nID0gbnVsbCkge1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnZm9sZGVySWQnKTtcbiAgICBjb25zdCB1cmxXaXRob3V0UGFyYW1zID0gZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMucm91dGVyLnVybCkuc3BsaXQoJz8nKVswXTtcbiAgICBjb25zdCB1cmxUb05hdmlnYXRlOiBzdHJpbmdbXSA9IHRoaXMuZ2V0VXJsVG9OYXZpZ2F0ZSh1cmxXaXRob3V0UGFyYW1zLCBjdXJyZW50Tm9kZUlkLCBub2RlSWQpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHVybFRvTmF2aWdhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVcmxUb05hdmlnYXRlKGN1cnJlbnRVUkw6IHN0cmluZywgY3VycmVudE5vZGVJZDogc3RyaW5nLCBuZXh0Tm9kZUlkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGN1cnJlbnROb2RlSWQgPyB0aGlzLmdldE5leHROb2RlVXJsVG9OYXZpZ2F0ZShjdXJyZW50VVJMLCBjdXJyZW50Tm9kZUlkLCBuZXh0Tm9kZUlkKSA6IHRoaXMuYXBwZW5kTmV4dE5vZGVJZFRvVXJsKGN1cnJlbnRVUkwsIG5leHROb2RlSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROZXh0Tm9kZVVybFRvTmF2aWdhdGUoY3VycmVudFVSTDogc3RyaW5nLCBjdXJyZW50Tm9kZUlkOiBzdHJpbmcsIG5leHROb2RlSWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCB1cmxUb05hdmlnYXRlOiBzdHJpbmdbXSA9XG4gICAgICBuZXh0Tm9kZUlkICYmICF0aGlzLmlzUm9vdE5vZGUobmV4dE5vZGVJZClcbiAgICAgICAgPyB0aGlzLnJlcGxhY2VDdXJyZW50Tm9kZUlkV2l0aE5leHROb2RlSWQoY3VycmVudFVSTCwgY3VycmVudE5vZGVJZCwgbmV4dE5vZGVJZClcbiAgICAgICAgOiB0aGlzLnJlbW92ZU5vZGVJZEZyb21VcmwoY3VycmVudFVSTCwgY3VycmVudE5vZGVJZCk7XG4gICAgdXJsVG9OYXZpZ2F0ZS5zaGlmdCgpO1xuICAgIHJldHVybiB1cmxUb05hdmlnYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQ3VycmVudE5vZGVJZFdpdGhOZXh0Tm9kZUlkKGN1cnJlbnRVUkw6IHN0cmluZywgY3VycmVudE5vZGVJZDogc3RyaW5nLCBuZXh0Tm9kZUlkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbmV4dE5vZGVVcmxUb05hdmlnYXRlID0gY3VycmVudFVSTC5zcGxpdCgnLycpO1xuICAgIGNvbnN0IGluZGV4ID0gbmV4dE5vZGVVcmxUb05hdmlnYXRlLmluZGV4T2YoY3VycmVudE5vZGVJZCk7XG4gICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgbmV4dE5vZGVVcmxUb05hdmlnYXRlW2luZGV4XSA9IG5leHROb2RlSWQ7XG4gICAgfVxuICAgIHJldHVybiBuZXh0Tm9kZVVybFRvTmF2aWdhdGU7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU5vZGVJZEZyb21VcmwoY3VycmVudFVSTDogc3RyaW5nLCBjdXJyZW50Tm9kZUlkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgcm9vdFVybDogc3RyaW5nW10gPSBjdXJyZW50VVJMLnJlcGxhY2UoY3VycmVudE5vZGVJZCwgJycpLnNwbGl0KCcvJyk7XG4gICAgcm9vdFVybC5wb3AoKTtcbiAgICByZXR1cm4gcm9vdFVybDtcbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kTmV4dE5vZGVJZFRvVXJsKGN1cnJlbnRVUkw6IHN0cmluZywgbm9kZUlkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbmF2aWdhdGVUb05vZGVVcmwgPSBjdXJyZW50VVJMLnNwbGl0KCcvJyk7XG4gICAgaWYgKG5vZGVJZCAmJiAhdGhpcy5pc1Jvb3ROb2RlKG5vZGVJZCkpIHtcbiAgICAgIG5hdmlnYXRlVG9Ob2RlVXJsLnB1c2gobm9kZUlkKTtcbiAgICB9XG4gICAgbmF2aWdhdGVUb05vZGVVcmwuc2hpZnQoKTtcbiAgICByZXR1cm4gbmF2aWdhdGVUb05vZGVVcmw7XG4gIH1cblxuICBvblVwbG9hZE5ld1ZlcnNpb24oZXY6IEN1c3RvbUV2ZW50KSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXBsb2FkRmlsZVZlcnNpb25BY3Rpb24oZXYpKTtcbiAgfVxuXG4gIG5hdmlnYXRlVG8obm9kZTogTWluaW1hbE5vZGVFbnRpdHkpIHtcbiAgICBpZiAobm9kZSAmJiBub2RlLmVudHJ5KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGU7XG4gICAgICBjb25zdCB7IGlzRm9sZGVyIH0gPSBub2RlLmVudHJ5O1xuXG4gICAgICBpZiAoaXNGb2xkZXIpIHtcbiAgICAgICAgbGV0IGlkOiBzdHJpbmc7XG5cbiAgICAgICAgaWYgKG5vZGUuZW50cnkubm9kZVR5cGUgPT09ICdhcHA6Zm9sZGVybGluaycpIHtcbiAgICAgICAgICBpZCA9IG5vZGUuZW50cnkucHJvcGVydGllc1snY206ZGVzdGluYXRpb24nXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZCA9IG5vZGUuZW50cnkuaWQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRvY3VtZW50TGlzdC5yZXNldE5ld0ZvbGRlclBhZ2luYXRpb24oKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZShpZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zaG93UHJldmlldyhub2RlLCB7IGxvY2F0aW9uOiB0aGlzLnJvdXRlci51cmwgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTm9kZUNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMubmF2aWdhdGVUbygoZXZlbnQgYXMgQ3VzdG9tRXZlbnQpLmRldGFpbD8ubm9kZSk7XG4gIH1cblxuICBvbkJyZWFkY3J1bWJOYXZpZ2F0ZShyb3V0ZTogUGF0aEVsZW1lbnRFbnRpdHkpIHtcbiAgICB0aGlzLmRvY3VtZW50TGlzdC5yZXNldE5ld0ZvbGRlclBhZ2luYXRpb24oKTtcblxuICAgIC8vIHRvZG86IHJldmlldyB0aGlzIGFwcHJvYWNoIG9uY2UgNS4yLjMgaXMgb3V0XG4gICAgaWYgKHRoaXMubm9kZVBhdGggJiYgdGhpcy5ub2RlUGF0aC5sZW5ndGggPiAyKSB7XG4gICAgICBpZiAodGhpcy5ub2RlUGF0aFsxXS5uYW1lID09PSAnU2l0ZXMnICYmIHRoaXMubm9kZVBhdGhbMl0uaWQgPT09IHJvdXRlLmlkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlKHRoaXMubm9kZVBhdGhbM10uaWQpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm5hdmlnYXRlKHJvdXRlLmlkKTtcbiAgfVxuXG4gIG9uRmlsZVVwbG9hZGVkRXZlbnQoZXZlbnQ6IEZpbGVVcGxvYWRFdmVudCkge1xuICAgIGNvbnN0IG5vZGU6IE1pbmltYWxOb2RlRW50aXR5ID0gZXZlbnQuZmlsZS5kYXRhO1xuXG4gICAgLy8gY2hlY2sgcm9vdCBhbmQgY2hpbGQgbm9kZXNcbiAgICBpZiAobm9kZSAmJiBub2RlLmVudHJ5ICYmIG5vZGUuZW50cnkucGFyZW50SWQgPT09IHRoaXMuZ2V0UGFyZW50Tm9kZUlkKCkpIHtcbiAgICAgIHRoaXMucmVsb2FkKHRoaXMuc2VsZWN0ZWROb2RlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBjaGVjayB0aGUgY2hpbGQgbm9kZXMgdG8gc2hvdyBkcm9wcGVkIGZvbGRlclxuICAgIGlmIChldmVudCAmJiBldmVudC5maWxlLm9wdGlvbnMucGFyZW50SWQgPT09IHRoaXMuZ2V0UGFyZW50Tm9kZUlkKCkpIHtcbiAgICAgIHRoaXMuZGlzcGxheUZvbGRlclBhcmVudChldmVudC5maWxlLm9wdGlvbnMucGF0aCwgMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmZpbGUub3B0aW9ucy5wYXJlbnRJZCkge1xuICAgICAgaWYgKHRoaXMubm9kZVBhdGgpIHtcbiAgICAgICAgY29uc3QgY29ycmVzcG9uZGluZ05vZGVQYXRoID0gdGhpcy5ub2RlUGF0aC5maW5kKChwYXRoSXRlbSkgPT4gcGF0aEl0ZW0uaWQgPT09IGV2ZW50LmZpbGUub3B0aW9ucy5wYXJlbnRJZCk7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGN1cnJlbnQgZm9sZGVyIGhhcyB0aGUgJ3RyaWdnZXItdXBsb2FkLWZvbGRlcicgYXMgb25lIG9mIGl0cyBwYXJlbnRzXG4gICAgICAgIGlmIChjb3JyZXNwb25kaW5nTm9kZVBhdGgpIHtcbiAgICAgICAgICBjb25zdCBjb3JyZXNwb25kaW5nSW5kZXggPSB0aGlzLm5vZGVQYXRoLmxlbmd0aCAtIHRoaXMubm9kZVBhdGguaW5kZXhPZihjb3JyZXNwb25kaW5nTm9kZVBhdGgpO1xuICAgICAgICAgIHRoaXMuZGlzcGxheUZvbGRlclBhcmVudChldmVudC5maWxlLm9wdGlvbnMucGF0aCwgY29ycmVzcG9uZGluZ0luZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRpc3BsYXlGb2xkZXJQYXJlbnQoZmlsZVBhdGggPSAnJywgaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHBhcmVudE5hbWUgPSBmaWxlUGF0aC5zcGxpdCgnLycpW2luZGV4XTtcbiAgICBjb25zdCBjdXJyZW50Rm9sZGVyc0Rpc3BsYXllZCA9ICh0aGlzLmRvY3VtZW50TGlzdC5kYXRhLmdldFJvd3MoKSBhcyBTaGFyZURhdGFSb3dbXSkgfHwgW107XG5cbiAgICBjb25zdCBhbHJlYWR5RGlzcGxheWVkUGFyZW50Rm9sZGVyID0gY3VycmVudEZvbGRlcnNEaXNwbGF5ZWQuZmluZCgocm93KSA9PiByb3cubm9kZS5lbnRyeS5pc0ZvbGRlciAmJiByb3cubm9kZS5lbnRyeS5uYW1lID09PSBwYXJlbnROYW1lKTtcblxuICAgIGlmIChhbHJlYWR5RGlzcGxheWVkUGFyZW50Rm9sZGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucmVsb2FkKHRoaXMuc2VsZWN0ZWROb2RlKTtcbiAgfVxuXG4gIG9uQ29udGVudENvcGllZChub2RlczogTWluaW1hbE5vZGVFbnRpdHlbXSkge1xuICAgIGNvbnN0IG5ld05vZGUgPSBub2Rlcy5maW5kKChub2RlKSA9PiBub2RlICYmIG5vZGUuZW50cnkgJiYgbm9kZS5lbnRyeS5wYXJlbnRJZCA9PT0gdGhpcy5nZXRQYXJlbnROb2RlSWQoKSk7XG4gICAgaWYgKG5ld05vZGUpIHtcbiAgICAgIHRoaXMucmVsb2FkKHRoaXMuc2VsZWN0ZWROb2RlKTtcbiAgICB9XG4gIH1cblxuICAvLyB0b2RvOiByZXZpZXcgdGhpcyBhcHByb2FjaCBvbmNlIDUuMi4zIGlzIG91dFxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUN1cnJlbnROb2RlKG5vZGU6IE1pbmltYWxOb2RlRW50cnlFbnRpdHkpIHtcbiAgICB0aGlzLm5vZGVQYXRoID0gbnVsbDtcblxuICAgIGlmIChub2RlICYmIG5vZGUucGF0aCAmJiBub2RlLnBhdGguZWxlbWVudHMpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gbm9kZS5wYXRoLmVsZW1lbnRzO1xuXG4gICAgICB0aGlzLm5vZGVQYXRoID0gZWxlbWVudHMubWFwKChwYXRoRWxlbWVudCkgPT4gT2JqZWN0LmFzc2lnbih7fSwgcGF0aEVsZW1lbnQpKTtcblxuICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgaWYgKGVsZW1lbnRzWzFdLm5hbWUgPT09ICdVc2VyIEhvbWVzJykge1xuICAgICAgICAgIGlmICghdGhpcy5pc0FkbWluKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5zcGxpY2UoMCwgMik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnRzWzFdLm5hbWUgPT09ICdTaXRlcycpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm5vcm1hbGl6ZVNpdGVQYXRoKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRDdXJyZW50Rm9sZGVyQWN0aW9uKG5vZGUpKTtcbiAgfVxuXG4gIC8vIHRvZG86IHJldmlldyB0aGlzIGFwcHJvYWNoIG9uY2UgNS4yLjMgaXMgb3V0XG4gIHByaXZhdGUgYXN5bmMgbm9ybWFsaXplU2l0ZVBhdGgobm9kZTogTWluaW1hbE5vZGVFbnRyeUVudGl0eSkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gbm9kZS5wYXRoLmVsZW1lbnRzO1xuXG4gICAgLy8gcmVtb3ZlICdTaXRlcydcbiAgICBlbGVtZW50cy5zcGxpY2UoMSwgMSk7XG5cbiAgICBpZiAodGhpcy5pc1NpdGVDb250YWluZXIobm9kZSkpIHtcbiAgICAgIC8vIHJlbmFtZSAnZG9jdW1lbnRMaWJyYXJ5JyBlbnRyeSB0byB0aGUgdGFyZ2V0IHNpdGUgZGlzcGxheSBuYW1lXG4gICAgICAvLyBjbGlja2luZyBvbiB0aGUgYnJlYWRjcnVtYiBlbnRyeSBsb2FkcyB0aGUgc2l0ZSBjb250ZW50XG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gYXdhaXQgdGhpcy5jb250ZW50QXBpLmdldE5vZGVJbmZvKG5vZGUucGFyZW50SWQpLnRvUHJvbWlzZSgpO1xuICAgICAgbm9kZS5uYW1lID0gcGFyZW50Tm9kZS5wcm9wZXJ0aWVzWydjbTp0aXRsZSddIHx8IHBhcmVudE5vZGUubmFtZTtcblxuICAgICAgLy8gcmVtb3ZlIHRoZSBzaXRlIGVudHJ5XG4gICAgICBlbGVtZW50cy5zcGxpY2UoMSwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJlbW92ZSAnZG9jdW1lbnRMaWJyYXJ5JyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwYXRoXG4gICAgICBjb25zdCBkb2NMaWIgPSBlbGVtZW50cy5maW5kSW5kZXgoKGVsKSA9PiBlbC5uYW1lID09PSAnZG9jdW1lbnRMaWJyYXJ5Jyk7XG4gICAgICBpZiAoZG9jTGliID4gLTEpIHtcbiAgICAgICAgY29uc3Qgc2l0ZUZyYWdtZW50ID0gZWxlbWVudHNbZG9jTGliIC0gMV07XG4gICAgICAgIGNvbnN0IHNpdGVOb2RlID0gYXdhaXQgdGhpcy5jb250ZW50QXBpLmdldE5vZGVJbmZvKHNpdGVGcmFnbWVudC5pZCkudG9Qcm9taXNlKCk7XG5cbiAgICAgICAgLy8gYXBwbHkgU2l0ZSBOYW1lIHRvIHRoZSBwYXJlbnQgZnJhZ21lbnRcbiAgICAgICAgc2l0ZUZyYWdtZW50Lm5hbWUgPSBzaXRlTm9kZS5wcm9wZXJ0aWVzWydjbTp0aXRsZSddIHx8IHNpdGVOb2RlLm5hbWU7XG4gICAgICAgIGVsZW1lbnRzLnNwbGljZShkb2NMaWIsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzU2l0ZUNvbnRhaW5lcihub2RlOiBNaW5pbWFsTm9kZUVudHJ5RW50aXR5KTogYm9vbGVhbiB7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS5hc3BlY3ROYW1lcyAmJiBub2RlLmFzcGVjdE5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBub2RlLmFzcGVjdE5hbWVzLmluZGV4T2YoJ3N0OnNpdGVDb250YWluZXInKSA+PSAwO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc1Jvb3ROb2RlKG5vZGVJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubm9kZSAmJiB0aGlzLm5vZGUucGF0aCAmJiB0aGlzLm5vZGUucGF0aC5lbGVtZW50cyAmJiB0aGlzLm5vZGUucGF0aC5lbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlLnBhdGguZWxlbWVudHNbMF0uaWQgPT09IG5vZGVJZDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb25GaWx0ZXJTZWxlY3RlZChhY3RpdmVGaWx0ZXJzOiBGaWx0ZXJTZWFyY2hbXSkge1xuICAgIGlmIChhY3RpdmVGaWx0ZXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5zaG93SGVhZGVyID0gU2hvd0hlYWRlck1vZGUuQWx3YXlzO1xuICAgICAgdGhpcy5pc0ZpbHRlckhlYWRlckFjdGl2ZSA9IHRydWU7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9GaWx0ZXIoYWN0aXZlRmlsdGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICB0aGlzLmlzRmlsdGVySGVhZGVyQWN0aXZlID0gZmFsc2U7XG4gICAgICB0aGlzLnNob3dIZWFkZXIgPSBTaG93SGVhZGVyTW9kZS5EYXRhO1xuICAgICAgdGhpcy5vbkFsbEZpbHRlckNsZWFyZWQoKTtcbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZVRvRmlsdGVyKGFjdGl2ZUZpbHRlcnM6IEZpbHRlclNlYXJjaFtdKSB7XG4gICAgY29uc3Qgb2JqZWN0RnJvbU1hcCA9IHt9O1xuICAgIGFjdGl2ZUZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyOiBGaWx0ZXJTZWFyY2gpID0+IHtcbiAgICAgIGxldCBwYXJhbVZhbHVlO1xuICAgICAgaWYgKGZpbHRlci52YWx1ZSAmJiBmaWx0ZXIudmFsdWUuZnJvbSAmJiBmaWx0ZXIudmFsdWUudG8pIHtcbiAgICAgICAgcGFyYW1WYWx1ZSA9IGAke2ZpbHRlci52YWx1ZS5mcm9tfXx8JHtmaWx0ZXIudmFsdWUudG99YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcmFtVmFsdWUgPSBmaWx0ZXIudmFsdWU7XG4gICAgICB9XG4gICAgICBvYmplY3RGcm9tTWFwW2ZpbHRlci5rZXldID0gcGFyYW1WYWx1ZTtcbiAgICB9KTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUsIHF1ZXJ5UGFyYW1zOiBvYmplY3RGcm9tTWFwIH0pO1xuICB9XG5cbiAgb25FcnJvcigpIHtcbiAgICB0aGlzLmlzVmFsaWRQYXRoID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxhY2EtcGFnZS1sYXlvdXQgW2hhc0Vycm9yXT1cIiFpc1ZhbGlkUGF0aFwiPlxuICA8ZGl2IGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWhlYWRlclwiPlxuICAgIDxhZGYtYnJlYWRjcnVtYiBbcm9vdF09XCJ0aXRsZVwiIFtmb2xkZXJOb2RlXT1cIm5vZGVcIiBbbWF4SXRlbXNdPVwiaXNTbWFsbFNjcmVlbiA/IDEgOiAwXCIgKG5hdmlnYXRlKT1cIm9uQnJlYWRjcnVtYk5hdmlnYXRlKCRldmVudClcIj4gPC9hZGYtYnJlYWRjcnVtYj5cblxuICAgIDxhZGYtdG9vbGJhciBjbGFzcz1cImFkZi10b29sYmFyLS1pbmxpbmVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVudHJ5IG9mIGFjdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlBY3Rpb25JZFwiPlxuICAgICAgICA8YWNhLXRvb2xiYXItYWN0aW9uIFthY3Rpb25SZWZdPVwiZW50cnlcIj48L2FjYS10b29sYmFyLWFjdGlvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYWRmLXRvb2xiYXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtZXJyb3JcIj5cbiAgICA8YWNhLWdlbmVyaWMtZXJyb3I+PC9hY2EtZ2VuZXJpYy1lcnJvcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiICpuZ0lmPVwiIShzaG93TG9hZGVyJCB8IGFzeW5jKVwiPlxuICAgICAgPGFkZi11cGxvYWQtZHJhZy1hcmVhIFtyb290Rm9sZGVySWRdPVwibm9kZT8uaWRcIiBbZGlzYWJsZWRdPVwiIWNhblVwbG9hZFwiICh1cGRhdGVGaWxlVmVyc2lvbik9XCJvblVwbG9hZE5ld1ZlcnNpb24oJGV2ZW50KVwiPlxuICAgICAgICA8YWRmLWRvY3VtZW50LWxpc3RcbiAgICAgICAgICAjZG9jdW1lbnRMaXN0XG4gICAgICAgICAgYWNhRG9jdW1lbnRMaXN0XG4gICAgICAgICAgYWNhQ29udGV4dEFjdGlvbnNcbiAgICAgICAgICBbZGlzcGxheV09XCJkb2N1bWVudERpc3BsYXlNb2RlJCB8IGFzeW5jXCJcbiAgICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCInbXVsdGlwbGUnXCJcbiAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiXG4gICAgICAgICAgW2N1cnJlbnRGb2xkZXJJZF09XCJub2RlPy5pZFwiXG4gICAgICAgICAgW2xvYWRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgW3Nob3dIZWFkZXJdPVwic2hvd0hlYWRlclwiXG4gICAgICAgICAgW25vZGVdPVwibm9kZVJlc3VsdFwiXG4gICAgICAgICAgW2FsbG93RHJvcEZpbGVzXT1cInRydWVcIlxuICAgICAgICAgIFtuYXZpZ2F0ZV09XCJmYWxzZVwiXG4gICAgICAgICAgW3NvcnRpbmddPVwiWyduYW1lJywgJ0FTQyddXCJcbiAgICAgICAgICBbaW1hZ2VSZXNvbHZlcl09XCJpbWFnZVJlc29sdmVyXCJcbiAgICAgICAgICBbaGVhZGVyRmlsdGVyc109XCJ0cnVlXCJcbiAgICAgICAgICBbZmlsdGVyVmFsdWVdPVwicXVlcnlQYXJhbXNcIlxuICAgICAgICAgIChub2RlLWRibGNsaWNrKT1cImhhbmRsZU5vZGVDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAobmFtZS1jbGljayk9XCJoYW5kbGVOb2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgKHNvcnRpbmctY2hhbmdlZCk9XCJvblNvcnRpbmdDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIChmaWx0ZXJTZWxlY3Rpb24pPVwib25GaWx0ZXJTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoZXJyb3IpPVwib25FcnJvcigpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkYXRhLWNvbHVtbnM+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUNvbHVtbklkXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udGVtcGxhdGUgJiYgIShjb2x1bW4uZGVza3RvcE9ubHkgJiYgaXNTbWFsbFNjcmVlbilcIj5cbiAgICAgICAgICAgICAgICA8ZGF0YS1jb2x1bW5cbiAgICAgICAgICAgICAgICAgIFtrZXldPVwiY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY29sdW1uLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwiY29sdW1uLmZvcm1hdFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sdW1uLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgICAgICAgW3NvcnRpbmdLZXldPVwiY29sdW1uLnNvcnRpbmdLZXkgfHwgY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1jb250ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8YWRmLWR5bmFtaWMtY29sdW1uIFtpZF09XCJjb2x1bW4udGVtcGxhdGVcIiBbY29udGV4dF09XCJjb250ZXh0XCI+IDwvYWRmLWR5bmFtaWMtY29sdW1uPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2RhdGEtY29sdW1uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbHVtbi50ZW1wbGF0ZSAmJiAhKGNvbHVtbi5kZXNrdG9wT25seSAmJiBpc1NtYWxsU2NyZWVuKVwiPlxuICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtblxuICAgICAgICAgICAgICAgICAgW2tleV09XCJjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2x1bW4udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgW2Zvcm1hdF09XCJjb2x1bW4uZm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW4uY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgW3NvcnRhYmxlXT1cImNvbHVtbi5zb3J0YWJsZVwiXG4gICAgICAgICAgICAgICAgICBbc29ydGluZ0tleV09XCJjb2x1bW4uc29ydGluZ0tleSB8fCBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9kYXRhLWNvbHVtbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2RhdGEtY29sdW1ucz5cblxuICAgICAgICAgIDxhZGYtY3VzdG9tLWVtcHR5LWNvbnRlbnQtdGVtcGxhdGUgKm5nSWY9XCJpc0ZpbHRlckhlYWRlckFjdGl2ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXNlYXJjaF9fYmxvY2tcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImVtcHR5LXNlYXJjaF9fdGV4dFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ0FQUC5CUk9XU0UuU0VBUkNILk5PX0ZJTFRFUl9SRVNVTFRTJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2FkZi1jdXN0b20tZW1wdHktY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgPC9hZGYtZG9jdW1lbnQtbGlzdD5cblxuICAgICAgICA8YWRmLXBhZ2luYXRpb24gYWNhUGFnaW5hdGlvbiBbdGFyZ2V0XT1cImRvY3VtZW50TGlzdFwiPiA8L2FkZi1wYWdpbmF0aW9uPlxuICAgICAgPC9hZGYtdXBsb2FkLWRyYWctYXJlYT5cbiAgICA8L2Rpdj5cblxuICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciAqbmdJZj1cInNob3dMb2FkZXIkIHwgYXN5bmNcIlxuICAgICAgaWQ9XCJhZGYtZG9jdW1lbnQtbGlzdC1sb2FkaW5nXCJcbiAgICAgIGNsYXNzPVwiYWRmLWRvY3VtZW50LWxpc3QtbG9hZGluZy1tYXJnaW5cIlxuICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiXG4gICAgICBbbW9kZV09XCInaW5kZXRlcm1pbmF0ZSdcIj5cbiAgICA8L21hdC1wcm9ncmVzcy1zcGlubmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImFjYS1zaWRlYmFyXCIgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCI+XG4gICAgICA8YWNhLWluZm8tZHJhd2VyIFtub2RlXT1cInNlbGVjdGlvbi5sYXN0XCI+PC9hY2EtaW5mby1kcmF3ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9hY2EtcGFnZS1sYXlvdXQ+XG4iXX0=
|
|
320
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzL2ZpbGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9maWxlcy9maWxlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxTQUFTLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN2QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxSCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBK0MsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakosT0FBTyxFQUF5QixnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FB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TUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7OzJHQTFTVSxjQUFjOytGQUFkLGNBQWMsK0ZDeEUzQixtbUlBcUdBLDJDRGxESSxZQUFZLG9UQUNaLGVBQWUsMkZBQ2YsZ0JBQWdCLCtOQUNoQixhQUFhLHNJQUNiLHFCQUFxQiwrRUFDckIsWUFBWSx5SEFDWixrQkFBa0IsbXZCQUNsQixxQkFBcUIsOERBQ3JCLHVCQUF1Qiw4SEFDdkIsZUFBZSxzZ0JBQ2YsZ0JBQWdCLGlKQUNoQixnQkFBZ0IsMFBBQ2hCLHdCQUF3QixtT0FDeEIsbUJBQW1CLHdGQUNuQixzQkFBc0IsK0dBQ3RCLG1CQUFtQiw0REFDbkIsbUJBQW1COzJGQUtWLGNBQWM7a0JBeEIxQixTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLHFCQUFxQjt3QkFDckIsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQix3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEIsaUJBRWMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBEYXRhVGFibGVNb2R1bGUsIFBhZ2luYXRpb25Nb2R1bGUsIFNob3dIZWFkZXJNb2RlLCBUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1pbmltYWxOb2RlRW50aXR5LCBNaW5pbWFsTm9kZUVudHJ5RW50aXR5LCBQYXRoRWxlbWVudCwgUGF0aEVsZW1lbnRFbnRpdHkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IE5vZGVBY3Rpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vZGUtYWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENvbnRlbnRBcGlTZXJ2aWNlLFxuICBDb250ZXh0QWN0aW9uc0RpcmVjdGl2ZSxcbiAgR2VuZXJpY0Vycm9yQ29tcG9uZW50LFxuICBJbmZvRHJhd2VyQ29tcG9uZW50LFxuICBQYWdlQ29tcG9uZW50LFxuICBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICBQYWdpbmF0aW9uRGlyZWN0aXZlLFxuICBUb29sYmFyQWN0aW9uQ29tcG9uZW50XG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkJztcbmltcG9ydCB7IFNldEN1cnJlbnRGb2xkZXJBY3Rpb24sIGlzQWRtaW4sIFVwbG9hZEZpbGVWZXJzaW9uQWN0aW9uLCBzaG93TG9hZGVyU2VsZWN0b3IgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZpbHRlclNlYXJjaCwgU2hhcmVEYXRhUm93LCBGaWxlVXBsb2FkRXZlbnQsIEJyZWFkY3J1bWJNb2R1bGUsIFVwbG9hZE1vZHVsZSwgRG9jdW1lbnRMaXN0TW9kdWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IERvY3VtZW50TGlzdFByZXNldFJlZiwgRXh0ZW5zaW9uc01vZHVsZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBEb2N1bWVudExpc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2RvY3VtZW50LWxpc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQnJlYWRjcnVtYk1vZHVsZSxcbiAgICBUb29sYmFyTW9kdWxlLFxuICAgIEdlbmVyaWNFcnJvckNvbXBvbmVudCxcbiAgICBVcGxvYWRNb2R1bGUsXG4gICAgRG9jdW1lbnRMaXN0TW9kdWxlLFxuICAgIERvY3VtZW50TGlzdERpcmVjdGl2ZSxcbiAgICBDb250ZXh0QWN0aW9uc0RpcmVjdGl2ZSxcbiAgICBEYXRhVGFibGVNb2R1bGUsXG4gICAgRXh0ZW5zaW9uc01vZHVsZSxcbiAgICBQYWdpbmF0aW9uTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICBJbmZvRHJhd2VyQ29tcG9uZW50LFxuICAgIFRvb2xiYXJBY3Rpb25Db21wb25lbnQsXG4gICAgUGFnaW5hdGlvbkRpcmVjdGl2ZSxcbiAgICBQYWdlTGF5b3V0Q29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlcy5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRmlsZXNDb21wb25lbnQgZXh0ZW5kcyBQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBpc1ZhbGlkUGF0aCA9IHRydWU7XG4gIGlzQWRtaW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWROb2RlOiBNaW5pbWFsTm9kZUVudGl0eTtcbiAgcXVlcnlQYXJhbXMgPSBudWxsO1xuXG4gIHNob3dMb2FkZXIkID0gdGhpcy5zdG9yZS5zZWxlY3Qoc2hvd0xvYWRlclNlbGVjdG9yKTtcbiAgcHJpdmF0ZSBub2RlUGF0aDogUGF0aEVsZW1lbnRbXTtcblxuICBjb2x1bW5zOiBEb2N1bWVudExpc3RQcmVzZXRSZWZbXSA9IFtdO1xuICBpc0ZpbHRlckhlYWRlckFjdGl2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLCBwcml2YXRlIG5vZGVBY3Rpb25zU2VydmljZTogTm9kZUFjdGlvbnNTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICBjb25zdCB7IGRhdGEgfSA9IHRoaXMucm91dGUuc25hcHNob3Q7XG5cbiAgICB0aGlzLnRpdGxlID0gZGF0YS50aXRsZTtcblxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcC5zdWJzY3JpYmUoKHF1ZXJ5TWFwOiBQYXJhbXMpID0+IHtcbiAgICAgIHRoaXMucXVlcnlQYXJhbXMgPSBxdWVyeU1hcC5wYXJhbXM7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHsgZm9sZGVySWQgfTogUGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCBub2RlSWQgPSBmb2xkZXJJZCB8fCBkYXRhLmRlZmF1bHROb2RlSWQ7XG5cbiAgICAgIHRoaXMuY29udGVudEFwaS5nZXROb2RlKG5vZGVJZCkuc3Vic2NyaWJlKFxuICAgICAgICAobm9kZSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNWYWxpZFBhdGggPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKG5vZGUuZW50cnkgJiYgbm9kZS5lbnRyeS5pc0ZvbGRlcikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50Tm9kZShub2RlLmVudHJ5KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcGVyc29uYWwtZmlsZXMnLCBub2RlLmVudHJ5LnBhcmVudElkXSwge1xuICAgICAgICAgICAgICByZXBsYWNlVXJsOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+ICh0aGlzLmlzVmFsaWRQYXRoID0gZmFsc2UpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gdGhpcy5zdWJzY3JpcHRpb25zLmNvbmNhdChbXG4gICAgICB0aGlzLm5vZGVBY3Rpb25zU2VydmljZS5jb250ZW50Q29waWVkLnN1YnNjcmliZSgobm9kZXMpID0+IHRoaXMub25Db250ZW50Q29waWVkKG5vZGVzKSksXG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZENvbXBsZXRlLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoZmlsZSkgPT4gdGhpcy5vbkZpbGVVcGxvYWRlZEV2ZW50KGZpbGUpKSxcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkRGVsZXRlZC5waXBlKGRlYm91bmNlVGltZSgzMDApKS5zdWJzY3JpYmUoKGZpbGUpID0+IHRoaXMub25GaWxlVXBsb2FkZWRFdmVudChmaWxlKSlcbiAgICBdKTtcblxuICAgIHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoaXNBZG1pbilcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5pc0FkbWluID0gdmFsdWU7XG4gICAgICB9KTtcblxuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZXh0ZW5zaW9ucy5kb2N1bWVudExpc3RQcmVzZXRzLmZpbGVzIHx8IFtdO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q3VycmVudEZvbGRlckFjdGlvbihudWxsKSk7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIG5hdmlnYXRlKG5vZGVJZDogc3RyaW5nID0gbnVsbCkge1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnZm9sZGVySWQnKTtcbiAgICBjb25zdCB1cmxXaXRob3V0UGFyYW1zID0gZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMucm91dGVyLnVybCkuc3BsaXQoJz8nKVswXTtcbiAgICBjb25zdCB1cmxUb05hdmlnYXRlOiBzdHJpbmdbXSA9IHRoaXMuZ2V0VXJsVG9OYXZpZ2F0ZSh1cmxXaXRob3V0UGFyYW1zLCBjdXJyZW50Tm9kZUlkLCBub2RlSWQpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHVybFRvTmF2aWdhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVcmxUb05hdmlnYXRlKGN1cnJlbnRVUkw6IHN0cmluZywgY3VycmVudE5vZGVJZDogc3RyaW5nLCBuZXh0Tm9kZUlkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGN1cnJlbnROb2RlSWQgPyB0aGlzLmdldE5leHROb2RlVXJsVG9OYXZpZ2F0ZShjdXJyZW50VVJMLCBjdXJyZW50Tm9kZUlkLCBuZXh0Tm9kZUlkKSA6IHRoaXMuYXBwZW5kTmV4dE5vZGVJZFRvVXJsKGN1cnJlbnRVUkwsIG5leHROb2RlSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROZXh0Tm9kZVVybFRvTmF2aWdhdGUoY3VycmVudFVSTDogc3RyaW5nLCBjdXJyZW50Tm9kZUlkOiBzdHJpbmcsIG5leHROb2RlSWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCB1cmxUb05hdmlnYXRlOiBzdHJpbmdbXSA9XG4gICAgICBuZXh0Tm9kZUlkICYmICF0aGlzLmlzUm9vdE5vZGUobmV4dE5vZGVJZClcbiAgICAgICAgPyB0aGlzLnJlcGxhY2VDdXJyZW50Tm9kZUlkV2l0aE5leHROb2RlSWQoY3VycmVudFVSTCwgY3VycmVudE5vZGVJZCwgbmV4dE5vZGVJZClcbiAgICAgICAgOiB0aGlzLnJlbW92ZU5vZGVJZEZyb21VcmwoY3VycmVudFVSTCwgY3VycmVudE5vZGVJZCk7XG4gICAgdXJsVG9OYXZpZ2F0ZS5zaGlmdCgpO1xuICAgIHJldHVybiB1cmxUb05hdmlnYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQ3VycmVudE5vZGVJZFdpdGhOZXh0Tm9kZUlkKGN1cnJlbnRVUkw6IHN0cmluZywgY3VycmVudE5vZGVJZDogc3RyaW5nLCBuZXh0Tm9kZUlkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbmV4dE5vZGVVcmxUb05hdmlnYXRlID0gY3VycmVudFVSTC5zcGxpdCgnLycpO1xuICAgIGNvbnN0IGluZGV4ID0gbmV4dE5vZGVVcmxUb05hdmlnYXRlLmluZGV4T2YoY3VycmVudE5vZGVJZCk7XG4gICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgbmV4dE5vZGVVcmxUb05hdmlnYXRlW2luZGV4XSA9IG5leHROb2RlSWQ7XG4gICAgfVxuICAgIHJldHVybiBuZXh0Tm9kZVVybFRvTmF2aWdhdGU7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU5vZGVJZEZyb21VcmwoY3VycmVudFVSTDogc3RyaW5nLCBjdXJyZW50Tm9kZUlkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgcm9vdFVybDogc3RyaW5nW10gPSBjdXJyZW50VVJMLnJlcGxhY2UoY3VycmVudE5vZGVJZCwgJycpLnNwbGl0KCcvJyk7XG4gICAgcm9vdFVybC5wb3AoKTtcbiAgICByZXR1cm4gcm9vdFVybDtcbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kTmV4dE5vZGVJZFRvVXJsKGN1cnJlbnRVUkw6IHN0cmluZywgbm9kZUlkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbmF2aWdhdGVUb05vZGVVcmwgPSBjdXJyZW50VVJMLnNwbGl0KCcvJyk7XG4gICAgaWYgKG5vZGVJZCAmJiAhdGhpcy5pc1Jvb3ROb2RlKG5vZGVJZCkpIHtcbiAgICAgIG5hdmlnYXRlVG9Ob2RlVXJsLnB1c2gobm9kZUlkKTtcbiAgICB9XG4gICAgbmF2aWdhdGVUb05vZGVVcmwuc2hpZnQoKTtcbiAgICByZXR1cm4gbmF2aWdhdGVUb05vZGVVcmw7XG4gIH1cblxuICBvblVwbG9hZE5ld1ZlcnNpb24oZXY6IEN1c3RvbUV2ZW50KSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXBsb2FkRmlsZVZlcnNpb25BY3Rpb24oZXYpKTtcbiAgfVxuXG4gIG5hdmlnYXRlVG8obm9kZTogTWluaW1hbE5vZGVFbnRpdHkpIHtcbiAgICBpZiAobm9kZSAmJiBub2RlLmVudHJ5KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGU7XG4gICAgICBjb25zdCB7IGlzRm9sZGVyIH0gPSBub2RlLmVudHJ5O1xuXG4gICAgICBpZiAoaXNGb2xkZXIpIHtcbiAgICAgICAgbGV0IGlkOiBzdHJpbmc7XG5cbiAgICAgICAgaWYgKG5vZGUuZW50cnkubm9kZVR5cGUgPT09ICdhcHA6Zm9sZGVybGluaycpIHtcbiAgICAgICAgICBpZCA9IG5vZGUuZW50cnkucHJvcGVydGllc1snY206ZGVzdGluYXRpb24nXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZCA9IG5vZGUuZW50cnkuaWQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRvY3VtZW50TGlzdC5yZXNldE5ld0ZvbGRlclBhZ2luYXRpb24oKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZShpZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zaG93UHJldmlldyhub2RlLCB7IGxvY2F0aW9uOiB0aGlzLnJvdXRlci51cmwgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTm9kZUNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMubmF2aWdhdGVUbygoZXZlbnQgYXMgQ3VzdG9tRXZlbnQpLmRldGFpbD8ubm9kZSk7XG4gIH1cblxuICBvbkJyZWFkY3J1bWJOYXZpZ2F0ZShyb3V0ZTogUGF0aEVsZW1lbnRFbnRpdHkpIHtcbiAgICB0aGlzLmRvY3VtZW50TGlzdC5yZXNldE5ld0ZvbGRlclBhZ2luYXRpb24oKTtcblxuICAgIC8vIHRvZG86IHJldmlldyB0aGlzIGFwcHJvYWNoIG9uY2UgNS4yLjMgaXMgb3V0XG4gICAgaWYgKHRoaXMubm9kZVBhdGggJiYgdGhpcy5ub2RlUGF0aC5sZW5ndGggPiAyKSB7XG4gICAgICBpZiAodGhpcy5ub2RlUGF0aFsxXS5uYW1lID09PSAnU2l0ZXMnICYmIHRoaXMubm9kZVBhdGhbMl0uaWQgPT09IHJvdXRlLmlkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlKHRoaXMubm9kZVBhdGhbM10uaWQpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm5hdmlnYXRlKHJvdXRlLmlkKTtcbiAgfVxuXG4gIG9uRmlsZVVwbG9hZGVkRXZlbnQoZXZlbnQ6IEZpbGVVcGxvYWRFdmVudCkge1xuICAgIGNvbnN0IG5vZGU6IE1pbmltYWxOb2RlRW50aXR5ID0gZXZlbnQuZmlsZS5kYXRhO1xuXG4gICAgLy8gY2hlY2sgcm9vdCBhbmQgY2hpbGQgbm9kZXNcbiAgICBpZiAobm9kZSAmJiBub2RlLmVudHJ5ICYmIG5vZGUuZW50cnkucGFyZW50SWQgPT09IHRoaXMuZ2V0UGFyZW50Tm9kZUlkKCkpIHtcbiAgICAgIHRoaXMucmVsb2FkKHRoaXMuc2VsZWN0ZWROb2RlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBjaGVjayB0aGUgY2hpbGQgbm9kZXMgdG8gc2hvdyBkcm9wcGVkIGZvbGRlclxuICAgIGlmIChldmVudCAmJiBldmVudC5maWxlLm9wdGlvbnMucGFyZW50SWQgPT09IHRoaXMuZ2V0UGFyZW50Tm9kZUlkKCkpIHtcbiAgICAgIHRoaXMuZGlzcGxheUZvbGRlclBhcmVudChldmVudC5maWxlLm9wdGlvbnMucGF0aCwgMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmZpbGUub3B0aW9ucy5wYXJlbnRJZCkge1xuICAgICAgaWYgKHRoaXMubm9kZVBhdGgpIHtcbiAgICAgICAgY29uc3QgY29ycmVzcG9uZGluZ05vZGVQYXRoID0gdGhpcy5ub2RlUGF0aC5maW5kKChwYXRoSXRlbSkgPT4gcGF0aEl0ZW0uaWQgPT09IGV2ZW50LmZpbGUub3B0aW9ucy5wYXJlbnRJZCk7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGN1cnJlbnQgZm9sZGVyIGhhcyB0aGUgJ3RyaWdnZXItdXBsb2FkLWZvbGRlcicgYXMgb25lIG9mIGl0cyBwYXJlbnRzXG4gICAgICAgIGlmIChjb3JyZXNwb25kaW5nTm9kZVBhdGgpIHtcbiAgICAgICAgICBjb25zdCBjb3JyZXNwb25kaW5nSW5kZXggPSB0aGlzLm5vZGVQYXRoLmxlbmd0aCAtIHRoaXMubm9kZVBhdGguaW5kZXhPZihjb3JyZXNwb25kaW5nTm9kZVBhdGgpO1xuICAgICAgICAgIHRoaXMuZGlzcGxheUZvbGRlclBhcmVudChldmVudC5maWxlLm9wdGlvbnMucGF0aCwgY29ycmVzcG9uZGluZ0luZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRpc3BsYXlGb2xkZXJQYXJlbnQoZmlsZVBhdGggPSAnJywgaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHBhcmVudE5hbWUgPSBmaWxlUGF0aC5zcGxpdCgnLycpW2luZGV4XTtcbiAgICBjb25zdCBjdXJyZW50Rm9sZGVyc0Rpc3BsYXllZCA9ICh0aGlzLmRvY3VtZW50TGlzdC5kYXRhLmdldFJvd3MoKSBhcyBTaGFyZURhdGFSb3dbXSkgfHwgW107XG5cbiAgICBjb25zdCBhbHJlYWR5RGlzcGxheWVkUGFyZW50Rm9sZGVyID0gY3VycmVudEZvbGRlcnNEaXNwbGF5ZWQuZmluZCgocm93KSA9PiByb3cubm9kZS5lbnRyeS5pc0ZvbGRlciAmJiByb3cubm9kZS5lbnRyeS5uYW1lID09PSBwYXJlbnROYW1lKTtcblxuICAgIGlmIChhbHJlYWR5RGlzcGxheWVkUGFyZW50Rm9sZGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucmVsb2FkKHRoaXMuc2VsZWN0ZWROb2RlKTtcbiAgfVxuXG4gIG9uQ29udGVudENvcGllZChub2RlczogTWluaW1hbE5vZGVFbnRpdHlbXSkge1xuICAgIGNvbnN0IG5ld05vZGUgPSBub2Rlcy5maW5kKChub2RlKSA9PiBub2RlICYmIG5vZGUuZW50cnkgJiYgbm9kZS5lbnRyeS5wYXJlbnRJZCA9PT0gdGhpcy5nZXRQYXJlbnROb2RlSWQoKSk7XG4gICAgaWYgKG5ld05vZGUpIHtcbiAgICAgIHRoaXMucmVsb2FkKHRoaXMuc2VsZWN0ZWROb2RlKTtcbiAgICB9XG4gIH1cblxuICAvLyB0b2RvOiByZXZpZXcgdGhpcyBhcHByb2FjaCBvbmNlIDUuMi4zIGlzIG91dFxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUN1cnJlbnROb2RlKG5vZGU6IE1pbmltYWxOb2RlRW50cnlFbnRpdHkpIHtcbiAgICB0aGlzLm5vZGVQYXRoID0gbnVsbDtcblxuICAgIGlmIChub2RlICYmIG5vZGUucGF0aCAmJiBub2RlLnBhdGguZWxlbWVudHMpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gbm9kZS5wYXRoLmVsZW1lbnRzO1xuXG4gICAgICB0aGlzLm5vZGVQYXRoID0gZWxlbWVudHMubWFwKChwYXRoRWxlbWVudCkgPT4gT2JqZWN0LmFzc2lnbih7fSwgcGF0aEVsZW1lbnQpKTtcblxuICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgaWYgKGVsZW1lbnRzWzFdLm5hbWUgPT09ICdVc2VyIEhvbWVzJykge1xuICAgICAgICAgIGlmICghdGhpcy5pc0FkbWluKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5zcGxpY2UoMCwgMik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnRzWzFdLm5hbWUgPT09ICdTaXRlcycpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm5vcm1hbGl6ZVNpdGVQYXRoKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRDdXJyZW50Rm9sZGVyQWN0aW9uKG5vZGUpKTtcbiAgfVxuXG4gIC8vIHRvZG86IHJldmlldyB0aGlzIGFwcHJvYWNoIG9uY2UgNS4yLjMgaXMgb3V0XG4gIHByaXZhdGUgYXN5bmMgbm9ybWFsaXplU2l0ZVBhdGgobm9kZTogTWluaW1hbE5vZGVFbnRyeUVudGl0eSkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gbm9kZS5wYXRoLmVsZW1lbnRzO1xuXG4gICAgLy8gcmVtb3ZlICdTaXRlcydcbiAgICBlbGVtZW50cy5zcGxpY2UoMSwgMSk7XG5cbiAgICBpZiAodGhpcy5pc1NpdGVDb250YWluZXIobm9kZSkpIHtcbiAgICAgIC8vIHJlbmFtZSAnZG9jdW1lbnRMaWJyYXJ5JyBlbnRyeSB0byB0aGUgdGFyZ2V0IHNpdGUgZGlzcGxheSBuYW1lXG4gICAgICAvLyBjbGlja2luZyBvbiB0aGUgYnJlYWRjcnVtYiBlbnRyeSBsb2FkcyB0aGUgc2l0ZSBjb250ZW50XG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gYXdhaXQgdGhpcy5jb250ZW50QXBpLmdldE5vZGVJbmZvKG5vZGUucGFyZW50SWQpLnRvUHJvbWlzZSgpO1xuICAgICAgbm9kZS5uYW1lID0gcGFyZW50Tm9kZS5wcm9wZXJ0aWVzWydjbTp0aXRsZSddIHx8IHBhcmVudE5vZGUubmFtZTtcblxuICAgICAgLy8gcmVtb3ZlIHRoZSBzaXRlIGVudHJ5XG4gICAgICBlbGVtZW50cy5zcGxpY2UoMSwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJlbW92ZSAnZG9jdW1lbnRMaWJyYXJ5JyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwYXRoXG4gICAgICBjb25zdCBkb2NMaWIgPSBlbGVtZW50cy5maW5kSW5kZXgoKGVsKSA9PiBlbC5uYW1lID09PSAnZG9jdW1lbnRMaWJyYXJ5Jyk7XG4gICAgICBpZiAoZG9jTGliID4gLTEpIHtcbiAgICAgICAgY29uc3Qgc2l0ZUZyYWdtZW50ID0gZWxlbWVudHNbZG9jTGliIC0gMV07XG4gICAgICAgIGNvbnN0IHNpdGVOb2RlID0gYXdhaXQgdGhpcy5jb250ZW50QXBpLmdldE5vZGVJbmZvKHNpdGVGcmFnbWVudC5pZCkudG9Qcm9taXNlKCk7XG5cbiAgICAgICAgLy8gYXBwbHkgU2l0ZSBOYW1lIHRvIHRoZSBwYXJlbnQgZnJhZ21lbnRcbiAgICAgICAgc2l0ZUZyYWdtZW50Lm5hbWUgPSBzaXRlTm9kZS5wcm9wZXJ0aWVzWydjbTp0aXRsZSddIHx8IHNpdGVOb2RlLm5hbWU7XG4gICAgICAgIGVsZW1lbnRzLnNwbGljZShkb2NMaWIsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzU2l0ZUNvbnRhaW5lcihub2RlOiBNaW5pbWFsTm9kZUVudHJ5RW50aXR5KTogYm9vbGVhbiB7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS5hc3BlY3ROYW1lcyAmJiBub2RlLmFzcGVjdE5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBub2RlLmFzcGVjdE5hbWVzLmluZGV4T2YoJ3N0OnNpdGVDb250YWluZXInKSA+PSAwO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc1Jvb3ROb2RlKG5vZGVJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubm9kZSAmJiB0aGlzLm5vZGUucGF0aCAmJiB0aGlzLm5vZGUucGF0aC5lbGVtZW50cyAmJiB0aGlzLm5vZGUucGF0aC5lbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlLnBhdGguZWxlbWVudHNbMF0uaWQgPT09IG5vZGVJZDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb25GaWx0ZXJTZWxlY3RlZChhY3RpdmVGaWx0ZXJzOiBGaWx0ZXJTZWFyY2hbXSkge1xuICAgIGlmIChhY3RpdmVGaWx0ZXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5zaG93SGVhZGVyID0gU2hvd0hlYWRlck1vZGUuQWx3YXlzO1xuICAgICAgdGhpcy5pc0ZpbHRlckhlYWRlckFjdGl2ZSA9IHRydWU7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9GaWx0ZXIoYWN0aXZlRmlsdGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICB0aGlzLmlzRmlsdGVySGVhZGVyQWN0aXZlID0gZmFsc2U7XG4gICAgICB0aGlzLnNob3dIZWFkZXIgPSBTaG93SGVhZGVyTW9kZS5EYXRhO1xuICAgICAgdGhpcy5vbkFsbEZpbHRlckNsZWFyZWQoKTtcbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZVRvRmlsdGVyKGFjdGl2ZUZpbHRlcnM6IEZpbHRlclNlYXJjaFtdKSB7XG4gICAgY29uc3Qgb2JqZWN0RnJvbU1hcCA9IHt9O1xuICAgIGFjdGl2ZUZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyOiBGaWx0ZXJTZWFyY2gpID0+IHtcbiAgICAgIGxldCBwYXJhbVZhbHVlO1xuICAgICAgaWYgKGZpbHRlci52YWx1ZSAmJiBmaWx0ZXIudmFsdWUuZnJvbSAmJiBmaWx0ZXIudmFsdWUudG8pIHtcbiAgICAgICAgcGFyYW1WYWx1ZSA9IGAke2ZpbHRlci52YWx1ZS5mcm9tfXx8JHtmaWx0ZXIudmFsdWUudG99YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcmFtVmFsdWUgPSBmaWx0ZXIudmFsdWU7XG4gICAgICB9XG4gICAgICBvYmplY3RGcm9tTWFwW2ZpbHRlci5rZXldID0gcGFyYW1WYWx1ZTtcbiAgICB9KTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUsIHF1ZXJ5UGFyYW1zOiBvYmplY3RGcm9tTWFwIH0pO1xuICB9XG5cbiAgb25FcnJvcigpIHtcbiAgICB0aGlzLmlzVmFsaWRQYXRoID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxhY2EtcGFnZS1sYXlvdXQgW2hhc0Vycm9yXT1cIiFpc1ZhbGlkUGF0aFwiPlxuICA8ZGl2IGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWhlYWRlclwiPlxuICAgIDxhZGYtYnJlYWRjcnVtYiBbcm9vdF09XCJ0aXRsZVwiIFtmb2xkZXJOb2RlXT1cIm5vZGVcIiBbbWF4SXRlbXNdPVwiaXNTbWFsbFNjcmVlbiA/IDEgOiAwXCIgKG5hdmlnYXRlKT1cIm9uQnJlYWRjcnVtYk5hdmlnYXRlKCRldmVudClcIj4gPC9hZGYtYnJlYWRjcnVtYj5cblxuICAgIDxhZGYtdG9vbGJhciBjbGFzcz1cImFkZi10b29sYmFyLS1pbmxpbmVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVudHJ5IG9mIGFjdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlBY3Rpb25JZFwiPlxuICAgICAgICA8YWNhLXRvb2xiYXItYWN0aW9uIFthY3Rpb25SZWZdPVwiZW50cnlcIj48L2FjYS10b29sYmFyLWFjdGlvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYWRmLXRvb2xiYXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtZXJyb3JcIj5cbiAgICA8YWNhLWdlbmVyaWMtZXJyb3I+PC9hY2EtZ2VuZXJpYy1lcnJvcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiICpuZ0lmPVwiIShzaG93TG9hZGVyJCB8IGFzeW5jKVwiPlxuICAgICAgPGFkZi11cGxvYWQtZHJhZy1hcmVhIFtyb290Rm9sZGVySWRdPVwibm9kZT8uaWRcIiBbZGlzYWJsZWRdPVwiIWNhblVwbG9hZFwiICh1cGRhdGVGaWxlVmVyc2lvbik9XCJvblVwbG9hZE5ld1ZlcnNpb24oJGV2ZW50KVwiPlxuICAgICAgICA8YWRmLWRvY3VtZW50LWxpc3RcbiAgICAgICAgICAjZG9jdW1lbnRMaXN0XG4gICAgICAgICAgYWNhRG9jdW1lbnRMaXN0XG4gICAgICAgICAgYWNhQ29udGV4dEFjdGlvbnNcbiAgICAgICAgICBbZGlzcGxheV09XCJkb2N1bWVudERpc3BsYXlNb2RlJCB8IGFzeW5jXCJcbiAgICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCInbXVsdGlwbGUnXCJcbiAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwiZmFsc2VcIlxuICAgICAgICAgIFtjdXJyZW50Rm9sZGVySWRdPVwibm9kZT8uaWRcIlxuICAgICAgICAgIFtsb2FkaW5nXT1cInRydWVcIlxuICAgICAgICAgIFtzaG93SGVhZGVyXT1cInNob3dIZWFkZXJcIlxuICAgICAgICAgIFtub2RlXT1cIm5vZGVSZXN1bHRcIlxuICAgICAgICAgIFthbGxvd0Ryb3BGaWxlc109XCJ0cnVlXCJcbiAgICAgICAgICBbbmF2aWdhdGVdPVwiZmFsc2VcIlxuICAgICAgICAgIFtzb3J0aW5nXT1cIlsnbmFtZScsICdBU0MnXVwiXG4gICAgICAgICAgW2ltYWdlUmVzb2x2ZXJdPVwiaW1hZ2VSZXNvbHZlclwiXG4gICAgICAgICAgW2hlYWRlckZpbHRlcnNdPVwidHJ1ZVwiXG4gICAgICAgICAgW2ZpbHRlclZhbHVlXT1cInF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAobm9kZS1kYmxjbGljayk9XCJoYW5kbGVOb2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgKG5hbWUtY2xpY2spPVwiaGFuZGxlTm9kZUNsaWNrKCRldmVudClcIlxuICAgICAgICAgIChzb3J0aW5nLWNoYW5nZWQpPVwib25Tb3J0aW5nQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoZmlsdGVyU2VsZWN0aW9uKT1cIm9uRmlsdGVyU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKGVycm9yKT1cIm9uRXJyb3IoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGF0YS1jb2x1bW5zPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlDb2x1bW5JZFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnRlbXBsYXRlICYmICEoY29sdW1uLmRlc2t0b3BPbmx5ICYmIGlzU21hbGxTY3JlZW4pXCI+XG4gICAgICAgICAgICAgICAgPGRhdGEtY29sdW1uXG4gICAgICAgICAgICAgICAgICBba2V5XT1cImNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbHVtbi50aXRsZVwiXG4gICAgICAgICAgICAgICAgICBbdHlwZV09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cImNvbHVtbi5mb3JtYXRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbHVtbi5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICBbc29ydGFibGVdPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgICAgICAgICAgICAgIFtzb3J0aW5nS2V5XT1cImNvbHVtbi5zb3J0aW5nS2V5IHx8IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtY29udGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPGFkZi1keW5hbWljLWNvbHVtbiBbaWRdPVwiY29sdW1uLnRlbXBsYXRlXCIgW2NvbnRleHRdPVwiY29udGV4dFwiPiA8L2FkZi1keW5hbWljLWNvbHVtbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kYXRhLWNvbHVtbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4udGVtcGxhdGUgJiYgIShjb2x1bW4uZGVza3RvcE9ubHkgJiYgaXNTbWFsbFNjcmVlbilcIj5cbiAgICAgICAgICAgICAgICA8ZGF0YS1jb2x1bW5cbiAgICAgICAgICAgICAgICAgIFtrZXldPVwiY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY29sdW1uLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwiY29sdW1uLmZvcm1hdFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sdW1uLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgICAgICAgW3NvcnRpbmdLZXldPVwiY29sdW1uLnNvcnRpbmdLZXkgfHwgY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZGF0YS1jb2x1bW4+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kYXRhLWNvbHVtbnM+XG5cbiAgICAgICAgICA8YWRmLWN1c3RvbS1lbXB0eS1jb250ZW50LXRlbXBsYXRlICpuZ0lmPVwiaXNGaWx0ZXJIZWFkZXJBY3RpdmVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zZWFyY2hfX2Jsb2NrXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJlbXB0eS1zZWFyY2hfX3RleHRcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdBUFAuQlJPV1NFLlNFQVJDSC5OT19GSUxURVJfUkVTVUxUUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9hZGYtY3VzdG9tLWVtcHR5LWNvbnRlbnQtdGVtcGxhdGU+XG4gICAgICAgIDwvYWRmLWRvY3VtZW50LWxpc3Q+XG5cbiAgICAgICAgPGFkZi1wYWdpbmF0aW9uIGFjYVBhZ2luYXRpb24gW3RhcmdldF09XCJkb2N1bWVudExpc3RcIj4gPC9hZGYtcGFnaW5hdGlvbj5cbiAgICAgIDwvYWRmLXVwbG9hZC1kcmFnLWFyZWE+XG4gICAgPC9kaXY+XG5cbiAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgKm5nSWY9XCJzaG93TG9hZGVyJCB8IGFzeW5jXCJcbiAgICAgIGlkPVwiYWRmLWRvY3VtZW50LWxpc3QtbG9hZGluZ1wiXG4gICAgICBjbGFzcz1cImFkZi1kb2N1bWVudC1saXN0LWxvYWRpbmctbWFyZ2luXCJcbiAgICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgICAgW21vZGVdPVwiJ2luZGV0ZXJtaW5hdGUnXCI+XG4gICAgPC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJhY2Etc2lkZWJhclwiICpuZ0lmPVwiaW5mb0RyYXdlck9wZW5lZCQgfCBhc3luY1wiPlxuICAgICAgPGFjYS1pbmZvLWRyYXdlciBbbm9kZV09XCJzZWxlY3Rpb24ubGFzdFwiPjwvYWNhLWluZm8tZHJhd2VyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYWNhLXBhZ2UtbGF5b3V0PlxuIl19
|