commons-assessment 12.0.19 → 12.0.21

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.
@@ -34,7 +34,7 @@ export class AssessmentBuilderService {
34
34
  id: ((_d = (_c = existingQuestion === null || existingQuestion === void 0 ? void 0 : existingQuestion.questionSubText) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.id) || 0,
35
35
  language: { code: 'ENG' },
36
36
  text: formData.questionSubText
37
- }] : [], questionType: { code: formData.questionType || '' }, questionSubtype: { code: formData.questionSubtype || ((_e = formData.questionType) === null || _e === void 0 ? void 0 : _e.replace('QUESTION_TYPE', 'QUESTION_SUB_TYPE')) || '' }, isMandatory: formData.isMandatory || false, isFilterEnabled: formData.isFilterEnabled || false, weight: Number(formData.totalMarks || 0), hintText: formData.hintText || null, mediaUrl: formData.questionMedia || null, responseValidation: formData.customRegex || null, skillCodes: ((_f = formData.skillCodes) === null || _f === void 0 ? void 0 : _f.map((skill) => ({ code: skill, classCode: "REF.ASSESSMENT_QUESTION_SKILL" }))) || [], questionConfigs, defaultOptionsList: (() => {
37
+ }] : [], questionType: { code: formData.questionType || '' }, questionSubtype: { code: formData.questionSubtype || ((_e = formData.questionType) === null || _e === void 0 ? void 0 : _e.replace('QUESTION_TYPE', 'QUESTION_SUB_TYPE')) || '' }, isMandatory: formData.isMandatory || false, isFilterEnabled: formData.isFilterEnabled || false, weight: Number(formData.totalMarks || 0), hintText: formData.hintText || '', mediaUrl: formData.questionMedia || '', responseValidation: formData.customRegex || '', skillCodes: ((_f = formData.skillCodes) === null || _f === void 0 ? void 0 : _f.map((skill) => ({ code: skill, classCode: "REF.ASSESSMENT_QUESTION_SKILL" }))) || [], questionConfigs, defaultOptionsList: (() => {
38
38
  const existingOptions = (existingQuestion === null || existingQuestion === void 0 ? void 0 : existingQuestion.defaultOptionsList) || [];
39
39
  const formOptions = formData.options || [];
40
40
  // 1. Process items from formData (new and updated)
@@ -131,22 +131,16 @@ export class AssessmentBuilderService {
131
131
  var _a;
132
132
  return Object.assign(Object.assign({ id: assessmentId, totallMarks: ((_a = questionPaper === null || questionPaper === void 0 ? void 0 : questionPaper.questionPaperSectionList) === null || _a === void 0 ? void 0 : _a.filter((section) => section.isActive !== false).reduce((acc, section) => acc + (section.totalMarks || 0), 0)) || 0 }, (!assessmentId && Object.assign({}, this.defaultAssessmentDTO))), { cacheEvictionEnabled: true });
133
133
  }
134
- generateAssessmentInstanceDTO(assessmentId) {
134
+ generateAssessmentInstanceDTO(assessmentId, predefinedAssessmentInstance) {
135
135
  var _a, _b;
136
136
  let d = new Date();
137
137
  let year = d.getFullYear();
138
138
  let month = d.getMonth();
139
139
  let day = d.getDate();
140
140
  let endDate = new Date(year + 20, month, day);
141
- return {
142
- id: 0,
143
- endDate: endDate,
144
- startDate: new Date(),
145
- assessment: Object.assign({ id: assessmentId }, (((_a = this.defaultAssessmentDTO) === null || _a === void 0 ? void 0 : _a.tenant) && { tenant: (_b = this.defaultAssessmentDTO) === null || _b === void 0 ? void 0 : _b.tenant })),
146
- scheduleStatus: {
141
+ return Object.assign({ id: 0, endDate: endDate, startDate: new Date(), assessment: Object.assign({ id: assessmentId }, (((_a = this.defaultAssessmentDTO) === null || _a === void 0 ? void 0 : _a.tenant) && { tenant: (_b = this.defaultAssessmentDTO) === null || _b === void 0 ? void 0 : _b.tenant })), scheduleStatus: {
147
142
  code: 'ASSESSMENT.PUBLISH'
148
- }
149
- };
143
+ } }, predefinedAssessmentInstance);
150
144
  }
151
145
  }
152
146
  AssessmentBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AssessmentBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -157,4 +151,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
157
151
  providedIn: 'root'
158
152
  }]
