@alfresco/adf-process-services-cloud 8.1.0-15043883503 → 8.1.0-15045781057

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.
Files changed (96) hide show
  1. package/esm2022/lib/app/components/app-details-cloud/app-details-cloud.component.mjs +4 -4
  2. package/esm2022/lib/app/components/app-list-cloud/app-list-cloud.component.mjs +4 -4
  3. package/esm2022/lib/app/services/apps-process-cloud.service.mjs +4 -4
  4. package/esm2022/lib/common/date-range-filter/date-range-filter.component.mjs +4 -4
  5. package/esm2022/lib/common/date-range-filter/date-range-filter.service.mjs +4 -4
  6. package/esm2022/lib/form/components/cloud-form-rendering.service.mjs +4 -4
  7. package/esm2022/lib/form/components/form-cloud-custom-outcomes.component.mjs +4 -4
  8. package/esm2022/lib/form/components/form-cloud.component.mjs +14 -7
  9. package/esm2022/lib/form/components/form-definition-selector-cloud.component.mjs +4 -4
  10. package/esm2022/lib/form/components/spinner/form-spinner.component.mjs +4 -4
  11. package/esm2022/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.mjs +4 -4
  12. package/esm2022/lib/form/components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component.mjs +4 -4
  13. package/esm2022/lib/form/components/widgets/data-table/data-table.widget.mjs +4 -4
  14. package/esm2022/lib/form/components/widgets/date/date-cloud.widget.mjs +4 -4
  15. package/esm2022/lib/form/components/widgets/display-external-property/display-external-property.widget.mjs +4 -4
  16. package/esm2022/lib/form/components/widgets/display-rich-text/display-rich-text.widget.mjs +4 -4
  17. package/esm2022/lib/form/components/widgets/dropdown/dropdown-cloud.widget.mjs +4 -4
  18. package/esm2022/lib/form/components/widgets/file-viewer/file-viewer.widget.mjs +4 -4
  19. package/esm2022/lib/form/components/widgets/group/group-cloud.widget.mjs +4 -4
  20. package/esm2022/lib/form/components/widgets/people/people-cloud.widget.mjs +4 -4
  21. package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.mjs +4 -4
  22. package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer.widget.mjs +4 -4
  23. package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.mjs +4 -4
  24. package/esm2022/lib/form/components/widgets/upload/upload-cloud.widget.mjs +4 -4
  25. package/esm2022/lib/form/form-cloud.module.mjs +5 -5
  26. package/esm2022/lib/form/services/content-cloud-node-selector.service.mjs +4 -4
  27. package/esm2022/lib/form/services/display-mode.service.mjs +4 -4
  28. package/esm2022/lib/form/services/form-cloud.service.mjs +4 -4
  29. package/esm2022/lib/form/services/form-definition-selector-cloud.service.mjs +4 -4
  30. package/esm2022/lib/form/services/form-utils.service.mjs +4 -4
  31. package/esm2022/lib/form/services/process-cloud-content.service.mjs +4 -4
  32. package/esm2022/lib/form/services/spinner/form-cloud-spinner.service.mjs +4 -4
  33. package/esm2022/lib/group/components/group-cloud.component.mjs +4 -4
  34. package/esm2022/lib/group/group-cloud.module.mjs +5 -5
  35. package/esm2022/lib/group/services/identity-group.service.mjs +4 -4
  36. package/esm2022/lib/people/components/people-cloud.component.mjs +4 -4
  37. package/esm2022/lib/people/people-cloud.module.mjs +5 -5
  38. package/esm2022/lib/people/services/identity-user.service.mjs +4 -4
  39. package/esm2022/lib/process/process-cloud.module.mjs +5 -5
  40. package/esm2022/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.mjs +4 -4
  41. package/esm2022/lib/process/process-filters/components/process-filter-dialog/process-filter-dialog-cloud.component.mjs +4 -4
  42. package/esm2022/lib/process/process-filters/components/process-filters/process-filters-cloud.component.mjs +4 -4
  43. package/esm2022/lib/process/process-filters/process-filters-cloud.module.mjs +5 -5
  44. package/esm2022/lib/process/process-filters/services/process-filter-cloud.service.mjs +4 -4
  45. package/esm2022/lib/process/process-header/components/process-header-cloud.component.mjs +4 -4
  46. package/esm2022/lib/process/process-header/process-header-cloud.module.mjs +5 -5
  47. package/esm2022/lib/process/process-list/components/process-list-cloud.component.mjs +4 -4
  48. package/esm2022/lib/process/process-list/process-list-cloud.module.mjs +5 -5
  49. package/esm2022/lib/process/process-list/services/process-list-cloud.service.mjs +4 -4
  50. package/esm2022/lib/process/process-list/services/process-task-list-cloud.service.mjs +4 -4
  51. package/esm2022/lib/process/services/process-cloud.service.mjs +4 -4
  52. package/esm2022/lib/process/start-process/components/start-process-cloud.component.mjs +4 -4
  53. package/esm2022/lib/process/start-process/services/start-process-cloud.service.mjs +4 -4
  54. package/esm2022/lib/process-services-cloud.module.mjs +5 -5
  55. package/esm2022/lib/rich-text-editor/rich-text-editor.component.mjs +4 -4
  56. package/esm2022/lib/rich-text-editor/rich-text-editor.module.mjs +5 -5
  57. package/esm2022/lib/screen/components/screen-cloud/screen-cloud.component.mjs +4 -4
  58. package/esm2022/lib/services/base-cloud.service.mjs +4 -4
  59. package/esm2022/lib/services/local-preference-cloud.service.mjs +4 -4
  60. package/esm2022/lib/services/notification-cloud.service.mjs +4 -4
  61. package/esm2022/lib/services/screen-rendering.service.mjs +4 -4
  62. package/esm2022/lib/services/user-preference-cloud.service.mjs +4 -4
  63. package/esm2022/lib/services/variable-mapper.sevice.mjs +4 -4
  64. package/esm2022/lib/services/web-socket.service.mjs +4 -4
  65. package/esm2022/lib/task/services/task-cloud.service.mjs +4 -4
  66. package/esm2022/lib/task/task-cloud.module.mjs +5 -5
  67. package/esm2022/lib/task/task-filters/components/base-task-filters-cloud.component.mjs +4 -4
  68. package/esm2022/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.mjs +4 -4
  69. package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.mjs +4 -4
  70. package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.mjs +7 -5
  71. package/esm2022/lib/task/task-filters/components/service-task-filters/service-task-filters-cloud.component.mjs +4 -4
  72. package/esm2022/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.mjs +4 -4
  73. package/esm2022/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.mjs +4 -4
  74. package/esm2022/lib/task/task-filters/components/task-filters/task-filters-cloud.component.mjs +4 -4
  75. package/esm2022/lib/task/task-filters/services/service-task-filter-cloud.service.mjs +4 -4
  76. package/esm2022/lib/task/task-filters/services/task-filter-cloud.service.mjs +4 -4
  77. package/esm2022/lib/task/task-filters/task-filters-cloud.module.mjs +5 -5
  78. package/esm2022/lib/task/task-form/components/task-form-cloud/task-form-cloud.component.mjs +4 -4
  79. package/esm2022/lib/task/task-form/components/user-task-cloud/complete-task/complete-task.directive.mjs +4 -4
  80. package/esm2022/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.mjs +4 -4
  81. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/claim-task/claim-task-cloud.directive.mjs +4 -4
  82. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/unclaim-task/unclaim-task-cloud.directive.mjs +4 -4
  83. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/user-task-cloud-buttons.component.mjs +4 -4
  84. package/esm2022/lib/task/task-form/task-form.module.mjs +5 -5
  85. package/esm2022/lib/task/task-header/components/task-header-cloud.component.mjs +4 -4
  86. package/esm2022/lib/task/task-header/task-header-cloud.module.mjs +5 -5
  87. package/esm2022/lib/task/task-list/components/base-task-list-cloud.component.mjs +4 -4
  88. package/esm2022/lib/task/task-list/components/service-task-list/service-task-list-cloud.component.mjs +4 -4
  89. package/esm2022/lib/task/task-list/components/task-list/task-list-cloud.component.mjs +4 -4
  90. package/esm2022/lib/task/task-list/services/service-task-list-cloud.service.mjs +4 -4
  91. package/esm2022/lib/task/task-list/services/task-list-cloud.service.mjs +4 -4
  92. package/esm2022/lib/task/task-list/task-list-cloud.module.mjs +5 -5
  93. package/fesm2022/adf-process-services-cloud.mjs +308 -299
  94. package/fesm2022/adf-process-services-cloud.mjs.map +1 -1
  95. package/lib/common/date-range-filter/date-range-filter.service.d.ts +1 -1
  96. package/package.json +4 -4
