vc-create-dashboard 3.0.80 → 3.0.82

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 (45) hide show
  1. package/esm2022/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.mjs +79 -290
  2. package/esm2022/lib/create-dashboard-container/configure-widgets/configure-widgets/widget.interface.mjs +1 -1
  3. package/esm2022/lib/create-dashboard-container/constants/assets.constant.mjs +1 -1
  4. package/esm2022/lib/create-dashboard-container/create-dashboard.component.mjs +826 -404
  5. package/esm2022/lib/create-dashboard-container/create-dashboard.module.mjs +7 -3
  6. package/esm2022/lib/create-dashboard-container/pipes/search-program.pipe.mjs +37 -0
  7. package/esm2022/lib/create-dashboard-container/program-list/constant.mjs +31 -0
  8. package/esm2022/lib/create-dashboard-container/program-list/information-block/information-block.component.mjs +13 -0
  9. package/esm2022/lib/create-dashboard-container/program-list/interfaces/list-item.interface.mjs +2 -0
  10. package/esm2022/lib/create-dashboard-container/program-list/list-container/list-container.component.mjs +50 -0
  11. package/esm2022/lib/create-dashboard-container/program-list/pipes/check-selected-items.pipes.mjs +23 -0
  12. package/esm2022/lib/create-dashboard-container/program-list/program-list/program-list.component.mjs +294 -0
  13. package/esm2022/lib/create-dashboard-container/program-list/program-list.module.mjs +60 -0
  14. package/esm2022/lib/create-dashboard-container/program-list/services/list-utils.service.mjs +27 -0
  15. package/esm2022/lib/create-dashboard-container/program-list/services/program-list-api.service.mjs +35 -0
  16. package/esm2022/lib/create-dashboard-container/services/configure-widgets.service.mjs +80 -72
  17. package/esm2022/lib/create-dashboard-container/services/create-dashboard.service.mjs +87 -4
  18. package/esm2022/lib/create-dashboard-container/utils/dashboard-edit.utils.mjs +181 -0
  19. package/esm2022/lib/ui-kit/dialog/dialog.component.mjs +8 -11
  20. package/esm2022/lib/ui-kit/loaders/loaders.module.mjs +24 -0
  21. package/esm2022/lib/ui-kit/loaders/table-loader/table-loader.component.mjs +18 -0
  22. package/fesm2022/vc-create-dashboard.mjs +3555 -2515
  23. package/fesm2022/vc-create-dashboard.mjs.map +1 -1
  24. package/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.d.ts +6 -16
  25. package/lib/create-dashboard-container/configure-widgets/configure-widgets/widget.interface.d.ts +1 -1
  26. package/lib/create-dashboard-container/create-dashboard.component.d.ts +62 -23
  27. package/lib/create-dashboard-container/create-dashboard.module.d.ts +2 -1
  28. package/lib/create-dashboard-container/pipes/search-program.pipe.d.ts +7 -0
  29. package/lib/create-dashboard-container/program-list/constant.d.ts +24 -0
  30. package/lib/create-dashboard-container/program-list/information-block/information-block.component.d.ts +6 -0
  31. package/lib/create-dashboard-container/program-list/interfaces/list-item.interface.d.ts +5 -0
  32. package/lib/create-dashboard-container/program-list/list-container/list-container.component.d.ts +9 -0
  33. package/lib/create-dashboard-container/program-list/pipes/check-selected-items.pipes.d.ts +7 -0
  34. package/lib/create-dashboard-container/program-list/program-list/program-list.component.d.ts +119 -0
  35. package/lib/create-dashboard-container/program-list/program-list.module.d.ts +17 -0
  36. package/lib/create-dashboard-container/program-list/services/list-utils.service.d.ts +7 -0
  37. package/lib/create-dashboard-container/program-list/services/program-list-api.service.d.ts +14 -0
  38. package/lib/create-dashboard-container/services/configure-widgets.service.d.ts +1 -16
  39. package/lib/create-dashboard-container/services/create-dashboard.service.d.ts +38 -1
  40. package/lib/create-dashboard-container/utils/dashboard-edit.utils.d.ts +16 -0
  41. package/lib/ui-kit/loaders/loaders.module.d.ts +8 -0
  42. package/lib/ui-kit/loaders/table-loader/table-loader.component.d.ts +9 -0
  43. package/package.json +1 -1
  44. package/esm2022/lib/create-dashboard-container/services/urlConfig.service.mjs +0 -29
  45. package/lib/create-dashboard-container/services/urlConfig.service.d.ts +0 -10
@@ -17,73 +17,82 @@ export class ConfigureWidgetsService {
17
17
  this.env = config.envConfig;
18
18
  }
19
19
  }
