@james_jayaraj/test-npm 0.7.5 → 0.7.6
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.
Potentially problematic release.
This version of @james_jayaraj/test-npm might be problematic. Click here for more details.
- package/esm2020/lib/environments/config.mjs +3 -3
- package/esm2020/lib/environments/environment.mjs +2 -2
- package/esm2020/lib/hola-rx.component.mjs +28 -3
- package/fesm2015/james_jayaraj-test-npm.mjs +30 -5
- package/fesm2015/james_jayaraj-test-npm.mjs.map +1 -1
- package/fesm2020/james_jayaraj-test-npm.mjs +30 -5
- package/fesm2020/james_jayaraj-test-npm.mjs.map +1 -1
- package/lib/hola-rx.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -185,7 +185,12 @@ export class HolaRx {
|
|
|
185
185
|
this.tempRxDetails = RxDetails;
|
|
186
186
|
if (!this.IsNullOrEmpty(this.commonservice.HolaRxToken)) {
|
|
187
187
|
this.auditlog(JSON.stringify(RxDetails), config.CREATE_CONSULTATION);
|
|
188
|
-
this.
|
|
188
|
+
if (!this.IsNullOrEmpty(RxDetails.appointmentid)) {
|
|
189
|
+
this.appointmentValidation(RxDetails, 1);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
this.validation(RxDetails, 1);
|
|
193
|
+
}
|
|
189
194
|
if (this.message != "") {
|
|
190
195
|
this.commonLoaderServices.addLoaderElement(false);
|
|
191
196
|
this.Changedetect.detectChanges();
|
|
@@ -275,7 +280,12 @@ export class HolaRx {
|
|
|
275
280
|
this.tempRxDetails = RxDetails;
|
|
276
281
|
if (!this.IsNullOrEmpty(this.commonservice.HolaRxToken)) {
|
|
277
282
|
this.auditlog(JSON.stringify(RxDetails), config.CREATE_CONSULTATION);
|
|
278
|
-
this.
|
|
283
|
+
if (!this.IsNullOrEmpty(RxDetails.appointmentid)) {
|
|
284
|
+
this.appointmentValidation(RxDetails, 2);
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
this.validation(RxDetails, 2);
|
|
288
|
+
}
|
|
279
289
|
if (this.message != "") {
|
|
280
290
|
this.commonLoaderServices.addLoaderElement(false);
|
|
281
291
|
this.Changedetect.detectChanges();
|
|
@@ -619,6 +629,21 @@ export class HolaRx {
|
|
|
619
629
|
this.commonservice.setlogvalue(false, ex.message, ex.stack, "HolaRx", "commonDownload");
|
|
620
630
|
}
|
|
621
631
|
}
|
|
632
|
+
appointmentValidation(RxDetails, flag) {
|
|
633
|
+
try {
|
|
634
|
+
if (this.IsNullOrEmpty(RxDetails.facilityid)) {
|
|
635
|
+
this.validationtoast(errorconfig.error_4.message, errorconfig.error_4.code);
|
|
636
|
+
}
|
|
637
|
+
if (flag == 2) {
|
|
638
|
+
if (this.IsNullOrEmpty(RxDetails.rxid)) {
|
|
639
|
+
this.validationtoast(errorconfig.error_46.message, errorconfig.error_46.code);
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
catch (ex) {
|
|
644
|
+
this.commonservice.setlogvalue(false, ex.message, ex.stack, "HolaRx", "validation");
|
|
645
|
+
}
|
|
646
|
+
}
|
|
622
647
|
validation(RxDetails, flag) {
|
|
623
648
|
try {
|
|
624
649
|
if (!this.IsNullOrEmpty(RxDetails)) {
|
|
@@ -862,4 +887,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
862
887
|
type: ViewChild,
|
|
863
888
|
args: ["rxwidgets", { static: true }]
|
|
864
889
|
}] } });
|
|
865
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9sYS1yeC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBdUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU16RCxNQUFNLE9BQU8sTUFBTTtJQVFqQixZQUFvQixhQUE2QixFQUFTLG9CQUEwQyxFQUFVLFVBQXNCLEVBQVUsWUFBK0I7UUFBekosa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQVMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFOckssWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHOUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUM1QixRQUFRO0lBRVIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLGFBQWEs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QUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDM0M7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDNUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDOUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs2QkFDdkM7aUNBQ0ksSUFB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Q0FBQyxhQUFhLENBQUMsaUJBQWlCO2dCQUNwRCxjQUFjLEVBQUUsS0FBSztnQkFDckIsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLGVBQWUsRUFBRSxFQUFFO2dCQUNuQixTQUFTLEVBQUUsT0FBTztnQkFDbEIsR0FBRyxFQUFFLEdBQUc7Z0JBQ1IsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2FBQzFCLENBQUE7WUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsRSxtQkFBbUI7WUFDckIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3RGLENBQUMsQ0FBQyxDQUFBO1NBQ0g7UUFDRCxPQUFPLEVBQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ25GO0lBQ0gsQ0FBQzs7bUdBanpCVSxNQUFNO3VGQUFOLE1BQU0sbUtDWm5CLGtqQkFZYzsyRkRBRCxNQUFNO2tCQUxsQixTQUFTOytCQUNFLFNBQVM7aU1BV3VCLE9BQU87c0JBQWhELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2VzLCBDb21tb25Mb2FkZXJTZXJ2aWNlcyB9IGZyb20gJy4vc2VydmljZXMvY29tbW9uJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjb25maWcsIGVycm9yY29uZmlnIH0gZnJvbSAnLi9lbnZpcm9ubWVudHMvY29uZmlnJztcclxuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaG9sYS1yeCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hvbGEtcnguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hvbGEtcnguY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb2xhUnggaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgdGVtcFJ4RGV0YWlsczogYW55O1xyXG4gIHByaXZhdGUgbWVzc2FnZSA9IFwiXCI7XHJcbiAgcHJpdmF0ZSB0ZW1wcnhpZCA9IFwiXCI7XHJcbiAgcHJpdmF0ZSB0ZW1wcmVmZXJyYWxpZCA9IFwiXCI7XHJcbiAgcHJpdmF0ZSBzcGlubmVyZmxhZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKFwicnh3aWRnZXRzXCIsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRlbnQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tbW9uc2VydmljZTogQ29tbW9uU2VydmljZXMsIHB1YmxpYyBjb21tb25Mb2FkZXJTZXJ2aWNlczogQ29tbW9uTG9hZGVyU2VydmljZXMsIHByaXZhdGUgYXBpc2VydmljZTogQXBpU2VydmljZSwgcHJpdmF0ZSBDaGFuZ2VkZXRlY3Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7IHRoaXMuc2V0TG9naW50ZXJ2YWwoKTsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TG9naW50ZXJ2YWwoKSB7XHJcbiAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vbnNlcnZpY2UubG9ndmFsdWUgIT0gdW5kZWZpbmVkICYmIHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSAhPSBudWxsICYmIHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy5hcGlzZXJ2aWNlLlBvc3QodGhpcy5jb21tb25zZXJ2aWNlLmxvZ3ZhbHVlLCBjb25maWcuQ1JFQVRFX0xPR19FWENFUFRJT04pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3ZhbHVlID0gbnVsbDtcclxuICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0sIDUwMDAwKTtcclxuICB9XHJcblxyXG5cclxuICBpbml0KGNsaWVudGlkOiBzdHJpbmcsIGNsaWVudHNlY3JldDogc3RyaW5nLCBzYW5kYm94OiBib29sZWFuLCBmbGFnPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiSW5pdCBBdXRoZW50aWNhdGlvblwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gXCJjbGllbnRpZFwiXHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXJUeXBlID0gXCJjbGllbnRpZFwiO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBkYXRhID0ge1xyXG4gICAgICAgIGNsaWVudElkOiBjbGllbnRpZCxcclxuICAgICAgICBjbGllbnRTZWNyZXQ6IGNsaWVudHNlY3JldFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94ID0gc2FuZGJveDtcclxuICAgICAgaWYgKCFzYW5kYm94KSB7XHJcbiAgICAgICAgZW52aXJvbm1lbnQuYXBpRW5kcG9pbnQgPSBjb25maWcuTElWRV9VUkw7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZW52aXJvbm1lbnQuYXBpRW5kcG9pbnQgPSBjb25maWcuU1RBR0lOR19VUkw7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpO1xyXG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hcGlzZXJ2aWNlLlBvc3QoZGF0YSwgXCJhdXRoZW50aWNhdGVcIikucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9rZW5FeHBpcnknLCBKU09OLnN0cmluZ2lmeShyZXMuZXhwaXJlc2luKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4gPSByZXMuYXV0aC5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VGltZXIoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5OZXdSeCh0aGlzLnRlbXBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuRWRpdFJ4KHRoaXMudGVtcFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFnID09IDMpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5SZWZlcnJhbCh0aGlzLnRlbXBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZFJ4KHRoaXMudGVtcHJ4aWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSA1KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZFJlZmVycmFsKHRoaXMudGVtcHJlZmVycmFsaWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXMuZmxhZykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzEuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VGltZXIoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICB2YXIgZXhwaXJ5ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW5FeHBpcnknKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGV4cGlyeSkgJiYgd2luZG93Lm5hdmlnYXRvci5vbkxpbmUgJiYgIXRoaXMuYXV0aGVudGljYXRlQmxvY2sgJiYgKG5ldyBEYXRlKG5ldyBEYXRlKGV4cGlyeSkuc2V0TWludXRlcyhuZXcgRGF0ZShleHBpcnkpLmdldE1pbnV0ZXMoKSAtIDEpKSA8PSBuZXcgRGF0ZSgpIHx8IHRoaXMuYXBpc2VydmljZS51bkF1dGhvcml6ZWRGbGFnKSkge1xyXG4gICAgICAgICAgdGhpcy5hcGlzZXJ2aWNlLnVuQXV0aG9yaXplZEZsYWcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lcmZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBlcnIubWVzc2FnZSwgZXJyLnN0YWNrLCBcIkhvbGFSeFwiLCBcInNldFRpbWVyXCIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxMDAwKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJzZXRUaW1lclwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5OZXdSeChSeERldGFpbHM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiTmV3IFJ4XCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMVwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkoUnhEZXRhaWxzKSwgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDEpO1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHRoaXMubWVzc2FnZSwgXCJlcnJvclwiLCBcIlwiLCA3MDAwKTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5Qb3N0KFJ4RGV0YWlscywgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50ZW1wUnhEZXRhaWxzID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5jb25zdWx0YXRpb25JZCA9IFJ4RGV0YWlscy5jb25zdWx0YXRpb25pZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzID0gcmVzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGF0aWVudERldGFpbHMgPSByZXMucGF0aWVudERldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZmFjaWxpdHlEZXRhaWxzID0gcmVzLmZhY2lsaXR5RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JQYXRpZW50SWQgPSByZXMudmVuZG9yUGF0aWVudElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvckZhY2lsaXR5SWQgPSByZXMudmVuZG9yRmFjaWxpdHlJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JQaHlzaWNpYW5JZCA9IHJlcy52ZW5kb3JQaHlzaWNpYW5JZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52aXNpdElkID0gcmVzLnZpc2l0SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY3JlYXRlUGF0aWVudFJlc3BvbnNlID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmVkaXRQcmVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMpICYmICF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQpICYmIHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkID09IDApXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuSEl2YWxpZGF0aW9uKHJlcyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21tb25zZXJ2aWNlLm9wZW5SeFdpZGdldCh0aGlzLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJlcnJvclwiLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdChkYXRhLmNsaWVudElkLCBkYXRhLmNsaWVudFNlY3JldCwgdGhpcy5jb21tb25zZXJ2aWNlLnNhbmRib3gsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzEuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbkVkaXRSeChSeERldGFpbHM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiRWRpdCBSeFwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIgPSAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscykgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIpID8gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmVtYWlsKSA/IFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwgOiBcIlwiIDogXCJcIiA6IFwiXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllclR5cGUgPSBcInByYWN0aXRpb25lciBlbWFpbFwiO1xyXG4gICAgdHJ5IHtcclxuICAgICAgUnhEZXRhaWxzLnR5cGUgPSBcIjFcIjtcclxuICAgICAgUnhEZXRhaWxzLmNsaWVudElkID0gdGhpcy5jb21tb25zZXJ2aWNlLmdldENyZWRldGlhbCgpO1xyXG4gICAgICB0aGlzLnRlbXBSeERldGFpbHMgPSBSeERldGFpbHM7XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICB0aGlzLmF1ZGl0bG9nKEpTT04uc3RyaW5naWZ5KFJ4RGV0YWlscyksIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb24oUnhEZXRhaWxzLCAyKTtcclxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHZhciByZXMgPSB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih0aGlzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgXCJcIiwgNzAwMCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChSeERldGFpbHMsIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMgPSByZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5wYXRpZW50RGV0YWlscyA9IHJlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5mYWNpbGl0eURldGFpbHMgPSByZXMuZmFjaWxpdHlEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBhdGllbnRJZCA9IHJlcy52ZW5kb3JQYXRpZW50SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yRmFjaWxpdHlJZCA9IHJlcy52ZW5kb3JGYWNpbGl0eUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBoeXNpY2lhbklkID0gcmVzLnZlbmRvclBoeXNpY2lhbklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZpc2l0SWQgPSByZXMudmlzaXRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKFJ4RGV0YWlscy5yeGlkICE9IG51bGwgJiYgUnhEZXRhaWxzLnJ4aWQgIT0gXCJcIiAmJiBSeERldGFpbHMucnhpZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlcy5yeERldGFpbHMgIT0gbnVsbCAmJiByZXMucnhEZXRhaWxzICE9IFwiXCIgJiYgcmVzLnJ4RGV0YWlscyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZWRpdFByZXNjcmlwdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnJ4RGV0YWlscyA9IHJlcy5yeERldGFpbHM7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnJ4aWQgPSByZXMucnhEZXRhaWxzLnJ4SWQ7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNyZWF0ZVBhdGllbnRSZXNwb25zZSA9IHJlcztcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkKSAmJiB0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscy5lUHJlc2NyaXB0aW9uQWxsb3dlZCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLkhJdmFsaWRhdGlvbihyZXMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uc2VydmljZS5vcGVuUnhXaWRnZXQodGhpcy5jb250ZW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlblJlZmVycmFsKFJ4RGV0YWlsczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJTZW5kIFJlZmVycmFsXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMlwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkoUnhEZXRhaWxzKSwgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDMpO1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHRoaXMubWVzc2FnZSwgdGhpcy5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih0aGlzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgXCJcIiwgNzAwMCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChSeERldGFpbHMsIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMgPSByZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5wYXRpZW50RGV0YWlscyA9IHJlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5mYWNpbGl0eURldGFpbHMgPSByZXMuZmFjaWxpdHlEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBhdGllbnRJZCA9IHJlcy52ZW5kb3JQYXRpZW50SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yRmFjaWxpdHlJZCA9IHJlcy52ZW5kb3JGYWNpbGl0eUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBoeXNpY2lhbklkID0gcmVzLnZlbmRvclBoeXNpY2lhbklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZpc2l0SWQgPSByZXMudmlzaXRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uc2VydmljZS5QYXRob2xvZ3kodGhpcy5jb250ZW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTsgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJlcnJvclwiLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHRoaXMubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgMyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFJ4KFJ4SUQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiRG93bmxvYWQgUnhcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gUnhJRDtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicnhpZFwiO1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMudGVtcHJ4aWQgPSBSeElEO1xyXG4gICAgICB2YXIgY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHJ4aWQ6IFJ4SUQsXHJcbiAgICAgICAgdHlwZTogXCIwXCIsXHJcbiAgICAgICAgY2xpZW50SWQ6IGNsaWVudElkXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksIGNvbmZpZy5QSFlTSUNJQU4uUlhfUFJJTlQgKyBSeElEICsgXCImdHlwZT0wJmNsaWVudElkPVwiICsgY2xpZW50SWQpO1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhJRCkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUlhfUFJJTlQgKyBSeElEICsgXCImdHlwZT0wJmNsaWVudElkPVwiICsgY2xpZW50SWQpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Eb3dubG9hZChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXNwb25zZS5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzcG9uc2UuZXJyb3JfY29kZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgNCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRSZWZlcnJhbChSZWZlcnJhbElEOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndHJhbnNhY3Rpb24gPSBcIkRvd25sb2FkIFJlZmVycmFsXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9IFJlZmVycmFsSUQ7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllclR5cGUgPSBcInJlZmVycmFsIGlkXCI7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy50ZW1wcmVmZXJyYWxpZCA9IFJlZmVycmFsSUQ7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHJlZmVycmFsSWQ6IFJlZmVycmFsSURcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdGxvZyhKU09OLnN0cmluZ2lmeShwYXlsb2FkKSwgY29uZmlnLlBIWVNJQ0lBTi5SRUZFUlJBTF9QUklOVCArIFJlZmVycmFsSUQpO1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUmVmZXJyYWxJRCkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNDMubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl80My5jb2RlKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDMuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDMubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUkVGRVJSQUxfUFJJTlQgKyBSZWZlcnJhbElEKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShyZXNwb25zZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uRG93bmxvYWQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCB0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzcG9uc2UuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXNwb25zZS5lcnJvcl9jb2RlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdChkYXRhLmNsaWVudElkLCBkYXRhLmNsaWVudFNlY3JldCwgdGhpcy5jb21tb25zZXJ2aWNlLnNhbmRib3gsIDUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tbW9uRG93bmxvYWQocmVzcG9uc2U6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6bm9uZTsnKTtcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuICAgICAgYS5kb3dubG9hZCA9IHJlc3BvbnNlLmZpbGVOYW1lO1xyXG4gICAgICBhLmhyZWYgPSBcImRhdGE6YXBwbGljYXRpb24vcGRmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiICsgcmVzcG9uc2UuZmlsZTtcclxuICAgICAgYS5jbGljaygpO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ3N1Y2Nlc3MnKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiY29tbW9uRG93bmxvYWRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRpb24oUnhEZXRhaWxzOiBhbnksIGZsYWc6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSkge1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLmNvbnN1bHRhdGlvbmlkKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZWlkKSAmJiB0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXJpZCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMy5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudGlkKSAmJiB0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yOS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yOS5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucnhpZCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5yeGlkKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucnhpZCA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZSkpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmlkKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UubmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzUubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmVtYWlsKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl82LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UucGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl83Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5hZGRyZXNzKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3MgPSB7fTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LmFkZHJlc3NsaW5lMSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzcxLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzcxLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8uYWRkcmVzc2xpbmUyKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3MuYWRkcmVzc2xpbmUyID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LnN1YnVyYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzEwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8ucG9zdGNvZGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LnN0YXRlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5ocGlvKSkgeyBSeERldGFpbHMucHJhY3RpY2UuaHBpbyA9IDA7IH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE0LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmZpcnN0bmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmxhc3RuYW1lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTYuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZ2VuZGVyKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZG9iKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTgubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTguY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xOS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xOS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5tb2JpbGVfcGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yMC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yMC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzID0ge307XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uYWRkcmVzc2xpbmUxKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNzIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNzIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uYWRkcmVzc2xpbmUyKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzLmFkZHJlc3NsaW5lMiA9IFwiXCI7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uc3VidXJiKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMjMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMjMuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8ucG9zdGNvZGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yNC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzPy5zdGF0ZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKGZsYWcgPT0gMykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIucHJvdmlkZXJudW1iZXIpKVxyXG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI3Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI3LmNvZGUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuc2lnbmF0dXJlX2ltYWdlKSlcclxuICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yOC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yOC5jb2RlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5ocGlpKSkgeyBSeERldGFpbHMucHJhY3RpdGlvbmVyLmhwaWkgPSAwOyB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50KSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzMwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzMwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5maXJzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQubGFzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuZ2VuZGVyKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMzMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMzMuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmRvYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM0LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5lbWFpbCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tb2JpbGVfcGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQudGltZXpvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNy5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcykpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3MgPSB7fTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uYWRkcmVzc2xpbmUxKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNjcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNjcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LmFkZHJlc3NsaW5lMikpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3MuYWRkcmVzc2xpbmUyID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uc3VidXJiKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDAubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDAuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LnBvc3Rjb2RlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDEuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LnN0YXRlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50Lm1lZGljYXJlKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZSA9IHt9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8ubnVtYmVyKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5udW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8ucmVmZXJlbmNlKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5yZWZlcmVuY2UgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8uZXhwaXJ5KSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5leHBpcnkgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5paGkpKSB7IFJ4RGV0YWlscy5wYXRpZW50LmloaSA9IDA7IH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwidmFsaWRhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSEl2YWxpZGF0aW9uKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciB3YXJuaW5nX21zZyA9ICcnO1xyXG4gICAgICBpZiAoIXZhbHVlLmlzX2hwaW9fdmFsaWQpIHtcclxuICAgICAgICB3YXJuaW5nX21zZyA9IHZhbHVlLmhwaW9fcmVzcG9uc2VfbXNnO1xyXG4gICAgICB9IGlmICghdmFsdWUuaXNfaHBpaV92YWxpZCkge1xyXG4gICAgICAgIHdhcm5pbmdfbXNnICs9IHdhcm5pbmdfbXNnID09ICcnID8gdmFsdWUuaHBpX3Jlc3BvbnNlX21zZyA6IFwiPGJyPlwiICsgdmFsdWUuaHBpX3Jlc3BvbnNlX21zZztcclxuICAgICAgfSBpZiAoIXZhbHVlLmlzX2loaV92YWxpZCkge1xyXG4gICAgICAgIHdhcm5pbmdfbXNnICs9IHdhcm5pbmdfbXNnID09ICcnID8gdmFsdWUuaWhpX3Jlc3BvbnNlX21zZyA6IFwiPGJyPlwiICsgdmFsdWUuaWhpX3Jlc3BvbnNlX21zZztcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh3YXJuaW5nX21zZykpIHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHdhcm5pbmdfbXNnLCBcIndhcm5pbmdcIik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh2YWx1ZS5paGlfcmVzcG9uc2VfbXNnKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4odmFsdWUuaWhpX3Jlc3BvbnNlX21zZywgXCJzdWNjZXNzXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIkhJdmFsaWRhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSXNOdWxsT3JFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCBTdHJpbmcodmFsdWUpLnRyaW0oKSA9PT0gXCJcIikge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiSXNOdWxsT3JFbXB0eVwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0aW9udG9hc3QoZXJyb3JfbWVzc2FnZTogYW55LCBlcnJvcl9jb2RlPzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZXJyb3JSZXNwb25zZShlcnJvcl9jb2RlLCBlcnJvcl9tZXNzYWdlKTtcclxuICAgICAgaWYgKHRoaXMubWVzc2FnZSA9PSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gZXJyb3JfY29kZSArIFwiOiBcIiArIGVycm9yX21lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlICs9IFwiPGJyPlwiICsgZXJyb3JfY29kZSArIFwiOiBcIiArIGVycm9yX21lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwidmFsaWRhdGlvbnRvYXN0XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlcnJvclJlc3BvbnNlKGVycm9yX2NvZGU6IGFueSwgZXJyb3JfbWVzc2FnZTogYW55LCBzdWNjZXNzZmxhZzogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciByZXNwb25zZTogYW55ID0ge1xyXG4gICAgICAgIHN0YXR1czogc3VjY2Vzc2ZsYWcgPT0gdHJ1ZSA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgIHJlc3BvbnNlOiB7XHJcbiAgICAgICAgICByZXNwb25zZV9jb2RlOiBzdWNjZXNzZmxhZyA9PSB0cnVlID8gZXJyb3JfY29kZSA6IFwiXCIsXHJcbiAgICAgICAgICByZXNwb25zZV9tZXNzYWdlOiBzdWNjZXNzZmxhZyA9PSB0cnVlID8gZXJyb3JfbWVzc2FnZSA6IFwiXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiB7XHJcbiAgICAgICAgICBlcnJvcl9jb2RlOiBzdWNjZXNzZmxhZyA9PSBmYWxzZSA/IGVycm9yX2NvZGUgOiBcIlwiLFxyXG4gICAgICAgICAgZXJyb3JfbWVzc2FnZTogc3VjY2Vzc2ZsYWcgPT0gZmFsc2UgPyBlcnJvcl9tZXNzYWdlIDogXCJcIlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XHJcbiAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImVycm9yUmVzcG9uc2VcIik7XHJcbiAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXVkaXRsb2codmFsdWU6IGFueSwgYXBpOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0ge1xyXG4gICAgICAgIGlkZW50aWZpZXJWYWx1ZTogdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIsXHJcbiAgICAgICAgaWRlbnRpZmllclR5cGU6IHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSxcclxuICAgICAgICByZXF1ZXN0UGF5bG9hZDogdmFsdWUsXHJcbiAgICAgICAgcmVzcG9uc2VDb2RlOiBcIlwiLFxyXG4gICAgICAgIHJlc3BvbnNlUGF5bG9hZDogXCJcIixcclxuICAgICAgICBjcmVhdGVkQnk6IFwiVUktUnhcIixcclxuICAgICAgICBhcGk6IGFwaSxcclxuICAgICAgICByZXF1ZXN0VXJsOiB3aW5kb3cub3JpZ2luXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcGlzZXJ2aWNlLlBvc3QoZGF0YSwgY29uZmlnLkFVRElUX0xPRykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVyci5tZXNzYWdlLCBlcnIuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiYXVkaXRsb2dcIik7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImF1ZGl0bG9nXCIpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8IS0tIDx1bCBjbGFzcz1cIm5vdGlmaWNhdGlvbnNcIiA+PC91bD5cclxuPGRpdiBbY2xhc3NdPVwieydsb2FkZXJfdmlzaWJsZSc6Y29tbW9uTG9hZGVyU2VydmljZXMuZnVsbFNjcmVlbkxvYWRlciwnbG9hZGVyX2hpZGRlbic6IWNvbW1vbkxvYWRlclNlcnZpY2VzLmZ1bGxTY3JlZW5Mb2FkZXJ9XCJcclxuICAgIGNsYXNzPVwic3BsYXNoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGF1c2VcIj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPiA8aW1nIGNsYXNzPVwic3Bpbm5lci1pbWdcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtaG9sYS1oZWFsdGgtc3Bpbm5lci5wbmdcIiBhbHQ9XCJob2xhX2hlYWx0aFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCI+TG9hZGluZy4uLjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcnh3aWRnZXRzPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
890
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9sYS1yeC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBdUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU16RCxNQUFNLE9BQU8sTUFBTTtJQVFqQixZQUFvQixhQUE2QixFQUFTLG9CQUEwQyxFQUFVLFVBQXNCLEVBQVUsWUFBK0I7UUFBekosa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQVMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFOckssWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHOUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUM1QixRQUFRO0lBRVIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLGFBQWEs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QUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDM0M7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDNUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDOUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs2QkFDdkM7aUNBQ0ksSUFB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U0FBUyxFQUFFLE9BQU87Z0JBQ2xCLEdBQUcsRUFBRSxHQUFHO2dCQUNSLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTTthQUMxQixDQUFBO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDbEUsbUJBQW1CO1lBQ3JCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN0RixDQUFDLENBQUMsQ0FBQTtTQUNIO1FBQ0QsT0FBTyxFQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUNuRjtJQUNILENBQUM7O21HQTEwQlUsTUFBTTt1RkFBTixNQUFNLG1LQ1puQixrakJBWWM7MkZEQUQsTUFBTTtrQkFMbEIsU0FBUzsrQkFDRSxTQUFTO2lNQVd1QixPQUFPO3NCQUFoRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlcywgQ29tbW9uTG9hZGVyU2VydmljZXMgfSBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbic7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY29uZmlnLCBlcnJvcmNvbmZpZyB9IGZyb20gJy4vZW52aXJvbm1lbnRzL2NvbmZpZyc7XHJcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2hvbGEtcngnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ob2xhLXJ4LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ob2xhLXJ4LmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSG9sYVJ4IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIHRlbXBSeERldGFpbHM6IGFueTtcclxuICBwcml2YXRlIG1lc3NhZ2UgPSBcIlwiO1xyXG4gIHByaXZhdGUgdGVtcHJ4aWQgPSBcIlwiO1xyXG4gIHByaXZhdGUgdGVtcHJlZmVycmFsaWQgPSBcIlwiO1xyXG4gIHByaXZhdGUgc3Bpbm5lcmZsYWcgPSBmYWxzZTtcclxuICBwcml2YXRlIGF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZChcInJ4d2lkZ2V0c1wiLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbW1vbnNlcnZpY2U6IENvbW1vblNlcnZpY2VzLCBwdWJsaWMgY29tbW9uTG9hZGVyU2VydmljZXM6IENvbW1vbkxvYWRlclNlcnZpY2VzLCBwcml2YXRlIGFwaXNlcnZpY2U6IEFwaVNlcnZpY2UsIHByaXZhdGUgQ2hhbmdlZGV0ZWN0OiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkgeyB0aGlzLnNldExvZ2ludGVydmFsKCk7IH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldExvZ2ludGVydmFsKCkge1xyXG4gICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25zZXJ2aWNlLmxvZ3ZhbHVlICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndmFsdWUgIT0gbnVsbCAmJiB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndmFsdWUgIT0gXCJcIikge1xyXG4gICAgICAgIHRoaXMuYXBpc2VydmljZS5Qb3N0KHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSwgY29uZmlnLkNSRUFURV9MT0dfRVhDRVBUSU9OKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9LCA1MDAwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaW5pdChjbGllbnRpZDogc3RyaW5nLCBjbGllbnRzZWNyZXQ6IHN0cmluZywgc2FuZGJveDogYm9vbGVhbiwgZmxhZz86IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcpIHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndHJhbnNhY3Rpb24gPSBcIkluaXQgQXV0aGVudGljYXRpb25cIjtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9IFwiY2xpZW50aWRcIlxyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwiY2xpZW50aWRcIjtcclxuICAgICAgfVxyXG4gICAgICB2YXIgZGF0YSA9IHtcclxuICAgICAgICBjbGllbnRJZDogY2xpZW50aWQsXHJcbiAgICAgICAgY2xpZW50U2VjcmV0OiBjbGllbnRzZWNyZXRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCA9IHNhbmRib3g7XHJcbiAgICAgIGlmICghc2FuZGJveCkge1xyXG4gICAgICAgIGVudmlyb25tZW50LmFwaUVuZHBvaW50ID0gY29uZmlnLkxJVkVfVVJMO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGVudmlyb25tZW50LmFwaUVuZHBvaW50ID0gY29uZmlnLlNUQUdJTkdfVVJMO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTtcclxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5Qb3N0KGRhdGEsIFwiYXV0aGVudGljYXRlXCIpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyeENyZWRlbnRpYWxzJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Rva2VuRXhwaXJ5JywgSlNPTi5zdHJpbmdpZnkocmVzLmV4cGlyZXNpbikpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGVCbG9jayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuID0gcmVzLmF1dGguYWNjZXNzX3Rva2VuO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFRpbWVyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZmxhZyA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuTmV3UngodGhpcy50ZW1wUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3BlbkVkaXRSeCh0aGlzLnRlbXBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuUmVmZXJyYWwodGhpcy50ZW1wUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWcgPT0gNCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG93bmxvYWRSeCh0aGlzLnRlbXByeGlkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWcgPT0gNSkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG93bmxvYWRSZWZlcnJhbCh0aGlzLnRlbXByZWZlcnJhbGlkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghcmVzLmZsYWcpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZyAmJiB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJlcnJvclwiLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZyAmJiB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCB0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJpbml0XCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJlcnJvclwiLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGVCbG9jayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJpbml0XCIpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGVCbG9jayA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZyAmJiB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJpbml0XCIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFRpbWVyKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgdmFyIGV4cGlyeSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rva2VuRXhwaXJ5JykgYXMgYW55KTtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShleHBpcnkpICYmIHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lICYmICF0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrICYmIChuZXcgRGF0ZShuZXcgRGF0ZShleHBpcnkpLnNldE1pbnV0ZXMobmV3IERhdGUoZXhwaXJ5KS5nZXRNaW51dGVzKCkgLSAxKSkgPD0gbmV3IERhdGUoKSB8fCB0aGlzLmFwaXNlcnZpY2UudW5BdXRob3JpemVkRmxhZykpIHtcclxuICAgICAgICAgIHRoaXMuYXBpc2VydmljZS51bkF1dGhvcml6ZWRGbGFnID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJmbGFnID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaW5pdChkYXRhLmNsaWVudElkLCBkYXRhLmNsaWVudFNlY3JldCwgdGhpcy5jb21tb25zZXJ2aWNlLnNhbmRib3gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXJyLm1lc3NhZ2UsIGVyci5zdGFjaywgXCJIb2xhUnhcIiwgXCJzZXRUaW1lclwiKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwic2V0VGltZXJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuTmV3UngoUnhEZXRhaWxzOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndHJhbnNhY3Rpb24gPSBcIk5ldyBSeFwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIgPSAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscykgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIpID8gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmVtYWlsKSA/IFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwgOiBcIlwiIDogXCJcIiA6IFwiXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllclR5cGUgPSBcInByYWN0aXRpb25lciBlbWFpbFwiO1xyXG4gICAgdHJ5IHtcclxuICAgICAgUnhEZXRhaWxzLnR5cGUgPSBcIjFcIjtcclxuICAgICAgUnhEZXRhaWxzLmNsaWVudElkID0gdGhpcy5jb21tb25zZXJ2aWNlLmdldENyZWRldGlhbCgpO1xyXG4gICAgICB0aGlzLnRlbXBSeERldGFpbHMgPSBSeERldGFpbHM7XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICB0aGlzLmF1ZGl0bG9nKEpTT04uc3RyaW5naWZ5KFJ4RGV0YWlscyksIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKTtcclxuICAgICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMuYXBwb2ludG1lbnRpZCkpIHtcclxuICAgICAgICAgIHRoaXMuYXBwb2ludG1lbnRWYWxpZGF0aW9uKFJ4RGV0YWlscywgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uKFJ4RGV0YWlscywgMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHZhciByZXMgPSB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih0aGlzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgXCJcIiwgNzAwMCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChSeERldGFpbHMsIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY29uc3VsdGF0aW9uSWQgPSBSeERldGFpbHMuY29uc3VsdGF0aW9uaWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscyA9IHJlcy5waHlzaWNpYW5EZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBhdGllbnREZXRhaWxzID0gcmVzLnBhdGllbnREZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmZhY2lsaXR5RGV0YWlscyA9IHJlcy5mYWNpbGl0eURldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yUGF0aWVudElkID0gcmVzLnZlbmRvclBhdGllbnRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JGYWNpbGl0eUlkID0gcmVzLnZlbmRvckZhY2lsaXR5SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yUGh5c2ljaWFuSWQgPSByZXMudmVuZG9yUGh5c2ljaWFuSWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmlzaXRJZCA9IHJlcy52aXNpdElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNyZWF0ZVBhdGllbnRSZXNwb25zZSA9IHJlcztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5lZGl0UHJlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuaXNNZWRpY2luZVJlc3RyaWN0ID0gIXRoaXMuY29tbW9uc2VydmljZS5Jc051bGxPckVtcHR5KHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSkgPyByZXMuaXNSZXN0cmljdGVkTWVkaWNpbmUgOiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkKSAmJiB0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscy5lUHJlc2NyaXB0aW9uQWxsb3dlZCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLkhJdmFsaWRhdGlvbihyZXMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uc2VydmljZS5vcGVuUnhXaWRnZXQodGhpcy5jb250ZW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiZXJyb3JcIiwgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5FZGl0UngoUnhEZXRhaWxzOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndHJhbnNhY3Rpb24gPSBcIkVkaXQgUnhcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMpID8gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCkgPyBSeERldGFpbHMucHJhY3RpdGlvbmVyLmVtYWlsIDogXCJcIiA6IFwiXCIgOiBcIlwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXJUeXBlID0gXCJwcmFjdGl0aW9uZXIgZW1haWxcIjtcclxuICAgIHRyeSB7XHJcbiAgICAgIFJ4RGV0YWlscy50eXBlID0gXCIxXCI7XHJcbiAgICAgIFJ4RGV0YWlscy5jbGllbnRJZCA9IHRoaXMuY29tbW9uc2VydmljZS5nZXRDcmVkZXRpYWwoKTtcclxuICAgICAgdGhpcy50ZW1wUnhEZXRhaWxzID0gUnhEZXRhaWxzO1xyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdGxvZyhKU09OLnN0cmluZ2lmeShSeERldGFpbHMpLCBjb25maWcuQ1JFQVRFX0NPTlNVTFRBVElPTik7XHJcbiAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLmFwcG9pbnRtZW50aWQpKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcG9pbnRtZW50VmFsaWRhdGlvbihSeERldGFpbHMsIDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHZhciByZXMgPSB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih0aGlzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgXCJcIiwgNzAwMCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChSeERldGFpbHMsIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMgPSByZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5wYXRpZW50RGV0YWlscyA9IHJlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5mYWNpbGl0eURldGFpbHMgPSByZXMuZmFjaWxpdHlEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBhdGllbnRJZCA9IHJlcy52ZW5kb3JQYXRpZW50SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yRmFjaWxpdHlJZCA9IHJlcy52ZW5kb3JGYWNpbGl0eUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBoeXNpY2lhbklkID0gcmVzLnZlbmRvclBoeXNpY2lhbklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZpc2l0SWQgPSByZXMudmlzaXRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKFJ4RGV0YWlscy5yeGlkICE9IG51bGwgJiYgUnhEZXRhaWxzLnJ4aWQgIT0gXCJcIiAmJiBSeERldGFpbHMucnhpZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlcy5yeERldGFpbHMgIT0gbnVsbCAmJiByZXMucnhEZXRhaWxzICE9IFwiXCIgJiYgcmVzLnJ4RGV0YWlscyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZWRpdFByZXNjcmlwdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnJ4RGV0YWlscyA9IHJlcy5yeERldGFpbHM7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnJ4aWQgPSByZXMucnhEZXRhaWxzLnJ4SWQ7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNyZWF0ZVBhdGllbnRSZXNwb25zZSA9IHJlcztcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkKSAmJiB0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscy5lUHJlc2NyaXB0aW9uQWxsb3dlZCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLkhJdmFsaWRhdGlvbihyZXMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uc2VydmljZS5vcGVuUnhXaWRnZXQodGhpcy5jb250ZW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlblJlZmVycmFsKFJ4RGV0YWlsczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJTZW5kIFJlZmVycmFsXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMlwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkoUnhEZXRhaWxzKSwgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDMpO1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHRoaXMubWVzc2FnZSwgdGhpcy5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih0aGlzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgXCJcIiwgNzAwMCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChSeERldGFpbHMsIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMgPSByZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5wYXRpZW50RGV0YWlscyA9IHJlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5mYWNpbGl0eURldGFpbHMgPSByZXMuZmFjaWxpdHlEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBhdGllbnRJZCA9IHJlcy52ZW5kb3JQYXRpZW50SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yRmFjaWxpdHlJZCA9IHJlcy52ZW5kb3JGYWNpbGl0eUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBoeXNpY2lhbklkID0gcmVzLnZlbmRvclBoeXNpY2lhbklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZpc2l0SWQgPSByZXMudmlzaXRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uc2VydmljZS5QYXRob2xvZ3kodGhpcy5jb250ZW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTsgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJlcnJvclwiLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHRoaXMubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgMyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFJ4KFJ4SUQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiRG93bmxvYWQgUnhcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gUnhJRDtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicnhpZFwiO1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMudGVtcHJ4aWQgPSBSeElEO1xyXG4gICAgICB2YXIgY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHJ4aWQ6IFJ4SUQsXHJcbiAgICAgICAgdHlwZTogXCIwXCIsXHJcbiAgICAgICAgY2xpZW50SWQ6IGNsaWVudElkXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksIGNvbmZpZy5QSFlTSUNJQU4uUlhfUFJJTlQgKyBSeElEICsgXCImdHlwZT0wJmNsaWVudElkPVwiICsgY2xpZW50SWQpO1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhJRCkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUlhfUFJJTlQgKyBSeElEICsgXCImdHlwZT0wJmNsaWVudElkPVwiICsgY2xpZW50SWQpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Eb3dubG9hZChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXNwb25zZS5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzcG9uc2UuZXJyb3JfY29kZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgNCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRSZWZlcnJhbChSZWZlcnJhbElEOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndHJhbnNhY3Rpb24gPSBcIkRvd25sb2FkIFJlZmVycmFsXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9IFJlZmVycmFsSUQ7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllclR5cGUgPSBcInJlZmVycmFsIGlkXCI7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy50ZW1wcmVmZXJyYWxpZCA9IFJlZmVycmFsSUQ7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHJlZmVycmFsSWQ6IFJlZmVycmFsSURcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdGxvZyhKU09OLnN0cmluZ2lmeShwYXlsb2FkKSwgY29uZmlnLlBIWVNJQ0lBTi5SRUZFUlJBTF9QUklOVCArIFJlZmVycmFsSUQpO1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUmVmZXJyYWxJRCkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNDMubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl80My5jb2RlKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDMuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDMubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUkVGRVJSQUxfUFJJTlQgKyBSZWZlcnJhbElEKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShyZXNwb25zZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uRG93bmxvYWQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCB0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzcG9uc2UuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXNwb25zZS5lcnJvcl9jb2RlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdChkYXRhLmNsaWVudElkLCBkYXRhLmNsaWVudFNlY3JldCwgdGhpcy5jb21tb25zZXJ2aWNlLnNhbmRib3gsIDUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tbW9uRG93bmxvYWQocmVzcG9uc2U6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6bm9uZTsnKTtcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuICAgICAgYS5kb3dubG9hZCA9IHJlc3BvbnNlLmZpbGVOYW1lO1xyXG4gICAgICBhLmhyZWYgPSBcImRhdGE6YXBwbGljYXRpb24vcGRmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiICsgcmVzcG9uc2UuZmlsZTtcclxuICAgICAgYS5jbGljaygpO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ3N1Y2Nlc3MnKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiY29tbW9uRG93bmxvYWRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgYXBwb2ludG1lbnRWYWxpZGF0aW9uKFJ4RGV0YWlsczogYW55LCBmbGFnOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLmZhY2lsaXR5aWQpKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80LmNvZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmbGFnID09IDIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnJ4aWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzQ2LmNvZGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwidmFsaWRhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSB2YWxpZGF0aW9uKFJ4RGV0YWlsczogYW55LCBmbGFnOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscykpIHtcclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5jb25zdWx0YXRpb25pZCkpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMi5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2VpZCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZSkpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMy5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyaWQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTMuY29kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnRpZCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50KSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMjkubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMjkuY29kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmbGFnID09IDIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnJ4aWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzQ2LmNvZGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmxhZyA9PSAxKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucnhpZCkpIHtcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnJ4aWQgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UpKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzQubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLm5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl81Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzUuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5lbWFpbCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLnBob25lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl83LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcykpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wcmFjdGljZS5hZGRyZXNzID0ge307XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5hZGRyZXNzPy5hZGRyZXNzbGluZTEpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl83MS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl83MS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LmFkZHJlc3NsaW5lMikpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wcmFjdGljZS5hZGRyZXNzLmFkZHJlc3NsaW5lMiA9IFwiXCI7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5hZGRyZXNzPy5zdWJ1cmIpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LnBvc3Rjb2RlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTEuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5hZGRyZXNzPy5zdGF0ZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzEyLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEyLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuaHBpbykpIHsgUnhEZXRhaWxzLnByYWN0aWNlLmhwaW8gPSAwOyB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIpKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuaWQpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xNC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5maXJzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xNS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xNS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5sYXN0bmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE2Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE2LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmdlbmRlcikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE3Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE3LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmRvYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE4Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE4LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmVtYWlsKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTkubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTkuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIubW9iaWxlX3Bob25lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMjAubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMjAuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcykpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcyA9IHt9O1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmFkZHJlc3M/LmFkZHJlc3NsaW5lMSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzcyLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzcyLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmFkZHJlc3M/LmFkZHJlc3NsaW5lMikpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcy5hZGRyZXNzbGluZTIgPSBcIlwiO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmFkZHJlc3M/LnN1YnVyYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzIzLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzIzLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmFkZHJlc3M/LnBvc3Rjb2RlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMjQubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMjQuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uc3RhdGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yNS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yNS5jb2RlKTtcclxuICAgICAgICAgIGlmIChmbGFnID09IDMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLnByb3ZpZGVybnVtYmVyKSlcclxuICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yNy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yNy5jb2RlKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLnNpZ25hdHVyZV9pbWFnZSkpXHJcbiAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMjgubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMjguY29kZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuaHBpaSkpIHsgUnhEZXRhaWxzLnByYWN0aXRpb25lci5ocGlpID0gMDsgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudCkpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuaWQpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuZmlyc3RuYW1lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMzEuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50Lmxhc3RuYW1lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMzIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMzIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmdlbmRlcikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzMzLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzMzLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5kb2IpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuZW1haWwpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQubW9iaWxlX3Bob25lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMzYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMzYuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LnRpbWV6b25lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMzcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMzcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3MpKVxyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5hZGRyZXNzID0ge307XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LmFkZHJlc3NsaW5lMSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzY3Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzY3LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5hZGRyZXNzPy5hZGRyZXNzbGluZTIpKVxyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5hZGRyZXNzLmFkZHJlc3NsaW5lMiA9IFwiXCI7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LnN1YnVyYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzQwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzQwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5hZGRyZXNzPy5wb3N0Y29kZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzQxLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzQxLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5hZGRyZXNzPy5zdGF0ZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzQyLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzQyLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZSkpIHtcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnBhdGllbnQubWVkaWNhcmUgPSB7fTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQubWVkaWNhcmU/Lm51bWJlcikpIHtcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnBhdGllbnQubWVkaWNhcmUubnVtYmVyID0gXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQubWVkaWNhcmU/LnJlZmVyZW5jZSkpIHtcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnBhdGllbnQubWVkaWNhcmUucmVmZXJlbmNlID0gXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQubWVkaWNhcmU/LmV4cGlyeSkpIHtcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnBhdGllbnQubWVkaWNhcmUuZXhwaXJ5ID0gXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuaWhpKSkgeyBSeERldGFpbHMucGF0aWVudC5paGkgPSAwOyB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcInZhbGlkYXRpb25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIEhJdmFsaWRhdGlvbih2YWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgd2FybmluZ19tc2cgPSAnJztcclxuICAgICAgaWYgKCF2YWx1ZS5pc19ocGlvX3ZhbGlkKSB7XHJcbiAgICAgICAgd2FybmluZ19tc2cgPSB2YWx1ZS5ocGlvX3Jlc3BvbnNlX21zZztcclxuICAgICAgfSBpZiAoIXZhbHVlLmlzX2hwaWlfdmFsaWQpIHtcclxuICAgICAgICB3YXJuaW5nX21zZyArPSB3YXJuaW5nX21zZyA9PSAnJyA/IHZhbHVlLmhwaV9yZXNwb25zZV9tc2cgOiBcIjxicj5cIiArIHZhbHVlLmhwaV9yZXNwb25zZV9tc2c7XHJcbiAgICAgIH0gaWYgKCF2YWx1ZS5pc19paGlfdmFsaWQpIHtcclxuICAgICAgICB3YXJuaW5nX21zZyArPSB3YXJuaW5nX21zZyA9PSAnJyA/IHZhbHVlLmloaV9yZXNwb25zZV9tc2cgOiBcIjxicj5cIiArIHZhbHVlLmloaV9yZXNwb25zZV9tc2c7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkod2FybmluZ19tc2cpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih3YXJuaW5nX21zZywgXCJ3YXJuaW5nXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodmFsdWUuaWhpX3Jlc3BvbnNlX21zZykpIHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHZhbHVlLmloaV9yZXNwb25zZV9tc2csIFwic3VjY2Vzc1wiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJISXZhbGlkYXRpb25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIElzTnVsbE9yRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgU3RyaW5nKHZhbHVlKS50cmltKCkgPT09IFwiXCIpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIklzTnVsbE9yRW1wdHlcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGlvbnRvYXN0KGVycm9yX21lc3NhZ2U6IGFueSwgZXJyb3JfY29kZT86IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmVycm9yUmVzcG9uc2UoZXJyb3JfY29kZSwgZXJyb3JfbWVzc2FnZSk7XHJcbiAgICAgIGlmICh0aGlzLm1lc3NhZ2UgPT0gXCJcIikge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGVycm9yX2NvZGUgKyBcIjogXCIgKyBlcnJvcl9tZXNzYWdlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZSArPSBcIjxicj5cIiArIGVycm9yX2NvZGUgKyBcIjogXCIgKyBlcnJvcl9tZXNzYWdlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcInZhbGlkYXRpb250b2FzdFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXJyb3JSZXNwb25zZShlcnJvcl9jb2RlOiBhbnksIGVycm9yX21lc3NhZ2U6IGFueSwgc3VjY2Vzc2ZsYWc6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgcmVzcG9uc2U6IGFueSA9IHtcclxuICAgICAgICBzdGF0dXM6IHN1Y2Nlc3NmbGFnID09IHRydWUgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgICByZXNwb25zZToge1xyXG4gICAgICAgICAgcmVzcG9uc2VfY29kZTogc3VjY2Vzc2ZsYWcgPT0gdHJ1ZSA/IGVycm9yX2NvZGUgOiBcIlwiLFxyXG4gICAgICAgICAgcmVzcG9uc2VfbWVzc2FnZTogc3VjY2Vzc2ZsYWcgPT0gdHJ1ZSA/IGVycm9yX21lc3NhZ2UgOiBcIlwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjoge1xyXG4gICAgICAgICAgZXJyb3JfY29kZTogc3VjY2Vzc2ZsYWcgPT0gZmFsc2UgPyBlcnJvcl9jb2RlIDogXCJcIixcclxuICAgICAgICAgIGVycm9yX21lc3NhZ2U6IHN1Y2Nlc3NmbGFnID09IGZhbHNlID8gZXJyb3JfbWVzc2FnZSA6IFwiXCJcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJlcnJvclJlc3BvbnNlXCIpO1xyXG4gICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGF1ZGl0bG9nKHZhbHVlOiBhbnksIGFwaTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0YSA9IHtcclxuICAgICAgICBpZGVudGlmaWVyVmFsdWU6IHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyLFxyXG4gICAgICAgIGlkZW50aWZpZXJUeXBlOiB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllclR5cGUsXHJcbiAgICAgICAgcmVxdWVzdFBheWxvYWQ6IHZhbHVlLFxyXG4gICAgICAgIHJlc3BvbnNlQ29kZTogXCJcIixcclxuICAgICAgICByZXNwb25zZVBheWxvYWQ6IFwiXCIsXHJcbiAgICAgICAgY3JlYXRlZEJ5OiBcIlVJLVJ4XCIsXHJcbiAgICAgICAgYXBpOiBhcGksXHJcbiAgICAgICAgcmVxdWVzdFVybDogd2luZG93Lm9yaWdpblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBpc2VydmljZS5Qb3N0KGRhdGEsIGNvbmZpZy5BVURJVF9MT0cpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnIubWVzc2FnZSwgZXJyLnN0YWNrLCBcIkhvbGFSeFwiLCBcImF1ZGl0bG9nXCIpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJhdWRpdGxvZ1wiKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPCEtLSA8dWwgY2xhc3M9XCJub3RpZmljYXRpb25zXCIgPjwvdWw+XHJcbjxkaXYgW2NsYXNzXT1cInsnbG9hZGVyX3Zpc2libGUnOmNvbW1vbkxvYWRlclNlcnZpY2VzLmZ1bGxTY3JlZW5Mb2FkZXIsJ2xvYWRlcl9oaWRkZW4nOiFjb21tb25Mb2FkZXJTZXJ2aWNlcy5mdWxsU2NyZWVuTG9hZGVyfVwiXHJcbiAgICBjbGFzcz1cInNwbGFzaFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInBhdXNlXCI+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj4gPGltZyBjbGFzcz1cInNwaW5uZXItaW1nXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vcGFzc2V0cy5ob2xhLmhlYWx0aC9yeC13aWRnZXRzL3J4LWhvbGEtaGVhbHRoLXNwaW5uZXIucG5nXCIgYWx0PVwiaG9sYV9oZWFsdGhcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPkxvYWRpbmcuLi48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4gLS0+XHJcblxyXG48bmctdGVtcGxhdGUgI3J4d2lkZ2V0cz5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|