@cuby-ui/core 0.0.231 → 0.0.233

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 (77) hide show
  1. package/components/button/button.component.d.ts +1 -1
  2. package/components/notification/notification.component.d.ts +2 -2
  3. package/components/sidebar/sidebar-header/sidebar-header.component.d.ts +1 -1
  4. package/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.d.ts +1 -1
  5. package/esm2022/components/banner/banner.component.mjs +3 -3
  6. package/esm2022/utils/default-validators/create-default-validators.mjs +2 -2
  7. package/esm2022/utils/default-validators/index.mjs +2 -2
  8. package/esm2022/widgets/categories/components/category-form/category-form.component.mjs +3 -3
  9. package/esm2022/widgets/checklist-block/checklist-block.component.mjs +72 -0
  10. package/esm2022/widgets/checklist-block/checklist-block.options.mjs +2 -0
  11. package/esm2022/widgets/checklist-block/components/checklist-block-list/checklist-block-list.component.mjs +85 -0
  12. package/esm2022/widgets/checklist-block/components/checklist-block-list/index.mjs +2 -0
  13. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.mjs +133 -0
  14. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-card/index.mjs +2 -0
  15. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.mjs +45 -0
  16. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/index.mjs +2 -0
  17. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.mjs +35 -0
  18. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/index.mjs +2 -0
  19. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.mjs +152 -0
  20. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.options.mjs +2 -0
  21. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-container/index.mjs +2 -0
  22. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.mjs +282 -0
  23. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.options.mjs +2 -0
  24. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation/index.mjs +2 -0
  25. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.mjs +117 -0
  26. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.options.mjs +2 -0
  27. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/index.mjs +2 -0
  28. package/esm2022/widgets/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.mjs +39 -0
  29. package/esm2022/widgets/checklist-block/components/checklist-block-title-control/index.mjs +2 -0
  30. package/esm2022/widgets/checklist-block/components/index.mjs +2 -0
  31. package/esm2022/widgets/checklist-block/index.mjs +2 -0
  32. package/esm2022/widgets/checklist-block/services/checklist-block.service.mjs +50 -0
  33. package/esm2022/widgets/checklist-block/services/index.mjs +2 -0
  34. package/esm2022/widgets/delete-modal/delete-modal.component.mjs +39 -0
  35. package/esm2022/widgets/delete-modal/delete-modal.options.mjs +2 -0
  36. package/esm2022/widgets/delete-modal/index.mjs +2 -0
  37. package/esm2022/widgets/index.mjs +6 -2
  38. package/esm2022/widgets/loader/index.mjs +2 -0
  39. package/esm2022/widgets/loader/loader.component.mjs +36 -0
  40. package/esm2022/widgets/utility-info/utility-info.component.mjs +4 -4
  41. package/fesm2022/cuby-ui-core.mjs +1182 -234
  42. package/fesm2022/cuby-ui-core.mjs.map +1 -1
  43. package/package.json +3 -3
  44. package/utils/default-validators/create-default-validators.d.ts +1 -1
  45. package/utils/default-validators/index.d.ts +1 -1
  46. package/widgets/categories/components/category-item/category-item.component.d.ts +3 -3
  47. package/widgets/checklist-block/checklist-block.component.d.ts +20 -0
  48. package/widgets/checklist-block/checklist-block.options.d.ts +12 -0
  49. package/widgets/checklist-block/components/checklist-block-list/checklist-block-list.component.d.ts +27 -0
  50. package/widgets/checklist-block/components/checklist-block-list/index.d.ts +1 -0
  51. package/widgets/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.d.ts +30 -0
  52. package/widgets/checklist-block/components/checklist-block-list-item-action-card/index.d.ts +1 -0
  53. package/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.d.ts +11 -0
  54. package/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/index.d.ts +1 -0
  55. package/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.d.ts +10 -0
  56. package/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/index.d.ts +1 -0
  57. package/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.d.ts +41 -0
  58. package/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.options.d.ts +5 -0
  59. package/widgets/checklist-block/components/checklist-block-list-item-container/index.d.ts +1 -0
  60. package/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.d.ts +51 -0
  61. package/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.options.d.ts +14 -0
  62. package/widgets/checklist-block/components/checklist-block-list-item-evaluation/index.d.ts +2 -0
  63. package/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.d.ts +33 -0
  64. package/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.options.d.ts +4 -0
  65. package/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/index.d.ts +1 -0
  66. package/widgets/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.d.ts +8 -0
  67. package/widgets/checklist-block/components/checklist-block-title-control/index.d.ts +1 -0
  68. package/widgets/checklist-block/components/index.d.ts +1 -0
  69. package/widgets/checklist-block/index.d.ts +1 -0
  70. package/widgets/checklist-block/services/checklist-block.service.d.ts +19 -0
  71. package/widgets/checklist-block/services/index.d.ts +1 -0
  72. package/widgets/delete-modal/delete-modal.component.d.ts +13 -0
  73. package/widgets/delete-modal/delete-modal.options.d.ts +7 -0
  74. package/widgets/delete-modal/index.d.ts +2 -0
  75. package/widgets/index.d.ts +5 -1
  76. package/widgets/loader/index.d.ts +1 -0
  77. package/widgets/loader/loader.component.d.ts +20 -0