159
153
  }], ctorParameters: function () { return []; } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFrZXIvc2VydmljZXMvYXNzZXNzbWVudC1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRM0MsTUFBTSxPQUFPLHdCQUF3QjtJQVFqQztRQU5RLHlCQUFvQixHQUFlLEVBQUUsQ0FBQztJQU05QixDQUFDO0lBSmpCLHVCQUF1QixDQUFDLEtBQWlCO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUlELGNBQWMsQ0FBQyxRQUFhLEVBQUUsbUJBQThDLEVBQUU7O1FBRTFFLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFBLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixDQUFFLGVBQWUsS0FBSSxFQUFFLENBQUM7YUFDL0QsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLE1BQVcsRUFBRSxFQUFFO1lBQzlCLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQy9CLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVgsTUFBTSxlQUFlLEdBQUc7WUFDcEIsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDdkgsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FB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b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBc3Nlc3NtZW50LCBBc3Nlc3NtZW50SW5zdGFuY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9hc3Nlc3NtZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uUGFwZXJTZWN0aW9uLCBTZWN0aW9uUXVlc3Rpb24sIEFzc2Vzc21lbnRRdWVzdGlvblBhcGVyIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcXVlc3Rpb24tcGFwZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQXNzZXNzbWVudFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcXVlc3Rpb24uaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNzZXNzbWVudEJ1aWxkZXJTZXJ2aWNlIHtcclxuXHJcbiAgICBwcml2YXRlIGRlZmF1bHRBc3Nlc3NtZW50RFRPOiBBc3Nlc3NtZW50ID0ge307XHJcblxyXG4gICAgc2V0RGVmYXVsdEFzc2Vzc21lbnREVE8odmFsdWU6IEFzc2Vzc21lbnQpIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICBzZXRRdWVzdGlvbkRUTyhmb3JtRGF0YTogYW55LCBleGlzdGluZ1F1ZXN0aW9uOiBBc3Nlc3NtZW50UXVlc3Rpb24gfCBudWxsID0ge30pOiBBc3Nlc3NtZW50UXVlc3Rpb24ge1xyXG5cclxuICAgICAgICBjb25zdCBleGlzdGluZ0NvbmZpZ3NNYXAgPSAoZXhpc3RpbmdRdWVzdGlvbj8ucXVlc3Rpb25Db25maWdzIHx8IFtdKVxyXG4gICAgICAgICAgICAucmVkdWNlKChhY2M6IGFueSwgY29uZmlnOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGFjY1tjb25maWcuY29uZmlnS2V5XSA9IGNvbmZpZztcclxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgICAgIH0sIHt9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcXVlc3Rpb25Db25maWdzID0gW1xyXG4gICAgICAgICAgICB7IGNvbmZpZ0tleTogJ21pbkNoYXJhY3RlckNvdW50JywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1pbkNoYXJhY3RlckNvdW50ID8gU3RyaW5nKGZvcm1EYXRhLm1pbkNoYXJhY3RlckNvdW50KSA6IG51bGwgfSxcclxuICAgICAgICAgICAgeyBjb25maWdLZXk6ICdtYXhDaGFyYWN0ZXJDb3VudCcsIGNvbmZpZ1ZhbHVlOiBmb3JtRGF0YS5tYXhDaGFyYWN0ZXJDb3VudCA/IFN0cmluZyhmb3JtRGF0YS5tYXhDaGFyYWN0ZXJDb3VudCkgOiBudWxsIH0sXHJcbiAgICAgICAgICAgIHsgY29uZmlnS2V5OiAnbWluaW11bU51bWJlck9mT3B0aW9uJywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1pbmltdW1OdW1iZXJPZk9wdGlvbiA/IFN0cmluZyhmb3JtRGF0YS5taW5pbXVtTnVtYmVyT2ZPcHRpb24pIDogbnVsbCB9LFxyXG4gICAgICAgICAgICB7IGNvbmZpZ0tleTogJ21heGltdW1OdW1iZXJPZk9wdGlvbicsIGNvbmZpZ1ZhbHVlOiBmb3JtRGF0YS5tYXhpbXVtTnVtYmVyT2ZPcHRpb24gPyBTdHJpbmcoZm9ybURhdGEubWF4aW11bU51bWJlck9mT3B0aW9uKSA6IG51bGwgfSxcclxuICAgICAgICAgICAgeyBjb25maWdLZXk6ICdtYXhGaWxlU2l6ZScsIGNvbmZpZ1ZhbHVlOiBmb3JtRGF0YS5tYXhGaWxlU2l6ZSA/IFN0cmluZyhmb3JtRGF0YS5tYXhGaWxlU2l6ZSkgOiBudWxsIH0sXHJcbiAgICAgICAgICAgIHsgY29uZmlnS2V5OiAnbWF4Tm9PZkZpbGVzJywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1heE5vT2ZGaWxlcyA/IFN0cmluZyhmb3JtRGF0YS5tYXhOb09mRmlsZXMpIDogbnVsbCB9LFxyXG4gICAgICAgICAgICAvLyB7IGNvbmZpZ0tleTogJ3Zpc2liaWxpdHknLCBjb25maWdWYWx1ZTogZm9ybURhdGEudmlzaWJpbGl0eSA/ICd0cnVlJyA6ICdmYWxzZScgfVxyXG4gICAgICAgIF0ubWFwKGNvbmZpZyA9PiAoe1xyXG4gICAgICAgICAgICBpZDogZXhpc3RpbmdDb25maWdzTWFwW2NvbmZpZy5jb25maWdLZXldPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAuLi5jb25maWcsXHJcbiAgICAgICAgfSkpLmZpbHRlcihCb29sZWFuKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uZXhpc3RpbmdRdWVzdGlvbixcclxuICAgICAgICAgICAgcXVlc3Rpb25UZXh0OiBbe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGV4aXN0aW5nUXVlc3Rpb24/LnF1ZXN0aW9uVGV4dD8uWzBdPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHsgY29kZTogJ0VORycgfSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGZvcm1EYXRhLnF1ZXN0aW9uVGV4dCB8fCAnJ1xyXG4gICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgcXVlc3Rpb25TdWJUZXh0OiBmb3JtRGF0YS5xdWVzdGlvblN1YlRleHQgPyBbe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGV4aXN0aW5nUXVlc3Rpb24/LnF1ZXN0aW9uU3ViVGV4dD8uWzBdPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHsgY29kZTogJ0VORycgfSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGZvcm1EYXRhLnF1ZXN0aW9uU3ViVGV4dFxyXG4gICAgICAgICAgICB9XSA6IFtdLFxyXG4gICAgICAgICAgICBxdWVzdGlvblR5cGU6IHsgY29kZTogZm9ybURhdGEucXVlc3Rpb25UeXBlIHx8ICcnIH0sXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uU3VidHlwZTogeyBjb2RlOiBmb3JtRGF0YS5xdWVzdGlvblN1YnR5cGUgfHwgZm9ybURhdGEucXVlc3Rpb25UeXBlPy5yZXBsYWNlKCdRVUVTVElPTl9UWVBFJywgJ1FVRVNUSU9OX1NVQl9UWVBFJykgfHwgJycgfSxcclxuICAgICAgICAgICAgaXNNYW5kYXRvcnk6IGZvcm1EYXRhLmlzTWFuZGF0b3J5IHx8IGZhbHNlLFxyXG4gICAgICAgICAgICBpc0ZpbHRlckVuYWJsZWQ6IGZvcm1EYXRhLmlzRmlsdGVyRW5hYmxlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgd2VpZ2h0OiBOdW1iZXIoZm9ybURhdGEudG90YWxNYXJrcyB8fCAwKSxcclxuICAgICAgICAgICAgaGludFRleHQ6IGZvcm1EYXRhLmhpbnRUZXh0IHx8IG51bGwsXHJcbiAgICAgICAgICAgIG1lZGlhVXJsOiBmb3JtRGF0YS5xdWVzdGlvbk1lZGlhIHx8IG51bGwsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlVmFsaWRhdGlvbjogZm9ybURhdGEuY3VzdG9tUmVnZXggfHwgbnVsbCxcclxuICAgICAgICAgICAgc2tpbGxDb2RlczogZm9ybURhdGEuc2tpbGxDb2Rlcz8ubWFwKChza2lsbDogYW55KSA9PiAoeyBjb2RlOiBza2lsbCwgY2xhc3NDb2RlOiBcIlJFRi5BU1NFU1NNRU5UX1FVRVNUSU9OX1NLSUxMXCIgfSkpIHx8IFtdLFxyXG4gICAgICAgICAgICBxdWVzdGlvbkNvbmZpZ3MsXHJcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zTGlzdDogKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nT3B0aW9ucyA9IGV4aXN0aW5nUXVlc3Rpb24/LmRlZmF1bHRPcHRpb25zTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1PcHRpb25zID0gZm9ybURhdGEub3B0aW9ucyB8fCBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAxLiBQcm9jZXNzIGl0ZW1zIGZyb20gZm9ybURhdGEgKG5ldyBhbmQgdXBkYXRlZClcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZE9wdGlvbnMgPSBmb3JtT3B0aW9ucy5tYXAoKG9wdDogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdPcHQgPSBleGlzdGluZ09wdGlvbnMuZmluZChlbyA9PiBlby5pZCA9PT0gb3B0LmlkICYmIGVvLmlkICE9PSAwKSB8fCB7fTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZXhpc3RpbmdPcHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBvcHQuaWQgfHwgMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXVpZDogZXhpc3RpbmdPcHQudXVpZCB8fCBvcHQudXVpZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJObzogaW5kZXggKyAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHQ6IE51bWJlcihvcHQud2VpZ2h0IHx8IDApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1hcmtzUmVxdWlyZWQ6IG9wdC5yZW1hcmtzUmVxdWlyZWQgfHwgZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBvcHQuaXNBY3RpdmUgIT09IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oZXhpc3RpbmdPcHQub3B0aW9ucyB8fCB7fSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogb3B0Py5vcHRpb25zPy5pZCB8fCBleGlzdGluZ09wdC5vcHRpb25zPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTmFtZTogW3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZXhpc3RpbmdPcHQub3B0aW9ucz8ub3B0aW9uTmFtZT8uWzBdPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiB7IGNvZGU6ICdFTkcnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogb3B0Lm9wdGlvbkxhYmVsIHx8ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLih0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgJiYgeyB0ZW5hbnQ6IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRRdWVzdGlvbkxpc3Q6IG9wdC5jaGlsZFF1ZXN0aW9uTGlzdCB8fCBleGlzdGluZ09wdC5jaGlsZFF1ZXN0aW9uTGlzdCB8fCBbXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCAmJiB7IHRlbmFudDogdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50IH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAyLiBJZGVudGlmeSBleGlzdGluZyBvcHRpb25zIHRoYXQgYXJlIE5PVCBpbiBmb3JtRGF0YSAocmVtb3ZlZCBieSB1c2VyKSBhbmQgbWFyayB0aGVtIGluYWN0aXZlXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtT3B0aW9uSWRzID0gbmV3IFNldChwcm9jZXNzZWRPcHRpb25zLm1hcCgobzogYW55KSA9PiBvLmlkKS5maWx0ZXIoKGlkOiBudW1iZXIpID0+IGlkICE9PSAwKSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVkT3B0aW9ucyA9IGV4aXN0aW5nT3B0aW9ucy5maWx0ZXIoZW8gPT4gZW8uaWQgJiYgIWZvcm1PcHRpb25JZHMuaGFzKGVvLmlkKSkubWFwKGVvID0+ICh7IC4uLmVvLCBpc0FjdGl2ZTogZmFsc2UgfSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4ucHJvY2Vzc2VkT3B0aW9ucywgLi4ucmVtb3ZlZE9wdGlvbnNdO1xyXG4gICAgICAgICAgICB9KSgpLFxyXG4gICAgICAgICAgICAuLi4oIWV4aXN0aW5nUXVlc3Rpb24/LmlkICYmIHtcclxuICAgICAgICAgICAgICAgIGlkOiAwLFxyXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LmRvbWFpbiAmJiB7IGRvbWFpbjogdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8uZG9tYWluIH0pLFxyXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCAmJiB7IHRlbmFudDogdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50IH0pLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UXVlc3Rpb25EVE8ocXVlc3Rpb25EYXRhOiBBc3Nlc3NtZW50UXVlc3Rpb24pIHtcclxuICAgICAgICBjb25zdCBnZXRDb25maWcgPSAoa2V5OiBzdHJpbmcpID0+IHF1ZXN0aW9uRGF0YS5xdWVzdGlvbkNvbmZpZ3M/LmZpbmQoYyA9PiBjLmNvbmZpZ0tleSA9PT0ga2V5KT8uY29uZmlnVmFsdWU7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiBxdWVzdGlvbkRhdGEuaWQsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uVGV4dDogcXVlc3Rpb25EYXRhLnF1ZXN0aW9uVGV4dD8uWzBdPy50ZXh0IHx8ICcnLFxyXG4gICAgICAgICAgICBxdWVzdGlvblN1YlRleHQ6IHF1ZXN0aW9uRGF0YS5xdWVzdGlvblN1YlRleHQ/LlswXT8udGV4dCB8fCAnJyxcclxuICAgICAgICAgICAgcXVlc3Rpb25UeXBlOiBxdWVzdGlvbkRhdGEucXVlc3Rpb25UeXBlPy5jb2RlIHx8ICcnLFxyXG4gICAgICAgICAgICBpc01hbmRhdG9yeTogcXVlc3Rpb25EYXRhLmlzTWFuZGF0b3J5IHx8IGZhbHNlLFxyXG4gICAgICAgICAgICBpc0ZpbHRlckVuYWJsZWQ6IHF1ZXN0aW9uRGF0YS5pc0ZpbHRlckVuYWJsZWQgfHwgZmFsc2UsXHJcbiAgICAgICAgICAgIHRvdGFsTWFya3M6IHF1ZXN0aW9uRGF0YS53ZWlnaHQgfHwgMCxcclxuICAgICAgICAgICAgaGludFRleHQ6IHF1ZXN0aW9uRGF0YS5oaW50VGV4dCB8fCAnJyxcclxuICAgICAgICAgICAgcXVlc3Rpb25NZWRpYTogcXVlc3Rpb25EYXRhLm1lZGlhVXJsIHx8ICcnLFxyXG4gICAgICAgICAgICBtaW5DaGFyYWN0ZXJDb3VudDogZ2V0Q29uZmlnKCdtaW5DaGFyYWN0ZXJDb3VudCcpID8gTnVtYmVyKGdldENvbmZpZygnbWluQ2hhcmFjdGVyQ291bnQnKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtYXhDaGFyYWN0ZXJDb3VudDogZ2V0Q29uZmlnKCdtYXhDaGFyYWN0ZXJDb3VudCcpID8gTnVtYmVyKGdldENvbmZpZygnbWF4Q2hhcmFjdGVyQ291bnQnKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtaW5pbXVtTnVtYmVyT2ZPcHRpb246IGdldENvbmZpZygnbWluaW11bU51bWJlck9mT3B0aW9uJykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtaW5pbXVtTnVtYmVyT2ZPcHRpb24nKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtYXhpbXVtTnVtYmVyT2ZPcHRpb246IGdldENvbmZpZygnbWF4aW11bU51bWJlck9mT3B0aW9uJykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtYXhpbXVtTnVtYmVyT2ZPcHRpb24nKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtYXhGaWxlU2l6ZTogZ2V0Q29uZmlnKCdtYXhGaWxlU2l6ZScpID8gTnVtYmVyKGdldENvbmZpZygnbWF4RmlsZVNpemUnKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtYXhOb09mRmlsZXM6IGdldENvbmZpZygnbWF4Tm9PZkZpbGVzJykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtYXhOb09mRmlsZXMnKSkgOiBudWxsLFxyXG4gICAgICAgICAgICAvLyB2aXNpYmlsaXR5OiBnZXRDb25maWcoJ3Zpc2liaWxpdHknKSA9PT0gJ3RydWUnLFxyXG4gICAgICAgICAgICBjdXN0b21SZWdleDogcXVlc3Rpb25EYXRhPy5yZXNwb25zZVZhbGlkYXRpb24sXHJcbiAgICAgICAgICAgIHNraWxsQ29kZXM6IHF1ZXN0aW9uRGF0YT8uc2tpbGxDb2Rlcz8ubWFwKChza2lsbDogYW55KSA9PiBza2lsbC5jb2RlKSB8fCBbXSxcclxuICAgICAgICAgICAgb3B0aW9uczogcXVlc3Rpb25EYXRhLmRlZmF1bHRPcHRpb25zTGlzdD8ubWFwKG9wdCA9PiAoe1xyXG4gICAgICAgICAgICAgICAgaWQ6IG9wdC5pZCxcclxuICAgICAgICAgICAgICAgIHV1aWQ6IG9wdC51dWlkLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw6IG9wdC5vcHRpb25zPy5vcHRpb25OYW1lPy5bMF0/LnRleHQgfHwgJycsXHJcbiAgICAgICAgICAgICAgICB3ZWlnaHQ6IG9wdC53ZWlnaHQgfHwgMCxcclxuICAgICAgICAgICAgICAgIHJlbWFya3NSZXF1aXJlZDogb3B0LnJlbWFya3NSZXF1aXJlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBvcHQuaXNBY3RpdmUgIT09IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY2hpbGRRdWVzdGlvbkxpc3Q6IG9wdC5jaGlsZFF1ZXN0aW9uTGlzdCB8fCBbXSxcclxuICAgICAgICAgICAgfSkpIHx8IFtdLFxyXG4gICAgICAgICAgICBjaGlsZFF1ZXN0aW9uczogcXVlc3Rpb25EYXRhPy5jaGlsZFF1ZXN0aW9ucyB8fCBbXVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVOZXdTZWN0aW9uKHNlcXVlbmNlOiBudW1iZXIpOiBRdWVzdGlvblBhcGVyU2VjdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgIHFwc05hbWU6IFt7XHJcbiAgICAgICAgICAgICAgICBpZDogMCxcclxuICAgICAgICAgICAgICAgIGxhbmd1YWdlOiB7IGNvZGU6ICdFTkcnIH0sXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBgU2VjdGlvbiAke3NlcXVlbmNlfWBcclxuICAgICAgICAgICAgfV0sXHJcbiAgICAgICAgICAgIG9yZGVyTm86IHNlcXVlbmNlLFxyXG4gICAgICAgICAgICBzZWN0aW9uUXVlc3Rpb25zTGlzdDogW10sXHJcbiAgICAgICAgICAgIHRvdGFsTWFya3M6IDAsXHJcbiAgICAgICAgICAgIHRvdGFsUXVlc3Rpb25zOiAwLFxyXG4gICAgICAgICAgICAuLi4odGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50ICYmIHsgdGVuYW50OiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgfSksXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlU2VjdGlvblF1ZXN0aW9uKHF1ZXN0aW9uOiBBc3Nlc3NtZW50UXVlc3Rpb24sIHNlY3Rpb25RdWVzdGlvbjogU2VjdGlvblF1ZXN0aW9uID0ge30pOiBTZWN0aW9uUXVlc3Rpb24ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiBzZWN0aW9uUXVlc3Rpb24/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uLFxyXG4gICAgICAgICAgICBpc01hbmRhdG9yeTogcXVlc3Rpb24/LmlzTWFuZGF0b3J5LFxyXG4gICAgICAgICAgICAuLi4oIXNlY3Rpb25RdWVzdGlvbj8uaWQgJiYgdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50ICYmIHsgdGVuYW50OiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgfSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVRdWVzdGlvblBhcGVyRFRPKHF1ZXN0aW9uUGFwZXI6IEFzc2Vzc21lbnRRdWVzdGlvblBhcGVyLCBxdWVzdGlvbkJhbms6IFJlY29yZDxudW1iZXIsIEFzc2Vzc21lbnRRdWVzdGlvbj4pOiBBc3Nlc3NtZW50UXVlc3Rpb25QYXBlciB7XHJcbiAgICAgICAgaWYgKCFxdWVzdGlvblBhcGVyKSByZXR1cm4gcXVlc3Rpb25QYXBlcjtcclxuXHJcbiAgICAgICAgaWYgKCFxdWVzdGlvblBhcGVyPy5pZCAmJiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQpIHtcclxuICAgICAgICAgICAgcXVlc3Rpb25QYXBlci50ZW5hbnQgPSB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgcXVlc3Rpb25QYXBlci5xdWVzdGlvblBhcGVyU2VjdGlvbkxpc3Q/LmZvckVhY2goKHNlY3Rpb246IGFueSwgc0luZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgc2VjdGlvbi5vcmRlck5vID0gc0luZGV4ICsgMTtcclxuXHJcbiAgICAgICAgICAgIGxldCBzZWN0aW9uTWFya3MgPSAwO1xyXG4gICAgICAgICAgICBsZXQgc2VjdGlvblF1ZXN0aW9uc0NvdW50ID0gMDtcclxuXHJcbiAgICAgICAgICAgIHNlY3Rpb24uc2VjdGlvblF1ZXN0aW9uc0xpc3Q/LmZvckVhY2goKHE6IFNlY3Rpb25RdWVzdGlvbiwgcUluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIHEub3JkZXJObyA9IHFJbmRleCArIDE7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbiA9IHE/LnF1ZXN0aW9uIHx8IHF1ZXN0aW9uQmFua1txPy5xdWVzdGlvbklkIHx8IC0xXTtcclxuICAgICAgICAgICAgICAgIGlmIChxdWVzdGlvbiAmJiBxLmlzQWN0aXZlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25NYXJrcyArPSBOdW1iZXIocXVlc3Rpb24ud2VpZ2h0KSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25RdWVzdGlvbnNDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHNlY3Rpb24udG90YWxNYXJrcyA9IHNlY3Rpb25NYXJrcztcclxuICAgICAgICAgICAgc2VjdGlvbi50b3RhbFF1ZXN0aW9ucyA9IHNlY3Rpb25RdWVzdGlvbnNDb3VudDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHF1ZXN0aW9uUGFwZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVBc3Nlc3NtZW50RFRPKGFzc2Vzc21lbnRJZDogbnVtYmVyLCBxdWVzdGlvblBhcGVyOiBBc3Nlc3NtZW50UXVlc3Rpb25QYXBlcik6IEFzc2Vzc21lbnQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiBhc3Nlc3NtZW50SWQsXHJcbiAgICAgICAgICAgIHRvdGFsbE1hcmtzOiBxdWVzdGlvblBhcGVyPy5xdWVzdGlvblBhcGVyU2VjdGlvbkxpc3Q/LmZpbHRlcigoc2VjdGlvbjogYW55KSA9PiBzZWN0aW9uLmlzQWN0aXZlICE9PSBmYWxzZSkucmVkdWNlKChhY2M6IG51bWJlciwgc2VjdGlvbjogYW55KSA9PiBhY2MgKyAoc2VjdGlvbi50b3RhbE1hcmtzIHx8IDApLCAwKSB8fCAwLFxyXG4gICAgICAgICAgICAuLi4oIWFzc2Vzc21lbnRJZCAmJiB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBjYWNoZUV2aWN0aW9uRW5hYmxlZDogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVBc3Nlc3NtZW50SW5zdGFuY2VEVE8oYXNzZXNzbWVudElkOiBudW1iZXIpOiBBc3Nlc3NtZW50SW5zdGFuY2Uge1xyXG4gICAgICAgIGxldCBkID0gbmV3IERhdGUoKTtcclxuICAgICAgICBsZXQgeWVhciA9IGQuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICBsZXQgbW9udGggPSBkLmdldE1vbnRoKCk7XHJcbiAgICAgICAgbGV0IGRheSA9IGQuZ2V0RGF0ZSgpO1xyXG4gICAgICAgIGxldCBlbmREYXRlID0gbmV3IERhdGUoeWVhciArIDIwLCBtb250aCwgZGF5KTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogMCxcclxuICAgICAgICAgICAgZW5kRGF0ZTogZW5kRGF0ZSxcclxuICAgICAgICAgICAgc3RhcnREYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgICBhc3Nlc3NtZW50OiB7XHJcbiAgICAgICAgICAgICAgICBpZDogYXNzZXNzbWVudElkLFxyXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCAmJiB7IHRlbmFudDogdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50IH0pXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNjaGVkdWxlU3RhdHVzOiB7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnQVNTRVNTTUVOVC5QVUJMSVNIJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFrZXIvc2VydmljZXMvYXNzZXNzbWVudC1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRM0MsTUFBTSxPQUFPLHdCQUF3QjtJQVFqQztRQU5RLHlCQUFvQixHQUFlLEVBQUUsQ0FBQztJQU05QixDQUFDO0lBSmpCLHVCQUF1QixDQUFDLEtBQWlCO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUlELGNBQWMsQ0FBQyxRQUFhLEVBQUUsbUJBQThDLEVBQUU7O1FBRTFFLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFBLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixDQUFFLGVBQWUsS0FBSSxFQUFFLENBQUM7YUFDL0QsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLE1BQVcsRUFBRSxFQUFFO1lBQzlCLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQy9CLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVgsTUFBTSxlQUFlLEdBQUc7WUFDcEIsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDdkgsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FB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VUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnQsIEFzc2Vzc21lbnRJbnN0YW5jZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL2Fzc2Vzc21lbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUXVlc3Rpb25QYXBlclNlY3Rpb24sIFNlY3Rpb25RdWVzdGlvbiwgQXNzZXNzbWVudFF1ZXN0aW9uUGFwZXIgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9xdWVzdGlvbi1wYXBlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBBc3Nlc3NtZW50UXVlc3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9xdWVzdGlvbi5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3Nlc3NtZW50QnVpbGRlclNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgZGVmYXVsdEFzc2Vzc21lbnREVE86IEFzc2Vzc21lbnQgPSB7fTtcclxuXHJcbiAgICBzZXREZWZhdWx0QXNzZXNzbWVudERUTyh2YWx1ZTogQXNzZXNzbWVudCkge1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8gPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIHNldFF1ZXN0aW9uRFRPKGZvcm1EYXRhOiBhbnksIGV4aXN0aW5nUXVlc3Rpb246IEFzc2Vzc21lbnRRdWVzdGlvbiB8IG51bGwgPSB7fSk6IEFzc2Vzc21lbnRRdWVzdGlvbiB7XHJcblxyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQ29uZmlnc01hcCA9IChleGlzdGluZ1F1ZXN0aW9uPy5xdWVzdGlvbkNvbmZpZ3MgfHwgW10pXHJcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYzogYW55LCBjb25maWc6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYWNjW2NvbmZpZy5jb25maWdLZXldID0gY29uZmlnO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICAgICAgfSwge30pO1xyXG5cclxuICAgICAgICBjb25zdCBxdWVzdGlvbkNvbmZpZ3MgPSBbXHJcbiAgICAgICAgICAgIHsgY29uZmlnS2V5OiAnbWluQ2hhcmFjdGVyQ291bnQnLCBjb25maWdWYWx1ZTogZm9ybURhdGEubWluQ2hhcmFjdGVyQ291bnQgPyBTdHJpbmcoZm9ybURhdGEubWluQ2hhcmFjdGVyQ291bnQpIDogbnVsbCB9LFxyXG4gICAgICAgICAgICB7IGNvbmZpZ0tleTogJ21heENoYXJhY3RlckNvdW50JywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1heENoYXJhY3RlckNvdW50ID8gU3RyaW5nKGZvcm1EYXRhLm1heENoYXJhY3RlckNvdW50KSA6IG51bGwgfSxcclxuICAgICAgICAgICAgeyBjb25maWdLZXk6ICdtaW5pbXVtTnVtYmVyT2ZPcHRpb24nLCBjb25maWdWYWx1ZTogZm9ybURhdGEubWluaW11bU51bWJlck9mT3B0aW9uID8gU3RyaW5nKGZvcm1EYXRhLm1pbmltdW1OdW1iZXJPZk9wdGlvbikgOiBudWxsIH0sXHJcbiAgICAgICAgICAgIHsgY29uZmlnS2V5OiAnbWF4aW11bU51bWJlck9mT3B0aW9uJywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1heGltdW1OdW1iZXJPZk9wdGlvbiA/IFN0cmluZyhmb3JtRGF0YS5tYXhpbXVtTnVtYmVyT2ZPcHRpb24pIDogbnVsbCB9LFxyXG4gICAgICAgICAgICB7IGNvbmZpZ0tleTogJ21heEZpbGVTaXplJywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1heEZpbGVTaXplID8gU3RyaW5nKGZvcm1EYXRhLm1heEZpbGVTaXplKSA6IG51bGwgfSxcclxuICAgICAgICAgICAgeyBjb25maWdLZXk6ICdtYXhOb09mRmlsZXMnLCBjb25maWdWYWx1ZTogZm9ybURhdGEubWF4Tm9PZkZpbGVzID8gU3RyaW5nKGZvcm1EYXRhLm1heE5vT2ZGaWxlcykgOiBudWxsIH0sXHJcbiAgICAgICAgICAgIC8vIHsgY29uZmlnS2V5OiAndmlzaWJpbGl0eScsIGNvbmZpZ1ZhbHVlOiBmb3JtRGF0YS52aXNpYmlsaXR5ID8gJ3RydWUnIDogJ2ZhbHNlJyB9XHJcbiAgICAgICAgXS5tYXAoY29uZmlnID0+ICh7XHJcbiAgICAgICAgICAgIGlkOiBleGlzdGluZ0NvbmZpZ3NNYXBbY29uZmlnLmNvbmZpZ0tleV0/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgIC4uLmNvbmZpZyxcclxuICAgICAgICB9KSkuZmlsdGVyKEJvb2xlYW4pO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5leGlzdGluZ1F1ZXN0aW9uLFxyXG4gICAgICAgICAgICBxdWVzdGlvblRleHQ6IFt7XHJcbiAgICAgICAgICAgICAgICBpZDogZXhpc3RpbmdRdWVzdGlvbj8ucXVlc3Rpb25UZXh0Py5bMF0/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgICAgICBsYW5ndWFnZTogeyBjb2RlOiAnRU5HJyB9LFxyXG4gICAgICAgICAgICAgICAgdGV4dDogZm9ybURhdGEucXVlc3Rpb25UZXh0IHx8ICcnXHJcbiAgICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgICBxdWVzdGlvblN1YlRleHQ6IGZvcm1EYXRhLnF1ZXN0aW9uU3ViVGV4dCA/IFt7XHJcbiAgICAgICAgICAgICAgICBpZDogZXhpc3RpbmdRdWVzdGlvbj8ucXVlc3Rpb25TdWJUZXh0Py5bMF0/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgICAgICBsYW5ndWFnZTogeyBjb2RlOiAnRU5HJyB9LFxyXG4gICAgICAgICAgICAgICAgdGV4dDogZm9ybURhdGEucXVlc3Rpb25TdWJUZXh0XHJcbiAgICAgICAgICAgIH1dIDogW10sXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uVHlwZTogeyBjb2RlOiBmb3JtRGF0YS5xdWVzdGlvblR5cGUgfHwgJycgfSxcclxuICAgICAgICAgICAgcXVlc3Rpb25TdWJ0eXBlOiB7IGNvZGU6IGZvcm1EYXRhLnF1ZXN0aW9uU3VidHlwZSB8fCBmb3JtRGF0YS5xdWVzdGlvblR5cGU/LnJlcGxhY2UoJ1FVRVNUSU9OX1RZUEUnLCAnUVVFU1RJT05fU1VCX1RZUEUnKSB8fCAnJyB9LFxyXG4gICAgICAgICAgICBpc01hbmRhdG9yeTogZm9ybURhdGEuaXNNYW5kYXRvcnkgfHwgZmFsc2UsXHJcbiAgICAgICAgICAgIGlzRmlsdGVyRW5hYmxlZDogZm9ybURhdGEuaXNGaWx0ZXJFbmFibGVkIHx8IGZhbHNlLFxyXG4gICAgICAgICAgICB3ZWlnaHQ6IE51bWJlcihmb3JtRGF0YS50b3RhbE1hcmtzIHx8IDApLFxyXG4gICAgICAgICAgICBoaW50VGV4dDogZm9ybURhdGEuaGludFRleHQgfHwgJycsXHJcbiAgICAgICAgICAgIG1lZGlhVXJsOiBmb3JtRGF0YS5xdWVzdGlvbk1lZGlhIHx8ICcnLFxyXG4gICAgICAgICAgICByZXNwb25zZVZhbGlkYXRpb246IGZvcm1EYXRhLmN1c3RvbVJlZ2V4IHx8ICcnLFxyXG4gICAgICAgICAgICBza2lsbENvZGVzOiBmb3JtRGF0YS5za2lsbENvZGVzPy5tYXAoKHNraWxsOiBhbnkpID0+ICh7IGNvZGU6IHNraWxsLCBjbGFzc0NvZGU6IFwiUkVGLkFTU0VTU01FTlRfUVVFU1RJT05fU0tJTExcIiB9KSkgfHwgW10sXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uQ29uZmlncyxcclxuICAgICAgICAgICAgZGVmYXVsdE9wdGlvbnNMaXN0OiAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdPcHRpb25zID0gZXhpc3RpbmdRdWVzdGlvbj8uZGVmYXVsdE9wdGlvbnNMaXN0IHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybU9wdGlvbnMgPSBmb3JtRGF0YS5vcHRpb25zIHx8IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIDEuIFByb2Nlc3MgaXRlbXMgZnJvbSBmb3JtRGF0YSAobmV3IGFuZCB1cGRhdGVkKVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkT3B0aW9ucyA9IGZvcm1PcHRpb25zLm1hcCgob3B0OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ09wdCA9IGV4aXN0aW5nT3B0aW9ucy5maW5kKGVvID0+IGVvLmlkID09PSBvcHQuaWQgJiYgZW8uaWQgIT09IDApIHx8IHt9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5leGlzdGluZ09wdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG9wdC5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1dWlkOiBleGlzdGluZ09wdC51dWlkIHx8IG9wdC51dWlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlck5vOiBpbmRleCArIDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodDogTnVtYmVyKG9wdC53ZWlnaHQgfHwgMCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFya3NSZXF1aXJlZDogb3B0LnJlbWFya3NSZXF1aXJlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU6IG9wdC5pc0FjdGl2ZSAhPT0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihleGlzdGluZ09wdC5vcHRpb25zIHx8IHt9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBvcHQ/Lm9wdGlvbnM/LmlkIHx8IGV4aXN0aW5nT3B0Lm9wdGlvbnM/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25OYW1lOiBbe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBleGlzdGluZ09wdC5vcHRpb25zPy5vcHRpb25OYW1lPy5bMF0/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHsgY29kZTogJ0VORycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBvcHQub3B0aW9uTGFiZWwgfHwgJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCAmJiB7IHRlbmFudDogdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50IH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFF1ZXN0aW9uTGlzdDogb3B0LmNoaWxkUXVlc3Rpb25MaXN0IHx8IGV4aXN0aW5nT3B0LmNoaWxkUXVlc3Rpb25MaXN0IHx8IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4odGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50ICYmIHsgdGVuYW50OiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIDIuIElkZW50aWZ5IGV4aXN0aW5nIG9wdGlvbnMgdGhhdCBhcmUgTk9UIGluIGZvcm1EYXRhIChyZW1vdmVkIGJ5IHVzZXIpIGFuZCBtYXJrIHRoZW0gaW5hY3RpdmVcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1PcHRpb25JZHMgPSBuZXcgU2V0KHByb2Nlc3NlZE9wdGlvbnMubWFwKChvOiBhbnkpID0+IG8uaWQpLmZpbHRlcigoaWQ6IG51bWJlcikgPT4gaWQgIT09IDApKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZWRPcHRpb25zID0gZXhpc3RpbmdPcHRpb25zLmZpbHRlcihlbyA9PiBlby5pZCAmJiAhZm9ybU9wdGlvbklkcy5oYXMoZW8uaWQpKS5tYXAoZW8gPT4gKHsgLi4uZW8sIGlzQWN0aXZlOiBmYWxzZSB9KSk7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5wcm9jZXNzZWRPcHRpb25zLCAuLi5yZW1vdmVkT3B0aW9uc107XHJcbiAgICAgICAgICAgIH0pKCksXHJcbiAgICAgICAgICAgIC4uLighZXhpc3RpbmdRdWVzdGlvbj8uaWQgJiYge1xyXG4gICAgICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8uZG9tYWluICYmIHsgZG9tYWluOiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy5kb21haW4gfSksXHJcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50ICYmIHsgdGVuYW50OiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgfSksXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRRdWVzdGlvbkRUTyhxdWVzdGlvbkRhdGE6IEFzc2Vzc21lbnRRdWVzdGlvbikge1xyXG4gICAgICAgIGNvbnN0IGdldENvbmZpZyA9IChrZXk6IHN0cmluZykgPT4gcXVlc3Rpb25EYXRhLnF1ZXN0aW9uQ29uZmlncz8uZmluZChjID0+IGMuY29uZmlnS2V5ID09PSBrZXkpPy5jb25maWdWYWx1ZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHF1ZXN0aW9uRGF0YS5pZCxcclxuICAgICAgICAgICAgcXVlc3Rpb25UZXh0OiBxdWVzdGlvbkRhdGEucXVlc3Rpb25UZXh0Py5bMF0/LnRleHQgfHwgJycsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uU3ViVGV4dDogcXVlc3Rpb25EYXRhLnF1ZXN0aW9uU3ViVGV4dD8uWzBdPy50ZXh0IHx8ICcnLFxyXG4gICAgICAgICAgICBxdWVzdGlvblR5cGU6IHF1ZXN0aW9uRGF0YS5xdWVzdGlvblR5cGU/LmNvZGUgfHwgJycsXHJcbiAgICAgICAgICAgIGlzTWFuZGF0b3J5OiBxdWVzdGlvbkRhdGEuaXNNYW5kYXRvcnkgfHwgZmFsc2UsXHJcbiAgICAgICAgICAgIGlzRmlsdGVyRW5hYmxlZDogcXVlc3Rpb25EYXRhLmlzRmlsdGVyRW5hYmxlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgdG90YWxNYXJrczogcXVlc3Rpb25EYXRhLndlaWdodCB8fCAwLFxyXG4gICAgICAgICAgICBoaW50VGV4dDogcXVlc3Rpb25EYXRhLmhpbnRUZXh0IHx8ICcnLFxyXG4gICAgICAgICAgICBxdWVzdGlvbk1lZGlhOiBxdWVzdGlvbkRhdGEubWVkaWFVcmwgfHwgJycsXHJcbiAgICAgICAgICAgIG1pbkNoYXJhY3RlckNvdW50OiBnZXRDb25maWcoJ21pbkNoYXJhY3RlckNvdW50JykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtaW5DaGFyYWN0ZXJDb3VudCcpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIG1heENoYXJhY3RlckNvdW50OiBnZXRDb25maWcoJ21heENoYXJhY3RlckNvdW50JykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtYXhDaGFyYWN0ZXJDb3VudCcpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIG1pbmltdW1OdW1iZXJPZk9wdGlvbjogZ2V0Q29uZmlnKCdtaW5pbXVtTnVtYmVyT2ZPcHRpb24nKSA/IE51bWJlcihnZXRDb25maWcoJ21pbmltdW1OdW1iZXJPZk9wdGlvbicpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIG1heGltdW1OdW1iZXJPZk9wdGlvbjogZ2V0Q29uZmlnKCdtYXhpbXVtTnVtYmVyT2ZPcHRpb24nKSA/IE51bWJlcihnZXRDb25maWcoJ21heGltdW1OdW1iZXJPZk9wdGlvbicpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiBnZXRDb25maWcoJ21heEZpbGVTaXplJykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtYXhGaWxlU2l6ZScpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIG1heE5vT2ZGaWxlczogZ2V0Q29uZmlnKCdtYXhOb09mRmlsZXMnKSA/IE51bWJlcihnZXRDb25maWcoJ21heE5vT2ZGaWxlcycpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIC8vIHZpc2liaWxpdHk6IGdldENvbmZpZygndmlzaWJpbGl0eScpID09PSAndHJ1ZScsXHJcbiAgICAgICAgICAgIGN1c3RvbVJlZ2V4OiBxdWVzdGlvbkRhdGE/LnJlc3BvbnNlVmFsaWRhdGlvbixcclxuICAgICAgICAgICAgc2tpbGxDb2RlczogcXVlc3Rpb25EYXRhPy5za2lsbENvZGVzPy5tYXAoKHNraWxsOiBhbnkpID0+IHNraWxsLmNvZGUpIHx8IFtdLFxyXG4gICAgICAgICAgICBvcHRpb25zOiBxdWVzdGlvbkRhdGEuZGVmYXVsdE9wdGlvbnNMaXN0Py5tYXAob3B0ID0+ICh7XHJcbiAgICAgICAgICAgICAgICBpZDogb3B0LmlkLFxyXG4gICAgICAgICAgICAgICAgdXVpZDogb3B0LnV1aWQsXHJcbiAgICAgICAgICAgICAgICBvcHRpb25MYWJlbDogb3B0Lm9wdGlvbnM/Lm9wdGlvbk5hbWU/LlswXT8udGV4dCB8fCAnJyxcclxuICAgICAgICAgICAgICAgIHdlaWdodDogb3B0LndlaWdodCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgcmVtYXJrc1JlcXVpcmVkOiBvcHQucmVtYXJrc1JlcXVpcmVkIHx8IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaXNBY3RpdmU6IG9wdC5pc0FjdGl2ZSAhPT0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBjaGlsZFF1ZXN0aW9uTGlzdDogb3B0LmNoaWxkUXVlc3Rpb25MaXN0IHx8IFtdLFxyXG4gICAgICAgICAgICB9KSkgfHwgW10sXHJcbiAgICAgICAgICAgIGNoaWxkUXVlc3Rpb25zOiBxdWVzdGlvbkRhdGE/LmNoaWxkUXVlc3Rpb25zIHx8IFtdXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZU5ld1NlY3Rpb24oc2VxdWVuY2U6IG51bWJlcik6IFF1ZXN0aW9uUGFwZXJTZWN0aW9uIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogMCxcclxuICAgICAgICAgICAgcXBzTmFtZTogW3tcclxuICAgICAgICAgICAgICAgIGlkOiAwLFxyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHsgY29kZTogJ0VORycgfSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGBTZWN0aW9uICR7c2VxdWVuY2V9YFxyXG4gICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgb3JkZXJObzogc2VxdWVuY2UsXHJcbiAgICAgICAgICAgIHNlY3Rpb25RdWVzdGlvbnNMaXN0OiBbXSxcclxuICAgICAgICAgICAgdG90YWxNYXJrczogMCxcclxuICAgICAgICAgICAgdG90YWxRdWVzdGlvbnM6IDAsXHJcbiAgICAgICAgICAgIC4uLih0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgJiYgeyB0ZW5hbnQ6IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCB9KSxcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVTZWN0aW9uUXVlc3Rpb24ocXVlc3Rpb246IEFzc2Vzc21lbnRRdWVzdGlvbiwgc2VjdGlvblF1ZXN0aW9uOiBTZWN0aW9uUXVlc3Rpb24gPSB7fSk6IFNlY3Rpb25RdWVzdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHNlY3Rpb25RdWVzdGlvbj8uaWQgfHwgMCxcclxuICAgICAgICAgICAgcXVlc3Rpb24sXHJcbiAgICAgICAgICAgIGlzTWFuZGF0b3J5OiBxdWVzdGlvbj8uaXNNYW5kYXRvcnksXHJcbiAgICAgICAgICAgIC4uLighc2VjdGlvblF1ZXN0aW9uPy5pZCAmJiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgJiYgeyB0ZW5hbnQ6IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCB9KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZVF1ZXN0aW9uUGFwZXJEVE8ocXVlc3Rpb25QYXBlcjogQXNzZXNzbWVudFF1ZXN0aW9uUGFwZXIsIHF1ZXN0aW9uQmFuazogUmVjb3JkPG51bWJlciwgQXNzZXNzbWVudFF1ZXN0aW9uPik6IEFzc2Vzc21lbnRRdWVzdGlvblBhcGVyIHtcclxuICAgICAgICBpZiAoIXF1ZXN0aW9uUGFwZXIpIHJldHVybiBxdWVzdGlvblBhcGVyO1xyXG5cclxuICAgICAgICBpZiAoIXF1ZXN0aW9uUGFwZXI/LmlkICYmIHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCkge1xyXG4gICAgICAgICAgICBxdWVzdGlvblBhcGVyLnRlbmFudCA9IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudDtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBxdWVzdGlvblBhcGVyLnF1ZXN0aW9uUGFwZXJTZWN0aW9uTGlzdD8uZm9yRWFjaCgoc2VjdGlvbjogYW55LCBzSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICBzZWN0aW9uLm9yZGVyTm8gPSBzSW5kZXggKyAxO1xyXG5cclxuICAgICAgICAgICAgbGV0IHNlY3Rpb25NYXJrcyA9IDA7XHJcbiAgICAgICAgICAgIGxldCBzZWN0aW9uUXVlc3Rpb25zQ291bnQgPSAwO1xyXG5cclxuICAgICAgICAgICAgc2VjdGlvbi5zZWN0aW9uUXVlc3Rpb25zTGlzdD8uZm9yRWFjaCgocTogU2VjdGlvblF1ZXN0aW9uLCBxSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcS5vcmRlck5vID0gcUluZGV4ICsgMTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gcT8ucXVlc3Rpb24gfHwgcXVlc3Rpb25CYW5rW3E/LnF1ZXN0aW9uSWQgfHwgLTFdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXN0aW9uICYmIHEuaXNBY3RpdmUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbk1hcmtzICs9IE51bWJlcihxdWVzdGlvbi53ZWlnaHQpIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvblF1ZXN0aW9uc0NvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgc2VjdGlvbi50b3RhbE1hcmtzID0gc2VjdGlvbk1hcmtzO1xyXG4gICAgICAgICAgICBzZWN0aW9uLnRvdGFsUXVlc3Rpb25zID0gc2VjdGlvblF1ZXN0aW9uc0NvdW50O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gcXVlc3Rpb25QYXBlcjtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUFzc2Vzc21lbnREVE8oYXNzZXNzbWVudElkOiBudW1iZXIsIHF1ZXN0aW9uUGFwZXI6IEFzc2Vzc21lbnRRdWVzdGlvblBhcGVyKTogQXNzZXNzbWVudCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IGFzc2Vzc21lbnRJZCxcclxuICAgICAgICAgICAgdG90YWxsTWFya3M6IHF1ZXN0aW9uUGFwZXI/LnF1ZXN0aW9uUGFwZXJTZWN0aW9uTGlzdD8uZmlsdGVyKChzZWN0aW9uOiBhbnkpID0+IHNlY3Rpb24uaXNBY3RpdmUgIT09IGZhbHNlKS5yZWR1Y2UoKGFjYzogbnVtYmVyLCBzZWN0aW9uOiBhbnkpID0+IGFjYyArIChzZWN0aW9uLnRvdGFsTWFya3MgfHwgMCksIDApIHx8IDAsXHJcbiAgICAgICAgICAgIC4uLighYXNzZXNzbWVudElkICYmIHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE9cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhY2hlRXZpY3Rpb25FbmFibGVkOiB0cnVlXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUFzc2Vzc21lbnRJbnN0YW5jZURUTyhhc3Nlc3NtZW50SWQ6IG51bWJlciwgcHJlZGVmaW5lZEFzc2Vzc21lbnRJbnN0YW5jZTogQXNzZXNzbWVudEluc3RhbmNlKTogQXNzZXNzbWVudEluc3RhbmNlIHtcclxuICAgICAgICBsZXQgZCA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgbGV0IHllYXIgPSBkLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgbGV0IG1vbnRoID0gZC5nZXRNb250aCgpO1xyXG4gICAgICAgIGxldCBkYXkgPSBkLmdldERhdGUoKTtcclxuICAgICAgICBsZXQgZW5kRGF0ZSA9IG5ldyBEYXRlKHllYXIgKyAyMCwgbW9udGgsIGRheSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgIGVuZERhdGU6IGVuZERhdGUsXHJcbiAgICAgICAgICAgIHN0YXJ0RGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgICAgICAgYXNzZXNzbWVudDoge1xyXG4gICAgICAgICAgICAgICAgaWQ6IGFzc2Vzc21lbnRJZCxcclxuICAgICAgICAgICAgICAgIC4uLih0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgJiYgeyB0ZW5hbnQ6IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCB9KVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzY2hlZHVsZVN0YXR1czoge1xyXG4gICAgICAgICAgICAgICAgY29kZTogJ0FTU0VTU01FTlQuUFVCTElTSCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLi4ucHJlZGVmaW5lZEFzc2Vzc21lbnRJbnN0YW5jZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==