@hmcts/ccd-case-ui-toolkit 7.1.29-qm-style-update → 7.1.29

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 (21) hide show
  1. package/esm2022/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +3 -3
  2. package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +3 -3
  3. package/esm2022/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +14 -2
  4. package/esm2022/lib/shared/components/case-editor/services/work-allocation.service.mjs +5 -1
  5. package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +8 -9
  6. package/esm2022/lib/shared/components/palette/case-file-view/test-data/categories-and-documents-test-data.mjs +2 -2
  7. package/esm2022/lib/shared/components/palette/document/write-document-field.component.mjs +17 -5
  8. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +10 -12
  9. package/esm2022/lib/shared/components/palette/unsupported-field.component.mjs +4 -3
  10. package/esm2022/lib/shared/components/palette/utils/date.pipe.mjs +2 -2
  11. package/esm2022/lib/shared/components/search-result/search-result.component.mjs +39 -35
  12. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +95 -65
  13. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  14. package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts.map +1 -1
  15. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts.map +1 -1
  16. package/lib/shared/components/palette/document/write-document-field.component.d.ts +3 -1
  17. package/lib/shared/components/palette/document/write-document-field.component.d.ts.map +1 -1
  18. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.d.ts.map +1 -1
  19. package/lib/shared/components/palette/unsupported-field.component.d.ts +1 -1
  20. package/lib/shared/components/palette/unsupported-field.component.d.ts.map +1 -1
  21. package/package.json +1 -1
