@alfresco/adf-process-services-cloud 8.1.0-14486936416 → 8.1.0-14489297497

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 (173) hide show
  1. package/fesm2022/adf-process-services-cloud.mjs +342 -345
  2. package/fesm2022/adf-process-services-cloud.mjs.map +1 -1
  3. package/lib/common/date-range-filter/date-range-filter.service.d.ts +1 -1
  4. package/lib/task/task-filters/components/base-task-filters-cloud.component.d.ts +1 -1
  5. package/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.d.ts +1 -1
  6. package/lib/task/task-list/components/base-task-list-cloud.component.d.ts +1 -1
  7. package/package.json +4 -6
  8. package/esm2022/adf-process-services-cloud.mjs +0 -5
  9. package/esm2022/lib/app/app-list-cloud.module.mjs +0 -20
  10. package/esm2022/lib/app/components/app-details-cloud/app-details-cloud.component.mjs +0 -67
  11. package/esm2022/lib/app/components/app-list-cloud/app-list-cloud.component.mjs +0 -126
  12. package/esm2022/lib/app/models/application-instance.model.mjs +0 -24
  13. package/esm2022/lib/app/public-api.mjs +0 -22
  14. package/esm2022/lib/app/services/apps-process-cloud.service.mjs +0 -97
  15. package/esm2022/lib/common/date-range-filter/date-range-filter.component.mjs +0 -164
  16. package/esm2022/lib/common/date-range-filter/date-range-filter.service.mjs +0 -97
  17. package/esm2022/lib/common/index.mjs +0 -18
  18. package/esm2022/lib/common/interface/environment.interface.mjs +0 -18
  19. package/esm2022/lib/common/interface/index.mjs +0 -18
  20. package/esm2022/lib/common/interface/public-api.mjs +0 -18
  21. package/esm2022/lib/common/public-api.mjs +0 -19
  22. package/esm2022/lib/form/components/cloud-form-rendering.service.mjs +0 -57
  23. package/esm2022/lib/form/components/form-cloud-custom-outcomes.component.mjs +0 -31
  24. package/esm2022/lib/form/components/form-cloud.component.mjs +0 -412
  25. package/esm2022/lib/form/components/form-definition-selector-cloud.component.mjs +0 -54
  26. package/esm2022/lib/form/components/spinner/form-spinner.component.mjs +0 -36
  27. package/esm2022/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.mjs +0 -250
  28. package/esm2022/lib/form/components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component.mjs +0 -137
  29. package/esm2022/lib/form/components/widgets/data-table/data-table-adapter.widget.mjs +0 -107
  30. package/esm2022/lib/form/components/widgets/data-table/data-table.widget.mjs +0 -121
  31. package/esm2022/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.mjs +0 -122
  32. package/esm2022/lib/form/components/widgets/date/date-cloud.widget.mjs +0 -190
  33. package/esm2022/lib/form/components/widgets/display-external-property/display-external-property.widget.mjs +0 -86
  34. package/esm2022/lib/form/components/widgets/display-rich-text/display-rich-text.widget.mjs +0 -80
  35. package/esm2022/lib/form/components/widgets/dropdown/dropdown-cloud.widget.mjs +0 -448
  36. package/esm2022/lib/form/components/widgets/dropdown/validators.mjs +0 -29
  37. package/esm2022/lib/form/components/widgets/file-viewer/file-viewer.widget.mjs +0 -47
  38. package/esm2022/lib/form/components/widgets/group/group-cloud.widget.mjs +0 -83
  39. package/esm2022/lib/form/components/widgets/people/people-cloud.widget.mjs +0 -91
  40. package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.mjs +0 -81
  41. package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer.widget.mjs +0 -54
  42. package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.schema.mjs +0 -86
  43. package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.mjs +0 -117
  44. package/esm2022/lib/form/components/widgets/upload/upload-cloud.widget.mjs +0 -188
  45. package/esm2022/lib/form/form-cloud.module.mjs +0 -103
  46. package/esm2022/lib/form/models/form-cloud-representation.model.mjs +0 -48
  47. package/esm2022/lib/form/models/task-variable-cloud.model.mjs +0 -28
  48. package/esm2022/lib/form/public-api.mjs +0 -44
  49. package/esm2022/lib/form/services/content-cloud-node-selector.service.mjs +0 -120
  50. package/esm2022/lib/form/services/display-mode.service.mjs +0 -146
  51. package/esm2022/lib/form/services/form-cloud.service.interface.mjs +0 -18
  52. package/esm2022/lib/form/services/form-cloud.service.mjs +0 -201
  53. package/esm2022/lib/form/services/form-definition-selector-cloud.service.interface.mjs +0 -18
  54. package/esm2022/lib/form/services/form-definition-selector-cloud.service.mjs +0 -51
  55. package/esm2022/lib/form/services/form-utils.service.mjs +0 -37
  56. package/esm2022/lib/form/services/process-cloud-content.service.mjs +0 -71
  57. package/esm2022/lib/form/services/spinner/form-cloud-spinner.service.mjs +0 -52
  58. package/esm2022/lib/group/components/group-cloud.component.mjs +0 -422
  59. package/esm2022/lib/group/group-cloud.module.mjs +0 -33
  60. package/esm2022/lib/group/models/identity-group.model.mjs +0 -18
  61. package/esm2022/lib/group/public-api.mjs +0 -21
  62. package/esm2022/lib/group/services/identity-group.service.mjs +0 -89
  63. package/esm2022/lib/models/application-version.model.mjs +0 -21
  64. package/esm2022/lib/models/constant-values.type.mjs +0 -18
  65. package/esm2022/lib/models/data-column-custom-data.mjs +0 -18
  66. package/esm2022/lib/models/date-cloud-filter.model.mjs +0 -31
  67. package/esm2022/lib/models/date-format-cloud.model.mjs +0 -18
  68. package/esm2022/lib/models/engine-event-cloud.model.mjs +0 -18
  69. package/esm2022/lib/models/filter-cloud-model.mjs +0 -128
  70. package/esm2022/lib/models/process-definition-cloud.model.mjs +0 -32
  71. package/esm2022/lib/models/process-instance-variable.model.mjs +0 -18
  72. package/esm2022/lib/models/process-variable-filter.model.mjs +0 -18
  73. package/esm2022/lib/models/task-cloud.model.mjs +0 -23
  74. package/esm2022/lib/models/task-list-sorting.model.mjs +0 -40
  75. package/esm2022/lib/models/variable-definition.mjs +0 -18
  76. package/esm2022/lib/people/components/people-cloud.component.mjs +0 -497
  77. package/esm2022/lib/people/models/identity-user.model.mjs +0 -18
  78. package/esm2022/lib/people/people-cloud.module.mjs +0 -33
  79. package/esm2022/lib/people/public-api.mjs +0 -21
  80. package/esm2022/lib/people/services/identity-user.service.mjs +0 -119
  81. package/esm2022/lib/process/process-cloud.module.mjs +0 -40
  82. package/esm2022/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.mjs +0 -802
  83. package/esm2022/lib/process/process-filters/components/process-filter-dialog/process-filter-dialog-cloud.component.mjs +0 -59
  84. package/esm2022/lib/process/process-filters/components/process-filters/process-filters-cloud.component.mjs +0 -290
  85. package/esm2022/lib/process/process-filters/models/process-filter-cloud.model.mjs +0 -169
  86. package/esm2022/lib/process/process-filters/process-filters-cloud.module.mjs +0 -44
  87. package/esm2022/lib/process/process-filters/public-api.mjs +0 -23
  88. package/esm2022/lib/process/process-filters/services/process-filter-cloud.service.mjs +0 -405
  89. package/esm2022/lib/process/process-header/components/process-header-cloud.component.mjs +0 -137
  90. package/esm2022/lib/process/process-header/process-header-cloud.module.mjs +0 -33
  91. package/esm2022/lib/process/process-header/public-api.mjs +0 -19
  92. package/esm2022/lib/process/process-list/components/process-list-cloud.component.mjs +0 -594
  93. package/esm2022/lib/process/process-list/datatable/process-list-datatable-adapter.mjs +0 -31
  94. package/esm2022/lib/process/process-list/models/perocess-instance-cloud-view.model.mjs +0 -18
  95. package/esm2022/lib/process/process-list/models/process-cloud-preferences.mjs +0 -24
  96. package/esm2022/lib/process/process-list/models/process-cloud-preset.model.mjs +0 -37
  97. package/esm2022/lib/process/process-list/models/process-cloud-query-request.model.mjs +0 -107
  98. package/esm2022/lib/process/process-list/models/process-list-sorting.model.mjs +0 -40
  99. package/esm2022/lib/process/process-list/process-list-cloud.module.mjs +0 -45
  100. package/esm2022/lib/process/process-list/public-api.mjs +0 -25
  101. package/esm2022/lib/process/process-list/services/process-list-cloud.service.mjs +0 -253
  102. package/esm2022/lib/process/process-list/services/process-task-list-cloud.service.mjs +0 -109
  103. package/esm2022/lib/process/public-api.mjs +0 -23
  104. package/esm2022/lib/process/services/process-cloud.service.mjs +0 -105
  105. package/esm2022/lib/process/start-process/components/start-process-cloud.component.mjs +0 -479
  106. package/esm2022/lib/process/start-process/models/process-instance-cloud.model.mjs +0 -18
  107. package/esm2022/lib/process/start-process/models/process-payload-cloud.model.mjs +0 -26
  108. package/esm2022/lib/process/start-process/models/process-with-form-payload-cloud.model.mjs +0 -26
  109. package/esm2022/lib/process/start-process/public-api.mjs +0 -21
  110. package/esm2022/lib/process/start-process/services/start-process-cloud.service.mjs +0 -125
  111. package/esm2022/lib/process-services-cloud.module.mjs +0 -91
  112. package/esm2022/lib/rich-text-editor/editorjs-config.mjs +0 -101
  113. package/esm2022/lib/rich-text-editor/index.mjs +0 -18
  114. package/esm2022/lib/rich-text-editor/public-api.mjs +0 -19
  115. package/esm2022/lib/rich-text-editor/rich-text-editor.component.mjs +0 -80
  116. package/esm2022/lib/rich-text-editor/rich-text-editor.module.mjs +0 -33
  117. package/esm2022/lib/screen/components/screen-cloud/screen-cloud.component.mjs +0 -161
  118. package/esm2022/lib/screen/models/screen-cloud.model.mjs +0 -18
  119. package/esm2022/lib/screen/public-api.mjs +0 -18
  120. package/esm2022/lib/services/base-cloud.service.mjs +0 -83
  121. package/esm2022/lib/services/cloud-token.service.mjs +0 -23
  122. package/esm2022/lib/services/form-fields.interfaces.mjs +0 -55
  123. package/esm2022/lib/services/local-preference-cloud.service.mjs +0 -122
  124. package/esm2022/lib/services/notification-cloud.service.mjs +0 -45
  125. package/esm2022/lib/services/preference-cloud.interface.mjs +0 -18
  126. package/esm2022/lib/services/public-api.mjs +0 -28
  127. package/esm2022/lib/services/screen-rendering.service.mjs +0 -30
  128. package/esm2022/lib/services/task-list-cloud.service.interface.mjs +0 -18
  129. package/esm2022/lib/services/user-preference-cloud.service.mjs +0 -105
  130. package/esm2022/lib/services/variable-mapper.sevice.mjs +0 -77
  131. package/esm2022/lib/services/web-socket.service.mjs +0 -146
  132. package/esm2022/lib/task/models/start-task-cloud-request.model.mjs +0 -32
  133. package/esm2022/lib/task/models/task-details-cloud.model.mjs +0 -26
  134. package/esm2022/lib/task/models/task.model.mjs +0 -23
  135. package/esm2022/lib/task/public-api.mjs +0 -26
  136. package/esm2022/lib/task/services/task-cloud.service.mjs +0 -272
  137. package/esm2022/lib/task/task-cloud.module.mjs +0 -45
  138. package/esm2022/lib/task/task-filters/components/base-task-filters-cloud.component.mjs +0 -59
  139. package/esm2022/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.mjs +0 -467
  140. package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.mjs +0 -206
  141. package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.mjs +0 -320
  142. package/esm2022/lib/task/task-filters/components/service-task-filters/service-task-filters-cloud.component.mjs +0 -147
  143. package/esm2022/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.mjs +0 -143
  144. package/esm2022/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.mjs +0 -73
  145. package/esm2022/lib/task/task-filters/components/task-filters/task-filters-cloud.component.mjs +0 -256
  146. package/esm2022/lib/task/task-filters/models/filter-cloud.model.mjs +0 -207
  147. package/esm2022/lib/task/task-filters/public-api.mjs +0 -27
  148. package/esm2022/lib/task/task-filters/services/service-task-filter-cloud.service.mjs +0 -283
  149. package/esm2022/lib/task/task-filters/services/task-filter-cloud.service.mjs +0 -392
  150. package/esm2022/lib/task/task-filters/task-filters-cloud.module.mjs +0 -56
  151. package/esm2022/lib/task/task-form/components/task-form-cloud/task-form-cloud.component.mjs +0 -214
  152. package/esm2022/lib/task/task-form/components/user-task-cloud/complete-task/complete-task.directive.mjs +0 -89
  153. package/esm2022/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.mjs +0 -279
  154. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/claim-task/claim-task-cloud.directive.mjs +0 -101
  155. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/unclaim-task/unclaim-task-cloud.directive.mjs +0 -87
  156. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/user-task-cloud-buttons.component.mjs +0 -79
  157. package/esm2022/lib/task/task-form/public-api.mjs +0 -21
  158. package/esm2022/lib/task/task-form/task-form.module.mjs +0 -36
  159. package/esm2022/lib/task/task-header/components/task-header-cloud.component.mjs +0 -280
  160. package/esm2022/lib/task/task-header/public-api.mjs +0 -19
  161. package/esm2022/lib/task/task-header/task-header-cloud.module.mjs +0 -33
  162. package/esm2022/lib/task/task-list/components/base-task-list-cloud.component.mjs +0 -331
  163. package/esm2022/lib/task/task-list/components/service-task-list/service-task-list-cloud.component.mjs +0 -116
  164. package/esm2022/lib/task/task-list/components/task-list/datatable/task-list-datatable-adapter.mjs +0 -31
  165. package/esm2022/lib/task/task-list/components/task-list/task-list-cloud.component.mjs +0 -390
  166. package/esm2022/lib/task/task-list/models/service-task-cloud.model.mjs +0 -18
  167. package/esm2022/lib/task/task-list/models/task-cloud-view.model.mjs +0 -18
  168. package/esm2022/lib/task/task-list/public-api.mjs +0 -23
  169. package/esm2022/lib/task/task-list/services/service-task-list-cloud.service.mjs +0 -115
  170. package/esm2022/lib/task/task-list/services/task-list-cloud.service.mjs +0 -178
  171. package/esm2022/lib/task/task-list/task-list-cloud.module.mjs +0 -57
  172. package/esm2022/lib/types.mjs +0 -18
  173. package/esm2022/public-api.mjs +0 -40
