@rangertechnologies/ngnxt 2.1.61 → 2.1.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/custom-calendar/custom-calendar.component.mjs +10 -2
- package/esm2022/lib/pages/booklet/booklet.component.mjs +2 -2
- package/fesm2022/rangertechnologies-ngnxt.mjs +10 -2
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.62.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.61.tgz +0 -0
|
@@ -47,12 +47,20 @@ export class CustomCalendarComponent {
|
|
|
47
47
|
if (changeValue == 'calendar-modal-save') {
|
|
48
48
|
this.onSave();
|
|
49
49
|
}
|
|
50
|
+
// 23Sep24 - data bind changes
|
|
51
|
+
if (changeValue == 'databind') {
|
|
52
|
+
if (this.question?.input) {
|
|
53
|
+
this.allEvents = this.question.input;
|
|
54
|
+
}
|
|
55
|
+
this.processQuestion();
|
|
56
|
+
this.generateCalendar();
|
|
57
|
+
}
|
|
50
58
|
});
|
|
51
59
|
// this.dateSelected.emit(this.calendar);
|
|
52
60
|
//this.eventSelected.emit(this.allEvents);
|
|
53
61
|
}
|
|
54
62
|
ngOnChanges(simplechanges) {
|
|
55
|
-
if (simplechanges['question']
|
|
63
|
+
if (simplechanges['question']) {
|
|
56
64
|
this.allEvents = this.question.input;
|
|
57
65
|
}
|
|
58
66
|
}
|
|
@@ -355,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
355
363
|
}], question: [{
|
|
356
364
|
type: Input
|
|
357
365
|
}] } });
|
|
358
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1jYWxlbmRhci9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWNhbGVuZGFyL2N1c3RvbS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQzs7OztBQW9CckgsTUFBTSxPQUFPLHVCQUF1QjtJQW9DYjtJQWxDWCxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNsRCw4QkFBOEI7SUFDcEIsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDdkMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDcEMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDdEMsU0FBUyxHQUFVLEVBQUUsQ0FBQztJQUN0QixRQUFRLENBQVU7SUFDM0IsMkZBQTJGO0lBQzNGLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFDeEIsY0FBYyxDQUFLO0lBQ25CLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBRWQsV0FBVyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7SUFDL0IsWUFBWSxHQUFrQixFQUFFLENBQUM7SUFDakMsVUFBVSxHQUFhLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vd3JhcHBlcic7XG4vL2ltcG9ydCB7IFF1ZXN0aW9uYm9va0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhZ2VzL3F1ZXN0aW9uYm9vay9xdWVzdGlvbmJvb2suY29tcG9uZW50Jztcbi8vaW1wb3J0IHsgQ29tcG9uZW50aG9zdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29tcG9uZW50aG9zdC9jb21wb25lbnRob3N0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhbmdlLnNlcnZpY2UnO1xuaW50ZXJmYWNlIENhbGVuZGFyRGF5IHtcbiAgZGF0ZTogRGF0ZTtcbiAgZXZlbnRzOiBhbnlbXTtcbiAgaXNDdXJyZW50TW9udGg6IGJvb2xlYW47XG4gIGlzUGFzdDogYm9vbGVhbjtcbiAgaXNUb2RheTogYm9vbGVhbjtcbiAgaXNGdXR1cmU6IGJvb2xlYW47XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N1c3RvbS1jYWxlbmRhci5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbUNhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBAT3V0cHV0KCkgZXZlbnRTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb3Blbk1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZU1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGFsbEV2ZW50czogYW55W10gPSBbXTsgXG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBRdWVzdGlvblxuICAvL0BWaWV3Q2hpbGQoQ29tcG9uZW50aG9zdERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgZHluYW1pY0hvc3Q6IENvbXBvbmVudGhvc3REaXJlY3RpdmU7XG4gIGVudHJpZXMgPSBbXTtcbiAgcmVmZXJlbmNlUXVlc3Rpb25zID0gW107XG4gIHFiUmVmcmVuY2VCb29rOmFueTtcbiAgY2FsZW5kYXJRdWVzdGlvbiA9IFtdO1xuICBjYWxlbmRhciA9IHt9O1xuXG4gIGN1cnJlbnREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgY2FsZW5kYXJEYXlzOiBDYWxlbmRhckRheVtdID0gW107XG4gIGRheXNPZldlZWs6IHN0cmluZ1tdID0gWydTdW5kYXknLCAnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheSddO1xuXG4gIG5ld0V2ZW50VGl0bGU6IHN0cmluZyA9ICcnO1xuICBuZXdFdmVudFRpbWU6IHN0cmluZyA9ICcnO1xuICBuZXdEZXNjcmlwdGlvbjogc3RyaW5nID0gJyc7XG4gIG5ld0xpbms6IHN0cmluZyA9ICcnO1xuICBzZWxlY3RlZERheTogQ2FsZW5kYXJEYXkgfCBudWxsID0gbnVsbDtcblxuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xuICBtb2RhbFRpdGxlID0gJ0N1c3RvbSBNb2RhbCc7XG4gIG1vZGFsU2l6ZSA9ICdsYXJnZSc7XG4gIHNhdmVCdXR0b25WYWx1ZSA9ICdTYXZlJztcbiAgbW9kYWxGb290ZXIgPSB0cnVlO1xuICBlZGl0aW5nRXZlbnRJZDogbnVtYmVyO1xuICBlZGl0aW5nRW50cnlHcm91cDogYW55O1xuICBzaG93QXBwb2lubWVudFNlY3Rpb246IGJvb2xlYW4gPSB0cnVlO1xuICBzdWJzY3JpcHRpb246IGFueTtcblxuICBjb25zdHJ1Y3RvciggcHJpdmF0ZSBjaGFuZ2VTZXJ2aWNlOiBDaGFuZ2VTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAgaWYodGhpcy5xdWVzdGlvbj8uaW5wdXQpe1xuICAgICAgdGhpcy5hbGxFdmVudHMgPSB0aGlzLnF1ZXN0aW9uLmlucHV0O1xuICAgICB9XG4gICAgdGhpcy5wcm9jZXNzUXVlc3Rpb24oKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbmdlU2VydmljZS5jdXN0b21DaGFuZ2UkLnN1YnNjcmliZShcbiAgICAgIChjaGFuZ2VWYWx1ZSkgPT4ge1xuICAgICAgICAgIGlmKGNoYW5nZVZhbHVlID09ICdjYWxlbmRhci1tb2RhbC1zYXZlJykge1xuICAgICAgICAgICAgdGhpcy5vblNhdmUoKTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgIC8vIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQodGhpcy5jYWxlbmRhcik7XG4gICAgLy90aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdCh0aGlzLmFsbEV2ZW50cyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhzaW1wbGVjaGFuZ2VzOlNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZihzaW1wbGVjaGFuZ2VzWydxdWVzdGlvbiddWydpbnB1dCddKXtcbiAgICAgIHRoaXMuYWxsRXZlbnRzID0gdGhpcy5xdWVzdGlvbi5pbnB1dDtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzUXVlc3Rpb24oKXtcbiAgICB0aGlzLmVudHJpZXMgPSBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb25bJ0ZpZWxkc19NZXRhX19jJ10pO1xuICAgIHRoaXMucWJSZWZyZW5jZUJvb2sgPSBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb25bJ1FCX1JlZmVyZW5jZV9RdWVzdGlvbnNfX2MnXSk7XG4gICAgbGV0IHRpdGxlID0gdGhpcy5xYlJlZnJlbmNlQm9vaz8ucXVlc3Rpb25ib29rPy5UaXRsZV9fYztcbiAgICB0aGlzLm1vZGFsVGl0bGUgPSB0aXRsZTtcbiAgICB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyA9IFtdO1xuICAgIGlmKHRoaXMuZW50cmllcy5sZW5ndGggPiAwKXtcbiAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgaWYoZWxlbWVudC5xdWVzdGlvblJlZmVyZW5jZSl7XG4gICAgICAgICAgICAgbGV0IHFSZWZlcmVuY2UgPSBKU09OLnBhcnNlKGVsZW1lbnQucXVlc3Rpb25SZWZlcmVuY2UpO1xuICAgICAgICAgICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLnB1c2gocVJlZmVyZW5jZT8ucXVlc3Rpb24pO1xuICAgICAgICAgICB9XG4gICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdlbnRyaWVzLS0+Jyk7XG4gICAgY29uc29sZS5sb2coJ3F1ZXN0aW9uLS0+Jyk7XG4gICAgY29uc29sZS5sb2codGhpcy5lbnRyaWVzKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyk7XG4gIH1cblxuICAgLy8gc3VuZGF5IGNvbW1lbnRcbiAgLy8gb3BlblF1ZXN0aW9uQm9va01vZGFsKCkge1xuICAvLyAgIGNvbnN0IHZpZXdDb250YWluZXJSZWYgPSB0aGlzLmR5bmFtaWNIb3N0LnZpZXdDb250YWluZXJSZWY7XG4gIC8vICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAvLyAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFF1ZXN0aW9uYm9va0NvbXBvbmVudCk7XG4gIC8vICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnFiSXRlbSA9IHRoaXMucWJSZWZyZW5jZUJvb2s7XG4gIC8vICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnF1ZXN0aW9ucyA9IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zO1xuICAvLyAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5oYW5kbGVRdWVzdGlvbi5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHRoaXMuaGFuZGxlUXVlc3Rpb25FdmVudChldmVudCkpO1xuICAvLyB9XG5cbiAgZ2VuZXJhdGVDYWxlbmRhcigpIHtcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpO1xuXG4gICAgY29uc3Qgc3RhcnRPZk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICAgIGNvbnN0IGVuZE9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApO1xuXG4gICAgY29uc3Qgc3RhcnREYXlPZldlZWsgPSBzdGFydE9mTW9udGguZ2V0RGF5KCk7XG4gICAgY29uc3QgZW5kRGF5T2ZXZWVrID0gZW5kT2ZNb250aC5nZXREYXkoKTtcblxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0T2ZNb250aCk7XG4gICAgc3RhcnREYXRlLnNldERhdGUoc3RhcnREYXRlLmdldERhdGUoKSAtIHN0YXJ0RGF5T2ZXZWVrKTtcblxuICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZShlbmRPZk1vbnRoKTtcbiAgICBlbmREYXRlLnNldERhdGUoZW5kRGF0ZS5nZXREYXRlKCkgKyAoNiAtIGVuZERheU9mV2VlaykpO1xuXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldEhvdXJzKDAsIDAsIDAsIDApKTtcbiAgICBcbiAgICAgIHRoaXMuY2FsZW5kYXJEYXlzID0gW107XG4gICAgICBmb3IgKGxldCBkID0gbmV3IERhdGUoc3RhcnREYXRlKTsgZCA8PSBlbmREYXRlOyBkLnNldERhdGUoZC5nZXREYXRlKCkgKyAxKSkge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZCk7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJEYXlzLnB1c2goe1xuICAgICAgICAgIGRhdGU6IGRhdGUsXG4gICAgICAgICAgZXZlbnRzOiBbXSxcbiAgICAgICAgICBpc0N1cnJlbnRNb250aDogZC5nZXRNb250aCgpID09PSBtb250aCxcbiAgICAgICAgICBpc1Bhc3Q6IGRhdGUgPCB0b2RheSxcbiAgICAgICAgICBpc1RvZGF5OiBkYXRlLmdldFRpbWUoKSA9PT0gdG9kYXkuZ2V0VGltZSgpLFxuICAgICAgICAgIGlzRnV0dXJlOiBkYXRlID4gdG9kYXksXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgLy8gUG9wdWxhdGUgY2FsZW5kYXIgd2l0aCBldmVudHMgZnJvbSBhbGxFdmVudHMgYXJyYXlcbiAgICB0aGlzLmNhbGVuZGFyRGF5cy5mb3JFYWNoKGRheSA9PiB7XG4gICAgICBkYXkuZXZlbnRzID0gdGhpcy5hbGxFdmVudHMuZmlsdGVyKGV2ZW50ID0+IGV2ZW50LmRhdGUudG9EYXRlU3RyaW5nKCkgPT09IGRheS5kYXRlLnRvRGF0ZVN0cmluZygpKTtcbiAgICB9KTtcbiAgICAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gICAgbGV0IGNhbCA9IHt9XG4gICAgY2FsWyd5ZWFyJ10gPSB5ZWFyO1xuICAgIGNhbFsnbW9udGgnXSA9IG1vbnRoICsgMTtcbiAgICB0aGlzLmNhbGVuZGFyID0gY2FsO1xuICB9XG5cblxuICBzZWxlY3REYXkoZGF5OiBDYWxlbmRhckRheSkge1xuICAgIGNvbnNvbGUubG9nKGRheSk7XG4gICAgIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICAgIHRoaXMuc2hvd0FwcG9pbm1lbnRTZWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNlbGVjdGVkRGF5ID0gZGF5O1xuICAgLy8gdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQoZGF5Py5ldmVudHMpO1xuICAgIGNvbnN0IHByZXZpb3VzbHlTZWxlY3RlZERheSA9IHRoaXMuY2FsZW5kYXJEYXlzLmZpbmQoZCA9PiBkLmlzU2VsZWN0ZWQpO1xuICAgIGlmIChwcmV2aW91c2x5U2VsZWN0ZWREYXkpIHtcbiAgICAgIHByZXZpb3VzbHlTZWxlY3RlZERheS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIFNlbGVjdCB0aGUgY2xpY2tlZCBkYXlcbiAgICBkYXkuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAvLyBWRCAwOVNlcDI0LSBzZXR1cCB0aGUgcXVlcnkgcGFyYW0gZGF0YSBmb3IgYXBpIGNhbGxcbiAgICBsZXQgcmVmZXJlbmNlRGF0YSA9IFtdO1xuICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLmZvckVhY2gocXVlcyA9PiB7XG4gICAgICAvLyBWRCAwOS0wOS0yNCBnZXQgdGhlIHNlbGVjdGVkIGRhdGVcbiAgICAgIC8vIG5lZWQgdG8gYWRkIGluIHRoZSBkb2N1bWVudFxuICAgICAgIGlmKHF1ZXMuUmVmZXJlbmNlX0ZpZWxkX19jID09ICdzZWxlY3RlZERhdGUnKXtcbiAgICAgICAgICBxdWVzLmlucHV0ID0gZGF5LmRhdGUudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhxdWVzLmlucHV0KTtcbiAgICAgICB9XG4gICAgICAgLy8gVkQgMDktMDktMjQgZ2V0IHRoZSBxdWVyeSByZWZyZW5jZSAgZmllbGQgZGF0YSB0byBwYXNzIHRoZSBxdWVyeVBhcmFtICBmb3IgYXBpXG4gICAgICAgaWYocXVlcy5TdWJfVGV4dF9fYyl7XG4gICAgICAgIGxldCBzdWJUZXh0ID0gSlNPTi5wYXJzZShxdWVzLlN1Yl9UZXh0X19jKTtcbiAgICAgICAgaWYgKHN1YlRleHQucXVlcnlGaWVsZCAmJiBzdWJUZXh0LnF1ZXJ5VmFsdWVSZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50UXVlcyA9IHF1ZXM7XG4gICAgICAgICAgICBsZXQgcXVlcnlSZWZlcmVuY2VzID0gc3ViVGV4dC5xdWVyeVZhbHVlUmVmZXJlbmNlLnNwbGl0KCcsJyk7XG4gICAgXG4gICAgICAgICAgICBxdWVyeVJlZmVyZW5jZXMuZm9yRWFjaChyZWZGaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJlZlF1ZXMgPSB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucy5maW5kKHEgPT4gcS5SZWZlcmVuY2VfRmllbGRfX2MgPT09IHJlZkZpZWxkKTtcbiAgICAgICAgICAgICAgICBpZiAocmVmUXVlcykge1xuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VEYXRhLnB1c2gocmVmUXVlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBBZGQgdGhlIHJlZmVyZW5jZURhdGEgYXJyYXkgdG8gdGhlIGN1cnJlbnQgcXVlc3Rpb25cbiAgICAgICAgICAgIGN1cnJlbnRRdWVzLnJlZmVyZW5jZVF1ZXJ5RGF0YSA9IHJlZmVyZW5jZURhdGE7XG4gICAgICAgIH1cbiAgICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHByZXZpb3VzTW9udGgoKSB7XG4gICAgdGhpcy5zaG93QXBwb2lubWVudFNlY3Rpb24gPSBmYWxzZTtcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldE1vbnRoKHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKSAtIDEpO1xuICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnREYXRlKTsgLy8gRW5zdXJlIHRoZSBkYXRlIG9iamVjdCBpcyB1cGRhdGVkXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdCh0aGlzLmNhbGVuZGFyKTtcbiAgICB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdCh0aGlzLmFsbEV2ZW50cyk7XG4gIH1cblxuICBuZXh0TW9udGgoKSB7XG4gICAgIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICAgIHRoaXMuc2hvd0FwcG9pbm1lbnRTZWN0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5jdXJyZW50RGF0ZS5zZXRNb250aCh0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCkgKyAxKTtcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50RGF0ZSk7IC8vIEVuc3VyZSB0aGUgZGF0ZSBvYmplY3QgaXMgdXBkYXRlZFxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQodGhpcy5jYWxlbmRhcik7XG4gICAgdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQodGhpcy5hbGxFdmVudHMpO1xuICB9XG5cbiAgYWRkQXBwb2ludG1lbnQoKSB7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gICAgIHRoaXMuY2FsZW5kYXJRdWVzdGlvbiA9IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLm1hcChxID0+ICh7IC4uLnEsIGlucHV0OiAnJyB9KSk7XG4gICAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMuZm9yRWFjaChxdWVzID0+IHtcbiAgICAgIC8vIGNsZWFyIHRoZSBpbnB1dFxuICAgICAgaWYocXVlcy5SZWZlcmVuY2VfRmllbGRfX2MgIT0gJ3NlbGVjdGVkRGF0ZScpe1xuICAgICAgICBpZihxdWVzLlR5cGVfX2MgPT0gJ0Ryb3Bkb3duJyl7XG4gICAgICAgICAgZGVsZXRlIHF1ZXMuaW5wdXQ7XG4gICAgICAgICAgZGVsZXRlIHF1ZXMuc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gICAgICAgIH1lbHNlIHtcbiAgICAgICAgICBkZWxldGUgcXVlcy5pbnB1dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnNvbGUubG9nKHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zKTtcbiAgICB0aGlzLmVkaXRpbmdFdmVudElkID0gbnVsbDtcbiAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24gPSB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucztcbiAgICB0aGlzLm9wZW5Cb29rTW9kZWwoKTtcbiAgICAvLyBzdW5kYXkgY29tbWVudFxuICAgIC8vdGhpcy5vcGVuUXVlc3Rpb25Cb29rTW9kYWwoKTtcbiAgfVxuXG5cbiAgb3BlbkJvb2tNb2RlbCgpe1xuICAgIHRoaXMub3Blbk1vZGFsLmVtaXQoe1xuICAgICAgcWJSZWZyZW5jZUJvb2s6IHRoaXMucWJSZWZyZW5jZUJvb2ssXG4gICAgICByZWZlcmVuY2VRdWVzdGlvbnM6IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLFxuICAgICAgbW9kYWxUaXRsZSA6IHRoaXMubW9kYWxUaXRsZSxcbiAgICAgIG1vZGFsU2l6ZSA6IHRoaXMubW9kYWxTaXplLFxuICAgICAgc2F2ZUJ1dHRvblZhbHVlIDogdGhpcy5zYXZlQnV0dG9uVmFsdWUsXG4gICAgICBtb2RhbEZvb3RlciA6IHRoaXMubW9kYWxGb290ZXIsXG5cbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlQ2FsZW5kYXJNb2RhbCgpIHtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZU1vZGFsLmVtaXQodHJ1ZSk7XG4gIH1cbiAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcblxuZWRpdEV2ZW50KGV2ZW50OiBhbnksIGVudHJ5R3JvdXA6IGFueSkge1xuICB0aGlzLmlzTW9kYWxPcGVuID0gdHJ1ZTtcbiAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMgPSBPYmplY3QudmFsdWVzKGVudHJ5R3JvdXApO1xuICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24gPSBbLi4udGhpcy5yZWZlcmVuY2VRdWVzdGlvbnNdOyAvLyBNYWtlIGEgY29weSBvZiB0aGUgY3VycmVudCBlbnRyaWVzIHRvIGVkaXRcbiAgdGhpcy5lZGl0aW5nRXZlbnRJZCA9IGV2ZW50LmlkO1xuICB0aGlzLmVkaXRpbmdFbnRyeUdyb3VwID0gZW50cnlHcm91cDsgLy8gU3RvcmUgdGhlIGVudHJ5IGdyb3VwIGJlaW5nIGVkaXRlZFxuICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTsgLy8gUmVnZW5lcmF0ZSB0aGUgY2FsZW5kYXIgdG8gcmVmbGVjdCBjaGFuZ2VzXG4gIHRoaXMub3BlbkJvb2tNb2RlbCgpO1xuICAvLyBzdWRheSBjb21tZW50XG4gLy8gdGhpcy5vcGVuUXVlc3Rpb25Cb29rTW9kYWwoKTtcblxufVxuXG5cbmRlbGV0ZUV2ZW50KCBldmVudElkOiBudW1iZXIsIGVudHJ5R3JvdXA6IGFueSkge1xuICBsZXQgZXZlbnQgPSB0aGlzLmFsbEV2ZW50cy5maW5kKGUgPT4gZS5pZCA9PT0gZXZlbnRJZCk7XG4gIGlmIChldmVudCkge1xuICAgICAgLy8gRmluZCB0aGUgaW5kZXggb2YgdGhlIGVudHJ5R3JvdXAgdG8gZGVsZXRlXG4gICAgICBjb25zdCBlbnRyeUluZGV4ID0gZXZlbnQuZW50cmllcy5pbmRleE9mKGVudHJ5R3JvdXApO1xuICAgICAgaWYgKGVudHJ5SW5kZXggPiAtMSkge1xuICAgICAgICAgIGV2ZW50LmVudHJpZXMuc3BsaWNlKGVudHJ5SW5kZXgsIDEpOyAvLyBSZW1vdmUgdGhlIHNwZWNpZmljIGVudHJ5XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBldmVudCBoYXMgbm8gbW9yZSBlbnRyaWVzLCByZW1vdmUgdGhlIGV2ZW50IGVudGlyZWx5XG4gICAgICBpZiAoZXZlbnQuZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zdCBldmVudEluZGV4ID0gdGhpcy5hbGxFdmVudHMuaW5kZXhPZihldmVudCk7XG4gICAgICAgICAgaWYgKGV2ZW50SW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICB0aGlzLmFsbEV2ZW50cy5zcGxpY2UoZXZlbnRJbmRleCwgMSk7IC8vIFJlbW92ZSB0aGUgZW50aXJlIGV2ZW50XG4gICAgICAgICAgfVxuICAgICAgfVxuICB9XG4gIGxldCBldmVudERhdGEgPSB7fTtcbiAgIGV2ZW50RGF0YVsnYWN0aW9uJ10gPSBcImRlbGV0ZVwiO1xuICAgZXZlbnREYXRhWydkYXRhJ10gPSBldmVudDtcbiAgdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQoZXZlbnREYXRhKTtcbiAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7IC8vIFJlZ2VuZXJhdGUgdGhlIGNhbGVuZGFyIHRvIHJlZmxlY3QgdGhlIGNoYW5nZXNcbn1cblxuIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICBhZGRFdmVudChkYXk6IENhbGVuZGFyRGF5LCBlbnRyeVF1ZXMpIHtcbiAgICAvLyBUcmFuc2Zvcm0gbmV3IGVudHJpZXMgaW50byB0aGUgZGVzaXJlZCBmb3JtYXRcbiAgICBjb25zdCBuZXdFbnRyaWVzID0gZW50cnlRdWVzLnJlZHVjZSgoYWNjLCBxKSA9PiB7XG4gICAgICAgIGFjY1txLklkXSA9IHsgLi4ucSB9O1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcblxuICAgIC8vIEZpbmQgYW4gZXhpc3RpbmcgZXZlbnQgZm9yIHRoZSBnaXZlbiBkYXRlXG4gICAgY29uc3QgZXhpc3RpbmdFdmVudCA9IGRheS5ldmVudHMuZmluZChldmVudCA9PiBldmVudC5kYXRlID09PSBkYXkuZGF0ZSk7XG5cbiAgICBpZiAoZXhpc3RpbmdFdmVudCkge1xuICAgICAgICAvLyBNZXJnZSBuZXcgZW50cmllcyBpbnRvIHRoZSBleGlzdGluZyBldmVudCdzIGVudHJpZXMgYXJyYXlcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGVudHJpZXMgYXJyYXkgYWxyZWFkeSBjb250YWlucyBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBJRFxuICAgICAgICBjb25zdCBleGlzdGluZ0VudHJpZXMgPSBleGlzdGluZ0V2ZW50LmVudHJpZXMubWFwKGVudHJ5ID0+ICh7IC4uLmVudHJ5IH0pKTtcblxuICAgICAgICAvLyBBcHBlbmQgbmV3IGVudHJpZXMgdG8gdGhlIGV4aXN0aW5nIGVudHJpZXNcbiAgICAgICAgZXhpc3RpbmdFbnRyaWVzLnB1c2gobmV3RW50cmllcyk7XG4gICAgICAgIGV4aXN0aW5nRXZlbnQuZW50cmllcyA9IGV4aXN0aW5nRW50cmllcztcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgZXZlbnQgaWYgaXQgZG9lc24ndCBleGlzdCBmb3IgdGhlIGdpdmVuIGRhdGVcbiAgICAgICAgY29uc3QgbmV3RXZlbnQgPSB7XG4gICAgICAgICAgICBpZDogdGhpcy5nZW5lcmF0ZUlkKCksXG4gICAgICAgICAgICBkYXRlOiBkYXkuZGF0ZSxcbiAgICAgICAgICAgIGVudHJpZXM6IFtuZXdFbnRyaWVzXSAvLyBXcmFwIHRoZSBuZXcgZW50cmllcyBpbiBhbiBhcnJheVxuICAgICAgICB9O1xuICAgICAgICBkYXkuZXZlbnRzLnB1c2gobmV3RXZlbnQpO1xuICAgICAgICB0aGlzLmFsbEV2ZW50cy5wdXNoKG5ld0V2ZW50KTtcbiAgICAgICAgLy90aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdCh0aGlzLmFsbEV2ZW50cyk7XG4gICAgICAgIGxldCBldmVudERhdGEgPSB7fTtcbiAgICAgICAgZXZlbnREYXRhWydhY3Rpb24nXSA9IFwiYWRkXCI7XG4gICAgICAgIGV2ZW50RGF0YVsnZGF0YSddID0gbmV3RXZlbnQ7XG4gICAgICAgIHRoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KGV2ZW50RGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gICAgY29uc29sZS5sb2coJ2FsbEV2ZW50cycsIHRoaXMuYWxsRXZlbnRzKTtcbn1cbiAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiBvblNhdmUoKSB7XG4gICAgaWYgKHRoaXMuZWRpdGluZ0V2ZW50SWQgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSB0aGlzLmFsbEV2ZW50cy5maW5kKGUgPT4gZS5pZCA9PT0gdGhpcy5lZGl0aW5nRXZlbnRJZCk7XG4gICAgICAgIGlmIChldmVudCAmJiB0aGlzLmVkaXRpbmdFbnRyeUdyb3VwKSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHNwZWNpZmljIGVudHJ5IGdyb3VwIHdpdGhpbiB0aGUgZXZlbnRcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5SW5kZXggPSBldmVudC5lbnRyaWVzLmZpbmRJbmRleChlbnRyeUdyb3VwID0+IGVudHJ5R3JvdXAgPT09IHRoaXMuZWRpdGluZ0VudHJ5R3JvdXApO1xuICAgICAgICAgICAgaWYgKGVudHJ5SW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LmVudHJpZXNbZW50cnlJbmRleF0gPSB0aGlzLmNhbGVuZGFyUXVlc3Rpb24ucmVkdWNlKChhY2MsIHEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYWNjW3EuSWRdID0geyAuLi5xIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgIC8vIHRoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KHRoaXMuYWxsRXZlbnRzKTtcbiAgICAgIGxldCBldmVudERhdGEgPSB7fTtcbiAgICAgIGV2ZW50RGF0YVsnYWN0aW9uJ10gPSBcImVkaXRcIjtcbiAgICAgIGV2ZW50RGF0YVsnZGF0YSddID0gZXZlbnQ7XG4gICAgICB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdChldmVudERhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF5KSB7XG4gICAgICAgICAgICB0aGlzLmFkZEV2ZW50KHRoaXMuc2VsZWN0ZWREYXksIHRoaXMuY2FsZW5kYXJRdWVzdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jbG9zZUNhbGVuZGFyTW9kYWwoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbn1cblxuICAvLyBvbkNhbmNlbCgpIHtcbiAgLy8gICBjb25zb2xlLmxvZygnQ2FuY2VsIGJ1dHRvbiBjbGlja2VkJyk7XG4gIC8vICAgdGhpcy5jbG9zZUNhbGVuZGFyTW9kYWwoKTtcbiAgLy8gfVxuXG5cbiAgLy90aGlzIGZ1bnRpb24gbmVlZCB0byBiZSB1c2VkXG4gIC8vIGhhbmRsZVF1ZXN0aW9uRXZlbnQocXVlcyl7XG4gIC8vICAgICAvLyBVcGRhdGUgdGhlIHF1ZXN0aW9ucyBhcnJheSB3aXRoIHRoZSBuZXcgcXVlc3Rpb25cbiAgLy8gICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jYWxlbmRhclF1ZXN0aW9uLmZpbmRJbmRleChxID0+IHEuSWQgPT09IHF1ZXMuSWQpO1xuICAvLyAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgLy8gICAgICAgLy8gSWYgcXVlc3Rpb24gYWxyZWFkeSBleGlzdHMsIHVwZGF0ZSBpdFxuICAvLyAgICAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb25baW5kZXhdID0gcXVlcztcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIC8vIElmIHF1ZXN0aW9uIGRvZXNuJ3QgZXhpc3QsIGFkZCBpdCB0byB0aGUgYXJyYXlcbiAgLy8gICAgICAgdGhpcy5jYWxlbmRhclF1ZXN0aW9uLnB1c2gocXVlcyk7XG4gIC8vICAgICB9XG4gIC8vICAgICBjb25zb2xlLmxvZyh0aGlzLmNhbGVuZGFyUXVlc3Rpb24pO1xuICAvLyAgIH1cblxuIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICBnZW5lcmF0ZUlkKCkge1xuICAgIHJldHVybiAnXycgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSk7XG4gIH1cblxuICBnZXRFbnRyeUtleXMoZW50cnlHcm91cDogYW55KTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnRyeUdyb3VwKTtcbn1cblxucmVtb3ZlQ2hhcmFjdGVycyhxdWVzdGlvblRleHQ6c3RyaW5nKXtcbiAgbGV0IHVwZGF0ZWRUZXh0ID0gcXVlc3Rpb25UZXh0Py5yZXBsYWNlKC88W14+XSo+L2csICcnKTtcbiAgcmV0dXJuIHVwZGF0ZWRUZXh0O1xufVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiYWxpZ24tY2FsZW5kYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCI+PDwgUHJldmlvdXMgPj48L2J1dHRvbj5cbiAgICAgICAgICA8aDM+e3sgY3VycmVudERhdGUgfCBkYXRlOiAnTU1NTSB5eXl5JyB9fTwvaDM+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibmV4dE1vbnRoKClcIj48PCBOZXh0ID4+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ncmlkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1vZi13ZWVrXCIgKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzT2ZXZWVrXCI+e3sgZGF5IH19PC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItZGF5XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBjYWxlbmRhckRheXNcIlxuICAgICAgICAgICAgICBbY2xhc3Mubm90LWN1cnJlbnQtbW9udGhdPVwiIWRheS5pc0N1cnJlbnRNb250aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wYXN0XT1cImRheS5pc1Bhc3RcIlxuICAgICAgICAgICAgICBbY2xhc3MudG9kYXldPVwiZGF5LmlzVG9kYXlcIlxuICAgICAgICAgICAgICBbY2xhc3MuZnV0dXJlXT1cImRheS5pc0Z1dHVyZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJkYXkuaXNTZWxlY3RlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoZGF5KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5LW51bWJlclwiPnt7IGRheS5kYXRlLmdldERhdGUoKSB9fVxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmV2ZW50cy5sZW5ndGggPiAwXCIgY2xhc3M9XCJlbnRyeS1pbmRpY2F0b3JcIiBbY2xhc3Muc2VsZWN0XT1cImRheS5pc1NlbGVjdGVkXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0Zvcj1cImxldCBldmVudCBvZiBkYXkuZXZlbnRzXCIgPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZW50cnlHcm91cCBvZiBldmVudC5lbnRyaWVzXCIgY2xhc3M9XCJldmVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGtleSBvZiBnZXRFbnRyeUtleXMoZW50cnlHcm91cClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS5UeXBlX19jID09ICdUaW1lJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZW50cnlHcm91cFtrZXldLmlucHV0Py52YWx1ZSB8IGRhdGU6ICdzaG9ydFRpbWUnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLlR5cGVfX2MgIT0gJ1RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlbnRyeUdyb3VwW2tleV0uaW5wdXQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhcHBvaW5hcHBvaW50bWVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFwcG9pbnRtZW50cy1jb250YWluZXJcIj5cbiAgICAgICAgICA8aDQ+QWRkIEFwcG9pbnRtZW50PC9oND5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2VsZWN0ZWREYXlcIiAoY2xpY2spPVwiYWRkQXBwb2ludG1lbnQoKVwiPkFkZDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tVkQgMDZTZXAyNCBjYWxlbmRhciB1cGRhdGVzLS0+IFxuICAgICAgPGRpdiAqbmdJZj1cInNob3dBcHBvaW5tZW50U2VjdGlvbiAmJiBzZWxlY3RlZERheT8uZXZlbnRzLmxlbmd0aCA+IDBcIiBjbGFzcz1cImFwcG9pbnRtZW50cy1jb250YWluZXJcIj5cbiAgICAgICAgICA8aDQ+QXBwb2ludG1lbnRzPC9oND5cbiAgICAgICAgICA8ZGl2ICAqbmdGb3I9XCJsZXQgZXZlbnQgb2Ygc2VsZWN0ZWREYXk/LmV2ZW50c1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnRcIiAqbmdGb3I9XCJsZXQgZW50cnlHcm91cCBvZiBldmVudC5lbnRyaWVzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2V5IG9mIGdldEVudHJ5S2V5cyhlbnRyeUdyb3VwKVwiIGNsYXNzPVwiZW50cnktcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLlF1ZXN0aW9uX1RleHRfX2NcIiBjbGFzcz1cImVudHJ5LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3JlbW92ZUNoYXJhY3RlcnMoZW50cnlHcm91cFtrZXldLlF1ZXN0aW9uX1RleHRfX2MpfX06XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeS12YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVkQgMDlTZXAyNC0gZGF0ZSB0eXBlIGFuZCBsaW5rIHR5cGUgdXBkYXRlcyAgICAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS5UeXBlX19jICE9ICdUaW1lJyAmJiBlbnRyeUdyb3VwW2tleV0uVHlwZV9fYyAhPSAnTGluaycmJiBlbnRyeUdyb3VwW2tleV0uVHlwZV9fYyAhPSAnRGF0ZSdcIj57eyBlbnRyeUdyb3VwW2tleV0uaW5wdXQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJlbnRyeUdyb3VwW2tleV0uVHlwZV9fYyA9PSAnVGltZSdcIj57eyBlbnRyeUdyb3VwW2tleV0uaW5wdXQgfCBkYXRlOiAnc2hvcnRUaW1lJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS5UeXBlX19jID09ICdEYXRlJ1wiPnt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB8IGRhdGU6ICdtZWRpdW1EYXRlJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS5UeXBlX19jID09ICdMaW5rJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCInLy8nKyBlbnRyeUdyb3VwW2tleV0uaW5wdXRcIiB0YXJnZXQ9XCJfYmxhbmtcIj57e3JlbW92ZUNoYXJhY3RlcnMoZW50cnlHcm91cFtrZXldLlF1ZXN0aW9uX1RleHRfX2MpfX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJlZGl0RXZlbnQoZXZlbnQsZW50cnlHcm91cClcIj5FZGl0PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWxldGVFdmVudChldmVudC5pZCxlbnRyeUdyb3VwKVwiPkRlbGV0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSA8YXBwLWN1c3RvbS1tb2RlbFxuICBbbW9kYWxUaXRsZV09XCJtb2RhbFRpdGxlXCJcbiAgW2lzTW9kYWxPcGVuXT1cImlzTW9kYWxPcGVuXCJcbiAgW21vZGFsU2l6ZV09XCJtb2RhbFNpemVcIlxuICBbc2F2ZUJ1dHRvblZhbHVlXT1cInNhdmVCdXR0b25WYWx1ZVwiXG4gIFttb2RhbEZvb3Rlcl09XCJtb2RhbEZvb3RlclwiXG4gIChzYXZlQnV0dG9uRW1pdCk9XCJvblNhdmUoKVwiXG4gIChjYW5jZWxCdXR0b25FbWl0KT1cIm9uQ2FuY2VsKClcIlxuPlxuPGxpYi1xdWVzdGlvbmJvb2sgW3FiSXRlbV09XCJxYlJlZnJlbmNlQm9va1wiIFtxdWVzdGlvbnNdPVwicmVmZXJlbmNlUXVlc3Rpb25zXCIgKGhhbmRsZVF1ZXN0aW9uKT1cImhhbmRsZVF1ZXN0aW9uRXZlbnQoJGV2ZW50KVwiPjwvbGliLXF1ZXN0aW9uYm9vaz5cbjxuZy10ZW1wbGF0ZSBkeW5hbWljQ29tcG9uZW50SG9zdCA+PC9uZy10ZW1wbGF0ZT5cbjwvYXBwLWN1c3RvbS1tb2RlbD4gLS0+XG5cblxuICBcbiAgXG4gICJdfQ==
|
|
366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1jYWxlbmRhci9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWNhbGVuZGFyL2N1c3RvbS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQzs7OztBQW9CckgsTUFBTSxPQUFPLHVCQUF1QjtJQW9DYjtJQWxDWCxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNsRCw4QkFBOEI7SUFDcEIsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDdkMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDcEMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDdEMsU0FBUyxHQUFVLEVBQUUsQ0FBQztJQUN0QixRQUFRLENBQVU7SUFDM0IsMkZBQTJGO0lBQzNGLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFDeEIsY0FBYyxDQUFLO0lBQ25CLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBRWQsV0FBVyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7SUFDL0IsWUFBWSxHQUFrQixFQUFFLENBQUM7SUFDakMsVUFBVSxHQUFhLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENB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dUJBQXVCLHVRQ3BCcEMsMDNJQTBGRTs7NEZEdEVXLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7b0dBTXJCLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0UsU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uLy4uL3dyYXBwZXInO1xuLy9pbXBvcnQgeyBRdWVzdGlvbmJvb2tDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudCc7XG4vL2ltcG9ydCB7IENvbXBvbmVudGhvc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbXBvbmVudGhvc3QvY29tcG9uZW50aG9zdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5nZS5zZXJ2aWNlJztcbmludGVyZmFjZSBDYWxlbmRhckRheSB7XG4gIGRhdGU6IERhdGU7XG4gIGV2ZW50czogYW55W107XG4gIGlzQ3VycmVudE1vbnRoOiBib29sZWFuO1xuICBpc1Bhc3Q6IGJvb2xlYW47XG4gIGlzVG9kYXk6IGJvb2xlYW47XG4gIGlzRnV0dXJlOiBib29sZWFuO1xuICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21DYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQE91dHB1dCgpIGV2ZW50U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIEBPdXRwdXQoKSBkYXRlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9wZW5Nb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2xvc2VNb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBhbGxFdmVudHM6IGFueVtdID0gW107IFxuICBASW5wdXQoKSBxdWVzdGlvbjogUXVlc3Rpb25cbiAgLy9AVmlld0NoaWxkKENvbXBvbmVudGhvc3REaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIGR5bmFtaWNIb3N0OiBDb21wb25lbnRob3N0RGlyZWN0aXZlO1xuICBlbnRyaWVzID0gW107XG4gIHJlZmVyZW5jZVF1ZXN0aW9ucyA9IFtdO1xuICBxYlJlZnJlbmNlQm9vazphbnk7XG4gIGNhbGVuZGFyUXVlc3Rpb24gPSBbXTtcbiAgY2FsZW5kYXIgPSB7fTtcblxuICBjdXJyZW50RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIGNhbGVuZGFyRGF5czogQ2FsZW5kYXJEYXlbXSA9IFtdO1xuICBkYXlzT2ZXZWVrOiBzdHJpbmdbXSA9IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXTtcblxuICBuZXdFdmVudFRpdGxlOiBzdHJpbmcgPSAnJztcbiAgbmV3RXZlbnRUaW1lOiBzdHJpbmcgPSAnJztcbiAgbmV3RGVzY3JpcHRpb246IHN0cmluZyA9ICcnO1xuICBuZXdMaW5rOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWREYXk6IENhbGVuZGFyRGF5IHwgbnVsbCA9IG51bGw7XG5cbiAgaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgbW9kYWxUaXRsZSA9ICdDdXN0b20gTW9kYWwnO1xuICBtb2RhbFNpemUgPSAnbGFyZ2UnO1xuICBzYXZlQnV0dG9uVmFsdWUgPSAnU2F2ZSc7XG4gIG1vZGFsRm9vdGVyID0gdHJ1ZTtcbiAgZWRpdGluZ0V2ZW50SWQ6IG51bWJlcjtcbiAgZWRpdGluZ0VudHJ5R3JvdXA6IGFueTtcbiAgc2hvd0FwcG9pbm1lbnRTZWN0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgc3Vic2NyaXB0aW9uOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoIHByaXZhdGUgY2hhbmdlU2VydmljZTogQ2hhbmdlU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgIGlmKHRoaXMucXVlc3Rpb24/LmlucHV0KXtcbiAgICAgIHRoaXMuYWxsRXZlbnRzID0gdGhpcy5xdWVzdGlvbi5pbnB1dDtcbiAgICAgfVxuICAgIHRoaXMucHJvY2Vzc1F1ZXN0aW9uKCk7XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5nZVNlcnZpY2UuY3VzdG9tQ2hhbmdlJC5zdWJzY3JpYmUoXG4gICAgICAoY2hhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSA9PSAnY2FsZW5kYXItbW9kYWwtc2F2ZScpIHtcbiAgICAgICAgICAgIHRoaXMub25TYXZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIDIzU2VwMjQgLSBkYXRhIGJpbmQgY2hhbmdlc1xuICAgICAgICAgIGlmKGNoYW5nZVZhbHVlID09ICdkYXRhYmluZCcpe1xuICAgICAgICAgICAgaWYodGhpcy5xdWVzdGlvbj8uaW5wdXQpe1xuICAgICAgICAgICAgICB0aGlzLmFsbEV2ZW50cyA9IHRoaXMucXVlc3Rpb24uaW5wdXQ7XG4gICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzUXVlc3Rpb24oKTtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgLy8gdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdCh0aGlzLmNhbGVuZGFyKTtcbiAgICAvL3RoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KHRoaXMuYWxsRXZlbnRzKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHNpbXBsZWNoYW5nZXM6U2ltcGxlQ2hhbmdlcykge1xuICAgIGlmKHNpbXBsZWNoYW5nZXNbJ3F1ZXN0aW9uJ10pe1xuICAgICAgdGhpcy5hbGxFdmVudHMgPSB0aGlzLnF1ZXN0aW9uLmlucHV0O1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3NRdWVzdGlvbigpe1xuICAgIHRoaXMuZW50cmllcyA9IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvblsnRmllbGRzX01ldGFfX2MnXSk7XG4gICAgdGhpcy5xYlJlZnJlbmNlQm9vayA9IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvblsnUUJfUmVmZXJlbmNlX1F1ZXN0aW9uc19fYyddKTtcbiAgICBsZXQgdGl0bGUgPSB0aGlzLnFiUmVmcmVuY2VCb29rPy5xdWVzdGlvbmJvb2s/LlRpdGxlX19jO1xuICAgIHRoaXMubW9kYWxUaXRsZSA9IHRpdGxlO1xuICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zID0gW107XG4gICAgaWYodGhpcy5lbnRyaWVzLmxlbmd0aCA+IDApe1xuICAgICAgIHRoaXMuZW50cmllcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICBpZihlbGVtZW50LnF1ZXN0aW9uUmVmZXJlbmNlKXtcbiAgICAgICAgICAgICBsZXQgcVJlZmVyZW5jZSA9IEpTT04ucGFyc2UoZWxlbWVudC5xdWVzdGlvblJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMucHVzaChxUmVmZXJlbmNlPy5xdWVzdGlvbik7XG4gICAgICAgICAgIH1cbiAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ2VudHJpZXMtLT4nKTtcbiAgICBjb25zb2xlLmxvZygncXVlc3Rpb24tLT4nKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmVudHJpZXMpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zKTtcbiAgfVxuXG4gICAvLyBzdW5kYXkgY29tbWVudFxuICAvLyBvcGVuUXVlc3Rpb25Cb29rTW9kYWwoKSB7XG4gIC8vICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IHRoaXMuZHluYW1pY0hvc3Qudmlld0NvbnRhaW5lclJlZjtcbiAgLy8gICB2aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gIC8vICAgY29uc3QgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoUXVlc3Rpb25ib29rQ29tcG9uZW50KTtcbiAgLy8gICBjb21wb25lbnRSZWYuaW5zdGFuY2UucWJJdGVtID0gdGhpcy5xYlJlZnJlbmNlQm9vaztcbiAgLy8gICBjb21wb25lbnRSZWYuaW5zdGFuY2UucXVlc3Rpb25zID0gdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnM7XG4gIC8vICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmhhbmRsZVF1ZXN0aW9uLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4gdGhpcy5oYW5kbGVRdWVzdGlvbkV2ZW50KGV2ZW50KSk7XG4gIC8vIH1cblxuICBnZW5lcmF0ZUNhbGVuZGFyKCkge1xuICAgIGNvbnN0IHllYXIgPSB0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCk7XG5cbiAgICBjb25zdCBzdGFydE9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gICAgY29uc3QgZW5kT2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCk7XG5cbiAgICBjb25zdCBzdGFydERheU9mV2VlayA9IHN0YXJ0T2ZNb250aC5nZXREYXkoKTtcbiAgICBjb25zdCBlbmREYXlPZldlZWsgPSBlbmRPZk1vbnRoLmdldERheSgpO1xuXG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoc3RhcnRPZk1vbnRoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZShzdGFydERhdGUuZ2V0RGF0ZSgpIC0gc3RhcnREYXlPZldlZWspO1xuXG4gICAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKGVuZE9mTW9udGgpO1xuICAgIGVuZERhdGUuc2V0RGF0ZShlbmREYXRlLmdldERhdGUoKSArICg2IC0gZW5kRGF5T2ZXZWVrKSk7XG5cbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xuICAgIFxuICAgICAgdGhpcy5jYWxlbmRhckRheXMgPSBbXTtcbiAgICAgIGZvciAobGV0IGQgPSBuZXcgRGF0ZShzdGFydERhdGUpOyBkIDw9IGVuZERhdGU7IGQuc2V0RGF0ZShkLmdldERhdGUoKSArIDEpKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkKTtcbiAgICAgICAgdGhpcy5jYWxlbmRhckRheXMucHVzaCh7XG4gICAgICAgICAgZGF0ZTogZGF0ZSxcbiAgICAgICAgICBldmVudHM6IFtdLFxuICAgICAgICAgIGlzQ3VycmVudE1vbnRoOiBkLmdldE1vbnRoKCkgPT09IG1vbnRoLFxuICAgICAgICAgIGlzUGFzdDogZGF0ZSA8IHRvZGF5LFxuICAgICAgICAgIGlzVG9kYXk6IGRhdGUuZ2V0VGltZSgpID09PSB0b2RheS5nZXRUaW1lKCksXG4gICAgICAgICAgaXNGdXR1cmU6IGRhdGUgPiB0b2RheSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAvLyBQb3B1bGF0ZSBjYWxlbmRhciB3aXRoIGV2ZW50cyBmcm9tIGFsbEV2ZW50cyBhcnJheVxuICAgIHRoaXMuY2FsZW5kYXJEYXlzLmZvckVhY2goZGF5ID0+IHtcbiAgICAgIGRheS5ldmVudHMgPSB0aGlzLmFsbEV2ZW50cy5maWx0ZXIoZXZlbnQgPT4gZXZlbnQuZGF0ZS50b0RhdGVTdHJpbmcoKSA9PT0gZGF5LmRhdGUudG9EYXRlU3RyaW5nKCkpO1xuICAgIH0pO1xuICAgICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgICBsZXQgY2FsID0ge31cbiAgICBjYWxbJ3llYXInXSA9IHllYXI7XG4gICAgY2FsWydtb250aCddID0gbW9udGggKyAxO1xuICAgIHRoaXMuY2FsZW5kYXIgPSBjYWw7XG4gIH1cblxuXG4gIHNlbGVjdERheShkYXk6IENhbGVuZGFyRGF5KSB7XG4gICAgY29uc29sZS5sb2coZGF5KTtcbiAgICAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gICAgdGhpcy5zaG93QXBwb2lubWVudFNlY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWREYXkgPSBkYXk7XG4gICAvLyB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdChkYXk/LmV2ZW50cyk7XG4gICAgY29uc3QgcHJldmlvdXNseVNlbGVjdGVkRGF5ID0gdGhpcy5jYWxlbmRhckRheXMuZmluZChkID0+IGQuaXNTZWxlY3RlZCk7XG4gICAgaWYgKHByZXZpb3VzbHlTZWxlY3RlZERheSkge1xuICAgICAgcHJldmlvdXNseVNlbGVjdGVkRGF5LmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgLy8gU2VsZWN0IHRoZSBjbGlja2VkIGRheVxuICAgIGRheS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgIC8vIFZEIDA5U2VwMjQtIHNldHVwIHRoZSBxdWVyeSBwYXJhbSBkYXRhIGZvciBhcGkgY2FsbFxuICAgIGxldCByZWZlcmVuY2VEYXRhID0gW107XG4gICAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMuZm9yRWFjaChxdWVzID0+IHtcbiAgICAgIC8vIFZEIDA5LTA5LTI0IGdldCB0aGUgc2VsZWN0ZWQgZGF0ZVxuICAgICAgLy8gbmVlZCB0byBhZGQgaW4gdGhlIGRvY3VtZW50XG4gICAgICAgaWYocXVlcy5SZWZlcmVuY2VfRmllbGRfX2MgPT0gJ3NlbGVjdGVkRGF0ZScpe1xuICAgICAgICAgIHF1ZXMuaW5wdXQgPSBkYXkuZGF0ZS50b0lTT1N0cmluZygpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKHF1ZXMuaW5wdXQpO1xuICAgICAgIH1cbiAgICAgICAvLyBWRCAwOS0wOS0yNCBnZXQgdGhlIHF1ZXJ5IHJlZnJlbmNlICBmaWVsZCBkYXRhIHRvIHBhc3MgdGhlIHF1ZXJ5UGFyYW0gIGZvciBhcGlcbiAgICAgICBpZihxdWVzLlN1Yl9UZXh0X19jKXtcbiAgICAgICAgbGV0IHN1YlRleHQgPSBKU09OLnBhcnNlKHF1ZXMuU3ViX1RleHRfX2MpO1xuICAgICAgICBpZiAoc3ViVGV4dC5xdWVyeUZpZWxkICYmIHN1YlRleHQucXVlcnlWYWx1ZVJlZmVyZW5jZSkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRRdWVzID0gcXVlcztcbiAgICAgICAgICAgIGxldCBxdWVyeVJlZmVyZW5jZXMgPSBzdWJUZXh0LnF1ZXJ5VmFsdWVSZWZlcmVuY2Uuc3BsaXQoJywnKTtcbiAgICBcbiAgICAgICAgICAgIHF1ZXJ5UmVmZXJlbmNlcy5mb3JFYWNoKHJlZkZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVmUXVlcyA9IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLmZpbmQocSA9PiBxLlJlZmVyZW5jZV9GaWVsZF9fYyA9PT0gcmVmRmllbGQpO1xuICAgICAgICAgICAgICAgIGlmIChyZWZRdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZURhdGEucHVzaChyZWZRdWVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIEFkZCB0aGUgcmVmZXJlbmNlRGF0YSBhcnJheSB0byB0aGUgY3VycmVudCBxdWVzdGlvblxuICAgICAgICAgICAgY3VycmVudFF1ZXMucmVmZXJlbmNlUXVlcnlEYXRhID0gcmVmZXJlbmNlRGF0YTtcbiAgICAgICAgfVxuICAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcHJldmlvdXNNb250aCgpIHtcbiAgICB0aGlzLnNob3dBcHBvaW5tZW50U2VjdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuY3VycmVudERhdGUuc2V0TW9udGgodGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpIC0gMSk7XG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VycmVudERhdGUpOyAvLyBFbnN1cmUgdGhlIGRhdGUgb2JqZWN0IGlzIHVwZGF0ZWRcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KHRoaXMuY2FsZW5kYXIpO1xuICAgIHRoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KHRoaXMuYWxsRXZlbnRzKTtcbiAgfVxuXG4gIG5leHRNb250aCgpIHtcbiAgICAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gICAgdGhpcy5zaG93QXBwb2lubWVudFNlY3Rpb24gPSBmYWxzZTtcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldE1vbnRoKHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKSArIDEpO1xuICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnREYXRlKTsgLy8gRW5zdXJlIHRoZSBkYXRlIG9iamVjdCBpcyB1cGRhdGVkXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdCh0aGlzLmNhbGVuZGFyKTtcbiAgICB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdCh0aGlzLmFsbEV2ZW50cyk7XG4gIH1cblxuICBhZGRBcHBvaW50bWVudCgpIHtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gdHJ1ZTtcbiAgICAgdGhpcy5jYWxlbmRhclF1ZXN0aW9uID0gdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMubWFwKHEgPT4gKHsgLi4ucSwgaW5wdXQ6ICcnIH0pKTtcbiAgICB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucy5mb3JFYWNoKHF1ZXMgPT4ge1xuICAgICAgLy8gY2xlYXIgdGhlIGlucHV0XG4gICAgICBpZihxdWVzLlJlZmVyZW5jZV9GaWVsZF9fYyAhPSAnc2VsZWN0ZWREYXRlJyl7XG4gICAgICAgIGlmKHF1ZXMuVHlwZV9fYyA9PSAnRHJvcGRvd24nKXtcbiAgICAgICAgICBkZWxldGUgcXVlcy5pbnB1dDtcbiAgICAgICAgICBkZWxldGUgcXVlcy5zZWxlY3RlZFZhbHVlO1xuICAgICAgICAgICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgICAgICAgfWVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSBxdWVzLmlucHV0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc29sZS5sb2codGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMpO1xuICAgIHRoaXMuZWRpdGluZ0V2ZW50SWQgPSBudWxsO1xuICAgIHRoaXMuY2FsZW5kYXJRdWVzdGlvbiA9IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zO1xuICAgIHRoaXMub3BlbkJvb2tNb2RlbCgpO1xuICAgIC8vIHN1bmRheSBjb21tZW50XG4gICAgLy90aGlzLm9wZW5RdWVzdGlvbkJvb2tNb2RhbCgpO1xuICB9XG5cblxuICBvcGVuQm9va01vZGVsKCl7XG4gICAgdGhpcy5vcGVuTW9kYWwuZW1pdCh7XG4gICAgICBxYlJlZnJlbmNlQm9vazogdGhpcy5xYlJlZnJlbmNlQm9vayxcbiAgICAgIHJlZmVyZW5jZVF1ZXN0aW9uczogdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMsXG4gICAgICBtb2RhbFRpdGxlIDogdGhpcy5tb2RhbFRpdGxlLFxuICAgICAgbW9kYWxTaXplIDogdGhpcy5tb2RhbFNpemUsXG4gICAgICBzYXZlQnV0dG9uVmFsdWUgOiB0aGlzLnNhdmVCdXR0b25WYWx1ZSxcbiAgICAgIG1vZGFsRm9vdGVyIDogdGhpcy5tb2RhbEZvb3RlcixcblxuICAgIH0pO1xuICB9XG5cbiAgY2xvc2VDYWxlbmRhck1vZGFsKCkge1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlTW9kYWwuZW1pdCh0cnVlKTtcbiAgfVxuIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuXG5lZGl0RXZlbnQoZXZlbnQ6IGFueSwgZW50cnlHcm91cDogYW55KSB7XG4gIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyA9IE9iamVjdC52YWx1ZXMoZW50cnlHcm91cCk7XG4gIHRoaXMuY2FsZW5kYXJRdWVzdGlvbiA9IFsuLi50aGlzLnJlZmVyZW5jZVF1ZXN0aW9uc107IC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGVudHJpZXMgdG8gZWRpdFxuICB0aGlzLmVkaXRpbmdFdmVudElkID0gZXZlbnQuaWQ7XG4gIHRoaXMuZWRpdGluZ0VudHJ5R3JvdXAgPSBlbnRyeUdyb3VwOyAvLyBTdG9yZSB0aGUgZW50cnkgZ3JvdXAgYmVpbmcgZWRpdGVkXG4gIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpOyAvLyBSZWdlbmVyYXRlIHRoZSBjYWxlbmRhciB0byByZWZsZWN0IGNoYW5nZXNcbiAgdGhpcy5vcGVuQm9va01vZGVsKCk7XG4gIC8vIHN1ZGF5IGNvbW1lbnRcbiAvLyB0aGlzLm9wZW5RdWVzdGlvbkJvb2tNb2RhbCgpO1xuXG59XG5cblxuZGVsZXRlRXZlbnQoIGV2ZW50SWQ6IG51bWJlciwgZW50cnlHcm91cDogYW55KSB7XG4gIGxldCBldmVudCA9IHRoaXMuYWxsRXZlbnRzLmZpbmQoZSA9PiBlLmlkID09PSBldmVudElkKTtcbiAgaWYgKGV2ZW50KSB7XG4gICAgICAvLyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgZW50cnlHcm91cCB0byBkZWxldGVcbiAgICAgIGNvbnN0IGVudHJ5SW5kZXggPSBldmVudC5lbnRyaWVzLmluZGV4T2YoZW50cnlHcm91cCk7XG4gICAgICBpZiAoZW50cnlJbmRleCA+IC0xKSB7XG4gICAgICAgICAgZXZlbnQuZW50cmllcy5zcGxpY2UoZW50cnlJbmRleCwgMSk7IC8vIFJlbW92ZSB0aGUgc3BlY2lmaWMgZW50cnlcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIGV2ZW50IGhhcyBubyBtb3JlIGVudHJpZXMsIHJlbW92ZSB0aGUgZXZlbnQgZW50aXJlbHlcbiAgICAgIGlmIChldmVudC5lbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IGV2ZW50SW5kZXggPSB0aGlzLmFsbEV2ZW50cy5pbmRleE9mKGV2ZW50KTtcbiAgICAgICAgICBpZiAoZXZlbnRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgIHRoaXMuYWxsRXZlbnRzLnNwbGljZShldmVudEluZGV4LCAxKTsgLy8gUmVtb3ZlIHRoZSBlbnRpcmUgZXZlbnRcbiAgICAgICAgICB9XG4gICAgICB9XG4gIH1cbiAgbGV0IGV2ZW50RGF0YSA9IHt9O1xuICAgZXZlbnREYXRhWydhY3Rpb24nXSA9IFwiZGVsZXRlXCI7XG4gICBldmVudERhdGFbJ2RhdGEnXSA9IGV2ZW50O1xuICB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdChldmVudERhdGEpO1xuICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTsgLy8gUmVnZW5lcmF0ZSB0aGUgY2FsZW5kYXIgdG8gcmVmbGVjdCB0aGUgY2hhbmdlc1xufVxuXG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIGFkZEV2ZW50KGRheTogQ2FsZW5kYXJEYXksIGVudHJ5UXVlcykge1xuICAgIC8vIFRyYW5zZm9ybSBuZXcgZW50cmllcyBpbnRvIHRoZSBkZXNpcmVkIGZvcm1hdFxuICAgIGNvbnN0IG5ld0VudHJpZXMgPSBlbnRyeVF1ZXMucmVkdWNlKChhY2MsIHEpID0+IHtcbiAgICAgICAgYWNjW3EuSWRdID0geyAuLi5xIH07XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuXG4gICAgLy8gRmluZCBhbiBleGlzdGluZyBldmVudCBmb3IgdGhlIGdpdmVuIGRhdGVcbiAgICBjb25zdCBleGlzdGluZ0V2ZW50ID0gZGF5LmV2ZW50cy5maW5kKGV2ZW50ID0+IGV2ZW50LmRhdGUgPT09IGRheS5kYXRlKTtcblxuICAgIGlmIChleGlzdGluZ0V2ZW50KSB7XG4gICAgICAgIC8vIE1lcmdlIG5ldyBlbnRyaWVzIGludG8gdGhlIGV4aXN0aW5nIGV2ZW50J3MgZW50cmllcyBhcnJheVxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgZW50cmllcyBhcnJheSBhbHJlYWR5IGNvbnRhaW5zIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIElEXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nRW50cmllcyA9IGV4aXN0aW5nRXZlbnQuZW50cmllcy5tYXAoZW50cnkgPT4gKHsgLi4uZW50cnkgfSkpO1xuXG4gICAgICAgIC8vIEFwcGVuZCBuZXcgZW50cmllcyB0byB0aGUgZXhpc3RpbmcgZW50cmllc1xuICAgICAgICBleGlzdGluZ0VudHJpZXMucHVzaChuZXdFbnRyaWVzKTtcbiAgICAgICAgZXhpc3RpbmdFdmVudC5lbnRyaWVzID0gZXhpc3RpbmdFbnRyaWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBldmVudCBpZiBpdCBkb2Vzbid0IGV4aXN0IGZvciB0aGUgZ2l2ZW4gZGF0ZVxuICAgICAgICBjb25zdCBuZXdFdmVudCA9IHtcbiAgICAgICAgICAgIGlkOiB0aGlzLmdlbmVyYXRlSWQoKSxcbiAgICAgICAgICAgIGRhdGU6IGRheS5kYXRlLFxuICAgICAgICAgICAgZW50cmllczogW25ld0VudHJpZXNdIC8vIFdyYXAgdGhlIG5ldyBlbnRyaWVzIGluIGFuIGFycmF5XG4gICAgICAgIH07XG4gICAgICAgIGRheS5ldmVudHMucHVzaChuZXdFdmVudCk7XG4gICAgICAgIHRoaXMuYWxsRXZlbnRzLnB1c2gobmV3RXZlbnQpO1xuICAgICAgICAvL3RoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KHRoaXMuYWxsRXZlbnRzKTtcbiAgICAgICAgbGV0IGV2ZW50RGF0YSA9IHt9O1xuICAgICAgICBldmVudERhdGFbJ2FjdGlvbiddID0gXCJhZGRcIjtcbiAgICAgICAgZXZlbnREYXRhWydkYXRhJ10gPSBuZXdFdmVudDtcbiAgICAgICAgdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQoZXZlbnREYXRhKTtcbiAgICB9XG5cbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgICBjb25zb2xlLmxvZygnYWxsRXZlbnRzJywgdGhpcy5hbGxFdmVudHMpO1xufVxuIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuIG9uU2F2ZSgpIHtcbiAgICBpZiAodGhpcy5lZGl0aW5nRXZlbnRJZCAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuYWxsRXZlbnRzLmZpbmQoZSA9PiBlLmlkID09PSB0aGlzLmVkaXRpbmdFdmVudElkKTtcbiAgICAgICAgaWYgKGV2ZW50ICYmIHRoaXMuZWRpdGluZ0VudHJ5R3JvdXApIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgc3BlY2lmaWMgZW50cnkgZ3JvdXAgd2l0aGluIHRoZSBldmVudFxuICAgICAgICAgICAgY29uc3QgZW50cnlJbmRleCA9IGV2ZW50LmVudHJpZXMuZmluZEluZGV4KGVudHJ5R3JvdXAgPT4gZW50cnlHcm91cCA9PT0gdGhpcy5lZGl0aW5nRW50cnlHcm91cCk7XG4gICAgICAgICAgICBpZiAoZW50cnlJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuZW50cmllc1tlbnRyeUluZGV4XSA9IHRoaXMuY2FsZW5kYXJRdWVzdGlvbi5yZWR1Y2UoKGFjYywgcSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhY2NbcS5JZF0gPSB7IC4uLnEgfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgLy8gdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQodGhpcy5hbGxFdmVudHMpO1xuICAgICAgbGV0IGV2ZW50RGF0YSA9IHt9O1xuICAgICAgZXZlbnREYXRhWydhY3Rpb24nXSA9IFwiZWRpdFwiO1xuICAgICAgZXZlbnREYXRhWydkYXRhJ10gPSBldmVudDtcbiAgICAgIHRoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KGV2ZW50RGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXkpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkRXZlbnQodGhpcy5zZWxlY3RlZERheSwgdGhpcy5jYWxlbmRhclF1ZXN0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNsb3NlQ2FsZW5kYXJNb2RhbCgpO1xuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xufVxuXG4gIC8vIG9uQ2FuY2VsKCkge1xuICAvLyAgIGNvbnNvbGUubG9nKCdDYW5jZWwgYnV0dG9uIGNsaWNrZWQnKTtcbiAgLy8gICB0aGlzLmNsb3NlQ2FsZW5kYXJNb2RhbCgpO1xuICAvLyB9XG5cblxuICAvL3RoaXMgZnVudGlvbiBuZWVkIHRvIGJlIHVzZWRcbiAgLy8gaGFuZGxlUXVlc3Rpb25FdmVudChxdWVzKXtcbiAgLy8gICAgIC8vIFVwZGF0ZSB0aGUgcXVlc3Rpb25zIGFycmF5IHdpdGggdGhlIG5ldyBxdWVzdGlvblxuICAvLyAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNhbGVuZGFyUXVlc3Rpb24uZmluZEluZGV4KHEgPT4gcS5JZCA9PT0gcXVlcy5JZCk7XG4gIC8vICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAvLyAgICAgICAvLyBJZiBxdWVzdGlvbiBhbHJlYWR5IGV4aXN0cywgdXBkYXRlIGl0XG4gIC8vICAgICAgIHRoaXMuY2FsZW5kYXJRdWVzdGlvbltpbmRleF0gPSBxdWVzO1xuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgLy8gSWYgcXVlc3Rpb24gZG9lc24ndCBleGlzdCwgYWRkIGl0IHRvIHRoZSBhcnJheVxuICAvLyAgICAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24ucHVzaChxdWVzKTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIGNvbnNvbGUubG9nKHRoaXMuY2FsZW5kYXJRdWVzdGlvbik7XG4gIC8vICAgfVxuXG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIGdlbmVyYXRlSWQoKSB7XG4gICAgcmV0dXJuICdfJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgfVxuXG4gIGdldEVudHJ5S2V5cyhlbnRyeUdyb3VwOiBhbnkpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVudHJ5R3JvdXApO1xufVxuXG5yZW1vdmVDaGFyYWN0ZXJzKHF1ZXN0aW9uVGV4dDpzdHJpbmcpe1xuICBsZXQgdXBkYXRlZFRleHQgPSBxdWVzdGlvblRleHQ/LnJlcGxhY2UoLzxbXj5dKj4vZywgJycpO1xuICByZXR1cm4gdXBkYXRlZFRleHQ7XG59XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJhbGlnbi1jYWxlbmRhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXJcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJwcmV2aW91c01vbnRoKClcIj48PCBQcmV2aW91cyA+PjwvYnV0dG9uPlxuICAgICAgICAgIDxoMz57eyBjdXJyZW50RGF0ZSB8IGRhdGU6ICdNTU1NIHl5eXknIH19PC9oMz5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJuZXh0TW9udGgoKVwiPjw8IE5leHQgPj48L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWdyaWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5LW9mLXdlZWtcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNPZldlZWtcIj57eyBkYXkgfX08L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1kYXlcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGNhbGVuZGFyRGF5c1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5ub3QtY3VycmVudC1tb250aF09XCIhZGF5LmlzQ3VycmVudE1vbnRoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBhc3RdPVwiZGF5LmlzUGFzdFwiXG4gICAgICAgICAgICAgIFtjbGFzcy50b2RheV09XCJkYXkuaXNUb2RheVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5mdXR1cmVdPVwiZGF5LmlzRnV0dXJlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImRheS5pc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERheShkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXktbnVtYmVyXCI+e3sgZGF5LmRhdGUuZ2V0RGF0ZSgpIH19XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXkuZXZlbnRzLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVudHJ5LWluZGljYXRvclwiIFtjbGFzcy5zZWxlY3RdPVwiZGF5LmlzU2VsZWN0ZWRcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nRm9yPVwibGV0IGV2ZW50IG9mIGRheS5ldmVudHNcIiA+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbnRyeUdyb3VwIG9mIGV2ZW50LmVudHJpZXNcIiBjbGFzcz1cImV2ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2V5IG9mIGdldEVudHJ5S2V5cyhlbnRyeUdyb3VwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLlR5cGVfX2MgPT0gJ1RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlbnRyeUdyb3VwW2tleV0uaW5wdXQ/LnZhbHVlIHwgZGF0ZTogJ3Nob3J0VGltZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbnRyeUdyb3VwW2tleV0uVHlwZV9fYyAhPSAnVGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFwcG9pbmFwcG9pbnRtZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwb2ludG1lbnRzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxoND5BZGQgQXBwb2ludG1lbnQ8L2g0PlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzZWxlY3RlZERheVwiIChjbGljayk9XCJhZGRBcHBvaW50bWVudCgpXCI+QWRkPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS1WRCAwNlNlcDI0IGNhbGVuZGFyIHVwZGF0ZXMtLT4gXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0FwcG9pbm1lbnRTZWN0aW9uICYmIHNlbGVjdGVkRGF5Py5ldmVudHMubGVuZ3RoID4gMFwiIGNsYXNzPVwiYXBwb2ludG1lbnRzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxoND5BcHBvaW50bWVudHM8L2g0PlxuICAgICAgICAgIDxkaXYgICpuZ0Zvcj1cImxldCBldmVudCBvZiBzZWxlY3RlZERheT8uZXZlbnRzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudFwiICpuZ0Zvcj1cImxldCBlbnRyeUdyb3VwIG9mIGV2ZW50LmVudHJpZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBrZXkgb2YgZ2V0RW50cnlLZXlzKGVudHJ5R3JvdXApXCIgY2xhc3M9XCJlbnRyeS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbnRyeUdyb3VwW2tleV0uUXVlc3Rpb25fVGV4dF9fY1wiIGNsYXNzPVwiZW50cnktdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cmVtb3ZlQ2hhcmFjdGVycyhlbnRyeUdyb3VwW2tleV0uUXVlc3Rpb25fVGV4dF9fYyl9fTpcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5LXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBWRCAwOVNlcDI0LSBkYXRlIHR5cGUgYW5kIGxpbmsgdHlwZSB1cGRhdGVzICAgIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLlR5cGVfX2MgIT0gJ1RpbWUnICYmIGVudHJ5R3JvdXBba2V5XS5UeXBlX19jICE9ICdMaW5rJyYmIGVudHJ5R3JvdXBba2V5XS5UeXBlX19jICE9ICdEYXRlJ1wiPnt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS5UeXBlX19jID09ICdUaW1lJ1wiPnt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB8IGRhdGU6ICdzaG9ydFRpbWUnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLlR5cGVfX2MgPT0gJ0RhdGUnXCI+e3sgZW50cnlHcm91cFtrZXldLmlucHV0IHwgZGF0ZTogJ21lZGl1bURhdGUnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLlR5cGVfX2MgPT0gJ0xpbmsnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIicvLycrIGVudHJ5R3JvdXBba2V5XS5pbnB1dFwiIHRhcmdldD1cIl9ibGFua1wiPnt7cmVtb3ZlQ2hhcmFjdGVycyhlbnRyeUdyb3VwW2tleV0uUXVlc3Rpb25fVGV4dF9fYyl9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImVkaXRFdmVudChldmVudCxlbnRyeUdyb3VwKVwiPkVkaXQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRlbGV0ZUV2ZW50KGV2ZW50LmlkLGVudHJ5R3JvdXApXCI+RGVsZXRlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIDxhcHAtY3VzdG9tLW1vZGVsXG4gIFttb2RhbFRpdGxlXT1cIm1vZGFsVGl0bGVcIlxuICBbaXNNb2RhbE9wZW5dPVwiaXNNb2RhbE9wZW5cIlxuICBbbW9kYWxTaXplXT1cIm1vZGFsU2l6ZVwiXG4gIFtzYXZlQnV0dG9uVmFsdWVdPVwic2F2ZUJ1dHRvblZhbHVlXCJcbiAgW21vZGFsRm9vdGVyXT1cIm1vZGFsRm9vdGVyXCJcbiAgKHNhdmVCdXR0b25FbWl0KT1cIm9uU2F2ZSgpXCJcbiAgKGNhbmNlbEJ1dHRvbkVtaXQpPVwib25DYW5jZWwoKVwiXG4+XG48bGliLXF1ZXN0aW9uYm9vayBbcWJJdGVtXT1cInFiUmVmcmVuY2VCb29rXCIgW3F1ZXN0aW9uc109XCJyZWZlcmVuY2VRdWVzdGlvbnNcIiAoaGFuZGxlUXVlc3Rpb24pPVwiaGFuZGxlUXVlc3Rpb25FdmVudCgkZXZlbnQpXCI+PC9saWItcXVlc3Rpb25ib29rPlxuPG5nLXRlbXBsYXRlIGR5bmFtaWNDb21wb25lbnRIb3N0ID48L25nLXRlbXBsYXRlPlxuPC9hcHAtY3VzdG9tLW1vZGVsPiAtLT5cblxuXG4gIFxuICBcbiAgIl19
|
|
@@ -46,7 +46,7 @@ export class BookletComponent {
|
|
|
46
46
|
// HA 19DEC23 langDirection variable is created to assign the direction as class
|
|
47
47
|
langDirection = 'ltr'; // HA 28DEC23 making ltr as default direction
|
|
48
48
|
answerList = []; // HA 11-JAN-24 Answerlist to store the minimal value
|
|
49
|
-
dataBind
|
|
49
|
+
dataBind; // HA 18-JAN-24 To insert the endpoint value to the question
|
|
50
50
|
allEvents = []; // VD 06Sep24 calendar changes
|
|
51
51
|
constructor(sfService, dataService, storageService, route, sanitizer, changeService, el, i18nService) {
|
|
52
52
|
this.sfService = sfService;
|
|
@@ -520,4 +520,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
520
520
|
}], dataBind: [{
|
|
521
521
|
type: Input
|
|
522
522
|
}] } });
|
|
523
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2xldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYm9va2xldC9ib29rbGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9ib29rbGV0L2Jvb2tsZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FJYixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBa0J2QixNQUFNLE9BQU8sZ0JBQWdCO0lBbUNqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFRDtJQXpDQSxTQUFTLENBQVM7SUFDbEIsSUFBSSxDQUFTO0lBQ2IsR0FBRyxDQUFTO0lBQ1osV0FBVyxDQUFNO0lBQ2pCLHFCQUFxQixDQUFLO0lBQzFCLFVBQVUsQ0FBUTtJQUNsQixLQUFLLENBQVE7SUFDYixZQUFZLENBQVEsQ0FBRSxtQ0FBbUM7SUFDekQsaUJBQWlCLENBQU0sQ0FBQyx1Q0FBdUM7SUFDOUQsd0JBQXdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakUsVUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25ELHNCQUFzQixHQUFxQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3pFLDhCQUE4QjtJQUNuQixrQkFBa0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMzRCxtQkFBbUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUvRCxVQUFVLENBQWlCO0lBRTNCLE9BQU8sR0FBVSxFQUFFLENBQUM7SUFDcEIsTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUNqQixPQUFPLEdBQWlCLEVBQUUsQ0FBQztJQUMzQixnQkFBZ0IsR0FBUSxJQUFJLEdBQUcsRUFB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LEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0ksd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUVHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBZ0JFLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEVsZW1lbnRSZWYsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTYWxlc2ZvcmNlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zYWxlc2ZvcmNlLnNlcnZpY2VcIjtcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IEFjdGlvbk1ldGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FjdGlvbk1ldGEnO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tIFwiLi4vLi4vd3JhcHBlclwiO1xuaW1wb3J0IHsgQm9va2xldFdyYXBwZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWwvYm9va2xldFdyYXBwZXJcIjtcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5nZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvY2hhbmdlLnNlcnZpY2VcIjtcbi8vIEhBIDE5REVDMjMgaW1wb3J0ZWQgdHJhbnNsYXRpb24gc2VydmljZVxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vaTE4bi5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1ib29rbGV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jvb2tsZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ib29rbGV0LmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCb29rbGV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgYm9va2xldElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlcnY6IHN0cmluZztcbiAgQElucHV0KCkgdGtuOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJvb2tsZXRKU09OOiBhbnk7XG4gIEBJbnB1dCgpIGRyb3Bkb3duRGVwZW5kZW50RGF0YTphbnk7XG4gIEBJbnB1dCgpIGxhYmVsVmFsdWU6c3RyaW5nO1xuICBASW5wdXQoKSB0b2tlbjpzdHJpbmc7XG4gIEBJbnB1dCgpIGxhbmd1YWdlQ29kZTpzdHJpbmc7ICAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xuICBASW5wdXQoKSBmaWVsZFJlc3RyaWN0aW9uczogYW55OyAvLyBWRCAxMkp1bjI0IC0gZmllbGQgcGVybWlzc2lvbiBjaGFuZ2VcbiAgQE91dHB1dCgpIGhhbmRsZUJvb2tsZXRBY3Rpb25FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBoYW5kbGVQYWdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGhhZGxlRHJvcERvd25EZXBlbmRlbnQ6RXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIEBPdXRwdXQoKSBoYW5kbGVDYWxlbmRhckRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaGFuZGxlQ2FsZW5kYXJFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIG54dEJvb2tsZXQ6IEJvb2tsZXRXcmFwcGVyO1xuXG4gIHB1YmxpYyBib29rbGV0OiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgYWJJdGVtOiBhbnkgPSB7fTtcbiAgcHVibGljIGFjdGlvbnM6IEFjdGlvbk1ldGFbXSA9IFtdO1xuICBwdWJsaWMgYm9va1F1ZXN0aW9uc01hcDogYW55ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgdHJhbnNsYXRlTWFwOiBhbnkgPSBuZXcgTWFwKCk7ICAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xuICBwcml2YXRlIHNxT3B0aW9uczogYW55ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgaXNBbnN3ZXJGbGFnOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzcGlubmVyTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgc3Bpbm5lclR5cGU6IHN0cmluZztcbiAgLy8gSEEgMTlERUMyMyBsYW5nRGlyZWN0aW9uIHZhcmlhYmxlIGlzIGNyZWF0ZWQgdG8gYXNzaWduIHRoZSBkaXJlY3Rpb24gYXMgY2xhc3NcbiAgbGFuZ0RpcmVjdGlvbiA9ICdsdHInOyAvLyBIQSAyOERFQzIzIG1ha2luZyBsdHIgYXMgZGVmYXVsdCBkaXJlY3Rpb25cbiAgYW5zd2VyTGlzdCA9IFtdOyAvLyBIQSAxMS1KQU4tMjQgQW5zd2VybGlzdCB0byBzdG9yZSB0aGUgbWluaW1hbCB2YWx1ZVxuICBASW5wdXQoKSBkYXRhQmluZDogYW55ID0ge307IC8vIEhBIDE4LUpBTi0yNCBUbyBpbnNlcnQgdGhlIGVuZHBvaW50IHZhbHVlIHRvIHRoZSBxdWVzdGlvblxuICBhbGxFdmVudHM6YW55W109W107ICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2ZTZXJ2aWNlOiBTYWxlc2ZvcmNlU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgY2hhbmdlU2VydmljZTogQ2hhbmdlU2VydmljZSwgXG4gICAgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZVxuICApIHsgXG4gICAgdGhpcy5zcGlubmVyTmFtZSA9IFwic3AxXCI7XG4gICAgdGhpcy5zcGlubmVyVHlwZSA9IFwiYmFsbC1zcGluLWNsb2Nrd2lzZVwiO1xuICAgIGNvbnNvbGUubG9nKCdkcm9wZG93bkRlcGVuZGVudERhdGEnLHRoaXMuZHJvcGRvd25EZXBlbmRlbnREYXRhKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIFxuLy8gIFZEIDEySmFuMjQgZmllbGRSZXN0cmljdGlvbnMgZm9ybWF0ZSBcbiAgLy8gICB7XG4gIC8vICAgICBcImZpZWxkc1wiIDoge1xuICAvLyAgICAgICAgIFwidHJhbnNRYi0wMVwiIDogXCJyZWFkT25seVwiLFxuICAvLyAgICAgICAgIFwiVHJhbnNGaXIwMlwiIDogXCJcIixcbiAgLy8gICAgICAgICBcIlRyYW5zTGFzdDAzXCIgOiBcInJlYWRPbmx5XCIsXG4gIC8vICAgICAgICAgXCJiazItcTJcIiA6IFwiaGlkZVwiXG4gIC8vICAgICB9XG4gIC8vICB9XG5cbiAgICAvLyBIQSAxOC1KQU4tMjQgRHVtbXkgU3RhdGljIGRhdGEgZm9yIHRlc3RpbmdcbiAgICAvLyB0aGlzLmRhdGFCaW5kID0ge1xuICAgIC8vICAgXCJfaWRcIjogXCI2NTllZDAwMmVkNTFiYjgwNjE1NDQyNTVcIixcbiAgICAvLyAgIFwiY29tcGFueUlkXCI6IFwiNXVsbGgxQldwWXFudnpLaDlMXCIsXG4gICAgLy8gICBcIm5hbWVcIjogXCJBbCBZYXNtaW5lXCIsXG4gICAgLy8gICBcImNvZGVcIjogXCJjaGVja1wiLFxuICAgIC8vICAgXCJzdGF0dXNcIjogXCJJbi1Qcm9ncmVzc1wiLFxuICAgIC8vICAgXCJjcmVhdGVkQXRcIjogXCIyMDI0LTAxLTEwVDE3OjEyOjM0LjY4NlpcIixcbiAgICAvLyAgIFwidXBkYXRlZEF0XCI6IFwiMjAyNC0wMS0xMFQxOTo1MzowOC4xMzVaXCIsXG4gICAgLy8gICBcIl9fdlwiOiAwLFxuICAgIC8vICAgXCJvd25lclwiOiBcImNoZWNrXCIsXG4gICAgLy8gICBcImN1c3RvbWVyXCI6IFwiY2hlY2tcIixcbiAgICAvLyAgIFwiZGF0aVwiOiBcIjIwMjQtMDEtMjNUMTg6MzA6MDAuMDAwWlwiLFxuICAgIC8vICAgXCJ0aW1pXCI6IFwiMjAyNC0wMS0yM1QxODozMDowMC4wMDBaXCIsXG4gICAgLy8gXCJmTmFtZVwiOiBcIkhhaWRlclwiLFxuICAgIC8vIFwibE5hbWVcIjogXCJBbGlcIixcbiAgICAvLyBcImRlZmF1bHRBcHBcIjogXCJOWFRcIixcbiAgICAvLyBcImVtYWlsXCI6IFwiaGFpZGVyQGdtYWlsLmNvbVwiLFxuICAgIC8vIFwibG9jYXRpb25cIjoge2FkZHJlc3M6IFwiMTA3LCBBc2hvayBOYWdhciwgS2FkdWdvbmRhbmFoYWxsaSwgQmVuZ2FsdXJ1LCBLYXJuYXRha2EgNTYwMDQ1LCBJbmRpYVwiLFxuICAgIC8vICAgbGF0aXR1ZGU6IDEzLjAyMDA1NzUsXG4gICAgLy8gICBsb25naXR1ZGU6IDc3LjYxMjk4MTZ9LFxuICAgIC8vIFwibG9jYXRpb25cIjogXCIxMDcsIEFzaG9rIE5hZ2FyLCBLYWR1Z29uZGFuYWhhbGxpLCBCZW5nYWx1cnUsIEthcm5hdGFrYSA1NjAwNDUsIEluZGlhXCIsXG4gICAgLy8gXCJ0ZXh0QXJlYVwiOiBcIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bVwiLFxuICAgIC8vIH07XG4gICAgICAgIHRoaXMucHJvY2Vzc0Jvb2tsZXQoKTtcbiAgfVxuIC8vIFZEIE5PVjIzIC0gdXBkYXRlIHRoZSBqc29uIGRhdGEgd2hlbiBib29rbGV0SWQgYW5kIGJvb2tsZXRKU09OIGNoYW5nZXNcbiAgbmdPbkNoYW5nZXMoc2ltcGxlY2hhbmdlczpTaW1wbGVDaGFuZ2VzKSB7XG4gICAvLyBIQSAyM0pBTjI0IFRvIGF2b2lkIHVuZGVmaW5lZCBlcnJvclxuICAgaWYoc2ltcGxlY2hhbmdlc1snYm9va2xldElkJ10gfHwgKHNpbXBsZWNoYW5nZXNbJ2Jvb2tsZXRKU09OJ10gJiYgKHNpbXBsZWNoYW5nZXNbJ2Jvb2tsZXRKU09OJ10uY3VycmVudFZhbHVlICE9IG51bGwgfHwgc2ltcGxlY2hhbmdlc1snYm9va2xldEpTT04nXS5jdXJyZW50VmFsdWUgIT0gdW5kZWZpbmVkKSkgfHwgKHNpbXBsZWNoYW5nZXNbJ2RhdGFCaW5kJ10gJiYgKHNpbXBsZWNoYW5nZXNbJ2RhdGFCaW5kJ10uY3VycmVudFZhbHVlICE9IG51bGwgfHwgc2ltcGxlY2hhbmdlc1snZGF0YUJpbmQnXS5jdXJyZW50VmFsdWUgIT0gdW5kZWZpbmVkKSkgKXtcbiAgICAgIHRoaXMucHJvY2Vzc0Jvb2tsZXQoKTtcbiAgICB9XG4gICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbm5haXJlIG5nT25DaGFuZ2VzJyk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5ib29rbGV0KTtcbiAgICAvLyBpZih0aGlzLmJvb2tsZXQgPT0gdW5kZWZpbmVkIHx8IHRoaXMuYm9va2xldC5sZW5ndGggPT0gMCkge1xuICAgIC8vICAgdGhpcy5wcm9jZXNzQm9va2xldCgpO1xuICAgIC8vIH1cbiAgfVxuXG4gIHByb2Nlc3NCb29rbGV0KCkge1xuICAgIGlmICh0aGlzLmJvb2tsZXRJZCkge1xuICAgICAgaWYgKHRoaXMuYm9va2xldElkLmxlbmd0aCA9PSAxOCkge1xuICAgICAgICB0aGlzLnJlYWRCb29rbGV0KHRoaXMuYm9va2xldElkKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYodGhpcy5ib29rbGV0SlNPTikge1xuICAgICAgLy8gVHJ5IHRvIHBhc3MgYSB2YWx1ZSBmcm9tIEJhY2tlbmQgdG8gZGlmZmVyZW50aWF0ZSB0aGUgUXVlc3Rpb25Cb29rIFJlYWQgYW5kIEFuc3dlckJvb2sgUmVhZFxuICAgICAgdGhpcy5pc0Fuc3dlckZsYWcgPSB0cnVlO1xuXG4gICAgICBpZih0aGlzLmJvb2tsZXRKU09OICE9IG51bGwgfHwgdGhpcy5ib29rbGV0SlNPTiAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBTdG9yaW5nIHRoZSBBUEkgcmVzcG9uc2UgZm9yIGZ1dHVyZSB1c2VcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNhdmUodGhpcy5ib29rbGV0SlNPTik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYm9va2xldCA9IHRoaXMuYm9va2xldEpTT04ucmVjb3JkcztcbiAgICAgIHRoaXMuYWJJdGVtID0gdGhpcy5ib29rbGV0SlNPTi5hbnN3ZXJib29rO1xuXG4gICAgICAvLyBQcm9jZXNzIHRoZSBTdWIgUXVlc3Rpb24gT3B0aW9ucyAtIFRoaXMgc2hvdWxkIGJlIG1lcmdlZCB3aXRoIGJvb2tRdWVzdGlvbnNNYXAgaW4gZnV0dXJlXG4gICAgICBmb3IgKHZhciBzcSBpbiB0aGlzLmJvb2tsZXRKU09OLnNxT3B0aW9ucykge1xuICAgICAgICB0aGlzLnNxT3B0aW9ucy5zZXQoc3EsIHRoaXMuYm9va2xldEpTT04uc3FPcHRpb25zW3NxXSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2Nlc3MgdGhlIFF1ZXN0aW9uc1xuICAgICAgLy8gSEEgMjhERUMyMyB0aGlzIGFwcGxpZXMgZm9yIGJvb2tsZXRcbiAgICAgIC8vIEhBIDE3SkFOMjQgQWRkZWQgdGVybmFyeSBvcGVyYXRvciB0byBhdm9pZCB1bmRlZmluZWQgc2NlbmFyaW9cbiAgICAgIC8vIEhBIDA5RkVCMjQgQWRkaW5nIGNvbmRpdGlvbiB0byBhdm9pZCB1bmRlZmluZWQgZXJyb3JcbiAgICAgIGlmKHRoaXMuYm9va2xldEpTT04/LmJvb2tRdWVzdGlvbnNNYXAgJiYgT2JqZWN0LmtleXModGhpcy5ib29rbGV0SlNPTj8uYm9va1F1ZXN0aW9uc01hcCkubGVuZ3RoID4gMCl7XG4gICAgICAgIGZvciAodmFyIHZhbHVlIGluIHRoaXMuYm9va2xldEpTT04uYm9va1F1ZXN0aW9uc01hcCkge1xuICAgICAgICAgIHRoaXMuYm9va1F1ZXN0aW9uc01hcC5zZXQodmFsdWUsIHRoaXMuYm9va2xldEpTT04uYm9va1F1ZXN0aW9uc01hcFt2YWx1ZV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBIQSAyOERFQzIzIHRoaXMgYXBwbGllcyBmb3IgYm9vayBvciBxdWVzdGlvbnNcbiAgICAgIGVsc2V7XG4gICAgICAgIHZhciB2YWx1ZSA9ICcnO1xuICAgICAgICAvLyBIQSAwOUZFQjI0IEFkZGVkIHRlcm5hcnlcbiAgICAgICAgdmFsdWUgPSB0aGlzLmJvb2tsZXRKU09OLnJlY29yZHNbMF0/LklkO1xuICAgICAgICB0aGlzLmJvb2tRdWVzdGlvbnNNYXAuc2V0KHZhbHVlLCB0aGlzLmJvb2tsZXRKU09OLnF1ZXN0aW9uYm9vayk7XG4gICAgICB9XG4gICAgICBcbiAgICAgICAvLyBWRCAyMEp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xuICAgICAgIGZvciAodmFyIHZhbHVlIGluIHRoaXMuYm9va2xldEpTT04/LnRyYW5zbGF0aW9uTWFwKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlTWFwLnNldCh2YWx1ZSwgdGhpcy5ib29rbGV0SlNPTi50cmFuc2xhdGlvbk1hcFt2YWx1ZV0pO1xuICAgICAgfVxuXG4gICAgICBpZih0aGlzLmJvb2tsZXRKU09OLnF1ZXN0aW9uYm9vaz8uQWN0aW9uc19fYyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gSlNPTi5wYXJzZSh0aGlzLmJvb2tsZXRKU09OLnF1ZXN0aW9uYm9vay5BY3Rpb25zX19jKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSEEgMTlERUMyMyBsYW5nRGlyZWN0aW9uIHZhcmlhYmxlIHZhbHVlIGFzc2lnbmluZ1xuICAgIC8vIGNvbnNvbGUubG9nKCdTdHlsZV9fYycsIHRoaXMuYm9va2xldEpTT04ucXVlc3Rpb25ib29rLlN0eWxlX19jKTtcbiAgICBpZih0aGlzLmJvb2tsZXRKU09OPy5xdWVzdGlvbmJvb2s/LlN0eWxlX19jKXtcbiAgICAgIHZhciBzdHlsZSA9IEpTT04ucGFyc2UoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmJvb2tsZXRKU09OPy5xdWVzdGlvbmJvb2s/LlN0eWxlX19jKSkpO1xuICAgICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gc3R5bGU/LmRpcmVjdGlvbjtcbiAgICB9XG4gICAgZWxzZSBpZih0aGlzLmJvb2tsZXRKU09OPy5yZWNvcmRzWzBdPy5TdHlsZV9fYyl7XG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuYm9va2xldEpTT04/LnJlY29yZHNbMF0/LlN0eWxlX19jKSk7XG4gICAgICB0aGlzLmxhbmdEaXJlY3Rpb24gPSBzdHlsZT8uZGlyZWN0aW9uO1xuICAgIH1cblxuICAgIC8vIEhBIDE4LUpBTi0yNCBUaGUgY29uZGl0aW9uIGlzIHVzZWQgZm9yIEJpbmQtSW4gTG9naWMgXG4gICAgdGhpcy5oYW5kbGVDb21wbGV0ZUJvb2tsZXQodGhpcy5ib29rbGV0SlNPTik7IFxuICB9XG4gLy8gVkQgMTJKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcbiAgcHJpdmF0ZSByZWFkQm9va2xldCA9ICh1dWlkOiBzdHJpbmcpID0+IHtcbiAgICBpZih0aGlzLnNlcnYgPT0gXCJhcGlcIikge1xuICAgICAgdGhpcy5kYXRhU2VydmljZS5nZXRBUElEYXRhKFxuICAgICAgICB0aGlzLnRrbixcbiAgICAgICAgW1wiQm9va2xldFwiLCBcInJlYWRcIiwgdXVpZCx0aGlzLmxhbmd1YWdlQ29kZV0sXG4gICAgICAgIHRoaXMuc3VjY2Vzc1JlYWRCb29rbGV0LFxuICAgICAgICB0aGlzLmZhaWx1cmVSZWFkQm9va2xldFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHBhcmFtTWFwID0geyBjcmVhdGVBbnN3ZXJCb29rRmxhZzogZmFsc2UgfTtcbiAgICAgIHBhcmFtTWFwWydjX19xYl9pZCddID0gJyc7XG4gICAgICBwYXJhbU1hcFtcImNfX3JlY29yZF9pZFwiXSA9ICcnO1xuICAgICAgdGhpcy5zZlNlcnZpY2UucmVtb3RlQWN0aW9uKFxuICAgICAgICBcIk54dENvbnRyb2xsZXIubmV3UHJvY2Vzc1wiLFxuICAgICAgICBbXCJCb29rbGV0XCIsIFwicmVhZFwiLCB1dWlkLEpTT04uc3RyaW5naWZ5KHBhcmFtTWFwKSx0aGlzLmxhbmd1YWdlQ29kZV0sXG4gICAgICAgIHRoaXMuc3VjY2Vzc1JlYWRCb29rbGV0LFxuICAgICAgICB0aGlzLmZhaWx1cmVSZWFkQm9va2xldFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1Y2Nlc3NSZWFkQm9va2xldCA9IChyZXNwb25zZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdJbnNpZGUgdGhlIHN1Y2Nlc3NSZWFkQm9va2xldCcpO1xuICAgIC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICBpZihyZXNwb25zZSAhPSBudWxsIHx8IHJlc3BvbnNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgLy8gU3RvcmluZyB0aGUgQVBJIHJlc3BvbnNlIGZvciBmdXR1cmUgdXNlXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNhdmUocmVzcG9uc2UpO1xuXG4gICAgICAvLyBUcnkgdG8gcGFzcyBhIHZhbHVlIGZyb20gQmFja2VuZCB0byBkaWZmZXJlbnRpYXRlIHRoZSBRdWVzdGlvbkJvb2sgUmVhZCBhbmQgQW5zd2VyQm9vayBSZWFkXG4gICAgICAvLyB0aGlzLmlzQW5zd2VyRmxhZyA9IHRydWU7XG4gICAgICBcbiAgICAgIHRoaXMuYm9va2xldCA9IHJlc3BvbnNlLnJlY29yZHM7XG4gICAgICB0aGlzLmFiSXRlbSA9IHJlc3BvbnNlLmFuc3dlcmJvb2s7XG4gICAgICBcbiAgICAgIC8vIFByb2Nlc3MgdGhlIFN1YiBRdWVzdGlvbiBPcHRpb25zIC0gVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggYm9va1F1ZXN0aW9uc01hcCBpbiBmdXR1cmVcbiAgICAgIGZvciAodmFyIHNxIGluIHJlc3BvbnNlLnNxT3B0aW9ucykge1xuICAgICAgICB0aGlzLnNxT3B0aW9ucy5zZXQoc3EsIHJlc3BvbnNlLnNxT3B0aW9uc1tzcV0pO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzIHRoZSBRdWVzdGlvbnNcbiAgICAgIGZvciAodmFyIHZhbHVlIGluIHJlc3BvbnNlLmJvb2tRdWVzdGlvbnNNYXApIHtcbiAgICAgICAgdGhpcy5ib29rUXVlc3Rpb25zTWFwLnNldCh2YWx1ZSwgcmVzcG9uc2UuYm9va1F1ZXN0aW9uc01hcFt2YWx1ZV0pO1xuICAgICAgfVxuIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gICAgICBmb3IgKHZhciB2YWx1ZSBpbiByZXNwb25zZS50cmFuc2xhdGlvbk1hcCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZU1hcC5zZXQodmFsdWUsIHJlc3BvbnNlLnRyYW5zbGF0aW9uTWFwW3ZhbHVlXSk7XG4gICAgICB9XG5cbiAgICAgIGlmKHJlc3BvbnNlLnF1ZXN0aW9uYm9vaz8uQWN0aW9uc19fYyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gSlNPTi5wYXJzZShyZXNwb25zZS5xdWVzdGlvbmJvb2suQWN0aW9uc19fYyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEhBIDE5REVDMjMgbGFuZ0RpcmVjdGlvbiB2YXJpYWJsZSB2YWx1ZSBhc3NpZ25pbmdcbiAgICBpZihyZXNwb25zZT8ucXVlc3Rpb25ib29rPy5TdHlsZV9fYyl7XG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2U/LnF1ZXN0aW9uYm9vaz8uU3R5bGVfX2MpKSk7XG4gICAgICB0aGlzLmxhbmdEaXJlY3Rpb24gPSBzdHlsZT8uZGlyZWN0aW9uO1xuICAgIH1cbiAgICBlbHNlIGlmKHJlc3BvbnNlPy5yZWNvcmRzWzBdPy5TdHlsZV9fYyl7XG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2U/LnJlY29yZHNbMF0/LlN0eWxlX19jKSkpO1xuICAgICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gc3R5bGU/LmRpcmVjdGlvbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZhaWx1cmVSZWFkQm9va2xldCA9IChyZXNwb25zZSkgPT4ge1xuXG4gIH1cblxuICBoYW5kbGVCb29rbGV0QWN0aW9uQ2xpY2soYWN0aW9uOkFjdGlvbk1ldGEpIHtcbiAgICAvLyBIQSAxOUpBTjI0IEFjdGlvbiBjaGFuZ2VzXG4gICAgdGhpcy5hbnN3ZXJMaXN0ID0gW107XG4gICAgdGhpcy5kYXRhQmluZCA9IFtdOyAvLyBIQSAxMkZFQjI0IENsZWFyaW5nIGRhdGFCaW5kIHVwb24gYnV0dG9uIGFjdGlvbiBzbyB0aGF0IGRhdGFCaW5kIHZhbHVlIHdpbGwgbm90IG92ZXJyaWRlIHRoZSBjaGFuZ2VkIHZhbHVlXG4gICAgY29uc29sZS5sb2coYWN0aW9uKTtcbiAgICBsZXQgZGF0YVRvUGFyZW50ID0ge307XG4gICAgbGV0IHZhbGlkRm9ybSA9IHRydWU7IC8vIFZEIDAxQXVnMjQgLSB2YWxpZGF0aW9uIGNoYW5nZVxuICAgIC8vIEhBIDIySkFOMjQgdGhpcyBjaGFuZ2UgdG8gbWFrZSBjbG9zZSBldmVudCB3b3JrXG4gICAgZGF0YVRvUGFyZW50WydhY3Rpb24nXSA9IGFjdGlvbi5ldmVudHRvZW1pdDtcbiAgICBpZighKGFjdGlvbi5ldmVudHRvZW1pdCA9PT0gJ2Nsb3NlJyB8fCBhY3Rpb24uZXZlbnR0b2VtaXQgPT09ICdwcmludCcpKXtcbiAgICAgIC8vIEhBIDE4LUpBTi0yNCBTZW5kaW5nIHRoZSBjb21wbGV0ZSBqc29uIGRhdGEgYWxzbyBcbiAgICAgIGRhdGFUb1BhcmVudFsnanNvbkJvb2snXSA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCk7XG4gICAgICAvLyBIQSAxN0pBTjI0IG54dElkIHRvIGRhdGFQYXJlbnQgb2JqZWN0XG4gICAgICBpZih0aGlzLmJvb2tsZXRKU09OKXtcbiAgICAgICAgZGF0YVRvUGFyZW50WydueHRJZCddID0gT2JqZWN0LmtleXModGhpcy5ib29rbGV0SlNPTj8uYm9va1F1ZXN0aW9uc01hcClbMF07XG4gICAgICB9XG4gICAgICAvLyBIQSAxMS1KQU4tMjQgTWluaW1pemluZyB0aGUgdmFsdWUgd2hpY2ggaGFzIHRvIGJlIHBhc3NlZCB0byB0aGUgc2VydmVyXG4gICAgICB0aGlzLmhhbmRsZUNvbXBsZXRlQm9va2xldChkYXRhVG9QYXJlbnRbJ2pzb25Cb29rJ10pO1xuICAgICAgZGF0YVRvUGFyZW50WydkYXRhJ10gPSB0aGlzLmFuc3dlckxpc3QgPyB0aGlzLmFuc3dlckxpc3QgOiBkYXRhVG9QYXJlbnRbJ2RhdGEnXTtcbiAgICAgIC8vIHdoZW4gY2xpY2tpbmcgdGhlIHN1Ym1pdCBidXR0b24gdmFsaWRhdGluZyB0aGUgcmVxdWlyZWQgZmllbGRzXG4gICAgICBmb3IobGV0IGtleSBpbiBkYXRhVG9QYXJlbnRbJ2pzb25Cb29rJ10uYm9va1F1ZXN0aW9uc01hcCl7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRCb29rICA9IGRhdGFUb1BhcmVudFsnanNvbkJvb2snXS5ib29rUXVlc3Rpb25zTWFwW2tleV07XG4gICAgICAgIGN1cnJlbnRCb29rLlF1ZXN0aW9uc19fci5yZWNvcmRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAvLyBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2VcbiAgICAgICAgICBpZihlbGVtZW50LklzX09wdGlvbmFsX19jICYmIGRhdGFUb1BhcmVudFsnYWN0aW9uJ10gPT0gJ3N1Ym1pdCcgJiYgIWVsZW1lbnQuaW5wdXQgJiYgIWVsZW1lbnQuSXNfSGlkZV9fYyAmJiBlbGVtZW50LlR5cGVfX2MgIT0gJ0xhYmVsJyAmJiBlbGVtZW50LlR5cGVfX2MgIT0gJ0ltYWdlJyApe1xuICAgICAgICAgICAgZWxlbWVudC5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICB2YWxpZEZvcm0gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlU2VydmljZS5zdWJtaXRDaGFuZ2UoZWxlbWVudC5JZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFZEIDAyQXVnMjQgLSBjbGVhciBhY3Rpb24gY2hhbmdlc1xuICAgICAgICAgIGlmKGRhdGFUb1BhcmVudFsnYWN0aW9uJ10gPT0gJ2NsZWFyJyl7XG4gICAgICAgICAgICBpZihlbGVtZW50LlR5cGVfX2MgPT0gJ0Ryb3Bkb3duJyB8fCBlbGVtZW50LlR5cGVfX2MgPT0gJ0xvY2F0aW9uJyB8fCBlbGVtZW50LlR5cGVfX2MgPT0gJ1JhZGlvJykge1xuICAgICAgICAgICAgICBlbGVtZW50LnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9ZWxzZSBpZihlbGVtZW50LlR5cGVfX2MgPT0gJ0ZpbGUnKXtcbiAgICAgICAgICAgICAgZWxlbWVudC5pbnB1dCA9IFtdO1xuICAgICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgICBlbGVtZW50LmlucHV0ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFZEIDEzTUFZMjQgLSBwcmludCBRUiBidXR0b24gY2hhbmdlc1xuICAgIGlmKGFjdGlvbi5ldmVudHRvZW1pdCA9PT0gJ3ByaW50Jyl7XG4gICAgICBkYXRhVG9QYXJlbnRbJ2FjdGlvbkRhdGEnXSA9IGFjdGlvblsnZGF0YSddO1xuICAgIH1cbiAgICAvLyBIQSAyM0pBTjI0IFRvIGNhbGwgdGhlIGFjdGlvbiBvbiBhbnkgZXZlbnRcbiAgIC8vICBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2VcbiAgICBpZih2YWxpZEZvcm0pe1xuICAgICAgdGhpcy5oYW5kbGVCb29rbGV0QWN0aW9uRXZlbnQuZW1pdChkYXRhVG9QYXJlbnQpO1xuICAgIH1lbHNlIHtcbiAgICAgIGRhdGFUb1BhcmVudFsnYWN0aW9uJ10gPSAnZXJyb3InO1xuICAgICAgdGhpcy5oYW5kbGVCb29rbGV0QWN0aW9uRXZlbnQuZW1pdChkYXRhVG9QYXJlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhBIDE4LUpBTi0yNCBoYW5kbGVDb21wbGV0ZUJvb2tsZXQgaXMgdG8gc2ltcGxpZnkgdGhlIGxvZ2ljXG4gIGhhbmRsZUNvbXBsZXRlQm9va2xldChjb21wbGV0ZUJvb2tsZXQpe1xuICAgIGlmKE9iamVjdC5rZXlzKGNvbXBsZXRlQm9va2xldD8uYm9va1F1ZXN0aW9uc01hcCA/PyB7fSkubGVuZ3RoID09PSAwKXsgLy8gSEEgMTEtSkFOLTI0IElmIGNvbmRpdGlvbiB0byBsb2FkIGJvb2tsZXRcbiAgICAgIHRoaXMuaGFuZGxlQm9vayhjb21wbGV0ZUJvb2tsZXQ/LnF1ZXN0aW9uYm9vaz8uUXVlc3Rpb25zX19yKTtcbiAgICB9XG4gICAgZWxzZXsgLy8gSEEgMTEtSkFOLTI0IFRvIGxvYWQgYm9vayBxdWVzdGlvbnNcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGNvbXBsZXRlQm9va2xldC5ib29rUXVlc3Rpb25zTWFwKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IGNvbXBsZXRlQm9va2xldC5ib29rUXVlc3Rpb25zTWFwW2tleV07XG4gICAgICAgIGlmKHZhbC5UeXBlX19jID09PSAnQm9vaycpe1xuICAgICAgICAgIHRoaXMuaGFuZGxlQm9vayh2YWwuUXVlc3Rpb25zX19yKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgIHRoaXMuaGFuZGxlUXVlcyh2YWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSEEgMTEtSkFOLTI0IGhhbmRsZUJvb2sgbG9hZHMgdGhlIEJvb2tcbiAgaGFuZGxlQm9vayhxdWVzTGlzdDogYW55KXtcbiAgICBxdWVzTGlzdD8ucmVjb3Jkcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYoZWxlbWVudC5UeXBlX19jID09PSAnQm9vaycpe1xuICAgICAgICAvLyBIQSAyNEpBTjI0IEZldGNoaW5nIGZyb20gUUIgcmVmZXJlbmNlXG4gICAgICAgIHZhciBib29rID0gSlNPTi5wYXJzZShlbGVtZW50LlFCX1JlZmVyZW5jZV9RdWVzdGlvbnNfX2MpO1xuICAgICAgICBib29rLnF1ZXN0aW9uYm9vay5RdWVzdGlvbnNfX3IucmVjb3Jkcy5mb3JFYWNoKHF1ZXMgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlUXVlcyhxdWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBlbHNle1xuICAgICAgICB0aGlzLmhhbmRsZVF1ZXMoZWxlbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gVkQgMTNTZXAyNCAtIGRhdGFiaW5kIGNoYW5nZXNcbiAgICBpZih0aGlzLmRhdGFCaW5kKXtcbiAgICAgIHRoaXMuY2hhbmdlU2VydmljZS5kYXRhQ2hhbmdlcygnZGF0YUJpbmQnKTtcbiAgICB9XG4gIH1cblxuICAvLyBIQSAxMS1KQU4tMjQgaGFuZGxlUXVlcyB0byBsb2FkIHF1ZXN0aW9uXG4gIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICBoYW5kbGVRdWVzKHF1ZXM6IGFueSl7XG4gICAgLy8gSEEgMTktSkFOLTI0IElmIGNvbmRpdGlvbiBpcyBmb3IgYmluZC1pbiwgY29ycmVjdGlvblxuICAgIC8vIEhBIDA5RkVCMjQgQWRkaW5nIGNvbmRpdGlvbiB0byBhdm9pZCB1bmRlZmluZWQgZXJyb3JcbiAgICBpZih0aGlzLmRhdGFCaW5kICYmIE9iamVjdC5rZXlzKHRoaXMuZGF0YUJpbmQpLmxlbmd0aCA+IDApe1xuICAgICAgZm9yKGxldCBba2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuZGF0YUJpbmQpKXtcbiAgICAgICAgbGV0IHZhbHVlOmFueSA9IHZhbDtcbiAgICAgICAgaWYocXVlcy5SZWZlcmVuY2VfRmllbGRfX2MgPT09IGtleSl7XG4gICAgICAgICAgaWYocXVlcy5UeXBlX19jID09PSAnRHJvcGRvd24nIHx8IHF1ZXMuVHlwZV9fYyA9PT0gJ1JhZGlvJyApe1xuICAgICAgICAgICAgdGhpcy5zcU9wdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgaWYoZWxlbWVudFsnUmVmZXJlbmNlX0ZpZWxkX19jJ10gPT09IGtleSl7XG4gICAgICAgICAgICAgICAgZWxlbWVudFsnaW5wdXQnXSA9IHF1ZXMuaW5wdXQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBlbGVtZW50WydzZWxlY3RlZFZhbHVlJ10gPSBxdWVzLnNlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEhBIDI0SkFOMjQgVG8gYmluZC1pbiBEYXRlIGFuZCBEYXRlVGltZVxuICAgICAgICAgIGVsc2UgaWYocXVlcy5UeXBlX19jID09PSAnRGF0ZScgfHwgcXVlcy5UeXBlX19jID09ICdEYXRlVGltZScpe1xuICAgICAgICAgICAgcXVlcy5pbnB1dCA9IG5ldyBEYXRlKHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBIQSAxMkZFQjI0IFRvIGJpbmQtaW4gTG9jYXRpb24gVHlwZVxuICAgICAgICAgIGVsc2UgaWYocXVlcy5UeXBlX19jID09PSAnTG9jYXRpb24nKXtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2YWx1ZSAnLCB2YWx1ZSk7XG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gdmFsdWU7XG4gICAgICAgICAgICBxdWVzLnNlbGVjdGVkVmFsdWUgPSB2YWx1ZVsnYWRkcmVzcyddID8gdmFsdWVbJ2FkZHJlc3MnXSA6IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzIGZvciBkYXRhIGJpbmRJblxuICAgICAgICAgIGVsc2UgaWYocXVlcy5UeXBlX19jID09PSAnQ2FsZW5kYXInKXtcbiAgICAgICAgICAgIGxldCBlbnRyaWVzID0gSlNPTi5wYXJzZShxdWVzWydGaWVsZHNfTWV0YV9fYyddKTtcbiAgICAgICAgICAgIGlmKGVudHJpZXMpe1xuICAgICAgICAgICAgICBsZXQgcmVmZXJlbmNlUXVlc3Rpb25zID0gW107XG4gICAgICAgICAgICAgIGlmKGVudHJpZXMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgIGlmKGVsZW1lbnQucXVlc3Rpb25SZWZlcmVuY2Upe1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgcVJlZmVyZW5jZSA9IEpTT04ucGFyc2UoZWxlbWVudC5xdWVzdGlvblJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZVF1ZXN0aW9ucy5wdXNoKHFSZWZlcmVuY2U/LnF1ZXN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYocmVmZXJlbmNlUXVlc3Rpb25zLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgIHZhbHVlPy5mb3JFYWNoKGNhbGVuZGFyQXJyYXkgPT4ge1xuICAgICAgICAgICAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShjYWxlbmRhckFycmF5LmRhdGUpO1xuICAgICAgICAgICAgICAgICAgICBjYWxlbmRhckFycmF5LmVudHJpZXMuZm9yRWFjaChpbnB1dEVudHJ5PT57XG4gICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoaW5wdXRFbnRyeSkpe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlUXVlc3Rpb25zLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZihmaWVsZC5SZWZlcmVuY2VfRmllbGRfX2MgPT0gayl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZihmaWVsZC5UeXBlX19jID09PSAnRGF0ZScgfHwgZmllbGQuVHlwZV9fYyA9PSAnRGF0ZVRpbWUnIHx8IGZpZWxkLlR5cGVfX2MgPT0gJ1RpbWUnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5pbnB1dCA9IG5ldyBEYXRlKHYudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWlmKGZpZWxkLlR5cGVfX2MgPT09ICdEcm9wZG93bicgfHwgZmllbGQuVHlwZV9fYyA9PT0gJ1JhZGlvJyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5zZWxlY3RlZFZhbHVlID0gdjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmlucHV0ID0gdjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5pbnB1dCA9IHY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pICBcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudChkYXRlLHJlZmVyZW5jZVF1ZXN0aW9ucyk7XG4gICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gdGhpcy5hbGxFdmVudHMubGVuZ3RoID4gMCA/IHRoaXMuYWxsRXZlbnRzIDogJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYW5zd2VyTGlzdC5wdXNoKHF1ZXMpOyAvLyBIQSAxMkZFQjI0IFRvIGdpdmUgdGhlIHZhbHVlIGZvciBkYXRhXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIGNvbnN0IHF1ZXN0aW9uID0ge307XG4gICAgICBxdWVzdGlvblsnaWQnXSA9IHF1ZXMuSWQ7XG4gICAgICAvLyBxdWVzdGlvblsnUXVlc3Rpb25fX2MnXSA9IHF1ZXMuUXVlc3Rpb25fX2M7XG4gICAgICBxdWVzdGlvblsnaW5wdXQnXSA9IHF1ZXMuaW5wdXQ7XG4gICAgICAvLyBIQSAxMkZFQjI0IFRvIGJpbmQtb3V0IExvY2F0aW9uIFR5cGVcbiAgICAgIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0xvY2F0aW9uJyl7XG4gICAgICAgIHF1ZXN0aW9uWydpbnB1dCddID0gcXVlcy5pbnB1dCA/IHF1ZXMuaW5wdXQgOiBxdWVzLnNlbGVjdGVkVmFsdWU7XG4gICAgICB9XG4gICAgICBxdWVzdGlvblsnVHlwZV9fYyddID0gcXVlcy5UeXBlX19jO1xuICAgICAgcXVlc3Rpb25bJ1F1ZXN0aW9uX05vX19jJ10gPSBxdWVzLlF1ZXN0aW9uX05vX19jO1xuICAgICAgcXVlc3Rpb25bJ1JlZmVyZW5jZV9GaWVsZF9fYyddID0gcXVlcz8uUmVmZXJlbmNlX0ZpZWxkX19jO1xuICAgICAgdGhpcy5hbnN3ZXJMaXN0LnB1c2gocXVlc3Rpb24pO1xuICAgIH1cbiAgfVxuXG4vLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXMgZm9yIGRhdGEgYmluZEluXG4gIGFkZEV2ZW50KGRheTogYW55LCBlbnRyeVF1ZXMpIHtcbiAgICAvLyBUcmFuc2Zvcm0gbmV3IGVudHJpZXMgaW50byB0aGUgZGVzaXJlZCBmb3JtYXRcbiAgICBjb25zdCBuZXdFbnRyaWVzID0gZW50cnlRdWVzLnJlZHVjZSgoYWNjLCBxKSA9PiB7XG4gICAgICAgIGFjY1txLklkXSA9IHsgLi4ucSB9O1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcblxuICAgIC8vIEZpbmQgaWYgYW4gZXZlbnQgYWxyZWFkeSBleGlzdHMgZm9yIHRoZSBnaXZlbiBkYXRlXG4gICAgY29uc3QgZXhpc3RpbmdFdmVudCA9IHRoaXMuYWxsRXZlbnRzLmZpbmQoZXZlbnQgPT4gZXZlbnQuZGF0ZS50b0RhdGVTdHJpbmcoKSA9PT0gZGF5LnRvRGF0ZVN0cmluZygpKTtcblxuICAgIGlmIChleGlzdGluZ0V2ZW50KSB7XG4gICAgICAgIC8vIElmIHRoZSBldmVudCBleGlzdHMsIHB1c2ggdGhlIG5ldyBlbnRyaWVzIHRvIHRoZSBleGlzdGluZyBlbnRyaWVzXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nRW50cmllcyA9IGV4aXN0aW5nRXZlbnQuZW50cmllcy5tYXAoZW50cnkgPT4gKHsgLi4uZW50cnkgfSkpO1xuICAgICAgICBleGlzdGluZ0VudHJpZXMucHVzaChuZXdFbnRyaWVzKTtcbiAgICAgICAgZXhpc3RpbmdFdmVudC5lbnRyaWVzID0gZXhpc3RpbmdFbnRyaWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBldmVudCBpZiBpdCBkb2Vzbid0IGV4aXN0IGZvciB0aGUgZ2l2ZW4gZGF0ZVxuICAgICAgICBjb25zdCBuZXdFdmVudCA9IHtcbiAgICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICAgIGRhdGU6IGRheSxcbiAgICAgICAgICAgIGVudHJpZXM6IFtuZXdFbnRyaWVzXSAvLyBXcmFwIHRoZSBuZXcgZW50cmllcyBpbiBhbiBhcnJheVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFsbEV2ZW50cy5wdXNoKG5ld0V2ZW50KTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnYWxsIGV2ZW50cyBib29rbGV0Jyk7XG4gICAgY29uc29sZS5sb2codGhpcy5hbGxFdmVudHMpO1xufVxuXG5cbiAgcmVhZFF1ZXN0aW9ucyhxYklkOiBzdHJpbmcpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIEJvb2tsZXRDb21wb25lbnQucmVhZFF1ZXN0aW9ucyAnICsgcWJJZCk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5ib29rUXVlc3Rpb25zTWFwLnNpemUpO1xuICAgIGxldCBxdWVzdGlvbnMgPSBbXTtcbiAgICAvLyBIQSAzMS1KQU4tMjQgQWRkZWQgdGVybmFyeSB0byBhdm9pZCB1bmRlZmluZWRcbiAgICBmb3IodmFyIHNxIGluIHRoaXMuYm9va1F1ZXN0aW9uc01hcD8uZ2V0KHFiSWQpPy5RdWVzdGlvbnNfX3I/LnJlY29yZHMpIHtcbiAgICAgIGxldCBxOiBRdWVzdGlvbiA9IHRoaXMuYm9va1F1ZXN0aW9uc01hcD8uZ2V0KHFiSWQpLlF1ZXN0aW9uc19fci5yZWNvcmRzW3NxXTtcbiAgICAgIC8vIEhBIDA5RkVCMjQgaWYgcXVlc3Rpb24gaXMgdGhlcmUgcHJvY2Vzc1xuICAgICAgaWYocSl7XG4gICAgICAgIGlmKChxLlR5cGVfX2MgPT0gJ0Ryb3Bkb3duJyB8fCBxLlR5cGVfX2MgPT0gJ1JhZGlvJykgJiYgdGhpcy5zcU9wdGlvbnMuZ2V0KHEuSWQpKSB7XG4gICAgICAgICAgcXVlc3Rpb25zLnB1c2godGhpcy5zcU9wdGlvbnMuZ2V0KHEuSWQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBxdWVzdGlvbnMucHVzaChxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZEIDEySnVuMjQgZmllbGQgcGVybWlzaXNpb24gY2hhbmdlc1xuICAgIGlmICh0aGlzLmZpZWxkUmVzdHJpY3Rpb25zKSB7XG4gICAgICBjb25zdCBmaWVsZFJlc3RyaWN0aW9ucyA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXModGhpcy5maWVsZFJlc3RyaWN0aW9ucy5maWVsZHMpKTtcbiAgICAgIHF1ZXN0aW9ucy5mb3JFYWNoKHF1ZXMgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3RyaWN0aW9uID0gZmllbGRSZXN0cmljdGlvbnMuZ2V0KHF1ZXMuVW5pcXVlX0lkZW50aWZpZXJfX2MpO1xuICBcbiAgICAgICAgICBpZiAocmVzdHJpY3Rpb24pIHtcbiAgICAgICAgICAgICAgcXVlcy5SZWFkX09ubHlfX2MgPSByZXN0cmljdGlvbiA9PT0gJ3JlYWRPbmx5JztcbiAgICAgICAgICAgICAgcXVlcy5Jc19IaWRlX19jID0gcmVzdHJpY3Rpb24gPT09ICdoaWRlJztcbiAgICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuICAgIC8vIGNvbnNvbGUubG9nKHF1ZXN0aW9ucyk7XG4gICAgcmV0dXJuIHF1ZXN0aW9ucztcbiAgfVxuIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHJlYWRUcmFuc1F1ZXN0aW9ucyhxYklkOiBzdHJpbmcpe1xuICAgIGxldCByZWNvcmQgPSBbXTtcbiAgICAgIGxldCB0cmFuc2xhdGVSZWNvcmQgPSB0aGlzLnRyYW5zbGF0ZU1hcC5nZXQocWJJZCk7XG4gICAgIGlmKHRyYW5zbGF0ZVJlY29yZCAmJiB0cmFuc2xhdGVSZWNvcmQubGVuZ3RoID4gMCkge1xuICAgICAgdHJhbnNsYXRlUmVjb3JkLmZvckVhY2gobGFuUmVjID0+IHtcbiAgICAgICAgaWYobGFuUmVjLmxhbmd1YWdlQ29kZSA9PSB0aGlzLmxhbmd1YWdlQ29kZSl7XG4gICAgICAgICAgIHJlY29yZCA9IGxhblJlYy5maWVsZHNcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgIH1cbiAgICAgIHJldHVybiByZWNvcmQ7XG4gIH1cblxuICBnZXRUZXh0KHZhbHVlKSB7XG4gICAgdmFyIGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcodmFsdWUsIFwidGV4dC9odG1sXCIpO1xuICAgIC8vY29uc29sZS5sb2coIGRvYy5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnQpO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcbiAgICAgIGRvYy5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnRcbiAgICApO1xuICB9XG4gIGdldERyb3BEb3duKGV2ZW50OmFueSl7XG4gICAgdGhpcy5oYWRsZURyb3BEb3duRGVwZW5kZW50LmVtaXQoZXZlbnQpO1xuICB9XG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIGdldENhbGVuZGFyRGF0ZShldmVudDphbnkpe1xuICAgIHRoaXMuaGFuZGxlQ2FsZW5kYXJEYXRlLmVtaXQoZXZlbnQpO1xuICB9XG4gIGdldENhbGVuZGFyRXZlbnQoZXZlbnQ6YW55KXtcbiAgICB0aGlzLmhhbmRsZUNhbGVuZGFyRXZlbnQuZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjxuZ3gtc3Bpbm5lciBzaXplPVwibWVkaXVtXCIgW25hbWVdPVwic3Bpbm5lck5hbWVcIiBbdHlwZV09XCJzcGlubmVyVHlwZVwiPjwvbmd4LXNwaW5uZXI+XG48IS0tIEJvb2tsZXQgSGFuZGxpbmctLT5cbjwhLS0gSEEgMTlERUMyMyBGb3IgRGlyZWN0aW9uIC0tPlxuPGRpdiAqbmdGb3I9XCJsZXQgcWIgb2YgYm9va2xldFwiIFtuZ0NsYXNzXT1cImxhbmdEaXJlY3Rpb25cIj5cbiAgICA8IS0tIE1SIENvbW1lbnRlZCBiZWxvdyBjb2RlIHRvIGVuc3VyZSBzaW5nbGUgSlNPTiBmb3IgVU5DT05ESVRJT05BTCBCb29rbGV0cyAtLT5cbiAgICA8IS0tIDxsaWItcXVlc3Rpb25uYWlyZSBbc2Vydl09XCJzZXJ2XCIgW3FiSWRdPVwicWIuSWRcIiBbdGtuXT1cInRrblwiPjwvbGliLXF1ZXN0aW9ubmFpcmU+IC0tPlxuICAgIDwhLS0gSEEgMjhERUMyMyBCZWxvdyBJZiBsb2dpYyBpcyB0byBsb2FkIGZyb20gYm9va2xldCAgLS0+XG4gICAgPGRpdiAqbmdJZj1cInFiLlF1ZXN0aW9uc19fcj8ucmVjb3JkczsgZWxzZSBlbHNlQmxvY2tcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcXVlcyBvZiBxYi5RdWVzdGlvbnNfX3IucmVjb3Jkc1wiIGNsYXNzPVwicXVlc3Rpb25kaXYxXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gSEEgMTdKQU4yNCAtIElzIHRpdGxlIGlzIGVuYWJsZWQgc28gdGhhdCBiYXNlZCBvbiB0aGUgYm9vbGVhbiBkaXYgd2lsbCBiZSB2aXNpYmxlIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLklzX1RpdGxlX19jXCIgW2NsYXNzXT1cInFiLmlzU2hlbmdlbF9fYyA/ICdoZWFkZXItc3R5bGUnIDogJ3F1ZXN0aW9uLWYtc2l6ZSBhZGRpdGlvbmFsJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFZEIDA4Tk9WMjMgLSBzaG93aW5nIGxhYmxlIHdoZW4gaXRzIGF2YWlsYWJsZS0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZ2V0VGV4dChxdWVzPy5RdWVzdGlvbl9UZXh0X19jKVwiICpuZ0lmPVwicXVlcz8uUXVlc3Rpb25fVGV4dF9fY1wiID4gXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWVzPy5RdWVzdGlvbl9UZXh0X19jIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiA8IS0tIFZEIDE5SkFOMjQgLSBnZXR0aW5nIHRva2VuIGFzIGlucHV0IC0tPiA8IS0tVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXMtLT5cbiAgICAgICAgICAgICAgICA8IS0tVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzLS0+IFxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb25ib29rIFtxYkl0ZW1dPVwicWJcIiBbdG9rZW5dPVwidG9rZW5cIiBcbiAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCJsYWJlbFZhbHVlXCIgXG4gICAgICAgICAgICAgICAgW3F1ZXN0aW9uSXRlbV09XCJxdWVzXCIgXG4gICAgICAgICAgICAgICAgW3RyYW5zbGF0ZWRRdWVzdGlvbnNdPVwicmVhZFRyYW5zUXVlc3Rpb25zKHFiLklkKVwiIFxuICAgICAgICAgICAgICAgIFtxdWVzdGlvbnNdPVwicmVhZFF1ZXN0aW9ucyhxYi5JZClcIiAgXG4gICAgICAgICAgICAgICAgKGhhbmRsZURyb3BEb3duKT1cImdldERyb3BEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChoYW5kbGVDYWxlbmRhckRhdGUpPVwiZ2V0Q2FsZW5kYXJEYXRlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChoYW5kbGVDYWxlbmRhckV2ZW50KT1cImdldENhbGVuZGFyRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvbGliLXF1ZXN0aW9uYm9vaz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEhBIDI4REVDMjMgQmVsb3cgZWxzZSBsb2dpYyBpcyB0byBsb2FkIGZyb20gYm9va3Mgb3IgcXVlc3Rpb25zIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUJsb2NrPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3Rpb25kaXYxXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcWIuSXNfVGl0bGVfX2NcIiBbY2xhc3NdPVwicWIuaXNTaGVuZ2VsX19jID8gJ2hlYWRlci1zdHlsZScgOiAncXVlc3Rpb24tZi1zaXplIGFkZGl0aW9uYWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVkQgMDhOT1YyMyAtIHNob3dpbmcgbGFibGUgd2hlbiBpdHMgYXZhaWxhYmxlLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJnZXRUZXh0KHFiPy5RdWVzdGlvbl9UZXh0X19jKVwiICpuZ0lmPVwicWI/LlF1ZXN0aW9uX1RleHRfX2NcIiA+IFxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcWI/LlF1ZXN0aW9uX1RleHRfX2MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHFiPy5UaXRsZV9fYyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gPCEtLSBWRCAxOUpBTjI0IC0gZ2V0dGluZyB0b2tlbiBhcyBpbnB1dCAtLT4gPCEtLSAgLy8gVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXMtLT5cbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uYm9vayBbcWJJdGVtXT1cInFiXCIgW3Rva2VuXT1cInRva2VuXCIgW2xhYmVsVmFsdWVdPVwibGFiZWxWYWx1ZVwiIFtxdWVzdGlvbkl0ZW1dPVwicWJcIiBbdHJhbnNsYXRlZFF1ZXN0aW9uc109XCJyZWFkVHJhbnNRdWVzdGlvbnMocWIuSWQpXCIgW3F1ZXN0aW9uc109XCJyZWFkUXVlc3Rpb25zKHFiLklkKVwiICAoaGFuZGxlRHJvcERvd24pPVwiZ2V0RHJvcERvd24oJGV2ZW50KVwiPjwvbGliLXF1ZXN0aW9uYm9vaz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjwhLS0gR3JvdXAgQWN0aW9ucyAtLT5cbjwhLS0gSEEgMTlERUMyMyBGb3IgRGlyZWN0aW9uIC0tPlxuPGRpdiBjbGFzcz1cImFsaWduLXN1Ym1pdC1yb3dcIiAqbmdJZj1cImFiSXRlbT8uU3RhdHVzX19jICE9ICdDb21wbGV0ZWQnXCIgW25nQ2xhc3NdPVwibGFuZ0RpcmVjdGlvblwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPCEtLSAvLyBIQSAyMkpBTjI0IENvbW1vbmlzZSB0aGUgYnV0dG9uIHN0eWxlIGluIGZ1c2lvbiAtLT5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlQm9va2xldEFjdGlvbkNsaWNrKGFjdGlvbilcIiBuZ0NsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGZjLWJ1dHRvbiBueHRCdXR0b25cIj5cbiAgICAgICAgICAgIHt7IGFjdGlvbi5uYW1lIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
523
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2xldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYm9va2xldC9ib29rbGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9ib29rbGV0L2Jvb2tsZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FJYixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBa0J2QixNQUFNLE9BQU8sZ0JBQWdCO0lBbUNqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFRDtJQXpDQSxTQUFTLENBQVM7SUFDbEIsSUFBSSxDQUFTO0lBQ2IsR0FBRyxDQUFTO0lBQ1osV0FBVyxDQUFNO0lBQ2pCLHFCQUFxQixDQUFLO0lBQzFCLFVBQVUsQ0FBUTtJQUNsQixLQUFLLENBQVE7SUFDYixZQUFZLENBQVEsQ0FBRSxtQ0FBbUM7SUFDekQsaUJBQWlCLENBQU0sQ0FBQyx1Q0FBdUM7SUFDOUQsd0JBQXdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakUsVUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25ELHNCQUFzQixHQUFxQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3pFLDhCQUE4QjtJQUNuQixrQkFBa0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMzRCxtQkFBbUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUvRCxVQUFVLENBQWlCO0lBRTNCLE9BQU8sR0FBVSxFQUFFLENBQUM7SUFDcEIsTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUNqQixPQUFPLEdBQWlCLEVBQUUsQ0FBQztJQUMzQixnQkFBZ0IsR0FBUSxJQUFJLEdBQUcsRUFB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RyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDSSx3QkFBd0I7c0JBQWpDLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFnQkUsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgRWxlbWVudFJlZixcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFNhbGVzZm9yY2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NhbGVzZm9yY2Uuc2VydmljZVwiO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtcyB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuaW1wb3J0IHsgQWN0aW9uTWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYWN0aW9uTWV0YSc7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gXCIuLi8uLi93cmFwcGVyXCI7XG5pbXBvcnQgeyBCb29rbGV0V3JhcHBlciB9IGZyb20gXCIuLi8uLi9tb2RlbC9ib29rbGV0V3JhcHBlclwiO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZVwiO1xuLy8gSEEgMTlERUMyMyBpbXBvcnRlZCB0cmFuc2xhdGlvbiBzZXJ2aWNlXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gXCIuLi8uLi9pMThuLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWJvb2tsZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYm9va2xldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jvb2tsZXQuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJvb2tsZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBib29rbGV0SWQ6IHN0cmluZztcbiAgQElucHV0KCkgc2Vydjogc3RyaW5nO1xuICBASW5wdXQoKSB0a246IHN0cmluZztcbiAgQElucHV0KCkgYm9va2xldEpTT046IGFueTtcbiAgQElucHV0KCkgZHJvcGRvd25EZXBlbmRlbnREYXRhOmFueTtcbiAgQElucHV0KCkgbGFiZWxWYWx1ZTpzdHJpbmc7XG4gIEBJbnB1dCgpIHRva2VuOnN0cmluZztcbiAgQElucHV0KCkgbGFuZ3VhZ2VDb2RlOnN0cmluZzsgIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIEBJbnB1dCgpIGZpZWxkUmVzdHJpY3Rpb25zOiBhbnk7IC8vIFZEIDEySnVuMjQgLSBmaWVsZCBwZXJtaXNzaW9uIGNoYW5nZVxuICBAT3V0cHV0KCkgaGFuZGxlQm9va2xldEFjdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGhhbmRsZVBhZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaGFkbGVEcm9wRG93bkRlcGVuZGVudDpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgQE91dHB1dCgpIGhhbmRsZUNhbGVuZGFyRGF0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBoYW5kbGVDYWxlbmRhckV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgbnh0Qm9va2xldDogQm9va2xldFdyYXBwZXI7XG5cbiAgcHVibGljIGJvb2tsZXQ6IGFueVtdID0gW107XG4gIHB1YmxpYyBhYkl0ZW06IGFueSA9IHt9O1xuICBwdWJsaWMgYWN0aW9uczogQWN0aW9uTWV0YVtdID0gW107XG4gIHB1YmxpYyBib29rUXVlc3Rpb25zTWFwOiBhbnkgPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyB0cmFuc2xhdGVNYXA6IGFueSA9IG5ldyBNYXAoKTsgIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHByaXZhdGUgc3FPcHRpb25zOiBhbnkgPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBpc0Fuc3dlckZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNwaW5uZXJOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBzcGlubmVyVHlwZTogc3RyaW5nO1xuICAvLyBIQSAxOURFQzIzIGxhbmdEaXJlY3Rpb24gdmFyaWFibGUgaXMgY3JlYXRlZCB0byBhc3NpZ24gdGhlIGRpcmVjdGlvbiBhcyBjbGFzc1xuICBsYW5nRGlyZWN0aW9uID0gJ2x0cic7IC8vIEhBIDI4REVDMjMgbWFraW5nIGx0ciBhcyBkZWZhdWx0IGRpcmVjdGlvblxuICBhbnN3ZXJMaXN0ID0gW107IC8vIEhBIDExLUpBTi0yNCBBbnN3ZXJsaXN0IHRvIHN0b3JlIHRoZSBtaW5pbWFsIHZhbHVlXG4gIEBJbnB1dCgpIGRhdGFCaW5kOmFueTsvLyBIQSAxOC1KQU4tMjQgVG8gaW5zZXJ0IHRoZSBlbmRwb2ludCB2YWx1ZSB0byB0aGUgcXVlc3Rpb25cbiAgYWxsRXZlbnRzOmFueVtdPVtdOyAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIFxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNmU2VydmljZTogU2FsZXNmb3JjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UsIFxuICAgIGVsOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2VcbiAgKSB7IFxuICAgIHRoaXMuc3Bpbm5lck5hbWUgPSBcInNwMVwiO1xuICAgIHRoaXMuc3Bpbm5lclR5cGUgPSBcImJhbGwtc3Bpbi1jbG9ja3dpc2VcIjtcbiAgICBjb25zb2xlLmxvZygnZHJvcGRvd25EZXBlbmRlbnREYXRhJyx0aGlzLmRyb3Bkb3duRGVwZW5kZW50RGF0YSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBcbi8vICBWRCAxMkphbjI0IGZpZWxkUmVzdHJpY3Rpb25zIGZvcm1hdGUgXG4gIC8vICAge1xuICAvLyAgICAgXCJmaWVsZHNcIiA6IHtcbiAgLy8gICAgICAgICBcInRyYW5zUWItMDFcIiA6IFwicmVhZE9ubHlcIixcbiAgLy8gICAgICAgICBcIlRyYW5zRmlyMDJcIiA6IFwiXCIsXG4gIC8vICAgICAgICAgXCJUcmFuc0xhc3QwM1wiIDogXCJyZWFkT25seVwiLFxuICAvLyAgICAgICAgIFwiYmsyLXEyXCIgOiBcImhpZGVcIlxuICAvLyAgICAgfVxuICAvLyAgfVxuXG4gICAgLy8gSEEgMTgtSkFOLTI0IER1bW15IFN0YXRpYyBkYXRhIGZvciB0ZXN0aW5nXG4gICAgLy8gdGhpcy5kYXRhQmluZCA9IHtcbiAgICAvLyAgIFwiX2lkXCI6IFwiNjU5ZWQwMDJlZDUxYmI4MDYxNTQ0MjU1XCIsXG4gICAgLy8gICBcImNvbXBhbnlJZFwiOiBcIjV1bGxoMUJXcFlxbnZ6S2g5TFwiLFxuICAgIC8vICAgXCJuYW1lXCI6IFwiQWwgWWFzbWluZVwiLFxuICAgIC8vICAgXCJjb2RlXCI6IFwiY2hlY2tcIixcbiAgICAvLyAgIFwic3RhdHVzXCI6IFwiSW4tUHJvZ3Jlc3NcIixcbiAgICAvLyAgIFwiY3JlYXRlZEF0XCI6IFwiMjAyNC0wMS0xMFQxNzoxMjozNC42ODZaXCIsXG4gICAgLy8gICBcInVwZGF0ZWRBdFwiOiBcIjIwMjQtMDEtMTBUMTk6NTM6MDguMTM1WlwiLFxuICAgIC8vICAgXCJfX3ZcIjogMCxcbiAgICAvLyAgIFwib3duZXJcIjogXCJjaGVja1wiLFxuICAgIC8vICAgXCJjdXN0b21lclwiOiBcImNoZWNrXCIsXG4gICAgLy8gICBcImRhdGlcIjogXCIyMDI0LTAxLTIzVDE4OjMwOjAwLjAwMFpcIixcbiAgICAvLyAgIFwidGltaVwiOiBcIjIwMjQtMDEtMjNUMTg6MzA6MDAuMDAwWlwiLFxuICAgIC8vIFwiZk5hbWVcIjogXCJIYWlkZXJcIixcbiAgICAvLyBcImxOYW1lXCI6IFwiQWxpXCIsXG4gICAgLy8gXCJkZWZhdWx0QXBwXCI6IFwiTlhUXCIsXG4gICAgLy8gXCJlbWFpbFwiOiBcImhhaWRlckBnbWFpbC5jb21cIixcbiAgICAvLyBcImxvY2F0aW9uXCI6IHthZGRyZXNzOiBcIjEwNywgQXNob2sgTmFnYXIsIEthZHVnb25kYW5haGFsbGksIEJlbmdhbHVydSwgS2FybmF0YWthIDU2MDA0NSwgSW5kaWFcIixcbiAgICAvLyAgIGxhdGl0dWRlOiAxMy4wMjAwNTc1LFxuICAgIC8vICAgbG9uZ2l0dWRlOiA3Ny42MTI5ODE2fSxcbiAgICAvLyBcImxvY2F0aW9uXCI6IFwiMTA3LCBBc2hvayBOYWdhciwgS2FkdWdvbmRhbmFoYWxsaSwgQmVuZ2FsdXJ1LCBLYXJuYXRha2EgNTYwMDQ1LCBJbmRpYVwiLFxuICAgIC8vIFwidGV4dEFyZWFcIjogXCJMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW1cIixcbiAgICAvLyB9O1xuICAgICAgICB0aGlzLnByb2Nlc3NCb29rbGV0KCk7XG4gIH1cbiAvLyBWRCBOT1YyMyAtIHVwZGF0ZSB0aGUganNvbiBkYXRhIHdoZW4gYm9va2xldElkIGFuZCBib29rbGV0SlNPTiBjaGFuZ2VzXG4gIG5nT25DaGFuZ2VzKHNpbXBsZWNoYW5nZXM6U2ltcGxlQ2hhbmdlcykge1xuICAgLy8gSEEgMjNKQU4yNCBUbyBhdm9pZCB1bmRlZmluZWQgZXJyb3JcbiAgIGlmKHNpbXBsZWNoYW5nZXNbJ2Jvb2tsZXRJZCddIHx8IChzaW1wbGVjaGFuZ2VzWydib29rbGV0SlNPTiddICYmIChzaW1wbGVjaGFuZ2VzWydib29rbGV0SlNPTiddLmN1cnJlbnRWYWx1ZSAhPSBudWxsIHx8IHNpbXBsZWNoYW5nZXNbJ2Jvb2tsZXRKU09OJ10uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCkpIHx8IChzaW1wbGVjaGFuZ2VzWydkYXRhQmluZCddICYmIChzaW1wbGVjaGFuZ2VzWydkYXRhQmluZCddLmN1cnJlbnRWYWx1ZSAhPSBudWxsIHx8IHNpbXBsZWNoYW5nZXNbJ2RhdGFCaW5kJ10uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCkpICl7XG4gICAgICB0aGlzLnByb2Nlc3NCb29rbGV0KCk7XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25uYWlyZSBuZ09uQ2hhbmdlcycpO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuYm9va2xldCk7XG4gICAgLy8gaWYodGhpcy5ib29rbGV0ID09IHVuZGVmaW5lZCB8fCB0aGlzLmJvb2tsZXQubGVuZ3RoID09IDApIHtcbiAgICAvLyAgIHRoaXMucHJvY2Vzc0Jvb2tsZXQoKTtcbiAgICAvLyB9XG4gIH1cblxuICBwcm9jZXNzQm9va2xldCgpIHtcbiAgICBpZiAodGhpcy5ib29rbGV0SWQpIHtcbiAgICAgIGlmICh0aGlzLmJvb2tsZXRJZC5sZW5ndGggPT0gMTgpIHtcbiAgICAgICAgdGhpcy5yZWFkQm9va2xldCh0aGlzLmJvb2tsZXRJZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmKHRoaXMuYm9va2xldEpTT04pIHtcbiAgICAgIC8vIFRyeSB0byBwYXNzIGEgdmFsdWUgZnJvbSBCYWNrZW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIFF1ZXN0aW9uQm9vayBSZWFkIGFuZCBBbnN3ZXJCb29rIFJlYWRcbiAgICAgIHRoaXMuaXNBbnN3ZXJGbGFnID0gdHJ1ZTtcblxuICAgICAgaWYodGhpcy5ib29rbGV0SlNPTiAhPSBudWxsIHx8IHRoaXMuYm9va2xldEpTT04gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gU3RvcmluZyB0aGUgQVBJIHJlc3BvbnNlIGZvciBmdXR1cmUgdXNlXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zYXZlKHRoaXMuYm9va2xldEpTT04pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmJvb2tsZXQgPSB0aGlzLmJvb2tsZXRKU09OLnJlY29yZHM7XG4gICAgICB0aGlzLmFiSXRlbSA9IHRoaXMuYm9va2xldEpTT04uYW5zd2VyYm9vaztcblxuICAgICAgLy8gUHJvY2VzcyB0aGUgU3ViIFF1ZXN0aW9uIE9wdGlvbnMgLSBUaGlzIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBib29rUXVlc3Rpb25zTWFwIGluIGZ1dHVyZVxuICAgICAgZm9yICh2YXIgc3EgaW4gdGhpcy5ib29rbGV0SlNPTi5zcU9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5zcU9wdGlvbnMuc2V0KHNxLCB0aGlzLmJvb2tsZXRKU09OLnNxT3B0aW9uc1tzcV0pO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzIHRoZSBRdWVzdGlvbnNcbiAgICAgIC8vIEhBIDI4REVDMjMgdGhpcyBhcHBsaWVzIGZvciBib29rbGV0XG4gICAgICAvLyBIQSAxN0pBTjI0IEFkZGVkIHRlcm5hcnkgb3BlcmF0b3IgdG8gYXZvaWQgdW5kZWZpbmVkIHNjZW5hcmlvXG4gICAgICAvLyBIQSAwOUZFQjI0IEFkZGluZyBjb25kaXRpb24gdG8gYXZvaWQgdW5kZWZpbmVkIGVycm9yXG4gICAgICBpZih0aGlzLmJvb2tsZXRKU09OPy5ib29rUXVlc3Rpb25zTWFwICYmIE9iamVjdC5rZXlzKHRoaXMuYm9va2xldEpTT04/LmJvb2tRdWVzdGlvbnNNYXApLmxlbmd0aCA+IDApe1xuICAgICAgICBmb3IgKHZhciB2YWx1ZSBpbiB0aGlzLmJvb2tsZXRKU09OLmJvb2tRdWVzdGlvbnNNYXApIHtcbiAgICAgICAgICB0aGlzLmJvb2tRdWVzdGlvbnNNYXAuc2V0KHZhbHVlLCB0aGlzLmJvb2tsZXRKU09OLmJvb2tRdWVzdGlvbnNNYXBbdmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSEEgMjhERUMyMyB0aGlzIGFwcGxpZXMgZm9yIGJvb2sgb3IgcXVlc3Rpb25zXG4gICAgICBlbHNle1xuICAgICAgICB2YXIgdmFsdWUgPSAnJztcbiAgICAgICAgLy8gSEEgMDlGRUIyNCBBZGRlZCB0ZXJuYXJ5XG4gICAgICAgIHZhbHVlID0gdGhpcy5ib29rbGV0SlNPTi5yZWNvcmRzWzBdPy5JZDtcbiAgICAgICAgdGhpcy5ib29rUXVlc3Rpb25zTWFwLnNldCh2YWx1ZSwgdGhpcy5ib29rbGV0SlNPTi5xdWVzdGlvbmJvb2spO1xuICAgICAgfVxuICAgICAgXG4gICAgICAgLy8gVkQgMjBKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcbiAgICAgICBmb3IgKHZhciB2YWx1ZSBpbiB0aGlzLmJvb2tsZXRKU09OPy50cmFuc2xhdGlvbk1hcCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZU1hcC5zZXQodmFsdWUsIHRoaXMuYm9va2xldEpTT04udHJhbnNsYXRpb25NYXBbdmFsdWVdKTtcbiAgICAgIH1cblxuICAgICAgaWYodGhpcy5ib29rbGV0SlNPTi5xdWVzdGlvbmJvb2s/LkFjdGlvbnNfX2MgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuYWN0aW9ucyA9IEpTT04ucGFyc2UodGhpcy5ib29rbGV0SlNPTi5xdWVzdGlvbmJvb2suQWN0aW9uc19fYyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEhBIDE5REVDMjMgbGFuZ0RpcmVjdGlvbiB2YXJpYWJsZSB2YWx1ZSBhc3NpZ25pbmdcbiAgICAvLyBjb25zb2xlLmxvZygnU3R5bGVfX2MnLCB0aGlzLmJvb2tsZXRKU09OLnF1ZXN0aW9uYm9vay5TdHlsZV9fYyk7XG4gICAgaWYodGhpcy5ib29rbGV0SlNPTj8ucXVlc3Rpb25ib29rPy5TdHlsZV9fYyl7XG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ib29rbGV0SlNPTj8ucXVlc3Rpb25ib29rPy5TdHlsZV9fYykpKTtcbiAgICAgIHRoaXMubGFuZ0RpcmVjdGlvbiA9IHN0eWxlPy5kaXJlY3Rpb247XG4gICAgfVxuICAgIGVsc2UgaWYodGhpcy5ib29rbGV0SlNPTj8ucmVjb3Jkc1swXT8uU3R5bGVfX2Mpe1xuICAgICAgdmFyIHN0eWxlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmJvb2tsZXRKU09OPy5yZWNvcmRzWzBdPy5TdHlsZV9fYykpO1xuICAgICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gc3R5bGU/LmRpcmVjdGlvbjtcbiAgICB9XG5cbiAgICAvLyBIQSAxOC1KQU4tMjQgVGhlIGNvbmRpdGlvbiBpcyB1c2VkIGZvciBCaW5kLUluIExvZ2ljIFxuICAgIHRoaXMuaGFuZGxlQ29tcGxldGVCb29rbGV0KHRoaXMuYm9va2xldEpTT04pOyBcbiAgfVxuIC8vIFZEIDEySnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHByaXZhdGUgcmVhZEJvb2tsZXQgPSAodXVpZDogc3RyaW5nKSA9PiB7XG4gICAgaWYodGhpcy5zZXJ2ID09IFwiYXBpXCIpIHtcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UuZ2V0QVBJRGF0YShcbiAgICAgICAgdGhpcy50a24sXG4gICAgICAgIFtcIkJvb2tsZXRcIiwgXCJyZWFkXCIsIHV1aWQsdGhpcy5sYW5ndWFnZUNvZGVdLFxuICAgICAgICB0aGlzLnN1Y2Nlc3NSZWFkQm9va2xldCxcbiAgICAgICAgdGhpcy5mYWlsdXJlUmVhZEJvb2tsZXRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBwYXJhbU1hcCA9IHsgY3JlYXRlQW5zd2VyQm9va0ZsYWc6IGZhbHNlIH07XG4gICAgICBwYXJhbU1hcFsnY19fcWJfaWQnXSA9ICcnO1xuICAgICAgcGFyYW1NYXBbXCJjX19yZWNvcmRfaWRcIl0gPSAnJztcbiAgICAgIHRoaXMuc2ZTZXJ2aWNlLnJlbW90ZUFjdGlvbihcbiAgICAgICAgXCJOeHRDb250cm9sbGVyLm5ld1Byb2Nlc3NcIixcbiAgICAgICAgW1wiQm9va2xldFwiLCBcInJlYWRcIiwgdXVpZCxKU09OLnN0cmluZ2lmeShwYXJhbU1hcCksdGhpcy5sYW5ndWFnZUNvZGVdLFxuICAgICAgICB0aGlzLnN1Y2Nlc3NSZWFkQm9va2xldCxcbiAgICAgICAgdGhpcy5mYWlsdXJlUmVhZEJvb2tsZXRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWNjZXNzUmVhZEJvb2tsZXQgPSAocmVzcG9uc2UpID0+IHtcbiAgICBjb25zb2xlLmxvZygnSW5zaWRlIHRoZSBzdWNjZXNzUmVhZEJvb2tsZXQnKTtcbiAgICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSk7XG4gICAgaWYocmVzcG9uc2UgIT0gbnVsbCB8fCByZXNwb25zZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFN0b3JpbmcgdGhlIEFQSSByZXNwb25zZSBmb3IgZnV0dXJlIHVzZVxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zYXZlKHJlc3BvbnNlKTtcblxuICAgICAgLy8gVHJ5IHRvIHBhc3MgYSB2YWx1ZSBmcm9tIEJhY2tlbmQgdG8gZGlmZmVyZW50aWF0ZSB0aGUgUXVlc3Rpb25Cb29rIFJlYWQgYW5kIEFuc3dlckJvb2sgUmVhZFxuICAgICAgLy8gdGhpcy5pc0Fuc3dlckZsYWcgPSB0cnVlO1xuICAgICAgXG4gICAgICB0aGlzLmJvb2tsZXQgPSByZXNwb25zZS5yZWNvcmRzO1xuICAgICAgdGhpcy5hYkl0ZW0gPSByZXNwb25zZS5hbnN3ZXJib29rO1xuICAgICAgXG4gICAgICAvLyBQcm9jZXNzIHRoZSBTdWIgUXVlc3Rpb24gT3B0aW9ucyAtIFRoaXMgc2hvdWxkIGJlIG1lcmdlZCB3aXRoIGJvb2tRdWVzdGlvbnNNYXAgaW4gZnV0dXJlXG4gICAgICBmb3IgKHZhciBzcSBpbiByZXNwb25zZS5zcU9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5zcU9wdGlvbnMuc2V0KHNxLCByZXNwb25zZS5zcU9wdGlvbnNbc3FdKTtcbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VzcyB0aGUgUXVlc3Rpb25zXG4gICAgICBmb3IgKHZhciB2YWx1ZSBpbiByZXNwb25zZS5ib29rUXVlc3Rpb25zTWFwKSB7XG4gICAgICAgIHRoaXMuYm9va1F1ZXN0aW9uc01hcC5zZXQodmFsdWUsIHJlc3BvbnNlLmJvb2tRdWVzdGlvbnNNYXBbdmFsdWVdKTtcbiAgICAgIH1cbiAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xuICAgICAgZm9yICh2YXIgdmFsdWUgaW4gcmVzcG9uc2UudHJhbnNsYXRpb25NYXApIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVNYXAuc2V0KHZhbHVlLCByZXNwb25zZS50cmFuc2xhdGlvbk1hcFt2YWx1ZV0pO1xuICAgICAgfVxuXG4gICAgICBpZihyZXNwb25zZS5xdWVzdGlvbmJvb2s/LkFjdGlvbnNfX2MgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuYWN0aW9ucyA9IEpTT04ucGFyc2UocmVzcG9uc2UucXVlc3Rpb25ib29rLkFjdGlvbnNfX2MpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBIQSAxOURFQzIzIGxhbmdEaXJlY3Rpb24gdmFyaWFibGUgdmFsdWUgYXNzaWduaW5nXG4gICAgaWYocmVzcG9uc2U/LnF1ZXN0aW9uYm9vaz8uU3R5bGVfX2Mpe1xuICAgICAgdmFyIHN0eWxlID0gSlNPTi5wYXJzZShKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlPy5xdWVzdGlvbmJvb2s/LlN0eWxlX19jKSkpO1xuICAgICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gc3R5bGU/LmRpcmVjdGlvbjtcbiAgICB9XG4gICAgZWxzZSBpZihyZXNwb25zZT8ucmVjb3Jkc1swXT8uU3R5bGVfX2Mpe1xuICAgICAgdmFyIHN0eWxlID0gSlNPTi5wYXJzZShKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlPy5yZWNvcmRzWzBdPy5TdHlsZV9fYykpKTtcbiAgICAgIHRoaXMubGFuZ0RpcmVjdGlvbiA9IHN0eWxlPy5kaXJlY3Rpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmYWlsdXJlUmVhZEJvb2tsZXQgPSAocmVzcG9uc2UpID0+IHtcblxuICB9XG5cbiAgaGFuZGxlQm9va2xldEFjdGlvbkNsaWNrKGFjdGlvbjpBY3Rpb25NZXRhKSB7XG4gICAgLy8gSEEgMTlKQU4yNCBBY3Rpb24gY2hhbmdlc1xuICAgIHRoaXMuYW5zd2VyTGlzdCA9IFtdO1xuICAgIHRoaXMuZGF0YUJpbmQgPSBbXTsgLy8gSEEgMTJGRUIyNCBDbGVhcmluZyBkYXRhQmluZCB1cG9uIGJ1dHRvbiBhY3Rpb24gc28gdGhhdCBkYXRhQmluZCB2YWx1ZSB3aWxsIG5vdCBvdmVycmlkZSB0aGUgY2hhbmdlZCB2YWx1ZVxuICAgIGNvbnNvbGUubG9nKGFjdGlvbik7XG4gICAgbGV0IGRhdGFUb1BhcmVudCA9IHt9O1xuICAgIGxldCB2YWxpZEZvcm0gPSB0cnVlOyAvLyBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2VcbiAgICAvLyBIQSAyMkpBTjI0IHRoaXMgY2hhbmdlIHRvIG1ha2UgY2xvc2UgZXZlbnQgd29ya1xuICAgIGRhdGFUb1BhcmVudFsnYWN0aW9uJ10gPSBhY3Rpb24uZXZlbnR0b2VtaXQ7XG4gICAgaWYoIShhY3Rpb24uZXZlbnR0b2VtaXQgPT09ICdjbG9zZScgfHwgYWN0aW9uLmV2ZW50dG9lbWl0ID09PSAncHJpbnQnKSl7XG4gICAgICAvLyBIQSAxOC1KQU4tMjQgU2VuZGluZyB0aGUgY29tcGxldGUganNvbiBkYXRhIGFsc28gXG4gICAgICBkYXRhVG9QYXJlbnRbJ2pzb25Cb29rJ10gPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgpO1xuICAgICAgLy8gSEEgMTdKQU4yNCBueHRJZCB0byBkYXRhUGFyZW50IG9iamVjdFxuICAgICAgaWYodGhpcy5ib29rbGV0SlNPTil7XG4gICAgICAgIGRhdGFUb1BhcmVudFsnbnh0SWQnXSA9IE9iamVjdC5rZXlzKHRoaXMuYm9va2xldEpTT04/LmJvb2tRdWVzdGlvbnNNYXApWzBdO1xuICAgICAgfVxuICAgICAgLy8gSEEgMTEtSkFOLTI0IE1pbmltaXppbmcgdGhlIHZhbHVlIHdoaWNoIGhhcyB0byBiZSBwYXNzZWQgdG8gdGhlIHNlcnZlclxuICAgICAgdGhpcy5oYW5kbGVDb21wbGV0ZUJvb2tsZXQoZGF0YVRvUGFyZW50Wydqc29uQm9vayddKTtcbiAgICAgIGRhdGFUb1BhcmVudFsnZGF0YSddID0gdGhpcy5hbnN3ZXJMaXN0ID8gdGhpcy5hbnN3ZXJMaXN0IDogZGF0YVRvUGFyZW50WydkYXRhJ107XG4gICAgICAvLyB3aGVuIGNsaWNraW5nIHRoZSBzdWJtaXQgYnV0dG9uIHZhbGlkYXRpbmcgdGhlIHJlcXVpcmVkIGZpZWxkc1xuICAgICAgZm9yKGxldCBrZXkgaW4gZGF0YVRvUGFyZW50Wydqc29uQm9vayddLmJvb2tRdWVzdGlvbnNNYXApe1xuICAgICAgICBjb25zdCBjdXJyZW50Qm9vayAgPSBkYXRhVG9QYXJlbnRbJ2pzb25Cb29rJ10uYm9va1F1ZXN0aW9uc01hcFtrZXldO1xuICAgICAgICBjdXJyZW50Qm9vay5RdWVzdGlvbnNfX3IucmVjb3Jkcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgLy8gVkQgMDFBdWcyNCAtIHZhbGlkYXRpb24gY2hhbmdlXG4gICAgICAgICAgaWYoZWxlbWVudC5Jc19PcHRpb25hbF9fYyAmJiBkYXRhVG9QYXJlbnRbJ2FjdGlvbiddID09ICdzdWJtaXQnICYmICFlbGVtZW50LmlucHV0ICYmICFlbGVtZW50LklzX0hpZGVfX2MgJiYgZWxlbWVudC5UeXBlX19jICE9ICdMYWJlbCcgJiYgZWxlbWVudC5UeXBlX19jICE9ICdJbWFnZScgKXtcbiAgICAgICAgICAgIGVsZW1lbnQuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgdmFsaWRGb3JtID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVNlcnZpY2Uuc3VibWl0Q2hhbmdlKGVsZW1lbnQuSWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBWRCAwMkF1ZzI0IC0gY2xlYXIgYWN0aW9uIGNoYW5nZXNcbiAgICAgICAgICBpZihkYXRhVG9QYXJlbnRbJ2FjdGlvbiddID09ICdjbGVhcicpe1xuICAgICAgICAgICAgaWYoZWxlbWVudC5UeXBlX19jID09ICdEcm9wZG93bicgfHwgZWxlbWVudC5UeXBlX19jID09ICdMb2NhdGlvbicgfHwgZWxlbWVudC5UeXBlX19jID09ICdSYWRpbycpIHtcbiAgICAgICAgICAgICAgZWxlbWVudC5zZWxlY3RlZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfWVsc2UgaWYoZWxlbWVudC5UeXBlX19jID09ICdGaWxlJyl7XG4gICAgICAgICAgICAgIGVsZW1lbnQuaW5wdXQgPSBbXTtcbiAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgZWxlbWVudC5pbnB1dCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBWRCAxM01BWTI0IC0gcHJpbnQgUVIgYnV0dG9uIGNoYW5nZXNcbiAgICBpZihhY3Rpb24uZXZlbnR0b2VtaXQgPT09ICdwcmludCcpe1xuICAgICAgZGF0YVRvUGFyZW50WydhY3Rpb25EYXRhJ10gPSBhY3Rpb25bJ2RhdGEnXTtcbiAgICB9XG4gICAgLy8gSEEgMjNKQU4yNCBUbyBjYWxsIHRoZSBhY3Rpb24gb24gYW55IGV2ZW50XG4gICAvLyAgVkQgMDFBdWcyNCAtIHZhbGlkYXRpb24gY2hhbmdlXG4gICAgaWYodmFsaWRGb3JtKXtcbiAgICAgIHRoaXMuaGFuZGxlQm9va2xldEFjdGlvbkV2ZW50LmVtaXQoZGF0YVRvUGFyZW50KTtcbiAgICB9ZWxzZSB7XG4gICAgICBkYXRhVG9QYXJlbnRbJ2FjdGlvbiddID0gJ2Vycm9yJztcbiAgICAgIHRoaXMuaGFuZGxlQm9va2xldEFjdGlvbkV2ZW50LmVtaXQoZGF0YVRvUGFyZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBIQSAxOC1KQU4tMjQgaGFuZGxlQ29tcGxldGVCb29rbGV0IGlzIHRvIHNpbXBsaWZ5IHRoZSBsb2dpY1xuICBoYW5kbGVDb21wbGV0ZUJvb2tsZXQoY29tcGxldGVCb29rbGV0KXtcbiAgICBpZihPYmplY3Qua2V5cyhjb21wbGV0ZUJvb2tsZXQ/LmJvb2tRdWVzdGlvbnNNYXAgPz8ge30pLmxlbmd0aCA9PT0gMCl7IC8vIEhBIDExLUpBTi0yNCBJZiBjb25kaXRpb24gdG8gbG9hZCBib29rbGV0XG4gICAgICB0aGlzLmhhbmRsZUJvb2soY29tcGxldGVCb29rbGV0Py5xdWVzdGlvbmJvb2s/LlF1ZXN0aW9uc19fcik7XG4gICAgfVxuICAgIGVsc2V7IC8vIEhBIDExLUpBTi0yNCBUbyBsb2FkIGJvb2sgcXVlc3Rpb25zXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBjb21wbGV0ZUJvb2tsZXQuYm9va1F1ZXN0aW9uc01hcCkge1xuICAgICAgICBjb25zdCB2YWwgPSBjb21wbGV0ZUJvb2tsZXQuYm9va1F1ZXN0aW9uc01hcFtrZXldO1xuICAgICAgICBpZih2YWwuVHlwZV9fYyA9PT0gJ0Jvb2snKXtcbiAgICAgICAgICB0aGlzLmhhbmRsZUJvb2sodmFsLlF1ZXN0aW9uc19fcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICB0aGlzLmhhbmRsZVF1ZXModmFsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhBIDExLUpBTi0yNCBoYW5kbGVCb29rIGxvYWRzIHRoZSBCb29rXG4gIGhhbmRsZUJvb2socXVlc0xpc3Q6IGFueSl7XG4gICAgcXVlc0xpc3Q/LnJlY29yZHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGlmKGVsZW1lbnQuVHlwZV9fYyA9PT0gJ0Jvb2snKXtcbiAgICAgICAgLy8gSEEgMjRKQU4yNCBGZXRjaGluZyBmcm9tIFFCIHJlZmVyZW5jZVxuICAgICAgICB2YXIgYm9vayA9IEpTT04ucGFyc2UoZWxlbWVudC5RQl9SZWZlcmVuY2VfUXVlc3Rpb25zX19jKTtcbiAgICAgICAgYm9vay5xdWVzdGlvbmJvb2suUXVlc3Rpb25zX19yLnJlY29yZHMuZm9yRWFjaChxdWVzID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVF1ZXMocXVlcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZWxzZXtcbiAgICAgICAgdGhpcy5oYW5kbGVRdWVzKGVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIFZEIDEzU2VwMjQgLSBkYXRhYmluZCBjaGFuZ2VzXG4gICAgaWYodGhpcy5kYXRhQmluZCl7XG4gICAgICB0aGlzLmNoYW5nZVNlcnZpY2UuZGF0YUNoYW5nZXMoJ2RhdGFCaW5kJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gSEEgMTEtSkFOLTI0IGhhbmRsZVF1ZXMgdG8gbG9hZCBxdWVzdGlvblxuICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgaGFuZGxlUXVlcyhxdWVzOiBhbnkpe1xuICAgIC8vIEhBIDE5LUpBTi0yNCBJZiBjb25kaXRpb24gaXMgZm9yIGJpbmQtaW4sIGNvcnJlY3Rpb25cbiAgICAvLyBIQSAwOUZFQjI0IEFkZGluZyBjb25kaXRpb24gdG8gYXZvaWQgdW5kZWZpbmVkIGVycm9yXG4gICAgaWYodGhpcy5kYXRhQmluZCAmJiBPYmplY3Qua2V5cyh0aGlzLmRhdGFCaW5kKS5sZW5ndGggPiAwKXtcbiAgICAgIGZvcihsZXQgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmRhdGFCaW5kKSl7XG4gICAgICAgIGxldCB2YWx1ZTphbnkgPSB2YWw7XG4gICAgICAgIGlmKHF1ZXMuUmVmZXJlbmNlX0ZpZWxkX19jID09PSBrZXkpe1xuICAgICAgICAgIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0Ryb3Bkb3duJyB8fCBxdWVzLlR5cGVfX2MgPT09ICdSYWRpbycgKXtcbiAgICAgICAgICAgIHRoaXMuc3FPcHRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgIGlmKGVsZW1lbnRbJ1JlZmVyZW5jZV9GaWVsZF9fYyddID09PSBrZXkpe1xuICAgICAgICAgICAgICAgIGVsZW1lbnRbJ2lucHV0J10gPSBxdWVzLmlucHV0ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgZWxlbWVudFsnc2VsZWN0ZWRWYWx1ZSddID0gcXVlcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBIQSAyNEpBTjI0IFRvIGJpbmQtaW4gRGF0ZSBhbmQgRGF0ZVRpbWVcbiAgICAgICAgICBlbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0RhdGUnIHx8IHF1ZXMuVHlwZV9fYyA9PSAnRGF0ZVRpbWUnKXtcbiAgICAgICAgICAgIHF1ZXMuaW5wdXQgPSBuZXcgRGF0ZSh2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gSEEgMTJGRUIyNCBUbyBiaW5kLWluIExvY2F0aW9uIFR5cGVcbiAgICAgICAgICBlbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0xvY2F0aW9uJyl7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygndmFsdWUgJywgdmFsdWUpO1xuICAgICAgICAgICAgcXVlcy5pbnB1dCA9IHZhbHVlO1xuICAgICAgICAgICAgcXVlcy5zZWxlY3RlZFZhbHVlID0gdmFsdWVbJ2FkZHJlc3MnXSA/IHZhbHVlWydhZGRyZXNzJ10gOiB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlcyBmb3IgZGF0YSBiaW5kSW5cbiAgICAgICAgICBlbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0NhbGVuZGFyJyl7XG4gICAgICAgICAgICBsZXQgZW50cmllcyA9IEpTT04ucGFyc2UocXVlc1snRmllbGRzX01ldGFfX2MnXSk7XG4gICAgICAgICAgICBpZihlbnRyaWVzKXtcbiAgICAgICAgICAgICAgbGV0IHJlZmVyZW5jZVF1ZXN0aW9ucyA9IFtdO1xuICAgICAgICAgICAgICBpZihlbnRyaWVzLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgICBlbnRyaWVzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICBpZihlbGVtZW50LnF1ZXN0aW9uUmVmZXJlbmNlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHFSZWZlcmVuY2UgPSBKU09OLnBhcnNlKGVsZW1lbnQucXVlc3Rpb25SZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VRdWVzdGlvbnMucHVzaChxUmVmZXJlbmNlPy5xdWVzdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmKHJlZmVyZW5jZVF1ZXN0aW9ucy5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgICAgICB2YWx1ZT8uZm9yRWFjaChjYWxlbmRhckFycmF5ID0+IHtcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoY2FsZW5kYXJBcnJheS5kYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJBcnJheS5lbnRyaWVzLmZvckVhY2goaW5wdXRFbnRyeT0+e1xuICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGlucHV0RW50cnkpKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZVF1ZXN0aW9ucy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZmllbGQuUmVmZXJlbmNlX0ZpZWxkX19jID09IGspe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZmllbGQuVHlwZV9fYyA9PT0gJ0RhdGUnIHx8IGZpZWxkLlR5cGVfX2MgPT0gJ0RhdGVUaW1lJyB8fCBmaWVsZC5UeXBlX19jID09ICdUaW1lJyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuaW5wdXQgPSBuZXcgRGF0ZSh2LnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1pZihmaWVsZC5UeXBlX19jID09PSAnRHJvcGRvd24nIHx8IGZpZWxkLlR5cGVfX2MgPT09ICdSYWRpbycpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuc2VsZWN0ZWRWYWx1ZSA9IHY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5pbnB1dCA9IHY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuaW5wdXQgPSB2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSAgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRXZlbnQoZGF0ZSxyZWZlcmVuY2VRdWVzdGlvbnMpO1xuICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcXVlcy5pbnB1dCA9IHRoaXMuYWxsRXZlbnRzLmxlbmd0aCA+IDAgPyB0aGlzLmFsbEV2ZW50cyA6ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgcXVlcy5pbnB1dCA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFuc3dlckxpc3QucHVzaChxdWVzKTsgLy8gSEEgMTJGRUIyNCBUbyBnaXZlIHRoZSB2YWx1ZSBmb3IgZGF0YVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICBjb25zdCBxdWVzdGlvbiA9IHt9O1xuICAgICAgcXVlc3Rpb25bJ2lkJ10gPSBxdWVzLklkO1xuICAgICAgLy8gcXVlc3Rpb25bJ1F1ZXN0aW9uX19jJ10gPSBxdWVzLlF1ZXN0aW9uX19jO1xuICAgICAgcXVlc3Rpb25bJ2lucHV0J10gPSBxdWVzLmlucHV0O1xuICAgICAgLy8gSEEgMTJGRUIyNCBUbyBiaW5kLW91dCBMb2NhdGlvbiBUeXBlXG4gICAgICBpZihxdWVzLlR5cGVfX2MgPT09ICdMb2NhdGlvbicpe1xuICAgICAgICBxdWVzdGlvblsnaW5wdXQnXSA9IHF1ZXMuaW5wdXQgPyBxdWVzLmlucHV0IDogcXVlcy5zZWxlY3RlZFZhbHVlO1xuICAgICAgfVxuICAgICAgcXVlc3Rpb25bJ1R5cGVfX2MnXSA9IHF1ZXMuVHlwZV9fYztcbiAgICAgIHF1ZXN0aW9uWydRdWVzdGlvbl9Ob19fYyddID0gcXVlcy5RdWVzdGlvbl9Ob19fYztcbiAgICAgIHF1ZXN0aW9uWydSZWZlcmVuY2VfRmllbGRfX2MnXSA9IHF1ZXM/LlJlZmVyZW5jZV9GaWVsZF9fYztcbiAgICAgIHRoaXMuYW5zd2VyTGlzdC5wdXNoKHF1ZXN0aW9uKTtcbiAgICB9XG4gIH1cblxuLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzIGZvciBkYXRhIGJpbmRJblxuICBhZGRFdmVudChkYXk6IGFueSwgZW50cnlRdWVzKSB7XG4gICAgLy8gVHJhbnNmb3JtIG5ldyBlbnRyaWVzIGludG8gdGhlIGRlc2lyZWQgZm9ybWF0XG4gICAgY29uc3QgbmV3RW50cmllcyA9IGVudHJ5UXVlcy5yZWR1Y2UoKGFjYywgcSkgPT4ge1xuICAgICAgICBhY2NbcS5JZF0gPSB7IC4uLnEgfTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG5cbiAgICAvLyBGaW5kIGlmIGFuIGV2ZW50IGFscmVhZHkgZXhpc3RzIGZvciB0aGUgZ2l2ZW4gZGF0ZVxuICAgIGNvbnN0IGV4aXN0aW5nRXZlbnQgPSB0aGlzLmFsbEV2ZW50cy5maW5kKGV2ZW50ID0+IGV2ZW50LmRhdGUudG9EYXRlU3RyaW5nKCkgPT09IGRheS50b0RhdGVTdHJpbmcoKSk7XG5cbiAgICBpZiAoZXhpc3RpbmdFdmVudCkge1xuICAgICAgICAvLyBJZiB0aGUgZXZlbnQgZXhpc3RzLCBwdXNoIHRoZSBuZXcgZW50cmllcyB0byB0aGUgZXhpc3RpbmcgZW50cmllc1xuICAgICAgICBjb25zdCBleGlzdGluZ0VudHJpZXMgPSBleGlzdGluZ0V2ZW50LmVudHJpZXMubWFwKGVudHJ5ID0+ICh7IC4uLmVudHJ5IH0pKTtcbiAgICAgICAgZXhpc3RpbmdFbnRyaWVzLnB1c2gobmV3RW50cmllcyk7XG4gICAgICAgIGV4aXN0aW5nRXZlbnQuZW50cmllcyA9IGV4aXN0aW5nRW50cmllcztcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgZXZlbnQgaWYgaXQgZG9lc24ndCBleGlzdCBmb3IgdGhlIGdpdmVuIGRhdGVcbiAgICAgICAgY29uc3QgbmV3RXZlbnQgPSB7XG4gICAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgICBkYXRlOiBkYXksXG4gICAgICAgICAgICBlbnRyaWVzOiBbbmV3RW50cmllc10gLy8gV3JhcCB0aGUgbmV3IGVudHJpZXMgaW4gYW4gYXJyYXlcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hbGxFdmVudHMucHVzaChuZXdFdmVudCk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ2FsbCBldmVudHMgYm9va2xldCcpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuYWxsRXZlbnRzKTtcbn1cblxuXG4gIHJlYWRRdWVzdGlvbnMocWJJZDogc3RyaW5nKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBCb29rbGV0Q29tcG9uZW50LnJlYWRRdWVzdGlvbnMgJyArIHFiSWQpO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuYm9va1F1ZXN0aW9uc01hcC5zaXplKTtcbiAgICBsZXQgcXVlc3Rpb25zID0gW107XG4gICAgLy8gSEEgMzEtSkFOLTI0IEFkZGVkIHRlcm5hcnkgdG8gYXZvaWQgdW5kZWZpbmVkXG4gICAgZm9yKHZhciBzcSBpbiB0aGlzLmJvb2tRdWVzdGlvbnNNYXA/LmdldChxYklkKT8uUXVlc3Rpb25zX19yPy5yZWNvcmRzKSB7XG4gICAgICBsZXQgcTogUXVlc3Rpb24gPSB0aGlzLmJvb2tRdWVzdGlvbnNNYXA/LmdldChxYklkKS5RdWVzdGlvbnNfX3IucmVjb3Jkc1tzcV07XG4gICAgICAvLyBIQSAwOUZFQjI0IGlmIHF1ZXN0aW9uIGlzIHRoZXJlIHByb2Nlc3NcbiAgICAgIGlmKHEpe1xuICAgICAgICBpZigocS5UeXBlX19jID09ICdEcm9wZG93bicgfHwgcS5UeXBlX19jID09ICdSYWRpbycpICYmIHRoaXMuc3FPcHRpb25zLmdldChxLklkKSkge1xuICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKHRoaXMuc3FPcHRpb25zLmdldChxLklkKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcXVlc3Rpb25zLnB1c2gocSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBWRCAxMkp1bjI0IGZpZWxkIHBlcm1pc2lzaW9uIGNoYW5nZXNcbiAgICBpZiAodGhpcy5maWVsZFJlc3RyaWN0aW9ucykge1xuICAgICAgY29uc3QgZmllbGRSZXN0cmljdGlvbnMgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHRoaXMuZmllbGRSZXN0cmljdGlvbnMuZmllbGRzKSk7XG4gICAgICBxdWVzdGlvbnMuZm9yRWFjaChxdWVzID0+IHtcbiAgICAgICAgICBjb25zdCByZXN0cmljdGlvbiA9IGZpZWxkUmVzdHJpY3Rpb25zLmdldChxdWVzLlVuaXF1ZV9JZGVudGlmaWVyX19jKTtcbiAgXG4gICAgICAgICAgaWYgKHJlc3RyaWN0aW9uKSB7XG4gICAgICAgICAgICAgIHF1ZXMuUmVhZF9Pbmx5X19jID0gcmVzdHJpY3Rpb24gPT09ICdyZWFkT25seSc7XG4gICAgICAgICAgICAgIHF1ZXMuSXNfSGlkZV9fYyA9IHJlc3RyaWN0aW9uID09PSAnaGlkZSc7XG4gICAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbiAgICAvLyBjb25zb2xlLmxvZyhxdWVzdGlvbnMpO1xuICAgIHJldHVybiBxdWVzdGlvbnM7XG4gIH1cbiAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xuICByZWFkVHJhbnNRdWVzdGlvbnMocWJJZDogc3RyaW5nKXtcbiAgICBsZXQgcmVjb3JkID0gW107XG4gICAgICBsZXQgdHJhbnNsYXRlUmVjb3JkID0gdGhpcy50cmFuc2xhdGVNYXAuZ2V0KHFiSWQpO1xuICAgICBpZih0cmFuc2xhdGVSZWNvcmQgJiYgdHJhbnNsYXRlUmVjb3JkLmxlbmd0aCA+IDApIHtcbiAgICAgIHRyYW5zbGF0ZVJlY29yZC5mb3JFYWNoKGxhblJlYyA9PiB7XG4gICAgICAgIGlmKGxhblJlYy5sYW5ndWFnZUNvZGUgPT0gdGhpcy5sYW5ndWFnZUNvZGUpe1xuICAgICAgICAgICByZWNvcmQgPSBsYW5SZWMuZmllbGRzXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICB9XG4gICAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgZ2V0VGV4dCh2YWx1ZSkge1xuICAgIHZhciBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHZhbHVlLCBcInRleHQvaHRtbFwiKTtcbiAgICAvL2NvbnNvbGUubG9nKCBkb2MuZG9jdW1lbnRFbGVtZW50LnRleHRDb250ZW50KTtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoXG4gICAgICBkb2MuZG9jdW1lbnRFbGVtZW50LnRleHRDb250ZW50XG4gICAgKTtcbiAgfVxuICBnZXREcm9wRG93bihldmVudDphbnkpe1xuICAgIHRoaXMuaGFkbGVEcm9wRG93bkRlcGVuZGVudC5lbWl0KGV2ZW50KTtcbiAgfVxuIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICBnZXRDYWxlbmRhckRhdGUoZXZlbnQ6YW55KXtcbiAgICB0aGlzLmhhbmRsZUNhbGVuZGFyRGF0ZS5lbWl0KGV2ZW50KTtcbiAgfVxuICBnZXRDYWxlbmRhckV2ZW50KGV2ZW50OmFueSl7XG4gICAgdGhpcy5oYW5kbGVDYWxlbmRhckV2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8bmd4LXNwaW5uZXIgc2l6ZT1cIm1lZGl1bVwiIFtuYW1lXT1cInNwaW5uZXJOYW1lXCIgW3R5cGVdPVwic3Bpbm5lclR5cGVcIj48L25neC1zcGlubmVyPlxuPCEtLSBCb29rbGV0IEhhbmRsaW5nLS0+XG48IS0tIEhBIDE5REVDMjMgRm9yIERpcmVjdGlvbiAtLT5cbjxkaXYgKm5nRm9yPVwibGV0IHFiIG9mIGJvb2tsZXRcIiBbbmdDbGFzc109XCJsYW5nRGlyZWN0aW9uXCI+XG4gICAgPCEtLSBNUiBDb21tZW50ZWQgYmVsb3cgY29kZSB0byBlbnN1cmUgc2luZ2xlIEpTT04gZm9yIFVOQ09ORElUSU9OQUwgQm9va2xldHMgLS0+XG4gICAgPCEtLSA8bGliLXF1ZXN0aW9ubmFpcmUgW3NlcnZdPVwic2VydlwiIFtxYklkXT1cInFiLklkXCIgW3Rrbl09XCJ0a25cIj48L2xpYi1xdWVzdGlvbm5haXJlPiAtLT5cbiAgICA8IS0tIEhBIDI4REVDMjMgQmVsb3cgSWYgbG9naWMgaXMgdG8gbG9hZCBmcm9tIGJvb2tsZXQgIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJxYi5RdWVzdGlvbnNfX3I/LnJlY29yZHM7IGVsc2UgZWxzZUJsb2NrXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHF1ZXMgb2YgcWIuUXVlc3Rpb25zX19yLnJlY29yZHNcIiBjbGFzcz1cInF1ZXN0aW9uZGl2MVwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8IS0tIEhBIDE3SkFOMjQgLSBJcyB0aXRsZSBpcyBlbmFibGVkIHNvIHRoYXQgYmFzZWQgb24gdGhlIGJvb2xlYW4gZGl2IHdpbGwgYmUgdmlzaWJsZSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5Jc19UaXRsZV9fY1wiIFtjbGFzc109XCJxYi5pc1NoZW5nZWxfX2MgPyAnaGVhZGVyLXN0eWxlJyA6ICdxdWVzdGlvbi1mLXNpemUgYWRkaXRpb25hbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBWRCAwOE5PVjIzIC0gc2hvd2luZyBsYWJsZSB3aGVuIGl0cyBhdmFpbGFibGUtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImdldFRleHQocXVlcz8uUXVlc3Rpb25fVGV4dF9fYylcIiAqbmdJZj1cInF1ZXM/LlF1ZXN0aW9uX1RleHRfX2NcIiA+IFxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcXVlcz8uUXVlc3Rpb25fVGV4dF9fYyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gPCEtLSBWRCAxOUpBTjI0IC0gZ2V0dGluZyB0b2tlbiBhcyBpbnB1dCAtLT4gPCEtLVZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzLS0+XG4gICAgICAgICAgICAgICAgPCEtLVZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlcy0tPiBcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uYm9vayBbcWJJdGVtXT1cInFiXCIgW3Rva2VuXT1cInRva2VuXCIgXG4gICAgICAgICAgICAgICAgW2xhYmVsVmFsdWVdPVwibGFiZWxWYWx1ZVwiIFxuICAgICAgICAgICAgICAgIFtxdWVzdGlvbkl0ZW1dPVwicXVlc1wiIFxuICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVkUXVlc3Rpb25zXT1cInJlYWRUcmFuc1F1ZXN0aW9ucyhxYi5JZClcIiBcbiAgICAgICAgICAgICAgICBbcXVlc3Rpb25zXT1cInJlYWRRdWVzdGlvbnMocWIuSWQpXCIgIFxuICAgICAgICAgICAgICAgIChoYW5kbGVEcm9wRG93bik9XCJnZXREcm9wRG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoaGFuZGxlQ2FsZW5kYXJEYXRlKT1cImdldENhbGVuZGFyRGF0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoaGFuZGxlQ2FsZW5kYXJFdmVudCk9XCJnZXRDYWxlbmRhckV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2xpYi1xdWVzdGlvbmJvb2s+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBIQSAyOERFQzIzIEJlbG93IGVsc2UgbG9naWMgaXMgdG8gbG9hZCBmcm9tIGJvb2tzIG9yIHF1ZXN0aW9ucyAtLT5cbiAgICA8bmctdGVtcGxhdGUgI2Vsc2VCbG9jaz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9uZGl2MVwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXFiLklzX1RpdGxlX19jXCIgW2NsYXNzXT1cInFiLmlzU2hlbmdlbF9fYyA/ICdoZWFkZXItc3R5bGUnIDogJ3F1ZXN0aW9uLWYtc2l6ZSBhZGRpdGlvbmFsJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFZEIDA4Tk9WMjMgLSBzaG93aW5nIGxhYmxlIHdoZW4gaXRzIGF2YWlsYWJsZS0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZ2V0VGV4dChxYj8uUXVlc3Rpb25fVGV4dF9fYylcIiAqbmdJZj1cInFiPy5RdWVzdGlvbl9UZXh0X19jXCIgPiBcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHFiPy5RdWVzdGlvbl9UZXh0X19jIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBxYj8uVGl0bGVfX2MgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+IDwhLS0gVkQgMTlKQU4yNCAtIGdldHRpbmcgdG9rZW4gYXMgaW5wdXQgLS0+IDwhLS0gIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzLS0+XG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbmJvb2sgW3FiSXRlbV09XCJxYlwiIFt0b2tlbl09XCJ0b2tlblwiIFtsYWJlbFZhbHVlXT1cImxhYmVsVmFsdWVcIiBbcXVlc3Rpb25JdGVtXT1cInFiXCIgW3RyYW5zbGF0ZWRRdWVzdGlvbnNdPVwicmVhZFRyYW5zUXVlc3Rpb25zKHFiLklkKVwiIFtxdWVzdGlvbnNdPVwicmVhZFF1ZXN0aW9ucyhxYi5JZClcIiAgKGhhbmRsZURyb3BEb3duKT1cImdldERyb3BEb3duKCRldmVudClcIj48L2xpYi1xdWVzdGlvbmJvb2s+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48IS0tIEdyb3VwIEFjdGlvbnMgLS0+XG48IS0tIEhBIDE5REVDMjMgRm9yIERpcmVjdGlvbiAtLT5cbjxkaXYgY2xhc3M9XCJhbGlnbi1zdWJtaXQtcm93XCIgKm5nSWY9XCJhYkl0ZW0/LlN0YXR1c19fYyAhPSAnQ29tcGxldGVkJ1wiIFtuZ0NsYXNzXT1cImxhbmdEaXJlY3Rpb25cIj5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uczsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDwhLS0gLy8gSEEgMjJKQU4yNCBDb21tb25pc2UgdGhlIGJ1dHRvbiBzdHlsZSBpbiBmdXNpb24gLS0+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUJvb2tsZXRBY3Rpb25DbGljayhhY3Rpb24pXCIgbmdDbGFzcz1cImJ0biBidG4tcHJpbWFyeSBmYy1idXR0b24gbnh0QnV0dG9uXCI+XG4gICAgICAgICAgICB7eyBhY3Rpb24ubmFtZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -4347,12 +4347,20 @@ class CustomCalendarComponent {
|
|
|
4347
4347
|
if (changeValue == 'calendar-modal-save') {
|
|
4348
4348
|
this.onSave();
|
|
4349
4349
|
}
|
|
4350
|
+
// 23Sep24 - data bind changes
|
|
4351
|
+
if (changeValue == 'databind') {
|
|
4352
|
+
if (this.question?.input) {
|
|
4353
|
+
this.allEvents = this.question.input;
|
|
4354
|
+
}
|
|
4355
|
+
this.processQuestion();
|
|
4356
|
+
this.generateCalendar();
|
|
4357
|
+
}
|
|
4350
4358
|
});
|
|
4351
4359
|
// this.dateSelected.emit(this.calendar);
|
|
4352
4360
|
//this.eventSelected.emit(this.allEvents);
|
|
4353
4361
|
}
|
|
4354
4362
|
ngOnChanges(simplechanges) {
|
|
4355
|
-
if (simplechanges['question']
|
|
4363
|
+
if (simplechanges['question']) {
|
|
4356
4364
|
this.allEvents = this.question.input;
|
|
4357
4365
|
}
|
|
4358
4366
|
}
|
|
@@ -5883,7 +5891,7 @@ class BookletComponent {
|
|
|
5883
5891
|
// HA 19DEC23 langDirection variable is created to assign the direction as class
|
|
5884
5892
|
langDirection = 'ltr'; // HA 28DEC23 making ltr as default direction
|
|
5885
5893
|
answerList = []; // HA 11-JAN-24 Answerlist to store the minimal value
|
|
5886
|
-
dataBind
|
|
5894
|
+
dataBind; // HA 18-JAN-24 To insert the endpoint value to the question
|
|
5887
5895
|
allEvents = []; // VD 06Sep24 calendar changes
|
|
5888
5896
|
constructor(sfService, dataService, storageService, route, sanitizer, changeService, el, i18nService) {
|
|
5889
5897
|
this.sfService = sfService;
|