@@ -0,0 +1,282 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, signal } from '@angular/core';
2
+ import { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
3
+ import { CuiDragDropDirective, CuiDragListDirective } from '@cuby-ui/cdk';
4
+ import { TranslocoDirective } from '@jsverse/transloco';
5
+ import { finalize, of, Subject, switchMap, takeUntil } from 'rxjs';
6
+ import { CuiNodeChecklistApiService } from '@cuby-ui/api';
7
+ import { CuiCheckListBlockListItemEvaluationCriteriaComponent } from '../checklist-block-list-item-evaluation-criteria';
8
+ import { CuiButtonModule, CuiCheckboxModule, CuiContextMenuModule, CuiDialogService, CuiHintModule, CuiInputModule, CuiLabelModule, CuiTextareaModule, CuiToggleModule, CuiEmptyStateComponent } from '../../../../components';
9
+ import { CuiDeleteModalComponent } from '../../../../widgets';
10
+ import { CuiTextFieldControllerModule } from '../../../../directives';
11
+ import { cuiCreateDefaultValidators } from '../../../../utils';
12
+ import { CuiCheckListBlockService } from '../../services';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "../../../../components/button/button.component";
15
+ import * as i2 from "../../../../components/checkbox/checkbox.component";
16
+ import * as i3 from "../../../../components/label/label.component";
17
+ import * as i4 from "../../../../components/toggle/toggle.component";
18
+ import * as i5 from "@angular/forms";
19
+ export class CuiCheckListBlockListItemEvaluationComponent {
20
+ constructor() {
21
+ this.nonNullableFormBuilder = inject(NonNullableFormBuilder);
22
+ this.nodeCheckListApiService = inject(CuiNodeChecklistApiService);
23
+ this.checkListBlockService = inject(CuiCheckListBlockService);
24
+ this.cdRef = inject(ChangeDetectorRef);
25
+ this.cuiDialogService = inject(CuiDialogService);
26
+ this.isAvailableObserver = new Subject();
27
+ this.photoFormGroup = this.nonNullableFormBuilder.group({
28
+ isEnable: false,
29
+ isRequired: {
30
+ value: false,
31
+ disabled: true
32
+ }
33
+ });
34
+ this.commentFormGroup = this.nonNullableFormBuilder.group({
35
+ isEnable: false,
36
+ isRequired: {
37
+ value: false,
38
+ disabled: true
39
+ }
40
+ });
41
+ this.evaluationCriteriaFormArray = this.nonNullableFormBuilder.array([]);
42
+ this.loadingIds = signal({});
43
+ this.isAddButtonDisabled = signal(false);
44
+ this.assignee = computed(() => this.checkListItem().content.actionsAssignee[0]);
45
+ this.attachmentPhotoAction = computed(() => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'ATTACHMENT_PHOTO'));
46
+ this.textAreaAction = computed(() => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'TEXT_AREA'));
47
+ this.checkListItem = input.required();
48
+ }
49
+ getPointer(currentIndex) {
50
+ return currentIndex === 0
51
+ ? "BEFORE" /* NodeCheckListItemSwitchContentPointer.BEFORE */
52
+ : "AFTER" /* NodeCheckListItemSwitchContentPointer.AFTER */;
53
+ }
54
+ getTargetIndex(currentIndex) {
55
+ return currentIndex === 0 ? 1 : currentIndex - 1;
56
+ }
57
+ onDrop(event) {
58
+ const { prevIndex, index } = event;
59
+ if (prevIndex === index) {
60
+ return;
61
+ }
62
+ this.moveItemInArray(this.evaluationCriteriaFormArray.controls, prevIndex, index);
63
+ const movingElementId = this.evaluationCriteriaFormArray.at(index).value.id;
64
+ const targetItemId = this.evaluationCriteriaFormArray.at(this.getTargetIndex(index)).value.id;
65
+ const pointer = this.getPointer(index);
66
+ const requestBody = {
67
+ nodeCheckListId: this.checkListItem().id,
68
+ listEvaluationId: this.assignee().id,
69
+ movingElementId,
70
+ targetItemId,
71
+ pointer
72
+ };
73
+ this.nodeCheckListApiService.updateNodeCheckListItemSwitchContent(requestBody).subscribe({
74
+ error: () => {
75
+ this.moveItemInArray(this.evaluationCriteriaFormArray.controls, index, prevIndex);
76
+ this.cdRef.markForCheck();
77
+ }
78
+ });
79
+ }
80
+ onAddEvaluationCriteriaItem() {
81
+ const evaluationItemControl = this.createEvaluationFormGroup();
82
+ this.isAddButtonDisabled.set(true);
83
+ this.evaluationCriteriaFormArray.push(evaluationItemControl);
84
+ }
85
+ onSaveEvaluationCriteria(group) {
86
+ const isNew = group.isNew.value;
87
+ if (isNew) {
88
+ this.addEvaluationCriteria(group);
89
+ return;
90
+ }
91
+ this.updateEvaluationCriteria(group);
92
+ }
93
+ onCancelNewEvaluationCriteria() {
94
+ const lastIndex = this.evaluationCriteriaFormArray.length - 1;
95
+ this.isAddButtonDisabled.set(false);
96
+ this.evaluationCriteriaFormArray.removeAt(lastIndex);
97
+ }
98
+ openModalDeleteEvaluationCriteria(id) {
99
+ const content = ['DELETE_EVALUATION_CHECKLIST_ITEM_CONFIRMATION_TEXT'];
100
+ const criteria = this.findExistingEvaluationCriteria(id);
101
+ if (!criteria?.id) {
102
+ return;
103
+ }
104
+ this.loadingIds.update((ids) => ({ ...ids, [criteria.id]: true }));
105
+ this.cuiDialogService
106
+ .open(CuiDeleteModalComponent, {
107
+ data: {
108
+ title: 'DELETE_EVALUATION_CHECKLIST_ITEM',
109
+ content,
110
+ delete: () => this.nodeCheckListApiService
111
+ .deleteEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria.id)
112
+ .pipe(switchMap((checkListItem) => {
113
+ const index = this.evaluationCriteriaFormArray.controls.findIndex((control) => control.value.id === id);
114
+ this.checkListBlockService.updateCheckListItem(checkListItem);
115
+ this.evaluationCriteriaFormArray.removeAt(index);
116
+ return of(null);
117
+ }))
118
+ }
119
+ })
120
+ .subscribe(() => this.completeEvaluationCriteriaDeletion(criteria));
121
+ }
122
+ completeEvaluationCriteriaDeletion(criteria) {
123
+ this.loadingIds.update((ids) => {
124
+ delete ids[criteria.id];
125
+ return { ...ids };
126
+ });
127
+ }
128
+ onCheckListActionChanged(actionId, actionContent) {
129
+ const requestData = {
130
+ nodeCheckListId: this.checkListItem().id,
131
+ assigneePurposeType: 'ASSIGN',
132
+ actionId,
133
+ contentId: actionContent.id,
134
+ isEnable: actionContent.isEnable,
135
+ isRequired: actionContent.isRequired
136
+ };
137
+ this.nodeCheckListApiService.updateNodeCheckListItemActionContent(requestData).subscribe((checkListItem) => {
138
+ this.checkListBlockService.updateCheckListItem(checkListItem);
139
+ });
140
+ }
141
+ ngOnInit() {
142
+ this.initEvaluationFormValues();
143
+ }
144
+ initEvaluationFormValues() {
145
+ this.evaluationCriteriaFormArray.clear();
146
+ this.photoFormGroup.patchValue({
147
+ isEnable: this.attachmentPhotoAction().isEnable,
148
+ isRequired: this.attachmentPhotoAction().isRequired
149
+ });
150
+ this.commentFormGroup.patchValue({
151
+ isEnable: this.textAreaAction().isEnable,
152
+ isRequired: this.textAreaAction().isRequired
153
+ });
154
+ if (this.attachmentPhotoAction().isEnable) {
155
+ this.photoFormGroup.controls.isRequired.enable();
156
+ }
157
+ if (this.textAreaAction().isEnable) {
158
+ this.commentFormGroup.controls.isRequired.enable();
159
+ }
160
+ this.initActionFormSegmentsSubscriptions();
161
+ this.assignee().acceptanceCriteriaEvaluations.forEach((evaluationCriteria) => {
162
+ const evaluationItemControl = this.createEvaluationFormGroup({
163
+ isNew: false,
164
+ criteria: evaluationCriteria.criteria,
165
+ evaluation: evaluationCriteria.evaluation,
166
+ id: evaluationCriteria.id
167
+ });
168
+ this.evaluationCriteriaFormArray.push(evaluationItemControl);
169
+ });
170
+ }
171
+ initActionFormSegmentsSubscriptions() {
172
+ this.initPhotoGroupSubscription();
173
+ this.initCommentGroupSubscription();
174
+ }
175
+ initPhotoGroupSubscription() {
176
+ this.photoFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {
177
+ if (!value.isEnable) {
178
+ this.photoFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });
179
+ this.photoFormGroup.get('isRequired')?.disable({ emitEvent: false });
180
+ this.onCheckListActionChanged(this.assignee().id, {
181
+ id: this.attachmentPhotoAction().id,
182
+ contentActionType: this.attachmentPhotoAction().contentActionType,
183
+ ...this.photoFormGroup.getRawValue()
184
+ });
185
+ return;
186
+ }
187
+ this.photoFormGroup.get('isRequired')?.enable({ emitEvent: false });
188
+ this.onCheckListActionChanged(this.assignee().id, {
189
+ id: this.attachmentPhotoAction().id,
190
+ contentActionType: this.attachmentPhotoAction().contentActionType,
191
+ ...this.photoFormGroup.getRawValue()
192
+ });
193
+ });
194
+ }
195
+ initCommentGroupSubscription() {
196
+ this.commentFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {
197
+ if (!value.isEnable) {
198
+ this.commentFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });
199
+ this.commentFormGroup.get('isRequired')?.disable({ emitEvent: false });
200
+ this.onCheckListActionChanged(this.assignee().id, {
201
+ id: this.textAreaAction().id,
202
+ contentActionType: this.textAreaAction().contentActionType,
203
+ ...this.commentFormGroup.getRawValue()
204
+ });
205
+ return;
206
+ }
207
+ this.commentFormGroup.get('isRequired')?.enable({ emitEvent: false });
208
+ this.onCheckListActionChanged(this.assignee().id, {
209
+ id: this.textAreaAction().id,
210
+ contentActionType: this.textAreaAction().contentActionType,
211
+ ...this.commentFormGroup.getRawValue()
212
+ });
213
+ });
214
+ }
215
+ updateEvaluationCriteria(group) {
216
+ const evaluation = group.evaluation.value;
217
+ const criteria = group.criteria.value;
218
+ const id = group.id.value;
219
+ this.nodeCheckListApiService
220
+ .updateEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, id, criteria, evaluation)
221
+ .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));
222
+ }
223
+ addEvaluationCriteria(group) {
224
+ const evaluation = group.evaluation.value;
225
+ const criteria = group.criteria.value;
226
+ this.nodeCheckListApiService
227
+ .addEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria, evaluation)
228
+ .pipe(finalize(() => this.isAddButtonDisabled.set(false)))
229
+ .subscribe((checkListItem) => this.updateCreatedEvaluationCriteria(checkListItem));
230
+ }
231
+ updateCreatedEvaluationCriteria(checkListItem) {
232
+ const acceptanceCriteriaEvaluations = checkListItem.content.actionsAssignee[0].acceptanceCriteriaEvaluations;
233
+ const id = acceptanceCriteriaEvaluations.at(-1)?.id;
234
+ const control = this.evaluationCriteriaFormArray.controls.at(-1)?.getRawValue();
235
+ const createdControl = this.createEvaluationFormGroup({ ...control, id, isNew: false });
236
+ this.evaluationCriteriaFormArray.removeAt(-1);
237
+ this.evaluationCriteriaFormArray.push(createdControl);
238
+ this.checkListBlockService.updateCheckListItem(checkListItem);
239
+ }
240
+ createEvaluationFormGroup({ id, criteria = '', evaluation = null, isNew = true } = {}) {
241
+ return this.nonNullableFormBuilder.group({
242
+ id: [id],
243
+ criteria: [criteria, cuiCreateDefaultValidators({ maxLength: 500 })],
244
+ evaluation: [evaluation, [Validators.required]],
245
+ isNew: [isNew]
246
+ });
247
+ }
248
+ findExistingEvaluationCriteria(id) {
249
+ return (this.assignee().acceptanceCriteriaEvaluations.find((evaluationCriteria) => evaluationCriteria.id === id) || null);
250
+ }
251
+ moveItemInArray(array, fromIndex, toIndex) {
252
+ if (fromIndex === toIndex) {
253
+ return;
254
+ }
255
+ const item = array[fromIndex];
256
+ array.splice(fromIndex, 1);
257
+ array.splice(toIndex, 0, item);
258
+ }
259
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiCheckListBlockListItemEvaluationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
260
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CuiCheckListBlockListItemEvaluationComponent, isStandalone: true, selector: "cui-checklist-block-list-item-evaluation", inputs: { checkListItem: { classPropertyName: "checkListItem", publicName: "checkListItem", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div class=\"action\">\r\n <div class=\"action__inputs-container\">\r\n <div\r\n class=\"action__input\"\r\n [formGroup]=\"photoFormGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('PHOTO') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n <div\r\n class=\"action__input\"\r\n [formGroup]=\"commentFormGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('COMMENT') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"action__criteria-title-container\">\r\n <label\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n for=\"evaluationCriteria\"\r\n >\r\n {{ t('EVALUATION_CRITERIA') }}\r\n </label>\r\n <p class=\"action__criteria-subtitle\">{{ t('EACH_EVALUATION_CRITERION_SHOULD_BE') }}</p>\r\n </div>\r\n <ul\r\n cuiDragList\r\n class=\"list\"\r\n >\r\n @for (control of evaluationCriteriaFormArray.controls; track control.controls['id']; let index = $index) {\r\n <li\r\n cuiChecklistBlockListItemEvaluationCriteria\r\n [index]=\"index + 1\"\r\n cuiDragDrop\r\n [disabled]=\"isAddButtonDisabled()\"\r\n (elementDragged)=\"onDrop($event)\"\r\n [criteriaGroup]=\"control\"\r\n [evaluationCriteriaFormArray]=\"evaluationCriteriaFormArray\"\r\n [loadingIds]=\"loadingIds()\"\r\n (saveClicked)=\"onSaveEvaluationCriteria($event)\"\r\n (cancelClicked)=\"onCancelNewEvaluationCriteria()\"\r\n (deleteClicked)=\"openModalDeleteEvaluationCriteria($event)\"\r\n ></li>\r\n } @empty {\r\n <li\r\n cuiEmptyState\r\n [subtitle]=\"t('NO_EVALUATION_CRITERIA_TO_VIEW')\"\r\n ></li>\r\n }\r\n </ul>\r\n <div class=\"action__footer\">\r\n <button\r\n cuiButton\r\n size=\"xxs\"\r\n appearance=\"flat\"\r\n icon=\"cuiIconPlus\"\r\n type=\"button\"\r\n [disabled]=\"isAddButtonDisabled()\"\r\n (click)=\"onAddEvaluationCriteriaItem()\"\r\n >\r\n {{ t('NEW_OPTION') }}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;border-radius:inherit}.action{padding:15px;display:flex;flex-direction:column;border-radius:0 0 8px 8px;gap:16px;background:var(--cui-base-10)}.action__criteria-title-container{display:flex;flex-direction:column;gap:4px}.action__criteria-subtitle{font-weight:400;font-size:14px;line-height:20px;color:var(--cui-base-500)}.action__inputs-container{display:flex;flex-direction:column;gap:8px;background:var(--cui-base-0)}.action__input{padding-right:11px;padding-left:11px;display:flex;height:48px;flex-direction:row;justify-content:space-between;border:1px solid var(--cui-base-200);border-radius:8px}.action__criteria{display:flex;flex-direction:row;align-items:center;gap:12px}.action__criteria-index{padding:8px;font-weight:500;font-size:14px;line-height:20px;display:flex;width:44px;flex-direction:row;justify-content:center;align-items:center;border-radius:8px;background-color:var(--cui-base-0)}.action__criteria-input{flex:1;background:var(--cui-base-0)}.list{display:flex;flex-direction:column;gap:8px}\n"], dependencies: [{ kind: "component", type: CuiCheckListBlockListItemEvaluationCriteriaComponent, selector: "li[cuiChecklistBlockListItemEvaluationCriteria]", inputs: ["loadingIds", "index", "criteriaGroup", "evaluationCriteriaFormArray"], outputs: ["saveClicked", "deleteClicked", "cancelClicked"] }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: i1.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "size"] }, { kind: "ngmodule", type: CuiCheckboxModule }, { kind: "component", type: i2.CuiCheckboxComponent, selector: "input[type=\"checkbox\"][cuiCheckbox]" }, { kind: "ngmodule", type: CuiContextMenuModule }, { kind: "ngmodule", type: CuiHintModule }, { kind: "ngmodule", type: CuiInputModule }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: i3.CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "ngmodule", type: CuiTextareaModule }, { kind: "ngmodule", type: CuiTextFieldControllerModule }, { kind: "ngmodule", type: CuiToggleModule }, { kind: "component", type: i4.CuiToggleComponent, selector: "input[type=\"checkbox\"][cuiToggle]" }, { kind: "component", type: CuiEmptyStateComponent, selector: "cui-empty-state, [cuiEmptyState]", inputs: ["title", "subtitle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: CuiDragDropDirective, selector: "[cuiDragDrop]", inputs: ["disabled"], outputs: ["elementDragged"] }, { kind: "directive", type: CuiDragListDirective, selector: "[cuiDragList]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
261
+ }
262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiCheckListBlockListItemEvaluationComponent, decorators: [{
263
+ type: Component,
264
+ args: [{ selector: 'cui-checklist-block-list-item-evaluation', imports: [
265
+ CuiCheckListBlockListItemEvaluationCriteriaComponent,
266
+ CuiButtonModule,
267
+ CuiCheckboxModule,
268
+ CuiContextMenuModule,
269
+ CuiHintModule,
270
+ CuiInputModule,
271
+ CuiLabelModule,
272
+ CuiTextareaModule,
273
+ CuiTextFieldControllerModule,
274
+ CuiToggleModule,
275
+ CuiEmptyStateComponent,
276
+ ReactiveFormsModule,
277
+ TranslocoDirective,
278
+ CuiDragDropDirective,
279
+ CuiDragListDirective
280
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *transloco=\"let t\">\r\n <div class=\"action\">\r\n <div class=\"action__inputs-container\">\r\n <div\r\n class=\"action__input\"\r\n [formGroup]=\"photoFormGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('PHOTO') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n <div\r\n class=\"action__input\"\r\n [formGroup]=\"commentFormGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('COMMENT') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"action__criteria-title-container\">\r\n <label\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n for=\"evaluationCriteria\"\r\n >\r\n {{ t('EVALUATION_CRITERIA') }}\r\n </label>\r\n <p class=\"action__criteria-subtitle\">{{ t('EACH_EVALUATION_CRITERION_SHOULD_BE') }}</p>\r\n </div>\r\n <ul\r\n cuiDragList\r\n class=\"list\"\r\n >\r\n @for (control of evaluationCriteriaFormArray.controls; track control.controls['id']; let index = $index) {\r\n <li\r\n cuiChecklistBlockListItemEvaluationCriteria\r\n [index]=\"index + 1\"\r\n cuiDragDrop\r\n [disabled]=\"isAddButtonDisabled()\"\r\n (elementDragged)=\"onDrop($event)\"\r\n [criteriaGroup]=\"control\"\r\n [evaluationCriteriaFormArray]=\"evaluationCriteriaFormArray\"\r\n [loadingIds]=\"loadingIds()\"\r\n (saveClicked)=\"onSaveEvaluationCriteria($event)\"\r\n (cancelClicked)=\"onCancelNewEvaluationCriteria()\"\r\n (deleteClicked)=\"openModalDeleteEvaluationCriteria($event)\"\r\n ></li>\r\n } @empty {\r\n <li\r\n cuiEmptyState\r\n [subtitle]=\"t('NO_EVALUATION_CRITERIA_TO_VIEW')\"\r\n ></li>\r\n }\r\n </ul>\r\n <div class=\"action__footer\">\r\n <button\r\n cuiButton\r\n size=\"xxs\"\r\n appearance=\"flat\"\r\n icon=\"cuiIconPlus\"\r\n type=\"button\"\r\n [disabled]=\"isAddButtonDisabled()\"\r\n (click)=\"onAddEvaluationCriteriaItem()\"\r\n >\r\n {{ t('NEW_OPTION') }}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;border-radius:inherit}.action{padding:15px;display:flex;flex-direction:column;border-radius:0 0 8px 8px;gap:16px;background:var(--cui-base-10)}.action__criteria-title-container{display:flex;flex-direction:column;gap:4px}.action__criteria-subtitle{font-weight:400;font-size:14px;line-height:20px;color:var(--cui-base-500)}.action__inputs-container{display:flex;flex-direction:column;gap:8px;background:var(--cui-base-0)}.action__input{padding-right:11px;padding-left:11px;display:flex;height:48px;flex-direction:row;justify-content:space-between;border:1px solid var(--cui-base-200);border-radius:8px}.action__criteria{display:flex;flex-direction:row;align-items:center;gap:12px}.action__criteria-index{padding:8px;font-weight:500;font-size:14px;line-height:20px;display:flex;width:44px;flex-direction:row;justify-content:center;align-items:center;border-radius:8px;background-color:var(--cui-base-0)}.action__criteria-input{flex:1;background:var(--cui-base-0)}.list{display:flex;flex-direction:column;gap:8px}\n"] }]
281
+ }] });
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy9jaGVja2xpc3QtYmxvY2svY29tcG9uZW50cy9jaGVja2xpc3QtYmxvY2stbGlzdC1pdGVtLWV2YWx1YXRpb24vY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy9jaGVja2xpc3QtYmxvY2svY29tcG9uZW50cy9jaGVja2xpc3QtYmxvY2stbGlzdC1pdGVtLWV2YWx1YXRpb24vY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQWdDLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBOE0sTUFBTSxjQUFjLENBQUM7QUFFdFEsT0FBTyxFQUFFLG9EQUFvRCxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDeEgsT0FBTyxFQUNI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Q3JFLElBQUksU0FBUyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTlCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNCLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDOytHQXZUUSw0Q0FBNEM7bUdBQTVDLDRDQUE0QywrUEN4RHpELDBvSEFnR0Esc2xDRDdEUSxvREFBb0Qsd09BQ3BELGVBQWUsME5BQ2YsaUJBQWlCLHVJQUNqQixvQkFBb0IsOEJBQ3BCLGFBQWEsOEJBQ2IsY0FBYyw4QkFDZCxjQUFjLHNJQUNkLGlCQUFpQiw4QkFDakIsNEJBQTRCLDhCQUM1QixlQUFlLG9JQUNmLHNCQUFzQiwyR0FDdEIsbUJBQW1CLHF3QkFDbkIsa0JBQWtCLGdNQUNsQixvQkFBb0IsNkdBQ3BCLG9CQUFvQjs7NEZBT2YsNENBQTRDO2tCQXhCeEQsU0FBUzsrQkFDSSwwQ0FBMEMsV0FDM0M7d0JBQ0wsb0RBQW9EO3dCQUNwRCxlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLDRCQUE0Qjt3QkFDNUIsZUFBZTt3QkFDZixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjtxQkFDdkIsY0FDVyxJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgdHlwZSB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTm9uTnVsbGFibGVGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ3VpTnVsbGFibGUsIEN1aURyYWdEcm9wRGF0YSwgQ3VpRHJhZ0Ryb3BEaXJlY3RpdmUsIEN1aURyYWdMaXN0RGlyZWN0aXZlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcclxuaW1wb3J0IHsgVHJhbnNsb2NvRGlyZWN0aXZlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgZmluYWxpemUsIG9mLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDdWlOb2RlQ2hlY2tsaXN0QXBpU2VydmljZSwgTm9kZUNoZWNrTGlzdEV2YWx1YXRpb25Dcml0ZXJpYSwgTm9kZUNoZWNrTGlzdEV2YWx1YXRpb25JdGVtQ29udGVudCwgTm9kZUNoZWNrTGlzdEl0ZW0sIE5vZGVDaGVja0xpc3RJdGVtQ29udGVudEFjdGlvbiwgTm9kZUNoZWNrTGlzdEl0ZW1Td2l0Y2hDb250ZW50UG9pbnRlciwgTm9kZUNoZWNrTGlzdEl0ZW1Td2l0Y2hDb250ZW50UmVxdWVzdFBhcmFtcyB9IGZyb20gJ0BjdWJ5LXVpL2FwaSc7XHJcblxyXG5pbXBvcnQgeyBDdWlDaGVja0xpc3RCbG9ja0xpc3RJdGVtRXZhbHVhdGlvbkNyaXRlcmlhQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhJztcclxuaW1wb3J0IHtcclxuICAgIEN1aUJ1dHRvbk1vZHVsZSxcclxuICAgIEN1aUNoZWNrYm94TW9kdWxlLFxyXG4gICAgQ3VpQ29udGV4dE1lbnVNb2R1bGUsXHJcbiAgICBDdWlEaWFsb2dTZXJ2aWNlLFxyXG4gICAgQ3VpSGludE1vZHVsZSxcclxuICAgIEN1aUlucHV0TW9kdWxlLFxyXG4gICAgQ3VpTGFiZWxNb2R1bGUsXHJcbiAgICBDdWlUZXh0YXJlYU1vZHVsZSxcclxuICAgIEN1aVRvZ2dsZU1vZHVsZSxcclxuICAgIEN1aUVtcHR5U3RhdGVDb21wb25lbnRcclxufSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzJztcclxuaW1wb3J0IHsgQ3VpRGVsZXRlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi93aWRnZXRzJztcclxuaW1wb3J0IHsgQ3VpVGV4dEZpZWxkQ29udHJvbGxlck1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBjdWlDcmVhdGVEZWZhdWx0VmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzJztcclxuXHJcbmltcG9ydCB0eXBlIHtcclxuICAgIEN1aUV2YWx1YXRpb25Dcml0ZXJpYUVsZW1lbnREYXRhLFxyXG4gICAgQ3VpRXZhbHVhdGlvbkNyaXRlcmlhR3JvdXBcclxufSBmcm9tICcuL2NoZWNrbGlzdC1ibG9jay1saXN0LWl0ZW0tZXZhbHVhdGlvbi5vcHRpb25zJztcclxuaW1wb3J0IHsgQ3VpQ2hlY2tMaXN0QmxvY2tTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2N1aS1jaGVja2xpc3QtYmxvY2stbGlzdC1pdGVtLWV2YWx1YXRpb24nLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIEN1aUNoZWNrTGlzdEJsb2NrTGlzdEl0ZW1FdmFsdWF0aW9uQ3JpdGVyaWFDb21wb25lbnQsXHJcbiAgICAgICAgQ3VpQnV0dG9uTW9kdWxlLFxyXG4gICAgICAgIEN1aUNoZWNrYm94TW9kdWxlLFxyXG4gICAgICAgIEN1aUNvbnRleHRNZW51TW9kdWxlLFxyXG4gICAgICAgIEN1aUhpbnRNb2R1bGUsXHJcbiAgICAgICAgQ3VpSW5wdXRNb2R1bGUsXHJcbiAgICAgICAgQ3VpTGFiZWxNb2R1bGUsXHJcbiAgICAgICAgQ3VpVGV4dGFyZWFNb2R1bGUsXHJcbiAgICAgICAgQ3VpVGV4dEZpZWxkQ29udHJvbGxlck1vZHVsZSxcclxuICAgICAgICBDdWlUb2dnbGVNb2R1bGUsXHJcbiAgICAgICAgQ3VpRW1wdHlTdGF0ZUNvbXBvbmVudCxcclxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgICAgIFRyYW5zbG9jb0RpcmVjdGl2ZSxcclxuICAgICAgICBDdWlEcmFnRHJvcERpcmVjdGl2ZSxcclxuICAgICAgICBDdWlEcmFnTGlzdERpcmVjdGl2ZVxyXG4gICAgXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAnLi9jaGVja2xpc3QtYmxvY2stbGlzdC1pdGVtLWV2YWx1YXRpb24uY29tcG9uZW50LnNjc3MnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aUNoZWNrTGlzdEJsb2NrTGlzdEl0ZW1FdmFsdWF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm9uTnVsbGFibGVGb3JtQnVpbGRlciA9IGluamVjdChOb25OdWxsYWJsZUZvcm1CdWlsZGVyKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm9kZUNoZWNrTGlzdEFwaVNlcnZpY2UgPSBpbmplY3QoQ3VpTm9kZUNoZWNrbGlzdEFwaVNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGVja0xpc3RCbG9ja1NlcnZpY2UgPSBpbmplY3QoQ3VpQ2hlY2tMaXN0QmxvY2tTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjdWlEaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEN1aURpYWxvZ1NlcnZpY2UpO1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNBdmFpbGFibGVPYnNlcnZlciA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBob3RvRm9ybUdyb3VwID0gdGhpcy5ub25OdWxsYWJsZUZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICBpc0VuYWJsZTogZmFsc2UsXHJcbiAgICAgICAgaXNSZXF1aXJlZDoge1xyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tbWVudEZvcm1Hcm91cCA9IHRoaXMubm9uTnVsbGFibGVGb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgaXNFbmFibGU6IGZhbHNlLFxyXG4gICAgICAgIGlzUmVxdWlyZWQ6IHtcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGV2YWx1YXRpb25Dcml0ZXJpYUZvcm1BcnJheSA9IHRoaXMubm9uTnVsbGFibGVGb3JtQnVpbGRlci5hcnJheTxGb3JtR3JvdXA+KFtdKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZ0lkcyA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oe30pO1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzQWRkQnV0dG9uRGlzYWJsZWQgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXNzaWduZWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNoZWNrTGlzdEl0ZW0oKS5jb250ZW50LmFjdGlvbnNBc3NpZ25lZSFbMF0pO1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGF0dGFjaG1lbnRQaG90b0FjdGlvbiA9IGNvbXB1dGVkPE5vZGVDaGVja0xpc3RJdGVtQ29udGVudEFjdGlvbj4oXHJcbiAgICAgICAgKCkgPT4gdGhpcy5hc3NpZ25lZSgpLmFjdGlvbnMuZmluZCgoY29udGVudEFjdGlvbikgPT4gY29udGVudEFjdGlvbi5jb250ZW50QWN0aW9uVHlwZSA9PT0gJ0FUVEFDSE1FTlRfUEhPVE8nKSFcclxuICAgICk7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGV4dEFyZWFBY3Rpb24gPSBjb21wdXRlZDxOb2RlQ2hlY2tMaXN0SXRlbUNvbnRlbnRBY3Rpb24+KFxyXG4gICAgICAgICgpID0+IHRoaXMuYXNzaWduZWUoKS5hY3Rpb25zLmZpbmQoKGNvbnRlbnRBY3Rpb24pID0+IGNvbnRlbnRBY3Rpb24uY29udGVudEFjdGlvblR5cGUgPT09ICdURVhUX0FSRUEnKSFcclxuICAgICk7XHJcblxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNoZWNrTGlzdEl0ZW0gPSBpbnB1dC5yZXF1aXJlZDxOb2RlQ2hlY2tMaXN0SXRlbTxOb2RlQ2hlY2tMaXN0RXZhbHVhdGlvbkl0ZW1Db250ZW50Pj4oKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0UG9pbnRlcihjdXJyZW50SW5kZXg6IG51bWJlcik6IE5vZGVDaGVja0xpc3RJdGVtU3dpdGNoQ29udGVudFBvaW50ZXIge1xyXG4gICAgICAgIHJldHVybiBjdXJyZW50SW5kZXggPT09IDBcclxuICAgICAgICAgICAgPyBOb2RlQ2hlY2tMaXN0SXRlbVN3aXRjaENvbnRlbnRQb2ludGVyLkJFRk9SRVxyXG4gICAgICAgICAgICA6IE5vZGVDaGVja0xpc3RJdGVtU3dpdGNoQ29udGVudFBvaW50ZXIuQUZURVI7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldFRhcmdldEluZGV4KGN1cnJlbnRJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gY3VycmVudEluZGV4ID09PSAwID8gMSA6IGN1cnJlbnRJbmRleCAtIDE7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uRHJvcChldmVudDogQ3VpRHJhZ0Ryb3BEYXRhKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgeyBwcmV2SW5kZXgsIGluZGV4IH0gPSBldmVudDtcclxuXHJcbiAgICAgICAgaWYgKHByZXZJbmRleCA9PT0gaW5kZXgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5tb3ZlSXRlbUluQXJyYXkodGhpcy5ldmFsdWF0aW9uQ3JpdGVyaWFGb3JtQXJyYXkuY29udHJvbHMsIHByZXZJbmRleCwgaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IG1vdmluZ0VsZW1lbnRJZDogc3RyaW5nID0gdGhpcy5ldmFsdWF0aW9uQ3JpdGVyaWFGb3JtQXJyYXkuYXQoaW5kZXgpLnZhbHVlLmlkO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldEl0ZW1JZDogc3RyaW5nID0gdGhpcy5ldmFsdWF0aW9uQ3JpdGVyaWFGb3JtQXJyYXkuYXQodGhpcy5nZXRUYXJnZXRJbmRleChpbmRleCkpLnZhbHVlLmlkO1xyXG4gICAgICAgIGNvbnN0IHBvaW50ZXI6IE5vZGVDaGVja0xpc3RJdGVtU3dpdGNoQ29udGVudFBvaW50ZXIgPSB0aGlzLmdldFBvaW50ZXIoaW5kZXgpO1xyXG5cclxuICAgICAgICBjb25zdCByZXF1ZXN0Qm9keTogTm9kZUNoZWNrTGlzdEl0ZW1Td2l0Y2hDb250ZW50UmVxdWVzdFBhcmFtcyA9IHtcclxuICAgICAgICAgICAgbm9kZUNoZWNrTGlzdElkOiB0aGlzLmNoZWNrTGlzdEl0ZW0oKS5pZCxcclxuICAgICAgICAgICAgbGlzdEV2YWx1YXRpb25JZDogdGhpcy5hc3NpZ25lZSgpLmlkLFxyXG4gICAgICAgICAgICBtb3ZpbmdFbGVtZW50SWQsXHJcbiAgICAgICAgICAgIHRhcmdldEl0ZW1JZCxcclxuICAgICAgICAgICAgcG9pbnRlclxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMubm9kZUNoZWNrTGlzdEFwaVNlcnZpY2UudXBkYXRlTm9kZUNoZWNrTGlzdEl0ZW1Td2l0Y2hDb250ZW50KHJlcXVlc3RCb2R5KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlSXRlbUluQXJyYXkodGhpcy5ldmFsdWF0aW9uQ3JpdGVyaWFGb3JtQXJyYXkuY29udHJvbHMsIGluZGV4LCBwcmV2SW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvbkFkZEV2YWx1YXRpb25Dcml0ZXJpYUl0ZW0oKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZXZhbHVhdGlvbkl0ZW1Db250cm9sID0gdGhpcy5jcmVhdGVFdmFsdWF0aW9uRm9ybUdyb3VwKCk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNBZGRCdXR0b25EaXNhYmxlZC5zZXQodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5ldmFsdWF0aW9uQ3JpdGVyaWFGb3JtQXJyYXkucHVzaChldmFsdWF0aW9uSXRlbUNvbnRyb2wpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvblNhdmVFdmFsdWF0aW9uQ3JpdGVyaWEoZ3JvdXA6IEN1aUV2YWx1YXRpb25Dcml0ZXJpYUdyb3VwKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaXNOZXcgPSBncm91cC5pc05ldy52YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKGlzTmV3KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRXZhbHVhdGlvbkNyaXRlcmlhKGdyb3VwKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlRXZhbHVhdGlvbkNyaXRlcmlhKGdyb3VwKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25DYW5jZWxOZXdFdmFsdWF0aW9uQ3JpdGVyaWEoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbGFzdEluZGV4ID0gdGhpcy5ldmFsdWF0aW9uQ3JpdGVyaWFGb3JtQXJyYXkubGVuZ3RoIC0gMTtcclxuXHJcbiAgICAgICAgdGhpcy5pc0FkZEJ1dHRvbkRpc2FibGVkLnNldChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5ldmFsdWF0aW9uQ3JpdGVyaWFGb3JtQXJyYXkucmVtb3ZlQXQobGFzdEluZGV4KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb3Blbk1vZGFsRGVsZXRlRXZhbHVhdGlvbkNyaXRlcmlhKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gWydERUxFVEVfRVZBTFVBVElPTl9DSEVDS0xJU1RfSVRFTV9DT05GSVJNQVRJT05fVEVYVCddO1xyXG4gICAgICAgIGNvbnN0IGNyaXRlcmlhID0gdGhpcy5maW5kRXhpc3RpbmdFdmFsdWF0aW9uQ3JpdGVyaWEoaWQpO1xyXG5cclxuICAgICAgICBpZiAoIWNyaXRlcmlhPy5pZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxvYWRpbmdJZHMudXBkYXRlKChpZHMpID0+ICh7IC4uLmlkcywgW2NyaXRlcmlhLmlkXTogdHJ1ZSB9KSk7XHJcbiAgICAgICAgdGhpcy5jdWlEaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5vcGVuKEN1aURlbGV0ZU1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdERUxFVEVfRVZBTFVBVElPTl9DSEVDS0xJU1RfSVRFTScsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCxcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGU6ICgpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZUNoZWNrTGlzdEFwaVNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kZWxldGVFdmFsdWF0aW9uQ3JpdGVyaWFJdGVtKHRoaXMuY2hlY2tMaXN0SXRlbSgpLmlkLCB0aGlzLmFzc2lnbmVlKCkuaWQsIGNyaXRlcmlhLmlkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKChjaGVja0xpc3RJdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ldmFsdWF0aW9uQ3JpdGVyaWFGb3JtQXJyYXkuY29udHJvbHMuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRyb2wpID0+IGNvbnRyb2wudmFsdWUuaWQgPT09IGlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrTGlzdEJsb2NrU2VydmljZS51cGRhdGVDaGVja0xpc3RJdGVtKGNoZWNrTGlzdEl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV2YWx1YXRpb25Dcml0ZXJpYUZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNvbXBsZXRlRXZhbHVhdGlvbkNyaXRlcmlhRGVsZXRpb24oY3JpdGVyaWEpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgY29tcGxldGVFdmFsdWF0aW9uQ3JpdGVyaWFEZWxldGlvbihjcml0ZXJpYTogTm9kZUNoZWNrTGlzdEV2YWx1YXRpb25Dcml0ZXJpYSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ0lkcy51cGRhdGUoKGlkcykgPT4ge1xyXG4gICAgICAgICAgICBkZWxldGUgaWRzW2NyaXRlcmlhLmlkXTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmlkcyB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25DaGVja0xpc3RBY3Rpb25DaGFuZ2VkKGFjdGlvbklkOiBzdHJpbmcsIGFjdGlvbkNvbnRlbnQ6IE5vZGVDaGVja0xpc3RJdGVtQ29udGVudEFjdGlvbik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xyXG4gICAgICAgICAgICBub2RlQ2hlY2tMaXN0SWQ6IHRoaXMuY2hlY2tMaXN0SXRlbSgpLmlkLFxyXG4gICAgICAgICAgICBhc3NpZ25lZVB1cnBvc2VUeXBlOiAnQVNTSUdOJyxcclxuICAgICAgICAgICAgYWN0aW9uSWQsXHJcbiAgICAgICAgICAgIGNvbnRlbnRJZDogYWN0aW9uQ29udGVudC5pZCxcclxuICAgICAgICAgICAgaXNFbmFibGU6IGFjdGlvbkNvbnRlbnQuaXNFbmFibGUsXHJcbiAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGFjdGlvbkNvbnRlbnQuaXNSZXF1aXJlZFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMubm9kZUNoZWNrTGlzdEFwaVNlcnZpY2UudXBkYXRlTm9kZUNoZWNrTGlzdEl0ZW1BY3Rpb25Db250ZW50KHJlcXVlc3REYXRhKS5zdWJzY3JpYmUoKGNoZWNrTGlzdEl0ZW0pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0xpc3RCbG9ja1NlcnZpY2UudXBkYXRlQ2hlY2tMaXN0SXRlbShjaGVja0xpc3RJdGVtKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pbml0RXZhbHVhdGlvbkZvcm1WYWx1ZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRFdmFsdWF0aW9uRm9ybVZhbHVlcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmV2YWx1YXRpb25Dcml0ZXJpYUZvcm1BcnJheS5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMucGhvdG9Gb3JtR3JvdXAucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgIGlzRW5hYmxlOiB0aGlzLmF0dGFjaG1lbnRQaG90b0FjdGlvbigpLmlzRW5hYmxlLFxyXG4gICAgICAgICAgICBpc1JlcXVpcmVkOiB0aGlzLmF0dGFjaG1lbnRQaG90b0FjdGlvbigpLmlzUmVxdWlyZWRcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNvbW1lbnRGb3JtR3JvdXAucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgIGlzRW5hYmxlOiB0aGlzLnRleHRBcmVhQWN0aW9uKCkuaXNFbmFibGUsXHJcbiAgICAgICAgICAgIGlzUmVxdWlyZWQ6IHRoaXMudGV4dEFyZWFBY3Rpb24oKS5pc1JlcXVpcmVkXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmF0dGFjaG1lbnRQaG90b0FjdGlvbigpLmlzRW5hYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGhvdG9Gb3JtR3JvdXAuY29udHJvbHMuaXNSZXF1aXJlZC5lbmFibGUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnRleHRBcmVhQWN0aW9uKCkuaXNFbmFibGUpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tZW50Rm9ybUdyb3VwLmNvbnRyb2xzLmlzUmVxdWlyZWQuZW5hYmxlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmluaXRBY3Rpb25Gb3JtU2VnbWVudHNTdWJzY3JpcHRpb25zKCk7XHJcblxyXG4gICAgICAgIHRoaXMuYXNzaWduZWUoKS5hY2NlcHRhbmNlQ3JpdGVyaWFFdmFsdWF0aW9ucy5mb3JFYWNoKChldmFsdWF0aW9uQ3JpdGVyaWE6IE5vZGVDaGVja0xpc3RFdmFsdWF0aW9uQ3JpdGVyaWEpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZXZhbHVhdGlvbkl0ZW1Db250cm9sID0gdGhpcy5jcmVhdGVFdmFsdWF0aW9uRm9ybUdyb3VwKHtcclxuICAgICAgICAgICAgICAgIGlzTmV3OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGNyaXRlcmlhOiBldmFsdWF0aW9uQ3JpdGVyaWEuY3JpdGVyaWEsXHJcbiAgICAgICAgICAgICAgICBldmFsdWF0aW9uOiBldmFsdWF0aW9uQ3JpdGVyaWEuZXZhbHVhdGlvbixcclxuICAgICAgICAgICAgICAgIGlkOiBldmFsdWF0aW9uQ3JpdGVyaWEuaWRcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmV2YWx1YXRpb25Dcml0ZXJpYUZvcm1BcnJheS5wdXNoKGV2YWx1YXRpb25JdGVtQ29udHJvbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0QWN0aW9uRm9ybVNlZ21lbnRzU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmluaXRQaG90b0dyb3VwU3Vic2NyaXB0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5pbml0Q29tbWVudEdyb3VwU3Vic2NyaXB0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0UGhvdG9Hcm91cFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBob3RvRm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmlzQXZhaWxhYmxlT2JzZXJ2ZXIpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdmFsdWUuaXNFbmFibGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGhvdG9Gb3JtR3JvdXAuZ2V0KCdpc1JlcXVpcmVkJyk/LnNldFZhbHVlKGZhbHNlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBob3RvRm9ybUdyb3VwLmdldCgnaXNSZXF1aXJlZCcpPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25DaGVja0xpc3RBY3Rpb25DaGFuZ2VkKHRoaXMuYXNzaWduZWUoKS5pZCwge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmF0dGFjaG1lbnRQaG90b0FjdGlvbigpLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRBY3Rpb25UeXBlOiB0aGlzLmF0dGFjaG1lbnRQaG90b0FjdGlvbigpLmNvbnRlbnRBY3Rpb25UeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMucGhvdG9Gb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBob3RvRm9ybUdyb3VwLmdldCgnaXNSZXF1aXJlZCcpPy5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLm9uQ2hlY2tMaXN0QWN0aW9uQ2hhbmdlZCh0aGlzLmFzc2lnbmVlKCkuaWQsIHtcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmF0dGFjaG1lbnRQaG90b0FjdGlvbigpLmlkLFxyXG4gICAgICAgICAgICAgICAgY29udGVudEFjdGlvblR5cGU6IHRoaXMuYXR0YWNobWVudFBob3RvQWN0aW9uKCkuY29udGVudEFjdGlvblR5cGUsXHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLnBob3RvRm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0Q29tbWVudEdyb3VwU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY29tbWVudEZvcm1Hcm91cC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5pc0F2YWlsYWJsZU9ic2VydmVyKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXZhbHVlLmlzRW5hYmxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1lbnRGb3JtR3JvdXAuZ2V0KCdpc1JlcXVpcmVkJyk/LnNldFZhbHVlKGZhbHNlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1lbnRGb3JtR3JvdXAuZ2V0KCdpc1JlcXVpcmVkJyk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoZWNrTGlzdEFjdGlvbkNoYW5nZWQodGhpcy5hc3NpZ25lZSgpLmlkLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMudGV4dEFyZWFBY3Rpb24oKS5pZCxcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50QWN0aW9uVHlwZTogdGhpcy50ZXh0QXJlYUFjdGlvbigpLmNvbnRlbnRBY3Rpb25UeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbWVudEZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuY29tbWVudEZvcm1Hcm91cC5nZXQoJ2lzUmVxdWlyZWQnKT8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5vbkNoZWNrTGlzdEFjdGlvbkNoYW5nZWQodGhpcy5hc3NpZ25lZSgpLmlkLCB7XHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy50ZXh0QXJlYUFjdGlvbigpLmlkLFxyXG4gICAgICAgICAgICAgICAgY29udGVudEFjdGlvblR5cGU6IHRoaXMudGV4dEFyZWFBY3Rpb24oKS5jb250ZW50QWN0aW9uVHlwZSxcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbWVudEZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlRXZhbHVhdGlvbkNyaXRlcmlhKGdyb3VwOiBDdWlFdmFsdWF0aW9uQ3JpdGVyaWFHcm91cCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGV2YWx1YXRpb24gPSBncm91cC5ldmFsdWF0aW9uLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGNyaXRlcmlhID0gZ3JvdXAuY3JpdGVyaWEudmFsdWU7XHJcbiAgICAgICAgY29uc3QgaWQgPSBncm91cC5pZC52YWx1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5ub2RlQ2hlY2tMaXN0QXBpU2VydmljZVxyXG4gICAgICAgICAgICAudXBkYXRlRXZhbHVhdGlvbkNyaXRlcmlhSXRlbSh0aGlzLmNoZWNrTGlzdEl0ZW0oKS5pZCwgdGhpcy5hc3NpZ25lZSgpLmlkLCBpZCwgY3JpdGVyaWEsIGV2YWx1YXRpb24pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNoZWNrTGlzdEl0ZW0pID0+IHRoaXMuY2hlY2tMaXN0QmxvY2tTZXJ2aWNlLnVwZGF0ZUNoZWNrTGlzdEl0ZW0oY2hlY2tMaXN0SXRlbSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkRXZhbHVhdGlvbkNyaXRlcmlhKGdyb3VwOiBDdWlFdmFsdWF0aW9uQ3JpdGVyaWFHcm91cCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGV2YWx1YXRpb24gPSBncm91cC5ldmFsdWF0aW9uLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGNyaXRlcmlhID0gZ3JvdXAuY3JpdGVyaWEudmFsdWU7XHJcblxyXG4gICAgICAgIHRoaXMubm9kZUNoZWNrTGlzdEFwaVNlcnZpY2VcclxuICAgICAgICAgICAgLmFkZEV2YWx1YXRpb25Dcml0ZXJpYUl0ZW0odGhpcy5jaGVja0xpc3RJdGVtKCkuaWQsIHRoaXMuYXNzaWduZWUoKS5pZCwgY3JpdGVyaWEsIGV2YWx1YXRpb24pXHJcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuaXNBZGRCdXR0b25EaXNhYmxlZC5zZXQoZmFsc2UpKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY2hlY2tMaXN0SXRlbSkgPT4gdGhpcy51cGRhdGVDcmVhdGVkRXZhbHVhdGlvbkNyaXRlcmlhKGNoZWNrTGlzdEl0ZW0pKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZUNyZWF0ZWRFdmFsdWF0aW9uQ3JpdGVyaWEoXHJcbiAgICAgICAgY2hlY2tMaXN0SXRlbTogTm9kZUNoZWNrTGlzdEl0ZW08Tm9kZUNoZWNrTGlzdEV2YWx1YXRpb25JdGVtQ29udGVudD5cclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGFjY2VwdGFuY2VDcml0ZXJpYUV2YWx1YXRpb25zID0gY2hlY2tMaXN0SXRlbS5jb250ZW50LmFjdGlvbnNBc3NpZ25lZSFbMF0uYWNjZXB0YW5jZUNyaXRlcmlhRXZhbHVhdGlvbnM7XHJcbiAgICAgICAgY29uc3QgaWQgPSBhY2NlcHRhbmNlQ3JpdGVyaWFFdmFsdWF0aW9ucy5hdCgtMSk/LmlkO1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmV2YWx1YXRpb25Dcml0ZXJpYUZvcm1BcnJheS5jb250cm9scy5hdCgtMSk/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgICAgY29uc3QgY3JlYXRlZENvbnRyb2wgPSB0aGlzLmNyZWF0ZUV2YWx1YXRpb25Gb3JtR3JvdXAoeyAuLi5jb250cm9sLCBpZCwgaXNOZXc6IGZhbHNlIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmV2YWx1YXRpb25Dcml0ZXJpYUZvcm1BcnJheS5yZW1vdmVBdCgtMSk7XHJcbiAgICAgICAgdGhpcy5ldmFsdWF0aW9uQ3JpdGVyaWFGb3JtQXJyYXkucHVzaChjcmVhdGVkQ29udHJvbCk7XHJcbiAgICAgICAgdGhpcy5jaGVja0xpc3RCbG9ja1NlcnZpY2UudXBkYXRlQ2hlY2tMaXN0SXRlbShjaGVja0xpc3RJdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZUV2YWx1YXRpb25Gb3JtR3JvdXAoe1xyXG4gICAgICAgIGlkLFxyXG4gICAgICAgIGNyaXRlcmlhID0gJycsXHJcbiAgICAgICAgZXZhbHVhdGlvbiA9IG51bGwsXHJcbiAgICAgICAgaXNOZXcgPSB0cnVlXHJcbiAgICB9OiBDdWlFdmFsdWF0aW9uQ3JpdGVyaWFFbGVtZW50RGF0YSA9IHt9KTogRm9ybUdyb3VwIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ub25OdWxsYWJsZUZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgaWQ6IFtpZF0sXHJcbiAgICAgICAgICAgIGNyaXRlcmlhOiBbY3JpdGVyaWEsIGN1aUNyZWF0ZURlZmF1bHRWYWxpZGF0b3JzKHsgbWF4TGVuZ3RoOiA1MDAgfSldLFxyXG4gICAgICAgICAgICBldmFsdWF0aW9uOiBbZXZhbHVhdGlvbiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgaXNOZXc6IFtpc05ld11cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZpbmRFeGlzdGluZ0V2YWx1YXRpb25Dcml0ZXJpYShpZDogc3RyaW5nKTogQ3VpTnVsbGFibGU8Tm9kZUNoZWNrTGlzdEV2YWx1YXRpb25Dcml0ZXJpYT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHRoaXMuYXNzaWduZWUoKS5hY2NlcHRhbmNlQ3JpdGVyaWFFdmFsdWF0aW9ucy5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGV2YWx1YXRpb25Dcml0ZXJpYTogTm9kZUNoZWNrTGlzdEV2YWx1YXRpb25Dcml0ZXJpYSkgPT4gZXZhbHVhdGlvbkNyaXRlcmlhLmlkID09PSBpZFxyXG4gICAgICAgICAgICApIHx8IG51bGxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbW92ZUl0ZW1JbkFycmF5PFQ+KGFycmF5OiBUW10sIGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZnJvbUluZGV4ID09PSB0b0luZGV4KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBhcnJheVtmcm9tSW5kZXhdO1xyXG5cclxuICAgICAgICBhcnJheS5zcGxpY2UoZnJvbUluZGV4LCAxKTtcclxuICAgICAgICBhcnJheS5zcGxpY2UodG9JbmRleCwgMCwgaXRlbSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uX19pbnB1dHMtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uX19pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cInBob3RvRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGN1aUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdWlDaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc0VuYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdQSE9UTycpIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGN1aUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdWlUb2dnbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaXNSZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdSRVFVSVJFRCcpIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25fX2lucHV0XCJcclxuICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiY29tbWVudEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjdWlMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VpQ2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaXNFbmFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgdCgnQ09NTUVOVCcpIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGN1aUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdWlUb2dnbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaXNSZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdSRVFVSVJFRCcpIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uX19jcml0ZXJpYS10aXRsZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICBjdWlMYWJlbFxyXG4gICAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBmb3I9XCJldmFsdWF0aW9uQ3JpdGVyaWFcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyB0KCdFVkFMVUFUSU9OX0NSSVRFUklBJykgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJhY3Rpb25fX2NyaXRlcmlhLXN1YnRpdGxlXCI+e3sgdCgnRUFDSF9FVkFMVUFUSU9OX0NSSVRFUklPTl9TSE9VTERfQkUnKSB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8dWxcclxuICAgICAgICAgICAgY3VpRHJhZ0xpc3RcclxuICAgICAgICAgICAgY2xhc3M9XCJsaXN0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIEBmb3IgKGNvbnRyb2wgb2YgZXZhbHVhdGlvbkNyaXRlcmlhRm9ybUFycmF5LmNvbnRyb2xzOyB0cmFjayBjb250cm9sLmNvbnRyb2xzWydpZCddOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgIGN1aUNoZWNrbGlzdEJsb2NrTGlzdEl0ZW1FdmFsdWF0aW9uQ3JpdGVyaWFcclxuICAgICAgICAgICAgICAgICAgICBbaW5kZXhdPVwiaW5kZXggKyAxXCJcclxuICAgICAgICAgICAgICAgICAgICBjdWlEcmFnRHJvcFxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0FkZEJ1dHRvbkRpc2FibGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChlbGVtZW50RHJhZ2dlZCk9XCJvbkRyb3AoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NyaXRlcmlhR3JvdXBdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2V2YWx1YXRpb25Dcml0ZXJpYUZvcm1BcnJheV09XCJldmFsdWF0aW9uQ3JpdGVyaWFGb3JtQXJyYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsb2FkaW5nSWRzXT1cImxvYWRpbmdJZHMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHNhdmVDbGlja2VkKT1cIm9uU2F2ZUV2YWx1YXRpb25Dcml0ZXJpYSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2FuY2VsQ2xpY2tlZCk9XCJvbkNhbmNlbE5ld0V2YWx1YXRpb25Dcml0ZXJpYSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAoZGVsZXRlQ2xpY2tlZCk9XCJvcGVuTW9kYWxEZWxldGVFdmFsdWF0aW9uQ3JpdGVyaWEoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9saT5cclxuICAgICAgICAgICAgfSBAZW1wdHkge1xyXG4gICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgY3VpRW1wdHlTdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIFtzdWJ0aXRsZV09XCJ0KCdOT19FVkFMVUFUSU9OX0NSSVRFUklBX1RPX1ZJRVcnKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9saT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbl9fZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGN1aUJ1dHRvblxyXG4gICAgICAgICAgICAgICAgc2l6ZT1cInh4c1wiXHJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiZmxhdFwiXHJcbiAgICAgICAgICAgICAgICBpY29uPVwiY3VpSWNvblBsdXNcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNBZGRCdXR0b25EaXNhYmxlZCgpXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkFkZEV2YWx1YXRpb25Dcml0ZXJpYUl0ZW0oKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IHQoJ05FV19PUFRJT04nKSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLm9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvY2hlY2tsaXN0LWJsb2NrL2NvbXBvbmVudHMvY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uL2NoZWNrbGlzdC1ibG9jay1saXN0LWl0ZW0tZXZhbHVhdGlvbi5vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgdHlwZSB7IEN1aU51bGxhYmxlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3VpRXZhbHVhdGlvbkNyaXRlcmlhR3JvdXAge1xyXG4gICAgaWQ6IEZvcm1Db250cm9sPHN0cmluZz47XHJcbiAgICBjcml0ZXJpYTogRm9ybUNvbnRyb2w8c3RyaW5nPjtcclxuICAgIGV2YWx1YXRpb246IEZvcm1Db250cm9sPG51bWJlcj47XHJcbiAgICBpc05ldzogRm9ybUNvbnRyb2w8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3VpRXZhbHVhdGlvbkNyaXRlcmlhRWxlbWVudERhdGEge1xyXG4gICAgaWQ/OiBzdHJpbmc7XHJcbiAgICBjcml0ZXJpYT86IHN0cmluZztcclxuICAgIGV2YWx1YXRpb24/OiBDdWlOdWxsYWJsZTxudW1iZXI+O1xyXG4gICAgaXNOZXc/OiBib29sZWFuO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export { CuiCheckListBlockListItemEvaluationComponent } from './checklist-block-list-item-evaluation.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvY2hlY2tsaXN0LWJsb2NrL2NvbXBvbmVudHMvY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLGtEQUFrRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ3VpQ2hlY2tMaXN0QmxvY2tMaXN0SXRlbUV2YWx1YXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NoZWNrbGlzdC1ibG9jay1saXN0LWl0ZW0tZXZhbHVhdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgdHlwZSB7IEN1aUV2YWx1YXRpb25Dcml0ZXJpYUdyb3VwIH0gZnJvbSAnLi9jaGVja2xpc3QtYmxvY2stbGlzdC1pdGVtLWV2YWx1YXRpb24ub3B0aW9ucyc7XHJcbiJdfQ==
@@ -0,0 +1,117 @@
1
+ import { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';
2
+ import { ReactiveFormsModule } from '@angular/forms';
3
+ import { CuiLetDirective } from '@cuby-ui/cdk';
4
+ import { CuiAlertService, CuiButtonModule, CuiIconButtonModule, CuiInputModule, CuiInputNumberModule, CuiSvgModule, CuiTextareaModule } from '../../../../components';
5
+ import { TranslocoDirective, TranslocoService } from '@jsverse/transloco';
6
+ import { CuiDragPointerDirective } from '@cuby-ui/cdk';
7
+ import { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../../../components/button/button.component";
10
+ import * as i2 from "../../../../components/icon-button/icon-button.component";
11
+ import * as i3 from "../../../../directives/text-field-controller/text-field-placeholder.directive";
12
+ import * as i4 from "../../../../directives/text-field-controller/text-field-is-error.directive";
13
+ import * as i5 from "../../../../components/svg/svg.component";
14
+ import * as i6 from "../../../../components/textarea/textarea.component";
15
+ import * as i7 from "@angular/forms";
16
+ import * as i8 from "../../../../components/input-number/input-number.component";
17
+ export class CuiCheckListBlockListItemEvaluationCriteriaComponent {
18
+ get isEvaluationInvalid() {
19
+ return this.criteriaGroup().controls.evaluation.invalid && this.isEditMode();
20
+ }
21
+ get isCriteriaInvalid() {
22
+ return this.criteriaGroup().controls.criteria.invalid && this.isEditMode();
23
+ }
24
+ constructor() {
25
+ this.cuiAlertService = inject(CuiAlertService);
26
+ this.translocoService = inject(TranslocoService);
27
+ this.EVALUATION_ALREADY_EXIST = `EVALUATION_ALREADY_EXIST`;
28
+ this.previousData = null;
29
+ this.isEditMode = signal(false);
30
+ this.isNew = computed(() => this.criteriaGroup().controls.isNew.value);
31
+ this.gap = computed(() => (this.isEditMode() ? 8 : 0));
32
+ this.isLoading = computed(() => this.loadingIds()[this.criteriaGroup().controls.id.value]);
33
+ this.isDragEnabled = computed(() => !this.isEditMode() && !this.isLoading());
34
+ this.loadingIds = input.required();
35
+ this.index = input.required();
36
+ this.criteriaGroup = input.required();
37
+ this.evaluationCriteriaFormArray = input.required();
38
+ this.saveClicked = output();
39
+ this.deleteClicked = output();
40
+ this.cancelClicked = output();
41
+ this.initNewEvaluationCriteriaEffect();
42
+ this.initEditModeEffect();
43
+ }
44
+ onSave() {
45
+ if (this.criteriaGroup().invalid) {
46
+ return;
47
+ }
48
+ const evaluation = `${this.criteriaGroup().controls.evaluation.value}`;
49
+ if (this.checkIsEvaluationCriteriaExist(evaluation)) {
50
+ this.cuiAlertService
51
+ .open(this.translocoService.translate(this.EVALUATION_ALREADY_EXIST, { evaluation }), {
52
+ status: 'error'
53
+ })
54
+ .subscribe();
55
+ return;
56
+ }
57
+ this.isEditMode.update((prev) => !prev);
58
+ this.saveClicked.emit(this.criteriaGroup().controls);
59
+ }
60
+ onDelete() {
61
+ const id = this.criteriaGroup().controls.id.value;
62
+ this.deleteClicked.emit(id);
63
+ }
64
+ onCancel() {
65
+ if (this.isNew()) {
66
+ this.cancelClicked.emit();
67
+ }
68
+ this.isEditMode.update((prev) => !prev);
69
+ if (!this.previousData) {
70
+ return;
71
+ }
72
+ this.criteriaGroup().setValue({
73
+ ...this.criteriaGroup().getRawValue(),
74
+ ...this.previousData
75
+ });
76
+ }
77
+ onToggleEditMode() {
78
+ const { criteria, evaluation } = this.criteriaGroup().getRawValue();
79
+ this.previousData = { criteria, evaluation };
80
+ this.isEditMode.update((prev) => !prev);
81
+ }
82
+ // TODO: Компонент должен был быть построен исключительно на реактивных формах
83
+ initEditModeEffect() {
84
+ effect(() => this.criteriaGroup()[this.isEditMode() ? 'enable' : 'disable']());
85
+ }
86
+ initNewEvaluationCriteriaEffect() {
87
+ effect(() => this.isEditMode.set(this.isNew()), { allowSignalWrites: true });
88
+ }
89
+ checkIsEvaluationCriteriaExist(evaluation) {
90
+ const controls = this.evaluationCriteriaFormArray().controls;
91
+ return controls.some((control) => {
92
+ if (control.controls.id.value === this.criteriaGroup().controls.id.value) {
93
+ return false;
94
+ }
95
+ return `${control.get('evaluation')?.value}` === evaluation;
96
+ });
97
+ }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiCheckListBlockListItemEvaluationCriteriaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
99
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CuiCheckListBlockListItemEvaluationCriteriaComponent, isStandalone: true, selector: "li[cuiChecklistBlockListItemEvaluationCriteria]", inputs: { loadingIds: { classPropertyName: "loadingIds", publicName: "loadingIds", isSignal: true, isRequired: true, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, criteriaGroup: { classPropertyName: "criteriaGroup", publicName: "criteriaGroup", isSignal: true, isRequired: true, transformFunction: null }, evaluationCriteriaFormArray: { classPropertyName: "evaluationCriteriaFormArray", publicName: "evaluationCriteriaFormArray", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { saveClicked: "saveClicked", deleteClicked: "deleteClicked", cancelClicked: "cancelClicked" }, ngImport: i0, template: "<div *transloco=\"let t\">\r\n <form\r\n *cuiLet=\"criteriaGroup() as form\"\r\n [formGroup]=\"form\"\r\n [class.form_edit]=\"isEditMode()\"\r\n clas=\"form\"\r\n >\r\n <div class=\"content\">\r\n <span class=\"index\">{{ index() }}.</span>\r\n @if (!isEditMode()) {\r\n <cui-svg\r\n cuiDragPointer\r\n icon=\"cuiIconDragHandleDots\"\r\n color=\"var(--cui-base-500)\"\r\n class=\"icon\"\r\n />\r\n }\r\n <div\r\n style.gap=\"{{gap()}}px\"\r\n class=\"wrapper\"\r\n >\r\n <cui-input-number\r\n formControlName=\"evaluation\"\r\n cuiTextFieldPlaceholder=\"0\"\r\n [cuiTextFieldIsError]=\"isEvaluationInvalid\"\r\n [min]=\"1\"\r\n [max]=\"99\"\r\n class=\"input-number\"\r\n />\r\n <textarea\r\n cuiTextarea\r\n formControlName=\"criteria\"\r\n [rows]=\"1\"\r\n [cuiTextFieldIsError]=\"isCriteriaInvalid\"\r\n placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\r\n class=\"textarea\"\r\n ></textarea>\r\n </div>\r\n @if (isEditMode()) {\r\n <button\r\n type=\"submit\"\r\n cuiIconButton\r\n icon=\"cuiIconCheck\"\r\n color=\"var(--cui-success)\"\r\n [disabled]=\"form.invalid\"\r\n class=\"button\"\r\n (click)=\"onSave()\"\r\n ></button>\r\n <button\r\n type=\"button\"\r\n cuiIconButton\r\n icon=\"cuiIconXCircle\"\r\n color=\"var(--cui-danger)\"\r\n class=\"button\"\r\n (click)=\"onCancel()\"\r\n ></button>\r\n } @else {\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconEdit\"\r\n [disabled]=\"isLoading()\"\r\n (click)=\"onToggleEditMode()\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconTrash\"\r\n [isLoaderShown]=\"isLoading()\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n }\r\n </div>\r\n <cui-general-control-error-hint\r\n [control]=\"form.controls.criteria\"\r\n class=\"error-hint\"\r\n />\r\n </form>\r\n</div>\r\n", styles: [".form{display:flex;flex-direction:column;gap:8px}.form_edit{padding:12px;border-radius:8px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}.content{display:flex;gap:8px;align-items:center}.index{font-weight:500;font-size:14px;line-height:20px;width:22px}.icon{cursor:grab}.icon:active{cursor:grabbing}.wrapper{display:flex;flex-grow:1}.input-number{padding-right:9px;padding-left:9px;flex-shrink:0;width:44px;background:inherit}.input-number._disabled{cursor:initial;opacity:1;border-right-width:0;border-radius:8px 0 0 8px}.input-number ::ng-deep .c-input{text-align:center}.input-number ::ng-deep .c-input:disabled{cursor:text}.textarea{background:var(--cui-base-0)}.textarea:disabled{cursor:initial;opacity:1;background:var(--cui-base-0);border-left-width:0;border-radius:0 8px 8px 0}.button:disabled{cursor:not-allowed;opacity:.5}.error-hint{margin-left:82px}.cc-drag-drop-placeholder{height:44px;border:1px dashed var(--cui-base-200);border-radius:8px;background:var(--cui-base-0)}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: i1.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "size"] }, { kind: "ngmodule", type: CuiIconButtonModule }, { kind: "component", type: i2.CuiIconButtonComponent, selector: "button[cuiIconButton][icon], a[cuiIconButton][icon]", inputs: ["icon", "color", "hoverColor"] }, { kind: "ngmodule", type: CuiInputModule }, { kind: "directive", type: i3.CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: i4.CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "directive", type: CuiLetDirective, selector: "[cuiLet]", inputs: ["cuiLet"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: i5.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "ngmodule", type: CuiTextareaModule }, { kind: "component", type: i6.CuiTextareaComponent, selector: "textarea[cuiTextarea]", inputs: ["rows", "noBordersAndPaddings"] }, { 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: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "component", type: i8.CuiInputNumberComponent, selector: "cui-input-number", inputs: ["precision", "min", "max"] }, { kind: "directive", type: CuiDragPointerDirective, selector: "[cuiDragPointer]" }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
100
+ }
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiCheckListBlockListItemEvaluationCriteriaComponent, decorators: [{
102
+ type: Component,
103
+ args: [{ selector: 'li[cuiChecklistBlockListItemEvaluationCriteria]', imports: [
104
+ CuiButtonModule,
105
+ CuiIconButtonModule,
106
+ CuiInputModule,
107
+ CuiLetDirective,
108
+ CuiSvgModule,
109
+ CuiTextareaModule,
110
+ ReactiveFormsModule,
111
+ TranslocoDirective,
112
+ CuiInputNumberModule,
113
+ CuiDragPointerDirective,
114
+ CuiGeneralControlErrorHintComponent
115
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *transloco=\"let t\">\r\n <form\r\n *cuiLet=\"criteriaGroup() as form\"\r\n [formGroup]=\"form\"\r\n [class.form_edit]=\"isEditMode()\"\r\n clas=\"form\"\r\n >\r\n <div class=\"content\">\r\n <span class=\"index\">{{ index() }}.</span>\r\n @if (!isEditMode()) {\r\n <cui-svg\r\n cuiDragPointer\r\n icon=\"cuiIconDragHandleDots\"\r\n color=\"var(--cui-base-500)\"\r\n class=\"icon\"\r\n />\r\n }\r\n <div\r\n style.gap=\"{{gap()}}px\"\r\n class=\"wrapper\"\r\n >\r\n <cui-input-number\r\n formControlName=\"evaluation\"\r\n cuiTextFieldPlaceholder=\"0\"\r\n [cuiTextFieldIsError]=\"isEvaluationInvalid\"\r\n [min]=\"1\"\r\n [max]=\"99\"\r\n class=\"input-number\"\r\n />\r\n <textarea\r\n cuiTextarea\r\n formControlName=\"criteria\"\r\n [rows]=\"1\"\r\n [cuiTextFieldIsError]=\"isCriteriaInvalid\"\r\n placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\r\n class=\"textarea\"\r\n ></textarea>\r\n </div>\r\n @if (isEditMode()) {\r\n <button\r\n type=\"submit\"\r\n cuiIconButton\r\n icon=\"cuiIconCheck\"\r\n color=\"var(--cui-success)\"\r\n [disabled]=\"form.invalid\"\r\n class=\"button\"\r\n (click)=\"onSave()\"\r\n ></button>\r\n <button\r\n type=\"button\"\r\n cuiIconButton\r\n icon=\"cuiIconXCircle\"\r\n color=\"var(--cui-danger)\"\r\n class=\"button\"\r\n (click)=\"onCancel()\"\r\n ></button>\r\n } @else {\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconEdit\"\r\n [disabled]=\"isLoading()\"\r\n (click)=\"onToggleEditMode()\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconTrash\"\r\n [isLoaderShown]=\"isLoading()\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n }\r\n </div>\r\n <cui-general-control-error-hint\r\n [control]=\"form.controls.criteria\"\r\n class=\"error-hint\"\r\n />\r\n </form>\r\n</div>\r\n", styles: [".form{display:flex;flex-direction:column;gap:8px}.form_edit{padding:12px;border-radius:8px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}.content{display:flex;gap:8px;align-items:center}.index{font-weight:500;font-size:14px;line-height:20px;width:22px}.icon{cursor:grab}.icon:active{cursor:grabbing}.wrapper{display:flex;flex-grow:1}.input-number{padding-right:9px;padding-left:9px;flex-shrink:0;width:44px;background:inherit}.input-number._disabled{cursor:initial;opacity:1;border-right-width:0;border-radius:8px 0 0 8px}.input-number ::ng-deep .c-input{text-align:center}.input-number ::ng-deep .c-input:disabled{cursor:text}.textarea{background:var(--cui-base-0)}.textarea:disabled{cursor:initial;opacity:1;background:var(--cui-base-0);border-left-width:0;border-radius:0 8px 8px 0}.button:disabled{cursor:not-allowed;opacity:.5}.error-hint{margin-left:82px}.cc-drag-drop-placeholder{height:44px;border:1px dashed var(--cui-base-200);border-radius:8px;background:var(--cui-base-0)}\n"] }]
116
+ }], ctorParameters: () => [] });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy9jaGVja2xpc3QtYmxvY2svY29tcG9uZW50cy9jaGVja2xpc3QtYmxvY2stbGlzdC1pdGVtLWV2YWx1YXRpb24tY3JpdGVyaWEvY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy9jaGVja2xpc3QtYmxvY2svY29tcG9uZW50cy9jaGVja2xpc3QtYmxvY2stbGlzdC1pdGVtLWV2YWx1YXRpb24tY3JpdGVyaWEvY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJMUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FB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QkFDTCxlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQix1QkFBdUI7d0JBQ3ZCLG1DQUFtQztxQkFDdEMsY0FDVyxJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgdHlwZSB7IEZvcm1BcnJheSwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgdHlwZSB7IEN1aU51bGxhYmxlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcclxuaW1wb3J0IHsgQ3VpTGV0RGlyZWN0aXZlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcclxuaW1wb3J0IHtcclxuICAgIEN1aUFsZXJ0U2VydmljZSxcclxuICAgIEN1aUJ1dHRvbk1vZHVsZSxcclxuICAgIEN1aUljb25CdXR0b25Nb2R1bGUsXHJcbiAgICBDdWlJbnB1dE1vZHVsZSxcclxuICAgIEN1aUlucHV0TnVtYmVyTW9kdWxlLFxyXG4gICAgQ3VpU3ZnTW9kdWxlLFxyXG4gICAgQ3VpVGV4dGFyZWFNb2R1bGVcclxufSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzJztcclxuaW1wb3J0IHsgVHJhbnNsb2NvRGlyZWN0aXZlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcclxuXHJcbmltcG9ydCB0eXBlIHsgQ3VpRXZhbHVhdGlvbkNyaXRlcmlhR3JvdXAgfSBmcm9tICcuLi9jaGVja2xpc3QtYmxvY2stbGlzdC1pdGVtLWV2YWx1YXRpb24nO1xyXG5cclxuaW1wb3J0IHsgQ3VpRHJhZ1BvaW50ZXJEaXJlY3RpdmUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5pbXBvcnQgeyBDdWlHZW5lcmFsQ29udHJvbEVycm9ySGludENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dlbmVyYWwtY29udHJvbC1lcnJvci1oaW50JztcclxuaW1wb3J0IHR5cGUgeyBDdWlFdmFsdWF0aW9uQ3JpdGVyaWFEYXRhIH0gZnJvbSAnLi9jaGVja2xpc3QtYmxvY2stbGlzdC1pdGVtLWV2YWx1YXRpb24tY3JpdGVyaWEub3B0aW9ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGlbY3VpQ2hlY2tsaXN0QmxvY2tMaXN0SXRlbUV2YWx1YXRpb25Dcml0ZXJpYV0nLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIEN1aUJ1dHRvbk1vZHVsZSxcclxuICAgICAgICBDdWlJY29uQnV0dG9uTW9kdWxlLFxyXG4gICAgICAgIEN1aUlucHV0TW9kdWxlLFxyXG4gICAgICAgIEN1aUxldERpcmVjdGl2ZSxcclxuICAgICAgICBDdWlTdmdNb2R1bGUsXHJcbiAgICAgICAgQ3VpVGV4dGFyZWFNb2R1bGUsXHJcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgICAgICBUcmFuc2xvY29EaXJlY3RpdmUsXHJcbiAgICAgICAgQ3VpSW5wdXROdW1iZXJNb2R1bGUsXHJcbiAgICAgICAgQ3VpRHJhZ1BvaW50ZXJEaXJlY3RpdmUsXHJcbiAgICAgICAgQ3VpR2VuZXJhbENvbnRyb2xFcnJvckhpbnRDb21wb25lbnRcclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrbGlzdC1ibG9jay1saXN0LWl0ZW0tZXZhbHVhdGlvbi1jcml0ZXJpYS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC5zY3NzJyxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWlDaGVja0xpc3RCbG9ja0xpc3RJdGVtRXZhbHVhdGlvbkNyaXRlcmlhQ29tcG9uZW50IHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VpQWxlcnRTZXJ2aWNlID0gaW5qZWN0KEN1aUFsZXJ0U2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBFVkFMVUFUSU9OX0FMUkVBRFlfRVhJU1QgPSBgRVZBTFVBVElPTl9BTFJFQURZX0VYSVNUYDtcclxuXHJcbiAgICBwcml2YXRlIHByZXZpb3VzRGF0YTogQ3VpTnVsbGFibGU8Q3VpRXZhbHVhdGlvbkNyaXRlcmlhRGF0YT4gPSBudWxsO1xyXG5cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0VkaXRNb2RlID0gc2lnbmFsKGZhbHNlKTtcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBpc05ldyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3JpdGVyaWFHcm91cCgpLmNvbnRyb2xzLmlzTmV3LnZhbHVlKTtcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBnYXAgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5pc0VkaXRNb2RlKCkgPyA4IDogMCkpO1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9hZGluZ0lkcygpW3RoaXMuY3JpdGVyaWFHcm91cCgpLmNvbnRyb2xzLmlkLnZhbHVlXSk7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNEcmFnRW5hYmxlZCA9IGNvbXB1dGVkKCgpID0+ICF0aGlzLmlzRWRpdE1vZGUoKSAmJiAhdGhpcy5pc0xvYWRpbmcoKSk7XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCBpc0V2YWx1YXRpb25JbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyaXRlcmlhR3JvdXAoKS5jb250cm9scy5ldmFsdWF0aW9uLmludmFsaWQgJiYgdGhpcy5pc0VkaXRNb2RlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCBpc0NyaXRlcmlhSW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jcml0ZXJpYUdyb3VwKCkuY29udHJvbHMuY3JpdGVyaWEuaW52YWxpZCAmJiB0aGlzLmlzRWRpdE1vZGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ0lkcyA9IGlucHV0LnJlcXVpcmVkPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+PigpO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGluZGV4ID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGNyaXRlcmlhR3JvdXAgPSBpbnB1dC5yZXF1aXJlZDxGb3JtR3JvdXA8Q3VpRXZhbHVhdGlvbkNyaXRlcmlhR3JvdXA+PigpO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGV2YWx1YXRpb25Dcml0ZXJpYUZvcm1BcnJheSA9IGlucHV0LnJlcXVpcmVkPEZvcm1BcnJheTxGb3JtR3JvdXA+PigpO1xyXG5cclxuICAgIHB1YmxpYyByZWFkb25seSBzYXZlQ2xpY2tlZCA9IG91dHB1dDxDdWlFdmFsdWF0aW9uQ3JpdGVyaWFHcm91cD4oKTtcclxuICAgIHB1YmxpYyByZWFkb25seSBkZWxldGVDbGlja2VkID0gb3V0cHV0PHN0cmluZz4oKTtcclxuICAgIHB1YmxpYyByZWFkb25seSBjYW5jZWxDbGlja2VkID0gb3V0cHV0KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0TmV3RXZhbHVhdGlvbkNyaXRlcmlhRWZmZWN0KCk7XHJcbiAgICAgICAgdGhpcy5pbml0RWRpdE1vZGVFZmZlY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25TYXZlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmNyaXRlcmlhR3JvdXAoKS5pbnZhbGlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGV2YWx1YXRpb24gPSBgJHt0aGlzLmNyaXRlcmlhR3JvdXAoKS5jb250cm9scy5ldmFsdWF0aW9uLnZhbHVlfWA7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNoZWNrSXNFdmFsdWF0aW9uQ3JpdGVyaWFFeGlzdChldmFsdWF0aW9uKSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1aUFsZXJ0U2VydmljZVxyXG4gICAgICAgICAgICAgICAgLm9wZW4odGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSh0aGlzLkVWQUxVQVRJT05fQUxSRUFEWV9FWElTVCwgeyBldmFsdWF0aW9uIH0pLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pc0VkaXRNb2RlLnVwZGF0ZSgocHJldikgPT4gIXByZXYpO1xyXG4gICAgICAgIHRoaXMuc2F2ZUNsaWNrZWQuZW1pdCh0aGlzLmNyaXRlcmlhR3JvdXAoKS5jb250cm9scyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uRGVsZXRlKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5jcml0ZXJpYUdyb3VwKCkuY29udHJvbHMuaWQudmFsdWU7XHJcblxyXG4gICAgICAgIHRoaXMuZGVsZXRlQ2xpY2tlZC5lbWl0KGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25DYW5jZWwoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNOZXcoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNhbmNlbENsaWNrZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pc0VkaXRNb2RlLnVwZGF0ZSgocHJldikgPT4gIXByZXYpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMucHJldmlvdXNEYXRhKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY3JpdGVyaWFHcm91cCgpLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5jcml0ZXJpYUdyb3VwKCkuZ2V0UmF3VmFsdWUoKSxcclxuICAgICAgICAgICAgLi4udGhpcy5wcmV2aW91c0RhdGFcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25Ub2dnbGVFZGl0TW9kZSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB7IGNyaXRlcmlhLCBldmFsdWF0aW9uIH0gPSB0aGlzLmNyaXRlcmlhR3JvdXAoKS5nZXRSYXdWYWx1ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLnByZXZpb3VzRGF0YSA9IHsgY3JpdGVyaWEsIGV2YWx1YXRpb24gfTtcclxuICAgICAgICB0aGlzLmlzRWRpdE1vZGUudXBkYXRlKChwcmV2KSA9PiAhcHJldik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVE9ETzog0JrQvtC80L/QvtC90LXQvdGCINC00L7Qu9C20LXQvSDQsdGL0Lsg0LHRi9GC0Ywg0L/QvtGB0YLRgNC+0LXQvSDQuNGB0LrQu9GO0YfQuNGC0LXQu9GM0L3QviDQvdCwINGA0LXQsNC60YLQuNCy0L3Ri9GFINGE0L7RgNC80LDRhVxyXG4gICAgcHJpdmF0ZSBpbml0RWRpdE1vZGVFZmZlY3QoKTogdm9pZCB7XHJcbiAgICAgICAgZWZmZWN0KCgpID0+IHRoaXMuY3JpdGVyaWFHcm91cCgpW3RoaXMuaXNFZGl0TW9kZSgpID8gJ2VuYWJsZScgOiAnZGlzYWJsZSddKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdE5ld0V2YWx1YXRpb25Dcml0ZXJpYUVmZmVjdCgpOiB2b2lkIHtcclxuICAgICAgICBlZmZlY3QoKCkgPT4gdGhpcy5pc0VkaXRNb2RlLnNldCh0aGlzLmlzTmV3KCkpLCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tJc0V2YWx1YXRpb25Dcml0ZXJpYUV4aXN0KGV2YWx1YXRpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2xzID0gdGhpcy5ldmFsdWF0aW9uQ3JpdGVyaWFGb3JtQXJyYXkoKS5jb250cm9scztcclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbnRyb2xzLnNvbWUoKGNvbnRyb2w6IEZvcm1Hcm91cDxDdWlFdmFsdWF0aW9uQ3JpdGVyaWFHcm91cD4pID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wuY29udHJvbHMuaWQudmFsdWUgPT09IHRoaXMuY3JpdGVyaWFHcm91cCgpLmNvbnRyb2xzLmlkLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBgJHtjb250cm9sLmdldCgnZXZhbHVhdGlvbicpPy52YWx1ZX1gID09PSBldmFsdWF0aW9uO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgKnRyYW5zbG9jbz1cImxldCB0XCI+XHJcbiAgICA8Zm9ybVxyXG4gICAgICAgICpjdWlMZXQ9XCJjcml0ZXJpYUdyb3VwKCkgYXMgZm9ybVwiXHJcbiAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcclxuICAgICAgICBbY2xhc3MuZm9ybV9lZGl0XT1cImlzRWRpdE1vZGUoKVwiXHJcbiAgICAgICAgY2xhcz1cImZvcm1cIlxyXG4gICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5kZXhcIj57eyBpbmRleCgpIH19Ljwvc3Bhbj5cclxuICAgICAgICAgICAgQGlmICghaXNFZGl0TW9kZSgpKSB7XHJcbiAgICAgICAgICAgICAgICA8Y3VpLXN2Z1xyXG4gICAgICAgICAgICAgICAgICAgIGN1aURyYWdQb2ludGVyXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImN1aUljb25EcmFnSGFuZGxlRG90c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ2YXIoLS1jdWktYmFzZS01MDApXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25cIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBzdHlsZS5nYXA9XCJ7e2dhcCgpfX1weFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIndyYXBwZXJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8Y3VpLWlucHV0LW51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImV2YWx1YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGN1aVRleHRGaWVsZFBsYWNlaG9sZGVyPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2N1aVRleHRGaWVsZElzRXJyb3JdPVwiaXNFdmFsdWF0aW9uSW52YWxpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21pbl09XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIjk5XCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LW51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgICAgICAgY3VpVGV4dGFyZWFcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjcml0ZXJpYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Jvd3NdPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2N1aVRleHRGaWVsZElzRXJyb3JdPVwiaXNDcml0ZXJpYUludmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgdCgnQUREX0FfREVTQ1JJUFRJT04nKSB9fS4uLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0YXJlYVwiXHJcbiAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIEBpZiAoaXNFZGl0TW9kZSgpKSB7XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY3VpSWNvbkJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJjdWlJY29uQ2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidmFyKC0tY3VpLXN1Y2Nlc3MpXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2F2ZSgpXCJcclxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBjdWlJY29uQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImN1aUljb25YQ2lyY2xlXCJcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInZhcigtLWN1aS1kYW5nZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIlxyXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBjdWlCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiZ2hvc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJjdWlJY29uRWRpdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVFZGl0TW9kZSgpXCJcclxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBjdWlCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiZ2hvc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJjdWlJY29uVHJhc2hcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0xvYWRlclNob3duXT1cImlzTG9hZGluZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8Y3VpLWdlbmVyYWwtY29udHJvbC1lcnJvci1oaW50XHJcbiAgICAgICAgICAgIFtjb250cm9sXT1cImZvcm0uY29udHJvbHMuY3JpdGVyaWFcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLWhpbnRcIlxyXG4gICAgICAgIC8+XHJcbiAgICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLm9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvY2hlY2tsaXN0LWJsb2NrL2NvbXBvbmVudHMvY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhL2NoZWNrbGlzdC1ibG9jay1saXN0LWl0ZW0tZXZhbHVhdGlvbi1jcml0ZXJpYS5vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEN1aUV2YWx1YXRpb25Dcml0ZXJpYURhdGEge1xyXG4gICAgcmVhZG9ubHkgY3JpdGVyaWE6IHN0cmluZztcclxuICAgIHJlYWRvbmx5IGV2YWx1YXRpb246IG51bWJlcjtcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { CuiCheckListBlockListItemEvaluationCriteriaComponent } from './checklist-block-list-item-evaluation-criteria.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvY2hlY2tsaXN0LWJsb2NrL2NvbXBvbmVudHMvY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvREFBb0QsRUFBRSxNQUFNLDJEQUEyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ3VpQ2hlY2tMaXN0QmxvY2tMaXN0SXRlbUV2YWx1YXRpb25Dcml0ZXJpYUNvbXBvbmVudCB9IGZyb20gJy4vY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudCc7XHJcbiJdfQ==