@@ -45,7 +45,7 @@ export class EventCompletionStateMachineService {
45
45
  entryActionForStateCheckTasksCanBeCompleted(state, context) {
46
46
  const assignNeeded = context.sessionStorageService.getItem('assignNeeded');
47
47
  context.workAllocationService.getTask(context.task.id).subscribe(taskResponse => {
48
- if (taskResponse && taskResponse.task && taskResponse.task.task_state) {
48
+ if (taskResponse?.task?.task_state) {
49
49
  switch (taskResponse.task.task_state.toUpperCase()) {
50
50
  case TaskState.Unassigned:
51
51
  // Task unassigned
@@ -80,6 +80,14 @@ export class EventCompletionStateMachineService {
80
80
  break;
81
81
  }
82
82
  }
83
+ else if (!taskResponse?.task) {
84
+ context.alertService.setPreserveAlerts(true);
85
+ context.alertService.warning({ phrase: 'Task statecheck : no task available for completion', replacements: {} });
86
+ }
87
+ else {
88
+ context.alertService.setPreserveAlerts(true);
89
+ context.alertService.warning({ phrase: 'Task statecheck : no task state available for completion', replacements: {} });
90
+ }
83
91
  }, error => {
84
92
  context.alertService.error(error.message);
85
93
  return throwError(error);
@@ -102,6 +110,8 @@ export class EventCompletionStateMachineService {
102
110
  context.component.eventCanBeCompleted.emit(true);
103
111
  }
104
112
  else {
113
+ context.alertService.setPreserveAlerts(true);
114
+ context.alertService.warning({ phrase: 'CompleteEventAndTask : no task available for completion', replacements: {} });
105
115
  // Emit event cannot be completed event
106
116
  context.component.eventCanBeCompleted.emit(false);
107
117
  }
@@ -122,6 +132,8 @@ export class EventCompletionStateMachineService {
122
132
  context.component.eventCanBeCompleted.emit(true);
123
133
  }
124
134
  else {
135
+ context.alertService.setPreserveAlerts(true);
136
+ context.alertService.warning({ phrase: 'Unassigned task : no task available for completion', replacements: {} });
125
137
  // Emit event cannot be completed event
126
138
  context.component.eventCanBeCompleted.emit(false);
127
139
  }
@@ -163,4 +175,4 @@ export class EventCompletionStateMachineService {
163
175
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EventCompletionStateMachineService, [{
164
176
  type: Injectable
165
177
  }], null, null); })();
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtY29tcGxldGlvbi1zdGF0ZS1tYWNoaW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3Ivc2VydmljZXMvZXZlbnQtY29tcGxldGlvbi1zdGF0ZS1tYWNoaW5lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVMsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7QUFFekYsTUFBTSw4QkFBOEIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUd4RSxNQUFNLE9BQU8sa0NBQWtDO0lBQ3RDLDZCQUE2QixDQUFRO0lBQ3JDLHlCQUF5QixDQUFRO0lBQ2pDLGdCQUFnQixDQUFRO0lBQ3hCLHlCQUF5QixDQUFRO0lBQ2pDLDZCQUE2QixDQUFRO0lBQ3JDLDhCQUE4QixDQUFRO0lBQ3RDLHVCQUF1QixDQUFRO0lBQy9CLHFCQUFxQixDQUFRO0lBQzdCLG1CQUFtQixDQUFRO0lBQzNCLFVBQVUsQ0FBUTtJQUVsQixzQkFBc0IsQ0FBQyxPQUEyQztRQUN2RSxPQUFPLElBQUksWUFBWSxDQUFDLDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxZ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QUFDO0lBRU0sK0NBQStDO1FBQ3BELElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxhQUFhLENBQy9DLHFCQUFxQixDQUFDLEtBQUssRUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztJQUNKLENBQUM7SUFFTSxvQ0FBb0M7UUFDekMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FDcEMscUJBQXFCLENBQUMsS0FBSyxFQUMzQixJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVNLDJCQUEyQixDQUFDLE9BQTJDO1FBQzVFLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoRixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQzlCLENBQUM7NEZBeE5VLGtDQUFrQztnRUFBbEMsa0NBQWtDLFdBQWxDLGtDQUFrQzs7aUZBQWxDLGtDQUFrQztjQUQ5QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RhdGUsIFN0YXRlTWFjaGluZSB9IGZyb20gJ0BlZGl1bS9mc20nO1xuaW1wb3J0IHsgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGFza1N0YXRlIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL3dvcmstYWxsb2NhdGlvbi9UYXNrJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgRXZlbnRDb21wbGV0aW9uU3RhdGVNYWNoaW5lQ29udGV4dCB9IGZyb20gJy4uL2RvbWFpbi9ldmVudC1jb21wbGV0aW9uLXN0YXRlLW1hY2hpbmUtY29udGV4dC5tb2RlbCc7XG5pbXBvcnQgeyBFdmVudENvbXBsZXRpb25TdGF0ZXMgfSBmcm9tICcuLi9kb21haW4vZXZlbnQtY29tcGxldGlvbi1zdGF0ZXMuZW51bS5tb2RlbCc7XG5pbXBvcnQgeyBFdmVudENvbXBsZXRpb25UYXNrU3RhdGVzIH0gZnJvbSAnLi4vZG9tYWluL2V2ZW50LWNvbXBsZXRpb24tdGFzay1zdGF0ZXMubW9kZWwnO1xuXG5jb25zdCBFVkVOVF9DT01QTEVUSU9OX1NUQVRFX01BQ0hJTkUgPSAnRVZFTlQgQ09NUExFVElPTiBTVEFURSBNQUNISU5FJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEV2ZW50Q29tcGxldGlvblN0YXRlTWFjaGluZVNlcnZpY2Uge1xuICBwdWJsaWMgc3RhdGVDaGVja1Rhc2tzQ2FuQmVDb21wbGV0ZWQ6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVDb21wbGV0ZUV2ZW50QW5kVGFzazogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZUNhbmNlbEV2ZW50OiBTdGF0ZTtcbiAgcHVibGljIHN0YXRlQ29tcGxldGVFdmVudE5vdFRhc2s6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVUYXNrQ29tcGxldGVkT3JDYW5jZWxsZWQ6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVUYXNrQXNzaWduZWRUb0Fub3RoZXJVc2VyOiBTdGF0ZTtcbiAgcHVibGljIHN0YXRlVGFza1JlYXNzaWduVG9Vc2VyOiBTdGF0ZTtcbiAgcHVibGljIHN0YXRlVGFza0Fzc2lnblRvVXNlcjogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZVRhc2tVbmFzc2lnbmVkOiBTdGF0ZTtcbiAgcHVibGljIHN0YXRlRmluYWw6IFN0YXRlO1xuXG4gIHB1YmxpYyBpbml0aWFsaXNlU3RhdGVNYWNoaW5lKGNvbnRleHQ6IEV2ZW50Q29tcGxldGlvblN0YXRlTWFjaGluZUNvbnRleHQpOiBTdGF0ZU1hY2hpbmUge1xuICAgIHJldHVybiBuZXcgU3RhdGVNYWNoaW5lKEVWRU5UX0NPTVBMRVRJT05fU1RBVEVfTUFDSElORSwgY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgc3RhcnRTdGF0ZU1hY2hpbmUoc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmUpOiB2b2lkIHtcbiAgICBzdGF0ZU1hY2hpbmUuc3RhcnQodGhpcy5zdGF0ZUNoZWNrVGFza3NDYW5CZUNvbXBsZXRlZCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU3RhdGVzKHN0YXRlTWFjaGluZTogU3RhdGVNYWNoaW5lKTogdm9pZCB7XG4gICAgLy8gSW5pdGlhbCBzdGF0ZVxuICAgIHRoaXMuc3RhdGVDaGVja1Rhc2tzQ2FuQmVDb21wbGV0ZWQgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudENvbXBsZXRpb25TdGF0ZXMuQ2hlY2tUYXNrc0NhbkJlQ29tcGxldGVkLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVDaGVja1Rhc2tzQ2FuQmVDb21wbGV0ZWRcbiAgICApO1xuXG4gICAgdGhpcy5zdGF0ZUNvbXBsZXRlRXZlbnRBbmRUYXNrID0gc3RhdGVNYWNoaW5lLmNyZWF0ZVN0YXRlKFxuICAgICAgRXZlbnRDb21wbGV0aW9uU3RhdGVzLkNvbXBsZXRlRXZlbnRBbmRUYXNrLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVDb21wbGV0ZUV2ZW50QW5kVGFza1xuICAgICk7XG5cbiAgICB0aGlzLnN0YXRlVGFza0NvbXBsZXRlZE9yQ2FuY2VsbGVkID0gc3RhdGVNYWNoaW5lLmNyZWF0ZVN0YXRlKFxuICAgICAgRXZlbnRDb21wbGV0aW9uU3RhdGVzLlRhc2tDb21wZXRlZE9yQ2FuY2VsbGVkLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVUYXNrQ29tcGxldGVkT3JDYW5jZWxsZWRcbiAgICApO1xuXG4gICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvQW5vdGhlclVzZXIgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudENvbXBsZXRpb25TdGF0ZXMuVGFza0Fzc2lnbmVkVG9Bbm90aGVyVXNlcixcbiAgICAgIGZhbHNlLFxuICAgICAgdGhpcy5lbnRyeUFjdGlvbkZvclN0YXRlVGFza0Fzc2lnbmVkVG9Bbm90aGVyVXNlclxuICAgICk7XG5cbiAgICB0aGlzLnN0YXRlVGFza1VuYXNzaWduZWQgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudENvbXBsZXRpb25TdGF0ZXMuVGFza1VuYXNzaWduZWQsXG4gICAgICBmYWxzZSxcbiAgICAgIHRoaXMuZW50cnlBY3Rpb25Gb3JTdGF0ZVRhc2tVbmFzc2lnbmVkXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBmaW5hbCBzdGF0ZSwgdGhlIHNlY29uZCBwYXJhbSBpc0NvbXBsZXRlIGlzIHNldCB0byB0cnVlIHRvIG1ha2Ugc3VyZSBzdGF0ZSBtYWNoaW5lIGZpbmlzaGVkIHJ1bm5pbmdcbiAgICB0aGlzLnN0YXRlRmluYWwgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudENvbXBsZXRpb25TdGF0ZXMuRmluYWwsXG4gICAgICB0cnVlLFxuICAgICAgdGhpcy5lbnRyeUFjdGlvbkZvclN0YXRlRmluYWxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zKCk6IHZvaWQge1xuICAgIC8vIEluaXRpYWwgdHJhbnNpdGlvblxuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZUNoZWNrVGFza3NDYW5CZUNvbXBsZXRlZCgpO1xuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tDb21wbGV0ZWRPckNhbmNlbGxlZCgpO1xuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZUNvbXBsZXRlRXZlbnRBbmRUYXNrKCk7XG4gICAgdGhpcy5hZGRUcmFuc2l0aW9uc0ZvclN0YXRlVGFza0Fzc2lnbmVkVG9Bbm90aGVyVXNlcigpO1xuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tVbmFzc2lnbmVkKCk7XG4gIH1cblxuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZUNoZWNrVGFza3NDYW5CZUNvbXBsZXRlZChzdGF0ZTogU3RhdGUsIGNvbnRleHQ6IEV2ZW50Q29tcGxldGlvblN0YXRlTWFjaGluZUNvbnRleHQpOiB2b2lkIHtcbiAgICBjb25zdCBhc3NpZ25OZWVkZWQgPSBjb250ZXh0LnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCdhc3NpZ25OZWVkZWQnKTtcbiAgICBjb250ZXh0LndvcmtBbGxvY2F0aW9uU2VydmljZS5nZXRUYXNrKGNvbnRleHQudGFzay5pZCkuc3Vic2NyaWJlKFxuICAgICAgdGFza1Jlc3BvbnNlID0+IHtcbiAgICAgICAgaWYgKHRhc2tSZXNwb25zZSAmJiB0YXNrUmVzcG9uc2UudGFzayAmJiB0YXNrUmVzcG9uc2UudGFzay50YXNrX3N0YXRlKSB7XG4gICAgICAgICAgc3dpdGNoICh0YXNrUmVzcG9uc2UudGFzay50YXNrX3N0YXRlLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgICAgICAgIGNhc2UgVGFza1N0YXRlLlVuYXNzaWduZWQ6XG4gICAgICAgICAgICAgIC8vIFRhc2sgdW5hc3NpZ25lZFxuICAgICAgICAgICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50Q29tcGxldGlvblN0YXRlcy5UYXNrVW5hc3NpZ25lZCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUYXNrU3RhdGUuQ29tcGxldGVkOlxuICAgICAgICAgICAgY2FzZSBUYXNrU3RhdGUuQ2FuY2VsbGVkOlxuICAgICAgICAgICAgY2FzZSBUYXNrU3RhdGUuVGVybWluYXRlZDpcbiAgICAgICAgICAgICAgLy8gVGFzayBjb21wbGV0ZWQgb3IgY2FuY2VsbGVkXG4gICAgICAgICAgICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRDb21wbGV0aW9uU3RhdGVzLlRhc2tDb21wZXRlZE9yQ2FuY2VsbGVkKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRhc2tTdGF0ZS5Bc3NpZ25lZDpcbiAgICAgICAgICAgICAgLy8gVGFzayBpcyBpbiBhc3NpZ25lZCBzdGF0ZVxuICAgICAgICAgICAgICBpZiAodGFza1Jlc3BvbnNlLnRhc2suYXNzaWduZWUgPT09IGNvbnRleHQudGFzay5hc3NpZ25lZSkge1xuICAgICAgICAgICAgICAgIC8vIFRhc2sgc3RpbGwgYXNzaWduZWQgdG8gY3VycmVudCB1c2VyLCBjb21wbGV0ZSBldmVudCBhbmQgdGFza1xuICAgICAgICAgICAgICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRDb21wbGV0aW9uU3RhdGVzLkNvbXBsZXRlRXZlbnRBbmRUYXNrKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChhc3NpZ25OZWVkZWQgPT09ICd0cnVlIC0gb3ZlcnJpZGUnKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyB3aWxsIHRyZWF0IHRhc2sgYXMgdW5hc3NpZ25lZCBpbnN0ZWFkIG9mIHJlYXNzaWduZWQgdG8gY29tcGxldGUgYWZ0ZXIgdXNlciBjb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAvLyBhc3NpZ25OZWVkZWQgd2lsbCBhbHNvIGJlIGltbWVkaWF0ZWx5IG92ZXJ3cml0dGVuIHRvIHRydWVcbiAgICAgICAgICAgICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50Q29tcGxldGlvblN0YXRlcy5UYXNrVW5hc3NpZ25lZCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVGFzayBoYXMgYmVlbiByZWFzc2lnbmVkIHRvIGFub3RoZXIgdXNlciwgZGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgICAgICAgICAgICAgY29udGV4dC5yZWFzc2lnbmVkVGFzayA9IHRhc2tSZXNwb25zZS50YXNrO1xuICAgICAgICAgICAgICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRDb21wbGV0aW9uU3RhdGVzLlRhc2tBc3NpZ25lZFRvQW5vdGhlclVzZXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgLy8gQWxsb3cgdXNlciB0byBjb21wbGV0ZSB0aGUgZXZlbnRcbiAgICAgICAgICAgICAgc3RhdGUudHJpZ2dlcihFdmVudENvbXBsZXRpb25TdGF0ZXMuQ29tcGxldGVFdmVudEFuZFRhc2spO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIGNvbnRleHQuYWxlcnRTZXJ2aWNlLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlVGFza0NvbXBsZXRlZE9yQ2FuY2VsbGVkKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRDb21wbGV0aW9uU3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIC8vIFRyaWdnZXIgZmluYWwgc3RhdGUgdG8gY29tcGxldGUgcHJvY2Vzc2luZyBvZiBzdGF0ZSBtYWNoaW5lXG4gICAgc3RhdGUudHJpZ2dlcihFdmVudENvbXBsZXRpb25TdGF0ZXMuRmluYWwpO1xuICAgIC8vIExvYWQgY2FzZSBldmVudCBjb21wbGV0aW9uIHRhc2sgY2FuY2VsbGVkIGNvbXBvbmVudFxuICAgIGNvbnRleHQuY29tcG9uZW50LnNldFRhc2tTdGF0ZShFdmVudENvbXBsZXRpb25UYXNrU3RhdGVzLlRhc2tDYW5jZWxsZWQpO1xuICB9XG5cbiAgcHVibGljIGVudHJ5QWN0aW9uRm9yU3RhdGVDb21wbGV0ZUV2ZW50QW5kVGFzayhzdGF0ZTogU3RhdGUsIGNvbnRleHQ6IEV2ZW50Q29tcGxldGlvblN0YXRlTWFjaGluZUNvbnRleHQpOiB2b2lkIHtcbiAgICAvLyBUcmlnZ2VyIGZpbmFsIHN0YXRlIHRvIGNvbXBsZXRlIHByb2Nlc3Npbmcgb2Ygc3RhdGUgbWFjaGluZVxuICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRDb21wbGV0aW9uU3RhdGVzLkZpbmFsKTtcbiAgICBjb25zdCBjbGllbnRDb250ZXh0U3RyID0gY29udGV4dC5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnY2xpZW50Q29udGV4dCcpO1xuICAgIGNvbnN0IHVzZXJUYXNrID0gRmllbGRzVXRpbHMuZ2V0VXNlclRhc2tGcm9tQ2xpZW50Q29udGV4dChjbGllbnRDb250ZXh0U3RyKTtcbiAgICBpZiAodXNlclRhc2s/LnRhc2tfZGF0YSkge1xuICAgICAgY29udGV4dC5zZXNzaW9uU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnYXNzaWduTmVlZGVkJywgJ2ZhbHNlJyk7XG4gICAgICAvLyBqdXN0IHNldCBldmVudCBjYW4gYmUgY29tcGxldGVkXG4gICAgICBjb250ZXh0LmNvbXBvbmVudC5ldmVudENhbkJlQ29tcGxldGVkLmVtaXQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEVtaXQgZXZlbnQgY2Fubm90IGJlIGNvbXBsZXRlZCBldmVudFxuICAgICAgY29udGV4dC5jb21wb25lbnQuZXZlbnRDYW5CZUNvbXBsZXRlZC5lbWl0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZVRhc2tBc3NpZ25lZFRvQW5vdGhlclVzZXIoc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudENvbXBsZXRpb25TdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgLy8gVHJpZ2dlciBmaW5hbCBzdGF0ZSB0byBjb21wbGV0ZSBwcm9jZXNzaW5nIG9mIHN0YXRlIG1hY2hpbmVcbiAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50Q29tcGxldGlvblN0YXRlcy5GaW5hbCk7XG4gICAgLy8gTG9hZCBjYXNlIGV2ZW50IGNvbXBsZXRpb24gdGFzayByZWFzc2lnbmVkIGNvbXBvbmVudFxuICAgIGNvbnRleHQuY29tcG9uZW50LnNldFRhc2tTdGF0ZShFdmVudENvbXBsZXRpb25UYXNrU3RhdGVzLlRhc2tSZWFzc2lnbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlVGFza1VuYXNzaWduZWQoc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudENvbXBsZXRpb25TdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgLy8gVHJpZ2dlciBmaW5hbCBzdGF0ZSB0byBjb21wbGV0ZSBwcm9jZXNzaW5nIG9mIHN0YXRlIG1hY2hpbmVcbiAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50Q29tcGxldGlvblN0YXRlcy5GaW5hbCk7XG4gICAgY29uc3QgY2xpZW50Q29udGV4dFN0ciA9IGNvbnRleHQuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2NsaWVudENvbnRleHQnKTtcbiAgICBjb25zdCB1c2VyVGFzayA9IEZpZWxkc1V0aWxzLmdldFVzZXJUYXNrRnJvbUNsaWVudENvbnRleHQoY2xpZW50Q29udGV4dFN0cik7XG4gICAgaWYgKHVzZXJUYXNrPy50YXNrX2RhdGEpIHtcbiAgICAgIGNvbnRleHQuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oJ2Fzc2lnbk5lZWRlZCcsICd0cnVlJyk7XG4gICAgICBjb250ZXh0LmNvbXBvbmVudC5ldmVudENhbkJlQ29tcGxldGVkLmVtaXQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEVtaXQgZXZlbnQgY2Fubm90IGJlIGNvbXBsZXRlZCBldmVudFxuICAgICAgY29udGV4dC5jb21wb25lbnQuZXZlbnRDYW5CZUNvbXBsZXRlZC5lbWl0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZUZpbmFsKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRDb21wbGV0aW9uU3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIC8vIEZpbmFsIGFjdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCBoZXJlLCB0aGUgc3RhdGUgbWFjaGluZSBmaW5pc2hlZCBydW5uaW5nXG4gICAgY29uc29sZS5sb2coJ0ZJTkFMJyk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZUNoZWNrVGFza3NDYW5CZUNvbXBsZXRlZCgpOiB2b2lkIHtcbiAgICAvLyBDb21wbGV0ZSBldmVudCBhbmQgdGFza1xuICAgIHRoaXMuc3RhdGVDaGVja1Rhc2tzQ2FuQmVDb21wbGV0ZWQuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50Q29tcGxldGlvblN0YXRlcy5Db21wbGV0ZUV2ZW50QW5kVGFzayxcbiAgICAgIHRoaXMuc3RhdGVDb21wbGV0ZUV2ZW50QW5kVGFza1xuICAgICk7XG4gICAgLy8gVGFzayBjb21wbGV0ZWQgb3IgY2FuY2VsbGVkXG4gICAgdGhpcy5zdGF0ZUNoZWNrVGFza3NDYW5CZUNvbXBsZXRlZC5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRDb21wbGV0aW9uU3RhdGVzLlRhc2tDb21wZXRlZE9yQ2FuY2VsbGVkLFxuICAgICAgdGhpcy5zdGF0ZVRhc2tDb21wbGV0ZWRPckNhbmNlbGxlZFxuICAgICk7XG4gICAgLy8gVGFzayBhc3NpZ25lZCB0byBhbm90aGVyIHVzZXJcbiAgICB0aGlzLnN0YXRlQ2hlY2tUYXNrc0NhbkJlQ29tcGxldGVkLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudENvbXBsZXRpb25TdGF0ZXMuVGFza0Fzc2lnbmVkVG9Bbm90aGVyVXNlcixcbiAgICAgIHRoaXMuc3RhdGVUYXNrQXNzaWduZWRUb0Fub3RoZXJVc2VyXG4gICAgKTtcbiAgICAvLyBUYXNrIHVuYXNzaWduZWRcbiAgICB0aGlzLnN0YXRlQ2hlY2tUYXNrc0NhbkJlQ29tcGxldGVkLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudENvbXBsZXRpb25TdGF0ZXMuVGFza1VuYXNzaWduZWQsXG4gICAgICB0aGlzLnN0YXRlVGFza1VuYXNzaWduZWRcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zRm9yU3RhdGVUYXNrQ29tcGxldGVkT3JDYW5jZWxsZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVRhc2tDb21wbGV0ZWRPckNhbmNlbGxlZC5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRDb21wbGV0aW9uU3RhdGVzLkZpbmFsLFxuICAgICAgdGhpcy5zdGF0ZUZpbmFsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9uc0ZvclN0YXRlQ29tcGxldGVFdmVudEFuZFRhc2soKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUNvbXBsZXRlRXZlbnRBbmRUYXNrLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudENvbXBsZXRpb25TdGF0ZXMuRmluYWwsXG4gICAgICB0aGlzLnN0YXRlRmluYWxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zRm9yU3RhdGVUYXNrQXNzaWduZWRUb0Fub3RoZXJVc2VyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVUYXNrQXNzaWduZWRUb0Fub3RoZXJVc2VyLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudENvbXBsZXRpb25TdGF0ZXMuRmluYWwsXG4gICAgICB0aGlzLnN0YXRlRmluYWxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zRm9yU3RhdGVUYXNrVW5hc3NpZ25lZCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlVGFza1VuYXNzaWduZWQuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50Q29tcGxldGlvblN0YXRlcy5GaW5hbCxcbiAgICAgIHRoaXMuc3RhdGVGaW5hbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgdGFza1ByZXNlbnRJblNlc3Npb25TdG9yYWdlKGNvbnRleHQ6IEV2ZW50Q29tcGxldGlvblN0YXRlTWFjaGluZUNvbnRleHQpOiBib29sZWFuIHtcbiAgICBjb25zdCBjbGllbnRDb250ZXh0U3RyID0gY29udGV4dC5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnY2xpZW50Q29udGV4dCcpO1xuICAgIGNvbnN0IHVzZXJUYXNrID0gRmllbGRzVXRpbHMuZ2V0VXNlclRhc2tGcm9tQ2xpZW50Q29udGV4dChjbGllbnRDb250ZXh0U3RyKTtcbiAgICByZXR1cm4gISF1c2VyVGFzay50YXNrX2RhdGE7XG4gIH1cbn1cbiJdfQ==
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtY29tcGxldGlvbi1zdGF0ZS1tYWNoaW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3Ivc2VydmljZXMvZXZlbnQtY29tcGxldGlvbi1zdGF0ZS1tYWNoaW5lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVMsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7QUFFekYsTUFBTSw4QkFBOEIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUd4RSxNQUFNLE9BQU8sa0NBQWtDO0lBQ3RDLDZCQUE2QixDQUFRO0lBQ3JDLHlCQUF5QixDQUFRO0lBQ2pDLGdCQUFnQixDQUFRO0lBQ3hCLHlCQUF5QixDQUFRO0lBQ2pDLDZCQUE2QixDQUFRO0lBQ3JDLDhCQUE4QixDQUFRO0lBQ3RDLHVCQUF1QixDQUFRO0lBQy9CLHFCQUFxQixDQUFRO0lBQzdCLG1CQUFtQixDQUFRO0lBQzNCLFVBQVUsQ0FBUTtJQUVsQixzQkFBc0IsQ0FBQyxPQUEyQztRQUN2RSxPQUFPLElBQUksWUFBWSxDQUFDLDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxZ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LE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEYsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLDRCQUE0QixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUM5QixDQUFDOzRGQWxPVSxrQ0FBa0M7Z0VBQWxDLGtDQUFrQyxXQUFsQyxrQ0FBa0M7O2lGQUFsQyxrQ0FBa0M7Y0FEOUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0YXRlLCBTdGF0ZU1hY2hpbmUgfSBmcm9tICdAZWRpdW0vZnNtJztcbmltcG9ydCB7IHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRhc2tTdGF0ZSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFzayc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEV2ZW50Q29tcGxldGlvblN0YXRlTWFjaGluZUNvbnRleHQgfSBmcm9tICcuLi9kb21haW4vZXZlbnQtY29tcGxldGlvbi1zdGF0ZS1tYWNoaW5lLWNvbnRleHQubW9kZWwnO1xuaW1wb3J0IHsgRXZlbnRDb21wbGV0aW9uU3RhdGVzIH0gZnJvbSAnLi4vZG9tYWluL2V2ZW50LWNvbXBsZXRpb24tc3RhdGVzLmVudW0ubW9kZWwnO1xuaW1wb3J0IHsgRXZlbnRDb21wbGV0aW9uVGFza1N0YXRlcyB9IGZyb20gJy4uL2RvbWFpbi9ldmVudC1jb21wbGV0aW9uLXRhc2stc3RhdGVzLm1vZGVsJztcblxuY29uc3QgRVZFTlRfQ09NUExFVElPTl9TVEFURV9NQUNISU5FID0gJ0VWRU5UIENPTVBMRVRJT04gU1RBVEUgTUFDSElORSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFdmVudENvbXBsZXRpb25TdGF0ZU1hY2hpbmVTZXJ2aWNlIHtcbiAgcHVibGljIHN0YXRlQ2hlY2tUYXNrc0NhbkJlQ29tcGxldGVkOiBTdGF0ZTtcbiAgcHVibGljIHN0YXRlQ29tcGxldGVFdmVudEFuZFRhc2s6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVDYW5jZWxFdmVudDogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZUNvbXBsZXRlRXZlbnROb3RUYXNrOiBTdGF0ZTtcbiAgcHVibGljIHN0YXRlVGFza0NvbXBsZXRlZE9yQ2FuY2VsbGVkOiBTdGF0ZTtcbiAgcHVibGljIHN0YXRlVGFza0Fzc2lnbmVkVG9Bbm90aGVyVXNlcjogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZVRhc2tSZWFzc2lnblRvVXNlcjogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZVRhc2tBc3NpZ25Ub1VzZXI6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVUYXNrVW5hc3NpZ25lZDogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZUZpbmFsOiBTdGF0ZTtcblxuICBwdWJsaWMgaW5pdGlhbGlzZVN0YXRlTWFjaGluZShjb250ZXh0OiBFdmVudENvbXBsZXRpb25TdGF0ZU1hY2hpbmVDb250ZXh0KTogU3RhdGVNYWNoaW5lIHtcbiAgICByZXR1cm4gbmV3IFN0YXRlTWFjaGluZShFVkVOVF9DT01QTEVUSU9OX1NUQVRFX01BQ0hJTkUsIGNvbnRleHQpO1xuICB9XG5cbiAgcHVibGljIHN0YXJ0U3RhdGVNYWNoaW5lKHN0YXRlTWFjaGluZTogU3RhdGVNYWNoaW5lKTogdm9pZCB7XG4gICAgc3RhdGVNYWNoaW5lLnN0YXJ0KHRoaXMuc3RhdGVDaGVja1Rhc2tzQ2FuQmVDb21wbGV0ZWQpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVN0YXRlcyhzdGF0ZU1hY2hpbmU6IFN0YXRlTWFjaGluZSk6IHZvaWQge1xuICAgIC8vIEluaXRpYWwgc3RhdGVcbiAgICB0aGlzLnN0YXRlQ2hlY2tUYXNrc0NhbkJlQ29tcGxldGVkID0gc3RhdGVNYWNoaW5lLmNyZWF0ZVN0YXRlKFxuICAgICAgRXZlbnRDb21wbGV0aW9uU3RhdGVzLkNoZWNrVGFza3NDYW5CZUNvbXBsZXRlZCxcbiAgICAgIGZhbHNlLFxuICAgICAgdGhpcy5lbnRyeUFjdGlvbkZvclN0YXRlQ2hlY2tUYXNrc0NhbkJlQ29tcGxldGVkXG4gICAgKTtcblxuICAgIHRoaXMuc3RhdGVDb21wbGV0ZUV2ZW50QW5kVGFzayA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50Q29tcGxldGlvblN0YXRlcy5Db21wbGV0ZUV2ZW50QW5kVGFzayxcbiAgICAgIGZhbHNlLFxuICAgICAgdGhpcy5lbnRyeUFjdGlvbkZvclN0YXRlQ29tcGxldGVFdmVudEFuZFRhc2tcbiAgICApO1xuXG4gICAgdGhpcy5zdGF0ZVRhc2tDb21wbGV0ZWRPckNhbmNlbGxlZCA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50Q29tcGxldGlvblN0YXRlcy5UYXNrQ29tcGV0ZWRPckNhbmNlbGxlZCxcbiAgICAgIGZhbHNlLFxuICAgICAgdGhpcy5lbnRyeUFjdGlvbkZvclN0YXRlVGFza0NvbXBsZXRlZE9yQ2FuY2VsbGVkXG4gICAgKTtcblxuICAgIHRoaXMuc3RhdGVUYXNrQXNzaWduZWRUb0Fub3RoZXJVc2VyID0gc3RhdGVNYWNoaW5lLmNyZWF0ZVN0YXRlKFxuICAgICAgRXZlbnRDb21wbGV0aW9uU3RhdGVzLlRhc2tBc3NpZ25lZFRvQW5vdGhlclVzZXIsXG4gICAgICBmYWxzZSxcbiAgICAgIHRoaXMuZW50cnlBY3Rpb25Gb3JTdGF0ZVRhc2tBc3NpZ25lZFRvQW5vdGhlclVzZXJcbiAgICApO1xuXG4gICAgdGhpcy5zdGF0ZVRhc2tVbmFzc2lnbmVkID0gc3RhdGVNYWNoaW5lLmNyZWF0ZVN0YXRlKFxuICAgICAgRXZlbnRDb21wbGV0aW9uU3RhdGVzLlRhc2tVbmFzc2lnbmVkLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVUYXNrVW5hc3NpZ25lZFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgZmluYWwgc3RhdGUsIHRoZSBzZWNvbmQgcGFyYW0gaXNDb21wbGV0ZSBpcyBzZXQgdG8gdHJ1ZSB0byBtYWtlIHN1cmUgc3RhdGUgbWFjaGluZSBmaW5pc2hlZCBydW5uaW5nXG4gICAgdGhpcy5zdGF0ZUZpbmFsID0gc3RhdGVNYWNoaW5lLmNyZWF0ZVN0YXRlKFxuICAgICAgRXZlbnRDb21wbGV0aW9uU3RhdGVzLkZpbmFsLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRoaXMuZW50cnlBY3Rpb25Gb3JTdGF0ZUZpbmFsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9ucygpOiB2b2lkIHtcbiAgICAvLyBJbml0aWFsIHRyYW5zaXRpb25cbiAgICB0aGlzLmFkZFRyYW5zaXRpb25zRm9yU3RhdGVDaGVja1Rhc2tzQ2FuQmVDb21wbGV0ZWQoKTtcbiAgICB0aGlzLmFkZFRyYW5zaXRpb25zRm9yU3RhdGVUYXNrQ29tcGxldGVkT3JDYW5jZWxsZWQoKTtcbiAgICB0aGlzLmFkZFRyYW5zaXRpb25zRm9yU3RhdGVDb21wbGV0ZUV2ZW50QW5kVGFzaygpO1xuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tBc3NpZ25lZFRvQW5vdGhlclVzZXIoKTtcbiAgICB0aGlzLmFkZFRyYW5zaXRpb25zRm9yU3RhdGVUYXNrVW5hc3NpZ25lZCgpO1xuICB9XG5cbiAgcHVibGljIGVudHJ5QWN0aW9uRm9yU3RhdGVDaGVja1Rhc2tzQ2FuQmVDb21wbGV0ZWQoc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudENvbXBsZXRpb25TdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgY29uc3QgYXNzaWduTmVlZGVkID0gY29udGV4dC5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnYXNzaWduTmVlZGVkJyk7XG4gICAgY29udGV4dC53b3JrQWxsb2NhdGlvblNlcnZpY2UuZ2V0VGFzayhjb250ZXh0LnRhc2suaWQpLnN1YnNjcmliZShcbiAgICAgIHRhc2tSZXNwb25zZSA9PiB7XG4gICAgICAgIGlmICh0YXNrUmVzcG9uc2U/LnRhc2s/LnRhc2tfc3RhdGUpIHtcbiAgICAgICAgICBzd2l0Y2ggKHRhc2tSZXNwb25zZS50YXNrLnRhc2tfc3RhdGUudG9VcHBlckNhc2UoKSkge1xuICAgICAgICAgICAgY2FzZSBUYXNrU3RhdGUuVW5hc3NpZ25lZDpcbiAgICAgICAgICAgICAgLy8gVGFzayB1bmFzc2lnbmVkXG4gICAgICAgICAgICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRDb21wbGV0aW9uU3RhdGVzLlRhc2tVbmFzc2lnbmVkKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRhc2tTdGF0ZS5Db21wbGV0ZWQ6XG4gICAgICAgICAgICBjYXNlIFRhc2tTdGF0ZS5DYW5jZWxsZWQ6XG4gICAgICAgICAgICBjYXNlIFRhc2tTdGF0ZS5UZXJtaW5hdGVkOlxuICAgICAgICAgICAgICAvLyBUYXNrIGNvbXBsZXRlZCBvciBjYW5jZWxsZWRcbiAgICAgICAgICAgICAgc3RhdGUudHJpZ2dlcihFdmVudENvbXBsZXRpb25TdGF0ZXMuVGFza0NvbXBldGVkT3JDYW5jZWxsZWQpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVGFza1N0YXRlLkFzc2lnbmVkOlxuICAgICAgICAgICAgICAvLyBUYXNrIGlzIGluIGFzc2lnbmVkIHN0YXRlXG4gICAgICAgICAgICAgIGlmICh0YXNrUmVzcG9uc2UudGFzay5hc3NpZ25lZSA9PT0gY29udGV4dC50YXNrLmFzc2lnbmVlKSB7XG4gICAgICAgICAgICAgICAgLy8gVGFzayBzdGlsbCBhc3NpZ25lZCB0byBjdXJyZW50IHVzZXIsIGNvbXBsZXRlIGV2ZW50IGFuZCB0YXNrXG4gICAgICAgICAgICAgICAgc3RhdGUudHJpZ2dlcihFdmVudENvbXBsZXRpb25TdGF0ZXMuQ29tcGxldGVFdmVudEFuZFRhc2spO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFzc2lnbk5lZWRlZCA9PT0gJ3RydWUgLSBvdmVycmlkZScpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzIHdpbGwgdHJlYXQgdGFzayBhcyB1bmFzc2lnbmVkIGluc3RlYWQgb2YgcmVhc3NpZ25lZCB0byBjb21wbGV0ZSBhZnRlciB1c2VyIGNvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgIC8vIGFzc2lnbk5lZWRlZCB3aWxsIGFsc28gYmUgaW1tZWRpYXRlbHkgb3ZlcndyaXR0ZW4gdG8gdHJ1ZVxuICAgICAgICAgICAgICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRDb21wbGV0aW9uU3RhdGVzLlRhc2tVbmFzc2lnbmVkKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBUYXNrIGhhcyBiZWVuIHJlYXNzaWduZWQgdG8gYW5vdGhlciB1c2VyLCBkaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlYXNzaWduZWRUYXNrID0gdGFza1Jlc3BvbnNlLnRhc2s7XG4gICAgICAgICAgICAgICAgc3RhdGUudHJpZ2dlcihFdmVudENvbXBsZXRpb25TdGF0ZXMuVGFza0Fzc2lnbmVkVG9Bbm90aGVyVXNlcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAvLyBBbGxvdyB1c2VyIHRvIGNvbXBsZXRlIHRoZSBldmVudFxuICAgICAgICAgICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50Q29tcGxldGlvblN0YXRlcy5Db21wbGV0ZUV2ZW50QW5kVGFzayk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghdGFza1Jlc3BvbnNlPy50YXNrKSB7XG4gICAgICAgICAgY29udGV4dC5hbGVydFNlcnZpY2Uuc2V0UHJlc2VydmVBbGVydHModHJ1ZSk7XG4gICAgICAgICAgY29udGV4dC5hbGVydFNlcnZpY2Uud2FybmluZyh7IHBocmFzZTogJ1Rhc2sgc3RhdGVjaGVjayA6IG5vIHRhc2sgYXZhaWxhYmxlIGZvciBjb21wbGV0aW9uJywgcmVwbGFjZW1lbnRzOiB7fSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250ZXh0LmFsZXJ0U2VydmljZS5zZXRQcmVzZXJ2ZUFsZXJ0cyh0cnVlKTtcbiAgICAgICAgICBjb250ZXh0LmFsZXJ0U2VydmljZS53YXJuaW5nKHsgcGhyYXNlOiAnVGFzayBzdGF0ZWNoZWNrIDogbm8gdGFzayBzdGF0ZSBhdmFpbGFibGUgZm9yIGNvbXBsZXRpb24nLCByZXBsYWNlbWVudHM6IHt9IH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICBjb250ZXh0LmFsZXJ0U2VydmljZS5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZVRhc2tDb21wbGV0ZWRPckNhbmNlbGxlZChzdGF0ZTogU3RhdGUsIGNvbnRleHQ6IEV2ZW50Q29tcGxldGlvblN0YXRlTWFjaGluZUNvbnRleHQpOiB2b2lkIHtcbiAgICAvLyBUcmlnZ2VyIGZpbmFsIHN0YXRlIHRvIGNvbXBsZXRlIHByb2Nlc3Npbmcgb2Ygc3RhdGUgbWFjaGluZVxuICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRDb21wbGV0aW9uU3RhdGVzLkZpbmFsKTtcbiAgICAvLyBMb2FkIGNhc2UgZXZlbnQgY29tcGxldGlvbiB0YXNrIGNhbmNlbGxlZCBjb21wb25lbnRcbiAgICBjb250ZXh0LmNvbXBvbmVudC5zZXRUYXNrU3RhdGUoRXZlbnRDb21wbGV0aW9uVGFza1N0YXRlcy5UYXNrQ2FuY2VsbGVkKTtcbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlQ29tcGxldGVFdmVudEFuZFRhc2soc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudENvbXBsZXRpb25TdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgLy8gVHJpZ2dlciBmaW5hbCBzdGF0ZSB0byBjb21wbGV0ZSBwcm9jZXNzaW5nIG9mIHN0YXRlIG1hY2hpbmVcbiAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50Q29tcGxldGlvblN0YXRlcy5GaW5hbCk7XG4gICAgY29uc3QgY2xpZW50Q29udGV4dFN0ciA9IGNvbnRleHQuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2NsaWVudENvbnRleHQnKTtcbiAgICBjb25zdCB1c2VyVGFzayA9IEZpZWxkc1V0aWxzLmdldFVzZXJUYXNrRnJvbUNsaWVudENvbnRleHQoY2xpZW50Q29udGV4dFN0cik7XG4gICAgaWYgKHVzZXJUYXNrPy50YXNrX2RhdGEpIHtcbiAgICAgIGNvbnRleHQuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oJ2Fzc2lnbk5lZWRlZCcsICdmYWxzZScpO1xuICAgICAgLy8ganVzdCBzZXQgZXZlbnQgY2FuIGJlIGNvbXBsZXRlZFxuICAgICAgY29udGV4dC5jb21wb25lbnQuZXZlbnRDYW5CZUNvbXBsZXRlZC5lbWl0KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmFsZXJ0U2VydmljZS5zZXRQcmVzZXJ2ZUFsZXJ0cyh0cnVlKTtcbiAgICAgIGNvbnRleHQuYWxlcnRTZXJ2aWNlLndhcm5pbmcoe3BocmFzZTogJ0NvbXBsZXRlRXZlbnRBbmRUYXNrIDogbm8gdGFzayBhdmFpbGFibGUgZm9yIGNvbXBsZXRpb24nLCByZXBsYWNlbWVudHM6IHt9fSk7XG4gICAgICAvLyBFbWl0IGV2ZW50IGNhbm5vdCBiZSBjb21wbGV0ZWQgZXZlbnRcbiAgICAgIGNvbnRleHQuY29tcG9uZW50LmV2ZW50Q2FuQmVDb21wbGV0ZWQuZW1pdChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVudHJ5QWN0aW9uRm9yU3RhdGVUYXNrQXNzaWduZWRUb0Fub3RoZXJVc2VyKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRDb21wbGV0aW9uU3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIC8vIFRyaWdnZXIgZmluYWwgc3RhdGUgdG8gY29tcGxldGUgcHJvY2Vzc2luZyBvZiBzdGF0ZSBtYWNoaW5lXG4gICAgc3RhdGUudHJpZ2dlcihFdmVudENvbXBsZXRpb25TdGF0ZXMuRmluYWwpO1xuICAgIC8vIExvYWQgY2FzZSBldmVudCBjb21wbGV0aW9uIHRhc2sgcmVhc3NpZ25lZCBjb21wb25lbnRcbiAgICBjb250ZXh0LmNvbXBvbmVudC5zZXRUYXNrU3RhdGUoRXZlbnRDb21wbGV0aW9uVGFza1N0YXRlcy5UYXNrUmVhc3NpZ25lZCk7XG4gIH1cblxuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZVRhc2tVbmFzc2lnbmVkKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRDb21wbGV0aW9uU3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIC8vIFRyaWdnZXIgZmluYWwgc3RhdGUgdG8gY29tcGxldGUgcHJvY2Vzc2luZyBvZiBzdGF0ZSBtYWNoaW5lXG4gICAgc3RhdGUudHJpZ2dlcihFdmVudENvbXBsZXRpb25TdGF0ZXMuRmluYWwpO1xuICAgIGNvbnN0IGNsaWVudENvbnRleHRTdHIgPSBjb250ZXh0LnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCdjbGllbnRDb250ZXh0Jyk7XG4gICAgY29uc3QgdXNlclRhc2sgPSBGaWVsZHNVdGlscy5nZXRVc2VyVGFza0Zyb21DbGllbnRDb250ZXh0KGNsaWVudENvbnRleHRTdHIpO1xuICAgIGlmICh1c2VyVGFzaz8udGFza19kYXRhKSB7XG4gICAgICBjb250ZXh0LnNlc3Npb25TdG9yYWdlU2VydmljZS5zZXRJdGVtKCdhc3NpZ25OZWVkZWQnLCAndHJ1ZScpO1xuICAgICAgY29udGV4dC5jb21wb25lbnQuZXZlbnRDYW5CZUNvbXBsZXRlZC5lbWl0KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmFsZXJ0U2VydmljZS5zZXRQcmVzZXJ2ZUFsZXJ0cyh0cnVlKTtcbiAgICAgIGNvbnRleHQuYWxlcnRTZXJ2aWNlLndhcm5pbmcoe3BocmFzZTogJ1VuYXNzaWduZWQgdGFzayA6IG5vIHRhc2sgYXZhaWxhYmxlIGZvciBjb21wbGV0aW9uJywgcmVwbGFjZW1lbnRzOiB7fX0pO1xuICAgICAgLy8gRW1pdCBldmVudCBjYW5ub3QgYmUgY29tcGxldGVkIGV2ZW50XG4gICAgICBjb250ZXh0LmNvbXBvbmVudC5ldmVudENhbkJlQ29tcGxldGVkLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlRmluYWwoc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudENvbXBsZXRpb25TdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgLy8gRmluYWwgYWN0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIGhlcmUsIHRoZSBzdGF0ZSBtYWNoaW5lIGZpbmlzaGVkIHJ1bm5pbmdcbiAgICBjb25zb2xlLmxvZygnRklOQUwnKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9uc0ZvclN0YXRlQ2hlY2tUYXNrc0NhbkJlQ29tcGxldGVkKCk6IHZvaWQge1xuICAgIC8vIENvbXBsZXRlIGV2ZW50IGFuZCB0YXNrXG4gICAgdGhpcy5zdGF0ZUNoZWNrVGFza3NDYW5CZUNvbXBsZXRlZC5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRDb21wbGV0aW9uU3RhdGVzLkNvbXBsZXRlRXZlbnRBbmRUYXNrLFxuICAgICAgdGhpcy5zdGF0ZUNvbXBsZXRlRXZlbnRBbmRUYXNrXG4gICAgKTtcbiAgICAvLyBUYXNrIGNvbXBsZXRlZCBvciBjYW5jZWxsZWRcbiAgICB0aGlzLnN0YXRlQ2hlY2tUYXNrc0NhbkJlQ29tcGxldGVkLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudENvbXBsZXRpb25TdGF0ZXMuVGFza0NvbXBldGVkT3JDYW5jZWxsZWQsXG4gICAgICB0aGlzLnN0YXRlVGFza0NvbXBsZXRlZE9yQ2FuY2VsbGVkXG4gICAgKTtcbiAgICAvLyBUYXNrIGFzc2lnbmVkIHRvIGFub3RoZXIgdXNlclxuICAgIHRoaXMuc3RhdGVDaGVja1Rhc2tzQ2FuQmVDb21wbGV0ZWQuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50Q29tcGxldGlvblN0YXRlcy5UYXNrQXNzaWduZWRUb0Fub3RoZXJVc2VyLFxuICAgICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvQW5vdGhlclVzZXJcbiAgICApO1xuICAgIC8vIFRhc2sgdW5hc3NpZ25lZFxuICAgIHRoaXMuc3RhdGVDaGVja1Rhc2tzQ2FuQmVDb21wbGV0ZWQuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50Q29tcGxldGlvblN0YXRlcy5UYXNrVW5hc3NpZ25lZCxcbiAgICAgIHRoaXMuc3RhdGVUYXNrVW5hc3NpZ25lZFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tDb21wbGV0ZWRPckNhbmNlbGxlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlVGFza0NvbXBsZXRlZE9yQ2FuY2VsbGVkLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudENvbXBsZXRpb25TdGF0ZXMuRmluYWwsXG4gICAgICB0aGlzLnN0YXRlRmluYWxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zRm9yU3RhdGVDb21wbGV0ZUV2ZW50QW5kVGFzaygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlQ29tcGxldGVFdmVudEFuZFRhc2suYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50Q29tcGxldGlvblN0YXRlcy5GaW5hbCxcbiAgICAgIHRoaXMuc3RhdGVGaW5hbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tBc3NpZ25lZFRvQW5vdGhlclVzZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvQW5vdGhlclVzZXIuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50Q29tcGxldGlvblN0YXRlcy5GaW5hbCxcbiAgICAgIHRoaXMuc3RhdGVGaW5hbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tVbmFzc2lnbmVkKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVUYXNrVW5hc3NpZ25lZC5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRDb21wbGV0aW9uU3RhdGVzLkZpbmFsLFxuICAgICAgdGhpcy5zdGF0ZUZpbmFsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB0YXNrUHJlc2VudEluU2Vzc2lvblN0b3JhZ2UoY29udGV4dDogRXZlbnRDb21wbGV0aW9uU3RhdGVNYWNoaW5lQ29udGV4dCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNsaWVudENvbnRleHRTdHIgPSBjb250ZXh0LnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCdjbGllbnRDb250ZXh0Jyk7XG4gICAgY29uc3QgdXNlclRhc2sgPSBGaWVsZHNVdGlscy5nZXRVc2VyVGFza0Zyb21DbGllbnRDb250ZXh0KGNsaWVudENvbnRleHRTdHIpO1xuICAgIHJldHVybiAhIXVzZXJUYXNrLnRhc2tfZGF0YTtcbiAgfVxufVxuIl19
@@ -96,6 +96,8 @@ export class WorkAllocationService {
96
96
  */
97
97
  completeTask(taskId, eventName) {
98
98
  if (!this.isWAEnabled()) {
99
+ this.alertService.setPreserveAlerts(true);
100
+ this.alertService.warning({ phrase: 'completeTask: Work Allocation is not enabled, so the task could not be completed. Please complete the task associated with the case manually.' });
99
101
  return of(null);
100
102
  }
101
103
  this.appConfig.logMessage(`completeTask: completing ${taskId}`);
@@ -117,6 +119,8 @@ export class WorkAllocationService {
117
119
  */
118
120
  assignAndCompleteTask(taskId, eventName) {
119
121
  if (!this.isWAEnabled()) {
122
+ this.alertService.setPreserveAlerts(true);
123
+ this.alertService.warning({ phrase: 'assignAndCompleteTask: Work Allocation is not enabled, so the task could not be completed. Please complete the task associated with the case manually.' });
120
124
  return of(null);
121
125
  }
122
126
  this.appConfig.logMessage(`assignAndCompleteTask: completing ${taskId}`);
@@ -228,4 +232,4 @@ export class WorkAllocationService {
228
232
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WorkAllocationService, [{
229
233
  type: Injectable
230
234
  }], () => [{ type: i1.HttpService }, { type: i2.AbstractAppConfig }, { type: i1.HttpErrorService }, { type: i1.AlertService }, { type: i1.SessionStorageService }], null); })();
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay1hbGxvY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3Ivc2VydmljZXMvd29yay1hbGxvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFFdkcsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsMkJBQTJCLENBQUM7QUFHaEUsTUFBTSxPQUFPLHFCQUFxQjtJQU9iO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFWWixNQUFNLENBQUMsY0FBYyxHQUFHLDJCQUEyQixDQUFDO0lBQ3BELE1BQU0sQ0FBQyxhQUFhLEdBQUcsMEJBQTBCLENBQUM7SUFFakQsUUFBUSxDQUFrQjtJQUVsQyxZQUNtQixJQUFpQixFQUNqQixTQUE0QixFQUM1QixZQUE4QixFQUM5QixZQUEwQixFQUMxQixxQkFBNEM7UUFKNUMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUU3RCw2Q0FB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dkcsTUFBTSxjQUFjLEdBQWdCO1lBQ2xDLHVCQUF1QixFQUFFLEtBQUs7WUFDOUIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLHlCQUF5QixNQUFNLGFBQWEsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNqRixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEVBQUUsZUFBZSxNQUFNLFVBQVUsT0FBTyxhQUFhLFFBQVEsaUJBQWlCLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDOUosQ0FBQztJQUVGOztPQUVHO0lBQ0ksT0FBTyxDQUFDLE1BQWM7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sRUFBRSxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFlBQVksTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQzsrRUF2T1cscUJBQXFCO2dFQUFyQixxQkFBcUIsV0FBckIscUJBQXFCOztpRkFBckIscUJBQXFCO2NBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RBcHBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7IFRhc2tTZWFyY2hQYXJhbWV0ZXIsIFdBRmVhdHVyZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBVc2VyRGV0YWlscyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi91c2VyL3VzZXItZGV0YWlscy5tb2RlbCc7XG5pbXBvcnQgeyBUYXNrUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL3Rhc2stcmVzcG9uc2UubW9kZWwnO1xuaW1wb3J0IHsgVGFza1BheWxvYWQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL1Rhc2tQYXlsb2FkJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgSHR0cEVycm9yU2VydmljZSwgSHR0cFNlcnZpY2UsIFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcblxuZXhwb3J0IGNvbnN0IE1VTFRJUExFX1RBU0tTX0ZPVU5EID0gJ01vcmUgdGhhbiBvbmUgdGFzayBmb3VuZCEnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgV29ya0FsbG9jYXRpb25TZXJ2aWNlIHtcbiAgcHVibGljIHN0YXRpYyBpQUNDYXNlT2ZmaWNlciA9ICdjYXNld29ya2VyLWlhLWNhc2VvZmZpY2VyJztcbiAgcHVibGljIHN0YXRpYyBpQUNBZG1PZmZpY2VyID0gJ2Nhc2V3b3JrZXItaWEtYWRtb2ZmaWNlcic7XG5cbiAgcHJpdmF0ZSBmZWF0dXJlczogV0FGZWF0dXJlQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWc6IEFic3RyYWN0QXBwQ29uZmlnLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JTZXJ2aWNlOiBIdHRwRXJyb3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZVxuICApIHtcbiAgICAvLyBDaGVjayB0byBzZWUgaWYgd29yayBhbGxvY2F0aW9uIGlzIGVuYWJsZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIHRoZSBBUEkgdG8gZ2V0IHRhc2tzIG1hdGNoaW5nIHRoZSBzZWFyY2ggY3JpdGVyaWEuXG4gICAqIEBwYXJhbSBzZWFyY2hSZXF1ZXN0IFRoZSBzZWFyY2ggcGFyYW1ldGVycyB0aGF0IHNwZWNpZnkgd2hpY2ggdGFza3MgdG8gbWF0Y2guXG4gICAqL1xuICBwdWJsaWMgc2VhcmNoVGFza3Moc2VhcmNoUmVxdWVzdDogVGFza1NlYXJjaFBhcmFtZXRlcik6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgLy8gRG8gbm90IG5lZWQgdG8gY2hlY2sgaWYgV0EgZW5hYmxlZCBhcyBwYXJlbnQgbWV0aG9kIHdpbGwgZG8gdGhhdFxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBwQ29uZmlnLmdldFdvcmtBbGxvY2F0aW9uQXBpVXJsKCl9L3NlYXJjaEZvckNvbXBsZXRhYmxlYDtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh1cmwsIHtzZWFyY2hSZXF1ZXN0fSwgbnVsbCwgZmFsc2UpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIC8vIGV4cGxpY2l0bHkgZWF0IGF3YXkgNDAxIGVycm9yIGFuZCA0MDAgZXJyb3JcbiAgICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICYmIChlcnJvci5zdGF0dXMgPT09IDQwMSB8fCBlcnJvci5zdGF0dXMgPT09IDQwMCkpIHtcbiAgICAgICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBzdGF0dXMgNDAxIG9yIDQwMCcsIGVycm9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzV0FFbmFibGVkKGp1cmlzZGljdGlvbj86IHN0cmluZywgY2FzZVR5cGU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aGlzLmZlYXR1cmVzID0gdGhpcy5hcHBDb25maWcuZ2V0V0FTZXJ2aWNlQ29uZmlnKCk7XG4gICAgaWYgKHRoaXMuZmVhdHVyZXMpIHtcbiAgICAgIGNvbnN0IGZ0c3RyID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mZWF0dXJlcyk7XG4gICAgICB0aGlzLmFwcENvbmZpZz8ubG9nTWVzc2FnZShgaXNXQUVuYWJsZWQ6IHdhLXNlcnZpY2UtY29uZmlnIHJldHVybmluZyAke2Z0c3RyPy5sZW5ndGggPiAwfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFwcENvbmZpZz8ubG9nTWVzc2FnZShgaXNXQUVuYWJsZWQ6IHdhLXNlcnZpY2UtY29uZmlnIHJldHVybmluZyBubyBmZWF0dXJlc2ApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgZW5hYmxlZCA9IGZhbHNlO1xuICAgIGlmICghanVyaXNkaWN0aW9uIHx8ICFjYXNlVHlwZSkge1xuICAgICAgY29uc3QgY2FzZUluZm8gPSBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2Nhc2VJbmZvJykpO1xuICAgICAganVyaXNkaWN0aW9uID0gY2FzZUluZm8uanVyaXNkaWN0aW9uO1xuICAgICAgY2FzZVR5cGUgPSBjYXNlSW5mby5jYXNlVHlwZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmZlYXR1cmVzIHx8ICF0aGlzLmZlYXR1cmVzLmNvbmZpZ3VyYXRpb25zKSB7XG4gICAgICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKCdpc1dBRW5hYmxlZDogbm8gZmVhdHVyZXMnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5mZWF0dXJlcy5jb25maWd1cmF0aW9ucy5mb3JFYWNoKHNlcnZpY2VDb25maWcgPT4ge1xuICAgICAgaWYgKHNlcnZpY2VDb25maWcuc2VydmljZU5hbWUgPT09IGp1cmlzZGljdGlvbiAmJiAoc2VydmljZUNvbmZpZy5jYXNlVHlwZXMuaW5kZXhPZihjYXNlVHlwZSkgIT09IC0xKSkge1xuICAgICAgICAgIGVuYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGlzV0FFbmFibGVkOiByZXR1cm5pbmcgJHtlbmFibGVkfWApO1xuICAgIHJldHVybiBlbmFibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIEFQSSB0byBhc3NpZ24gYSB0YXNrLlxuICAgKiBAcGFyYW0gdGFza0lkIHNwZWNpZmllcyB3aGljaCB0YXNrIHNob3VsZCBiZSBhc3NpZ25lZC5cbiAgICogQHBhcmFtIHVzZXJJZCBzcGVjaWZpZXMgdGhlIHVzZXIgdGhlIHRhc2sgc2hvdWxkIGJlIGFzc2lnbmVkIHRvLlxuICAgKi9cbiAgcHVibGljIGFzc2lnblRhc2sodGFza0lkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS90YXNrLyR7dGFza0lkfS9hc3NpZ25gO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHVybCwge3VzZXJJZH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCB0aGUgQVBJIHRvIGNvbXBsZXRlIGEgdGFzay5cbiAgICogQHBhcmFtIHRhc2tJZCBzcGVjaWZpZXMgd2hpY2ggdGFzayBzaG91bGQgYmUgY29tcGxldGVkLlxuICAgKi9cbiAgcHVibGljIGNvbXBsZXRlVGFzayh0YXNrSWQ6IHN0cmluZywgZXZlbnROYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKGBjb21wbGV0ZVRhc2s6IGNvbXBsZXRpbmcgJHt0YXNrSWR9YCk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcHBDb25maWcuZ2V0V29ya0FsbG9jYXRpb25BcGlVcmwoKX0vdGFzay8ke3Rhc2tJZH0vY29tcGxldGVgO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHVybCwgeyBhY3Rpb25CeUV2ZW50OiB0cnVlLCBldmVudE5hbWU6IGV2ZW50TmFtZSB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAvLyB0aGlzIHdpbGwgc3Vic2NyaWJlIHRvIGdldCB0aGUgdXNlciBkZXRhaWxzIGFuZCBkZWNpZGUgd2hldGhlciB0byBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2VcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0KHRoaXMuYXBwQ29uZmlnLmdldFVzZXJJbmZvQXBpVXJsKCkpLnBpcGUobWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlKSkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVUYXNrQ29tcGxldGlvbkVycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIEFQSSB0byBhc3NpZ24gYW5kIGNvbXBsZXRlIGEgdGFzay5cbiAgICogQHBhcmFtIHRhc2tJZCBzcGVjaWZpZXMgd2hpY2ggdGFzayBzaG91bGQgYmUgY29tcGxldGVkLlxuICAgKi9cbiAgcHVibGljIGFzc2lnbkFuZENvbXBsZXRlVGFzayh0YXNrSWQ6IHN0cmluZywgZXZlbnROYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKGBhc3NpZ25BbmRDb21wbGV0ZVRhc2s6IGNvbXBsZXRpbmcgJHt0YXNrSWR9YCk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcHBDb25maWcuZ2V0V29ya0FsbG9jYXRpb25BcGlVcmwoKX0vdGFzay8ke3Rhc2tJZH0vY29tcGxldGVgO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHVybCwge1xuICAgICAgICBjb21wbGV0aW9uX29wdGlvbnM6IHtcbiAgICAgICAgICBhc3NpZ25fYW5kX2NvbXBsZXRlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGlvbkJ5RXZlbnQ6IHRydWUsXG4gICAgICAgIGV2ZW50TmFtZTogZXZlbnROYW1lXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAvLyB0aGlzIHdpbGwgc3Vic2NyaWJlIHRvIGdldCB0aGUgdXNlciBkZXRhaWxzIGFuZCBkZWNpZGUgd2hldGhlciB0byBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2VcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0KHRoaXMuYXBwQ29uZmlnLmdldFVzZXJJbmZvQXBpVXJsKCkpLnBpcGUobWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlKSkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVUYXNrQ29tcGxldGlvbkVycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIHJlc3BvbnNlIGZyb20gdGhlIG9ic2VydmFibGUgdG8gZ2V0IHRoZSB1c2VyIGRldGFpbHMgd2hlbiB0YXNrIGlzIGNvbXBsZXRlZC5cbiAgICogQHBhcmFtIHJlc3BvbnNlIGlzIHRoZSByZXNwb25zZSBnaXZlbiBmcm9tIHRoZSBvYnNlcnZhYmxlIHdoaWNoIGNvbnRhaW5zIHRoZSB1c2VyIGRldGFpbGQuXG4gICAqL1xuICBwdWJsaWMgaGFuZGxlVGFza0NvbXBsZXRpb25FcnJvcihyZXNwb25zZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdXNlckRldGFpbHMgPSByZXNwb25zZSBhcyBVc2VyRGV0YWlscztcbiAgICBpZiAodGhpcy51c2VySXNDYXNld29ya2VyKHVzZXJEZXRhaWxzLnVzZXJJbmZvLnJvbGVzKSkge1xuICAgICAgLy8gd2hlbiBzdWJtaXR0aW5nIHRoZSBjb21wbGV0aW9uIG9mIHRhc2sgaWYgbm90IHlldCByZW5kZXJlZCBjYXNlcy9jYXNlIGNvbmZpcm0gdGhlbiBwcmVzZXJ2ZSB0aGUgYWxlcnQgZm9yIHJlLXJlbmRlcmluZ1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2V0UHJlc2VydmVBbGVydHModHJ1ZSwgWydjYXNlcy9jYXNlJywgJ3N1Ym1pdCddKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm5pbmcoeyBwaHJhc2U6J0EgdGFzayBjb3VsZCBub3QgYmUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gUGxlYXNlIGNvbXBsZXRlIHRoZSB0YXNrIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2FzZSBtYW51YWxseS4nfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdXNlcidzIHJvbGUgaXMgZXF1aXZhbGVudCB0byBhIGNhc2V3b3JrZXIuXG4gICAqIEBwYXJhbSByb2xlcyBpcyB0aGUgbGlzdCBvZiByb2xlcyBmb3VuZCBmcm9tIHRoZSBjdXJyZW50IHVzZXIuXG4gICAqL1xuICBwdWJsaWMgdXNlcklzQ2FzZXdvcmtlcihyb2xlczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBsb3dlckNhc2VSb2xlcyA9IHJvbGVzLm1hcChyb2xlID0+IHJvbGUudG9Mb3dlckNhc2UoKSk7XG4gICAgLy8gV2hlbi9pZiBsaWIgJiB0YXJnZXQgcGVybWFuZW50bHkgY2hhbmdlIHRvIGVzMjAxNiwgcmVwbGFjZSBpbmRleE9mIHdpdGggaW5jbHVkZXNcbiAgICByZXR1cm4gKGxvd2VyQ2FzZVJvbGVzLmluZGV4T2YoV29ya0FsbG9jYXRpb25TZXJ2aWNlLmlBQ0Nhc2VPZmZpY2VyKSAhPT0gLTEpXG4gICAgICB8fCAobG93ZXJDYXNlUm9sZXMuaW5kZXhPZihXb3JrQWxsb2NhdGlvblNlcnZpY2UuaUFDQWRtT2ZmaWNlcikgIT09IC0xKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rIGZvciBvcGVuIHRhc2tzIGZvciBhIGNhc2UgYW5kIGV2ZW50IGNvbWJpbmF0aW9uLiBUaGVyZSBhcmUgNSBwb3NzaWJsZSBzY2VuYXJpb3M6XG4gICAqICAgMS4gTm8gdGFza3MgZm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBTdWNjZXNzLlxuICAgKiAgIDIuIE9uZSB0YXNrIGZvdW5kID0+IE1hcmsgYXMgZG9uZSAgICAgICAgICAgICAgPT4gU3VjY2Vzcy5cbiAgICogICAzLiBPbmUgdGFzayBmb3VuZCA9PiBNYXJrIGFzIGRvbmUgdGhyb3dzIGVycm9yID0+IEZhaWx1cmUuXG4gICAqICAgNC4gTW9yZSB0aGFuIG9uZSB0YXNrIGZvdW5kICAgICAgICAgICAgICAgICAgICA9PiBGYWlsdXJlLlxuICAgKiAgIDUuIFNlYXJjaCBjYWxsIHRocm93cyBhbiBlcnJvciAgICAgICAgICAgICAgICAgPT4gRmFpbHVyZS5cbiAgICogQHBhcmFtIGNjZElkIFRoZSBJRCBvZiB0aGUgY2FzZSB0byBmaW5kIHRhc2tzIGZvci5cbiAgICogQHBhcmFtIGV2ZW50SWQgVGhlIElEIG9mIHRoZSBldmVudCB0byBmaW5kIHRhc2tzIGZvci5cbiAgICovXG4gIHB1YmxpYyBjb21wbGV0ZUFwcHJvcHJpYXRlVGFzayhjY2RJZDogc3RyaW5nLCBldmVudElkOiBzdHJpbmcsIGp1cmlzZGljdGlvbjogc3RyaW5nLCBjYXNlVHlwZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghdGhpcy5pc1dBRW5hYmxlZChqdXJpc2RpY3Rpb24sIGNhc2VUeXBlSWQpKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICAgIGNvbnN0IHRhc2tTZWFyY2hQYXJhbWV0ZXI6IFRhc2tTZWFyY2hQYXJhbWV0ZXIgPSB7XG4gICAgICBjY2RJZCxcbiAgICAgIGV2ZW50SWQsXG4gICAgICBqdXJpc2RpY3Rpb24sXG4gICAgICBjYXNlVHlwZUlkXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hUYXNrcyh0YXNrU2VhcmNoUGFyYW1ldGVyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhc2tzOiBhbnlbXSA9IHJlc3BvbnNlLnRhc2tzO1xuICAgICAgICAgIGlmICh0YXNrcyAmJiB0YXNrcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAodGFza3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgIHRoaXMuY29tcGxldGVUYXNrKHRhc2tzWzBdLmlkLCBldmVudElkKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBwcm9ibGVtLiBUaHJvdyBhbiBhcHByb3ByaWF0ZSBlcnJvci5cbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKE1VTFRJUExFX1RBU0tTX0ZPVU5EKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7IC8vIEFsbCBnb29kLiBOb3RoaW5nIHRvIHNlZSBoZXJlLlxuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgLy8gU2ltcGx5IHJldGhyb3cgaXQuXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGFza3MgZm9yIGNhc2UgYW5kIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIGdldFRhc2tzQnlDYXNlSWRBbmRFdmVudElkKGV2ZW50SWQ6IHN0cmluZywgY2FzZUlkOiBzdHJpbmcsIGNhc2VUeXBlOiBzdHJpbmcsIGp1cmlzZGljdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxUYXNrUGF5bG9hZD4ge1xuICAgIGNvbnN0IGRlZmF1bHRQYXlsb2FkOiBUYXNrUGF5bG9hZCA9IHtcbiAgICAgIHRhc2tfcmVxdWlyZWRfZm9yX2V2ZW50OiBmYWxzZSxcbiAgICAgIHRhc2tzOiBbXVxuICAgIH07XG4gICAgaWYgKCF0aGlzLmlzV0FFbmFibGVkKCkpIHtcbiAgICAgIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGlzV0FFbmFibGVkIGZhbHNlIGZvciAke2Nhc2VJZH0gaW4gZXZlbnQgJHtldmVudElkfWApO1xuICAgICAgcmV0dXJuIG9mKGRlZmF1bHRQYXlsb2FkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hcHBDb25maWcuZ2V0V29ya0FsbG9jYXRpb25BcGlVcmwoKX0vY2FzZS90YXNrcy8ke2Nhc2VJZH0vZXZlbnQvJHtldmVudElkfS9jYXNlVHlwZS8ke2Nhc2VUeXBlfS9qdXJpc2RpY3Rpb24vJHtqdXJpc2RpY3Rpb259YCk7XG4gIH1cblxuIC8qKlxuICAqIENhbGwgdGhlIEFQSSB0byBnZXQgYSB0YXNrXG4gICovXG4gcHVibGljIGdldFRhc2sodGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRhc2tSZXNwb25zZT4ge1xuICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgIHJldHVybiBvZih7dGFzazogbnVsbH0pO1xuICB9XG4gIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGdldFRhc2s6ICR7dGFza0lkfWApO1xuICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS90YXNrLyR7dGFza0lkfWApO1xuIH1cbn1cbiJdfQ==
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay1hbGxvY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3Ivc2VydmljZXMvd29yay1hbGxvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFFdkcsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsMkJBQTJCLENBQUM7QUFHaEUsTUFBTSxPQUFPLHFCQUFxQjtJQU9iO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFWWixNQUFNLENBQUMsY0FBYyxHQUFHLDJCQUEyQixDQUFDO0lBQ3BELE1BQU0sQ0FBQyxhQUFhLEdBQUcsMEJBQTBCLENBQUM7SUFFakQsUUFBUSxDQUFrQjtJQUVsQyxZQUNtQixJQUFpQixFQUNqQixTQUE0QixFQUM1QixZQUE4QixFQUM5QixZQUEwQixFQUMxQixxQkFBNEM7UUFKNUMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUU3RCw2Q0FB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Q0FBQyx1QkFBdUIsRUFBRSxTQUFTLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQzsrRUEzT1cscUJBQXFCO2dFQUFyQixxQkFBcUIsV0FBckIscUJBQXFCOztpRkFBckIscUJBQXFCO2NBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RBcHBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7IFRhc2tTZWFyY2hQYXJhbWV0ZXIsIFdBRmVhdHVyZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBVc2VyRGV0YWlscyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi91c2VyL3VzZXItZGV0YWlscy5tb2RlbCc7XG5pbXBvcnQgeyBUYXNrUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL3Rhc2stcmVzcG9uc2UubW9kZWwnO1xuaW1wb3J0IHsgVGFza1BheWxvYWQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL1Rhc2tQYXlsb2FkJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgSHR0cEVycm9yU2VydmljZSwgSHR0cFNlcnZpY2UsIFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcblxuZXhwb3J0IGNvbnN0IE1VTFRJUExFX1RBU0tTX0ZPVU5EID0gJ01vcmUgdGhhbiBvbmUgdGFzayBmb3VuZCEnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgV29ya0FsbG9jYXRpb25TZXJ2aWNlIHtcbiAgcHVibGljIHN0YXRpYyBpQUNDYXNlT2ZmaWNlciA9ICdjYXNld29ya2VyLWlhLWNhc2VvZmZpY2VyJztcbiAgcHVibGljIHN0YXRpYyBpQUNBZG1PZmZpY2VyID0gJ2Nhc2V3b3JrZXItaWEtYWRtb2ZmaWNlcic7XG5cbiAgcHJpdmF0ZSBmZWF0dXJlczogV0FGZWF0dXJlQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWc6IEFic3RyYWN0QXBwQ29uZmlnLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JTZXJ2aWNlOiBIdHRwRXJyb3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZVxuICApIHtcbiAgICAvLyBDaGVjayB0byBzZWUgaWYgd29yayBhbGxvY2F0aW9uIGlzIGVuYWJsZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIHRoZSBBUEkgdG8gZ2V0IHRhc2tzIG1hdGNoaW5nIHRoZSBzZWFyY2ggY3JpdGVyaWEuXG4gICAqIEBwYXJhbSBzZWFyY2hSZXF1ZXN0IFRoZSBzZWFyY2ggcGFyYW1ldGVycyB0aGF0IHNwZWNpZnkgd2hpY2ggdGFza3MgdG8gbWF0Y2guXG4gICAqL1xuICBwdWJsaWMgc2VhcmNoVGFza3Moc2VhcmNoUmVxdWVzdDogVGFza1NlYXJjaFBhcmFtZXRlcik6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgLy8gRG8gbm90IG5lZWQgdG8gY2hlY2sgaWYgV0EgZW5hYmxlZCBhcyBwYXJlbnQgbWV0aG9kIHdpbGwgZG8gdGhhdFxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBwQ29uZmlnLmdldFdvcmtBbGxvY2F0aW9uQXBpVXJsKCl9L3NlYXJjaEZvckNvbXBsZXRhYmxlYDtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh1cmwsIHtzZWFyY2hSZXF1ZXN0fSwgbnVsbCwgZmFsc2UpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIC8vIGV4cGxpY2l0bHkgZWF0IGF3YXkgNDAxIGVycm9yIGFuZCA0MDAgZXJyb3JcbiAgICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICYmIChlcnJvci5zdGF0dXMgPT09IDQwMSB8fCBlcnJvci5zdGF0dXMgPT09IDQwMCkpIHtcbiAgICAgICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBzdGF0dXMgNDAxIG9yIDQwMCcsIGVycm9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzV0FFbmFibGVkKGp1cmlzZGljdGlvbj86IHN0cmluZywgY2FzZVR5cGU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aGlzLmZlYXR1cmVzID0gdGhpcy5hcHBDb25maWcuZ2V0V0FTZXJ2aWNlQ29uZmlnKCk7XG4gICAgaWYgKHRoaXMuZmVhdHVyZXMpIHtcbiAgICAgIGNvbnN0IGZ0c3RyID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mZWF0dXJlcyk7XG4gICAgICB0aGlzLmFwcENvbmZpZz8ubG9nTWVzc2FnZShgaXNXQUVuYWJsZWQ6IHdhLXNlcnZpY2UtY29uZmlnIHJldHVybmluZyAke2Z0c3RyPy5sZW5ndGggPiAwfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFwcENvbmZpZz8ubG9nTWVzc2FnZShgaXNXQUVuYWJsZWQ6IHdhLXNlcnZpY2UtY29uZmlnIHJldHVybmluZyBubyBmZWF0dXJlc2ApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgZW5hYmxlZCA9IGZhbHNlO1xuICAgIGlmICghanVyaXNkaWN0aW9uIHx8ICFjYXNlVHlwZSkge1xuICAgICAgY29uc3QgY2FzZUluZm8gPSBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2Nhc2VJbmZvJykpO1xuICAgICAganVyaXNkaWN0aW9uID0gY2FzZUluZm8uanVyaXNkaWN0aW9uO1xuICAgICAgY2FzZVR5cGUgPSBjYXNlSW5mby5jYXNlVHlwZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmZlYXR1cmVzIHx8ICF0aGlzLmZlYXR1cmVzLmNvbmZpZ3VyYXRpb25zKSB7XG4gICAgICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKCdpc1dBRW5hYmxlZDogbm8gZmVhdHVyZXMnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5mZWF0dXJlcy5jb25maWd1cmF0aW9ucy5mb3JFYWNoKHNlcnZpY2VDb25maWcgPT4ge1xuICAgICAgaWYgKHNlcnZpY2VDb25maWcuc2VydmljZU5hbWUgPT09IGp1cmlzZGljdGlvbiAmJiAoc2VydmljZUNvbmZpZy5jYXNlVHlwZXMuaW5kZXhPZihjYXNlVHlwZSkgIT09IC0xKSkge1xuICAgICAgICAgIGVuYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGlzV0FFbmFibGVkOiByZXR1cm5pbmcgJHtlbmFibGVkfWApO1xuICAgIHJldHVybiBlbmFibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIEFQSSB0byBhc3NpZ24gYSB0YXNrLlxuICAgKiBAcGFyYW0gdGFza0lkIHNwZWNpZmllcyB3aGljaCB0YXNrIHNob3VsZCBiZSBhc3NpZ25lZC5cbiAgICogQHBhcmFtIHVzZXJJZCBzcGVjaWZpZXMgdGhlIHVzZXIgdGhlIHRhc2sgc2hvdWxkIGJlIGFzc2lnbmVkIHRvLlxuICAgKi9cbiAgcHVibGljIGFzc2lnblRhc2sodGFza0lkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS90YXNrLyR7dGFza0lkfS9hc3NpZ25gO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHVybCwge3VzZXJJZH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCB0aGUgQVBJIHRvIGNvbXBsZXRlIGEgdGFzay5cbiAgICogQHBhcmFtIHRhc2tJZCBzcGVjaWZpZXMgd2hpY2ggdGFzayBzaG91bGQgYmUgY29tcGxldGVkLlxuICAgKi9cbiAgcHVibGljIGNvbXBsZXRlVGFzayh0YXNrSWQ6IHN0cmluZywgZXZlbnROYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2V0UHJlc2VydmVBbGVydHModHJ1ZSk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuaW5nKHsgcGhyYXNlOidjb21wbGV0ZVRhc2s6IFdvcmsgQWxsb2NhdGlvbiBpcyBub3QgZW5hYmxlZCwgc28gdGhlIHRhc2sgY291bGQgbm90IGJlIGNvbXBsZXRlZC4gUGxlYXNlIGNvbXBsZXRlIHRoZSB0YXNrIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2FzZSBtYW51YWxseS4nfSk7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICAgIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGNvbXBsZXRlVGFzazogY29tcGxldGluZyAke3Rhc2tJZH1gKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS90YXNrLyR7dGFza0lkfS9jb21wbGV0ZWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodXJsLCB7IGFjdGlvbkJ5RXZlbnQ6IHRydWUsIGV2ZW50TmFtZTogZXZlbnROYW1lIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIC8vIHRoaXMgd2lsbCBzdWJzY3JpYmUgdG8gZ2V0IHRoZSB1c2VyIGRldGFpbHMgYW5kIGRlY2lkZSB3aGV0aGVyIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZVxuICAgICAgICAgIHRoaXMuaHR0cC5nZXQodGhpcy5hcHBDb25maWcuZ2V0VXNlckluZm9BcGlVcmwoKSkucGlwZShtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UpKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVRhc2tDb21wbGV0aW9uRXJyb3IocmVzcG9uc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCB0aGUgQVBJIHRvIGFzc2lnbiBhbmQgY29tcGxldGUgYSB0YXNrLlxuICAgKiBAcGFyYW0gdGFza0lkIHNwZWNpZmllcyB3aGljaCB0YXNrIHNob3VsZCBiZSBjb21wbGV0ZWQuXG4gICAqL1xuICBwdWJsaWMgYXNzaWduQW5kQ29tcGxldGVUYXNrKHRhc2tJZDogc3RyaW5nLCBldmVudE5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghdGhpcy5pc1dBRW5hYmxlZCgpKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zZXRQcmVzZXJ2ZUFsZXJ0cyh0cnVlKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm5pbmcoeyBwaHJhc2U6J2Fzc2lnbkFuZENvbXBsZXRlVGFzazogV29yayBBbGxvY2F0aW9uIGlzIG5vdCBlbmFibGVkLCBzbyB0aGUgdGFzayBjb3VsZCBub3QgYmUgY29tcGxldGVkLiBQbGVhc2UgY29tcGxldGUgdGhlIHRhc2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBjYXNlIG1hbnVhbGx5Lid9KTtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG4gICAgdGhpcy5hcHBDb25maWcubG9nTWVzc2FnZShgYXNzaWduQW5kQ29tcGxldGVUYXNrOiBjb21wbGV0aW5nICR7dGFza0lkfWApO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBwQ29uZmlnLmdldFdvcmtBbGxvY2F0aW9uQXBpVXJsKCl9L3Rhc2svJHt0YXNrSWR9L2NvbXBsZXRlYDtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh1cmwsIHtcbiAgICAgICAgY29tcGxldGlvbl9vcHRpb25zOiB7XG4gICAgICAgICAgYXNzaWduX2FuZF9jb21wbGV0ZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBhY3Rpb25CeUV2ZW50OiB0cnVlLFxuICAgICAgICBldmVudE5hbWU6IGV2ZW50TmFtZVxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yU2VydmljZS5zZXRFcnJvcihlcnJvcik7XG4gICAgICAgICAgLy8gdGhpcyB3aWxsIHN1YnNjcmliZSB0byBnZXQgdGhlIHVzZXIgZGV0YWlscyBhbmQgZGVjaWRlIHdoZXRoZXIgdG8gZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlXG4gICAgICAgICAgdGhpcy5odHRwLmdldCh0aGlzLmFwcENvbmZpZy5nZXRVc2VySW5mb0FwaVVybCgpKS5waXBlKG1hcChyZXNwb25zZSA9PiByZXNwb25zZSkpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVGFza0NvbXBsZXRpb25FcnJvcihyZXNwb25zZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSByZXNwb25zZSBmcm9tIHRoZSBvYnNlcnZhYmxlIHRvIGdldCB0aGUgdXNlciBkZXRhaWxzIHdoZW4gdGFzayBpcyBjb21wbGV0ZWQuXG4gICAqIEBwYXJhbSByZXNwb25zZSBpcyB0aGUgcmVzcG9uc2UgZ2l2ZW4gZnJvbSB0aGUgb2JzZXJ2YWJsZSB3aGljaCBjb250YWlucyB0aGUgdXNlciBkZXRhaWxkLlxuICAgKi9cbiAgcHVibGljIGhhbmRsZVRhc2tDb21wbGV0aW9uRXJyb3IocmVzcG9uc2U6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHVzZXJEZXRhaWxzID0gcmVzcG9uc2UgYXMgVXNlckRldGFpbHM7XG4gICAgaWYgKHRoaXMudXNlcklzQ2FzZXdvcmtlcih1c2VyRGV0YWlscy51c2VySW5mby5yb2xlcykpIHtcbiAgICAgIC8vIHdoZW4gc3VibWl0dGluZyB0aGUgY29tcGxldGlvbiBvZiB0YXNrIGlmIG5vdCB5ZXQgcmVuZGVyZWQgY2FzZXMvY2FzZSBjb25maXJtIHRoZW4gcHJlc2VydmUgdGhlIGFsZXJ0IGZvciByZS1yZW5kZXJpbmdcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNldFByZXNlcnZlQWxlcnRzKHRydWUsIFsnY2FzZXMvY2FzZScsICdzdWJtaXQnXSk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuaW5nKHsgcGhyYXNlOidBIHRhc2sgY291bGQgbm90IGJlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIFBsZWFzZSBjb21wbGV0ZSB0aGUgdGFzayBhc3NvY2lhdGVkIHdpdGggdGhlIGNhc2UgbWFudWFsbHkuJ30pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHVzZXIncyByb2xlIGlzIGVxdWl2YWxlbnQgdG8gYSBjYXNld29ya2VyLlxuICAgKiBAcGFyYW0gcm9sZXMgaXMgdGhlIGxpc3Qgb2Ygcm9sZXMgZm91bmQgZnJvbSB0aGUgY3VycmVudCB1c2VyLlxuICAgKi9cbiAgcHVibGljIHVzZXJJc0Nhc2V3b3JrZXIocm9sZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbG93ZXJDYXNlUm9sZXMgPSByb2xlcy5tYXAocm9sZSA9PiByb2xlLnRvTG93ZXJDYXNlKCkpO1xuICAgIC8vIFdoZW4vaWYgbGliICYgdGFyZ2V0IHBlcm1hbmVudGx5IGNoYW5nZSB0byBlczIwMTYsIHJlcGxhY2UgaW5kZXhPZiB3aXRoIGluY2x1ZGVzXG4gICAgcmV0dXJuIChsb3dlckNhc2VSb2xlcy5pbmRleE9mKFdvcmtBbGxvY2F0aW9uU2VydmljZS5pQUNDYXNlT2ZmaWNlcikgIT09IC0xKVxuICAgICAgfHwgKGxvd2VyQ2FzZVJvbGVzLmluZGV4T2YoV29ya0FsbG9jYXRpb25TZXJ2aWNlLmlBQ0FkbU9mZmljZXIpICE9PSAtMSk7XG4gIH1cblxuICAvKipcbiAgICogTG9vayBmb3Igb3BlbiB0YXNrcyBmb3IgYSBjYXNlIGFuZCBldmVudCBjb21iaW5hdGlvbi4gVGhlcmUgYXJlIDUgcG9zc2libGUgc2NlbmFyaW9zOlxuICAgKiAgIDEuIE5vIHRhc2tzIGZvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gU3VjY2Vzcy5cbiAgICogICAyLiBPbmUgdGFzayBmb3VuZCA9PiBNYXJrIGFzIGRvbmUgICAgICAgICAgICAgID0+IFN1Y2Nlc3MuXG4gICAqICAgMy4gT25lIHRhc2sgZm91bmQgPT4gTWFyayBhcyBkb25lIHRocm93cyBlcnJvciA9PiBGYWlsdXJlLlxuICAgKiAgIDQuIE1vcmUgdGhhbiBvbmUgdGFzayBmb3VuZCAgICAgICAgICAgICAgICAgICAgPT4gRmFpbHVyZS5cbiAgICogICA1LiBTZWFyY2ggY2FsbCB0aHJvd3MgYW4gZXJyb3IgICAgICAgICAgICAgICAgID0+IEZhaWx1cmUuXG4gICAqIEBwYXJhbSBjY2RJZCBUaGUgSUQgb2YgdGhlIGNhc2UgdG8gZmluZCB0YXNrcyBmb3IuXG4gICAqIEBwYXJhbSBldmVudElkIFRoZSBJRCBvZiB0aGUgZXZlbnQgdG8gZmluZCB0YXNrcyBmb3IuXG4gICAqL1xuICBwdWJsaWMgY29tcGxldGVBcHByb3ByaWF0ZVRhc2soY2NkSWQ6IHN0cmluZywgZXZlbnRJZDogc3RyaW5nLCBqdXJpc2RpY3Rpb246IHN0cmluZywgY2FzZVR5cGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoanVyaXNkaWN0aW9uLCBjYXNlVHlwZUlkKSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICBjb25zdCB0YXNrU2VhcmNoUGFyYW1ldGVyOiBUYXNrU2VhcmNoUGFyYW1ldGVyID0ge1xuICAgICAgY2NkSWQsXG4gICAgICBldmVudElkLFxuICAgICAganVyaXNkaWN0aW9uLFxuICAgICAgY2FzZVR5cGVJZFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoVGFza3ModGFza1NlYXJjaFBhcmFtZXRlcilcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB0YXNrczogYW55W10gPSByZXNwb25zZS50YXNrcztcbiAgICAgICAgICBpZiAodGFza3MgJiYgdGFza3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHRhc2tzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlVGFzayh0YXNrc1swXS5pZCwgZXZlbnRJZCkuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcHJvYmxlbS4gVGhyb3cgYW4gYXBwcm9wcmlhdGUgZXJyb3IuXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihNVUxUSVBMRV9UQVNLU19GT1VORCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBBbGwgZ29vZC4gTm90aGluZyB0byBzZWUgaGVyZS5cbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIC8vIFNpbXBseSByZXRocm93IGl0LlxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRhc2tzIGZvciBjYXNlIGFuZCBldmVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRUYXNrc0J5Q2FzZUlkQW5kRXZlbnRJZChldmVudElkOiBzdHJpbmcsIGNhc2VJZDogc3RyaW5nLCBjYXNlVHlwZTogc3RyaW5nLCBqdXJpc2RpY3Rpb246IHN0cmluZyk6IE9ic2VydmFibGU8VGFza1BheWxvYWQ+IHtcbiAgICBjb25zdCBkZWZhdWx0UGF5bG9hZDogVGFza1BheWxvYWQgPSB7XG4gICAgICB0YXNrX3JlcXVpcmVkX2Zvcl9ldmVudDogZmFsc2UsXG4gICAgICB0YXNrczogW11cbiAgICB9O1xuICAgIGlmICghdGhpcy5pc1dBRW5hYmxlZCgpKSB7XG4gICAgICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKGBpc1dBRW5hYmxlZCBmYWxzZSBmb3IgJHtjYXNlSWR9IGluIGV2ZW50ICR7ZXZlbnRJZH1gKTtcbiAgICAgIHJldHVybiBvZihkZWZhdWx0UGF5bG9hZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuYXBwQ29uZmlnLmdldFdvcmtBbGxvY2F0aW9uQXBpVXJsKCl9L2Nhc2UvdGFza3MvJHtjYXNlSWR9L2V2ZW50LyR7ZXZlbnRJZH0vY2FzZVR5cGUvJHtjYXNlVHlwZX0vanVyaXNkaWN0aW9uLyR7anVyaXNkaWN0aW9ufWApO1xuICB9XG5cbiAvKipcbiAgKiBDYWxsIHRoZSBBUEkgdG8gZ2V0IGEgdGFza1xuICAqL1xuIHB1YmxpYyBnZXRUYXNrKHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUYXNrUmVzcG9uc2U+IHtcbiAgaWYgKCF0aGlzLmlzV0FFbmFibGVkKCkpIHtcbiAgICByZXR1cm4gb2Yoe3Rhc2s6IG51bGx9KTtcbiAgfVxuICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKGBnZXRUYXNrOiAke3Rhc2tJZH1gKTtcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hcHBDb25maWcuZ2V0V29ya0FsbG9jYXRpb25BcGlVcmwoKX0vdGFzay8ke3Rhc2tJZH1gKTtcbiB9XG59XG4iXX0=
@@ -39,10 +39,9 @@ function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template(rf, c
39
39
  i0.ɵɵelementStart(7, "span", 17);
40
40
  i0.ɵɵtext(8);
41
41
  i0.ɵɵpipe(9, "ccdDate");
42
- i0.ɵɵpipe(10, "date");
43
42
  i0.ɵɵelementEnd()();
44
- i0.ɵɵelementStart(11, "div", 18)(12, "ccd-case-file-view-folder-document-actions", 19);
45
- i0.ɵɵlistener("changeFolderAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_changeFolderAction_12_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("changeFolder", node_r2)); })("openInANewTabAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_openInANewTabAction_12_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("openInANewTab", node_r2)); })("downloadAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_downloadAction_12_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("download", node_r2)); })("printAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_printAction_12_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("print", node_r2)); });
43
+ i0.ɵɵelementStart(10, "div", 18)(11, "ccd-case-file-view-folder-document-actions", 19);
44
+ i0.ɵɵlistener("changeFolderAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_changeFolderAction_11_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("changeFolder", node_r2)); })("openInANewTabAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_openInANewTabAction_11_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("openInANewTab", node_r2)); })("downloadAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_downloadAction_11_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("download", node_r2)); })("printAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_printAction_11_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("print", node_r2)); });
46
45
  i0.ɵɵelementEnd()()()();
