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.
- package/README.md +1 -0
- package/bundles/commons-assessment.umd.js +30 -37
- package/bundles/commons-assessment.umd.js.map +1 -1
- package/esm2015/lib/modules/assessment-maker/assessment-maker.component.js +6 -3
- package/esm2015/lib/modules/assessment-maker/services/assessment-builder.service.js +5 -11
- package/esm2015/lib/modules/assessment-taker/assessment-taker.component.js +19 -20
- package/esm2015/lib/modules/assessment-taker/services/response-builder.service.js +4 -7
- package/fesm2015/commons-assessment.js +30 -37
- package/fesm2015/commons-assessment.js.map +1 -1
- package/lib/modules/assessment-maker/assessment-maker.component.d.ts +3 -2
- package/lib/modules/assessment-maker/services/assessment-builder.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -85,13 +85,13 @@ export class ResponseBuilderService {
|
|
|
85
85
|
}
|
|
86
86
|
if (newAns.attachmentResponseList && existingAns.attachmentResponseList) {
|
|
87
87
|
newAns.attachmentResponseList.forEach((nItem) => {
|
|
88
|
-
const existingItem = existingAns.attachmentResponseList.find((eItem) => eItem.
|
|
88
|
+
const existingItem = existingAns.attachmentResponseList.find((eItem) => eItem.id === nItem.id);
|
|
89
89
|
if (existingItem) {
|
|
90
90
|
nItem.id = existingItem.id;
|
|
91
91
|
}
|
|
92
92
|
});
|
|
93
93
|
existingAns.attachmentResponseList.forEach((eItem) => {
|
|
94
|
-
const stillExists = newAns.attachmentResponseList.find((nItem) => nItem.
|
|
94
|
+
const stillExists = newAns.attachmentResponseList.find((nItem) => nItem.id === eItem.id);
|
|
95
95
|
if (!stillExists) {
|
|
96
96
|
newAns.attachmentResponseList.push(Object.assign(Object.assign({}, eItem), { isActive: false }));
|
|
97
97
|
}
|
|
@@ -192,10 +192,7 @@ export class ResponseBuilderService {
|
|
|
192
192
|
const attachmentResponseList = [];
|
|
193
193
|
let valArray = Array.isArray(val) ? val : (val ? [val] : []);
|
|
194
194
|
valArray.forEach((opt) => {
|
|
195
|
-
attachmentResponseList.push(
|
|
196
|
-
id: 0,
|
|
197
|
-
attachmentId: opt === null || opt === void 0 ? void 0 : opt.id
|
|
198
|
-
});
|
|
195
|
+
attachmentResponseList.push(opt);
|
|
199
196
|
});
|
|
200
197
|
questionResponseObj = { attachmentResponseList };
|
|
201
198
|
}
|
|
@@ -243,4 +240,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
243
240
|
providedIn: 'root'
|
|
244
241
|
}]
|
|
245
242
|
}], ctorParameters: function () { return []; } });
|
|
246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UtYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL3NlcnZpY2VzL3Jlc3BvbnNlLWJ1aWxkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFRbEQsTUFBTSxPQUFPLHNCQUFzQjtJQUUvQixnQkFBZ0IsQ0FBQztJQUVqQixvQkFBb0IsQ0FDaEIsZ0JBQThDLEVBQzlDLGNBQXVDLEVBQ3ZDLGlCQUFnRSxFQUNoRSxZQUFnRCxFQUNoRCxNQUFjOztRQUVkLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ25ELGNBQWMsQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFFM0MsTUFBQSxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsd0JBQXdCLDBDQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFOztZQUMvRCxNQUFNLHVCQUF1QixHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0YsSUFBSSx1QkFBdUIsRUFBRTtnQkFDekIsTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQUMsU0FBUyxDQUFDO2dCQUVwRCxNQUFBLE9BQU8sQ0FBQyxvQkFBb0IsMENBQUUsT0FBTyxDQUFDLENBQUMsZUFBZ0MsRUFBRSxFQUFFOztvQkFDdkUsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUEsZUFBZSxhQUFmLGVBQWUsdUJBQWYs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QyxRQUFRLENBQUMsS0FBSyxDQUFDO2lCQUNoQyxDQUFDLENBQUM7YUFDTjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTztZQUNILDRCQUE0QixFQUFFLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixDQUFFLEVBQUU7WUFDbEQsU0FBUyxFQUFFLFNBQVM7U0FDdkIsQ0FBQztJQUNOLENBQUM7O29IQXBTUSxzQkFBc0I7d0hBQXRCLHNCQUFzQixjQUZuQixNQUFNOzRGQUVULHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgZGVlcENsb25lIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzJztcclxuaW1wb3J0IHsgQXNzZXNzbWVudFF1ZXN0aW9uUGFwZXIsIFNlY3Rpb25RdWVzdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL3F1ZXN0aW9uLXBhcGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRJbnN0YW5jZUFzc2Vzc2VEVE8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9hc3Nlc3NtZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRRdWVzdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL3F1ZXN0aW9uLmludGVyZmFjZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3BvbnNlQnVpbGRlclNlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gICAgYnVpbGRSZXNwb25zZVBheWxvYWQoXHJcbiAgICAgICAgYXNzZXNzZWVSZXNwb25zZTogQXNzZXNzbWVudEluc3RhbmNlQXNzZXNzZURUTyxcclxuICAgICAgICBhc3Nlc3NtZW50RGF0YTogQXNzZXNzbWVudFF1ZXN0aW9uUGFwZXIsXHJcbiAgICAgICAgc2VjdGlvbkZvcm1Hcm91cHM6IHsgc2VjdGlvbklkOiBudW1iZXI7IGZvcm1Hcm91cDogRm9ybUdyb3VwIH1bXSxcclxuICAgICAgICBxdWVzdGlvbkJhbms6IFJlY29yZDxudW1iZXIsIEFzc2Vzc21lbnRRdWVzdGlvbj4sXHJcbiAgICAgICAgdGVuYW50OiBudW1iZXJcclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RQYXlsb2FkID0gZGVlcENsb25lKGFzc2Vzc2VlUmVzcG9uc2UpO1xyXG4gICAgICAgIHJlcXVlc3RQYXlsb2FkLmFpYWRlZmF1bHRSZXNwb25zZUxpc3QgPSBbXTtcclxuXHJcbiAgICAgICAgYXNzZXNzbWVudERhdGE/LnF1ZXN0aW9uUGFwZXJTZWN0aW9uTGlzdD8uZm9yRWFjaCgoc2VjdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25Gb3JtR3JvdXBXcmFwcGVyID0gc2VjdGlvbkZvcm1Hcm91cHMuZmluZCgoczogYW55KSA9PiBzLnNlY3Rpb25JZCA9PT0gc2VjdGlvbi5pZCk7XHJcbiAgICAgICAgICAgIGlmIChzZWN0aW9uRm9ybUdyb3VwV3JhcHBlcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gc2VjdGlvbkZvcm1Hcm91cFdyYXBwZXIuZm9ybUdyb3VwO1xyXG5cclxuICAgICAgICAgICAgICAgIHNlY3Rpb24uc2VjdGlvblF1ZXN0aW9uc0xpc3Q/LmZvckVhY2goKHNlY3Rpb25RdWVzdGlvbjogU2VjdGlvblF1ZXN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlcyA9IHF1ZXN0aW9uQmFua1tzZWN0aW9uUXVlc3Rpb24/LnF1ZXN0aW9uSWQgfHwgLTFdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcXVlcykgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWVzUmVzT2JqID0gdGhpcy5nZXRRdWVzdGlvblJlc3BvbnNlT2JqKGZvcm1Hcm91cCwgcXVlcz8uaWQsIHF1ZXN0aW9uQmFuayk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25SZXNwb25zZU9iaiA9IHF1ZXNSZXNPYmoucXVlc3Rpb25SZXNwb25zZU9iajtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXN0aW9uUmVzcG9uc2VPYmopIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcU9iaiA9IE9iamVjdC5hc3NpZ24oe30sIHF1ZXN0aW9uUmVzcG9uc2VPYmopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVxT2JqLmRlZmF1bHRPcHRpb247XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0FucyA9IGFzc2Vzc2VlUmVzcG9uc2UuYWlhZGVmYXVsdFJlc3BvbnNlTGlzdD8uZmluZCgoYTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5zZWN0aW9uUXVlc3Rpb24/LnF1ZXN0aW9uSWQgPT09IHNlY3Rpb25RdWVzdGlvbi5xdWVzdGlvbklkICYmICFhLmNoaWxkUXVlc3Rpb25JZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXJnZUV4aXN0aW5nSWRzKHJlcU9iaiwgZXhpc3RpbmdBbnMpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFleGlzdGluZ0FucyAmJiByZXFPYmouZHJvYmplY3RpdmVyZXNwb25zZUxpc3QgJiYgcmVxT2JqLmRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nQW5zICYmIHJlcU9iai5hdHRhY2htZW50UmVzcG9uc2VMaXN0ICYmIHJlcU9iai5hdHRhY2htZW50UmVzcG9uc2VMaXN0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFBheWxvYWQuYWlhZGVmYXVsdFJlc3BvbnNlTGlzdD8ucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXFPYmosXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZXhpc3RpbmdBbnM/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25RdWVzdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbmFudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtzOiBmb3JtR3JvdXAuZ2V0KGAke3F1ZXMuaWR9X21hcmtzYCk/LnZhbHVlICE9IG51bGwgPyBOdW1iZXIoZm9ybUdyb3VwLmdldChgJHtxdWVzLmlkfV9tYXJrc2ApPy52YWx1ZSkgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXNSZXNPYmouY2hpbGRRdWVzUmVzT2JqPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXNSZXNPYmouY2hpbGRRdWVzUmVzT2JqLmZvckVhY2goKGNoaWxkRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRPYmogPSBjaGlsZERhdGE/LnF1ZXN0aW9uUmVzcG9uc2VPYmo7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGREZXRhaWxzID0gY2hpbGREYXRhPy5jaGlsZFF1ZXN0aW9uRGV0YWlscztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkT2JqIHx8ICFjaGlsZERldGFpbHMpIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNwZWNpZmljQ2hpbGRSZXFPYmogPSBPYmplY3QuYXNzaWduKHt9LCBjaGlsZE9iaik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNwZWNpZmljQ2hpbGRSZXFPYmouZGVmYXVsdE9wdGlvbjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdDaGlsZEFucyA9IGFzc2Vzc2VlUmVzcG9uc2UuYWlhZGVmYXVsdFJlc3BvbnNlTGlzdD8uZmluZCgoYTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmNoaWxkUXVlc3Rpb25JZCA9PT0gY2hpbGREZXRhaWxzLmlkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuY2hpbGRRdWVzdGlvblBhcmVudFF1ZXN0aW9uSWQgPT09IHNlY3Rpb25RdWVzdGlvbi5xdWVzdGlvbklkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXJnZUV4aXN0aW5nSWRzKHNwZWNpZmljQ2hpbGRSZXFPYmosIGV4aXN0aW5nQ2hpbGRBbnMpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nQ2hpbGRBbnMgJiYgc3BlY2lmaWNDaGlsZFJlcU9iai5kcm9iamVjdGl2ZXJlc3BvbnNlTGlzdCAmJiBzcGVjaWZpY0NoaWxkUmVxT2JqLmRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdDaGlsZEFucyAmJiBzcGVjaWZpY0NoaWxkUmVxT2JqLmF0dGFjaG1lbnRSZXNwb25zZUxpc3QgJiYgc3BlY2lmaWNDaGlsZFJlcU9iai5hdHRhY2htZW50UmVzcG9uc2VMaXN0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0UGF5bG9hZC5haWFkZWZhdWx0UmVzcG9uc2VMaXN0Py5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRRdWVzdGlvbklkOiBjaGlsZERldGFpbHMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkUXVlc3Rpb25QYXJlbnRRdWVzdGlvbklkOiBzZWN0aW9uUXVlc3Rpb24ucXVlc3Rpb25JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGREZWZhdWx0T3B0aW9uSWQ6IGNoaWxkRGF0YS5wYXJlbnRPcHRpb25JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3BlY2lmaWNDaGlsZFJlcU9iaixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGV4aXN0aW5nQ2hpbGRBbnM/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uUXVlc3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbmFudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya3M6IGZvcm1Hcm91cC5nZXQoYCR7Y2hpbGREZXRhaWxzLmlkfV9tYXJrc2ApPy52YWx1ZSAhPSBudWxsID8gTnVtYmVyKGZvcm1Hcm91cC5nZXQoYCR7Y2hpbGREZXRhaWxzLmlkfV9tYXJrc2ApPy52YWx1ZSkgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXF1ZXN0UGF5bG9hZDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1lcmdlRXhpc3RpbmdJZHMobmV3QW5zOiBhbnksIGV4aXN0aW5nQW5zOiBhbnkpIHtcclxuICAgICAgICBpZiAoIWV4aXN0aW5nQW5zKSByZXR1cm47XHJcblxyXG4gICAgICAgIGlmIChuZXdBbnMuZHJzdWJqZWN0aXZlcmVzcG9uc2VMaXN0ICYmIGV4aXN0aW5nQW5zLmRyc3ViamVjdGl2ZXJlc3BvbnNlTGlzdCkge1xyXG4gICAgICAgICAgICBuZXdBbnMuZHJzdWJqZWN0aXZlcmVzcG9uc2VMaXN0LmZvckVhY2goKG5JdGVtOiBhbnksIGlkeDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdBbnMuZHJzdWJqZWN0aXZlcmVzcG9uc2VMaXN0W2lkeF0pIHtcclxuICAgICAgICAgICAgICAgICAgICBuSXRlbS5pZCA9IGV4aXN0aW5nQW5zLmRyc3ViamVjdGl2ZXJlc3BvbnNlTGlzdFtpZHhdLmlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5ld0Fucy5kcm9iamVjdGl2ZXJlc3BvbnNlTGlzdCAmJiBleGlzdGluZ0Fucy5kcm9iamVjdGl2ZXJlc3BvbnNlTGlzdCkge1xyXG4gICAgICAgICAgICBuZXdBbnMuZHJvYmplY3RpdmVyZXNwb25zZUxpc3QuZm9yRWFjaCgobkl0ZW06IGFueSwgaWR4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSXRlbSA9IGV4aXN0aW5nQW5zLmRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0LmZpbmQoKGVJdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgZUl0ZW0uZGVmYXVsdE9wdGlvbj8ub3B0aW9ucz8uaWQgPT09IG5JdGVtLmRlZmF1bHRPcHRpb24/Lm9wdGlvbnM/LmlkXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5JdGVtLmlkID0gZXhpc3RpbmdJdGVtLmlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGV4aXN0aW5nQW5zLmRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0LmZvckVhY2goKGVJdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0aWxsRXhpc3RzID0gbmV3QW5zLmRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0LmZpbmQoKG5JdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgbkl0ZW0uZGVmYXVsdE9wdGlvbj8ub3B0aW9ucz8uaWQgPT09IGVJdGVtLmRlZmF1bHRPcHRpb24/Lm9wdGlvbnM/LmlkXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzdGlsbEV4aXN0cykge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0Fucy5kcm9iamVjdGl2ZXJlc3BvbnNlTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZUl0ZW0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGlsbEV4aXN0cy5pc0FjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG5ld0Fucy5hdHRhY2htZW50UmVzcG9uc2VMaXN0ICYmIGV4aXN0aW5nQW5zLmF0dGFjaG1lbnRSZXNwb25zZUxpc3QpIHtcclxuICAgICAgICAgICAgbmV3QW5zLmF0dGFjaG1lbnRSZXNwb25zZUxpc3QuZm9yRWFjaCgobkl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdJdGVtID0gZXhpc3RpbmdBbnMuYXR0YWNobWVudFJlc3BvbnNlTGlzdC5maW5kKChlSXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIGVJdGVtLmF0dGFjaG1lbnRJZCA9PT0gbkl0ZW0uYXR0YWNobWVudElkXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5JdGVtLmlkID0gZXhpc3RpbmdJdGVtLmlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGV4aXN0aW5nQW5zLmF0dGFjaG1lbnRSZXNwb25zZUxpc3QuZm9yRWFjaCgoZUl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RpbGxFeGlzdHMgPSBuZXdBbnMuYXR0YWNobWVudFJlc3BvbnNlTGlzdC5maW5kKChuSXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIG5JdGVtLmF0dGFjaG1lbnRJZCA9PT0gZUl0ZW0uYXR0YWNobWVudElkXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzdGlsbEV4aXN0cykge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0Fucy5hdHRhY2htZW50UmVzcG9uc2VMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5lSXRlbSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0aWxsRXhpc3RzLmlzQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0UXVlc3Rpb25SZXNwb25zZU9iaihmb3JtR3JvdXA6IGFueSwgcXVlc0lkOiBudW1iZXIgPSAtMSwgcXVlc3Rpb25CYW5rOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uRGV0YWlscyA9IHF1ZXN0aW9uQmFua1txdWVzSWRdO1xyXG4gICAgICAgIGlmICghcXVlc3Rpb25EZXRhaWxzKSByZXR1cm4geyBxdWVzdGlvblJlc3BvbnNlT2JqOiBudWxsLCBjaGlsZFF1ZXNSZXNPYmo6IFtdIH07XHJcblxyXG4gICAgICAgIGxldCBxdWVzdGlvblJlc3BvbnNlT2JqOiBhbnkgPSB7fTtcclxuICAgICAgICBsZXQgY2hpbGRRdWVzUmVzT2JqOiBhbnkgPSBbXTtcclxuICAgICAgICBjb25zdCByYXdWYWx1ZXMgPSBmb3JtR3JvdXA/LmdldFJhd1ZhbHVlID8gZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkgOiAoZm9ybUdyb3VwPy52YWx1ZSB8fCB7fSk7XHJcbiAgICAgICAgY29uc3QgdmFsID0gcmF3VmFsdWVzW3F1ZXNJZF07XHJcblxyXG4gICAgICAgIGNvbnN0IHFUeXBlID0gcXVlc3Rpb25EZXRhaWxzLnF1ZXN0aW9uVHlwZT8uY29kZTtcclxuXHJcbiAgICAgICAgLy8gaWYgKCF2YWwgJiYgcVR5cGUgIT09ICdRVUVTVElPTl9UWVBFLk1VTFRJX1NFTEVDVCcgJiYgcVR5cGUgIT09ICdRVUVTVElPTl9UWVBFLlBSRUZFUkVOQ0UnICYmIHFUeXBlICE9PSAnUVVFU1RJT05fVFlQRS5GSUxFX1VQTE9BRCcpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIHsgcXVlc3Rpb25SZXNwb25zZU9iajogbnVsbCwgY2hpbGRRdWVzUmVzT2JqOiBbXSB9O1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgaWYgKHFUeXBlID09PSAnUVVFU1RJT05fVFlQRS5PQkpFQ1RJVkUnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gcXVlc3Rpb25EZXRhaWxzPy5kZWZhdWx0T3B0aW9uc0xpc3QgfHwgW107XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gZGVmYXVsdE9wdGlvbnM/LmZpbmQoKGk6IGFueSkgPT4gaT8ub3B0aW9ucz8uaWQgPT09IHZhbD8uaWQpIHx8IHt9O1xyXG5cclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBxdWVzdGlvblJlc3BvbnNlT2JqID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbklkOiBzZWxlY3RlZE9wdGlvbj8ub3B0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9uOiBzZWxlY3RlZE9wdGlvblxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb24ucmVtYXJrc1JlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVtYXJrc1ZhbCA9IHJhd1ZhbHVlc1tgJHtxdWVzSWR9X3JlbWFya3NfJHtzZWxlY3RlZE9wdGlvbi5pZH1gXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVtYXJrc1ZhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvblJlc3BvbnNlT2JqLnJlbWFya3MgPSByZW1hcmtzVmFsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFF1ZXNJZHMgPSBzZWxlY3RlZE9wdGlvbi5jaGlsZFF1ZXN0aW9uTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgICAgIGNoaWxkUXVlc0lkcy5mb3JFYWNoKChjaGlsZElkOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFJlc3BvbnNlID0gdGhpcy5nZXRRdWVzdGlvblJlc3BvbnNlT2JqKGZvcm1Hcm91cCwgY2hpbGRJZCwgcXVlc3Rpb25CYW5rKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRSZXNwb25zZT8ucXVlc3Rpb25SZXNwb25zZU9iaikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFF1ZXNSZXNPYmoucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvblJlc3BvbnNlT2JqOiBjaGlsZFJlc3BvbnNlLnF1ZXN0aW9uUmVzcG9uc2VPYmosXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFF1ZXN0aW9uRGV0YWlsczogcXVlc3Rpb25CYW5rW2NoaWxkSWRdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50T3B0aW9uSWQ6IHNlbGVjdGVkT3B0aW9uLm9wdGlvbnMuaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFJlc3BvbnNlLmNoaWxkUXVlc1Jlc09iaj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFF1ZXNSZXNPYmogPSBjaGlsZFF1ZXNSZXNPYmouY29uY2F0KGNoaWxkUmVzcG9uc2UuY2hpbGRRdWVzUmVzT2JqKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25SZXNwb25zZU9iaiA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHFUeXBlID09PSAnUVVFU1RJT05fVFlQRS5NVUxUSV9TRUxFQ1QnIHx8IHFUeXBlID09PSAnUVVFU1RJT05fVFlQRS5QUkVGRVJFTkNFJykge1xyXG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHF1ZXN0aW9uRGV0YWlscy5kZWZhdWx0T3B0aW9uc0xpc3QgfHwgW107XHJcbiAgICAgICAgICAgIGNvbnN0IGRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgICAgICAgbGV0IHZhbEFycmF5ID0gQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsIDogKHZhbCA/IFt2YWxdIDogW10pO1xyXG5cclxuICAgICAgICAgICAgdmFsQXJyYXkuZm9yRWFjaCgob3B0OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gZGVmYXVsdE9wdGlvbnMuZmluZCgoaTogYW55KSA9PiBpLm9wdGlvbnM/LmlkID09PSBvcHQuaWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqOiBhbnkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0T3B0aW9uOiBzZWxlY3RlZE9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChxVHlwZSA9PT0gJ1FVRVNUSU9OX1RZUEUuUFJFRkVSRU5DRScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLm9yZGVyTm8gPSBpbmRleCArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb24ucmVtYXJrc1JlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbWFya3NWYWwgPSByYXdWYWx1ZXNbYCR7cXVlc0lkfV9yZW1hcmtzXyR7c2VsZWN0ZWRPcHRpb24uaWR9YF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZW1hcmtzVmFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmoucmVtYXJrcyA9IHJlbWFya3NWYWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0LnB1c2gob2JqKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRRdWVzSWRzID0gc2VsZWN0ZWRPcHRpb24uY2hpbGRRdWVzdGlvbkxpc3QgfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRRdWVzSWRzLmZvckVhY2goKGNoaWxkSWQ6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFJlc3BvbnNlID0gdGhpcy5nZXRRdWVzdGlvblJlc3BvbnNlT2JqKGZvcm1Hcm91cCwgY2hpbGRJZCwgcXVlc3Rpb25CYW5rKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkUmVzcG9uc2U/LnF1ZXN0aW9uUmVzcG9uc2VPYmopIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkUXVlc1Jlc09iai5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvblJlc3BvbnNlT2JqOiBjaGlsZFJlc3BvbnNlLnF1ZXN0aW9uUmVzcG9uc2VPYmosXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRRdWVzdGlvbkRldGFpbHM6IHF1ZXN0aW9uQmFua1tjaGlsZElkXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRPcHRpb25JZDogc2VsZWN0ZWRPcHRpb24ub3B0aW9ucy5pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRSZXNwb25zZS5jaGlsZFF1ZXNSZXNPYmo/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkUXVlc1Jlc09iaiA9IGNoaWxkUXVlc1Jlc09iai5jb25jYXQoY2hpbGRSZXNwb25zZS5jaGlsZFF1ZXNSZXNPYmopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcXVlc3Rpb25SZXNwb25zZU9iaiA9IHsgZHJvYmplY3RpdmVyZXNwb25zZUxpc3QgfTtcclxuICAgICAgICB9IGVsc2UgaWYgKHFUeXBlID09PSAnUVVFU1RJT05fVFlQRS5GSUxFX1VQTE9BRCcpIHtcclxuICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudFJlc3BvbnNlTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgICAgICAgICAgIGxldCB2YWxBcnJheSA9IEFycmF5LmlzQXJyYXkodmFsKSA/IHZhbCA6ICh2YWwgPyBbdmFsXSA6IFtdKTtcclxuICAgICAgICAgICAgdmFsQXJyYXkuZm9yRWFjaCgob3B0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRSZXNwb25zZUxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudElkOiBvcHQ/LmlkXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBxdWVzdGlvblJlc3BvbnNlT2JqID0geyBhdHRhY2htZW50UmVzcG9uc2VMaXN0IH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlVGV4dCA9IHZhbDtcclxuICAgICAgICAgICAgaWYgKHFUeXBlID09PSAnUVVFU1RJT05fVFlQRS5EQVRFX1BJQ0tFUicgJiYgdmFsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlT2JqID0gbmV3IERhdGUodmFsKTtcclxuICAgICAgICAgICAgICAgIGlmICghaXNOYU4oZGF0ZU9iai5nZXRUaW1lKCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUZXh0ID0gZGF0ZU9iai50b0lTT1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHF1ZXN0aW9uUmVzcG9uc2VPYmogPSB7XHJcbiAgICAgICAgICAgICAgICBkcnN1YmplY3RpdmVyZXNwb25zZUxpc3Q6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVRleHQ6IHJlc3BvbnNlVGV4dFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7IHF1ZXN0aW9uUmVzcG9uc2VPYmosIGNoaWxkUXVlc1Jlc09iaiB9O1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkTWFya3NQYXlsb2FkKGFzc2Vzc2VlUmVzcG9uc2U6IEFzc2Vzc21lbnRJbnN0YW5jZUFzc2Vzc2VEVE8pIHtcclxuICAgICAgICBjb25zdCByZXNwb25zZXM6IGFueVtdID0gW107XHJcblxyXG4gICAgICAgIGFzc2Vzc2VlUmVzcG9uc2UuYWlhZGVmYXVsdFJlc3BvbnNlTGlzdD8uZm9yRWFjaCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2U/Lm1hcmtzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBhaWFEZWZhdWx0UmVzcG9uc2VJZDogcmVzcG9uc2UuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgbWFya3M6IE51bWJlcihyZXNwb25zZS5tYXJrcylcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGFzc2Vzc21lbnRJbnN0YW5jZUFzc2Vzc2VlSWQ6IGFzc2Vzc2VlUmVzcG9uc2U/LmlkLFxyXG4gICAgICAgICAgICByZXNwb25zZXM6IHJlc3BvbnNlc1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UtYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL3NlcnZpY2VzL3Jlc3BvbnNlLWJ1aWxkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFRbEQsTUFBTSxPQUFPLHNCQUFzQjtJQUUvQixnQkFBZ0IsQ0FBQztJQUVqQixvQkFBb0IsQ0FDaEIsZ0JBQThDLEVBQzlDLGNBQXVDLEVBQ3ZDLGlCQUFnRSxFQUNoRSxZQUFnRCxFQUNoRCxNQUFjOztRQUVkLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ25ELGNBQWMsQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFFM0MsTUFBQSxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsd0JBQXdCLDBDQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFOztZQUMvRCxNQUFNLHVCQUF1QixHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0YsSUFBSSx1QkFBdUIsRUFBRTtnQkFDekIsTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQUMsU0FBUyxDQUFDO2dCQUVwRCxNQUFBLE9BQU8sQ0FBQyxvQkFBb0IsMENBQUUsT0FBTyxDQUFDLENBQUMsZUFBZ0MsRUFBRSxFQUFFOztvQkFDdkUsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUEsZUFBZSxhQUFmLGVBQWUsdUJBQWYs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QUNILDRCQUE0QixFQUFFLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixDQUFFLEVBQUU7WUFDbEQsU0FBUyxFQUFFLFNBQVM7U0FDdkIsQ0FBQztJQUNOLENBQUM7O29IQWpTUSxzQkFBc0I7d0hBQXRCLHNCQUFzQixjQUZuQixNQUFNOzRGQUVULHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgZGVlcENsb25lIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzJztcclxuaW1wb3J0IHsgQXNzZXNzbWVudFF1ZXN0aW9uUGFwZXIsIFNlY3Rpb25RdWVzdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL3F1ZXN0aW9uLXBhcGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRJbnN0YW5jZUFzc2Vzc2VEVE8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9hc3Nlc3NtZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRRdWVzdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL3F1ZXN0aW9uLmludGVyZmFjZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3BvbnNlQnVpbGRlclNlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gICAgYnVpbGRSZXNwb25zZVBheWxvYWQoXHJcbiAgICAgICAgYXNzZXNzZWVSZXNwb25zZTogQXNzZXNzbWVudEluc3RhbmNlQXNzZXNzZURUTyxcclxuICAgICAgICBhc3Nlc3NtZW50RGF0YTogQXNzZXNzbWVudFF1ZXN0aW9uUGFwZXIsXHJcbiAgICAgICAgc2VjdGlvbkZvcm1Hcm91cHM6IHsgc2VjdGlvbklkOiBudW1iZXI7IGZvcm1Hcm91cDogRm9ybUdyb3VwIH1bXSxcclxuICAgICAgICBxdWVzdGlvbkJhbms6IFJlY29yZDxudW1iZXIsIEFzc2Vzc21lbnRRdWVzdGlvbj4sXHJcbiAgICAgICAgdGVuYW50OiBudW1iZXJcclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RQYXlsb2FkID0gZGVlcENsb25lKGFzc2Vzc2VlUmVzcG9uc2UpO1xyXG4gICAgICAgIHJlcXVlc3RQYXlsb2FkLmFpYWRlZmF1bHRSZXNwb25zZUxpc3QgPSBbXTtcclxuXHJcbiAgICAgICAgYXNzZXNzbWVudERhdGE/LnF1ZXN0aW9uUGFwZXJTZWN0aW9uTGlzdD8uZm9yRWFjaCgoc2VjdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25Gb3JtR3JvdXBXcmFwcGVyID0gc2VjdGlvbkZvcm1Hcm91cHMuZmluZCgoczogYW55KSA9PiBzLnNlY3Rpb25JZCA9PT0gc2VjdGlvbi5pZCk7XHJcbiAgICAgICAgICAgIGlmIChzZWN0aW9uRm9ybUdyb3VwV3JhcHBlcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gc2VjdGlvbkZvcm1Hcm91cFdyYXBwZXIuZm9ybUdyb3VwO1xyXG5cclxuICAgICAgICAgICAgICAgIHNlY3Rpb24uc2VjdGlvblF1ZXN0aW9uc0xpc3Q/LmZvckVhY2goKHNlY3Rpb25RdWVzdGlvbjogU2VjdGlvblF1ZXN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlcyA9IHF1ZXN0aW9uQmFua1tzZWN0aW9uUXVlc3Rpb24/LnF1ZXN0aW9uSWQgfHwgLTFdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcXVlcykgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWVzUmVzT2JqID0gdGhpcy5nZXRRdWVzdGlvblJlc3BvbnNlT2JqKGZvcm1Hcm91cCwgcXVlcz8uaWQsIHF1ZXN0aW9uQmFuayk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25SZXNwb25zZU9iaiA9IHF1ZXNSZXNPYmoucXVlc3Rpb25SZXNwb25zZU9iajtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXN0aW9uUmVzcG9uc2VPYmopIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcU9iaiA9IE9iamVjdC5hc3NpZ24oe30sIHF1ZXN0aW9uUmVzcG9uc2VPYmopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVxT2JqLmRlZmF1bHRPcHRpb247XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0FucyA9IGFzc2Vzc2VlUmVzcG9uc2UuYWlhZGVmYXVsdFJlc3BvbnNlTGlzdD8uZmluZCgoYTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5zZWN0aW9uUXVlc3Rpb24/LnF1ZXN0aW9uSWQgPT09IHNlY3Rpb25RdWVzdGlvbi5xdWVzdGlvbklkICYmICFhLmNoaWxkUXVlc3Rpb25JZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXJnZUV4aXN0aW5nSWRzKHJlcU9iaiwgZXhpc3RpbmdBbnMpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFleGlzdGluZ0FucyAmJiByZXFPYmouZHJvYmplY3RpdmVyZXNwb25zZUxpc3QgJiYgcmVxT2JqLmRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nQW5zICYmIHJlcU9iai5hdHRhY2htZW50UmVzcG9uc2VMaXN0ICYmIHJlcU9iai5hdHRhY2htZW50UmVzcG9uc2VMaXN0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFBheWxvYWQuYWlhZGVmYXVsdFJlc3BvbnNlTGlzdD8ucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXFPYmosXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZXhpc3RpbmdBbnM/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25RdWVzdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbmFudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtzOiBmb3JtR3JvdXAuZ2V0KGAke3F1ZXMuaWR9X21hcmtzYCk/LnZhbHVlICE9IG51bGwgPyBOdW1iZXIoZm9ybUdyb3VwLmdldChgJHtxdWVzLmlkfV9tYXJrc2ApPy52YWx1ZSkgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXNSZXNPYmouY2hpbGRRdWVzUmVzT2JqPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXNSZXNPYmouY2hpbGRRdWVzUmVzT2JqLmZvckVhY2goKGNoaWxkRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRPYmogPSBjaGlsZERhdGE/LnF1ZXN0aW9uUmVzcG9uc2VPYmo7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGREZXRhaWxzID0gY2hpbGREYXRhPy5jaGlsZFF1ZXN0aW9uRGV0YWlscztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkT2JqIHx8ICFjaGlsZERldGFpbHMpIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNwZWNpZmljQ2hpbGRSZXFPYmogPSBPYmplY3QuYXNzaWduKHt9LCBjaGlsZE9iaik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNwZWNpZmljQ2hpbGRSZXFPYmouZGVmYXVsdE9wdGlvbjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdDaGlsZEFucyA9IGFzc2Vzc2VlUmVzcG9uc2UuYWlhZGVmYXVsdFJlc3BvbnNlTGlzdD8uZmluZCgoYTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmNoaWxkUXVlc3Rpb25JZCA9PT0gY2hpbGREZXRhaWxzLmlkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuY2hpbGRRdWVzdGlvblBhcmVudFF1ZXN0aW9uSWQgPT09IHNlY3Rpb25RdWVzdGlvbi5xdWVzdGlvbklkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXJnZUV4aXN0aW5nSWRzKHNwZWNpZmljQ2hpbGRSZXFPYmosIGV4aXN0aW5nQ2hpbGRBbnMpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nQ2hpbGRBbnMgJiYgc3BlY2lmaWNDaGlsZFJlcU9iai5kcm9iamVjdGl2ZXJlc3BvbnNlTGlzdCAmJiBzcGVjaWZpY0NoaWxkUmVxT2JqLmRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdDaGlsZEFucyAmJiBzcGVjaWZpY0NoaWxkUmVxT2JqLmF0dGFjaG1lbnRSZXNwb25zZUxpc3QgJiYgc3BlY2lmaWNDaGlsZFJlcU9iai5hdHRhY2htZW50UmVzcG9uc2VMaXN0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0UGF5bG9hZC5haWFkZWZhdWx0UmVzcG9uc2VMaXN0Py5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRRdWVzdGlvbklkOiBjaGlsZERldGFpbHMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkUXVlc3Rpb25QYXJlbnRRdWVzdGlvbklkOiBzZWN0aW9uUXVlc3Rpb24ucXVlc3Rpb25JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGREZWZhdWx0T3B0aW9uSWQ6IGNoaWxkRGF0YS5wYXJlbnRPcHRpb25JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3BlY2lmaWNDaGlsZFJlcU9iaixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGV4aXN0aW5nQ2hpbGRBbnM/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uUXVlc3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbmFudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya3M6IGZvcm1Hcm91cC5nZXQoYCR7Y2hpbGREZXRhaWxzLmlkfV9tYXJrc2ApPy52YWx1ZSAhPSBudWxsID8gTnVtYmVyKGZvcm1Hcm91cC5nZXQoYCR7Y2hpbGREZXRhaWxzLmlkfV9tYXJrc2ApPy52YWx1ZSkgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXF1ZXN0UGF5bG9hZDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1lcmdlRXhpc3RpbmdJZHMobmV3QW5zOiBhbnksIGV4aXN0aW5nQW5zOiBhbnkpIHtcclxuICAgICAgICBpZiAoIWV4aXN0aW5nQW5zKSByZXR1cm47XHJcblxyXG4gICAgICAgIGlmIChuZXdBbnMuZHJzdWJqZWN0aXZlcmVzcG9uc2VMaXN0ICYmIGV4aXN0aW5nQW5zLmRyc3ViamVjdGl2ZXJlc3BvbnNlTGlzdCkge1xyXG4gICAgICAgICAgICBuZXdBbnMuZHJzdWJqZWN0aXZlcmVzcG9uc2VMaXN0LmZvckVhY2goKG5JdGVtOiBhbnksIGlkeDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdBbnMuZHJzdWJqZWN0aXZlcmVzcG9uc2VMaXN0W2lkeF0pIHtcclxuICAgICAgICAgICAgICAgICAgICBuSXRlbS5pZCA9IGV4aXN0aW5nQW5zLmRyc3ViamVjdGl2ZXJlc3BvbnNlTGlzdFtpZHhdLmlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5ld0Fucy5kcm9iamVjdGl2ZXJlc3BvbnNlTGlzdCAmJiBleGlzdGluZ0Fucy5kcm9iamVjdGl2ZXJlc3BvbnNlTGlzdCkge1xyXG4gICAgICAgICAgICBuZXdBbnMuZHJvYmplY3RpdmVyZXNwb25zZUxpc3QuZm9yRWFjaCgobkl0ZW06IGFueSwgaWR4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSXRlbSA9IGV4aXN0aW5nQW5zLmRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0LmZpbmQoKGVJdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgZUl0ZW0uZGVmYXVsdE9wdGlvbj8ub3B0aW9ucz8uaWQgPT09IG5JdGVtLmRlZmF1bHRPcHRpb24/Lm9wdGlvbnM/LmlkXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5JdGVtLmlkID0gZXhpc3RpbmdJdGVtLmlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGV4aXN0aW5nQW5zLmRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0LmZvckVhY2goKGVJdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0aWxsRXhpc3RzID0gbmV3QW5zLmRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0LmZpbmQoKG5JdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgbkl0ZW0uZGVmYXVsdE9wdGlvbj8ub3B0aW9ucz8uaWQgPT09IGVJdGVtLmRlZmF1bHRPcHRpb24/Lm9wdGlvbnM/LmlkXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzdGlsbEV4aXN0cykge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0Fucy5kcm9iamVjdGl2ZXJlc3BvbnNlTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZUl0ZW0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGlsbEV4aXN0cy5pc0FjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG5ld0Fucy5hdHRhY2htZW50UmVzcG9uc2VMaXN0ICYmIGV4aXN0aW5nQW5zLmF0dGFjaG1lbnRSZXNwb25zZUxpc3QpIHtcclxuICAgICAgICAgICAgbmV3QW5zLmF0dGFjaG1lbnRSZXNwb25zZUxpc3QuZm9yRWFjaCgobkl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdJdGVtID0gZXhpc3RpbmdBbnMuYXR0YWNobWVudFJlc3BvbnNlTGlzdC5maW5kKChlSXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIGVJdGVtLmlkID09PSBuSXRlbS5pZFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0l0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICBuSXRlbS5pZCA9IGV4aXN0aW5nSXRlbS5pZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBleGlzdGluZ0Fucy5hdHRhY2htZW50UmVzcG9uc2VMaXN0LmZvckVhY2goKGVJdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0aWxsRXhpc3RzID0gbmV3QW5zLmF0dGFjaG1lbnRSZXNwb25zZUxpc3QuZmluZCgobkl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICBuSXRlbS5pZCA9PT0gZUl0ZW0uaWRcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXN0aWxsRXhpc3RzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3QW5zLmF0dGFjaG1lbnRSZXNwb25zZUxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmVJdGVtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZTogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RpbGxFeGlzdHMuaXNBY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRRdWVzdGlvblJlc3BvbnNlT2JqKGZvcm1Hcm91cDogYW55LCBxdWVzSWQ6IG51bWJlciA9IC0xLCBxdWVzdGlvbkJhbms6IGFueSk6IGFueSB7XHJcbiAgICAgICAgY29uc3QgcXVlc3Rpb25EZXRhaWxzID0gcXVlc3Rpb25CYW5rW3F1ZXNJZF07XHJcbiAgICAgICAgaWYgKCFxdWVzdGlvbkRldGFpbHMpIHJldHVybiB7IHF1ZXN0aW9uUmVzcG9uc2VPYmo6IG51bGwsIGNoaWxkUXVlc1Jlc09iajogW10gfTtcclxuXHJcbiAgICAgICAgbGV0IHF1ZXN0aW9uUmVzcG9uc2VPYmo6IGFueSA9IHt9O1xyXG4gICAgICAgIGxldCBjaGlsZFF1ZXNSZXNPYmo6IGFueSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IHJhd1ZhbHVlcyA9IGZvcm1Hcm91cD8uZ2V0UmF3VmFsdWUgPyBmb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSA6IChmb3JtR3JvdXA/LnZhbHVlIHx8IHt9KTtcclxuICAgICAgICBjb25zdCB2YWwgPSByYXdWYWx1ZXNbcXVlc0lkXTtcclxuXHJcbiAgICAgICAgY29uc3QgcVR5cGUgPSBxdWVzdGlvbkRldGFpbHMucXVlc3Rpb25UeXBlPy5jb2RlO1xyXG5cclxuICAgICAgICAvLyBpZiAoIXZhbCAmJiBxVHlwZSAhPT0gJ1FVRVNUSU9OX1RZUEUuTVVMVElfU0VMRUNUJyAmJiBxVHlwZSAhPT0gJ1FVRVNUSU9OX1RZUEUuUFJFRkVSRU5DRScgJiYgcVR5cGUgIT09ICdRVUVTVElPTl9UWVBFLkZJTEVfVVBMT0FEJykge1xyXG4gICAgICAgIC8vICAgICByZXR1cm4geyBxdWVzdGlvblJlc3BvbnNlT2JqOiBudWxsLCBjaGlsZFF1ZXNSZXNPYmo6IFtdIH07XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICBpZiAocVR5cGUgPT09ICdRVUVTVElPTl9UWVBFLk9CSkVDVElWRScpIHtcclxuICAgICAgICAgICAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSBxdWVzdGlvbkRldGFpbHM/LmRlZmF1bHRPcHRpb25zTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBkZWZhdWx0T3B0aW9ucz8uZmluZCgoaTogYW55KSA9PiBpPy5vcHRpb25zPy5pZCA9PT0gdmFsPy5pZCkgfHwge307XHJcblxyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHtcclxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uUmVzcG9uc2VPYmogPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uSWQ6IHNlbGVjdGVkT3B0aW9uPy5vcHRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRPcHRpb246IHNlbGVjdGVkT3B0aW9uXHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbi5yZW1hcmtzUmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW1hcmtzVmFsID0gcmF3VmFsdWVzW2Ake3F1ZXNJZH1fcmVtYXJrc18ke3NlbGVjdGVkT3B0aW9uLmlkfWBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZW1hcmtzVmFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uUmVzcG9uc2VPYmoucmVtYXJrcyA9IHJlbWFya3NWYWw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkUXVlc0lkcyA9IHNlbGVjdGVkT3B0aW9uLmNoaWxkUXVlc3Rpb25MaXN0IHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgY2hpbGRRdWVzSWRzLmZvckVhY2goKGNoaWxkSWQ6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkUmVzcG9uc2UgPSB0aGlzLmdldFF1ZXN0aW9uUmVzcG9uc2VPYmooZm9ybUdyb3VwLCBjaGlsZElkLCBxdWVzdGlvbkJhbmspO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFJlc3BvbnNlPy5xdWVzdGlvblJlc3BvbnNlT2JqKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkUXVlc1Jlc09iai5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uUmVzcG9uc2VPYmo6IGNoaWxkUmVzcG9uc2UucXVlc3Rpb25SZXNwb25zZU9iaixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkUXVlc3Rpb25EZXRhaWxzOiBxdWVzdGlvbkJhbmtbY2hpbGRJZF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRPcHRpb25JZDogc2VsZWN0ZWRPcHRpb24ub3B0aW9ucy5pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkUmVzcG9uc2UuY2hpbGRRdWVzUmVzT2JqPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkUXVlc1Jlc09iaiA9IGNoaWxkUXVlc1Jlc09iai5jb25jYXQoY2hpbGRSZXNwb25zZS5jaGlsZFF1ZXNSZXNPYmopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBxdWVzdGlvblJlc3BvbnNlT2JqID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAocVR5cGUgPT09ICdRVUVTVElPTl9UWVBFLk1VTFRJX1NFTEVDVCcgfHwgcVR5cGUgPT09ICdRVUVTVElPTl9UWVBFLlBSRUZFUkVOQ0UnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gcXVlc3Rpb25EZXRhaWxzLmRlZmF1bHRPcHRpb25zTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgY29uc3QgZHJvYmplY3RpdmVyZXNwb25zZUxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gICAgICAgICAgICBsZXQgdmFsQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbCkgPyB2YWwgOiAodmFsID8gW3ZhbF0gOiBbXSk7XHJcblxyXG4gICAgICAgICAgICB2YWxBcnJheS5mb3JFYWNoKChvcHQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBkZWZhdWx0T3B0aW9ucy5maW5kKChpOiBhbnkpID0+IGkub3B0aW9ucz8uaWQgPT09IG9wdC5pZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvYmo6IGFueSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRPcHRpb246IHNlbGVjdGVkT3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHFUeXBlID09PSAnUVVFU1RJT05fVFlQRS5QUkVGRVJFTkNFJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoub3JkZXJObyA9IGluZGV4ICsgMTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbi5yZW1hcmtzUmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVtYXJrc1ZhbCA9IHJhd1ZhbHVlc1tgJHtxdWVzSWR9X3JlbWFya3NfJHtzZWxlY3RlZE9wdGlvbi5pZH1gXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbWFya3NWYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5yZW1hcmtzID0gcmVtYXJrc1ZhbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZHJvYmplY3RpdmVyZXNwb25zZUxpc3QucHVzaChvYmopO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFF1ZXNJZHMgPSBzZWxlY3RlZE9wdGlvbi5jaGlsZFF1ZXN0aW9uTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZFF1ZXNJZHMuZm9yRWFjaCgoY2hpbGRJZDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkUmVzcG9uc2UgPSB0aGlzLmdldFF1ZXN0aW9uUmVzcG9uc2VPYmooZm9ybUdyb3VwLCBjaGlsZElkLCBxdWVzdGlvbkJhbmspO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRSZXNwb25zZT8ucXVlc3Rpb25SZXNwb25zZU9iaikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRRdWVzUmVzT2JqLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uUmVzcG9uc2VPYmo6IGNoaWxkUmVzcG9uc2UucXVlc3Rpb25SZXNwb25zZU9iaixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFF1ZXN0aW9uRGV0YWlsczogcXVlc3Rpb25CYW5rW2NoaWxkSWRdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE9wdGlvbklkOiBzZWxlY3RlZE9wdGlvbi5vcHRpb25zLmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFJlc3BvbnNlLmNoaWxkUXVlc1Jlc09iaj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRRdWVzUmVzT2JqID0gY2hpbGRRdWVzUmVzT2JqLmNvbmNhdChjaGlsZFJlc3BvbnNlLmNoaWxkUXVlc1Jlc09iaik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBxdWVzdGlvblJlc3BvbnNlT2JqID0geyBkcm9iamVjdGl2ZXJlc3BvbnNlTGlzdCB9O1xyXG4gICAgICAgIH0gZWxzZSBpZiAocVR5cGUgPT09ICdRVUVTVElPTl9UWVBFLkZJTEVfVVBMT0FEJykge1xyXG4gICAgICAgICAgICBjb25zdCBhdHRhY2htZW50UmVzcG9uc2VMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgICAgICAgbGV0IHZhbEFycmF5ID0gQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsIDogKHZhbCA/IFt2YWxdIDogW10pO1xyXG4gICAgICAgICAgICB2YWxBcnJheS5mb3JFYWNoKChvcHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYXR0YWNobWVudFJlc3BvbnNlTGlzdC5wdXNoKG9wdCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcXVlc3Rpb25SZXNwb25zZU9iaiA9IHsgYXR0YWNobWVudFJlc3BvbnNlTGlzdCB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCByZXNwb25zZVRleHQgPSB2YWw7XHJcbiAgICAgICAgICAgIGlmIChxVHlwZSA9PT0gJ1FVRVNUSU9OX1RZUEUuREFURV9QSUNLRVInICYmIHZhbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZU9iaiA9IG5ldyBEYXRlKHZhbCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKGRhdGVPYmouZ2V0VGltZSgpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVGV4dCA9IGRhdGVPYmoudG9JU09TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBxdWVzdGlvblJlc3BvbnNlT2JqID0ge1xyXG4gICAgICAgICAgICAgICAgZHJzdWJqZWN0aXZlcmVzcG9uc2VMaXN0OiBbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUZXh0OiByZXNwb25zZVRleHRcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geyBxdWVzdGlvblJlc3BvbnNlT2JqLCBjaGlsZFF1ZXNSZXNPYmogfTtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZE1hcmtzUGF5bG9hZChhc3Nlc3NlZVJlc3BvbnNlOiBBc3Nlc3NtZW50SW5zdGFuY2VBc3Nlc3NlRFRPKSB7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2VzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgICBhc3Nlc3NlZVJlc3BvbnNlLmFpYWRlZmF1bHRSZXNwb25zZUxpc3Q/LmZvckVhY2goKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlPy5tYXJrcyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgYWlhRGVmYXVsdFJlc3BvbnNlSWQ6IHJlc3BvbnNlLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIG1hcmtzOiBOdW1iZXIocmVzcG9uc2UubWFya3MpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBhc3Nlc3NtZW50SW5zdGFuY2VBc3Nlc3NlZUlkOiBhc3Nlc3NlZVJlc3BvbnNlPy5pZCxcclxuICAgICAgICAgICAgcmVzcG9uc2VzOiByZXNwb25zZXNcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|