vcomply-workflow-engine 3.2.2 → 3.2.3
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/esm2020/lib/more-option/more-option.component.mjs +10 -11
- package/esm2020/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +78 -6
- package/esm2020/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.mjs +1 -1
- package/esm2020/lib/workflow/shared/components/attributes/attributes.component.mjs +1 -1
- package/esm2020/lib/workflow/shared/components/edit-mode/edit-mode.component.mjs +32 -10
- package/esm2020/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.mjs +18 -3
- package/esm2020/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.mjs +62 -60
- package/esm2020/lib/workflow/shared/components/grc-risk-listing/grc-risk-listing.component.mjs +191 -0
- package/esm2020/lib/workflow/shared/components/grc-sub-category-listing/grc-sub-category-listing.component.mjs +77 -11
- package/esm2020/lib/workflow/shared/components/list-popup/list-popup.component.mjs +24 -2
- package/esm2020/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +393 -0
- package/esm2020/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.mjs +5 -5
- package/esm2020/lib/workflow/shared/constants/field-text.constant.mjs +3 -1
- package/esm2020/lib/workflow/shared/constants/link-responsibility.constant.mjs +19 -0
- package/esm2020/lib/workflow/shared/interfaces/add-grc.mjs +1 -1
- package/esm2020/lib/workflow/shared/services/grc.service.mjs +83 -1
- package/esm2020/lib/workflow-engine.module.mjs +2 -5
- package/esm2020/lib/workflow-grc/workflow-grc.component.mjs +2 -2
- package/esm2020/lib/workflow-policy/workflow-policy.component.mjs +2 -2
- package/fesm2015/vcomply-workflow-engine.mjs +910 -57
- package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
- package/fesm2020/vcomply-workflow-engine.mjs +894 -55
- package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +8 -1
- package/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.d.ts +2 -0
- package/lib/workflow/shared/components/edit-mode/edit-mode.component.d.ts +2 -1
- package/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.d.ts +5 -1
- package/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.d.ts +11 -9
- package/lib/workflow/shared/components/grc-risk-listing/grc-risk-listing.component.d.ts +35 -0
- package/lib/workflow/shared/components/grc-sub-category-listing/grc-sub-category-listing.component.d.ts +17 -2
- package/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.d.ts +76 -0
- package/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.d.ts +2 -2
- package/lib/workflow/shared/constants/field-text.constant.d.ts +2 -0
- package/lib/workflow/shared/constants/link-responsibility.constant.d.ts +7 -0
- package/lib/workflow/shared/interfaces/add-grc.d.ts +3 -1
- package/lib/workflow/shared/services/grc.service.d.ts +10 -0
- package/lib/workflow-engine.module.d.ts +32 -33
- package/package.json +1 -1
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, ViewChild, } from '@angular/core';
|
|
3
|
+
import { FloatingBarModule } from '../../../../sharedComponents/floating-bar/floating-bar.module';
|
|
4
|
+
import { FormgroupModule } from '../../../../ui-kit/formgroup/formgroup.module';
|
|
5
|
+
import { PaginationModule } from '../../../../ui-kit/pagination/pagination.module';
|
|
6
|
+
import { PopoverModule } from '../../../../ui-kit/popover/popover.module';
|
|
7
|
+
import { TooltipModule } from '../../../../ui-kit/tooltip/tooltip.module';
|
|
8
|
+
import { TableCardComponent } from '../table-card/table-card.component';
|
|
9
|
+
import { GrcCategoryListingComponent } from '../grc-category-listing/grc-category-listing.component';
|
|
10
|
+
import { GrcResponsibilityListingComponent } from '../grc-responsibility-listing/grc-responsibility-listing.component';
|
|
11
|
+
import { NoDataModule } from '../../../../ui-kit/no-data/no-data.module';
|
|
12
|
+
import { ListLoaderModule } from '../../../../sharedComponents/list-loader/list-loader.module';
|
|
13
|
+
import { GrcSubCategoryListingComponent } from '../grc-sub-category-listing/grc-sub-category-listing.component';
|
|
14
|
+
import { RESPONSIBILITY_TABLE_CARD } from '../../constants/link-responsibility.constant';
|
|
15
|
+
import { TableCardLoaderComponent } from '../../../../sharedComponents/table-card-loader/table-card-loader.component';
|
|
16
|
+
import { HttpParams } from '@angular/common/http';
|
|
17
|
+
import { LINKS } from '../../constants/cdn-link.constant';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "../../services/grc.service";
|
|
20
|
+
import * as i2 from "@angular/common";
|
|
21
|
+
import * as i3 from "../../../../sharedComponents/floating-bar/floating-bar.component";
|
|
22
|
+
import * as i4 from "../../../../sharedComponents/list-loader/list-loader.component";
|
|
23
|
+
import * as i5 from "../../../../ui-kit/no-data/no-data.component";
|
|
24
|
+
export class ProgramResponsibilityListingComponent {
|
|
25
|
+
constructor(grcService) {
|
|
26
|
+
this.grcService = grcService;
|
|
27
|
+
this.programTypes = RESPONSIBILITY_TABLE_CARD;
|
|
28
|
+
this.CDN_LINK = LINKS;
|
|
29
|
+
this.selectedTab = 1;
|
|
30
|
+
this.animation = false;
|
|
31
|
+
this.programLoader = false;
|
|
32
|
+
this.programCountLoader = false;
|
|
33
|
+
this.responsibilityLoader = false;
|
|
34
|
+
this.categoryLoader = false;
|
|
35
|
+
this.selectedProgramAndResp = [];
|
|
36
|
+
this.preSelectedProgramAndResp = [];
|
|
37
|
+
this.searchString = '';
|
|
38
|
+
this.programCurrentPage = 1;
|
|
39
|
+
this.categoryCurrentPage = 1;
|
|
40
|
+
this.responsibilityCurrentPage = 1;
|
|
41
|
+
this.responsibilityData = {
|
|
42
|
+
data: [],
|
|
43
|
+
};
|
|
44
|
+
this.selectedProgramIds = [];
|
|
45
|
+
this.selectedCategoryIds = [];
|
|
46
|
+
this.selectedResponsibilities = [];
|
|
47
|
+
this.closeList = new EventEmitter();
|
|
48
|
+
this.currentBusinessCycle = this.grcService?.getBusinessCycle();
|
|
49
|
+
}
|
|
50
|
+
set getSelectedProgramAndResp(data) {
|
|
51
|
+
this.selectedProgramAndResp = data || [];
|
|
52
|
+
this.preSelectedProgramAndResp = JSON.parse(JSON.stringify(data));
|
|
53
|
+
this.getSelectedProgramIds(this.selectedProgramAndResp);
|
|
54
|
+
this.getAllSelectedResponsibilities(this.selectedProgramAndResp);
|
|
55
|
+
}
|
|
56
|
+
ngOnInit() {
|
|
57
|
+
this.animation = true;
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
this.animation = false;
|
|
60
|
+
}, 300);
|
|
61
|
+
this.getProgramsList();
|
|
62
|
+
this.getProgramsCount();
|
|
63
|
+
}
|
|
64
|
+
close() {
|
|
65
|
+
this.closeList.emit(this.preSelectedProgramAndResp);
|
|
66
|
+
}
|
|
67
|
+
save() {
|
|
68
|
+
this.closeList.emit(this.selectedProgramAndResp);
|
|
69
|
+
}
|
|
70
|
+
getProgramsList(event) {
|
|
71
|
+
if (this.programCall) {
|
|
72
|
+
this.programCall.unsubscribe();
|
|
73
|
+
}
|
|
74
|
+
this.programLoader = true;
|
|
75
|
+
const request = {
|
|
76
|
+
headers: {
|
|
77
|
+
type: '',
|
|
78
|
+
paginationType: 'small',
|
|
79
|
+
a: '',
|
|
80
|
+
searchText: this.searchString,
|
|
81
|
+
filterData: {
|
|
82
|
+
appList: [],
|
|
83
|
+
riskIds: [],
|
|
84
|
+
reviewerId: [],
|
|
85
|
+
responsibilityCenter: [],
|
|
86
|
+
entrustedBy: [],
|
|
87
|
+
entrustedTo: [],
|
|
88
|
+
responsibilityCategory: [],
|
|
89
|
+
},
|
|
90
|
+
pageNo: this.programCurrentPage || 1,
|
|
91
|
+
sortObj: { sortBy: '', type: -1 },
|
|
92
|
+
pageName: 'category',
|
|
93
|
+
typeArr: [this.selectedTab],
|
|
94
|
+
start_date: this.currentBusinessCycle?.start_date,
|
|
95
|
+
end_date: this.currentBusinessCycle?.end_date,
|
|
96
|
+
selected_cycle_arr: this.currentBusinessCycle?.selected_cycle_arr,
|
|
97
|
+
selected_cycle: this.currentBusinessCycle?.selected_cycle,
|
|
98
|
+
time_filter_type: '',
|
|
99
|
+
state: [2, 3],
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
this.programCall = this.grcService.getProgramsList(request).subscribe({
|
|
103
|
+
next: (res) => {
|
|
104
|
+
this.programLoader = false;
|
|
105
|
+
// this.programData.data = res.data ?? [];
|
|
106
|
+
this.programData = { ...res };
|
|
107
|
+
this.onSelectedProgramChange();
|
|
108
|
+
this.getCategoryByProgramId(res?.data[0]);
|
|
109
|
+
},
|
|
110
|
+
error: (err) => {
|
|
111
|
+
this.programLoader = false;
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
onProgramPageChange(event) {
|
|
116
|
+
this.programCurrentPage = event?.pageNo || 1;
|
|
117
|
+
this.getProgramsList();
|
|
118
|
+
}
|
|
119
|
+
onSubCategoryPageChange(event) {
|
|
120
|
+
this.categoryCurrentPage = event?.pageNo || 1;
|
|
121
|
+
this.getCategoryByProgramId(this.selectedProgram);
|
|
122
|
+
}
|
|
123
|
+
deleteEvent(event) {
|
|
124
|
+
this.responsibilityListingComponent.deleteSelectedResponsibility(event);
|
|
125
|
+
}
|
|
126
|
+
setSelectedTab(event) {
|
|
127
|
+
this.programCurrentPage = 1;
|
|
128
|
+
this.selectedTab = event?.type;
|
|
129
|
+
this.getProgramsList();
|
|
130
|
+
}
|
|
131
|
+
handleSearch(event) {
|
|
132
|
+
if (this.searchString != event) {
|
|
133
|
+
this.programCurrentPage = 1;
|
|
134
|
+
this.searchString = event;
|
|
135
|
+
this.onSelectedProgramChange();
|
|
136
|
+
this.getProgramsList();
|
|
137
|
+
this.getProgramsCount();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
getProgramsCount(paramsObject) {
|
|
141
|
+
this.programCountLoader = true;
|
|
142
|
+
const request = {
|
|
143
|
+
headers: {
|
|
144
|
+
type: '',
|
|
145
|
+
paginationType: 'small',
|
|
146
|
+
a: '',
|
|
147
|
+
searchText: this.searchString,
|
|
148
|
+
filterData: {
|
|
149
|
+
appList: [],
|
|
150
|
+
riskIds: [],
|
|
151
|
+
reviewerId: [],
|
|
152
|
+
responsibilityCenter: [],
|
|
153
|
+
entrustedBy: [],
|
|
154
|
+
entrustedTo: [],
|
|
155
|
+
responsibilityCategory: [],
|
|
156
|
+
},
|
|
157
|
+
pageNo: 1,
|
|
158
|
+
sortObj: { sortBy: '', type: '' },
|
|
159
|
+
pageName: 'category',
|
|
160
|
+
typeArr: [1, 2, 3, 0],
|
|
161
|
+
start_date: this.currentBusinessCycle?.start_date,
|
|
162
|
+
end_date: this.currentBusinessCycle?.end_date,
|
|
163
|
+
selected_cycle_arr: this.currentBusinessCycle?.selected_cycle_arr,
|
|
164
|
+
selected_cycle: this.currentBusinessCycle?.selected_cycle,
|
|
165
|
+
time_filter_type: '',
|
|
166
|
+
state: [2, 3],
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
this.grcService.getProgramsListCount(request).subscribe({
|
|
170
|
+
next: (res) => {
|
|
171
|
+
this.programCountLoader = false;
|
|
172
|
+
this.programTypes[0].count =
|
|
173
|
+
res?.regulationCount?.active + res?.regulationCount?.completed;
|
|
174
|
+
this.programTypes[1].count =
|
|
175
|
+
res?.standardCount?.active + res?.standardCount?.completed;
|
|
176
|
+
this.programTypes[2].count =
|
|
177
|
+
res?.internalCount?.active + res?.internalCount?.completed;
|
|
178
|
+
this.programTypes[3].count =
|
|
179
|
+
res?.otherCount?.active + res?.otherCount?.completed;
|
|
180
|
+
// }
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
getCategoryByProgramId(program) {
|
|
185
|
+
if (this.categoryCall) {
|
|
186
|
+
this.categoryCall.unsubscribe();
|
|
187
|
+
}
|
|
188
|
+
this.selectedProgram = program;
|
|
189
|
+
this.categoryLoader = true;
|
|
190
|
+
// this.resetControlVariable();
|
|
191
|
+
const headers = {
|
|
192
|
+
id: program?._id,
|
|
193
|
+
scopeType: 'risk',
|
|
194
|
+
paginationType: 'small',
|
|
195
|
+
searchText: this.searchString,
|
|
196
|
+
filterData: {
|
|
197
|
+
appList: [],
|
|
198
|
+
riskIds: [],
|
|
199
|
+
reviewerId: [],
|
|
200
|
+
responsibilityCenter: [],
|
|
201
|
+
entrustedBy: [],
|
|
202
|
+
entrustedTo: [],
|
|
203
|
+
responsibilityCategory: [],
|
|
204
|
+
},
|
|
205
|
+
page: this.categoryCurrentPage || 1,
|
|
206
|
+
// sortingCount: this.categorySortValue,
|
|
207
|
+
name: 'name',
|
|
208
|
+
businessCycle: {
|
|
209
|
+
start_date: this.currentBusinessCycle?.start_date,
|
|
210
|
+
end_date: this.currentBusinessCycle?.end_date,
|
|
211
|
+
selected_cycle_arr: this.currentBusinessCycle?.selected_cycle_arr,
|
|
212
|
+
selected_cycle: this.currentBusinessCycle?.selected_cycle,
|
|
213
|
+
time_filter_type: '',
|
|
214
|
+
// "scopeType": 'risk',
|
|
215
|
+
type: 'risk',
|
|
216
|
+
filterData: {
|
|
217
|
+
appList: [],
|
|
218
|
+
riskIds: [],
|
|
219
|
+
reviewerId: [],
|
|
220
|
+
responsibilityCenter: [],
|
|
221
|
+
entrustedBy: [],
|
|
222
|
+
entrustedTo: [],
|
|
223
|
+
responsibilityCategory: [],
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
this.categoryCall = this.grcService.getSubCategoryList(headers).subscribe({
|
|
228
|
+
next: (res) => {
|
|
229
|
+
this.categoryLoader = false;
|
|
230
|
+
this.categoryData = { ...res };
|
|
231
|
+
this.selectedCategory = res?.data[0];
|
|
232
|
+
this.responsibilityCurrentPage = 1;
|
|
233
|
+
this.getResponsibilitiesList();
|
|
234
|
+
},
|
|
235
|
+
error: (err) => {
|
|
236
|
+
console.error(err);
|
|
237
|
+
this.categoryLoader = false;
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
activeSelectedProgram(event) {
|
|
242
|
+
this.selectedProgram = event?.category;
|
|
243
|
+
this.onSelectedProgramChange();
|
|
244
|
+
this.getCategoryByProgramId(this.selectedProgram);
|
|
245
|
+
// this.getSelectedCategoryIds(this.selectedProgramAndResp);
|
|
246
|
+
}
|
|
247
|
+
activeSelectedSubCategory(event) {
|
|
248
|
+
this.selectedCategory = event?.category;
|
|
249
|
+
this.getResponsibilitiesList();
|
|
250
|
+
}
|
|
251
|
+
getResponsibilitiesList(event) {
|
|
252
|
+
if (this.responsibilityCall) {
|
|
253
|
+
this.responsibilityCall.unsubscribe();
|
|
254
|
+
}
|
|
255
|
+
// this.respCount = event.sortValue;
|
|
256
|
+
this.responsibilityLoader = true;
|
|
257
|
+
let params = new HttpParams();
|
|
258
|
+
params = params.append('isBusinessCycle', 'true');
|
|
259
|
+
params = params.append('parentId', this.selectedProgram?.category_id);
|
|
260
|
+
params = params.append('catId', this.selectedCategory?.category_id);
|
|
261
|
+
params = params.append('pageNo', this.responsibilityCurrentPage ?? 1);
|
|
262
|
+
// if ([1, -1].includes(this.controlSortValue)) {
|
|
263
|
+
// params = params.append('sortValue', this.controlSortValue);
|
|
264
|
+
// params = params.append('sortBy', 'Data.ReportName');
|
|
265
|
+
// }
|
|
266
|
+
params = params.append('paginationType', 'small');
|
|
267
|
+
params = params.append('pageType', 'risk');
|
|
268
|
+
let businessCycle = {
|
|
269
|
+
start_date: this.currentBusinessCycle?.start_date,
|
|
270
|
+
end_date: this.currentBusinessCycle?.end_date,
|
|
271
|
+
selected_cycle_arr: this.currentBusinessCycle?.selected_cycle_arr,
|
|
272
|
+
selected_cycle: this.currentBusinessCycle?.selected_cycle,
|
|
273
|
+
time_filter_type: '',
|
|
274
|
+
pageType: 'risk',
|
|
275
|
+
filterData: {
|
|
276
|
+
appList: [],
|
|
277
|
+
riskIds: [],
|
|
278
|
+
reviewerId: [],
|
|
279
|
+
responsibilityCenter: [],
|
|
280
|
+
entrustedBy: [],
|
|
281
|
+
entrustedTo: [],
|
|
282
|
+
responsibilityCategory: [],
|
|
283
|
+
},
|
|
284
|
+
};
|
|
285
|
+
this.responsibilityCall = this.grcService
|
|
286
|
+
.getResponsibilityByCategoryId(params, businessCycle)
|
|
287
|
+
.subscribe({
|
|
288
|
+
next: (res) => {
|
|
289
|
+
this.categoryLoader = false;
|
|
290
|
+
this.responsibilityData = res;
|
|
291
|
+
this.responsibilityData['data'] = this.setDataListStructure(res?.data);
|
|
292
|
+
this.responsibilityLoader = false;
|
|
293
|
+
},
|
|
294
|
+
error: (err) => {
|
|
295
|
+
this.responsibilityLoader = false;
|
|
296
|
+
},
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
getUpdatedDataList(event) {
|
|
300
|
+
this.responsibilityCurrentPage = event?.pageNo;
|
|
301
|
+
this.getResponsibilitiesList();
|
|
302
|
+
}
|
|
303
|
+
setDataListStructure(res) {
|
|
304
|
+
const data = res?.map((responsibility) => {
|
|
305
|
+
return {
|
|
306
|
+
...responsibility,
|
|
307
|
+
name: responsibility?.ReportName,
|
|
308
|
+
controlId: responsibility?.ControlId,
|
|
309
|
+
_id: responsibility?.EncryptedReportId,
|
|
310
|
+
entrustedBy: {
|
|
311
|
+
name: responsibility?.AssignBy,
|
|
312
|
+
email: responsibility?.AssignByEmail,
|
|
313
|
+
profilePic: responsibility?.member_pic ?? '',
|
|
314
|
+
shortName: responsibility?.member_short_name,
|
|
315
|
+
},
|
|
316
|
+
entrustedTo: {
|
|
317
|
+
name: responsibility?.AssignTo,
|
|
318
|
+
email: responsibility?.AssignTo,
|
|
319
|
+
profilePic: responsibility?.employee_pic ?? '',
|
|
320
|
+
shortName: responsibility?.employee_short_name,
|
|
321
|
+
EntrustedToMembers: responsibility?.EntrustedToMembers,
|
|
322
|
+
},
|
|
323
|
+
withinData: responsibility?.RC_details_array?.map((within) => {
|
|
324
|
+
return {
|
|
325
|
+
name: within?.rc_name,
|
|
326
|
+
};
|
|
327
|
+
}),
|
|
328
|
+
};
|
|
329
|
+
});
|
|
330
|
+
return data;
|
|
331
|
+
}
|
|
332
|
+
onSelectedProgramChange() {
|
|
333
|
+
this.categoryCurrentPage = 1;
|
|
334
|
+
this.responsibilityCurrentPage = 1;
|
|
335
|
+
}
|
|
336
|
+
changeSelectedProgramAndResp(event) {
|
|
337
|
+
this.selectedProgramAndResp = event;
|
|
338
|
+
this.getSelectedProgramIds(this.selectedProgramAndResp);
|
|
339
|
+
this.getAllSelectedResponsibilities(this.selectedProgramAndResp);
|
|
340
|
+
// this.getSelectedCategoryIds(this.selectedProgramAndResp);
|
|
341
|
+
}
|
|
342
|
+
getSelectedProgramIds(selectedData) {
|
|
343
|
+
this.selectedProgramIds = [];
|
|
344
|
+
selectedData?.forEach((selected) => {
|
|
345
|
+
this.selectedCategoryIds = selected?.category;
|
|
346
|
+
this.selectedProgramIds.push(selected?.program?.programId);
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
getSelectedCategoryIds(selectedData) {
|
|
350
|
+
this.selectedCategoryIds = [];
|
|
351
|
+
let programIndex = -1;
|
|
352
|
+
programIndex = selectedData.findIndex((cat) => cat?.program?.programId === this.selectedProgram?.programId);
|
|
353
|
+
if (programIndex !== -1) {
|
|
354
|
+
this.selectedCategoryIds = selectedData[programIndex]?.category;
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
this.selectedCategoryIds = [];
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
getAllSelectedResponsibilities(selectedData) {
|
|
361
|
+
this.selectedResponsibilities = [];
|
|
362
|
+
selectedData.forEach((item) => {
|
|
363
|
+
this.selectedResponsibilities.push(...item?.responsibility);
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
ProgramResponsibilityListingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ProgramResponsibilityListingComponent, deps: [{ token: i1.GrcService }], target: i0.ɵɵFactoryTarget.Component });
|
|
368
|
+
ProgramResponsibilityListingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ProgramResponsibilityListingComponent, isStandalone: true, selector: "app-program-responsibility-listing", inputs: { getSelectedProgramAndResp: ["selectedProgramAndResp", "getSelectedProgramAndResp"] }, outputs: { closeList: "closeList" }, viewQueries: [{ propertyName: "responsibilityListingComponent", first: true, predicate: ["dataListing"], descendants: true }], ngImport: i0, template: "<div class=\"program-responsibility-listing\" [class.animate]=\"animation\">\r\n <div class=\"program-responsibility-listing-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <h3 class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select Responsibilities</h3></div>\r\n <div class=\"program-responsibility-listing-body\">\r\n <app-table-card-loader *ngIf=\"programCountLoader\"></app-table-card-loader>\r\n <app-table-card\r\n *ngIf=\"!programCountLoader\"\r\n class=\"vx-w-100\"\r\n [tableCard]=\"programTypes\"\r\n [singleSelectedText]=\"'Responsibility Selected'\"\r\n [selectedTab]=\"selectedTab\"\r\n [multipleSelectedText]=\"'Responsibilities Selected'\"\r\n (setSelectedTab)=\"setSelectedTab($event)\">\r\n </app-table-card>\r\n <div class=\"search-block vx-mb-2\">\r\n <i class=\"icons\"></i>\r\n <input type=\"text\" #searchRiskCategory (keyup.enter)=\"handleSearch($event.target.value)\" placeholder=\"Search Programs\" />\r\n </div>\r\n <div class=\"program-responsibility-listing-body-inner vx-mb-2 vx-d-flex\" [class.vx-justify-center]=\"(!programLoader && !programData?.data?.length)\">\r\n <ng-container *ngIf=\"(programLoader || programData?.data?.length)\">\r\n <div class=\"inner-item-left vx-pr-2\">\r\n\r\n <app-grc-category-listing *ngIf=\"!programLoader\" [headerText]=\"'Programs'\" [programData]=\"programData\" [selectedCatAndRisk]=\"selectedCatAndRisk\" [nameDisplayKey]=\"'item_name'\" [currentPage]=\"programCurrentPage\" [selectedTabIndex]=\"selectedTab\" [selectedCategoryIds]=\"selectedProgramIds\" (activeSelectedCategory)=\"activeSelectedProgram($event)\" (onCategoryPageChange)=\"onProgramPageChange($event)\"></app-grc-category-listing>\r\n \r\n <app-list-loader *ngIf=\"programLoader\"></app-list-loader>\r\n\r\n </div>\r\n\r\n <div class=\"inner-item-mid vx-pr-2\">\r\n <app-grc-sub-category-listing *ngIf=\"!categoryLoader && !programLoader\" [headerText]=\"'Programs'\" [categories]=\"categoryData\" [nameDisplayKey]=\"'item_name'\" [currentPage]=\"categoryCurrentPage\" [selectedCategoryIds]=\"selectedCategoryIds\" [activeProgram]=\"selectedProgram\" [selectedProgramAndResp]=\"selectedProgramAndResp\" (activeSelectedCategory)=\"activeSelectedSubCategory($event)\" (onCategoryPageChange)=\"onSubCategoryPageChange($event)\"></app-grc-sub-category-listing>\r\n <app-list-loader *ngIf=\"categoryLoader || programLoader\"></app-list-loader>\r\n </div>\r\n\r\n <div class=\"inner-item-right\">\r\n <!-- <app-grc-responsibility-listing></app-grc-responsibility-listing> -->\r\n\r\n <app-grc-responsibility-listing #dataListing *ngIf=\"!responsibilityLoader && !categoryLoader && !programLoader && responsibilityData?.data?.length !== 0\" [headerText]=\"'Responsibilities'\" [responsibilityData]=\"responsibilityData\" [activeProgram]=\"selectedProgram\" [activeCategory]=\"selectedCategory\" [selectedProgramAndResp]=\"selectedProgramAndResp\" (changeSelectedProgramAndResp)=\"changeSelectedProgramAndResp($event)\" [currentPage]=\"responsibilityCurrentPage\" [perPageLimit]=\"30\" [totalListData]=\"responsibilityData?.total_items\" [totalPages]=\"responsibilityData?.total_pages\" (getUpdatedDataList)=\"getUpdatedDataList($event)\" ></app-grc-responsibility-listing>\r\n \r\n <app-list-loader *ngIf=\"responsibilityLoader || categoryLoader || programLoader\"></app-list-loader>\r\n \r\n <app-no-data *ngIf=\"responsibilityData?.data?.length === 0 && !(responsibilityLoader || categoryLoader || programLoader)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\r\n </div>\r\n </ng-container>\r\n <app-no-data *ngIf=\"(!programLoader && !programData?.data?.length)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\r\n </div>\r\n <app-floating-bar [selectedData]=\"selectedResponsibilities?.length ? selectedResponsibilities : []\" (closeList)=\"close()\" (closeEvent)=\"save()\" [displayElementKey]=\"'ReportName'\" [singularText]=\"'Responsibility selected'\" [pluralText]=\"'Responsibilities selected'\" (deleteEvent)=\"deleteEvent($event)\"></app-floating-bar>\r\n </div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";::ng-deep .program-responsibility-listing{position:fixed;inset:0 30px 0 0}::ng-deep .program-responsibility-listing:before{background:#1E5DD3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .program-responsibility-listing.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .program-responsibility-listing-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .program-responsibility-listing-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .program-responsibility-listing-body .search-block{position:relative}::ng-deep .program-responsibility-listing-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .program-responsibility-listing-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .program-responsibility-listing-body .search-block input::placeholder{color:#747576}::ng-deep .program-responsibility-listing-body .search-block i{position:absolute;left:1rem;font-size:12px;font-weight:400;top:1rem;pointer-events:none;color:#f1f1f1}::ng-deep .program-responsibility-listing-body-inner{height:calc(100vh - 17.5rem)}::ng-deep .program-responsibility-listing-body-inner .inner-item-left{width:25%}::ng-deep .program-responsibility-listing-body-inner .inner-item-mid{width:25%}::ng-deep .program-responsibility-listing-body-inner .inner-item-right{width:50%}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "ngmodule", type: FormgroupModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: FloatingBarModule }, { kind: "component", type: i3.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "ngmodule", type: PaginationModule }, { kind: "component", type: TableCardComponent, selector: "app-table-card", inputs: ["singleSelectedText", "multipleSelectedText", "selectedTab", "tableCard"], outputs: ["setSelectedTab"] }, { kind: "component", type: GrcCategoryListingComponent, selector: "app-grc-category-listing", inputs: ["tableCard", "headerText", "currentPage", "selectedTabIndex", "selectedCatAndRisk", "selectedCategoryIds", "categories", "programData"], outputs: ["activeSelectedCategory", "onCategoryPageChange"] }, { kind: "component", type: GrcResponsibilityListingComponent, selector: "app-grc-responsibility-listing", inputs: ["tableCard", "activeProgram", "headerText", "currentPage", "perPageLimit", "totalListData", "totalPages", "selectedListData", "selectedListDataIds", "responsibilityData", "selectedProgramAndResp"], outputs: ["getUpdatedDataList", "changeSelectedProgramAndResp"] }, { kind: "component", type: GrcSubCategoryListingComponent, selector: "app-grc-sub-category-listing", inputs: ["currentPage", "nameDisplayKey", "selectedCategoryIds", "activeProgram", "categories", "selectedProgramAndResp"], outputs: ["activeSelectedCategory", "onCategoryPageChange"] }, { kind: "ngmodule", type: ListLoaderModule }, { kind: "component", type: i4.ListLoaderComponent, selector: "app-list-loader" }, { kind: "ngmodule", type: NoDataModule }, { kind: "component", type: i5.NoDataComponent, selector: "app-no-data", inputs: ["action", "secondaryAction", "noDataImage", "noDataText", "noDataButton", "secondaryButton", "noDataSecButton", "altText", "smallButton"], outputs: ["buttonAction", "secondaryActionButton"] }, { kind: "component", type: TableCardLoaderComponent, selector: "app-table-card-loader" }] });
|
|
369
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ProgramResponsibilityListingComponent, decorators: [{
|
|
370
|
+
type: Component,
|
|
371
|
+
args: [{ selector: 'app-program-responsibility-listing', standalone: true, imports: [
|
|
372
|
+
CommonModule,
|
|
373
|
+
PopoverModule,
|
|
374
|
+
FormgroupModule,
|
|
375
|
+
TooltipModule,
|
|
376
|
+
FloatingBarModule,
|
|
377
|
+
PaginationModule,
|
|
378
|
+
TableCardComponent,
|
|
379
|
+
GrcCategoryListingComponent,
|
|
380
|
+
GrcResponsibilityListingComponent,
|
|
381
|
+
GrcSubCategoryListingComponent,
|
|
382
|
+
ListLoaderModule,
|
|
383
|
+
NoDataModule,
|
|
384
|
+
TableCardLoaderComponent,
|
|
385
|
+
], outputs: ['closeList'], template: "<div class=\"program-responsibility-listing\" [class.animate]=\"animation\">\r\n <div class=\"program-responsibility-listing-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <h3 class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select Responsibilities</h3></div>\r\n <div class=\"program-responsibility-listing-body\">\r\n <app-table-card-loader *ngIf=\"programCountLoader\"></app-table-card-loader>\r\n <app-table-card\r\n *ngIf=\"!programCountLoader\"\r\n class=\"vx-w-100\"\r\n [tableCard]=\"programTypes\"\r\n [singleSelectedText]=\"'Responsibility Selected'\"\r\n [selectedTab]=\"selectedTab\"\r\n [multipleSelectedText]=\"'Responsibilities Selected'\"\r\n (setSelectedTab)=\"setSelectedTab($event)\">\r\n </app-table-card>\r\n <div class=\"search-block vx-mb-2\">\r\n <i class=\"icons\"></i>\r\n <input type=\"text\" #searchRiskCategory (keyup.enter)=\"handleSearch($event.target.value)\" placeholder=\"Search Programs\" />\r\n </div>\r\n <div class=\"program-responsibility-listing-body-inner vx-mb-2 vx-d-flex\" [class.vx-justify-center]=\"(!programLoader && !programData?.data?.length)\">\r\n <ng-container *ngIf=\"(programLoader || programData?.data?.length)\">\r\n <div class=\"inner-item-left vx-pr-2\">\r\n\r\n <app-grc-category-listing *ngIf=\"!programLoader\" [headerText]=\"'Programs'\" [programData]=\"programData\" [selectedCatAndRisk]=\"selectedCatAndRisk\" [nameDisplayKey]=\"'item_name'\" [currentPage]=\"programCurrentPage\" [selectedTabIndex]=\"selectedTab\" [selectedCategoryIds]=\"selectedProgramIds\" (activeSelectedCategory)=\"activeSelectedProgram($event)\" (onCategoryPageChange)=\"onProgramPageChange($event)\"></app-grc-category-listing>\r\n \r\n <app-list-loader *ngIf=\"programLoader\"></app-list-loader>\r\n\r\n </div>\r\n\r\n <div class=\"inner-item-mid vx-pr-2\">\r\n <app-grc-sub-category-listing *ngIf=\"!categoryLoader && !programLoader\" [headerText]=\"'Programs'\" [categories]=\"categoryData\" [nameDisplayKey]=\"'item_name'\" [currentPage]=\"categoryCurrentPage\" [selectedCategoryIds]=\"selectedCategoryIds\" [activeProgram]=\"selectedProgram\" [selectedProgramAndResp]=\"selectedProgramAndResp\" (activeSelectedCategory)=\"activeSelectedSubCategory($event)\" (onCategoryPageChange)=\"onSubCategoryPageChange($event)\"></app-grc-sub-category-listing>\r\n <app-list-loader *ngIf=\"categoryLoader || programLoader\"></app-list-loader>\r\n </div>\r\n\r\n <div class=\"inner-item-right\">\r\n <!-- <app-grc-responsibility-listing></app-grc-responsibility-listing> -->\r\n\r\n <app-grc-responsibility-listing #dataListing *ngIf=\"!responsibilityLoader && !categoryLoader && !programLoader && responsibilityData?.data?.length !== 0\" [headerText]=\"'Responsibilities'\" [responsibilityData]=\"responsibilityData\" [activeProgram]=\"selectedProgram\" [activeCategory]=\"selectedCategory\" [selectedProgramAndResp]=\"selectedProgramAndResp\" (changeSelectedProgramAndResp)=\"changeSelectedProgramAndResp($event)\" [currentPage]=\"responsibilityCurrentPage\" [perPageLimit]=\"30\" [totalListData]=\"responsibilityData?.total_items\" [totalPages]=\"responsibilityData?.total_pages\" (getUpdatedDataList)=\"getUpdatedDataList($event)\" ></app-grc-responsibility-listing>\r\n \r\n <app-list-loader *ngIf=\"responsibilityLoader || categoryLoader || programLoader\"></app-list-loader>\r\n \r\n <app-no-data *ngIf=\"responsibilityData?.data?.length === 0 && !(responsibilityLoader || categoryLoader || programLoader)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\r\n </div>\r\n </ng-container>\r\n <app-no-data *ngIf=\"(!programLoader && !programData?.data?.length)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\r\n </div>\r\n <app-floating-bar [selectedData]=\"selectedResponsibilities?.length ? selectedResponsibilities : []\" (closeList)=\"close()\" (closeEvent)=\"save()\" [displayElementKey]=\"'ReportName'\" [singularText]=\"'Responsibility selected'\" [pluralText]=\"'Responsibilities selected'\" (deleteEvent)=\"deleteEvent($event)\"></app-floating-bar>\r\n </div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";::ng-deep .program-responsibility-listing{position:fixed;inset:0 30px 0 0}::ng-deep .program-responsibility-listing:before{background:#1E5DD3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .program-responsibility-listing.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .program-responsibility-listing-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .program-responsibility-listing-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .program-responsibility-listing-body .search-block{position:relative}::ng-deep .program-responsibility-listing-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .program-responsibility-listing-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .program-responsibility-listing-body .search-block input::placeholder{color:#747576}::ng-deep .program-responsibility-listing-body .search-block i{position:absolute;left:1rem;font-size:12px;font-weight:400;top:1rem;pointer-events:none;color:#f1f1f1}::ng-deep .program-responsibility-listing-body-inner{height:calc(100vh - 17.5rem)}::ng-deep .program-responsibility-listing-body-inner .inner-item-left{width:25%}::ng-deep .program-responsibility-listing-body-inner .inner-item-mid{width:25%}::ng-deep .program-responsibility-listing-body-inner .inner-item-right{width:50%}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"] }]
|
|
386
|
+
}], ctorParameters: function () { return [{ type: i1.GrcService }]; }, propDecorators: { getSelectedProgramAndResp: [{
|
|
387
|
+
type: Input,
|
|
388
|
+
args: ['selectedProgramAndResp']
|
|
389
|
+
}], responsibilityListingComponent: [{
|
|
390
|
+
type: ViewChild,
|
|
391
|
+
args: ['dataListing']
|
|
392
|
+
}] } });
|
|
393
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93L3NoYXJlZC9jb21wb25lbnRzL3Byb2dyYW0tcmVzcG9uc2liaWxpdHktbGlzdGluZy9wcm9ncmFtLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvc2hhcmVkL2NvbXBvbmVudHMvcHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nL3Byb2dyYW0tcmVzcG9uc2liaWxpdHktbGlzdGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFB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cUM7a0JBdEJqRCxTQUFTOytCQUNFLG9DQUFvQyxjQUNsQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQiwyQkFBMkI7d0JBQzNCLGlDQUFpQzt3QkFDakMsOEJBQThCO3dCQUM5QixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osd0JBQXdCO3FCQUN6QixXQUdRLENBQUMsV0FBVyxDQUFDO2lHQW1DZSx5QkFBeUI7c0JBQTdELEtBQUs7dUJBQUMsd0JBQXdCO2dCQVUvQiw4QkFBOEI7c0JBRDdCLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGbG9hdGluZ0Jhck1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZENvbXBvbmVudHMvZmxvYXRpbmctYmFyL2Zsb2F0aW5nLWJhci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBGb3JtZ3JvdXBNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi91aS1raXQvZm9ybWdyb3VwL2Zvcm1ncm91cC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L3BhZ2luYXRpb24vcGFnaW5hdGlvbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L3BvcG92ZXIvcG9wb3Zlci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBUYWJsZUNhcmRDb21wb25lbnQgfSBmcm9tICcuLi90YWJsZS1jYXJkL3RhYmxlLWNhcmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR3JjQ2F0ZWdvcnlMaXN0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JjLWNhdGVnb3J5LWxpc3RpbmcvZ3JjLWNhdGVnb3J5LWxpc3RpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR3JjUmVzcG9uc2liaWxpdHlMaXN0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JjLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmcvZ3JjLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTm9EYXRhTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L25vLWRhdGEvbm8tZGF0YS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBMaXN0TG9hZGVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkQ29tcG9uZW50cy9saXN0LWxvYWRlci9saXN0LWxvYWRlci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBHcmNTdWJDYXRlZ29yeUxpc3RpbmdDb21wb25lbnQgfSBmcm9tICcuLi9ncmMtc3ViLWNhdGVnb3J5LWxpc3RpbmcvZ3JjLXN1Yi1jYXRlZ29yeS1saXN0aW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBSRVNQT05TSUJJTElUWV9UQUJMRV9DQVJEIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2xpbmstcmVzcG9uc2liaWxpdHkuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBHcmNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUYWJsZUNhcmRMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL3RhYmxlLWNhcmQtbG9hZGVyL3RhYmxlLWNhcmQtbG9hZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IExJTktTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2Nkbi1saW5rLmNvbnN0YW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXByb2dyYW0tcmVzcG9uc2liaWxpdHktbGlzdGluZycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBQb3BvdmVyTW9kdWxlLFxyXG4gICAgRm9ybWdyb3VwTW9kdWxlLFxyXG4gICAgVG9vbHRpcE1vZHVsZSxcclxuICAgIEZsb2F0aW5nQmFyTW9kdWxlLFxyXG4gICAgUGFnaW5hdGlvbk1vZHVsZSxcclxuICAgIFRhYmxlQ2FyZENvbXBvbmVudCxcclxuICAgIEdyY0NhdGVnb3J5TGlzdGluZ0NvbXBvbmVudCxcclxuICAgIEdyY1Jlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudCxcclxuICAgIEdyY1N1YkNhdGVnb3J5TGlzdGluZ0NvbXBvbmVudCxcclxuICAgIExpc3RMb2FkZXJNb2R1bGUsXHJcbiAgICBOb0RhdGFNb2R1bGUsXHJcbiAgICBUYWJsZUNhcmRMb2FkZXJDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9ncmFtLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmcuY29tcG9uZW50Lmxlc3MnXSxcclxuICBvdXRwdXRzOiBbJ2Nsb3NlTGlzdCddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZ3JhbVJlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJvZ3JhbVR5cGVzID0gUkVTUE9OU0lCSUxJVFlfVEFCTEVfQ0FSRDtcclxuICBDRE5fTElOSyA9IExJTktTO1xyXG4gIHNlbGVjdGVkVGFiOiAwIHwgMSB8IDIgfCAzID0gMTtcclxuXHJcbiAgYW5pbWF0aW9uID0gZmFsc2U7XHJcblxyXG4gIHByb2dyYW1Mb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm9ncmFtQ291bnRMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICByZXNwb25zaWJpbGl0eUxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNhdGVnb3J5TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcDogYW55W10gPSBbXTtcclxuICBwcmVTZWxlY3RlZFByb2dyYW1BbmRSZXNwOiBhbnlbXSA9IFtdO1xyXG4gIHNlYXJjaFN0cmluZzogc3RyaW5nID0gJyc7XHJcbiAgY3VycmVudEJ1c2luZXNzQ3ljbGUhOiBhbnk7XHJcbiAgc2VsZWN0ZWRQcm9ncmFtOiBhbnk7XHJcbiAgc2VsZWN0ZWRDYXRlZ29yeTogYW55O1xyXG4gIHByb2dyYW1DdXJyZW50UGFnZTogbnVtYmVyID0gMTtcclxuICBjYXRlZ29yeUN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xyXG4gIHJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U6IG51bWJlciA9IDE7XHJcbiAgcHJvZ3JhbURhdGE6IGFueTtcclxuICBjYXRlZ29yeURhdGE6IGFueTtcclxuICByZXNwb25zaWJpbGl0eURhdGE6IGFueSA9IHtcclxuICAgIGRhdGE6IFtdLFxyXG4gIH07XHJcbiAgc2VsZWN0ZWRQcm9ncmFtSWRzOiBhbnlbXSA9IFtdO1xyXG4gIHNlbGVjdGVkQ2F0ZWdvcnlJZHM6IGFueVtdID0gW107XHJcbiAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0aWVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwcm9ncmFtQ2FsbCE6IFN1YnNjcmlwdGlvbjtcclxuICBjYXRlZ29yeUNhbGwhOiBTdWJzY3JpcHRpb247XHJcbiAgcmVzcG9uc2liaWxpdHlDYWxsITogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBASW5wdXQoJ3NlbGVjdGVkUHJvZ3JhbUFuZFJlc3AnKSBzZXQgZ2V0U2VsZWN0ZWRQcm9ncmFtQW5kUmVzcChkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCA9IGRhdGEgfHwgW107XHJcbiAgICB0aGlzLnByZVNlbGVjdGVkUHJvZ3JhbUFuZFJlc3AgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgIHRoaXMuZ2V0U2VsZWN0ZWRQcm9ncmFtSWRzKHRoaXMuc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCk7XHJcbiAgICB0aGlzLmdldEFsbFNlbGVjdGVkUmVzcG9uc2liaWxpdGllcyh0aGlzLnNlbGVjdGVkUHJvZ3JhbUFuZFJlc3ApO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VMaXN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZGF0YUxpc3RpbmcnKVxyXG4gIHJlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudCE6IEdyY1Jlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBncmNTZXJ2aWNlOiBHcmNTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRCdXNpbmVzc0N5Y2xlID0gdGhpcy5ncmNTZXJ2aWNlPy5nZXRCdXNpbmVzc0N5Y2xlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYW5pbWF0aW9uID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfSwgMzAwKTtcclxuXHJcbiAgICB0aGlzLmdldFByb2dyYW1zTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRQcm9ncmFtc0NvdW50KCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuY2xvc2VMaXN0LmVtaXQodGhpcy5wcmVTZWxlY3RlZFByb2dyYW1BbmRSZXNwKTtcclxuICB9XHJcblxyXG4gIHNhdmUoKSB7XHJcbiAgICB0aGlzLmNsb3NlTGlzdC5lbWl0KHRoaXMuc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9ncmFtc0xpc3QoZXZlbnQ/OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnByb2dyYW1DYWxsKSB7XHJcbiAgICAgIHRoaXMucHJvZ3JhbUNhbGwudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMucHJvZ3JhbUxvYWRlciA9IHRydWU7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgdHlwZTogJycsXHJcbiAgICAgICAgcGFnaW5hdGlvblR5cGU6ICdzbWFsbCcsXHJcbiAgICAgICAgYTogJycsXHJcbiAgICAgICAgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hTdHJpbmcsXHJcbiAgICAgICAgZmlsdGVyRGF0YToge1xyXG4gICAgICAgICAgYXBwTGlzdDogW10sXHJcbiAgICAgICAgICByaXNrSWRzOiBbXSxcclxuICAgICAgICAgIHJldmlld2VySWQ6IFtdLFxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IFtdLFxyXG4gICAgICAgICAgZW50cnVzdGVkQnk6IFtdLFxyXG4gICAgICAgICAgZW50cnVzdGVkVG86IFtdLFxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogW10sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwYWdlTm86IHRoaXMucHJvZ3JhbUN1cnJlbnRQYWdlIHx8IDEsXHJcbiAgICAgICAgc29ydE9iajogeyBzb3J0Qnk6ICcnLCB0eXBlOiAtMSB9LFxyXG4gICAgICAgIHBhZ2VOYW1lOiAnY2F0ZWdvcnknLFxyXG4gICAgICAgIHR5cGVBcnI6IFt0aGlzLnNlbGVjdGVkVGFiXSxcclxuICAgICAgICBzdGFydF9kYXRlOiB0aGlzLmN1cnJlbnRCdXNpbmVzc0N5Y2xlPy5zdGFydF9kYXRlLFxyXG4gICAgICAgIGVuZF9kYXRlOiB0aGlzLmN1cnJlbnRCdXNpbmVzc0N5Y2xlPy5lbmRfZGF0ZSxcclxuICAgICAgICBzZWxlY3RlZF9jeWNsZV9hcnI6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlX2FycixcclxuICAgICAgICBzZWxlY3RlZF9jeWNsZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRfY3ljbGUsXHJcbiAgICAgICAgdGltZV9maWx0ZXJfdHlwZTogJycsXHJcbiAgICAgICAgc3RhdGU6IFsyLCAzXSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLnByb2dyYW1DYWxsID0gdGhpcy5ncmNTZXJ2aWNlLmdldFByb2dyYW1zTGlzdChyZXF1ZXN0KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnByb2dyYW1Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAvLyB0aGlzLnByb2dyYW1EYXRhLmRhdGEgPSByZXMuZGF0YSA/PyBbXTtcclxuICAgICAgICB0aGlzLnByb2dyYW1EYXRhID0geyAuLi5yZXMgfTtcclxuICAgICAgICB0aGlzLm9uU2VsZWN0ZWRQcm9ncmFtQ2hhbmdlKCk7XHJcbiAgICAgICAgdGhpcy5nZXRDYXRlZ29yeUJ5UHJvZ3JhbUlkKHJlcz8uZGF0YVswXSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnByb2dyYW1Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25Qcm9ncmFtUGFnZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnByb2dyYW1DdXJyZW50UGFnZSA9IGV2ZW50Py5wYWdlTm8gfHwgMTtcclxuICAgIHRoaXMuZ2V0UHJvZ3JhbXNMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBvblN1YkNhdGVnb3J5UGFnZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmNhdGVnb3J5Q3VycmVudFBhZ2UgPSBldmVudD8ucGFnZU5vIHx8IDE7XHJcbiAgICB0aGlzLmdldENhdGVnb3J5QnlQcm9ncmFtSWQodGhpcy5zZWxlY3RlZFByb2dyYW0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRXZlbnQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUxpc3RpbmdDb21wb25lbnQuZGVsZXRlU2VsZWN0ZWRSZXNwb25zaWJpbGl0eShldmVudCk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZFRhYihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnByb2dyYW1DdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGFiID0gZXZlbnQ/LnR5cGU7XHJcbiAgICB0aGlzLmdldFByb2dyYW1zTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlU2VhcmNoKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnNlYXJjaFN0cmluZyAhPSBldmVudCkge1xyXG4gICAgICB0aGlzLnByb2dyYW1DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gZXZlbnQ7XHJcbiAgICAgIHRoaXMub25TZWxlY3RlZFByb2dyYW1DaGFuZ2UoKTtcclxuICAgICAgdGhpcy5nZXRQcm9ncmFtc0xpc3QoKTtcclxuICAgICAgdGhpcy5nZXRQcm9ncmFtc0NvdW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQcm9ncmFtc0NvdW50KHBhcmFtc09iamVjdD86IGFueSkge1xyXG4gICAgdGhpcy5wcm9ncmFtQ291bnRMb2FkZXIgPSB0cnVlO1xyXG4gICAgY29uc3QgcmVxdWVzdCA9IHtcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgIHR5cGU6ICcnLFxyXG4gICAgICAgIHBhZ2luYXRpb25UeXBlOiAnc21hbGwnLFxyXG4gICAgICAgIGE6ICcnLFxyXG4gICAgICAgIHNlYXJjaFRleHQ6IHRoaXMuc2VhcmNoU3RyaW5nLFxyXG4gICAgICAgIGZpbHRlckRhdGE6IHtcclxuICAgICAgICAgIGFwcExpc3Q6IFtdLFxyXG4gICAgICAgICAgcmlza0lkczogW10sXHJcbiAgICAgICAgICByZXZpZXdlcklkOiBbXSxcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBbXSxcclxuICAgICAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcclxuICAgICAgICAgIGVudHJ1c3RlZFRvOiBbXSxcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFnZU5vOiAxLFxyXG4gICAgICAgIHNvcnRPYmo6IHsgc29ydEJ5OiAnJywgdHlwZTogJycgfSxcclxuICAgICAgICBwYWdlTmFtZTogJ2NhdGVnb3J5JyxcclxuICAgICAgICB0eXBlQXJyOiBbMSwgMiwgMywgMF0sXHJcbiAgICAgICAgc3RhcnRfZGF0ZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc3RhcnRfZGF0ZSxcclxuICAgICAgICBlbmRfZGF0ZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uZW5kX2RhdGUsXHJcbiAgICAgICAgc2VsZWN0ZWRfY3ljbGVfYXJyOiB0aGlzLmN1cnJlbnRCdXNpbmVzc0N5Y2xlPy5zZWxlY3RlZF9jeWNsZV9hcnIsXHJcbiAgICAgICAgc2VsZWN0ZWRfY3ljbGU6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlLFxyXG4gICAgICAgIHRpbWVfZmlsdGVyX3R5cGU6ICcnLFxyXG4gICAgICAgIHN0YXRlOiBbMiwgM10sXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ncmNTZXJ2aWNlLmdldFByb2dyYW1zTGlzdENvdW50KHJlcXVlc3QpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbUNvdW50TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcm9ncmFtVHlwZXNbMF0uY291bnQgPVxyXG4gICAgICAgICAgcmVzPy5yZWd1bGF0aW9uQ291bnQ/LmFjdGl2ZSArIHJlcz8ucmVndWxhdGlvbkNvdW50Py5jb21wbGV0ZWQ7XHJcbiAgICAgICAgdGhpcy5wcm9ncmFtVHlwZXNbMV0uY291bnQgPVxyXG4gICAgICAgICAgcmVzPy5zdGFuZGFyZENvdW50Py5hY3RpdmUgKyByZXM/LnN0YW5kYXJkQ291bnQ/LmNvbXBsZXRlZDtcclxuICAgICAgICB0aGlzLnByb2dyYW1UeXBlc1syXS5jb3VudCA9XHJcbiAgICAgICAgICByZXM/LmludGVybmFsQ291bnQ/LmFjdGl2ZSArIHJlcz8uaW50ZXJuYWxDb3VudD8uY29tcGxldGVkO1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbVR5cGVzWzNdLmNvdW50ID1cclxuICAgICAgICAgIHJlcz8ub3RoZXJDb3VudD8uYWN0aXZlICsgcmVzPy5vdGhlckNvdW50Py5jb21wbGV0ZWQ7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDYXRlZ29yeUJ5UHJvZ3JhbUlkKHByb2dyYW06IGFueSkge1xyXG4gICAgaWYgKHRoaXMuY2F0ZWdvcnlDYWxsKSB7XHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlDYWxsLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSA9IHByb2dyYW07XHJcbiAgICB0aGlzLmNhdGVnb3J5TG9hZGVyID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMucmVzZXRDb250cm9sVmFyaWFibGUoKTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSB7XHJcbiAgICAgIGlkOiBwcm9ncmFtPy5faWQsXHJcbiAgICAgIHNjb3BlVHlwZTogJ3Jpc2snLFxyXG4gICAgICBwYWdpbmF0aW9uVHlwZTogJ3NtYWxsJyxcclxuICAgICAgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hTdHJpbmcsXHJcbiAgICAgIGZpbHRlckRhdGE6IHtcclxuICAgICAgICBhcHBMaXN0OiBbXSxcclxuICAgICAgICByaXNrSWRzOiBbXSxcclxuICAgICAgICByZXZpZXdlcklkOiBbXSxcclxuICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogW10sXHJcbiAgICAgICAgZW50cnVzdGVkQnk6IFtdLFxyXG4gICAgICAgIGVudHJ1c3RlZFRvOiBbXSxcclxuICAgICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBbXSxcclxuICAgICAgfSxcclxuICAgICAgcGFnZTogdGhpcy5jYXRlZ29yeUN1cnJlbnRQYWdlIHx8IDEsXHJcbiAgICAgIC8vIHNvcnRpbmdDb3VudDogdGhpcy5jYXRlZ29yeVNvcnRWYWx1ZSxcclxuICAgICAgbmFtZTogJ25hbWUnLFxyXG4gICAgICBidXNpbmVzc0N5Y2xlOiB7XHJcbiAgICAgICAgc3RhcnRfZGF0ZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc3RhcnRfZGF0ZSxcclxuICAgICAgICBlbmRfZGF0ZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uZW5kX2RhdGUsXHJcbiAgICAgICAgc2VsZWN0ZWRfY3ljbGVfYXJyOiB0aGlzLmN1cnJlbnRCdXNpbmVzc0N5Y2xlPy5zZWxlY3RlZF9jeWNsZV9hcnIsXHJcbiAgICAgICAgc2VsZWN0ZWRfY3ljbGU6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlLFxyXG4gICAgICAgIHRpbWVfZmlsdGVyX3R5cGU6ICcnLFxyXG4gICAgICAgIC8vIFwic2NvcGVUeXBlXCI6ICdyaXNrJyxcclxuICAgICAgICB0eXBlOiAncmlzaycsXHJcbiAgICAgICAgZmlsdGVyRGF0YToge1xyXG4gICAgICAgICAgYXBwTGlzdDogW10sXHJcbiAgICAgICAgICByaXNrSWRzOiBbXSxcclxuICAgICAgICAgIHJldmlld2VySWQ6IFtdLFxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IFtdLFxyXG4gICAgICAgICAgZW50cnVzdGVkQnk6IFtdLFxyXG4gICAgICAgICAgZW50cnVzdGVkVG86IFtdLFxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogW10sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNhdGVnb3J5Q2FsbCA9IHRoaXMuZ3JjU2VydmljZS5nZXRTdWJDYXRlZ29yeUxpc3QoaGVhZGVycykuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXRlZ29yeUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhID0geyAuLi5yZXMgfTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkgPSByZXM/LmRhdGFbMF07XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXRpZXNMaXN0KCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlU2VsZWN0ZWRQcm9ncmFtKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtID0gZXZlbnQ/LmNhdGVnb3J5O1xyXG4gICAgdGhpcy5vblNlbGVjdGVkUHJvZ3JhbUNoYW5nZSgpO1xyXG4gICAgdGhpcy5nZXRDYXRlZ29yeUJ5UHJvZ3JhbUlkKHRoaXMuc2VsZWN0ZWRQcm9ncmFtKTtcclxuICAgIC8vIHRoaXMuZ2V0U2VsZWN0ZWRDYXRlZ29yeUlkcyh0aGlzLnNlbGVjdGVkUHJvZ3JhbUFuZFJlc3ApO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlU2VsZWN0ZWRTdWJDYXRlZ29yeShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkgPSBldmVudD8uY2F0ZWdvcnk7XHJcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXRpZXNMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXNwb25zaWJpbGl0aWVzTGlzdChldmVudD86IGFueSkge1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlDYWxsKSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDYWxsLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnJlc3BDb3VudCA9IGV2ZW50LnNvcnRWYWx1ZTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSB0cnVlO1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdpc0J1c2luZXNzQ3ljbGUnLCAndHJ1ZScpO1xyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFyZW50SWQnLCB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uY2F0ZWdvcnlfaWQpO1xyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnY2F0SWQnLCB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhZ2VObycsIHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZSA/PyAxKTtcclxuICAgIC8vIGlmIChbMSwgLTFdLmluY2x1ZGVzKHRoaXMuY29udHJvbFNvcnRWYWx1ZSkpIHtcclxuICAgIC8vICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnc29ydFZhbHVlJywgdGhpcy5jb250cm9sU29ydFZhbHVlKTtcclxuICAgIC8vICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnc29ydEJ5JywgJ0RhdGEuUmVwb3J0TmFtZScpO1xyXG4gICAgLy8gfVxyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnaW5hdGlvblR5cGUnLCAnc21hbGwnKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhZ2VUeXBlJywgJ3Jpc2snKTtcclxuICAgIGxldCBidXNpbmVzc0N5Y2xlID0ge1xyXG4gICAgICBzdGFydF9kYXRlOiB0aGlzLmN1cnJlbnRCdXNpbmVzc0N5Y2xlPy5zdGFydF9kYXRlLFxyXG4gICAgICBlbmRfZGF0ZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uZW5kX2RhdGUsXHJcbiAgICAgIHNlbGVjdGVkX2N5Y2xlX2FycjogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRfY3ljbGVfYXJyLFxyXG4gICAgICBzZWxlY3RlZF9jeWNsZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRfY3ljbGUsXHJcbiAgICAgIHRpbWVfZmlsdGVyX3R5cGU6ICcnLFxyXG4gICAgICBwYWdlVHlwZTogJ3Jpc2snLFxyXG4gICAgICBmaWx0ZXJEYXRhOiB7XHJcbiAgICAgICAgYXBwTGlzdDogW10sXHJcbiAgICAgICAgcmlza0lkczogW10sXHJcbiAgICAgICAgcmV2aWV3ZXJJZDogW10sXHJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IFtdLFxyXG4gICAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcclxuICAgICAgICBlbnRydXN0ZWRUbzogW10sXHJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogW10sXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlDYWxsID0gdGhpcy5ncmNTZXJ2aWNlXHJcbiAgICAgIC5nZXRSZXNwb25zaWJpbGl0eUJ5Q2F0ZWdvcnlJZChwYXJhbXMsIGJ1c2luZXNzQ3ljbGUpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jYXRlZ29yeUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eURhdGEgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YVsnZGF0YSddID0gdGhpcy5zZXREYXRhTGlzdFN0cnVjdHVyZShcclxuICAgICAgICAgICAgcmVzPy5kYXRhXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXBkYXRlZERhdGFMaXN0KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZSA9IGV2ZW50Py5wYWdlTm87XHJcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXRpZXNMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBzZXREYXRhTGlzdFN0cnVjdHVyZShyZXM6IGFueSkge1xyXG4gICAgY29uc3QgZGF0YSA9IHJlcz8ubWFwKChyZXNwb25zaWJpbGl0eTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4ucmVzcG9uc2liaWxpdHksXHJcbiAgICAgICAgbmFtZTogcmVzcG9uc2liaWxpdHk/LlJlcG9ydE5hbWUsXHJcbiAgICAgICAgY29udHJvbElkOiByZXNwb25zaWJpbGl0eT8uQ29udHJvbElkLFxyXG4gICAgICAgIF9pZDogcmVzcG9uc2liaWxpdHk/LkVuY3J5cHRlZFJlcG9ydElkLFxyXG4gICAgICAgIGVudHJ1c3RlZEJ5OiB7XHJcbiAgICAgICAgICBuYW1lOiByZXNwb25zaWJpbGl0eT8uQXNzaWduQnksXHJcbiAgICAgICAgICBlbWFpbDogcmVzcG9uc2liaWxpdHk/LkFzc2lnbkJ5RW1haWwsXHJcbiAgICAgICAgICBwcm9maWxlUGljOiByZXNwb25zaWJpbGl0eT8ubWVtYmVyX3BpYyA/PyAnJyxcclxuICAgICAgICAgIHNob3J0TmFtZTogcmVzcG9uc2liaWxpdHk/Lm1lbWJlcl9zaG9ydF9uYW1lLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW50cnVzdGVkVG86IHtcclxuICAgICAgICAgIG5hbWU6IHJlc3BvbnNpYmlsaXR5Py5Bc3NpZ25UbyxcclxuICAgICAgICAgIGVtYWlsOiByZXNwb25zaWJpbGl0eT8uQXNzaWduVG8sXHJcbiAgICAgICAgICBwcm9maWxlUGljOiByZXNwb25zaWJpbGl0eT8uZW1wbG95ZWVfcGljID8/ICcnLFxyXG4gICAgICAgICAgc2hvcnROYW1lOiByZXNwb25zaWJpbGl0eT8uZW1wbG95ZWVfc2hvcnRfbmFtZSxcclxuICAgICAgICAgIEVudHJ1c3RlZFRvTWVtYmVyczogcmVzcG9uc2liaWxpdHk/LkVudHJ1c3RlZFRvTWVtYmVycyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHdpdGhpbkRhdGE6IHJlc3BvbnNpYmlsaXR5Py5SQ19kZXRhaWxzX2FycmF5Py5tYXAoKHdpdGhpbjogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBuYW1lOiB3aXRoaW4/LnJjX25hbWUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRQcm9ncmFtQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5jYXRlZ29yeUN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZSA9IDE7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTZWxlY3RlZFByb2dyYW1BbmRSZXNwKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCA9IGV2ZW50O1xyXG4gICAgdGhpcy5nZXRTZWxlY3RlZFByb2dyYW1JZHModGhpcy5zZWxlY3RlZFByb2dyYW1BbmRSZXNwKTtcclxuICAgIHRoaXMuZ2V0QWxsU2VsZWN0ZWRSZXNwb25zaWJpbGl0aWVzKHRoaXMuc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCk7XHJcbiAgICAvLyB0aGlzLmdldFNlbGVjdGVkQ2F0ZWdvcnlJZHModGhpcy5zZWxlY3RlZFByb2dyYW1BbmRSZXNwKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkUHJvZ3JhbUlkcyhzZWxlY3RlZERhdGE6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFByb2dyYW1JZHMgPSBbXTtcclxuICAgIHNlbGVjdGVkRGF0YT8uZm9yRWFjaCgoc2VsZWN0ZWQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnlJZHMgPSBzZWxlY3RlZD8uY2F0ZWdvcnk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtSWRzLnB1c2goc2VsZWN0ZWQ/LnByb2dyYW0/LnByb2dyYW1JZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkQ2F0ZWdvcnlJZHMoc2VsZWN0ZWREYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUlkcyA9IFtdO1xyXG4gICAgbGV0IHByb2dyYW1JbmRleCA9IC0xO1xyXG4gICAgcHJvZ3JhbUluZGV4ID0gc2VsZWN0ZWREYXRhLmZpbmRJbmRleChcclxuICAgICAgKGNhdDogYW55KSA9PiBjYXQ/LnByb2dyYW0/LnByb2dyYW1JZCA9PT0gdGhpcy5zZWxlY3RlZFByb2dyYW0/LnByb2dyYW1JZFxyXG4gICAgKTtcclxuICAgIGlmIChwcm9ncmFtSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUlkcyA9IHNlbGVjdGVkRGF0YVtwcm9ncmFtSW5kZXhdPy5jYXRlZ29yeTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUlkcyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU2VsZWN0ZWRSZXNwb25zaWJpbGl0aWVzKHNlbGVjdGVkRGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdGllcyA9IFtdO1xyXG4gICAgc2VsZWN0ZWREYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdGllcy5wdXNoKC4uLml0ZW0/LnJlc3BvbnNpYmlsaXR5KTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nXCIgW2NsYXNzLmFuaW1hdGVdPVwiYW5pbWF0aW9uXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nLWhlYWQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtNCB2eC1wci00XCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlNlbGVjdCBSZXNwb25zaWJpbGl0aWVzPC9oMz48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwcm9ncmFtLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmctYm9keVwiPlxyXG4gICAgICAgIDxhcHAtdGFibGUtY2FyZC1sb2FkZXIgKm5nSWY9XCJwcm9ncmFtQ291bnRMb2FkZXJcIj48L2FwcC10YWJsZS1jYXJkLWxvYWRlcj5cclxuICAgICAgICA8YXBwLXRhYmxlLWNhcmRcclxuICAgICAgICAgICAgKm5nSWY9XCIhcHJvZ3JhbUNvdW50TG9hZGVyXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ2eC13LTEwMFwiXHJcbiAgICAgICAgICAgIFt0YWJsZUNhcmRdPVwicHJvZ3JhbVR5cGVzXCJcclxuICAgICAgICAgICAgW3NpbmdsZVNlbGVjdGVkVGV4dF09XCInUmVzcG9uc2liaWxpdHkgU2VsZWN0ZWQnXCJcclxuICAgICAgICAgICAgW3NlbGVjdGVkVGFiXT1cInNlbGVjdGVkVGFiXCJcclxuICAgICAgICAgICAgW211bHRpcGxlU2VsZWN0ZWRUZXh0XT1cIidSZXNwb25zaWJpbGl0aWVzIFNlbGVjdGVkJ1wiXHJcbiAgICAgICAgICAgIChzZXRTZWxlY3RlZFRhYik9XCJzZXRTZWxlY3RlZFRhYigkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtdGFibGUtY2FyZD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJsb2NrIHZ4LW1iLTJcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICAjc2VhcmNoUmlza0NhdGVnb3J5IChrZXl1cC5lbnRlcik9XCJoYW5kbGVTZWFyY2goJGV2ZW50LnRhcmdldC52YWx1ZSlcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBQcm9ncmFtc1wiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyYW0tcmVzcG9uc2liaWxpdHktbGlzdGluZy1ib2R5LWlubmVyIHZ4LW1iLTIgdngtZC1mbGV4XCIgW2NsYXNzLnZ4LWp1c3RpZnktY2VudGVyXT1cIighcHJvZ3JhbUxvYWRlciAmJiAhcHJvZ3JhbURhdGE/LmRhdGE/Lmxlbmd0aClcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihwcm9ncmFtTG9hZGVyIHx8IHByb2dyYW1EYXRhPy5kYXRhPy5sZW5ndGgpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZXItaXRlbS1sZWZ0IHZ4LXByLTJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1ncmMtY2F0ZWdvcnktbGlzdGluZyAqbmdJZj1cIiFwcm9ncmFtTG9hZGVyXCIgW2hlYWRlclRleHRdPVwiJ1Byb2dyYW1zJ1wiIFtwcm9ncmFtRGF0YV09XCJwcm9ncmFtRGF0YVwiICBbc2VsZWN0ZWRDYXRBbmRSaXNrXT1cInNlbGVjdGVkQ2F0QW5kUmlza1wiIFtuYW1lRGlzcGxheUtleV09XCInaXRlbV9uYW1lJ1wiIFtjdXJyZW50UGFnZV09XCJwcm9ncmFtQ3VycmVudFBhZ2VcIiBbc2VsZWN0ZWRUYWJJbmRleF09XCJzZWxlY3RlZFRhYlwiIFtzZWxlY3RlZENhdGVnb3J5SWRzXT1cInNlbGVjdGVkUHJvZ3JhbUlkc1wiIChhY3RpdmVTZWxlY3RlZENhdGVnb3J5KT1cImFjdGl2ZVNlbGVjdGVkUHJvZ3JhbSgkZXZlbnQpXCIgKG9uQ2F0ZWdvcnlQYWdlQ2hhbmdlKT1cIm9uUHJvZ3JhbVBhZ2VDaGFuZ2UoJGV2ZW50KVwiPjwvYXBwLWdyYy1jYXRlZ29yeS1saXN0aW5nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWxpc3QtbG9hZGVyICpuZ0lmPVwicHJvZ3JhbUxvYWRlclwiPjwvYXBwLWxpc3QtbG9hZGVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1pdGVtLW1pZCB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1ncmMtc3ViLWNhdGVnb3J5LWxpc3RpbmcgKm5nSWY9XCIhY2F0ZWdvcnlMb2FkZXIgJiYgIXByb2dyYW1Mb2FkZXJcIiAgW2hlYWRlclRleHRdPVwiJ1Byb2dyYW1zJ1wiIFtjYXRlZ29yaWVzXT1cImNhdGVnb3J5RGF0YVwiICBbbmFtZURpc3BsYXlLZXldPVwiJ2l0ZW1fbmFtZSdcIiAgW2N1cnJlbnRQYWdlXT1cImNhdGVnb3J5Q3VycmVudFBhZ2VcIiBbc2VsZWN0ZWRDYXRlZ29yeUlkc109XCJzZWxlY3RlZENhdGVnb3J5SWRzXCIgW2FjdGl2ZVByb2dyYW1dPVwic2VsZWN0ZWRQcm9ncmFtXCIgW3NlbGVjdGVkUHJvZ3JhbUFuZFJlc3BdPVwic2VsZWN0ZWRQcm9ncmFtQW5kUmVzcFwiIChhY3RpdmVTZWxlY3RlZENhdGVnb3J5KT1cImFjdGl2ZVNlbGVjdGVkU3ViQ2F0ZWdvcnkoJGV2ZW50KVwiIChvbkNhdGVnb3J5UGFnZUNoYW5nZSk9XCJvblN1YkNhdGVnb3J5UGFnZUNoYW5nZSgkZXZlbnQpXCI+PC9hcHAtZ3JjLXN1Yi1jYXRlZ29yeS1saXN0aW5nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbGlzdC1sb2FkZXIgKm5nSWY9XCJjYXRlZ29yeUxvYWRlciB8fCBwcm9ncmFtTG9hZGVyXCI+PC9hcHAtbGlzdC1sb2FkZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZXItaXRlbS1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGFwcC1ncmMtcmVzcG9uc2liaWxpdHktbGlzdGluZz48L2FwcC1ncmMtcmVzcG9uc2liaWxpdHktbGlzdGluZz4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtZ3JjLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmcgI2RhdGFMaXN0aW5nICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5TG9hZGVyICYmICFjYXRlZ29yeUxvYWRlciAmJiAhcHJvZ3JhbUxvYWRlciAmJiByZXNwb25zaWJpbGl0eURhdGE/LmRhdGE/Lmxlbmd0aCAhPT0gMFwiIFtoZWFkZXJUZXh0XT1cIidSZXNwb25zaWJpbGl0aWVzJ1wiIFtyZXNwb25zaWJpbGl0eURhdGFdPVwicmVzcG9uc2liaWxpdHlEYXRhXCIgW2FjdGl2ZVByb2dyYW1dPVwic2VsZWN0ZWRQcm9ncmFtXCIgW2FjdGl2ZUNhdGVnb3J5XT1cInNlbGVjdGVkQ2F0ZWdvcnlcIiBbc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcF09XCJzZWxlY3RlZFByb2dyYW1BbmRSZXNwXCIgKGNoYW5nZVNlbGVjdGVkUHJvZ3JhbUFuZFJlc3ApPVwiY2hhbmdlU2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCgkZXZlbnQpXCIgW2N1cnJlbnRQYWdlXT1cInJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2VcIiBbcGVyUGFnZUxpbWl0XT1cIjMwXCIgW3RvdGFsTGlzdERhdGFdPVwicmVzcG9uc2liaWxpdHlEYXRhPy50b3RhbF9pdGVtc1wiIFt0b3RhbFBhZ2VzXT1cInJlc3BvbnNpYmlsaXR5RGF0YT8udG90YWxfcGFnZXNcIiAoZ2V0VXBkYXRlZERhdGFMaXN0KT1cImdldFVwZGF0ZWREYXRhTGlzdCgkZXZlbnQpXCIgPjwvYXBwLWdyYy1yZXNwb25zaWJpbGl0eS1saXN0aW5nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWxpc3QtbG9hZGVyICpuZ0lmPVwicmVzcG9uc2liaWxpdHlMb2FkZXIgfHwgY2F0ZWdvcnlMb2FkZXIgfHwgcHJvZ3JhbUxvYWRlclwiPjwvYXBwLWxpc3QtbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbm8tZGF0YSAqbmdJZj1cInJlc3BvbnNpYmlsaXR5RGF0YT8uZGF0YT8ubGVuZ3RoID09PSAwICYmICEocmVzcG9uc2liaWxpdHlMb2FkZXIgfHwgY2F0ZWdvcnlMb2FkZXIgfHwgcHJvZ3JhbUxvYWRlcilcIiBbbm9EYXRhSW1hZ2VdPVwiQ0ROX0xJTks/Lm5vRGF0YVwiIFtub0RhdGFUZXh0XT1cIidObyBkYXRhIHRvIGRpc3BsYXknXCI+PC9hcHAtbm8tZGF0YT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGFwcC1uby1kYXRhICpuZ0lmPVwiKCFwcm9ncmFtTG9hZGVyICYmICFwcm9ncmFtRGF0YT8uZGF0YT8ubGVuZ3RoKVwiIFtub0RhdGFJbWFnZV09XCJDRE5fTElOSz8ubm9EYXRhXCIgW25vRGF0YVRleHRdPVwiJ05vIGRhdGEgdG8gZGlzcGxheSdcIj48L2FwcC1uby1kYXRhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhcHAtZmxvYXRpbmctYmFyICAgW3NlbGVjdGVkRGF0YV09XCJzZWxlY3RlZFJlc3BvbnNpYmlsaXRpZXM/Lmxlbmd0aCA/IHNlbGVjdGVkUmVzcG9uc2liaWxpdGllcyA6IFtdXCIgIChjbG9zZUxpc3QpPVwiY2xvc2UoKVwiIChjbG9zZUV2ZW50KT1cInNhdmUoKVwiICBbZGlzcGxheUVsZW1lbnRLZXldPVwiJ1JlcG9ydE5hbWUnXCIgW3Npbmd1bGFyVGV4dF09XCInUmVzcG9uc2liaWxpdHkgc2VsZWN0ZWQnXCIgW3BsdXJhbFRleHRdPVwiJ1Jlc3BvbnNpYmlsaXRpZXMgc2VsZWN0ZWQnXCIgKGRlbGV0ZUV2ZW50KT1cImRlbGV0ZUV2ZW50KCRldmVudClcIj48L2FwcC1mbG9hdGluZy1iYXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|