@@ -1,320 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { Component, inject, ViewEncapsulation } from '@angular/core';
18
- import { map } from 'rxjs/operators';
19
- import { TaskFilterCloudModel, TaskStatusFilter } from '../../../models/filter-cloud.model';
20
- import { TaskFilterCloudService } from '../../../services/task-filter-cloud.service';
21
- import { DateCloudFilterType } from '../../../../../models/date-cloud-filter.model';
22
- import { BaseEditTaskFilterCloudComponent } from '../base-edit-task-filter-cloud.component';
23
- import { set } from 'date-fns';
24
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
25
- import { CommonModule } from '@angular/common';
26
- import { TranslateModule } from '@ngx-translate/core';
27
- import { MatExpansionModule } from '@angular/material/expansion';
28
- import { MatButtonModule } from '@angular/material/button';
29
- import { IconComponent } from '@alfresco/adf-core';
30
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
31
- import { MatFormFieldModule } from '@angular/material/form-field';
32
- import { ReactiveFormsModule } from '@angular/forms';
33
- import { MatSelectModule } from '@angular/material/select';
34
- import { MatInputModule } from '@angular/material/input';
35
- import { MatDatepickerModule } from '@angular/material/datepicker';
36
- import { MatIconModule } from '@angular/material/icon';
37
- import { MatCheckboxModule } from '@angular/material/checkbox';
38
- import { DateRangeFilterComponent } from '../../../../../common/date-range-filter/date-range-filter.component';
39
- import { PeopleCloudComponent } from '../../../../../people/components/people-cloud.component';
40
- import { TaskAssignmentFilterCloudComponent } from '../../task-assignment-filter/task-assignment-filter.component';
41
- import { ApolloModule } from 'apollo-angular';
42
- import * as i0 from "@angular/core";
43
- import * as i1 from "@angular/common";
44
- import * as i2 from "@ngx-translate/core";
45
- import * as i3 from "@angular/material/expansion";
46
- import * as i4 from "@angular/material/button";
47
- import * as i5 from "@angular/material/progress-spinner";
48
- import * as i6 from "@angular/material/form-field";
49
- import * as i7 from "@angular/forms";
50
- import * as i8 from "@angular/material/select";
51
- import * as i9 from "@angular/material/core";
52
- import * as i10 from "@angular/material/input";
53
- import * as i11 from "@angular/material/datepicker";
54
- import * as i12 from "@angular/material/icon";
55
- import * as i13 from "@angular/material/checkbox";
56
- export class EditTaskFilterCloudComponent extends BaseEditTaskFilterCloudComponent {
57
- constructor() {
58
- super();
59
- this.taskFilterCloudService = inject(TaskFilterCloudService);
60
- }
61
- assignNewFilter(model) {
62
- this.setLastModifiedToFilter(model);
63
- this.changedTaskFilter = new TaskFilterCloudModel(Object.assign({}, this.taskFilter, model));
64
- this.formHasBeenChanged = !this.deepCompare(this.changedTaskFilter, this.taskFilter);
65
- this.filterChange.emit(this.changedTaskFilter);
66
- }
67
- getTaskFilterById(appName, id) {
68
- return this.taskFilterCloudService.getTaskFilterById(appName, id).pipe(map((response) => new TaskFilterCloudModel(response)));
69
- }
70
- createAndFilterProperties() {
71
- const result = super.createAndFilterProperties();
72
- if (this.hasLastModifiedProperty()) {
73
- return [...result, ...this.createLastModifiedProperty()];
74
- }
75
- return result;
76
- }
77
- getDefaultFilterProperties() {
78
- return ['status', 'assignee', 'sort', 'order'];
79
- }
80
- getDefaultSortProperties() {
81
- return ['id', 'name', 'createdDate', 'priority'];
82
- }
83
- setLastModifiedToFilter(formValues) {
84
- if (formValues.lastModifiedTo && Date.parse(formValues.lastModifiedTo.toString())) {
85
- const lastModifiedToFilterValue = set(new Date(formValues.lastModifiedTo), {
86
- hours: 23,
87
- minutes: 59,
88
- seconds: 59
89
- });
90
- formValues.lastModifiedTo = lastModifiedToFilterValue.toISOString();
91
- }
92
- }
93
- updateFilter(filterToUpdate) {
94
- return this.taskFilterCloudService.updateFilter(filterToUpdate);
95
- }
96
- deleteFilter(filterToDelete) {
97
- return this.taskFilterCloudService.deleteFilter(filterToDelete);
98
- }
99
- addFilter(filterToAdd) {
100
- return this.taskFilterCloudService.addFilter(filterToAdd).pipe(takeUntilDestroyed(this.destroyRef));
101
- }
102
- isDisabledForDefaultFilters(action) {
103
- return (this.taskFilterCloudService.isDefaultFilter(this.taskFilter.name) &&
104
- EditTaskFilterCloudComponent.ACTIONS_DISABLED_BY_DEFAULT.includes(action.actionType));
105
- }
106
- restoreDefaultTaskFilters() {
107
- return this.taskFilterCloudService.getTaskListFilters(this.appName);
108
- }
109
- createLastModifiedProperty() {
110
- return [
111
- {
112
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.LAST_MODIFIED_FROM',
113
- type: 'date',
114
- key: 'lastModifiedFrom',
115
- value: ''
116
- },
117
- {
118
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.LAST_MODIFIED_TO',
119
- type: 'date',
120
- key: 'lastModifiedTo',
121
- value: ''
122
- }
123
- ];
124
- }
125
- getStatusOptions() {
126
- return [
127
- { value: TaskStatusFilter.ALL, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.ALL' },
128
- { value: TaskStatusFilter.CREATED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.CREATED' },
129
- { value: TaskStatusFilter.ASSIGNED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.ASSIGNED' },
130
- { value: TaskStatusFilter.SUSPENDED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.SUSPENDED' },
131
- { value: TaskStatusFilter.CANCELLED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.CANCELLED' },
132
- { value: TaskStatusFilter.COMPLETED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.COMPLETED' }
133
- ];
134
- }
135
- createTaskFilterProperties() {
136
- const statusOptions = this.getStatusOptions();
137
- const sortProperties = this.createSortProperties;
138
- return [
139
- {
140
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.APP_NAME',
141
- type: 'select',
142
- key: 'appName',
143
- value: this.taskFilter.appName || '',
144
- options: this.applicationNames
145
- },
146
- {
147
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.TASK_ID',
148
- type: 'text',
149
- key: 'taskId',
150
- value: ''
151
- },
152
- {
153
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.STATUS',
154
- type: 'select',
155
- key: 'status',
156
- value: this.taskFilter.status || statusOptions[0].value,
157
- options: statusOptions
158
- },
159
- {
160
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.ASSIGNMENT',
161
- type: 'text',
162
- key: 'assignee',
163
- value: this.taskFilter.assignee || ''
164
- },
165
- {
166
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PROCESS_DEF_NAME',
167
- type: 'select',
168
- key: 'processDefinitionName',
169
- value: this.taskFilter.processDefinitionName || '',
170
- options: this.processDefinitionNames
171
- },
172
- {
173
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PROCESS_INSTANCE_ID',
174
- type: 'text',
175
- key: 'processInstanceId',
176
- value: this.processInstanceId || this.taskFilter.processInstanceId || ''
177
- },
178
- {
179
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PROCESS_DEF_ID',
180
- type: 'text',
181
- key: 'processDefinitionId',
182
- value: this.taskFilter.processDefinitionId || ''
183
- },
184
- {
185
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.TASK_NAME',
186
- type: 'text',
187
- key: 'taskName',
188
- value: this.taskFilter.taskName || ''
189
- },
190
- {
191
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PARENT_TASK_ID',
192
- type: 'text',
193
- key: 'parentTaskId',
194
- value: this.taskFilter.parentTaskId || ''
195
- },
196
- {
197
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PRIORITY',
198
- type: 'select',
199
- key: 'priority',
200
- value: this.taskFilter.priority || '',
201
- options: this.taskCloudService.priorities
202
- },
203
- {
204
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.OWNER',
205
- type: 'text',
206
- key: 'owner',
207
- value: this.taskFilter.owner || ''
208
- },
209
- {
210
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.CREATED_DATE',
211
- type: 'date',
212
- key: 'createdDate',
213
- value: ''
214
- },
215
- {
216
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.SORT',
217
- type: 'select',
218
- key: 'sort',
219
- value: this.taskFilter.sort || sortProperties[0].value,
220
- options: sortProperties
221
- },
222
- {
223
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.DIRECTION',
224
- type: 'select',
225
- key: 'order',
226
- value: this.taskFilter.order || this.sortDirections[0].value,
227
- options: [...this.sortDirections]
228
- },
229
- {
230
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.STAND_ALONE',
231
- type: 'checkbox',
232
- key: 'standalone',
233
- value: this.taskFilter.standalone || false
234
- },
235
- {
236
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.DUE_DATE',
237
- type: 'date-range',
238
- key: 'dueDateRange',
239
- attributes: { dateType: 'dueDateType', from: '_dueDateFrom', to: '_dueDateTo' },
240
- value: {
241
- dueDateType: this.taskFilter.dueDateType || null,
242
- _dueDateFrom: this.taskFilter.dueDateFrom || null,
243
- _dueDateTo: this.taskFilter.dueDateTo || null
244
- },
245
- dateFilterOptions: [
246
- DateCloudFilterType.NO_DATE,
247
- DateCloudFilterType.TODAY,
248
- DateCloudFilterType.TOMORROW,
249
- DateCloudFilterType.NEXT_7_DAYS,
250
- DateCloudFilterType.RANGE
251
- ]
252
- },
253
- {
254
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.COMPLETED_DATE',
255
- type: 'date-range',
256
- key: 'completedDateRange',
257
- attributes: { dateType: 'completedDateType', from: '_completedFrom', to: '_completedTo' },
258
- value: {
259
- completedDateType: this.taskFilter.completedDateType || null,
260
- _completedFrom: this.taskFilter.completedFrom || null,
261
- _completedTo: this.taskFilter.completedTo || null
262
- }
263
- },
264
- {
265
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.CREATED_DATE',
266
- type: 'date-range',
267
- key: 'createdDateRange',
268
- attributes: { dateType: 'createdDateType', from: '_createdFrom', to: '_createdTo' },
269
- value: {
270
- createdDateType: this.taskFilter.createdDateType || null,
271
- _createdFrom: this.taskFilter.createdFrom || null,
272
- _createdTo: this.taskFilter.createdTo || null
273
- }
274
- },
275
- {
276
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.COMPLETED_BY',
277
- type: 'people',
278
- key: 'completedBy',
279
- value: this.taskFilter.completedBy ? [this.taskFilter.completedBy] : null,
280
- selectionMode: 'single'
281
- },
282
- {
283
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.ASSIGNMENT',
284
- type: 'assignment',
285
- key: 'assignment',
286
- attributes: { assignedUsers: 'assignedUsers', candidateGroups: 'candidateGroups' },
287
- value: {
288
- assignedUsers: this.taskFilter.assignedUsers || [],
289
- candidateGroups: this.taskFilter.candidateGroups || []
290
- },
291
- selectionMode: 'multiple'
292
- }
293
- ];
294
- }
295
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: EditTaskFilterCloudComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
296
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: EditTaskFilterCloudComponent, isStandalone: true, selector: "adf-cloud-edit-task-filter", usesInheritance: true, ngImport: i0, template: "<mat-accordion [hideToggle]=\"isLoading\" class=\"adf-edit-task-filter\">\n <mat-expansion-panel (afterExpand)=\"onExpand()\" (closed)=\"onClose()\">\n <mat-expansion-panel-header *ngIf=\"taskFilter\" id=\"adf-edit-task-filter-expansion-header\" class=\"adf-edit-task-filter-header\">\n <ng-container *ngIf=\"!isLoading; else loadingTemplate\">\n <mat-panel-title *ngIf=\"showTaskFilterName\" id=\"adf-edit-task-filter-title-id\" class=\"adf-edit-task-filter-header__title\"\n >{{taskFilter.name | translate}}</mat-panel-title>\n <mat-panel-description class=\"adf-edit-task-filter-header__description\" id=\"adf-edit-task-filter-sub-title-id\">\n <span *ngIf=\"showTitle\">{{ 'ADF_CLOUD_EDIT_TASK_FILTER.TITLE' | translate}}</span>\n <div *ngIf=\"showFilterActions\" class=\"adf-cloud-edit-task-filter-actions\">\n <ng-container *ngIf=\"toggleFilterActions\">\n <button *ngFor=\"let filterAction of taskFilterActions\"\n mat-icon-button\n [title]=\"filterAction.tooltip | translate\"\n [attr.data-automation-id]=\"'adf-filter-action-' + filterAction.actionType\"\n [disabled]=\"isDisabledAction(filterAction)\"\n (click)=\"executeFilterActions(filterAction)\">\n <adf-icon [value]=\"filterAction.icon\" />\n </button>\n </ng-container>\n </div>\n </mat-panel-description>\n </ng-container>\n <ng-template #loadingTemplate>\n <div class=\"adf-cloud-edit-task-filter-loading-margin\">\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"30\" />\n </div>\n </ng-template>\n </mat-expansion-panel-header>\n <ng-container *ngIf=\"!isLoading;\">\n <form *ngIf=\"editTaskFilterForm\" [formGroup]=\"editTaskFilterForm\" class=\"adf-edit-task-filter-content\">\n <div class=\"adf-edit-task-filter-form\">\n <ng-container *ngFor=\"let taskFilterProperty of taskFilterProperties\">\n <mat-form-field [floatLabel]=\"'auto'\"\n *ngIf=\"taskFilterProperty.type === 'select'\"\n [attr.data-automation-id]=\"taskFilterProperty.key\">\n <mat-label class=\"adf-edit-task-filter-content__select-label\">{{taskFilterProperty.label | translate}}</mat-label>\n <mat-select\n [formControlName]=\"taskFilterProperty.key\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\"\n (selectionChange)=\"onStatusChange($event)\">\n <mat-option *ngFor=\"let propertyOption of taskFilterProperty.options\"\n [value]=\"propertyOption.value\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-options-' + taskFilterProperty.key\">\n {{ propertyOption.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field [floatLabel]=\"'auto'\"\n *ngIf=\"taskFilterProperty.type === 'text'\"\n [attr.data-automation-id]=\"taskFilterProperty.key\">\n <mat-label class=\"adf-edit-task-filter-content__text-label\">{{taskFilterProperty.label | translate}}</mat-label>\n <input matInput\n [formControlName]=\"taskFilterProperty.key\"\n type=\"text\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\" />\n </mat-form-field>\n <mat-form-field [floatLabel]=\"'auto'\"\n *ngIf=\"taskFilterProperty.type === 'date'\"\n [attr.data-automation-id]=\"taskFilterProperty.key\">\n <mat-label>{{taskFilterProperty.label | translate}}</mat-label>\n <input matInput\n (keyup)=\"onDateChanged($any($event).target.value, taskFilterProperty)\"\n (dateChange)=\"onDateChanged($event.value, taskFilterProperty)\"\n [matDatepicker]=\"dateController\"\n [placeholder]=\"taskFilterProperty.label | translate\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\">\n <mat-datepicker-toggle matSuffix\n [for]=\"dateController\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-date-toggle-' + taskFilterProperty.key\" />\n <mat-datepicker #dateController\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-date-picker-' + taskFilterProperty.key\" />\n <div class=\"adf-edit-task-filter-date-error-container\">\n <div *ngIf=\"hasError(taskFilterProperty)\">\n <div class=\"adf-error-text\">{{'ADF_TASK_LIST.START_TASK.FORM.ERROR.DATE'|translate}}</div>\n <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n </div>\n </div>\n </mat-form-field>\n <div class=\"adf-edit-task-filter-checkbox\"\n *ngIf=\"taskFilterProperty.type === 'checkbox'\">\n <mat-checkbox color=\"primary\"\n [formControlName]=\"taskFilterProperty.key\"\n [attr.data-automation-id]=\"taskFilterProperty.key\"\n >{{taskFilterProperty.label | translate}}</mat-checkbox>\n </div>\n\n <adf-cloud-date-range-filter #dateRange\n *ngIf=\"taskFilterProperty.type === 'date-range'\"\n [processFilterProperty]=\"taskFilterProperty\"\n [options]=\"taskFilterProperty.dateFilterOptions\"\n (dateTypeChange)=\"onDateTypeChange($event, taskFilterProperty)\"\n (dateChanged)=\"onDateRangeFilterChanged($event, taskFilterProperty)\" />\n <adf-cloud-people\n class=\"{{ 'adf-edit-task-filter-' + taskFilterProperty.key }}\"\n *ngIf=\"taskFilterProperty.type === 'people'\"\n [preSelectUsers]=\"taskFilterProperty.value\"\n [title]=\"taskFilterProperty.label\"\n [validate]=\"true\"\n [appName]=\"appName\"\n [mode]=\"taskFilterProperty.selectionMode\"\n (changedUsers)=\"onChangedUser($event, taskFilterProperty)\" />\n\n <adf-cloud-task-assignment-filter\n *ngIf=\"taskFilterProperty.type === 'assignment'\"\n [taskFilterProperty]=\"taskFilterProperty\"\n [status]=\"selectedStatus\"\n [appName]=\"appName\"\n (assignedUsersChange)=\"onAssignedUsersChange($event)\"\n (assignedGroupsChange)=\"onAssignedGroupsChange($event)\"\n (assignmentTypeChange)=\"onAssignmentTypeChange($event)\" />\n\n </ng-container>\n </div>\n </form>\n </ng-container>\n </mat-expansion-panel>\n</mat-accordion>\n", styles: [".adf-edit-task-filter-checkbox{font-size:var(--theme-subheading-2-font-size);padding-top:10px;text-align:center;flex:1 23%}.adf-edit-task-filter-date-error-container{position:absolute;height:20px;margin-top:12px;width:100%}.adf-edit-task-filter-date-error-container>div{display:flex;flex-flow:row;justify-content:flex-start}.adf-edit-task-filter-date-error-container .adf-error-text{padding-right:8px;height:16px;font-size:10px;line-height:1.33;color:var(--theme-warn-color);width:auto}.adf-edit-task-filter-date-error-container .adf-error-icon{font-size:16px;color:var(--theme-warn-color)}.adf-edit-task-filter-dateRange mat-grid-list{width:450px}.adf-cloud-edit-task-filter-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.adf-edit-task-filter-form{flex-flow:row wrap;display:flex;place-content:center flex-start;align-items:center}.adf-edit-task-filter-form :not(:last-child){margin-right:10px}.adf-edit-task-filter-form mat-form-field,.adf-edit-task-filter-form adf-cloud-people,.adf-edit-task-filter-form adf-cloud-task-assignment-filter{flex:1 1 23%}@media (max-width: 599.9px){.adf-edit-task-filter-form{flex-flow:column}.adf-edit-task-filter-form :not(:last-child){margin-bottom:10px;margin-right:0}}.adf-edit-task-filter-header{height:var(--adf-edit-task-and-service-filter-header-height)}.adf-edit-task-filter-header__title{color:var(--adf-edit-task-and-service-filter-header-title-color)}.adf-edit-task-filter-header__description{color:var(--adf-edit-task-and-service-filter-header-description-color);place-content:center space-between}.adf-edit-task-filter-content__text-label{color:var(--adf-edit-task-and-service-filter-content-text-label-color)}.adf-edit-task-filter-content__select-label{color:var(--adf-edit-task-and-service-filter-content-select-label-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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i3.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i3.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i3.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i3.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i3.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: IconComponent, selector: "adf-icon", inputs: ["color", "fontSet", "value"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i8.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: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i10.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: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i11.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i11.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i11.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i13.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: DateRangeFilterComponent, selector: "adf-cloud-date-range-filter", inputs: ["processFilterProperty", "options"], outputs: ["dateChanged", "dateTypeChange"] }, { 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"] }, { kind: "component", type: TaskAssignmentFilterCloudComponent, selector: "adf-cloud-task-assignment-filter", inputs: ["appName", "taskFilterProperty", "status"], outputs: ["assignedUsersChange", "assignedGroupsChange", "assignmentTypeChange"] }, { kind: "ngmodule", type: ApolloModule }], encapsulation: i0.ViewEncapsulation.None }); }
297
- }
298
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: EditTaskFilterCloudComponent, decorators: [{
299
- type: Component,
300
- args: [{ selector: 'adf-cloud-edit-task-filter', standalone: true, imports: [
301
- CommonModule,
302
- TranslateModule,
303
- MatExpansionModule,
304
- MatButtonModule,
305
- IconComponent,
306
- MatProgressSpinnerModule,
307
- MatFormFieldModule,
308
- ReactiveFormsModule,
309
- MatSelectModule,
310
- MatInputModule,
311
- MatDatepickerModule,
312
- MatIconModule,
313
- MatCheckboxModule,
314
- DateRangeFilterComponent,
315
- PeopleCloudComponent,
316
- TaskAssignmentFilterCloudComponent,
317
- ApolloModule
318
- ], encapsulation: ViewEncapsulation.None, template: "<mat-accordion [hideToggle]=\"isLoading\" class=\"adf-edit-task-filter\">\n <mat-expansion-panel (afterExpand)=\"onExpand()\" (closed)=\"onClose()\">\n <mat-expansion-panel-header *ngIf=\"taskFilter\" id=\"adf-edit-task-filter-expansion-header\" class=\"adf-edit-task-filter-header\">\n <ng-container *ngIf=\"!isLoading; else loadingTemplate\">\n <mat-panel-title *ngIf=\"showTaskFilterName\" id=\"adf-edit-task-filter-title-id\" class=\"adf-edit-task-filter-header__title\"\n >{{taskFilter.name | translate}}</mat-panel-title>\n <mat-panel-description class=\"adf-edit-task-filter-header__description\" id=\"adf-edit-task-filter-sub-title-id\">\n <span *ngIf=\"showTitle\">{{ 'ADF_CLOUD_EDIT_TASK_FILTER.TITLE' | translate}}</span>\n <div *ngIf=\"showFilterActions\" class=\"adf-cloud-edit-task-filter-actions\">\n <ng-container *ngIf=\"toggleFilterActions\">\n <button *ngFor=\"let filterAction of taskFilterActions\"\n mat-icon-button\n [title]=\"filterAction.tooltip | translate\"\n [attr.data-automation-id]=\"'adf-filter-action-' + filterAction.actionType\"\n [disabled]=\"isDisabledAction(filterAction)\"\n (click)=\"executeFilterActions(filterAction)\">\n <adf-icon [value]=\"filterAction.icon\" />\n </button>\n </ng-container>\n </div>\n </mat-panel-description>\n </ng-container>\n <ng-template #loadingTemplate>\n <div class=\"adf-cloud-edit-task-filter-loading-margin\">\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"30\" />\n </div>\n </ng-template>\n </mat-expansion-panel-header>\n <ng-container *ngIf=\"!isLoading;\">\n <form *ngIf=\"editTaskFilterForm\" [formGroup]=\"editTaskFilterForm\" class=\"adf-edit-task-filter-content\">\n <div class=\"adf-edit-task-filter-form\">\n <ng-container *ngFor=\"let taskFilterProperty of taskFilterProperties\">\n <mat-form-field [floatLabel]=\"'auto'\"\n *ngIf=\"taskFilterProperty.type === 'select'\"\n [attr.data-automation-id]=\"taskFilterProperty.key\">\n <mat-label class=\"adf-edit-task-filter-content__select-label\">{{taskFilterProperty.label | translate}}</mat-label>\n <mat-select\n [formControlName]=\"taskFilterProperty.key\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\"\n (selectionChange)=\"onStatusChange($event)\">\n <mat-option *ngFor=\"let propertyOption of taskFilterProperty.options\"\n [value]=\"propertyOption.value\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-options-' + taskFilterProperty.key\">\n {{ propertyOption.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field [floatLabel]=\"'auto'\"\n *ngIf=\"taskFilterProperty.type === 'text'\"\n [attr.data-automation-id]=\"taskFilterProperty.key\">\n <mat-label class=\"adf-edit-task-filter-content__text-label\">{{taskFilterProperty.label | translate}}</mat-label>\n <input matInput\n [formControlName]=\"taskFilterProperty.key\"\n type=\"text\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\" />\n </mat-form-field>\n <mat-form-field [floatLabel]=\"'auto'\"\n *ngIf=\"taskFilterProperty.type === 'date'\"\n [attr.data-automation-id]=\"taskFilterProperty.key\">\n <mat-label>{{taskFilterProperty.label | translate}}</mat-label>\n <input matInput\n (keyup)=\"onDateChanged($any($event).target.value, taskFilterProperty)\"\n (dateChange)=\"onDateChanged($event.value, taskFilterProperty)\"\n [matDatepicker]=\"dateController\"\n [placeholder]=\"taskFilterProperty.label | translate\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\">\n <mat-datepicker-toggle matSuffix\n [for]=\"dateController\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-date-toggle-' + taskFilterProperty.key\" />\n <mat-datepicker #dateController\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-date-picker-' + taskFilterProperty.key\" />\n <div class=\"adf-edit-task-filter-date-error-container\">\n <div *ngIf=\"hasError(taskFilterProperty)\">\n <div class=\"adf-error-text\">{{'ADF_TASK_LIST.START_TASK.FORM.ERROR.DATE'|translate}}</div>\n <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n </div>\n </div>\n </mat-form-field>\n <div class=\"adf-edit-task-filter-checkbox\"\n *ngIf=\"taskFilterProperty.type === 'checkbox'\">\n <mat-checkbox color=\"primary\"\n [formControlName]=\"taskFilterProperty.key\"\n [attr.data-automation-id]=\"taskFilterProperty.key\"\n >{{taskFilterProperty.label | translate}}</mat-checkbox>\n </div>\n\n <adf-cloud-date-range-filter #dateRange\n *ngIf=\"taskFilterProperty.type === 'date-range'\"\n [processFilterProperty]=\"taskFilterProperty\"\n [options]=\"taskFilterProperty.dateFilterOptions\"\n (dateTypeChange)=\"onDateTypeChange($event, taskFilterProperty)\"\n (dateChanged)=\"onDateRangeFilterChanged($event, taskFilterProperty)\" />\n <adf-cloud-people\n class=\"{{ 'adf-edit-task-filter-' + taskFilterProperty.key }}\"\n *ngIf=\"taskFilterProperty.type === 'people'\"\n [preSelectUsers]=\"taskFilterProperty.value\"\n [title]=\"taskFilterProperty.label\"\n [validate]=\"true\"\n [appName]=\"appName\"\n [mode]=\"taskFilterProperty.selectionMode\"\n (changedUsers)=\"onChangedUser($event, taskFilterProperty)\" />\n\n <adf-cloud-task-assignment-filter\n *ngIf=\"taskFilterProperty.type === 'assignment'\"\n [taskFilterProperty]=\"taskFilterProperty\"\n [status]=\"selectedStatus\"\n [appName]=\"appName\"\n (assignedUsersChange)=\"onAssignedUsersChange($event)\"\n (assignedGroupsChange)=\"onAssignedGroupsChange($event)\"\n (assignmentTypeChange)=\"onAssignmentTypeChange($event)\" />\n\n </ng-container>\n </div>\n </form>\n </ng-container>\n </mat-expansion-panel>\n</mat-accordion>\n", styles: [".adf-edit-task-filter-checkbox{font-size:var(--theme-subheading-2-font-size);padding-top:10px;text-align:center;flex:1 23%}.adf-edit-task-filter-date-error-container{position:absolute;height:20px;margin-top:12px;width:100%}.adf-edit-task-filter-date-error-container>div{display:flex;flex-flow:row;justify-content:flex-start}.adf-edit-task-filter-date-error-container .adf-error-text{padding-right:8px;height:16px;font-size:10px;line-height:1.33;color:var(--theme-warn-color);width:auto}.adf-edit-task-filter-date-error-container .adf-error-icon{font-size:16px;color:var(--theme-warn-color)}.adf-edit-task-filter-dateRange mat-grid-list{width:450px}.adf-cloud-edit-task-filter-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.adf-edit-task-filter-form{flex-flow:row wrap;display:flex;place-content:center flex-start;align-items:center}.adf-edit-task-filter-form :not(:last-child){margin-right:10px}.adf-edit-task-filter-form mat-form-field,.adf-edit-task-filter-form adf-cloud-people,.adf-edit-task-filter-form adf-cloud-task-assignment-filter{flex:1 1 23%}@media (max-width: 599.9px){.adf-edit-task-filter-form{flex-flow:column}.adf-edit-task-filter-form :not(:last-child){margin-bottom:10px;margin-right:0}}.adf-edit-task-filter-header{height:var(--adf-edit-task-and-service-filter-header-height)}.adf-edit-task-filter-header__title{color:var(--adf-edit-task-and-service-filter-header-title-color)}.adf-edit-task-filter-header__description{color:var(--adf-edit-task-and-service-filter-header-description-color);place-content:center space-between}.adf-edit-task-filter-content__text-label{color:var(--adf-edit-task-and-service-filter-content-text-label-color)}.adf-edit-task-filter-content__select-label{color:var(--adf-edit-task-and-service-filter-content-select-label-color)}\n"] }]
319
- }], ctorParameters: () => [] });
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC10YXNrLWZpbHRlci1jbG91ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL3Rhc2svdGFzay1maWx0ZXJzL2NvbXBvbmVudHMvZWRpdC10YXNrLWZpbHRlcnMvZWRpdC10YXNrLWZpbHRlci9lZGl0LXRhc2stZmlsdGVyLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWZpbHRlcnMvY29tcG9uZW50cy9lZGl0LXRhc2stZmlsdGVycy9lZGl0LXRhc2stZmlsdGVyL2VkaXQtdGFzay1maWx0ZXItY2xvdWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBb0Isb0JBQW9CLEVBQXdCLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGdDQUFnQyxFQUFrQixNQUFNLDBDQUEwQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FB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LEVBQUU7Z0JBQ2xGLEtBQUssRUFBRTtvQkFDSCxhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLElBQUksRUFBRTtvQkFDbEQsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLEVBQUU7aUJBQ3pEO2dCQUNELGFBQWEsRUFBRSxVQUFVO2FBQzVCO1NBQ0osQ0FBQztJQUNOLENBQUM7OEdBalFRLDRCQUE0QjtrR0FBNUIsNEJBQTRCLDZHQ3RFekMsdTNRQXFIQSxrMUREckVRLFlBQVksK1BBQ1osZUFBZSwyRkFDZixrQkFBa0Isd3RCQUNsQixlQUFlLDRJQUNmLGFBQWEsMkZBQ2Isd0JBQXdCLGtPQUN4QixrQkFBa0IsMmFBQ2xCLG1CQUFtQiw0OEJBQ25CLGVBQWUsbXJCQUNmLGNBQWMsMldBQ2QsbUJBQW1CLG9nQkFDbkIsYUFBYSxvTEFDYixpQkFBaUIsK1dBQ2pCLHdCQUF3QixrS0FDeEIsb0JBQW9CLGtiQUNwQixrQ0FBa0MsbU5BQ2xDLFlBQVk7OzJGQU1QLDRCQUE0QjtrQkExQnhDLFNBQVM7K0JBQ0ksNEJBQTRCLGNBQzFCLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2Isd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLHdCQUF3Qjt3QkFDeEIsb0JBQW9CO3dCQUNwQixrQ0FBa0M7d0JBQ2xDLFlBQVk7cUJBQ2YsaUJBR2MsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUYXNrRmlsdGVyQWN0aW9uLCBUYXNrRmlsdGVyQ2xvdWRNb2RlbCwgVGFza0ZpbHRlclByb3BlcnRpZXMsIFRhc2tTdGF0dXNGaWx0ZXIgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZmlsdGVyLWNsb3VkLm1vZGVsJztcbmltcG9ydCB7IFRhc2tGaWx0ZXJDbG91ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90YXNrLWZpbHRlci1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVDbG91ZEZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvZGF0ZS1jbG91ZC1maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgQmFzZUVkaXRUYXNrRmlsdGVyQ2xvdWRDb21wb25lbnQsIERyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vYmFzZS1lZGl0LXRhc2stZmlsdGVyLWNsb3VkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBzZXQgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRFeHBhbnNpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IERhdGVSYW5nZUZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRlLXJhbmdlLWZpbHRlci9kYXRlLXJhbmdlLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGVvcGxlQ2xvdWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtY2xvdWQuY29tcG9uZW50JztcbmltcG9ydCB7IFRhc2tBc3NpZ25tZW50RmlsdGVyQ2xvdWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi90YXNrLWFzc2lnbm1lbnQtZmlsdGVyL3Rhc2stYXNzaWdubWVudC1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFwb2xsb01vZHVsZSB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtY2xvdWQtZWRpdC10YXNrLWZpbHRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgSWNvbkNvbXBvbmVudCxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgICAgICBEYXRlUmFuZ2VGaWx0ZXJDb21wb25lbnQsXG4gICAgICAgIFBlb3BsZUNsb3VkQ29tcG9uZW50LFxuICAgICAgICBUYXNrQXNzaWdubWVudEZpbHRlckNsb3VkQ29tcG9uZW50LFxuICAgICAgICBBcG9sbG9Nb2R1bGVcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lZGl0LXRhc2stZmlsdGVyLWNsb3VkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lZGl0LXRhc2stZmlsdGVyLWNsb3VkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBFZGl0VGFza0ZpbHRlckNsb3VkQ29tcG9uZW50IGV4dGVuZHMgQmFzZUVkaXRUYXNrRmlsdGVyQ2xvdWRDb21wb25lbnQ8VGFza0ZpbHRlckNsb3VkTW9kZWw+IHtcbiAgICBwcml2YXRlIHRhc2tGaWx0ZXJDbG91ZFNlcnZpY2UgPSBpbmplY3QoVGFza0ZpbHRlckNsb3VkU2VydmljZSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBhc3NpZ25OZXdGaWx0ZXIobW9kZWw6IFRhc2tGaWx0ZXJDbG91ZE1vZGVsKSB7XG4gICAgICAgIHRoaXMuc2V0TGFzdE1vZGlmaWVkVG9GaWx0ZXIobW9kZWwpO1xuICAgICAgICB0aGlzLmNoYW5nZWRUYXNrRmlsdGVyID0gbmV3IFRhc2tGaWx0ZXJDbG91ZE1vZGVsKE9iamVjdC5hc3NpZ24oe30sIHRoaXMudGFza0ZpbHRlciwgbW9kZWwpKTtcbiAgICAgICAgdGhpcy5mb3JtSGFzQmVlbkNoYW5nZWQgPSAhdGhpcy5kZWVwQ29tcGFyZSh0aGlzLmNoYW5nZWRUYXNrRmlsdGVyLCB0aGlzLnRhc2tGaWx0ZXIpO1xuICAgICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRoaXMuY2hhbmdlZFRhc2tGaWx0ZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRUYXNrRmlsdGVyQnlJZChhcHBOYW1lOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFza0ZpbHRlckNsb3VkU2VydmljZS5nZXRUYXNrRmlsdGVyQnlJZChhcHBOYW1lLCBpZCkucGlwZShtYXAoKHJlc3BvbnNlKSA9PiBuZXcgVGFza0ZpbHRlckNsb3VkTW9kZWwocmVzcG9uc2UpKSk7XG4gICAgfVxuXG4gICAgY3JlYXRlQW5kRmlsdGVyUHJvcGVydGllcygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gc3VwZXIuY3JlYXRlQW5kRmlsdGVyUHJvcGVydGllcygpO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc0xhc3RNb2RpZmllZFByb3BlcnR5KCkpIHtcbiAgICAgICAgICAgIHJldHVybiBbLi4ucmVzdWx0LCAuLi50aGlzLmNyZWF0ZUxhc3RNb2RpZmllZFByb3BlcnR5KCldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0RmlsdGVyUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbJ3N0YXR1cycsICdhc3NpZ25lZScsICdzb3J0JywgJ29yZGVyJ107XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFNvcnRQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFsnaWQnLCAnbmFtZScsICdjcmVhdGVkRGF0ZScsICdwcmlvcml0eSddO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TGFzdE1vZGlmaWVkVG9GaWx0ZXIoZm9ybVZhbHVlczogVGFza0ZpbHRlckNsb3VkTW9kZWwpIHtcbiAgICAgICAgaWYgKGZvcm1WYWx1ZXMubGFzdE1vZGlmaWVkVG8gJiYgRGF0ZS5wYXJzZShmb3JtVmFsdWVzLmxhc3RNb2RpZmllZFRvLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0TW9kaWZpZWRUb0ZpbHRlclZhbHVlID0gc2V0KG5ldyBEYXRlKGZvcm1WYWx1ZXMubGFzdE1vZGlmaWVkVG8pLCB7XG4gICAgICAgICAgICAgICAgaG91cnM6IDIzLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXM6IDU5LFxuICAgICAgICAgICAgICAgIHNlY29uZHM6IDU5XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvcm1WYWx1ZXMubGFzdE1vZGlmaWVkVG8gPSBsYXN0TW9kaWZpZWRUb0ZpbHRlclZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRmlsdGVyKGZpbHRlclRvVXBkYXRlOiBUYXNrRmlsdGVyQ2xvdWRNb2RlbCk6IE9ic2VydmFibGU8VGFza0ZpbHRlckNsb3VkTW9kZWxbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YXNrRmlsdGVyQ2xvdWRTZXJ2aWNlLnVwZGF0ZUZpbHRlcihmaWx0ZXJUb1VwZGF0ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGRlbGV0ZUZpbHRlcihmaWx0ZXJUb0RlbGV0ZTogVGFza0ZpbHRlckNsb3VkTW9kZWwpOiBPYnNlcnZhYmxlPFRhc2tGaWx0ZXJDbG91ZE1vZGVsW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFza0ZpbHRlckNsb3VkU2VydmljZS5kZWxldGVGaWx0ZXIoZmlsdGVyVG9EZWxldGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhZGRGaWx0ZXIoZmlsdGVyVG9BZGQ6IFRhc2tGaWx0ZXJDbG91ZE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFza0ZpbHRlckNsb3VkU2VydmljZS5hZGRGaWx0ZXIoZmlsdGVyVG9BZGQpLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpO1xuICAgIH1cblxuICAgIGlzRGlzYWJsZWRGb3JEZWZhdWx0RmlsdGVycyhhY3Rpb246IFRhc2tGaWx0ZXJBY3Rpb24pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudGFza0ZpbHRlckNsb3VkU2VydmljZS5pc0RlZmF1bHRGaWx0ZXIodGhpcy50YXNrRmlsdGVyLm5hbWUpICYmXG4gICAgICAgICAgICBFZGl0VGFza0ZpbHRlckNsb3VkQ29tcG9uZW50LkFDVElPTlNfRElTQUJMRURfQllfREVGQVVMVC5pbmNsdWRlcyhhY3Rpb24uYWN0aW9uVHlwZSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXN0b3JlRGVmYXVsdFRhc2tGaWx0ZXJzKCk6IE9ic2VydmFibGU8VGFza0ZpbHRlckNsb3VkTW9kZWxbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YXNrRmlsdGVyQ2xvdWRTZXJ2aWNlLmdldFRhc2tMaXN0RmlsdGVycyh0aGlzLmFwcE5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTGFzdE1vZGlmaWVkUHJvcGVydHkoKTogVGFza0ZpbHRlclByb3BlcnRpZXNbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5MQVNUX01PRElGSUVEX0ZST00nLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdkYXRlJyxcbiAgICAgICAgICAgICAgICBrZXk6ICdsYXN0TW9kaWZpZWRGcm9tJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5MQVNUX01PRElGSUVEX1RPJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGF0ZScsXG4gICAgICAgICAgICAgICAga2V5OiAnbGFzdE1vZGlmaWVkVG8nLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJ1xuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3RhdHVzT3B0aW9ucygpOiBEcm9wZG93bk9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgdmFsdWU6IFRhc2tTdGF0dXNGaWx0ZXIuQUxMLCBsYWJlbDogJ0FERl9DTE9VRF9UQVNLX0ZJTFRFUlMuU1RBVFVTLkFMTCcgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6IFRhc2tTdGF0dXNGaWx0ZXIuQ1JFQVRFRCwgbGFiZWw6ICdBREZfQ0xPVURfVEFTS19GSUxURVJTLlNUQVRVUy5DUkVBVEVEJyB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogVGFza1N0YXR1c0ZpbHRlci5BU1NJR05FRCwgbGFiZWw6ICdBREZfQ0xPVURfVEFTS19GSUxURVJTLlNUQVRVUy5BU1NJR05FRCcgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6IFRhc2tTdGF0dXNGaWx0ZXIuU1VTUEVOREVELCBsYWJlbDogJ0FERl9DTE9VRF9UQVNLX0ZJTFRFUlMuU1RBVFVTLlNVU1BFTkRFRCcgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6IFRhc2tTdGF0dXNGaWx0ZXIuQ0FOQ0VMTEVELCBsYWJlbDogJ0FERl9DTE9VRF9UQVNLX0ZJTFRFUlMuU1RBVFVTLkNBTkNFTExFRCcgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6IFRhc2tTdGF0dXNGaWx0ZXIuQ09NUExFVEVELCBsYWJlbDogJ0FERl9DTE9VRF9UQVNLX0ZJTFRFUlMuU1RBVFVTLkNPTVBMRVRFRCcgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGNyZWF0ZVRhc2tGaWx0ZXJQcm9wZXJ0aWVzKCk6IFRhc2tGaWx0ZXJQcm9wZXJ0aWVzW10ge1xuICAgICAgICBjb25zdCBzdGF0dXNPcHRpb25zID0gdGhpcy5nZXRTdGF0dXNPcHRpb25zKCk7XG4gICAgICAgIGNvbnN0IHNvcnRQcm9wZXJ0aWVzID0gdGhpcy5jcmVhdGVTb3J0UHJvcGVydGllcztcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLkFQUF9OQU1FJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICBrZXk6ICdhcHBOYW1lJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50YXNrRmlsdGVyLmFwcE5hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5hcHBsaWNhdGlvbk5hbWVzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuVEFTS19JRCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGtleTogJ3Rhc2tJZCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuU1RBVFVTJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICBrZXk6ICdzdGF0dXMnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRhc2tGaWx0ZXIuc3RhdHVzIHx8IHN0YXR1c09wdGlvbnNbMF0udmFsdWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogc3RhdHVzT3B0aW9uc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLkFTU0lHTk1FTlQnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBrZXk6ICdhc3NpZ25lZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudGFza0ZpbHRlci5hc3NpZ25lZSB8fCAnJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLlBST0NFU1NfREVGX05BTUUnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgIGtleTogJ3Byb2Nlc3NEZWZpbml0aW9uTmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudGFza0ZpbHRlci5wcm9jZXNzRGVmaW5pdGlvbk5hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbk5hbWVzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuUFJPQ0VTU19JTlNUQU5DRV9JRCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGtleTogJ3Byb2Nlc3NJbnN0YW5jZUlkJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCB8fCB0aGlzLnRhc2tGaWx0ZXIucHJvY2Vzc0luc3RhbmNlSWQgfHwgJydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5QUk9DRVNTX0RFRl9JRCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGtleTogJ3Byb2Nlc3NEZWZpbml0aW9uSWQnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRhc2tGaWx0ZXIucHJvY2Vzc0RlZmluaXRpb25JZCB8fCAnJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLlRBU0tfTkFNRScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGtleTogJ3Rhc2tOYW1lJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50YXNrRmlsdGVyLnRhc2tOYW1lIHx8ICcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuUEFSRU5UX1RBU0tfSUQnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBrZXk6ICdwYXJlbnRUYXNrSWQnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRhc2tGaWx0ZXIucGFyZW50VGFza0lkIHx8ICcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuUFJJT1JJVFknLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgIGtleTogJ3ByaW9yaXR5JyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50YXNrRmlsdGVyLnByaW9yaXR5IHx8ICcnLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMudGFza0Nsb3VkU2VydmljZS5wcmlvcml0aWVzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuT1dORVInLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBrZXk6ICdvd25lcicsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudGFza0ZpbHRlci5vd25lciB8fCAnJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLkNSRUFURURfREFURScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICAgICAgICAgIGtleTogJ2NyZWF0ZWREYXRlJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5TT1JUJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICBrZXk6ICdzb3J0JyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50YXNrRmlsdGVyLnNvcnQgfHwgc29ydFByb3BlcnRpZXNbMF0udmFsdWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogc29ydFByb3BlcnRpZXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5ESVJFQ1RJT04nLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgIGtleTogJ29yZGVyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50YXNrRmlsdGVyLm9yZGVyIHx8IHRoaXMuc29ydERpcmVjdGlvbnNbMF0udmFsdWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogWy4uLnRoaXMuc29ydERpcmVjdGlvbnNdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuU1RBTkRfQUxPTkUnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgICAgICAgICAga2V5OiAnc3RhbmRhbG9uZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudGFza0ZpbHRlci5zdGFuZGFsb25lIHx8IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuRFVFX0RBVEUnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdkYXRlLXJhbmdlJyxcbiAgICAgICAgICAgICAgICBrZXk6ICdkdWVEYXRlUmFuZ2UnLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHsgZGF0ZVR5cGU6ICdkdWVEYXRlVHlwZScsIGZyb206ICdfZHVlRGF0ZUZyb20nLCB0bzogJ19kdWVEYXRlVG8nIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgZHVlRGF0ZVR5cGU6IHRoaXMudGFza0ZpbHRlci5kdWVEYXRlVHlwZSB8fCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBfZHVlRGF0ZUZyb206IHRoaXMudGFza0ZpbHRlci5kdWVEYXRlRnJvbSB8fCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBfZHVlRGF0ZVRvOiB0aGlzLnRhc2tGaWx0ZXIuZHVlRGF0ZVRvIHx8IG51bGxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRhdGVGaWx0ZXJPcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIERhdGVDbG91ZEZpbHRlclR5cGUuTk9fREFURSxcbiAgICAgICAgICAgICAgICAgICAgRGF0ZUNsb3VkRmlsdGVyVHlwZS5UT0RBWSxcbiAgICAgICAgICAgICAgICAgICAgRGF0ZUNsb3VkRmlsdGVyVHlwZS5UT01PUlJPVyxcbiAgICAgICAgICAgICAgICAgICAgRGF0ZUNsb3VkRmlsdGVyVHlwZS5ORVhUXzdfREFZUyxcbiAgICAgICAgICAgICAgICAgICAgRGF0ZUNsb3VkRmlsdGVyVHlwZS5SQU5HRVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5DT01QTEVURURfREFURScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2RhdGUtcmFuZ2UnLFxuICAgICAgICAgICAgICAgIGtleTogJ2NvbXBsZXRlZERhdGVSYW5nZScsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogeyBkYXRlVHlwZTogJ2NvbXBsZXRlZERhdGVUeXBlJywgZnJvbTogJ19jb21wbGV0ZWRGcm9tJywgdG86ICdfY29tcGxldGVkVG8nIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkRGF0ZVR5cGU6IHRoaXMudGFza0ZpbHRlci5jb21wbGV0ZWREYXRlVHlwZSB8fCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBfY29tcGxldGVkRnJvbTogdGhpcy50YXNrRmlsdGVyLmNvbXBsZXRlZEZyb20gfHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgX2NvbXBsZXRlZFRvOiB0aGlzLnRhc2tGaWx0ZXIuY29tcGxldGVkVG8gfHwgbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5DUkVBVEVEX0RBVEUnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdkYXRlLXJhbmdlJyxcbiAgICAgICAgICAgICAgICBrZXk6ICdjcmVhdGVkRGF0ZVJhbmdlJyxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7IGRhdGVUeXBlOiAnY3JlYXRlZERhdGVUeXBlJywgZnJvbTogJ19jcmVhdGVkRnJvbScsIHRvOiAnX2NyZWF0ZWRUbycgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkRGF0ZVR5cGU6IHRoaXMudGFza0ZpbHRlci5jcmVhdGVkRGF0ZVR5cGUgfHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgX2NyZWF0ZWRGcm9tOiB0aGlzLnRhc2tGaWx0ZXIuY3JlYXRlZEZyb20gfHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgX2NyZWF0ZWRUbzogdGhpcy50YXNrRmlsdGVyLmNyZWF0ZWRUbyB8fCBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLkNPTVBMRVRFRF9CWScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3Blb3BsZScsXG4gICAgICAgICAgICAgICAga2V5OiAnY29tcGxldGVkQnknLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRhc2tGaWx0ZXIuY29tcGxldGVkQnkgPyBbdGhpcy50YXNrRmlsdGVyLmNvbXBsZXRlZEJ5XSA6IG51bGwsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uTW9kZTogJ3NpbmdsZSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5BU1NJR05NRU5UJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYXNzaWdubWVudCcsXG4gICAgICAgICAgICAgICAga2V5OiAnYXNzaWdubWVudCcsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogeyBhc3NpZ25lZFVzZXJzOiAnYXNzaWduZWRVc2VycycsIGNhbmRpZGF0ZUdyb3VwczogJ2NhbmRpZGF0ZUdyb3VwcycgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICBhc3NpZ25lZFVzZXJzOiB0aGlzLnRhc2tGaWx0ZXIuYXNzaWduZWRVc2VycyB8fCBbXSxcbiAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlR3JvdXBzOiB0aGlzLnRhc2tGaWx0ZXIuY2FuZGlkYXRlR3JvdXBzIHx8IFtdXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb2RlOiAnbXVsdGlwbGUnXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgfVxufVxuIiwiPG1hdC1hY2NvcmRpb24gW2hpZGVUb2dnbGVdPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJhZGYtZWRpdC10YXNrLWZpbHRlclwiPlxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIChhZnRlckV4cGFuZCk9XCJvbkV4cGFuZCgpXCIgKGNsb3NlZCk9XCJvbkNsb3NlKClcIj5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyICpuZ0lmPVwidGFza0ZpbHRlclwiIGlkPVwiYWRmLWVkaXQtdGFzay1maWx0ZXItZXhwYW5zaW9uLWhlYWRlclwiIGNsYXNzPVwiYWRmLWVkaXQtdGFzay1maWx0ZXItaGVhZGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZzsgZWxzZSBsb2FkaW5nVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlICpuZ0lmPVwic2hvd1Rhc2tGaWx0ZXJOYW1lXCIgaWQ9XCJhZGYtZWRpdC10YXNrLWZpbHRlci10aXRsZS1pZFwiIGNsYXNzPVwiYWRmLWVkaXQtdGFzay1maWx0ZXItaGVhZGVyX190aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgID57e3Rhc2tGaWx0ZXIubmFtZSB8IHRyYW5zbGF0ZX19PC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cImFkZi1lZGl0LXRhc2stZmlsdGVyLWhlYWRlcl9fZGVzY3JpcHRpb25cIiBpZD1cImFkZi1lZGl0LXRhc2stZmlsdGVyLXN1Yi10aXRsZS1pZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dUaXRsZVwiPnt7ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5USVRMRScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dGaWx0ZXJBY3Rpb25zXCIgY2xhc3M9XCJhZGYtY2xvdWQtZWRpdC10YXNrLWZpbHRlci1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9nZ2xlRmlsdGVyQWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGZpbHRlckFjdGlvbiBvZiB0YXNrRmlsdGVyQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJmaWx0ZXJBY3Rpb24udG9vbHRpcCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi1maWx0ZXItYWN0aW9uLScgKyBmaWx0ZXJBY3Rpb24uYWN0aW9uVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZEFjdGlvbihmaWx0ZXJBY3Rpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJleGVjdXRlRmlsdGVyQWN0aW9ucyhmaWx0ZXJBY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhZGYtaWNvbiBbdmFsdWVdPVwiZmlsdGVyQWN0aW9uLmljb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmdUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWNsb3VkLWVkaXQtdGFzay1maWx0ZXItbG9hZGluZy1tYXJnaW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgW2RpYW1ldGVyXT1cIjMwXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nO1wiPlxuICAgICAgICAgICAgPGZvcm0gKm5nSWY9XCJlZGl0VGFza0ZpbHRlckZvcm1cIiBbZm9ybUdyb3VwXT1cImVkaXRUYXNrRmlsdGVyRm9ybVwiIGNsYXNzPVwiYWRmLWVkaXQtdGFzay1maWx0ZXItY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtZWRpdC10YXNrLWZpbHRlci1mb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhc2tGaWx0ZXJQcm9wZXJ0eSBvZiB0YXNrRmlsdGVyUHJvcGVydGllc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFtmbG9hdExhYmVsXT1cIidhdXRvJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YXNrRmlsdGVyUHJvcGVydHkudHlwZSA9PT0gJ3NlbGVjdCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCJ0YXNrRmlsdGVyUHJvcGVydHkua2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImFkZi1lZGl0LXRhc2stZmlsdGVyLWNvbnRlbnRfX3NlbGVjdC1sYWJlbFwiPnt7dGFza0ZpbHRlclByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInRhc2tGaWx0ZXJQcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi1jbG91ZC1lZGl0LXRhc2stcHJvcGVydHktJyArIHRhc2tGaWx0ZXJQcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU3RhdHVzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBwcm9wZXJ0eU9wdGlvbiBvZiB0YXNrRmlsdGVyUHJvcGVydHkub3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInByb3BlcnR5T3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi1jbG91ZC1lZGl0LXRhc2stcHJvcGVydHktb3B0aW9ucy0nICsgdGFza0ZpbHRlclByb3BlcnR5LmtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb3BlcnR5T3B0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBbZmxvYXRMYWJlbF09XCInYXV0bydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFza0ZpbHRlclByb3BlcnR5LnR5cGUgPT09ICd0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cInRhc2tGaWx0ZXJQcm9wZXJ0eS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiYWRmLWVkaXQtdGFzay1maWx0ZXItY29udGVudF9fdGV4dC1sYWJlbFwiPnt7dGFza0ZpbHRlclByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ0YXNrRmlsdGVyUHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi1jbG91ZC1lZGl0LXRhc2stcHJvcGVydHktJyArIHRhc2tGaWx0ZXJQcm9wZXJ0eS5rZXlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBbZmxvYXRMYWJlbF09XCInYXV0bydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFza0ZpbHRlclByb3BlcnR5LnR5cGUgPT09ICdkYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cInRhc2tGaWx0ZXJQcm9wZXJ0eS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7dGFza0ZpbHRlclByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm9uRGF0ZUNoYW5nZWQoJGFueSgkZXZlbnQpLnRhcmdldC52YWx1ZSwgdGFza0ZpbHRlclByb3BlcnR5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZWQoJGV2ZW50LnZhbHVlLCB0YXNrRmlsdGVyUHJvcGVydHkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZGF0ZUNvbnRyb2xsZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidGFza0ZpbHRlclByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZWRpdC10YXNrLXByb3BlcnR5LScgKyB0YXNrRmlsdGVyUHJvcGVydHkua2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiZGF0ZUNvbnRyb2xsZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZWRpdC10YXNrLXByb3BlcnR5LWRhdGUtdG9nZ2xlLScgKyB0YXNrRmlsdGVyUHJvcGVydHkua2V5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVDb250cm9sbGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInYWRmLWNsb3VkLWVkaXQtdGFzay1wcm9wZXJ0eS1kYXRlLXBpY2tlci0nICsgdGFza0ZpbHRlclByb3BlcnR5LmtleVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lZGl0LXRhc2stZmlsdGVyLWRhdGUtZXJyb3ItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJoYXNFcnJvcih0YXNrRmlsdGVyUHJvcGVydHkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWVycm9yLXRleHRcIj57eydBREZfVEFTS19MSVNULlNUQVJUX1RBU0suRk9STS5FUlJPUi5EQVRFJ3x0cmFuc2xhdGV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYWRmLWVycm9yLWljb25cIj53YXJuaW5nPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lZGl0LXRhc2stZmlsdGVyLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YXNrRmlsdGVyUHJvcGVydHkudHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwidGFza0ZpbHRlclByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwidGFza0ZpbHRlclByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7dGFza0ZpbHRlclByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlfX08L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YWRmLWNsb3VkLWRhdGUtcmFuZ2UtZmlsdGVyICNkYXRlUmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhc2tGaWx0ZXJQcm9wZXJ0eS50eXBlID09PSAnZGF0ZS1yYW5nZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9jZXNzRmlsdGVyUHJvcGVydHldPVwidGFza0ZpbHRlclByb3BlcnR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ0YXNrRmlsdGVyUHJvcGVydHkuZGF0ZUZpbHRlck9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlVHlwZUNoYW5nZSk9XCJvbkRhdGVUeXBlQ2hhbmdlKCRldmVudCwgdGFza0ZpbHRlclByb3BlcnR5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVDaGFuZ2VkKT1cIm9uRGF0ZVJhbmdlRmlsdGVyQ2hhbmdlZCgkZXZlbnQsIHRhc2tGaWx0ZXJQcm9wZXJ0eSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFkZi1jbG91ZC1wZW9wbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7ICdhZGYtZWRpdC10YXNrLWZpbHRlci0nICsgdGFza0ZpbHRlclByb3BlcnR5LmtleSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YXNrRmlsdGVyUHJvcGVydHkudHlwZSA9PT0gJ3Blb3BsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmVTZWxlY3RVc2Vyc109XCJ0YXNrRmlsdGVyUHJvcGVydHkudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJ0YXNrRmlsdGVyUHJvcGVydHkubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwTmFtZV09XCJhcHBOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCJ0YXNrRmlsdGVyUHJvcGVydHkuc2VsZWN0aW9uTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWRVc2Vycyk9XCJvbkNoYW5nZWRVc2VyKCRldmVudCwgdGFza0ZpbHRlclByb3BlcnR5KVwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhZGYtY2xvdWQtdGFzay1hc3NpZ25tZW50LWZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFza0ZpbHRlclByb3BlcnR5LnR5cGUgPT09ICdhc3NpZ25tZW50J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rhc2tGaWx0ZXJQcm9wZXJ0eV09XCJ0YXNrRmlsdGVyUHJvcGVydHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwic2VsZWN0ZWRTdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBOYW1lXT1cImFwcE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhc3NpZ25lZFVzZXJzQ2hhbmdlKT1cIm9uQXNzaWduZWRVc2Vyc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXNzaWduZWRHcm91cHNDaGFuZ2UpPVwib25Bc3NpZ25lZEdyb3Vwc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXNzaWdubWVudFR5cGVDaGFuZ2UpPVwib25Bc3NpZ25tZW50VHlwZUNoYW5nZSgkZXZlbnQpXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuPC9tYXQtYWNjb3JkaW9uPlxuIl19