20
- complianceWidgetsData = [
21
- {
22
- title: 'Overview',
23
- id: 'overview_flag',
24
- description: 'Displays all responsibilities that have been assigned to you.',
25
- widgetImage: ASSETS.overviewWidget,
26
- value: 0,
27
- },
28
- {
29
- title: 'Responsibility Calendar',
30
- id: 'compliance_calendar_flag',
31
- description: 'Displays all responsibilities that are due on a particular day.',
32
- widgetImage: ASSETS.responsibilityCalenderWidget,
33
- value: 0,
34
- },
35
- {
36
- title: 'Responsibility Center Overview',
37
- id: 'responsibility_center_overview_flag',
38
- description: 'Displays all responsibilities that have been assigned to you.',
39
- widgetImage: ASSETS.overviewWidget,
40
- value: 0,
41
- },
42
- {
43
- title: 'My Responsibilities',
44
- id: 'my_responsibilities',
45
- description: 'Displays all responsibilities that have been assigned to you.',
46
- widgetImage: ASSETS.myResponsibilitiesWidget,
47
- tabOption: true,
48
- value: 0,
49
- },
50
- {
51
- title: 'Key Responsibilities',
52
- id: 'key_responsibilities',
53
- description: 'Displays all responsibilities that are due on a particular day.',
54
- widgetImage: ASSETS.keyResponsibilitiesWidget,
55
- tabOption: true,
56
- value: 0,
57
- },
58
- {
59
- title: 'Trend Analysis',
60
- id: 'trend_analysis_flag',
61
- description: 'Displays all responsibilities that have been assigned to you.',
62
- widgetImage: ASSETS.trendAnalysisWidget,
63
- value: 0,
64
- },
65
- {
66
- title: 'Workroom Updates',
67
- id: 'workroom_alert_flag',
68
- description: 'Displays all responsibilities that have been assigned to you.',
69
- widgetImage: ASSETS.workroomUpdatesWidget,
70
- value: 0,
71
- },
72
- {
73
- title: 'Recent Activities',
74
- id: 'recent_activity_flag',
75
- description: 'Displays all responsibilities that have been assigned to you.',
76
- widgetImage: ASSETS.recentActivitiesWidget,
77
- value: 0,
78
- },
79
- {
80
- title: 'Exception Summary',
81
- id: 'exception_summary_flag',
82
- description: 'Displays all responsibilities that have been assigned to you.',
83
- widgetImage: ASSETS.exceptionSummaryWidget,
84
- value: 0,
85
- },
86
- ];
20
+ // complianceWidgetsData = [
21
+ // {
22
+ // title: 'Overview',
23
+ // id: 'overview_flag',
24
+ // description:
25
+ // 'Displays all responsibilities that have been assigned to you.',
26
+ // widgetImage: ASSETS.overviewWidget,
27
+ // value: 0,
28
+ // },
29
+ // {
30
+ // title: 'Responsibility Calendar',
31
+ // id: 'compliance_calendar_flag',
32
+ // description:
33
+ // 'Displays all responsibilities that are due on a particular day.',
34
+ // widgetImage: ASSETS.responsibilityCalenderWidget,
35
+ // value: 0,
36
+ // },
37
+ // {
38
+ // title: 'Responsibility Center Overview',
39
+ // id: 'responsibility_center_overview_flag',
40
+ // description:
41
+ // 'Displays all responsibilities that have been assigned to you.',
42
+ // widgetImage: ASSETS.overviewWidget,
43
+ // value: 0,
44
+ // },
45
+ // {
46
+ // title: 'My Responsibilities',
47
+ // id: 'my_responsibilities',
48
+ // description:
49
+ // 'Displays all responsibilities that have been assigned to you.',
50
+ // widgetImage: ASSETS.myResponsibilitiesWidget,
51
+ // tabOption: true,
52
+ // value: 0,
53
+ // },
54
+ // {
55
+ // title: 'Key Responsibilities',
56
+ // id: 'key_responsibilities',
57
+ // description:
58
+ // 'Displays all responsibilities that are due on a particular day.',
59
+ // widgetImage: ASSETS.keyResponsibilitiesWidget,
60
+ // tabOption: true,
61
+ // value: 0,
62
+ // },
63
+ // {
64
+ // title: 'Trend Analysis',
65
+ // id: 'trend_analysis_flag',
66
+ // description:
67
+ // 'Displays all responsibilities that have been assigned to you.',
68
+ // widgetImage: ASSETS.trendAnalysisWidget,
69
+ // value: 0,
70
+ // },
71
+ // {
72
+ // title: 'Workroom Updates',
73
+ // id: 'workroom_alert_flag',
74
+ // description:
75
+ // 'Displays all responsibilities that have been assigned to you.',
76
+ // widgetImage: ASSETS.workroomUpdatesWidget,
77
+ // value: 0,
78
+ // },
79
+ // {
80
+ // title: 'Recent Activities',
81
+ // id: 'recent_activity_flag',
82
+ // description:
83
+ // 'Displays all responsibilities that have been assigned to you.',
84
+ // widgetImage: ASSETS.recentActivitiesWidget,
85
+ // value: 0,
86
+ // },
87
+ // {
88
+ // title: 'Exception Summary',
89
+ // id: 'exception_summary_flag',
90
+ // description:
91
+ // 'Displays all responsibilities that have been assigned to you.',
92
+ // widgetImage: ASSETS.exceptionSummaryWidget,
93
+ // value: 0,
94
+ // },
95
+ // ];
87
96
  riskWidgetsData = [
88
97
  {
89
98
  title: 'Risk Overview',
@@ -209,11 +218,10 @@ export class ConfigureWidgetsService {
209
218
  .pipe(retry(2));
210
219
  }
211
220
  moduleType(identifier) {
212
- if (JSON.stringify(this.complianceWidgetsData).includes(identifier)) {
213
- return 'COMPLIANCE';
214
- }
215
- else if (JSON.stringify(this.riskWidgetsData).includes(identifier)) {
221
+ if (JSON.stringify(this.riskWidgetsData).includes(identifier)) {
216
222
  return 'RISK';
223
+ // } else if (JSON.stringify(this.complianceWidgetsData).includes(identifier)) {
224
+ // return 'COMPLIANCE';
217
225
  }
218
226
  }
219
227
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigureWidgetsService, deps: [{ token: i1.HttpClient }, { token: i2.AuthService }, { token: i3.Configurations, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -227,4 +235,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
227
235
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.Configurations, decorators: [{
228
236
  type: Optional
229
237
  }] }]; } });
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLXdpZGdldHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyZWF0ZS1kYXNoYm9hcmQvc3JjL2xpYi9jcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lci9zZXJ2aWNlcy9jb25maWd1cmUtd2lkZ2V0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFFTCxXQUFXLEdBRVosTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQW1CLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7QUFLdEQsTUFBTSxPQUFPLHVCQUF1QjtJQUl4QjtJQUNBO0lBSkgsR0FBRyxDQUFPO0lBRWpCLFlBQ1UsSUFBZ0IsRUFDaEIsV0FBd0IsRUFDcEIsTUFBdUI7UUFGM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUdoQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxxQkFBcUIsR0FBRztRQUN0QjtZQUNFLEtBQUssRUFBRSxVQUFVO1lBQ2pCLEVBQUUsRUFBRSxlQUFlO1lBQ25CLFdBQVcsRUFDVCwrREFBK0Q7WUFDakUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxjQUFjO1lBQ2xDLEtBQUssRUFBRSxDQUFDO1NBQ1Q7UUFDRDtZQUNFLEtBQUssRUFBRSx5QkFBeUI7WUFDaEMsRUFBRSxFQUFFLDBCQUEwQjtZQUM5QixXQUFXLEVBQ1QsaUVBQWlFO1lBQ25FLFdBQVcsRUFBRSxNQUFNLENBQUMsNEJBQTRCO1lBQ2hELEtBQUssRUFBRSxDQUFDO1NBQ1Q7UUFDRDtZQUNFLEtBQUssRUFBRSxnQ0FBZ0M7WUFDdkMsRUFBRSxFQUFFLHFDQUFxQztZQUN6QyxXQUFXLEVBQ1QsK0RBQStEO1lBQ2pFLFdBQVcsRUFBRSxNQUFNLENBQUMsY0FBYztZQUNsQyxLQUFLLEVBQUUsQ0FBQztTQUNUO1FBQ0Q7WUFDRSxLQUFLLEVBQUUscUJBQXFCO1lBQzVCLEVBQUUsRUFBRSxxQkFBcUI7WUFDekIsV0FBVyxFQUNULCtEQUErRDtZQUNqRSxXQUFXLEVBQUUsTUFBTSxDQUFDLHdCQUF3QjtZQUM1QyxTQUFTLEVBQUUsSUFBSTtZQUNmLEtBQUssRUFBRSxDQUFDO1NBQ1Q7UUFDRDtZQUNFLEtBQUssRUFBRSxzQkFBc0I7WUFDN0IsRUFBRSxFQUFFLHNCQUFzQjtZQUMxQixXQUFXLEVBQ1QsaUVBQWlFO1lBQ25FLFdBQVcsRUFBRSxNQUFNLENBQUMseUJBQXlCO1lBQzdDLFNBQVMsRUFBRSxJQUFJO1lBQ2YsS0FBSyxFQUFFLENBQUM7U0FDVDtRQUNEO1lBQ0UsS0FBSyxFQUFFLGdCQUFnQjtZQUN2QixFQUFFLEVBQUUscUJBQXFCO1lBQ3pCLFdBQVcsRUFDVCwrREFBK0Q7WUFDakUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxtQkFBbUI7WUFDdkMsS0FBSyxFQUFFLENBQUM7U0FDVDtRQUNEO1lBQ0UsS0FBSyxFQUFFLGtCQUFrQjtZQUN6QixFQUFFLEVBQUUscUJBQXFCO1lBQ3pCLFdBQVcsRUFDVCwrREFBK0Q7WUFDakUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxxQkFBcUI7WUFDekMsS0FBSyxFQUFFLENBQUM7U0FDVDtRQUNEO1lBQ0UsS0FBSyxFQUFFLG1CQUFtQjtZQUMxQixFQUFFLEVBQUUsc0JBQXNCO1lBQzFCLFdBQVcsRUFDVCwrREFBK0Q7WUFDakUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxzQkFBc0I7WUFDMUMsS0FBSyxFQUFFLENBQUM7U0FDVDtRQUNEO1lBQ0UsS0FBSyxFQUFFLG1CQUFtQjtZQUMxQixFQUFFLEVBQUUsd0JBQXdCO1lBQzVCLFdBQVcsRUFDVCwrREFBK0Q7WUFDakUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxzQkFBc0I7WUFDMUMsS0FBSyxFQUFFLENBQUM7U0FDVDtLQUNGLENBQUM7SUFFRixlQUFlLEdBQUc7UUFDaEI7WUFDRSxLQUFLLEVBQUUsZUFBZTtZQUN0QixFQUFFLEVBQUUsZUFBZTtZQUNuQixXQUFXLEVBQUUsYUFBYTtZQUMxQixzR0FBc0c7WUFDdEcsV0FBVyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7WUFDdEMsS0FBSyxFQUFFLENBQUM7U0FDVDtRQUNEO1lBQ0UsS0FBSyxFQUFFLDJCQUEyQjtZQUNsQyxFQUFFLEVBQUUseUJBQXlCO1lBQzdCLFdBQVcsRUFBRSxhQUFhO1lBQzFCLDJHQUEyRztZQUMzRyxXQUFXLEVBQUUsTUFBTSxDQUFDLHVCQUF1QjtZQUMzQyxLQUFLLEVBQUUsQ0FBQztTQUNUO1FBQ0Q7WUFDRSxLQUFLLEVBQUUsY0FBYztZQUNyQixFQUFFLEVBQUUsY0FBYztZQUNsQixXQUFXLEVBQUUsY0FBYztZQUMzQixXQUFXLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtZQUN0QyxLQUFLLEVBQUUsQ0FBQztTQUNUO1FBQ0Q7WUFDRSxLQUFLLEVBQUUsd0JBQXdCO1lBQy9CLEVBQUUsRUFBRSx3QkFBd0I7WUFDNUIsV0FBVyxFQUFFLGFBQWE7WUFDMUIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7WUFDdEMsS0FBSyxFQUFFLENBQUM7U0FDVDtRQUNEO1lBQ0UsS0FBSyxFQUFFLGdDQUFnQztZQUN2QyxFQUFFLEVBQUUsd0JBQXdCO1lBQzVCLFdBQVcsRUFBRSxhQUFhO1lBQzFCLFdBQVcsRUFBRSxNQUFNLENBQUMsa0JBQWtCO1lBQ3RDLEtBQUssRUFBRSxDQUFDO1NBQ1Q7UUFDRDtZQUNFLEtBQUssRUFBRSxpREFBaUQ7WUFDeEQsRUFBRSxFQUFFLGdEQUFnRDtZQUNwRCxXQUFXLEVBQUUsY0FBYztZQUMzQixvR0FBb0c7WUFDcEcsV0FBVyxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDcEMsS0FBSyxFQUFFLENBQUM7U0FDVDtRQUNEO1lBQ0UsS0FBSyxFQUFFLGlEQUFpRDtZQUN4RCxFQUFFLEVBQUUsZ0RBQWdEO1lBQ3BELFdBQVcsRUFBRSxjQUFjO1lBQzNCLG9HQUFvRztZQUNwRyxXQUFXLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtZQUNwQyxLQUFLLEVBQUUsQ0FBQztTQUNUO1FBQ0Q7WUFDRSxLQUFLLEVBQUUsd0JBQXdCO1lBQy9CLEVBQUUsRUFBRSx3QkFBd0I7WUFDNUIsV0FBVyxFQUFFLGFBQWE7WUFDMUIsK0dBQStHO1lBQy9HLFdBQVcsRUFBRSxNQUFNLENBQUMsMEJBQTBCO1lBQzlDLEtBQUssRUFBRSxDQUFDO1NBQ1Q7UUFDRDtZQUNFLEtBQUssRUFBRSxjQUFjO1lBQ3JCLEVBQUUsRUFBRSxjQUFjO1lBQ2xCLFdBQVcsRUFBRSxjQUFjO1lBQzNCLFdBQVcsRUFBRSxNQUFNLENBQUMsaUJBQWlCO1lBQ3JDLEtBQUssRUFBRSxDQUFDO1NBQ1Q7UUFDRDtZQUNFLEtBQUssRUFBRSxvQ0FBb0M7WUFDM0MsRUFBRSxFQUFFLG9DQUFvQztZQUN4QyxXQUFXLEVBQUUsY0FBYztZQUMzQiw0R0FBNEc7WUFDNUcsV0FBVyxFQUFFLE1BQU0sQ0FBQyx3QkFBd0I7WUFDNUMsS0FBSyxFQUFFLENBQUM7U0FDVDtRQUVEO1lBQ0UsS0FBSyxFQUFFLG9DQUFvQztZQUMzQyxFQUFFLEVBQUUsb0NBQW9DO1lBQ3hDLFdBQVcsRUFBRSxhQUFhO1lBQzFCLDRHQUE0RztZQUM1RyxXQUFXLEVBQUUsTUFBTSxDQUFDLHdCQUF3QjtZQUM1QyxLQUFLLEVBQUUsQ0FBQztTQUNUO1FBQ0Q7WUFDRSxLQUFLLEVBQUUsc0RBQXNEO1lBQzdELEVBQUUsRUFBRSxzREFBc0Q7WUFDMUQsV0FBVyxFQUFFLGNBQWM7WUFDM0IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxjQUFjO1lBQ2xDLEtBQUssRUFBRSxDQUFDO1NBQ1Q7UUFDRDtZQUNFLEtBQUssRUFBRSxzREFBc0Q7WUFDN0QsRUFBRSxFQUFFLHNEQUFzRDtZQUMxRCxXQUFXLEVBQUUsY0FBYztZQUMzQixXQUFXLEVBQUUsTUFBTSxDQUFDLGNBQWM7WUFDbEMsS0FBSyxFQUFFLENBQUM7U0FDVDtRQUNEO1lBQ0UsS0FBSyxFQUFFLGlDQUFpQztZQUN4QyxFQUFFLEVBQUUsaUNBQWlDO1lBQ3JDLFdBQVcsRUFBRSxjQUFjO1lBQzNCLFdBQVcsRUFBRSxNQUFNLENBQUMsVUFBVTtZQUM5QixLQUFLLEVBQUUsQ0FBQztTQUNUO1FBQ0Q7WUFDRSxLQUFLLEVBQUUsb0JBQW9CO1lBQzNCLEVBQUUsRUFBRSw2QkFBNkI7WUFDakMsV0FBVyxFQUFFLGNBQWM7WUFDM0IsdUdBQXVHO1lBQ3ZHLFdBQVcsRUFBRSxNQUFNLENBQUMsb0JBQW9CO1lBQ3hDLEtBQUssRUFBRSxDQUFDO1NBQ1Q7S0FDRixDQUFDO0lBQ0YsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUV2QixxQkFBcUI7SUFDckIscUJBQXFCLENBQUMsVUFBZTtRQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FDbkMsT0FBTyxFQUNQLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FDekMsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsa0JBQWtCLEVBQUUsVUFBVSxDQUFDO2FBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsVUFBVSxDQUFDLFVBQWtCO1FBQzNCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDbkUsT0FBTyxZQUFZLENBQUM7U0FDckI7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNwRSxPQUFPLE1BQU0sQ0FBQztTQUNmO0lBQ0gsQ0FBQzt3R0FsT1UsdUJBQXVCOzRHQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBT0ksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB3aWRnZXREYXRhTW9kZWwgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3dpZGdldC1kYXRhLW1vZGVsJztcbmltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBIZWFkZXJzLFxuICBKc29ucENsaWVudEJhY2tlbmQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbnMnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb25maWd1cmVXaWRnZXRzU2VydmljZSB7XG4gIHB1YmxpYyBlbnYhOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG4gIH1cblxuICBjb21wbGlhbmNlV2lkZ2V0c0RhdGEgPSBbXG4gICAge1xuICAgICAgdGl0bGU6ICdPdmVydmlldycsXG4gICAgICBpZDogJ292ZXJ2aWV3X2ZsYWcnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdEaXNwbGF5cyBhbGwgcmVzcG9uc2liaWxpdGllcyB0aGF0IGhhdmUgYmVlbiBhc3NpZ25lZCB0byB5b3UuJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMub3ZlcnZpZXdXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmVzcG9uc2liaWxpdHkgQ2FsZW5kYXInLFxuICAgICAgaWQ6ICdjb21wbGlhbmNlX2NhbGVuZGFyX2ZsYWcnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdEaXNwbGF5cyBhbGwgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBkdWUgb24gYSBwYXJ0aWN1bGFyIGRheS4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yZXNwb25zaWJpbGl0eUNhbGVuZGVyV2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlciBPdmVydmlldycsXG4gICAgICBpZDogJ3Jlc3BvbnNpYmlsaXR5X2NlbnRlcl9vdmVydmlld19mbGFnJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGlzcGxheXMgYWxsIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8geW91LicsXG4gICAgICB3aWRnZXRJbWFnZTogQVNTRVRTLm92ZXJ2aWV3V2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ015IFJlc3BvbnNpYmlsaXRpZXMnLFxuICAgICAgaWQ6ICdteV9yZXNwb25zaWJpbGl0aWVzJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGlzcGxheXMgYWxsIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8geW91LicsXG4gICAgICB3aWRnZXRJbWFnZTogQVNTRVRTLm15UmVzcG9uc2liaWxpdGllc1dpZGdldCxcbiAgICAgIHRhYk9wdGlvbjogdHJ1ZSxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdLZXkgUmVzcG9uc2liaWxpdGllcycsXG4gICAgICBpZDogJ2tleV9yZXNwb25zaWJpbGl0aWVzJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGlzcGxheXMgYWxsIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgZHVlIG9uIGEgcGFydGljdWxhciBkYXkuJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMua2V5UmVzcG9uc2liaWxpdGllc1dpZGdldCxcbiAgICAgIHRhYk9wdGlvbjogdHJ1ZSxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdUcmVuZCBBbmFseXNpcycsXG4gICAgICBpZDogJ3RyZW5kX2FuYWx5c2lzX2ZsYWcnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdEaXNwbGF5cyBhbGwgcmVzcG9uc2liaWxpdGllcyB0aGF0IGhhdmUgYmVlbiBhc3NpZ25lZCB0byB5b3UuJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMudHJlbmRBbmFseXNpc1dpZGdldCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdXb3Jrcm9vbSBVcGRhdGVzJyxcbiAgICAgIGlkOiAnd29ya3Jvb21fYWxlcnRfZmxhZycsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0Rpc3BsYXlzIGFsbCByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHlvdS4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy53b3Jrcm9vbVVwZGF0ZXNXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmVjZW50IEFjdGl2aXRpZXMnLFxuICAgICAgaWQ6ICdyZWNlbnRfYWN0aXZpdHlfZmxhZycsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0Rpc3BsYXlzIGFsbCByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHlvdS4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yZWNlbnRBY3Rpdml0aWVzV2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0V4Y2VwdGlvbiBTdW1tYXJ5JyxcbiAgICAgIGlkOiAnZXhjZXB0aW9uX3N1bW1hcnlfZmxhZycsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0Rpc3BsYXlzIGFsbCByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHlvdS4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5leGNlcHRpb25TdW1tYXJ5V2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgXTtcblxuICByaXNrV2lkZ2V0c0RhdGEgPSBbXG4gICAge1xuICAgICAgdGl0bGU6ICdSaXNrIE92ZXJ2aWV3JyxcbiAgICAgIGlkOiAncmlza19vdmVydmlldycsXG4gICAgICBkZXNjcmlwdGlvbjogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIC8vIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmlzay1vdmVydmlldy5wbmcnLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yaXNrT3ZlcnZpZXdXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmlzayBBcHBldGl0ZSAmIFRvbGVyYW5jZScsXG4gICAgICBpZDogJ3Jpc2tfYXBwZXRpdGVfdG9sZXJhbmNlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnZGVzY3JpcHRpb24nLFxuICAgICAgLy8gd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9hcHBldGl0ZS10b2xlcmFuY2UucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuYXBwZXRpdGVUb2xlcmFuY2VXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmlzayBSYXRpbmdzJyxcbiAgICAgIGlkOiAncmlza19yYXRpbmdzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24uJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuYXBwZXRpdGVfdG9sZXJhbmNlLFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ1Jpc2tzIFdpdGhvdXQgQ29udHJvbHMnLFxuICAgICAgaWQ6ICdyaXNrc193aXRob3V0X2NvbnRyb2xzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5hcHBldGl0ZV90b2xlcmFuY2UsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmlza3MgRXhjZWVkaW5nIFJpc2sgVG9sZXJhbmNlJyxcbiAgICAgIGlkOiAnZXhjZWVkc19yaXNrX3RvbGVyYW5jZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuYXBwZXRpdGVfdG9sZXJhbmNlLFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0luaGVyZW50IFJpc2sgUmF0aW5nIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgJyxcbiAgICAgIGlkOiAnaW5oZXJlbnRfcmlza19yYXRpbmdfYnlfcmVzcG9uc2liaWxpdHlfY2VudGVycycsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uLicsXG4gICAgICAvLyB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2luaGVyZW50LVJDLnBuZycsXG4gICAgICB3aWRnZXRJbWFnZTogQVNTRVRTLmluaGVyZW50UkNXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmVzaWR1YWwgUmlzayBSYXRpbmcgYnkgUmVzcG9uc2liaWxpdHkgQ2VudGVycyAnLFxuICAgICAgaWQ6ICdyZXNpZHVhbF9yaXNrX3JhdGluZ19ieV9yZXNwb25zaWJpbGl0eV9jZW50ZXJzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24uJyxcbiAgICAgIC8vIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmVzaWR1YWwtUkMucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMucmVzaWR1YWxSQ1dpZGdldCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdSaXNrIENhdGVnb3J5IE92ZXJ2aWV3JyxcbiAgICAgIGlkOiAncmlza19jYXRlZ29yeV9vdmVydmlldycsXG4gICAgICBkZXNjcmlwdGlvbjogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIC8vIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmlzay1jYXRlZ29yeS1vdmVydmlldy5wbmcnLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yaXNrQ2F0ZWdvcnlPdmVydmlld1dpZGdldCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdSaXNrIEhlYXRtYXAnLFxuICAgICAgaWQ6ICdyaXNrX2hlYXRtYXAnLFxuICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbi4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yaXNrSGVhdG1hcFdpZGdldCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdJbmhlcmVudCBSaXNrIFJhdGluZyBieSBDYXRlZ29yaWVzJyxcbiAgICAgIGlkOiAnaW5oZXJlbnRfcmlza19yYXRpbmdfYnlfY2F0ZWdvcmllcycsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uLicsXG4gICAgICAvLyB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2luaGVyZW50LWNhdGVnb3JpZXMucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuaW5oZXJlbnRDYXRlZ29yaWVzV2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmVzaWR1YWwgUmlzayBSYXRpbmcgYnkgQ2F0ZWdvcmllcycsXG4gICAgICBpZDogJ3Jlc2lkdWFsX3Jpc2tfcmF0aW5nX2J5X2NhdGVnb3JpZXMnLFxuICAgICAgZGVzY3JpcHRpb246ICdkZXNjcmlwdGlvbicsXG4gICAgICAvLyB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jlc2lkdWFsLWNhdGVnb3JpZXMucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMucmVzaWR1YWxDYXRlZ29yaWVzV2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0luaGVyZW50IFJpc2sgUmF0aW5nIFRyZW5kIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMnLFxuICAgICAgaWQ6ICdpbmhlcmVudF9yaXNrX3JhdGluZ190cmVuZF9ieV9yZXNwb25zaWJpbGl0eV9jZW50ZXJzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24uJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuaW5oZXJlbnRfdHJlbmQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmVzaWR1YWwgUmlzayBSYXRpbmcgVHJlbmQgYnkgUmVzcG9uc2liaWxpdHkgQ2VudGVycycsXG4gICAgICBpZDogJ3Jlc2lkdWFsX3Jpc2tfcmF0aW5nX3RyZW5kX2J5X3Jlc3BvbnNpYmlsaXR5X2NlbnRlcnMnLFxuICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbi4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yZXNpZHVhbF90cmVuZCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdSaXNrIFJhdGluZyBUcmVuZCBieSBDYXRlZ29yaWVzJyxcbiAgICAgIGlkOiAncmlza19yYXRpbmdfdHJlbmRfYnlfY2F0ZWdvcmllcycsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uLicsXG4gICAgICB3aWRnZXRJbWFnZTogQVNTRVRTLnJpc2tfdHJlbmQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnVG9wIDUgUmlzayBSYXRpbmdzJyxcbiAgICAgIGlkOiAndG9wXzVfcmVzaWR1YWxfcmlza19yYXRpbmdzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24uJyxcbiAgICAgIC8vIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvNS1yaXNrLXJhdGluZ3MucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMudGVuUmlza1JhdGluZ3NXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICBdO1xuICBhdWRpdFdpZGdldHNEYXRhID0gW107XG4gIHBvbGljeVdpZGdldHNEYXRhID0gW107XG5cbiAgLy8gRm9yIGRhc2hib2FyZCB2aWV3XG4gIGRhc2hCb2FyZFdpZGdldFVwZGF0ZSh3aWRHZXRKc29uOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wdXQodGhpcy5lbnYuT3JnYW5pemF0aW9uUHV0ICsgJ2Rhc2hib2FyZFdpZGdldHMnLCB3aWRHZXRKc29uKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgbW9kdWxlVHlwZShpZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5jb21wbGlhbmNlV2lkZ2V0c0RhdGEpLmluY2x1ZGVzKGlkZW50aWZpZXIpKSB7XG4gICAgICByZXR1cm4gJ0NPTVBMSUFOQ0UnO1xuICAgIH0gZWxzZSBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5yaXNrV2lkZ2V0c0RhdGEpLmluY2x1ZGVzKGlkZW50aWZpZXIpKSB7XG4gICAgICByZXR1cm4gJ1JJU0snO1xuICAgIH1cbiAgfVxufVxuIl19
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLXdpZGdldHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyZWF0ZS1kYXNoYm9hcmQvc3JjL2xpYi9jcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lci9zZXJ2aWNlcy9jb25maWd1cmUtd2lkZ2V0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFFTCxXQUFXLEdBRVosTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQW1CLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7QUFLdEQsTUFBTSxPQUFPLHVCQUF1QjtJQUl4QjtJQUNBO0lBSkgsR0FBRyxDQUFPO0lBRWpCLFlBQ1UsSUFBZ0IsRUFDaEIsV0FBd0IsRUFDcEIsTUFBdUI7UUFGM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUdoQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsTUFBTTtJQUNOLHlCQUF5QjtJQUN6QiwyQkFBMkI7SUFDM0IsbUJBQW1CO0lBQ25CLHlFQUF5RTtJQUN6RSwwQ0FBMEM7SUFDMUMsZ0JBQWdCO0lBQ2hCLE9BQU87SUFDUCxNQUFNO0lBQ04sd0NBQXdDO0lBQ3hDLHNDQUFzQztJQUN0QyxtQkFBbUI7SUFDbkIsMkVBQTJFO0lBQzNFLHdEQUF3RDtJQUN4RCxnQkFBZ0I7SUFDaEIsT0FBTztJQUNQLE1BQU07SUFDTiwrQ0FBK0M7SUFDL0MsaURBQWlEO0lBQ2pELG1CQUFtQjtJQUNuQix5RUFBeUU7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QUUsQ0FBQztTQUNUO0tBQ0YsQ0FBQztJQUNGLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUN0QixpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFFdkIscUJBQXFCO0lBQ3JCLHFCQUFxQixDQUFDLFVBQWU7UUFDbkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLGtCQUFrQixFQUFFLFVBQVUsQ0FBQzthQUM5RCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUFrQjtRQUMzQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM3RCxPQUFPLE1BQU0sQ0FBQztZQUNoQixnRkFBZ0Y7WUFDaEYseUJBQXlCO1NBQ3hCO0lBQ0gsQ0FBQzt3R0FsT1UsdUJBQXVCOzRHQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBT0ksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB3aWRnZXREYXRhTW9kZWwgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3dpZGdldC1kYXRhLW1vZGVsJztcbmltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBIZWFkZXJzLFxuICBKc29ucENsaWVudEJhY2tlbmQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbnMnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb25maWd1cmVXaWRnZXRzU2VydmljZSB7XG4gIHB1YmxpYyBlbnYhOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG4gIH1cblxuICAvLyBjb21wbGlhbmNlV2lkZ2V0c0RhdGEgPSBbXG4gIC8vICAge1xuICAvLyAgICAgdGl0bGU6ICdPdmVydmlldycsXG4gIC8vICAgICBpZDogJ292ZXJ2aWV3X2ZsYWcnLFxuICAvLyAgICAgZGVzY3JpcHRpb246XG4gIC8vICAgICAgICdEaXNwbGF5cyBhbGwgcmVzcG9uc2liaWxpdGllcyB0aGF0IGhhdmUgYmVlbiBhc3NpZ25lZCB0byB5b3UuJyxcbiAgLy8gICAgIHdpZGdldEltYWdlOiBBU1NFVFMub3ZlcnZpZXdXaWRnZXQsXG4gIC8vICAgICB2YWx1ZTogMCxcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIHRpdGxlOiAnUmVzcG9uc2liaWxpdHkgQ2FsZW5kYXInLFxuICAvLyAgICAgaWQ6ICdjb21wbGlhbmNlX2NhbGVuZGFyX2ZsYWcnLFxuICAvLyAgICAgZGVzY3JpcHRpb246XG4gIC8vICAgICAgICdEaXNwbGF5cyBhbGwgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBkdWUgb24gYSBwYXJ0aWN1bGFyIGRheS4nLFxuICAvLyAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yZXNwb25zaWJpbGl0eUNhbGVuZGVyV2lkZ2V0LFxuICAvLyAgICAgdmFsdWU6IDAsXG4gIC8vICAgfSxcbiAgLy8gICB7XG4gIC8vICAgICB0aXRsZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlciBPdmVydmlldycsXG4gIC8vICAgICBpZDogJ3Jlc3BvbnNpYmlsaXR5X2NlbnRlcl9vdmVydmlld19mbGFnJyxcbiAgLy8gICAgIGRlc2NyaXB0aW9uOlxuICAvLyAgICAgICAnRGlzcGxheXMgYWxsIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8geW91LicsXG4gIC8vICAgICB3aWRnZXRJbWFnZTogQVNTRVRTLm92ZXJ2aWV3V2lkZ2V0LFxuICAvLyAgICAgdmFsdWU6IDAsXG4gIC8vICAgfSxcbiAgLy8gICB7XG4gIC8vICAgICB0aXRsZTogJ015IFJlc3BvbnNpYmlsaXRpZXMnLFxuICAvLyAgICAgaWQ6ICdteV9yZXNwb25zaWJpbGl0aWVzJyxcbiAgLy8gICAgIGRlc2NyaXB0aW9uOlxuICAvLyAgICAgICAnRGlzcGxheXMgYWxsIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8geW91LicsXG4gIC8vICAgICB3aWRnZXRJbWFnZTogQVNTRVRTLm15UmVzcG9uc2liaWxpdGllc1dpZGdldCxcbiAgLy8gICAgIHRhYk9wdGlvbjogdHJ1ZSxcbiAgLy8gICAgIHZhbHVlOiAwLFxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgdGl0bGU6ICdLZXkgUmVzcG9uc2liaWxpdGllcycsXG4gIC8vICAgICBpZDogJ2tleV9yZXNwb25zaWJpbGl0aWVzJyxcbiAgLy8gICAgIGRlc2NyaXB0aW9uOlxuICAvLyAgICAgICAnRGlzcGxheXMgYWxsIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgZHVlIG9uIGEgcGFydGljdWxhciBkYXkuJyxcbiAgLy8gICAgIHdpZGdldEltYWdlOiBBU1NFVFMua2V5UmVzcG9uc2liaWxpdGllc1dpZGdldCxcbiAgLy8gICAgIHRhYk9wdGlvbjogdHJ1ZSxcbiAgLy8gICAgIHZhbHVlOiAwLFxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgdGl0bGU6ICdUcmVuZCBBbmFseXNpcycsXG4gIC8vICAgICBpZDogJ3RyZW5kX2FuYWx5c2lzX2ZsYWcnLFxuICAvLyAgICAgZGVzY3JpcHRpb246XG4gIC8vICAgICAgICdEaXNwbGF5cyBhbGwgcmVzcG9uc2liaWxpdGllcyB0aGF0IGhhdmUgYmVlbiBhc3NpZ25lZCB0byB5b3UuJyxcbiAgLy8gICAgIHdpZGdldEltYWdlOiBBU1NFVFMudHJlbmRBbmFseXNpc1dpZGdldCxcbiAgLy8gICAgIHZhbHVlOiAwLFxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgdGl0bGU6ICdXb3Jrcm9vbSBVcGRhdGVzJyxcbiAgLy8gICAgIGlkOiAnd29ya3Jvb21fYWxlcnRfZmxhZycsXG4gIC8vICAgICBkZXNjcmlwdGlvbjpcbiAgLy8gICAgICAgJ0Rpc3BsYXlzIGFsbCByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHlvdS4nLFxuICAvLyAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy53b3Jrcm9vbVVwZGF0ZXNXaWRnZXQsXG4gIC8vICAgICB2YWx1ZTogMCxcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIHRpdGxlOiAnUmVjZW50IEFjdGl2aXRpZXMnLFxuICAvLyAgICAgaWQ6ICdyZWNlbnRfYWN0aXZpdHlfZmxhZycsXG4gIC8vICAgICBkZXNjcmlwdGlvbjpcbiAgLy8gICAgICAgJ0Rpc3BsYXlzIGFsbCByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHlvdS4nLFxuICAvLyAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yZWNlbnRBY3Rpdml0aWVzV2lkZ2V0LFxuICAvLyAgICAgdmFsdWU6IDAsXG4gIC8vICAgfSxcbiAgLy8gICB7XG4gIC8vICAgICB0aXRsZTogJ0V4Y2VwdGlvbiBTdW1tYXJ5JyxcbiAgLy8gICAgIGlkOiAnZXhjZXB0aW9uX3N1bW1hcnlfZmxhZycsXG4gIC8vICAgICBkZXNjcmlwdGlvbjpcbiAgLy8gICAgICAgJ0Rpc3BsYXlzIGFsbCByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHlvdS4nLFxuICAvLyAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5leGNlcHRpb25TdW1tYXJ5V2lkZ2V0LFxuICAvLyAgICAgdmFsdWU6IDAsXG4gIC8vICAgfSxcbiAgLy8gXTtcblxuICByaXNrV2lkZ2V0c0RhdGEgPSBbXG4gICAge1xuICAgICAgdGl0bGU6ICdSaXNrIE92ZXJ2aWV3JyxcbiAgICAgIGlkOiAncmlza19vdmVydmlldycsXG4gICAgICBkZXNjcmlwdGlvbjogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIC8vIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmlzay1vdmVydmlldy5wbmcnLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yaXNrT3ZlcnZpZXdXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmlzayBBcHBldGl0ZSAmIFRvbGVyYW5jZScsXG4gICAgICBpZDogJ3Jpc2tfYXBwZXRpdGVfdG9sZXJhbmNlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnZGVzY3JpcHRpb24nLFxuICAgICAgLy8gd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9hcHBldGl0ZS10b2xlcmFuY2UucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuYXBwZXRpdGVUb2xlcmFuY2VXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmlzayBSYXRpbmdzJyxcbiAgICAgIGlkOiAncmlza19yYXRpbmdzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24uJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuYXBwZXRpdGVfdG9sZXJhbmNlLFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ1Jpc2tzIFdpdGhvdXQgQ29udHJvbHMnLFxuICAgICAgaWQ6ICdyaXNrc193aXRob3V0X2NvbnRyb2xzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5hcHBldGl0ZV90b2xlcmFuY2UsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmlza3MgRXhjZWVkaW5nIFJpc2sgVG9sZXJhbmNlJyxcbiAgICAgIGlkOiAnZXhjZWVkc19yaXNrX3RvbGVyYW5jZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuYXBwZXRpdGVfdG9sZXJhbmNlLFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0luaGVyZW50IFJpc2sgUmF0aW5nIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgJyxcbiAgICAgIGlkOiAnaW5oZXJlbnRfcmlza19yYXRpbmdfYnlfcmVzcG9uc2liaWxpdHlfY2VudGVycycsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uLicsXG4gICAgICAvLyB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2luaGVyZW50LVJDLnBuZycsXG4gICAgICB3aWRnZXRJbWFnZTogQVNTRVRTLmluaGVyZW50UkNXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmVzaWR1YWwgUmlzayBSYXRpbmcgYnkgUmVzcG9uc2liaWxpdHkgQ2VudGVycyAnLFxuICAgICAgaWQ6ICdyZXNpZHVhbF9yaXNrX3JhdGluZ19ieV9yZXNwb25zaWJpbGl0eV9jZW50ZXJzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24uJyxcbiAgICAgIC8vIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmVzaWR1YWwtUkMucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMucmVzaWR1YWxSQ1dpZGdldCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdSaXNrIENhdGVnb3J5IE92ZXJ2aWV3JyxcbiAgICAgIGlkOiAncmlza19jYXRlZ29yeV9vdmVydmlldycsXG4gICAgICBkZXNjcmlwdGlvbjogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIC8vIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmlzay1jYXRlZ29yeS1vdmVydmlldy5wbmcnLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yaXNrQ2F0ZWdvcnlPdmVydmlld1dpZGdldCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdSaXNrIEhlYXRtYXAnLFxuICAgICAgaWQ6ICdyaXNrX2hlYXRtYXAnLFxuICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbi4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yaXNrSGVhdG1hcFdpZGdldCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdJbmhlcmVudCBSaXNrIFJhdGluZyBieSBDYXRlZ29yaWVzJyxcbiAgICAgIGlkOiAnaW5oZXJlbnRfcmlza19yYXRpbmdfYnlfY2F0ZWdvcmllcycsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uLicsXG4gICAgICAvLyB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2luaGVyZW50LWNhdGVnb3JpZXMucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuaW5oZXJlbnRDYXRlZ29yaWVzV2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmVzaWR1YWwgUmlzayBSYXRpbmcgYnkgQ2F0ZWdvcmllcycsXG4gICAgICBpZDogJ3Jlc2lkdWFsX3Jpc2tfcmF0aW5nX2J5X2NhdGVnb3JpZXMnLFxuICAgICAgZGVzY3JpcHRpb246ICdkZXNjcmlwdGlvbicsXG4gICAgICAvLyB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jlc2lkdWFsLWNhdGVnb3JpZXMucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMucmVzaWR1YWxDYXRlZ29yaWVzV2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0luaGVyZW50IFJpc2sgUmF0aW5nIFRyZW5kIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMnLFxuICAgICAgaWQ6ICdpbmhlcmVudF9yaXNrX3JhdGluZ190cmVuZF9ieV9yZXNwb25zaWJpbGl0eV9jZW50ZXJzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24uJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuaW5oZXJlbnRfdHJlbmQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmVzaWR1YWwgUmlzayBSYXRpbmcgVHJlbmQgYnkgUmVzcG9uc2liaWxpdHkgQ2VudGVycycsXG4gICAgICBpZDogJ3Jlc2lkdWFsX3Jpc2tfcmF0aW5nX3RyZW5kX2J5X3Jlc3BvbnNpYmlsaXR5X2NlbnRlcnMnLFxuICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbi4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yZXNpZHVhbF90cmVuZCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdSaXNrIFJhdGluZyBUcmVuZCBieSBDYXRlZ29yaWVzJyxcbiAgICAgIGlkOiAncmlza19yYXRpbmdfdHJlbmRfYnlfY2F0ZWdvcmllcycsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uLicsXG4gICAgICB3aWRnZXRJbWFnZTogQVNTRVRTLnJpc2tfdHJlbmQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnVG9wIDUgUmlzayBSYXRpbmdzJyxcbiAgICAgIGlkOiAndG9wXzVfcmVzaWR1YWxfcmlza19yYXRpbmdzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24uJyxcbiAgICAgIC8vIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvNS1yaXNrLXJhdGluZ3MucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMudGVuUmlza1JhdGluZ3NXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICBdO1xuICBhdWRpdFdpZGdldHNEYXRhID0gW107XG4gIHBvbGljeVdpZGdldHNEYXRhID0gW107XG5cbiAgLy8gRm9yIGRhc2hib2FyZCB2aWV3XG4gIGRhc2hCb2FyZFdpZGdldFVwZGF0ZSh3aWRHZXRKc29uOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wdXQodGhpcy5lbnYuT3JnYW5pemF0aW9uUHV0ICsgJ2Rhc2hib2FyZFdpZGdldHMnLCB3aWRHZXRKc29uKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgbW9kdWxlVHlwZShpZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5yaXNrV2lkZ2V0c0RhdGEpLmluY2x1ZGVzKGlkZW50aWZpZXIpKSB7XG4gICAgICByZXR1cm4gJ1JJU0snO1xuICAgIC8vIH0gZWxzZSBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5jb21wbGlhbmNlV2lkZ2V0c0RhdGEpLmluY2x1ZGVzKGlkZW50aWZpZXIpKSB7XG4gICAgLy8gICByZXR1cm4gJ0NPTVBMSUFOQ0UnO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -84,7 +84,7 @@ export class CreateDashboardService {
84
84
  getResponsibilityCenterList() {
85
85
  const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());
86
86
  return this.http
87
- .get(this.env?.complianceGet + 'responsibilityCenterTree', {
87
+ .get(this.env?.organizationGet + 'responsibilityCenterTree', {
88
88
  headers,
89
89
  })
90
90
  .pipe(retry(2));
@@ -116,14 +116,70 @@ export class CreateDashboardService {
116
116
  * Fetches the Dashboard details for data population to Edit the dashboard
117
117
  * @param id
118
118
  */
119
+ /** @deprecated Legacy Global-Dashboard edit fetch; custom dashboards use fetchCustomDashboardById + getWidgets. */
119
120
  fetchDashboard(id) {
120
121
  return this.http
121
122
  .get(this.env.dashboard + id + '?mode=edit', this.httpOptions)
122
123
  .pipe(retry(2));
123
124
  }
124
- updateDashboard(id, payload) {
125
+ /**
126
+ * Edit mode only — GET Global-Dashboard/getWidgets?dashboardId={cdid}
127
+ * @param cdid Custom dashboard id (e.g. 438F8KSK22), not numeric record id
128
+ */
129
+ fetchCustomDashboardWidgetDetails(cdid) {
130
+ return this.http
131
+ .get(`${this.env.dashboard}getWidgets?dashboardId=${encodeURIComponent(cdid)}`, this.httpOptions)
132
+ .pipe(map((res) => this.normalizeWidgetDetailsResponse(res)), retry(2));
133
+ }
134
+ normalizeWidgetDetailsResponse(res) {
135
+ const payload = res?.data ?? res;
136
+ const widgetArr = payload?.widgetArr ?? res?.widgetArr;
137
+ const allWidgetsArray = payload?.allWidgetsArray ?? res?.allWidgetsArray ?? widgetArr;
138
+ if (widgetArr || allWidgetsArray) {
139
+ const normalizedWidgetArr = Array.isArray(widgetArr) ? widgetArr : [];
140
+ const normalizedAll = Array.isArray(allWidgetsArray)
141
+ ? allWidgetsArray
142
+ : normalizedWidgetArr;
143
+ return {
144
+ widgetArr: normalizedWidgetArr,
145
+ allWidgetsArray: normalizedAll,
146
+ activeWidgetArr: payload?.activeWidgetArr ??
147
+ res?.activeWidgetArr ??
148
+ normalizedWidgetArr,
149
+ };
150
+ }
151
+ if (Array.isArray(res)) {
152
+ return { widgetArr: res, allWidgetsArray: res, activeWidgetArr: res };
153
+ }
154
+ if (Array.isArray(res?.data)) {
155
+ return {
156
+ widgetArr: res.data,
157
+ allWidgetsArray: res.data,
158
+ activeWidgetArr: res.data,
159
+ };
160
+ }
161
+ const legacyWidgets = res?.widget_details ?? res?.widgets ?? [];
162
+ const legacyAll = res?.all_widgets ?? legacyWidgets;
163
+ return {
164
+ widgetArr: legacyWidgets,
165
+ allWidgetsArray: legacyAll,
166
+ activeWidgetArr: res?.activeWidgetArr ?? legacyWidgets,
167
+ };
168
+ }
169
+ getSailsProgramList() {
170
+ return this.http
171
+ .get(this.env.complianceGet + 'sailsProgramList', this.httpOptions)
172
+ .pipe(retry(2));
173
+ }
174
+ getProgramCategories(programId) {
175
+ return this.http
176
+ .get(`${this.env.complianceGet}sailsProgramCategories&id=${programId}`, this.httpOptions)
177
+ .pipe(retry(2));
178
+ }
179
+ /** Full custom dashboard payload (includes responsibilityCenterId, programId, etc.). */
180
+ fetchCustomDashboardById(id) {
125
181
  return this.http
126
- .put(this.env.dashboard + 'UpdateDashboard/' + id, payload, this.httpOptions)
182
+ .get(`${this.env.dashboard}customDashboard/${id}`, this.httpOptions)
127
183
  .pipe(retry(2));
128
184
  }
129
185
  getUserInformation() {
@@ -146,6 +202,33 @@ export class CreateDashboardService {
146
202
  .post(this.env.dashboard + 'DuplicateDashboard', payload, this.httpOptions)
147
203
  .pipe(retry(2));
148
204
  }
205
+ createDashboard(payload) {
206
+ return this.http.post(this.env.dashboard + 'customDashboard', payload, this.httpOptions);
207
+ }
208
+ updateDashboard(payload, id) {
209
+ return this.http.put(this.env.dashboard + 'customDashboard/' + id, payload, this.httpOptions);
210
+ }
211
+ saveWidgetDetails(payload) {
212
+ return this.http.post(this.env.dashboard + 'createWidgets/creator', payload, this.httpOptions);
213
+ }
214
+ buildPayload(payload) {
215
+ return {
216
+ dashboard: {
217
+ name: payload.dashboard_name,
218
+ description: payload.description[0].content,
219
+ viewer: {
220
+ userId: payload.visible_to_users,
221
+ userGroupId: payload.visible_to_groups,
222
+ },
223
+ responsibilityCenterId: payload.responsibility_center,
224
+ programId: payload.program.all_programs.map((program) => program.id),
225
+ timeframe: {
226
+ from: payload.timeframe.start_date,
227
+ to: payload.timeframe.end_date,
228
+ }
229
+ }
230
+ };
231
+ }
149
232
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateDashboardService, deps: [{ token: i1.HttpClient }, { token: i2.AuthService }, { token: i3.Configurations, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
150
233
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateDashboardService, providedIn: 'root' });
151
234
  }
@@ -157,4 +240,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
157
240
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.Configurations, decorators: [{
158
241
  type: Optional
159
242
  }] }]; } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRhc2hib2FyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JlYXRlLWRhc2hib2FyZC9zcmMvbGliL2NyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyL3NlcnZpY2VzL2NyZWF0ZS1kYXNoYm9hcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFPeEQsTUFBTSxPQUFPLHNCQUFzQjtJQUt2QjtJQUNBO0lBTEgsR0FBRyxDQUFPO0lBRWpCLFdBQVcsQ0FBTTtJQUNqQixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3BCLE1BQXVCO1FBRjNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFHaEMsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDN0I7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDdkIsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUU7YUFDaEQsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxHQUFTO1FBQzVCLE9BQU8s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O1FBQ3RDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQy9ELE1BQU0sU0FBUyxHQUFHLE1BQU0sRUFBRSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsSUFBSSxTQUFTLEtBQUssS0FBSyxFQUFFO1lBQ3ZCLE1BQU0sU0FBUyxHQUFHLE1BQU0sRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEQsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDO1NBQ3RCO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsMkJBQTJCLENBQUMsT0FBWTtRQUN0QyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsSUFBSSxDQUNILElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLG9CQUFvQixFQUN6QyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FDakI7YUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQzt3R0EvTVUsc0JBQXNCOzRHQUF0QixzQkFBc0IsY0FGckIsTUFBTTs7NEZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBUUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEp3dEhlbHBlclNlcnZpY2UgfSBmcm9tICdAYXV0aDAvYW5ndWxhci1qd3QnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb25zJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlRGFzaGJvYXJkU2VydmljZSB7XG4gIHB1YmxpYyBlbnYhOiBhbnk7XG5cbiAgaHR0cE9wdGlvbnM6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG5cbiAgICB0aGlzLmh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgdG9rZW46IHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCksXG4gICAgICB9KSxcbiAgICB9O1xuICB9XG5cbiAgLypcbiAgICogRmV0Y2hlcyB0aGUgT3JnYW5pemF0aW9uIFVzZXJzIExpc3QgYnkgbWFraW5nIGFuIEFQSSBjYWxsXG4gICAqL1xuICBnZXRPcmdhbml6YXRpb25Vc2Vycyh1cmw/OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICtcbiAgICAgICAgICAnb3JnYW5pc2F0aW9uVXNlcnNMaXN0JnBhZ2luYXRpb25UeXBlPXNtYWxsJyArXG4gICAgICAgICAgKHVybC5wID8gJyZwPScgKyB1cmwucCA6ICcnKSArXG4gICAgICAgICAgKHVybC50eXBlID8gJyZ0eXBlPScgKyB1cmwudHlwZSA6ICcnKSArXG4gICAgICAgICAgKHVybC5xID8gJyZxPScgKyB1cmwucSA6ICcnKSxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KSxcbiAgICAgICAgcmV0cnkoMiksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gb2YoZXJyKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgT3JnYW5pemF0aW9uVXNlcnMgZGV0YWlscyBvZiB1c2VycyBMaXN0IHRvIHNldCBwYWdpbmF0aW9uIGRldGFpbHMgaW5jbHVkaW5nIG51bWJlciBvZlxuICAgKiBwYWdlcyBhbmQgcmVjb3JkcyBsaW1pdCBwZXIgcGFnZSxcbiAgICogQHBhcmFtIHVybCAgY29udGFpbnMgaW5mbyBhYm91dCB0eXBlICYgc2VhcmNoIHF1ZXJ5XG4gICAqL1xuICBnZXRPcmdhbml6YXRpb25Vc2Vyc0NvdW50KHVybD86IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoXG4gICAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgK1xuICAgICAgICAgICdvcmdhbmlzYXRpb25Vc2Vyc0NvdW50JnBhZ2luYXRpb25UeXBlPXNtYWxsJyArXG4gICAgICAgICAgKHVybC50eXBlID8gJyZ0eXBlPScgKyB1cmwudHlwZSA6ICcnKSArXG4gICAgICAgICAgKHVybC5xID8gJyZxPScgKyB1cmwucSA6ICcnKSxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gb2YoZXJyKSlcbiAgICAgICk7XG4gIH1cblxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudj8ucmlza0dldCArICdjYXRlZ29yeS9saXN0JywgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhbGwgdXNlcnMgYnkgbWFraW5nIGFuIEFQSSBjYWxsXG4gICAqL1xuICBnZXRBbGxVc2VycygpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICsgJ3NlbGVjdEFsbFVzZXJzJnR5cGU9YWxsJyxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgLyoqXG4gICAqICBGZXRjaGVzIGFsbCBncm91cHMgYnkgbWFraW5nIGFuIEFQSSBjYWxsXG4gICAqICovXG4gIGdldEFsbEdyb3VwcyhwYXJhbXM/OiBIdHRwUGFyYW1zKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICtcbiAgICAgICAgICAnZ3JvdXBzTGlzdCZwZXJtVHlwZT1kYXNoYm9hcmQmbWVtYmVyRXhpc3RzPTEnLFxuICAgICAgICB7IHBhcmFtcywgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyByZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0IGJ5IG1ha2luZyBhbiBBUEkgY2FsbFxuICAgKi9cbiAgZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/LmNvbXBsaWFuY2VHZXQgKyAncmVzcG9uc2liaWxpdHlDZW50ZXJUcmVlJywge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldENvbXBsaWFuY2VDYXRlZ29yaWVzTGlzdCgpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ2NvbXBsaWFuY2VDYXRlZ29yeS9DYXRlZ29yeUxpc3RUcmVlJyxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldENvbXBsaWFuY2VDYXRlZ29yaWVzTGlzdEZyb21HbG9iYWwoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/LmNvbXBsaWFuY2VHZXQgK1xuICAgICAgICAgICdjb21wbGlhbmNlQ2F0ZWdvcnkvQ2F0ZWdvcnlMaXN0VHJlZSZwcm9ncmFtPTEmaXNEYXNoYm9hcmQ9dHJ1ZScsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBzdWJtaXREYXNoYm9hcmQocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh0aGlzLmVudi5kYXNoYm9hcmQgKyAnQ3JlYXRlRGFzaGJvYXJkJywgcGF5bG9hZCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgRGFzaGJvYXJkIGRldGFpbHMgZm9yIGRhdGEgcG9wdWxhdGlvbiB0byBFZGl0IHRoZSBkYXNoYm9hcmRcbiAgICogQHBhcmFtIGlkXG4gICAqL1xuICBmZXRjaERhc2hib2FyZChpZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldCh0aGlzLmVudi5kYXNoYm9hcmQgKyBpZCArICc/bW9kZT1lZGl0JywgdGhpcy5odHRwT3B0aW9ucylcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIHVwZGF0ZURhc2hib2FyZChpZDogYW55LCBwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucHV0KFxuICAgICAgICB0aGlzLmVudi5kYXNoYm9hcmQgKyAnVXBkYXRlRGFzaGJvYXJkLycgKyBpZCxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0VXNlckluZm9ybWF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoXG4gICAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgKyAndXNlcnMmaWQ9JyArIHRoaXM/Ll9JRCgpLFxuICAgICAgICB0aGlzLmh0dHBPcHRpb25zXG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbiAgX0lEKCkge1xuICAgIGNvbnN0IGhlbHBlciA9IG5ldyBKd3RIZWxwZXJTZXJ2aWNlKCk7XG4gICAgY29uc3QgbXlSYXdUb2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW50VXNlcicpIHx8ICd7fSc7XG4gICAgY29uc3QgaXNFeHBpcmVkID0gaGVscGVyPy5pc1Rva2VuRXhwaXJlZChteVJhd1Rva2VuKTtcbiAgICBpZiAoaXNFeHBpcmVkID09PSBmYWxzZSkge1xuICAgICAgY29uc3QgdG9rZW5JbmZvID0gaGVscGVyPy5kZWNvZGVUb2tlbihteVJhd1Rva2VuKTtcbiAgICAgIHJldHVybiB0b2tlbkluZm8uX2lkO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjaGVja0R1cGxpY2F0ZURhc2hib2FyZE5hbWUocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoXG4gICAgICAgIHRoaXMuZW52LmRhc2hib2FyZCArICdEdXBsaWNhdGVEYXNoYm9hcmQnLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgICB0aGlzLmh0dHBPcHRpb25zXG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbn1cbiJdfQ==
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRhc2hib2FyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JlYXRlLWRhc2hib2FyZC9zcmMvbGliL2NyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyL3NlcnZpY2VzL2NyZWF0ZS1kYXNoYm9hcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFPeEQsTUFBTSxPQUFPLHNCQUFzQjtJQUt2QjtJQUNBO0lBTEgsR0FBRyxDQUFPO0lBRWpCLFdBQVcsQ0FBTTtJQUNqQixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3BCLE1BQXVCO1FBRjNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFHaEMsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDN0I7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDdkIsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUU7YUFDaEQsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxHQUFTO1FBQzVCLE9BQU8s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SSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2hHLENBQUM7SUFDQyxZQUFZLENBQUMsT0FBWTtRQUN2QixPQUFPO1lBQ0wsU0FBUyxFQUFFO2dCQUNULElBQUksRUFBRSxPQUFPLENBQUMsY0FBYztnQkFDNUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztnQkFDM0MsTUFBTSxFQUFFO29CQUNOLE1BQU0sRUFBRSxPQUFPLENBQUMsZ0JBQWdCO29CQUNoQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGlCQUFpQjtpQkFDdkM7Z0JBQ0Qsc0JBQXNCLEVBQUUsT0FBTyxDQUFDLHFCQUFxQjtnQkFDckQsU0FBUyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDekUsU0FBUyxFQUFFO29CQUNULElBQUksRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVU7b0JBQ2xDLEVBQUUsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVE7aUJBQy9CO2FBQ0Y7U0FDRixDQUFBO0lBQ0gsQ0FBQzt3R0FyVFUsc0JBQXNCOzRHQUF0QixzQkFBc0IsY0FGckIsTUFBTTs7NEZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBUUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEp3dEhlbHBlclNlcnZpY2UgfSBmcm9tICdAYXV0aDAvYW5ndWxhci1qd3QnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb25zJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlRGFzaGJvYXJkU2VydmljZSB7XG4gIHB1YmxpYyBlbnYhOiBhbnk7XG5cbiAgaHR0cE9wdGlvbnM6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG5cbiAgICB0aGlzLmh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgdG9rZW46IHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCksXG4gICAgICB9KSxcbiAgICB9O1xuICB9XG5cbiAgLypcbiAgICogRmV0Y2hlcyB0aGUgT3JnYW5pemF0aW9uIFVzZXJzIExpc3QgYnkgbWFraW5nIGFuIEFQSSBjYWxsXG4gICAqL1xuICBnZXRPcmdhbml6YXRpb25Vc2Vycyh1cmw/OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICtcbiAgICAgICAgICAnb3JnYW5pc2F0aW9uVXNlcnNMaXN0JnBhZ2luYXRpb25UeXBlPXNtYWxsJyArXG4gICAgICAgICAgKHVybC5wID8gJyZwPScgKyB1cmwucCA6ICcnKSArXG4gICAgICAgICAgKHVybC50eXBlID8gJyZ0eXBlPScgKyB1cmwudHlwZSA6ICcnKSArXG4gICAgICAgICAgKHVybC5xID8gJyZxPScgKyB1cmwucSA6ICcnKSxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KSxcbiAgICAgICAgcmV0cnkoMiksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gb2YoZXJyKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgT3JnYW5pemF0aW9uVXNlcnMgZGV0YWlscyBvZiB1c2VycyBMaXN0IHRvIHNldCBwYWdpbmF0aW9uIGRldGFpbHMgaW5jbHVkaW5nIG51bWJlciBvZlxuICAgKiBwYWdlcyBhbmQgcmVjb3JkcyBsaW1pdCBwZXIgcGFnZSxcbiAgICogQHBhcmFtIHVybCAgY29udGFpbnMgaW5mbyBhYm91dCB0eXBlICYgc2VhcmNoIHF1ZXJ5XG4gICAqL1xuICBnZXRPcmdhbml6YXRpb25Vc2Vyc0NvdW50KHVybD86IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoXG4gICAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgK1xuICAgICAgICAgICdvcmdhbmlzYXRpb25Vc2Vyc0NvdW50JnBhZ2luYXRpb25UeXBlPXNtYWxsJyArXG4gICAgICAgICAgKHVybC50eXBlID8gJyZ0eXBlPScgKyB1cmwudHlwZSA6ICcnKSArXG4gICAgICAgICAgKHVybC5xID8gJyZxPScgKyB1cmwucSA6ICcnKSxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gb2YoZXJyKSlcbiAgICAgICk7XG4gIH1cblxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudj8ucmlza0dldCArICdjYXRlZ29yeS9saXN0JywgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhbGwgdXNlcnMgYnkgbWFraW5nIGFuIEFQSSBjYWxsXG4gICAqL1xuICBnZXRBbGxVc2VycygpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICsgJ3NlbGVjdEFsbFVzZXJzJnR5cGU9YWxsJyxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgLyoqXG4gICAqICBGZXRjaGVzIGFsbCBncm91cHMgYnkgbWFraW5nIGFuIEFQSSBjYWxsXG4gICAqICovXG4gIGdldEFsbEdyb3VwcyhwYXJhbXM/OiBIdHRwUGFyYW1zKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICtcbiAgICAgICAgICAnZ3JvdXBzTGlzdCZwZXJtVHlwZT1kYXNoYm9hcmQmbWVtYmVyRXhpc3RzPTEnLFxuICAgICAgICB7IHBhcmFtcywgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyByZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0IGJ5IG1ha2luZyBhbiBBUEkgY2FsbFxuICAgKi9cbiAgZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArICdyZXNwb25zaWJpbGl0eUNlbnRlclRyZWUnLCB7XG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0Q29tcGxpYW5jZUNhdGVnb3JpZXNMaXN0KCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgKyAnY29tcGxpYW5jZUNhdGVnb3J5L0NhdGVnb3J5TGlzdFRyZWUnLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0Q29tcGxpYW5jZUNhdGVnb3JpZXNMaXN0RnJvbUdsb2JhbCgpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudj8uY29tcGxpYW5jZUdldCArXG4gICAgICAgICAgJ2NvbXBsaWFuY2VDYXRlZ29yeS9DYXRlZ29yeUxpc3RUcmVlJnByb2dyYW09MSZpc0Rhc2hib2FyZD10cnVlJyxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIHN1Ym1pdERhc2hib2FyZChwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHRoaXMuZW52LmRhc2hib2FyZCArICdDcmVhdGVEYXNoYm9hcmQnLCBwYXlsb2FkLCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBEYXNoYm9hcmQgZGV0YWlscyBmb3IgZGF0YSBwb3B1bGF0aW9uIHRvIEVkaXQgdGhlIGRhc2hib2FyZFxuICAgKiBAcGFyYW0gaWRcbiAgICovXG4gIC8qKiBAZGVwcmVjYXRlZCBMZWdhY3kgR2xvYmFsLURhc2hib2FyZCBlZGl0IGZldGNoOyBjdXN0b20gZGFzaGJvYXJkcyB1c2UgZmV0Y2hDdXN0b21EYXNoYm9hcmRCeUlkICsgZ2V0V2lkZ2V0cy4gKi9cbiAgZmV0Y2hEYXNoYm9hcmQoaWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQodGhpcy5lbnYuZGFzaGJvYXJkICsgaWQgKyAnP21vZGU9ZWRpdCcsIHRoaXMuaHR0cE9wdGlvbnMpXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICAvKipcbiAgICogRWRpdCBtb2RlIG9ubHkg4oCUIEdFVCBHbG9iYWwtRGFzaGJvYXJkL2dldFdpZGdldHM/ZGFzaGJvYXJkSWQ9e2NkaWR9XG4gICAqIEBwYXJhbSBjZGlkIEN1c3RvbSBkYXNoYm9hcmQgaWQgKGUuZy4gNDM4RjhLU0syMiksIG5vdCBudW1lcmljIHJlY29yZCBpZFxuICAgKi9cbiAgZmV0Y2hDdXN0b21EYXNoYm9hcmRXaWRnZXREZXRhaWxzKGNkaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoXG4gICAgICAgIGAke3RoaXMuZW52LmRhc2hib2FyZH1nZXRXaWRnZXRzP2Rhc2hib2FyZElkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGNkaWQpfWAsXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnNcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiB0aGlzLm5vcm1hbGl6ZVdpZGdldERldGFpbHNSZXNwb25zZShyZXMpKSxcbiAgICAgICAgcmV0cnkoMilcbiAgICAgICk7XG4gIH1cblxuICBub3JtYWxpemVXaWRnZXREZXRhaWxzUmVzcG9uc2UocmVzOiBhbnkpOiB7XG4gICAgd2lkZ2V0QXJyOiBhbnlbXTtcbiAgICBhbGxXaWRnZXRzQXJyYXk6IGFueVtdO1xuICAgIGFjdGl2ZVdpZGdldEFycjogYW55W107XG4gIH0ge1xuICAgIGNvbnN0IHBheWxvYWQgPSByZXM/LmRhdGEgPz8gcmVzO1xuICAgIGNvbnN0IHdpZGdldEFyciA9IHBheWxvYWQ/LndpZGdldEFyciA/PyByZXM/LndpZGdldEFycjtcbiAgICBjb25zdCBhbGxXaWRnZXRzQXJyYXkgPVxuICAgICAgcGF5bG9hZD8uYWxsV2lkZ2V0c0FycmF5ID8/IHJlcz8uYWxsV2lkZ2V0c0FycmF5ID8/IHdpZGdldEFycjtcbiAgICBpZiAod2lkZ2V0QXJyIHx8IGFsbFdpZGdldHNBcnJheSkge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZFdpZGdldEFyciA9IEFycmF5LmlzQXJyYXkod2lkZ2V0QXJyKSA/IHdpZGdldEFyciA6IFtdO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZEFsbCA9IEFycmF5LmlzQXJyYXkoYWxsV2lkZ2V0c0FycmF5KVxuICAgICAgICA/IGFsbFdpZGdldHNBcnJheVxuICAgICAgICA6IG5vcm1hbGl6ZWRXaWRnZXRBcnI7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWRnZXRBcnI6IG5vcm1hbGl6ZWRXaWRnZXRBcnIsXG4gICAgICAgIGFsbFdpZGdldHNBcnJheTogbm9ybWFsaXplZEFsbCxcbiAgICAgICAgYWN0aXZlV2lkZ2V0QXJyOlxuICAgICAgICAgIHBheWxvYWQ/LmFjdGl2ZVdpZGdldEFyciA/P1xuICAgICAgICAgIHJlcz8uYWN0aXZlV2lkZ2V0QXJyID8/XG4gICAgICAgICAgbm9ybWFsaXplZFdpZGdldEFycixcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcbiAgICAgIHJldHVybiB7IHdpZGdldEFycjogcmVzLCBhbGxXaWRnZXRzQXJyYXk6IHJlcywgYWN0aXZlV2lkZ2V0QXJyOiByZXMgfTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVzPy5kYXRhKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkZ2V0QXJyOiByZXMuZGF0YSxcbiAgICAgICAgYWxsV2lkZ2V0c0FycmF5OiByZXMuZGF0YSxcbiAgICAgICAgYWN0aXZlV2lkZ2V0QXJyOiByZXMuZGF0YSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGxlZ2FjeVdpZGdldHMgPSByZXM/LndpZGdldF9kZXRhaWxzID8/IHJlcz8ud2lkZ2V0cyA/PyBbXTtcbiAgICBjb25zdCBsZWdhY3lBbGwgPSByZXM/LmFsbF93aWRnZXRzID8/IGxlZ2FjeVdpZGdldHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZGdldEFycjogbGVnYWN5V2lkZ2V0cyxcbiAgICAgIGFsbFdpZGdldHNBcnJheTogbGVnYWN5QWxsLFxuICAgICAgYWN0aXZlV2lkZ2V0QXJyOiByZXM/LmFjdGl2ZVdpZGdldEFyciA/PyBsZWdhY3lXaWRnZXRzLFxuICAgIH07XG4gIH1cblxuICBnZXRTYWlsc1Byb2dyYW1MaXN0KCkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQodGhpcy5lbnYuY29tcGxpYW5jZUdldCArICdzYWlsc1Byb2dyYW1MaXN0JywgdGhpcy5odHRwT3B0aW9ucylcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldFByb2dyYW1DYXRlZ29yaWVzKHByb2dyYW1JZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChcbiAgICAgICAgYCR7dGhpcy5lbnYuY29tcGxpYW5jZUdldH1zYWlsc1Byb2dyYW1DYXRlZ29yaWVzJmlkPSR7cHJvZ3JhbUlkfWAsXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnNcbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIC8qKiBGdWxsIGN1c3RvbSBkYXNoYm9hcmQgcGF5bG9hZCAoaW5jbHVkZXMgcmVzcG9uc2liaWxpdHlDZW50ZXJJZCwgcHJvZ3JhbUlkLCBldGMuKS4gKi9cbiAgZmV0Y2hDdXN0b21EYXNoYm9hcmRCeUlkKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KGAke3RoaXMuZW52LmRhc2hib2FyZH1jdXN0b21EYXNoYm9hcmQvJHtpZH1gLCB0aGlzLmh0dHBPcHRpb25zKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cblxuXG4gIGdldFVzZXJJbmZvcm1hdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICsgJ3VzZXJzJmlkPScgKyB0aGlzPy5fSUQoKSxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG4gIF9JRCgpIHtcbiAgICBjb25zdCBoZWxwZXIgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xuICAgIGNvbnN0IG15UmF3VG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY3VycmVudFVzZXInKSB8fCAne30nO1xuICAgIGNvbnN0IGlzRXhwaXJlZCA9IGhlbHBlcj8uaXNUb2tlbkV4cGlyZWQobXlSYXdUb2tlbik7XG4gICAgaWYgKGlzRXhwaXJlZCA9PT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHRva2VuSW5mbyA9IGhlbHBlcj8uZGVjb2RlVG9rZW4obXlSYXdUb2tlbik7XG4gICAgICByZXR1cm4gdG9rZW5JbmZvLl9pZDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY2hlY2tEdXBsaWNhdGVEYXNoYm9hcmROYW1lKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KFxuICAgICAgICB0aGlzLmVudi5kYXNoYm9hcmQgKyAnRHVwbGljYXRlRGFzaGJvYXJkJyxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5jcmVhdGVEYXNoYm9hcmQocGF5bG9hZDogYW55KSB7XG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmVudi5kYXNoYm9hcmQgKyAnY3VzdG9tRGFzaGJvYXJkJywgcGF5bG9hZCwgdGhpcy5odHRwT3B0aW9ucylcbn1cblxudXBkYXRlRGFzaGJvYXJkKHBheWxvYWQ6IGFueSwgaWQ6IGFueSkge1xuICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLmVudi5kYXNoYm9hcmQgKyAnY3VzdG9tRGFzaGJvYXJkLycgKyBpZCwgcGF5bG9hZCwgdGhpcy5odHRwT3B0aW9ucylcbn1cblxuc2F2ZVdpZGdldERldGFpbHMocGF5bG9hZDogYW55KSB7XG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmVudi5kYXNoYm9hcmQgKyAnY3JlYXRlV2lkZ2V0cy9jcmVhdG9yJywgcGF5bG9hZCwgdGhpcy5odHRwT3B0aW9ucylcbn1cbiAgYnVpbGRQYXlsb2FkKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICBkYXNoYm9hcmQ6IHtcbiAgICAgICAgbmFtZTogcGF5bG9hZC5kYXNoYm9hcmRfbmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHBheWxvYWQuZGVzY3JpcHRpb25bMF0uY29udGVudCxcbiAgICAgICAgdmlld2VyOiB7XG4gICAgICAgICAgdXNlcklkOiBwYXlsb2FkLnZpc2libGVfdG9fdXNlcnMsXG4gICAgICAgICAgdXNlckdyb3VwSWQ6IHBheWxvYWQudmlzaWJsZV90b19ncm91cHMsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVySWQ6IHBheWxvYWQucmVzcG9uc2liaWxpdHlfY2VudGVyLFxuICAgICAgICBwcm9ncmFtSWQ6IHBheWxvYWQucHJvZ3JhbS5hbGxfcHJvZ3JhbXMubWFwKChwcm9ncmFtOiBhbnkpID0+IHByb2dyYW0uaWQpLFxuICAgICAgICB0aW1lZnJhbWU6IHtcbiAgICAgICAgICBmcm9tOiBwYXlsb2FkLnRpbWVmcmFtZS5zdGFydF9kYXRlLFxuICAgICAgICAgIHRvOiBwYXlsb2FkLnRpbWVmcmFtZS5lbmRfZGF0ZSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19