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.
- package/esm2022/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.mjs +79 -290
- package/esm2022/lib/create-dashboard-container/configure-widgets/configure-widgets/widget.interface.mjs +1 -1
- package/esm2022/lib/create-dashboard-container/constants/assets.constant.mjs +1 -1
- package/esm2022/lib/create-dashboard-container/create-dashboard.component.mjs +826 -404
- package/esm2022/lib/create-dashboard-container/create-dashboard.module.mjs +7 -3
- package/esm2022/lib/create-dashboard-container/pipes/search-program.pipe.mjs +37 -0
- package/esm2022/lib/create-dashboard-container/program-list/constant.mjs +31 -0
- package/esm2022/lib/create-dashboard-container/program-list/information-block/information-block.component.mjs +13 -0
- package/esm2022/lib/create-dashboard-container/program-list/interfaces/list-item.interface.mjs +2 -0
- package/esm2022/lib/create-dashboard-container/program-list/list-container/list-container.component.mjs +50 -0
- package/esm2022/lib/create-dashboard-container/program-list/pipes/check-selected-items.pipes.mjs +23 -0
- package/esm2022/lib/create-dashboard-container/program-list/program-list/program-list.component.mjs +294 -0
- package/esm2022/lib/create-dashboard-container/program-list/program-list.module.mjs +60 -0
- package/esm2022/lib/create-dashboard-container/program-list/services/list-utils.service.mjs +27 -0
- package/esm2022/lib/create-dashboard-container/program-list/services/program-list-api.service.mjs +35 -0
- package/esm2022/lib/create-dashboard-container/services/configure-widgets.service.mjs +80 -72
- package/esm2022/lib/create-dashboard-container/services/create-dashboard.service.mjs +87 -4
- package/esm2022/lib/create-dashboard-container/utils/dashboard-edit.utils.mjs +181 -0
- package/esm2022/lib/ui-kit/dialog/dialog.component.mjs +8 -11
- package/esm2022/lib/ui-kit/loaders/loaders.module.mjs +24 -0
- package/esm2022/lib/ui-kit/loaders/table-loader/table-loader.component.mjs +18 -0
- package/fesm2022/vc-create-dashboard.mjs +3555 -2515
- package/fesm2022/vc-create-dashboard.mjs.map +1 -1
- package/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.d.ts +6 -16
- package/lib/create-dashboard-container/configure-widgets/configure-widgets/widget.interface.d.ts +1 -1
- package/lib/create-dashboard-container/create-dashboard.component.d.ts +62 -23
- package/lib/create-dashboard-container/create-dashboard.module.d.ts +2 -1
- package/lib/create-dashboard-container/pipes/search-program.pipe.d.ts +7 -0
- package/lib/create-dashboard-container/program-list/constant.d.ts +24 -0
- package/lib/create-dashboard-container/program-list/information-block/information-block.component.d.ts +6 -0
- package/lib/create-dashboard-container/program-list/interfaces/list-item.interface.d.ts +5 -0
- package/lib/create-dashboard-container/program-list/list-container/list-container.component.d.ts +9 -0
- package/lib/create-dashboard-container/program-list/pipes/check-selected-items.pipes.d.ts +7 -0
- package/lib/create-dashboard-container/program-list/program-list/program-list.component.d.ts +119 -0
- package/lib/create-dashboard-container/program-list/program-list.module.d.ts +17 -0
- package/lib/create-dashboard-container/program-list/services/list-utils.service.d.ts +7 -0
- package/lib/create-dashboard-container/program-list/services/program-list-api.service.d.ts +14 -0
- package/lib/create-dashboard-container/services/configure-widgets.service.d.ts +1 -16
- package/lib/create-dashboard-container/services/create-dashboard.service.d.ts +38 -1
- package/lib/create-dashboard-container/utils/dashboard-edit.utils.d.ts +16 -0
- package/lib/ui-kit/loaders/loaders.module.d.ts +8 -0
- package/lib/ui-kit/loaders/table-loader/table-loader.component.d.ts +9 -0
- package/package.json +1 -1
- package/esm2022/lib/create-dashboard-container/services/urlConfig.service.mjs +0 -29
- 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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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.
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLXdpZGdldHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyZWF0ZS1kYXNoYm9hcmQvc3JjL2xpYi9jcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lci9zZXJ2aWNlcy9jb25maWd1cmUtd2lkZ2V0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFFTCxXQUFXLEdBRVosTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQW1CLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7QUFLdEQsTUFBTSxPQUFPLHVCQUF1QjtJQUl4QjtJQUNBO0lBSkgsR0FBRyxDQUFPO0lBRWpCLFlBQ1UsSUFBZ0IsRUFDaEIsV0FBd0IsRUFDcEIsTUFBdUI7UUFGM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUdoQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxxQkFBcUIsR0FBRztRQUN0QjtZQUNFLEtBQUssRUFBRSxVQUFVO1lBQ2pCLEVBQUUsRUFBRSxlQUFlO1lBQ25CLFdBQVcsRUFDVCwrREFBK0Q7WUFDakUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxjQUFjO1lBQ2xDLEtBQUssRUFBRSxDQUFDO1NBQ1Q7UUFDRDtZQUNFLEtBQUssRUFBRSx5QkFBeUI7WUFDaEMsRUFBRSxFQUFFLDBCQUEwQjtZQUM5QixXQUFXLEVBQ1QsaUVBQWlFO1lBQ25FLFdBQVcsRUFBRSxNQUFNLENBQUMsNEJBQTRCO1lBQ2hELEtBQUssRUFBRSxDQUFD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RSxPQUFPLE1BQU0sQ0FBQztTQUNmO0lBQ0gsQ0FBQzt3R0FsT1UsdUJBQXVCOzRHQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBT0ksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB3aWRnZXREYXRhTW9kZWwgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3dpZGdldC1kYXRhLW1vZGVsJztcbmltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBIZWFkZXJzLFxuICBKc29ucENsaWVudEJhY2tlbmQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbnMnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb25maWd1cmVXaWRnZXRzU2VydmljZSB7XG4gIHB1YmxpYyBlbnYhOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG4gIH1cblxuICBjb21wbGlhbmNlV2lkZ2V0c0RhdGEgPSBbXG4gICAge1xuICAgICAgdGl0bGU6ICdPdmVydmlldycsXG4gICAgICBpZDogJ292ZXJ2aWV3X2ZsYWcnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdEaXNwbGF5cyBhbGwgcmVzcG9uc2liaWxpdGllcyB0aGF0IGhhdmUgYmVlbiBhc3NpZ25lZCB0byB5b3UuJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMub3ZlcnZpZXdXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmVzcG9uc2liaWxpdHkgQ2FsZW5kYXInLFxuICAgICAgaWQ6ICdjb21wbGlhbmNlX2NhbGVuZGFyX2ZsYWcnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdEaXNwbGF5cyBhbGwgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBkdWUgb24gYSBwYXJ0aWN1bGFyIGRheS4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yZXNwb25zaWJpbGl0eUNhbGVuZGVyV2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlciBPdmVydmlldycsXG4gICAgICBpZDogJ3Jlc3BvbnNpYmlsaXR5X2NlbnRlcl9vdmVydmlld19mbGFnJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGlzcGxheXMgYWxsIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8geW91LicsXG4gICAgICB3aWRnZXRJbWFnZTogQVNTRVRTLm92ZXJ2aWV3V2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ015IFJlc3BvbnNpYmlsaXRpZXMnLFxuICAgICAgaWQ6ICdteV9yZXNwb25zaWJpbGl0aWVzJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGlzcGxheXMgYWxsIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8geW91LicsXG4gICAgICB3aWRnZXRJbWFnZTogQVNTRVRTLm15UmVzcG9uc2liaWxpdGllc1dpZGdldCxcbiAgICAgIHRhYk9wdGlvbjogdHJ1ZSxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdLZXkgUmVzcG9uc2liaWxpdGllcycsXG4gICAgICBpZDogJ2tleV9yZXNwb25zaWJpbGl0aWVzJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGlzcGxheXMgYWxsIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgZHVlIG9uIGEgcGFydGljdWxhciBkYXkuJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMua2V5UmVzcG9uc2liaWxpdGllc1dpZGdldCxcbiAgICAgIHRhYk9wdGlvbjogdHJ1ZSxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdUcmVuZCBBbmFseXNpcycsXG4gICAgICBpZDogJ3RyZW5kX2FuYWx5c2lzX2ZsYWcnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdEaXNwbGF5cyBhbGwgcmVzcG9uc2liaWxpdGllcyB0aGF0IGhhdmUgYmVlbiBhc3NpZ25lZCB0byB5b3UuJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMudHJlbmRBbmFseXNpc1dpZGdldCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdXb3Jrcm9vbSBVcGRhdGVzJyxcbiAgICAgIGlkOiAnd29ya3Jvb21fYWxlcnRfZmxhZycsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0Rpc3BsYXlzIGFsbCByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHlvdS4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy53b3Jrcm9vbVVwZGF0ZXNXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmVjZW50IEFjdGl2aXRpZXMnLFxuICAgICAgaWQ6ICdyZWNlbnRfYWN0aXZpdHlfZmxhZycsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0Rpc3BsYXlzIGFsbCByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHlvdS4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yZWNlbnRBY3Rpdml0aWVzV2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0V4Y2VwdGlvbiBTdW1tYXJ5JyxcbiAgICAgIGlkOiAnZXhjZXB0aW9uX3N1bW1hcnlfZmxhZycsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0Rpc3BsYXlzIGFsbCByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHlvdS4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5leGNlcHRpb25TdW1tYXJ5V2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgXTtcblxuICByaXNrV2lkZ2V0c0RhdGEgPSBbXG4gICAge1xuICAgICAgdGl0bGU6ICdSaXNrIE92ZXJ2aWV3JyxcbiAgICAgIGlkOiAncmlza19vdmVydmlldycsXG4gICAgICBkZXNjcmlwdGlvbjogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIC8vIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmlzay1vdmVydmlldy5wbmcnLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yaXNrT3ZlcnZpZXdXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmlzayBBcHBldGl0ZSAmIFRvbGVyYW5jZScsXG4gICAgICBpZDogJ3Jpc2tfYXBwZXRpdGVfdG9sZXJhbmNlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnZGVzY3JpcHRpb24nLFxuICAgICAgLy8gd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9hcHBldGl0ZS10b2xlcmFuY2UucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuYXBwZXRpdGVUb2xlcmFuY2VXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmlzayBSYXRpbmdzJyxcbiAgICAgIGlkOiAncmlza19yYXRpbmdzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24uJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuYXBwZXRpdGVfdG9sZXJhbmNlLFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ1Jpc2tzIFdpdGhvdXQgQ29udHJvbHMnLFxuICAgICAgaWQ6ICdyaXNrc193aXRob3V0X2NvbnRyb2xzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5hcHBldGl0ZV90b2xlcmFuY2UsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmlza3MgRXhjZWVkaW5nIFJpc2sgVG9sZXJhbmNlJyxcbiAgICAgIGlkOiAnZXhjZWVkc19yaXNrX3RvbGVyYW5jZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuYXBwZXRpdGVfdG9sZXJhbmNlLFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0luaGVyZW50IFJpc2sgUmF0aW5nIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgJyxcbiAgICAgIGlkOiAnaW5oZXJlbnRfcmlza19yYXRpbmdfYnlfcmVzcG9uc2liaWxpdHlfY2VudGVycycsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uLicsXG4gICAgICAvLyB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2luaGVyZW50LVJDLnBuZycsXG4gICAgICB3aWRnZXRJbWFnZTogQVNTRVRTLmluaGVyZW50UkNXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmVzaWR1YWwgUmlzayBSYXRpbmcgYnkgUmVzcG9uc2liaWxpdHkgQ2VudGVycyAnLFxuICAgICAgaWQ6ICdyZXNpZHVhbF9yaXNrX3JhdGluZ19ieV9yZXNwb25zaWJpbGl0eV9jZW50ZXJzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24uJyxcbiAgICAgIC8vIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmVzaWR1YWwtUkMucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMucmVzaWR1YWxSQ1dpZGdldCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdSaXNrIENhdGVnb3J5IE92ZXJ2aWV3JyxcbiAgICAgIGlkOiAncmlza19jYXRlZ29yeV9vdmVydmlldycsXG4gICAgICBkZXNjcmlwdGlvbjogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIC8vIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmlzay1jYXRlZ29yeS1vdmVydmlldy5wbmcnLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yaXNrQ2F0ZWdvcnlPdmVydmlld1dpZGdldCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdSaXNrIEhlYXRtYXAnLFxuICAgICAgaWQ6ICdyaXNrX2hlYXRtYXAnLFxuICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbi4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yaXNrSGVhdG1hcFdpZGdldCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdJbmhlcmVudCBSaXNrIFJhdGluZyBieSBDYXRlZ29yaWVzJyxcbiAgICAgIGlkOiAnaW5oZXJlbnRfcmlza19yYXRpbmdfYnlfY2F0ZWdvcmllcycsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uLicsXG4gICAgICAvLyB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2luaGVyZW50LWNhdGVnb3JpZXMucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuaW5oZXJlbnRDYXRlZ29yaWVzV2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmVzaWR1YWwgUmlzayBSYXRpbmcgYnkgQ2F0ZWdvcmllcycsXG4gICAgICBpZDogJ3Jlc2lkdWFsX3Jpc2tfcmF0aW5nX2J5X2NhdGVnb3JpZXMnLFxuICAgICAgZGVzY3JpcHRpb246ICdkZXNjcmlwdGlvbicsXG4gICAgICAvLyB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jlc2lkdWFsLWNhdGVnb3JpZXMucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMucmVzaWR1YWxDYXRlZ29yaWVzV2lkZ2V0LFxuICAgICAgdmFsdWU6IDAsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0luaGVyZW50IFJpc2sgUmF0aW5nIFRyZW5kIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMnLFxuICAgICAgaWQ6ICdpbmhlcmVudF9yaXNrX3JhdGluZ190cmVuZF9ieV9yZXNwb25zaWJpbGl0eV9jZW50ZXJzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24uJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMuaW5oZXJlbnRfdHJlbmQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnUmVzaWR1YWwgUmlzayBSYXRpbmcgVHJlbmQgYnkgUmVzcG9uc2liaWxpdHkgQ2VudGVycycsXG4gICAgICBpZDogJ3Jlc2lkdWFsX3Jpc2tfcmF0aW5nX3RyZW5kX2J5X3Jlc3BvbnNpYmlsaXR5X2NlbnRlcnMnLFxuICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbi4nLFxuICAgICAgd2lkZ2V0SW1hZ2U6IEFTU0VUUy5yZXNpZHVhbF90cmVuZCxcbiAgICAgIHZhbHVlOiAwLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdSaXNrIFJhdGluZyBUcmVuZCBieSBDYXRlZ29yaWVzJyxcbiAgICAgIGlkOiAncmlza19yYXRpbmdfdHJlbmRfYnlfY2F0ZWdvcmllcycsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uLicsXG4gICAgICB3aWRnZXRJbWFnZTogQVNTRVRTLnJpc2tfdHJlbmQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnVG9wIDUgUmlzayBSYXRpbmdzJyxcbiAgICAgIGlkOiAndG9wXzVfcmVzaWR1YWxfcmlza19yYXRpbmdzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24uJyxcbiAgICAgIC8vIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvNS1yaXNrLXJhdGluZ3MucG5nJyxcbiAgICAgIHdpZGdldEltYWdlOiBBU1NFVFMudGVuUmlza1JhdGluZ3NXaWRnZXQsXG4gICAgICB2YWx1ZTogMCxcbiAgICB9LFxuICBdO1xuICBhdWRpdFdpZGdldHNEYXRhID0gW107XG4gIHBvbGljeVdpZGdldHNEYXRhID0gW107XG5cbiAgLy8gRm9yIGRhc2hib2FyZCB2aWV3XG4gIGRhc2hCb2FyZFdpZGdldFVwZGF0ZSh3aWRHZXRKc29uOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wdXQodGhpcy5lbnYuT3JnYW5pemF0aW9uUHV0ICsgJ2Rhc2hib2FyZFdpZGdldHMnLCB3aWRHZXRKc29uKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgbW9kdWxlVHlwZShpZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5jb21wbGlhbmNlV2lkZ2V0c0RhdGEpLmluY2x1ZGVzKGlkZW50aWZpZXIpKSB7XG4gICAgICByZXR1cm4gJ0NPTVBMSUFOQ0UnO1xuICAgIH0gZWxzZSBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5yaXNrV2lkZ2V0c0RhdGEpLmluY2x1ZGVzKGlkZW50aWZpZXIpKSB7XG4gICAgICByZXR1cm4gJ1JJU0snO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
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?.
|
|
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
|
-
|
|
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
|
-
.
|
|
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
|