47
46
  } if (rf & 2) {
48
47
  const node_r2 = ctx.$implicit;
@@ -52,8 +51,8 @@ function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template(rf, c
52
51
  i0.ɵɵadvance(4);
53
52
  i0.ɵɵtextInterpolate1(" ", node_r2.name, " ");
54
53
  i0.ɵɵadvance(3);
55
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(10, 8, i0.ɵɵpipeBind2(9, 5, node_r2.upload_timestamp, "local"), "dd MMM YYYY HH:mm"));
56
- i0.ɵɵadvance(4);
54
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(9, 5, node_r2.upload_timestamp, "local", "dd MMM YYYY HH:mm"));
55
+ i0.ɵɵadvance(3);
57
56
  i0.ɵɵproperty("allowMoving", ctx_r2.allowMoving);
58
57
  } }
59
58
  function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_5_Template(rf, ctx) { if (rf & 1) {
@@ -86,7 +85,7 @@ function CaseFileViewFolderComponent_div_8_Template(rf, ctx) { if (rf & 1) {
86
85
  i0.ɵɵelementStart(0, "div", 7);
87
86
  i0.ɵɵtemplate(1, CaseFileViewFolderComponent_div_8_div_1_Template, 2, 0, "div", 8);
88
87
  i0.ɵɵelementStart(2, "div")(3, "cdk-tree", 9);
89
- i0.ɵɵtemplate(4, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template, 13, 11, "cdk-nested-tree-node", 10)(5, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_5_Template, 10, 6, "cdk-nested-tree-node", 11);
88
+ i0.ɵɵtemplate(4, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template, 12, 9, "cdk-nested-tree-node", 10)(5, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_5_Template, 10, 6, "cdk-nested-tree-node", 11);
90
89
  i0.ɵɵelementEnd()()();
91
90
  } if (rf & 2) {
92
91
  const ctx_r2 = i0.ɵɵnextContext();
@@ -342,11 +341,11 @@ export class CaseFileViewFolderComponent {
342
341
  i0.ɵɵtextInterpolate1("Documents (", ctx.documentCount, ")");
343
342
  i0.ɵɵadvance(3);
344
343
  i0.ɵɵproperty("ngIf", ctx.documentTreeData);
345
- } }, dependencies: [i5.NgIf, i6.DefaultValueAccessor, i6.NgControlStatus, i6.NgControlStatusGroup, i6.FormGroupDirective, i6.FormControlName, i7.CdkNestedTreeNode, i7.CdkTreeNodeDef, i7.CdkTreeNodeToggle, i7.CdkTree, i7.CdkTreeNodeOutlet, i8.CaseFileViewFolderSortComponent, i9.CaseFileViewFolderDocumentActionsComponent, i5.DatePipe, i10.DatePipe], styles: ["[_nghost-%COMP%]{display:flex;height:100%;flex-direction:column}[_nghost-%COMP%] .document-tree-container[_ngcontent-%COMP%]{flex:1 0}.document-filter-container[_ngcontent-%COMP%]{border-bottom:2px solid #C9C9C9}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%]{padding:10px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%] .document-search[_ngcontent-%COMP%]{background:url(/assets/images/icon-search-black.svg) no-repeat right #fff;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container[_ngcontent-%COMP%] .documents-title[_ngcontent-%COMP%]{height:30%;margin-left:8px;font-weight:700}.document-tree-container[_ngcontent-%COMP%]{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node[_ngcontent-%COMP%]{display:block}.document-tree-container__node[_ngcontent-%COMP%] .document-tree-container__node[_ngcontent-%COMP%]{padding-left:40px}.document-tree-container[_ngcontent-%COMP%] .document-tree-invisible[_ngcontent-%COMP%]{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:7px}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-button{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-track-piece{background:#eee}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#ccc}.document-folders-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title[_ngcontent-%COMP%]{font-weight:700}.node[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected[_ngcontent-%COMP%]{background:#fff2cc}.node__icon[_ngcontent-%COMP%]{position:relative;display:inline-block}.node__count[_ngcontent-%COMP%]{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg[_ngcontent-%COMP%]{display:block;height:30px;width:30px}.node__name[_ngcontent-%COMP%]{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options[_ngcontent-%COMP%]{margin-left:auto;margin-right:0}.node__document-upload-timestamp[_ngcontent-%COMP%]{font-size:.8rem;float:left;padding-left:10px}"] });
344
+ } }, dependencies: [i5.NgIf, i6.DefaultValueAccessor, i6.NgControlStatus, i6.NgControlStatusGroup, i6.FormGroupDirective, i6.FormControlName, i7.CdkNestedTreeNode, i7.CdkTreeNodeDef, i7.CdkTreeNodeToggle, i7.CdkTree, i7.CdkTreeNodeOutlet, i8.CaseFileViewFolderSortComponent, i9.CaseFileViewFolderDocumentActionsComponent, i10.DatePipe], styles: ["[_nghost-%COMP%]{display:flex;height:100%;flex-direction:column}[_nghost-%COMP%] .document-tree-container[_ngcontent-%COMP%]{flex:1 0}.document-filter-container[_ngcontent-%COMP%]{border-bottom:2px solid #C9C9C9}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%]{padding:10px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%] .document-search[_ngcontent-%COMP%]{background:url(/assets/images/icon-search-black.svg) no-repeat right #fff;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container[_ngcontent-%COMP%] .documents-title[_ngcontent-%COMP%]{height:30%;margin-left:8px;font-weight:700}.document-tree-container[_ngcontent-%COMP%]{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node[_ngcontent-%COMP%]{display:block}.document-tree-container__node[_ngcontent-%COMP%] .document-tree-container__node[_ngcontent-%COMP%]{padding-left:40px}.document-tree-container[_ngcontent-%COMP%] .document-tree-invisible[_ngcontent-%COMP%]{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:7px}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-button{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-track-piece{background:#eee}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#ccc}.document-folders-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title[_ngcontent-%COMP%]{font-weight:700}.node[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected[_ngcontent-%COMP%]{background:#fff2cc}.node__icon[_ngcontent-%COMP%]{position:relative;display:inline-block}.node__count[_ngcontent-%COMP%]{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg[_ngcontent-%COMP%]{display:block;height:30px;width:30px}.node__name[_ngcontent-%COMP%]{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options[_ngcontent-%COMP%]{margin-left:auto;margin-right:0}.node__document-upload-timestamp[_ngcontent-%COMP%]{font-size:.8rem;float:left;padding-left:10px}"] });
346
345
  }