@@ -121,10 +121,10 @@ export class TaskAssignmentFilterCloudComponent {
121
121
  isFilterPropertyDefined() {
122
122
  return !!this.taskFilterProperty.attributes && !!this.taskFilterProperty.value;
123
123
  }
124
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TaskAssignmentFilterCloudComponent, deps: [{ token: i1.IdentityUserService }], target: i0.ɵɵFactoryTarget.Component }); }
125
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TaskAssignmentFilterCloudComponent, isStandalone: true, selector: "adf-cloud-task-assignment-filter", inputs: { appName: "appName", taskFilterProperty: "taskFilterProperty", status: "status" }, outputs: { assignedUsersChange: "assignedUsersChange", assignedGroupsChange: "assignedGroupsChange", assignmentTypeChange: "assignmentTypeChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"adf-cloud-assignment-container\">\n <mat-form-field floatLabel=\"auto\" class=\"adf-task-assignment-filter-container\">\n <mat-label class=\"adf-task-assignment-filter-label\"\n [ngClass]=\"{'adf-task-assignment-filter-label--focus': typeDropdown.focused}\">\n {{ 'ADF_CLOUD_TASK_ASSIGNMENT_FILTER.ASSIGNMENT_TYPE' | translate }}\n </mat-label>\n <mat-select class=\"adf-task-assignment-filter\"\n [(ngModel)]=\"assignmentType\" #typeDropdown\n [attr.data-automation-id]=\"'adf-task-assignment-filter-select'\"\n (selectionChange)=\"onAssignmentTypeChange($event)\">\n <mat-option *ngFor=\"let assignmentType of assignmentTypeOptions\"\n class=\"adf-task-assignment-filter-option\"\n [ngClass]=\"{'adf-task-assignment-filter-option--selected': filterOption.selected}\"\n [value]=\"assignmentType.value\" #filterOption\n [attr.data-automation-id]=\"'adf-task-assignment-filter-' + assignmentType.value\">\n {{ assignmentType.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <adf-cloud-group *ngIf=\"isCandidateGroupsType()\"\n class=\"adf-group-cloud-filter\"\n data-automation-id=\"adf-group-cloud-candidate-groups-filter\"\n [appName]=\"appName\"\n [preSelectGroups]=\"candidateGroups\"\n [mode]=\"taskFilterProperty.selectionMode\"\n [title]=\"'ADF_CLOUD_TASK_LIST.START_TASK.FORM.LABEL.CANDIDATE_GROUP'\"\n (changedGroups)=\"onChangedGroups($event)\" />\n\n <adf-cloud-people *ngIf=\"isAssignedToType()\"\n class=\"adf-group-cloud-filter\"\n data-automation-id=\"adf-group-cloud-assigned-to-filter\"\n [preSelectUsers]=\"assignedUsers\"\n [title]=\"'ADF_CLOUD_TASK_LIST.START_TASK.FORM.LABEL.ASSIGNEE'\"\n [appName]=\"appName\"\n (changedUsers)=\"onChangedAssignedUsers($event)\" />\n</div>\n", styles: [".adf-cloud-assignment-container{display:flex;flex-wrap:wrap}.adf-task-assignment-filter{margin-right:10px}.adf-task-assignment-filter-container{width:100%}.adf-task-assignment-filter-label{color:var(--adf-theme-foreground-secondary-text-color)}.adf-task-assignment-filter-label.adf-task-assignment-filter-label--focus{color:var(--theme-primary-color)}.adf-task-assignment-filter-option{color:var(--adf-theme-foreground-text-color)}.adf-task-assignment-filter-option.adf-task-assignment-filter-option--selected:not(.adf-task-assignment-filter-option:disabled){color:var(--theme-primary-color)}.adf-group-cloud-filter{flex:1;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GroupCloudComponent, selector: "adf-cloud-group", inputs: ["appName", "title", "mode", "preSelectGroups", "validate", "readOnly", "required", "groupChipsCtrl", "searchGroupsControl", "roles"], outputs: ["selectGroup", "removeGroup", "changedGroups", "warning"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PeopleCloudComponent, selector: "adf-cloud-people", inputs: ["appName", "mode", "roles", "validate", "readOnly", "required", "preSelectUsers", "excludedUsers", "groupsRestriction", "userChipsCtrl", "searchUserCtrl", "title", "placeholder", "hideInputOnSingleSelection", "formFieldAppearance", "formFieldSubscriptSizing", "showErrors", "showFullNameOnHover"], outputs: ["selectUser", "removeUser", "changedUsers", "warning"] }] }); }
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: TaskAssignmentFilterCloudComponent, deps: [{ token: i1.IdentityUserService }], target: i0.ɵɵFactoryTarget.Component }); }
125
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: TaskAssignmentFilterCloudComponent, isStandalone: true, selector: "adf-cloud-task-assignment-filter", inputs: { appName: "appName", taskFilterProperty: "taskFilterProperty", status: "status" }, outputs: { assignedUsersChange: "assignedUsersChange", assignedGroupsChange: "assignedGroupsChange", assignmentTypeChange: "assignmentTypeChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"adf-cloud-assignment-container\">\n <mat-form-field floatLabel=\"auto\" class=\"adf-task-assignment-filter-container\">\n <mat-label class=\"adf-task-assignment-filter-label\"\n [ngClass]=\"{'adf-task-assignment-filter-label--focus': typeDropdown.focused}\">\n {{ 'ADF_CLOUD_TASK_ASSIGNMENT_FILTER.ASSIGNMENT_TYPE' | translate }}\n </mat-label>\n <mat-select class=\"adf-task-assignment-filter\"\n [(ngModel)]=\"assignmentType\" #typeDropdown\n [attr.data-automation-id]=\"'adf-task-assignment-filter-select'\"\n (selectionChange)=\"onAssignmentTypeChange($event)\">\n <mat-option *ngFor=\"let assignmentType of assignmentTypeOptions\"\n class=\"adf-task-assignment-filter-option\"\n [ngClass]=\"{'adf-task-assignment-filter-option--selected': filterOption.selected}\"\n [value]=\"assignmentType.value\" #filterOption\n [attr.data-automation-id]=\"'adf-task-assignment-filter-' + assignmentType.value\">\n {{ assignmentType.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <adf-cloud-group *ngIf=\"isCandidateGroupsType()\"\n class=\"adf-group-cloud-filter\"\n data-automation-id=\"adf-group-cloud-candidate-groups-filter\"\n [appName]=\"appName\"\n [preSelectGroups]=\"candidateGroups\"\n [mode]=\"taskFilterProperty.selectionMode\"\n [title]=\"'ADF_CLOUD_TASK_LIST.START_TASK.FORM.LABEL.CANDIDATE_GROUP'\"\n (changedGroups)=\"onChangedGroups($event)\" />\n\n <adf-cloud-people *ngIf=\"isAssignedToType()\"\n class=\"adf-group-cloud-filter\"\n data-automation-id=\"adf-group-cloud-assigned-to-filter\"\n [preSelectUsers]=\"assignedUsers\"\n [title]=\"'ADF_CLOUD_TASK_LIST.START_TASK.FORM.LABEL.ASSIGNEE'\"\n [appName]=\"appName\"\n (changedUsers)=\"onChangedAssignedUsers($event)\" />\n</div>\n", styles: [".adf-cloud-assignment-container{display:flex;flex-wrap:wrap}.adf-task-assignment-filter{margin-right:10px}.adf-task-assignment-filter-container{width:100%}.adf-task-assignment-filter-label{color:var(--adf-theme-foreground-secondary-text-color)}.adf-task-assignment-filter-label.adf-task-assignment-filter-label--focus{color:var(--theme-primary-color)}.adf-task-assignment-filter-option{color:var(--adf-theme-foreground-text-color)}.adf-task-assignment-filter-option.adf-task-assignment-filter-option--selected:not(.adf-task-assignment-filter-option:disabled){color:var(--theme-primary-color)}.adf-group-cloud-filter{flex:1;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GroupCloudComponent, selector: "adf-cloud-group", inputs: ["appName", "title", "mode", "preSelectGroups", "validate", "readOnly", "required", "groupChipsCtrl", "searchGroupsControl", "roles"], outputs: ["selectGroup", "removeGroup", "changedGroups", "warning"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PeopleCloudComponent, selector: "adf-cloud-people", inputs: ["appName", "mode", "roles", "validate", "readOnly", "required", "preSelectUsers", "excludedUsers", "groupsRestriction", "userChipsCtrl", "searchUserCtrl", "title", "placeholder", "hideInputOnSingleSelection", "formFieldAppearance", "formFieldSubscriptSizing", "showErrors", "showFullNameOnHover"], outputs: ["selectUser", "removeUser", "changedUsers", "warning"] }] }); }
126
126
  }
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TaskAssignmentFilterCloudComponent, decorators: [{
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: TaskAssignmentFilterCloudComponent, decorators: [{
128
128
  type: Component,
129
129
  args: [{ selector: 'adf-cloud-task-assignment-filter', standalone: true, imports: [CommonModule, GroupCloudComponent, TranslateModule, MatSelectModule, FormsModule, PeopleCloudComponent], template: "<div class=\"adf-cloud-assignment-container\">\n <mat-form-field floatLabel=\"auto\" class=\"adf-task-assignment-filter-container\">\n <mat-label class=\"adf-task-assignment-filter-label\"\n [ngClass]=\"{'adf-task-assignment-filter-label--focus': typeDropdown.focused}\">\n {{ 'ADF_CLOUD_TASK_ASSIGNMENT_FILTER.ASSIGNMENT_TYPE' | translate }}\n </mat-label>\n <mat-select class=\"adf-task-assignment-filter\"\n [(ngModel)]=\"assignmentType\" #typeDropdown\n [attr.data-automation-id]=\"'adf-task-assignment-filter-select'\"\n (selectionChange)=\"onAssignmentTypeChange($event)\">\n <mat-option *ngFor=\"let assignmentType of assignmentTypeOptions\"\n class=\"adf-task-assignment-filter-option\"\n [ngClass]=\"{'adf-task-assignment-filter-option--selected': filterOption.selected}\"\n [value]=\"assignmentType.value\" #filterOption\n [attr.data-automation-id]=\"'adf-task-assignment-filter-' + assignmentType.value\">\n {{ assignmentType.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <adf-cloud-group *ngIf=\"isCandidateGroupsType()\"\n class=\"adf-group-cloud-filter\"\n data-automation-id=\"adf-group-cloud-candidate-groups-filter\"\n [appName]=\"appName\"\n [preSelectGroups]=\"candidateGroups\"\n [mode]=\"taskFilterProperty.selectionMode\"\n [title]=\"'ADF_CLOUD_TASK_LIST.START_TASK.FORM.LABEL.CANDIDATE_GROUP'\"\n (changedGroups)=\"onChangedGroups($event)\" />\n\n <adf-cloud-people *ngIf=\"isAssignedToType()\"\n class=\"adf-group-cloud-filter\"\n data-automation-id=\"adf-group-cloud-assigned-to-filter\"\n [preSelectUsers]=\"assignedUsers\"\n [title]=\"'ADF_CLOUD_TASK_LIST.START_TASK.FORM.LABEL.ASSIGNEE'\"\n [appName]=\"appName\"\n (changedUsers)=\"onChangedAssignedUsers($event)\" />\n</div>\n", styles: [".adf-cloud-assignment-container{display:flex;flex-wrap:wrap}.adf-task-assignment-filter{margin-right:10px}.adf-task-assignment-filter-container{width:100%}.adf-task-assignment-filter-label{color:var(--adf-theme-foreground-secondary-text-color)}.adf-task-assignment-filter-label.adf-task-assignment-filter-label--focus{color:var(--theme-primary-color)}.adf-task-assignment-filter-option{color:var(--adf-theme-foreground-text-color)}.adf-task-assignment-filter-option.adf-task-assignment-filter-option--selected:not(.adf-task-assignment-filter-option:disabled){color:var(--theme-primary-color)}.adf-group-cloud-filter{flex:1;width:100%}\n"] }]
130
130
  }], ctorParameters: () => [{ type: i1.IdentityUserService }], propDecorators: { appName: [{
@@ -140,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
140
140
  }], assignmentTypeChange: [{
141
141
  type: Output
142
142
  }] } });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1hc3NpZ25tZW50LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL3Rhc2svdGFzay1maWx0ZXJzL2NvbXBvbmVudHMvdGFzay1hc3NpZ25tZW50LWZpbHRlci90YXNrLWFzc2lnbm1lbnQtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWZpbHRlcnMvY29tcG9uZW50cy90YXNrLWFzc2lnbm1lbnQtZmlsdGVyL3Rhc2stYXNzaWdubWVudC1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUF3QixnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBR3hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7Ozs7Ozs7O0FBUzVGLE1B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a0IsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7SUFDbkYsQ0FBQzsrR0FoSFEsa0NBQWtDO21HQUFsQyxrQ0FBa0Msa1dDckMvQyw2L0RBcUNBLHFyQkRKYyxZQUFZLDhWQUFFLG1CQUFtQiwrUUFBRSxlQUFlLDJGQUFFLGVBQWUsKzdCQUFFLFdBQVcsK1ZBQUUsb0JBQW9COzs0RkFJdkcsa0NBQWtDO2tCQVA5QyxTQUFTOytCQUNJLGtDQUFrQyxjQUNoQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLENBQUM7d0ZBS3hHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFFRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNlbGVjdENoYW5nZSwgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IEFzc2lnbm1lbnRUeXBlLCBUYXNrRmlsdGVyUHJvcGVydGllcywgVGFza1N0YXR1c0ZpbHRlciB9IGZyb20gJy4uLy4uL21vZGVscy9maWx0ZXItY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgSWRlbnRpdHlVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9wZW9wbGUvbW9kZWxzL2lkZW50aXR5LXVzZXIubW9kZWwnO1xuaW1wb3J0IHsgSWRlbnRpdHlVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3Blb3BsZS9zZXJ2aWNlcy9pZGVudGl0eS11c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWRlbnRpdHlHcm91cE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vZ3JvdXAvbW9kZWxzL2lkZW50aXR5LWdyb3VwLm1vZGVsJztcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vZWRpdC10YXNrLWZpbHRlcnMvYmFzZS1lZGl0LXRhc2stZmlsdGVyLWNsb3VkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHcm91cENsb3VkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vZ3JvdXAvY29tcG9uZW50cy9ncm91cC1jbG91ZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGVvcGxlQ2xvdWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtY2xvdWQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtY2xvdWQtdGFzay1hc3NpZ25tZW50LWZpbHRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBHcm91cENsb3VkQ29tcG9uZW50LCBUcmFuc2xhdGVNb2R1bGUsIE1hdFNlbGVjdE1vZHVsZSwgRm9ybXNNb2R1bGUsIFBlb3BsZUNsb3VkQ29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFzay1hc3NpZ25tZW50LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFzay1hc3NpZ25tZW50LWZpbHRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRhc2tBc3NpZ25tZW50RmlsdGVyQ2xvdWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgYXBwTmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdGFza0ZpbHRlclByb3BlcnR5OiBUYXNrRmlsdGVyUHJvcGVydGllcztcblxuICAgIEBJbnB1dCgpIHN0YXR1czogVGFza1N0YXR1c0ZpbHRlcjtcblxuICAgIEBPdXRwdXQoKSBhc3NpZ25lZFVzZXJzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJZGVudGl0eVVzZXJNb2RlbFtdPigpO1xuXG4gICAgQE91dHB1dCgpIGFzc2lnbmVkR3JvdXBzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJZGVudGl0eUdyb3VwTW9kZWxbXT4oKTtcblxuICAgIEBPdXRwdXQoKSBhc3NpZ25tZW50VHlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXNzaWdubWVudFR5cGU+KCk7XG5cbiAgICBhc3NpZ25tZW50VHlwZTogQXNzaWdubWVudFR5cGU7XG4gICAgYXNzaWduZWRVc2VyczogSWRlbnRpdHlVc2VyTW9kZWxbXSA9IFtdO1xuICAgIGNhbmRpZGF0ZUdyb3VwczogSWRlbnRpdHlHcm91cE1vZGVsW10gPSBbXTtcbiAgICBncm91cEZvcm0gPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgIGFzc2lnbm1lbnRUeXBlT3B0aW9uczogRHJvcGRvd25PcHRpb25bXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaWRlbnRpdHlVc2VyU2VydmljZTogSWRlbnRpdHlVc2VyU2VydmljZSkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXM/LnN0YXR1cz8uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzPy5zdGF0dXM/LnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQXNzaWdubWVudFR5cGVCeVN0YXR1cyhjaGFuZ2VzPy5zdGF0dXM/LmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5hc3NpZ25tZW50VHlwZU9wdGlvbnMgPSB0aGlzLmdldEFzc2lnbm1lbnRUeXBlT3B0aW9ucygpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzRmlsdGVyUHJvcGVydHlEZWZpbmVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5pdGlhbENhbmRpZGF0ZUdyb3VwcygpO1xuICAgICAgICAgICAgdGhpcy5zZXRJbml0aWFsQXNzaWduZWRVc2VycygpO1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0QXNzaWdubWVudFR5cGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzQ2FuZGlkYXRlR3JvdXBzVHlwZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzaWdubWVudFR5cGUgPT09IEFzc2lnbm1lbnRUeXBlLkNBTkRJREFURV9HUk9VUFM7XG4gICAgfVxuXG4gICAgaXNBc3NpZ25lZFRvVHlwZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzaWdubWVudFR5cGUgPT09IEFzc2lnbm1lbnRUeXBlLkFTU0lHTkVEX1RPO1xuICAgIH1cblxuICAgIG9uQXNzaWdubWVudFR5cGVDaGFuZ2UoYXNzaWdubWVudENoYW5nZTogTWF0U2VsZWN0Q2hhbmdlKSB7XG4gICAgICAgIHRoaXMuY2FuZGlkYXRlR3JvdXBzID0gW107XG4gICAgICAgIHRoaXMuYXNzaWduZWRVc2VycyA9IFtdO1xuXG4gICAgICAgIGlmIChhc3NpZ25tZW50Q2hhbmdlLnZhbHVlID09PSBBc3NpZ25tZW50VHlwZS5DVVJSRU5UX1VTRVIpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWduZWRVc2Vyc0NoYW5nZS5lbWl0KFt0aGlzLmlkZW50aXR5VXNlclNlcnZpY2UuZ2V0Q3VycmVudFVzZXJJbmZvKCldKTtcbiAgICAgICAgfSBlbHNlIGlmIChhc3NpZ25tZW50Q2hhbmdlLnZhbHVlID09PSBBc3NpZ25tZW50VHlwZS5OT05FKSB7XG4gICAgICAgICAgICB0aGlzLmFzc2lnbmVkVXNlcnNDaGFuZ2UuZW1pdChbXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFzc2lnbm1lbnRUeXBlID0gYXNzaWdubWVudENoYW5nZS52YWx1ZTtcbiAgICAgICAgdGhpcy5hc3NpZ25tZW50VHlwZUNoYW5nZS5lbWl0KHRoaXMuYXNzaWdubWVudFR5cGUpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlZEdyb3Vwcyhncm91cHM6IElkZW50aXR5R3JvdXBNb2RlbFtdKSB7XG4gICAgICAgIHRoaXMuYXNzaWduZWRHcm91cHNDaGFuZ2UuZW1pdChncm91cHMpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlZEFzc2lnbmVkVXNlcnModXNlcnM6IElkZW50aXR5VXNlck1vZGVsW10pIHtcbiAgICAgICAgdGhpcy5hc3NpZ25lZFVzZXJzQ2hhbmdlLmVtaXQodXNlcnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlQXNzaWdubWVudFR5cGVCeVN0YXR1cyhzdGF0dXM6IFRhc2tTdGF0dXNGaWx0ZXIpIHtcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgIGNhc2UgVGFza1N0YXR1c0ZpbHRlci5DUkVBVEVEOlxuICAgICAgICAgICAgICAgIHRoaXMuYXNzaWdubWVudFR5cGUgPSBBc3NpZ25tZW50VHlwZS5VTkFTU0lHTkVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUYXNrU3RhdHVzRmlsdGVyLkFTU0lHTkVEOlxuICAgICAgICAgICAgICAgIHRoaXMuYXNzaWdubWVudFR5cGUgPSBBc3NpZ25tZW50VHlwZS5BU1NJR05FRF9UTztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5hc3NpZ25tZW50VHlwZSA9IEFzc2lnbm1lbnRUeXBlLk5PTkU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFzc2lnbm1lbnRUeXBlT3B0aW9ucygpOiBEcm9wZG93bk9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgdmFsdWU6IEFzc2lnbm1lbnRUeXBlLk5PTkUsIGxhYmVsOiBgQURGX0NMT1VEX1RBU0tfQVNTSUdOTUVOVF9GSUxURVIuJHtBc3NpZ25tZW50VHlwZS5OT05FfWAgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6IEFzc2lnbm1lbnRUeXBlLlVOQVNTSUdORUQsIGxhYmVsOiBgQURGX0NMT1VEX1RBU0tfQVNTSUdOTUVOVF9GSUxURVIuJHtBc3NpZ25tZW50VHlwZS5VTkFTU0lHTkVEfWAgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6IEFzc2lnbm1lbnRUeXBlLkFTU0lHTkVEX1RPLCBsYWJlbDogYEFERl9DTE9VRF9UQVNLX0FTU0lHTk1FTlRfRklMVEVSLiR7QXNzaWdubWVudFR5cGUuQVNTSUdORURfVE99YCB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogQXNzaWdubWVudFR5cGUuQ1VSUkVOVF9VU0VSLCBsYWJlbDogYEFERl9DTE9VRF9UQVNLX0FTU0lHTk1FTlRfRklMVEVSLiR7QXNzaWdubWVudFR5cGUuQ1VSUkVOVF9VU0VSfWAgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6IEFzc2lnbm1lbnRUeXBlLkNBTkRJREFURV9HUk9VUFMsIGxhYmVsOiBgQURGX0NMT1VEX1RBU0tfQVNTSUdOTUVOVF9GSUxURVIuJHtBc3NpZ25tZW50VHlwZS5DQU5ESURBVEVfR1JPVVBTfWAgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdEFzc2lnbm1lbnRUeXBlKCkge1xuICAgICAgICBpZiAodGhpcy5jYW5kaWRhdGVHcm91cHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5hc3NpZ25tZW50VHlwZSA9IEFzc2lnbm1lbnRUeXBlLkNBTkRJREFURV9HUk9VUFM7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hc3NpZ25lZFVzZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWdubWVudFR5cGUgPSBBc3NpZ25tZW50VHlwZS5BU1NJR05FRF9UTztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWdubWVudFR5cGUgPSBBc3NpZ25tZW50VHlwZS5OT05FO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbml0aWFsQ2FuZGlkYXRlR3JvdXBzKCkge1xuICAgICAgICBjb25zdCBjYW5kaWRhdGVHcm91cHNBdHRyID0gdGhpcy50YXNrRmlsdGVyUHJvcGVydHkuYXR0cmlidXRlc1snY2FuZGlkYXRlR3JvdXBzJ107XG4gICAgICAgIHRoaXMuY2FuZGlkYXRlR3JvdXBzID0gdGhpcy50YXNrRmlsdGVyUHJvcGVydHkudmFsdWVbY2FuZGlkYXRlR3JvdXBzQXR0cl07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbml0aWFsQXNzaWduZWRVc2VycygpIHtcbiAgICAgICAgY29uc3QgYXNzaWduZWRVc2Vyc0F0dHIgPSB0aGlzLnRhc2tGaWx0ZXJQcm9wZXJ0eS5hdHRyaWJ1dGVzWydhc3NpZ25lZFVzZXJzJ107XG4gICAgICAgIHRoaXMuYXNzaWduZWRVc2VycyA9IHRoaXMudGFza0ZpbHRlclByb3BlcnR5LnZhbHVlW2Fzc2lnbmVkVXNlcnNBdHRyXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsdGVyUHJvcGVydHlEZWZpbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRhc2tGaWx0ZXJQcm9wZXJ0eS5hdHRyaWJ1dGVzICYmICEhdGhpcy50YXNrRmlsdGVyUHJvcGVydHkudmFsdWU7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZi1jbG91ZC1hc3NpZ25tZW50LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBmbG9hdExhYmVsPVwiYXV0b1wiIGNsYXNzPVwiYWRmLXRhc2stYXNzaWdubWVudC1maWx0ZXItY29udGFpbmVyXCI+XG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJhZGYtdGFzay1hc3NpZ25tZW50LWZpbHRlci1sYWJlbFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FkZi10YXNrLWFzc2lnbm1lbnQtZmlsdGVyLWxhYmVsLS1mb2N1cyc6IHR5cGVEcm9wZG93bi5mb2N1c2VkfVwiPlxuICAgICAgICAgICAge3sgJ0FERl9DTE9VRF9UQVNLX0FTU0lHTk1FTlRfRklMVEVSLkFTU0lHTk1FTlRfVFlQRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtc2VsZWN0IGNsYXNzPVwiYWRmLXRhc2stYXNzaWdubWVudC1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImFzc2lnbm1lbnRUeXBlXCIgI3R5cGVEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi10YXNrLWFzc2lnbm1lbnQtZmlsdGVyLXNlbGVjdCdcIlxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQXNzaWdubWVudFR5cGVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGFzc2lnbm1lbnRUeXBlIG9mIGFzc2lnbm1lbnRUeXBlT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtdGFzay1hc3NpZ25tZW50LWZpbHRlci1vcHRpb25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWRmLXRhc2stYXNzaWdubWVudC1maWx0ZXItb3B0aW9uLS1zZWxlY3RlZCc6IGZpbHRlck9wdGlvbi5zZWxlY3RlZH1cIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhc3NpZ25tZW50VHlwZS52YWx1ZVwiICNmaWx0ZXJPcHRpb25cbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi10YXNrLWFzc2lnbm1lbnQtZmlsdGVyLScgKyBhc3NpZ25tZW50VHlwZS52YWx1ZVwiPlxuICAgICAgICAgICAgICAgIHt7IGFzc2lnbm1lbnRUeXBlLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPGFkZi1jbG91ZC1ncm91cCAqbmdJZj1cImlzQ2FuZGlkYXRlR3JvdXBzVHlwZSgpXCJcbiAgICAgICAgY2xhc3M9XCJhZGYtZ3JvdXAtY2xvdWQtZmlsdGVyXCJcbiAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWdyb3VwLWNsb3VkLWNhbmRpZGF0ZS1ncm91cHMtZmlsdGVyXCJcbiAgICAgICAgW2FwcE5hbWVdPVwiYXBwTmFtZVwiXG4gICAgICAgIFtwcmVTZWxlY3RHcm91cHNdPVwiY2FuZGlkYXRlR3JvdXBzXCJcbiAgICAgICAgW21vZGVdPVwidGFza0ZpbHRlclByb3BlcnR5LnNlbGVjdGlvbk1vZGVcIlxuICAgICAgICBbdGl0bGVdPVwiJ0FERl9DTE9VRF9UQVNLX0xJU1QuU1RBUlRfVEFTSy5GT1JNLkxBQkVMLkNBTkRJREFURV9HUk9VUCdcIlxuICAgICAgICAoY2hhbmdlZEdyb3Vwcyk9XCJvbkNoYW5nZWRHcm91cHMoJGV2ZW50KVwiIC8+XG5cbiAgICA8YWRmLWNsb3VkLXBlb3BsZSAqbmdJZj1cImlzQXNzaWduZWRUb1R5cGUoKVwiXG4gICAgICAgIGNsYXNzPVwiYWRmLWdyb3VwLWNsb3VkLWZpbHRlclwiXG4gICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1ncm91cC1jbG91ZC1hc3NpZ25lZC10by1maWx0ZXJcIlxuICAgICAgICBbcHJlU2VsZWN0VXNlcnNdPVwiYXNzaWduZWRVc2Vyc1wiXG4gICAgICAgIFt0aXRsZV09XCInQURGX0NMT1VEX1RBU0tfTElTVC5TVEFSVF9UQVNLLkZPUk0uTEFCRUwuQVNTSUdORUUnXCJcbiAgICAgICAgW2FwcE5hbWVdPVwiYXBwTmFtZVwiXG4gICAgICAgIChjaGFuZ2VkVXNlcnMpPVwib25DaGFuZ2VkQXNzaWduZWRVc2VycygkZXZlbnQpXCIgLz5cbjwvZGl2PlxuIl19
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1hc3NpZ25tZW50LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL3Rhc2svdGFzay1maWx0ZXJzL2NvbXBvbmVudHMvdGFzay1hc3NpZ25tZW50LWZpbHRlci90YXNrLWFzc2lnbm1lbnQtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWZpbHRlcnMvY29tcG9uZW50cy90YXNrLWFzc2lnbm1lbnQtZmlsdGVyL3Rhc2stYXNzaWdubWVudC1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUF3QixnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBR3hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7Ozs7Ozs7O0FBUzVGLE1B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a0IsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7SUFDbkYsQ0FBQzs4R0FoSFEsa0NBQWtDO2tHQUFsQyxrQ0FBa0Msa1dDckMvQyw2L0RBcUNBLHFyQkRKYyxZQUFZLDhWQUFFLG1CQUFtQiwrUUFBRSxlQUFlLDJGQUFFLGVBQWUsKzdCQUFFLFdBQVcsK1ZBQUUsb0JBQW9COzsyRkFJdkcsa0NBQWtDO2tCQVA5QyxTQUFTOytCQUNJLGtDQUFrQyxjQUNoQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLENBQUM7d0ZBS3hHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFFRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNlbGVjdENoYW5nZSwgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IEFzc2lnbm1lbnRUeXBlLCBUYXNrRmlsdGVyUHJvcGVydGllcywgVGFza1N0YXR1c0ZpbHRlciB9IGZyb20gJy4uLy4uL21vZGVscy9maWx0ZXItY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgSWRlbnRpdHlVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9wZW9wbGUvbW9kZWxzL2lkZW50aXR5LXVzZXIubW9kZWwnO1xuaW1wb3J0IHsgSWRlbnRpdHlVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3Blb3BsZS9zZXJ2aWNlcy9pZGVudGl0eS11c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWRlbnRpdHlHcm91cE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vZ3JvdXAvbW9kZWxzL2lkZW50aXR5LWdyb3VwLm1vZGVsJztcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vZWRpdC10YXNrLWZpbHRlcnMvYmFzZS1lZGl0LXRhc2stZmlsdGVyLWNsb3VkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHcm91cENsb3VkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vZ3JvdXAvY29tcG9uZW50cy9ncm91cC1jbG91ZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGVvcGxlQ2xvdWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtY2xvdWQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtY2xvdWQtdGFzay1hc3NpZ25tZW50LWZpbHRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBHcm91cENsb3VkQ29tcG9uZW50LCBUcmFuc2xhdGVNb2R1bGUsIE1hdFNlbGVjdE1vZHVsZSwgRm9ybXNNb2R1bGUsIFBlb3BsZUNsb3VkQ29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFzay1hc3NpZ25tZW50LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFzay1hc3NpZ25tZW50LWZpbHRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRhc2tBc3NpZ25tZW50RmlsdGVyQ2xvdWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgYXBwTmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdGFza0ZpbHRlclByb3BlcnR5OiBUYXNrRmlsdGVyUHJvcGVydGllcztcblxuICAgIEBJbnB1dCgpIHN0YXR1czogVGFza1N0YXR1c0ZpbHRlcjtcblxuICAgIEBPdXRwdXQoKSBhc3NpZ25lZFVzZXJzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJZGVudGl0eVVzZXJNb2RlbFtdPigpO1xuXG4gICAgQE91dHB1dCgpIGFzc2lnbmVkR3JvdXBzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJZGVudGl0eUdyb3VwTW9kZWxbXT4oKTtcblxuICAgIEBPdXRwdXQoKSBhc3NpZ25tZW50VHlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXNzaWdubWVudFR5cGU+KCk7XG5cbiAgICBhc3NpZ25tZW50VHlwZTogQXNzaWdubWVudFR5cGU7XG4gICAgYXNzaWduZWRVc2VyczogSWRlbnRpdHlVc2VyTW9kZWxbXSA9IFtdO1xuICAgIGNhbmRpZGF0ZUdyb3VwczogSWRlbnRpdHlHcm91cE1vZGVsW10gPSBbXTtcbiAgICBncm91cEZvcm0gPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgIGFzc2lnbm1lbnRUeXBlT3B0aW9uczogRHJvcGRvd25PcHRpb25bXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaWRlbnRpdHlVc2VyU2VydmljZTogSWRlbnRpdHlVc2VyU2VydmljZSkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXM/LnN0YXR1cz8uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzPy5zdGF0dXM/LnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQXNzaWdubWVudFR5cGVCeVN0YXR1cyhjaGFuZ2VzPy5zdGF0dXM/LmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5hc3NpZ25tZW50VHlwZU9wdGlvbnMgPSB0aGlzLmdldEFzc2lnbm1lbnRUeXBlT3B0aW9ucygpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzRmlsdGVyUHJvcGVydHlEZWZpbmVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5pdGlhbENhbmRpZGF0ZUdyb3VwcygpO1xuICAgICAgICAgICAgdGhpcy5zZXRJbml0aWFsQXNzaWduZWRVc2VycygpO1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0QXNzaWdubWVudFR5cGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzQ2FuZGlkYXRlR3JvdXBzVHlwZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzaWdubWVudFR5cGUgPT09IEFzc2lnbm1lbnRUeXBlLkNBTkRJREFURV9HUk9VUFM7XG4gICAgfVxuXG4gICAgaXNBc3NpZ25lZFRvVHlwZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzaWdubWVudFR5cGUgPT09IEFzc2lnbm1lbnRUeXBlLkFTU0lHTkVEX1RPO1xuICAgIH1cblxuICAgIG9uQXNzaWdubWVudFR5cGVDaGFuZ2UoYXNzaWdubWVudENoYW5nZTogTWF0U2VsZWN0Q2hhbmdlKSB7XG4gICAgICAgIHRoaXMuY2FuZGlkYXRlR3JvdXBzID0gW107XG4gICAgICAgIHRoaXMuYXNzaWduZWRVc2VycyA9IFtdO1xuXG4gICAgICAgIGlmIChhc3NpZ25tZW50Q2hhbmdlLnZhbHVlID09PSBBc3NpZ25tZW50VHlwZS5DVVJSRU5UX1VTRVIpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWduZWRVc2Vyc0NoYW5nZS5lbWl0KFt0aGlzLmlkZW50aXR5VXNlclNlcnZpY2UuZ2V0Q3VycmVudFVzZXJJbmZvKCldKTtcbiAgICAgICAgfSBlbHNlIGlmIChhc3NpZ25tZW50Q2hhbmdlLnZhbHVlID09PSBBc3NpZ25tZW50VHlwZS5OT05FKSB7XG4gICAgICAgICAgICB0aGlzLmFzc2lnbmVkVXNlcnNDaGFuZ2UuZW1pdChbXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFzc2lnbm1lbnRUeXBlID0gYXNzaWdubWVudENoYW5nZS52YWx1ZTtcbiAgICAgICAgdGhpcy5hc3NpZ25tZW50VHlwZUNoYW5nZS5lbWl0KHRoaXMuYXNzaWdubWVudFR5cGUpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlZEdyb3Vwcyhncm91cHM6IElkZW50aXR5R3JvdXBNb2RlbFtdKSB7XG4gICAgICAgIHRoaXMuYXNzaWduZWRHcm91cHNDaGFuZ2UuZW1pdChncm91cHMpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlZEFzc2lnbmVkVXNlcnModXNlcnM6IElkZW50aXR5VXNlck1vZGVsW10pIHtcbiAgICAgICAgdGhpcy5hc3NpZ25lZFVzZXJzQ2hhbmdlLmVtaXQodXNlcnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlQXNzaWdubWVudFR5cGVCeVN0YXR1cyhzdGF0dXM6IFRhc2tTdGF0dXNGaWx0ZXIpIHtcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgIGNhc2UgVGFza1N0YXR1c0ZpbHRlci5DUkVBVEVEOlxuICAgICAgICAgICAgICAgIHRoaXMuYXNzaWdubWVudFR5cGUgPSBBc3NpZ25tZW50VHlwZS5VTkFTU0lHTkVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUYXNrU3RhdHVzRmlsdGVyLkFTU0lHTkVEOlxuICAgICAgICAgICAgICAgIHRoaXMuYXNzaWdubWVudFR5cGUgPSBBc3NpZ25tZW50VHlwZS5BU1NJR05FRF9UTztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5hc3NpZ25tZW50VHlwZSA9IEFzc2lnbm1lbnRUeXBlLk5PTkU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFzc2lnbm1lbnRUeXBlT3B0aW9ucygpOiBEcm9wZG93bk9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgdmFsdWU6IEFzc2lnbm1lbnRUeXBlLk5PTkUsIGxhYmVsOiBgQURGX0NMT1VEX1RBU0tfQVNTSUdOTUVOVF9GSUxURVIuJHtBc3NpZ25tZW50VHlwZS5OT05FfWAgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6IEFzc2lnbm1lbnRUeXBlLlVOQVNTSUdORUQsIGxhYmVsOiBgQURGX0NMT1VEX1RBU0tfQVNTSUdOTUVOVF9GSUxURVIuJHtBc3NpZ25tZW50VHlwZS5VTkFTU0lHTkVEfWAgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6IEFzc2lnbm1lbnRUeXBlLkFTU0lHTkVEX1RPLCBsYWJlbDogYEFERl9DTE9VRF9UQVNLX0FTU0lHTk1FTlRfRklMVEVSLiR7QXNzaWdubWVudFR5cGUuQVNTSUdORURfVE99YCB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogQXNzaWdubWVudFR5cGUuQ1VSUkVOVF9VU0VSLCBsYWJlbDogYEFERl9DTE9VRF9UQVNLX0FTU0lHTk1FTlRfRklMVEVSLiR7QXNzaWdubWVudFR5cGUuQ1VSUkVOVF9VU0VSfWAgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6IEFzc2lnbm1lbnRUeXBlLkNBTkRJREFURV9HUk9VUFMsIGxhYmVsOiBgQURGX0NMT1VEX1RBU0tfQVNTSUdOTUVOVF9GSUxURVIuJHtBc3NpZ25tZW50VHlwZS5DQU5ESURBVEVfR1JPVVBTfWAgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdEFzc2lnbm1lbnRUeXBlKCkge1xuICAgICAgICBpZiAodGhpcy5jYW5kaWRhdGVHcm91cHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5hc3NpZ25tZW50VHlwZSA9IEFzc2lnbm1lbnRUeXBlLkNBTkRJREFURV9HUk9VUFM7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hc3NpZ25lZFVzZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWdubWVudFR5cGUgPSBBc3NpZ25tZW50VHlwZS5BU1NJR05FRF9UTztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWdubWVudFR5cGUgPSBBc3NpZ25tZW50VHlwZS5OT05FO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbml0aWFsQ2FuZGlkYXRlR3JvdXBzKCkge1xuICAgICAgICBjb25zdCBjYW5kaWRhdGVHcm91cHNBdHRyID0gdGhpcy50YXNrRmlsdGVyUHJvcGVydHkuYXR0cmlidXRlc1snY2FuZGlkYXRlR3JvdXBzJ107XG4gICAgICAgIHRoaXMuY2FuZGlkYXRlR3JvdXBzID0gdGhpcy50YXNrRmlsdGVyUHJvcGVydHkudmFsdWVbY2FuZGlkYXRlR3JvdXBzQXR0cl07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbml0aWFsQXNzaWduZWRVc2VycygpIHtcbiAgICAgICAgY29uc3QgYXNzaWduZWRVc2Vyc0F0dHIgPSB0aGlzLnRhc2tGaWx0ZXJQcm9wZXJ0eS5hdHRyaWJ1dGVzWydhc3NpZ25lZFVzZXJzJ107XG4gICAgICAgIHRoaXMuYXNzaWduZWRVc2VycyA9IHRoaXMudGFza0ZpbHRlclByb3BlcnR5LnZhbHVlW2Fzc2lnbmVkVXNlcnNBdHRyXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsdGVyUHJvcGVydHlEZWZpbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRhc2tGaWx0ZXJQcm9wZXJ0eS5hdHRyaWJ1dGVzICYmICEhdGhpcy50YXNrRmlsdGVyUHJvcGVydHkudmFsdWU7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZi1jbG91ZC1hc3NpZ25tZW50LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBmbG9hdExhYmVsPVwiYXV0b1wiIGNsYXNzPVwiYWRmLXRhc2stYXNzaWdubWVudC1maWx0ZXItY29udGFpbmVyXCI+XG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJhZGYtdGFzay1hc3NpZ25tZW50LWZpbHRlci1sYWJlbFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FkZi10YXNrLWFzc2lnbm1lbnQtZmlsdGVyLWxhYmVsLS1mb2N1cyc6IHR5cGVEcm9wZG93bi5mb2N1c2VkfVwiPlxuICAgICAgICAgICAge3sgJ0FERl9DTE9VRF9UQVNLX0FTU0lHTk1FTlRfRklMVEVSLkFTU0lHTk1FTlRfVFlQRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtc2VsZWN0IGNsYXNzPVwiYWRmLXRhc2stYXNzaWdubWVudC1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImFzc2lnbm1lbnRUeXBlXCIgI3R5cGVEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi10YXNrLWFzc2lnbm1lbnQtZmlsdGVyLXNlbGVjdCdcIlxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQXNzaWdubWVudFR5cGVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGFzc2lnbm1lbnRUeXBlIG9mIGFzc2lnbm1lbnRUeXBlT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtdGFzay1hc3NpZ25tZW50LWZpbHRlci1vcHRpb25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWRmLXRhc2stYXNzaWdubWVudC1maWx0ZXItb3B0aW9uLS1zZWxlY3RlZCc6IGZpbHRlck9wdGlvbi5zZWxlY3RlZH1cIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhc3NpZ25tZW50VHlwZS52YWx1ZVwiICNmaWx0ZXJPcHRpb25cbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi10YXNrLWFzc2lnbm1lbnQtZmlsdGVyLScgKyBhc3NpZ25tZW50VHlwZS52YWx1ZVwiPlxuICAgICAgICAgICAgICAgIHt7IGFzc2lnbm1lbnRUeXBlLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPGFkZi1jbG91ZC1ncm91cCAqbmdJZj1cImlzQ2FuZGlkYXRlR3JvdXBzVHlwZSgpXCJcbiAgICAgICAgY2xhc3M9XCJhZGYtZ3JvdXAtY2xvdWQtZmlsdGVyXCJcbiAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWdyb3VwLWNsb3VkLWNhbmRpZGF0ZS1ncm91cHMtZmlsdGVyXCJcbiAgICAgICAgW2FwcE5hbWVdPVwiYXBwTmFtZVwiXG4gICAgICAgIFtwcmVTZWxlY3RHcm91cHNdPVwiY2FuZGlkYXRlR3JvdXBzXCJcbiAgICAgICAgW21vZGVdPVwidGFza0ZpbHRlclByb3BlcnR5LnNlbGVjdGlvbk1vZGVcIlxuICAgICAgICBbdGl0bGVdPVwiJ0FERl9DTE9VRF9UQVNLX0xJU1QuU1RBUlRfVEFTSy5GT1JNLkxBQkVMLkNBTkRJREFURV9HUk9VUCdcIlxuICAgICAgICAoY2hhbmdlZEdyb3Vwcyk9XCJvbkNoYW5nZWRHcm91cHMoJGV2ZW50KVwiIC8+XG5cbiAgICA8YWRmLWNsb3VkLXBlb3BsZSAqbmdJZj1cImlzQXNzaWduZWRUb1R5cGUoKVwiXG4gICAgICAgIGNsYXNzPVwiYWRmLWdyb3VwLWNsb3VkLWZpbHRlclwiXG4gICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1ncm91cC1jbG91ZC1hc3NpZ25lZC10by1maWx0ZXJcIlxuICAgICAgICBbcHJlU2VsZWN0VXNlcnNdPVwiYXNzaWduZWRVc2Vyc1wiXG4gICAgICAgIFt0aXRsZV09XCInQURGX0NMT1VEX1RBU0tfTElTVC5TVEFSVF9UQVNLLkZPUk0uTEFCRUwuQVNTSUdORUUnXCJcbiAgICAgICAgW2FwcE5hbWVdPVwiYXBwTmFtZVwiXG4gICAgICAgIChjaGFuZ2VkVXNlcnMpPVwib25DaGFuZ2VkQXNzaWduZWRVc2VycygkZXZlbnQpXCIgLz5cbjwvZGl2PlxuIl19
@@ -60,14 +60,14 @@ export class TaskFilterDialogCloudComponent {
60
60
  isValid() {
61
61
  return this.filterForm.valid;
62
62
  }
63
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TaskFilterDialogCloudComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
64
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TaskFilterDialogCloudComponent, isStandalone: true, selector: "adf-cloud-task-filter-dialog", ngImport: i0, template: "<div class=\"adf-task-filter-dialog\">\n <span mat-dialog-title id=\"adf-task-filter-dialog-title\">\n {{ 'ADF_CLOUD_EDIT_TASK_FILTER.DIALOG.TITLE' | translate}}\n </span>\n <mat-card appearance=\"outlined\" class=\"adf-task-filter-dialog-card\">\n <mat-card-content class=\"adf-task-filter-dialog-card-content\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"adf-task-filter-name\" [floatLabel]=\"'auto'\">\n <input matInput placeholder=\"{{ 'ADF_CLOUD_EDIT_TASK_FILTER.FILTER_NAME' | translate }}\" formControlName=\"name\" id=\"adf-filter-name-id\">\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions class=\"adf-task-filter-dialog-card-actions\">\n <button mat-button (click)=\"onSaveClick()\" id=\"adf-save-button-id\" [disabled]=\"!isValid()\">\n {{ 'ADF_CLOUD_EDIT_TASK_FILTER.DIALOG.SAVE' | translate}}\n </button>\n <button mat-button (click)=\"onCancelClick()\" id=\"adf-cancel-button-id\">\n {{ 'ADF_CLOUD_EDIT_TASK_FILTER.DIALOG.CANCEL' | translate}}\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n", styles: ["adf-cloud-task-filter-dialog .adf-task-filter-dialog .adf-task-filter-dialog-card{padding:0;box-shadow:none}adf-cloud-task-filter-dialog .adf-task-filter-dialog .adf-task-filter-dialog-card .adf-task-filter-dialog-card-actions{display:flex;max-height:100%;place-content:flex-end;align-items:flex-end}adf-cloud-task-filter-dialog .adf-task-filter-dialog .adf-task-filter-dialog-card-content{padding:0;box-shadow:none}adf-cloud-task-filter-dialog .adf-task-filter-dialog .adf-task-filter-dialog-card-content .adf-task-filter-name{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i6.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], encapsulation: i0.ViewEncapsulation.None }); }
63
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: TaskFilterDialogCloudComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
64
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: TaskFilterDialogCloudComponent, isStandalone: true, selector: "adf-cloud-task-filter-dialog", ngImport: i0, template: "<div class=\"adf-task-filter-dialog\">\n <span mat-dialog-title id=\"adf-task-filter-dialog-title\">\n {{ 'ADF_CLOUD_EDIT_TASK_FILTER.DIALOG.TITLE' | translate}}\n </span>\n <mat-card appearance=\"outlined\" class=\"adf-task-filter-dialog-card\">\n <mat-card-content class=\"adf-task-filter-dialog-card-content\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"adf-task-filter-name\" [floatLabel]=\"'auto'\">\n <input matInput placeholder=\"{{ 'ADF_CLOUD_EDIT_TASK_FILTER.FILTER_NAME' | translate }}\" formControlName=\"name\" id=\"adf-filter-name-id\">\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions class=\"adf-task-filter-dialog-card-actions\">\n <button mat-button (click)=\"onSaveClick()\" id=\"adf-save-button-id\" [disabled]=\"!isValid()\">\n {{ 'ADF_CLOUD_EDIT_TASK_FILTER.DIALOG.SAVE' | translate}}\n </button>\n <button mat-button (click)=\"onCancelClick()\" id=\"adf-cancel-button-id\">\n {{ 'ADF_CLOUD_EDIT_TASK_FILTER.DIALOG.CANCEL' | translate}}\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n", styles: ["adf-cloud-task-filter-dialog .adf-task-filter-dialog .adf-task-filter-dialog-card{padding:0;box-shadow:none}adf-cloud-task-filter-dialog .adf-task-filter-dialog .adf-task-filter-dialog-card .adf-task-filter-dialog-card-actions{display:flex;max-height:100%;place-content:flex-end;align-items:flex-end}adf-cloud-task-filter-dialog .adf-task-filter-dialog .adf-task-filter-dialog-card-content{padding:0;box-shadow:none}adf-cloud-task-filter-dialog .adf-task-filter-dialog .adf-task-filter-dialog-card-content .adf-task-filter-name{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i6.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], encapsulation: i0.ViewEncapsulation.None }); }
65
65
  }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TaskFilterDialogCloudComponent, decorators: [{
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: TaskFilterDialogCloudComponent, decorators: [{
67
67
  type: Component,
68
68
  args: [{ selector: 'adf-cloud-task-filter-dialog', standalone: true, imports: [CommonModule, TranslateModule, MatInputModule, ReactiveFormsModule, MatDialogModule, MatCardModule, MatButtonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-task-filter-dialog\">\n <span mat-dialog-title id=\"adf-task-filter-dialog-title\">\n {{ 'ADF_CLOUD_EDIT_TASK_FILTER.DIALOG.TITLE' | translate}}\n </span>\n <mat-card appearance=\"outlined\" class=\"adf-task-filter-dialog-card\">\n <mat-card-content class=\"adf-task-filter-dialog-card-content\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"adf-task-filter-name\" [floatLabel]=\"'auto'\">\n <input matInput placeholder=\"{{ 'ADF_CLOUD_EDIT_TASK_FILTER.FILTER_NAME' | translate }}\" formControlName=\"name\" id=\"adf-filter-name-id\">\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions class=\"adf-task-filter-dialog-card-actions\">\n <button mat-button (click)=\"onSaveClick()\" id=\"adf-save-button-id\" [disabled]=\"!isValid()\">\n {{ 'ADF_CLOUD_EDIT_TASK_FILTER.DIALOG.SAVE' | translate}}\n </button>\n <button mat-button (click)=\"onCancelClick()\" id=\"adf-cancel-button-id\">\n {{ 'ADF_CLOUD_EDIT_TASK_FILTER.DIALOG.CANCEL' | translate}}\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n", styles: ["adf-cloud-task-filter-dialog .adf-task-filter-dialog .adf-task-filter-dialog-card{padding:0;box-shadow:none}adf-cloud-task-filter-dialog .adf-task-filter-dialog .adf-task-filter-dialog-card .adf-task-filter-dialog-card-actions{display:flex;max-height:100%;place-content:flex-end;align-items:flex-end}adf-cloud-task-filter-dialog .adf-task-filter-dialog .adf-task-filter-dialog-card-content{padding:0;box-shadow:none}adf-cloud-task-filter-dialog .adf-task-filter-dialog .adf-task-filter-dialog-card-content .adf-task-filter-name{flex:1}\n"] }]
69
69
  }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.MatDialogRef }, { type: undefined, decorators: [{
70
70
  type: Inject,
71
71
  args: [MAT_DIALOG_DATA]
72
72
  }] }] });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWZpbHRlcnMvY29tcG9uZW50cy90YXNrLWZpbHRlci1kaWFsb2cvdGFzay1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWZpbHRlcnMvY29tcG9uZW50cy90YXNrLWZpbHRlci1kaWFsb2cvdGFzay1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBbUIsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQW9CLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7OztBQVUzRCxNQUFNLE9BQU8sOEJBQThCO0lBQ3ZDLGdFQUFnRTthQUNsRCxnQkFBVyxHQUFHLE1BQU0sQUFBVCxDQUFVO0lBS25DLFlBQ1ksRUFBc0IsRUFDdkIsU0FBdUQsRUFDOUIsSUFBSTtRQUY1QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUN2QixjQUFTLEdBQVQsU0FBUyxDQUE4QztRQUM5QixTQUFJLEdBQUosSUFBSSxDQUFBO1FBUHhDLGdCQUFXLEdBQUcsT0FBTyxDQUFDO0lBUW5CLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUM1QixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQzlDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDakIsTUFBTSxFQUFFLDhCQUE4QixDQUFDLFdBQVc7WUFDbEQsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUs7U0FDbEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUNqQyxDQUFDOytHQXJDUSw4QkFBOEIsZ0ZBVTNCLGVBQWU7bUdBVmxCLDhCQUE4Qix3RkNsQzNDLCtzQ0FzQkEsa2xCRE9jLFlBQVksOEJBQUUsZUFBZSwyRkFBRSxjQUFjLHFqQkFBRSxtQkFBbUIsNDhCQUFFLGVBQWUsOEtBQUUsYUFBYSx5VkFBRSxlQUFlOzs0RkFLcEgsOEJBQThCO2tCQVIxQyxTQUFTOytCQUNJLDhCQUE4QixjQUM1QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxpQkFHL0csaUJBQWlCLENBQUMsSUFBSTs7MEJBWWhDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nTW9kdWxlLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLXRhc2stZmlsdGVyLWRpYWxvZycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXREaWFsb2dNb2R1bGUsIE1hdENhcmRNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stZmlsdGVyLWRpYWxvZy1jbG91ZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFzay1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUYXNrRmlsdGVyRGlhbG9nQ2xvdWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICBwdWJsaWMgc3RhdGljIEFDVElPTl9TQVZFID0gJ1NBVkUnO1xuICAgIGRlZmF1bHRJY29uID0gJ2luYm94JztcblxuICAgIGZpbHRlckZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VGFza0ZpbHRlckRpYWxvZ0Nsb3VkQ29tcG9uZW50PixcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgbmFtZTogW3RoaXMuZGF0YS5uYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNhdmVDbGljaygpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgYWN0aW9uOiBUYXNrRmlsdGVyRGlhbG9nQ2xvdWRDb21wb25lbnQuQUNUSU9OX1NBVkUsXG4gICAgICAgICAgICBpY29uOiB0aGlzLmRlZmF1bHRJY29uLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lQ29udHJvbGxlci52YWx1ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNhbmNlbENsaWNrKCkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIH1cblxuICAgIGdldCBuYW1lQ29udHJvbGxlcigpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJGb3JtLmdldCgnbmFtZScpO1xuICAgIH1cblxuICAgIGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlckZvcm0udmFsaWQ7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZi10YXNrLWZpbHRlci1kaWFsb2dcIj5cbiAgICA8c3BhbiBtYXQtZGlhbG9nLXRpdGxlIGlkPVwiYWRmLXRhc2stZmlsdGVyLWRpYWxvZy10aXRsZVwiPlxuICAgICAgICAge3sgJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkRJQUxPRy5USVRMRScgfCB0cmFuc2xhdGV9fVxuICAgIDwvc3Bhbj5cbiAgICA8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgY2xhc3M9XCJhZGYtdGFzay1maWx0ZXItZGlhbG9nLWNhcmRcIj5cbiAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJhZGYtdGFzay1maWx0ZXItZGlhbG9nLWNhcmQtY29udGVudFwiPlxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImFkZi10YXNrLWZpbHRlci1uYW1lXCIgW2Zsb2F0TGFiZWxdPVwiJ2F1dG8nXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwie3sgJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkZJTFRFUl9OQU1FJyB8IHRyYW5zbGF0ZSB9fVwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBpZD1cImFkZi1maWx0ZXItbmFtZS1pZFwiPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxtYXQtY2FyZC1hY3Rpb25zIGNsYXNzPVwiYWRmLXRhc2stZmlsdGVyLWRpYWxvZy1jYXJkLWFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwib25TYXZlQ2xpY2soKVwiIGlkPVwiYWRmLXNhdmUtYnV0dG9uLWlkXCIgW2Rpc2FibGVkXT1cIiFpc1ZhbGlkKClcIj5cbiAgICAgICAgICAgICAgICB7eyAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuRElBTE9HLlNBVkUnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkNhbmNlbENsaWNrKClcIiBpZD1cImFkZi1jYW5jZWwtYnV0dG9uLWlkXCI+XG4gICAgICAgICAgICAgICB7eyAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuRElBTE9HLkNBTkNFTCcgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cbiAgICA8L21hdC1jYXJkPlxuPC9kaXY+XG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWZpbHRlcnMvY29tcG9uZW50cy90YXNrLWZpbHRlci1kaWFsb2cvdGFzay1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWZpbHRlcnMvY29tcG9uZW50cy90YXNrLWZpbHRlci1kaWFsb2cvdGFzay1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBbUIsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQW9CLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7OztBQVUzRCxNQUFNLE9BQU8sOEJBQThCO0lBQ3ZDLGdFQUFnRTthQUNsRCxnQkFBVyxHQUFHLE1BQU0sQUFBVCxDQUFVO0lBS25DLFlBQ1ksRUFBc0IsRUFDdkIsU0FBdUQsRUFDOUIsSUFBSTtRQUY1QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUN2QixjQUFTLEdBQVQsU0FBUyxDQUE4QztRQUM5QixTQUFJLEdBQUosSUFBSSxDQUFBO1FBUHhDLGdCQUFXLEdBQUcsT0FBTyxDQUFDO0lBUW5CLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUM1QixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQzlDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDakIsTUFBTSxFQUFFLDhCQUE4QixDQUFDLFdBQVc7WUFDbEQsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUs7U0FDbEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUNqQyxDQUFDOzhHQXJDUSw4QkFBOEIsZ0ZBVTNCLGVBQWU7a0dBVmxCLDhCQUE4Qix3RkNsQzNDLCtzQ0FzQkEsa2xCRE9jLFlBQVksOEJBQUUsZUFBZSwyRkFBRSxjQUFjLHFqQkFBRSxtQkFBbUIsNDhCQUFFLGVBQWUsOEtBQUUsYUFBYSx5VkFBRSxlQUFlOzsyRkFLcEgsOEJBQThCO2tCQVIxQyxTQUFTOytCQUNJLDhCQUE4QixjQUM1QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxpQkFHL0csaUJBQWlCLENBQUMsSUFBSTs7MEJBWWhDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nTW9kdWxlLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLXRhc2stZmlsdGVyLWRpYWxvZycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXREaWFsb2dNb2R1bGUsIE1hdENhcmRNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stZmlsdGVyLWRpYWxvZy1jbG91ZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFzay1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUYXNrRmlsdGVyRGlhbG9nQ2xvdWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICBwdWJsaWMgc3RhdGljIEFDVElPTl9TQVZFID0gJ1NBVkUnO1xuICAgIGRlZmF1bHRJY29uID0gJ2luYm94JztcblxuICAgIGZpbHRlckZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VGFza0ZpbHRlckRpYWxvZ0Nsb3VkQ29tcG9uZW50PixcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgbmFtZTogW3RoaXMuZGF0YS5uYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNhdmVDbGljaygpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgYWN0aW9uOiBUYXNrRmlsdGVyRGlhbG9nQ2xvdWRDb21wb25lbnQuQUNUSU9OX1NBVkUsXG4gICAgICAgICAgICBpY29uOiB0aGlzLmRlZmF1bHRJY29uLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lQ29udHJvbGxlci52YWx1ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNhbmNlbENsaWNrKCkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIH1cblxuICAgIGdldCBuYW1lQ29udHJvbGxlcigpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJGb3JtLmdldCgnbmFtZScpO1xuICAgIH1cblxuICAgIGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlckZvcm0udmFsaWQ7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZi10YXNrLWZpbHRlci1kaWFsb2dcIj5cbiAgICA8c3BhbiBtYXQtZGlhbG9nLXRpdGxlIGlkPVwiYWRmLXRhc2stZmlsdGVyLWRpYWxvZy10aXRsZVwiPlxuICAgICAgICAge3sgJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkRJQUxPRy5USVRMRScgfCB0cmFuc2xhdGV9fVxuICAgIDwvc3Bhbj5cbiAgICA8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgY2xhc3M9XCJhZGYtdGFzay1maWx0ZXItZGlhbG9nLWNhcmRcIj5cbiAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJhZGYtdGFzay1maWx0ZXItZGlhbG9nLWNhcmQtY29udGVudFwiPlxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImFkZi10YXNrLWZpbHRlci1uYW1lXCIgW2Zsb2F0TGFiZWxdPVwiJ2F1dG8nXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwie3sgJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkZJTFRFUl9OQU1FJyB8IHRyYW5zbGF0ZSB9fVwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBpZD1cImFkZi1maWx0ZXItbmFtZS1pZFwiPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxtYXQtY2FyZC1hY3Rpb25zIGNsYXNzPVwiYWRmLXRhc2stZmlsdGVyLWRpYWxvZy1jYXJkLWFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwib25TYXZlQ2xpY2soKVwiIGlkPVwiYWRmLXNhdmUtYnV0dG9uLWlkXCIgW2Rpc2FibGVkXT1cIiFpc1ZhbGlkKClcIj5cbiAgICAgICAgICAgICAgICB7eyAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuRElBTE9HLlNBVkUnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkNhbmNlbENsaWNrKClcIiBpZD1cImFkZi1jYW5jZWwtYnV0dG9uLWlkXCI+XG4gICAgICAgICAgICAgICB7eyAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuRElBTE9HLkNBTkNFTCcgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cbiAgICA8L21hdC1jYXJkPlxuPC9kaXY+XG4iXX0=
@@ -236,10 +236,10 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent {
236
236
  this.updatedCountersSet.delete(filterKey);
237
237
  });
238
238
  }
239
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TaskFiltersCloudComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
240
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TaskFiltersCloudComponent, isStandalone: true, selector: "adf-cloud-task-filters", inputs: { searchApiMethod: "searchApiMethod" }, outputs: { filterSelected: "filterSelected", filterClicked: "filterClicked", filterCounterUpdated: "filterCounterUpdated", updatedFilter: "updatedFilter" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<mat-action-list class=\"adf-task-filters\" *ngIf=\"filters$ | async as filterList; else loading\">\n <button\n *ngFor=\"let filter of filterList\"\n mat-list-item\n (click)=\"onFilterClick(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n [class.adf-active]=\"currentFilter === filter\">\n <div class=\"adf-task-filters__entry\">\n <div class=\"adf-task-filters__entry-label\">\n <adf-icon data-automation-id=\"adf-filter-icon\"\n *ngIf=\"showIcons\"\n [value]=\"filter.icon\"\n />\n <span data-automation-id=\"adf-filter-label\">\n {{ filter.name | translate }}\n </span>\n </div>\n <span *ngIf=\"counters[filter.key]\"\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-task-filters__entry-counter\"\n [class.adf-active]=\"wasFilterUpdated(filter.key)\">\n {{ counters[filter.key] }}\n </span>\n </div>\n </button>\n </mat-action-list>\n<ng-template #loading>\n <ng-container>\n <div class=\"adf-app-list-spinner\">\n <mat-spinner />\n </div>\n </ng-container>\n</ng-template>\n", styles: [".adf-task-filters{margin-right:calc(-1 * var(--adf-theme-spacing))}.adf-task-filters__entry{font-size:var(--theme-body-1-font-size);color:var(--adf-theme-foreground-text-color-054);display:flex;justify-content:space-between;align-items:center;flex:1;height:100%}.adf-task-filters__entry:hover{color:var(--theme-primary-color)}.adf-task-filters__entry-label{display:flex;flex:1;align-items:center;gap:var(--adf-theme-spacing)}.adf-task-filters__entry-counter{padding:0 5px;border-radius:15px}.adf-task-filters__entry-counter.adf-active{background-color:var(--theme-accent-color);color:var(--theme-accent-color-default-contrast);font-size:smaller}.adf-task-filters .adf-active .adf-task-filters__entry-label{color:var(--theme-primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IconComponent, selector: "adf-icon", inputs: ["color", "fontSet", "value"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i4.MatActionList, selector: "mat-action-list", exportAs: ["matActionList"] }, { kind: "component", type: i4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }], encapsulation: i0.ViewEncapsulation.None }); }
239
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: TaskFiltersCloudComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
240
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: TaskFiltersCloudComponent, isStandalone: true, selector: "adf-cloud-task-filters", inputs: { searchApiMethod: "searchApiMethod" }, outputs: { filterSelected: "filterSelected", filterClicked: "filterClicked", filterCounterUpdated: "filterCounterUpdated", updatedFilter: "updatedFilter" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<mat-action-list class=\"adf-task-filters\" *ngIf=\"filters$ | async as filterList; else loading\">\n <button\n *ngFor=\"let filter of filterList\"\n mat-list-item\n (click)=\"onFilterClick(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n [class.adf-active]=\"currentFilter === filter\">\n <div class=\"adf-task-filters__entry\">\n <div class=\"adf-task-filters__entry-label\">\n <adf-icon data-automation-id=\"adf-filter-icon\"\n *ngIf=\"showIcons\"\n [value]=\"filter.icon\"\n />\n <span data-automation-id=\"adf-filter-label\">\n {{ filter.name | translate }}\n </span>\n </div>\n <span *ngIf=\"counters[filter.key]\"\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-task-filters__entry-counter\"\n [class.adf-active]=\"wasFilterUpdated(filter.key)\">\n {{ counters[filter.key] }}\n </span>\n </div>\n </button>\n </mat-action-list>\n<ng-template #loading>\n <ng-container>\n <div class=\"adf-app-list-spinner\">\n <mat-spinner />\n </div>\n </ng-container>\n</ng-template>\n", styles: [".adf-task-filters{margin-right:calc(-1 * var(--adf-theme-spacing))}.adf-task-filters__entry{font-size:var(--theme-body-1-font-size);color:var(--adf-theme-foreground-text-color-054);display:flex;justify-content:space-between;align-items:center;flex:1;height:100%}.adf-task-filters__entry:hover{color:var(--theme-primary-color)}.adf-task-filters__entry-label{display:flex;flex:1;align-items:center;gap:var(--adf-theme-spacing)}.adf-task-filters__entry-counter{padding:0 5px;border-radius:15px}.adf-task-filters__entry-counter.adf-active{background-color:var(--theme-accent-color);color:var(--theme-accent-color-default-contrast);font-size:smaller}.adf-task-filters .adf-active .adf-task-filters__entry-label{color:var(--theme-primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IconComponent, selector: "adf-icon", inputs: ["color", "fontSet", "value"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i4.MatActionList, selector: "mat-action-list", exportAs: ["matActionList"] }, { kind: "component", type: i4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }], encapsulation: i0.ViewEncapsulation.None }); }
241
241
  }
242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TaskFiltersCloudComponent, decorators: [{
242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: TaskFiltersCloudComponent, decorators: [{
243
243
  type: Component,
244
244
  args: [{ selector: 'adf-cloud-task-filters', standalone: true, imports: [CommonModule, MatProgressSpinnerModule, TranslateModule, IconComponent, MatListModule], encapsulation: ViewEncapsulation.None, template: "<mat-action-list class=\"adf-task-filters\" *ngIf=\"filters$ | async as filterList; else loading\">\n <button\n *ngFor=\"let filter of filterList\"\n mat-list-item\n (click)=\"onFilterClick(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n [class.adf-active]=\"currentFilter === filter\">\n <div class=\"adf-task-filters__entry\">\n <div class=\"adf-task-filters__entry-label\">\n <adf-icon data-automation-id=\"adf-filter-icon\"\n *ngIf=\"showIcons\"\n [value]=\"filter.icon\"\n />\n <span data-automation-id=\"adf-filter-label\">\n {{ filter.name | translate }}\n </span>\n </div>\n <span *ngIf=\"counters[filter.key]\"\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-task-filters__entry-counter\"\n [class.adf-active]=\"wasFilterUpdated(filter.key)\">\n {{ counters[filter.key] }}\n </span>\n </div>\n </button>\n </mat-action-list>\n<ng-template #loading>\n <ng-container>\n <div class=\"adf-app-list-spinner\">\n <mat-spinner />\n </div>\n </ng-container>\n</ng-template>\n", styles: [".adf-task-filters{margin-right:calc(-1 * var(--adf-theme-spacing))}.adf-task-filters__entry{font-size:var(--theme-body-1-font-size);color:var(--adf-theme-foreground-text-color-054);display:flex;justify-content:space-between;align-items:center;flex:1;height:100%}.adf-task-filters__entry:hover{color:var(--theme-primary-color)}.adf-task-filters__entry-label{display:flex;flex:1;align-items:center;gap:var(--adf-theme-spacing)}.adf-task-filters__entry-counter{padding:0 5px;border-radius:15px}.adf-task-filters__entry-counter.adf-active{background-color:var(--theme-accent-color);color:var(--theme-accent-color-default-contrast);font-size:smaller}.adf-task-filters .adf-active .adf-task-filters__entry-label{color:var(--theme-primary-color)}\n"] }]
245
245
  }], propDecorators: { searchApiMethod: [{
@@ -253,4 +253,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
253
253
  }], updatedFilter: [{
254
254
  type: Output
255
255
  }] } });
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWZpbHRlcnMvY29tcG9uZW50cy90YXNrLWZpbHRlcnMvdGFzay1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWZpbHRlcnMvY29tcG9uZW50cy90YXNrLWZpbHRlcnMvdGFzay1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHckYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDM0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQVV2RCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsNkJBQTZCO0lBUjVFOztRQVNJLDJGQUEyRjtRQUUzRixvQkFBZSxHQUFtQixLQUFLLENBQUM7UUFFeEMsOEVBQThFO1FBRTlFLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFFMUQsMERBQTBEO1FBRTFELGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFFekQsZ0RBQWdEO1FBRWhELHlCQUFvQixHQUF5QyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUV4RyxzQ0FBc0M7UUFFdEMsa0JBQWEsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUdqRSxZQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUdyQyx5QkFBb0IsR0FBOEIsRUFBRSxDQUFDO1FBRXBDLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3hELHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BELHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBb05oRTtJQWxORyxRQUFRO1FBQ0osSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxQyxDQUFDO2FBQU0sSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsT0FBZTtRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDOUQsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQjtRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQTRCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsTUFBNEI7UUFDNUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUM7YUFDOUIsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUNMO2FBQ0EsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRztnQkFDWixHQUFHLElBQUksQ0FBQyxRQUFRO2dCQUNoQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJO2FBQ3JCLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxNQUE0QjtRQUN2RCxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssTUFBTTtZQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLElBQUksc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEYsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsOEJBQThCO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxzQkFBc0I7aUJBQ3RCLCtCQUErQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7aUJBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3hCLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNsQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUN2QixDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLGtCQUF5QztRQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzVCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBNEIsRUFBRSxrQkFBeUM7UUFDbkYsT0FBTyxDQUNILE1BQU0sQ0FBQyxNQUFNLEtBQUssa0JBQWtCLENBQUMsTUFBTTtZQUMzQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssa0JBQWtCLENBQUMsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FDakcsQ0FBQztJQUNOLENBQUM7SUFFTSxZQUFZLENBQUMsV0FBOEI7UUFDOUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEYsSUFBSSxDQUFDLGFBQWE7WUFDZCxlQUFlO2dCQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNiLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQ2QsV0FBVyxDQUFDLEtBQUssS0FBSyxLQUFLO29CQUMzQixXQUFXLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxHQUFHO29CQUM5QixXQUFXLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFO29CQUM1QixDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FDdEksQ0FBQyxDQUFDLDZDQUE2QztJQUN4RCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsY0FBaUM7UUFDeEQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRWxDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pELENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxNQUF5QjtRQUNuQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksdUJBQXVCO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQ7O09BRUc7SUFDSyxXQUFXO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVELGlDQUFpQyxDQUFDLFNBQWlCLEVBQUUsV0FBbUI7UUFDcEUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUM3RyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxDQUFDO1lBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxvQ0FBb0M7UUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDMUgsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBalBRLHlCQUF5QjttR0FBekIseUJBQXlCLDJVQzFDdEMsbS9DQW1DQSw4eEJERWMsWUFBWSxvVEFBRSx3QkFBd0Isa09BQUUsZUFBZSw0RkFBRSxhQUFhLDJGQUFFLGFBQWE7OzRGQUt0Rix5QkFBeUI7a0JBUnJDLFNBQVM7K0JBQ0ksd0JBQXdCLGNBQ3RCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxpQkFHakYsaUJBQWlCLENBQUMsSUFBSTs4QkFLckMsZUFBZTtzQkFEZCxLQUFLO2dCQUtOLGNBQWM7c0JBRGIsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBS1Asb0JBQW9CO3NCQURuQixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUYXNrRmlsdGVyQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFzay1maWx0ZXItY2xvdWQuc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXJQYXJhbXNNb2RlbCwgVGFza0ZpbHRlckNsb3VkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVyLWNsb3VkLm1vZGVsJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UsIEljb25Db21wb25lbnQsIFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJhc2VUYXNrRmlsdGVyc0Nsb3VkQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS10YXNrLWZpbHRlcnMtY2xvdWQuY29tcG9uZW50JztcbmltcG9ydCB7IFRhc2tEZXRhaWxzQ2xvdWRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy90YXNrLWRldGFpbHMtY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgVGFza0Nsb3VkRW5naW5lRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZW5naW5lLWV2ZW50LWNsb3VkLm1vZGVsJztcbmltcG9ydCB7IFRhc2tMaXN0Q2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdGFzay1saXN0L3NlcnZpY2VzL3Rhc2stbGlzdC1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFRhc2tGaWx0ZXJDbG91ZEFkYXB0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmlsdGVyLWNsb3VkLW1vZGVsJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1jbG91ZC10YXNrLWZpbHRlcnMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIEljb25Db21wb25lbnQsIE1hdExpc3RNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YXNrLWZpbHRlcnMtY2xvdWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Rhc2stZmlsdGVycy1jbG91ZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVGFza0ZpbHRlcnNDbG91ZENvbXBvbmVudCBleHRlbmRzIEJhc2VUYXNrRmlsdGVyc0Nsb3VkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIC8qKiAob3B0aW9uYWwpIEZyb20gQWN0aXZpdGkgOC43LjAgZm9yd2FyZCwgdXNlIHRoZSAnUE9TVCcgbWV0aG9kIHRvIGdldCB0aGUgdGFzayBjb3VudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaEFwaU1ldGhvZDogJ0dFVCcgfCAnUE9TVCcgPSAnR0VUJztcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBmaWx0ZXIgaXMgYmVpbmcgc2VsZWN0ZWQgYmFzZWQgb24gdGhlIGZpbHRlclBhcmFtIGlucHV0LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZpbHRlclNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUYXNrRmlsdGVyQ2xvdWRNb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBmaWx0ZXIgaXMgYmVpbmcgY2xpY2tlZCBmcm9tIHRoZSBVSS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBmaWx0ZXJDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxUYXNrRmlsdGVyQ2xvdWRNb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gZmlsdGVyIGNvdW50ZXJzIGFyZSB1cGRhdGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZpbHRlckNvdW50ZXJVcGRhdGVkOiBFdmVudEVtaXR0ZXI8VGFza0Nsb3VkRW5naW5lRXZlbnRbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRhc2tDbG91ZEVuZ2luZUV2ZW50W10+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGZpbHRlciBpcyB1cGRhdGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHVwZGF0ZWRGaWx0ZXI6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBmaWx0ZXJzJDogT2JzZXJ2YWJsZTxUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdPjtcbiAgICBmaWx0ZXJzOiBUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdID0gW107XG4gICAgY3VycmVudEZpbHRlcjogVGFza0ZpbHRlckNsb3VkTW9kZWw7XG4gICAgZW5hYmxlTm90aWZpY2F0aW9uczogYm9vbGVhbjtcbiAgICBjdXJyZW50RmlsdGVyc1ZhbHVlczogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrRmlsdGVyQ2xvdWRTZXJ2aWNlID0gaW5qZWN0KFRhc2tGaWx0ZXJDbG91ZFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFza0xpc3RDbG91ZFNlcnZpY2UgPSBpbmplY3QoVGFza0xpc3RDbG91ZFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0aW9uU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWdTZXJ2aWNlID0gaW5qZWN0KEFwcENvbmZpZ1NlcnZpY2UpO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZW5hYmxlTm90aWZpY2F0aW9ucyA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXQoJ25vdGlmaWNhdGlvbnMnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5nZXRGaWx0ZXJzKHRoaXMuYXBwTmFtZSk7XG4gICAgICAgIHRoaXMuaW5pdEZpbHRlckNvdW50ZXJOb3RpZmljYXRpb25zKCk7XG4gICAgICAgIHRoaXMuZ2V0RmlsdGVyS2V5c0FmdGVyRXh0ZXJuYWxSZWZyZXNoaW5nKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBhcHBOYW1lID0gY2hhbmdlc1snYXBwTmFtZSddO1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBjaGFuZ2VzWydmaWx0ZXJQYXJhbSddO1xuICAgICAgICBpZiAoYXBwTmFtZSAmJiBhcHBOYW1lLmN1cnJlbnRWYWx1ZSAhPT0gYXBwTmFtZS5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZpbHRlcnMoYXBwTmFtZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlciAmJiBmaWx0ZXIuY3VycmVudFZhbHVlICE9PSBmaWx0ZXIucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RGaWx0ZXJBbmRFbWl0KGZpbHRlci5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZHMgdGhlIGZpbHRlciBsaXN0IGZpbHRlcmVkIGJ5IGFwcE5hbWVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBOYW1lIGFwcGxpY2F0aW9uIG5hbWVcbiAgICAgKi9cbiAgICBnZXRGaWx0ZXJzKGFwcE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcnMkID0gdGhpcy50YXNrRmlsdGVyQ2xvdWRTZXJ2aWNlLmdldFRhc2tMaXN0RmlsdGVycyhhcHBOYW1lKTtcblxuICAgICAgICB0aGlzLmZpbHRlcnMkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldEZpbHRlcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVycyA9IHJlcyB8fCBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRGaWx0ZXJDb3VudGVycygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RmlsdGVyQW5kRW1pdCh0aGlzLmZpbHRlclBhcmFtKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlckNvdW50ZXJzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzLmVtaXQocmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIGNvdW50ZXIgY29sbGVjdGlvbiBmb3IgZmlsdGVyc1xuICAgICAqL1xuICAgIGluaXRGaWx0ZXJDb3VudGVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4gKHRoaXMuY291bnRlcnNbZmlsdGVyLmtleV0gPSAwKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZSBvdmVyIGZpbHRlcnMgYW5kIHVwZGF0ZSBjb3VudGVyc1xuICAgICAqL1xuICAgIHVwZGF0ZUZpbHRlckNvdW50ZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyOiBUYXNrRmlsdGVyQ2xvdWRNb2RlbCkgPT4gdGhpcy51cGRhdGVGaWx0ZXJDb3VudGVyKGZpbHRlcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBHZXQgY3VycmVudCB2YWx1ZSBmb3IgZmlsdGVyIGFuZCBjaGVjayBpZiB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbHRlciBmaWx0ZXJcbiAgICAgKi9cbiAgICB1cGRhdGVGaWx0ZXJDb3VudGVyKGZpbHRlcjogVGFza0ZpbHRlckNsb3VkTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFmaWx0ZXI/LnNob3dDb3VudGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mZXRjaFRhc2tGaWx0ZXJDb3VudGVyKGZpbHRlcilcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoZmlsdGVyQ291bnRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrSWZGaWx0ZXJWYWx1ZXNIYXNCZWVuVXBkYXRlZChmaWx0ZXIua2V5LCBmaWx0ZXJDb3VudGVyKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY291bnRlcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY291bnRlcnMsXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXIua2V5XTogZGF0YVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZldGNoVGFza0ZpbHRlckNvdW50ZXIoZmlsdGVyOiBUYXNrRmlsdGVyQ2xvdWRNb2RlbCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaEFwaU1ldGhvZCA9PT0gJ1BPU1QnXG4gICAgICAgICAgICA/IHRoaXMudGFza0xpc3RDbG91ZFNlcnZpY2UuZ2V0VGFza0xpc3RDb3VudGVyKG5ldyBUYXNrRmlsdGVyQ2xvdWRBZGFwdGVyKGZpbHRlcikpXG4gICAgICAgICAgICA6IHRoaXMudGFza0ZpbHRlckNsb3VkU2VydmljZS5nZXRUYXNrRmlsdGVyQ291bnRlcihmaWx0ZXIpO1xuICAgIH1cblxuICAgIGluaXRGaWx0ZXJDb3VudGVyTm90aWZpY2F0aW9ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFwcE5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lbmFibGVOb3RpZmljYXRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnRhc2tGaWx0ZXJDbG91ZFNlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0VGFza05vdGlmaWNhdGlvblN1YnNjcmlwdGlvbih0aGlzLmFwcE5hbWUpXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQuZm9yRWFjaCgodGFza0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRmlsdGVyQ291bnRlcih0YXNrRXZlbnQuZW50aXR5KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJDb3VudGVycygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckNvdW50ZXJVcGRhdGVkLmVtaXQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY291bnRlcnMgPSB7fTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrRmlsdGVyQ291bnRlcihmaWx0ZXJOb3RpZmljYXRpb246IFRhc2tEZXRhaWxzQ2xvdWRNb2RlbCkge1xuICAgICAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZpbHRlclByZXNlbnQoZmlsdGVyLCBmaWx0ZXJOb3RpZmljYXRpb24pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRUb1VwZGF0ZWRDb3VudGVycyhmaWx0ZXIua2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaXNGaWx0ZXJQcmVzZW50KGZpbHRlcjogVGFza0ZpbHRlckNsb3VkTW9kZWwsIGZpbHRlck5vdGlmaWNhdGlvbjogVGFza0RldGFpbHNDbG91ZE1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBmaWx0ZXIuc3RhdHVzID09PSBmaWx0ZXJOb3RpZmljYXRpb24uc3RhdHVzICYmXG4gICAgICAgICAgICAoZmlsdGVyLmFzc2lnbmVlID09PSBmaWx0ZXJOb3RpZmljYXRpb24uYXNzaWduZWUgfHwgZmlsdGVyTm90aWZpY2F0aW9uLmFzc2lnbmVlID09PSB1bmRlZmluZWQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEZpbHRlcihwYXJhbUZpbHRlcjogRmlsdGVyUGFyYW1zTW9kZWwpIHtcbiAgICAgICAgaWYgKCFwYXJhbUZpbHRlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJlZmVycmVkRmlsdGVyID0gdGhpcy5maWx0ZXJzLmZpbmQoKGZpbHRlcikgPT4gZmlsdGVyLmlkID09PSBwYXJhbUZpbHRlci5pZCk7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyID1cbiAgICAgICAgICAgIHByZWZlcnJlZEZpbHRlciA/P1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGZpbHRlciwgaW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtRmlsdGVyLmluZGV4ID09PSBpbmRleCB8fFxuICAgICAgICAgICAgICAgICAgICBwYXJhbUZpbHRlci5rZXkgPT09IGZpbHRlci5rZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1GaWx0ZXIuaWQgPT09IGZpbHRlci5pZCB8fFxuICAgICAgICAgICAgICAgICAgICAocGFyYW1GaWx0ZXIubmFtZSAmJiBwYXJhbUZpbHRlci5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQoZmlsdGVyLm5hbWUpLnRvTG9jYWxlTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICApOyAvLyBmYWxsYmFjayB0byBwcmVzZXJ2ZSB0aGUgcHJldmlvdXMgYmVoYXZpb3JcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0RmlsdGVyQW5kRW1pdChuZXdQYXJhbUZpbHRlcjogRmlsdGVyUGFyYW1zTW9kZWwpIHtcbiAgICAgICAgaWYgKG5ld1BhcmFtRmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEZpbHRlcihuZXdQYXJhbUZpbHRlcik7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0RmlsdGVyQ291bnRlcih0aGlzLmN1cnJlbnRGaWx0ZXIua2V5KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlbGVjdGVkLmVtaXQodGhpcy5jdXJyZW50RmlsdGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgYW5kIGVtaXRzIHRoZSBjbGlja2VkIGZpbHRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgZmlsdGVyIG1vZGVsXG4gICAgICovXG4gICAgb25GaWx0ZXJDbGljayhmaWx0ZXI6IEZpbHRlclBhcmFtc01vZGVsKSB7XG4gICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlckNvdW50ZXIodGhpcy5jdXJyZW50RmlsdGVyKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ2xpY2tlZC5lbWl0KHRoaXMuY3VycmVudEZpbHRlcik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRDb3VudGVyc1NldC5kZWxldGUoZmlsdGVyLmtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1bnVzZWQgbWV0aG9kXG4gICAgICogU2VsZWN0IGFzIGRlZmF1bHQgdGFzayBmaWx0ZXIgdGhlIGZpcnN0IGluIHRoZSBsaXN0XG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdERlZmF1bHRUYXNrRmlsdGVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNGaWx0ZXJMaXN0RW1wdHkoKSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyID0gdGhpcy5maWx0ZXJzWzBdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGZpbHRlciBsaXN0IGlzIGVtcHR5XG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgZmlsdGVyIGxpc3QgaXMgZW1wdHksIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgaXNGaWx0ZXJMaXN0RW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcnMgPT09IHVuZGVmaW5lZCB8fCAodGhpcy5maWx0ZXJzICYmIHRoaXMuZmlsdGVycy5sZW5ndGggPT09IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0IHRoZSBmaWx0ZXJzIHByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc2V0RmlsdGVyKCkge1xuICAgICAgICB0aGlzLmZpbHRlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNoZWNrSWZGaWx0ZXJWYWx1ZXNIYXNCZWVuVXBkYXRlZChmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyVmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyc1ZhbHVlc1tmaWx0ZXJLZXldID09PSB1bmRlZmluZWQgfHwgdGhpcy5jdXJyZW50RmlsdGVyc1ZhbHVlc1tmaWx0ZXJLZXldICE9PSBmaWx0ZXJWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyc1ZhbHVlc1tmaWx0ZXJLZXldID0gZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRGaWx0ZXIuZW1pdChmaWx0ZXJLZXkpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVkQ291bnRlcnNTZXQuYWRkKGZpbHRlcktleSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgZmlsZXIga2V5IHdoZW4gZmlsdGVyIHdhcyByZWZyZXNoZWQgYnkgZXh0ZXJuYWwgYWN0aW9uXG4gICAgICpcbiAgICAgKi9cbiAgICBnZXRGaWx0ZXJLZXlzQWZ0ZXJFeHRlcm5hbFJlZnJlc2hpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFza0ZpbHRlckNsb3VkU2VydmljZS5maWx0ZXJLZXlUb0JlUmVmcmVzaGVkJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGZpbHRlcktleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRDb3VudGVyc1NldC5kZWxldGUoZmlsdGVyS2V5KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG1hdC1hY3Rpb24tbGlzdCBjbGFzcz1cImFkZi10YXNrLWZpbHRlcnNcIiAqbmdJZj1cImZpbHRlcnMkIHwgYXN5bmMgYXMgZmlsdGVyTGlzdDsgZWxzZSBsb2FkaW5nXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZmlsdGVyTGlzdFwiXG4gICAgICAgICAgICBtYXQtbGlzdC1pdGVtXG4gICAgICAgICAgICAoY2xpY2spPVwib25GaWx0ZXJDbGljayhmaWx0ZXIpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmlsdGVyLm5hbWUgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2lkXT1cImZpbHRlci5pZFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiZmlsdGVyLmtleSArICdfZmlsdGVyJ1wiXG4gICAgICAgICAgICBbY2xhc3MuYWRmLWFjdGl2ZV09XCJjdXJyZW50RmlsdGVyID09PSBmaWx0ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdGFzay1maWx0ZXJzX19lbnRyeVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdGFzay1maWx0ZXJzX19lbnRyeS1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLWljb24gZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWZpbHRlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0ljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmaWx0ZXIuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1maWx0ZXItbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbHRlci5uYW1lIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvdW50ZXJzW2ZpbHRlci5rZXldXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cImZpbHRlci5rZXkgKyAnX2ZpbHRlci1jb3VudGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXRhc2stZmlsdGVyc19fZW50cnktY291bnRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hZGYtYWN0aXZlXT1cIndhc0ZpbHRlclVwZGF0ZWQoZmlsdGVyLmtleSlcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgY291bnRlcnNbZmlsdGVyLmtleV0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtYWN0aW9uLWxpc3Q+XG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1hcHAtbGlzdC1zcGlubmVyXCI+XG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWZpbHRlcnMvY29tcG9uZW50cy90YXNrLWZpbHRlcnMvdGFzay1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWZpbHRlcnMvY29tcG9uZW50cy90YXNrLWZpbHRlcnMvdGFzay1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHckYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDM0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQVV2RCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsNkJBQTZCO0lBUjVFOztRQVNJLDJGQUEyRjtRQUUzRixvQkFBZSxHQUFtQixLQUFLLENBQUM7UUFFeEMsOEVBQThFO1FBRTlFLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFFMUQsMERBQTBEO1FBRTFELGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFFekQsZ0RBQWdEO1FBRWhELHlCQUFvQixHQUF5QyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUV4RyxzQ0FBc0M7UUFFdEMsa0JBQWEsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUdqRSxZQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUdyQyx5QkFBb0IsR0FBOEIsRUFBRSxDQUFDO1FBRXBDLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3hELHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BELHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBb05oRTtJQWxORyxRQUFRO1FBQ0osSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxQyxDQUFDO2FBQU0sSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsT0FBZTtRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDOUQsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQjtRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQTRCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsTUFBNEI7UUFDNUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUM7YUFDOUIsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUNMO2FBQ0EsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRztnQkFDWixHQUFHLElBQUksQ0FBQyxRQUFRO2dCQUNoQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJO2FBQ3JCLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxNQUE0QjtRQUN2RCxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssTUFBTTtZQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLElBQUksc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEYsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsOEJBQThCO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxzQkFBc0I7aUJBQ3RCLCtCQUErQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7aUJBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3hCLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNsQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUN2QixDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLGtCQUF5QztRQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzVCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBNEIsRUFBRSxrQkFBeUM7UUFDbkYsT0FBTyxDQUNILE1BQU0sQ0FBQyxNQUFNLEtBQUssa0JBQWtCLENBQUMsTUFBTTtZQUMzQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssa0JBQWtCLENBQUMsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FDakcsQ0FBQztJQUNOLENBQUM7SUFFTSxZQUFZLENBQUMsV0FBOEI7UUFDOUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEYsSUFBSSxDQUFDLGFBQWE7WUFDZCxlQUFlO2dCQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNiLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQ2QsV0FBVyxDQUFDLEtBQUssS0FBSyxLQUFLO29CQUMzQixXQUFXLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxHQUFHO29CQUM5QixXQUFXLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFO29CQUM1QixDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FDdEksQ0FBQyxDQUFDLDZDQUE2QztJQUN4RCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsY0FBaUM7UUFDeEQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRWxDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pELENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxNQUF5QjtRQUNuQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksdUJBQXVCO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQ7O09BRUc7SUFDSyxXQUFXO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVELGlDQUFpQyxDQUFDLFNBQWlCLEVBQUUsV0FBbUI7UUFDcEUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUM3RyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxDQUFDO1lBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxvQ0FBb0M7UUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDMUgsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBalBRLHlCQUF5QjtrR0FBekIseUJBQXlCLDJVQzFDdEMsbS9DQW1DQSw4eEJERWMsWUFBWSxvVEFBRSx3QkFBd0Isa09BQUUsZUFBZSw0RkFBRSxhQUFhLDJGQUFFLGFBQWE7OzJGQUt0Rix5QkFBeUI7a0JBUnJDLFNBQVM7K0JBQ0ksd0JBQXdCLGNBQ3RCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxpQkFHakYsaUJBQWlCLENBQUMsSUFBSTs4QkFLckMsZUFBZTtzQkFEZCxLQUFLO2dCQUtOLGNBQWM7c0JBRGIsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBS1Asb0JBQW9CO3NCQURuQixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUYXNrRmlsdGVyQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFzay1maWx0ZXItY2xvdWQuc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXJQYXJhbXNNb2RlbCwgVGFza0ZpbHRlckNsb3VkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVyLWNsb3VkLm1vZGVsJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UsIEljb25Db21wb25lbnQsIFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJhc2VUYXNrRmlsdGVyc0Nsb3VkQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS10YXNrLWZpbHRlcnMtY2xvdWQuY29tcG9uZW50JztcbmltcG9ydCB7IFRhc2tEZXRhaWxzQ2xvdWRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy90YXNrLWRldGFpbHMtY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgVGFza0Nsb3VkRW5naW5lRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZW5naW5lLWV2ZW50LWNsb3VkLm1vZGVsJztcbmltcG9ydCB7IFRhc2tMaXN0Q2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdGFzay1saXN0L3NlcnZpY2VzL3Rhc2stbGlzdC1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFRhc2tGaWx0ZXJDbG91ZEFkYXB0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmlsdGVyLWNsb3VkLW1vZGVsJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1jbG91ZC10YXNrLWZpbHRlcnMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIEljb25Db21wb25lbnQsIE1hdExpc3RNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YXNrLWZpbHRlcnMtY2xvdWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Rhc2stZmlsdGVycy1jbG91ZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVGFza0ZpbHRlcnNDbG91ZENvbXBvbmVudCBleHRlbmRzIEJhc2VUYXNrRmlsdGVyc0Nsb3VkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIC8qKiAob3B0aW9uYWwpIEZyb20gQWN0aXZpdGkgOC43LjAgZm9yd2FyZCwgdXNlIHRoZSAnUE9TVCcgbWV0aG9kIHRvIGdldCB0aGUgdGFzayBjb3VudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaEFwaU1ldGhvZDogJ0dFVCcgfCAnUE9TVCcgPSAnR0VUJztcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBmaWx0ZXIgaXMgYmVpbmcgc2VsZWN0ZWQgYmFzZWQgb24gdGhlIGZpbHRlclBhcmFtIGlucHV0LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZpbHRlclNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUYXNrRmlsdGVyQ2xvdWRNb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBmaWx0ZXIgaXMgYmVpbmcgY2xpY2tlZCBmcm9tIHRoZSBVSS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBmaWx0ZXJDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxUYXNrRmlsdGVyQ2xvdWRNb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gZmlsdGVyIGNvdW50ZXJzIGFyZSB1cGRhdGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZpbHRlckNvdW50ZXJVcGRhdGVkOiBFdmVudEVtaXR0ZXI8VGFza0Nsb3VkRW5naW5lRXZlbnRbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRhc2tDbG91ZEVuZ2luZUV2ZW50W10+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGZpbHRlciBpcyB1cGRhdGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHVwZGF0ZWRGaWx0ZXI6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBmaWx0ZXJzJDogT2JzZXJ2YWJsZTxUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdPjtcbiAgICBmaWx0ZXJzOiBUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdID0gW107XG4gICAgY3VycmVudEZpbHRlcjogVGFza0ZpbHRlckNsb3VkTW9kZWw7XG4gICAgZW5hYmxlTm90aWZpY2F0aW9uczogYm9vbGVhbjtcbiAgICBjdXJyZW50RmlsdGVyc1ZhbHVlczogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrRmlsdGVyQ2xvdWRTZXJ2aWNlID0gaW5qZWN0KFRhc2tGaWx0ZXJDbG91ZFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFza0xpc3RDbG91ZFNlcnZpY2UgPSBpbmplY3QoVGFza0xpc3RDbG91ZFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0aW9uU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWdTZXJ2aWNlID0gaW5qZWN0KEFwcENvbmZpZ1NlcnZpY2UpO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZW5hYmxlTm90aWZpY2F0aW9ucyA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXQoJ25vdGlmaWNhdGlvbnMnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5nZXRGaWx0ZXJzKHRoaXMuYXBwTmFtZSk7XG4gICAgICAgIHRoaXMuaW5pdEZpbHRlckNvdW50ZXJOb3RpZmljYXRpb25zKCk7XG4gICAgICAgIHRoaXMuZ2V0RmlsdGVyS2V5c0FmdGVyRXh0ZXJuYWxSZWZyZXNoaW5nKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBhcHBOYW1lID0gY2hhbmdlc1snYXBwTmFtZSddO1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBjaGFuZ2VzWydmaWx0ZXJQYXJhbSddO1xuICAgICAgICBpZiAoYXBwTmFtZSAmJiBhcHBOYW1lLmN1cnJlbnRWYWx1ZSAhPT0gYXBwTmFtZS5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZpbHRlcnMoYXBwTmFtZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlciAmJiBmaWx0ZXIuY3VycmVudFZhbHVlICE9PSBmaWx0ZXIucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RGaWx0ZXJBbmRFbWl0KGZpbHRlci5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZHMgdGhlIGZpbHRlciBsaXN0IGZpbHRlcmVkIGJ5IGFwcE5hbWVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBOYW1lIGFwcGxpY2F0aW9uIG5hbWVcbiAgICAgKi9cbiAgICBnZXRGaWx0ZXJzKGFwcE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcnMkID0gdGhpcy50YXNrRmlsdGVyQ2xvdWRTZXJ2aWNlLmdldFRhc2tMaXN0RmlsdGVycyhhcHBOYW1lKTtcblxuICAgICAgICB0aGlzLmZpbHRlcnMkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldEZpbHRlcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVycyA9IHJlcyB8fCBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRGaWx0ZXJDb3VudGVycygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RmlsdGVyQW5kRW1pdCh0aGlzLmZpbHRlclBhcmFtKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlckNvdW50ZXJzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzLmVtaXQocmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIGNvdW50ZXIgY29sbGVjdGlvbiBmb3IgZmlsdGVyc1xuICAgICAqL1xuICAgIGluaXRGaWx0ZXJDb3VudGVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4gKHRoaXMuY291bnRlcnNbZmlsdGVyLmtleV0gPSAwKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZSBvdmVyIGZpbHRlcnMgYW5kIHVwZGF0ZSBjb3VudGVyc1xuICAgICAqL1xuICAgIHVwZGF0ZUZpbHRlckNvdW50ZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyOiBUYXNrRmlsdGVyQ2xvdWRNb2RlbCkgPT4gdGhpcy51cGRhdGVGaWx0ZXJDb3VudGVyKGZpbHRlcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBHZXQgY3VycmVudCB2YWx1ZSBmb3IgZmlsdGVyIGFuZCBjaGVjayBpZiB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbHRlciBmaWx0ZXJcbiAgICAgKi9cbiAgICB1cGRhdGVGaWx0ZXJDb3VudGVyKGZpbHRlcjogVGFza0ZpbHRlckNsb3VkTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFmaWx0ZXI/LnNob3dDb3VudGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mZXRjaFRhc2tGaWx0ZXJDb3VudGVyKGZpbHRlcilcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoZmlsdGVyQ291bnRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrSWZGaWx0ZXJWYWx1ZXNIYXNCZWVuVXBkYXRlZChmaWx0ZXIua2V5LCBmaWx0ZXJDb3VudGVyKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY291bnRlcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY291bnRlcnMsXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXIua2V5XTogZGF0YVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZldGNoVGFza0ZpbHRlckNvdW50ZXIoZmlsdGVyOiBUYXNrRmlsdGVyQ2xvdWRNb2RlbCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaEFwaU1ldGhvZCA9PT0gJ1BPU1QnXG4gICAgICAgICAgICA/IHRoaXMudGFza0xpc3RDbG91ZFNlcnZpY2UuZ2V0VGFza0xpc3RDb3VudGVyKG5ldyBUYXNrRmlsdGVyQ2xvdWRBZGFwdGVyKGZpbHRlcikpXG4gICAgICAgICAgICA6IHRoaXMudGFza0ZpbHRlckNsb3VkU2VydmljZS5nZXRUYXNrRmlsdGVyQ291bnRlcihmaWx0ZXIpO1xuICAgIH1cblxuICAgIGluaXRGaWx0ZXJDb3VudGVyTm90aWZpY2F0aW9ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFwcE5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lbmFibGVOb3RpZmljYXRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnRhc2tGaWx0ZXJDbG91ZFNlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0VGFza05vdGlmaWNhdGlvblN1YnNjcmlwdGlvbih0aGlzLmFwcE5hbWUpXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQuZm9yRWFjaCgodGFza0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRmlsdGVyQ291bnRlcih0YXNrRXZlbnQuZW50aXR5KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJDb3VudGVycygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckNvdW50ZXJVcGRhdGVkLmVtaXQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY291bnRlcnMgPSB7fTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrRmlsdGVyQ291bnRlcihmaWx0ZXJOb3RpZmljYXRpb246IFRhc2tEZXRhaWxzQ2xvdWRNb2RlbCkge1xuICAgICAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZpbHRlclByZXNlbnQoZmlsdGVyLCBmaWx0ZXJOb3RpZmljYXRpb24pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRUb1VwZGF0ZWRDb3VudGVycyhmaWx0ZXIua2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaXNGaWx0ZXJQcmVzZW50KGZpbHRlcjogVGFza0ZpbHRlckNsb3VkTW9kZWwsIGZpbHRlck5vdGlmaWNhdGlvbjogVGFza0RldGFpbHNDbG91ZE1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBmaWx0ZXIuc3RhdHVzID09PSBmaWx0ZXJOb3RpZmljYXRpb24uc3RhdHVzICYmXG4gICAgICAgICAgICAoZmlsdGVyLmFzc2lnbmVlID09PSBmaWx0ZXJOb3RpZmljYXRpb24uYXNzaWduZWUgfHwgZmlsdGVyTm90aWZpY2F0aW9uLmFzc2lnbmVlID09PSB1bmRlZmluZWQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEZpbHRlcihwYXJhbUZpbHRlcjogRmlsdGVyUGFyYW1zTW9kZWwpIHtcbiAgICAgICAgaWYgKCFwYXJhbUZpbHRlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJlZmVycmVkRmlsdGVyID0gdGhpcy5maWx0ZXJzLmZpbmQoKGZpbHRlcikgPT4gZmlsdGVyLmlkID09PSBwYXJhbUZpbHRlci5pZCk7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyID1cbiAgICAgICAgICAgIHByZWZlcnJlZEZpbHRlciA/P1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGZpbHRlciwgaW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtRmlsdGVyLmluZGV4ID09PSBpbmRleCB8fFxuICAgICAgICAgICAgICAgICAgICBwYXJhbUZpbHRlci5rZXkgPT09IGZpbHRlci5rZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1GaWx0ZXIuaWQgPT09IGZpbHRlci5pZCB8fFxuICAgICAgICAgICAgICAgICAgICAocGFyYW1GaWx0ZXIubmFtZSAmJiBwYXJhbUZpbHRlci5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQoZmlsdGVyLm5hbWUpLnRvTG9jYWxlTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICApOyAvLyBmYWxsYmFjayB0byBwcmVzZXJ2ZSB0aGUgcHJldmlvdXMgYmVoYXZpb3JcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0RmlsdGVyQW5kRW1pdChuZXdQYXJhbUZpbHRlcjogRmlsdGVyUGFyYW1zTW9kZWwpIHtcbiAgICAgICAgaWYgKG5ld1BhcmFtRmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEZpbHRlcihuZXdQYXJhbUZpbHRlcik7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0RmlsdGVyQ291bnRlcih0aGlzLmN1cnJlbnRGaWx0ZXIua2V5KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlbGVjdGVkLmVtaXQodGhpcy5jdXJyZW50RmlsdGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgYW5kIGVtaXRzIHRoZSBjbGlja2VkIGZpbHRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgZmlsdGVyIG1vZGVsXG4gICAgICovXG4gICAgb25GaWx0ZXJDbGljayhmaWx0ZXI6IEZpbHRlclBhcmFtc01vZGVsKSB7XG4gICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlckNvdW50ZXIodGhpcy5jdXJyZW50RmlsdGVyKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ2xpY2tlZC5lbWl0KHRoaXMuY3VycmVudEZpbHRlcik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRDb3VudGVyc1NldC5kZWxldGUoZmlsdGVyLmtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1bnVzZWQgbWV0aG9kXG4gICAgICogU2VsZWN0IGFzIGRlZmF1bHQgdGFzayBmaWx0ZXIgdGhlIGZpcnN0IGluIHRoZSBsaXN0XG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdERlZmF1bHRUYXNrRmlsdGVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNGaWx0ZXJMaXN0RW1wdHkoKSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyID0gdGhpcy5maWx0ZXJzWzBdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGZpbHRlciBsaXN0IGlzIGVtcHR5XG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgZmlsdGVyIGxpc3QgaXMgZW1wdHksIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgaXNGaWx0ZXJMaXN0RW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcnMgPT09IHVuZGVmaW5lZCB8fCAodGhpcy5maWx0ZXJzICYmIHRoaXMuZmlsdGVycy5sZW5ndGggPT09IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0IHRoZSBmaWx0ZXJzIHByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc2V0RmlsdGVyKCkge1xuICAgICAgICB0aGlzLmZpbHRlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNoZWNrSWZGaWx0ZXJWYWx1ZXNIYXNCZWVuVXBkYXRlZChmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyVmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyc1ZhbHVlc1tmaWx0ZXJLZXldID09PSB1bmRlZmluZWQgfHwgdGhpcy5jdXJyZW50RmlsdGVyc1ZhbHVlc1tmaWx0ZXJLZXldICE9PSBmaWx0ZXJWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyc1ZhbHVlc1tmaWx0ZXJLZXldID0gZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRGaWx0ZXIuZW1pdChmaWx0ZXJLZXkpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVkQ291bnRlcnNTZXQuYWRkKGZpbHRlcktleSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgZmlsZXIga2V5IHdoZW4gZmlsdGVyIHdhcyByZWZyZXNoZWQgYnkgZXh0ZXJuYWwgYWN0aW9uXG4gICAgICpcbiAgICAgKi9cbiAgICBnZXRGaWx0ZXJLZXlzQWZ0ZXJFeHRlcm5hbFJlZnJlc2hpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFza0ZpbHRlckNsb3VkU2VydmljZS5maWx0ZXJLZXlUb0JlUmVmcmVzaGVkJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGZpbHRlcktleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRDb3VudGVyc1NldC5kZWxldGUoZmlsdGVyS2V5KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG1hdC1hY3Rpb24tbGlzdCBjbGFzcz1cImFkZi10YXNrLWZpbHRlcnNcIiAqbmdJZj1cImZpbHRlcnMkIHwgYXN5bmMgYXMgZmlsdGVyTGlzdDsgZWxzZSBsb2FkaW5nXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZmlsdGVyTGlzdFwiXG4gICAgICAgICAgICBtYXQtbGlzdC1pdGVtXG4gICAgICAgICAgICAoY2xpY2spPVwib25GaWx0ZXJDbGljayhmaWx0ZXIpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmlsdGVyLm5hbWUgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2lkXT1cImZpbHRlci5pZFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiZmlsdGVyLmtleSArICdfZmlsdGVyJ1wiXG4gICAgICAgICAgICBbY2xhc3MuYWRmLWFjdGl2ZV09XCJjdXJyZW50RmlsdGVyID09PSBmaWx0ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdGFzay1maWx0ZXJzX19lbnRyeVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdGFzay1maWx0ZXJzX19lbnRyeS1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLWljb24gZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWZpbHRlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0ljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmaWx0ZXIuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1maWx0ZXItbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbHRlci5uYW1lIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvdW50ZXJzW2ZpbHRlci5rZXldXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cImZpbHRlci5rZXkgKyAnX2ZpbHRlci1jb3VudGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXRhc2stZmlsdGVyc19fZW50cnktY291bnRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hZGYtYWN0aXZlXT1cIndhc0ZpbHRlclVwZGF0ZWQoZmlsdGVyLmtleSlcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgY291bnRlcnNbZmlsdGVyLmtleV0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtYWN0aW9uLWxpc3Q+XG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1hcHAtbGlzdC1zcGlubmVyXCI+XG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -268,10 +268,10 @@ export class ServiceTaskFilterCloudService {
268
268
  generateRandomId() {
269
269
  return Math.random().toString(36).substring(2, 9);
270
270
  }
271
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceTaskFilterCloudService, deps: [{ token: i1.IdentityUserService }, { token: TASK_FILTERS_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
272
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceTaskFilterCloudService, providedIn: 'root' }); }
271
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ServiceTaskFilterCloudService, deps: [{ token: i1.IdentityUserService }, { token: TASK_FILTERS_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
272
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ServiceTaskFilterCloudService, providedIn: 'root' }); }
273
273
  }
274
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceTaskFilterCloudService, decorators: [{
274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ServiceTaskFilterCloudService, decorators: [{
275
275
  type: Injectable,
276
276
  args: [{
277
277
  providedIn: 'root'
@@ -280,4 +280,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
280
280
  type: Inject,
281
281
  args: [TASK_FILTERS_SERVICE_TOKEN]
282
282
  }] }] });
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS10YXNrLWZpbHRlci1jbG91ZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi90YXNrL3Rhc2stZmlsdGVycy9zZXJ2aWNlcy9zZXJ2aWNlLXRhc2stZmlsdGVyLWNsb3VkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLEVBQUUsRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7O0FBS3JGLE1BQU0sT0FBTyw2QkFBNkI7SUFJdEMsWUFDWSxtQkFBd0MsRUFFekMsaUJBQWtEO1FBRmpELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFFekMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFpQztRQU5yRCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFnQyxFQUFFLENBQUMsQ0FBQztRQUNoRixhQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQU0zQyxDQUFDO0lBRUo7Ozs7T0FJRztJQUNLLG9CQUFvQixDQUFDLE9BQWU7UUFDeEMsTUFBTSxHQUFHLEdBQVcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsaUJBQWlCO2FBQ2pCLGNBQWMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO2FBQzVCLElBQUksQ0FDRCxT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LEVBQUUsT0FBTztnQkFDZixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFLE1BQU07YUFDZTtTQUNuQyxDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQjtRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7K0dBblJRLDZCQUE2QixxREFNMUIsMEJBQTBCO21IQU43Qiw2QkFBNkIsY0FGMUIsTUFBTTs7NEZBRVQsNkJBQTZCO2tCQUh6QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBT1EsTUFBTTsyQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci1jbG91ZC5tb2RlbCc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFByZWZlcmVuY2VDbG91ZFNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVmZXJlbmNlLWNsb3VkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUQVNLX0ZJTFRFUlNfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Nsb3VkLXRva2VuLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWRlbnRpdHlVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Blb3BsZS9zZXJ2aWNlcy9pZGVudGl0eS11c2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGZpbHRlcnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWxbXT4oW10pO1xuICAgIGZpbHRlcnMkID0gdGhpcy5maWx0ZXJzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGlkZW50aXR5VXNlclNlcnZpY2U6IElkZW50aXR5VXNlclNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoVEFTS19GSUxURVJTX1NFUlZJQ0VfVE9LRU4pXG4gICAgICAgIHB1YmxpYyBwcmVmZXJlbmNlU2VydmljZTogUHJlZmVyZW5jZUNsb3VkU2VydmljZUludGVyZmFjZVxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW5kIHJldHVybnMgdGhlIGRlZmF1bHQgdGFzayBmaWx0ZXJzIGZvciBhbiBhcHAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXBwTmFtZSBOYW1lIG9mIHRoZSB0YXJnZXQgYXBwXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0RmlsdGVycyhhcHBOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qga2V5OiBzdHJpbmcgPSB0aGlzLnByZXBhcmVLZXkoYXBwTmFtZSk7XG4gICAgICAgIHRoaXMucHJlZmVyZW5jZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRQcmVmZXJlbmNlcyhhcHBOYW1lLCBrZXkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZWZlcmVuY2VzID0gcmVzcG9uc2U/Lmxpc3Q/LmVudHJpZXMgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcykgfHwgIXRoaXMuaGFzVGFza0ZpbHRlcnMocHJlZmVyZW5jZXMsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRhc2tGaWx0ZXJzKGFwcE5hbWUsIGtleSwgdGhpcy5kZWZhdWx0U2VydmljZVRhc2tGaWx0ZXJzKGFwcE5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0aGlzLmZpbmRGaWx0ZXJzQnlLZXlJblByZWZlcmVuY2VzKHByZWZlcmVuY2VzLCBrZXkpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChmaWx0ZXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRGaWx0ZXJzVG9TdHJlYW0oZmlsdGVycyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgdXNlciBwcmVmZXJlbmNlIGFyZSBlbXB0eSBvciBub3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcmVmZXJlbmNlcyBVc2VyIHByZWZlcmVuY2VzIG9mIHRoZSB0YXJnZXQgYXBwXG4gICAgICogQHJldHVybnMgQm9vbGVhbiB2YWx1ZSBpZiB0aGUgcHJlZmVyZW5jZXMgYXJlIG5vdCBlbXB0eVxuICAgICAqL1xuICAgIHByaXZhdGUgaGFzUHJlZmVyZW5jZXMocHJlZmVyZW5jZXM6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcHJlZmVyZW5jZXM/Lmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGZvciB0YXNrIGZpbHRlcnMgaW4gZ2l2ZW4gdXNlciBwcmVmZXJlbmNlc1xuICAgICAqXG4gICAgICogQHBhcmFtIHByZWZlcmVuY2VzIFVzZXIgcHJlZmVyZW5jZXMgb2YgdGhlIHRhcmdldCBhcHBcbiAgICAgKiBAcGFyYW0ga2V5IEtleSBvZiB0aGUgdGFzayBmaWx0ZXJzXG4gICAgICogQHJldHVybnMgQm9vbGVhbiB2YWx1ZSBpZiB0aGUgcHJlZmVyZW5jZSBoYXMgdGFzayBmaWx0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBoYXNUYXNrRmlsdGVycyhwcmVmZXJlbmNlczogYW55LCBrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gcHJlZmVyZW5jZXMuZmluZCgoZmlsdGVyOiBhbnkpID0+IGZpbHRlci5lbnRyeS5rZXkgPT09IGtleSk7XG4gICAgICAgIHJldHVybiBmaWx0ZXJzPy5lbnRyeSA/IEpTT04ucGFyc2UoZmlsdGVycy5lbnRyeS52YWx1ZSkubGVuZ3RoID4gMCA6IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxzIGNyZWF0ZSBwcmVmZXJlbmNlIGFwaSB0byBjcmVhdGUgdGFzayBmaWx0ZXJzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXBwTmFtZSBOYW1lIG9mIHRoZSB0YXJnZXQgYXBwXG4gICAgICogQHBhcmFtIGtleSBLZXkgb2YgdGhlIHRhc2sgaW5zdGFuY2UgZmlsdGVyc1xuICAgICAqIEBwYXJhbSBmaWx0ZXJzIERldGFpbHMgb2YgbmV3IHRhc2sgZmlsdGVyXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiBjcmVhdGVkIHRhc2sgZmlsdGVyc1xuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlVGFza0ZpbHRlcnMoYXBwTmFtZTogc3RyaW5nLCBrZXk6IHN0cmluZywgZmlsdGVyczogU2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsW10pOiBPYnNlcnZhYmxlPFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZWZlcmVuY2VTZXJ2aWNlLmNyZWF0ZVByZWZlcmVuY2UoYXBwTmFtZSwga2V5LCBmaWx0ZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxscyBnZXQgcHJlZmVyZW5jZSBhcGkgdG8gZ2V0IHRhc2sgZmlsdGVyIGJ5IHByZWZlcmVuY2Uga2V5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXBwTmFtZSBOYW1lIG9mIHRoZSB0YXJnZXQgYXBwXG4gICAgICogQHBhcmFtIGtleSBLZXkgb2YgdGhlIHRhc2sgZmlsdGVyc1xuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGFzayBmaWx0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRUYXNrRmlsdGVyc0J5S2V5KGFwcE5hbWU6IHN0cmluZywga2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZWZlcmVuY2VTZXJ2aWNlLmdldFByZWZlcmVuY2VCeUtleShhcHBOYW1lLCBrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIHRhc2sgZmlsdGVycyBmb3IgYSB0YXNrIGFwcC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBOYW1lIE5hbWUgb2YgdGhlIHRhcmdldCBhcHBcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRhc2sgZmlsdGVyIGRldGFpbHNcbiAgICAgKi9cbiAgICBnZXRUYXNrTGlzdEZpbHRlcnMoYXBwTmFtZT86IHN0cmluZyk6IE9ic2VydmFibGU8U2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsW10+IHtcbiAgICAgICAgdGhpcy5jcmVhdGVEZWZhdWx0RmlsdGVycyhhcHBOYW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVycyQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHRhc2sgZmlsdGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFwcE5hbWUgTmFtZSBvZiB0aGUgdGFyZ2V0IGFwcFxuICAgICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgdGFza1xuICAgICAqIEByZXR1cm5zIERldGFpbHMgb2YgdGhlIHRhc2sgZmlsdGVyXG4gICAgICovXG4gICAgZ2V0VGFza0ZpbHRlckJ5SWQoYXBwTmFtZTogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWw+IHtcbiAgICAgICAgY29uc3Qga2V5OiBzdHJpbmcgPSB0aGlzLnByZXBhcmVLZXkoYXBwTmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhc2tGaWx0ZXJzQnlLZXkoYXBwTmFtZSwga2V5KS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChmaWx0ZXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGFza0ZpbHRlcnMoYXBwTmFtZSwga2V5LCB0aGlzLmRlZmF1bHRTZXJ2aWNlVGFza0ZpbHRlcnMoYXBwTmFtZSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmaWx0ZXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcCgoZmlsdGVycykgPT4gZmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLmlkID09PSBpZClbMF0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIG5ldyB0YXNrIGZpbHRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdGaWx0ZXIgVGhlIG5ldyBmaWx0ZXIgdG8gYWRkXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0YXNrIGluc3RhbmNlIGZpbHRlcnMgd2l0aCBuZXdseSBhZGRlZCBmaWx0ZXJcbiAgICAgKi9cbiAgICBhZGRGaWx0ZXIobmV3RmlsdGVyOiBTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWwpOiBPYnNlcnZhYmxlPFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdPiB7XG4gICAgICAgIGNvbnN0IGtleTogc3RyaW5nID0gdGhpcy5wcmVwYXJlS2V5KG5ld0ZpbHRlci5hcHBOYW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGFza0ZpbHRlcnNCeUtleShuZXdGaWx0ZXIuYXBwTmFtZSwga2V5KS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChmaWx0ZXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGFza0ZpbHRlcnMobmV3RmlsdGVyLmFwcE5hbWUsIGtleSwgW25ld0ZpbHRlcl0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaChuZXdGaWx0ZXIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcmVmZXJlbmNlU2VydmljZS51cGRhdGVQcmVmZXJlbmNlKG5ld0ZpbHRlci5hcHBOYW1lLCBrZXksIGZpbHRlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKChmaWx0ZXJzOiBTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWxbXSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkRmlsdGVyc1RvU3RyZWFtKGZpbHRlcnMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEZpbHRlcnNUb1N0cmVhbShmaWx0ZXJzOiBTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWxbXSkge1xuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0Lm5leHQoZmlsdGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBhIHRhc2sgZmlsdGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHVwZGF0ZWRGaWx0ZXIgVGhlIGZpbHRlciB0byB1cGRhdGVcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRhc2sgaW5zdGFuY2UgZmlsdGVycyB3aXRoIHVwZGF0ZWQgZmlsdGVyXG4gICAgICovXG4gICAgdXBkYXRlRmlsdGVyKHVwZGF0ZWRGaWx0ZXI6IFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbCk6IE9ic2VydmFibGU8U2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsW10+IHtcbiAgICAgICAgY29uc3Qga2V5OiBzdHJpbmcgPSB0aGlzLnByZXBhcmVLZXkodXBkYXRlZEZpbHRlci5hcHBOYW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGFza0ZpbHRlcnNCeUtleSh1cGRhdGVkRmlsdGVyLmFwcE5hbWUsIGtleSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoZmlsdGVycykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJzPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGFza0ZpbHRlcnModXBkYXRlZEZpbHRlci5hcHBOYW1lLCBrZXksIFt1cGRhdGVkRmlsdGVyXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gZmlsdGVycy5maW5kSW5kZXgoKGZpbHRlcikgPT4gZmlsdGVyLmlkID09PSB1cGRhdGVkRmlsdGVyLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyc1tpdGVtSW5kZXhdID0gdXBkYXRlZEZpbHRlcjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlVGFza0ZpbHRlcnModXBkYXRlZEZpbHRlci5hcHBOYW1lLCBrZXksIGZpbHRlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCh1cGRhdGVkRmlsdGVycykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkRmlsdGVyc1RvU3RyZWFtKHVwZGF0ZWRGaWx0ZXJzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlZEZpbHRlcnM7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgYSB0YXNrIGZpbHRlclxuICAgICAqXG4gICAgICogQHBhcmFtIGRlbGV0ZWRGaWx0ZXIgVGhlIGZpbHRlciB0byBkZWxldGVcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRhc2sgaW5zdGFuY2UgZmlsdGVycyB3aXRob3V0IGRlbGV0ZWQgZmlsdGVyXG4gICAgICovXG4gICAgZGVsZXRlRmlsdGVyKGRlbGV0ZWRGaWx0ZXI6IFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbCk6IE9ic2VydmFibGU8U2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsW10+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5wcmVwYXJlS2V5KGRlbGV0ZWRGaWx0ZXIuYXBwTmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhc2tGaWx0ZXJzQnlLZXkoZGVsZXRlZEZpbHRlci5hcHBOYW1lLCBrZXkpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGZpbHRlcnMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVycz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzID0gZmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLmlkICE9PSBkZWxldGVkRmlsdGVyLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlVGFza0ZpbHRlcnMoZGVsZXRlZEZpbHRlci5hcHBOYW1lLCBrZXksIGZpbHRlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKGZpbHRlcnMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEZpbHRlcnNUb1N0cmVhbShmaWx0ZXJzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVycztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGdpdmVuIGZpbHRlciBpcyBhIGRlZmF1bHQgZmlsdGVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVyTmFtZSBOYW1lIG9mIHRoZSB0YXJnZXQgdGFzayBmaWx0ZXJcbiAgICAgKiBAcmV0dXJucyBCb29sZWFuIHZhbHVlIGZvciB3aGV0aGVyIHRoZSBmaWx0ZXIgaXMgYSBkZWZhdWx0IGZpbHRlclxuICAgICAqL1xuICAgIGlzRGVmYXVsdEZpbHRlcihmaWx0ZXJOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdEZpbHRlcnMgPSB0aGlzLmRlZmF1bHRTZXJ2aWNlVGFza0ZpbHRlcnMoKTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRGaWx0ZXJzLmZpbmRJbmRleCgoZmlsdGVyKSA9PiBmaWx0ZXJOYW1lID09PSBmaWx0ZXIubmFtZSkgIT09IC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxzIHVwZGF0ZSBwcmVmZXJlbmNlIGFwaSB0byB1cGRhdGUgdGFzayBmaWx0ZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBOYW1lIE5hbWUgb2YgdGhlIHRhcmdldCBhcHBcbiAgICAgKiBAcGFyYW0ga2V5IEtleSBvZiB0aGUgdGFzayBmaWx0ZXJzXG4gICAgICogQHBhcmFtIGZpbHRlcnMgRGV0YWlscyBvZiB1cGRhdGUgZmlsdGVyXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB1cGRhdGVkIHRhc2sgZmlsdGVyc1xuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlVGFza0ZpbHRlcnMoYXBwTmFtZTogc3RyaW5nLCBrZXk6IHN0cmluZywgZmlsdGVyczogU2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsW10pOiBPYnNlcnZhYmxlPFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZWZlcmVuY2VTZXJ2aWNlLnVwZGF0ZVByZWZlcmVuY2UoYXBwTmFtZSwga2V5LCBmaWx0ZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgdW5pcSBrZXkgd2l0aCBhcHBOYW1lIGFuZCB1c2VybmFtZVxuICAgICAqXG4gICAgICogQHBhcmFtIGFwcE5hbWUgTmFtZSBvZiB0aGUgdGFyZ2V0IGFwcFxuICAgICAqIEByZXR1cm5zIFN0cmluZyBvZiB0YXNrIGZpbHRlcnMgcHJlZmVyZW5jZSBrZXlcbiAgICAgKi9cbiAgICBwcml2YXRlIHByZXBhcmVLZXkoYXBwTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBzZXJ2aWNlLXRhc2stZmlsdGVycy0ke2FwcE5hbWV9LSR7dGhpcy5pZGVudGl0eVVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VySW5mbygpLnVzZXJuYW1lfWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYW5kIHJldHVybnMgdGhlIHRhc2sgZmlsdGVycyBmcm9tIHByZWZlcmVuY2VzXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBcnJheSBvZiBUYXNrRmlsdGVyQ2xvdWRNb2RlbFxuICAgICAqIEBwYXJhbSBwcmVmZXJlbmNlcyBwcmVmZXJlbmNlc1xuICAgICAqIEBwYXJhbSBrZXkga2V5XG4gICAgICovXG4gICAgcHJpdmF0ZSBmaW5kRmlsdGVyc0J5S2V5SW5QcmVmZXJlbmNlcyhwcmVmZXJlbmNlczogYW55LCBrZXk6IHN0cmluZyk6IFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcHJlZmVyZW5jZXMuZmluZCgoZmlsdGVyOiBhbnkpID0+IGZpbHRlci5lbnRyeS5rZXkgPT09IGtleSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ/LmVudHJ5ID8gSlNPTi5wYXJzZShyZXN1bHQuZW50cnkudmFsdWUpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbmQgcmV0dXJucyB0aGUgZGVmYXVsdCBmaWx0ZXJzIGZvciBhIHRhc2sgYXBwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFwcE5hbWUgTmFtZSBvZiB0aGUgdGFyZ2V0IGFwcFxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIFRhc2tGaWx0ZXJDbG91ZE1vZGVsXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZWZhdWx0U2VydmljZVRhc2tGaWx0ZXJzKGFwcE5hbWU/OiBzdHJpbmcpOiBTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWxbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuZ2VuZXJhdGVSYW5kb21JZCgpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdBREZfQ0xPVURfU0VSVklDRV9UQVNLX0ZJTFRFUlMuQUxMX1NFUlZJQ0VfVEFTS1MnLFxuICAgICAgICAgICAgICAgIGtleTogJ215LXNlcnZpY2UtdGFza3MnLFxuICAgICAgICAgICAgICAgIGljb246ICdpbmJveCcsXG4gICAgICAgICAgICAgICAgYXBwTmFtZSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgICAgIHNvcnQ6ICdzdGFydGVkRGF0ZScsXG4gICAgICAgICAgICAgICAgb3JkZXI6ICdERVNDJ1xuICAgICAgICAgICAgfSBhcyBTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWwsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuZ2VuZXJhdGVSYW5kb21JZCgpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdBREZfQ0xPVURfU0VSVklDRV9UQVNLX0ZJTFRFUlMuQ09NUExFVEVEX1RBU0tTJyxcbiAgICAgICAgICAgICAgICBrZXk6ICdjb21wbGV0ZWQtdGFza3MnLFxuICAgICAgICAgICAgICAgIGljb246ICdkb25lJyxcbiAgICAgICAgICAgICAgICBhcHBOYW1lLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ0NPTVBMRVRFRCcsXG4gICAgICAgICAgICAgICAgc29ydDogJ2NvbXBsZXRlZERhdGUnLFxuICAgICAgICAgICAgICAgIG9yZGVyOiAnREVTQydcbiAgICAgICAgICAgIH0gYXMgU2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmdlbmVyYXRlUmFuZG9tSWQoKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnQURGX0NMT1VEX1NFUlZJQ0VfVEFTS19GSUxURVJTLkVSUk9SRURfVEFTS1MnLFxuICAgICAgICAgICAgICAgIGtleTogJ2Vycm9yZWQtc2VydmljZS10YXNrcycsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBhcHBOYW1lLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ0VSUk9SJyxcbiAgICAgICAgICAgICAgICBzb3J0OiAnc3RhcnRlZERhdGUnLFxuICAgICAgICAgICAgICAgIG9yZGVyOiAnREVTQydcbiAgICAgICAgICAgIH0gYXMgU2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVSYW5kb21JZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDkpO1xuICAgIH1cbn1cbiJdfQ==
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS10YXNrLWZpbHRlci1jbG91ZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi90YXNrL3Rhc2stZmlsdGVycy9zZXJ2aWNlcy9zZXJ2aWNlLXRhc2stZmlsdGVyLWNsb3VkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLEVBQUUsRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7O0FBS3JGLE1BQU0sT0FBTyw2QkFBNkI7SUFJdEMsWUFDWSxtQkFBd0MsRUFFekMsaUJBQWtEO1FBRmpELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFFekMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFpQztRQU5yRCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFnQyxFQUFFLENBQUMsQ0FBQztRQUNoRixhQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQU0zQyxDQUFDO0lBRUo7Ozs7T0FJRztJQUNLLG9CQUFvQixDQUFDLE9BQWU7UUFDeEMsTUFBTSxHQUFHLEdBQVcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsaUJBQWlCO2FBQ2pCLGNBQWMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO2FBQzVCLElBQUksQ0FDRCxT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LEVBQUUsT0FBTztnQkFDZixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFLE1BQU07YUFDZTtTQUNuQyxDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQjtRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7OEdBblJRLDZCQUE2QixxREFNMUIsMEJBQTBCO2tIQU43Qiw2QkFBNkIsY0FGMUIsTUFBTTs7MkZBRVQsNkJBQTZCO2tCQUh6QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBT1EsTUFBTTsyQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci1jbG91ZC5tb2RlbCc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFByZWZlcmVuY2VDbG91ZFNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVmZXJlbmNlLWNsb3VkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUQVNLX0ZJTFRFUlNfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Nsb3VkLXRva2VuLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWRlbnRpdHlVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Blb3BsZS9zZXJ2aWNlcy9pZGVudGl0eS11c2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGZpbHRlcnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWxbXT4oW10pO1xuICAgIGZpbHRlcnMkID0gdGhpcy5maWx0ZXJzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGlkZW50aXR5VXNlclNlcnZpY2U6IElkZW50aXR5VXNlclNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoVEFTS19GSUxURVJTX1NFUlZJQ0VfVE9LRU4pXG4gICAgICAgIHB1YmxpYyBwcmVmZXJlbmNlU2VydmljZTogUHJlZmVyZW5jZUNsb3VkU2VydmljZUludGVyZmFjZVxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW5kIHJldHVybnMgdGhlIGRlZmF1bHQgdGFzayBmaWx0ZXJzIGZvciBhbiBhcHAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXBwTmFtZSBOYW1lIG9mIHRoZSB0YXJnZXQgYXBwXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0RmlsdGVycyhhcHBOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qga2V5OiBzdHJpbmcgPSB0aGlzLnByZXBhcmVLZXkoYXBwTmFtZSk7XG4gICAgICAgIHRoaXMucHJlZmVyZW5jZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRQcmVmZXJlbmNlcyhhcHBOYW1lLCBrZXkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZWZlcmVuY2VzID0gcmVzcG9uc2U/Lmxpc3Q/LmVudHJpZXMgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcykgfHwgIXRoaXMuaGFzVGFza0ZpbHRlcnMocHJlZmVyZW5jZXMsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRhc2tGaWx0ZXJzKGFwcE5hbWUsIGtleSwgdGhpcy5kZWZhdWx0U2VydmljZVRhc2tGaWx0ZXJzKGFwcE5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0aGlzLmZpbmRGaWx0ZXJzQnlLZXlJblByZWZlcmVuY2VzKHByZWZlcmVuY2VzLCBrZXkpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChmaWx0ZXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRGaWx0ZXJzVG9TdHJlYW0oZmlsdGVycyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgdXNlciBwcmVmZXJlbmNlIGFyZSBlbXB0eSBvciBub3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcmVmZXJlbmNlcyBVc2VyIHByZWZlcmVuY2VzIG9mIHRoZSB0YXJnZXQgYXBwXG4gICAgICogQHJldHVybnMgQm9vbGVhbiB2YWx1ZSBpZiB0aGUgcHJlZmVyZW5jZXMgYXJlIG5vdCBlbXB0eVxuICAgICAqL1xuICAgIHByaXZhdGUgaGFzUHJlZmVyZW5jZXMocHJlZmVyZW5jZXM6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcHJlZmVyZW5jZXM/Lmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGZvciB0YXNrIGZpbHRlcnMgaW4gZ2l2ZW4gdXNlciBwcmVmZXJlbmNlc1xuICAgICAqXG4gICAgICogQHBhcmFtIHByZWZlcmVuY2VzIFVzZXIgcHJlZmVyZW5jZXMgb2YgdGhlIHRhcmdldCBhcHBcbiAgICAgKiBAcGFyYW0ga2V5IEtleSBvZiB0aGUgdGFzayBmaWx0ZXJzXG4gICAgICogQHJldHVybnMgQm9vbGVhbiB2YWx1ZSBpZiB0aGUgcHJlZmVyZW5jZSBoYXMgdGFzayBmaWx0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBoYXNUYXNrRmlsdGVycyhwcmVmZXJlbmNlczogYW55LCBrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gcHJlZmVyZW5jZXMuZmluZCgoZmlsdGVyOiBhbnkpID0+IGZpbHRlci5lbnRyeS5rZXkgPT09IGtleSk7XG4gICAgICAgIHJldHVybiBmaWx0ZXJzPy5lbnRyeSA/IEpTT04ucGFyc2UoZmlsdGVycy5lbnRyeS52YWx1ZSkubGVuZ3RoID4gMCA6IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxzIGNyZWF0ZSBwcmVmZXJlbmNlIGFwaSB0byBjcmVhdGUgdGFzayBmaWx0ZXJzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXBwTmFtZSBOYW1lIG9mIHRoZSB0YXJnZXQgYXBwXG4gICAgICogQHBhcmFtIGtleSBLZXkgb2YgdGhlIHRhc2sgaW5zdGFuY2UgZmlsdGVyc1xuICAgICAqIEBwYXJhbSBmaWx0ZXJzIERldGFpbHMgb2YgbmV3IHRhc2sgZmlsdGVyXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiBjcmVhdGVkIHRhc2sgZmlsdGVyc1xuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlVGFza0ZpbHRlcnMoYXBwTmFtZTogc3RyaW5nLCBrZXk6IHN0cmluZywgZmlsdGVyczogU2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsW10pOiBPYnNlcnZhYmxlPFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZWZlcmVuY2VTZXJ2aWNlLmNyZWF0ZVByZWZlcmVuY2UoYXBwTmFtZSwga2V5LCBmaWx0ZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxscyBnZXQgcHJlZmVyZW5jZSBhcGkgdG8gZ2V0IHRhc2sgZmlsdGVyIGJ5IHByZWZlcmVuY2Uga2V5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXBwTmFtZSBOYW1lIG9mIHRoZSB0YXJnZXQgYXBwXG4gICAgICogQHBhcmFtIGtleSBLZXkgb2YgdGhlIHRhc2sgZmlsdGVyc1xuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGFzayBmaWx0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRUYXNrRmlsdGVyc0J5S2V5KGFwcE5hbWU6IHN0cmluZywga2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZWZlcmVuY2VTZXJ2aWNlLmdldFByZWZlcmVuY2VCeUtleShhcHBOYW1lLCBrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIHRhc2sgZmlsdGVycyBmb3IgYSB0YXNrIGFwcC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBOYW1lIE5hbWUgb2YgdGhlIHRhcmdldCBhcHBcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRhc2sgZmlsdGVyIGRldGFpbHNcbiAgICAgKi9cbiAgICBnZXRUYXNrTGlzdEZpbHRlcnMoYXBwTmFtZT86IHN0cmluZyk6IE9ic2VydmFibGU8U2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsW10+IHtcbiAgICAgICAgdGhpcy5jcmVhdGVEZWZhdWx0RmlsdGVycyhhcHBOYW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVycyQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHRhc2sgZmlsdGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFwcE5hbWUgTmFtZSBvZiB0aGUgdGFyZ2V0IGFwcFxuICAgICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgdGFza1xuICAgICAqIEByZXR1cm5zIERldGFpbHMgb2YgdGhlIHRhc2sgZmlsdGVyXG4gICAgICovXG4gICAgZ2V0VGFza0ZpbHRlckJ5SWQoYXBwTmFtZTogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWw+IHtcbiAgICAgICAgY29uc3Qga2V5OiBzdHJpbmcgPSB0aGlzLnByZXBhcmVLZXkoYXBwTmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhc2tGaWx0ZXJzQnlLZXkoYXBwTmFtZSwga2V5KS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChmaWx0ZXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGFza0ZpbHRlcnMoYXBwTmFtZSwga2V5LCB0aGlzLmRlZmF1bHRTZXJ2aWNlVGFza0ZpbHRlcnMoYXBwTmFtZSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmaWx0ZXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcCgoZmlsdGVycykgPT4gZmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLmlkID09PSBpZClbMF0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIG5ldyB0YXNrIGZpbHRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdGaWx0ZXIgVGhlIG5ldyBmaWx0ZXIgdG8gYWRkXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0YXNrIGluc3RhbmNlIGZpbHRlcnMgd2l0aCBuZXdseSBhZGRlZCBmaWx0ZXJcbiAgICAgKi9cbiAgICBhZGRGaWx0ZXIobmV3RmlsdGVyOiBTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWwpOiBPYnNlcnZhYmxlPFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdPiB7XG4gICAgICAgIGNvbnN0IGtleTogc3RyaW5nID0gdGhpcy5wcmVwYXJlS2V5KG5ld0ZpbHRlci5hcHBOYW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGFza0ZpbHRlcnNCeUtleShuZXdGaWx0ZXIuYXBwTmFtZSwga2V5KS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChmaWx0ZXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGFza0ZpbHRlcnMobmV3RmlsdGVyLmFwcE5hbWUsIGtleSwgW25ld0ZpbHRlcl0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaChuZXdGaWx0ZXIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcmVmZXJlbmNlU2VydmljZS51cGRhdGVQcmVmZXJlbmNlKG5ld0ZpbHRlci5hcHBOYW1lLCBrZXksIGZpbHRlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKChmaWx0ZXJzOiBTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWxbXSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkRmlsdGVyc1RvU3RyZWFtKGZpbHRlcnMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEZpbHRlcnNUb1N0cmVhbShmaWx0ZXJzOiBTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWxbXSkge1xuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0Lm5leHQoZmlsdGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBhIHRhc2sgZmlsdGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHVwZGF0ZWRGaWx0ZXIgVGhlIGZpbHRlciB0byB1cGRhdGVcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRhc2sgaW5zdGFuY2UgZmlsdGVycyB3aXRoIHVwZGF0ZWQgZmlsdGVyXG4gICAgICovXG4gICAgdXBkYXRlRmlsdGVyKHVwZGF0ZWRGaWx0ZXI6IFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbCk6IE9ic2VydmFibGU8U2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsW10+IHtcbiAgICAgICAgY29uc3Qga2V5OiBzdHJpbmcgPSB0aGlzLnByZXBhcmVLZXkodXBkYXRlZEZpbHRlci5hcHBOYW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGFza0ZpbHRlcnNCeUtleSh1cGRhdGVkRmlsdGVyLmFwcE5hbWUsIGtleSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoZmlsdGVycykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJzPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGFza0ZpbHRlcnModXBkYXRlZEZpbHRlci5hcHBOYW1lLCBrZXksIFt1cGRhdGVkRmlsdGVyXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gZmlsdGVycy5maW5kSW5kZXgoKGZpbHRlcikgPT4gZmlsdGVyLmlkID09PSB1cGRhdGVkRmlsdGVyLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyc1tpdGVtSW5kZXhdID0gdXBkYXRlZEZpbHRlcjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlVGFza0ZpbHRlcnModXBkYXRlZEZpbHRlci5hcHBOYW1lLCBrZXksIGZpbHRlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCh1cGRhdGVkRmlsdGVycykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkRmlsdGVyc1RvU3RyZWFtKHVwZGF0ZWRGaWx0ZXJzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlZEZpbHRlcnM7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgYSB0YXNrIGZpbHRlclxuICAgICAqXG4gICAgICogQHBhcmFtIGRlbGV0ZWRGaWx0ZXIgVGhlIGZpbHRlciB0byBkZWxldGVcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRhc2sgaW5zdGFuY2UgZmlsdGVycyB3aXRob3V0IGRlbGV0ZWQgZmlsdGVyXG4gICAgICovXG4gICAgZGVsZXRlRmlsdGVyKGRlbGV0ZWRGaWx0ZXI6IFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbCk6IE9ic2VydmFibGU8U2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsW10+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5wcmVwYXJlS2V5KGRlbGV0ZWRGaWx0ZXIuYXBwTmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhc2tGaWx0ZXJzQnlLZXkoZGVsZXRlZEZpbHRlci5hcHBOYW1lLCBrZXkpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGZpbHRlcnMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVycz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzID0gZmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLmlkICE9PSBkZWxldGVkRmlsdGVyLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlVGFza0ZpbHRlcnMoZGVsZXRlZEZpbHRlci5hcHBOYW1lLCBrZXksIGZpbHRlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKGZpbHRlcnMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEZpbHRlcnNUb1N0cmVhbShmaWx0ZXJzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVycztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGdpdmVuIGZpbHRlciBpcyBhIGRlZmF1bHQgZmlsdGVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVyTmFtZSBOYW1lIG9mIHRoZSB0YXJnZXQgdGFzayBmaWx0ZXJcbiAgICAgKiBAcmV0dXJucyBCb29sZWFuIHZhbHVlIGZvciB3aGV0aGVyIHRoZSBmaWx0ZXIgaXMgYSBkZWZhdWx0IGZpbHRlclxuICAgICAqL1xuICAgIGlzRGVmYXVsdEZpbHRlcihmaWx0ZXJOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdEZpbHRlcnMgPSB0aGlzLmRlZmF1bHRTZXJ2aWNlVGFza0ZpbHRlcnMoKTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRGaWx0ZXJzLmZpbmRJbmRleCgoZmlsdGVyKSA9PiBmaWx0ZXJOYW1lID09PSBmaWx0ZXIubmFtZSkgIT09IC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxzIHVwZGF0ZSBwcmVmZXJlbmNlIGFwaSB0byB1cGRhdGUgdGFzayBmaWx0ZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBOYW1lIE5hbWUgb2YgdGhlIHRhcmdldCBhcHBcbiAgICAgKiBAcGFyYW0ga2V5IEtleSBvZiB0aGUgdGFzayBmaWx0ZXJzXG4gICAgICogQHBhcmFtIGZpbHRlcnMgRGV0YWlscyBvZiB1cGRhdGUgZmlsdGVyXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB1cGRhdGVkIHRhc2sgZmlsdGVyc1xuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlVGFza0ZpbHRlcnMoYXBwTmFtZTogc3RyaW5nLCBrZXk6IHN0cmluZywgZmlsdGVyczogU2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsW10pOiBPYnNlcnZhYmxlPFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZWZlcmVuY2VTZXJ2aWNlLnVwZGF0ZVByZWZlcmVuY2UoYXBwTmFtZSwga2V5LCBmaWx0ZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgdW5pcSBrZXkgd2l0aCBhcHBOYW1lIGFuZCB1c2VybmFtZVxuICAgICAqXG4gICAgICogQHBhcmFtIGFwcE5hbWUgTmFtZSBvZiB0aGUgdGFyZ2V0IGFwcFxuICAgICAqIEByZXR1cm5zIFN0cmluZyBvZiB0YXNrIGZpbHRlcnMgcHJlZmVyZW5jZSBrZXlcbiAgICAgKi9cbiAgICBwcml2YXRlIHByZXBhcmVLZXkoYXBwTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBzZXJ2aWNlLXRhc2stZmlsdGVycy0ke2FwcE5hbWV9LSR7dGhpcy5pZGVudGl0eVVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VySW5mbygpLnVzZXJuYW1lfWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYW5kIHJldHVybnMgdGhlIHRhc2sgZmlsdGVycyBmcm9tIHByZWZlcmVuY2VzXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBcnJheSBvZiBUYXNrRmlsdGVyQ2xvdWRNb2RlbFxuICAgICAqIEBwYXJhbSBwcmVmZXJlbmNlcyBwcmVmZXJlbmNlc1xuICAgICAqIEBwYXJhbSBrZXkga2V5XG4gICAgICovXG4gICAgcHJpdmF0ZSBmaW5kRmlsdGVyc0J5S2V5SW5QcmVmZXJlbmNlcyhwcmVmZXJlbmNlczogYW55LCBrZXk6IHN0cmluZyk6IFNlcnZpY2VUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcHJlZmVyZW5jZXMuZmluZCgoZmlsdGVyOiBhbnkpID0+IGZpbHRlci5lbnRyeS5rZXkgPT09IGtleSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ/LmVudHJ5ID8gSlNPTi5wYXJzZShyZXN1bHQuZW50cnkudmFsdWUpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbmQgcmV0dXJucyB0aGUgZGVmYXVsdCBmaWx0ZXJzIGZvciBhIHRhc2sgYXBwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFwcE5hbWUgTmFtZSBvZiB0aGUgdGFyZ2V0IGFwcFxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIFRhc2tGaWx0ZXJDbG91ZE1vZGVsXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZWZhdWx0U2VydmljZVRhc2tGaWx0ZXJzKGFwcE5hbWU/OiBzdHJpbmcpOiBTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWxbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuZ2VuZXJhdGVSYW5kb21JZCgpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdBREZfQ0xPVURfU0VSVklDRV9UQVNLX0ZJTFRFUlMuQUxMX1NFUlZJQ0VfVEFTS1MnLFxuICAgICAgICAgICAgICAgIGtleTogJ215LXNlcnZpY2UtdGFza3MnLFxuICAgICAgICAgICAgICAgIGljb246ICdpbmJveCcsXG4gICAgICAgICAgICAgICAgYXBwTmFtZSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgICAgIHNvcnQ6ICdzdGFydGVkRGF0ZScsXG4gICAgICAgICAgICAgICAgb3JkZXI6ICdERVNDJ1xuICAgICAgICAgICAgfSBhcyBTZXJ2aWNlVGFza0ZpbHRlckNsb3VkTW9kZWwsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuZ2VuZXJhdGVSYW5kb21JZCgpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdBREZfQ0xPVURfU0VSVklDRV9UQVNLX0ZJTFRFUlMuQ09NUExFVEVEX1RBU0tTJyxcbiAgICAgICAgICAgICAgICBrZXk6ICdjb21wbGV0ZWQtdGFza3MnLFxuICAgICAgICAgICAgICAgIGljb246ICdkb25lJyxcbiAgICAgICAgICAgICAgICBhcHBOYW1lLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ0NPTVBMRVRFRCcsXG4gICAgICAgICAgICAgICAgc29ydDogJ2NvbXBsZXRlZERhdGUnLFxuICAgICAgICAgICAgICAgIG9yZGVyOiAnREVTQydcbiAgICAgICAgICAgIH0gYXMgU2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmdlbmVyYXRlUmFuZG9tSWQoKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnQURGX0NMT1VEX1NFUlZJQ0VfVEFTS19GSUxURVJTLkVSUk9SRURfVEFTS1MnLFxuICAgICAgICAgICAgICAgIGtleTogJ2Vycm9yZWQtc2VydmljZS10YXNrcycsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBhcHBOYW1lLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ0VSUk9SJyxcbiAgICAgICAgICAgICAgICBzb3J0OiAnc3RhcnRlZERhdGUnLFxuICAgICAgICAgICAgICAgIG9yZGVyOiAnREVTQydcbiAgICAgICAgICAgIH0gYXMgU2VydmljZVRhc2tGaWx0ZXJDbG91ZE1vZGVsXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVSYW5kb21JZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDkpO1xuICAgIH1cbn1cbiJdfQ==