347
346
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewFolderComponent, [{
348
347
  type: Component,
349
- args: [{ selector: 'ccd-case-file-view-folder', template: "<div class=\"document-filter-container\">\n <div class=\"form-group document-filter\" [formGroup]=\"documentFilterFormGroup\">\n <input class=\"form-control document-search\"\n type=\"search\"\n id=\"document-search\"\n name=\"documentSearchFormControl\"\n formControlName=\"documentSearchFormControl\"\n placeholder=\"Search by document name\"\n aria-label=\"Search by document name\">\n </div>\n</div>\n\n<div class=\"document-folders-header\">\n <div class=\"document-folders-header__title\">Documents ({{ documentCount }})</div>\n <div>\n <ccd-case-file-view-folder-sort\n (sortAscending)=\"sortDataSourceAscending($event)\"\n (sortDescending)=\"sortDataSourceDescending($event)\"\n ></ccd-case-file-view-folder-sort>\n </div>\n</div>\n\n<div class=\"document-tree-container\" *ngIf=\"documentTreeData\">\n <div *ngIf=\"!nestedDataSource || nestedDataSource.length === 0\">\n No results found\n </div>\n <div>\n <cdk-tree [dataSource]=\"nestedDataSource\" [treeControl]=\"nestedTreeControl\">\n <!-- document -->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__node--document\" *cdkTreeNodeDef=\"let node\">\n <button class=\"node\" (click)=\"selectedNodeItem = node; clickedDocument.emit(node)\"\n [class.node--selected]=\"selectedNodeItem?.name === node.name\">\n <div class=\"node__icon\" disabled>\n <img src=\"/assets/img/case-file-view/case-file-view-document.svg\" class=\"node__iconImg\" alt=\"Document icon\">\n </div>\n <span class=\"node__name node-name-document\">\n {{node.name}}\n <br>\n <span class=\"node__document-upload-timestamp\">{{node.upload_timestamp | ccdDate : 'local' | date:\"dd MMM YYYY HH:mm\"}}</span>\n </span>\n <div class=\"node__document-options\">\n <ccd-case-file-view-folder-document-actions\n (changeFolderAction)=\"triggerDocumentAction('changeFolder', node)\"\n (openInANewTabAction)=\"triggerDocumentAction('openInANewTab', node)\"\n (downloadAction)=\"triggerDocumentAction('download', node)\"\n (printAction)=\"triggerDocumentAction('print', node)\"\n [allowMoving]=\"allowMoving\"\n >\n </ccd-case-file-view-folder-document-actions>\n </div>\n </button>\n </cdk-nested-tree-node>\n <!-- folder-->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__folder\" *cdkTreeNodeDef=\"let node; when: nestedChildren\">\n <button class=\"node\" cdkTreeNodeToggle>\n <div class=\"node__icon\" [attr.aria-label]=\"'toggle ' + node.name\" >\n <img class=\"node__iconImg\"\n [src]=\"nestedTreeControl.isExpanded(node) ? '/assets/images/folder-open.png' : '/assets/images/folder.png'\" alt=\"Folder icon\">\n <span class=\"node__count\">{{node.childDocumentCount}}</span>\n </div>\n <span class=\"node__name node__name--folder\">{{node.name}}</span>\n </button>\n\n <div [class.document-tree-invisible]=\"!nestedTreeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column}:host .document-tree-container{flex:1 0}.document-filter-container{border-bottom:2px solid #C9C9C9}.document-filter-container .document-filter{padding:10px}.document-filter-container .document-filter .document-search{background:url(/assets/images/icon-search-black.svg) no-repeat right #fff;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container .documents-title{height:30%;margin-left:8px;font-weight:700}.document-tree-container{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node{display:block}.document-tree-container__node .document-tree-container__node{padding-left:40px}.document-tree-container .document-tree-invisible{display:none}.document-tree-container::-webkit-scrollbar{width:7px}.document-tree-container::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container::-webkit-scrollbar-button{display:none}.document-tree-container::-webkit-scrollbar-track-piece{background:#eee}.document-tree-container::-webkit-scrollbar-thumb{background:#ccc}.document-folders-header{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title{font-weight:700}.node{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected{background:#fff2cc}.node__icon{position:relative;display:inline-block}.node__count{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg{display:block;height:30px;width:30px}.node__name{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options{margin-left:auto;margin-right:0}.node__document-upload-timestamp{font-size:.8rem;float:left;padding-left:10px}\n"] }]
348
+ args: [{ selector: 'ccd-case-file-view-folder', template: "<div class=\"document-filter-container\">\n <div class=\"form-group document-filter\" [formGroup]=\"documentFilterFormGroup\">\n <input class=\"form-control document-search\"\n type=\"search\"\n id=\"document-search\"\n name=\"documentSearchFormControl\"\n formControlName=\"documentSearchFormControl\"\n placeholder=\"Search by document name\"\n aria-label=\"Search by document name\">\n </div>\n</div>\n\n<div class=\"document-folders-header\">\n <div class=\"document-folders-header__title\">Documents ({{ documentCount }})</div>\n <div>\n <ccd-case-file-view-folder-sort\n (sortAscending)=\"sortDataSourceAscending($event)\"\n (sortDescending)=\"sortDataSourceDescending($event)\"\n ></ccd-case-file-view-folder-sort>\n </div>\n</div>\n\n<div class=\"document-tree-container\" *ngIf=\"documentTreeData\">\n <div *ngIf=\"!nestedDataSource || nestedDataSource.length === 0\">\n No results found\n </div>\n <div>\n <cdk-tree [dataSource]=\"nestedDataSource\" [treeControl]=\"nestedTreeControl\">\n <!-- document -->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__node--document\" *cdkTreeNodeDef=\"let node\">\n <button class=\"node\" (click)=\"selectedNodeItem = node; clickedDocument.emit(node)\"\n [class.node--selected]=\"selectedNodeItem?.name === node.name\">\n <div class=\"node__icon\" disabled>\n <img src=\"/assets/img/case-file-view/case-file-view-document.svg\" class=\"node__iconImg\" alt=\"Document icon\">\n </div>\n <span class=\"node__name node-name-document\">\n {{node.name}}\n <br>\n <span class=\"node__document-upload-timestamp\">{{node.upload_timestamp | ccdDate : 'local' :'dd MMM YYYY HH:mm'}}</span>\n </span>\n <div class=\"node__document-options\">\n <ccd-case-file-view-folder-document-actions\n (changeFolderAction)=\"triggerDocumentAction('changeFolder', node)\"\n (openInANewTabAction)=\"triggerDocumentAction('openInANewTab', node)\"\n (downloadAction)=\"triggerDocumentAction('download', node)\"\n (printAction)=\"triggerDocumentAction('print', node)\"\n [allowMoving]=\"allowMoving\"\n >\n </ccd-case-file-view-folder-document-actions>\n </div>\n </button>\n </cdk-nested-tree-node>\n <!-- folder-->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__folder\" *cdkTreeNodeDef=\"let node; when: nestedChildren\">\n <button class=\"node\" cdkTreeNodeToggle>\n <div class=\"node__icon\" [attr.aria-label]=\"'toggle ' + node.name\" >\n <img class=\"node__iconImg\"\n [src]=\"nestedTreeControl.isExpanded(node) ? '/assets/images/folder-open.png' : '/assets/images/folder.png'\" alt=\"Folder icon\">\n <span class=\"node__count\">{{node.childDocumentCount}}</span>\n </div>\n <span class=\"node__name node__name--folder\">{{node.name}}</span>\n </button>\n\n <div [class.document-tree-invisible]=\"!nestedTreeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column}:host .document-tree-container{flex:1 0}.document-filter-container{border-bottom:2px solid #C9C9C9}.document-filter-container .document-filter{padding:10px}.document-filter-container .document-filter .document-search{background:url(/assets/images/icon-search-black.svg) no-repeat right #fff;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container .documents-title{height:30%;margin-left:8px;font-weight:700}.document-tree-container{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node{display:block}.document-tree-container__node .document-tree-container__node{padding-left:40px}.document-tree-container .document-tree-invisible{display:none}.document-tree-container::-webkit-scrollbar{width:7px}.document-tree-container::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container::-webkit-scrollbar-button{display:none}.document-tree-container::-webkit-scrollbar-track-piece{background:#eee}.document-tree-container::-webkit-scrollbar-thumb{background:#ccc}.document-folders-header{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title{font-weight:700}.node{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected{background:#fff2cc}.node__icon{position:relative;display:inline-block}.node__count{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg{display:block;height:30px;width:30px}.node__name{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options{margin-left:auto;margin-right:0}.node__document-upload-timestamp{font-size:.8rem;float:left;padding-left:10px}\n"] }]
350
349
  }], () => [{ type: i1.WindowService }, { type: i2.Router }, { type: i1.DocumentManagementService }, { type: i3.MatLegacyDialog }, { type: i4.AbstractAppConfig }], { categoriesAndDocuments: [{
351
350
  type: Input
352
351
  }], allowMoving: [{
@@ -357,4 +356,4 @@ export class CaseFileViewFolderComponent {
357
356
  type: Output
358
357
  }] }); })();
359
358
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFileViewFolderComponent, { className: "CaseFileViewFolderComponent", filePath: "lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.ts", lineNumber: 27 }); })();
360
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZm9sZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvY2FzZS1maWxlLXZpZXctZm9sZGVyL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZpbGUtdmlldy9jb21wb25lbnRzL2Nhc2UtZmlsZS12aWV3LWZvbGRlci9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFnQixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBR0wsdUJB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LGVBQWUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQztRQUM5QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDYixDQUFDO3FGQXhRVSwyQkFBMkI7NkRBQTNCLDJCQUEyQjtZQ3pCdEMsQUFERiw4QkFBdUMsYUFDeUM7WUFDNUUsMkJBTXVDO1lBRTNDLEFBREUsaUJBQU0sRUFDRjtZQUdKLEFBREYsOEJBQXFDLGFBQ1M7WUFBQSxZQUErQjtZQUFBLGlCQUFNO1lBRS9FLEFBREYsMkJBQUssd0NBSUY7WUFEQyxBQURBLHNKQUFpQixtQ0FBK0IsSUFBQywySUFDL0Isb0NBQWdDLElBQUM7WUFHekQsQUFERSxBQURHLGlCQUFpQyxFQUM5QixFQUNGO1lBRU4sNEVBQThEOztZQXJCcEIsY0FBcUM7WUFBckMsdURBQXFDO1lBWWpDLGVBQStCO1lBQS9CLDREQUErQjtZQVN2QyxlQUFzQjtZQUF0QiwyQ0FBc0I7OztpRkRJL0MsMkJBQTJCO2NBTHZDLFNBQVM7MkJBQ0UsMkJBQTJCO3lLQVNyQixzQkFBc0I7a0JBQXJDLEtBQUs7WUFDVSxXQUFXO2tCQUExQixLQUFLO1lBQ1csZUFBZTtrQkFBL0IsTUFBTTtZQUNVLFlBQVk7a0JBQTVCLE1BQU07O2tGQVJJLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5lc3RlZFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nIGFzIE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RBcHBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7XG4gIENhc2VGaWxlVmlld0NhdGVnb3J5LFxuICBDYXNlRmlsZVZpZXdEb2N1bWVudCxcbiAgQ2FzZUZpbGVWaWV3U29ydENvbHVtbnMsXG4gIENhdGVnb3JpZXNBbmREb2N1bWVudHMsXG4gIERvY3VtZW50VHJlZU5vZGUsXG4gIERvY3VtZW50VHJlZU5vZGVUeXBlXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbi9jYXNlLWZpbGUtdmlldyc7XG5pbXBvcnQgeyBTb3J0T3JkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4vc29ydC1vcmRlci5lbnVtJztcbmltcG9ydCB7IERvY3VtZW50TWFuYWdlbWVudFNlcnZpY2UsIFdpbmRvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDYXNlRmlsZVZpZXdGb2xkZXJTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL2Nhc2UtZmlsZS12aWV3LWZvbGRlci1zZWxlY3Rvci9jYXNlLWZpbGUtdmlldy1mb2xkZXItc2VsZWN0b3IuY29tcG9uZW50JztcbmV4cG9ydCBjb25zdCBNRURJQV9WSUVXRVJfTE9DQUxTVE9SQUdFX0tFWSA9ICdtZWRpYS12aWV3ZXItaW5mbyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWZpbGUtdmlldy1mb2xkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1maWxlLXZpZXctZm9sZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FzZS1maWxlLXZpZXctZm9sZGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENhc2VGaWxlVmlld0ZvbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVU5DQVRFR09SSVNFRF9ET0NVTUVOVFNfVElUTEUgPSAnVW5jYXRlZ29yaXNlZCBkb2N1bWVudHMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBET0NVTUVOVF9TRUFSQ0hfRk9STV9DT05UUk9MX05BTUUgPSAnZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1JTklNVU1fU0VBUkNIX0NIQVJBQ1RFUlMgPSAxO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzOiBPYnNlcnZhYmxlPENhdGVnb3JpZXNBbmREb2N1bWVudHM+O1xuICBASW5wdXQoKSBwdWJsaWMgYWxsb3dNb3Zpbmc6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xpY2tlZERvY3VtZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxEb2N1bWVudFRyZWVOb2RlPigpO1xuICBAT3V0cHV0KCkgcHVibGljIG1vdmVEb2N1bWVudCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBuZXdDYXRlZ29yeTogc3RyaW5nLCBkb2N1bWVudDogRG9jdW1lbnRUcmVlTm9kZSB9PigpO1xuXG4gIHB1YmxpYyBuZXN0ZWRUcmVlQ29udHJvbDogTmVzdGVkVHJlZUNvbnRyb2w8RG9jdW1lbnRUcmVlTm9kZT47XG4gIHB1YmxpYyBuZXN0ZWREYXRhU291cmNlOiBEb2N1bWVudFRyZWVOb2RlW107XG4gIHB1YmxpYyBjYXRlZ29yaWVzOiBDYXNlRmlsZVZpZXdDYXRlZ29yeVtdID0gW107XG4gIHB1YmxpYyBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBzZWxlY3RlZE5vZGVJdGVtOiBEb2N1bWVudFRyZWVOb2RlIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBkb2N1bWVudEZpbHRlckZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwdWJsaWMgZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBkb2N1bWVudFRyZWVEYXRhOiBEb2N1bWVudFRyZWVOb2RlW107XG4gIHB1YmxpYyBkb2N1bWVudEZpbHRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgc2VhcmNoVGVybUxlbmd0aDogbnVtYmVyO1xuXG4gIHByaXZhdGUgZ2V0Q2hpbGRyZW4gPSAobm9kZTogRG9jdW1lbnRUcmVlTm9kZSkgPT4gb2Yobm9kZS5jaGlsZHJlbik7XG4gIHB1YmxpYyBuZXN0ZWRDaGlsZHJlbiA9IChfOiBudW1iZXIsIG5vZGVEYXRhOiBEb2N1bWVudFRyZWVOb2RlKSA9PiBub2RlRGF0YS5jaGlsZHJlbjtcbiAgcHVibGljIGdldCBkb2N1bWVudENvdW50KCkge1xuICAgIGlmICh0aGlzLm5lc3RlZERhdGFTb3VyY2U/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMubmVzdGVkRGF0YVNvdXJjZS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gYWNjICsgaXRlbS5jaGlsZERvY3VtZW50Q291bnQ7XG4gICAgICB9LCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3dTZXJ2aWNlOiBXaW5kb3dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudE1hbmFnZW1lbnRTZXJ2aWNlOiBEb2N1bWVudE1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWc6IEFic3RyYWN0QXBwQ29uZmlnXG4gICkge1xuICAgIHRoaXMubmVzdGVkVHJlZUNvbnRyb2wgPSBuZXcgTmVzdGVkVHJlZUNvbnRyb2w8RG9jdW1lbnRUcmVlTm9kZT4odGhpcy5nZXRDaGlsZHJlbik7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudEZpbHRlckZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgIHRoaXMuZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gICAgdGhpcy5kb2N1bWVudEZpbHRlckZvcm1Hcm91cC5hZGRDb250cm9sKENhc2VGaWxlVmlld0ZvbGRlckNvbXBvbmVudC5ET0NVTUVOVF9TRUFSQ0hfRk9STV9DT05UUk9MX05BTUUsIHRoaXMuZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbCk7XG5cbiAgICAvLyBMaXN0ZW4gdG8gc2VhcmNoIGlucHV0IGFuZCBpbml0aWF0ZSBmaWx0ZXIgZG9jdW1lbnRzIGlmIGF0IGxlYXN0IHRocmVlIGNoYXJhY3RlcnMgZW50ZXJlZFxuICAgIHRoaXMuZG9jdW1lbnRGaWx0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLmRvY3VtZW50U2VhcmNoRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICB0YXAoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gdGhpcy5zZWFyY2hUZXJtTGVuZ3RoID0gc2VhcmNoVGVybS5sZW5ndGgpLFxuICAgICAgc3dpdGNoTWFwKChzZWFyY2hUZXJtOiBzdHJpbmcpID0+IHRoaXMuZmlsdGVyKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSkucGlwZSgpKVxuICAgICkuc3Vic2NyaWJlKGRvY3VtZW50VHJlZURhdGEgPT4ge1xuICAgICAgdGhpcy5uZXN0ZWREYXRhU291cmNlID0gZG9jdW1lbnRUcmVlRGF0YTtcbiAgICAgIHRoaXMubmVzdGVkVHJlZUNvbnRyb2wuZGF0YU5vZGVzID0gZG9jdW1lbnRUcmVlRGF0YTtcbiAgICAgIHRoaXMuc2VhcmNoVGVybUxlbmd0aCA+PSBDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQuTUlOSU1VTV9TRUFSQ0hfQ0hBUkFDVEVSU1xuICAgICAgICA/IHRoaXMubmVzdGVkVHJlZUNvbnRyb2wuZXhwYW5kQWxsKClcbiAgICAgICAgOiB0aGlzLm5lc3RlZFRyZWVDb250cm9sLmNvbGxhcHNlQWxsKCk7XG4gICAgfSk7XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gdGhlIGlucHV0IGNhdGVnb3JpZXMgYW5kIGRvY3VtZW50cywgYW5kIGdlbmVyYXRlIHRyZWUgZGF0YSBhbmQgaW5pdGlhbGlzZSBjZGsgdHJlZVxuICAgIHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbiA9IHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50cy5zdWJzY3JpYmUoY2F0ZWdvcmllc0FuZERvY3VtZW50cyA9PiB7XG4gICAgICBjb25zdCBjYXRlZ29yaWVzID0gY2F0ZWdvcmllc0FuZERvY3VtZW50cy5jYXRlZ29yaWVzO1xuICAgICAgdGhpcy5jYXRlZ29yaWVzID0gY2F0ZWdvcmllcztcbiAgICAgIC8vIEdlbmVyYXRlIGRvY3VtZW50IHRyZWUgZGF0YSBmcm9tIGNhdGVnb3JpZXNcbiAgICAgIHRoaXMuZG9jdW1lbnRUcmVlRGF0YSA9IHRoaXMuZ2VuZXJhdGVUcmVlRGF0YShjYXRlZ29yaWVzKTtcbiAgICAgIC8vIEFwcGVuZCB1bmNhdGVnb3Jpc2VkIGRvY3VtZW50c1xuICAgICAgaWYgKGNhdGVnb3JpZXNBbmREb2N1bWVudHMudW5jYXRlZ29yaXNlZF9kb2N1bWVudHMgJiYgY2F0ZWdvcmllc0FuZERvY3VtZW50cy51bmNhdGVnb3Jpc2VkX2RvY3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHVuY2F0ZWdvcmlzZWREb2N1bWVudHMgPSB0aGlzLmdldFVuY2F0ZWdvcmlzZWREb2N1bWVudHMoY2F0ZWdvcmllc0FuZERvY3VtZW50cy51bmNhdGVnb3Jpc2VkX2RvY3VtZW50cyk7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRUcmVlRGF0YS5wdXNoKHVuY2F0ZWdvcmlzZWREb2N1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICAvLyBJbml0aWFsaXNlIGNkayB0cmVlIHdpdGggZ2VuZXJhdGVkIGRhdGFcbiAgICAgIHRoaXMubmVzdGVkRGF0YVNvdXJjZSA9IHRoaXMuZG9jdW1lbnRUcmVlRGF0YTtcbiAgICAgIHRoaXMubmVzdGVkVHJlZUNvbnRyb2wuZGF0YU5vZGVzID0gdGhpcy5kb2N1bWVudFRyZWVEYXRhO1xuICAgICAgdGhpcy5zb3J0RGF0YVNvdXJjZURlc2NlbmRpbmcoQ2FzZUZpbGVWaWV3U29ydENvbHVtbnMuRE9DVU1FTlRfVVBMT0FEX1RJTUVTVEFNUCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVUcmVlRGF0YShjYXRlZ29yaWVzOiBDYXNlRmlsZVZpZXdDYXRlZ29yeVtdKTogRG9jdW1lbnRUcmVlTm9kZVtdIHtcbiAgICByZXR1cm4gY2F0ZWdvcmllcy5yZWR1Y2UoKHRyZWUsIG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld0RvY3VtZW50VHJlZU5vZGUgPSBuZXcgRG9jdW1lbnRUcmVlTm9kZSgpO1xuICAgICAgbmV3RG9jdW1lbnRUcmVlTm9kZS5uYW1lID0gbm9kZS5jYXRlZ29yeV9uYW1lO1xuICAgICAgbmV3RG9jdW1lbnRUcmVlTm9kZS50eXBlID0gRG9jdW1lbnRUcmVlTm9kZVR5cGUuRk9MREVSO1xuICAgICAgbmV3RG9jdW1lbnRUcmVlTm9kZS5jaGlsZHJlbiA9IFsuLi50aGlzLmdlbmVyYXRlVHJlZURhdGEobm9kZS5zdWJfY2F0ZWdvcmllcyksIC4uLnRoaXMuZ2V0RG9jdW1lbnRzKG5vZGUuZG9jdW1lbnRzKV07XG4gICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLmNhdGVnb3J5X29yZGVyID0gbm9kZS5jYXRlZ29yeV9vcmRlcjtcblxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4udHJlZSxcbiAgICAgICAgbmV3RG9jdW1lbnRUcmVlTm9kZSxcbiAgICAgIF0uc29ydCgoYSxiKSA9PiBhLmNhdGVnb3J5X29yZGVyIC0gYi5jYXRlZ29yeV9vcmRlcik7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgcHVibGljIGdldERvY3VtZW50cyhkb2N1bWVudHM6IENhc2VGaWxlVmlld0RvY3VtZW50W10pOiBEb2N1bWVudFRyZWVOb2RlW10ge1xuICAgIGNvbnN0IGRvY3VtZW50c1RvUmV0dXJuOiBEb2N1bWVudFRyZWVOb2RlW10gPSBbXTtcbiAgICBkb2N1bWVudHMuZm9yRWFjaChkb2N1bWVudCA9PiB7XG4gICAgICBjb25zdCBkb2N1bWVudFRyZWVOb2RlID0gbmV3IERvY3VtZW50VHJlZU5vZGUoKTtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUubmFtZSA9IGRvY3VtZW50LmRvY3VtZW50X2ZpbGVuYW1lO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS50eXBlID0gRG9jdW1lbnRUcmVlTm9kZVR5cGUuRE9DVU1FTlQ7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLmRvY3VtZW50X2ZpbGVuYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRfZmlsZW5hbWU7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLmRvY3VtZW50X2JpbmFyeV91cmwgPSBkb2N1bWVudC5kb2N1bWVudF9iaW5hcnlfdXJsO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5hdHRyaWJ1dGVfcGF0aCA9IGRvY3VtZW50LmF0dHJpYnV0ZV9wYXRoO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS51cGxvYWRfdGltZXN0YW1wID0gdGhpcy5hcHBDb25maWcuZ2V0RW5hYmxlQ2FzZUZpbGVWaWV3VmVyc2lvbjFfMSgpXG4gICAgICAgICAgJiYgZG9jdW1lbnQudXBsb2FkX3RpbWVzdGFtcCA/IGRvY3VtZW50LnVwbG9hZF90aW1lc3RhbXAudG9TdHJpbmcoKSA6ICcnO1xuXG4gICAgICBkb2N1bWVudHNUb1JldHVybi5wdXNoKGRvY3VtZW50VHJlZU5vZGUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRvY3VtZW50c1RvUmV0dXJuO1xuICB9XG5cbiAgcHVibGljIGdldFVuY2F0ZWdvcmlzZWREb2N1bWVudHModW5jYXRlZ29yaXNlZERvY3VtZW50czogQ2FzZUZpbGVWaWV3RG9jdW1lbnRbXSk6IERvY3VtZW50VHJlZU5vZGUge1xuICAgIGNvbnN0IGRvY3VtZW50czogRG9jdW1lbnRUcmVlTm9kZVtdID0gW107XG4gICAgdW5jYXRlZ29yaXNlZERvY3VtZW50cy5mb3JFYWNoKGRvY3VtZW50ID0+IHtcbiAgICAgIGNvbnN0IGRvY3VtZW50VHJlZU5vZGUgPSBuZXcgRG9jdW1lbnRUcmVlTm9kZSgpO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5uYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRfZmlsZW5hbWU7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLnR5cGUgPSBEb2N1bWVudFRyZWVOb2RlVHlwZS5ET0NVTUVOVDtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfZmlsZW5hbWUgPSBkb2N1bWVudC5kb2N1bWVudF9maWxlbmFtZTtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfYmluYXJ5X3VybCA9IGRvY3VtZW50LmRvY3VtZW50X2JpbmFyeV91cmw7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLmF0dHJpYnV0ZV9wYXRoID0gZG9jdW1lbnQuYXR0cmlidXRlX3BhdGg7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLnVwbG9hZF90aW1lc3RhbXAgPSB0aGlzLmFwcENvbmZpZy5nZXRFbmFibGVDYXNlRmlsZVZpZXdWZXJzaW9uMV8xKClcbiAgICAgICAgICAmJiBkb2N1bWVudC51cGxvYWRfdGltZXN0YW1wID8gZG9jdW1lbnQudXBsb2FkX3RpbWVzdGFtcC50b1N0cmluZygpIDogJyc7XG5cbiAgICAgIGRvY3VtZW50cy5wdXNoKGRvY3VtZW50VHJlZU5vZGUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdW5jYXRlZ29yaXNlZE5vZGUgPSBuZXcgRG9jdW1lbnRUcmVlTm9kZSgpO1xuICAgIHVuY2F0ZWdvcmlzZWROb2RlLm5hbWUgPSBDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQuVU5DQVRFR09SSVNFRF9ET0NVTUVOVFNfVElUTEU7XG4gICAgdW5jYXRlZ29yaXNlZE5vZGUudHlwZSA9IERvY3VtZW50VHJlZU5vZGVUeXBlLkZPTERFUjtcbiAgICB1bmNhdGVnb3Jpc2VkTm9kZS5jaGlsZHJlbiA9IGRvY3VtZW50cztcblxuICAgIHJldHVybiB1bmNhdGVnb3Jpc2VkTm9kZTtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXIoc2VhcmNoVGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxEb2N1bWVudFRyZWVOb2RlW10+IHtcbiAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgZGF0YSBzbyB3ZSBkbyBub3QgbXV0YXRlIHRoZSBvcmlnaW5hbFxuICAgIGZ1bmN0aW9uIGNvcHkobm9kZTogRG9jdW1lbnRUcmVlTm9kZSkge1xuICAgICAgY29uc3QgZG9jdW1lbnRUcmVlTm9kZSA9IG5ldyBEb2N1bWVudFRyZWVOb2RlKCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihkb2N1bWVudFRyZWVOb2RlLCBub2RlKTtcbiAgICB9XG5cbiAgICBsZXQgZmlsdGVyZWREYXRhID0gdGhpcy5kb2N1bWVudFRyZWVEYXRhO1xuICAgIGlmIChzZWFyY2hUZXJtICYmIHNlYXJjaFRlcm0ubGVuZ3RoID49IENhc2VGaWxlVmlld0ZvbGRlckNvbXBvbmVudC5NSU5JTVVNX1NFQVJDSF9DSEFSQUNURVJTICYmIHRoaXMuZG9jdW1lbnRGaWx0ZXJGb3JtR3JvdXAuY29udHJvbHNbQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50LkRPQ1VNRU5UX1NFQVJDSF9GT1JNX0NPTlRST0xfTkFNRV0udmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgZmlsdGVyZWREYXRhID0gdGhpcy5kb2N1bWVudFRyZWVEYXRhLm1hcChjb3B5KS5maWx0ZXIoZnVuY3Rpb24gZmlsdGVyVHJlZURhdGEobm9kZTogRG9jdW1lbnRUcmVlTm9kZSkge1xuICAgICAgICBpZiAobm9kZS5uYW1lICYmIG5vZGUubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pICYmIG5vZGUudHlwZSA9PT0gRG9jdW1lbnRUcmVlTm9kZVR5cGUuRE9DVU1FTlQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDYWxsIHJlY3Vyc2l2ZWx5IGlmIG5vZGUgaGFzIGNoaWxkcmVuXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgcmV0dXJuIChub2RlLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbi5tYXAoY29weSkuZmlsdGVyKGZpbHRlclRyZWVEYXRhKSkubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9mKGZpbHRlcmVkRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlckRvY3VtZW50QWN0aW9uKFxuICAgIGFjdGlvblR5cGU6ICdjaGFuZ2VGb2xkZXInIHwgJ29wZW5JbkFOZXdUYWInIHwgJ2Rvd25sb2FkJyB8ICdwcmludCcsXG4gICAgZG9jdW1lbnRUcmVlTm9kZTogRG9jdW1lbnRUcmVlTm9kZVxuICApOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGFjdGlvblR5cGUpIHtcbiAgICAgIGNhc2UgKCdjaGFuZ2VGb2xkZXInKTpcbiAgICAgICAgdGhpcy5vcGVuTW92ZURpYWxvZyhkb2N1bWVudFRyZWVOb2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICgnb3BlbkluQU5ld1RhYicpOlxuICAgICAgICB0aGlzLndpbmRvd1NlcnZpY2Uuc2V0TG9jYWxTdG9yYWdlKE1FRElBX1ZJRVdFUl9MT0NBTFNUT1JBR0VfS0VZLFxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRNYW5hZ2VtZW50U2VydmljZS5nZXRNZWRpYVZpZXdlckluZm8oe1xuICAgICAgICAgICAgZG9jdW1lbnRfYmluYXJ5X3VybDogZG9jdW1lbnRUcmVlTm9kZS5kb2N1bWVudF9iaW5hcnlfdXJsLFxuICAgICAgICAgICAgZG9jdW1lbnRfZmlsZW5hbWU6IGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfZmlsZW5hbWVcbiAgICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy53aW5kb3dTZXJ2aWNlLm9wZW5Pbk5ld1RhYihcbiAgICAgICAgICB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnL21lZGlhLXZpZXdlciddKT8udG9TdHJpbmcoKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgKCdkb3dubG9hZCcpOlxuICAgICAgICAvLyBDcmVhdGUgYSBVUkwgZnJvbSB0aGUgZG9jdW1lbnRfYmluYXJ5X3VybCBwcm9wZXJ0eSAoYWJzb2x1dGUgVVJMKSBhbmQgdXNlIHRoZSBwYXRoIHBvcnRpb24gKHJlbGF0aXZlIFVSTCkuXG4gICAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIE1hbmFnZSBDYXNlcyBhcHBsaWNhdGlvbiB3aWxsIGF1dG9tYXRpY2FsbHkgYXBwbHkgYSBwcm94eSB0byB0aGUgcmVxdWVzdCwgd2l0aFxuICAgICAgICAvLyB0aGUgY29ycmVjdCByZW1vdGUgZW5kcG9pbnRcbiAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUobmV3IFVSTChkb2N1bWVudFRyZWVOb2RlLmRvY3VtZW50X2JpbmFyeV91cmwpLnBhdGhuYW1lLCBkb2N1bWVudFRyZWVOb2RlLmRvY3VtZW50X2ZpbGVuYW1lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICgncHJpbnQnKTpcbiAgICAgICAgdGhpcy5wcmludERvY3VtZW50KG5ldyBVUkwoZG9jdW1lbnRUcmVlTm9kZS5kb2N1bWVudF9iaW5hcnlfdXJsKS5wYXRobmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzb3J0RGF0YVNvdXJjZUFzY2VuZGluZyhjb2x1bW46IG51bWJlcikge1xuICAgIGNvbnN0IHNvcnRlZERhdGEgPSB0aGlzLm5lc3RlZERhdGFTb3VyY2UubWFwKGl0ZW0gPT4ge1xuICAgICAgaXRlbS5zb3J0Q2hpbGRyZW5Bc2NlbmRpbmcoY29sdW1uLCBTb3J0T3JkZXIuQVNDRU5ESU5HKTtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuXG4gICAgdGhpcy51cGRhdGVOb2RlRGF0YShzb3J0ZWREYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0RGF0YVNvdXJjZURlc2NlbmRpbmcoY29sdW1uOiBudW1iZXIpIHtcbiAgICBjb25zdCBzb3J0ZWREYXRhID0gdGhpcy5uZXN0ZWREYXRhU291cmNlLm1hcChpdGVtID0+IHtcbiAgICAgIGl0ZW0uc29ydENoaWxkcmVuRGVzY2VuZGluZyhjb2x1bW4sIFNvcnRPcmRlci5ERVNDRU5ESU5HKTtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuXG4gICAgdGhpcy51cGRhdGVOb2RlRGF0YShzb3J0ZWREYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVOb2RlRGF0YShkYXRhOiBEb2N1bWVudFRyZWVOb2RlW10pOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2U2VsZWN0ZWQgPSB0aGlzLm5lc3RlZFRyZWVDb250cm9sLmV4cGFuc2lvbk1vZGVsLnNlbGVjdGVkLm1hcChcbiAgICAgIChpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLm5hbWU7XG4gICAgICB9KTtcblxuICAgIHRoaXMubmVzdGVkVHJlZUNvbnRyb2wuY29sbGFwc2VBbGwoKTtcbiAgICB0aGlzLm5lc3RlZERhdGFTb3VyY2UgPSBkYXRhLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgbmV3RG9jdW1lbnRUcmVlTm9kZSA9IG5ldyBEb2N1bWVudFRyZWVOb2RlKCk7XG4gICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLm5hbWUgPSBpdGVtLm5hbWU7XG4gICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLnR5cGUgPSBpdGVtLnR5cGU7XG4gICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLmNoaWxkcmVuID0gaXRlbS5jaGlsZHJlbjtcblxuICAgICAgcmV0dXJuIG5ld0RvY3VtZW50VHJlZU5vZGU7XG4gICAgfSk7XG5cbiAgICBjb25zdCBmbGF0dGVuZWRBcnJheSA9IHRoaXMubmVzdGVkRGF0YVNvdXJjZS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIHJldHVybiBpdGVtLmZsYXR0ZW5lZEFsbDtcbiAgICB9KS5mbGF0KCk7XG4gICAgY29uc3QgbmV3T2JqZWN0cyA9IGZsYXR0ZW5lZEFycmF5LmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIHByZXZTZWxlY3RlZC5pbmNsdWRlcyhpdGVtLm5hbWUpO1xuICAgIH0pO1xuICAgIG5ld09iamVjdHMuZm9yRWFjaChvYmplY3QgPT4gdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5leHBhbmQob2JqZWN0KSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZG9jdW1lbnRGaWx0ZXJTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Nb3ZlRGlhbG9nKG5vZGU6IERvY3VtZW50VHJlZU5vZGUpOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENhc2VGaWxlVmlld0ZvbGRlclNlbGVjdG9yQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7IGNhdGVnb3JpZXM6IHRoaXMuY2F0ZWdvcmllcywgZG9jdW1lbnQ6IG5vZGUgfVxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKG5ld0NhdElkID0+IHtcbiAgICAgIGlmIChuZXdDYXRJZCkge1xuICAgICAgICB0aGlzLm1vdmVEb2N1bWVudC5lbWl0KHsgbmV3Q2F0ZWdvcnk6IG5ld0NhdElkLCBkb2N1bWVudDogbm9kZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludERvY3VtZW50KHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcHJpbnRXaW5kb3cgPSB3aW5kb3cub3Blbih1cmwpO1xuICAgIHByaW50V2luZG93LnByaW50KCk7XG4gIH1cblxuICBwdWJsaWMgZG93bmxvYWRGaWxlKHVybDogc3RyaW5nLCBkb3dubG9hZEZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6IG5vbmUnKTtcbiAgICBhLmhyZWYgPSB1cmw7XG4gICAgYS5kb3dubG9hZCA9IGRvd25sb2FkRmlsZU5hbWU7XG4gICAgYS5jbGljaygpO1xuICAgIGEucmVtb3ZlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkb2N1bWVudC1maWx0ZXItY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGRvY3VtZW50LWZpbHRlclwiIFtmb3JtR3JvdXBdPVwiZG9jdW1lbnRGaWx0ZXJGb3JtR3JvdXBcIj5cbiAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZG9jdW1lbnQtc2VhcmNoXCJcbiAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgaWQ9XCJkb2N1bWVudC1zZWFyY2hcIlxuICAgICAgbmFtZT1cImRvY3VtZW50U2VhcmNoRm9ybUNvbnRyb2xcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbFwiXG4gICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBkb2N1bWVudCBuYW1lXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJTZWFyY2ggYnkgZG9jdW1lbnQgbmFtZVwiPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZG9jdW1lbnQtZm9sZGVycy1oZWFkZXJcIj5cbiAgPGRpdiBjbGFzcz1cImRvY3VtZW50LWZvbGRlcnMtaGVhZGVyX190aXRsZVwiPkRvY3VtZW50cyAoe3sgZG9jdW1lbnRDb3VudCB9fSk8L2Rpdj5cbiAgPGRpdj5cbiAgICA8Y2NkLWNhc2UtZmlsZS12aWV3LWZvbGRlci1zb3J0XG4gICAgICAoc29ydEFzY2VuZGluZyk9XCJzb3J0RGF0YVNvdXJjZUFzY2VuZGluZygkZXZlbnQpXCJcbiAgICAgIChzb3J0RGVzY2VuZGluZyk9XCJzb3J0RGF0YVNvdXJjZURlc2NlbmRpbmcoJGV2ZW50KVwiXG4gICAgPjwvY2NkLWNhc2UtZmlsZS12aWV3LWZvbGRlci1zb3J0PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1jb250YWluZXJcIiAqbmdJZj1cImRvY3VtZW50VHJlZURhdGFcIj5cbiAgPGRpdiAqbmdJZj1cIiFuZXN0ZWREYXRhU291cmNlIHx8IG5lc3RlZERhdGFTb3VyY2UubGVuZ3RoID09PSAwXCI+XG4gICAgTm8gcmVzdWx0cyBmb3VuZFxuICA8L2Rpdj5cbiAgPGRpdj5cbiAgICA8Y2RrLXRyZWUgW2RhdGFTb3VyY2VdPVwibmVzdGVkRGF0YVNvdXJjZVwiIFt0cmVlQ29udHJvbF09XCJuZXN0ZWRUcmVlQ29udHJvbFwiPlxuICAgICAgPCEtLSBkb2N1bWVudCAtLT5cbiAgICAgIDxjZGstbmVzdGVkLXRyZWUtbm9kZSBjbGFzcz1cImRvY3VtZW50LXRyZWUtY29udGFpbmVyX19ub2RlIGRvY3VtZW50LXRyZWUtY29udGFpbmVyX19ub2RlLS1kb2N1bWVudFwiICpjZGtUcmVlTm9kZURlZj1cImxldCBub2RlXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJub2RlXCIgKGNsaWNrKT1cInNlbGVjdGVkTm9kZUl0ZW0gPSBub2RlOyBjbGlja2VkRG9jdW1lbnQuZW1pdChub2RlKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLm5vZGUtLXNlbGVjdGVkXT1cInNlbGVjdGVkTm9kZUl0ZW0/Lm5hbWUgPT09IG5vZGUubmFtZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RlX19pY29uXCIgZGlzYWJsZWQ+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1nL2Nhc2UtZmlsZS12aWV3L2Nhc2UtZmlsZS12aWV3LWRvY3VtZW50LnN2Z1wiIGNsYXNzPVwibm9kZV9faWNvbkltZ1wiIGFsdD1cIkRvY3VtZW50IGljb25cIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vZGVfX25hbWUgbm9kZS1uYW1lLWRvY3VtZW50XCI+XG4gICAgICAgICAgICB7e25vZGUubmFtZX19XG4gICAgICAgICAgICA8YnI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vZGVfX2RvY3VtZW50LXVwbG9hZC10aW1lc3RhbXBcIj57e25vZGUudXBsb2FkX3RpbWVzdGFtcCB8IGNjZERhdGUgOiAnbG9jYWwnIHwgZGF0ZTpcImRkIE1NTSBZWVlZIEhIOm1tXCJ9fTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGVfX2RvY3VtZW50LW9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxjY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyLWRvY3VtZW50LWFjdGlvbnNcbiAgICAgICAgICAgICAgKGNoYW5nZUZvbGRlckFjdGlvbik9XCJ0cmlnZ2VyRG9jdW1lbnRBY3Rpb24oJ2NoYW5nZUZvbGRlcicsIG5vZGUpXCJcbiAgICAgICAgICAgICAgKG9wZW5JbkFOZXdUYWJBY3Rpb24pPVwidHJpZ2dlckRvY3VtZW50QWN0aW9uKCdvcGVuSW5BTmV3VGFiJywgbm9kZSlcIlxuICAgICAgICAgICAgICAoZG93bmxvYWRBY3Rpb24pPVwidHJpZ2dlckRvY3VtZW50QWN0aW9uKCdkb3dubG9hZCcsIG5vZGUpXCJcbiAgICAgICAgICAgICAgKHByaW50QWN0aW9uKT1cInRyaWdnZXJEb2N1bWVudEFjdGlvbigncHJpbnQnLCBub2RlKVwiXG4gICAgICAgICAgICAgIFthbGxvd01vdmluZ109XCJhbGxvd01vdmluZ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2NjZC1jYXNlLWZpbGUtdmlldy1mb2xkZXItZG9jdW1lbnQtYWN0aW9ucz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Nkay1uZXN0ZWQtdHJlZS1ub2RlPlxuICAgICAgPCEtLSBmb2xkZXItLT5cbiAgICAgIDxjZGstbmVzdGVkLXRyZWUtbm9kZSBjbGFzcz1cImRvY3VtZW50LXRyZWUtY29udGFpbmVyX19ub2RlIGRvY3VtZW50LXRyZWUtY29udGFpbmVyX19mb2xkZXJcIiAqY2RrVHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogbmVzdGVkQ2hpbGRyZW5cIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5vZGVcIiBjZGtUcmVlTm9kZVRvZ2dsZT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZV9faWNvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3RvZ2dsZSAnICsgbm9kZS5uYW1lXCIgPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cIm5vZGVfX2ljb25JbWdcIlxuICAgICAgICAgICAgICAgICBbc3JjXT1cIm5lc3RlZFRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnL2Fzc2V0cy9pbWFnZXMvZm9sZGVyLW9wZW4ucG5nJyA6ICcvYXNzZXRzL2ltYWdlcy9mb2xkZXIucG5nJ1wiIGFsdD1cIkZvbGRlciBpY29uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vZGVfX2NvdW50XCI+e3tub2RlLmNoaWxkRG9jdW1lbnRDb3VudH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm9kZV9fbmFtZSBub2RlX19uYW1lLS1mb2xkZXJcIj57e25vZGUubmFtZX19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IFtjbGFzcy5kb2N1bWVudC10cmVlLWludmlzaWJsZV09XCIhbmVzdGVkVHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgY2RrVHJlZU5vZGVPdXRsZXQ+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jZGstbmVzdGVkLXRyZWUtbm9kZT5cbiAgICA8L2Nkay10cmVlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZm9sZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvY2FzZS1maWxlLXZpZXctZm9sZGVyL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZpbGUtdmlldy9jb21wb25lbnRzL2Nhc2UtZmlsZS12aWV3LWZvbGRlci9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFnQixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBR0wsdUJB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ZUFBZSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDO1FBQzlCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNWLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNiLENBQUM7cUZBeFFVLDJCQUEyQjs2REFBM0IsMkJBQTJCO1lDekJ0QyxBQURGLDhCQUF1QyxhQUN5QztZQUM1RSwyQkFNdUM7WUFFM0MsQUFERSxpQkFBTSxFQUNGO1lBR0osQUFERiw4QkFBcUMsYUFDUztZQUFBLFlBQStCO1lBQUEsaUJBQU07WUFFL0UsQUFERiwyQkFBSyx3Q0FJRjtZQURDLEFBREEsc0pBQWlCLG1DQUErQixJQUFDLDJJQUMvQixvQ0FBZ0MsSUFBQztZQUd6RCxBQURFLEFBREcsaUJBQWlDLEVBQzlCLEVBQ0Y7WUFFTiw0RUFBOEQ7O1lBckJwQixjQUFxQztZQUFyQyx1REFBcUM7WUFZakMsZUFBK0I7WUFBL0IsNERBQStCO1lBU3ZDLGVBQXNCO1lBQXRCLDJDQUFzQjs7O2lGREkvQywyQkFBMkI7Y0FMdkMsU0FBUzsyQkFDRSwyQkFBMkI7eUtBU3JCLHNCQUFzQjtrQkFBckMsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVyxlQUFlO2tCQUEvQixNQUFNO1lBQ1UsWUFBWTtrQkFBNUIsTUFBTTs7a0ZBUkksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmVzdGVkVHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBYnN0cmFjdEFwcENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2FwcC5jb25maWcnO1xuaW1wb3J0IHtcbiAgQ2FzZUZpbGVWaWV3Q2F0ZWdvcnksXG4gIENhc2VGaWxlVmlld0RvY3VtZW50LFxuICBDYXNlRmlsZVZpZXdTb3J0Q29sdW1ucyxcbiAgQ2F0ZWdvcmllc0FuZERvY3VtZW50cyxcbiAgRG9jdW1lbnRUcmVlTm9kZSxcbiAgRG9jdW1lbnRUcmVlTm9kZVR5cGVcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluL2Nhc2UtZmlsZS12aWV3JztcbmltcG9ydCB7IFNvcnRPcmRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbi9zb3J0LW9yZGVyLmVudW0nO1xuaW1wb3J0IHsgRG9jdW1lbnRNYW5hZ2VtZW50U2VydmljZSwgV2luZG93U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IENhc2VGaWxlVmlld0ZvbGRlclNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FzZS1maWxlLXZpZXctZm9sZGVyLXNlbGVjdG9yL2Nhc2UtZmlsZS12aWV3LWZvbGRlci1zZWxlY3Rvci5jb21wb25lbnQnO1xuZXhwb3J0IGNvbnN0IE1FRElBX1ZJRVdFUl9MT0NBTFNUT1JBR0VfS0VZID0gJ21lZGlhLXZpZXdlci1pbmZvJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZmlsZS12aWV3LWZvbGRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBVTkNBVEVHT1JJU0VEX0RPQ1VNRU5UU19USVRMRSA9ICdVbmNhdGVnb3Jpc2VkIGRvY3VtZW50cyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERPQ1VNRU5UX1NFQVJDSF9GT1JNX0NPTlRST0xfTkFNRSA9ICdkb2N1bWVudFNlYXJjaEZvcm1Db250cm9sJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTUlOSU1VTV9TRUFSQ0hfQ0hBUkFDVEVSUyA9IDE7XG5cbiAgQElucHV0KCkgcHVibGljIGNhdGVnb3JpZXNBbmREb2N1bWVudHM6IE9ic2VydmFibGU8Q2F0ZWdvcmllc0FuZERvY3VtZW50cz47XG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd01vdmluZzogYm9vbGVhbjtcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGlja2VkRG9jdW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPERvY3VtZW50VHJlZU5vZGU+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgbW92ZURvY3VtZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx7IG5ld0NhdGVnb3J5OiBzdHJpbmcsIGRvY3VtZW50OiBEb2N1bWVudFRyZWVOb2RlIH0+KCk7XG5cbiAgcHVibGljIG5lc3RlZFRyZWVDb250cm9sOiBOZXN0ZWRUcmVlQ29udHJvbDxEb2N1bWVudFRyZWVOb2RlPjtcbiAgcHVibGljIG5lc3RlZERhdGFTb3VyY2U6IERvY3VtZW50VHJlZU5vZGVbXTtcbiAgcHVibGljIGNhdGVnb3JpZXM6IENhc2VGaWxlVmlld0NhdGVnb3J5W10gPSBbXTtcbiAgcHVibGljIGNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHNlbGVjdGVkTm9kZUl0ZW06IERvY3VtZW50VHJlZU5vZGUgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGRvY3VtZW50RmlsdGVyRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBkb2N1bWVudFNlYXJjaEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIGRvY3VtZW50VHJlZURhdGE6IERvY3VtZW50VHJlZU5vZGVbXTtcbiAgcHVibGljIGRvY3VtZW50RmlsdGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBzZWFyY2hUZXJtTGVuZ3RoOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBnZXRDaGlsZHJlbiA9IChub2RlOiBEb2N1bWVudFRyZWVOb2RlKSA9PiBvZihub2RlLmNoaWxkcmVuKTtcbiAgcHVibGljIG5lc3RlZENoaWxkcmVuID0gKF86IG51bWJlciwgbm9kZURhdGE6IERvY3VtZW50VHJlZU5vZGUpID0+IG5vZGVEYXRhLmNoaWxkcmVuO1xuICBwdWJsaWMgZ2V0IGRvY3VtZW50Q291bnQoKSB7XG4gICAgaWYgKHRoaXMubmVzdGVkRGF0YVNvdXJjZT8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZXN0ZWREYXRhU291cmNlLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBhY2MgKyBpdGVtLmNoaWxkRG9jdW1lbnRDb3VudDtcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd1NlcnZpY2U6IFdpbmRvd1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50TWFuYWdlbWVudFNlcnZpY2U6IERvY3VtZW50TWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZzogQWJzdHJhY3RBcHBDb25maWdcbiAgKSB7XG4gICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbCA9IG5ldyBOZXN0ZWRUcmVlQ29udHJvbDxEb2N1bWVudFRyZWVOb2RlPih0aGlzLmdldENoaWxkcmVuKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50RmlsdGVyRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgdGhpcy5kb2N1bWVudFNlYXJjaEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgICB0aGlzLmRvY3VtZW50RmlsdGVyRm9ybUdyb3VwLmFkZENvbnRyb2woQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50LkRPQ1VNRU5UX1NFQVJDSF9GT1JNX0NPTlRST0xfTkFNRSwgdGhpcy5kb2N1bWVudFNlYXJjaEZvcm1Db250cm9sKTtcblxuICAgIC8vIExpc3RlbiB0byBzZWFyY2ggaW5wdXQgYW5kIGluaXRpYXRlIGZpbHRlciBkb2N1bWVudHMgaWYgYXQgbGVhc3QgdGhyZWUgY2hhcmFjdGVycyBlbnRlcmVkXG4gICAgdGhpcy5kb2N1bWVudEZpbHRlclN1YnNjcmlwdGlvbiA9IHRoaXMuZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHRhcCgoc2VhcmNoVGVybTogc3RyaW5nKSA9PiB0aGlzLnNlYXJjaFRlcm1MZW5ndGggPSBzZWFyY2hUZXJtLmxlbmd0aCksXG4gICAgICBzd2l0Y2hNYXAoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gdGhpcy5maWx0ZXIoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKS5waXBlKCkpXG4gICAgKS5zdWJzY3JpYmUoZG9jdW1lbnRUcmVlRGF0YSA9PiB7XG4gICAgICB0aGlzLm5lc3RlZERhdGFTb3VyY2UgPSBkb2N1bWVudFRyZWVEYXRhO1xuICAgICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5kYXRhTm9kZXMgPSBkb2N1bWVudFRyZWVEYXRhO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtTGVuZ3RoID49IENhc2VGaWxlVmlld0ZvbGRlckNvbXBvbmVudC5NSU5JTVVNX1NFQVJDSF9DSEFSQUNURVJTXG4gICAgICAgID8gdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5leHBhbmRBbGwoKVxuICAgICAgICA6IHRoaXMubmVzdGVkVHJlZUNvbnRyb2wuY29sbGFwc2VBbGwoKTtcbiAgICB9KTtcblxuICAgIC8vIFN1YnNjcmliZSB0byB0aGUgaW5wdXQgY2F0ZWdvcmllcyBhbmQgZG9jdW1lbnRzLCBhbmQgZ2VuZXJhdGUgdHJlZSBkYXRhIGFuZCBpbml0aWFsaXNlIGNkayB0cmVlXG4gICAgdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzU3Vic2NyaXB0aW9uID0gdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnN1YnNjcmliZShjYXRlZ29yaWVzQW5kRG9jdW1lbnRzID0+IHtcbiAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzLmNhdGVnb3JpZXM7XG4gICAgICB0aGlzLmNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzO1xuICAgICAgLy8gR2VuZXJhdGUgZG9jdW1lbnQgdHJlZSBkYXRhIGZyb20gY2F0ZWdvcmllc1xuICAgICAgdGhpcy5kb2N1bWVudFRyZWVEYXRhID0gdGhpcy5nZW5lcmF0ZVRyZWVEYXRhKGNhdGVnb3JpZXMpO1xuICAgICAgLy8gQXBwZW5kIHVuY2F0ZWdvcmlzZWQgZG9jdW1lbnRzXG4gICAgICBpZiAoY2F0ZWdvcmllc0FuZERvY3VtZW50cy51bmNhdGVnb3Jpc2VkX2RvY3VtZW50cyAmJiBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnVuY2F0ZWdvcmlzZWRfZG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdW5jYXRlZ29yaXNlZERvY3VtZW50cyA9IHRoaXMuZ2V0VW5jYXRlZ29yaXNlZERvY3VtZW50cyhjYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnVuY2F0ZWdvcmlzZWRfZG9jdW1lbnRzKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFRyZWVEYXRhLnB1c2godW5jYXRlZ29yaXNlZERvY3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIC8vIEluaXRpYWxpc2UgY2RrIHRyZWUgd2l0aCBnZW5lcmF0ZWQgZGF0YVxuICAgICAgdGhpcy5uZXN0ZWREYXRhU291cmNlID0gdGhpcy5kb2N1bWVudFRyZWVEYXRhO1xuICAgICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5kYXRhTm9kZXMgPSB0aGlzLmRvY3VtZW50VHJlZURhdGE7XG4gICAgICB0aGlzLnNvcnREYXRhU291cmNlRGVzY2VuZGluZyhDYXNlRmlsZVZpZXdTb3J0Q29sdW1ucy5ET0NVTUVOVF9VUExPQURfVElNRVNUQU1QKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZVRyZWVEYXRhKGNhdGVnb3JpZXM6IENhc2VGaWxlVmlld0NhdGVnb3J5W10pOiBEb2N1bWVudFRyZWVOb2RlW10ge1xuICAgIHJldHVybiBjYXRlZ29yaWVzLnJlZHVjZSgodHJlZSwgbm9kZSkgPT4ge1xuICAgICAgY29uc3QgbmV3RG9jdW1lbnRUcmVlTm9kZSA9IG5ldyBEb2N1bWVudFRyZWVOb2RlKCk7XG4gICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLm5hbWUgPSBub2RlLmNhdGVnb3J5X25hbWU7XG4gICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLnR5cGUgPSBEb2N1bWVudFRyZWVOb2RlVHlwZS5GT0xERVI7XG4gICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLmNoaWxkcmVuID0gWy4uLnRoaXMuZ2VuZXJhdGVUcmVlRGF0YShub2RlLnN1Yl9jYXRlZ29yaWVzKSwgLi4udGhpcy5nZXREb2N1bWVudHMobm9kZS5kb2N1bWVudHMpXTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUuY2F0ZWdvcnlfb3JkZXIgPSBub2RlLmNhdGVnb3J5X29yZGVyO1xuXG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi50cmVlLFxuICAgICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLFxuICAgICAgXS5zb3J0KChhLGIpID0+IGEuY2F0ZWdvcnlfb3JkZXIgLSBiLmNhdGVnb3J5X29yZGVyKTtcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RG9jdW1lbnRzKGRvY3VtZW50czogQ2FzZUZpbGVWaWV3RG9jdW1lbnRbXSk6IERvY3VtZW50VHJlZU5vZGVbXSB7XG4gICAgY29uc3QgZG9jdW1lbnRzVG9SZXR1cm46IERvY3VtZW50VHJlZU5vZGVbXSA9IFtdO1xuICAgIGRvY3VtZW50cy5mb3JFYWNoKGRvY3VtZW50ID0+IHtcbiAgICAgIGNvbnN0IGRvY3VtZW50VHJlZU5vZGUgPSBuZXcgRG9jdW1lbnRUcmVlTm9kZSgpO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5uYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRfZmlsZW5hbWU7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLnR5cGUgPSBEb2N1bWVudFRyZWVOb2RlVHlwZS5ET0NVTUVOVDtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfZmlsZW5hbWUgPSBkb2N1bWVudC5kb2N1bWVudF9maWxlbmFtZTtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfYmluYXJ5X3VybCA9IGRvY3VtZW50LmRvY3VtZW50X2JpbmFyeV91cmw7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLmF0dHJpYnV0ZV9wYXRoID0gZG9jdW1lbnQuYXR0cmlidXRlX3BhdGg7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLnVwbG9hZF90aW1lc3RhbXAgPSB0aGlzLmFwcENvbmZpZy5nZXRFbmFibGVDYXNlRmlsZVZpZXdWZXJzaW9uMV8xKClcbiAgICAgICAgICAmJiBkb2N1bWVudC51cGxvYWRfdGltZXN0YW1wID8gZG9jdW1lbnQudXBsb2FkX3RpbWVzdGFtcC50b1N0cmluZygpIDogJyc7XG5cbiAgICAgIGRvY3VtZW50c1RvUmV0dXJuLnB1c2goZG9jdW1lbnRUcmVlTm9kZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZG9jdW1lbnRzVG9SZXR1cm47XG4gIH1cblxuICBwdWJsaWMgZ2V0VW5jYXRlZ29yaXNlZERvY3VtZW50cyh1bmNhdGVnb3Jpc2VkRG9jdW1lbnRzOiBDYXNlRmlsZVZpZXdEb2N1bWVudFtdKTogRG9jdW1lbnRUcmVlTm9kZSB7XG4gICAgY29uc3QgZG9jdW1lbnRzOiBEb2N1bWVudFRyZWVOb2RlW10gPSBbXTtcbiAgICB1bmNhdGVnb3Jpc2VkRG9jdW1lbnRzLmZvckVhY2goZG9jdW1lbnQgPT4ge1xuICAgICAgY29uc3QgZG9jdW1lbnRUcmVlTm9kZSA9IG5ldyBEb2N1bWVudFRyZWVOb2RlKCk7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLm5hbWUgPSBkb2N1bWVudC5kb2N1bWVudF9maWxlbmFtZTtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUudHlwZSA9IERvY3VtZW50VHJlZU5vZGVUeXBlLkRPQ1VNRU5UO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5kb2N1bWVudF9maWxlbmFtZSA9IGRvY3VtZW50LmRvY3VtZW50X2ZpbGVuYW1lO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5kb2N1bWVudF9iaW5hcnlfdXJsID0gZG9jdW1lbnQuZG9jdW1lbnRfYmluYXJ5X3VybDtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUuYXR0cmlidXRlX3BhdGggPSBkb2N1bWVudC5hdHRyaWJ1dGVfcGF0aDtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUudXBsb2FkX3RpbWVzdGFtcCA9IHRoaXMuYXBwQ29uZmlnLmdldEVuYWJsZUNhc2VGaWxlVmlld1ZlcnNpb24xXzEoKVxuICAgICAgICAgICYmIGRvY3VtZW50LnVwbG9hZF90aW1lc3RhbXAgPyBkb2N1bWVudC51cGxvYWRfdGltZXN0YW1wLnRvU3RyaW5nKCkgOiAnJztcblxuICAgICAgZG9jdW1lbnRzLnB1c2goZG9jdW1lbnRUcmVlTm9kZSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB1bmNhdGVnb3Jpc2VkTm9kZSA9IG5ldyBEb2N1bWVudFRyZWVOb2RlKCk7XG4gICAgdW5jYXRlZ29yaXNlZE5vZGUubmFtZSA9IENhc2VGaWxlVmlld0ZvbGRlckNvbXBvbmVudC5VTkNBVEVHT1JJU0VEX0RPQ1VNRU5UU19USVRMRTtcbiAgICB1bmNhdGVnb3Jpc2VkTm9kZS50eXBlID0gRG9jdW1lbnRUcmVlTm9kZVR5cGUuRk9MREVSO1xuICAgIHVuY2F0ZWdvcmlzZWROb2RlLmNoaWxkcmVuID0gZG9jdW1lbnRzO1xuXG4gICAgcmV0dXJuIHVuY2F0ZWdvcmlzZWROb2RlO1xuICB9XG5cbiAgcHVibGljIGZpbHRlcihzZWFyY2hUZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERvY3VtZW50VHJlZU5vZGVbXT4ge1xuICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBkYXRhIHNvIHdlIGRvIG5vdCBtdXRhdGUgdGhlIG9yaWdpbmFsXG4gICAgZnVuY3Rpb24gY29weShub2RlOiBEb2N1bWVudFRyZWVOb2RlKSB7XG4gICAgICBjb25zdCBkb2N1bWVudFRyZWVOb2RlID0gbmV3IERvY3VtZW50VHJlZU5vZGUoKTtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGRvY3VtZW50VHJlZU5vZGUsIG5vZGUpO1xuICAgIH1cblxuICAgIGxldCBmaWx0ZXJlZERhdGEgPSB0aGlzLmRvY3VtZW50VHJlZURhdGE7XG4gICAgaWYgKHNlYXJjaFRlcm0gJiYgc2VhcmNoVGVybS5sZW5ndGggPj0gQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50Lk1JTklNVU1fU0VBUkNIX0NIQVJBQ1RFUlMgJiYgdGhpcy5kb2N1bWVudEZpbHRlckZvcm1Hcm91cC5jb250cm9sc1tDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQuRE9DVU1FTlRfU0VBUkNIX0ZPUk1fQ09OVFJPTF9OQU1FXS52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBmaWx0ZXJlZERhdGEgPSB0aGlzLmRvY3VtZW50VHJlZURhdGEubWFwKGNvcHkpLmZpbHRlcihmdW5jdGlvbiBmaWx0ZXJUcmVlRGF0YShub2RlOiBEb2N1bWVudFRyZWVOb2RlKSB7XG4gICAgICAgIGlmIChub2RlLm5hbWUgJiYgbm9kZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkgJiYgbm9kZS50eXBlID09PSBEb2N1bWVudFRyZWVOb2RlVHlwZS5ET0NVTUVOVCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIENhbGwgcmVjdXJzaXZlbHkgaWYgbm9kZSBoYXMgY2hpbGRyZW5cbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICByZXR1cm4gKG5vZGUuY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLm1hcChjb3B5KS5maWx0ZXIoZmlsdGVyVHJlZURhdGEpKS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb2YoZmlsdGVyZWREYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyRG9jdW1lbnRBY3Rpb24oXG4gICAgYWN0aW9uVHlwZTogJ2NoYW5nZUZvbGRlcicgfCAnb3BlbkluQU5ld1RhYicgfCAnZG93bmxvYWQnIHwgJ3ByaW50JyxcbiAgICBkb2N1bWVudFRyZWVOb2RlOiBEb2N1bWVudFRyZWVOb2RlXG4gICk6IHZvaWQge1xuICAgIHN3aXRjaCAoYWN0aW9uVHlwZSkge1xuICAgICAgY2FzZSAoJ2NoYW5nZUZvbGRlcicpOlxuICAgICAgICB0aGlzLm9wZW5Nb3ZlRGlhbG9nKGRvY3VtZW50VHJlZU5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgKCdvcGVuSW5BTmV3VGFiJyk6XG4gICAgICAgIHRoaXMud2luZG93U2VydmljZS5zZXRMb2NhbFN0b3JhZ2UoTUVESUFfVklFV0VSX0xPQ0FMU1RPUkFHRV9LRVksXG4gICAgICAgICAgdGhpcy5kb2N1bWVudE1hbmFnZW1lbnRTZXJ2aWNlLmdldE1lZGlhVmlld2VySW5mbyh7XG4gICAgICAgICAgICBkb2N1bWVudF9iaW5hcnlfdXJsOiBkb2N1bWVudFRyZWVOb2RlLmRvY3VtZW50X2JpbmFyeV91cmwsXG4gICAgICAgICAgICBkb2N1bWVudF9maWxlbmFtZTogZG9jdW1lbnRUcmVlTm9kZS5kb2N1bWVudF9maWxlbmFtZVxuICAgICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLndpbmRvd1NlcnZpY2Uub3Blbk9uTmV3VGFiKFxuICAgICAgICAgIHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWycvbWVkaWEtdmlld2VyJ10pPy50b1N0cmluZygpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAoJ2Rvd25sb2FkJyk6XG4gICAgICAgIC8vIENyZWF0ZSBhIFVSTCBmcm9tIHRoZSBkb2N1bWVudF9iaW5hcnlfdXJsIHByb3BlcnR5IChhYnNvbHV0ZSBVUkwpIGFuZCB1c2UgdGhlIHBhdGggcG9ydGlvbiAocmVsYXRpdmUgVVJMKS5cbiAgICAgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgTWFuYWdlIENhc2VzIGFwcGxpY2F0aW9uIHdpbGwgYXV0b21hdGljYWxseSBhcHBseSBhIHByb3h5IHRvIHRoZSByZXF1ZXN0LCB3aXRoXG4gICAgICAgIC8vIHRoZSBjb3JyZWN0IHJlbW90ZSBlbmRwb2ludFxuICAgICAgICB0aGlzLmRvd25sb2FkRmlsZShuZXcgVVJMKGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfYmluYXJ5X3VybCkucGF0aG5hbWUsIGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfZmlsZW5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgKCdwcmludCcpOlxuICAgICAgICB0aGlzLnByaW50RG9jdW1lbnQobmV3IFVSTChkb2N1bWVudFRyZWVOb2RlLmRvY3VtZW50X2JpbmFyeV91cmwpLnBhdGhuYW1lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNvcnREYXRhU291cmNlQXNjZW5kaW5nKGNvbHVtbjogbnVtYmVyKSB7XG4gICAgY29uc3Qgc29ydGVkRGF0YSA9IHRoaXMubmVzdGVkRGF0YVNvdXJjZS5tYXAoaXRlbSA9PiB7XG4gICAgICBpdGVtLnNvcnRDaGlsZHJlbkFzY2VuZGluZyhjb2x1bW4sIFNvcnRPcmRlci5BU0NFTkRJTkcpO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZU5vZGVEYXRhKHNvcnRlZERhdGEpO1xuICB9XG5cbiAgcHVibGljIHNvcnREYXRhU291cmNlRGVzY2VuZGluZyhjb2x1bW46IG51bWJlcikge1xuICAgIGNvbnN0IHNvcnRlZERhdGEgPSB0aGlzLm5lc3RlZERhdGFTb3VyY2UubWFwKGl0ZW0gPT4ge1xuICAgICAgaXRlbS5zb3J0Q2hpbGRyZW5EZXNjZW5kaW5nKGNvbHVtbiwgU29ydE9yZGVyLkRFU0NFTkRJTkcpO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZU5vZGVEYXRhKHNvcnRlZERhdGEpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU5vZGVEYXRhKGRhdGE6IERvY3VtZW50VHJlZU5vZGVbXSk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZTZWxlY3RlZCA9IHRoaXMubmVzdGVkVHJlZUNvbnRyb2wuZXhwYW5zaW9uTW9kZWwuc2VsZWN0ZWQubWFwKFxuICAgICAgKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5jb2xsYXBzZUFsbCgpO1xuICAgIHRoaXMubmVzdGVkRGF0YVNvdXJjZSA9IGRhdGEubWFwKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBuZXdEb2N1bWVudFRyZWVOb2RlID0gbmV3IERvY3VtZW50VHJlZU5vZGUoKTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUubmFtZSA9IGl0ZW0ubmFtZTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUudHlwZSA9IGl0ZW0udHlwZTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUuY2hpbGRyZW4gPSBpdGVtLmNoaWxkcmVuO1xuXG4gICAgICByZXR1cm4gbmV3RG9jdW1lbnRUcmVlTm9kZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZsYXR0ZW5lZEFycmF5ID0gdGhpcy5uZXN0ZWREYXRhU291cmNlLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIGl0ZW0uZmxhdHRlbmVkQWxsO1xuICAgIH0pLmZsYXQoKTtcbiAgICBjb25zdCBuZXdPYmplY3RzID0gZmxhdHRlbmVkQXJyYXkuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gcHJldlNlbGVjdGVkLmluY2x1ZGVzKGl0ZW0ubmFtZSk7XG4gICAgfSk7XG4gICAgbmV3T2JqZWN0cy5mb3JFYWNoKG9iamVjdCA9PiB0aGlzLm5lc3RlZFRyZWVDb250cm9sLmV4cGFuZChvYmplY3QpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5kb2N1bWVudEZpbHRlclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3Blbk1vdmVEaWFsb2cobm9kZTogRG9jdW1lbnRUcmVlTm9kZSk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ2FzZUZpbGVWaWV3Rm9sZGVyU2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgY2F0ZWdvcmllczogdGhpcy5jYXRlZ29yaWVzLCBkb2N1bWVudDogbm9kZSB9XG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUobmV3Q2F0SWQgPT4ge1xuICAgICAgaWYgKG5ld0NhdElkKSB7XG4gICAgICAgIHRoaXMubW92ZURvY3VtZW50LmVtaXQoeyBuZXdDYXRlZ29yeTogbmV3Q2F0SWQsIGRvY3VtZW50OiBub2RlIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHByaW50RG9jdW1lbnQodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwcmludFdpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCk7XG4gICAgcHJpbnRXaW5kb3cucHJpbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZEZpbGUodXJsOiBzdHJpbmcsIGRvd25sb2FkRmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgICBhLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTogbm9uZScpO1xuICAgIGEuaHJlZiA9IHVybDtcbiAgICBhLmRvd25sb2FkID0gZG93bmxvYWRGaWxlTmFtZTtcbiAgICBhLmNsaWNrKCk7XG4gICAgYS5yZW1vdmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRvY3VtZW50LWZpbHRlci1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZG9jdW1lbnQtZmlsdGVyXCIgW2Zvcm1Hcm91cF09XCJkb2N1bWVudEZpbHRlckZvcm1Hcm91cFwiPlxuICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBkb2N1bWVudC1zZWFyY2hcIlxuICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICBpZD1cImRvY3VtZW50LXNlYXJjaFwiXG4gICAgICBuYW1lPVwiZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbFwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkb2N1bWVudFNlYXJjaEZvcm1Db250cm9sXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGJ5IGRvY3VtZW50IG5hbWVcIlxuICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaCBieSBkb2N1bWVudCBuYW1lXCI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJkb2N1bWVudC1mb2xkZXJzLWhlYWRlclwiPlxuICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtZm9sZGVycy1oZWFkZXJfX3RpdGxlXCI+RG9jdW1lbnRzICh7eyBkb2N1bWVudENvdW50IH19KTwvZGl2PlxuICA8ZGl2PlxuICAgIDxjY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyLXNvcnRcbiAgICAgIChzb3J0QXNjZW5kaW5nKT1cInNvcnREYXRhU291cmNlQXNjZW5kaW5nKCRldmVudClcIlxuICAgICAgKHNvcnREZXNjZW5kaW5nKT1cInNvcnREYXRhU291cmNlRGVzY2VuZGluZygkZXZlbnQpXCJcbiAgICA+PC9jY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyLXNvcnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJkb2N1bWVudC10cmVlLWNvbnRhaW5lclwiICpuZ0lmPVwiZG9jdW1lbnRUcmVlRGF0YVwiPlxuICA8ZGl2ICpuZ0lmPVwiIW5lc3RlZERhdGFTb3VyY2UgfHwgbmVzdGVkRGF0YVNvdXJjZS5sZW5ndGggPT09IDBcIj5cbiAgICBObyByZXN1bHRzIGZvdW5kXG4gIDwvZGl2PlxuICA8ZGl2PlxuICAgIDxjZGstdHJlZSBbZGF0YVNvdXJjZV09XCJuZXN0ZWREYXRhU291cmNlXCIgW3RyZWVDb250cm9sXT1cIm5lc3RlZFRyZWVDb250cm9sXCI+XG4gICAgICA8IS0tIGRvY3VtZW50IC0tPlxuICAgICAgPGNkay1uZXN0ZWQtdHJlZS1ub2RlIGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1jb250YWluZXJfX25vZGUgZG9jdW1lbnQtdHJlZS1jb250YWluZXJfX25vZGUtLWRvY3VtZW50XCIgKmNka1RyZWVOb2RlRGVmPVwibGV0IG5vZGVcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5vZGVcIiAoY2xpY2spPVwic2VsZWN0ZWROb2RlSXRlbSA9IG5vZGU7IGNsaWNrZWREb2N1bWVudC5lbWl0KG5vZGUpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3Mubm9kZS0tc2VsZWN0ZWRdPVwic2VsZWN0ZWROb2RlSXRlbT8ubmFtZSA9PT0gbm9kZS5uYW1lXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGVfX2ljb25cIiBkaXNhYmxlZD5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pbWcvY2FzZS1maWxlLXZpZXcvY2FzZS1maWxlLXZpZXctZG9jdW1lbnQuc3ZnXCIgY2xhc3M9XCJub2RlX19pY29uSW1nXCIgYWx0PVwiRG9jdW1lbnQgaWNvblwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm9kZV9fbmFtZSBub2RlLW5hbWUtZG9jdW1lbnRcIj5cbiAgICAgICAgICAgIHt7bm9kZS5uYW1lfX1cbiAgICAgICAgICAgIDxicj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm9kZV9fZG9jdW1lbnQtdXBsb2FkLXRpbWVzdGFtcFwiPnt7bm9kZS51cGxvYWRfdGltZXN0YW1wIHwgY2NkRGF0ZSA6ICdsb2NhbCcgOidkZCBNTU0gWVlZWSBISDptbSd9fTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGVfX2RvY3VtZW50LW9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxjY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyLWRvY3VtZW50LWFjdGlvbnNcbiAgICAgICAgICAgICAgKGNoYW5nZUZvbGRlckFjdGlvbik9XCJ0cmlnZ2VyRG9jdW1lbnRBY3Rpb24oJ2NoYW5nZUZvbGRlcicsIG5vZGUpXCJcbiAgICAgICAgICAgICAgKG9wZW5JbkFOZXdUYWJBY3Rpb24pPVwidHJpZ2dlckRvY3VtZW50QWN0aW9uKCdvcGVuSW5BTmV3VGFiJywgbm9kZSlcIlxuICAgICAgICAgICAgICAoZG93bmxvYWRBY3Rpb24pPVwidHJpZ2dlckRvY3VtZW50QWN0aW9uKCdkb3dubG9hZCcsIG5vZGUpXCJcbiAgICAgICAgICAgICAgKHByaW50QWN0aW9uKT1cInRyaWdnZXJEb2N1bWVudEFjdGlvbigncHJpbnQnLCBub2RlKVwiXG4gICAgICAgICAgICAgIFthbGxvd01vdmluZ109XCJhbGxvd01vdmluZ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2NjZC1jYXNlLWZpbGUtdmlldy1mb2xkZXItZG9jdW1lbnQtYWN0aW9ucz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Nkay1uZXN0ZWQtdHJlZS1ub2RlPlxuICAgICAgPCEtLSBmb2xkZXItLT5cbiAgICAgIDxjZGstbmVzdGVkLXRyZWUtbm9kZSBjbGFzcz1cImRvY3VtZW50LXRyZWUtY29udGFpbmVyX19ub2RlIGRvY3VtZW50LXRyZWUtY29udGFpbmVyX19mb2xkZXJcIiAqY2RrVHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogbmVzdGVkQ2hpbGRyZW5cIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5vZGVcIiBjZGtUcmVlTm9kZVRvZ2dsZT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZV9faWNvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3RvZ2dsZSAnICsgbm9kZS5uYW1lXCIgPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cIm5vZGVfX2ljb25JbWdcIlxuICAgICAgICAgICAgICAgICBbc3JjXT1cIm5lc3RlZFRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnL2Fzc2V0cy9pbWFnZXMvZm9sZGVyLW9wZW4ucG5nJyA6ICcvYXNzZXRzL2ltYWdlcy9mb2xkZXIucG5nJ1wiIGFsdD1cIkZvbGRlciBpY29uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vZGVfX2NvdW50XCI+e3tub2RlLmNoaWxkRG9jdW1lbnRDb3VudH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm9kZV9fbmFtZSBub2RlX19uYW1lLS1mb2xkZXJcIj57e25vZGUubmFtZX19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IFtjbGFzcy5kb2N1bWVudC10cmVlLWludmlzaWJsZV09XCIhbmVzdGVkVHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgY2RrVHJlZU5vZGVPdXRsZXQ+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jZGstbmVzdGVkLXRyZWUtbm9kZT5cbiAgICA8L2Nkay10cmVlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19