@james_jayaraj/test-npm 0.9.3 → 0.9.4
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.
|
@@ -2895,57 +2895,58 @@ export class RxComponent {
|
|
|
2895
2895
|
}
|
|
2896
2896
|
EprescripeSend(flag) {
|
|
2897
2897
|
try {
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
}
|
|
2905
|
-
this.changedetect.detectChanges();
|
|
2906
|
-
if (this.showAuthorityBox(this.commonServices.selectedFormulation.Restrictions, this.commonServices.PrescribeAS, this.commonServices.rxAuthority, this.commonServices.unlistedRA) && this.commonServices.PrescribeAS.toLowerCase() === "pbs" && this.getStateCodeFromStateName(this.commonServices.patientDetails.state).toUpperCase() == "NSW") {
|
|
2907
|
-
this.commonServices.dialogopen(PasswordComponent, this.content, 1).subscribe((res) => {
|
|
2908
|
-
if (res) {
|
|
2909
|
-
if (!this.commonServices.sendToPharmacy && !this.commonServices.emergencySupply && flag != 2) {
|
|
2910
|
-
this.ConfirmPatientPopup();
|
|
2911
|
-
}
|
|
2912
|
-
else {
|
|
2913
|
-
this.commonServices.AddressSendToAddType = "";
|
|
2914
|
-
this.commonServices.rxnumber = "";
|
|
2915
|
-
this.commonServices.rxemailId = "";
|
|
2916
|
-
this.commonServices.isPrintAvailable = true;
|
|
2917
|
-
this.changedetect.detectChanges();
|
|
2918
|
-
this.prescribeMed();
|
|
2919
|
-
}
|
|
2920
|
-
}
|
|
2921
|
-
});
|
|
2922
|
-
}
|
|
2923
|
-
else {
|
|
2924
|
-
if (!this.commonServices.sendToPharmacy && !this.commonServices.emergencySupply && flag != 2) {
|
|
2925
|
-
this.ConfirmPatientPopup();
|
|
2898
|
+
if (!this.ePrescriptionValidation()) {
|
|
2899
|
+
this.commonServices.scriptType = 'E';
|
|
2900
|
+
this.selectPBTNDropdown = false;
|
|
2901
|
+
this.abortdisable = false;
|
|
2902
|
+
if (flag == 2) {
|
|
2903
|
+
this.isepriscribeprint = true;
|
|
2926
2904
|
}
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
this.commonServices.
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2905
|
+
this.changedetect.detectChanges();
|
|
2906
|
+
if (this.showAuthorityBox(this.commonServices.selectedFormulation.Restrictions, this.commonServices.PrescribeAS, this.commonServices.rxAuthority, this.commonServices.unlistedRA) && this.commonServices.PrescribeAS.toLowerCase() === "pbs" && this.getStateCodeFromStateName(this.commonServices.patientDetails.state).toUpperCase() == "NSW") {
|
|
2907
|
+
this.commonServices.dialogopen(PasswordComponent, this.content, 1).subscribe((res) => {
|
|
2908
|
+
if (res) {
|
|
2909
|
+
if (!this.commonServices.sendToPharmacy && !this.commonServices.emergencySupply && flag != 2) {
|
|
2910
|
+
this.ConfirmPatientPopup();
|
|
2911
|
+
}
|
|
2912
|
+
else {
|
|
2913
|
+
this.commonServices.AddressSendToAddType = "";
|
|
2914
|
+
this.commonServices.rxnumber = "";
|
|
2915
|
+
this.commonServices.rxemailId = "";
|
|
2916
|
+
this.commonServices.isPrintAvailable = true;
|
|
2917
|
+
this.changedetect.detectChanges();
|
|
2937
2918
|
this.prescribeMed();
|
|
2938
2919
|
}
|
|
2939
|
-
}
|
|
2920
|
+
}
|
|
2921
|
+
});
|
|
2922
|
+
}
|
|
2923
|
+
else {
|
|
2924
|
+
if (!this.commonServices.sendToPharmacy && !this.commonServices.emergencySupply && flag != 2) {
|
|
2925
|
+
this.ConfirmPatientPopup();
|
|
2940
2926
|
}
|
|
2941
2927
|
else {
|
|
2942
|
-
this.
|
|
2928
|
+
this.commonServices.AddressSendToAddType = "";
|
|
2929
|
+
this.commonServices.rxnumber = "";
|
|
2930
|
+
this.commonServices.rxemailId = "";
|
|
2931
|
+
this.commonServices.isPrintAvailable = true;
|
|
2932
|
+
this.changedetect.detectChanges();
|
|
2933
|
+
var scheduleNumber = !this.commonServices.isMedicineRestrict ? (!this.commonServices.IsNullOrEmpty(this.commonServices.selectedFormulation) && !this.commonServices.IsNullOrEmpty(this.commonServices.selectedFormulation.poisonClassification) && !this.commonServices.IsNullOrEmpty(this.commonServices.selectedFormulation.poisonClassification.poisonClasses) && this.commonServices.selectedFormulation.poisonClassification.poisonClasses.length != 0 && !this.commonServices.IsNullOrEmpty(this.commonServices.selectedFormulation.poisonClassification.poisonClasses[0]) ? this.commonServices.selectedFormulation.poisonClassification.poisonClasses[0].toLowerCase() == 'unscheduled' ? '' : this.commonServices.selectedFormulation.poisonClassification.poisonClasses[0] : '') : "";
|
|
2934
|
+
if (!this.commonServices.isMedicineRestrict && scheduleNumber.toLowerCase() == 's8' && this.commonServices.physicianDetails.isPasswordCheck) {
|
|
2935
|
+
this.commonServices.dialogopen(PasswordComponent, this.content, 2).subscribe((res) => {
|
|
2936
|
+
if (res.responseCode == 0) {
|
|
2937
|
+
this.prescribeMed();
|
|
2938
|
+
}
|
|
2939
|
+
});
|
|
2940
|
+
}
|
|
2941
|
+
else {
|
|
2942
|
+
this.prescribeMed();
|
|
2943
|
+
}
|
|
2943
2944
|
}
|
|
2944
2945
|
}
|
|
2945
2946
|
}
|
|
2946
|
-
|
|
2947
|
-
|
|
2948
|
-
|
|
2947
|
+
else {
|
|
2948
|
+
return;
|
|
2949
|
+
}
|
|
2949
2950
|
}
|
|
2950
2951
|
catch (ex) {
|
|
2951
2952
|
this.commonServices.setlogvalue(false, ex.message, ex.stack, "RxComponent", "EprescripeSend");
|
|
@@ -4748,4 +4749,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
4748
4749
|
type: HostListener,
|
|
4749
4750
|
args: ['click', ['$event']]
|
|
4750
4751
|
}] } });
|
|
4751
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaG9sYS1yeC9zcmMvbGliL3J4L3J4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2hvbGEtcngvc3JjL2xpYi9yeC9yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBMEIsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUcxSyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxrRkFBa0YsQ0FBQztBQUMzSSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUNySSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7O0FBUTNFLE1BQU0sT0FBTyxXQUFXO0lBcUd0QixZQUNTLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzdCLFVBQXNCLEVBQ3RCLFlBQStCLEVBQ2hDLFFBQWtCLEVBQ2pCLFFBQW1CLEVBQ25CLEtBQWlCLEVBQ2pCLGdCQUFrQztRQVBuQyxlQUFVLEdBQVYs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QUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xPLHVCQUF1QixFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3hJLDJCQUEyQixFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxJQUFJLENB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QyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQy9kLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM3SixVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDL2QsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzFKLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQy9TLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDcEoscUNBQXFDLEVBQUUsRUFBRTtnQkFDekMsc0NBQXNDLEVBQUUsRUFBRTtnQkFDMUMsNENBQTRDO2dCQUM1QyxvQ0FBb0MsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzlWLHdCQUF3QixFQUFFLGdCQUFnQixDQUFDLGNBQWM7Z0JBQ3pELHdCQUF3QixFQUFFLGdCQUFnQixDQUFDLGNBQWM7Z0JBQ3pELHFCQUFxQixFQUFFLGdCQUFnQixDQUFDLE1BQU07Z0JBQzlDLHdCQUF3QixFQUFFLGdCQUFnQixDQUFDLE1BQU07Z0JBQ2pELFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUMzTixNQUFNLEVBQUUsRUFBRTtnQkFDVixhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsYUFBYTtnQkFDL0Qsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0I7Z0JBQzlELFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVM7Z0JBQ3JJLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVE7Z0JBQ2pJLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2pELFlBQVksRUFBRSxFQUFFO2dCQUNoQiwwQkFBMEIsRUFBRSxxQkFBcUI7Z0JBQ2pELDRCQUE0QixFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQzlDLHdCQUF3QixFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25LLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3JLLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUMzSixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDcEosa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDckksVUFBVSxFQUFFLENBQUM7Z0JBQ2IsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0I7Z0JBQ2xFLFNBQVMsRUFBRSxjQUFjLENBQUMsU0FBUztnQkFDbkMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pMLGlCQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzNILEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDOUYsb0JBQW9CO2dCQUNwQixjQUFjLEVBQUUsZ0JBQWdCLENBQUMsY0FBYztnQkFDL0MsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pLLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUM7Z0JBQ3JFLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ2xhLHVKQUF1SjtnQkFDdkosb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHO2dCQUM5SCxjQUFjLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDMVAsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzlILFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0QsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUwsdU1BQXVNO2dCQUN2TSx5QkFBeUIsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pKLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUMzSCxlQUFlLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JFLFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN0RCx1TUFBdU07Z0JBQ3ZNLGtEQUFrRDtnQkFDbEQsNkJBQTZCLEVBQUUsRUFBRTtnQkFDakMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xNLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU87Z0JBQ3BDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVU7Z0JBQzFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWU7Z0JBQ3pDLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWU7Z0JBQzlDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWU7Z0JBQ3pDLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVc7Z0JBQzVDLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0MsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztnQkFDakYsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQztnQkFDL0UsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFO2dCQUN0RCxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRO2dCQUN0QyxRQUFRLEVBQUUsQ0FBQztnQkFDWCxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDMUosT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3BKLHFDQUFxQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3hMLHFDQUFxQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3hMLGtCQUFrQixFQUFFLEVBQUU7Z0JBQ3RCLGtCQUFrQixFQUFFLEVBQUU7Z0JBQ3RCLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNqUCxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbE8sV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xPLHVCQUF1QixFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3hJLDJCQUEyQixFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM3lCLE1BQU0sRUFBRSxPQUFPO2dCQUNmLHFGQUFxRjtnQkFDckYsd0ZBQXdGO2dCQUN4RixrQ0FBa0M7Z0JBQ2xDLFNBQVM7Z0JBQ1QsbUJBQW1CO2dCQUNuQixXQUFXLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDO2dCQUMxRSxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDO2dCQUNwTSxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRztnQkFDN0ssZ0JBQWdCO2dCQUNoQixxQkFBcUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xGLDJCQUEyQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztnQkFDdEYsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2pGLHlCQUF5QixFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNuTSxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXO2dCQUM1QyxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjO2dCQUNsRCxtQkFBbUIsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQjtnQkFDNUQsZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZTtnQkFDcEQsb0JBQW9CLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzNMLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFFBQVE7Z0JBQ3ZELG1CQUFtQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7Z0JBQzNDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN0SyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDN0osZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNqTixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDeEIsQ0FBQztZQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQzlDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQ2hFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ04sSUFBSTtvQkFDRixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFO3dCQUMxQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO3dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUNyRixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDaEcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDM0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7d0JBQy9DLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzt3QkFDdkMsT0FBTztxQkFDUjtvQkFDRCxJQUFJLEdBQUcsQ0FBQyxhQUFhLElBQUksQ0FBQyxFQUFFO3dCQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO3dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDNUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ3RCO3lCQUFNO3dCQUNMLElBQUksR0FBRyxDQUFDLGdCQUFnQixJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFFOzRCQUM5RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDOzRCQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUN6SCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQzs0QkFDN0UsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzs0QkFDeEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7NEJBQy9DLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7NEJBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzt5QkFDeEM7NkJBQU07NEJBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQzs0QkFDckYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ2hHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7NEJBQzNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7NEJBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDOzRCQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDOzRCQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7eUJBQ3hDO3FCQUNGO2lCQUNGO2dCQUNELE9BQU8sRUFBTyxFQUFFO29CQUNkLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7b0JBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO29CQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDcEc7WUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN6RyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ3JHLENBQUMsQ0FDRixDQUFDO1NBRUg7UUFDRCxPQUFPLEVBQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7WUFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3BHO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFVO1FBQ3RCLElBQUk7WUFDRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDNUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxRSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEUsSUFBSSxJQUFJLEdBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM3QixJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM3QyxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsT0FBTyxFQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztTQUM5RjtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsV0FBb0IsRUFBRSxZQUFpQjtRQUNqRCxJQUFJO1lBQ0YsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDbEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDcEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN2RSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksS0FBSyxHQUFRLFFBQVEsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDdkYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQzthQUN6RTtTQUNGO1FBQ0QsT0FBTyxFQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztTQUM1RjtJQUNILENBQUM7SUFFRCxTQUFTO0lBQ1QsYUFBYSxDQUFDLE1BQVc7UUFDdkIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUk7WUFDRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN0RixPQUFPLEdBQUc7Z0JBQ1IsWUFBWSxFQUFFLFdBQVc7Z0JBQ3pCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztnQkFDM0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxlQUFlO2dCQUMvQixJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJO2FBQy9CLENBQUM7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGlCQUFpQixHQUFHLGFBQWEsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUM3TyxJQUFJO29CQUNGLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQzFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7d0JBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDbEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUMxRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDaEcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDM0YsT0FBTztxQkFDUjtvQkFDRCxJQUFJLEdBQUcsQ0FBQyxhQUFhLElBQUksQ0FBQyxFQUFFO3dCQUMxQixJQUFJLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7d0JBQzFOLElBQUksZ0JBQWdCLEVBQUU7NEJBQ3BCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQzs0QkFDYixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsR0FBRyxHQUFHLENBQUM7NEJBQy9DLElBQUksQ0FBQywyQkFBMkIsR0FBRyxHQUFHLENBQUM7eUJBQ3hDOzZCQUNJOzRCQUNILElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO3lCQUM5Qjt3QkFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO3dCQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7d0JBQ3pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7d0JBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO3dCQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsaUNBQWlDLENBQUM7d0JBQzNFLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7d0JBQ3JHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7d0JBQ2xELElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDL0UsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOzRCQUNyRyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDOzRCQUN0RyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0NBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDO2dDQUN4RSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzs2QkFDbEg7aUNBQ0k7Z0NBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUM7Z0NBQ3hFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7NkJBQ2xDO3lCQUNGOzZCQUNJOzRCQUNILElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7NEJBQzlJLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7eUJBQ2xDO3dCQUNELElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDeEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ3hFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzt3QkFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQzt3QkFDckQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDdkosSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDcEosSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHdCQUF3QixFQUFFLFlBQVksQ0FBQyxDQUFDO3dCQUNyRyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsNkJBQTZCLENBQUM7d0JBQy9ILElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDbEgsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzt3QkFDckcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDaEgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDbkgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUM7d0JBQ3pFLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO3dCQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUMxRyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQzt3QkFDaEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDO3dCQUNoRSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO3dCQUMzRCxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQzt3QkFDckUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQzt3QkFDN0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQzt3QkFDckQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7d0JBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzt3QkFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO3dCQUMzRSxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO3dCQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7d0JBQzVFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7d0JBQ2hILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7d0JBQ2hILElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzt3QkFDakYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDOUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDOVEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO3dCQUNsRixJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7d0JBQzlGLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLElBQUksTUFBTSxDQUFDLHFCQUFxQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ2hMLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRTs0QkFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO3lCQUN4Qzt3QkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQTt3QkFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDbEMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLFlBQVksRUFBRTs0QkFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7eUJBQ3ZEOzZCQUNJLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxRQUFRLEVBQUU7NEJBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO3lCQUN2RDs2QkFDSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksV0FBVyxFQUFFOzRCQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQzt5QkFDdkQ7NkJBQU07NEJBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsR0FBRyxLQUFLLENBQUM7eUJBQ3hEO3dCQUNELElBQUksZ0JBQWdCLEVBQUU7NEJBQ3BCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7NEJBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7eUJBQ25DO3FCQUNGO3lCQUNJO3dCQUNILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7d0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQzVILElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUM3RSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3FCQUN6RTtpQkFDRjtnQkFDRCxPQUFPLEVBQU8sRUFBRTtvQkFDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO29CQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7aUJBQ3ZHO1lBQ0gsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNULElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDNUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4RyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQztZQUNyRyxDQUFDLENBQUMsQ0FBQTtTQUNIO1FBQ0QsT0FBTyxFQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZHO0lBQ0gsQ0FBQztJQUdELHVCQUF1QjtJQUN2Qix1QkFBdUI7UUFDckIsSUFBSTtZQUNGLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLEVBQUU7Z0JBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksR0FBRyxFQUFFO29CQUNsSixPQUFPLElBQUksQ0FBQztpQkFDYjtxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLElBQUksSUFBSSxFQUFFO29CQUM1YSxPQUFPLEtBQUssQ0FBQztpQkFDZDtxQkFBTTtvQkFDTCxPQUFPLElBQUksQ0FBQztpQkFDYjthQUNGO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLElBQUksSUFBSSxFQUFFO29CQUNyVCxPQUFPLEtBQUssQ0FBQztpQkFDZDtxQkFBTTtvQkFDTCxPQUFPLElBQUksQ0FBQztpQkFDYjthQUNGO1NBQ0Y7UUFDRCxPQUFPLEVBQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixDQUFDLENBQUM7WUFDdkcsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxtQkFBd0I7UUFDN0MsSUFBSTtZQUNGLElBQUksbUJBQW1CLElBQUksSUFBSSxJQUFJLG1CQUFtQixDQUFDLGNBQWMsSUFBSSxJQUFJLElBQUksbUJBQW1CLENBQUMsY0FBYyxJQUFJLEVBQUUsRUFBRTtnQkFDekgsSUFBSSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7Z0JBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNsRSxJQUFJLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQ2hDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQzNFO3lCQUFNO3dCQUNMLGlCQUFpQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQ3pFO2lCQUNGO2dCQUNELE9BQU8saUJBQWlCLENBQUM7YUFDMUI7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUM7YUFDWDtTQUNGO1FBQ0QsT0FBTyxFQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3RHLE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBVTtRQUM5QixJQUFJO1lBQ0YsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUM5QixPQUFPLENBQUMsQ0FBQyxRQUFRLEdBQUcsRUFBRSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN0SDtRQUNELE9BQU8sRUFBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztZQUNyRyxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELDBCQUEwQixDQUFDLGNBQW1CO1FBQzVDLElBQUk7WUFDRixJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsRUFBRTtnQkFDM0QsSUFBSSxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksS0FBSyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO29CQUNyTCxPQUFPLEtBQUssQ0FBQztpQkFDZDtxQkFBTSxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxLQUFLLElBQUksbUJBQW1CLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7b0JBQzVMLE9BQU8sS0FBSyxDQUFDO2lCQUNkO3FCQUFNO29CQUNMLE9BQU8sRUFBRSxDQUFDO2lCQUNYO2FBQ0Y7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUM7YUFDWDtTQUNGO1FBQ0QsT0FBTyxFQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1lBQzFHLE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUk7WUFDRixJQUFJLE9BQU8sR0FBRztnQkFDWixZQUFZLEVBQUUsV0FBVztnQkFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTTtnQkFDbkQsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGFBQWE7YUFDNUQsQ0FBQTtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUM1TSxJQUFJO29CQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDakMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO3dCQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDNUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7d0JBQzFELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUMzRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDaEcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDNUY7eUJBQ0k7d0JBQ0gsSUFBSSxHQUFHLENBQUMsYUFBYSxJQUFJLENBQUMsRUFBRTs0QkFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDOzRCQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7NEJBQ2xELElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzs0QkFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQzs0QkFDbEMsaUNBQWlDO3lCQUNsQzs2QkFDSTs0QkFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7NEJBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7NEJBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQzs0QkFDbEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDOzRCQUM3SCxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3lCQUN6RTtxQkFDRjtvQkFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVzt3QkFDL0IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ25DO2dCQUNELE9BQU8sRUFBTyxFQUFFO29CQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO29CQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztpQkFDeEc7WUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDbEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUE7Z0JBQzNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXO29CQUMvQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzdHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ3JHLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLEVBQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUMvRjtJQUNILENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSTtZQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQzFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLEVBQUU7b0JBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRTt3QkFDaEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUNyRSxDQUFDLFFBQWEsRUFBRSxFQUFFOzRCQUNoQixJQUFJO2dDQUNGLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUU7b0NBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29DQUNoSCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQ0FDaEcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQ0FDNUY7cUNBQ0k7b0NBQ0gsSUFBSSxRQUFRLENBQUMsYUFBYSxJQUFJLENBQUMsRUFBRTt3Q0FDL0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0NBQ2hHLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO3dDQUM3RCxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3Q0FDMUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7d0NBQzdDLElBQUksU0FBUyxFQUFFOzRDQUNiLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt5Q0FDbkI7NkNBQ0k7NENBQ0gsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3lDQUN4QjtxQ0FDRjt5Q0FDSTt3Q0FDSCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQzt3Q0FDOUosSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3Q0FDOUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3FDQUMxRztpQ0FDRjtnQ0FDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO2dDQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztnQ0FDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDOzZCQUN4Qzs0QkFDRCxPQUFPLEVBQU8sRUFBRTtnQ0FDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO2dDQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztnQ0FDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dDQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDOzZCQUMvSDt3QkFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7NEJBQ1QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQzs0QkFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7NEJBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzs0QkFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQzs0QkFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDcEksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUN4RyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQzt3QkFDckcsQ0FBQyxDQUNGLENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtZQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3RFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQ3RFO2lCQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNqSCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQzthQUMxRTtpQkFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQy9HLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDN0c7aUJBQ0ksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFO2dCQUMzRSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDckc7aUJBQ0ksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRTtnQkFDekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDNUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDckc7aUJBQ0ksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFO2dCQUM3RSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUN0RTtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1lBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1lBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUNuQztRQUNELE9BQU8sRUFBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMvSDtJQUNILENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJO1lBQ0YsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFO2dCQUNwRSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLEVBQUU7b0JBQ25DLE9BQU8sR0FBRzt3QkFDUixZQUFZLEVBQUUsV0FBVzt3QkFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUI7cUJBQ3BDLENBQUE7b0JBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7d0JBQ3pCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7d0JBQ2pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUM7d0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ2xDLE9BQU87cUJBQ1I7b0JBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7d0JBQzlCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO3dCQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUNsQyxPQUFPO3FCQUNSO29CQUNELElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxDQUFDO3dCQUN0QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDOzt3QkFFakMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztvQkFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLENBQUMsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixHQUFHLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO3dCQUNwTyxJQUFJOzRCQUNGLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dDQUN6QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO2dDQUNqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO2dDQUNsQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO2dDQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dDQUNsQyxPQUFPOzZCQUNSOzRCQUNELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0NBQzFDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7Z0NBQ2xDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7Z0NBQ2xDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUM7Z0NBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO2dDQUM1RixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dDQUMzRixPQUFPOzZCQUNSOzRCQUNELElBQUksR0FBRyxDQUFDLGFBQWEsSUFBSSxDQUFDLEVBQUU7Z0NBQzFCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQ0FDakQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtvQ0FDakMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3Q0FDeEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3dDQUN0RyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7NENBQ2pFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnREFDekIsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dEQUNqRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnREFDelcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFO29EQUM3QixHQUFHLENBQUMsZUFBZSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO2lEQUNuRDs0Q0FDSCxDQUFDLENBQUMsQ0FBQzt5Q0FDSjs2Q0FDSTs0Q0FDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3lDQUN0QztxQ0FDRjtnQ0FDSCxDQUFDLENBQUMsQ0FBQztnQ0FDSCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtvQ0FDcEUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztvQ0FDbEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztvQ0FDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQ0FDbkM7Z0NBQ0QsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7b0NBQzVCLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO3dDQUNqRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO3dDQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO3FDQUNuQztvQ0FDRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztpQ0FDMUI7NkJBQ0Y7aUNBQU07Z0NBQ0wsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztnQ0FDbEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztnQ0FDbEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQztnQ0FDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO2dDQUNoSSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQ0FDN0UsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzs2QkFDekU7NEJBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt5QkFDbkM7d0JBQ0QsT0FBTyxFQUFPLEVBQUU7NEJBQ2QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQzs0QkFDbEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQzs0QkFDbEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQzs0QkFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQzs0QkFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7eUJBQzNHO29CQUNILENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTt3QkFDVCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO3dCQUNsQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO3dCQUNsQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO3dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFDaEgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN4RyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQztvQkFDckcsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtTQUNGO1FBQ0QsT0FBTyxFQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7WUFDbEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixDQUFDLENBQUM7U0FDbEc7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUk7WUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDcEUsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNqQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxLQUFLLEVBQUU7b0JBQ3pNLE9BQU8sR0FBRzt3QkFDUixZQUFZLEVBQUUsV0FBVzt3QkFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjO3dCQUNoQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVc7d0JBQ3RCLGNBQWMsRUFBRSxJQUFJO3FCQUNyQixDQUFBO29CQUNELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLElBQUksQ0FBQzt3QkFDdEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQzs7d0JBRWxDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO3dCQUM5USxJQUFJOzRCQUNGLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0NBQzFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7Z0NBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO2dDQUM3QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO2dDQUNuQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO2dDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7Z0NBQ3ZFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQztnQ0FDOUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQ0FDM0YsT0FBTzs2QkFDUjs0QkFDRCxJQUFJLEdBQUcsQ0FBQyxhQUFhLElBQUksQ0FBQyxFQUFFO2dDQUMxQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUU7b0NBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO29DQUM5QyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxDQUFDO29DQUN0QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO29DQUNuQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO29DQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO29DQUNsQyxPQUFPO2lDQUNSO2dDQUNELElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO29DQUM1QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO29DQUNoQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO29DQUNuQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO2lDQUNyQztxQ0FDSTtvQ0FDSCxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO3dDQUNqQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29DQUM5QyxDQUFDLENBQUMsQ0FBQztvQ0FDSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7b0NBQzlDLDJCQUEyQjtvQ0FDM0IsK0JBQStCO29DQUMvQixXQUFXO29DQUNYLGtDQUFrQztvQ0FDbEMsOEJBQThCO29DQUM5QixNQUFNO29DQUNOLFdBQVc7b0NBQ1gsbUZBQW1GO29DQUNuRixNQUFNO29DQUNOLElBQUk7b0NBQ0osSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0NBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO3dDQUN4SSxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO3dDQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO3FDQUNuQzt5Q0FDSTt3Q0FDSCxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO3dDQUNuQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO3dDQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO3FDQUNuQztvQ0FDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTt3Q0FDaEYsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7cUNBQzVCO2lDQUNGOzZCQUNGO2lDQUFNO2dDQUNMLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7Z0NBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO2dDQUM3QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO2dDQUNuQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO2dDQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0NBQ2xJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dDQUM3RSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDOzZCQUN6RTs0QkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO3lCQUNuQzt3QkFDRCxPQUFPLEVBQU8sRUFBRTs0QkFDZCxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDOzRCQUNuQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDOzRCQUNwQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDOzRCQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDOzRCQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQzt5QkFDN0c7b0JBQ0gsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO3dCQUNULElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO3dCQUM3QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO3dCQUNuQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO3dCQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFDbEgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN4RyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQztvQkFDckcsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7cUJBQ0k7b0JBQ0gsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztvQkFDbkMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztvQkFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDbkM7YUFDRjtTQUNGO1FBQ0QsT0FBTyxFQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1lBQ25DLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7WUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1NBQ3BHO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJO1lBQ0YsSUFBSSxJQUFJLEdBQUcsb0VBQW9FLENBQUM7WUFDaEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsdUNBQXVDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3JIO1FBQ0QsT0FBTyxFQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1NBQ2hHO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFNO1FBQ2pCLElBQUk7WUFDRixJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNQLE9BQU8sS0FBSyxDQUFDO1lBQ2YsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUMvRixJQUFJLFlBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQ2pJLElBQUksYUFBYSxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQ2xHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQUUsT0FBTyxNQUFNLENBQUM7WUFDM0IsU0FBUyxTQUFTLENBQUMsQ0FBTTtnQkFDdkIsSUFBSSxJQUFJLEdBQVEsRUFBRSxDQUFBO2dCQUNsQixJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ1YsSUFBSSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUE7aUJBQzdCO3FCQUNJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDZixJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUE7aUJBQ2xDO3FCQUNJLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRTtvQkFDaEIsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtvQkFDM0IsSUFBSSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUE7aUJBQ3hEO3FCQUNJLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRTtvQkFDakIsSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFBO2lCQUM1RTtxQkFDSSxJQUFJLENBQUMsR0FBRyxPQUFPLEVBQUU7b0JBQ3BCLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLFlBQVksR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO2lCQUN2RTtxQkFDSSxJQUFJLENBQUMsR0FBRyxVQUFVLEVBQUU7b0JBQ3ZCLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLFdBQVcsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFBO2lCQUM1RTtxQkFDSTtvQkFDSCxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQTtpQkFDbEY7Z0JBQ0QsT0FBTyxJQUFJLENBQUE7WUFDYixDQUFDO1lBQ0QsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3pCLE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO1NBQ3JCO1FBQ0QsT0FBTyxFQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUM1RixPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUk7WUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDdkYsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFO29CQUNuWixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7aUJBQ3ZFO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUNuSzthQUNGO1NBQ0Y7UUFDRCxPQUFPLEVBQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDaEcsT0FBTyxFQUFFLENBQUM7U0FDWDtJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFVO1FBQzFCLElBQUk7WUFDRixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLE9BQU8sR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztTQUMvQztRQUNELE9BQU8sRUFBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUNqRyxPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQVU7UUFDMUIsSUFBSTtZQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUNuQztRQUNELE9BQU8sRUFBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztTQUNsRztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3pCLElBQUk7WUFDRixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsR0FBRyxFQUFFLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsSUFBSSxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxJQUFJLFFBQVEsSUFBSSxFQUFFLENBQUMsSUFBSSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7U0FDeEk7UUFDRCxPQUFPLEVBQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDaEcsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFDRCxlQUFlO1FBQ2IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDNUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDakMsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDO1FBQzVELElBQUksSUFBSSxHQUFHO1lBQ1QsWUFBWSxFQUFFLGdCQUFnQixDQUFDLE1BQU07WUFDckMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsU0FBUztZQUM1RCxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFBLENBQUMsQ0FBQSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQSxDQUFDLENBQUEsRUFBRTtZQUMzSixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXO1lBQ3pVLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE9BQU87WUFDeEQsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQSxDQUFDLENBQUEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFlBQVksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLElBQUksRUFBRTtnQkFDcEssQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSTtnQkFDNUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQyxDQUFBLEVBQUU7WUFDakUsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQSxDQUFDLENBQUEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUEsQ0FBQyxDQUFBLEVBQUU7WUFDMUosT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUEsQ0FBQyxDQUFBLEVBQUU7WUFDbEosTUFBTSxFQUFFLFFBQVE7WUFDaEIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0I7U0FDM0QsQ0FBQTtRQUNHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDcEYsSUFBSTtnQkFDRixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNyRixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDM0YsT0FBTztpQkFDUjtnQkFDRCxJQUFJLEdBQUcsQ0FBQyxhQUFhLElBQUksQ0FBQyxFQUFFO29CQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixHQUFHLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO29CQUNyRSxJQUFJLENBQUMsY0FBYyxDQUFDLDZCQUE2QixHQUFHLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO29CQUM3RSxJQUFJLENBQUMsUUFBUSxFQUFFO3dCQUNiLElBQUksQ0FBQyxjQUFjLENBQUMscUNBQXFDLEVBQUUsQ0FBQzt3QkFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7d0JBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixFQUFFOzRCQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQzt5QkFDL0M7d0JBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQzt3QkFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFOzRCQUMxRCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FDM0IsNEZBQTRGLEVBQzVGLE1BQU0sQ0FDUCxDQUFDO3lCQUNIO3FCQUNOO29CQUNHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3pILElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDaEU7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDekgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzdFLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQ3hFLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxLQUFLLENBQUM7b0JBQzNDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7aUJBQ3ZDO2dCQUNELElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDbkM7WUFDRCxPQUFPLEVBQU8sRUFBRTtnQkFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDcEc7UUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3JHLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUlBLGlCQUFpQjtRQUNoQixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSTtZQUNGLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztZQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLDJCQUEyQixHQUFHLGdCQUFnQixHQUFHLE9BQU8sR0FBQyxzQkFBc0IsR0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2xMLElBQUk7b0JBQ0YsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDMUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO3dCQUM1RixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDaEcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDM0YsT0FBTztxQkFDUjtvQkFDRCxJQUFJLEdBQUcsQ0FBQyxhQUFhLElBQUksQ0FBQyxFQUFFO3dCQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUM7d0JBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsNkJBQTZCLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQzt3QkFDdkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztxQkFDbkM7eUJBQ0k7d0JBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7d0JBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsNkJBQTZCLEdBQUcsRUFBRSxDQUFDO3dCQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQ2hJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUM3RSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3FCQUN6RTtpQkFDRjtnQkFDRCxPQUFPLEVBQU8sRUFBRTtvQkFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQztpQkFDM0c7WUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ2hILElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDckcsQ0FBQyxDQUFDLENBQUE7U0FDSDtRQUNELE9BQU8sRUFBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDM0c7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDMUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDbEQ7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO2dCQUM1RSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3BEO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQzthQUNoRDtpQkFDSTtnQkFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsNkJBQTZCLENBQUM7YUFDL0Y7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLDRCQUE0QixFQUFFLENBQUM7U0FDbEQ7YUFDRztZQUNGLElBQUksQ0FBQyxjQUFjLENBQUMscUNBQXFDLEVBQUUsQ0FBQztTQUM3RDtRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQy9DLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzdDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUVwQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCwyQkFBMkI7SUFDM0Isd0JBQXdCLENBQUMsTUFBVztRQUNsQyxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSTtZQUNGLElBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixFQUFDO2dCQUMzQyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzlELE9BQU8sR0FBRztvQkFDUixZQUFZLEVBQUUsV0FBVztvQkFDekIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO29CQUMzQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87b0JBQ3ZCLElBQUksRUFBRSxDQUFDO2lCQUNSLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsR0FBRyxhQUFhLEdBQUcsTUFBTSxDQUFDLFNBQVMsR0FBRyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQzlNLElBQUk7d0JBQ0YsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRTs0QkFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQzs0QkFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQzs0QkFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDOzRCQUMxRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDaEcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDM0YsT0FBTzt5QkFDUjt3QkFDRCxJQUFJLEdBQUcsQ0FBQyxhQUFhLElBQUksQ0FBQyxFQUFFOzRCQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDOzRCQUMvQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7NEJBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEdBQUcsR0FBRyxDQUFDOzRCQUMvQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsR0FBRyxDQUFDOzRCQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixHQUFHLEdBQUcsQ0FBQzs0QkFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyw4Q0FBOEMsQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDeEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzs0QkFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDOzRCQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQzs0QkFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQzs0QkFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7NEJBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7eUJBQ3hCOzZCQUNJOzRCQUNILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7NEJBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7NEJBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7NEJBQzVILElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDOzRCQUM3RSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3lCQUN6RTtxQkFDRjtvQkFDRCxPQUFPLEVBQU8sRUFBRTt3QkFDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO3dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7cUJBQ3ZHO2dCQUNILENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtvQkFDVCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO29CQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQzVHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDeEcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUM7Z0JBQ3JHLENBQUMsQ0FBQyxDQUFBO2FBQ0g7aUJBQ007Z0JBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztnQkFDL0IsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxFQUFFO29CQUN6RCxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFzQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztvQkFDcEksNEVBQTRFO2lCQUM3RTtnQkFDQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyw4Q0FBOEMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDckYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO2dCQUNwRCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ25DO1NBQ0Y7UUFDSCxPQUFPLEVBQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDdkc7SUFDSCxDQUFDO0lBRUEsNkJBQTZCO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDcEosT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUEyRCxFQUFFLEVBQUUsQ0FDcEgsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDNUYsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUEsTUFBTSxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFBLENBQUMsQ0FBQSxFQUFFLENBQUM7WUFDdE4sTUFBTSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FDM0UsQ0FBQztJQUNKLENBQUM7O3dHQXhzSlUsV0FBVzs0RkFBWCxXQUFXLCs1Q0NyQnhCLDB2N0ZBdXpDTTsyRkRseUNPLFdBQVc7a0JBTHZCLFNBQVM7K0JBQ0UsUUFBUTs4UkFLZ0MsVUFBVTtzQkFBM0QsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0csb0JBQW9CO3NCQUF0RSxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSCxPQUFPO3NCQUFwRCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0UsT0FBTztzQkFBcEQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNDLE1BQU07c0JBQWxELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRyxPQUFPO3NCQUFwRCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ1MsY0FBYztzQkFBbEUsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0osUUFBUTtzQkFBdEQsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNJLFVBQVU7c0JBQTFELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVyQyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRVAsdUJBQXVCO3NCQUR0QixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFxRlYsT0FBTztzQkFBaEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNkLFVBQVU7c0JBQW5DLFNBQVM7dUJBQUMsYUFBYTtnQkFDYSxPQUFPO3NCQUEzQyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBb0NuQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIE9uSW5pdCwgT3V0cHV0LCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZXMgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21tb24nO1xyXG5pbXBvcnQgeyBCcmFuZEluY2x1ZGVDb21wb25lbnQgfSBmcm9tICcuLi9icmFuZC1pbmNsdWRlL2JyYW5kLWluY2x1ZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXZhaWxhYmxlRm9ybXVsYXRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vYnJhbmQtaW5jbHVkZS9hdmFpbGFibGUtZm9ybXVsYXRpb25zL2F2YWlsYWJsZS1mb3JtdWxhdGlvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJc0F1dGhvcml0eUNvbXBvbmVudCB9IGZyb20gJy4uL2lzLWF1dGhvcml0eS9pcy1hdXRob3JpdHkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVhbFRpbWVQcmVzY3JpcHRpb25Nb25pdG9yaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVhbC10aW1lLXByZXNjcmlwdGlvbi1tb25pdG9yaW5nL3JlYWwtdGltZS1wcmVzY3JpcHRpb24tbW9uaXRvcmluZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25maXJtUGF0aWVudENvbnRhY3REZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS1wYXRpZW50LWNvbnRhY3QtZGV0YWlscy9jb25maXJtLXBhdGllbnQtY29udGFjdC1kZXRhaWxzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFzc3dvcmQvcGFzc3dvcmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgY29uZmlnLCBlcnJvcmNvbmZpZyB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9jb25maWcnO1xyXG5pbXBvcnQgeyBDZWFzZVBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY2Vhc2UtcG9wdXAvY2Vhc2UtcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVpc3N1ZVBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVpc3N1ZS1wb3B1cC9yZWlzc3VlLXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsb3NlUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9jbG9zZS1wb3B1cC9jbG9zZS1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXJ4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcnguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3J4LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnTWVkaWNpbmVEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSB3cmFwcGVyUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdQcmVzY3JpYmVEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcmVzY3JpYmVEcm9wZG93blJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnRG9zZURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRvc2VSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ0ZyZXFEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBmcmVxUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdzdHBEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBzdHBSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ0Zvb2REcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBmb29kUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdJbnN0cnVjdGlvbkRyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIEluc3RydWN0aW9uUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdSb3V0ZURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIHJvdXRlUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdQdXJwb3NlRHJvcGRvd24nLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVycG9zZVJlZiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBPdXRwdXQoKSBjbG9zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzdWJtaXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAVmlld0NoaWxkKCdzZWxlY3RBY3Rpb25Ecm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmITogRWxlbWVudFJlZjtcclxuICBzZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlO1xyXG4gIGRvc2VEYXRhID0gW107XHJcbiAgZnJlcXVlbmN5RGF0YSA9IFtdO1xyXG4gIHNlbmR0b3BoYXJtYWN5RGF0YTogYW55ID0gW107XHJcbiAgZm9vZERhdGEgPSBbXTtcclxuICBwdXJwb3NlRGF0YSA9IFtdO1xyXG4gIHJvdXRlRGF0YSA9IFtdO1xyXG4gIGNlYXNlRGF0YSA9IFtdO1xyXG4gIGluc3RydWN0aW9uRGF0YTogYW55ID0gW107XHJcbiAgcm91dGVEYXRhRmlsdGVyID0gJyc7XHJcbiAgSW5zdHJ1Y3Rpb25JZCA9ICcnO1xyXG4gIC8vIHRpbWVyOiBhbnk7XHJcbiAgLy93YWl0VGltZSA9IDI1MDA7XHJcbiAgaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gIHBhZ2UgPSAxO1xyXG4gIHNlbGVjdGVkTWVkaWNpbmVEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdERvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdEZyZXFEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdHN0cERyb3Bkb3duID0gZmFsc2U7XHJcbiAgc2VsZWN0Rm9vZERyb3Bkb3duID0gZmFsc2U7XHJcbiAgc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gdHJ1ZTtcclxuICBzZWxlY3RSb3V0ZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgc2VsZWN0UHVycG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgbWVkaVNlYXJjaFZhbHVlID0gJyc7XHJcbiAgSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9ICcnO1xyXG4gIHNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICBzZWFyY2hlZE1lZGljaW5lTGlzdDogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsOiBhbnkgPSBbXTtcclxuICBvbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICByeE9ubHlQQlMgPSBmYWxzZTtcclxuICByeFByaXZhdGUgPSBmYWxzZTtcclxuICByZXN0cmljdGlvbnMgPSBudWxsO1xyXG4gIGlzU2hvd1Jlc3RyaWN0aW9ucyA9IGZhbHNlO1xyXG4gIHByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgcHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgYnJhbmRNZWRpY3Byb2R1Y3RJZCA9ICcnO1xyXG4gIGJyYW5kTWVkaWNwYnNDb2RlID0gJyc7XHJcbiAgYnJhbmRNZWRpY1F0eSA9ICcnO1xyXG4gIGJyYW5kTWVkaWNSZXAgPSAnJztcclxuICBzZWxlY3RlZEJyYW5kSW5kZXggPSAnJztcclxuICBtb2xlY3VsZU5hbWVUZXh0ID0gJyc7XHJcbiAgbW9sZWN1bGVOYW1lVHlwZSA9ICcnO1xyXG4gIG1vbGVjdWxlU3RyZW5ndGhUZXh0ID0gJyc7XHJcbiAgaXNSdHBtTmV4dCA9IGZhbHNlO1xyXG4gIHNlbGVjdGlvbmJ0bkxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgaXNOb25QYnNGbGFnOiBhbnkgPSBmYWxzZTtcclxuICBhYm9ydEJ0bkZsYWcgPSBmYWxzZTtcclxuICBhYm9ydGRpc2FibGUgPSBmYWxzZTtcclxuICByZXNwb25zZURhdGE6IGFueSA9IHtcclxuICAgIGlzQWJvcnQ6IGZhbHNlLFxyXG4gICAgaXNQcmVzY3JpYmU6IGZhbHNlLFxyXG4gICAgYWJvcnRTdWNjZXNzOiBmYWxzZSxcclxuICAgIHByZXNjcmliZVN1Y2Nlc3M6IGZhbHNlLFxyXG4gICAgcHJlc2NyaWJlZGF0YTogXCJcIixcclxuICAgIGFib3J0TXNnOiBcIlwiLFxyXG4gICAgUHJlc2NyaWJlTXNnOiBcIlwiLFxyXG4gICAgcHJlc2NyaWJlRXJyb3I6IGZhbHNlLFxyXG4gICAgYWJvcnRFcnJvcjogZmFsc2UsXHJcbiAgICBwcmVzY3JpYmVFcnJfY29kZTogXCJcIixcclxuICAgIGFib3J0RXJyX2NvZGU6IFwiXCIsXHJcbiAgICBib2R5OiBcIlwiXHJcbiAgfVxyXG4gIHByb2RIaWRkZW5OYW1lID0gXCJcIjtcclxuICBQcm9kdWN0VHlwZSA9IFwiXCI7XHJcbiAgUHJvZHVjdFNlYXJjaE5hbWUgPSBcIlwiO1xyXG4gIHNlYXJjaE1lZGljaW5lc0xlbmd0aDogYW55ID0gXCJcIjtcclxuICBzZWFyY2hNZWRpY2luZXNQYWdlTnVtYmVyID0gMTtcclxuICBzZWFyY2hCeW5hbWVMZW5ndGg6IGFueSA9IFwiXCI7XHJcbiAgc2VhcmNoQnluYW1lUGFnZU51bWJlciA9IDE7XHJcbiAgaXNlcHJpc2NyaWJlcHJpbnQgPSBmYWxzZTtcclxuICBlZGl0SW5zdHJ1Y3Rpb25GbGFnID0gZmFsc2U7XHJcbiAgUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICBTZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgcHJlc2NyaWJlQVNfUlBCU19VUkEgPSB0cnVlO1xyXG4gIHRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICBpc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgPSBmYWxzZTtcclxuICB0ZW1wQXV0aG9yaXR5Rm9ybU5vID0gXCJcIjtcclxuICBjbGllbnRJZDogYW55ID0gXCJcIjtcclxuICBzaG93RmF2b3VyaXRlTWVkID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgncnh3aWRnZXRzJywgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgndG9vbHRpcGRlbW8nKSBteVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCd0ZXN0JywgeyBzdGF0aWM6IHRydWUgfSkgdG9vbHRpcCE6IG51bGw7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYXBpU2VydmljZTogQXBpU2VydmljZSxcclxuICAgIHB1YmxpYyBjb21tb25TZXJ2aWNlczogQ29tbW9uU2VydmljZXMsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIGNoYW5nZWRldGVjdDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgdmlld1JlZkNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICApIHtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wb3Bfd2lkJywgYDEyMDBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXBvcHVwdycsIGAxMjAwcHhgKTtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWFkZXJwYWRkaW5nJywgYDBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXBvcHVwaCcsIGA2NTBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlYWRlcmZvbnR3ZWlnaHQnLCBgNDAwYCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XHJcbiAgICAgICAgdGhpcy5oaWRlVG9vbFRpcCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhpZGVUb29sVGlwKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMudG9vbHRpcCkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLnRvb2x0aXApO1xyXG4gICAgICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGlkZVRvb2xUaXBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25jbGljayhldmVudDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LmNsYXNzTmFtZSA9PSBcInJ4X3Rvb2x0aXBfaW5uZXJfYm94XCIgfHwgZXZlbnQudGFyZ2V0LmNsYXNzTmFtZS5pbmNsdWRlcyhcIl9fcmVhY3RfY29tcG9uZW50X3Rvb2x0aXBcIikpIHtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlkID09ICdzaG93LXRvb2x0aXAtaWQnKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZGVUb29sVGlwKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkgeyB0aGlzLmNyZWF0ZVRvb2xUaXAoZXZlbnQpIH1cclxuICAgICAgICB9IGVsc2UgeyB0aGlzLmhpZGVUb29sVGlwKCk7IH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJvbmNsaWNrXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNsaWVudElkID0gdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRDcmVkZXRpYWwoKTtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5nZXRBbGxNaW1zVmFsdWUoKTtcclxuICAgICAgdGhpcy5nZXRJbnN0cnVjdGlvblZhbHVlcygpO1xyXG4gICAgICB0aGlzLmdldEZhdm91cnRpZXNMaXN0KCk7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLnNldEVkaXRWYWx1ZXModGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdClcclxuICAgICAgICAgIHRoaXMuZ2V0UmVzdHJpY3RlZE1lZGljaW5lKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMgPSB7fTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmloaU51bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuaWhpTnVtYmVyID09IG51bGwgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5paGlOdW1iZXIgPT0gdW5kZWZpbmVkIHx8IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuaWhpTnVtYmVyID09IFwiXCIgPyAwIDogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5paGlOdW1iZXJcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIgPT0gbnVsbCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyID09IHVuZGVmaW5lZCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyID09IFwiXCIgPyAwIDogdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlclxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5ocGlpTnVtYmVyID09IG51bGwgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXIgPT0gdW5kZWZpbmVkIHx8IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5ocGlpTnVtYmVyID09IFwiXCIgPyAwIDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXJcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwibmdPbkluaXRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSZXN0cmljdGVkTWVkaWNpbmUoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfUkVTVFJJQ1RFRF9NRURJQ0lORSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UmVzdHJpY3RlZE1lZGljaW5lXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSByZXMucmVzcG9uc2U7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5wcm9kdWN0SWQpKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5maW5kSW5kZXgoKHg6IHsgcHJvZHVjdElkOiBhbnk7IH0pID0+IHgucHJvZHVjdElkID09IE51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5wcm9kdWN0SWQpKTtcclxuICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRkYXRhID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkZGF0YSkgJiYgc2VsZWN0ZWRkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QudW5zaGlmdChzZWxlY3RlZGRhdGFbMF0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0ZWRNZWRpY2luZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRSZXN0cmljdGVkTWVkaWNpbmVcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRSZXN0cmljdGVkTWVkaWNpbmVcIik7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0ZWRNZWRpY2luZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlKGRhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB2YXIgdmFsdWUgPSBkYXRhICE9IG51bGwgPyBkYXRhIDogdGhpcy5jb21tb25TZXJ2aWNlcy5jbG9zZUVycm9yUmVzcG9uc2UgIT0gbnVsbCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSAhPSB1bmRlZmluZWQgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSA6IG51bGw7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xvc2VFcnJvclJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2xvc2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjZWFzZVByZXNjcmliZU1lZCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsIDIpKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKENlYXNlUG9wdXBDb21wb25lbnQsIHRoaXMuY29udGVudCwgdGhpcy5jZWFzZURhdGEpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKHJlcy5kYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjZWFzZVByZXNjcmliZU1lZFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbmNlbFByZXNjcmliZU1lZCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsIDQpKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKENsb3NlUG9wdXBDb21wb25lbnQsIHRoaXMuY29udGVudCwgMSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCByZXMuZGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzLmRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAocmVzICE9IG51bGwgJiYgcmVzLmlzRGlzcGVuc2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihDb25maXJtUGF0aWVudENvbnRhY3REZXRhaWxzQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDIpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiBkYXRhLmZsYWcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihDZWFzZVBvcHVwQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIHRoaXMuY2Vhc2VEYXRhKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlICE9IG51bGwgJiYgcmVzcG9uc2UucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNhbmNlbFByZXNjcmliZU1lZFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbmNlbERyYWZ0KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywgNCkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQ2xvc2VQb3B1cENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHJlcy5kYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2FuY2VsRHJhZnRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWlzc3VlUHJlc2NyaWJlTWVkKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywgMykpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUmVpc3N1ZVBvcHVwQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKHJlcy5kYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyZWlzc3VlUHJlc2NyaWJlTWVkXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpbnRQcmVzY3JpYmVNZWQoKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywgMSkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgcnhJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkLFxyXG4gICAgICAgICAgdHlwZTogXCIxXCIsXHJcbiAgICAgICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUlhfUFJJTlQgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQgKyBcIiZ0eXBlPTEmY2xpZW50SWQ9XCIgKyB0aGlzLmNsaWVudElkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzcG9uc2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGF0b2IocmVzcG9uc2UuZmlsZSkuc3BsaXQoJycpLm1hcChjaGFyID0+IGNoYXIuY2hhckNvZGVBdCgwKSkpO1xyXG4gICAgICAgICAgICAgICAgICB2YXIgYmJiID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9wZGZcIiB9KTtcclxuICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJiYik7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgICAgICAgICBpZiAobmV3V2luZG93KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3V2luZG93LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmludFdhcm5pbmdQb3AoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInByaW50UHJlc2NyaWJlTWVkXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUoc2NyaXB0dHlwZTogYW55LCBzdGF0dXM6IGFueSwgZmxhZzogYW55KTogQm9vbGVhbiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzdGF0dXMpICYmIHN0YXR1cy50b0xvd2VyQ2FzZSgpID09ICdwcmVzY3JpYmVkJykge1xyXG4gICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmxhZyA9PSAyKSB7XHJcbiAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzY3JpcHR0eXBlKSAmJiBzY3JpcHR0eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ2UnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmxhZyA9PSAzKSB7XHJcbiAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzY3JpcHR0eXBlKSAmJiBzY3JpcHR0eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ2UnICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZsYWcgPT0gNCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc3RhdHVzKSAmJiBzdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAnZHJhZnQnICYmIGZsYWcgPT0gNCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjaGVja1N0YXR1c0FuZFNjcmlwdHR5cGVcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhZ2VOdW1iZXJPbmVUb05leHQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81MC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81MC5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9IFN0cmluZyh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpLnRyaW0oKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUpLnRyaW0oKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUudHJpbSgpKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpLnRyaW0oKTtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpICYmIHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSkgJiYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkpICYmIHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81NC5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTQubWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5jbGVhckluc3RydWN0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIHx8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIDw9IDAgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gXCJuYW5cIikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzU1Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzU1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81NS5tZXNzYWdlKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPT0gXCJOYU5cIikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCA9IFwiMFwiO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlKS50cmltKCk7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzc1Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzc1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl83NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl83NS5tZXNzYWdlKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQ3Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzQ3LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80Ny5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ny5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnN0YXJ0RGF0ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80OC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl80OC5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDguY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDgubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQ5Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzQ5LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80OS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80OS5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5nZXRUcmFkZU5hbWVEaXNwbGF5KCk7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT0gJ2RyYWZ0JyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgIGxldCByZXN0ZWN0ZWRTdGF0ZXMgPSBbJ05TVycsICdBQ1QnLCAnV0EnLCAnUUxEJywgJ05UJywgJ1RBUyddO1xyXG4gICAgICAgIGxldCBwYXRpZW50U3RhdGVzID0gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHJlc3RlY3RlZFN0YXRlcy5pbmRleE9mKHBhdGllbnRTdGF0ZXMpICE9IC0xICYmIHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkgPiAwKSB7XHJcbiAgICAgICAgICBpZiAoKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA9PSAwKSkge1xyXG4gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGVycm9yY29uZmlnLmVycm9yXzU2Lm1lc3NhZ2UucmVwbGFjZShcIiQwXCIsIHBhdGllbnRTdGF0ZXMpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihtZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzU2LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTYuY29kZSwgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHN0YXRlU2NoZWR1bGVOdW1iZXIgPSB0aGlzLmdldFN0YXRlU2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzdGF0ZVNjaGVkdWxlTnVtYmVyKSAhPSBudWxsICYmIHN0YXRlU2NoZWR1bGVOdW1iZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgaWYgKHBhdGllbnRTdGF0ZXMudG9Mb3dlckNhc2UoKSA9PSBcInRhc1wiICYmIHN0YXRlU2NoZWR1bGVOdW1iZXJbMF0uaW5kZXhPZihcIlM0RFwiKSAhPSAtMSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCA9PSBcIlwiIHx8IHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPT0gbnVsbCB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjgubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82OC5jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjguY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjgubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHBhdGllbnRTdGF0ZXMudG9Mb3dlckNhc2UoKSA9PSBcIm5zd1wiICYmIHN0YXRlU2NoZWR1bGVOdW1iZXJbMF0uaW5kZXhPZihcIlM0QlwiKSAhPSAtMSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCA9PSBcIlwiIHx8IHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPT0gbnVsbCB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjkubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82OS5jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjkuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjkubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoKHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSkpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjYubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82Ni5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjYuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjYubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHZhciByeERpc3BsYXlOYW1lID0gdGhpcy5nZXRUcmFkZU5hbWUoKTtcclxuICAgICAgLy8gaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRvTG93ZXJDYXNlKCkgPT0gJ2dhdXplJykge1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSByeERpc3BsYXlOYW1lO1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHJ4RGlzcGxheU5hbWU7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAvLyAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHJ4RGlzcGxheU5hbWUudHJpbSgpICsgJyAnICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udHJpbSgpICsgJyAnICsgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoID09IG51bGwgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoLnRyaW0oKSArIHRoaXMucnhTdHJlbmd0aGNhbGN1bGF0aW9uKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpO1xyXG4gICAgICAvLyAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSByeERpc3BsYXlOYW1lLnRyaW0oKSArICcgJyArICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCA9PSBudWxsID8gJycgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aC50cmltKCkgKyB0aGlzLnJ4U3RyZW5ndGhjYWxjdWxhdGlvbih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pKTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyB2YXIgcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gdGhpcy5nZXRUcmFkZU5hbWUoKTtcclxuICAgICAgLy8gaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRvTG93ZXJDYXNlKCkgPT0gJ2dhdXplJykge1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSkge1xyXG4gICAgICAvLyAgICAgbGV0IGV4dGVtcFRUUE5hbWUgPSB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgLy8gICAgIGxldCBQSXRlbVRocmVlID0gZXh0ZW1wVFRQTmFtZS5sYXN0SW5kZXhPZignWycpO1xyXG4gICAgICAvLyAgICAgbGV0IFBJdGVtVGhyZWUxID0gZXh0ZW1wVFRQTmFtZS5zbGljZSgwLCBQSXRlbVRocmVlKTtcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gUEl0ZW1UaHJlZTEudHJpbSgpO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICBsZXQgUEl0ZW1UaHJlZTIgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUubGFzdEluZGV4T2YoJ1snKTtcclxuICAgICAgLy8gICAgIGxldCBQSXRlbVRocmVlMyA9IHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZS5zbGljZSgwLCBQSXRlbVRocmVlMik7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IFBJdGVtVGhyZWUzLnRyaW0oKTtcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUudHJpbSgpICsgJyAnICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gKyAnICcgKyAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGggPT0gbnVsbCA/ICcnIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGgudHJpbSgpICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZS50b0xvd2VyQ2FzZSgpICE9ICdub24gcGJzJyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgIT0gJ3ByaXZhdGUnICYmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnID8gcGFyc2VGbG9hdCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpICsgMC41IDogMSkgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cykgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpKSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKElzQXV0aG9yaXR5Q29tcG9uZW50LCB0aGlzLmNvbnRlbnQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubW9sZWN1bGUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFjZ3MsIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluY2x1ZGVicmFuZHBvcG9wZW4oKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oc2NoZWR1bGVOdW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUzhXYXJpbmdQb3BPcGVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKHNjaGVkdWxlTnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyA6IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKHNjaGVkdWxlTnVtYmVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuaW5jbHVkZWJyYW5kcG9wb3BlbigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlV2FyaW5nUG9wT3BlbihzY2hlZHVsZU51bWJlcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLlM4V2FyaW5nUG9wT3BlbigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oXCJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicGFnZU51bWJlck9uZVRvTmV4dFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY2x1ZGVicmFuZHBvcG9wZW4oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLm1vbGVjdWxlKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hY2dzLCB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihCcmFuZEluY2x1ZGVDb21wb25lbnQsIHRoaXMuY29udGVudCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uID1cclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICAgICAgdmFyIG1vbGVjdWxlZGF0YSA9IHtcclxuICAgICAgICAgICAgbW9sZWN1bGVOYW1lVGV4dDogdGhpcy5tb2xlY3VsZU5hbWVUZXh0LFxyXG4gICAgICAgICAgICBtb2xlY3VsZU5hbWVUeXBlOiB0aGlzLm1vbGVjdWxlTmFtZVR5cGUsXHJcbiAgICAgICAgICAgIG1vbGVjdWxlU3RyZW5ndGhUZXh0OiB0aGlzLm1vbGVjdWxlU3RyZW5ndGhUZXh0LFxyXG4gICAgICAgICAgICBzZWxlY3RlZE1lZGljaW5lTGlzdDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQXZhaWxhYmxlRm9ybXVsYXRpb25zQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIG1vbGVjdWxlZGF0YSkuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodmFsLnJlc3BvbnNlZmxhZykge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgICB2YWwuZmxhZ1xyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Db25maXJtQWx0ZXJCcmFuZChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24gIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmRJbmRleCAhPSBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkQnJhbmRJbmRleFxyXG4gICAgICAgICAgICAgICAgICAgIDogMFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljcHJvZHVjdElkID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNwYnNDb2RlID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNRdHkgPSAnJztcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJhbmRNZWRpY1JlcCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNwcm9kdWN0SWQgPSAnJztcclxuICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNwYnNDb2RlID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljUXR5ID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljUmVwID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oc2NoZWR1bGVOdW1iZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImluY2x1ZGVicmFuZHBvcG9wZW5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3NlRnJlcVZhbGlkYXRpb24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlKSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpIHx8IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImRvc2VGcmVxVmFsaWRhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIFM4V2FyaW5nUG9wT3BlbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0gXCJXYXJuaW5nISBUaGlzIGlzIGFuIFM4IGRydWcuIFlvdSBtaWdodCBuZWVkIHRvIGhhbmQgd3JpdGUgeW91ciBzaWduYXR1cmUsIHF1YW50aXR5IGluIHdvcmRzIGFuZCBmaWd1cmVzIGFuZC9vciBvdGhlciBkZXRhaWxzIGFzIHBlciB0aGUgc3RhdGUgcmVndWxhdGlvbnNcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBkYXRhKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIlM4V2FyaW5nUG9wT3BlblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlV2FyaW5nUG9wT3BlbihzY2hlZHVsZU51bWJlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0YSA9IFwiRW5zdXJlIGFsbCBuZWNlc3NhcnkgZmllbGRzIGFyZSBmaWxsZWQgdG8gYXZvaWQgcGhhcm1hY3kgcmVqZWN0aW9uIGR1ZSB0byBpbmNvbXBsZXRlIGluZm9ybWF0aW9uIC0gRG9zZSwgRnJlcXVlbmN5LCBSb3V0ZSBldGMuXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWFsVGltZVByZXNjcmlwdGlvbk1vbml0b3JpbmdDb21wb25lbnQsIHRoaXMuY29udGVudCwgZGF0YSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2NoZWR1bGVOdW1iZXIpICYmIHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwidmFsaWRhdGVXYXJpbmdQb3BPcGVuXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQ29uZmlybUFsdGVyQnJhbmQobWVkOiBhbnksIGluZGV4OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmJyYW5kTWVkaWNwcm9kdWN0SWQgPSAnJztcclxuICAgICAgdGhpcy5icmFuZE1lZGljcGJzQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLmJyYW5kTWVkaWNRdHkgPSAnJztcclxuICAgICAgdGhpcy5icmFuZE1lZGljUmVwID0gJyc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YU9uY2hhbmdlb2ZNZWRpY2luZShtZWQpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHZhciBNZWQgPSBbXTtcclxuICAgICAgTWVkLnB1c2gobWVkKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IE1lZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBNZWQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0Rm9ybXVsYXRpb24obWVkLCAwKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQ29uZmlybUFsdGVyQnJhbmRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb2xlY3VsZShhY2dzOiBhbnksIG1vbGVjdWxlU3RyZW5ndGg6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoYWNncykpIHtcclxuICAgICAgICBpZiAoYWNncy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgaWYgKGFjZ3NbMF0uYWNnTmFtZS5pbmRleE9mKCcrJykgIT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUZXh0ID0gYWNnc1swXS5hY2dOYW1lO1xyXG4gICAgICAgICAgICB0aGlzLm1vbGVjdWxlTmFtZVR5cGUgPSAnUzInO1xyXG4gICAgICAgICAgICB0aGlzLm1vbGVjdWxlU3RyZW5ndGhUZXh0ID0gbW9sZWN1bGVTdHJlbmd0aDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVGV4dCA9IGFjZ3NbMF0uYWNnTmFtZTtcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUeXBlID0gJ1MxJztcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZVN0cmVuZ3RoVGV4dCA9IG1vbGVjdWxlU3RyZW5ndGg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICgxIDwgYWNncy5sZW5ndGgpIHtcclxuICAgICAgICAgIHZhciBtb2xlY3VsZXMgPSBbXTtcclxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWNncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBtb2xlY3VsZXMucHVzaChhY2dzW2ldLmFjZ05hbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUZXh0ID0gbW9sZWN1bGVzLmpvaW4oJywnKTtcclxuICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVHlwZSA9ICdNJztcclxuICAgICAgICAgIHRoaXMubW9sZWN1bGVTdHJlbmd0aFRleHQgPSBtb2xlY3VsZVN0cmVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1vbGVjdWxlTmFtZVRleHQgPSAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJtb2xlY3VsZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJhY2soKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnBhZ2UgPSAxO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImJhY2tcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBNZWRpY2luZURyb3Bkb3duTGlzdCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5zaG93RmF2b3VyaXRlTWVkID0gZmFsc2U7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJNZWRpY2luZURyb3Bkb3duTGlzdFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZXNjcmliZURyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZVBCVE4pO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWN0aW9uRHJvcGRvd25vcGVuKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlQWN0aW9uQnRuKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RBY3Rpb25Ecm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvc2VEcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0RG9zZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVEb3NlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkb3NlRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmcmVxRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEZyZXFEcm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlRnJlcSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZnJlcURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RwVmFsdWVEcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0c3RwRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZXN0cCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic3RwVmFsdWVEcm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvb2REcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Rm9vZERyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVGb29kKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJmb29kRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnN0cnVjdGlvbkRyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVJbnN0cnVjdGlvbik7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaW5zdHJ1Y3Rpb25Ecm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdXRlRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdFJvdXRlRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZSk7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlUm91dGUpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJvdXRlRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdXJwb3NlRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdFB1cnBvc2VEcm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHVycG9zZURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLndyYXBwZXJSZWYgIT0gbnVsbCAmJiB0aGlzLndyYXBwZXJSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMud3JhcHBlclJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMud3JhcHBlclJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZVwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVBY3Rpb25CdG4gPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uRHJvcGRvd25SZWYgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5zZWxlY3RBY3Rpb25Ecm9wZG93blJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZUFjdGlvbkJ0blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZVBCVE4gPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd25SZWYgIT0gbnVsbCAmJiB0aGlzLnByZXNjcmliZURyb3Bkb3duUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnByZXNjcmliZURyb3Bkb3duUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5wcmVzY3JpYmVEcm9wZG93blJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZVBCVE5cIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlRG9zZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5kb3NlUmVmICE9IG51bGwgJiYgdGhpcy5kb3NlUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLmRvc2VSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLmRvc2VSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0RG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVEb3NlXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZUZyZXEgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZnJlcVJlZiAhPSBudWxsICYmIHRoaXMuZnJlcVJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5mcmVxUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5mcmVxUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEZyZXFEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlRnJlcVwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVzdHAgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc3RwUmVmICE9IG51bGwgJiYgdGhpcy5zdHBSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMuc3RwUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5zdHBSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0c3RwRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZXN0cFwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVGb29kID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmZvb2RSZWYgIT0gbnVsbCAmJiB0aGlzLmZvb2RSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMuZm9vZFJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMuZm9vZFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RGb29kRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZUZvb2RcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlSW5zdHJ1Y3Rpb24gPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuSW5zdHJ1Y3Rpb25SZWYgIT0gbnVsbCAmJiB0aGlzLkluc3RydWN0aW9uUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLkluc3RydWN0aW9uUmVmLm5hdGl2ZUVsZW1lbnQgJiYgIXRoaXMuSW5zdHJ1Y3Rpb25SZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ICYmICF0aGlzLmVkaXRJbnN0cnVjdGlvbkZsYWcpIHtcclxuICAgICAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCJcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVkaXRJbnN0cnVjdGlvbkZsYWcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVJbnN0cnVjdGlvblwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVSb3V0ZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5yb3V0ZVJlZiAhPSBudWxsICYmIHRoaXMucm91dGVSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMucm91dGVSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLnJvdXRlUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdFJvdXRlRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJvdXRlRGF0YUZpbHRlciA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlUm91dGVcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5wdXJwb3NlUmVmICE9IG51bGwgJiYgdGhpcy5wdXJwb3NlUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnB1cnBvc2VSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLnB1cnBvc2VSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0UHVycG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVQdXJwb3NlXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8vIEdlbmVyYWwgU2VhcmNoXHJcbiAgc2VhcmNoSGFuZGxlcihlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YSgpO1xyXG4gICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzUGFnZU51bWJlciA9IDE7XHJcbiAgICAgIGxldCBnZXRNZWRpY2luZXNWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlLnRyaW0oKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnNob3dGYXZvdXJpdGVNZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICBpZiAoZS50YXJnZXQudmFsdWUudHJpbSgpLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50YXJnZXQudmFsdWUubGVuZ3RoID49IDMpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgIC8vdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzU3RpbGxTZWFyY2hpbmcpIHtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkcyhnZXRNZWRpY2luZXNWYWx1ZS50cmltKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XHJcbiAgICAgICAgLy8gdGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIC8vICAgdGhpcy5zZWFyY2hNZWRzKGdldE1lZGljaW5lc1ZhbHVlKTtcclxuICAgICAgICAvLyB9LCB0aGlzLndhaXRUaW1lKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VhcmNoSGFuZGxlclwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBzZWFyY2hNZWRzKGdldE1lZGljaW5lc1ZhbHVlOiBhbnkpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBpZiAodGhpcy5tZWRpU2VhcmNoVmFsdWUudHJpbSgpLmxlbmd0aCA8IDMgfHwgZ2V0TWVkaWNpbmVzVmFsdWUudHJpbSgpLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgcHJvZHVjdE5hbWU6IGdldE1lZGljaW5lc1ZhbHVlXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5Qcm9kdWN0U2VhcmNoTmFtZSA9IGdldE1lZGljaW5lc1ZhbHVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLkdFVF9NRURTX0JZX1NFQVJDSCArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudChnZXRNZWRpY2luZXNWYWx1ZSkgKyAnJnBhZ2U9MSZub09mUmVjPTEwJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hNZWRzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IHJlcy5yZXNwb25zZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSByZXMucmVzcG9uc2UubGVuZ3RoO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tZWRpU2VhcmNoVmFsdWUudHJpbSgpLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGdldE1lZGljaW5lc1ZhbHVlLnRyaW0oKSAhPSB0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkgJiYgdGhpcy5tZWRpU2VhcmNoVmFsdWUudHJpbSgpLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21wbGV0ZVNlYXJjaCh0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA+IDcgfHwgcmVzLnJlc3BvbnNlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5NSU1TUHJpbWFyeVNlYXJjaCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaE1lZHNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaE1lZHNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hNZWRzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hNZWRzXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcGxldGVTZWFyY2goZ2V0TWVkaWNpbmVzVmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkcyhnZXRNZWRpY2luZXNWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNvbXBsZXRlU2VhcmNoXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9HZXQgUHJvZHVjdCBEZXRhaWxcclxuICBnZXRQcm9kdWN0TGlzdEJ5TmFtZShwcm9kSGlkZGVuVmFsdWU6IGFueSwgcHJvZHVjdE5hbWU6IGFueSwgc2VhcmNoQmFzZTogYW55KSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1NlY29uZGFyeWFwaS51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VhcmNoQnluYW1lUGFnZU51bWJlciA9IDE7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQocHJvZHVjdE5hbWUpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YU9uY2hhbmdlb2ZNZWRpY2luZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdmFyIHR5cGUgPSBzZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ2JyYW5ka2V5JyA/ICdCSycgOiBzZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2RwYWNra2V5JyA/ICdQUEsnIDogc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICd2aXJ0dWFsbmFtZScgPyAnVk4nIDogc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdwcm9kdWN0a2V5JyA/ICdQSycgOiBzZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2R1Y3RrZXlhY3RpdmVpbmdyZWRpZW50JyA/ICdQS0EnIDogc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdmdWxscGknID8gJ0ZQSScgOiAnUE4nO1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICBwcm9kdWN0TmFtZTogcHJvZEhpZGRlblZhbHVlLFxyXG4gICAgICAgIHR5cGU6IHR5cGUsXHJcbiAgICAgICAgcHJlc2NyaWJlclR5cGU6IFwiTVBcIlxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucHJvZEhpZGRlbk5hbWUgPSBwcm9kSGlkZGVuVmFsdWU7XHJcbiAgICAgIHRoaXMuUHJvZHVjdFR5cGUgPSB0eXBlO1xyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KGNvbmZpZy5HRVRfTUVEU19CWV9OQU1FICsgJz9wcm9kdWN0TmFtZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHByb2RIaWRkZW5WYWx1ZSkgKyAnJnR5cGU9JyArIHR5cGUgKyAnJnByZXNjcmliZXJUeXBlPU1QJnBhZ2U9JyArIHRoaXMuc2VhcmNoQnluYW1lUGFnZU51bWJlciArICcmbm9PZlJlYz0xMCcpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gMDsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdOyB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UHJvZHVjdExpc3RCeU5hbWVcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSByZXMucmVzcG9uc2UubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IHJlcy5yZXNwb25zZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgLy8gaWYgKHRoaXMuaXNOb25QYnNGbGFnKSB7XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5yeE9ubHlOT05QQlNGaWx0ZXIoKTtcclxuICAgICAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gICBpZiAodGhpcy5yeE9ubHlQQlMgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5yeE9ubHlQQlNGaWx0ZXIoKTtcclxuICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgIC8vICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gcmVzLnJlc3BvbnNlO1xyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICB0aGlzLm9uQ2hlY2tib3hDaGFuZ2UoKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5sZW5ndGggPD0gMykge1xyXG4gICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlKSAmJiByZXMucmVzcG9uc2UubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLk1JTVNTZWNvbmRhcnlTZWFyY2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFByb2R1Y3RMaXN0QnlOYW1lXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGVja2JveENoYW5nZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLnJ4T25seVBCUyAmJiB0aGlzLnJ4UHJpdmF0ZSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJ4T25seVBCUykge1xyXG4gICAgICAgIHRoaXMucnhPbmx5UEJTID0gdHJ1ZTtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCkpXHJcbiAgICAgICAgICB0aGlzLnJ4T25seVBCU0ZpbHRlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMucnhQcml2YXRlKSB7XHJcbiAgICAgICAgdGhpcy5yeE9ubHlQQlMgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCkpXHJcbiAgICAgICAgICB0aGlzLnJ4T25seU5PTlBCU0ZpbHRlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yeFByaXZhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWw7XHJcbiAgICAgIH1cclxuICAgICAgLy8gdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJvbkNoZWNrYm94Q2hhbmdlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcnhPbmx5UEJTRmlsdGVyKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwpICYmIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwuZmlsdGVyKCh4OiBhbnkpID0+ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoeC5wYnNUeXBlKSAmJiB4LnBic1R5cGUgIT0gJ25vbiBQQlMnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJ4T25seVBCU0ZpbHRlclwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ4T25seU5PTlBCU0ZpbHRlcigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCAhPSAnJyAmJiB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwuZmlsdGVyKCh4OiBhbnkpID0+ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoeC5wYnNUeXBlKSAmJiB4LnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSAnbm9uIHBicycpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicnhPbmx5Tk9OUEJTRmlsdGVyXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRDbGFzc0Zvck1lZChtZWQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGlzU2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaXNTZWxlY3RlZEZvcm11bGF0aW9uID0gdGhpcy5Jc1NlbGVjdEZvcm11bGF0aW9uKG1lZCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaXNTZWxlY3RlZEZvcm11bGF0aW9uID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiZcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgbWVkLnByb2R1Y3RJZCA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkICYmXHJcbiAgICAgICAgICBtZWQucGJzQ29kZSA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSAmJlxyXG4gICAgICAgICAgbWVkLnByb2R1Y3ROYW1lID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSAmJlxyXG4gICAgICAgICAgbWVkLnJlcGVhdHMgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMgJiZcclxuICAgICAgICAgIG1lZC5tYXhRdHlVbml0cyA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBpc1NlbGVjdGVkRm9ybXVsYXRpb25cclxuICAgICAgICA/ICdtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94IFJYX2hpZ2hsaWdodCdcclxuICAgICAgICA6ICdtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94JztcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0Q2xhc3NGb3JNZWRcIik7XHJcbiAgICAgIHJldHVybiBcIm1kbC1ncmlkIG5ld19yeF9wb3B1cF9ib3hcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENsYXNzRm9yRmF2b3VyaXRlTWVkKG1lZDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcInF1YW50aXR5XCIsKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlIT11bmRlZmluZWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUhPW51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSBcIm5vbiBwYnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm51bWJlck9mUGFjayArIFwieFwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnVuaXRQZXJQYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpLnRvU3RyaW5nKCkpO1xyXG4gICAgICB2YXIgaXNTZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICAgIGlzU2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmXHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkICE9IG51bGwgJiZcclxuICAgICAgICAgIG1lZC5wcm9kdWN0SWQgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCAmJlxyXG4gICAgICAgICAgKG1lZC5wYnNDb2RlIT1udWxsP21lZC5wYnNDb2RlOlwiXCIpID09ICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSE9bnVsbD90aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZTpcIlwiKSAmJlxyXG4gICAgICAgICAgbWVkLnByb2R1Y3ROYW1lID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSAmJlxyXG4gICAgICAgICAgbWVkLnJlcGVhdHMgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMgJiZcclxuICAgICAgICAgIG1lZC5xdWFudGl0eSA9PSAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUhPXVuZGVmaW5lZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSE9bnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZS50b0xvd2VyQ2FzZSgpID09IFwibm9uIHBic1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubnVtYmVyT2ZQYWNrICsgXCJ4XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24udW5pdFBlclBhY2spXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cykudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgIHJldHVybiBpc1NlbGVjdGVkRm9ybXVsYXRpb25cclxuICAgICAgICA/ICdtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94IFJYX2hpZ2hsaWdodCdcclxuICAgICAgICA6ICdtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94JztcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0Q2xhc3NGb3JNZWRcIik7XHJcbiAgICAgIHJldHVybiBcIm1kbC1ncmlkIG5ld19yeF9wb3B1cF9ib3hcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIElzU2VsZWN0Rm9ybXVsYXRpb24obWVkOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQuZ2VuZXJpY05hbWUpID8gbWVkLmdlbmVyaWNOYW1lIDogXCJcIikgPT1cclxuICAgICAgICAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiBcIlwiKSAmJlxyXG4gICAgICAgICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZC5wcm9kdWN0SWQpID8gbWVkLnByb2R1Y3RJZCA6IFwiXCIpID09XHJcbiAgICAgICAgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0SWQpID9cclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQgOiBcIlwiKSAmJiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQucmVwZWF0cykgP1xyXG4gICAgICAgICAgICBtZWQucmVwZWF0cyA6IFwiXCIpID09ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucmVwZWF0cykgP1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzIDogXCJcIikgJiYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkLm1heFF0eVVuaXRzKSA/XHJcbiAgICAgICAgICAgICAgICBtZWQubWF4UXR5VW5pdHMgOiBcIlwiKSA9PSAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1heFF0eVVuaXRzKVxyXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyA6IFwiXCIpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIklzU2VsZWN0Rm9ybXVsYXRpb25cIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldGN1cnJlbnRpZChtZWQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIHRoaXMubWVkaVNlYXJjaFZhbHVlICE9IG51bGwgJiYgbWVkLnByb2REaXNwbGF5VmFsdWUgPT0gdGhpcy5tZWRpU2VhcmNoVmFsdWUgPyAnaGVpZ2hsaWdodCcgOiAnJztcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0Y3VycmVudGlkXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJlc3RyaWN0aW9ucyhyZXN0cmljdGlvbnM6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHJlc3RyaWN0aW9uTGlzdCA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3RyaWN0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBpbmQgPSByZXN0cmljdGlvbkxpc3QuaW5kZXhPZihyZXN0cmljdGlvbnNbaV1bJ3Jlc3RyaWN0aW9uVHlwZSddKTtcclxuICAgICAgICBpZiAoaW5kID09IC0xKSB7XHJcbiAgICAgICAgICByZXN0cmljdGlvbkxpc3QucHVzaChyZXN0cmljdGlvbnNbaV1bJ3Jlc3RyaWN0aW9uVHlwZSddKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3RyaWN0aW9uTGlzdC50b1N0cmluZygpO1xyXG4gICAgICAvLyAgICBsZXQgcmVzdHJpY3Rpb25zID0gW107XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0aW9uc1wiKTtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldEFsbE1pbXNWYWx1ZSgpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uR0VUX0FMTE1JTVNWQUxVRSArIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQgKyBcIiZjbGllbnRJZD1cIiArIHRoaXMuY2xpZW50SWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBbGxNaW1zVmFsdWVcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9zZURhdGEgPSByZXMuZG9zZSAhPSBudWxsID8gcmVzLmRvc2UgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuZnJlcXVlbmN5KSA/IHJlcy5mcmVxdWVuY3kgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5mb29kRGF0YSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmZvb2QpID8gcmVzLmZvb2QgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5wdXJwb3NlRGF0YSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnB1cnBvc2UpICE9IG51bGwgPyByZXMucHVycG9zZSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlRGF0YSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJvdXRlKSAhPSBudWxsID8gcmVzLnJvdXRlIDogW107XHJcbiAgICAgICAgICAgIHRoaXMuY2Vhc2VEYXRhID0gcmVzLmNlYXNlICE9IG51bGwgPyByZXMuY2Vhc2UgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5jZWFzZURhdGEgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5jZWFzZSkgIT0gbnVsbCA/IHJlcy5jZWFzZSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnNlbmR0b3BoYXJtYWN5RGF0YSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnNlbmRUb1Bhcm1hY3lNYXN0ZXIpICE9IG51bGwgPyByZXMuc2VuZFRvUGFybWFjeU1hc3RlciA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnRlbXBBdXRob3JpdHlGb3JtTm8gPSByZXMuYXV0aG9yaXR5Rm9ybS5hdXRob3JpdHlGb3JtTm87XHJcbiAgICAgICAgICAgIGxldCByZWZWYWxBdXRoID0gIXRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA/IHRoaXMuZ2V0QWRkQXV0aFZhbHVlKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmF1dGhvcml0eUZvcm0pID8gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuYXV0aG9yaXR5Rm9ybS5hdXRob3JpdHlGb3JtTm8pID8gcmVzLmF1dGhvcml0eUZvcm0uYXV0aG9yaXR5Rm9ybU5vIDogW10gOiBbXSkgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5wYnNEdmFBdXRob3JpdHlOdW1iZXIpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnBic0R2YUF1dGhvcml0eU51bWJlciAhPSAwID8gdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMucGJzRHZhQXV0aG9yaXR5TnVtYmVyIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gPSByZWZWYWxBdXRoO1xyXG4gICAgICAgICAgICB0aGlzLmlzTm9uUGJzRmxhZyA9IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuaXNOb25QYnNGbGFnKSB8fCByZXMuaXNOb25QYnNGbGFnID09IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5ID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5KSA/IHJlcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcImdldEFsbE1pbXNWYWx1ZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEFsbE1pbXNWYWx1ZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEFsbE1pbXNWYWx1ZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEFsbE1pbXNWYWx1ZVwiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdXRlRmlsdGVyKGU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5yb3V0ZURhdGFGaWx0ZXIgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicm91dGVGaWx0ZXJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJSb3V0ZUl0ZW1zKGFycjogYW55LCBxdWVyeTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gYXJyLmZpbHRlcigoZTogYW55KSA9PlxyXG4gICAgICAgIGUucm91dGVOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkudG9Mb3dlckNhc2UoKSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZmlsdGVyUm91dGVJdGVtc1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vR2V0IGluc3RydWN0aW9uIHZhbHVlXHJcbiAgZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXMoKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgdXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLkdFVF9JTlNUUlVDVElPTl9WQUxVRSArIFwiP3VzZXJJZD1cIiArIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRJbnN0cnVjdGlvblZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdmFyIGluc3RydWN0aW9uID0gcmVzLnJlc3BvbnNlO1xyXG4gICAgICAgICAgICB0aGlzLmluc3RydWN0aW9uRGF0YSA9IGluc3RydWN0aW9uO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRJbnN0cnVjdGlvblZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEluc3RydWN0aW9uVmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0VkaXQgSW5zdHJ1Y3Rpb24gdmFsdWVcclxuICBlZGl0SW5zdHJ1Y3Rpb24oaWQ6IG51bWJlciwgZGF0YTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSBkYXRhLnRleHQ7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUgPSBkYXRhLnRleHQ7XHJcbiAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBkYXRhLmRlc2NyaXB0aW9uO1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uSWQgPSBkYXRhLmlkO1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBkYXRhLmRlc2NyaXB0aW9uO1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdEluc3RydWN0aW9uRmxhZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZWRpdEluc3RydWN0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gbGlzdCBzZWxlY3QgaW4gSW5zdHJ1Y3Rpb25cclxuICBDaGFuZ2VJbnN0cnVjdGlvbihkYXRhOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGE/LnRleHQpID8gZGF0YS50ZXh0IDogJyc7XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZGF0YT8uZGVzY3JpcHRpb24pID8gZGF0YS5kZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaW5zdFZhbCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZGF0YT8udmFsdWUpID8gZGF0YS52YWx1ZSA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShkYXRhPy52YWx1ZSkgPyBkYXRhLmlkIDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQ2hhbmdlSW5zdHJ1Y3Rpb25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnN0cnVjdGlvbk9uQ2hhbmdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpbnN0cnVjdGlvbk9uQ2hhbmdlXCIpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8vIGNsZWFyIEluc3RydWN0aW9uIGluIEluc3RydWN0aW9uXHJcbiAgY2xlYXJJbnN0cnVjdGlvbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gJyc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUgPSBcIlwiO1xyXG4gICAgICB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2xlYXJJbnN0cnVjdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHNhdmUgaW5zdHJ1Y3Rpb24gdmFsdWVcclxuICBzYXZlSW5zdHJ1Y3Rpb24oKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSkudHJpbSgpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzUyLm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzUyLmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81Mi5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81Mi5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShTdHJpbmcodGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbikudHJpbSgpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzUxLm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzUxLmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81MS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81MS5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdmFyIGJvZHkgPSB7XHJcbiAgICAgICAgdGV4dDogdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZS50cmltKCksXHJcbiAgICAgICAgdmFsdWU6ICcxJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbi50cmltKCksXHJcbiAgICAgICAgc3RhdHVzOiAnMCcsXHJcbiAgICAgICAgdXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICB9O1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIGJvZHk6IGJvZHksXHJcbiAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgICBpZDogdGhpcy5JbnN0cnVjdGlvbklkXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLkluc3RydWN0aW9uSWQgIT0gbnVsbCAmJiB0aGlzLkluc3RydWN0aW9uSWQgIT0gJycpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCA9IHBhcnNlSW50KHRoaXMuSW5zdHJ1Y3Rpb25JZCk7XHJcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLlB1dE5ldyhib2R5LCBjb25maWcuUEhZU0lDSUFOLlVQREFURV9JTlNUUlVDVElPTl9WQUxVRSArIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQgKyAnJmlkPScgKyB0aGlzLkluc3RydWN0aW9uSWQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb247XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXMoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGF5bG9hZCA9IGJvZHk7XHJcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLlBvc3QoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5BRERfSU5TVFJVQ1RJT05fVkFMVUUpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXMoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRGVsZXRlIGluc3RydWN0aW9uXHJcbiAgZGVsZXRlSW5zdHJ1Y3Rpb24oaWQ6IE51bWJlcikge1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHVzZXJJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICBpZDogaWRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuUHV0TmV3KCcnLCBjb25maWcuUEhZU0lDSUFOLkRFTEVURV9JTlNUUlVDVElPTl9WQUxVRSArIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQgKyAnJmlkPScgKyBpZCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJkZWxldGVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gXCJcIjtcclxuICAgICAgICAgICAgdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiZGVsZXRlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkZWxldGVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImRlbGV0ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImRlbGV0ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gYWRkIG5ldyBJbnN0cnVjdGlvblxyXG4gIGFkZE5ld0luc3RydWN0aW9uKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gJyc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUgPSBcIlwiO1xyXG4gICAgICB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25JZCA9ICcnO1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiYWRkTmV3SW5zdHJ1Y3Rpb25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBzZWxlY3Qgcm91dGUgdmFsdWVcclxuICBzZWxlY3RSb3V0ZXNlYXJjVmFsdWUocm91dGU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RSb3V0ZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocm91dGU/LnJvdXRlTmFtZSkgPyByb3V0ZS5yb3V0ZU5hbWUgOiAnJztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RSb3V0ZXNlYXJjVmFsdWVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBzZWxlY3QgRG9zZSB2YWx1ZVxyXG4gIHNlbGVjdERvc2VWYWx1ZShkb3NlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0RG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShkb3NlPy50ZXh0KSA/IGRvc2UudGV4dCA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShkb3NlPy52YWx1ZSkgPyBkb3NlLnZhbHVlIDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0RG9zZVZhbHVlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gc2VsZWN0IEZyZXF1ZW5jeSB2YWx1ZVxyXG4gIHNlbGVjdEZyZXF1ZW5jeVZhbHVlKGZyZXF1ZW5jeTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEZyZXFEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZnJlcXVlbmN5Py50ZXh0KSA/IGZyZXF1ZW5jeS50ZXh0IDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZyZXF1ZW5jeT8udmFsdWUpID8gZnJlcXVlbmN5LnZhbHVlIDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0RnJlcXVlbmN5VmFsdWVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBzZWxlY3QgRm9vZCB2YWx1ZVxyXG4gIHNlbGVjdEZvb2RWYWx1ZShmb29kOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Rm9vZERyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb29kPy50ZXh0KSA/IGZvb2QudGV4dCA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0Rm9vZFZhbHVlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0U3RwVmFsdWUoc3RwOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0c3RwRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzdHA/Lm5hbWUpID8gc3RwLm5hbWUgOiAnJztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RTdHBWYWx1ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vc2VsZWN0IFB1cnBvc2UgdmFsdWVcclxuICBzZWxlY3RQdXJwb3NlVmFsdWUocHVycG9zZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdFB1cnBvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShwdXJwb3NlPy5sb29rdXBUZXh0KSA/IHB1cnBvc2UubG9va3VwVGV4dCA6ICcnO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocHVycG9zZT8uaWQpID8gcHVycG9zZS5pZCA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0UHVycG9zZVZhbHVlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUXVhbnRpdHkgY2hhbmdlXHJcbiAgcXVhbnRpdHlDaGFuZ2UoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjb252ZXJ0cXVhbnRpdHl2YWwgPSBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLCAxMCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSBjb252ZXJ0cXVhbnRpdHl2YWwudG9TdHJpbmcoKTtcclxuICAgICAgLy90aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsID0gdGhpcy5yb3VuZERhdGEocGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkpLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJxdWFudGl0eUNoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrTW9iaWxlKGV2dDogYW55KTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBjaGFyQ29kZSA9IChldnQud2hpY2gpID8gZXZ0LndoaWNoIDogZXZ0LmtleUNvZGU7XHJcbiAgICAgIGlmIChjaGFyQ29kZSA+IDMxICYmIChjaGFyQ29kZSA8IDQ3IHx8IGNoYXJDb2RlID4gNTcpKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNoZWNrTW9iaWxlXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkYXlzY2hhbmdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgIT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnZlcnRkYXlzY2hhbmdlID0gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCwgMTApO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPSBjb252ZXJ0ZGF5c2NoYW5nZS50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkYXlzY2hhbmdlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVwZWF0c0NoYW5nZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY29udmVydHJlcGVhdHN2YWwgPSBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsIDEwKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsID0gY29udmVydHJlcGVhdHN2YWwudG9TdHJpbmcoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyZXBlYXRzQ2hhbmdlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvL3VubGlzdGVkIGNoZWNrIGJveFxyXG4gIHVubGlzdGVkUkEoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdSUEJTJztcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJ1bmxpc3RlZFJBXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUHJpdmF0ZSc7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpdmF0ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFBCUygpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUEJTJztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJQQlNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBSUEJTKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdSUEJTJztcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJSUEJTXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zZWxlY3RlZCBtZWRpY2luZVxyXG4gIHNlbGVjdEZvcm11bGF0aW9uKG1lZDogYW55LCBpbmRleDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBtZWQ7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YU9uY2hhbmdlb2ZNZWRpY2luZShtZWQpO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzdHJpY3Rpb25zID0gbWVkLlJlc3RyaWN0aW9ucyAmJiBtZWQuUmVzdHJpY3Rpb25zLmxlbmd0aCAhPSAwID8gbWVkLlJlc3RyaWN0aW9uc1swXSA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sZW1pIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sbWJjIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubGVtaSA6IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAobWVkLlJlc3RyaWN0aW9ucyAmJiBtZWQuUmVzdHJpY3Rpb25zLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICB2YXIgcmVzdHJpY3Rpb25MaXN0cyA9IG1lZC5SZXN0cmljdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZTogYW55KSA9PlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25QcmV2aWV3ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uVGV4dCAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblByZXZpZXcgIT0gJycgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uVGV4dCAhPSAnJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChyZXN0cmljdGlvbkxpc3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICAvLyBpZiAodGhpcy5zdGF0ZS5zZWxlY3RlZEluZGV4ICE9IGluZGV4KSB7XHJcbiAgICAgIC8vICAgdGhpcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25EYXRhT25jaGFuZ2VvZk1lZGljaW5lKG1lZCk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNSdHBtTmV4dCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vID0gdGhpcy5nZXRBZGRBdXRoVmFsdWUodGhpcy50ZW1wQXV0aG9yaXR5Rm9ybU5vKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHRoaXMuZW5hYmxlUHJlc2NyaWJlQXMobWVkKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdEZvcm11bGF0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zZWxlY3RlZCBGYXZvdXJpdGUgbWVkaWNpbmVcclxuICBzZWxlY3RGYXZvdXJpdGVGb3JtdWxhdGlvbihtZWQ6IGFueSwgaW5kZXg6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbWVkO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUobWVkKTtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3RyaWN0aW9ucyA9IG1lZC5SZXN0cmljdGlvbnMgJiYgbWVkLlJlc3RyaWN0aW9ucy5sZW5ndGggIT0gMCA/IG1lZC5SZXN0cmljdGlvbnNbMF0gOiBudWxsO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubGVtaSA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubG1iYyA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubG1iYyA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSBtZWQuYWlwICE9IG51bGwgPyBtZWQuYWlwLmxlbWkgOiBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKG1lZC5SZXN0cmljdGlvbnMgJiYgbWVkLlJlc3RyaWN0aW9ucy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgdmFyIHJlc3RyaWN0aW9uTGlzdHMgPSBtZWQuUmVzdHJpY3Rpb25zLmZpbHRlcihcclxuICAgICAgICAgICAgKGU6IGFueSkgPT5cclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uUHJldmlldyAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblRleHQgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25QcmV2aWV3ICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblRleHQgIT0gJydcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAocmVzdHJpY3Rpb25MaXN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzUnRwbU5leHQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmF1dGhvcml0eUZvcm1ObyA9IHRoaXMuZ2V0QWRkQXV0aFZhbHVlKHRoaXMudGVtcEF1dGhvcml0eUZvcm1Obyk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB0aGlzLmVuYWJsZVByZXNjcmliZUFzKG1lZCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RGYXZvdXJpdGVGb3JtdWxhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEJyYW5kTmFtZShzZWxlY3RlZEZvcm11bGF0aW9uOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24pKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwTmFtZTtcclxuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5icmFuZD8uYnJhbmROYW1lKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYnJhbmQuYnJhbmROYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEJyYW5kTmFtZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmFibGVQcmVzY3JpYmVBcyhtZWQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gaWYgKG1lZC5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJub24gcGJzXCIgfHwgdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkpIHtcclxuICAgICAgLy8gICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgIC8vICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAvLyB9IGVsc2VcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkPy5wYnNUeXBlKSAmJiBtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiUEJTL1JQQlNcIiAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdSUEJTJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUEJTJztcclxuICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgbWVkLnBic1R5cGUudG9VcHBlckNhc2UoKSA9PSBcIlJQQlNcIiAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQ/LnBic1R5cGUpICYmIG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJQQlNcIiAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgKG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJFWFRFTVBPUkFORU9VUyBQUkVQQVJBVElPTlNcIiB8fCBtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiU0VDVElPTiAxMDBcIikgJiYgIXRoaXMuaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5tZWRpY2FyZU51bWJlcikgfHwgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzQ29kZSkgJiYgbWVkLnBic0NvZGUgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgbWVkLnBic1R5cGUudG9VcHBlckNhc2UoKSA9PSBcIlBBTExJQVRJVkUgQ0FSRVwiICYmICF0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFOdW1iZXIgIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YU51bWJlciAhPSAnJyAmJiBtZWQucGJzQ29kZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQ/LnBic0NvZGUpICYmIG1lZC5wYnNDb2RlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQQlMnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgfVxyXG4gICAgICAvLyBlbHNlIGlmIChtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiU0VDVElPTiAxMDBcIikge1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLm1lZGljYXJlTnVtYmVyICE9IFwiXCIgJiZcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIgIT0gbnVsbCAmJiBtZWQucGJzQ29kZSAhPSBcIlwiIHx8IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9IG51bGwgJiZcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9ICcnICYmIG1lZC5wYnNDb2RlICE9IFwiXCIpIHtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQQlMnO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgLy8gICAgIHRoaXMuc2V0U3RhdGUoeyBwcmVzY3JpYmVBU19QQlM6IHRydWUsIHByZXNjcmliZUFTX1JQQlM6IHRydWUsIFByZXNjcmliZUFTOiBcIlByaXZhdGVcIiB9KTtcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZW5hYmxlUHJlc2NyaWJlQXNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUcmFkZU5hbWUoKTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIHZhciBzZWxlY3RlZEZvcm11bGF0aW9uOmFueSA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuXHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICB2YXIgdHJhZGVOYW1lID0gJyc7XHJcbiAgICAgICAgdmFyIGFtdF90cE5hbWUgPSB0aGlzLmdldEJyYW5kTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgIHZhciB0QnJhbmROYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShhbXRfdHBOYW1lKSA/IGFtdF90cE5hbWUgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYnJhbmQ/LmJyYW5kTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYnJhbmQuYnJhbmROYW1lIDogXCJcIjtcclxuICAgICAgICAvL3ZhciBhbXRfdHBwTmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoICE9IDAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSA6ICcnO1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgfHwgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRvTG93ZXJDYXNlKCkgPT0gJ2dhdXplJykge1xyXG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlICYmIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSBmYWxzZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogXCJcIjtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgdHJhZGVOYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSArICcoJyArIHRCcmFuZE5hbWUgKyAnKScgOiBcIlwiO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSBmYWxzZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogXCJcIjtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSB0QnJhbmROYW1lO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gZWxzZSBpZiAoSXNFeHRlbXAgPT0gdHJ1ZSAmJiBsZW1pID09IHRydWUpIHtcclxuICAgICAgICAgICAgLy8gICB0cmFkZU5hbWUgPSBhbXRfdHBwTmFtZSAhPSBudWxsICYmIGFtdF90cHBOYW1lICE9IFwiXCIgPyBhbXRfdHBwTmFtZSA6IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vICAgcmV0dXJuIHRyYWRlTmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy8gZWxzZSBpZiAoSXNFeHRlbXAgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyAgIHRyYWRlTmFtZSA9IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5mb3JtdWxhID09IG51bGwgPyB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUudHJpbSgpIDogdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGE7XHJcbiAgICAgICAgICAgIC8vICAgcmV0dXJuIHRyYWRlTmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRyYWRlTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0VHJhZGVOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRyYWRlTmFtZURpc3BsYXkoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdmFyIGFtdF90cE5hbWUgPSB0aGlzLmdldEJyYW5kTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgIHZhciB0QnJhbmROYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShhbXRfdHBOYW1lKSA/IGFtdF90cE5hbWUgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYnJhbmQ/LmJyYW5kTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYnJhbmQuYnJhbmROYW1lIDogXCJcIjtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpKSB7XHJcbiAgICAgICAgICAvLyBsZXQgUEl0ZW1UaHJlZTIgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUubGFzdEluZGV4T2YoXCJbXCIpO1xyXG4gICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUzID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLnNsaWNlKDAsIFBJdGVtVGhyZWUyKTtcclxuICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gUEl0ZW1UaHJlZTIgPj0gMCA/IFBJdGVtVGhyZWUzLnRyaW0oKSA6IHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiBcIlwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUgfHwgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udG9Mb3dlckNhc2UoKSA9PSBcImdhdXplXCIpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udG9Mb3dlckNhc2UoKSA9PSBcImdhdXplXCIpIHtcclxuICAgICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUyID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLmxhc3RJbmRleE9mKFwiW1wiKTtcclxuICAgICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUzID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLnNsaWNlKDAsIFBJdGVtVGhyZWUyKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBQSXRlbVRocmVlMiA+PSAwID8gUEl0ZW1UaHJlZTMudHJpbSgpIDogcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGxldCBQSXRlbVRocmVlID0gZXh0ZW1wVFRQTmFtZS5sYXN0SW5kZXhPZihcIltcIik7XHJcbiAgICAgICAgICAgIC8vIGxldCBQSXRlbVRocmVlMSA9IGV4dGVtcFRUUE5hbWUuc2xpY2UoMCwgUEl0ZW1UaHJlZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gUEl0ZW1UaHJlZSA+PSAwID8gUEl0ZW1UaHJlZTEudHJpbSgpIDogZXh0ZW1wVFRQTmFtZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFyIG1wcE5hbWUgPSB0aGlzLmdldE1QUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICAgIHZhciBTYWNoZXRPclB1bXAgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uc3RyU2FjaGV0T3JQdW1wKSA/IFwiIFwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCA6IFwiXCI7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtcHBOYW1lKSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChtcHBOYW1lLnRyaW0oKSArIFwiXCIgKyBTYWNoZXRPclB1bXAgKyAnICgnICsgdEJyYW5kTmFtZSArICcpJykudHJpbSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSAobXBwTmFtZS50cmltKCkgKyBcIlwiICsgU2FjaGV0T3JQdW1wKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBzdHJlbmd0aCA9IHRoaXMucnhTdHJlbmd0aGNhbGN1bGF0aW9uKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgICAgIHZhciBkaXNwTmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5EaXNwTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uRGlzcE5hbWUudHJpbSgpIDogXCJcIjtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udHJpbSgpICsgXCIgXCIgOiBcIlwiKSArICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRCcmFuZE5hbWUpID8gJygnICsgdEJyYW5kTmFtZSArICcpICcgOiBcIlwiKSArIHN0cmVuZ3RoKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodEJyYW5kTmFtZSkgPyAnKCcgKyB0QnJhbmROYW1lICsgJykgJyA6IFwiXCIpICsgc3RyZW5ndGgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50cmltKCkgKyBcIiBcIiA6IFwiXCIpICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodEJyYW5kTmFtZSkgPyAnKCcgKyB0QnJhbmROYW1lICsgJykgJyA6IFwiXCIpICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udHJpbSgpIDogXCJcIikgKyBcIiBcIiArIHN0cmVuZ3RoKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgc3RyZW5ndGgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50cmltKCkgOiBcIlwiKSArIFwiIFwiICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IFwiXCI7XHJcbiAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gXCJcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFRyYWRlTmFtZURpc3BsYXlcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRNUFBOYW1lKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbikgJiYgKHR5cGVvZiBzZWxlY3RlZEZvcm11bGF0aW9uKSA9PT0gJ29iamVjdCcgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0/Lm1wcHMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0/Lm1wcE5hbWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0ubXBwTmFtZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRNUFBOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEl0ZW1HZW5lcmljSW50ZW50aW9uKGxlbWk6IGJvb2xlYW4sIGlzQnJhbmROYW1lOiBib29sZWFuLCBpc0V4dGVtcDogYm9vbGVhbikge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGxlbWkgPT0gdHJ1ZSAmJiBpc0JyYW5kTmFtZSA9PSB0cnVlICYmIGlzRXh0ZW1wICE9IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gJ0InO1xyXG4gICAgICB9IGVsc2UgaWYgKGxlbWkgPT0gdHJ1ZSAmJiBpc0JyYW5kTmFtZSA9PSBmYWxzZSAmJiBpc0V4dGVtcCAhPSB0cnVlKSB7XHJcbiAgICAgICAgcmV0dXJuICdHJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJ0cnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEl0ZW1HZW5lcmljSW50ZW50aW9uXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ4U3RyZW5ndGhjYWxjdWxhdGlvbihmb3JtdWxhdGlvbjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSkgJiYgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgIT0gMCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrKSAmJiBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eW51bWJlck9mUGFjayAhPSAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCkgPyBmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXAgOiBcIlwiKSArICcgWycgKyBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSArICddJyArICcgeCAnICsgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHludW1iZXJPZlBhY2spLnRyaW0oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXApID8gZm9ybXVsYXRpb24uc3RyU2FjaGV0T3JQdW1wIDogXCJcIikgKyAnIFsnICsgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgKyAnXScpLnRyaW0oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJ4U3RyZW5ndGhjYWxjdWxhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyByeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcoZm9ybXVsYXRpb246IGFueSkge1xyXG4gIC8vICAgdHJ5IHtcclxuICAvLyAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9ybXVsYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkpICYmIGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5ICE9IDApIHtcclxuICAvLyAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXApID8gZm9ybXVsYXRpb24uc3RyU2FjaGV0T3JQdW1wIDogXCJcIjtcclxuICAvLyAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICByZXR1cm4gJyc7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicnhTdHJlbmd0aGNhbGN1bGF0aW9uTmV3XCIpO1xyXG4gIC8vICAgICByZXR1cm4gXCJcIjtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIHNob3dBdXRob3JpdHlCb3goUmVzdHJpY3Rpb25zOiBhbnksIFByZXNjcmliZUFTOiBhbnksIHJ4QXV0aG9yaXR5OiBhbnksIHVubGlzdGVkUkE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KFJlc3RyaWN0aW9ucykgJiYgUmVzdHJpY3Rpb25zLmxlbmd0aCA+IDAgJiYgUmVzdHJpY3Rpb25zWzBdLnJlc3RyaWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpICE9ICdyZXN0cmljdGVkJyAmJiBSZXN0cmljdGlvbnNbMF0ucmVzdHJpY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ3VucmVzdHJpY3RlZCcgJiYgUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJykgfHwgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoUmVzdHJpY3Rpb25zKSAmJiBSZXN0cmljdGlvbnMubGVuZ3RoID4gMCAmJiBSZXN0cmljdGlvbnNbMF0ucmVzdHJpY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ3Jlc3RyaWN0ZWQnICYmIFJlc3RyaWN0aW9uc1swXS5yZXN0cmljdGlvblR5cGUudG9Mb3dlckNhc2UoKSAhPSAndW5yZXN0cmljdGVkJyAmJiBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdycGJzJykgfHwgKHJ4QXV0aG9yaXR5ID09IHRydWUgJiYgUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJykgfHwgKHJ4QXV0aG9yaXR5ID09IHRydWUgJiYgUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncnBicycpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncnBicycgJiYgdW5saXN0ZWRSQSA9PSB0cnVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNob3dBdXRob3JpdHlCb3hcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERpcmVjdGlvbnMoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgZGlyZWN0aW9ucyA9ICcnO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpKSB7XHJcbiAgICAgICAgZGlyZWN0aW9ucyA9IGRpcmVjdGlvbnMgKyAnICcgKyB0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbikpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZGlyZWN0aW9ucy50cmltKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldERpcmVjdGlvbnNcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zdGF0ZSBuYW1lIGZ1bGwgZm9ybVxyXG4gIGdldFN0YXRlTmFtZUZyb21TdGF0ZUNvZGUocnRwbXN0YXRlTmFtZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBzd2l0Y2ggKHJ0cG1zdGF0ZU5hbWUgJiYgcnRwbXN0YXRlTmFtZSAhPSAnJyA/IHJ0cG1zdGF0ZU5hbWUudG9VcHBlckNhc2UoKSA6ICcnKSB7XHJcbiAgICAgICAgY2FzZSAnTlNXJzpcclxuICAgICAgICAgIHJldHVybiAnTmV3IFNvdXRoIFdhbGVzJztcclxuICAgICAgICBjYXNlICdRTEQnOlxyXG4gICAgICAgICAgcmV0dXJuICdRdWVlbnNsYW5kJztcclxuICAgICAgICBjYXNlICdTQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1NvdXRoIEF1c3RyYWxpYSc7XHJcbiAgICAgICAgY2FzZSAnVEFTJzpcclxuICAgICAgICAgIHJldHVybiAnVGFzbWFuaWEnO1xyXG4gICAgICAgIGNhc2UgJ1ZJQyc6XHJcbiAgICAgICAgICByZXR1cm4gJ1ZpY3RvcmlhJztcclxuICAgICAgICBjYXNlICdXQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1dlc3Rlcm4gQXVzdHJhbGlhJztcclxuICAgICAgICBjYXNlICdBQ1QnOlxyXG4gICAgICAgICAgcmV0dXJuICdBdXN0cmFsaWFuIENhcGl0YWwgVGVycml0b3J5JztcclxuICAgICAgICBjYXNlICdOVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ05vcnRoZXJuIFRlcnJpdG9yeSc7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiBydHBtc3RhdGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFN0YXRlTmFtZUZyb21TdGF0ZUNvZGVcIik7XHJcbiAgICAgIHJldHVybiBydHBtc3RhdGVOYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zdXBlcnNjcmlwdCBjb2RlXHJcbiAgc2hyaW5rU3VwZXJTY3JpcHRDb2RlID0gKGlucHV0OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkdXByZXN1bHQgPSBpbnB1dDtcclxuICAgICAgbGV0IGEgPSBpbnB1dC5zcGxpdCgnPHN1cD4nKTtcclxuXHJcbiAgICAgIC8vIHNlYXJjaCBmb3IgcGF0dGVybiBpbiBhXHJcbiAgICAgIGxldCBjb3VudCA9IGEubGVuZ3RoIC0gMTtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xyXG4gICAgICAgIC8vIGlmIG1hdGNoIGZvdW5kIGluY3JlYXNlIGNvdW50XHJcbiAgICAgICAgbGV0IHN0YXJ0ID0gJzxzdXA+JztcclxuICAgICAgICBsZXQgZW5kID0gJzwvc3VwPic7XHJcbiAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSBkdXByZXN1bHQuaW5kZXhPZihzdGFydCkgKyBzdGFydC5sZW5ndGg7XHJcbiAgICAgICAgbGV0IGVuZEluZGV4ID0gZHVwcmVzdWx0LmluZGV4T2YoZW5kLCBzdGFydEluZGV4KTtcclxuICAgICAgICBsZXQgZXh0cmFjdGVkVmFsdWUgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKHN0YXJ0SW5kZXggIT0gLTEgJiYgZW5kSW5kZXggIT0gLTEpIHtcclxuICAgICAgICAgIGV4dHJhY3RlZFZhbHVlID0gZHVwcmVzdWx0LnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzdHJpbmdOdW1iZXIgPSB0aGlzLmNvbnZlcnRUb1N1cGVyc2NyaXB0KGV4dHJhY3RlZFZhbHVlKTtcclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdCA9ICdUaGUgbnVtYmVyICcgKyBzdHJpbmdOdW1iZXIgKyAnIGlzIHN1cGVyc2NyaXB0ZWQuJztcclxuXHJcbiAgICAgICAgLy8gZHVwcmVzdWx0ID0gZHVwcmVzdWx0LnJlcGxhY2UoLzxzdXA+Lio8XFwvc3VwPi8sICc8c3VwPjwvc3VwPicpO1xyXG4gICAgICAgIC8vIGR1cHJlc3VsdCA9IGR1cHJlc3VsdC5yZXBsYWNlRmlyc3QoXCJcXFxcPHN1cD4uKj9cXFxcPC9zdXA+XCIsIFwiPHN1cD5cIiArIFwiXCIgKyBcIjwvc3VwPlwiKTtcclxuICAgICAgICBkdXByZXN1bHQgPSBkdXByZXN1bHQucmVwbGFjZShcclxuICAgICAgICAgICc8c3VwPicgKyBleHRyYWN0ZWRWYWx1ZSArICc8L3N1cD4nLFxyXG4gICAgICAgICAgc3RyaW5nTnVtYmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICAvLyByZXR1cm4gZHVwcmVzdWx0O1xyXG4gICAgICByZXR1cm4gdGhpcy5zaHJpbmtTdWJTY3JpcHRDb2RlKGR1cHJlc3VsdCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNocmlua1N1cGVyU2NyaXB0Q29kZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLy9zdWJzY3JpcHQgY29kZVxyXG4gIHNocmlua1N1YlNjcmlwdENvZGUgPSAoaW5wdXQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGR1cHJlc3VsdCA9IGlucHV0O1xyXG4gICAgICBsZXQgYSA9IGlucHV0LnNwbGl0KCc8c3ViPicpO1xyXG5cclxuICAgICAgLy8gc2VhcmNoIGZvciBwYXR0ZXJuIGluIGFcclxuICAgICAgbGV0IGNvdW50ID0gYS5sZW5ndGggLSAxO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgLy8gaWYgbWF0Y2ggZm91bmQgaW5jcmVhc2UgY291bnRcclxuICAgICAgICBsZXQgc3RhcnQgPSAnPHN1Yj4nO1xyXG4gICAgICAgIGxldCBlbmQgPSAnPC9zdWI+JztcclxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IGR1cHJlc3VsdC5pbmRleE9mKHN0YXJ0KSArIHN0YXJ0Lmxlbmd0aDtcclxuICAgICAgICBsZXQgZW5kSW5kZXggPSBkdXByZXN1bHQuaW5kZXhPZihlbmQsIHN0YXJ0SW5kZXgpO1xyXG4gICAgICAgIGxldCBleHRyYWN0ZWRWYWx1ZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoc3RhcnRJbmRleCAhPSAtMSAmJiBlbmRJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgZXh0cmFjdGVkVmFsdWUgPSBkdXByZXN1bHQuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHN0cmluZ051bWJlciA9IHRoaXMuc3Vic2NyaXB0TnVtYmVycyhleHRyYWN0ZWRWYWx1ZSk7XHJcblxyXG4gICAgICAgIGxldCByZXN1bHQgPSAnVGhlIG51bWJlciAnICsgc3RyaW5nTnVtYmVyICsgJyBpcyBzdXBlcnNjcmlwdGVkLic7XHJcbiAgICAgICAgLy8gZHVwcmVzdWx0ID0gZHVwcmVzdWx0LnJlcGxhY2UoLzxzdXA+Lio8XFwvc3VwPi8sICc8c3VwPjwvc3VwPicpO1xyXG4gICAgICAgIC8vIGR1cHJlc3VsdCA9IGR1cHJlc3VsdC5yZXBsYWNlRmlyc3QoXCJcXFxcPHN1cD4uKj9cXFxcPC9zdXA+XCIsIFwiPHN1cD5cIiArIFwiXCIgKyBcIjwvc3VwPlwiKTtcclxuICAgICAgICBkdXByZXN1bHQgPSBkdXByZXN1bHQucmVwbGFjZShcclxuICAgICAgICAgICc8c3ViPicgKyBleHRyYWN0ZWRWYWx1ZSArICc8L3N1Yj4nLFxyXG4gICAgICAgICAgc3RyaW5nTnVtYmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZHVwcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzaHJpbmtTdWJTY3JpcHRDb2RlXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb252ZXJ0VG9TdXBlcnNjcmlwdCA9IChpbnB1dDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzdXBlcnNjcmlwdERpZ2l0czogYW55ID0ge1xyXG4gICAgICAgICcwJzogJ1xcdTIwNzAnLFxyXG4gICAgICAgICcxJzogJ1xcdTAwQjknLFxyXG4gICAgICAgICcyJzogJ1xcdTAwQjInLFxyXG4gICAgICAgICczJzogJ1xcdTAwQjMnLFxyXG4gICAgICAgICc0JzogJ1xcdTIwNzQnLFxyXG4gICAgICAgICc1JzogJ1xcdTIwNzUnLFxyXG4gICAgICAgICc2JzogJ1xcdTIwNzYnLFxyXG4gICAgICAgICc3JzogJ1xcdTIwNzcnLFxyXG4gICAgICAgICc4JzogJ1xcdTIwNzgnLFxyXG4gICAgICAgICc5JzogJ1xcdTIwNzknLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgbGV0IG91dHB1dCA9ICcnO1xyXG4gICAgICBmb3IgKGxldCBjaGFyIG9mIGlucHV0KSB7XHJcbiAgICAgICAgaWYgKGNoYXIgaW4gc3VwZXJzY3JpcHREaWdpdHMpIHtcclxuICAgICAgICAgIG91dHB1dCArPSBzdXBlcnNjcmlwdERpZ2l0c1tjaGFyXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3V0cHV0ICs9IGNoYXI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBvdXRwdXQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNvbnZlcnRUb1N1cGVyc2NyaXB0XCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBzdWJzY3JpcHROdW1iZXJzKHN0cjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgc3Vic2NyaXB0czogYW55ID0ge1xyXG4gICAgICAgICcwJzogJ1xcdTIwODAnLFxyXG4gICAgICAgICcxJzogJ1xcdTIwODEnLFxyXG4gICAgICAgICcyJzogJ1xcdTIwODInLFxyXG4gICAgICAgICczJzogJ1xcdTIwODMnLFxyXG4gICAgICAgICc0JzogJ1xcdTIwODQnLFxyXG4gICAgICAgICc1JzogJ1xcdTIwODUnLFxyXG4gICAgICAgICc2JzogJ1xcdTIwODYnLFxyXG4gICAgICAgICc3JzogJ1xcdTIwODcnLFxyXG4gICAgICAgICc4JzogJ1xcdTIwODgnLFxyXG4gICAgICAgICc5JzogJ1xcdTIwODknLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdmFyIHJlc3VsdCA9ICcnO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChzdWJzY3JpcHRzW3N0cltpXV0pIHtcclxuICAgICAgICAgIHJlc3VsdCArPSBzdWJzY3JpcHRzW3N0cltpXV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc3VsdCArPSBzdHJbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInN1YnNjcmlwdE51bWJlcnNcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QXV0aG9yaXR5TGFiZWwoc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZShzdGF0ZU5hbWUpO1xyXG4gICAgICBzd2l0Y2ggKHN0YXRlLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlICdOU1cnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1FMRCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnU0EnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1RBUyc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnVklDJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdXQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnQUNUJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdOVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBdXRob3JpdHlMYWJlbFwiKTtcclxuICAgICAgcmV0dXJuIHN0YXRlTmFtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN0YXRlQXV0aG9yaXR5TGFiZWwoc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZShzdGF0ZU5hbWUpO1xyXG4gICAgICBzd2l0Y2ggKHN0YXRlLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlICdOU1cnOlxyXG4gICAgICAgICAgcmV0dXJuICdBdXRob3Jpc2F0aW9uIG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnUUxEJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgbnVtYmVyJztcclxuICAgICAgICBjYXNlICdTQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1Blcm1pdCBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1RBUyc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1dGhvcml0eSBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1ZJQyc6XHJcbiAgICAgICAgICByZXR1cm4gJ1dhcnJhbnQgbnVtYmVyJztcclxuICAgICAgICBjYXNlICdXQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1dGhvcml0eSBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ0FDVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnTlQnOlxyXG4gICAgICAgICAgcmV0dXJuICdBdXRob3Jpc2F0aW9uIG51bWJlcic7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiAnQXV0aG9yaXNhdGlvbiBudW1iZXInO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFN0YXRlQXV0aG9yaXR5TGFiZWxcIik7XHJcbiAgICAgIHJldHVybiBzdGF0ZU5hbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRFeHRlbXBUVFBOYW1lKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10KSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzWzBdLnRwcE5hbWUpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrKSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrICE9IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSArICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkpID8gJyBbJyArIHNlbGVjdGVkRm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgKyAnXScgKyAnIHggJyA6IFwiXCIpICsgc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eW51bWJlck9mUGFjaykudHJpbSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSkgPyAnIFsnICsgc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSArICddJyA6IFwiXCIpKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZS50cmltKCkgOiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRFeHRlbXBUVFBOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdW5kRGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgcm91bmRfVmFsID0gTWF0aC5yb3VuZCh2YWx1ZSk7XHJcbiAgICAgIGlmIChyb3VuZF9WYWwgPCAwKSB7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFyIHJvdW5kX1ZhbDEgPSByb3VuZF9WYWwudG9TdHJpbmcoKTtcclxuICAgICAgICAvLyByb3VuZF9WYWwgPSBwYXJzZUludChyb3VuZF9WYWwxLDEwKTtcclxuICAgICAgICByZXR1cm4gcm91bmRfVmFsMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyb3VuZERhdGFcIik7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXJ4TWVkaWNhcmVDYXJkKG1lZGljYXJlTnVtYmVyOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBtZWRpY2FyZUNhcmQgPSAnJztcclxuICAgICAgbWVkaWNhcmVDYXJkID0gbWVkaWNhcmVOdW1iZXIuc2xpY2UoMCwgMTApO1xyXG4gICAgICByZXR1cm4gbWVkaWNhcmVDYXJkO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJlcnhNZWRpY2FyZUNhcmRcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXJ4TWVkaWNhcmVJUk4obWVkaWNhcmVOdW1iZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIG1lZGljYXJlQ2FyZElSTiA9ICcnO1xyXG4gICAgICBtZWRpY2FyZUNhcmRJUk4gPSBtZWRpY2FyZU51bWJlci5zbGljZSgtMSk7XHJcbiAgICAgIHJldHVybiBtZWRpY2FyZUNhcmRJUk47XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImVyeE1lZGljYXJlSVJOXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFVudXN1YWxRdHlGbGFnKHNGb3JtdWxhdGlvbjogYW55LCBxdWFudGl0eVZhbDogYW55LCBQcmVzY3JpYmVBUzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJyB8fCBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdycGJzJykge1xyXG4gICAgICAgIGlmIChzRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMgIT0gcXVhbnRpdHlWYWwpIHtcclxuICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0VW51c3VhbFF0eUZsYWdcIik7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zdGF0ZSBuYW1lIGZyb20gYWRkcmVzc1xyXG4gIGdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUoc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHN3aXRjaCAoc3RhdGVOYW1lLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlICduZXcgc291dGggd2FsZXMnOlxyXG4gICAgICAgICAgcmV0dXJuICdOU1cnO1xyXG4gICAgICAgIGNhc2UgJ3F1ZWVuc2xhbmQnOlxyXG4gICAgICAgICAgcmV0dXJuICdRTEQnO1xyXG4gICAgICAgIGNhc2UgJ3NvdXRoIGF1c3RyYWxpYSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1NBJztcclxuICAgICAgICBjYXNlICd0YXNtYW5pYSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1RBUyc7XHJcbiAgICAgICAgY2FzZSAndmljdG9yaWEnOlxyXG4gICAgICAgICAgcmV0dXJuICdWSUMnO1xyXG4gICAgICAgIGNhc2UgJ3dlc3Rlcm4gYXVzdHJhbGlhJzpcclxuICAgICAgICAgIHJldHVybiAnV0EnO1xyXG4gICAgICAgIGNhc2UgJ2F1c3RyYWxpYW4gY2FwaXRhbCB0ZXJyaXRvcnknOlxyXG4gICAgICAgICAgcmV0dXJuICdBQ1QnO1xyXG4gICAgICAgIGNhc2UgJ25vcnRoZXJuIHRlcnJpdG9yeSc6XHJcbiAgICAgICAgICByZXR1cm4gJ05UJztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIHN0YXRlTmFtZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEdlbmRlcihnZW5kZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGdlbmRlclRleHQgPSAnTm90IEF2YWlsYWJsZSc7XHJcbiAgICAgIGdlbmRlclRleHQgPVxyXG4gICAgICAgIGdlbmRlci50b0xvd2VyQ2FzZSgpID09ICdtJyA/ICdNYWxlJyA6IGdlbmRlci50b0xvd2VyQ2FzZSgpID09ICdmJyA/ICdGZW1hbGUnIDogJ05vdCBBdmFpbGFibGUnO1xyXG4gICAgICByZXR1cm4gZ2VuZGVyVGV4dDtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0R2VuZGVyXCIpO1xyXG4gICAgICByZXR1cm4gJ05vdCBBdmFpbGFibGUnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0R2VuZGVyQ29kZShnZW5kZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGdlbmRlckNvZGUgPSAnTm90IEF2YWlsYWJsZSc7XHJcbiAgICAgIGdlbmRlckNvZGUgPSBnZW5kZXIudG9Mb3dlckNhc2UoKSA9PSAnbScgPyAnTScgOiBnZW5kZXIudG9Mb3dlckNhc2UoKSA9PSAnZicgPyAnRicgOiAnVSc7XHJcbiAgICAgIHJldHVybiBnZW5kZXJDb2RlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRHZW5kZXJDb2RlXCIpO1xyXG4gICAgICByZXR1cm4gJ1UnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGFkKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZSA8IDEwID8gJzAnICsgdmFsdWUgOiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicGFkXCIpO1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRPZmZzZXQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIC8vIHZhciBkYXRlID0gdGhpcy5zdGF0ZS5zdGFydERhdGU7XHJcbiAgICAgIHZhciBzaWduID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpID4gMCA/ICctJyA6ICcrJztcclxuICAgICAgdmFyIG9mZnNldCA9IE1hdGguYWJzKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XHJcbiAgICAgIHZhciBob3VycyA9IHRoaXMucGFkKE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApKTtcclxuICAgICAgdmFyIG1pbnV0ZXMgPSB0aGlzLnBhZChvZmZzZXQgJSA2MCk7XHJcbiAgICAgIHJldHVybiBob3VycyArICc6JyArIG1pbnV0ZXM7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldE9mZnNldFwiKTtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaHRtbFRvRm9ybWF0dGVkVGV4dChyZXN0cmljdGlvbjogc3RyaW5nKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gcmVzdHJpY3Rpb24ucmVwbGFjZSgvPGJyIFxcLz4vZywgJyonKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaHRtbFRvRm9ybWF0dGVkVGV4dFwiKTtcclxuICAgICAgcmV0dXJuIHJlc3RyaWN0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93KEJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdyA9IEJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJicmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBQUk5DaGFuZ2UoUFJOOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhQUk4gPSBQUk47XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiUFJOQ2hhbmdlXCIpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGlzQ2hhbmdlQnJhbmROYW1lKGlzQnJhbmROYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSBpc0JyYW5kTmFtZTtcclxuICAgICAgaWYgKCFpc0JyYW5kTmFtZSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpc0NoYW5nZUJyYW5kTmFtZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbmRUb1BoYXJtYWN5Q2hhbmdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5KVxyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VuZFRvUGhhcm1hY3lDaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbmNsdWRlUnRwbU1vZGFsKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuaXNSdHBtTmV4dCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzKSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAmJiBBcnJheS5pc0FycmF5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvblsncnRwbVN0YXRlcyddKSAmJiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uWydydHBtU3RhdGVzJ10gYXMgYW55W10pLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbGV0IGlzUnRwbVN0YXRlcyA9ICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25bJ3J0cG1TdGF0ZXMnXSBhcyBhbnlbXSkuaW5jbHVkZXModGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSk7XHJcbiAgICAgICAgICAgIGlmIChpc1J0cG1TdGF0ZXMpIHtcclxuICAgICAgICAgICAgICB2YXIgZGF0YSA9IFwiVGhlIHNlbGVjdGVkIGRydWcgY29tZXMgdW5kZXIgUmVhbCBUaW1lIFByZXNjcmlwdGlvbiBNb25pdG9yaW5nIChSVFBNKSBpbiBcIiArIHRoaXMuZ2V0U3RhdGVOYW1lRnJvbVN0YXRlQ29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKSArIFwiLiBQbGVhc2UgcmV2aWV3LlwiXHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBkYXRhKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmlzUnRwbU5leHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVEcm9wZG93bigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVEcm9wZG93bigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZURyb3Bkb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpbmNsdWRlUnRwbU1vZGFsXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgRXByZXNjcmlwZVNlbmQoZmxhZzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBpZiAoIXRoaXMuZVByZXNjcmlwdGlvblZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9ICdFJztcclxuICAgICAgICB0aGlzLnNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWJvcnRkaXNhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgdGhpcy5pc2VwcmlzY3JpYmVwcmludCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBpZiAodGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSBcInBic1wiICYmIHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiTlNXXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAxKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5ICYmIGZsYWcgIT0gMikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Db25maXJtUGF0aWVudFBvcHVwKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSAmJiBmbGFnICE9IDIpIHtcclxuICAgICAgICAgICAgdGhpcy5Db25maXJtUGF0aWVudFBvcHVwKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ID8gKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3NlcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXS50b0xvd2VyQ2FzZSgpID09ICd1bnNjaGVkdWxlZCcgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzWzBdIDogJycpIDogXCJcIjtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiBzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09ICdzOCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmlzUGFzc3dvcmRDaGVjaykge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlQ29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgcmV0dXJuO1xyXG4gICAgICAvLyB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIkVwcmVzY3JpcGVTZW5kXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQ29uZmlybVBhdGllbnRQb3B1cCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihDb25maXJtUGF0aWVudENvbnRhY3REZXRhaWxzQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSAnczgnICYmIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5pc1Bhc3N3b3JkQ2hlY2spIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFBhc3N3b3JkQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDIpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSByZXNwb25zZS5pc1ByaW50QXZhaWxhYmxlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IHJlc3BvbnNlLkFkZHJlc3NTZW5kVG9BZGRUeXBlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlciA9IHJlc3BvbnNlLnJ4bnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQgPSByZXNwb25zZS5yeGVtYWlsSWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSByZXNwb25zZS5pc1ByaW50QXZhaWxhYmxlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlID0gcmVzcG9uc2UuQWRkcmVzc1NlbmRUb0FkZFR5cGU7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIgPSByZXNwb25zZS5yeG51bWJlcjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQgPSByZXNwb25zZS5yeGVtYWlsSWQ7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIkNvbmZpcm1QYXRpZW50UG9wdXBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVzY3JpcGVQcmludCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICgodGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnNjcmlwdFR5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKSA9PSAnTScgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc3RhdHVzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKSB8fCAodGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnNjcmlwdFR5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKSA9PSAnRScpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYWJvcnRkaXNhYmxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9ICdNJztcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiU01TXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ID8gKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3NlcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXS50b0xvd2VyQ2FzZSgpID09ICd1bnNjaGVkdWxlZCcgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzWzBdIDogJycpIDogXCJcIjtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiBzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09ICdzOCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmlzUGFzc3dvcmRDaGVjaykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LDIpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VDb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmlwZVByaW50XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5kaWNhdGlvbkF1dGhvcml0eShtYXhRdHlVbml0czogYW55LCBxdWFudGl0eVZhbDogYW55LCByZXBlYXRzOiBhbnksIHJlcGVhdHNWYWw6IGFueSwgaW5kZXg6IGFueSwgcmVzdHJpY3Rpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAncHJlc2NyaWJlZCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMgPSAnJztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB2YXIgdGVtcERpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgdmFyIHJlcGxhY2V2YWx1ZSA9IHRoaXMuaHRtbFRvRm9ybWF0dGVkVGV4dChyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQpO1xyXG4gICAgICB0ZW1wRGl2RWxlbWVudC5pbm5lckhUTUwgPSByZXBsYWNldmFsdWU7XHJcbiAgICAgIHZhciB2YWx1ZSA9IHRlbXBEaXZFbGVtZW50LnRleHRDb250ZW50IHx8IHRlbXBEaXZFbGVtZW50LmlubmVyVGV4dCB8fCAnJztcclxuICAgICAgaWYgKCghdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyA/IHBhcnNlRmxvYXQobWF4UXR5VW5pdHMpIDogMSkgPCBwYXJzZUludChxdWFudGl0eVZhbCkgfHwgcGFyc2VJbnQocmVwZWF0cykgPCBwYXJzZUludChyZXBlYXRzVmFsKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gaW5kZXg7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vID0gJyc7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gaW5kZXg7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgPyByZXN0cmljdGlvbi5zdHJlYW1saW5lZENvZGUgOiAnJztcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaW5kaWNhdGlvbkF1dGhvcml0eVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE1heFF1YW50aXR5KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNUeXBlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZS50b0xvd2VyQ2FzZSgpID09IFwibm9uIHBic1wiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5udW1iZXJPZlBhY2sgKyBcInhcIiArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi51bml0UGVyUGFjaztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm51bWJlck9mUGFjaykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5udW1iZXJPZlBhY2sgIT0gMCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5udW1iZXJPZlBhY2s7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubWF4UXR5VW5pdHMpKVxyXG4gICAgICAgICAgcmV0dXJuICh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnID8gXCIxIHggXCIgOiBcIlwiKSArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0c1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldE1heFF1YW50aXR5XCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERlZmF1bHRRdWFudGl0eSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubnVtYmVyT2ZQYWNrKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm51bWJlck9mUGFjayAhPSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5udW1iZXJPZlBhY2s7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tYXhRdHlVbml0cykpIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgPyBcIjEgeCBcIiA6IFwiXCIpICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldERlZmF1bHRRdWFudGl0eVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25JbnB1dENoYW5nZShuZXdWYWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMgPSBuZXdWYWx1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJvbklucHV0Q2hhbmdlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbnB1dGNoYW5nZUFwcHJvdmFsTm8obmV3VmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSBuZXdWYWx1ZS5yZXBsYWNlKC9bXmEtekEtWiAwLTldL2csIFwiXCIpLnJlcGxhY2UoL1xccysvZywgXCJcIik7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwib25JbnB1dGNoYW5nZUFwcHJvdmFsTm9cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBZGRBdXRoVmFsdWUobnVtOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG51bSkpIHtcclxuICAgICAgICBjb25zdCBhcnJPZkRpZ2l0cyA9IEFycmF5LmZyb20oU3RyaW5nKG51bSksIE51bWJlcik7XHJcbiAgICAgICAgbGV0IHZhbHVlT2ZBdXRob3JpdHlBcnIgPSB0aGlzLmFkZEF1dGhWYWx1ZShhcnJPZkRpZ2l0cyk7XHJcbiAgICAgICAgbGV0IGdldFJlbWFpbmRlclZhbHVlID0gdmFsdWVPZkF1dGhvcml0eUFyciAlIDk7XHJcbiAgICAgICAgbGV0IGFkZFJlbWFpbmRlclZhbHVlQXRMYXN0ID0gJycgKyBudW0gKyBnZXRSZW1haW5kZXJWYWx1ZS50b0ZpeGVkKCk7XHJcbiAgICAgICAgcmV0dXJuIGFkZFJlbWFpbmRlclZhbHVlQXRMYXN0O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEFkZEF1dGhWYWx1ZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRBdXRoVmFsdWUoYXJyT2ZEaWdpdHM6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGFkZGVkVmFsdWUgPSAwO1xyXG4gICAgICBhcnJPZkRpZ2l0cy5tYXAoKG51bTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgYWRkZWRWYWx1ZSA9IG51bSArIGFkZGVkVmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gYWRkZWRWYWx1ZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiYWRkQXV0aFZhbHVlXCIpO1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vdGhlIGJlbG93IGNvZGUgd2lsbCBoaXQgdGhlIGVSWCBhbmQgcmV0dXJuIHRoZSB2YWx1ZSB3aXRoIGJhcmNvZGVcclxuICBwcmVzY3JpYmVNZWQoKSB7XHJcbiAgICB2YXIgYm9keSA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpID09IHRydWUpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzUzLm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzUzLmNvZGUpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzUzLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzUzLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJlXCIpIHtcclxuICAgICAgICB0aGlzLmFib3J0QnRuRmxhZyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IHRydWU7XHJcbiAgICAgIHZhciBwYXRpZW50RGV0YWlscyA9IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHM7XHJcbiAgICAgIHZhciBwaHlzaWNpYW5EZXRhaWxzID0gdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzO1xyXG4gICAgICB2YXIgc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuICAgICAgdmFyIG1lZGljYXJlQ2FyZCA9ICcnO1xyXG4gICAgICBpZiAocGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIpIHtcclxuICAgICAgICB2YXIgbWVkTm8xID0gcGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIucmVwbGFjZSgvIC9nLCAnJyk7XHJcbiAgICAgICAgbWVkTm8xID0gbWVkTm8xLnJlcGxhY2UoL18vZywgJycpO1xyXG4gICAgICAgIG1lZE5vMSA9IG1lZE5vMS5yZXBsYWNlKC8tL2csICcnKTtcclxuICAgICAgICBtZWRpY2FyZUNhcmQgPSBtZWRObzE7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBic01hbnVmYWN0dXJlckNvZGVTZXQgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzTWFudWZhY3R1cmVyQ29kZXMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24ucGJzTWFudWZhY3R1cmVyQ29kZXMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLnBic01hbnVmYWN0dXJlckNvZGVzWzBdKSA/IHNlbGVjdGVkRm9ybXVsYXRpb24ucGJzTWFudWZhY3R1cmVyQ29kZXNbMF0gOiAnJztcclxuICAgICAgbGV0IGNoZWNrQXV0aG9yaXR5Qm94ID0gdGhpcy5zaG93QXV0aG9yaXR5Qm94KHNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpO1xyXG4gICAgICBib2R5ID0ge1xyXG4gICAgICAgIGlzU2hvd0F1dGhvcml0eTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc1Nob3dBdXRob3JpdHksXHJcbiAgICAgICAgcGJzTGlzdEluc3RydWN0aW9uczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zIDogXCJcIixcclxuICAgICAgICBpc0JyYW5kTmFtZTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSxcclxuICAgICAgICBpbmNsdWRlQnJhbmRGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lLFxyXG4gICAgICAgIHJlc3RyaWN0ZWRQYnNTZWxlY3RlZEluZGV4OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkKSA/IHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkICsgMSA6ICcnLFxyXG4gICAgICAgIHJ4SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkKSA/IHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA6ICcnLFxyXG4gICAgICAgIG1BUGF0aWVudElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZlbmRvclBhdGllbnRJZCxcclxuICAgICAgICBtQVBoYXJtYWNpc3RJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52ZW5kb3JQaHlzaWNpYW5JZCxcclxuICAgICAgICBtQUZhY2lsaXR5SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmVuZG9yRmFjaWxpdHlJZCxcclxuICAgICAgICBwcml2YWN5U3RhdGVtZW50OiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PSAnZScgPyAwIDogMSxcclxuICAgICAgICBocGlJOiBwaHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlck51bWJlcjogcGh5c2ljaWFuRGV0YWlscy5wcmVzY3JpYmVyTnVtYmVyLFxyXG4gICAgICAgIHByZXNjcmliZXJBaHByYU51bWJlcjogcGh5c2ljaWFuRGV0YWlscy5wcmVzY3JpYmVyQWhwcmFOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlckdpdmVuTmFtZXM6IHBoeXNpY2lhbkRldGFpbHMuZmlyc3ROYW1lLFxyXG4gICAgICAgIHByZXNjcmliZXJGYW1pbHlOYW1lOiBwaHlzaWNpYW5EZXRhaWxzLmxhc3ROYW1lLFxyXG4gICAgICAgIHByZXNjcmliZXJIb21lTW9iaWxlOiBwaHlzaWNpYW5EZXRhaWxzLm1vYmlsZVBob25lLFxyXG4gICAgICAgIHByZXNjcmliZXJIb21lRW1haWw6IHBoeXNpY2lhbkRldGFpbHMuZW1haWwsXHJcbiAgICAgICAgb3JnSHBpTzogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIgOiAnJyxcclxuICAgICAgICBvcmdOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTmFtZSA6ICcnLFxyXG4gICAgICAgIG9yZ0VtYWlsOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0VtYWlsKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0VtYWlsIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc0xpbmUxOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTEgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzTGluZTI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUyKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMiA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NTdWJ1cmI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1N1YnVyYikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3VidXJiIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc1Bvc3RDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NQb3N0Q29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzUG9zdENvZGUgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzU3RhdGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1N0YXRlKSA/IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3RhdGUpIDogJycsXHJcbiAgICAgICAgaWhpOiBwYXRpZW50RGV0YWlscy5paGlOdW1iZXIsXHJcbiAgICAgICAgbWVkaWNhcmVOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkaWNhcmVDYXJkKSA/IHRoaXMuZXJ4TWVkaWNhcmVDYXJkKG1lZGljYXJlQ2FyZCkgOiAnJyxcclxuICAgICAgICBtZWRpY2FyZUlybjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWRpY2FyZUNhcmQpID8gdGhpcy5lcnhNZWRpY2FyZUlSTihtZWRpY2FyZUNhcmQpIDogJycsXHJcbiAgICAgICAgbWVkaWNhcmVOdW1iZXJFeHBpcnk6IHBhdGllbnREZXRhaWxzLm1lZGljYXJlRXhwaXJ5LFxyXG4gICAgICAgIGRhdGVPZkJpcnRoOiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShwYXRpZW50RGV0YWlscy5kb2IsICd5eXl5LU1NLWRkJyksXHJcbiAgICAgICAgZmFtaWx5TmFtZTogcGF0aWVudERldGFpbHMubGFzdE5hbWUsXHJcbiAgICAgICAgZ2l2ZW5OYW1lczogcGF0aWVudERldGFpbHMuZmlyc3ROYW1lLFxyXG4gICAgICAgIHBhdGllbnRVc2VySWRTdHJpbmc6IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMucGF0aWVudFVzZXJJZCxcclxuICAgICAgICB1c2VySWRTdHJpbmc6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgZ2VuZGVyQ29kZTogdGhpcy5nZXRHZW5kZXJDb2RlKHBhdGllbnREZXRhaWxzLmdlbmRlciksXHJcbiAgICAgICAgaG9tZU1vYmlsZTogcGF0aWVudERldGFpbHMucGhvbmUsXHJcbiAgICAgICAgaG9tZUVtYWlsOiBwYXRpZW50RGV0YWlscy5lbWFpbCxcclxuICAgICAgICBhZGRyZXNzTGluZTE6IHBhdGllbnREZXRhaWxzLmFkZHJlc3MxLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMjogcGF0aWVudERldGFpbHMuYWRkcmVzczIsXHJcbiAgICAgICAgYWRkcmVzc1N1YnVyYjogcGF0aWVudERldGFpbHMuY2l0eSxcclxuICAgICAgICBhZGRyZXNzUG9zdENvZGU6IHBhdGllbnREZXRhaWxzLnBvc3RDb2RlLFxyXG4gICAgICAgIGFkZHJlc3NTdGF0ZTogdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHBhdGllbnREZXRhaWxzLnN0YXRlKSxcclxuICAgICAgICBwcmVzY3JpcHRpb25Xcml0dGVuRGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpIDogXCJcIixcclxuICAgICAgICBmb3JtVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgc3RyZW5ndGg6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubW9sZWN1bGVTdHJlbmd0aCkgPyBzZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGggOiBcIiBcIixcclxuICAgICAgICBkaXJlY3Rpb25zOiB0aGlzLmdldERpcmVjdGlvbnMoKSxcclxuICAgICAgICBicmFuZFN1YnN0aXR1dGVzTm90QWxsb3dlZDogdGhpcy5jb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cgPT0gdHJ1ZSA/IDAgOiAxLFxyXG4gICAgICAgIG1heGltdW1OdW1iZXJPZlJlcGVhdHM6IHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCxcclxuICAgICAgICBtaW5pbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0czogdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSB1bmRlZmluZWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgIT0gXCJcIiA/IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwpIDogXCItMVwiLFxyXG4gICAgICAgIHBhdGllbnRDdGdGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9PSB0cnVlID8gMCA6IDEsXHJcbiAgICAgICAgcGJzSXRlbUNvZGVDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgcGJzSXRlbUNvZGVUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZVRleHQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGVUZXh0IDogXCJcIixcclxuICAgICAgICBwYnNJdGVtTWFudWZhY3R1cmVyOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID8gcGJzTWFudWZhY3R1cmVyQ29kZVNldCA6ICcnLFxyXG4gICAgICAgIHN0YXRlQXV0aG9yaXR5TnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuU3RhdGVBdXRob3JpdHlOdW1iZXIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlci50cmltKCkgOiAnJyxcclxuICAgICAgICByZWFzb25Gb3JUaGVyYXBldXRpY0dvb2Q6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpcHRpb25SZWFzb24pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpcHRpb25SZWFzb24udHJpbSgpIDogJycsXHJcbiAgICAgICAgdW51c3VhbFF0eUZsYWc6IHRoaXMuc2V0VW51c3VhbFF0eUZsYWcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLCB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTKSxcclxuICAgICAgICBxdWFudGl0eU9mVGhlcmFwZXV0aWNHb29kUXVhbnRpdHk6IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpLFxyXG4gICAgICAgIGNvbXBsZXhJbnN0cnVjdGlvbnM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZS50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIGFtdE1wcENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5BTVRNUFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRNUFBDb2RlIDogXCJcIixcclxuICAgICAgICBhbXRNcHBOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0ubXBwTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0ubXBwTmFtZSA6ICcnLFxyXG4gICAgICAgIGFtdFRwcENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5BTVRUUFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRUUFBDb2RlIDogXCJcIixcclxuICAgICAgICBhbXRUcHBOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSA6ICcnLFxyXG4gICAgICAgIGFtdFRwQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LkFNVFRQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UVFBDb2RlIDogXCJcIixcclxuICAgICAgICBhbXRUcE5hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwTmFtZSA6ICcnLFxyXG4gICAgICAgIGFtdENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5hbXRjb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQuYW10Y29kZSA6ICcnLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uTWltc0NvZGU6ICcnLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uTG9jYWxDb2RlOiAnJyxcclxuICAgICAgICAvLyB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbkVhbkNvZGU6IFwiXCIsXHJcbiAgICAgICAgdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25FYW5UZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZS50b0xvd2VyQ2FzZSgpID09ICdub24gcGJzJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiAnJyxcclxuICAgICAgICBwcmVzY3JpYmVyT2NjdXBhdGlvbkNvZGU6IHBoeXNpY2lhbkRldGFpbHMub2NjdXBhdGlvbkNvZGUsXHJcbiAgICAgICAgcHJlc2NyaWJlck9jY3VwYXRpb25UZXh0OiBwaHlzaWNpYW5EZXRhaWxzLm9jY3VwYXRpb25UZXh0LFxyXG4gICAgICAgIHByZXNjcmliZXJQZXJzb25UaXRsZTogcGh5c2ljaWFuRGV0YWlscy5wcmVmaXgsXHJcbiAgICAgICAgcHJlc2NyaWJlclF1YWxpZmljYXRpb25zOiBwaHlzaWNpYW5EZXRhaWxzLnN1ZmZpeCxcclxuICAgICAgICBvcmdQaG9uZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdNb2JpbGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTW9iaWxlIDogJycsXHJcbiAgICAgICAgb3JnRmF4OiAnJyxcclxuICAgICAgICBsb2NhbFN5c3RlbUlEOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRVc2VySWQsXHJcbiAgICAgICAgYWRkcmVzc1NlbmRUb0FkZFR5cGU6IHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUsXHJcbiAgICAgICAgYWRkcmVzc0VtYWlsOiB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQpID8gcGF0aWVudERldGFpbHMuZW1haWwgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCxcclxuICAgICAgICBhZGRyZXNzU21zOiB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlcikgPyBwYXRpZW50RGV0YWlscy5waG9uZSA6IHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIsXHJcbiAgICAgICAgZ2VuZGVyVGV4dDogdGhpcy5nZXRHZW5kZXIocGF0aWVudERldGFpbHMuZ2VuZGVyKSxcclxuICAgICAgICBhZGRyZXNzTGluZTM6ICcnLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbldyaXR0ZW5VdGNUaW1lOiAnMDEtMDEtMTk3MCAwOTowNjowOScsIC8vIHByZXNjcmlwdGlvbldyaXR0ZW5VdGNUaW1lOiBtb21lbnQobmV3IERhdGUoKSkuZm9ybWF0KFwiTU0tREQteXl5eSBoaDptbTpzc1wiKSxcclxuICAgICAgICBwcmVzY3JpcHRpb25Xcml0dGVuVXRjT2Zmc2V0OiB0aGlzLmdldE9mZnNldCgpLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbkV4cGlyZXNWYWx1ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmVuZERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlLCAnTU0vZGQveXl5eScpIDogXCJcIixcclxuICAgICAgICBhY3RpdmVJbmdyZWRpZW50OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiBcIlwiLFxyXG4gICAgICAgIGZvcm1Db2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBmb3JtdWxhOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5mb3JtdWxhKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5mb3JtdWxhIDogXCJcIixcclxuICAgICAgICBhZGRpdGlvbmFsQ29tbWVudHM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3RlcykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgYXNsQ29uc2VudDogMSxcclxuICAgICAgICBwcmVzY3JpcHRpb25Ob3RlRGV0YWlsTm90ZTogdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUudHJpbSgpLFxyXG4gICAgICAgIGR2YU51bWJlcjogcGF0aWVudERldGFpbHMuZHZhTnVtYmVyLFxyXG4gICAgICAgIGR2YVR5cGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFDYXJkVHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFDYXJkVHlwZS50b0xvd2VyQ2FzZSgpICE9ICdub25lJyA/IHBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgOiAnJyxcclxuICAgICAgICBwYnNBcHByb3ZhbE51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vLnRyaW0oKSA6ICcnLCAvL2luZm9ybSB0byBzdGVwaGVuXHJcbiAgICAgICAgcm91dGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZS50cmltKCkgOiAnJyxcclxuICAgICAgICAvL3Byb3ZpZGVyTnVtYmVyOicnLFxyXG4gICAgICAgIHByZXNjcmliZXJUeXBlOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJUeXBlLFxyXG4gICAgICAgIG1lZGljaW5lTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3ROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSA6IFwiXCIsXHJcbiAgICAgICAgYnJhbmROYW1lOiB0aGlzLmdldEJyYW5kTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pLFxyXG4gICAgICAgIGdlbmVyaWNOYW1lOiB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5Jc0V4dGVtcCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiB0aGlzLmdldEV4dGVtcE1QUE5hbWUoKSksXHJcbiAgICAgICAgLy9pdGVtR2VuZXJpY0ludGVudGlvbjogZ2V0SXRlbUdlbmVyaWNJbnRlbnRpb24odGhpcy5zdGF0ZS5sZW1pLHRoaXMuc3RhdGUuaXNCcmFuZE5hbWUsdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyB0cnVlIDogZmFsc2UpLFxyXG4gICAgICAgIGl0ZW1HZW5lcmljSW50ZW50aW9uOiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgIT0gdHJ1ZSA/ICdCJyA6ICdHJyxcclxuICAgICAgICBzY2hlZHVsZU51bWJlcjogdGhpcy5wYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pICE9IFwiXCIgPyB0aGlzLnBheUxvYWRTdGF0ZVNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgOiB0aGlzLmNvbW1vblNlcnZpY2VzLmdldFNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiksXHJcbiAgICAgICAgZG9jdG9yTm90ZXM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3RlcykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgcmVndWxhdGlvbjI0OiB0aGlzLmNvbW1vblNlcnZpY2VzLnJlZ3VsYXRpb24yNCA9PSBmYWxzZSA/IDEgOiAwLFxyXG4gICAgICAgIGlzRXh0ZW1wOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgIT0gbnVsbCA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gMCA6IDEgOiAxLFxyXG4gICAgICAgIC8vIGV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb246IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmIHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5FeHRlbXBvcmFuZW91c0Rlc2NyaXB0aW9uICE9ICcnID8gdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLkV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb24gOiAnJyxcclxuICAgICAgICBleHRlbXBvcmFuZW91c0Rlc2NyaXB0aW9uOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pIDogJycsXHJcbiAgICAgICAgYW5ub3RhdGlvbjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFubm90YXRpb24pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgdW5Vc3VhbERvc2VGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZyA9PSBmYWxzZSA/IDEgOiAwLFxyXG4gICAgICAgIHRyYWRlTmFtZTogdGhpcy5odG1sVG9UZXh0Q29udmVydCh0aGlzLmdldFRyYWRlTmFtZSgpKSxcclxuICAgICAgICAvL3Jlc3RyaWN0aW9uczogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gJycgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVzdHJpY3Rpb25zIDogJycsXHJcbiAgICAgICAgLy8gcHJlc2NyaWJlclBlcnNvblRpdGxlOiBwaHlzaWNpYW5EZXRhaWxzLnByZWZpeCxcclxuICAgICAgICBtYXhpbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0czogJycsXHJcbiAgICAgICAgY29tcGxleElkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCA6IDAsXHJcbiAgICAgICAgdmlzaXRJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52aXNpdElkLFxyXG4gICAgICAgIHNjcmlwdFR5cGU6IHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSxcclxuICAgICAgICBkb3NlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlIDogXCJcIixcclxuICAgICAgICBmcmVxdWVuY3k6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUgOiBcIlwiLFxyXG4gICAgICAgIGZvb2Q6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUgOiBcIlwiLFxyXG4gICAgICAgIHByZXNjcmliZUFzOiB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLFxyXG4gICAgICAgIHBybjogdGhpcy5jb21tb25TZXJ2aWNlcy5yeFBSTiA9PSBmYWxzZSA/IDEgOiAwLFxyXG4gICAgICAgIHNjcmlwdERhdGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSwgJ3l5eXktTU0tZGQnKSA6IFwiXCIsXHJcbiAgICAgICAgc3RhcnREYXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc3RhcnREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuc3RhcnREYXRlLCAnTU0vZGQveXl5eScpIDogXCJcIixcclxuICAgICAgICBwdXJwb3NlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZS50cmltKCksXHJcbiAgICAgICAgcGJzTm90ZXM6IHRoaXMuY29tbW9uU2VydmljZXMucGJzTm90ZXMsXHJcbiAgICAgICAgaXNBY3RpdmU6IDAsXHJcbiAgICAgICAgcHJvZHVjdElkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdElkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQgOiBcIlwiLFxyXG4gICAgICAgIGFtdFRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5mb3JtdWxhKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5mb3JtdWxhIDogXCJcIixcclxuICAgICAgICBxdWFudGl0eU9mVGhlcmFwZXV0aWNHb29kRG9zZVVuaXRDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgcXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZERvc2VVbml0VGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gOiBcIlwiLFxyXG4gICAgICAgIHByZXNjcmliZXJSb2xlQ29kZTogJycsXHJcbiAgICAgICAgcHJlc2NyaWJlclJvbGVUZXh0OiAnJyxcclxuICAgICAgICBvcmdIaWNMb2NhdGlvbklkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0hpY0xvY2F0aW9uSWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnSGljTG9jYXRpb25JZCA6ICcnLFxyXG4gICAgICAgIG9yZ1JvbGVDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVDb2RlIDogJycsXHJcbiAgICAgICAgb3JnUm9sZVRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUm9sZVRleHQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUm9sZVRleHQgOiAnJyxcclxuICAgICAgICBhdXRob3JpdHlBcHByb3ZhbE51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vLnRyaW0oKSA6ICcnLFxyXG4gICAgICAgIGF1dGhvcml0eUFwcHJvdmFsTnVtYmVyRmxhZzogcGFyc2VGbG9hdCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpIDwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkgfHwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMpIDwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsKSA/IDEgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnNbdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWRdLnN0cmVhbWxpbmVkQ29kZSkgJiYgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9uc1t0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZF0uc3RyZWFtbGluZWRDb2RlKSA9PSBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8pID8gMCA6IDEsXHJcbiAgICAgICAgLy8gcGJzQXV0aG9yaXR5UHJlc2NyaXB0aW9uTnVtYmVyOnRoaXMuc3RhdGUuYXBwcm92YWxObyA/IHRoaXMuc3RhdGUuYXBwcm92YWxObyA6IFwiXCIsXHJcbiAgICAgICAgLy8gc3RyZWFtbGluZWRBdXRob3JpdHlBcHByb3ZhbE51bWJlcjogdGhpcy5zdGF0ZS5hcHByb3ZhbE5vXHJcbiAgICAgICAgLy8gICA/IHRoaXMuc3RhdGUuYXBwcm92YWxOb1xyXG4gICAgICAgIC8vICAgOiBcIlwiLFxyXG4gICAgICAgIC8vIHBic0F1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiBcIlwiLFxyXG4gICAgICAgIC8vYmFyY29kZVxyXG4gICAgICAgIC8vc2NyaXB0TnVtYmVyOiBcIlwiLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLFxyXG4gICAgICAgIGVvcERpc3BsYXlOYW1lOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PSBcImVcIiA/IHRoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUpIDogdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSxcclxuICAgICAgICBpdGVtU3RyZW5ndGhYbWw6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5JdGVtU3RyZW5ndGhYbWwpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkl0ZW1TdHJlbmd0aFhtbCA6IFwiIFwiLFxyXG4gICAgICAgIC8vYXV0aG9yaXR5VmFsdWVcclxuICAgICAgICBwYnNEdmFBdXRob3JpdHlOdW1iZXI6IGNoZWNrQXV0aG9yaXR5Qm94ID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gOiAwLFxyXG4gICAgICAgIHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZTogdGhpcy5odG1sVG9UZXh0Q29udmVydCh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLC8vdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUpLFxyXG4gICAgICAgIHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRGb3VyOiB0aGlzLnNob3dBdXRob3JpdHlCb3godGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucywgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUywgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSwgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT09IFwicGJzXCIgJiYgdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpLnRvVXBwZXJDYXNlKCkgPT0gXCJOU1dcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PT0gXCJlXCIgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRGb3VyIDogJycsXHJcbiAgICAgICAgdW5saXN0ZWRJdGVtUmVwYXRBdXRob3JpdHk6IHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSA9PSB0cnVlID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgIGlzUHJpbnRBdmFpbGFibGU6IHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSxcclxuICAgICAgICBwcmVzY3JpYmVkSXRlbVJlc2VydmVkT25lOiB0aGlzLmNvbW1vblNlcnZpY2VzLmdldFNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgPyB0aGlzLm51bWJlclRvV29yZChwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSkgOiAnJyxcclxuICAgICAgICBteVNMQ29uc2VudDogdGhpcy5jb21tb25TZXJ2aWNlcy5teVNMQ29uc2VudCxcclxuICAgICAgICBzZW5kVG9QaGFybWFjeTogdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSxcclxuICAgICAgICBzZW5kVG9QaGFybWFjeVZhbHVlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWUsXHJcbiAgICAgICAgZW1lcmdlbmN5U3VwcGx5OiB0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSxcclxuICAgICAgICBtb2xlY3VsZVN0cmVuZ3RoR3JpZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1vbGVjdWxlU3RyZW5ndGhHcmlkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoR3JpZCA6ICcnLFxyXG4gICAgICAgIGVudGl0eUlkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuZW50aXR5SWQsXHJcbiAgICAgICAgaXNQcmVzY3JpYmVBbmRQcmludDogdGhpcy5pc2VwcmlzY3JpYmVwcmludCxcclxuICAgICAgICBhbXRDb2RlU3lzdGVtOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10Q29kZVN5c3RlbSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Q29kZVN5c3RlbSA6IFwiXCIsXHJcbiAgICAgICAgYW10VmVyc2lvbjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdFZlcnNpb24pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFZlcnNpb24gOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5V2l0aFVuaXQ6IHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1heFF0eVVuaXRzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyA6IFwiXCIsXHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWRcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5Qb3N0KGJvZHksIGNvbmZpZy5QSFlTSUNJQU4uUFJFU0NSSUJFKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pc1ByZXNjcmliZSA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSA9IGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGU7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZyA9IGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlU3VjY2VzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gcmVzLnJlc3BvbnNlX21lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZWRhdGEgPSByZXM7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0RW5kRGF0ZUFoZWFkKCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSAhPSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocmVzLmlzQW9ydCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWJvcnRCdG5GbGFnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCByZXMucmVzcG9uc2VfbWVzc2FnZSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfbWVzc2FnZSAhPSBudWxsICYmIHJlcy5yZXNwb25zZV9tZXNzYWdlICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSA9IHJlcy5lcnJvcl9jb2RlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gcmVzLnJlc3BvbnNlX21lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSA9IGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2cgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCh0aGlzLnJlc3BvbnNlRGF0YS5pc0Fib3J0KSB8fCAhdGhpcy5hYm9ydGRpc2FibGUpXHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1Jlc3BvbnNlTWVzc2FnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXNQcmVzY3JpYmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2cgPSBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3I7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlXHJcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLmlzQWJvcnQgfHwgIXRoaXMuYWJvcnRkaXNhYmxlKVxyXG4gICAgICAgICAgdGhpcy5zaG93UmVzcG9uc2VNZXNzYWdlKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmFib3J0QnRuRmxhZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgTXByZXNjcmliZU1lZChpZDogbnVtYmVyKSB7XHJcbiAgICB2YXIgYm9keSA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGlkID09IDEpIHtcclxuICAgICAgICBpZiAodGhpcy5lUHJlc2NyaXB0aW9uVmFsaWRhdGlvbigpKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChpZCA9PSAyKSB7XHJcbiAgICAgICAgaWYgKCh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdNJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpICE9ICdkcmFmdCcpIHx8ICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdFJykpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IHRydWU7XHJcbiAgICAgIGlmIChpZCA9PSAxKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gXCJFXCI7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiU01TXCI7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gXCJNXCI7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpID09IHRydWUpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykpIHtcclxuICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzUzLm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzUzLmNvZGUpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzUzLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzUzLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgICAgdmFyIHBhdGllbnREZXRhaWxzID0gdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgdmFyIHBoeXNpY2lhbkRldGFpbHMgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICAgIHZhciBzZWxlY3RlZEZvcm11bGF0aW9uID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICB2YXIgbWVkaWNhcmVDYXJkID0gJyc7XHJcbiAgICAgIGlmIChwYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlcikge1xyXG4gICAgICAgIHZhciBtZWRObzEgPSBwYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlci5yZXBsYWNlKC8gL2csICcnKTtcclxuICAgICAgICBtZWRObzEgPSBtZWRObzEucmVwbGFjZSgvXy9nLCAnJyk7XHJcbiAgICAgICAgbWVkTm8xID0gbWVkTm8xLnJlcGxhY2UoLy0vZywgJycpO1xyXG4gICAgICAgIG1lZGljYXJlQ2FyZCA9IG1lZE5vMTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgcGJzTWFudWZhY3R1cmVyQ29kZVNldCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzTWFudWZhY3R1cmVyQ29kZXMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24ucGJzTWFudWZhY3R1cmVyQ29kZXMubGVuZ3RoICE9IDAgPyBzZWxlY3RlZEZvcm11bGF0aW9uLnBic01hbnVmYWN0dXJlckNvZGVzWzBdIDogJyc7XHJcblxyXG4gICAgICBsZXQgY2hlY2tBdXRob3JpdHlCb3ggPSB0aGlzLnNob3dBdXRob3JpdHlCb3goXHJcbiAgICAgICAgc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsXHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyxcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LFxyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQVxyXG4gICAgICApO1xyXG4gICAgICBib2R5ID0ge1xyXG4gICAgICAgIHJ4SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkKSA/IHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA6ICcnLFxyXG4gICAgICAgIGlzU2hvd0F1dGhvcml0eTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc1Nob3dBdXRob3JpdHksXHJcbiAgICAgICAgcGJzTGlzdEluc3RydWN0aW9uczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zIDogXCJcIixcclxuICAgICAgICBpc0JyYW5kTmFtZTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSxcclxuICAgICAgICBpbmNsdWRlQnJhbmRGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lLFxyXG4gICAgICAgIHJlc3RyaWN0ZWRQYnNTZWxlY3RlZEluZGV4OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkKSA/IHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkICsgMSA6IFwiXCIsXHJcbiAgICAgICAgbUFQYXRpZW50SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmVuZG9yUGF0aWVudElkLFxyXG4gICAgICAgIG1BUGhhcm1hY2lzdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZlbmRvclBoeXNpY2lhbklkLFxyXG4gICAgICAgIG1BRmFjaWxpdHlJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52ZW5kb3JGYWNpbGl0eUlkLFxyXG4gICAgICAgIHByaXZhY3lTdGF0ZW1lbnQ6IHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZS50b0xvd2VyQ2FzZSgpID09ICdlJyA/IDAgOiAxLFxyXG4gICAgICAgIGhwaUk6IHBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyTnVtYmVyOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlckFocHJhTnVtYmVyOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJBaHByYU51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyR2l2ZW5OYW1lczogcGh5c2ljaWFuRGV0YWlscy5maXJzdE5hbWUsXHJcbiAgICAgICAgcHJlc2NyaWJlckZhbWlseU5hbWU6IHBoeXNpY2lhbkRldGFpbHMubGFzdE5hbWUsXHJcbiAgICAgICAgcHJlc2NyaWJlckhvbWVNb2JpbGU6IHBoeXNpY2lhbkRldGFpbHMubW9iaWxlUGhvbmUsXHJcbiAgICAgICAgcHJlc2NyaWJlckhvbWVFbWFpbDogcGh5c2ljaWFuRGV0YWlscy5lbWFpbCxcclxuICAgICAgICBvcmdIcGlPOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlciA6ICcnLFxyXG4gICAgICAgIG9yZ05hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdOYW1lIDogJycsXHJcbiAgICAgICAgb3JnRW1haWw6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnRW1haWwpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnRW1haWwgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzTGluZTE6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUxKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMSA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NMaW5lMjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUyIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc1N1YnVyYjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3VidXJiKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdWJ1cmIgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzUG9zdENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1Bvc3RDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NQb3N0Q29kZSA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3RhdGUpID8gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZSkgOiAnJyxcclxuICAgICAgICBpaGk6IHBhdGllbnREZXRhaWxzLmloaU51bWJlcixcclxuICAgICAgICBtZWRpY2FyZU51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWRpY2FyZUNhcmQpID8gdGhpcy5lcnhNZWRpY2FyZUNhcmQobWVkaWNhcmVDYXJkKSA6ICcnLFxyXG4gICAgICAgIG1lZGljYXJlSXJuOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZGljYXJlQ2FyZCkgPyB0aGlzLmVyeE1lZGljYXJlSVJOKG1lZGljYXJlQ2FyZCkgOiAnJyxcclxuICAgICAgICBtZWRpY2FyZU51bWJlckV4cGlyeTogcGF0aWVudERldGFpbHMubWVkaWNhcmVFeHBpcnksXHJcbiAgICAgICAgZGF0ZU9mQmlydGg6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHBhdGllbnREZXRhaWxzLmRvYiwgJ3l5eXktTU0tZGQnKSxcclxuICAgICAgICBmYW1pbHlOYW1lOiBwYXRpZW50RGV0YWlscy5sYXN0TmFtZSxcclxuICAgICAgICBnaXZlbk5hbWVzOiBwYXRpZW50RGV0YWlscy5maXJzdE5hbWUsXHJcbiAgICAgICAgcGF0aWVudFVzZXJJZFN0cmluZzogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkLFxyXG4gICAgICAgIHVzZXJJZFN0cmluZzogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICBnZW5kZXJDb2RlOiB0aGlzLmdldEdlbmRlckNvZGUocGF0aWVudERldGFpbHMuZ2VuZGVyKSxcclxuICAgICAgICBob21lTW9iaWxlOiBwYXRpZW50RGV0YWlscy5waG9uZSxcclxuICAgICAgICBob21lRW1haWw6IHBhdGllbnREZXRhaWxzLmVtYWlsLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMTogcGF0aWVudERldGFpbHMuYWRkcmVzczEsXHJcbiAgICAgICAgYWRkcmVzc0xpbmUyOiBwYXRpZW50RGV0YWlscy5hZGRyZXNzMixcclxuICAgICAgICBhZGRyZXNzU3VidXJiOiBwYXRpZW50RGV0YWlscy5jaXR5LFxyXG4gICAgICAgIGFkZHJlc3NQb3N0Q29kZTogcGF0aWVudERldGFpbHMucG9zdENvZGUsXHJcbiAgICAgICAgYWRkcmVzc1N0YXRlOiB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUocGF0aWVudERldGFpbHMuc3RhdGUpLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbldyaXR0ZW5EYXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUsICd5eXl5LU1NLWRkJykgOiBcIlwiLFxyXG4gICAgICAgIGZvcm1UZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBzdHJlbmd0aDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5tb2xlY3VsZVN0cmVuZ3RoKSA/IHNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCA6IFwiIFwiLFxyXG4gICAgICAgIGRpcmVjdGlvbnM6IHRoaXMuZ2V0RGlyZWN0aW9ucygpLFxyXG4gICAgICAgIGJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd2VkOiB0aGlzLmNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdyA9PSB0cnVlID8gMCA6IDEsXHJcbiAgICAgICAgbWF4aW11bU51bWJlck9mUmVwZWF0czogdGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLFxyXG4gICAgICAgIG1pbmltdW1JbnRlcnZhbEJldHdlZW5SZXBlYXRzOiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSBcIlwiID8gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgOiBcIi0xXCIsXHJcbiAgICAgICAgcGF0aWVudEN0Z0ZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50ID09IHRydWUgPyAwIDogMSxcclxuICAgICAgICBwYnNJdGVtQ29kZUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNDb2RlIDogXCJcIixcclxuICAgICAgICBwYnNJdGVtQ29kZVRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlVGV4dCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZVRleHQgOiBcIlwiLFxyXG4gICAgICAgIHBic0l0ZW1NYW51ZmFjdHVyZXI6IHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPyBwYnNNYW51ZmFjdHVyZXJDb2RlU2V0IDogJycsXHJcbiAgICAgICAgc3RhdGVBdXRob3JpdHlOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlcikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLlN0YXRlQXV0aG9yaXR5TnVtYmVyLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgcmVhc29uRm9yVGhlcmFwZXV0aWNHb29kOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uKSA/IHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgdW51c3VhbFF0eUZsYWc6IHRoaXMuc2V0VW51c3VhbFF0eUZsYWcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLCB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTKSxcclxuICAgICAgICBxdWFudGl0eU9mVGhlcmFwZXV0aWNHb29kUXVhbnRpdHk6IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpLFxyXG4gICAgICAgIGNvbXBsZXhJbnN0cnVjdGlvbnM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZS50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIGFtdE1wcENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5BTVRNUFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRNUFBDb2RlIDogXCJcIixcclxuICAgICAgICBhbXRNcHBOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwcy5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRUcHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UVFBQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UVFBQQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgYW10VHBwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10VHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UVFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRUUENvZGUgOiBcIlwiLFxyXG4gICAgICAgIGFtdFRwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQuYW10Y29kZSA6ICcnLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uTWltc0NvZGU6ICcnLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uTG9jYWxDb2RlOiAnJyxcclxuICAgICAgICAvLyB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbkVhbkNvZGU6IFwiXCIsXHJcbiAgICAgICAgdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25FYW5UZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzVHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSAnbm9uIHBicycgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogJycsXHJcbiAgICAgICAgcHJlc2NyaWJlck9jY3VwYXRpb25Db2RlOiBwaHlzaWNpYW5EZXRhaWxzLm9jY3VwYXRpb25Db2RlLFxyXG4gICAgICAgIHByZXNjcmliZXJPY2N1cGF0aW9uVGV4dDogcGh5c2ljaWFuRGV0YWlscy5vY2N1cGF0aW9uVGV4dCxcclxuICAgICAgICBwcmVzY3JpYmVyUGVyc29uVGl0bGU6IHBoeXNpY2lhbkRldGFpbHMucHJlZml4LFxyXG4gICAgICAgIHByZXNjcmliZXJRdWFsaWZpY2F0aW9uczogcGh5c2ljaWFuRGV0YWlscy5zdWZmaXgsXHJcbiAgICAgICAgb3JnUGhvbmU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTW9iaWxlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ01vYmlsZSA6ICcnLFxyXG4gICAgICAgIG9yZ0ZheDogJycsXHJcbiAgICAgICAgbG9jYWxTeXN0ZW1JRDogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkLFxyXG4gICAgICAgIGFkZHJlc3NTZW5kVG9BZGRUeXBlOiB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlLFxyXG4gICAgICAgIGFkZHJlc3NFbWFpbDogdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkKSA/IHBhdGllbnREZXRhaWxzLmVtYWlsIDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQsXHJcbiAgICAgICAgYWRkcmVzc1NtczogdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIpID8gcGF0aWVudERldGFpbHMucGhvbmUgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyLFxyXG4gICAgICAgIGdlbmRlclRleHQ6IHRoaXMuZ2V0R2VuZGVyKHBhdGllbnREZXRhaWxzLmdlbmRlciksXHJcbiAgICAgICAgYWRkcmVzc0xpbmUzOiAnJyxcclxuICAgICAgICBwcmVzY3JpcHRpb25Xcml0dGVuVXRjVGltZTogJzAxLTAxLTE5NzAgMDk6MDY6MDknLCAvLyBwcmVzY3JpcHRpb25Xcml0dGVuVXRjVGltZTogbW9tZW50KG5ldyBEYXRlKCkpLmZvcm1hdChcIk1NLURELXl5eXkgaGg6bW06c3NcIiksXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uV3JpdHRlblV0Y09mZnNldDogdGhpcy5nZXRPZmZzZXQoKSxcclxuICAgICAgICBwcmVzY3JpcHRpb25FeHBpcmVzVmFsdWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSwgJ01NL2RkL3l5eXknKSA6IFwiXCIsXHJcbiAgICAgICAgYWN0aXZlSW5ncmVkaWVudDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IFwiXCIsXHJcbiAgICAgICAgZm9ybUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBmb3JtdWxhOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZm9ybXVsYSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSA6IFwiXCIsXHJcbiAgICAgICAgYWRkaXRpb25hbENvbW1lbnRzOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3Rlcy50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIGFzbENvbnNlbnQ6IDEsXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uTm90ZURldGFpbE5vdGU6IHRoaXMuY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlLFxyXG4gICAgICAgIGR2YU51bWJlcjogcGF0aWVudERldGFpbHMuZHZhTnVtYmVyLFxyXG4gICAgICAgIGR2YVR5cGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUpICYmIHBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ25vbmUnID8gcGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSA6ICcnLFxyXG4gICAgICAgIHBic0FwcHJvdmFsTnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gOiAnJyxcclxuICAgICAgICByb3V0ZTogdGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlICE9ICctJyA/IHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSA6ICcnLFxyXG4gICAgICAgIC8vcHJvdmlkZXJOdW1iZXI6JycsXHJcbiAgICAgICAgcHJlc2NyaWJlclR5cGU6IHBoeXNpY2lhbkRldGFpbHMucHJlc2NyaWJlclR5cGUsXHJcbiAgICAgICAgbWVkaWNpbmVOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIixcclxuICAgICAgICBicmFuZE5hbWU6IHRoaXMuZ2V0QnJhbmROYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiksXHJcbiAgICAgICAgZ2VuZXJpY05hbWU6IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LklzRXh0ZW1wKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IHRoaXMuZ2V0RXh0ZW1wTVBQTmFtZSgpKSxcclxuICAgICAgICAvL2l0ZW1HZW5lcmljSW50ZW50aW9uOiBnZXRJdGVtR2VuZXJpY0ludGVudGlvbih0aGlzLnN0YXRlLmxlbWksdGhpcy5zdGF0ZS5pc0JyYW5kTmFtZSx0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSksXHJcbiAgICAgICAgaXRlbUdlbmVyaWNJbnRlbnRpb246IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCAhPSB0cnVlID8gJ0InIDogJ0cnLFxyXG4gICAgICAgIHNjaGVkdWxlTnVtYmVyOiB0aGlzLnBheUxvYWRTdGF0ZVNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gXCJcIiA/IHRoaXMucGF5TG9hZFN0YXRlU2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSA6IHRoaXMuY29tbW9uU2VydmljZXMuZ2V0U2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSxcclxuICAgICAgICBkb2N0b3JOb3RlczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMudHJpbSgpIDogXCJcIixcclxuICAgICAgICByZWd1bGF0aW9uMjQ6IHRoaXMuY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0ID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgaXNFeHRlbXA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCAhPSBudWxsID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyAwIDogMSA6IDEsXHJcbiAgICAgICAgLy8gZXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbjogdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLkV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb24gIT0gJycgPyB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uRXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbiA6ICcnLFxyXG4gICAgICAgIGV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb246IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgOiAnJyxcclxuICAgICAgICBhbm5vdGF0aW9uOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYW5ub3RhdGlvbikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFubm90YXRpb24udHJpbSgpIDogXCJcIixcclxuICAgICAgICB1blVzdWFsRG9zZUZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMudW5Vc3VhbERvc2VGbGFnID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgdHJhZGVOYW1lOiB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KHRoaXMuZ2V0VHJhZGVOYW1lKCkpLFxyXG4gICAgICAgIC8vcmVzdHJpY3Rpb25zOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSAnJyA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXN0cmljdGlvbnMgOiAnJyxcclxuICAgICAgICAvLyBwcmVzY3JpYmVyUGVyc29uVGl0bGU6IHBoeXNpY2lhbkRldGFpbHMucHJlZml4LFxyXG4gICAgICAgIG1heGltdW1JbnRlcnZhbEJldHdlZW5SZXBlYXRzOiAnJyxcclxuICAgICAgICBjb21wbGV4SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkIDogMCxcclxuICAgICAgICB2aXNpdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZpc2l0SWQsXHJcbiAgICAgICAgc2NyaXB0VHlwZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLFxyXG4gICAgICAgIGRvc2U6IHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlLFxyXG4gICAgICAgIGZyZXF1ZW5jeTogdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUsXHJcbiAgICAgICAgZm9vZDogdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUsXHJcbiAgICAgICAgcHJlc2NyaWJlQXM6IHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsXHJcbiAgICAgICAgcHJuOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4UFJOID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgc2NyaXB0RGF0ZTogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpLFxyXG4gICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUsICdNTS9kZC95eXl5JyksXHJcbiAgICAgICAgcHVycG9zZTogdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUudHJpbSgpLFxyXG4gICAgICAgIHBic05vdGVzOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBic05vdGVzLFxyXG4gICAgICAgIGlzQWN0aXZlOiAwLFxyXG4gICAgICAgIHByb2R1Y3RJZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3RJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkIDogXCJcIixcclxuICAgICAgICBhbXRUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZm9ybXVsYSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSA6IFwiXCIsXHJcbiAgICAgICAgcXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZERvc2VVbml0Q29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5T2ZUaGVyYXBldXRpY0dvb2REb3NlVW5pdFRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBwcmVzY3JpYmVyUm9sZUNvZGU6ICcnLFxyXG4gICAgICAgIHByZXNjcmliZXJSb2xlVGV4dDogJycsXHJcbiAgICAgICAgb3JnSGljTG9jYXRpb25JZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdIaWNMb2NhdGlvbklkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0hpY0xvY2F0aW9uSWQgOiAnJyxcclxuICAgICAgICBvcmdSb2xlQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlQ29kZSA6ICcnLFxyXG4gICAgICAgIG9yZ1JvbGVUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVUZXh0KSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVUZXh0IDogJycsXHJcbiAgICAgICAgYXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxOby50cmltKCkgOiAnJyxcclxuICAgICAgICBhdXRob3JpdHlBcHByb3ZhbE51bWJlckZsYWc6IHBhcnNlRmxvYXQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzKSA8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIHx8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzKSA8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkgPyAxIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zW3RoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkXS5zdHJlYW1saW5lZENvZGUpICYmIHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnNbdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWRdLnN0cmVhbWxpbmVkQ29kZSkgPT0gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IDAgOiAxLFxyXG4gICAgICAgIHN0YXR1czogXCJEcmFmdFwiLFxyXG4gICAgICAgIC8vIHBic0F1dGhvcml0eVByZXNjcmlwdGlvbk51bWJlcjp0aGlzLnN0YXRlLmFwcHJvdmFsTm8gPyB0aGlzLnN0YXRlLmFwcHJvdmFsTm8gOiBcIlwiLFxyXG4gICAgICAgIC8vIHN0cmVhbWxpbmVkQXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6IHRoaXMuc3RhdGUuYXBwcm92YWxObz8gdGhpcy5zdGF0ZS5hcHByb3ZhbE5vOiBcIlwiLFxyXG4gICAgICAgIC8vIHBic0F1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiBcIlwiLFxyXG4gICAgICAgIC8vYmFyY29kZVxyXG4gICAgICAgIC8vc2NyaXB0TnVtYmVyOiBcIlwiLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLFxyXG4gICAgICAgIGVvcERpc3BsYXlOYW1lOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PSBcImVcIiA/IHRoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUpIDogdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSxcclxuICAgICAgICBpdGVtU3RyZW5ndGhYbWw6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5JdGVtU3RyZW5ndGhYbWwpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkl0ZW1TdHJlbmd0aFhtbCA6IFwiIFwiLFxyXG4gICAgICAgIC8vYXV0aG9yaXR5VmFsdWVcclxuICAgICAgICBwYnNEdmFBdXRob3JpdHlOdW1iZXI6IGNoZWNrQXV0aG9yaXR5Qm94ID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gOiAwLFxyXG4gICAgICAgIHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZTogdGhpcy5odG1sVG9UZXh0Q29udmVydCh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLC8vdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUpLFxyXG4gICAgICAgIHVubGlzdGVkSXRlbVJlcGF0QXV0aG9yaXR5OiB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgICBwcmVzY3JpYmVkSXRlbVJlc2VydmVkT25lOiB0aGlzLmNvbW1vblNlcnZpY2VzLmdldFNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgPyB0aGlzLm51bWJlclRvV29yZChwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSkgOiAnJyxcclxuICAgICAgICBteVNMQ29uc2VudDogdGhpcy5jb21tb25TZXJ2aWNlcy5teVNMQ29uc2VudCxcclxuICAgICAgICBzZW5kVG9QaGFybWFjeTogdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSxcclxuICAgICAgICBzZW5kVG9QaGFybWFjeVZhbHVlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWUsXHJcbiAgICAgICAgZW1lcmdlbmN5U3VwcGx5OiB0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSxcclxuICAgICAgICBtb2xlY3VsZVN0cmVuZ3RoR3JpZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1vbGVjdWxlU3RyZW5ndGhHcmlkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoR3JpZCA6ICcnLFxyXG4gICAgICAgIGVudGl0eUlkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuZW50aXR5SWQsXHJcbiAgICAgICAgaXNQcmVzY3JpYmVBbmRQcmludDogdGhpcy5pc2VwcmlzY3JpYmVwcmludCxcclxuICAgICAgICBhbXRDb2RlU3lzdGVtOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10Q29kZVN5c3RlbSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Q29kZVN5c3RlbSA6IFwiXCIsXHJcbiAgICAgICAgYW10VmVyc2lvbjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdFZlcnNpb24pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFZlcnNpb24gOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5V2l0aFVuaXQ6IHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1heFF0eVVuaXRzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyA6IFwiXCIsXHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWRcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLlBvc3QoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5NX1BSRVNDUklCRSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCByZXMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9tZXNzYWdlICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX21lc3NhZ2UgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJNcHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTXByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUb29sVGlwKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50b29sdGlwLCAnX19yZWFjdF9jb21wb25lbnRfdG9vbHRpcCcpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ3R5cGUtZGFyaycpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ3BsYWNlLWxlZnQnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd6LWluZGV4JywgJzk5OTk5OTk5Jyk7XHJcbiAgICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLnZpZXdSZWZDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMubXlUZW1wbGF0ZSk7XHJcbiAgICAgIHZpZXdSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBjb25zdCB0b29sdGlwQ29udGVudCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodmlld1JlZi5yb290Tm9kZXMpICYmIHZpZXdSZWYucm9vdE5vZGVzLmxlbmd0aCAhPSAwID8gdmlld1JlZi5yb290Tm9kZXNbMF0gOiBcIlwiO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcCwgdG9vbHRpcENvbnRlbnQpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy50b29sdGlwKTtcclxuICAgICAgdmFyIHRvb2w6IGFueSA9IHRoaXMudG9vbHRpcDtcclxuICAgICAgdmFyIGxlZnQgPSBldmVudC54IC0gKHRvb2wuY2xpZW50V2lkdGggKyAxNSk7XHJcbiAgICAgIHZhciBoZWlnaHR2YWx1ZSA9IGV2ZW50LnkgLSAodG9vbC5jbGllbnRIZWlnaHQgLyAyKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICdsZWZ0JywgbGVmdCArICdweCcpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3RvcCcsIGhlaWdodHZhbHVlICsgJ3B4Jyk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNyZWF0ZVRvb2xUaXBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93dG9vbHRpcChsZW1pcHJvZHVjdDogYm9vbGVhbiwgYnJhbmR0b29sdGlwOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChsZW1pcHJvZHVjdCkge1xyXG4gICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXAsICdsZW1pLXRvb2x0aXAnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ3R5cGUtZGFyaycpO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldFJlY3QgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgY29uc3Qgdmlld1JlZiA9IHRoaXMudmlld1JlZkNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoYnJhbmR0b29sdGlwKTtcclxuICAgICAgICB2aWV3UmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB2YXIgbXlkb206IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYnJhbmRuYW1ldG9vbHRpcFwiKTtcclxuICAgICAgICB2YXIgcmVjdCA9IG15ZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IHRvb2x0aXBDb250ZW50ID0gdmlld1JlZi5yb290Tm9kZXNbMF07XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXAsIHRvb2x0aXBDb250ZW50KTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy50b29sdGlwKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ2xlZnQnLCByZWN0LmxlZnQgKyAncHgnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3RvcCcsIHJlY3QudG9wIC0gbXlkb20ub2Zmc2V0SGVpZ2h0IC0gMTAgKyAncHgnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3dpZHRoJywgbXlkb20uY2xpZW50V2lkdGggKyAncHgnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzaG93dG9vbHRpcFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vZWRpdCByeFxyXG4gIHNldEVkaXRWYWx1ZXMocnhMaXN0OiBhbnkpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgcnhMaXN0LnBic0l0ZW1Db2RlQ29kZSA9IHJ4TGlzdC5wYnNJdGVtQ29kZUNvZGUgIT0gbnVsbCA/IHJ4TGlzdC5wYnNJdGVtQ29kZUNvZGUgOiBcIlwiO1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICBwcm9kdWN0SWQ6IHJ4TGlzdC5wcm9kdWN0SWQsXHJcbiAgICAgICAgcGJzQ29kZTogcnhMaXN0LnBic0l0ZW1Db2RlQ29kZSxcclxuICAgICAgICByeElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWRcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLkdFVF9NRURfREVUX0JZX0lEICsgXCI/cHJvZHVjdElkPVwiICsgcnhMaXN0LnByb2R1Y3RJZCArIFwiJnBic0NvZGU9XCIgKyAodGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgPyByeExpc3QucGJzSXRlbUNvZGVDb2RlIDogXCJcIikgKyBcIiZyeElkPVwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHZhciBlZGl0UmVzdHJpY3RGbGFnID0gKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0Py5zdGF0dXMpICYmIHJ4TGlzdC5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSBcImRyYWZ0XCIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKGVkaXRSZXN0cmljdEZsYWcpIHtcclxuICAgICAgICAgICAgICB2YXIgTWVkID0gW107XHJcbiAgICAgICAgICAgICAgTWVkLnB1c2gocmVzLnJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gTWVkO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gTWVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0UmVzdHJpY3RlZE1lZGljaW5lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RGb3JtdWxhdGlvbihyZXMucmVzcG9uc2UsIDApO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5tZWRpU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMucnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSByeExpc3QucXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZFF1YW50aXR5O1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSByeExpc3QubWF4aW11bU51bWJlck9mUmVwZWF0cyA/IHJ4TGlzdC5tYXhpbXVtTnVtYmVyT2ZSZXBlYXRzIDogXCIwXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlID0gcnhMaXN0LmRvc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlID0gcnhMaXN0LmZyZXF1ZW5jeSA/IHJ4TGlzdC5mcmVxdWVuY3kgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSA9IHJ4TGlzdC5mb29kID8gcnhMaXN0LmZvb2QgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QuY29tcGxleEluc3RydWN0aW9ucykgJiYgdGhpcy5pbnN0cnVjdGlvbkRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5pbnN0cnVjdGlvbkRhdGEuZmlsdGVyKCgoeDogeyB0ZXh0OiBhbnk7IH0pID0+IHgudGV4dCA9PSByeExpc3QuY29tcGxleEluc3RydWN0aW9ucykpO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGEpICYmIGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gcnhMaXN0LmNvbXBsZXhJbnN0cnVjdGlvbnM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGFbMF0uZGVzY3JpcHRpb24pID8gZGF0YVswXS5kZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gcnhMaXN0LmNvbXBsZXhJbnN0cnVjdGlvbnM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5jb21wbGV4SW5zdHJ1Y3Rpb25zKSA/IHJ4TGlzdC5jb21wbGV4SW5zdHJ1Y3Rpb25zIDogXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gcnhMaXN0LmNvbXBsZXhJZCA/IHJ4TGlzdC5jb21wbGV4SWQgOiAwO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSByeExpc3Qucm91dGUgPyByeExpc3Qucm91dGUgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4UFJOID0gcnhMaXN0LnBybiA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gcnhMaXN0LnByZXNjcmliZUFzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5zY3JpcHREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHJ4TGlzdC5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5zdGFydERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0ocnhMaXN0LnN0YXJ0RGF0ZSwgJ3l5eXktTU0tZGQnKSA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHJ4TGlzdC5wcmVzY3JpcHRpb25FeHBpcmVzVmFsdWUsICd5eXl5LU1NLWRkJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPSByeExpc3QubWluaW11bUludGVydmFsQmV0d2VlblJlcGVhdHMgPT0gLTEgPyAnJyA6IHJ4TGlzdC5taW5pbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0cztcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wdXJwb3NlKSA/IHJ4TGlzdC5wdXJwb3NlIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cgPSByeExpc3QuYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ZWQgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QuYW5ub3RhdGlvbikgPyByeExpc3QuYW5ub3RhdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5kb2N0b3JOb3RlcykgPyByeExpc3QuZG9jdG9yTm90ZXMgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbiA9IHJ4TGlzdC5yZWFzb25Gb3JUaGVyYXBldXRpY0dvb2Q7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTm90ZXMgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wYnNOb3RlcykgPyByeExpc3QucGJzTm90ZXMgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNBdXQgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSByeExpc3QuYXV0aG9yaXR5QXBwcm92YWxOdW1iZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgPSByeExpc3Quc2VuZFRvUGhhcm1hY3k7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSA9IHJ4TGlzdC5zZW5kVG9QaGFybWFjeVZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSA9IHJ4TGlzdC5lbWVyZ2VuY3lTdXBwbHk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubXlTTENvbnNlbnQgPSByeExpc3QubXlTTENvbnNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjQgPSByeExpc3QucmVndWxhdGlvbjI0ID09IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9IHJ4TGlzdC5zY3JpcHRUeXBlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9IHJ4TGlzdC5wYXRpZW50Q3RnRmxhZyA9PSAwID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlLmFpcCkgPyByZXMucmVzcG9uc2UuYWlwLmxlbWkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMucmVzcG9uc2UuYWlwKSA/IHJlcy5yZXNwb25zZS5haXAubG1iYyA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZyA9IHJ4TGlzdC51blVzdWFsRG9zZUZsYWcgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlciA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0LnN0YXRlQXV0aG9yaXR5TnVtYmVyKSA/IHJ4TGlzdC5zdGF0ZUF1dGhvcml0eU51bWJlciA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gcnhMaXN0LnJlc3RyaWN0ZWRQYnNTZWxlY3RlZEluZGV4ICE9IDAgPyByeExpc3QucmVzdHJpY3RlZFBic1NlbGVjdGVkSW5kZXggLSAxIDogbnVsbDsgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QucGJzTGlzdEluc3RydWN0aW9ucykgPyByeExpc3QucGJzTGlzdEluc3RydWN0aW9ucyA6ICcnO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gcnhMaXN0LmlzQnJhbmROYW1lID8gcnhMaXN0LmlzQnJhbmROYW1lIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTaG93QXV0aG9yaXR5ID0gcnhMaXN0LmlzU2hvd0F1dGhvcml0eSA/IHJ4TGlzdC5pc1Nob3dBdXRob3JpdHkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIpICYmIHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIgIT0gMCA/IHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAocnhMaXN0LmlzU2hvd0F1dGhvcml0eSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBpZiAocnhMaXN0LnN0YXR1cy50b0xvd2VyQ2FzZSgpID09IFwicHJlc2NyaWJlZFwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocnhMaXN0LnN0YXR1cy50b0xvd2VyQ2FzZSgpID09IFwiY2Vhc2VkXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChyeExpc3Quc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gXCJjYW5jZWxsZWRcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWRpdFJlc3RyaWN0RmxhZykge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvL2VuYWJsZSBlLXByZXNjcmlwdGlvblxyXG4gIGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zY3JpcHRUeXBlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCkgPT0gJ00nKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnNjcmlwdFR5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKSA9PSAnRScgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc3RhdHVzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAnZHJhZnQnICYmIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5lUHJlc2NyaXB0aW9uQWxsb3dlZCA9PSAwICYmIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMudmVuZG9yUGF0aWVudENvbnNlbnQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuY3JlYXRlUGF0aWVudFJlc3BvbnNlLmlzX2hwaW9fdmFsaWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5jcmVhdGVQYXRpZW50UmVzcG9uc2UuaXNfaHBpaV92YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmNyZWF0ZVBhdGllbnRSZXNwb25zZS5pc19paGlfdmFsaWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkID09IDAgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy52ZW5kb3JQYXRpZW50Q29uc2VudCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJlUHJlc2NyaXB0aW9uVmFsaWRhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdGVTY2hlZHVsZU51bWJlcihzZWxlY3RlZEZvcm11bGF0aW9uOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlcyAhPSBudWxsICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uc3RhdGVTY2hlZHVsZXMgIT0gXCJcIikge1xyXG4gICAgICAgIHZhciBzdGF0ZVNjaGVkdWxlTGlzdCA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHN0YXRlU2NoZWR1bGVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgc3RhdGVTY2hlZHVsZUxpc3QuY29uY2F0KHNlbGVjdGVkRm9ybXVsYXRpb24uc3RhdGVTY2hlZHVsZXNbaV0uc2NoZWR1bGVzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHN0YXRlU2NoZWR1bGVMaXN0LnB1c2goc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlc1tpXS5zY2hlZHVsZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RhdGVTY2hlZHVsZUxpc3Q7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFN0YXRlU2NoZWR1bGVOdW1iZXJcIik7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF1dGhvcml0eU5vVmFsaWRhdGlvbihldmVudDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIga2V5dmFsdWUgPSBldmVudC5jaGFyQ29kZTtcclxuICAgICAgcmV0dXJuICgoa2V5dmFsdWUgPiA2NCAmJiBrZXl2YWx1ZSA8IDkxKSB8fCAoa2V5dmFsdWUgPiA5NiAmJiBrZXl2YWx1ZSA8IDEyMykgfHwgKGtleXZhbHVlID49IDQ4ICYmIGtleXZhbHVlIDw9IDU3KSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImF1dGhvcml0eU5vVmFsaWRhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGF5TG9hZFN0YXRlU2NoZWR1bGVOdW1iZXIoU2NoZWR1bGVOdW1iZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHN0YXRlU2NoZWR1bGVOdW1iZXIgPSB0aGlzLmdldFN0YXRlU2NoZWR1bGVOdW1iZXIoU2NoZWR1bGVOdW1iZXIpO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzdGF0ZVNjaGVkdWxlTnVtYmVyKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSkudG9VcHBlckNhc2UoKSA9PSBcIlRBU1wiICYmIHN0YXRlU2NoZWR1bGVOdW1iZXIubGVuZ3RoICE9IDAgJiYgc3RhdGVTY2hlZHVsZU51bWJlclswXS5pbmRleE9mKFwiUzREXCIpICE9IC0xKSB7XHJcbiAgICAgICAgICByZXR1cm4gXCJTNERcIjtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiTlNXXCIgJiYgc3RhdGVTY2hlZHVsZU51bWJlci5sZW5ndGggIT0gMCAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyWzBdLmluZGV4T2YoXCJTNEJcIikgIT0gLTEpIHtcclxuICAgICAgICAgIHJldHVybiBcIlM0QlwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicGF5TG9hZFN0YXRlU2NoZWR1bGVOdW1iZXJcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJlc2NyaXBlQWJvcnQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgdXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICAgIHBhdFVzZXJJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hYm9ydGRpc2FibGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5SWF9QUkVTQ1JJQkVfQUJPUlQgKyBcIj91c2VySWQ9XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkICsgXCImcGF0VXNlcklkPVwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzQWJvcnQgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlID0gZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZTtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaXBlQWJvcnRcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnID0gcmVzLnJlc3BvbnNlX21lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA9IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJfY29kZSA9IHJlcy5lcnJvcl9jb2RlO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnID0gcmVzLnJlc3BvbnNlX21lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaXBlQWJvcnRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5pc1ByZXNjcmliZSlcclxuICAgICAgICAgICAgdGhpcy5zaG93UmVzcG9uc2VNZXNzYWdlKCk7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmFib3J0QnRuRmxhZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pc0Fib3J0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZyA9IGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcjtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlID0gZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZVxyXG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5pc1ByZXNjcmliZSlcclxuICAgICAgICAgIHRoaXMuc2hvd1Jlc3BvbnNlTWVzc2FnZSgpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaXBlQWJvcnRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5hYm9ydEJ0bkZsYWcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmlwZUFib3J0XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd1Jlc3BvbnNlTWVzc2FnZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5yZXNwb25zZURhdGEuYWJvcnRTdWNjZXNzICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmRhdGEpO1xyXG4gICAgICAgIHRoaXMuY2xvc2UodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5kYXRhKTtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID09IHRydWUpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZWRhdGEuZmlsZV91cmwpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5maWxlX3VybCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJzaG93UmVzcG9uc2VNZXNzYWdlXCIsIHRoaXMucmVzcG9uc2VEYXRhLnBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShhdG9iKHJlc3BvbnNlLmZpbGUpLnNwbGl0KCcnKS5tYXAoY2hhciA9PiBjaGFyLmNoYXJDb2RlQXQoMCkpKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBiYmIgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL3BkZlwiIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJiYik7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdXaW5kb3cgPSB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdXaW5kb3cpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3V2luZG93LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmludFdhcm5pbmdQb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd1Jlc3BvbnNlTWVzc2FnZVwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZWRhdGEuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5lcnJvcl9jb2RlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNob3dSZXNwb25zZU1lc3NhZ2VcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzaG93UmVzcG9uc2VNZXNzYWdlXCIsIHRoaXMucmVzcG9uc2VEYXRhLnBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5yZXNwb25zZURhdGEuYWJvcnRTdWNjZXNzICYmIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnLCAnc3VjY2VzcycpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVTdWNjZXNzICYmICF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yICYmICF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnLCAnc3VjY2VzcycpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciAmJiAhdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJvciAmJiAhdGhpcy5yZXNwb25zZURhdGEuYWJvcnRTdWNjZXNzKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZywgJ2Vycm9yJywgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyX2NvZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZVN1Y2Nlc3MgJiYgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJvcikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZywgJ3N1Y2Nlc3MnKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZywgXCJlcnJvclwiLCB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciAmJiB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnLCAnZXJyb3InLCB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2csIFwiZXJyb3JcIiwgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJfY29kZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlU3VjY2VzcyAmJiB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZywgXCJzdWNjZXNzXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuYWJvcnRCdG5GbGFnID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNlcHJpc2NyaWJlcHJpbnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXNBYm9ydCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pc1ByZXNjcmliZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlU3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZyA9IFwiXCI7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnID0gXCJcIjtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YSA9IFwiXCI7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnBheWxvYWQgPSBcIlwiO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNob3dSZXNwb25zZU1lc3NhZ2VcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBNSU1TUHJpbWFyeVNlYXJjaCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICAgIGlmICghdGhpcy5pc1N0aWxsU2VhcmNoaW5nICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICAgICAgcHJvZHVjdE5hbWU6IHRoaXMuUHJvZHVjdFNlYXJjaE5hbWVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLmlzU3RpbGxTZWFyY2hpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkubGVuZ3RoIDwgMykge1xyXG4gICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLlByaW1hcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA8IDgpXHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLlByaW1hcnlTZWFyY2hTcGlubmVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzUGFnZU51bWJlciArPSAxO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TUHJpbWFyeWFwaSA9IHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLkdFVF9NRURTX0JZX1NFQVJDSCArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLlByb2R1Y3RTZWFyY2hOYW1lKSArICcmcGFnZT0nICsgdGhpcy5zZWFyY2hNZWRpY2luZXNQYWdlTnVtYmVyICsgJyZub09mUmVjPTEwJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzU3RpbGxTZWFyY2hpbmcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNQcmltYXJ5U2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSByZXMucmVzcG9uc2UubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgcmVzLnJlc3BvbnNlLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5maWx0ZXIoKHg6IGFueSkgPT4geC5wcm9kRGlzcGxheVZhbHVlID09IGRhdGEucHJvZERpc3BsYXlWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHZhbDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcm9kdWN0ID0gdmFsLnByb2RIaWRkZW5WYWx1ZS5pbmNsdWRlcyhkYXRhLnByb2RIaWRkZW5WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ2JyYW5ka2V5JyA/ICdCSycgOiBkYXRhLnNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHBhY2trZXknID8gJ1BQSycgOiBkYXRhLnNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAndmlydHVhbG5hbWUnID8gJ1ZOJyA6IGRhdGEuc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdwcm9kdWN0a2V5JyA/ICdQSycgOiBkYXRhLnNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHVjdGtleWFjdGl2ZWluZ3JlZGllbnQnID8gJ1BLQScgOiBkYXRhLnNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAnZnVsbHBpJyA/ICdGUEknIDogJ1BOJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9kdWN0ICYmIHR5cGUgIT0gJ1BLQScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwucHJvZEhpZGRlblZhbHVlICs9ICcsJyArIGRhdGEucHJvZEhpZGRlblZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0LnB1c2goZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA+IDcgfHwgcmVzLnJlc3BvbnNlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA8IDggJiYgdGhpcy5pc1N0aWxsU2VhcmNoaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuTUlNU1ByaW1hcnlTZWFyY2goKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbWFyeU1JTVNTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLlByaW1hcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaW1hcnlNSU1TU2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmltYXJ5TUlNU1NlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlByaW1hcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaW1hcnlNSU1TU2VhcmNoXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgTUlNU1NlY29uZGFyeVNlYXJjaCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5pc1N0aWxsU2VhcmNoaW5nICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnKSB7XHJcbiAgICAgICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggIT0gMCAmJiB0aGlzLlByb2R1Y3RUeXBlLnRvTG93ZXJDYXNlKCkgIT0gXCJwa1wiICYmIHRoaXMuUHJvZHVjdFR5cGUudG9Mb3dlckNhc2UoKSAhPSBcInBuXCIgJiYgdGhpcy5Qcm9kdWN0VHlwZS50b0xvd2VyQ2FzZSgpICE9IFwidm5cIiAmJiB0aGlzLlByb2R1Y3RUeXBlLnRvTG93ZXJDYXNlKCkgIT0gXCJmcGlcIikge1xyXG4gICAgICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgICBwcm9kdWN0TmFtZTogdGhpcy5wcm9kSGlkZGVuTmFtZSxcclxuICAgICAgICAgICAgdHlwZTogdGhpcy5Qcm9kdWN0VHlwZSxcclxuICAgICAgICAgICAgcHJlc2NyaWJlclR5cGU6IFwiTVBcIlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QubGVuZ3RoIDw9IDMpXHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lUGFnZU51bWJlciArPSAxO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpID0gdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuR0VUX01FRFNfQllfTkFNRSArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLnByb2RIaWRkZW5OYW1lKSArICcmdHlwZT0nICsgdGhpcy5Qcm9kdWN0VHlwZSArICcmcHJlc2NyaWJlclR5cGU9TVAmcGFnZT0nICsgdGhpcy5zZWFyY2hCeW5hbWVQYWdlTnVtYmVyICsgJyZub09mUmVjPTEwJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJNSU1TU2Vjb25kYXJ5U2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lUGFnZU51bWJlciA9IDE7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlcy5yZXNwb25zZS5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbC5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSByZXMucmVzcG9uc2UubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAvLyBpZiAodGhpcy5pc05vblBic0ZsYWcpIHtcclxuICAgICAgICAgICAgICAgICAgLy8gICB0aGlzLnJ4T25seU5PTlBCU0ZpbHRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAvLyAgIGlmICh0aGlzLnJ4T25seVBCUyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLnJ4T25seVBCU0ZpbHRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgICAgICAgLy8gICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbDtcclxuICAgICAgICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5vbkNoZWNrYm94Q2hhbmdlKCk7XHJcbiAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QubGVuZ3RoIDw9IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5yZXNwb25zZSkgJiYgcmVzLnJlc3BvbnNlLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5NSU1TU2Vjb25kYXJ5U2VhcmNoKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJNSU1TU2Vjb25kYXJ5U2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJNSU1TU2Vjb25kYXJ5U2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNTZWNvbmRhcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNTZWNvbmRhcnlTZWFyY2hcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmludFdhcm5pbmdQb3AoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0YSA9IFwiUGxlYXNlIGVuYWJsZSBwb3B1cCBvbiB0aGUgYnJvd3NlciB0byB2aWV3L3ByaW50IHRoZSBwcmVzY3JpcHRpb24uXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWFsVGltZVByZXNjcmlwdGlvbk1vbml0b3JpbmdDb21wb25lbnQsIHRoaXMuY29udGVudCwgZGF0YSkuc3Vic2NyaWJlKChyZXMpID0+IHsgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaW50V2FybmluZ1BvcFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG51bWJlclRvV29yZChuOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChuIDwgMClcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIHZhciBzaW5nbGVfZGlnaXQgPSBbJycsICdPbmUnLCAnVHdvJywgJ1RocmVlJywgJ0ZvdXInLCAnRml2ZScsICdTaXgnLCAnU2V2ZW4nLCAnRWlnaHQnLCAnTmluZSddXHJcbiAgICAgIHZhciBkb3VibGVfZGlnaXQgPSBbJ1RlbicsICdFbGV2ZW4nLCAnVHdlbHZlJywgJ1RoaXJ0ZWVuJywgJ0ZvdXJ0ZWVuJywgJ0ZpZnRlZW4nLCAnU2l4dGVlbicsICdTZXZlbnRlZW4nLCAnRWlnaHRlZW4nLCAnTmluZXRlZW4nXVxyXG4gICAgICB2YXIgYmVsb3dfaHVuZHJlZCA9IFsnVHdlbnR5JywgJ1RoaXJ0eScsICdGb3J0eScsICdGaWZ0eScsICdTaXh0eScsICdTZXZlbnR5JywgJ0VpZ2h0eScsICdOaW5ldHknXVxyXG4gICAgICBpZiAobiA9PT0gMCkgcmV0dXJuICdaZXJvJztcclxuICAgICAgZnVuY3Rpb24gdHJhbnNsYXRlKG46IGFueSkge1xyXG4gICAgICAgIHZhciB3b3JkOiBhbnkgPSAnJ1xyXG4gICAgICAgIGlmIChuIDwgMTApIHtcclxuICAgICAgICAgIHdvcmQgPSBzaW5nbGVfZGlnaXRbbl0gKyAnICdcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobiA8IDIwKSB7XHJcbiAgICAgICAgICB3b3JkID0gZG91YmxlX2RpZ2l0W24gLSAxMF0gKyAnICdcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobiA8IDEwMCkge1xyXG4gICAgICAgICAgdmFyIHJlbSA9IHRyYW5zbGF0ZShuICUgMTApXHJcbiAgICAgICAgICB3b3JkID0gYmVsb3dfaHVuZHJlZFsobiAtIG4gJSAxMCkgLyAxMCAtIDJdICsgJyAnICsgcmVtXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG4gPCAxMDAwKSB7XHJcbiAgICAgICAgICB3b3JkID0gc2luZ2xlX2RpZ2l0W01hdGgudHJ1bmMobiAvIDEwMCldICsgJyBIdW5kcmVkICcgKyB0cmFuc2xhdGUobiAlIDEwMClcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobiA8IDEwMDAwMDApIHtcclxuICAgICAgICAgIHdvcmQgPSB0cmFuc2xhdGUobiAvIDEwMDApLnRyaW0oKSArICcgVGhvdXNhbmQgJyArIHRyYW5zbGF0ZShuICUgMTAwMClcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobiA8IDEwMDAwMDAwMDApIHtcclxuICAgICAgICAgIHdvcmQgPSB0cmFuc2xhdGUobiAvIDEwMDAwMDApLnRyaW0oKSArICcgTWlsbGlvbiAnICsgdHJhbnNsYXRlKG4gJSAxMDAwMDAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHdvcmQgPSB0cmFuc2xhdGUobiAvIDEwMDAwMDAwMDApLnRyaW0oKSArICcgQmlsbGlvbiAnICsgdHJhbnNsYXRlKG4gJSAxMDAwMDAwMDAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gd29yZFxyXG4gICAgICB9XHJcbiAgICAgIHZhciByZXN1bHQgPSB0cmFuc2xhdGUobilcclxuICAgICAgcmV0dXJuIHJlc3VsdC50cmltKClcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwibnVtYmVyVG9Xb3JkXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEV4dGVtcE1QUE5hbWUoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXT8ubXBwcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzLmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0/Lm1wcE5hbWUpKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lLnRyaW0oKSA6IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEV4dGVtcE1QUE5hbWVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaHRtbFRvVGV4dENvbnZlcnQodmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdG1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XHJcbiAgICAgIHRtcC5pbm5lckhUTUwgPSB2YWx1ZTtcclxuICAgICAgcmV0dXJuIHRtcC50ZXh0Q29udGVudCB8fCB0bXAuaW5uZXJUZXh0IHx8ICcnO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJodG1sVG9UZXh0Q29udmVydFwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhdXRob3JpdHlOb0NoYW5nZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuU3RhdGVBdXRob3JpdHlOdW1iZXIgPSB2YWx1ZS5yZXBsYWNlKC9bXmEtekEtWiAwLTldL2csIFwiXCIpLnJlcGxhY2UoL1xccysvZywgXCJcIik7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiYXV0aG9yaXR5Tm9DaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhbHBoYVJlc3RyaWN0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBrZXl2YWx1ZSA9IGV2ZW50LmNoYXJDb2RlO1xyXG4gICAgICByZXR1cm4gKChrZXl2YWx1ZSA+IDY0ICYmIGtleXZhbHVlIDwgOTEpIHx8IChrZXl2YWx1ZSA+IDk2ICYmIGtleXZhbHVlIDwgMTIzKSB8fCAoa2V5dmFsdWUgPj0gNDggJiYga2V5dmFsdWUgPD0gNTcpIHx8IGtleXZhbHVlID09IDMyKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiYWxwaGFSZXN0cmljdGlvblwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBhZGRUb0Zhdm91cml0ZXMoKSB7XHJcbiAgICBjb25zdCBpc0luRmF2b3VyaXRlcyA9IHRoaXMuaXNDdXJyZW50TWVkaWNpbmVJbkZhdm91cml0ZXMoKTtcclxuICAgIGNvbnN0IGlzQWRkaW5nID0gIWlzSW5GYXZvdXJpdGVzO1xyXG4gICAgdmFyIHBoeXNpY2lhbkRldGFpbHMgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICB2YXIgYm9keSA9IHtcclxuICAgICAgdXNlcklkU3RyaW5nOiBwaHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgcHJvZHVjdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkLFxyXG4gICAgICBwcm9kdWN0TmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpP3RoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZTpcIlwiLFxyXG4gICAgICBxdWFudGl0eTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic1R5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlID09IFwibm9uIFBCU1wiID8gKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5udW1iZXJPZlBhY2sgKyBcInhcIiArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi51bml0UGVyUGFjaykgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMsXHJcbiAgICAgIHJlcGVhdHM6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzLFxyXG4gICAgICByZXN0cmljdGlvbjogIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0Pyh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSBcIlwiXHJcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUgKyBcIiAoXCIgKyB0aGlzLmdldFJlc3RyaWN0aW9ucyh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zKSArIFwiKSBcIlxyXG4gICAgICAgICAgICAgICAgICA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlKTpcIlwiLFxyXG4gICAgICBnZW5lcmljTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUpP3RoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZTpcIlwiLFxyXG4gICAgICAgcGJzQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic0NvZGUpP3RoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZTpcIlwiLFxyXG4gICAgICBhY3RpdmU6IGlzQWRkaW5nLFxyXG4gICAgICByZXN0cmljdGVkTWVkaWNpbmU6IHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0XHJcbiAgICB9XHJcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLlBvc3QoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5BRERfRkFWT1VSSVRFX01FRElDSU5FKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJBZGRGYXZvdXJpdGVzXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJ0aWVzTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLm9yaWdpbmFsRmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gcmVzLmZhdm91cnRpZXNMaXN0IHx8IFtdO1xyXG4gICAgICAgICAgICAgIGlmICghaXNBZGRpbmcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRmF2b3VyaXRlRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93RmF2b3VyaXRlTWVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzLmZhdm91cnRpZXNMaXN0IHx8IHJlcy5mYXZvdXJ0aWVzTGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgXCJObyBtb3JlIGZhdm91cml0ZXMgcmVtYWluaW5nLiBZb3UgY2FuIGFkZCBtZWRpY2luZXMgdG8gZmF2b3VyaXRlcyBmcm9tIHRoZSBzZWFyY2ggcmVzdWx0cy5cIixcclxuICAgICAgICAgICAgICAgICAgICBcImluZm9cIlxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcIkFkZEZhdm91cml0ZXNcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiQWRkRmF2b3VyaXRlc1wiLCBib2R5KTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJBZGRGYXZvdXJpdGVzXCIsIGJvZHkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQWRkRmF2b3VyaXRlc1wiLCBib2R5KTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAgZ2V0RmF2b3VydGllc0xpc3QoKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgcGF5bG9hZCA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQ7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfRkFWT1VSSVRFX01FRElDSU5FX0xJU1QgKyBcIj91c2VySWRTdHJpbmc9XCIgKyBwYXlsb2FkK1wiJnJlc3RyaWN0ZWRNZWRpY2luZT1cIit0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcImdldEZhdm91cnRpZXNMaXN0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJpdGVzTGlzdDtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5vcmlnaW5hbEZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJpdGVzTGlzdDtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMub3JpZ2luYWxGYXZvdXJpdGVNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRGYXZvdXJ0aWVzTGlzdFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEZhdm91cnRpZXNMaXN0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RmF2b3VydGllc0xpc3RcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRGYXZvdXJ0aWVzTGlzdFwiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dGYXZvdXJ0aWVzKCkge1xyXG4gICAgdGhpcy5zaG93RmF2b3VyaXRlTWVkID0gIXRoaXMuc2hvd0Zhdm91cml0ZU1lZDtcclxuICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TUHJpbWFyeWFwaSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLk1JTVNQcmltYXJ5YXBpLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1NlY29uZGFyeWFwaS51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5zaG93RmF2b3VyaXRlTWVkKSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHRoaXMuY29tbW9uU2VydmljZXMub3JpZ2luYWxGYXZvdXJpdGVNZWRpY2luZUxpc3Q7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRmF2b3VyaXRlRGF0YSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLm1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvL0Zhdm91cml0ZU1lZGljaW5lIExvYWRpbmdcclxuICBmYXZvdXJpdGVNZWRpY2luZUxvYWRpbmcocnhMaXN0OiBhbnkpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBpZighdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3Qpe1xyXG4gICAgICByeExpc3QucGJzQ29kZSA9IHJ4TGlzdC5wYnNDb2RlICE9IG51bGwgPyByeExpc3QucGJzQ29kZSA6IFwiXCI7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHByb2R1Y3RJZDogcnhMaXN0LnByb2R1Y3RJZCxcclxuICAgICAgICBwYnNDb2RlOiByeExpc3QucGJzQ29kZSxcclxuICAgICAgICByeElkOiAwXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfTUVEX0RFVF9CWV9JRCArIFwiP3Byb2R1Y3RJZD1cIiArIHJ4TGlzdC5wcm9kdWN0SWQgKyBcIiZwYnNDb2RlPVwiICsgKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ID8gcnhMaXN0LnBic0NvZGUgOiBcIlwiKSArIFwiJnJ4SWQ9XCIgKyAwKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdmFyIE1lZCA9IFtdO1xyXG4gICAgICAgICAgICBNZWQucHVzaChyZXMucmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gTWVkO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IE1lZDtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gTWVkO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUoTWVkKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RGb3JtdWxhdGlvbihyZXMucmVzcG9uc2UsIDApO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5tZWRpU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5wYWdlID0gMTtcclxuICAgICAgICAgICAgdGhpcy5yeE9ubHlQQlMgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5mYXZNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdmFyIHNlbGVjdGVkZGF0YSA9IG51bGw7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0Py5wcm9kdWN0SWQpKSB7XHJcbiAgICAgICAgICBzZWxlY3RlZGRhdGEgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0LmZpbHRlcigoeDogeyBwcm9kdWN0SWQ6IGFueTsgfSkgPT4geC5wcm9kdWN0SWQgPT0gTnVtYmVyKHJ4TGlzdC5wcm9kdWN0SWQpKTtcclxuICAgICAgICAgIC8vIHNlbGVjdGVkZGF0YSA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBzZWxlY3RlZGRhdGFbMF07XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUoc2VsZWN0ZWRkYXRhWzBdKTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1J0cG1OZXh0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vID0gdGhpcy5nZXRBZGRBdXRoVmFsdWUodGhpcy50ZW1wQXV0aG9yaXR5Rm9ybU5vKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICAgICAgdGhpcy5lbmFibGVQcmVzY3JpYmVBcyhzZWxlY3RlZGRhdGFbMF0pO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5mYXZNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICBpc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpIHtcclxuICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3Quc29tZSgoZmF2TWVkOiB7IHByb2R1Y3RJZDogYW55OyBwYnNDb2RlOiBhbnk7IHByb2R1Y3ROYW1lOiBhbnk7IH0pID0+IFxyXG4gICAgICBmYXZNZWQucHJvZHVjdElkLnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQudG9TdHJpbmcoKSAmJlxyXG4gICAgICAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmYXZNZWQucGJzQ29kZSk/ZmF2TWVkLnBic0NvZGU6XCJcIikgPT09ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZTpcIlwiKSAmJlxyXG4gICAgICBmYXZNZWQucHJvZHVjdE5hbWUgPT09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSAjcnh3aWRnZXRzPiA8L25nLXRlbXBsYXRlPlxyXG48ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX21pbXNcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cIlJlYWN0TW9kYWxfX092ZXJsYXkgUmVhY3RNb2RhbF9fT3ZlcmxheS0tYWZ0ZXItb3BlbiBSZWFjdF9fT3ZlcmxheV9PcGVuX1BvcHVwIG5ld19yeF9taW1zX092ZXJsYXlfT3Blbl9Qb3B1cFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIlJlYWN0TW9kYWxfX0NvbnRlbnQgUmVhY3RNb2RhbF9fQ29udGVudC0tYWZ0ZXItb3BlbiBSZWFjdF9fQ29udGVudCBuZXdfcnhfbWltc19SZWFjdF9fQ29udGVudFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicG9wdXAgbmV3X3J4X21pbXNfUmVhY3RNb2RhbF9wb3B1cFwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8YXBwLXNwbGFzaHNjcmVlbiAqbmdJZj1cIlBvcHVwU2NyZWVuTG9hZGVyXCIgW2hlaWdodF09XCInaGVpZ2h0LXJ4LXNwaW4nXCI+IDwvYXBwLXNwbGFzaHNjcmVlbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLWNvbnRlbnRcIiAqbmdJZj1cIiFQb3B1cFNjcmVlbkxvYWRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX2hlYWRlcl9ib3hcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMi1jb2wtdGFibGV0IG1kbC1jZWxsLS0zLWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCByeF9pcGFkX2hlYWRlcl9ib3hfMVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb21tb25TZXJ2aWNlcy5yeGlkICE9IG51bGwgJiYgY29tbW9uU2VydmljZXMucnhpZCAhPScnPydtZGwtY2VsbC0tMi1jb2wnOidtZGwtY2VsbC0tMy1jb2wnXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibmV3X3J4X3BvcHVwX2hlYWRlcl9ib3hfdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtaG9sYS1oZWFsdGgtbG9nby0xLnBuZ1wiIGFsdD1cImhvbGFfaGVhbHRoXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IGF1dG87aGVpZ2h0OiAzN3B4O2JvcmRlci1yYWRpdXM6IDVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcGFzc2V0cy5ob2xhLmhlYWx0aC9yeC13aWRnZXRzL3J4LWhlYWRlci1sb2dvLnBuZ1wiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAge3tjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlID8gJ0VkaXQgU2NyaXB0JyA6ICdOZXcgU2NyaXB0J319XHJcbiAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNC1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X2Rlc2t0b3BfdGl0bGUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImFsaWduLXNlbGY6IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF90ZXh0XCIgc3R5bGU9XCJqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDA7XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmZpcnN0TmFtZSArXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIiBcIiArXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5sYXN0TmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+LzxzcGFuIHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmRvYixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiZGQtTU0teXl5eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgIG1kbC1jZWxsLS01LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9wb3B1cF9oZWFkZXJfYm94X2NvbCBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCByeF9pcGFkX2hlYWRlcl9ib3hfMiBuZXdfbW9iaWxlX3J4X3RvcF9ib3R0b21fMFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbW1vblNlcnZpY2VzLnJ4aWQgIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5yeGlkICE9Jyc/J21kbC1jZWxsLS02LWNvbCc6J21kbC1jZWxsLS01LWNvbCdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld19yeF9wb3B1cF9idG5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2UobnVsbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgYmFja0J1dHRvbiBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIHx8IHNlbGVjdGlvbmJ0bkxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQ2xvc2VcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO3Bvc2l0aW9uOiByZWxhdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnJ4aWQgIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5yeGlkICE9JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgbmV4dEJ1dHRvbiBzZWxlY3QtYWN0aW9uLWJ0biBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO3dpZHRoOiAxNDBweDtkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiByb3c7YWxpZ24taXRlbXM6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIHx8IHNlbGVjdGlvbmJ0bkxvYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBY3Rpb25Ecm9wZG93bm9wZW4oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uYnRuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJyeF9sb2FkZXJfYnV0dG9uIG0tdjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMjBweDtoZWlnaHQ6IDIwcHg7bWFyZ2luOiAwcHggIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6IDBweCAhaW1wb3J0YW50O21hcmdpbi1sZWZ0OiAwcHggIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGlvbmJ0bkxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBBY3Rpb24gPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBkcnAtaWNvblwiPmV4cGFuZF9tb3JlPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAjc2VsZWN0QWN0aW9uRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfUHJlc2NyaWJlX2J0bl9kcm9wZG93bl9saXN0X2JveCBzZWxlY3QtYWN0aW9uLXVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9QcmVzY3JpYmVfYnRuX2Ryb3Bkb3duX2xpc3RfdWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gJ2RyYWZ0Jz9jYW5jZWxEcmFmdCgpOmNhbmNlbFByZXNjcmliZU1lZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZSx0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsNCk/Jyc6J2VkaXQtZGlzYWJsZS1kYXRhJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInByaW50UHJlc2NyaWJlTWVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywxKT8nJzonZWRpdC1kaXNhYmxlLWRhdGEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmludDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJyZWlzc3VlUHJlc2NyaWJlTWVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywzKT8nJzonZWRpdC1kaXNhYmxlLWRhdGEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZS1Jc3N1ZTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJjZWFzZVByZXNjcmliZU1lZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZSx0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsMik/Jyc6J2VkaXQtZGlzYWJsZS1kYXRhJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Vhc2U8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInBhZ2UgIT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZCBiYWNrQnV0dG9uIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJiYWNrKClcIiBbZGlzYWJsZWRdPVwidGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBCYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInBhZ2UgPT0gMVwiIChjbGljayk9XCJwYWdlTnVtYmVyT25lVG9OZXh0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgbmV4dEJ1dHRvbiBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIHx8IHNlbGVjdGlvbmJ0bkxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgTmV4dFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgbmV3X21vYmlsZV9yeF9idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImFib3J0ZGlzYWJsZT8nbmV4dEJ1dHRvbic6J2Fib3J0YnV0dG9uJ1wiICpuZ0lmPVwiYWJvcnRCdG5GbGFnXCIgW2Rpc2FibGVkXT1cImFib3J0ZGlzYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJlc2NyaXBlQWJvcnQoKVwiPjxzcGFuICpuZ0lmPVwiYWJvcnRkaXNhYmxlXCIgY2xhc3M9XCJyeF9sb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJyeF9sb2FkZXJfYnV0dG9uIG0tdjQgcnhfYnRuX3NwaW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuICpuZ0lmPVwiIWFib3J0ZGlzYWJsZVwiPkFib3J0PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2tcIiAqbmdJZj1cInBhZ2UgPT0gMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZCBuZXh0QnV0dG9uIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IDEzNXB4O2Rpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IHJvdzthbGlnbi1pdGVtczogY2VudGVyO2p1c3RpZnktY29udGVudDogY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciB8fCBzZWxlY3Rpb25idG5Mb2FkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW5jbHVkZVJ0cG1Nb2RhbCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJyeF9sb2FkZXJfYnV0dG9uIG0tdjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMjBweDtoZWlnaHQ6IDIwcHg7bWFyZ2luOiAwcHggIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6IDBweCAhaW1wb3J0YW50O21hcmdpbi1sZWZ0OiAwcHggIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlc2NyaWJlIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgZHJwLWljb25cIj5leHBhbmRfbW9yZTwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgI1ByZXNjcmliZURyb3Bkb3duIGNsYXNzPVwibmV3X3J4X1ByZXNjcmliZV9idG5fZHJvcGRvd25fbGlzdF9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdFBCVE5Ecm9wZG93biA9PSB0cnVlXCIgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RQQlRORHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfUHJlc2NyaWJlX2J0bl9kcm9wZG93bl9saXN0X3VsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogZVByZXNjcmlwdGlvblZhbGlkYXRpb24oKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIk1wcmVzY3JpYmVNZWQoMSlcIj5FLVByZXNjcmliZSAoRHJhZnQpPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBlUHJlc2NyaXB0aW9uVmFsaWRhdGlvbigpfVwiIChjbGljayk9XCJFcHJlc2NyaXBlU2VuZCgxKVwiICpuZ0lmPVwiIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5XCI+RS1QcmVzY3JpYmUgYW5kIFNlbmQ8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKCl9XCIgKGNsaWNrKT1cIkVwcmVzY3JpcGVTZW5kKDIpXCI+RS1QcmVzY3JpYmUgYW5kIFByaW50PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiAoY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpPT0gJ00nJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT0gJ2RyYWZ0Jyl8fCAoY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpPT0gJ0UnKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIk1wcmVzY3JpYmVNZWQoMilcIj5QcmVzY3JpYmUgKERyYWZ0KTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogKGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKSA9PSAnTScmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKSB8fCAoY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpPT0gJ0UnKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXNjcmlwZVByaW50KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNjcmliZSBhbmQgUHJpbnQ8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIHJ4X2lwYWRfaGVhZGVyX2JveF8zIG5ld19yeF9tb2JpbGVfdGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImFsaWduLXNlbGY6IGNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9oZWFkZXJfYm94X3RleHQgbmV3X21vYmlsZV9yeF9wb3B1cF9oZWFkZXJfdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5maXJzdE5hbWUgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubGFzdE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPi88c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kb2IsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcImRkLU1NLXl5eXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBhZ2UgPT0gMVwiIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCIgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTUtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI01lZGljaW5lRHJvcGRvd24gc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBuYW1lPVwibWVkaWNpbmUgc2VhcmNoXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggTWVkaWNpbmVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgbWVkaVNlYXJjaFZhbHVlIH19XCIgKGlucHV0KT1cInNlYXJjaEhhbmRsZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJNZWRpY2luZURyb3Bkb3duTGlzdCgpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgbWQtMjQgbmV3X3J4X3BvcHVwX3RhYl8xX2lucHV0X3NlYXJjaFwiPnNlYXJjaDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2lucHV0X3NlYXJjaFwiPjwvbWF0LWljb24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdF9ib3hcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdGVkTWVkaWNpbmVEcm9wZG93biA9PT0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlYXJjaE1lZGljaW5lTG9hZGVyXCIgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2VhcmNoTWVkaWNpbmVMb2FkZXJcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtZWRpY2luZUxpc3Qgb2Ygc2VhcmNoZWRNZWRpY2luZUxpc3RcIiBbY2xhc3NdPVwiZ2V0Y3VycmVudGlkKG1lZGljaW5lTGlzdClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRQcm9kdWN0TGlzdEJ5TmFtZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpY2luZUxpc3RbJ3Byb2RIaWRkZW5WYWx1ZSddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGljaW5lTGlzdFsncHJvZERpc3BsYXlWYWx1ZSddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGljaW5lTGlzdFsnc2VhcmNoQmFzZSddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFtpbm5lckhUTUxdPVwibWVkaWNpbmVMaXN0Wydwcm9kRGlzcGxheVZhbHVlJ11cIj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cInNlYXJjaGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA9PSAwXCI+Tm8gRGF0YTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJQcmltYXJ5U2VhcmNoU3Bpbm5lclwiIGNsYXNzPVwibG9hZGVyIG1sLWxvYWQtNDVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMi1jb2wgbWRsLWNlbGwtLTItY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZFJ4Q29udGVudCc6dGhpcy5pc05vblBic0ZsYWd8fChjb21tb25TZXJ2aWNlcy5yeERldGFpbHMhPW51bGwgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzIT0nJyAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzIT1udWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMhPScnICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSE9J2RyYWZ0Jyl9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJyeE9ubHlQQlNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIHZhbHVlPVwiUEJTL1JQQlNcIiBbZGlzYWJsZWRdPVwidGhpcy5pc05vblBic0ZsYWdcIiAvPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCI+UEJTL1JQQlM8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJyeFByaXZhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIHZhbHVlPVwiUHJpdmF0ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMi1jb2wgbWRsLWNlbGwtLTItY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZFJ4Q29udGVudCc6dGhpcy5pc05vblBic0ZsYWd8fChjb21tb25TZXJ2aWNlcy5yeERldGFpbHMhPW51bGwgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzIT0nJyAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzIT1udWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMhPScnICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSE9J2RyYWZ0Jyl9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJyeFByaXZhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIHZhbHVlPVwiUHJpdmF0ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS01LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS02LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCBuZXdfbW9iaWxlX3J4X3RvcF9ib3R0b21fMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcGFzc2V0cy5ob2xhLmhlYWx0aC9yeC13aWRnZXRzL3J4LW1pbXMucG5nXCIgYWx0PVwiTUlNUyBsb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHg7IGhlaWdodDogYXV0b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA4cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhdm91cml0ZXMtdG9nZ2xlLWxpbmtcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBzaG93RmF2b3VydGllcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHNob3dGYXZvdXJpdGVNZWQgPyAnSGlkZSBmYXZvdXJpdGVzJyA6ICdTaG93IGZhdm91cml0ZXMnIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTctY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFibGVfYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX3RpdGxlXCIgc3R5bGU9XCJwYWRkaW5nOiA1cHggMTBweDsgbWFyZ2luOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEF2YWlsYWJsZSBGb3JtdWxhdGlvbnM6XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd0Zhdm91cml0ZU1lZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9uY2xpY2tNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyIG0tdjRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb25jbGlja01lZGljaW5lTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9PSBudWxsIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QubGVuZ3RoID09IDBcclxuICAgICAgICAgICAgICAgICAgXCIgY2xhc3M9XCJub0RhdGFQcmVzY3JpYmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5ObyBEYXRhPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfY29udGFpbmVyXCIgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lZCBvZiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdDtcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveFwiIFtjbGFzc109XCJnZXRDbGFzc0Zvck1lZChtZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RGb3JtdWxhdGlvbihtZWQsIGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfaGVhZGVyXCIgW2lubmVySFRNTF09XCJtZWQucHJvZHVjdE5hbWVcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF90ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGI+UXVhbnRpdHk6PC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZWQucGJzVHlwZSE9dW5kZWZpbmVkICYmIG1lZC5wYnNUeXBlIT1udWxsICYmIG1lZC5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJub24gcGJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbWVkLm51bWJlck9mUGFjayArIFwieFwiICsgbWVkLnVuaXRQZXJQYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1lZC5tYXhRdHlVbml0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+PHNwYW4+PGI+UnB0czo8L2I+IHt7IG1lZC5yZXBlYXRzIH19PC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3RcIj48Yj5SZXN0cmljdGlvbjo8L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lZC5SZXN0cmljdGlvbnMhPXVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmIG1lZC5SZXN0cmljdGlvbnMgIT0gXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtZWQucGJzVHlwZSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAoXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVzdHJpY3Rpb25zKG1lZC5SZXN0cmljdGlvbnMpICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAobWVkLnBic1R5cGUhPXVuZGVmaW5lZCYmbWVkLnBic1R5cGUhPW51bGw/bWVkLnBic1R5cGU6XCJcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IDwvc3Bhbj48c3Bhbj48Yj5HZW5lcmljIE5hbWU6IDwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibWVkLmdlbmVyaWNOYW1lXCI+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lclwiIGNsYXNzPVwibG9hZGVyIG1sLWxvYWQtNDVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RmF2b3VyaXRlTWVkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9uY2xpY2tNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyIG0tdjRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb25jbGlja01lZGljaW5lTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgPT0gbnVsbCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdC5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgICAgICAgICBcIiBjbGFzcz1cIm5vRGF0YVByZXNjcmliZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk5vIEZhdm91cml0ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF9jb250YWluZXJcIiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVkIG9mIGNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdDtcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveFwiIFtjbGFzc109XCJnZXRDbGFzc0ZvckZhdm91cml0ZU1lZChtZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmYXZvdXJpdGVNZWRpY2luZUxvYWRpbmcobWVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfYm94X2hlYWRlclwiIFtpbm5lckhUTUxdPVwibWVkLnByb2R1Y3ROYW1lXCI+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxiPlF1YW50aXR5OjwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVkLnF1YW50aXR5fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4+PGI+UnB0czo8L2I+IHt7IG1lZC5yZXBlYXRzIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiPjxiPlJlc3RyaWN0aW9uOjwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVkLnJlc3RyaWN0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4+PGI+R2VuZXJpYyBOYW1lOiA8L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIm1lZC5nZW5lcmljTmFtZVwiPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlNlY29uZGFyeVNlYXJjaFNwaW5uZXJcIiBjbGFzcz1cImxvYWRlciBtbC1sb2FkLTQ1XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmYXZNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZhdk1lZGljaW5lTG9hZGVyXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNS1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkIG5ld19yeF9wb3B1cF90YWJfMV9ncmlkIG5ld19yeF9wb3B1cF90YWJfMV9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX3RpdGxlXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiA1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCYmY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUhPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWU6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpYyBOYW1lOjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwmJmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUhPXVuZGVmaW5lZCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogJydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCcmFuZCBOYW1lOjxzcGFuIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXRCcmFuZE5hbWUoY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbilcclxuICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgU2NoZWR1bGU6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uICE9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24hPW51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXMhPXVuZGVmaW5lZCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXMhPW51bGwgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5wb2lzb25DbGFzc2VzLmxlbmd0aD4wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXNbMF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTm8gU2NoZWR1bGVkIEluZm9ybWF0aW9uIEF2YWlsYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQQlMgTGlzdGluZzo8c3Bhbj57e2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSE9dW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUhPXVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSE9bnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gXCIgKFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbjowcHggO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1heCBRdWFudGl0eSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRNYXhRdWFudGl0eSgpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgUmVwZWF0cyA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6XCJcIn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcmVnbmFuY3lDYXRlZ29yeSE9dW5kZWZpbmVkICYmIFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnkgIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGVnb3J5Q29kZSE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0ZWdvcnlDb2RlIT1udWxsXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVnbmFuY3kgQ2F0ZWdvcnk6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGVnb3J5Q29kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRpdGlvbmFsTm90ZSAhPXVuZGVmaW5lZCAmJiBcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZGl0aW9uYWxOb3RlICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZGl0aW9uYWxOb3RlICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbE5vdGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlZ25hbmN5Q2F0ZWdvcnkuYWRkaXRpb25hbE5vdGVcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFtpbm5lckhUTUxdPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPT0gdHJ1ZSAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyE9dW5kZWZpbmVkICYmIFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9ICcnXHJcbiAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UmVzdHJpY3Rpb25zOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxvbCBzdHlsZT1cIm1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDE1cHhcIiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zIT11bmRlZmluZWQgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuZXdfcnhfcG9wX2F1dF9pbnRcIiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN0cmljdGlvbiBvZiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5SZXN0cmljdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3ICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCAhPSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ4X3Jlc3RyaWN0aW9uVGV4dFwiICpuZ0lmPVwicmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0Lmxlbmd0aCA8IDYwXCI+PGI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblR5cGUgfX08L2I+IC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaHRtbFRvRm9ybWF0dGVkVGV4dChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnhfcmVzdHJpY3Rpb25UZXh0XCIgKm5nSWY9XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQubGVuZ3RoID4gNjBcIj48Yj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVHlwZSB9fTwvYj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5odG1sVG9Gb3JtYXR0ZWRUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuc3Vic3RyaW5nKDAsIDYwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiPjwvc3Bhbj4uLi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7IGNvbG9yOiAjZmY5OTc4XCIgaWQ9XCJzaG93LXRvb2x0aXAtaWRcIj5TaG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb3JlPC9hPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBkZW1vPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJ4X3Rvb2x0aXBfaW5uZXJfYm94XCIgW2lubmVySFRNTF09XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHRcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfM19zbWFsbF9ib3hcIiBbc3R5bGUuZGlzcGxheV09XCJpc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpID8gJ2lubGluZS1mbGV4JyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImlzQ3VycmVudE1lZGljaW5lSW5GYXZvdXJpdGVzKCkgPyAnbWF4LWNvbnRlbnQnIDogbnVsbFwiICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6IDEwcHg7XCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF9jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGxcIiAoY2xpY2spPVwiYWRkVG9GYXZvdXJpdGVzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtYnV0dG9uLS1jb2xvcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5uZXh0QnV0dG9uXT1cIiFpc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ybWZhdmJ1dHRvbl09XCJpc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNDdXJyZW50TWVkaWNpbmVJbkZhdm91cml0ZXMoKTsgZWxzZSBhZGRUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlIGZyb20gZmF2b3VyaXRlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWRkVGV4dD4rIEFkZCB0byBmYXZvdXJpdGVzPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1hcmdpbi1yaWdodDogMTBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5RdWFudGl0eTogPC9zcGFuPjxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIiBuYW1lPVwicXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiBzdGVwPVwiMVwiIFttaW5dPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWxcIiAoa2V5cHJlc3MpPVwiY2hlY2tNb2JpbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJxdWFudGl0eUNoYW5nZSgpXCIgKHBhc3RlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlJlcGVhdHM6IDwvc3Bhbj48aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWUgfHwgY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJycHRzXCIgcGxhY2Vob2xkZXI9XCJcIiBbbWluXT1cIjBcIiAoaW5wdXQpPVwicmVwZWF0c0NoYW5nZSgpXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsXCIgKHBhc3RlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cImNoZWNrTW9iaWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gfHwgY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IGRpc2FibGVkUnhDb250ZW50OiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nfVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgRG9zZTpcclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3hcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+PGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjaGVja2JveDFcIiBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMudW5Vc3VhbERvc2VGbGFnXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwO2ZvbnQtc2l6ZTogMTZweDttYXJnaW4tdG9wOiAtN3B4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5VbnVzdWFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb3NlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJzZWxlY3RlZGRvc2VcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBEb3NlXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZVwiIChjbGljayk9XCJkb3NlRHJvcGRvd24oKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI0Rvc2VEcm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0RG9zZURyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93blwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInNlbGVjdERvc2VWYWx1ZShudWxsKVwiIGNsYXNzPVwicC0xMlwiPiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkb3NlIG9mIGRvc2VEYXRhXCIgKGNsaWNrKT1cInNlbGVjdERvc2VWYWx1ZShkb3NlKVwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2hsaWdodDogZG9zZVsndGV4dCddID09IGNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRvc2VbXCJ0ZXh0XCJdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5GcmVxdWVuY3k6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cInNlbGVjdGVkRnJlcXVlbmN5OlwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgRnJlcXVlbmN5XCIgcmVhZE9ubHkgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmcmVxRHJvcGRvd24oKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI0ZyZXFEcm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0RnJlcURyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJzZWxlY3RGcmVxdWVuY3lWYWx1ZShudWxsKVwiIGNsYXNzPVwicC0xMlwiPiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBmcmVxdWVuY3kgb2YgZnJlcXVlbmN5RGF0YVwiIChjbGljayk9XCJzZWxlY3RGcmVxdWVuY3lWYWx1ZShmcmVxdWVuY3kpXCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaGxpZ2h0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgZnJlcXVlbmN5Wyd0ZXh0J10gPT0gY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZnJlcXVlbmN5W1widGV4dFwiXSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+Rm9vZDo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwic2VsZWN0ZWRGcmVxdWVuY3k6XCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBGb29kXCIgcmVhZE9ubHkgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb29kRHJvcGRvd24oKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI0Zvb2REcm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0Rm9vZERyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJzZWxlY3RGb29kVmFsdWUobnVsbClcIiBjbGFzcz1cInAtMTJcIj4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZm9vZCBvZiBmb29kRGF0YVwiIChjbGljayk9XCJzZWxlY3RGb29kVmFsdWUoZm9vZClcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdobGlnaHQ6IGZvb2RbJ3RleHQnXSA9PSBjb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmb29kW1widGV4dFwiXSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+SW5zdHJ1Y3Rpb246PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cIkluc3RydWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBJbnN0cnVjdGlvblwiIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImluc3RydWN0aW9uRHJvcGRvd24oKVwiIChjaGFuZ2UpPVwiaW5zdHJ1Y3Rpb25PbkNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiYWxwaGFSZXN0cmljdGlvbigkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjSW5zdHJ1Y3Rpb25Ecm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7TV9saXN0X2JveF9zaG93OiBzZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID09PSB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cIkNoYW5nZUluc3RydWN0aW9uKG51bGwpXCIgY2xhc3M9XCJwLTEyXCI+IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJpdGVtLmlkID09IGNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCAmJiBpdGVtLnRleHQgPT0gY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA/ICdoZWlnaGxpZ2h0JyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpbnN0cnVjdGlvbkRhdGE7IGluZGV4IGFzIGlcIiAoY2xpY2spPVwiQ2hhbmdlSW5zdHJ1Y3Rpb24oaXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRleHQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0udXNlcmlkICE9PSAwXCIgY2xhc3M9XCJzcGFuX2ljb25cIiBzdHlsZT1cImZsb2F0OiByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiIHN0eWxlPVwicGFkZGluZzogNXB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRJbnN0cnVjdGlvbihpdGVtLmlkLCBpdGVtKVwiPmNyZWF0ZTwvaT48aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweDsgcGFkZGluZzogNXB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUluc3RydWN0aW9uKGl0ZW0uaWQpXCI+Y2xlYXI8L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJSWF9BRERfZHJvcGRvd25fYnRuXCIgKGNsaWNrKT1cImFkZE5ld0luc3RydWN0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICArIEFkZCBDb21wbGV4IEluc3RydWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPT0gZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBsZXhfaW5zdHJ1Y3Rpb25fYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDsgbWFyZ2luOiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGV4IEluc3RydWN0aW9uOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5zdHJ1Y3Rpb25fZmllbGRfY2xyIG1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXQgXCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJJbnN0cnVjdGlvblwiIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBDb21wbGV4IEluc3RydWN0aW9uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4OyBtYXJnaW46IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBsZXggSW5zdHJ1Y3Rpb24gRGVzY3JpcHRpb246XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBhdXRvY29tcGxldGU9XCJvZmZcIiBuYW1lPVwiXCIgaWQ9XCJcIiByb3dzPVwiMlwiIG1heExlbmd0aD1cIjUwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBDb21wbGV4IEluc3RydWN0aW9uIERlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5zdHJ1Y3Rpb25fZmllbGRfY2xyIHctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWFcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJSWF9BRERfZHJvcGRvd25fYnRuXzFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsZWFySW5zdHJ1Y3Rpb24oKVwiIGNsYXNzPVwicngtaW5zdHJ1Y3Rpb24tYnRuXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzYXZlSW5zdHJ1Y3Rpb24oKVwiIGNsYXNzPVwicngtaW5zdHJ1Y3Rpb24tYnRuXCI+U2F2ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5Sb3V0ZTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwic2VsZWN0ZWRSb3V0ZTpcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJvdXRlXCIgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlXCIgbWF4bGVuZ3RoPVwiNTBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyb3V0ZURyb3Bkb3duKClcIiAoa2V5cHJlc3MpPVwiYWxwaGFSZXN0cmljdGlvbigkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjUm91dGVEcm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0Um91dGVEcm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDEwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3JvdXRlX19pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBbdmFsdWVdPVwicm91dGVEYXRhRmlsdGVyID8gcm91dGVEYXRhRmlsdGVyIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwicm91dGVGaWx0ZXIoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIG1kLTI0IG5ld19yeF9wb3B1cF90YWJfMV9pbnB1dF9zZWFyY2ggcngtc2VhcmNoLWljb25cIj5zZWFyY2g8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0lmPVwiZmlsdGVyUm91dGVJdGVtcyhyb3V0ZURhdGEsIHJvdXRlRGF0YUZpbHRlcikubGVuZ3RoICE9IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93biByeF9kcm9wZG93bl9yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCByb3V0ZSBvZiBmaWx0ZXJSb3V0ZUl0ZW1zKHJvdXRlRGF0YSwgcm91dGVEYXRhRmlsdGVyKVxyXG4gICAgICAgICAgICAgICAgICBcIiAoY2xpY2spPVwic2VsZWN0Um91dGVzZWFyY1ZhbHVlKHJvdXRlKVwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2hsaWdodDpcclxuICAgICAgICAgICAgICAgICAgICAgIHJvdXRlWydyb3V0ZU5hbWUnXSA9PSBjb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcm91dGVbXCJyb3V0ZU5hbWVcIl0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgKm5nSWY9XCJmaWx0ZXJSb3V0ZUl0ZW1zKHJvdXRlRGF0YSwgcm91dGVEYXRhRmlsdGVyKS5sZW5ndGggPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duIHJ4X2Ryb3Bkb3duX3JvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGk+bm8gZGF0YTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlBybyBSZSBOYXRhIFByZXNjcmlwdGlvbjo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnJ4UFJOXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiUFJOQ2hhbmdlKGNvbW1vblNlcnZpY2VzLnJ4UFJOKVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5Qcm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgUmUgTmF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVzY3JpcHRpb248L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5QcmVzY3JpYmUgQXM6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19yYWRpb2JveF9idXR0b24gcnhfcmFkaW9fb3ZlcmFsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicnhfcmFkaW9fbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJyYWRpb1wiIGNsYXNzPVwibWRsLXJhZGlvX19idXR0b24gY3VzdG9tLXJhZGlvLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIlByZXNjcmliZUFzXCIgW3ZhbHVlXT1cIidQcml2YXRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT09ICdwcml2YXRlJ1wiIChjbGljayk9XCJwcml2YXRlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVNcIiAvPjxzcGFuIGNsYXNzPVwibWRsLXJhZGlvX19sYWJlbCByYWRpb190eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlByaXZhdGU8L3NwYW4+PC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyeF9yYWRpb19sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInJhZGlvXCIgY2hlY2tlZD1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvbiBkLWlubGluZSByYWRpbyBjdXN0b20tcmFkaW8tYnV0dG9uXCIgbmFtZT1cIlByZXNjcmliZUFzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiJ1BCUydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcmVzY3JpYmVBU19QQlMgfHwgY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PT0gJ3BicydcIiAoY2xpY2spPVwiUEJTKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVNcIiAvPjxzcGFuIGNsYXNzPVwibWRsLXJhZGlvX19sYWJlbCByYWRpb190eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7ICdkaXNhYmxlZC1zdHlsZSc6IHByZXNjcmliZUFTX1BCUyA9PSB0cnVlfHwgY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5QQlM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicnhfcmFkaW9fbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJyYWRpb1wiIGNoZWNrZWQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLXJhZGlvX19idXR0b24gZC1pbmxpbmUgcmFkaW8gY3VzdG9tLXJhZGlvLWJ1dHRvblwiIG5hbWU9XCJQcmVzY3JpYmVBc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIidSUEJTJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXNjcmliZUFTX1JQQlMgfHwgY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PT0gJ3JwYnMnXCIgKGNsaWNrKT1cIlJQQlMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBU1wiIC8+PHNwYW4gY2xhc3M9XCJtZGwtcmFkaW9fX2xhYmVsIHJhZGlvX3R4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgJ2Rpc2FibGVkLXN0eWxlJzogcHJlc2NyaWJlQVNfUlBCUyA9PSB0cnVlfHwgY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5SUEJTPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3hcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSE9bnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT09ICdub24gcGJzJyAmJlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YU51bWJlciAhPSAnJyAmJiBpc05vblBic0ZsYWcgPT0gZmFsc2UgJiYgIWlzUHJlc2NyaWJlQXNQcml2YXRlT25seVxyXG4gICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94XCIgY2xhc3M9XCJjaGVja19ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBXCIgKGNsaWNrKT1cInVubGlzdGVkUkEoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMudW5saXN0ZWRSQVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWwgY2hlY2tfYm94X2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFVubGlzdGVkIFJBXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgIE1fQ1RHX2JveF9oaWRlOiAhKFxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMgJiZcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRDdGdGbGFnID09IDAgJiZcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRDdGdDb1BheW1lbnQgPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJ1xyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+Q1RHL1BCUyBDbyBQYXltZW50OjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50ID09IHRydWVcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+Q1RHL1BCU1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBDbyBQYXltZW50PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IGRpc2FibGVkUnhDb250ZW50OiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nfVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlNjcmlwdCBEYXRlOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJSeFNjcmlwdERhdGVcIiBwbGFjZWhvbGRlcj1cIiAuLi8uLi8uLi4uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlN0YXJ0IERhdGU6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCIgaWQ9XCJSeFN0YXJ0RGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIgLi4vLi4vLi4uLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuc3RhcnREYXRlXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkVuZCBEYXRlOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiIGlkPVwiUnhFbmREYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIi4uLy4uLy4uLi5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmVuZERhdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+RGF5cyBCZXR3ZWVuIFJlcGVhdHM6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKHBhc3RlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBEYXlzIEJldHdlZW4gUmVwZWF0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZXx8Y29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cIm51bWJlclwiIGlkPVwiRGF5YmV0d2VlbnJlcGVhdHNcIiBbbWluXT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9ufHxjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWxcIiAoa2V5cHJlc3MpPVwiY2hlY2tNb2JpbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImRheXNjaGFuZ2UoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UHVycG9zZTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwic2VsZWN0ZWRQdXJwb3NlOlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBQdXJwb3NlXCIgcmVhZE9ubHkgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInB1cnBvc2VEcm9wZG93bigpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICNQdXJwb3NlRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94IG5ld19yeF9wb3B1cF90YWJfcHVycG9zZV9ib3ggaC0xNjBwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0UHVycG9zZURyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic2VsZWN0UHVycG9zZVZhbHVlKG51bGwpXCIgY2xhc3M9XCJwLTEyXCI+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBwdXJwb3NlIG9mIHB1cnBvc2VEYXRhXCIgKGNsaWNrKT1cInNlbGVjdFB1cnBvc2VWYWx1ZShwdXJwb3NlKVwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaGxpZ2h0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXJwb3NlWydsb29rdXBUZXh0J10gPT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHB1cnBvc2VbXCJsb29rdXBUZXh0XCJdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fQ1RHX2JveF9oaWRlOiBjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSAhPSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlN1YnN0aXR1dGlvbjo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidGhpcy5icmFuZFN1YnN0aXR1dGVzTm90QWxsb3coY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93KVwiIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgPyBjb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcclxuICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPkJyYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFN1YnN0aXR1dGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBOb3QgUGVybWl0dGVkPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9DVEdfYm94X2hpZGVfYnJhbmQ6IGNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSB9XCIgaWQ9XCJicmFuZG5hbWV0b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiaGlkZVRvb2xUaXAoKVwiIChtb3VzZWVudGVyKT1cInNob3d0b29sdGlwKGNvbW1vblNlcnZpY2VzLmxlbWksYnJhbmR0b29sdGlwKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+QnJhbmQgTmFtZTo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2JyYW5kdG9vbHRpcD48c3BhbiBjbGFzcz1cImluY2x1ZGVfYnJhbmRfdG9vbHRpcFwiPlRoZSBzZWxlY3RlZCBwcm9kdWN0IGlzIExFTUlcclxuICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZWQuIFRoZXJlZm9yZSBpdCBtYXkgYmVcclxuICAgICAgICAgICAgICAgICAgICAgIHByZXNjcmliZWQgYnkgdGhlIGJyYW5kIG5hbWUgb25seS48L3NwYW4+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgTV9DVEdfYm94X2hpZGVfYnJhbmRfbmFtZTogY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidGhpcy5pc0NoYW5nZUJyYW5kTmFtZShjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSlcIiAvPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCI+SW5jbHVkZSBCcmFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBOYW1lPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5SZWd1bGF0aW9uIDI0OjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0XCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlJlZ3VsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgMjQ8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgZGlzYWJsZWRSeENvbnRlbnQ6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmd9XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5ETyBOT1Qgc2VuZCB0byBNeVNMOjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMubXlTTENvbnNlbnRcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+RE9cclxuICAgICAgICAgICAgICAgICAgICAgICAgTk9UIHNlbmQgdG8gTXlTTDwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBQaGFybWFjeTogLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPjxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVwiIChjaGFuZ2UpPVwic2VuZFRvUGhhcm1hY3lDaGFuZ2UoKVwiIC8+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDtmb250LXNpemU6IDE2cHg7bWFyZ2luLXRvcDogLTdweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+U2VuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gUGhhcm1hY3k8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIiByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cInNlbGVjdGVkZG9zZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWVcIiAoY2xpY2spPVwic3RwVmFsdWVEcm9wZG93bigpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX0NUR19ib3hfaGlkZTogY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgIT0gdHJ1ZSB9XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjc3RwRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94IG5ld19yeF9wb3B1cF90YWJfc3RwX2JveCBoLTkzcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RzdHBEcm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd25cIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJzZWxlY3RTdHBWYWx1ZShudWxsKVwiIGNsYXNzPVwicC0xMlwiPjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHNlbmR0b3BoYXJtYWN5IG9mIHNlbmR0b3BoYXJtYWN5RGF0YVwiIChjbGljayk9XCJzZWxlY3RTdHBWYWx1ZShzZW5kdG9waGFybWFjeSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VuZHRvcGhhcm1hY3kubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+RW1lcmdlbmN5IFN1cHBseTo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5FbWVyZ2VuY3lcclxuICAgICAgICAgICAgICAgICAgICAgICAgU3VwcGx5PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFnZSA9PSAyXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHg7IG9wYWNpdHk6IDFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIiBjbGFzcz1cIm1kbC1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfdGFiXzFfZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+Ulg8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGIgW2lubmVySFRNTF09XCJjb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lXCI+PC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCIgc3R5bGU9XCJtYXJnaW46IDBweFwiPlF1YW50aXR5OiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiByZ2IoNDUsIDQ1LCA0NSk7IGZvbnQtd2VpZ2h0OiA2MDBcIj57eyBjb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiBSZXBlYXRzOiA8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoNDUsIDQ1LCA0NSk7IGZvbnQtd2VpZ2h0OiA2MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCB9fTwvc3Bhbj4gRGVmYXVsdCBRdWFudGl0eTp7e2dldERlZmF1bHRRdWFudGl0eSgpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgUmVwZWF0czpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbCYmY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzIT1udWxsP2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0czpcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSAhPSAnJyB8fGNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSAhPSAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgfX0gPC9zcGFuPjxzcGFuPnt7IGNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUgIT0gJydcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tJbnN0cnVjdGlvbkRlc2NyaXB0aW9uICE9XCJcIiAmJiBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uIT1udWxsP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbjpjb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlIT1cIlwiICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlIT1udWxsP2NvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWU6XCJcIn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSAhPSAnJ1wiIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUC5SLk4gOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5yeFBSTlwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMucnhQUk5cIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+RGF5cyBCZXR3ZWVuIFJlcGVhdHM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKVwiPnt7Y29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWx9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbClcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbnVzdWFsIERvc2U6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZ1wiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMudW5Vc3VhbERvc2VGbGFnXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlNjcmlwdCBEYXRlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3t0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGV8ZGF0ZTonZGQtTU0teXl5eSd9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5TdGFydCBEYXRlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3t0aGlzLmNvbW1vblNlcnZpY2VzLnN0YXJ0RGF0ZXxkYXRlOidkZC1NTS15eXl5J319PC9zcGFuPiwgRW5kIERhdGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3RoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZXxkYXRlOidkZC1NTS15eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5QcmVzY3JpYmUgQXM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTKVwiPnt7Y29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUylcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+UHVycG9zZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlKVwiPnt7Y29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluY2x1ZGUgQnJhbmQgTmFtZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWVcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lXCI+LTwvc3Bhbj4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCcmFuZCBTdWJzdGl0dXRpb24gTm90IFBlcm1pdHRlZDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93XCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWd1bGF0aW9uIDI0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjRcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLnJlZ3VsYXRpb24yNFwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENURy9QQlMgQ28gUGF5bWVudDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50XCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnRcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBETyBOT1Qgc2VuZCB0byBNeVNMOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5teVNMQ29uc2VudFwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMubXlTTENvbnNlbnRcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kIHRvIFBoYXJtYWN5OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lcIj4tPC9zcGFuPiwgU2VuZCB0byBQaGFybWFjeSBWYWx1ZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IWNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSk/Y29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZTonLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWVyZ2VuY3kgU3VwcGx5OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHlcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+Tm90ZSBUbyBQaGFybWFjeTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbmFtZT1cIlwiIGlkPVwiXCIgcm93cz1cIjNcIiBtYXhsZW5ndGg9XCI1MFwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWEgcngtbS13LTUzNXBcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5Bbm5vdGF0aW9uOjwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbmFtZT1cIlwiIGlkPVwiXCIgcm93cz1cIjNcIiBtYXhsZW5ndGg9XCI1MDBcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0aGlzLmNvbW1vblNlcnZpY2VzLmFubm90YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWEgcngtbS13LTUzNXBcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5SZWFzb24gRm9yIFByZXNjcmlwdGlvbjo8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG5hbWU9XCJcIiBpZD1cIlwiIHJvd3M9XCIzXCIgbWF4bGVuZ3RoPVwiNTBcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYSByeC1tLXctNTM1cFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3t0aGlzLmdldFN0YXRlQXV0aG9yaXR5TGFiZWwoY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbjogMHB4O21hcmdpbi10b3A6IC04cHg7bWFyZ2luLWJvdHRvbTogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0ZS10eHQtY29sb3IgbmV3X3J4X3BvcHVwX2xhYmVsX3BcIj4oUmVsZXZhbnQgdG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSB9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImFwcHJvdmFsXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuU3RhdGVBdXRob3JpdHlOdW1iZXJcIiBtYXhsZW5ndGg9XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJhdXRob3JpdHlOb1ZhbGlkYXRpb24oJGV2ZW50KVwiIChuZ01vZGVsQ2hhbmdlKT1cImF1dGhvcml0eU5vQ2hhbmdlKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICduZXdfcnhfbm9fYXV0aG9yaXR5Jzohc2hvd0F1dGhvcml0eUJveChcclxuICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9uczonJyxjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyxjb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSxjb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKVxyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHNob3dBdXRob3JpdHlCb3goXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/ICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9uczonJyxcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDBweFwiIGNsYXNzPVwibWRsLWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tOC1jb2wgbWRsLWNlbGwtLTYtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfTmV3XCI+SE9UTElORTogPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3NwYW5cIj57e2NvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUlBCUyc/JzE4MDA1NTI1ODAnOicxODAwODg4MzMzJ319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS00LWNvbCBtZGwtY2VsbC0tMi1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcGFzc2V0cy5ob2xhLmhlYWx0aC9yeC13aWRnZXRzL3J4LW1pbXMucG5nXCIgYWx0PVwiTUlNUyBsb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHg7IGhlaWdodDogYXV0b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzY3JpYmVyIE5hbWU6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmZpcnN0TmFtZSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiBcIiArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5sYXN0TmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNjcmliZXIgTnVtYmVyOjxzcGFuPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRpZW50IE1lZGljYXJlIE51bWJlcjo8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml0eSBGb3JtIE5vOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+QXV0aG9yaXR5IEl0ZW06PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImF1dGhvcml0eV9pdGVtX3RleHRcIiBbaW5uZXJIVE1MXT1cImNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWVcIj48L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wIG5ld19yeF9wb3B1cF90YWJfc21hbGxCb3hlc1wiIHN0eWxlPVwibWFyZ2luOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFudGl0eTo8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoNDUsIDQ1LCA0NSk7IGZvbnQtd2VpZ2h0OiA2MDBcIj4ge3sgY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPiBSZXBlYXRzOjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYig0NSwgNDUsIDQ1KTsgZm9udC13ZWlnaHQ6IDYwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCB9fTwvc3Bhbj4gRGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFF1YW50aXR5Ont7Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbCYmY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyE9bnVsbD8oY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWc/XCIxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeCBcIjpcIlwiKStjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzOlwiXCJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBlYXRzOnt7Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbCYmY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzIT1udWxsP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0czpcIlwifX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwicGFkZGluZzogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFBCUyBMaXN0ZWQgSW5kaWNhdGlvbiBBdXRob3JpdHk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLWhlaWdodDogNzBweDsgbWF4LWhlaWdodDogMTUwcHg7IG92ZXJmbG93OiBhdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPVwibWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMTVweDtsaXN0LXN0eWxlOiBub25lO3BhZGRpbmc6IDBweDtcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2hvd1Jlc3RyaWN0aW9ucyA9PSB0cnVlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJmb250LXNpemU6IDEycHg7cGFkZGluZzogMHB4IDEwcHg7bWFyZ2luLWJvdHRvbTogMTBweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5ld19yeF9wb3BfYXV0X2ludCBjdXJzb3JcIiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdHJpY3Rpb24gb2YgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAuUmVzdHJpY3Rpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4IGFzIGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcnhfcG9wX2F1dF9pbnNfc2VsZWN0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID09IGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uUHJldmlldyAhPSAnJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCAhPSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGlvbkF1dGhvcml0eShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHM6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0czonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ4X3Jlc3RyaWN0aW9uVGV4dFwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0Lmxlbmd0aCA8IDgwXCI+PGI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblR5cGUgfX08L2I+IC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sVG9Gb3JtYXR0ZWRUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj48L3NwYW4+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ4X3Jlc3RyaWN0aW9uVGV4dFwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dC5sZW5ndGggPiA4MFwiPjxiIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRpb25BdXRob3JpdHkoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0czonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVHlwZSB9fTwvYj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGlvbkF1dGhvcml0eShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD9jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD9jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHM6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgW2lubmVySFRNTF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sVG9Gb3JtYXR0ZWRUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5zdWJzdHJpbmcoMCwgODApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPjwvc3Bhbj4uLi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7IGNvbG9yOiAjZmY5OTc4XCIgaWQ9XCJzaG93LXRvb2x0aXAtaWRcIj5TaG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vcmU8L2E+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcGRlbW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJ4X3Rvb2x0aXBfaW5uZXJfYm94XCIgW2lubmVySFRNTF09XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHRcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5QQlMgTm90ZXM6PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBhdXRvY29tcGxldGU9XCJvZmZcIiBuYW1lPVwiXCIgaWQ9XCJcIiByb3dzPVwiMlwiIG1heGxlbmd0aD1cIjUwMFwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5wYnNOb3Rlc1wiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGlvbiBGb3IgVGhpcyBBdXRob3JpdHk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBhdXRvY29tcGxldGU9XCJvZmZcIiBuYW1lPVwiXCIgaWQ9XCJcIiByb3dzPVwiMlwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZHNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWEgcngtbS13LTEwMFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QXV0aG9yaXR5TGFiZWwoY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBuYW1lPVwiYXBwcm92YWxcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm9cIiAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0Y2hhbmdlQXBwcm92YWxObygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJhdXRob3JpdHlOb1ZhbGlkYXRpb24oJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAhc2hvd0F1dGhvcml0eUJveChcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD8gY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnM6JycsXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSxcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMudW5saXN0ZWRSQVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IHJpZ2h0XCIgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcGFzc2V0cy5ob2xhLmhlYWx0aC9yeC13aWRnZXRzL3J4LW1pbXMucG5nXCIgYWx0PVwiTUlNUyBsb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogODBweDsgaGVpZ2h0OiBhdXRvXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiTm9fQXV0aG9yaXR5X2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHA+Tm8gQXV0aG9yaXR5IFJlcXVpcmVkPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X2Zvb3RlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfZm9vdGVyX2JyYW5kXCI+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtbC0xMFwiPjxzcGFuPkhvbGEgQ29uc3VsdCB8IDEuMCA8c3BhbiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnNhbmRib3hcIj58IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJ4X3N0YWdpbmdcIj5UaGlzIGlzIGEgc2FuZGJveCBlbnZpcm9ubWVudDwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvcD5cclxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm10LTE1cFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyeF9wb3B1cF9mb290ZXJfdGV4dFwiPsKpIDIwMjUgSG9sYSBIZWFsdGgsIGEgYnJhbmQgb2YgUGFja2FwaWxsIFB0eSBMdGQgfCB2XHJcbiAgICAgICAgICAgICAgICAgIDEuMS4wIHxcclxuICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vaG9sYS5oZWFsdGgvY29uc3VsdC10ZXJtc1wiIHRhcmdldD1cIl9ibGFua1wiPlRlcm1zPC9hPiB8XHJcbiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2hvbGEuaGVhbHRoL2NvbnN1bHQtcHJpdmFjeS1wb2xpY3lcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Qcml2YWN5IFBvbGljeTwvYT4gfFxyXG4gICAgICAgICAgICAgICAgICA8YSBocmVmPVwibWFpbHRvOnN1cHBvcnRAaG9sYS5oZWFsdGhcIiB0YXJnZXQ9XCJfYmxhbmtcIj5IZWxwPC9hPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
4752
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaG9sYS1yeC9zcmMvbGliL3J4L3J4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2hvbGEtcngvc3JjL2xpYi9yeC9yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBMEIsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUcxSyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxrRkFBa0YsQ0FBQztBQUMzSSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUNySSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7O0FBUTNFLE1BQU0sT0FBTyxXQUFXO0lBcUd0QixZQUNTLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzdCLFVBQXNCLEVBQ3RCLFlBQStCLEVBQ2hDLFFBQWtCLEVBQ2pCLFFBQW1CLEVBQ25CLEtBQWlCLEVBQ2pCLGdCQUFrQztRQVBuQyxlQUFVLEdBQVYs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QUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQy9kLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM3SixVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUks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LEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNJLFVBQVU7c0JBQTFELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVyQyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRVAsdUJBQXVCO3NCQUR0QixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFxRlYsT0FBTztzQkFBaEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNkLFVBQVU7c0JBQW5DLFNBQVM7dUJBQUMsYUFBYTtnQkFDYSxPQUFPO3NCQUEzQyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBb0NuQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIE9uSW5pdCwgT3V0cHV0LCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZXMgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21tb24nO1xyXG5pbXBvcnQgeyBCcmFuZEluY2x1ZGVDb21wb25lbnQgfSBmcm9tICcuLi9icmFuZC1pbmNsdWRlL2JyYW5kLWluY2x1ZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXZhaWxhYmxlRm9ybXVsYXRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vYnJhbmQtaW5jbHVkZS9hdmFpbGFibGUtZm9ybXVsYXRpb25zL2F2YWlsYWJsZS1mb3JtdWxhdGlvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJc0F1dGhvcml0eUNvbXBvbmVudCB9IGZyb20gJy4uL2lzLWF1dGhvcml0eS9pcy1hdXRob3JpdHkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVhbFRpbWVQcmVzY3JpcHRpb25Nb25pdG9yaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVhbC10aW1lLXByZXNjcmlwdGlvbi1tb25pdG9yaW5nL3JlYWwtdGltZS1wcmVzY3JpcHRpb24tbW9uaXRvcmluZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25maXJtUGF0aWVudENvbnRhY3REZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS1wYXRpZW50LWNvbnRhY3QtZGV0YWlscy9jb25maXJtLXBhdGllbnQtY29udGFjdC1kZXRhaWxzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFzc3dvcmQvcGFzc3dvcmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgY29uZmlnLCBlcnJvcmNvbmZpZyB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9jb25maWcnO1xyXG5pbXBvcnQgeyBDZWFzZVBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY2Vhc2UtcG9wdXAvY2Vhc2UtcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVpc3N1ZVBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVpc3N1ZS1wb3B1cC9yZWlzc3VlLXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsb3NlUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9jbG9zZS1wb3B1cC9jbG9zZS1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXJ4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcnguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3J4LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnTWVkaWNpbmVEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSB3cmFwcGVyUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdQcmVzY3JpYmVEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcmVzY3JpYmVEcm9wZG93blJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnRG9zZURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRvc2VSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ0ZyZXFEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBmcmVxUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdzdHBEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBzdHBSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ0Zvb2REcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBmb29kUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdJbnN0cnVjdGlvbkRyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIEluc3RydWN0aW9uUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdSb3V0ZURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIHJvdXRlUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdQdXJwb3NlRHJvcGRvd24nLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVycG9zZVJlZiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBPdXRwdXQoKSBjbG9zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzdWJtaXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAVmlld0NoaWxkKCdzZWxlY3RBY3Rpb25Ecm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmITogRWxlbWVudFJlZjtcclxuICBzZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlO1xyXG4gIGRvc2VEYXRhID0gW107XHJcbiAgZnJlcXVlbmN5RGF0YSA9IFtdO1xyXG4gIHNlbmR0b3BoYXJtYWN5RGF0YTogYW55ID0gW107XHJcbiAgZm9vZERhdGEgPSBbXTtcclxuICBwdXJwb3NlRGF0YSA9IFtdO1xyXG4gIHJvdXRlRGF0YSA9IFtdO1xyXG4gIGNlYXNlRGF0YSA9IFtdO1xyXG4gIGluc3RydWN0aW9uRGF0YTogYW55ID0gW107XHJcbiAgcm91dGVEYXRhRmlsdGVyID0gJyc7XHJcbiAgSW5zdHJ1Y3Rpb25JZCA9ICcnO1xyXG4gIC8vIHRpbWVyOiBhbnk7XHJcbiAgLy93YWl0VGltZSA9IDI1MDA7XHJcbiAgaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gIHBhZ2UgPSAxO1xyXG4gIHNlbGVjdGVkTWVkaWNpbmVEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdERvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdEZyZXFEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdHN0cERyb3Bkb3duID0gZmFsc2U7XHJcbiAgc2VsZWN0Rm9vZERyb3Bkb3duID0gZmFsc2U7XHJcbiAgc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gdHJ1ZTtcclxuICBzZWxlY3RSb3V0ZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgc2VsZWN0UHVycG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgbWVkaVNlYXJjaFZhbHVlID0gJyc7XHJcbiAgSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9ICcnO1xyXG4gIHNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICBzZWFyY2hlZE1lZGljaW5lTGlzdDogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsOiBhbnkgPSBbXTtcclxuICBvbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICByeE9ubHlQQlMgPSBmYWxzZTtcclxuICByeFByaXZhdGUgPSBmYWxzZTtcclxuICByZXN0cmljdGlvbnMgPSBudWxsO1xyXG4gIGlzU2hvd1Jlc3RyaWN0aW9ucyA9IGZhbHNlO1xyXG4gIHByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgcHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgYnJhbmRNZWRpY3Byb2R1Y3RJZCA9ICcnO1xyXG4gIGJyYW5kTWVkaWNwYnNDb2RlID0gJyc7XHJcbiAgYnJhbmRNZWRpY1F0eSA9ICcnO1xyXG4gIGJyYW5kTWVkaWNSZXAgPSAnJztcclxuICBzZWxlY3RlZEJyYW5kSW5kZXggPSAnJztcclxuICBtb2xlY3VsZU5hbWVUZXh0ID0gJyc7XHJcbiAgbW9sZWN1bGVOYW1lVHlwZSA9ICcnO1xyXG4gIG1vbGVjdWxlU3RyZW5ndGhUZXh0ID0gJyc7XHJcbiAgaXNSdHBtTmV4dCA9IGZhbHNlO1xyXG4gIHNlbGVjdGlvbmJ0bkxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgaXNOb25QYnNGbGFnOiBhbnkgPSBmYWxzZTtcclxuICBhYm9ydEJ0bkZsYWcgPSBmYWxzZTtcclxuICBhYm9ydGRpc2FibGUgPSBmYWxzZTtcclxuICByZXNwb25zZURhdGE6IGFueSA9IHtcclxuICAgIGlzQWJvcnQ6IGZhbHNlLFxyXG4gICAgaXNQcmVzY3JpYmU6IGZhbHNlLFxyXG4gICAgYWJvcnRTdWNjZXNzOiBmYWxzZSxcclxuICAgIHByZXNjcmliZVN1Y2Nlc3M6IGZhbHNlLFxyXG4gICAgcHJlc2NyaWJlZGF0YTogXCJcIixcclxuICAgIGFib3J0TXNnOiBcIlwiLFxyXG4gICAgUHJlc2NyaWJlTXNnOiBcIlwiLFxyXG4gICAgcHJlc2NyaWJlRXJyb3I6IGZhbHNlLFxyXG4gICAgYWJvcnRFcnJvcjogZmFsc2UsXHJcbiAgICBwcmVzY3JpYmVFcnJfY29kZTogXCJcIixcclxuICAgIGFib3J0RXJyX2NvZGU6IFwiXCIsXHJcbiAgICBib2R5OiBcIlwiXHJcbiAgfVxyXG4gIHByb2RIaWRkZW5OYW1lID0gXCJcIjtcclxuICBQcm9kdWN0VHlwZSA9IFwiXCI7XHJcbiAgUHJvZHVjdFNlYXJjaE5hbWUgPSBcIlwiO1xyXG4gIHNlYXJjaE1lZGljaW5lc0xlbmd0aDogYW55ID0gXCJcIjtcclxuICBzZWFyY2hNZWRpY2luZXNQYWdlTnVtYmVyID0gMTtcclxuICBzZWFyY2hCeW5hbWVMZW5ndGg6IGFueSA9IFwiXCI7XHJcbiAgc2VhcmNoQnluYW1lUGFnZU51bWJlciA9IDE7XHJcbiAgaXNlcHJpc2NyaWJlcHJpbnQgPSBmYWxzZTtcclxuICBlZGl0SW5zdHJ1Y3Rpb25GbGFnID0gZmFsc2U7XHJcbiAgUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICBTZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgcHJlc2NyaWJlQVNfUlBCU19VUkEgPSB0cnVlO1xyXG4gIHRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICBpc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgPSBmYWxzZTtcclxuICB0ZW1wQXV0aG9yaXR5Rm9ybU5vID0gXCJcIjtcclxuICBjbGllbnRJZDogYW55ID0gXCJcIjtcclxuICBzaG93RmF2b3VyaXRlTWVkID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgncnh3aWRnZXRzJywgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgndG9vbHRpcGRlbW8nKSBteVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCd0ZXN0JywgeyBzdGF0aWM6IHRydWUgfSkgdG9vbHRpcCE6IG51bGw7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYXBpU2VydmljZTogQXBpU2VydmljZSxcclxuICAgIHB1YmxpYyBjb21tb25TZXJ2aWNlczogQ29tbW9uU2VydmljZXMsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIGNoYW5nZWRldGVjdDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgdmlld1JlZkNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICApIHtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wb3Bfd2lkJywgYDEyMDBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXBvcHVwdycsIGAxMjAwcHhgKTtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWFkZXJwYWRkaW5nJywgYDBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXBvcHVwaCcsIGA2NTBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlYWRlcmZvbnR3ZWlnaHQnLCBgNDAwYCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XHJcbiAgICAgICAgdGhpcy5oaWRlVG9vbFRpcCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhpZGVUb29sVGlwKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMudG9vbHRpcCkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLnRvb2x0aXApO1xyXG4gICAgICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGlkZVRvb2xUaXBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25jbGljayhldmVudDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LmNsYXNzTmFtZSA9PSBcInJ4X3Rvb2x0aXBfaW5uZXJfYm94XCIgfHwgZXZlbnQudGFyZ2V0LmNsYXNzTmFtZS5pbmNsdWRlcyhcIl9fcmVhY3RfY29tcG9uZW50X3Rvb2x0aXBcIikpIHtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlkID09ICdzaG93LXRvb2x0aXAtaWQnKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZGVUb29sVGlwKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkgeyB0aGlzLmNyZWF0ZVRvb2xUaXAoZXZlbnQpIH1cclxuICAgICAgICB9IGVsc2UgeyB0aGlzLmhpZGVUb29sVGlwKCk7IH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJvbmNsaWNrXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNsaWVudElkID0gdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRDcmVkZXRpYWwoKTtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5nZXRBbGxNaW1zVmFsdWUoKTtcclxuICAgICAgdGhpcy5nZXRJbnN0cnVjdGlvblZhbHVlcygpO1xyXG4gICAgICB0aGlzLmdldEZhdm91cnRpZXNMaXN0KCk7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLnNldEVkaXRWYWx1ZXModGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdClcclxuICAgICAgICAgIHRoaXMuZ2V0UmVzdHJpY3RlZE1lZGljaW5lKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMgPSB7fTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmloaU51bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuaWhpTnVtYmVyID09IG51bGwgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5paGlOdW1iZXIgPT0gdW5kZWZpbmVkIHx8IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuaWhpTnVtYmVyID09IFwiXCIgPyAwIDogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5paGlOdW1iZXJcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIgPT0gbnVsbCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyID09IHVuZGVmaW5lZCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyID09IFwiXCIgPyAwIDogdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlclxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5ocGlpTnVtYmVyID09IG51bGwgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXIgPT0gdW5kZWZpbmVkIHx8IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5ocGlpTnVtYmVyID09IFwiXCIgPyAwIDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXJcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwibmdPbkluaXRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSZXN0cmljdGVkTWVkaWNpbmUoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfUkVTVFJJQ1RFRF9NRURJQ0lORSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UmVzdHJpY3RlZE1lZGljaW5lXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSByZXMucmVzcG9uc2U7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5wcm9kdWN0SWQpKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5maW5kSW5kZXgoKHg6IHsgcHJvZHVjdElkOiBhbnk7IH0pID0+IHgucHJvZHVjdElkID09IE51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5wcm9kdWN0SWQpKTtcclxuICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRkYXRhID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkZGF0YSkgJiYgc2VsZWN0ZWRkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QudW5zaGlmdChzZWxlY3RlZGRhdGFbMF0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0ZWRNZWRpY2luZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRSZXN0cmljdGVkTWVkaWNpbmVcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRSZXN0cmljdGVkTWVkaWNpbmVcIik7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0ZWRNZWRpY2luZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlKGRhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB2YXIgdmFsdWUgPSBkYXRhICE9IG51bGwgPyBkYXRhIDogdGhpcy5jb21tb25TZXJ2aWNlcy5jbG9zZUVycm9yUmVzcG9uc2UgIT0gbnVsbCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSAhPSB1bmRlZmluZWQgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSA6IG51bGw7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xvc2VFcnJvclJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2xvc2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjZWFzZVByZXNjcmliZU1lZCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsIDIpKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKENlYXNlUG9wdXBDb21wb25lbnQsIHRoaXMuY29udGVudCwgdGhpcy5jZWFzZURhdGEpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKHJlcy5kYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjZWFzZVByZXNjcmliZU1lZFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbmNlbFByZXNjcmliZU1lZCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsIDQpKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKENsb3NlUG9wdXBDb21wb25lbnQsIHRoaXMuY29udGVudCwgMSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCByZXMuZGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzLmRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAocmVzICE9IG51bGwgJiYgcmVzLmlzRGlzcGVuc2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihDb25maXJtUGF0aWVudENvbnRhY3REZXRhaWxzQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDIpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiBkYXRhLmZsYWcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihDZWFzZVBvcHVwQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIHRoaXMuY2Vhc2VEYXRhKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlICE9IG51bGwgJiYgcmVzcG9uc2UucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNhbmNlbFByZXNjcmliZU1lZFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbmNlbERyYWZ0KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywgNCkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQ2xvc2VQb3B1cENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHJlcy5kYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2FuY2VsRHJhZnRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWlzc3VlUHJlc2NyaWJlTWVkKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywgMykpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUmVpc3N1ZVBvcHVwQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKHJlcy5kYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyZWlzc3VlUHJlc2NyaWJlTWVkXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpbnRQcmVzY3JpYmVNZWQoKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywgMSkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgcnhJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkLFxyXG4gICAgICAgICAgdHlwZTogXCIxXCIsXHJcbiAgICAgICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUlhfUFJJTlQgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQgKyBcIiZ0eXBlPTEmY2xpZW50SWQ9XCIgKyB0aGlzLmNsaWVudElkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzcG9uc2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGF0b2IocmVzcG9uc2UuZmlsZSkuc3BsaXQoJycpLm1hcChjaGFyID0+IGNoYXIuY2hhckNvZGVBdCgwKSkpO1xyXG4gICAgICAgICAgICAgICAgICB2YXIgYmJiID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9wZGZcIiB9KTtcclxuICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJiYik7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgICAgICAgICBpZiAobmV3V2luZG93KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3V2luZG93LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmludFdhcm5pbmdQb3AoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInByaW50UHJlc2NyaWJlTWVkXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRQcmVzY3JpYmVNZWRcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUoc2NyaXB0dHlwZTogYW55LCBzdGF0dXM6IGFueSwgZmxhZzogYW55KTogQm9vbGVhbiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzdGF0dXMpICYmIHN0YXR1cy50b0xvd2VyQ2FzZSgpID09ICdwcmVzY3JpYmVkJykge1xyXG4gICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmxhZyA9PSAyKSB7XHJcbiAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzY3JpcHR0eXBlKSAmJiBzY3JpcHR0eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ2UnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmxhZyA9PSAzKSB7XHJcbiAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzY3JpcHR0eXBlKSAmJiBzY3JpcHR0eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ2UnICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZsYWcgPT0gNCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc3RhdHVzKSAmJiBzdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAnZHJhZnQnICYmIGZsYWcgPT0gNCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjaGVja1N0YXR1c0FuZFNjcmlwdHR5cGVcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhZ2VOdW1iZXJPbmVUb05leHQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81MC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81MC5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9IFN0cmluZyh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpLnRyaW0oKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUpLnRyaW0oKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUudHJpbSgpKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpLnRyaW0oKTtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpICYmIHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSkgJiYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkpICYmIHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81NC5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTQubWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5jbGVhckluc3RydWN0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIHx8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIDw9IDAgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gXCJuYW5cIikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzU1Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzU1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81NS5tZXNzYWdlKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPT0gXCJOYU5cIikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCA9IFwiMFwiO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlKS50cmltKCk7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzc1Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzc1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl83NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl83NS5tZXNzYWdlKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQ3Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzQ3LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80Ny5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ny5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnN0YXJ0RGF0ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80OC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl80OC5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDguY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDgubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQ5Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzQ5LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80OS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80OS5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5nZXRUcmFkZU5hbWVEaXNwbGF5KCk7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT0gJ2RyYWZ0JyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgIGxldCByZXN0ZWN0ZWRTdGF0ZXMgPSBbJ05TVycsICdBQ1QnLCAnV0EnLCAnUUxEJywgJ05UJywgJ1RBUyddO1xyXG4gICAgICAgIGxldCBwYXRpZW50U3RhdGVzID0gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHJlc3RlY3RlZFN0YXRlcy5pbmRleE9mKHBhdGllbnRTdGF0ZXMpICE9IC0xICYmIHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkgPiAwKSB7XHJcbiAgICAgICAgICBpZiAoKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA9PSAwKSkge1xyXG4gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGVycm9yY29uZmlnLmVycm9yXzU2Lm1lc3NhZ2UucmVwbGFjZShcIiQwXCIsIHBhdGllbnRTdGF0ZXMpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihtZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzU2LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTYuY29kZSwgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHN0YXRlU2NoZWR1bGVOdW1iZXIgPSB0aGlzLmdldFN0YXRlU2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzdGF0ZVNjaGVkdWxlTnVtYmVyKSAhPSBudWxsICYmIHN0YXRlU2NoZWR1bGVOdW1iZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgaWYgKHBhdGllbnRTdGF0ZXMudG9Mb3dlckNhc2UoKSA9PSBcInRhc1wiICYmIHN0YXRlU2NoZWR1bGVOdW1iZXJbMF0uaW5kZXhPZihcIlM0RFwiKSAhPSAtMSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCA9PSBcIlwiIHx8IHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPT0gbnVsbCB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjgubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82OC5jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjguY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjgubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHBhdGllbnRTdGF0ZXMudG9Mb3dlckNhc2UoKSA9PSBcIm5zd1wiICYmIHN0YXRlU2NoZWR1bGVOdW1iZXJbMF0uaW5kZXhPZihcIlM0QlwiKSAhPSAtMSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCA9PSBcIlwiIHx8IHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPT0gbnVsbCB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjkubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82OS5jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjkuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjkubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoKHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSkpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjYubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82Ni5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjYuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjYubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHZhciByeERpc3BsYXlOYW1lID0gdGhpcy5nZXRUcmFkZU5hbWUoKTtcclxuICAgICAgLy8gaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRvTG93ZXJDYXNlKCkgPT0gJ2dhdXplJykge1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSByeERpc3BsYXlOYW1lO1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHJ4RGlzcGxheU5hbWU7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAvLyAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHJ4RGlzcGxheU5hbWUudHJpbSgpICsgJyAnICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udHJpbSgpICsgJyAnICsgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoID09IG51bGwgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoLnRyaW0oKSArIHRoaXMucnhTdHJlbmd0aGNhbGN1bGF0aW9uKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpO1xyXG4gICAgICAvLyAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSByeERpc3BsYXlOYW1lLnRyaW0oKSArICcgJyArICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCA9PSBudWxsID8gJycgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aC50cmltKCkgKyB0aGlzLnJ4U3RyZW5ndGhjYWxjdWxhdGlvbih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pKTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyB2YXIgcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gdGhpcy5nZXRUcmFkZU5hbWUoKTtcclxuICAgICAgLy8gaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlIHx8IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRvTG93ZXJDYXNlKCkgPT0gJ2dhdXplJykge1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSkge1xyXG4gICAgICAvLyAgICAgbGV0IGV4dGVtcFRUUE5hbWUgPSB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgLy8gICAgIGxldCBQSXRlbVRocmVlID0gZXh0ZW1wVFRQTmFtZS5sYXN0SW5kZXhPZignWycpO1xyXG4gICAgICAvLyAgICAgbGV0IFBJdGVtVGhyZWUxID0gZXh0ZW1wVFRQTmFtZS5zbGljZSgwLCBQSXRlbVRocmVlKTtcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gUEl0ZW1UaHJlZTEudHJpbSgpO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICBsZXQgUEl0ZW1UaHJlZTIgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUubGFzdEluZGV4T2YoJ1snKTtcclxuICAgICAgLy8gICAgIGxldCBQSXRlbVRocmVlMyA9IHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZS5zbGljZSgwLCBQSXRlbVRocmVlMik7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IFBJdGVtVGhyZWUzLnRyaW0oKTtcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUudHJpbSgpICsgJyAnICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gKyAnICcgKyAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGggPT0gbnVsbCA/ICcnIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGgudHJpbSgpICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZS50b0xvd2VyQ2FzZSgpICE9ICdub24gcGJzJyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgIT0gJ3ByaXZhdGUnICYmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnID8gcGFyc2VGbG9hdCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpICsgMC41IDogMSkgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cykgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpKSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKElzQXV0aG9yaXR5Q29tcG9uZW50LCB0aGlzLmNvbnRlbnQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubW9sZWN1bGUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFjZ3MsIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluY2x1ZGVicmFuZHBvcG9wZW4oKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oc2NoZWR1bGVOdW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUzhXYXJpbmdQb3BPcGVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKHNjaGVkdWxlTnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyA6IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKHNjaGVkdWxlTnVtYmVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuaW5jbHVkZWJyYW5kcG9wb3BlbigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlV2FyaW5nUG9wT3BlbihzY2hlZHVsZU51bWJlcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLlM4V2FyaW5nUG9wT3BlbigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5kb3NlRnJlcVZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oXCJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicGFnZU51bWJlck9uZVRvTmV4dFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY2x1ZGVicmFuZHBvcG9wZW4oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLm1vbGVjdWxlKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hY2dzLCB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihCcmFuZEluY2x1ZGVDb21wb25lbnQsIHRoaXMuY29udGVudCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uID1cclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICAgICAgdmFyIG1vbGVjdWxlZGF0YSA9IHtcclxuICAgICAgICAgICAgbW9sZWN1bGVOYW1lVGV4dDogdGhpcy5tb2xlY3VsZU5hbWVUZXh0LFxyXG4gICAgICAgICAgICBtb2xlY3VsZU5hbWVUeXBlOiB0aGlzLm1vbGVjdWxlTmFtZVR5cGUsXHJcbiAgICAgICAgICAgIG1vbGVjdWxlU3RyZW5ndGhUZXh0OiB0aGlzLm1vbGVjdWxlU3RyZW5ndGhUZXh0LFxyXG4gICAgICAgICAgICBzZWxlY3RlZE1lZGljaW5lTGlzdDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQXZhaWxhYmxlRm9ybXVsYXRpb25zQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIG1vbGVjdWxlZGF0YSkuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodmFsLnJlc3BvbnNlZmxhZykge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgICB2YWwuZmxhZ1xyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Db25maXJtQWx0ZXJCcmFuZChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24gIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQnJhbmRJbmRleCAhPSBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkQnJhbmRJbmRleFxyXG4gICAgICAgICAgICAgICAgICAgIDogMFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljcHJvZHVjdElkID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNwYnNDb2RlID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNRdHkgPSAnJztcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJhbmRNZWRpY1JlcCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNwcm9kdWN0SWQgPSAnJztcclxuICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNwYnNDb2RlID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljUXR5ID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljUmVwID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oc2NoZWR1bGVOdW1iZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImluY2x1ZGVicmFuZHBvcG9wZW5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3NlRnJlcVZhbGlkYXRpb24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlKSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpIHx8IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImRvc2VGcmVxVmFsaWRhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIFM4V2FyaW5nUG9wT3BlbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0gXCJXYXJuaW5nISBUaGlzIGlzIGFuIFM4IGRydWcuIFlvdSBtaWdodCBuZWVkIHRvIGhhbmQgd3JpdGUgeW91ciBzaWduYXR1cmUsIHF1YW50aXR5IGluIHdvcmRzIGFuZCBmaWd1cmVzIGFuZC9vciBvdGhlciBkZXRhaWxzIGFzIHBlciB0aGUgc3RhdGUgcmVndWxhdGlvbnNcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBkYXRhKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIlM4V2FyaW5nUG9wT3BlblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlV2FyaW5nUG9wT3BlbihzY2hlZHVsZU51bWJlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0YSA9IFwiRW5zdXJlIGFsbCBuZWNlc3NhcnkgZmllbGRzIGFyZSBmaWxsZWQgdG8gYXZvaWQgcGhhcm1hY3kgcmVqZWN0aW9uIGR1ZSB0byBpbmNvbXBsZXRlIGluZm9ybWF0aW9uIC0gRG9zZSwgRnJlcXVlbmN5LCBSb3V0ZSBldGMuXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWFsVGltZVByZXNjcmlwdGlvbk1vbml0b3JpbmdDb21wb25lbnQsIHRoaXMuY29udGVudCwgZGF0YSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2NoZWR1bGVOdW1iZXIpICYmIHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwidmFsaWRhdGVXYXJpbmdQb3BPcGVuXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQ29uZmlybUFsdGVyQnJhbmQobWVkOiBhbnksIGluZGV4OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmJyYW5kTWVkaWNwcm9kdWN0SWQgPSAnJztcclxuICAgICAgdGhpcy5icmFuZE1lZGljcGJzQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLmJyYW5kTWVkaWNRdHkgPSAnJztcclxuICAgICAgdGhpcy5icmFuZE1lZGljUmVwID0gJyc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YU9uY2hhbmdlb2ZNZWRpY2luZShtZWQpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHZhciBNZWQgPSBbXTtcclxuICAgICAgTWVkLnB1c2gobWVkKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IE1lZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBNZWQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0Rm9ybXVsYXRpb24obWVkLCAwKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQ29uZmlybUFsdGVyQnJhbmRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb2xlY3VsZShhY2dzOiBhbnksIG1vbGVjdWxlU3RyZW5ndGg6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoYWNncykpIHtcclxuICAgICAgICBpZiAoYWNncy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgaWYgKGFjZ3NbMF0uYWNnTmFtZS5pbmRleE9mKCcrJykgIT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUZXh0ID0gYWNnc1swXS5hY2dOYW1lO1xyXG4gICAgICAgICAgICB0aGlzLm1vbGVjdWxlTmFtZVR5cGUgPSAnUzInO1xyXG4gICAgICAgICAgICB0aGlzLm1vbGVjdWxlU3RyZW5ndGhUZXh0ID0gbW9sZWN1bGVTdHJlbmd0aDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVGV4dCA9IGFjZ3NbMF0uYWNnTmFtZTtcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUeXBlID0gJ1MxJztcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZVN0cmVuZ3RoVGV4dCA9IG1vbGVjdWxlU3RyZW5ndGg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICgxIDwgYWNncy5sZW5ndGgpIHtcclxuICAgICAgICAgIHZhciBtb2xlY3VsZXMgPSBbXTtcclxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWNncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBtb2xlY3VsZXMucHVzaChhY2dzW2ldLmFjZ05hbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUZXh0ID0gbW9sZWN1bGVzLmpvaW4oJywnKTtcclxuICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVHlwZSA9ICdNJztcclxuICAgICAgICAgIHRoaXMubW9sZWN1bGVTdHJlbmd0aFRleHQgPSBtb2xlY3VsZVN0cmVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1vbGVjdWxlTmFtZVRleHQgPSAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJtb2xlY3VsZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJhY2soKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnBhZ2UgPSAxO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImJhY2tcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBNZWRpY2luZURyb3Bkb3duTGlzdCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5zaG93RmF2b3VyaXRlTWVkID0gZmFsc2U7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJNZWRpY2luZURyb3Bkb3duTGlzdFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZXNjcmliZURyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZVBCVE4pO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWN0aW9uRHJvcGRvd25vcGVuKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlQWN0aW9uQnRuKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RBY3Rpb25Ecm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvc2VEcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0RG9zZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVEb3NlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkb3NlRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmcmVxRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEZyZXFEcm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlRnJlcSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZnJlcURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RwVmFsdWVEcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0c3RwRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZXN0cCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic3RwVmFsdWVEcm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvb2REcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Rm9vZERyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVGb29kKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJmb29kRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnN0cnVjdGlvbkRyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVJbnN0cnVjdGlvbik7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaW5zdHJ1Y3Rpb25Ecm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdXRlRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdFJvdXRlRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZSk7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlUm91dGUpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJvdXRlRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdXJwb3NlRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdFB1cnBvc2VEcm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHVycG9zZURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLndyYXBwZXJSZWYgIT0gbnVsbCAmJiB0aGlzLndyYXBwZXJSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMud3JhcHBlclJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMud3JhcHBlclJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZVwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVBY3Rpb25CdG4gPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uRHJvcGRvd25SZWYgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5zZWxlY3RBY3Rpb25Ecm9wZG93blJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZUFjdGlvbkJ0blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZVBCVE4gPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd25SZWYgIT0gbnVsbCAmJiB0aGlzLnByZXNjcmliZURyb3Bkb3duUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnByZXNjcmliZURyb3Bkb3duUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5wcmVzY3JpYmVEcm9wZG93blJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZVBCVE5cIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlRG9zZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5kb3NlUmVmICE9IG51bGwgJiYgdGhpcy5kb3NlUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLmRvc2VSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLmRvc2VSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0RG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVEb3NlXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZUZyZXEgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZnJlcVJlZiAhPSBudWxsICYmIHRoaXMuZnJlcVJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5mcmVxUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5mcmVxUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEZyZXFEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlRnJlcVwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVzdHAgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc3RwUmVmICE9IG51bGwgJiYgdGhpcy5zdHBSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMuc3RwUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5zdHBSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0c3RwRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZXN0cFwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVGb29kID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmZvb2RSZWYgIT0gbnVsbCAmJiB0aGlzLmZvb2RSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMuZm9vZFJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMuZm9vZFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RGb29kRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZUZvb2RcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlSW5zdHJ1Y3Rpb24gPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuSW5zdHJ1Y3Rpb25SZWYgIT0gbnVsbCAmJiB0aGlzLkluc3RydWN0aW9uUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLkluc3RydWN0aW9uUmVmLm5hdGl2ZUVsZW1lbnQgJiYgIXRoaXMuSW5zdHJ1Y3Rpb25SZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ICYmICF0aGlzLmVkaXRJbnN0cnVjdGlvbkZsYWcpIHtcclxuICAgICAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCJcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVkaXRJbnN0cnVjdGlvbkZsYWcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVJbnN0cnVjdGlvblwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVSb3V0ZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5yb3V0ZVJlZiAhPSBudWxsICYmIHRoaXMucm91dGVSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMucm91dGVSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLnJvdXRlUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdFJvdXRlRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJvdXRlRGF0YUZpbHRlciA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlUm91dGVcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5wdXJwb3NlUmVmICE9IG51bGwgJiYgdGhpcy5wdXJwb3NlUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnB1cnBvc2VSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLnB1cnBvc2VSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0UHVycG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVQdXJwb3NlXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8vIEdlbmVyYWwgU2VhcmNoXHJcbiAgc2VhcmNoSGFuZGxlcihlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YSgpO1xyXG4gICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzUGFnZU51bWJlciA9IDE7XHJcbiAgICAgIGxldCBnZXRNZWRpY2luZXNWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlLnRyaW0oKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnNob3dGYXZvdXJpdGVNZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICBpZiAoZS50YXJnZXQudmFsdWUudHJpbSgpLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50YXJnZXQudmFsdWUubGVuZ3RoID49IDMpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgIC8vdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzU3RpbGxTZWFyY2hpbmcpIHtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkcyhnZXRNZWRpY2luZXNWYWx1ZS50cmltKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XHJcbiAgICAgICAgLy8gdGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIC8vICAgdGhpcy5zZWFyY2hNZWRzKGdldE1lZGljaW5lc1ZhbHVlKTtcclxuICAgICAgICAvLyB9LCB0aGlzLndhaXRUaW1lKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VhcmNoSGFuZGxlclwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBzZWFyY2hNZWRzKGdldE1lZGljaW5lc1ZhbHVlOiBhbnkpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBpZiAodGhpcy5tZWRpU2VhcmNoVmFsdWUudHJpbSgpLmxlbmd0aCA8IDMgfHwgZ2V0TWVkaWNpbmVzVmFsdWUudHJpbSgpLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgcHJvZHVjdE5hbWU6IGdldE1lZGljaW5lc1ZhbHVlXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5Qcm9kdWN0U2VhcmNoTmFtZSA9IGdldE1lZGljaW5lc1ZhbHVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLkdFVF9NRURTX0JZX1NFQVJDSCArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudChnZXRNZWRpY2luZXNWYWx1ZSkgKyAnJnBhZ2U9MSZub09mUmVjPTEwJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hNZWRzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IHJlcy5yZXNwb25zZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSByZXMucmVzcG9uc2UubGVuZ3RoO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tZWRpU2VhcmNoVmFsdWUudHJpbSgpLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGdldE1lZGljaW5lc1ZhbHVlLnRyaW0oKSAhPSB0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkgJiYgdGhpcy5tZWRpU2VhcmNoVmFsdWUudHJpbSgpLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21wbGV0ZVNlYXJjaCh0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA+IDcgfHwgcmVzLnJlc3BvbnNlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5NSU1TUHJpbWFyeVNlYXJjaCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaE1lZHNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaE1lZHNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hNZWRzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hNZWRzXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcGxldGVTZWFyY2goZ2V0TWVkaWNpbmVzVmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkcyhnZXRNZWRpY2luZXNWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNvbXBsZXRlU2VhcmNoXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9HZXQgUHJvZHVjdCBEZXRhaWxcclxuICBnZXRQcm9kdWN0TGlzdEJ5TmFtZShwcm9kSGlkZGVuVmFsdWU6IGFueSwgcHJvZHVjdE5hbWU6IGFueSwgc2VhcmNoQmFzZTogYW55KSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1NlY29uZGFyeWFwaS51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VhcmNoQnluYW1lUGFnZU51bWJlciA9IDE7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQocHJvZHVjdE5hbWUpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YU9uY2hhbmdlb2ZNZWRpY2luZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdmFyIHR5cGUgPSBzZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ2JyYW5ka2V5JyA/ICdCSycgOiBzZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2RwYWNra2V5JyA/ICdQUEsnIDogc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICd2aXJ0dWFsbmFtZScgPyAnVk4nIDogc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdwcm9kdWN0a2V5JyA/ICdQSycgOiBzZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2R1Y3RrZXlhY3RpdmVpbmdyZWRpZW50JyA/ICdQS0EnIDogc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdmdWxscGknID8gJ0ZQSScgOiAnUE4nO1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICBwcm9kdWN0TmFtZTogcHJvZEhpZGRlblZhbHVlLFxyXG4gICAgICAgIHR5cGU6IHR5cGUsXHJcbiAgICAgICAgcHJlc2NyaWJlclR5cGU6IFwiTVBcIlxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucHJvZEhpZGRlbk5hbWUgPSBwcm9kSGlkZGVuVmFsdWU7XHJcbiAgICAgIHRoaXMuUHJvZHVjdFR5cGUgPSB0eXBlO1xyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KGNvbmZpZy5HRVRfTUVEU19CWV9OQU1FICsgJz9wcm9kdWN0TmFtZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHByb2RIaWRkZW5WYWx1ZSkgKyAnJnR5cGU9JyArIHR5cGUgKyAnJnByZXNjcmliZXJUeXBlPU1QJnBhZ2U9JyArIHRoaXMuc2VhcmNoQnluYW1lUGFnZU51bWJlciArICcmbm9PZlJlYz0xMCcpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gMDsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdOyB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UHJvZHVjdExpc3RCeU5hbWVcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSByZXMucmVzcG9uc2UubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IHJlcy5yZXNwb25zZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgLy8gaWYgKHRoaXMuaXNOb25QYnNGbGFnKSB7XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5yeE9ubHlOT05QQlNGaWx0ZXIoKTtcclxuICAgICAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gICBpZiAodGhpcy5yeE9ubHlQQlMgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5yeE9ubHlQQlNGaWx0ZXIoKTtcclxuICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgIC8vICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gcmVzLnJlc3BvbnNlO1xyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICB0aGlzLm9uQ2hlY2tib3hDaGFuZ2UoKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5sZW5ndGggPD0gMykge1xyXG4gICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlKSAmJiByZXMucmVzcG9uc2UubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLk1JTVNTZWNvbmRhcnlTZWFyY2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRQcm9kdWN0TGlzdEJ5TmFtZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFByb2R1Y3RMaXN0QnlOYW1lXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGVja2JveENoYW5nZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLnJ4T25seVBCUyAmJiB0aGlzLnJ4UHJpdmF0ZSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJ4T25seVBCUykge1xyXG4gICAgICAgIHRoaXMucnhPbmx5UEJTID0gdHJ1ZTtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCkpXHJcbiAgICAgICAgICB0aGlzLnJ4T25seVBCU0ZpbHRlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMucnhQcml2YXRlKSB7XHJcbiAgICAgICAgdGhpcy5yeE9ubHlQQlMgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCkpXHJcbiAgICAgICAgICB0aGlzLnJ4T25seU5PTlBCU0ZpbHRlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yeFByaXZhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWw7XHJcbiAgICAgIH1cclxuICAgICAgLy8gdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJvbkNoZWNrYm94Q2hhbmdlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcnhPbmx5UEJTRmlsdGVyKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwpICYmIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwuZmlsdGVyKCh4OiBhbnkpID0+ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoeC5wYnNUeXBlKSAmJiB4LnBic1R5cGUgIT0gJ25vbiBQQlMnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJ4T25seVBCU0ZpbHRlclwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ4T25seU5PTlBCU0ZpbHRlcigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCAhPSAnJyAmJiB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwuZmlsdGVyKCh4OiBhbnkpID0+ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoeC5wYnNUeXBlKSAmJiB4LnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSAnbm9uIHBicycpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicnhPbmx5Tk9OUEJTRmlsdGVyXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRDbGFzc0Zvck1lZChtZWQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGlzU2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaXNTZWxlY3RlZEZvcm11bGF0aW9uID0gdGhpcy5Jc1NlbGVjdEZvcm11bGF0aW9uKG1lZCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaXNTZWxlY3RlZEZvcm11bGF0aW9uID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiZcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgbWVkLnByb2R1Y3RJZCA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkICYmXHJcbiAgICAgICAgICBtZWQucGJzQ29kZSA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSAmJlxyXG4gICAgICAgICAgbWVkLnByb2R1Y3ROYW1lID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSAmJlxyXG4gICAgICAgICAgbWVkLnJlcGVhdHMgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMgJiZcclxuICAgICAgICAgIG1lZC5tYXhRdHlVbml0cyA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBpc1NlbGVjdGVkRm9ybXVsYXRpb25cclxuICAgICAgICA/ICdtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94IFJYX2hpZ2hsaWdodCdcclxuICAgICAgICA6ICdtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94JztcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0Q2xhc3NGb3JNZWRcIik7XHJcbiAgICAgIHJldHVybiBcIm1kbC1ncmlkIG5ld19yeF9wb3B1cF9ib3hcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENsYXNzRm9yRmF2b3VyaXRlTWVkKG1lZDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcInF1YW50aXR5XCIsKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlIT11bmRlZmluZWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUhPW51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSBcIm5vbiBwYnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm51bWJlck9mUGFjayArIFwieFwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnVuaXRQZXJQYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpLnRvU3RyaW5nKCkpO1xyXG4gICAgICB2YXIgaXNTZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICAgIGlzU2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmXHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkICE9IG51bGwgJiZcclxuICAgICAgICAgIG1lZC5wcm9kdWN0SWQgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCAmJlxyXG4gICAgICAgICAgKG1lZC5wYnNDb2RlIT1udWxsP21lZC5wYnNDb2RlOlwiXCIpID09ICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSE9bnVsbD90aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZTpcIlwiKSAmJlxyXG4gICAgICAgICAgbWVkLnByb2R1Y3ROYW1lID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSAmJlxyXG4gICAgICAgICAgbWVkLnJlcGVhdHMgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMgJiZcclxuICAgICAgICAgIG1lZC5xdWFudGl0eSA9PSAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUhPXVuZGVmaW5lZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSE9bnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZS50b0xvd2VyQ2FzZSgpID09IFwibm9uIHBic1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubnVtYmVyT2ZQYWNrICsgXCJ4XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24udW5pdFBlclBhY2spXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cykudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgIHJldHVybiBpc1NlbGVjdGVkRm9ybXVsYXRpb25cclxuICAgICAgICA/ICdtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94IFJYX2hpZ2hsaWdodCdcclxuICAgICAgICA6ICdtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94JztcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0Q2xhc3NGb3JNZWRcIik7XHJcbiAgICAgIHJldHVybiBcIm1kbC1ncmlkIG5ld19yeF9wb3B1cF9ib3hcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIElzU2VsZWN0Rm9ybXVsYXRpb24obWVkOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQuZ2VuZXJpY05hbWUpID8gbWVkLmdlbmVyaWNOYW1lIDogXCJcIikgPT1cclxuICAgICAgICAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiBcIlwiKSAmJlxyXG4gICAgICAgICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZC5wcm9kdWN0SWQpID8gbWVkLnByb2R1Y3RJZCA6IFwiXCIpID09XHJcbiAgICAgICAgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0SWQpID9cclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQgOiBcIlwiKSAmJiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQucmVwZWF0cykgP1xyXG4gICAgICAgICAgICBtZWQucmVwZWF0cyA6IFwiXCIpID09ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucmVwZWF0cykgP1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzIDogXCJcIikgJiYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkLm1heFF0eVVuaXRzKSA/XHJcbiAgICAgICAgICAgICAgICBtZWQubWF4UXR5VW5pdHMgOiBcIlwiKSA9PSAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1heFF0eVVuaXRzKVxyXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyA6IFwiXCIpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIklzU2VsZWN0Rm9ybXVsYXRpb25cIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldGN1cnJlbnRpZChtZWQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIHRoaXMubWVkaVNlYXJjaFZhbHVlICE9IG51bGwgJiYgbWVkLnByb2REaXNwbGF5VmFsdWUgPT0gdGhpcy5tZWRpU2VhcmNoVmFsdWUgPyAnaGVpZ2hsaWdodCcgOiAnJztcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0Y3VycmVudGlkXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJlc3RyaWN0aW9ucyhyZXN0cmljdGlvbnM6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHJlc3RyaWN0aW9uTGlzdCA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3RyaWN0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBpbmQgPSByZXN0cmljdGlvbkxpc3QuaW5kZXhPZihyZXN0cmljdGlvbnNbaV1bJ3Jlc3RyaWN0aW9uVHlwZSddKTtcclxuICAgICAgICBpZiAoaW5kID09IC0xKSB7XHJcbiAgICAgICAgICByZXN0cmljdGlvbkxpc3QucHVzaChyZXN0cmljdGlvbnNbaV1bJ3Jlc3RyaWN0aW9uVHlwZSddKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3RyaWN0aW9uTGlzdC50b1N0cmluZygpO1xyXG4gICAgICAvLyAgICBsZXQgcmVzdHJpY3Rpb25zID0gW107XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0aW9uc1wiKTtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldEFsbE1pbXNWYWx1ZSgpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uR0VUX0FMTE1JTVNWQUxVRSArIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQgKyBcIiZjbGllbnRJZD1cIiArIHRoaXMuY2xpZW50SWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBbGxNaW1zVmFsdWVcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9zZURhdGEgPSByZXMuZG9zZSAhPSBudWxsID8gcmVzLmRvc2UgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuZnJlcXVlbmN5KSA/IHJlcy5mcmVxdWVuY3kgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5mb29kRGF0YSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmZvb2QpID8gcmVzLmZvb2QgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5wdXJwb3NlRGF0YSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnB1cnBvc2UpICE9IG51bGwgPyByZXMucHVycG9zZSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlRGF0YSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJvdXRlKSAhPSBudWxsID8gcmVzLnJvdXRlIDogW107XHJcbiAgICAgICAgICAgIHRoaXMuY2Vhc2VEYXRhID0gcmVzLmNlYXNlICE9IG51bGwgPyByZXMuY2Vhc2UgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5jZWFzZURhdGEgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5jZWFzZSkgIT0gbnVsbCA/IHJlcy5jZWFzZSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnNlbmR0b3BoYXJtYWN5RGF0YSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnNlbmRUb1Bhcm1hY3lNYXN0ZXIpICE9IG51bGwgPyByZXMuc2VuZFRvUGFybWFjeU1hc3RlciA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnRlbXBBdXRob3JpdHlGb3JtTm8gPSByZXMuYXV0aG9yaXR5Rm9ybS5hdXRob3JpdHlGb3JtTm87XHJcbiAgICAgICAgICAgIGxldCByZWZWYWxBdXRoID0gIXRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA/IHRoaXMuZ2V0QWRkQXV0aFZhbHVlKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmF1dGhvcml0eUZvcm0pID8gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuYXV0aG9yaXR5Rm9ybS5hdXRob3JpdHlGb3JtTm8pID8gcmVzLmF1dGhvcml0eUZvcm0uYXV0aG9yaXR5Rm9ybU5vIDogW10gOiBbXSkgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5wYnNEdmFBdXRob3JpdHlOdW1iZXIpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnBic0R2YUF1dGhvcml0eU51bWJlciAhPSAwID8gdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMucGJzRHZhQXV0aG9yaXR5TnVtYmVyIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gPSByZWZWYWxBdXRoO1xyXG4gICAgICAgICAgICB0aGlzLmlzTm9uUGJzRmxhZyA9IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuaXNOb25QYnNGbGFnKSB8fCByZXMuaXNOb25QYnNGbGFnID09IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5ID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5KSA/IHJlcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcImdldEFsbE1pbXNWYWx1ZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEFsbE1pbXNWYWx1ZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEFsbE1pbXNWYWx1ZVwiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEFsbE1pbXNWYWx1ZVwiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdXRlRmlsdGVyKGU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5yb3V0ZURhdGFGaWx0ZXIgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicm91dGVGaWx0ZXJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJSb3V0ZUl0ZW1zKGFycjogYW55LCBxdWVyeTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gYXJyLmZpbHRlcigoZTogYW55KSA9PlxyXG4gICAgICAgIGUucm91dGVOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkudG9Mb3dlckNhc2UoKSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZmlsdGVyUm91dGVJdGVtc1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vR2V0IGluc3RydWN0aW9uIHZhbHVlXHJcbiAgZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXMoKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgdXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLkdFVF9JTlNUUlVDVElPTl9WQUxVRSArIFwiP3VzZXJJZD1cIiArIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRJbnN0cnVjdGlvblZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdmFyIGluc3RydWN0aW9uID0gcmVzLnJlc3BvbnNlO1xyXG4gICAgICAgICAgICB0aGlzLmluc3RydWN0aW9uRGF0YSA9IGluc3RydWN0aW9uO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRJbnN0cnVjdGlvblZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEluc3RydWN0aW9uVmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0VkaXQgSW5zdHJ1Y3Rpb24gdmFsdWVcclxuICBlZGl0SW5zdHJ1Y3Rpb24oaWQ6IG51bWJlciwgZGF0YTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSBkYXRhLnRleHQ7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUgPSBkYXRhLnRleHQ7XHJcbiAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBkYXRhLmRlc2NyaXB0aW9uO1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uSWQgPSBkYXRhLmlkO1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBkYXRhLmRlc2NyaXB0aW9uO1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdEluc3RydWN0aW9uRmxhZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZWRpdEluc3RydWN0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gbGlzdCBzZWxlY3QgaW4gSW5zdHJ1Y3Rpb25cclxuICBDaGFuZ2VJbnN0cnVjdGlvbihkYXRhOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGE/LnRleHQpID8gZGF0YS50ZXh0IDogJyc7XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZGF0YT8uZGVzY3JpcHRpb24pID8gZGF0YS5kZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaW5zdFZhbCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZGF0YT8udmFsdWUpID8gZGF0YS52YWx1ZSA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShkYXRhPy52YWx1ZSkgPyBkYXRhLmlkIDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQ2hhbmdlSW5zdHJ1Y3Rpb25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnN0cnVjdGlvbk9uQ2hhbmdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpbnN0cnVjdGlvbk9uQ2hhbmdlXCIpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8vIGNsZWFyIEluc3RydWN0aW9uIGluIEluc3RydWN0aW9uXHJcbiAgY2xlYXJJbnN0cnVjdGlvbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gJyc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUgPSBcIlwiO1xyXG4gICAgICB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2xlYXJJbnN0cnVjdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHNhdmUgaW5zdHJ1Y3Rpb24gdmFsdWVcclxuICBzYXZlSW5zdHJ1Y3Rpb24oKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSkudHJpbSgpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzUyLm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzUyLmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81Mi5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81Mi5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShTdHJpbmcodGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbikudHJpbSgpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzUxLm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzUxLmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81MS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81MS5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdmFyIGJvZHkgPSB7XHJcbiAgICAgICAgdGV4dDogdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZS50cmltKCksXHJcbiAgICAgICAgdmFsdWU6ICcxJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbi50cmltKCksXHJcbiAgICAgICAgc3RhdHVzOiAnMCcsXHJcbiAgICAgICAgdXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICB9O1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIGJvZHk6IGJvZHksXHJcbiAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgICBpZDogdGhpcy5JbnN0cnVjdGlvbklkXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLkluc3RydWN0aW9uSWQgIT0gbnVsbCAmJiB0aGlzLkluc3RydWN0aW9uSWQgIT0gJycpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCA9IHBhcnNlSW50KHRoaXMuSW5zdHJ1Y3Rpb25JZCk7XHJcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLlB1dE5ldyhib2R5LCBjb25maWcuUEhZU0lDSUFOLlVQREFURV9JTlNUUlVDVElPTl9WQUxVRSArIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQgKyAnJmlkPScgKyB0aGlzLkluc3RydWN0aW9uSWQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb247XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXMoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGF5bG9hZCA9IGJvZHk7XHJcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLlBvc3QoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5BRERfSU5TVFJVQ1RJT05fVkFMVUUpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAnJztcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXMoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzYXZlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRGVsZXRlIGluc3RydWN0aW9uXHJcbiAgZGVsZXRlSW5zdHJ1Y3Rpb24oaWQ6IE51bWJlcikge1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHVzZXJJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICBpZDogaWRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuUHV0TmV3KCcnLCBjb25maWcuUEhZU0lDSUFOLkRFTEVURV9JTlNUUlVDVElPTl9WQUxVRSArIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQgKyAnJmlkPScgKyBpZCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJkZWxldGVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gXCJcIjtcclxuICAgICAgICAgICAgdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiZGVsZXRlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkZWxldGVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImRlbGV0ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImRlbGV0ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gYWRkIG5ldyBJbnN0cnVjdGlvblxyXG4gIGFkZE5ld0luc3RydWN0aW9uKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gJyc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUgPSBcIlwiO1xyXG4gICAgICB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25JZCA9ICcnO1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiYWRkTmV3SW5zdHJ1Y3Rpb25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBzZWxlY3Qgcm91dGUgdmFsdWVcclxuICBzZWxlY3RSb3V0ZXNlYXJjVmFsdWUocm91dGU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RSb3V0ZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocm91dGU/LnJvdXRlTmFtZSkgPyByb3V0ZS5yb3V0ZU5hbWUgOiAnJztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RSb3V0ZXNlYXJjVmFsdWVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBzZWxlY3QgRG9zZSB2YWx1ZVxyXG4gIHNlbGVjdERvc2VWYWx1ZShkb3NlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0RG9zZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShkb3NlPy50ZXh0KSA/IGRvc2UudGV4dCA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShkb3NlPy52YWx1ZSkgPyBkb3NlLnZhbHVlIDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0RG9zZVZhbHVlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gc2VsZWN0IEZyZXF1ZW5jeSB2YWx1ZVxyXG4gIHNlbGVjdEZyZXF1ZW5jeVZhbHVlKGZyZXF1ZW5jeTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEZyZXFEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZnJlcXVlbmN5Py50ZXh0KSA/IGZyZXF1ZW5jeS50ZXh0IDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZyZXF1ZW5jeT8udmFsdWUpID8gZnJlcXVlbmN5LnZhbHVlIDogXCJcIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0RnJlcXVlbmN5VmFsdWVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBzZWxlY3QgRm9vZCB2YWx1ZVxyXG4gIHNlbGVjdEZvb2RWYWx1ZShmb29kOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Rm9vZERyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb29kPy50ZXh0KSA/IGZvb2QudGV4dCA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0Rm9vZFZhbHVlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0U3RwVmFsdWUoc3RwOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0c3RwRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzdHA/Lm5hbWUpID8gc3RwLm5hbWUgOiAnJztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RTdHBWYWx1ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vc2VsZWN0IFB1cnBvc2UgdmFsdWVcclxuICBzZWxlY3RQdXJwb3NlVmFsdWUocHVycG9zZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdFB1cnBvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShwdXJwb3NlPy5sb29rdXBUZXh0KSA/IHB1cnBvc2UubG9va3VwVGV4dCA6ICcnO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocHVycG9zZT8uaWQpID8gcHVycG9zZS5pZCA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0UHVycG9zZVZhbHVlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUXVhbnRpdHkgY2hhbmdlXHJcbiAgcXVhbnRpdHlDaGFuZ2UoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjb252ZXJ0cXVhbnRpdHl2YWwgPSBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLCAxMCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSBjb252ZXJ0cXVhbnRpdHl2YWwudG9TdHJpbmcoKTtcclxuICAgICAgLy90aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsID0gdGhpcy5yb3VuZERhdGEocGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkpLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJxdWFudGl0eUNoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrTW9iaWxlKGV2dDogYW55KTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBjaGFyQ29kZSA9IChldnQud2hpY2gpID8gZXZ0LndoaWNoIDogZXZ0LmtleUNvZGU7XHJcbiAgICAgIGlmIChjaGFyQ29kZSA+IDMxICYmIChjaGFyQ29kZSA8IDQ3IHx8IGNoYXJDb2RlID4gNTcpKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNoZWNrTW9iaWxlXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkYXlzY2hhbmdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgIT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnZlcnRkYXlzY2hhbmdlID0gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCwgMTApO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPSBjb252ZXJ0ZGF5c2NoYW5nZS50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkYXlzY2hhbmdlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVwZWF0c0NoYW5nZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY29udmVydHJlcGVhdHN2YWwgPSBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsIDEwKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsID0gY29udmVydHJlcGVhdHN2YWwudG9TdHJpbmcoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyZXBlYXRzQ2hhbmdlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvL3VubGlzdGVkIGNoZWNrIGJveFxyXG4gIHVubGlzdGVkUkEoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdSUEJTJztcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJ1bmxpc3RlZFJBXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUHJpdmF0ZSc7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpdmF0ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFBCUygpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUEJTJztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJQQlNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBSUEJTKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdSUEJTJztcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJSUEJTXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zZWxlY3RlZCBtZWRpY2luZVxyXG4gIHNlbGVjdEZvcm11bGF0aW9uKG1lZDogYW55LCBpbmRleDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBtZWQ7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YU9uY2hhbmdlb2ZNZWRpY2luZShtZWQpO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzdHJpY3Rpb25zID0gbWVkLlJlc3RyaWN0aW9ucyAmJiBtZWQuUmVzdHJpY3Rpb25zLmxlbmd0aCAhPSAwID8gbWVkLlJlc3RyaWN0aW9uc1swXSA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sZW1pIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sbWJjIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubGVtaSA6IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAobWVkLlJlc3RyaWN0aW9ucyAmJiBtZWQuUmVzdHJpY3Rpb25zLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICB2YXIgcmVzdHJpY3Rpb25MaXN0cyA9IG1lZC5SZXN0cmljdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZTogYW55KSA9PlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25QcmV2aWV3ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uVGV4dCAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblByZXZpZXcgIT0gJycgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uVGV4dCAhPSAnJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChyZXN0cmljdGlvbkxpc3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICAvLyBpZiAodGhpcy5zdGF0ZS5zZWxlY3RlZEluZGV4ICE9IGluZGV4KSB7XHJcbiAgICAgIC8vICAgdGhpcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25EYXRhT25jaGFuZ2VvZk1lZGljaW5lKG1lZCk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNSdHBtTmV4dCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vID0gdGhpcy5nZXRBZGRBdXRoVmFsdWUodGhpcy50ZW1wQXV0aG9yaXR5Rm9ybU5vKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHRoaXMuZW5hYmxlUHJlc2NyaWJlQXMobWVkKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdEZvcm11bGF0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zZWxlY3RlZCBGYXZvdXJpdGUgbWVkaWNpbmVcclxuICBzZWxlY3RGYXZvdXJpdGVGb3JtdWxhdGlvbihtZWQ6IGFueSwgaW5kZXg6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbWVkO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUobWVkKTtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3RyaWN0aW9ucyA9IG1lZC5SZXN0cmljdGlvbnMgJiYgbWVkLlJlc3RyaWN0aW9ucy5sZW5ndGggIT0gMCA/IG1lZC5SZXN0cmljdGlvbnNbMF0gOiBudWxsO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubGVtaSA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubG1iYyA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubG1iYyA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSBtZWQuYWlwICE9IG51bGwgPyBtZWQuYWlwLmxlbWkgOiBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKG1lZC5SZXN0cmljdGlvbnMgJiYgbWVkLlJlc3RyaWN0aW9ucy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgdmFyIHJlc3RyaWN0aW9uTGlzdHMgPSBtZWQuUmVzdHJpY3Rpb25zLmZpbHRlcihcclxuICAgICAgICAgICAgKGU6IGFueSkgPT5cclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uUHJldmlldyAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblRleHQgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25QcmV2aWV3ICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblRleHQgIT0gJydcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAocmVzdHJpY3Rpb25MaXN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzUnRwbU5leHQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmF1dGhvcml0eUZvcm1ObyA9IHRoaXMuZ2V0QWRkQXV0aFZhbHVlKHRoaXMudGVtcEF1dGhvcml0eUZvcm1Obyk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB0aGlzLmVuYWJsZVByZXNjcmliZUFzKG1lZCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RGYXZvdXJpdGVGb3JtdWxhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEJyYW5kTmFtZShzZWxlY3RlZEZvcm11bGF0aW9uOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24pKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwTmFtZTtcclxuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5icmFuZD8uYnJhbmROYW1lKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYnJhbmQuYnJhbmROYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEJyYW5kTmFtZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmFibGVQcmVzY3JpYmVBcyhtZWQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gaWYgKG1lZC5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJub24gcGJzXCIgfHwgdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkpIHtcclxuICAgICAgLy8gICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgIC8vICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAvLyB9IGVsc2VcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkPy5wYnNUeXBlKSAmJiBtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiUEJTL1JQQlNcIiAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdSUEJTJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUEJTJztcclxuICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgbWVkLnBic1R5cGUudG9VcHBlckNhc2UoKSA9PSBcIlJQQlNcIiAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQ/LnBic1R5cGUpICYmIG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJQQlNcIiAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgKG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJFWFRFTVBPUkFORU9VUyBQUkVQQVJBVElPTlNcIiB8fCBtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiU0VDVElPTiAxMDBcIikgJiYgIXRoaXMuaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5tZWRpY2FyZU51bWJlcikgfHwgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzQ29kZSkgJiYgbWVkLnBic0NvZGUgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgbWVkLnBic1R5cGUudG9VcHBlckNhc2UoKSA9PSBcIlBBTExJQVRJVkUgQ0FSRVwiICYmICF0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFOdW1iZXIgIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YU51bWJlciAhPSAnJyAmJiBtZWQucGJzQ29kZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQ/LnBic0NvZGUpICYmIG1lZC5wYnNDb2RlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQQlMnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgfVxyXG4gICAgICAvLyBlbHNlIGlmIChtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiU0VDVElPTiAxMDBcIikge1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLm1lZGljYXJlTnVtYmVyICE9IFwiXCIgJiZcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIgIT0gbnVsbCAmJiBtZWQucGJzQ29kZSAhPSBcIlwiIHx8IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9IG51bGwgJiZcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9ICcnICYmIG1lZC5wYnNDb2RlICE9IFwiXCIpIHtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQQlMnO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgLy8gICAgIHRoaXMuc2V0U3RhdGUoeyBwcmVzY3JpYmVBU19QQlM6IHRydWUsIHByZXNjcmliZUFTX1JQQlM6IHRydWUsIFByZXNjcmliZUFTOiBcIlByaXZhdGVcIiB9KTtcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZW5hYmxlUHJlc2NyaWJlQXNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUcmFkZU5hbWUoKTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIHZhciBzZWxlY3RlZEZvcm11bGF0aW9uOmFueSA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuXHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICB2YXIgdHJhZGVOYW1lID0gJyc7XHJcbiAgICAgICAgdmFyIGFtdF90cE5hbWUgPSB0aGlzLmdldEJyYW5kTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgIHZhciB0QnJhbmROYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShhbXRfdHBOYW1lKSA/IGFtdF90cE5hbWUgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYnJhbmQ/LmJyYW5kTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYnJhbmQuYnJhbmROYW1lIDogXCJcIjtcclxuICAgICAgICAvL3ZhciBhbXRfdHBwTmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoICE9IDAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSA6ICcnO1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgfHwgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRvTG93ZXJDYXNlKCkgPT0gJ2dhdXplJykge1xyXG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlICYmIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSBmYWxzZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogXCJcIjtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgdHJhZGVOYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSArICcoJyArIHRCcmFuZE5hbWUgKyAnKScgOiBcIlwiO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSBmYWxzZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogXCJcIjtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSB0QnJhbmROYW1lO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gZWxzZSBpZiAoSXNFeHRlbXAgPT0gdHJ1ZSAmJiBsZW1pID09IHRydWUpIHtcclxuICAgICAgICAgICAgLy8gICB0cmFkZU5hbWUgPSBhbXRfdHBwTmFtZSAhPSBudWxsICYmIGFtdF90cHBOYW1lICE9IFwiXCIgPyBhbXRfdHBwTmFtZSA6IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vICAgcmV0dXJuIHRyYWRlTmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy8gZWxzZSBpZiAoSXNFeHRlbXAgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyAgIHRyYWRlTmFtZSA9IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5mb3JtdWxhID09IG51bGwgPyB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUudHJpbSgpIDogdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGE7XHJcbiAgICAgICAgICAgIC8vICAgcmV0dXJuIHRyYWRlTmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRyYWRlTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0VHJhZGVOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRyYWRlTmFtZURpc3BsYXkoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdmFyIGFtdF90cE5hbWUgPSB0aGlzLmdldEJyYW5kTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgIHZhciB0QnJhbmROYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShhbXRfdHBOYW1lKSA/IGFtdF90cE5hbWUgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYnJhbmQ/LmJyYW5kTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYnJhbmQuYnJhbmROYW1lIDogXCJcIjtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpKSB7XHJcbiAgICAgICAgICAvLyBsZXQgUEl0ZW1UaHJlZTIgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUubGFzdEluZGV4T2YoXCJbXCIpO1xyXG4gICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUzID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLnNsaWNlKDAsIFBJdGVtVGhyZWUyKTtcclxuICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gUEl0ZW1UaHJlZTIgPj0gMCA/IFBJdGVtVGhyZWUzLnRyaW0oKSA6IHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiBcIlwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUgfHwgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udG9Mb3dlckNhc2UoKSA9PSBcImdhdXplXCIpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udG9Mb3dlckNhc2UoKSA9PSBcImdhdXplXCIpIHtcclxuICAgICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUyID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLmxhc3RJbmRleE9mKFwiW1wiKTtcclxuICAgICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUzID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLnNsaWNlKDAsIFBJdGVtVGhyZWUyKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBQSXRlbVRocmVlMiA+PSAwID8gUEl0ZW1UaHJlZTMudHJpbSgpIDogcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGxldCBQSXRlbVRocmVlID0gZXh0ZW1wVFRQTmFtZS5sYXN0SW5kZXhPZihcIltcIik7XHJcbiAgICAgICAgICAgIC8vIGxldCBQSXRlbVRocmVlMSA9IGV4dGVtcFRUUE5hbWUuc2xpY2UoMCwgUEl0ZW1UaHJlZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gUEl0ZW1UaHJlZSA+PSAwID8gUEl0ZW1UaHJlZTEudHJpbSgpIDogZXh0ZW1wVFRQTmFtZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFyIG1wcE5hbWUgPSB0aGlzLmdldE1QUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICAgIHZhciBTYWNoZXRPclB1bXAgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uc3RyU2FjaGV0T3JQdW1wKSA/IFwiIFwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCA6IFwiXCI7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtcHBOYW1lKSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChtcHBOYW1lLnRyaW0oKSArIFwiXCIgKyBTYWNoZXRPclB1bXAgKyAnICgnICsgdEJyYW5kTmFtZSArICcpJykudHJpbSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSAobXBwTmFtZS50cmltKCkgKyBcIlwiICsgU2FjaGV0T3JQdW1wKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBzdHJlbmd0aCA9IHRoaXMucnhTdHJlbmd0aGNhbGN1bGF0aW9uKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgICAgIHZhciBkaXNwTmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5EaXNwTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uRGlzcE5hbWUudHJpbSgpIDogXCJcIjtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udHJpbSgpICsgXCIgXCIgOiBcIlwiKSArICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRCcmFuZE5hbWUpID8gJygnICsgdEJyYW5kTmFtZSArICcpICcgOiBcIlwiKSArIHN0cmVuZ3RoKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodEJyYW5kTmFtZSkgPyAnKCcgKyB0QnJhbmROYW1lICsgJykgJyA6IFwiXCIpICsgc3RyZW5ndGgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50cmltKCkgKyBcIiBcIiA6IFwiXCIpICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodEJyYW5kTmFtZSkgPyAnKCcgKyB0QnJhbmROYW1lICsgJykgJyA6IFwiXCIpICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udHJpbSgpIDogXCJcIikgKyBcIiBcIiArIHN0cmVuZ3RoKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgc3RyZW5ndGgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50cmltKCkgOiBcIlwiKSArIFwiIFwiICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IFwiXCI7XHJcbiAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gXCJcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFRyYWRlTmFtZURpc3BsYXlcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRNUFBOYW1lKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbikgJiYgKHR5cGVvZiBzZWxlY3RlZEZvcm11bGF0aW9uKSA9PT0gJ29iamVjdCcgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0/Lm1wcHMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0/Lm1wcE5hbWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0ubXBwTmFtZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRNUFBOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEl0ZW1HZW5lcmljSW50ZW50aW9uKGxlbWk6IGJvb2xlYW4sIGlzQnJhbmROYW1lOiBib29sZWFuLCBpc0V4dGVtcDogYm9vbGVhbikge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGxlbWkgPT0gdHJ1ZSAmJiBpc0JyYW5kTmFtZSA9PSB0cnVlICYmIGlzRXh0ZW1wICE9IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gJ0InO1xyXG4gICAgICB9IGVsc2UgaWYgKGxlbWkgPT0gdHJ1ZSAmJiBpc0JyYW5kTmFtZSA9PSBmYWxzZSAmJiBpc0V4dGVtcCAhPSB0cnVlKSB7XHJcbiAgICAgICAgcmV0dXJuICdHJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJ0cnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEl0ZW1HZW5lcmljSW50ZW50aW9uXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ4U3RyZW5ndGhjYWxjdWxhdGlvbihmb3JtdWxhdGlvbjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSkgJiYgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgIT0gMCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrKSAmJiBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eW51bWJlck9mUGFjayAhPSAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCkgPyBmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXAgOiBcIlwiKSArICcgWycgKyBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSArICddJyArICcgeCAnICsgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHludW1iZXJPZlBhY2spLnRyaW0oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXApID8gZm9ybXVsYXRpb24uc3RyU2FjaGV0T3JQdW1wIDogXCJcIikgKyAnIFsnICsgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgKyAnXScpLnRyaW0oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJ4U3RyZW5ndGhjYWxjdWxhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyByeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcoZm9ybXVsYXRpb246IGFueSkge1xyXG4gIC8vICAgdHJ5IHtcclxuICAvLyAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9ybXVsYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkpICYmIGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5ICE9IDApIHtcclxuICAvLyAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXApID8gZm9ybXVsYXRpb24uc3RyU2FjaGV0T3JQdW1wIDogXCJcIjtcclxuICAvLyAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICByZXR1cm4gJyc7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicnhTdHJlbmd0aGNhbGN1bGF0aW9uTmV3XCIpO1xyXG4gIC8vICAgICByZXR1cm4gXCJcIjtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIHNob3dBdXRob3JpdHlCb3goUmVzdHJpY3Rpb25zOiBhbnksIFByZXNjcmliZUFTOiBhbnksIHJ4QXV0aG9yaXR5OiBhbnksIHVubGlzdGVkUkE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KFJlc3RyaWN0aW9ucykgJiYgUmVzdHJpY3Rpb25zLmxlbmd0aCA+IDAgJiYgUmVzdHJpY3Rpb25zWzBdLnJlc3RyaWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpICE9ICdyZXN0cmljdGVkJyAmJiBSZXN0cmljdGlvbnNbMF0ucmVzdHJpY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ3VucmVzdHJpY3RlZCcgJiYgUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJykgfHwgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoUmVzdHJpY3Rpb25zKSAmJiBSZXN0cmljdGlvbnMubGVuZ3RoID4gMCAmJiBSZXN0cmljdGlvbnNbMF0ucmVzdHJpY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ3Jlc3RyaWN0ZWQnICYmIFJlc3RyaWN0aW9uc1swXS5yZXN0cmljdGlvblR5cGUudG9Mb3dlckNhc2UoKSAhPSAndW5yZXN0cmljdGVkJyAmJiBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdycGJzJykgfHwgKHJ4QXV0aG9yaXR5ID09IHRydWUgJiYgUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJykgfHwgKHJ4QXV0aG9yaXR5ID09IHRydWUgJiYgUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncnBicycpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncnBicycgJiYgdW5saXN0ZWRSQSA9PSB0cnVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNob3dBdXRob3JpdHlCb3hcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERpcmVjdGlvbnMoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgZGlyZWN0aW9ucyA9ICcnO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpKSB7XHJcbiAgICAgICAgZGlyZWN0aW9ucyA9IGRpcmVjdGlvbnMgKyAnICcgKyB0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbikpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZGlyZWN0aW9ucy50cmltKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldERpcmVjdGlvbnNcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zdGF0ZSBuYW1lIGZ1bGwgZm9ybVxyXG4gIGdldFN0YXRlTmFtZUZyb21TdGF0ZUNvZGUocnRwbXN0YXRlTmFtZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBzd2l0Y2ggKHJ0cG1zdGF0ZU5hbWUgJiYgcnRwbXN0YXRlTmFtZSAhPSAnJyA/IHJ0cG1zdGF0ZU5hbWUudG9VcHBlckNhc2UoKSA6ICcnKSB7XHJcbiAgICAgICAgY2FzZSAnTlNXJzpcclxuICAgICAgICAgIHJldHVybiAnTmV3IFNvdXRoIFdhbGVzJztcclxuICAgICAgICBjYXNlICdRTEQnOlxyXG4gICAgICAgICAgcmV0dXJuICdRdWVlbnNsYW5kJztcclxuICAgICAgICBjYXNlICdTQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1NvdXRoIEF1c3RyYWxpYSc7XHJcbiAgICAgICAgY2FzZSAnVEFTJzpcclxuICAgICAgICAgIHJldHVybiAnVGFzbWFuaWEnO1xyXG4gICAgICAgIGNhc2UgJ1ZJQyc6XHJcbiAgICAgICAgICByZXR1cm4gJ1ZpY3RvcmlhJztcclxuICAgICAgICBjYXNlICdXQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1dlc3Rlcm4gQXVzdHJhbGlhJztcclxuICAgICAgICBjYXNlICdBQ1QnOlxyXG4gICAgICAgICAgcmV0dXJuICdBdXN0cmFsaWFuIENhcGl0YWwgVGVycml0b3J5JztcclxuICAgICAgICBjYXNlICdOVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ05vcnRoZXJuIFRlcnJpdG9yeSc7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiBydHBtc3RhdGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFN0YXRlTmFtZUZyb21TdGF0ZUNvZGVcIik7XHJcbiAgICAgIHJldHVybiBydHBtc3RhdGVOYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zdXBlcnNjcmlwdCBjb2RlXHJcbiAgc2hyaW5rU3VwZXJTY3JpcHRDb2RlID0gKGlucHV0OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkdXByZXN1bHQgPSBpbnB1dDtcclxuICAgICAgbGV0IGEgPSBpbnB1dC5zcGxpdCgnPHN1cD4nKTtcclxuXHJcbiAgICAgIC8vIHNlYXJjaCBmb3IgcGF0dGVybiBpbiBhXHJcbiAgICAgIGxldCBjb3VudCA9IGEubGVuZ3RoIC0gMTtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xyXG4gICAgICAgIC8vIGlmIG1hdGNoIGZvdW5kIGluY3JlYXNlIGNvdW50XHJcbiAgICAgICAgbGV0IHN0YXJ0ID0gJzxzdXA+JztcclxuICAgICAgICBsZXQgZW5kID0gJzwvc3VwPic7XHJcbiAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSBkdXByZXN1bHQuaW5kZXhPZihzdGFydCkgKyBzdGFydC5sZW5ndGg7XHJcbiAgICAgICAgbGV0IGVuZEluZGV4ID0gZHVwcmVzdWx0LmluZGV4T2YoZW5kLCBzdGFydEluZGV4KTtcclxuICAgICAgICBsZXQgZXh0cmFjdGVkVmFsdWUgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKHN0YXJ0SW5kZXggIT0gLTEgJiYgZW5kSW5kZXggIT0gLTEpIHtcclxuICAgICAgICAgIGV4dHJhY3RlZFZhbHVlID0gZHVwcmVzdWx0LnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzdHJpbmdOdW1iZXIgPSB0aGlzLmNvbnZlcnRUb1N1cGVyc2NyaXB0KGV4dHJhY3RlZFZhbHVlKTtcclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdCA9ICdUaGUgbnVtYmVyICcgKyBzdHJpbmdOdW1iZXIgKyAnIGlzIHN1cGVyc2NyaXB0ZWQuJztcclxuXHJcbiAgICAgICAgLy8gZHVwcmVzdWx0ID0gZHVwcmVzdWx0LnJlcGxhY2UoLzxzdXA+Lio8XFwvc3VwPi8sICc8c3VwPjwvc3VwPicpO1xyXG4gICAgICAgIC8vIGR1cHJlc3VsdCA9IGR1cHJlc3VsdC5yZXBsYWNlRmlyc3QoXCJcXFxcPHN1cD4uKj9cXFxcPC9zdXA+XCIsIFwiPHN1cD5cIiArIFwiXCIgKyBcIjwvc3VwPlwiKTtcclxuICAgICAgICBkdXByZXN1bHQgPSBkdXByZXN1bHQucmVwbGFjZShcclxuICAgICAgICAgICc8c3VwPicgKyBleHRyYWN0ZWRWYWx1ZSArICc8L3N1cD4nLFxyXG4gICAgICAgICAgc3RyaW5nTnVtYmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICAvLyByZXR1cm4gZHVwcmVzdWx0O1xyXG4gICAgICByZXR1cm4gdGhpcy5zaHJpbmtTdWJTY3JpcHRDb2RlKGR1cHJlc3VsdCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNocmlua1N1cGVyU2NyaXB0Q29kZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLy9zdWJzY3JpcHQgY29kZVxyXG4gIHNocmlua1N1YlNjcmlwdENvZGUgPSAoaW5wdXQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGR1cHJlc3VsdCA9IGlucHV0O1xyXG4gICAgICBsZXQgYSA9IGlucHV0LnNwbGl0KCc8c3ViPicpO1xyXG5cclxuICAgICAgLy8gc2VhcmNoIGZvciBwYXR0ZXJuIGluIGFcclxuICAgICAgbGV0IGNvdW50ID0gYS5sZW5ndGggLSAxO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgLy8gaWYgbWF0Y2ggZm91bmQgaW5jcmVhc2UgY291bnRcclxuICAgICAgICBsZXQgc3RhcnQgPSAnPHN1Yj4nO1xyXG4gICAgICAgIGxldCBlbmQgPSAnPC9zdWI+JztcclxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IGR1cHJlc3VsdC5pbmRleE9mKHN0YXJ0KSArIHN0YXJ0Lmxlbmd0aDtcclxuICAgICAgICBsZXQgZW5kSW5kZXggPSBkdXByZXN1bHQuaW5kZXhPZihlbmQsIHN0YXJ0SW5kZXgpO1xyXG4gICAgICAgIGxldCBleHRyYWN0ZWRWYWx1ZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoc3RhcnRJbmRleCAhPSAtMSAmJiBlbmRJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgZXh0cmFjdGVkVmFsdWUgPSBkdXByZXN1bHQuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHN0cmluZ051bWJlciA9IHRoaXMuc3Vic2NyaXB0TnVtYmVycyhleHRyYWN0ZWRWYWx1ZSk7XHJcblxyXG4gICAgICAgIGxldCByZXN1bHQgPSAnVGhlIG51bWJlciAnICsgc3RyaW5nTnVtYmVyICsgJyBpcyBzdXBlcnNjcmlwdGVkLic7XHJcbiAgICAgICAgLy8gZHVwcmVzdWx0ID0gZHVwcmVzdWx0LnJlcGxhY2UoLzxzdXA+Lio8XFwvc3VwPi8sICc8c3VwPjwvc3VwPicpO1xyXG4gICAgICAgIC8vIGR1cHJlc3VsdCA9IGR1cHJlc3VsdC5yZXBsYWNlRmlyc3QoXCJcXFxcPHN1cD4uKj9cXFxcPC9zdXA+XCIsIFwiPHN1cD5cIiArIFwiXCIgKyBcIjwvc3VwPlwiKTtcclxuICAgICAgICBkdXByZXN1bHQgPSBkdXByZXN1bHQucmVwbGFjZShcclxuICAgICAgICAgICc8c3ViPicgKyBleHRyYWN0ZWRWYWx1ZSArICc8L3N1Yj4nLFxyXG4gICAgICAgICAgc3RyaW5nTnVtYmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZHVwcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzaHJpbmtTdWJTY3JpcHRDb2RlXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb252ZXJ0VG9TdXBlcnNjcmlwdCA9IChpbnB1dDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzdXBlcnNjcmlwdERpZ2l0czogYW55ID0ge1xyXG4gICAgICAgICcwJzogJ1xcdTIwNzAnLFxyXG4gICAgICAgICcxJzogJ1xcdTAwQjknLFxyXG4gICAgICAgICcyJzogJ1xcdTAwQjInLFxyXG4gICAgICAgICczJzogJ1xcdTAwQjMnLFxyXG4gICAgICAgICc0JzogJ1xcdTIwNzQnLFxyXG4gICAgICAgICc1JzogJ1xcdTIwNzUnLFxyXG4gICAgICAgICc2JzogJ1xcdTIwNzYnLFxyXG4gICAgICAgICc3JzogJ1xcdTIwNzcnLFxyXG4gICAgICAgICc4JzogJ1xcdTIwNzgnLFxyXG4gICAgICAgICc5JzogJ1xcdTIwNzknLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgbGV0IG91dHB1dCA9ICcnO1xyXG4gICAgICBmb3IgKGxldCBjaGFyIG9mIGlucHV0KSB7XHJcbiAgICAgICAgaWYgKGNoYXIgaW4gc3VwZXJzY3JpcHREaWdpdHMpIHtcclxuICAgICAgICAgIG91dHB1dCArPSBzdXBlcnNjcmlwdERpZ2l0c1tjaGFyXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3V0cHV0ICs9IGNoYXI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBvdXRwdXQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNvbnZlcnRUb1N1cGVyc2NyaXB0XCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBzdWJzY3JpcHROdW1iZXJzKHN0cjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgc3Vic2NyaXB0czogYW55ID0ge1xyXG4gICAgICAgICcwJzogJ1xcdTIwODAnLFxyXG4gICAgICAgICcxJzogJ1xcdTIwODEnLFxyXG4gICAgICAgICcyJzogJ1xcdTIwODInLFxyXG4gICAgICAgICczJzogJ1xcdTIwODMnLFxyXG4gICAgICAgICc0JzogJ1xcdTIwODQnLFxyXG4gICAgICAgICc1JzogJ1xcdTIwODUnLFxyXG4gICAgICAgICc2JzogJ1xcdTIwODYnLFxyXG4gICAgICAgICc3JzogJ1xcdTIwODcnLFxyXG4gICAgICAgICc4JzogJ1xcdTIwODgnLFxyXG4gICAgICAgICc5JzogJ1xcdTIwODknLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdmFyIHJlc3VsdCA9ICcnO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChzdWJzY3JpcHRzW3N0cltpXV0pIHtcclxuICAgICAgICAgIHJlc3VsdCArPSBzdWJzY3JpcHRzW3N0cltpXV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc3VsdCArPSBzdHJbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInN1YnNjcmlwdE51bWJlcnNcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QXV0aG9yaXR5TGFiZWwoc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZShzdGF0ZU5hbWUpO1xyXG4gICAgICBzd2l0Y2ggKHN0YXRlLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlICdOU1cnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1FMRCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnU0EnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1RBUyc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnVklDJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdXQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnQUNUJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdOVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBdXRob3JpdHlMYWJlbFwiKTtcclxuICAgICAgcmV0dXJuIHN0YXRlTmFtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN0YXRlQXV0aG9yaXR5TGFiZWwoc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZShzdGF0ZU5hbWUpO1xyXG4gICAgICBzd2l0Y2ggKHN0YXRlLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlICdOU1cnOlxyXG4gICAgICAgICAgcmV0dXJuICdBdXRob3Jpc2F0aW9uIG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnUUxEJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgbnVtYmVyJztcclxuICAgICAgICBjYXNlICdTQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1Blcm1pdCBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1RBUyc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1dGhvcml0eSBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1ZJQyc6XHJcbiAgICAgICAgICByZXR1cm4gJ1dhcnJhbnQgbnVtYmVyJztcclxuICAgICAgICBjYXNlICdXQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1dGhvcml0eSBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ0FDVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnTlQnOlxyXG4gICAgICAgICAgcmV0dXJuICdBdXRob3Jpc2F0aW9uIG51bWJlcic7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiAnQXV0aG9yaXNhdGlvbiBudW1iZXInO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFN0YXRlQXV0aG9yaXR5TGFiZWxcIik7XHJcbiAgICAgIHJldHVybiBzdGF0ZU5hbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRFeHRlbXBUVFBOYW1lKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10KSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzWzBdLnRwcE5hbWUpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrKSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrICE9IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSArICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkpID8gJyBbJyArIHNlbGVjdGVkRm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgKyAnXScgKyAnIHggJyA6IFwiXCIpICsgc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eW51bWJlck9mUGFjaykudHJpbSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSkgPyAnIFsnICsgc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSArICddJyA6IFwiXCIpKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZS50cmltKCkgOiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRFeHRlbXBUVFBOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdW5kRGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgcm91bmRfVmFsID0gTWF0aC5yb3VuZCh2YWx1ZSk7XHJcbiAgICAgIGlmIChyb3VuZF9WYWwgPCAwKSB7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFyIHJvdW5kX1ZhbDEgPSByb3VuZF9WYWwudG9TdHJpbmcoKTtcclxuICAgICAgICAvLyByb3VuZF9WYWwgPSBwYXJzZUludChyb3VuZF9WYWwxLDEwKTtcclxuICAgICAgICByZXR1cm4gcm91bmRfVmFsMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyb3VuZERhdGFcIik7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXJ4TWVkaWNhcmVDYXJkKG1lZGljYXJlTnVtYmVyOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBtZWRpY2FyZUNhcmQgPSAnJztcclxuICAgICAgbWVkaWNhcmVDYXJkID0gbWVkaWNhcmVOdW1iZXIuc2xpY2UoMCwgMTApO1xyXG4gICAgICByZXR1cm4gbWVkaWNhcmVDYXJkO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJlcnhNZWRpY2FyZUNhcmRcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXJ4TWVkaWNhcmVJUk4obWVkaWNhcmVOdW1iZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIG1lZGljYXJlQ2FyZElSTiA9ICcnO1xyXG4gICAgICBtZWRpY2FyZUNhcmRJUk4gPSBtZWRpY2FyZU51bWJlci5zbGljZSgtMSk7XHJcbiAgICAgIHJldHVybiBtZWRpY2FyZUNhcmRJUk47XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImVyeE1lZGljYXJlSVJOXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFVudXN1YWxRdHlGbGFnKHNGb3JtdWxhdGlvbjogYW55LCBxdWFudGl0eVZhbDogYW55LCBQcmVzY3JpYmVBUzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJyB8fCBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdycGJzJykge1xyXG4gICAgICAgIGlmIChzRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMgIT0gcXVhbnRpdHlWYWwpIHtcclxuICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0VW51c3VhbFF0eUZsYWdcIik7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zdGF0ZSBuYW1lIGZyb20gYWRkcmVzc1xyXG4gIGdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUoc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHN3aXRjaCAoc3RhdGVOYW1lLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlICduZXcgc291dGggd2FsZXMnOlxyXG4gICAgICAgICAgcmV0dXJuICdOU1cnO1xyXG4gICAgICAgIGNhc2UgJ3F1ZWVuc2xhbmQnOlxyXG4gICAgICAgICAgcmV0dXJuICdRTEQnO1xyXG4gICAgICAgIGNhc2UgJ3NvdXRoIGF1c3RyYWxpYSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1NBJztcclxuICAgICAgICBjYXNlICd0YXNtYW5pYSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1RBUyc7XHJcbiAgICAgICAgY2FzZSAndmljdG9yaWEnOlxyXG4gICAgICAgICAgcmV0dXJuICdWSUMnO1xyXG4gICAgICAgIGNhc2UgJ3dlc3Rlcm4gYXVzdHJhbGlhJzpcclxuICAgICAgICAgIHJldHVybiAnV0EnO1xyXG4gICAgICAgIGNhc2UgJ2F1c3RyYWxpYW4gY2FwaXRhbCB0ZXJyaXRvcnknOlxyXG4gICAgICAgICAgcmV0dXJuICdBQ1QnO1xyXG4gICAgICAgIGNhc2UgJ25vcnRoZXJuIHRlcnJpdG9yeSc6XHJcbiAgICAgICAgICByZXR1cm4gJ05UJztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIHN0YXRlTmFtZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEdlbmRlcihnZW5kZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGdlbmRlclRleHQgPSAnTm90IEF2YWlsYWJsZSc7XHJcbiAgICAgIGdlbmRlclRleHQgPVxyXG4gICAgICAgIGdlbmRlci50b0xvd2VyQ2FzZSgpID09ICdtJyA/ICdNYWxlJyA6IGdlbmRlci50b0xvd2VyQ2FzZSgpID09ICdmJyA/ICdGZW1hbGUnIDogJ05vdCBBdmFpbGFibGUnO1xyXG4gICAgICByZXR1cm4gZ2VuZGVyVGV4dDtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0R2VuZGVyXCIpO1xyXG4gICAgICByZXR1cm4gJ05vdCBBdmFpbGFibGUnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0R2VuZGVyQ29kZShnZW5kZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGdlbmRlckNvZGUgPSAnTm90IEF2YWlsYWJsZSc7XHJcbiAgICAgIGdlbmRlckNvZGUgPSBnZW5kZXIudG9Mb3dlckNhc2UoKSA9PSAnbScgPyAnTScgOiBnZW5kZXIudG9Mb3dlckNhc2UoKSA9PSAnZicgPyAnRicgOiAnVSc7XHJcbiAgICAgIHJldHVybiBnZW5kZXJDb2RlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRHZW5kZXJDb2RlXCIpO1xyXG4gICAgICByZXR1cm4gJ1UnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGFkKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZSA8IDEwID8gJzAnICsgdmFsdWUgOiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicGFkXCIpO1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRPZmZzZXQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIC8vIHZhciBkYXRlID0gdGhpcy5zdGF0ZS5zdGFydERhdGU7XHJcbiAgICAgIHZhciBzaWduID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpID4gMCA/ICctJyA6ICcrJztcclxuICAgICAgdmFyIG9mZnNldCA9IE1hdGguYWJzKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XHJcbiAgICAgIHZhciBob3VycyA9IHRoaXMucGFkKE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApKTtcclxuICAgICAgdmFyIG1pbnV0ZXMgPSB0aGlzLnBhZChvZmZzZXQgJSA2MCk7XHJcbiAgICAgIHJldHVybiBob3VycyArICc6JyArIG1pbnV0ZXM7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldE9mZnNldFwiKTtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaHRtbFRvRm9ybWF0dGVkVGV4dChyZXN0cmljdGlvbjogc3RyaW5nKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gcmVzdHJpY3Rpb24ucmVwbGFjZSgvPGJyIFxcLz4vZywgJyonKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaHRtbFRvRm9ybWF0dGVkVGV4dFwiKTtcclxuICAgICAgcmV0dXJuIHJlc3RyaWN0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93KEJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdyA9IEJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJicmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBQUk5DaGFuZ2UoUFJOOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhQUk4gPSBQUk47XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiUFJOQ2hhbmdlXCIpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGlzQ2hhbmdlQnJhbmROYW1lKGlzQnJhbmROYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSBpc0JyYW5kTmFtZTtcclxuICAgICAgaWYgKCFpc0JyYW5kTmFtZSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpc0NoYW5nZUJyYW5kTmFtZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbmRUb1BoYXJtYWN5Q2hhbmdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5KVxyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VuZFRvUGhhcm1hY3lDaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbmNsdWRlUnRwbU1vZGFsKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuaXNSdHBtTmV4dCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzKSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAmJiBBcnJheS5pc0FycmF5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvblsncnRwbVN0YXRlcyddKSAmJiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uWydydHBtU3RhdGVzJ10gYXMgYW55W10pLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbGV0IGlzUnRwbVN0YXRlcyA9ICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25bJ3J0cG1TdGF0ZXMnXSBhcyBhbnlbXSkuaW5jbHVkZXModGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSk7XHJcbiAgICAgICAgICAgIGlmIChpc1J0cG1TdGF0ZXMpIHtcclxuICAgICAgICAgICAgICB2YXIgZGF0YSA9IFwiVGhlIHNlbGVjdGVkIGRydWcgY29tZXMgdW5kZXIgUmVhbCBUaW1lIFByZXNjcmlwdGlvbiBNb25pdG9yaW5nIChSVFBNKSBpbiBcIiArIHRoaXMuZ2V0U3RhdGVOYW1lRnJvbVN0YXRlQ29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKSArIFwiLiBQbGVhc2UgcmV2aWV3LlwiXHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBkYXRhKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmlzUnRwbU5leHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVEcm9wZG93bigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVEcm9wZG93bigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZURyb3Bkb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpbmNsdWRlUnRwbU1vZGFsXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgRXByZXNjcmlwZVNlbmQoZmxhZzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuZVByZXNjcmlwdGlvblZhbGlkYXRpb24oKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9ICdFJztcclxuICAgICAgICB0aGlzLnNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWJvcnRkaXNhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgdGhpcy5pc2VwcmlzY3JpYmVwcmludCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBpZiAodGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSBcInBic1wiICYmIHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiTlNXXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAxKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5ICYmIGZsYWcgIT0gMikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Db25maXJtUGF0aWVudFBvcHVwKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSAmJiBmbGFnICE9IDIpIHtcclxuICAgICAgICAgICAgdGhpcy5Db25maXJtUGF0aWVudFBvcHVwKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ID8gKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3NlcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXS50b0xvd2VyQ2FzZSgpID09ICd1bnNjaGVkdWxlZCcgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzWzBdIDogJycpIDogXCJcIjtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiBzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09ICdzOCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmlzUGFzc3dvcmRDaGVjaykge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlQ29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIkVwcmVzY3JpcGVTZW5kXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQ29uZmlybVBhdGllbnRQb3B1cCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihDb25maXJtUGF0aWVudENvbnRhY3REZXRhaWxzQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSAnczgnICYmIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5pc1Bhc3N3b3JkQ2hlY2spIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFBhc3N3b3JkQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDIpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSByZXNwb25zZS5pc1ByaW50QXZhaWxhYmxlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IHJlc3BvbnNlLkFkZHJlc3NTZW5kVG9BZGRUeXBlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlciA9IHJlc3BvbnNlLnJ4bnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQgPSByZXNwb25zZS5yeGVtYWlsSWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSByZXNwb25zZS5pc1ByaW50QXZhaWxhYmxlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlID0gcmVzcG9uc2UuQWRkcmVzc1NlbmRUb0FkZFR5cGU7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIgPSByZXNwb25zZS5yeG51bWJlcjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQgPSByZXNwb25zZS5yeGVtYWlsSWQ7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIkNvbmZpcm1QYXRpZW50UG9wdXBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVzY3JpcGVQcmludCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICgodGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnNjcmlwdFR5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKSA9PSAnTScgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc3RhdHVzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKSB8fCAodGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnNjcmlwdFR5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKSA9PSAnRScpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYWJvcnRkaXNhYmxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9ICdNJztcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiU01TXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdmFyIHNjaGVkdWxlTnVtYmVyID0gIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ID8gKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3NlcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXS50b0xvd2VyQ2FzZSgpID09ICd1bnNjaGVkdWxlZCcgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzWzBdIDogJycpIDogXCJcIjtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiBzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09ICdzOCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmlzUGFzc3dvcmRDaGVjaykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LDIpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VDb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmlwZVByaW50XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5kaWNhdGlvbkF1dGhvcml0eShtYXhRdHlVbml0czogYW55LCBxdWFudGl0eVZhbDogYW55LCByZXBlYXRzOiBhbnksIHJlcGVhdHNWYWw6IGFueSwgaW5kZXg6IGFueSwgcmVzdHJpY3Rpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAncHJlc2NyaWJlZCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMgPSAnJztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB2YXIgdGVtcERpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgdmFyIHJlcGxhY2V2YWx1ZSA9IHRoaXMuaHRtbFRvRm9ybWF0dGVkVGV4dChyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQpO1xyXG4gICAgICB0ZW1wRGl2RWxlbWVudC5pbm5lckhUTUwgPSByZXBsYWNldmFsdWU7XHJcbiAgICAgIHZhciB2YWx1ZSA9IHRlbXBEaXZFbGVtZW50LnRleHRDb250ZW50IHx8IHRlbXBEaXZFbGVtZW50LmlubmVyVGV4dCB8fCAnJztcclxuICAgICAgaWYgKCghdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyA/IHBhcnNlRmxvYXQobWF4UXR5VW5pdHMpIDogMSkgPCBwYXJzZUludChxdWFudGl0eVZhbCkgfHwgcGFyc2VJbnQocmVwZWF0cykgPCBwYXJzZUludChyZXBlYXRzVmFsKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gaW5kZXg7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vID0gJyc7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gaW5kZXg7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgPyByZXN0cmljdGlvbi5zdHJlYW1saW5lZENvZGUgOiAnJztcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaW5kaWNhdGlvbkF1dGhvcml0eVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE1heFF1YW50aXR5KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNUeXBlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZS50b0xvd2VyQ2FzZSgpID09IFwibm9uIHBic1wiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5udW1iZXJPZlBhY2sgKyBcInhcIiArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi51bml0UGVyUGFjaztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm51bWJlck9mUGFjaykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5udW1iZXJPZlBhY2sgIT0gMCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5udW1iZXJPZlBhY2s7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubWF4UXR5VW5pdHMpKVxyXG4gICAgICAgICAgcmV0dXJuICh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnID8gXCIxIHggXCIgOiBcIlwiKSArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0c1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldE1heFF1YW50aXR5XCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERlZmF1bHRRdWFudGl0eSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubnVtYmVyT2ZQYWNrKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm51bWJlck9mUGFjayAhPSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5udW1iZXJPZlBhY2s7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tYXhRdHlVbml0cykpIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgPyBcIjEgeCBcIiA6IFwiXCIpICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldERlZmF1bHRRdWFudGl0eVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25JbnB1dENoYW5nZShuZXdWYWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMgPSBuZXdWYWx1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJvbklucHV0Q2hhbmdlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbnB1dGNoYW5nZUFwcHJvdmFsTm8obmV3VmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSBuZXdWYWx1ZS5yZXBsYWNlKC9bXmEtekEtWiAwLTldL2csIFwiXCIpLnJlcGxhY2UoL1xccysvZywgXCJcIik7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwib25JbnB1dGNoYW5nZUFwcHJvdmFsTm9cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBZGRBdXRoVmFsdWUobnVtOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG51bSkpIHtcclxuICAgICAgICBjb25zdCBhcnJPZkRpZ2l0cyA9IEFycmF5LmZyb20oU3RyaW5nKG51bSksIE51bWJlcik7XHJcbiAgICAgICAgbGV0IHZhbHVlT2ZBdXRob3JpdHlBcnIgPSB0aGlzLmFkZEF1dGhWYWx1ZShhcnJPZkRpZ2l0cyk7XHJcbiAgICAgICAgbGV0IGdldFJlbWFpbmRlclZhbHVlID0gdmFsdWVPZkF1dGhvcml0eUFyciAlIDk7XHJcbiAgICAgICAgbGV0IGFkZFJlbWFpbmRlclZhbHVlQXRMYXN0ID0gJycgKyBudW0gKyBnZXRSZW1haW5kZXJWYWx1ZS50b0ZpeGVkKCk7XHJcbiAgICAgICAgcmV0dXJuIGFkZFJlbWFpbmRlclZhbHVlQXRMYXN0O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEFkZEF1dGhWYWx1ZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRBdXRoVmFsdWUoYXJyT2ZEaWdpdHM6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGFkZGVkVmFsdWUgPSAwO1xyXG4gICAgICBhcnJPZkRpZ2l0cy5tYXAoKG51bTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgYWRkZWRWYWx1ZSA9IG51bSArIGFkZGVkVmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gYWRkZWRWYWx1ZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiYWRkQXV0aFZhbHVlXCIpO1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vdGhlIGJlbG93IGNvZGUgd2lsbCBoaXQgdGhlIGVSWCBhbmQgcmV0dXJuIHRoZSB2YWx1ZSB3aXRoIGJhcmNvZGVcclxuICBwcmVzY3JpYmVNZWQoKSB7XHJcbiAgICB2YXIgYm9keSA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpID09IHRydWUpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzUzLm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzUzLmNvZGUpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzUzLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzUzLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJlXCIpIHtcclxuICAgICAgICB0aGlzLmFib3J0QnRuRmxhZyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IHRydWU7XHJcbiAgICAgIHZhciBwYXRpZW50RGV0YWlscyA9IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHM7XHJcbiAgICAgIHZhciBwaHlzaWNpYW5EZXRhaWxzID0gdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzO1xyXG4gICAgICB2YXIgc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuICAgICAgdmFyIG1lZGljYXJlQ2FyZCA9ICcnO1xyXG4gICAgICBpZiAocGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIpIHtcclxuICAgICAgICB2YXIgbWVkTm8xID0gcGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIucmVwbGFjZSgvIC9nLCAnJyk7XHJcbiAgICAgICAgbWVkTm8xID0gbWVkTm8xLnJlcGxhY2UoL18vZywgJycpO1xyXG4gICAgICAgIG1lZE5vMSA9IG1lZE5vMS5yZXBsYWNlKC8tL2csICcnKTtcclxuICAgICAgICBtZWRpY2FyZUNhcmQgPSBtZWRObzE7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBic01hbnVmYWN0dXJlckNvZGVTZXQgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzTWFudWZhY3R1cmVyQ29kZXMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24ucGJzTWFudWZhY3R1cmVyQ29kZXMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLnBic01hbnVmYWN0dXJlckNvZGVzWzBdKSA/IHNlbGVjdGVkRm9ybXVsYXRpb24ucGJzTWFudWZhY3R1cmVyQ29kZXNbMF0gOiAnJztcclxuICAgICAgbGV0IGNoZWNrQXV0aG9yaXR5Qm94ID0gdGhpcy5zaG93QXV0aG9yaXR5Qm94KHNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpO1xyXG4gICAgICBib2R5ID0ge1xyXG4gICAgICAgIGlzU2hvd0F1dGhvcml0eTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc1Nob3dBdXRob3JpdHksXHJcbiAgICAgICAgcGJzTGlzdEluc3RydWN0aW9uczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zIDogXCJcIixcclxuICAgICAgICBpc0JyYW5kTmFtZTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSxcclxuICAgICAgICBpbmNsdWRlQnJhbmRGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lLFxyXG4gICAgICAgIHJlc3RyaWN0ZWRQYnNTZWxlY3RlZEluZGV4OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkKSA/IHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkICsgMSA6ICcnLFxyXG4gICAgICAgIHJ4SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkKSA/IHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA6ICcnLFxyXG4gICAgICAgIG1BUGF0aWVudElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZlbmRvclBhdGllbnRJZCxcclxuICAgICAgICBtQVBoYXJtYWNpc3RJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52ZW5kb3JQaHlzaWNpYW5JZCxcclxuICAgICAgICBtQUZhY2lsaXR5SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmVuZG9yRmFjaWxpdHlJZCxcclxuICAgICAgICBwcml2YWN5U3RhdGVtZW50OiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PSAnZScgPyAwIDogMSxcclxuICAgICAgICBocGlJOiBwaHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlck51bWJlcjogcGh5c2ljaWFuRGV0YWlscy5wcmVzY3JpYmVyTnVtYmVyLFxyXG4gICAgICAgIHByZXNjcmliZXJBaHByYU51bWJlcjogcGh5c2ljaWFuRGV0YWlscy5wcmVzY3JpYmVyQWhwcmFOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlckdpdmVuTmFtZXM6IHBoeXNpY2lhbkRldGFpbHMuZmlyc3ROYW1lLFxyXG4gICAgICAgIHByZXNjcmliZXJGYW1pbHlOYW1lOiBwaHlzaWNpYW5EZXRhaWxzLmxhc3ROYW1lLFxyXG4gICAgICAgIHByZXNjcmliZXJIb21lTW9iaWxlOiBwaHlzaWNpYW5EZXRhaWxzLm1vYmlsZVBob25lLFxyXG4gICAgICAgIHByZXNjcmliZXJIb21lRW1haWw6IHBoeXNpY2lhbkRldGFpbHMuZW1haWwsXHJcbiAgICAgICAgb3JnSHBpTzogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIgOiAnJyxcclxuICAgICAgICBvcmdOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTmFtZSA6ICcnLFxyXG4gICAgICAgIG9yZ0VtYWlsOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0VtYWlsKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0VtYWlsIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc0xpbmUxOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTEgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzTGluZTI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUyKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMiA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NTdWJ1cmI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1N1YnVyYikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3VidXJiIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc1Bvc3RDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NQb3N0Q29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzUG9zdENvZGUgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzU3RhdGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1N0YXRlKSA/IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3RhdGUpIDogJycsXHJcbiAgICAgICAgaWhpOiBwYXRpZW50RGV0YWlscy5paGlOdW1iZXIsXHJcbiAgICAgICAgbWVkaWNhcmVOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkaWNhcmVDYXJkKSA/IHRoaXMuZXJ4TWVkaWNhcmVDYXJkKG1lZGljYXJlQ2FyZCkgOiAnJyxcclxuICAgICAgICBtZWRpY2FyZUlybjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWRpY2FyZUNhcmQpID8gdGhpcy5lcnhNZWRpY2FyZUlSTihtZWRpY2FyZUNhcmQpIDogJycsXHJcbiAgICAgICAgbWVkaWNhcmVOdW1iZXJFeHBpcnk6IHBhdGllbnREZXRhaWxzLm1lZGljYXJlRXhwaXJ5LFxyXG4gICAgICAgIGRhdGVPZkJpcnRoOiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShwYXRpZW50RGV0YWlscy5kb2IsICd5eXl5LU1NLWRkJyksXHJcbiAgICAgICAgZmFtaWx5TmFtZTogcGF0aWVudERldGFpbHMubGFzdE5hbWUsXHJcbiAgICAgICAgZ2l2ZW5OYW1lczogcGF0aWVudERldGFpbHMuZmlyc3ROYW1lLFxyXG4gICAgICAgIHBhdGllbnRVc2VySWRTdHJpbmc6IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMucGF0aWVudFVzZXJJZCxcclxuICAgICAgICB1c2VySWRTdHJpbmc6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgZ2VuZGVyQ29kZTogdGhpcy5nZXRHZW5kZXJDb2RlKHBhdGllbnREZXRhaWxzLmdlbmRlciksXHJcbiAgICAgICAgaG9tZU1vYmlsZTogcGF0aWVudERldGFpbHMucGhvbmUsXHJcbiAgICAgICAgaG9tZUVtYWlsOiBwYXRpZW50RGV0YWlscy5lbWFpbCxcclxuICAgICAgICBhZGRyZXNzTGluZTE6IHBhdGllbnREZXRhaWxzLmFkZHJlc3MxLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMjogcGF0aWVudERldGFpbHMuYWRkcmVzczIsXHJcbiAgICAgICAgYWRkcmVzc1N1YnVyYjogcGF0aWVudERldGFpbHMuY2l0eSxcclxuICAgICAgICBhZGRyZXNzUG9zdENvZGU6IHBhdGllbnREZXRhaWxzLnBvc3RDb2RlLFxyXG4gICAgICAgIGFkZHJlc3NTdGF0ZTogdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHBhdGllbnREZXRhaWxzLnN0YXRlKSxcclxuICAgICAgICBwcmVzY3JpcHRpb25Xcml0dGVuRGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpIDogXCJcIixcclxuICAgICAgICBmb3JtVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgc3RyZW5ndGg6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubW9sZWN1bGVTdHJlbmd0aCkgPyBzZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGggOiBcIiBcIixcclxuICAgICAgICBkaXJlY3Rpb25zOiB0aGlzLmdldERpcmVjdGlvbnMoKSxcclxuICAgICAgICBicmFuZFN1YnN0aXR1dGVzTm90QWxsb3dlZDogdGhpcy5jb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cgPT0gdHJ1ZSA/IDAgOiAxLFxyXG4gICAgICAgIG1heGltdW1OdW1iZXJPZlJlcGVhdHM6IHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCxcclxuICAgICAgICBtaW5pbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0czogdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSB1bmRlZmluZWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgIT0gXCJcIiA/IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwpIDogXCItMVwiLFxyXG4gICAgICAgIHBhdGllbnRDdGdGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9PSB0cnVlID8gMCA6IDEsXHJcbiAgICAgICAgcGJzSXRlbUNvZGVDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgcGJzSXRlbUNvZGVUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZVRleHQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGVUZXh0IDogXCJcIixcclxuICAgICAgICBwYnNJdGVtTWFudWZhY3R1cmVyOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID8gcGJzTWFudWZhY3R1cmVyQ29kZVNldCA6ICcnLFxyXG4gICAgICAgIHN0YXRlQXV0aG9yaXR5TnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuU3RhdGVBdXRob3JpdHlOdW1iZXIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlci50cmltKCkgOiAnJyxcclxuICAgICAgICByZWFzb25Gb3JUaGVyYXBldXRpY0dvb2Q6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpcHRpb25SZWFzb24pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpcHRpb25SZWFzb24udHJpbSgpIDogJycsXHJcbiAgICAgICAgdW51c3VhbFF0eUZsYWc6IHRoaXMuc2V0VW51c3VhbFF0eUZsYWcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLCB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTKSxcclxuICAgICAgICBxdWFudGl0eU9mVGhlcmFwZXV0aWNHb29kUXVhbnRpdHk6IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpLFxyXG4gICAgICAgIGNvbXBsZXhJbnN0cnVjdGlvbnM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZS50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIGFtdE1wcENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5BTVRNUFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRNUFBDb2RlIDogXCJcIixcclxuICAgICAgICBhbXRNcHBOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0ubXBwTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0ubXBwTmFtZSA6ICcnLFxyXG4gICAgICAgIGFtdFRwcENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5BTVRUUFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRUUFBDb2RlIDogXCJcIixcclxuICAgICAgICBhbXRUcHBOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSA6ICcnLFxyXG4gICAgICAgIGFtdFRwQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LkFNVFRQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UVFBDb2RlIDogXCJcIixcclxuICAgICAgICBhbXRUcE5hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwTmFtZSA6ICcnLFxyXG4gICAgICAgIGFtdENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5hbXRjb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQuYW10Y29kZSA6ICcnLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uTWltc0NvZGU6ICcnLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uTG9jYWxDb2RlOiAnJyxcclxuICAgICAgICAvLyB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbkVhbkNvZGU6IFwiXCIsXHJcbiAgICAgICAgdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25FYW5UZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZS50b0xvd2VyQ2FzZSgpID09ICdub24gcGJzJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiAnJyxcclxuICAgICAgICBwcmVzY3JpYmVyT2NjdXBhdGlvbkNvZGU6IHBoeXNpY2lhbkRldGFpbHMub2NjdXBhdGlvbkNvZGUsXHJcbiAgICAgICAgcHJlc2NyaWJlck9jY3VwYXRpb25UZXh0OiBwaHlzaWNpYW5EZXRhaWxzLm9jY3VwYXRpb25UZXh0LFxyXG4gICAgICAgIHByZXNjcmliZXJQZXJzb25UaXRsZTogcGh5c2ljaWFuRGV0YWlscy5wcmVmaXgsXHJcbiAgICAgICAgcHJlc2NyaWJlclF1YWxpZmljYXRpb25zOiBwaHlzaWNpYW5EZXRhaWxzLnN1ZmZpeCxcclxuICAgICAgICBvcmdQaG9uZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdNb2JpbGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTW9iaWxlIDogJycsXHJcbiAgICAgICAgb3JnRmF4OiAnJyxcclxuICAgICAgICBsb2NhbFN5c3RlbUlEOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRVc2VySWQsXHJcbiAgICAgICAgYWRkcmVzc1NlbmRUb0FkZFR5cGU6IHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUsXHJcbiAgICAgICAgYWRkcmVzc0VtYWlsOiB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQpID8gcGF0aWVudERldGFpbHMuZW1haWwgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCxcclxuICAgICAgICBhZGRyZXNzU21zOiB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlcikgPyBwYXRpZW50RGV0YWlscy5waG9uZSA6IHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIsXHJcbiAgICAgICAgZ2VuZGVyVGV4dDogdGhpcy5nZXRHZW5kZXIocGF0aWVudERldGFpbHMuZ2VuZGVyKSxcclxuICAgICAgICBhZGRyZXNzTGluZTM6ICcnLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbldyaXR0ZW5VdGNUaW1lOiAnMDEtMDEtMTk3MCAwOTowNjowOScsIC8vIHByZXNjcmlwdGlvbldyaXR0ZW5VdGNUaW1lOiBtb21lbnQobmV3IERhdGUoKSkuZm9ybWF0KFwiTU0tREQteXl5eSBoaDptbTpzc1wiKSxcclxuICAgICAgICBwcmVzY3JpcHRpb25Xcml0dGVuVXRjT2Zmc2V0OiB0aGlzLmdldE9mZnNldCgpLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbkV4cGlyZXNWYWx1ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmVuZERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlLCAnTU0vZGQveXl5eScpIDogXCJcIixcclxuICAgICAgICBhY3RpdmVJbmdyZWRpZW50OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiBcIlwiLFxyXG4gICAgICAgIGZvcm1Db2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBmb3JtdWxhOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5mb3JtdWxhKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5mb3JtdWxhIDogXCJcIixcclxuICAgICAgICBhZGRpdGlvbmFsQ29tbWVudHM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3RlcykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgYXNsQ29uc2VudDogMSxcclxuICAgICAgICBwcmVzY3JpcHRpb25Ob3RlRGV0YWlsTm90ZTogdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUudHJpbSgpLFxyXG4gICAgICAgIGR2YU51bWJlcjogcGF0aWVudERldGFpbHMuZHZhTnVtYmVyLFxyXG4gICAgICAgIGR2YVR5cGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFDYXJkVHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFDYXJkVHlwZS50b0xvd2VyQ2FzZSgpICE9ICdub25lJyA/IHBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgOiAnJyxcclxuICAgICAgICBwYnNBcHByb3ZhbE51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vLnRyaW0oKSA6ICcnLCAvL2luZm9ybSB0byBzdGVwaGVuXHJcbiAgICAgICAgcm91dGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZS50cmltKCkgOiAnJyxcclxuICAgICAgICAvL3Byb3ZpZGVyTnVtYmVyOicnLFxyXG4gICAgICAgIHByZXNjcmliZXJUeXBlOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJUeXBlLFxyXG4gICAgICAgIG1lZGljaW5lTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3ROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSA6IFwiXCIsXHJcbiAgICAgICAgYnJhbmROYW1lOiB0aGlzLmdldEJyYW5kTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pLFxyXG4gICAgICAgIGdlbmVyaWNOYW1lOiB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5Jc0V4dGVtcCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiB0aGlzLmdldEV4dGVtcE1QUE5hbWUoKSksXHJcbiAgICAgICAgLy9pdGVtR2VuZXJpY0ludGVudGlvbjogZ2V0SXRlbUdlbmVyaWNJbnRlbnRpb24odGhpcy5zdGF0ZS5sZW1pLHRoaXMuc3RhdGUuaXNCcmFuZE5hbWUsdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyB0cnVlIDogZmFsc2UpLFxyXG4gICAgICAgIGl0ZW1HZW5lcmljSW50ZW50aW9uOiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgIT0gdHJ1ZSA/ICdCJyA6ICdHJyxcclxuICAgICAgICBzY2hlZHVsZU51bWJlcjogdGhpcy5wYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pICE9IFwiXCIgPyB0aGlzLnBheUxvYWRTdGF0ZVNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgOiB0aGlzLmNvbW1vblNlcnZpY2VzLmdldFNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiksXHJcbiAgICAgICAgZG9jdG9yTm90ZXM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3RlcykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgcmVndWxhdGlvbjI0OiB0aGlzLmNvbW1vblNlcnZpY2VzLnJlZ3VsYXRpb24yNCA9PSBmYWxzZSA/IDEgOiAwLFxyXG4gICAgICAgIGlzRXh0ZW1wOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgIT0gbnVsbCA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gMCA6IDEgOiAxLFxyXG4gICAgICAgIC8vIGV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb246IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmIHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5FeHRlbXBvcmFuZW91c0Rlc2NyaXB0aW9uICE9ICcnID8gdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLkV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb24gOiAnJyxcclxuICAgICAgICBleHRlbXBvcmFuZW91c0Rlc2NyaXB0aW9uOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pIDogJycsXHJcbiAgICAgICAgYW5ub3RhdGlvbjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFubm90YXRpb24pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgdW5Vc3VhbERvc2VGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZyA9PSBmYWxzZSA/IDEgOiAwLFxyXG4gICAgICAgIHRyYWRlTmFtZTogdGhpcy5odG1sVG9UZXh0Q29udmVydCh0aGlzLmdldFRyYWRlTmFtZSgpKSxcclxuICAgICAgICAvL3Jlc3RyaWN0aW9uczogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gJycgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVzdHJpY3Rpb25zIDogJycsXHJcbiAgICAgICAgLy8gcHJlc2NyaWJlclBlcnNvblRpdGxlOiBwaHlzaWNpYW5EZXRhaWxzLnByZWZpeCxcclxuICAgICAgICBtYXhpbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0czogJycsXHJcbiAgICAgICAgY29tcGxleElkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCA6IDAsXHJcbiAgICAgICAgdmlzaXRJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52aXNpdElkLFxyXG4gICAgICAgIHNjcmlwdFR5cGU6IHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSxcclxuICAgICAgICBkb3NlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlIDogXCJcIixcclxuICAgICAgICBmcmVxdWVuY3k6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUgOiBcIlwiLFxyXG4gICAgICAgIGZvb2Q6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUgOiBcIlwiLFxyXG4gICAgICAgIHByZXNjcmliZUFzOiB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLFxyXG4gICAgICAgIHBybjogdGhpcy5jb21tb25TZXJ2aWNlcy5yeFBSTiA9PSBmYWxzZSA/IDEgOiAwLFxyXG4gICAgICAgIHNjcmlwdERhdGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSwgJ3l5eXktTU0tZGQnKSA6IFwiXCIsXHJcbiAgICAgICAgc3RhcnREYXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc3RhcnREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuc3RhcnREYXRlLCAnTU0vZGQveXl5eScpIDogXCJcIixcclxuICAgICAgICBwdXJwb3NlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZS50cmltKCksXHJcbiAgICAgICAgcGJzTm90ZXM6IHRoaXMuY29tbW9uU2VydmljZXMucGJzTm90ZXMsXHJcbiAgICAgICAgaXNBY3RpdmU6IDAsXHJcbiAgICAgICAgcHJvZHVjdElkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdElkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQgOiBcIlwiLFxyXG4gICAgICAgIGFtdFRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5mb3JtdWxhKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5mb3JtdWxhIDogXCJcIixcclxuICAgICAgICBxdWFudGl0eU9mVGhlcmFwZXV0aWNHb29kRG9zZVVuaXRDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgcXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZERvc2VVbml0VGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gOiBcIlwiLFxyXG4gICAgICAgIHByZXNjcmliZXJSb2xlQ29kZTogJycsXHJcbiAgICAgICAgcHJlc2NyaWJlclJvbGVUZXh0OiAnJyxcclxuICAgICAgICBvcmdIaWNMb2NhdGlvbklkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0hpY0xvY2F0aW9uSWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnSGljTG9jYXRpb25JZCA6ICcnLFxyXG4gICAgICAgIG9yZ1JvbGVDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVDb2RlIDogJycsXHJcbiAgICAgICAgb3JnUm9sZVRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUm9sZVRleHQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUm9sZVRleHQgOiAnJyxcclxuICAgICAgICBhdXRob3JpdHlBcHByb3ZhbE51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vLnRyaW0oKSA6ICcnLFxyXG4gICAgICAgIGF1dGhvcml0eUFwcHJvdmFsTnVtYmVyRmxhZzogcGFyc2VGbG9hdCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpIDwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkgfHwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMpIDwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsKSA/IDEgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnNbdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWRdLnN0cmVhbWxpbmVkQ29kZSkgJiYgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9uc1t0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZF0uc3RyZWFtbGluZWRDb2RlKSA9PSBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8pID8gMCA6IDEsXHJcbiAgICAgICAgLy8gcGJzQXV0aG9yaXR5UHJlc2NyaXB0aW9uTnVtYmVyOnRoaXMuc3RhdGUuYXBwcm92YWxObyA/IHRoaXMuc3RhdGUuYXBwcm92YWxObyA6IFwiXCIsXHJcbiAgICAgICAgLy8gc3RyZWFtbGluZWRBdXRob3JpdHlBcHByb3ZhbE51bWJlcjogdGhpcy5zdGF0ZS5hcHByb3ZhbE5vXHJcbiAgICAgICAgLy8gICA/IHRoaXMuc3RhdGUuYXBwcm92YWxOb1xyXG4gICAgICAgIC8vICAgOiBcIlwiLFxyXG4gICAgICAgIC8vIHBic0F1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiBcIlwiLFxyXG4gICAgICAgIC8vYmFyY29kZVxyXG4gICAgICAgIC8vc2NyaXB0TnVtYmVyOiBcIlwiLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLFxyXG4gICAgICAgIGVvcERpc3BsYXlOYW1lOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PSBcImVcIiA/IHRoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUpIDogdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSxcclxuICAgICAgICBpdGVtU3RyZW5ndGhYbWw6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5JdGVtU3RyZW5ndGhYbWwpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkl0ZW1TdHJlbmd0aFhtbCA6IFwiIFwiLFxyXG4gICAgICAgIC8vYXV0aG9yaXR5VmFsdWVcclxuICAgICAgICBwYnNEdmFBdXRob3JpdHlOdW1iZXI6IGNoZWNrQXV0aG9yaXR5Qm94ID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gOiAwLFxyXG4gICAgICAgIHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZTogdGhpcy5odG1sVG9UZXh0Q29udmVydCh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLC8vdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUpLFxyXG4gICAgICAgIHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRGb3VyOiB0aGlzLnNob3dBdXRob3JpdHlCb3godGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucywgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUywgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSwgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT09IFwicGJzXCIgJiYgdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpLnRvVXBwZXJDYXNlKCkgPT0gXCJOU1dcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PT0gXCJlXCIgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRGb3VyIDogJycsXHJcbiAgICAgICAgdW5saXN0ZWRJdGVtUmVwYXRBdXRob3JpdHk6IHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSA9PSB0cnVlID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgIGlzUHJpbnRBdmFpbGFibGU6IHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSxcclxuICAgICAgICBwcmVzY3JpYmVkSXRlbVJlc2VydmVkT25lOiB0aGlzLmNvbW1vblNlcnZpY2VzLmdldFNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgPyB0aGlzLm51bWJlclRvV29yZChwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSkgOiAnJyxcclxuICAgICAgICBteVNMQ29uc2VudDogdGhpcy5jb21tb25TZXJ2aWNlcy5teVNMQ29uc2VudCxcclxuICAgICAgICBzZW5kVG9QaGFybWFjeTogdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSxcclxuICAgICAgICBzZW5kVG9QaGFybWFjeVZhbHVlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWUsXHJcbiAgICAgICAgZW1lcmdlbmN5U3VwcGx5OiB0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSxcclxuICAgICAgICBtb2xlY3VsZVN0cmVuZ3RoR3JpZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1vbGVjdWxlU3RyZW5ndGhHcmlkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoR3JpZCA6ICcnLFxyXG4gICAgICAgIGVudGl0eUlkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuZW50aXR5SWQsXHJcbiAgICAgICAgaXNQcmVzY3JpYmVBbmRQcmludDogdGhpcy5pc2VwcmlzY3JpYmVwcmludCxcclxuICAgICAgICBhbXRDb2RlU3lzdGVtOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10Q29kZVN5c3RlbSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Q29kZVN5c3RlbSA6IFwiXCIsXHJcbiAgICAgICAgYW10VmVyc2lvbjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdFZlcnNpb24pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFZlcnNpb24gOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5V2l0aFVuaXQ6IHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1heFF0eVVuaXRzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyA6IFwiXCIsXHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWRcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5Qb3N0KGJvZHksIGNvbmZpZy5QSFlTSUNJQU4uUFJFU0NSSUJFKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pc1ByZXNjcmliZSA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSA9IGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGU7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZyA9IGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlU3VjY2VzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gcmVzLnJlc3BvbnNlX21lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZWRhdGEgPSByZXM7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0RW5kRGF0ZUFoZWFkKCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSAhPSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocmVzLmlzQW9ydCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWJvcnRCdG5GbGFnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCByZXMucmVzcG9uc2VfbWVzc2FnZSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfbWVzc2FnZSAhPSBudWxsICYmIHJlcy5yZXNwb25zZV9tZXNzYWdlICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSA9IHJlcy5lcnJvcl9jb2RlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gcmVzLnJlc3BvbnNlX21lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSA9IGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2cgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCh0aGlzLnJlc3BvbnNlRGF0YS5pc0Fib3J0KSB8fCAhdGhpcy5hYm9ydGRpc2FibGUpXHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1Jlc3BvbnNlTWVzc2FnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXNQcmVzY3JpYmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2cgPSBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3I7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlXHJcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLmlzQWJvcnQgfHwgIXRoaXMuYWJvcnRkaXNhYmxlKVxyXG4gICAgICAgICAgdGhpcy5zaG93UmVzcG9uc2VNZXNzYWdlKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmFib3J0QnRuRmxhZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgTXByZXNjcmliZU1lZChpZDogbnVtYmVyKSB7XHJcbiAgICB2YXIgYm9keSA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGlkID09IDEpIHtcclxuICAgICAgICBpZiAodGhpcy5lUHJlc2NyaXB0aW9uVmFsaWRhdGlvbigpKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChpZCA9PSAyKSB7XHJcbiAgICAgICAgaWYgKCh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdNJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpICE9ICdkcmFmdCcpIHx8ICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdFJykpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IHRydWU7XHJcbiAgICAgIGlmIChpZCA9PSAxKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gXCJFXCI7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiU01TXCI7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gXCJNXCI7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpID09IHRydWUpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykpIHtcclxuICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzUzLm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzUzLmNvZGUpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzUzLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzUzLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgICAgdmFyIHBhdGllbnREZXRhaWxzID0gdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgdmFyIHBoeXNpY2lhbkRldGFpbHMgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICAgIHZhciBzZWxlY3RlZEZvcm11bGF0aW9uID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICB2YXIgbWVkaWNhcmVDYXJkID0gJyc7XHJcbiAgICAgIGlmIChwYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlcikge1xyXG4gICAgICAgIHZhciBtZWRObzEgPSBwYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlci5yZXBsYWNlKC8gL2csICcnKTtcclxuICAgICAgICBtZWRObzEgPSBtZWRObzEucmVwbGFjZSgvXy9nLCAnJyk7XHJcbiAgICAgICAgbWVkTm8xID0gbWVkTm8xLnJlcGxhY2UoLy0vZywgJycpO1xyXG4gICAgICAgIG1lZGljYXJlQ2FyZCA9IG1lZE5vMTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgcGJzTWFudWZhY3R1cmVyQ29kZVNldCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzTWFudWZhY3R1cmVyQ29kZXMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24ucGJzTWFudWZhY3R1cmVyQ29kZXMubGVuZ3RoICE9IDAgPyBzZWxlY3RlZEZvcm11bGF0aW9uLnBic01hbnVmYWN0dXJlckNvZGVzWzBdIDogJyc7XHJcblxyXG4gICAgICBsZXQgY2hlY2tBdXRob3JpdHlCb3ggPSB0aGlzLnNob3dBdXRob3JpdHlCb3goXHJcbiAgICAgICAgc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsXHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyxcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LFxyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQVxyXG4gICAgICApO1xyXG4gICAgICBib2R5ID0ge1xyXG4gICAgICAgIHJ4SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkKSA/IHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA6ICcnLFxyXG4gICAgICAgIGlzU2hvd0F1dGhvcml0eTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc1Nob3dBdXRob3JpdHksXHJcbiAgICAgICAgcGJzTGlzdEluc3RydWN0aW9uczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zIDogXCJcIixcclxuICAgICAgICBpc0JyYW5kTmFtZTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSxcclxuICAgICAgICBpbmNsdWRlQnJhbmRGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lLFxyXG4gICAgICAgIHJlc3RyaWN0ZWRQYnNTZWxlY3RlZEluZGV4OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkKSA/IHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkICsgMSA6IFwiXCIsXHJcbiAgICAgICAgbUFQYXRpZW50SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmVuZG9yUGF0aWVudElkLFxyXG4gICAgICAgIG1BUGhhcm1hY2lzdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZlbmRvclBoeXNpY2lhbklkLFxyXG4gICAgICAgIG1BRmFjaWxpdHlJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52ZW5kb3JGYWNpbGl0eUlkLFxyXG4gICAgICAgIHByaXZhY3lTdGF0ZW1lbnQ6IHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZS50b0xvd2VyQ2FzZSgpID09ICdlJyA/IDAgOiAxLFxyXG4gICAgICAgIGhwaUk6IHBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyTnVtYmVyOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlckFocHJhTnVtYmVyOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJBaHByYU51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyR2l2ZW5OYW1lczogcGh5c2ljaWFuRGV0YWlscy5maXJzdE5hbWUsXHJcbiAgICAgICAgcHJlc2NyaWJlckZhbWlseU5hbWU6IHBoeXNpY2lhbkRldGFpbHMubGFzdE5hbWUsXHJcbiAgICAgICAgcHJlc2NyaWJlckhvbWVNb2JpbGU6IHBoeXNpY2lhbkRldGFpbHMubW9iaWxlUGhvbmUsXHJcbiAgICAgICAgcHJlc2NyaWJlckhvbWVFbWFpbDogcGh5c2ljaWFuRGV0YWlscy5lbWFpbCxcclxuICAgICAgICBvcmdIcGlPOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlciA6ICcnLFxyXG4gICAgICAgIG9yZ05hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdOYW1lIDogJycsXHJcbiAgICAgICAgb3JnRW1haWw6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnRW1haWwpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnRW1haWwgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzTGluZTE6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUxKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMSA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NMaW5lMjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUyIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc1N1YnVyYjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3VidXJiKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdWJ1cmIgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzUG9zdENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1Bvc3RDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NQb3N0Q29kZSA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3RhdGUpID8gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZSkgOiAnJyxcclxuICAgICAgICBpaGk6IHBhdGllbnREZXRhaWxzLmloaU51bWJlcixcclxuICAgICAgICBtZWRpY2FyZU51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWRpY2FyZUNhcmQpID8gdGhpcy5lcnhNZWRpY2FyZUNhcmQobWVkaWNhcmVDYXJkKSA6ICcnLFxyXG4gICAgICAgIG1lZGljYXJlSXJuOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZGljYXJlQ2FyZCkgPyB0aGlzLmVyeE1lZGljYXJlSVJOKG1lZGljYXJlQ2FyZCkgOiAnJyxcclxuICAgICAgICBtZWRpY2FyZU51bWJlckV4cGlyeTogcGF0aWVudERldGFpbHMubWVkaWNhcmVFeHBpcnksXHJcbiAgICAgICAgZGF0ZU9mQmlydGg6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHBhdGllbnREZXRhaWxzLmRvYiwgJ3l5eXktTU0tZGQnKSxcclxuICAgICAgICBmYW1pbHlOYW1lOiBwYXRpZW50RGV0YWlscy5sYXN0TmFtZSxcclxuICAgICAgICBnaXZlbk5hbWVzOiBwYXRpZW50RGV0YWlscy5maXJzdE5hbWUsXHJcbiAgICAgICAgcGF0aWVudFVzZXJJZFN0cmluZzogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkLFxyXG4gICAgICAgIHVzZXJJZFN0cmluZzogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICBnZW5kZXJDb2RlOiB0aGlzLmdldEdlbmRlckNvZGUocGF0aWVudERldGFpbHMuZ2VuZGVyKSxcclxuICAgICAgICBob21lTW9iaWxlOiBwYXRpZW50RGV0YWlscy5waG9uZSxcclxuICAgICAgICBob21lRW1haWw6IHBhdGllbnREZXRhaWxzLmVtYWlsLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMTogcGF0aWVudERldGFpbHMuYWRkcmVzczEsXHJcbiAgICAgICAgYWRkcmVzc0xpbmUyOiBwYXRpZW50RGV0YWlscy5hZGRyZXNzMixcclxuICAgICAgICBhZGRyZXNzU3VidXJiOiBwYXRpZW50RGV0YWlscy5jaXR5LFxyXG4gICAgICAgIGFkZHJlc3NQb3N0Q29kZTogcGF0aWVudERldGFpbHMucG9zdENvZGUsXHJcbiAgICAgICAgYWRkcmVzc1N0YXRlOiB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUocGF0aWVudERldGFpbHMuc3RhdGUpLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbldyaXR0ZW5EYXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUsICd5eXl5LU1NLWRkJykgOiBcIlwiLFxyXG4gICAgICAgIGZvcm1UZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBzdHJlbmd0aDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5tb2xlY3VsZVN0cmVuZ3RoKSA/IHNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCA6IFwiIFwiLFxyXG4gICAgICAgIGRpcmVjdGlvbnM6IHRoaXMuZ2V0RGlyZWN0aW9ucygpLFxyXG4gICAgICAgIGJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd2VkOiB0aGlzLmNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdyA9PSB0cnVlID8gMCA6IDEsXHJcbiAgICAgICAgbWF4aW11bU51bWJlck9mUmVwZWF0czogdGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLFxyXG4gICAgICAgIG1pbmltdW1JbnRlcnZhbEJldHdlZW5SZXBlYXRzOiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSBcIlwiID8gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgOiBcIi0xXCIsXHJcbiAgICAgICAgcGF0aWVudEN0Z0ZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50ID09IHRydWUgPyAwIDogMSxcclxuICAgICAgICBwYnNJdGVtQ29kZUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNDb2RlIDogXCJcIixcclxuICAgICAgICBwYnNJdGVtQ29kZVRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlVGV4dCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZVRleHQgOiBcIlwiLFxyXG4gICAgICAgIHBic0l0ZW1NYW51ZmFjdHVyZXI6IHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPyBwYnNNYW51ZmFjdHVyZXJDb2RlU2V0IDogJycsXHJcbiAgICAgICAgc3RhdGVBdXRob3JpdHlOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlcikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLlN0YXRlQXV0aG9yaXR5TnVtYmVyLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgcmVhc29uRm9yVGhlcmFwZXV0aWNHb29kOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uKSA/IHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgdW51c3VhbFF0eUZsYWc6IHRoaXMuc2V0VW51c3VhbFF0eUZsYWcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLCB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTKSxcclxuICAgICAgICBxdWFudGl0eU9mVGhlcmFwZXV0aWNHb29kUXVhbnRpdHk6IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpLFxyXG4gICAgICAgIGNvbXBsZXhJbnN0cnVjdGlvbnM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZS50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIGFtdE1wcENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5BTVRNUFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRNUFBDb2RlIDogXCJcIixcclxuICAgICAgICBhbXRNcHBOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwcy5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRUcHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UVFBQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UVFBQQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgYW10VHBwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10VHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UVFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRUUENvZGUgOiBcIlwiLFxyXG4gICAgICAgIGFtdFRwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cE5hbWUgOiAnJyxcclxuICAgICAgICBhbXRDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQuYW10Y29kZSA6ICcnLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uTWltc0NvZGU6ICcnLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uTG9jYWxDb2RlOiAnJyxcclxuICAgICAgICAvLyB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbkVhbkNvZGU6IFwiXCIsXHJcbiAgICAgICAgdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25FYW5UZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzVHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSAnbm9uIHBicycgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogJycsXHJcbiAgICAgICAgcHJlc2NyaWJlck9jY3VwYXRpb25Db2RlOiBwaHlzaWNpYW5EZXRhaWxzLm9jY3VwYXRpb25Db2RlLFxyXG4gICAgICAgIHByZXNjcmliZXJPY2N1cGF0aW9uVGV4dDogcGh5c2ljaWFuRGV0YWlscy5vY2N1cGF0aW9uVGV4dCxcclxuICAgICAgICBwcmVzY3JpYmVyUGVyc29uVGl0bGU6IHBoeXNpY2lhbkRldGFpbHMucHJlZml4LFxyXG4gICAgICAgIHByZXNjcmliZXJRdWFsaWZpY2F0aW9uczogcGh5c2ljaWFuRGV0YWlscy5zdWZmaXgsXHJcbiAgICAgICAgb3JnUGhvbmU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTW9iaWxlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ01vYmlsZSA6ICcnLFxyXG4gICAgICAgIG9yZ0ZheDogJycsXHJcbiAgICAgICAgbG9jYWxTeXN0ZW1JRDogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkLFxyXG4gICAgICAgIGFkZHJlc3NTZW5kVG9BZGRUeXBlOiB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlLFxyXG4gICAgICAgIGFkZHJlc3NFbWFpbDogdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkKSA/IHBhdGllbnREZXRhaWxzLmVtYWlsIDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQsXHJcbiAgICAgICAgYWRkcmVzc1NtczogdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhudW1iZXIpID8gcGF0aWVudERldGFpbHMucGhvbmUgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyLFxyXG4gICAgICAgIGdlbmRlclRleHQ6IHRoaXMuZ2V0R2VuZGVyKHBhdGllbnREZXRhaWxzLmdlbmRlciksXHJcbiAgICAgICAgYWRkcmVzc0xpbmUzOiAnJyxcclxuICAgICAgICBwcmVzY3JpcHRpb25Xcml0dGVuVXRjVGltZTogJzAxLTAxLTE5NzAgMDk6MDY6MDknLCAvLyBwcmVzY3JpcHRpb25Xcml0dGVuVXRjVGltZTogbW9tZW50KG5ldyBEYXRlKCkpLmZvcm1hdChcIk1NLURELXl5eXkgaGg6bW06c3NcIiksXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uV3JpdHRlblV0Y09mZnNldDogdGhpcy5nZXRPZmZzZXQoKSxcclxuICAgICAgICBwcmVzY3JpcHRpb25FeHBpcmVzVmFsdWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSwgJ01NL2RkL3l5eXknKSA6IFwiXCIsXHJcbiAgICAgICAgYWN0aXZlSW5ncmVkaWVudDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IFwiXCIsXHJcbiAgICAgICAgZm9ybUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBmb3JtdWxhOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZm9ybXVsYSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSA6IFwiXCIsXHJcbiAgICAgICAgYWRkaXRpb25hbENvbW1lbnRzOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3Rlcy50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIGFzbENvbnNlbnQ6IDEsXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uTm90ZURldGFpbE5vdGU6IHRoaXMuY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlLFxyXG4gICAgICAgIGR2YU51bWJlcjogcGF0aWVudERldGFpbHMuZHZhTnVtYmVyLFxyXG4gICAgICAgIGR2YVR5cGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUpICYmIHBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ25vbmUnID8gcGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSA6ICcnLFxyXG4gICAgICAgIHBic0FwcHJvdmFsTnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gOiAnJyxcclxuICAgICAgICByb3V0ZTogdGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlICE9ICctJyA/IHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSA6ICcnLFxyXG4gICAgICAgIC8vcHJvdmlkZXJOdW1iZXI6JycsXHJcbiAgICAgICAgcHJlc2NyaWJlclR5cGU6IHBoeXNpY2lhbkRldGFpbHMucHJlc2NyaWJlclR5cGUsXHJcbiAgICAgICAgbWVkaWNpbmVOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIixcclxuICAgICAgICBicmFuZE5hbWU6IHRoaXMuZ2V0QnJhbmROYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiksXHJcbiAgICAgICAgZ2VuZXJpY05hbWU6IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LklzRXh0ZW1wKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IHRoaXMuZ2V0RXh0ZW1wTVBQTmFtZSgpKSxcclxuICAgICAgICAvL2l0ZW1HZW5lcmljSW50ZW50aW9uOiBnZXRJdGVtR2VuZXJpY0ludGVudGlvbih0aGlzLnN0YXRlLmxlbWksdGhpcy5zdGF0ZS5pc0JyYW5kTmFtZSx0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSksXHJcbiAgICAgICAgaXRlbUdlbmVyaWNJbnRlbnRpb246IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCAhPSB0cnVlID8gJ0InIDogJ0cnLFxyXG4gICAgICAgIHNjaGVkdWxlTnVtYmVyOiB0aGlzLnBheUxvYWRTdGF0ZVNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gXCJcIiA/IHRoaXMucGF5TG9hZFN0YXRlU2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSA6IHRoaXMuY29tbW9uU2VydmljZXMuZ2V0U2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSxcclxuICAgICAgICBkb2N0b3JOb3RlczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMudHJpbSgpIDogXCJcIixcclxuICAgICAgICByZWd1bGF0aW9uMjQ6IHRoaXMuY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0ID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgaXNFeHRlbXA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCAhPSBudWxsID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyAwIDogMSA6IDEsXHJcbiAgICAgICAgLy8gZXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbjogdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLkV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb24gIT0gJycgPyB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uRXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbiA6ICcnLFxyXG4gICAgICAgIGV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb246IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgOiAnJyxcclxuICAgICAgICBhbm5vdGF0aW9uOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYW5ub3RhdGlvbikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFubm90YXRpb24udHJpbSgpIDogXCJcIixcclxuICAgICAgICB1blVzdWFsRG9zZUZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMudW5Vc3VhbERvc2VGbGFnID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgdHJhZGVOYW1lOiB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KHRoaXMuZ2V0VHJhZGVOYW1lKCkpLFxyXG4gICAgICAgIC8vcmVzdHJpY3Rpb25zOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSAnJyA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXN0cmljdGlvbnMgOiAnJyxcclxuICAgICAgICAvLyBwcmVzY3JpYmVyUGVyc29uVGl0bGU6IHBoeXNpY2lhbkRldGFpbHMucHJlZml4LFxyXG4gICAgICAgIG1heGltdW1JbnRlcnZhbEJldHdlZW5SZXBlYXRzOiAnJyxcclxuICAgICAgICBjb21wbGV4SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkIDogMCxcclxuICAgICAgICB2aXNpdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZpc2l0SWQsXHJcbiAgICAgICAgc2NyaXB0VHlwZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLFxyXG4gICAgICAgIGRvc2U6IHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlLFxyXG4gICAgICAgIGZyZXF1ZW5jeTogdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUsXHJcbiAgICAgICAgZm9vZDogdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUsXHJcbiAgICAgICAgcHJlc2NyaWJlQXM6IHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsXHJcbiAgICAgICAgcHJuOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4UFJOID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgc2NyaXB0RGF0ZTogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpLFxyXG4gICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUsICdNTS9kZC95eXl5JyksXHJcbiAgICAgICAgcHVycG9zZTogdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUudHJpbSgpLFxyXG4gICAgICAgIHBic05vdGVzOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBic05vdGVzLFxyXG4gICAgICAgIGlzQWN0aXZlOiAwLFxyXG4gICAgICAgIHByb2R1Y3RJZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3RJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkIDogXCJcIixcclxuICAgICAgICBhbXRUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZm9ybXVsYSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZm9ybXVsYSA6IFwiXCIsXHJcbiAgICAgICAgcXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZERvc2VVbml0Q29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5T2ZUaGVyYXBldXRpY0dvb2REb3NlVW5pdFRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBwcmVzY3JpYmVyUm9sZUNvZGU6ICcnLFxyXG4gICAgICAgIHByZXNjcmliZXJSb2xlVGV4dDogJycsXHJcbiAgICAgICAgb3JnSGljTG9jYXRpb25JZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdIaWNMb2NhdGlvbklkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0hpY0xvY2F0aW9uSWQgOiAnJyxcclxuICAgICAgICBvcmdSb2xlQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlQ29kZSA6ICcnLFxyXG4gICAgICAgIG9yZ1JvbGVUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVUZXh0KSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1JvbGVUZXh0IDogJycsXHJcbiAgICAgICAgYXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxOby50cmltKCkgOiAnJyxcclxuICAgICAgICBhdXRob3JpdHlBcHByb3ZhbE51bWJlckZsYWc6IHBhcnNlRmxvYXQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzKSA8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpIHx8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzKSA8IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCkgPyAxIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zW3RoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkXS5zdHJlYW1saW5lZENvZGUpICYmIHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnNbdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWRdLnN0cmVhbWxpbmVkQ29kZSkgPT0gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSA/IDAgOiAxLFxyXG4gICAgICAgIHN0YXR1czogXCJEcmFmdFwiLFxyXG4gICAgICAgIC8vIHBic0F1dGhvcml0eVByZXNjcmlwdGlvbk51bWJlcjp0aGlzLnN0YXRlLmFwcHJvdmFsTm8gPyB0aGlzLnN0YXRlLmFwcHJvdmFsTm8gOiBcIlwiLFxyXG4gICAgICAgIC8vIHN0cmVhbWxpbmVkQXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6IHRoaXMuc3RhdGUuYXBwcm92YWxObz8gdGhpcy5zdGF0ZS5hcHByb3ZhbE5vOiBcIlwiLFxyXG4gICAgICAgIC8vIHBic0F1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiBcIlwiLFxyXG4gICAgICAgIC8vYmFyY29kZVxyXG4gICAgICAgIC8vc2NyaXB0TnVtYmVyOiBcIlwiLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLFxyXG4gICAgICAgIGVvcERpc3BsYXlOYW1lOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PSBcImVcIiA/IHRoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUpIDogdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSxcclxuICAgICAgICBpdGVtU3RyZW5ndGhYbWw6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5JdGVtU3RyZW5ndGhYbWwpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkl0ZW1TdHJlbmd0aFhtbCA6IFwiIFwiLFxyXG4gICAgICAgIC8vYXV0aG9yaXR5VmFsdWVcclxuICAgICAgICBwYnNEdmFBdXRob3JpdHlOdW1iZXI6IGNoZWNrQXV0aG9yaXR5Qm94ID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gOiAwLFxyXG4gICAgICAgIHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZTogdGhpcy5odG1sVG9UZXh0Q29udmVydCh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLC8vdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUpLFxyXG4gICAgICAgIHVubGlzdGVkSXRlbVJlcGF0QXV0aG9yaXR5OiB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgICBwcmVzY3JpYmVkSXRlbVJlc2VydmVkT25lOiB0aGlzLmNvbW1vblNlcnZpY2VzLmdldFNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgPyB0aGlzLm51bWJlclRvV29yZChwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSkgOiAnJyxcclxuICAgICAgICBteVNMQ29uc2VudDogdGhpcy5jb21tb25TZXJ2aWNlcy5teVNMQ29uc2VudCxcclxuICAgICAgICBzZW5kVG9QaGFybWFjeTogdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSxcclxuICAgICAgICBzZW5kVG9QaGFybWFjeVZhbHVlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWUsXHJcbiAgICAgICAgZW1lcmdlbmN5U3VwcGx5OiB0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSxcclxuICAgICAgICBtb2xlY3VsZVN0cmVuZ3RoR3JpZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1vbGVjdWxlU3RyZW5ndGhHcmlkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoR3JpZCA6ICcnLFxyXG4gICAgICAgIGVudGl0eUlkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuZW50aXR5SWQsXHJcbiAgICAgICAgaXNQcmVzY3JpYmVBbmRQcmludDogdGhpcy5pc2VwcmlzY3JpYmVwcmludCxcclxuICAgICAgICBhbXRDb2RlU3lzdGVtOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10Q29kZVN5c3RlbSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Q29kZVN5c3RlbSA6IFwiXCIsXHJcbiAgICAgICAgYW10VmVyc2lvbjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdFZlcnNpb24pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFZlcnNpb24gOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5V2l0aFVuaXQ6IHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1heFF0eVVuaXRzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyA6IFwiXCIsXHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWRcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLlBvc3QoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5NX1BSRVNDUklCRSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCByZXMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9tZXNzYWdlICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX21lc3NhZ2UgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJNcHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTXByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUb29sVGlwKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50b29sdGlwLCAnX19yZWFjdF9jb21wb25lbnRfdG9vbHRpcCcpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ3R5cGUtZGFyaycpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ3BsYWNlLWxlZnQnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd6LWluZGV4JywgJzk5OTk5OTk5Jyk7XHJcbiAgICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLnZpZXdSZWZDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMubXlUZW1wbGF0ZSk7XHJcbiAgICAgIHZpZXdSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBjb25zdCB0b29sdGlwQ29udGVudCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodmlld1JlZi5yb290Tm9kZXMpICYmIHZpZXdSZWYucm9vdE5vZGVzLmxlbmd0aCAhPSAwID8gdmlld1JlZi5yb290Tm9kZXNbMF0gOiBcIlwiO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcCwgdG9vbHRpcENvbnRlbnQpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy50b29sdGlwKTtcclxuICAgICAgdmFyIHRvb2w6IGFueSA9IHRoaXMudG9vbHRpcDtcclxuICAgICAgdmFyIGxlZnQgPSBldmVudC54IC0gKHRvb2wuY2xpZW50V2lkdGggKyAxNSk7XHJcbiAgICAgIHZhciBoZWlnaHR2YWx1ZSA9IGV2ZW50LnkgLSAodG9vbC5jbGllbnRIZWlnaHQgLyAyKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICdsZWZ0JywgbGVmdCArICdweCcpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3RvcCcsIGhlaWdodHZhbHVlICsgJ3B4Jyk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNyZWF0ZVRvb2xUaXBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93dG9vbHRpcChsZW1pcHJvZHVjdDogYm9vbGVhbiwgYnJhbmR0b29sdGlwOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChsZW1pcHJvZHVjdCkge1xyXG4gICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXAsICdsZW1pLXRvb2x0aXAnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ3R5cGUtZGFyaycpO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldFJlY3QgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgY29uc3Qgdmlld1JlZiA9IHRoaXMudmlld1JlZkNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoYnJhbmR0b29sdGlwKTtcclxuICAgICAgICB2aWV3UmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB2YXIgbXlkb206IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYnJhbmRuYW1ldG9vbHRpcFwiKTtcclxuICAgICAgICB2YXIgcmVjdCA9IG15ZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IHRvb2x0aXBDb250ZW50ID0gdmlld1JlZi5yb290Tm9kZXNbMF07XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXAsIHRvb2x0aXBDb250ZW50KTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy50b29sdGlwKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ2xlZnQnLCByZWN0LmxlZnQgKyAncHgnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3RvcCcsIHJlY3QudG9wIC0gbXlkb20ub2Zmc2V0SGVpZ2h0IC0gMTAgKyAncHgnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3dpZHRoJywgbXlkb20uY2xpZW50V2lkdGggKyAncHgnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzaG93dG9vbHRpcFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vZWRpdCByeFxyXG4gIHNldEVkaXRWYWx1ZXMocnhMaXN0OiBhbnkpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgcnhMaXN0LnBic0l0ZW1Db2RlQ29kZSA9IHJ4TGlzdC5wYnNJdGVtQ29kZUNvZGUgIT0gbnVsbCA/IHJ4TGlzdC5wYnNJdGVtQ29kZUNvZGUgOiBcIlwiO1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICBwcm9kdWN0SWQ6IHJ4TGlzdC5wcm9kdWN0SWQsXHJcbiAgICAgICAgcGJzQ29kZTogcnhMaXN0LnBic0l0ZW1Db2RlQ29kZSxcclxuICAgICAgICByeElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWRcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLkdFVF9NRURfREVUX0JZX0lEICsgXCI/cHJvZHVjdElkPVwiICsgcnhMaXN0LnByb2R1Y3RJZCArIFwiJnBic0NvZGU9XCIgKyAodGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgPyByeExpc3QucGJzSXRlbUNvZGVDb2RlIDogXCJcIikgKyBcIiZyeElkPVwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHZhciBlZGl0UmVzdHJpY3RGbGFnID0gKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0Py5zdGF0dXMpICYmIHJ4TGlzdC5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSBcImRyYWZ0XCIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKGVkaXRSZXN0cmljdEZsYWcpIHtcclxuICAgICAgICAgICAgICB2YXIgTWVkID0gW107XHJcbiAgICAgICAgICAgICAgTWVkLnB1c2gocmVzLnJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gTWVkO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gTWVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0UmVzdHJpY3RlZE1lZGljaW5lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RGb3JtdWxhdGlvbihyZXMucmVzcG9uc2UsIDApO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5tZWRpU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMucnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSByeExpc3QucXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZFF1YW50aXR5O1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSByeExpc3QubWF4aW11bU51bWJlck9mUmVwZWF0cyA/IHJ4TGlzdC5tYXhpbXVtTnVtYmVyT2ZSZXBlYXRzIDogXCIwXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlID0gcnhMaXN0LmRvc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlID0gcnhMaXN0LmZyZXF1ZW5jeSA/IHJ4TGlzdC5mcmVxdWVuY3kgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSA9IHJ4TGlzdC5mb29kID8gcnhMaXN0LmZvb2QgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QuY29tcGxleEluc3RydWN0aW9ucykgJiYgdGhpcy5pbnN0cnVjdGlvbkRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5pbnN0cnVjdGlvbkRhdGEuZmlsdGVyKCgoeDogeyB0ZXh0OiBhbnk7IH0pID0+IHgudGV4dCA9PSByeExpc3QuY29tcGxleEluc3RydWN0aW9ucykpO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGEpICYmIGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gcnhMaXN0LmNvbXBsZXhJbnN0cnVjdGlvbnM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGFbMF0uZGVzY3JpcHRpb24pID8gZGF0YVswXS5kZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gcnhMaXN0LmNvbXBsZXhJbnN0cnVjdGlvbnM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5jb21wbGV4SW5zdHJ1Y3Rpb25zKSA/IHJ4TGlzdC5jb21wbGV4SW5zdHJ1Y3Rpb25zIDogXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gcnhMaXN0LmNvbXBsZXhJZCA/IHJ4TGlzdC5jb21wbGV4SWQgOiAwO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSByeExpc3Qucm91dGUgPyByeExpc3Qucm91dGUgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4UFJOID0gcnhMaXN0LnBybiA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gcnhMaXN0LnByZXNjcmliZUFzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5zY3JpcHREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHJ4TGlzdC5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5zdGFydERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0ocnhMaXN0LnN0YXJ0RGF0ZSwgJ3l5eXktTU0tZGQnKSA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHJ4TGlzdC5wcmVzY3JpcHRpb25FeHBpcmVzVmFsdWUsICd5eXl5LU1NLWRkJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPSByeExpc3QubWluaW11bUludGVydmFsQmV0d2VlblJlcGVhdHMgPT0gLTEgPyAnJyA6IHJ4TGlzdC5taW5pbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0cztcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wdXJwb3NlKSA/IHJ4TGlzdC5wdXJwb3NlIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cgPSByeExpc3QuYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ZWQgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QuYW5ub3RhdGlvbikgPyByeExpc3QuYW5ub3RhdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5kb2N0b3JOb3RlcykgPyByeExpc3QuZG9jdG9yTm90ZXMgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbiA9IHJ4TGlzdC5yZWFzb25Gb3JUaGVyYXBldXRpY0dvb2Q7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTm90ZXMgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wYnNOb3RlcykgPyByeExpc3QucGJzTm90ZXMgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNBdXQgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSByeExpc3QuYXV0aG9yaXR5QXBwcm92YWxOdW1iZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgPSByeExpc3Quc2VuZFRvUGhhcm1hY3k7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSA9IHJ4TGlzdC5zZW5kVG9QaGFybWFjeVZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSA9IHJ4TGlzdC5lbWVyZ2VuY3lTdXBwbHk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubXlTTENvbnNlbnQgPSByeExpc3QubXlTTENvbnNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjQgPSByeExpc3QucmVndWxhdGlvbjI0ID09IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9IHJ4TGlzdC5zY3JpcHRUeXBlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9IHJ4TGlzdC5wYXRpZW50Q3RnRmxhZyA9PSAwID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlLmFpcCkgPyByZXMucmVzcG9uc2UuYWlwLmxlbWkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMucmVzcG9uc2UuYWlwKSA/IHJlcy5yZXNwb25zZS5haXAubG1iYyA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZyA9IHJ4TGlzdC51blVzdWFsRG9zZUZsYWcgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlciA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0LnN0YXRlQXV0aG9yaXR5TnVtYmVyKSA/IHJ4TGlzdC5zdGF0ZUF1dGhvcml0eU51bWJlciA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gcnhMaXN0LnJlc3RyaWN0ZWRQYnNTZWxlY3RlZEluZGV4ICE9IDAgPyByeExpc3QucmVzdHJpY3RlZFBic1NlbGVjdGVkSW5kZXggLSAxIDogbnVsbDsgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QucGJzTGlzdEluc3RydWN0aW9ucykgPyByeExpc3QucGJzTGlzdEluc3RydWN0aW9ucyA6ICcnO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gcnhMaXN0LmlzQnJhbmROYW1lID8gcnhMaXN0LmlzQnJhbmROYW1lIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTaG93QXV0aG9yaXR5ID0gcnhMaXN0LmlzU2hvd0F1dGhvcml0eSA/IHJ4TGlzdC5pc1Nob3dBdXRob3JpdHkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIpICYmIHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIgIT0gMCA/IHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAocnhMaXN0LmlzU2hvd0F1dGhvcml0eSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBpZiAocnhMaXN0LnN0YXR1cy50b0xvd2VyQ2FzZSgpID09IFwicHJlc2NyaWJlZFwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocnhMaXN0LnN0YXR1cy50b0xvd2VyQ2FzZSgpID09IFwiY2Vhc2VkXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChyeExpc3Quc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gXCJjYW5jZWxsZWRcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWRpdFJlc3RyaWN0RmxhZykge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvL2VuYWJsZSBlLXByZXNjcmlwdGlvblxyXG4gIGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zY3JpcHRUeXBlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCkgPT0gJ00nKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnNjcmlwdFR5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKSA9PSAnRScgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc3RhdHVzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAnZHJhZnQnICYmIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5lUHJlc2NyaXB0aW9uQWxsb3dlZCA9PSAwICYmIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMudmVuZG9yUGF0aWVudENvbnNlbnQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuY3JlYXRlUGF0aWVudFJlc3BvbnNlLmlzX2hwaW9fdmFsaWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5jcmVhdGVQYXRpZW50UmVzcG9uc2UuaXNfaHBpaV92YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmNyZWF0ZVBhdGllbnRSZXNwb25zZS5pc19paGlfdmFsaWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkID09IDAgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy52ZW5kb3JQYXRpZW50Q29uc2VudCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJlUHJlc2NyaXB0aW9uVmFsaWRhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdGVTY2hlZHVsZU51bWJlcihzZWxlY3RlZEZvcm11bGF0aW9uOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlcyAhPSBudWxsICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uc3RhdGVTY2hlZHVsZXMgIT0gXCJcIikge1xyXG4gICAgICAgIHZhciBzdGF0ZVNjaGVkdWxlTGlzdCA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHN0YXRlU2NoZWR1bGVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgc3RhdGVTY2hlZHVsZUxpc3QuY29uY2F0KHNlbGVjdGVkRm9ybXVsYXRpb24uc3RhdGVTY2hlZHVsZXNbaV0uc2NoZWR1bGVzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHN0YXRlU2NoZWR1bGVMaXN0LnB1c2goc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlc1tpXS5zY2hlZHVsZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RhdGVTY2hlZHVsZUxpc3Q7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFN0YXRlU2NoZWR1bGVOdW1iZXJcIik7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF1dGhvcml0eU5vVmFsaWRhdGlvbihldmVudDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIga2V5dmFsdWUgPSBldmVudC5jaGFyQ29kZTtcclxuICAgICAgcmV0dXJuICgoa2V5dmFsdWUgPiA2NCAmJiBrZXl2YWx1ZSA8IDkxKSB8fCAoa2V5dmFsdWUgPiA5NiAmJiBrZXl2YWx1ZSA8IDEyMykgfHwgKGtleXZhbHVlID49IDQ4ICYmIGtleXZhbHVlIDw9IDU3KSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImF1dGhvcml0eU5vVmFsaWRhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGF5TG9hZFN0YXRlU2NoZWR1bGVOdW1iZXIoU2NoZWR1bGVOdW1iZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHN0YXRlU2NoZWR1bGVOdW1iZXIgPSB0aGlzLmdldFN0YXRlU2NoZWR1bGVOdW1iZXIoU2NoZWR1bGVOdW1iZXIpO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzdGF0ZVNjaGVkdWxlTnVtYmVyKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSkudG9VcHBlckNhc2UoKSA9PSBcIlRBU1wiICYmIHN0YXRlU2NoZWR1bGVOdW1iZXIubGVuZ3RoICE9IDAgJiYgc3RhdGVTY2hlZHVsZU51bWJlclswXS5pbmRleE9mKFwiUzREXCIpICE9IC0xKSB7XHJcbiAgICAgICAgICByZXR1cm4gXCJTNERcIjtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiTlNXXCIgJiYgc3RhdGVTY2hlZHVsZU51bWJlci5sZW5ndGggIT0gMCAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyWzBdLmluZGV4T2YoXCJTNEJcIikgIT0gLTEpIHtcclxuICAgICAgICAgIHJldHVybiBcIlM0QlwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicGF5TG9hZFN0YXRlU2NoZWR1bGVOdW1iZXJcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJlc2NyaXBlQWJvcnQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgdXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICAgIHBhdFVzZXJJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hYm9ydGRpc2FibGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5SWF9QUkVTQ1JJQkVfQUJPUlQgKyBcIj91c2VySWQ9XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkICsgXCImcGF0VXNlcklkPVwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzQWJvcnQgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlID0gZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZTtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaXBlQWJvcnRcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnID0gcmVzLnJlc3BvbnNlX21lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA9IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJfY29kZSA9IHJlcy5lcnJvcl9jb2RlO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnID0gcmVzLnJlc3BvbnNlX21lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaXBlQWJvcnRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5pc1ByZXNjcmliZSlcclxuICAgICAgICAgICAgdGhpcy5zaG93UmVzcG9uc2VNZXNzYWdlKCk7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmFib3J0QnRuRmxhZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pc0Fib3J0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZyA9IGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcjtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlID0gZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZVxyXG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5pc1ByZXNjcmliZSlcclxuICAgICAgICAgIHRoaXMuc2hvd1Jlc3BvbnNlTWVzc2FnZSgpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaXBlQWJvcnRcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5hYm9ydEJ0bkZsYWcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmlwZUFib3J0XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd1Jlc3BvbnNlTWVzc2FnZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5yZXNwb25zZURhdGEuYWJvcnRTdWNjZXNzICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5yZXNwb25zZV9tZXNzYWdlLCB0cnVlLCB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmRhdGEpO1xyXG4gICAgICAgIHRoaXMuY2xvc2UodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5kYXRhKTtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID09IHRydWUpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZWRhdGEuZmlsZV91cmwpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5maWxlX3VybCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJzaG93UmVzcG9uc2VNZXNzYWdlXCIsIHRoaXMucmVzcG9uc2VEYXRhLnBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShhdG9iKHJlc3BvbnNlLmZpbGUpLnNwbGl0KCcnKS5tYXAoY2hhciA9PiBjaGFyLmNoYXJDb2RlQXQoMCkpKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBiYmIgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL3BkZlwiIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJiYik7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdXaW5kb3cgPSB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdXaW5kb3cpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3V2luZG93LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmludFdhcm5pbmdQb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd1Jlc3BvbnNlTWVzc2FnZVwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZWRhdGEuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5lcnJvcl9jb2RlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNob3dSZXNwb25zZU1lc3NhZ2VcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzaG93UmVzcG9uc2VNZXNzYWdlXCIsIHRoaXMucmVzcG9uc2VEYXRhLnBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5yZXNwb25zZURhdGEuYWJvcnRTdWNjZXNzICYmIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnLCAnc3VjY2VzcycpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVTdWNjZXNzICYmICF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yICYmICF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnLCAnc3VjY2VzcycpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciAmJiAhdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJvciAmJiAhdGhpcy5yZXNwb25zZURhdGEuYWJvcnRTdWNjZXNzKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZywgJ2Vycm9yJywgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyX2NvZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZVN1Y2Nlc3MgJiYgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJvcikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZywgJ3N1Y2Nlc3MnKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZywgXCJlcnJvclwiLCB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciAmJiB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnLCAnZXJyb3InLCB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2csIFwiZXJyb3JcIiwgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJfY29kZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlU3VjY2VzcyAmJiB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZywgXCJzdWNjZXNzXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuYWJvcnRCdG5GbGFnID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNlcHJpc2NyaWJlcHJpbnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXNBYm9ydCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pc1ByZXNjcmliZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlU3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZyA9IFwiXCI7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnID0gXCJcIjtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YSA9IFwiXCI7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnBheWxvYWQgPSBcIlwiO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNob3dSZXNwb25zZU1lc3NhZ2VcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBNSU1TUHJpbWFyeVNlYXJjaCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICAgIGlmICghdGhpcy5pc1N0aWxsU2VhcmNoaW5nICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICAgICAgcHJvZHVjdE5hbWU6IHRoaXMuUHJvZHVjdFNlYXJjaE5hbWVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLmlzU3RpbGxTZWFyY2hpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkubGVuZ3RoIDwgMykge1xyXG4gICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLlByaW1hcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA8IDgpXHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLlByaW1hcnlTZWFyY2hTcGlubmVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzUGFnZU51bWJlciArPSAxO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TUHJpbWFyeWFwaSA9IHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLkdFVF9NRURTX0JZX1NFQVJDSCArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLlByb2R1Y3RTZWFyY2hOYW1lKSArICcmcGFnZT0nICsgdGhpcy5zZWFyY2hNZWRpY2luZXNQYWdlTnVtYmVyICsgJyZub09mUmVjPTEwJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzU3RpbGxTZWFyY2hpbmcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNQcmltYXJ5U2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSByZXMucmVzcG9uc2UubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgcmVzLnJlc3BvbnNlLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5maWx0ZXIoKHg6IGFueSkgPT4geC5wcm9kRGlzcGxheVZhbHVlID09IGRhdGEucHJvZERpc3BsYXlWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHZhbDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcm9kdWN0ID0gdmFsLnByb2RIaWRkZW5WYWx1ZS5pbmNsdWRlcyhkYXRhLnByb2RIaWRkZW5WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ2JyYW5ka2V5JyA/ICdCSycgOiBkYXRhLnNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHBhY2trZXknID8gJ1BQSycgOiBkYXRhLnNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAndmlydHVhbG5hbWUnID8gJ1ZOJyA6IGRhdGEuc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdwcm9kdWN0a2V5JyA/ICdQSycgOiBkYXRhLnNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHVjdGtleWFjdGl2ZWluZ3JlZGllbnQnID8gJ1BLQScgOiBkYXRhLnNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAnZnVsbHBpJyA/ICdGUEknIDogJ1BOJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9kdWN0ICYmIHR5cGUgIT0gJ1BLQScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwucHJvZEhpZGRlblZhbHVlICs9ICcsJyArIGRhdGEucHJvZEhpZGRlblZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0LnB1c2goZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA+IDcgfHwgcmVzLnJlc3BvbnNlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA8IDggJiYgdGhpcy5pc1N0aWxsU2VhcmNoaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuTUlNU1ByaW1hcnlTZWFyY2goKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbWFyeU1JTVNTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLlByaW1hcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaW1hcnlNSU1TU2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmltYXJ5TUlNU1NlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlByaW1hcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaW1hcnlNSU1TU2VhcmNoXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgTUlNU1NlY29uZGFyeVNlYXJjaCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5pc1N0aWxsU2VhcmNoaW5nICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnKSB7XHJcbiAgICAgICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggIT0gMCAmJiB0aGlzLlByb2R1Y3RUeXBlLnRvTG93ZXJDYXNlKCkgIT0gXCJwa1wiICYmIHRoaXMuUHJvZHVjdFR5cGUudG9Mb3dlckNhc2UoKSAhPSBcInBuXCIgJiYgdGhpcy5Qcm9kdWN0VHlwZS50b0xvd2VyQ2FzZSgpICE9IFwidm5cIiAmJiB0aGlzLlByb2R1Y3RUeXBlLnRvTG93ZXJDYXNlKCkgIT0gXCJmcGlcIikge1xyXG4gICAgICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgICBwcm9kdWN0TmFtZTogdGhpcy5wcm9kSGlkZGVuTmFtZSxcclxuICAgICAgICAgICAgdHlwZTogdGhpcy5Qcm9kdWN0VHlwZSxcclxuICAgICAgICAgICAgcHJlc2NyaWJlclR5cGU6IFwiTVBcIlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QubGVuZ3RoIDw9IDMpXHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lUGFnZU51bWJlciArPSAxO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpID0gdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuR0VUX01FRFNfQllfTkFNRSArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLnByb2RIaWRkZW5OYW1lKSArICcmdHlwZT0nICsgdGhpcy5Qcm9kdWN0VHlwZSArICcmcHJlc2NyaWJlclR5cGU9TVAmcGFnZT0nICsgdGhpcy5zZWFyY2hCeW5hbWVQYWdlTnVtYmVyICsgJyZub09mUmVjPTEwJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJNSU1TU2Vjb25kYXJ5U2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lUGFnZU51bWJlciA9IDE7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlcy5yZXNwb25zZS5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbC5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSByZXMucmVzcG9uc2UubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAvLyBpZiAodGhpcy5pc05vblBic0ZsYWcpIHtcclxuICAgICAgICAgICAgICAgICAgLy8gICB0aGlzLnJ4T25seU5PTlBCU0ZpbHRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAvLyAgIGlmICh0aGlzLnJ4T25seVBCUyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLnJ4T25seVBCU0ZpbHRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgICAgICAgLy8gICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbDtcclxuICAgICAgICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5vbkNoZWNrYm94Q2hhbmdlKCk7XHJcbiAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QubGVuZ3RoIDw9IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5yZXNwb25zZSkgJiYgcmVzLnJlc3BvbnNlLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5NSU1TU2Vjb25kYXJ5U2VhcmNoKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJNSU1TU2Vjb25kYXJ5U2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJNSU1TU2Vjb25kYXJ5U2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNTZWNvbmRhcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNTZWNvbmRhcnlTZWFyY2hcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmludFdhcm5pbmdQb3AoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0YSA9IFwiUGxlYXNlIGVuYWJsZSBwb3B1cCBvbiB0aGUgYnJvd3NlciB0byB2aWV3L3ByaW50IHRoZSBwcmVzY3JpcHRpb24uXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWFsVGltZVByZXNjcmlwdGlvbk1vbml0b3JpbmdDb21wb25lbnQsIHRoaXMuY29udGVudCwgZGF0YSkuc3Vic2NyaWJlKChyZXMpID0+IHsgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaW50V2FybmluZ1BvcFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG51bWJlclRvV29yZChuOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChuIDwgMClcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIHZhciBzaW5nbGVfZGlnaXQgPSBbJycsICdPbmUnLCAnVHdvJywgJ1RocmVlJywgJ0ZvdXInLCAnRml2ZScsICdTaXgnLCAnU2V2ZW4nLCAnRWlnaHQnLCAnTmluZSddXHJcbiAgICAgIHZhciBkb3VibGVfZGlnaXQgPSBbJ1RlbicsICdFbGV2ZW4nLCAnVHdlbHZlJywgJ1RoaXJ0ZWVuJywgJ0ZvdXJ0ZWVuJywgJ0ZpZnRlZW4nLCAnU2l4dGVlbicsICdTZXZlbnRlZW4nLCAnRWlnaHRlZW4nLCAnTmluZXRlZW4nXVxyXG4gICAgICB2YXIgYmVsb3dfaHVuZHJlZCA9IFsnVHdlbnR5JywgJ1RoaXJ0eScsICdGb3J0eScsICdGaWZ0eScsICdTaXh0eScsICdTZXZlbnR5JywgJ0VpZ2h0eScsICdOaW5ldHknXVxyXG4gICAgICBpZiAobiA9PT0gMCkgcmV0dXJuICdaZXJvJztcclxuICAgICAgZnVuY3Rpb24gdHJhbnNsYXRlKG46IGFueSkge1xyXG4gICAgICAgIHZhciB3b3JkOiBhbnkgPSAnJ1xyXG4gICAgICAgIGlmIChuIDwgMTApIHtcclxuICAgICAgICAgIHdvcmQgPSBzaW5nbGVfZGlnaXRbbl0gKyAnICdcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobiA8IDIwKSB7XHJcbiAgICAgICAgICB3b3JkID0gZG91YmxlX2RpZ2l0W24gLSAxMF0gKyAnICdcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobiA8IDEwMCkge1xyXG4gICAgICAgICAgdmFyIHJlbSA9IHRyYW5zbGF0ZShuICUgMTApXHJcbiAgICAgICAgICB3b3JkID0gYmVsb3dfaHVuZHJlZFsobiAtIG4gJSAxMCkgLyAxMCAtIDJdICsgJyAnICsgcmVtXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG4gPCAxMDAwKSB7XHJcbiAgICAgICAgICB3b3JkID0gc2luZ2xlX2RpZ2l0W01hdGgudHJ1bmMobiAvIDEwMCldICsgJyBIdW5kcmVkICcgKyB0cmFuc2xhdGUobiAlIDEwMClcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobiA8IDEwMDAwMDApIHtcclxuICAgICAgICAgIHdvcmQgPSB0cmFuc2xhdGUobiAvIDEwMDApLnRyaW0oKSArICcgVGhvdXNhbmQgJyArIHRyYW5zbGF0ZShuICUgMTAwMClcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobiA8IDEwMDAwMDAwMDApIHtcclxuICAgICAgICAgIHdvcmQgPSB0cmFuc2xhdGUobiAvIDEwMDAwMDApLnRyaW0oKSArICcgTWlsbGlvbiAnICsgdHJhbnNsYXRlKG4gJSAxMDAwMDAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHdvcmQgPSB0cmFuc2xhdGUobiAvIDEwMDAwMDAwMDApLnRyaW0oKSArICcgQmlsbGlvbiAnICsgdHJhbnNsYXRlKG4gJSAxMDAwMDAwMDAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gd29yZFxyXG4gICAgICB9XHJcbiAgICAgIHZhciByZXN1bHQgPSB0cmFuc2xhdGUobilcclxuICAgICAgcmV0dXJuIHJlc3VsdC50cmltKClcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwibnVtYmVyVG9Xb3JkXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEV4dGVtcE1QUE5hbWUoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXT8ubXBwcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzLmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0/Lm1wcE5hbWUpKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzWzBdLm1wcE5hbWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lLnRyaW0oKSA6IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEV4dGVtcE1QUE5hbWVcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaHRtbFRvVGV4dENvbnZlcnQodmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdG1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XHJcbiAgICAgIHRtcC5pbm5lckhUTUwgPSB2YWx1ZTtcclxuICAgICAgcmV0dXJuIHRtcC50ZXh0Q29udGVudCB8fCB0bXAuaW5uZXJUZXh0IHx8ICcnO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJodG1sVG9UZXh0Q29udmVydFwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhdXRob3JpdHlOb0NoYW5nZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuU3RhdGVBdXRob3JpdHlOdW1iZXIgPSB2YWx1ZS5yZXBsYWNlKC9bXmEtekEtWiAwLTldL2csIFwiXCIpLnJlcGxhY2UoL1xccysvZywgXCJcIik7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiYXV0aG9yaXR5Tm9DaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhbHBoYVJlc3RyaWN0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBrZXl2YWx1ZSA9IGV2ZW50LmNoYXJDb2RlO1xyXG4gICAgICByZXR1cm4gKChrZXl2YWx1ZSA+IDY0ICYmIGtleXZhbHVlIDwgOTEpIHx8IChrZXl2YWx1ZSA+IDk2ICYmIGtleXZhbHVlIDwgMTIzKSB8fCAoa2V5dmFsdWUgPj0gNDggJiYga2V5dmFsdWUgPD0gNTcpIHx8IGtleXZhbHVlID09IDMyKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiYWxwaGFSZXN0cmljdGlvblwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBhZGRUb0Zhdm91cml0ZXMoKSB7XHJcbiAgICBjb25zdCBpc0luRmF2b3VyaXRlcyA9IHRoaXMuaXNDdXJyZW50TWVkaWNpbmVJbkZhdm91cml0ZXMoKTtcclxuICAgIGNvbnN0IGlzQWRkaW5nID0gIWlzSW5GYXZvdXJpdGVzO1xyXG4gICAgdmFyIHBoeXNpY2lhbkRldGFpbHMgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICB2YXIgYm9keSA9IHtcclxuICAgICAgdXNlcklkU3RyaW5nOiBwaHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgcHJvZHVjdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkLFxyXG4gICAgICBwcm9kdWN0TmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpP3RoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZTpcIlwiLFxyXG4gICAgICBxdWFudGl0eTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic1R5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlID09IFwibm9uIFBCU1wiID8gKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5udW1iZXJPZlBhY2sgKyBcInhcIiArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi51bml0UGVyUGFjaykgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMsXHJcbiAgICAgIHJlcGVhdHM6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzLFxyXG4gICAgICByZXN0cmljdGlvbjogIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0Pyh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSBcIlwiXHJcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUgKyBcIiAoXCIgKyB0aGlzLmdldFJlc3RyaWN0aW9ucyh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zKSArIFwiKSBcIlxyXG4gICAgICAgICAgICAgICAgICA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlKTpcIlwiLFxyXG4gICAgICBnZW5lcmljTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUpP3RoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZTpcIlwiLFxyXG4gICAgICAgcGJzQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic0NvZGUpP3RoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZTpcIlwiLFxyXG4gICAgICBhY3RpdmU6IGlzQWRkaW5nLFxyXG4gICAgICByZXN0cmljdGVkTWVkaWNpbmU6IHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0XHJcbiAgICB9XHJcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLlBvc3QoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5BRERfRkFWT1VSSVRFX01FRElDSU5FKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJBZGRGYXZvdXJpdGVzXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJ0aWVzTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLm9yaWdpbmFsRmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gcmVzLmZhdm91cnRpZXNMaXN0IHx8IFtdO1xyXG4gICAgICAgICAgICAgIGlmICghaXNBZGRpbmcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRmF2b3VyaXRlRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93RmF2b3VyaXRlTWVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzLmZhdm91cnRpZXNMaXN0IHx8IHJlcy5mYXZvdXJ0aWVzTGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgXCJObyBtb3JlIGZhdm91cml0ZXMgcmVtYWluaW5nLiBZb3UgY2FuIGFkZCBtZWRpY2luZXMgdG8gZmF2b3VyaXRlcyBmcm9tIHRoZSBzZWFyY2ggcmVzdWx0cy5cIixcclxuICAgICAgICAgICAgICAgICAgICBcImluZm9cIlxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcIkFkZEZhdm91cml0ZXNcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiQWRkRmF2b3VyaXRlc1wiLCBib2R5KTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJBZGRGYXZvdXJpdGVzXCIsIGJvZHkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQWRkRmF2b3VyaXRlc1wiLCBib2R5KTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAgZ2V0RmF2b3VydGllc0xpc3QoKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgcGF5bG9hZCA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQ7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfRkFWT1VSSVRFX01FRElDSU5FX0xJU1QgKyBcIj91c2VySWRTdHJpbmc9XCIgKyBwYXlsb2FkK1wiJnJlc3RyaWN0ZWRNZWRpY2luZT1cIit0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcImdldEZhdm91cnRpZXNMaXN0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJpdGVzTGlzdDtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5vcmlnaW5hbEZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJpdGVzTGlzdDtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMub3JpZ2luYWxGYXZvdXJpdGVNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRGYXZvdXJ0aWVzTGlzdFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEZhdm91cnRpZXNMaXN0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RmF2b3VydGllc0xpc3RcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRGYXZvdXJ0aWVzTGlzdFwiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dGYXZvdXJ0aWVzKCkge1xyXG4gICAgdGhpcy5zaG93RmF2b3VyaXRlTWVkID0gIXRoaXMuc2hvd0Zhdm91cml0ZU1lZDtcclxuICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TUHJpbWFyeWFwaSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLk1JTVNQcmltYXJ5YXBpLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1NlY29uZGFyeWFwaS51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5zaG93RmF2b3VyaXRlTWVkKSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHRoaXMuY29tbW9uU2VydmljZXMub3JpZ2luYWxGYXZvdXJpdGVNZWRpY2luZUxpc3Q7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRmF2b3VyaXRlRGF0YSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLm1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvL0Zhdm91cml0ZU1lZGljaW5lIExvYWRpbmdcclxuICBmYXZvdXJpdGVNZWRpY2luZUxvYWRpbmcocnhMaXN0OiBhbnkpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBpZighdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3Qpe1xyXG4gICAgICByeExpc3QucGJzQ29kZSA9IHJ4TGlzdC5wYnNDb2RlICE9IG51bGwgPyByeExpc3QucGJzQ29kZSA6IFwiXCI7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHByb2R1Y3RJZDogcnhMaXN0LnByb2R1Y3RJZCxcclxuICAgICAgICBwYnNDb2RlOiByeExpc3QucGJzQ29kZSxcclxuICAgICAgICByeElkOiAwXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfTUVEX0RFVF9CWV9JRCArIFwiP3Byb2R1Y3RJZD1cIiArIHJ4TGlzdC5wcm9kdWN0SWQgKyBcIiZwYnNDb2RlPVwiICsgKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ID8gcnhMaXN0LnBic0NvZGUgOiBcIlwiKSArIFwiJnJ4SWQ9XCIgKyAwKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdmFyIE1lZCA9IFtdO1xyXG4gICAgICAgICAgICBNZWQucHVzaChyZXMucmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gTWVkO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IE1lZDtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gTWVkO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUoTWVkKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RGb3JtdWxhdGlvbihyZXMucmVzcG9uc2UsIDApO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5tZWRpU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5wYWdlID0gMTtcclxuICAgICAgICAgICAgdGhpcy5yeE9ubHlQQlMgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5mYXZNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdmFyIHNlbGVjdGVkZGF0YSA9IG51bGw7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0Py5wcm9kdWN0SWQpKSB7XHJcbiAgICAgICAgICBzZWxlY3RlZGRhdGEgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0LmZpbHRlcigoeDogeyBwcm9kdWN0SWQ6IGFueTsgfSkgPT4geC5wcm9kdWN0SWQgPT0gTnVtYmVyKHJ4TGlzdC5wcm9kdWN0SWQpKTtcclxuICAgICAgICAgIC8vIHNlbGVjdGVkZGF0YSA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBzZWxlY3RlZGRhdGFbMF07XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUoc2VsZWN0ZWRkYXRhWzBdKTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1J0cG1OZXh0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vID0gdGhpcy5nZXRBZGRBdXRoVmFsdWUodGhpcy50ZW1wQXV0aG9yaXR5Rm9ybU5vKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICAgICAgdGhpcy5lbmFibGVQcmVzY3JpYmVBcyhzZWxlY3RlZGRhdGFbMF0pO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5mYXZNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICBpc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpIHtcclxuICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3Quc29tZSgoZmF2TWVkOiB7IHByb2R1Y3RJZDogYW55OyBwYnNDb2RlOiBhbnk7IHByb2R1Y3ROYW1lOiBhbnk7IH0pID0+IFxyXG4gICAgICBmYXZNZWQucHJvZHVjdElkLnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQudG9TdHJpbmcoKSAmJlxyXG4gICAgICAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmYXZNZWQucGJzQ29kZSk/ZmF2TWVkLnBic0NvZGU6XCJcIikgPT09ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZTpcIlwiKSAmJlxyXG4gICAgICBmYXZNZWQucHJvZHVjdE5hbWUgPT09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSAjcnh3aWRnZXRzPiA8L25nLXRlbXBsYXRlPlxyXG48ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX21pbXNcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cIlJlYWN0TW9kYWxfX092ZXJsYXkgUmVhY3RNb2RhbF9fT3ZlcmxheS0tYWZ0ZXItb3BlbiBSZWFjdF9fT3ZlcmxheV9PcGVuX1BvcHVwIG5ld19yeF9taW1zX092ZXJsYXlfT3Blbl9Qb3B1cFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIlJlYWN0TW9kYWxfX0NvbnRlbnQgUmVhY3RNb2RhbF9fQ29udGVudC0tYWZ0ZXItb3BlbiBSZWFjdF9fQ29udGVudCBuZXdfcnhfbWltc19SZWFjdF9fQ29udGVudFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicG9wdXAgbmV3X3J4X21pbXNfUmVhY3RNb2RhbF9wb3B1cFwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8YXBwLXNwbGFzaHNjcmVlbiAqbmdJZj1cIlBvcHVwU2NyZWVuTG9hZGVyXCIgW2hlaWdodF09XCInaGVpZ2h0LXJ4LXNwaW4nXCI+IDwvYXBwLXNwbGFzaHNjcmVlbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLWNvbnRlbnRcIiAqbmdJZj1cIiFQb3B1cFNjcmVlbkxvYWRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX2hlYWRlcl9ib3hcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMi1jb2wtdGFibGV0IG1kbC1jZWxsLS0zLWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCByeF9pcGFkX2hlYWRlcl9ib3hfMVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb21tb25TZXJ2aWNlcy5yeGlkICE9IG51bGwgJiYgY29tbW9uU2VydmljZXMucnhpZCAhPScnPydtZGwtY2VsbC0tMi1jb2wnOidtZGwtY2VsbC0tMy1jb2wnXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibmV3X3J4X3BvcHVwX2hlYWRlcl9ib3hfdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtaG9sYS1oZWFsdGgtbG9nby0xLnBuZ1wiIGFsdD1cImhvbGFfaGVhbHRoXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IGF1dG87aGVpZ2h0OiAzN3B4O2JvcmRlci1yYWRpdXM6IDVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcGFzc2V0cy5ob2xhLmhlYWx0aC9yeC13aWRnZXRzL3J4LWhlYWRlci1sb2dvLnBuZ1wiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAge3tjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlID8gJ0VkaXQgU2NyaXB0JyA6ICdOZXcgU2NyaXB0J319XHJcbiAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNC1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X2Rlc2t0b3BfdGl0bGUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImFsaWduLXNlbGY6IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF90ZXh0XCIgc3R5bGU9XCJqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDA7XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmZpcnN0TmFtZSArXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIiBcIiArXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5sYXN0TmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+LzxzcGFuIHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmRvYixcclxuICAgICAgICAgICAgICAgICAgICAgIFwiZGQtTU0teXl5eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgIG1kbC1jZWxsLS01LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9wb3B1cF9oZWFkZXJfYm94X2NvbCBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCByeF9pcGFkX2hlYWRlcl9ib3hfMiBuZXdfbW9iaWxlX3J4X3RvcF9ib3R0b21fMFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbW1vblNlcnZpY2VzLnJ4aWQgIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5yeGlkICE9Jyc/J21kbC1jZWxsLS02LWNvbCc6J21kbC1jZWxsLS01LWNvbCdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld19yeF9wb3B1cF9idG5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2UobnVsbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgYmFja0J1dHRvbiBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIHx8IHNlbGVjdGlvbmJ0bkxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQ2xvc2VcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO3Bvc2l0aW9uOiByZWxhdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnJ4aWQgIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5yeGlkICE9JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgbmV4dEJ1dHRvbiBzZWxlY3QtYWN0aW9uLWJ0biBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO3dpZHRoOiAxNDBweDtkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiByb3c7YWxpZ24taXRlbXM6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIHx8IHNlbGVjdGlvbmJ0bkxvYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBY3Rpb25Ecm9wZG93bm9wZW4oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uYnRuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJyeF9sb2FkZXJfYnV0dG9uIG0tdjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMjBweDtoZWlnaHQ6IDIwcHg7bWFyZ2luOiAwcHggIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6IDBweCAhaW1wb3J0YW50O21hcmdpbi1sZWZ0OiAwcHggIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGlvbmJ0bkxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBBY3Rpb24gPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBkcnAtaWNvblwiPmV4cGFuZF9tb3JlPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAjc2VsZWN0QWN0aW9uRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfUHJlc2NyaWJlX2J0bl9kcm9wZG93bl9saXN0X2JveCBzZWxlY3QtYWN0aW9uLXVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9QcmVzY3JpYmVfYnRuX2Ryb3Bkb3duX2xpc3RfdWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gJ2RyYWZ0Jz9jYW5jZWxEcmFmdCgpOmNhbmNlbFByZXNjcmliZU1lZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZSx0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsNCk/Jyc6J2VkaXQtZGlzYWJsZS1kYXRhJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInByaW50UHJlc2NyaWJlTWVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywxKT8nJzonZWRpdC1kaXNhYmxlLWRhdGEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmludDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJyZWlzc3VlUHJlc2NyaWJlTWVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywzKT8nJzonZWRpdC1kaXNhYmxlLWRhdGEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZS1Jc3N1ZTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJjZWFzZVByZXNjcmliZU1lZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZSx0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsMik/Jyc6J2VkaXQtZGlzYWJsZS1kYXRhJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Vhc2U8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInBhZ2UgIT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZCBiYWNrQnV0dG9uIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJiYWNrKClcIiBbZGlzYWJsZWRdPVwidGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBCYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInBhZ2UgPT0gMVwiIChjbGljayk9XCJwYWdlTnVtYmVyT25lVG9OZXh0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgbmV4dEJ1dHRvbiBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIHx8IHNlbGVjdGlvbmJ0bkxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgTmV4dFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgbmV3X21vYmlsZV9yeF9idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImFib3J0ZGlzYWJsZT8nbmV4dEJ1dHRvbic6J2Fib3J0YnV0dG9uJ1wiICpuZ0lmPVwiYWJvcnRCdG5GbGFnXCIgW2Rpc2FibGVkXT1cImFib3J0ZGlzYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJlc2NyaXBlQWJvcnQoKVwiPjxzcGFuICpuZ0lmPVwiYWJvcnRkaXNhYmxlXCIgY2xhc3M9XCJyeF9sb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJyeF9sb2FkZXJfYnV0dG9uIG0tdjQgcnhfYnRuX3NwaW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuICpuZ0lmPVwiIWFib3J0ZGlzYWJsZVwiPkFib3J0PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2tcIiAqbmdJZj1cInBhZ2UgPT0gMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZCBuZXh0QnV0dG9uIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IDEzNXB4O2Rpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IHJvdzthbGlnbi1pdGVtczogY2VudGVyO2p1c3RpZnktY29udGVudDogY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciB8fCBzZWxlY3Rpb25idG5Mb2FkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW5jbHVkZVJ0cG1Nb2RhbCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJyeF9sb2FkZXJfYnV0dG9uIG0tdjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMjBweDtoZWlnaHQ6IDIwcHg7bWFyZ2luOiAwcHggIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6IDBweCAhaW1wb3J0YW50O21hcmdpbi1sZWZ0OiAwcHggIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlc2NyaWJlIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgZHJwLWljb25cIj5leHBhbmRfbW9yZTwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgI1ByZXNjcmliZURyb3Bkb3duIGNsYXNzPVwibmV3X3J4X1ByZXNjcmliZV9idG5fZHJvcGRvd25fbGlzdF9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdFBCVE5Ecm9wZG93biA9PSB0cnVlXCIgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RQQlRORHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfUHJlc2NyaWJlX2J0bl9kcm9wZG93bl9saXN0X3VsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogZVByZXNjcmlwdGlvblZhbGlkYXRpb24oKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIk1wcmVzY3JpYmVNZWQoMSlcIj5FLVByZXNjcmliZSAoRHJhZnQpPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBlUHJlc2NyaXB0aW9uVmFsaWRhdGlvbigpfVwiIChjbGljayk9XCJFcHJlc2NyaXBlU2VuZCgxKVwiICpuZ0lmPVwiIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5XCI+RS1QcmVzY3JpYmUgYW5kIFNlbmQ8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKCl9XCIgKGNsaWNrKT1cIkVwcmVzY3JpcGVTZW5kKDIpXCI+RS1QcmVzY3JpYmUgYW5kIFByaW50PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiAoY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpPT0gJ00nJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT0gJ2RyYWZ0Jyl8fCAoY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpPT0gJ0UnKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIk1wcmVzY3JpYmVNZWQoMilcIj5QcmVzY3JpYmUgKERyYWZ0KTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogKGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKSA9PSAnTScmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKSB8fCAoY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpPT0gJ0UnKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXNjcmlwZVByaW50KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNjcmliZSBhbmQgUHJpbnQ8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIHJ4X2lwYWRfaGVhZGVyX2JveF8zIG5ld19yeF9tb2JpbGVfdGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImFsaWduLXNlbGY6IGNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9oZWFkZXJfYm94X3RleHQgbmV3X21vYmlsZV9yeF9wb3B1cF9oZWFkZXJfdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5maXJzdE5hbWUgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubGFzdE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPi88c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kb2IsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcImRkLU1NLXl5eXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBhZ2UgPT0gMVwiIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCIgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTUtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI01lZGljaW5lRHJvcGRvd24gc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBuYW1lPVwibWVkaWNpbmUgc2VhcmNoXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggTWVkaWNpbmVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgbWVkaVNlYXJjaFZhbHVlIH19XCIgKGlucHV0KT1cInNlYXJjaEhhbmRsZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJNZWRpY2luZURyb3Bkb3duTGlzdCgpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgbWQtMjQgbmV3X3J4X3BvcHVwX3RhYl8xX2lucHV0X3NlYXJjaFwiPnNlYXJjaDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2lucHV0X3NlYXJjaFwiPjwvbWF0LWljb24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdF9ib3hcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdGVkTWVkaWNpbmVEcm9wZG93biA9PT0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlYXJjaE1lZGljaW5lTG9hZGVyXCIgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2VhcmNoTWVkaWNpbmVMb2FkZXJcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtZWRpY2luZUxpc3Qgb2Ygc2VhcmNoZWRNZWRpY2luZUxpc3RcIiBbY2xhc3NdPVwiZ2V0Y3VycmVudGlkKG1lZGljaW5lTGlzdClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRQcm9kdWN0TGlzdEJ5TmFtZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpY2luZUxpc3RbJ3Byb2RIaWRkZW5WYWx1ZSddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGljaW5lTGlzdFsncHJvZERpc3BsYXlWYWx1ZSddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGljaW5lTGlzdFsnc2VhcmNoQmFzZSddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFtpbm5lckhUTUxdPVwibWVkaWNpbmVMaXN0Wydwcm9kRGlzcGxheVZhbHVlJ11cIj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cInNlYXJjaGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA9PSAwXCI+Tm8gRGF0YTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJQcmltYXJ5U2VhcmNoU3Bpbm5lclwiIGNsYXNzPVwibG9hZGVyIG1sLWxvYWQtNDVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMi1jb2wgbWRsLWNlbGwtLTItY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZFJ4Q29udGVudCc6dGhpcy5pc05vblBic0ZsYWd8fChjb21tb25TZXJ2aWNlcy5yeERldGFpbHMhPW51bGwgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzIT0nJyAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzIT1udWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMhPScnICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSE9J2RyYWZ0Jyl9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJyeE9ubHlQQlNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIHZhbHVlPVwiUEJTL1JQQlNcIiBbZGlzYWJsZWRdPVwidGhpcy5pc05vblBic0ZsYWdcIiAvPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCI+UEJTL1JQQlM8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJyeFByaXZhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIHZhbHVlPVwiUHJpdmF0ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMi1jb2wgbWRsLWNlbGwtLTItY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZFJ4Q29udGVudCc6dGhpcy5pc05vblBic0ZsYWd8fChjb21tb25TZXJ2aWNlcy5yeERldGFpbHMhPW51bGwgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzIT0nJyAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzIT1udWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMhPScnICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSE9J2RyYWZ0Jyl9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJyeFByaXZhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIHZhbHVlPVwiUHJpdmF0ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS01LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS02LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCBuZXdfbW9iaWxlX3J4X3RvcF9ib3R0b21fMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcGFzc2V0cy5ob2xhLmhlYWx0aC9yeC13aWRnZXRzL3J4LW1pbXMucG5nXCIgYWx0PVwiTUlNUyBsb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHg7IGhlaWdodDogYXV0b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA4cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhdm91cml0ZXMtdG9nZ2xlLWxpbmtcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBzaG93RmF2b3VydGllcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHNob3dGYXZvdXJpdGVNZWQgPyAnSGlkZSBmYXZvdXJpdGVzJyA6ICdTaG93IGZhdm91cml0ZXMnIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTctY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFibGVfYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX3RpdGxlXCIgc3R5bGU9XCJwYWRkaW5nOiA1cHggMTBweDsgbWFyZ2luOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEF2YWlsYWJsZSBGb3JtdWxhdGlvbnM6XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd0Zhdm91cml0ZU1lZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9uY2xpY2tNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyIG0tdjRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb25jbGlja01lZGljaW5lTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9PSBudWxsIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QubGVuZ3RoID09IDBcclxuICAgICAgICAgICAgICAgICAgXCIgY2xhc3M9XCJub0RhdGFQcmVzY3JpYmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5ObyBEYXRhPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfY29udGFpbmVyXCIgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lZCBvZiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdDtcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveFwiIFtjbGFzc109XCJnZXRDbGFzc0Zvck1lZChtZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RGb3JtdWxhdGlvbihtZWQsIGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfaGVhZGVyXCIgW2lubmVySFRNTF09XCJtZWQucHJvZHVjdE5hbWVcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF90ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGI+UXVhbnRpdHk6PC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZWQucGJzVHlwZSE9dW5kZWZpbmVkICYmIG1lZC5wYnNUeXBlIT1udWxsICYmIG1lZC5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJub24gcGJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbWVkLm51bWJlck9mUGFjayArIFwieFwiICsgbWVkLnVuaXRQZXJQYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1lZC5tYXhRdHlVbml0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+PHNwYW4+PGI+UnB0czo8L2I+IHt7IG1lZC5yZXBlYXRzIH19PC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3RcIj48Yj5SZXN0cmljdGlvbjo8L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lZC5SZXN0cmljdGlvbnMhPXVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmIG1lZC5SZXN0cmljdGlvbnMgIT0gXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtZWQucGJzVHlwZSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAoXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVzdHJpY3Rpb25zKG1lZC5SZXN0cmljdGlvbnMpICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAobWVkLnBic1R5cGUhPXVuZGVmaW5lZCYmbWVkLnBic1R5cGUhPW51bGw/bWVkLnBic1R5cGU6XCJcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IDwvc3Bhbj48c3Bhbj48Yj5HZW5lcmljIE5hbWU6IDwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibWVkLmdlbmVyaWNOYW1lXCI+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lclwiIGNsYXNzPVwibG9hZGVyIG1sLWxvYWQtNDVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RmF2b3VyaXRlTWVkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9uY2xpY2tNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyIG0tdjRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb25jbGlja01lZGljaW5lTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgPT0gbnVsbCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdC5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgICAgICAgICBcIiBjbGFzcz1cIm5vRGF0YVByZXNjcmliZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk5vIEZhdm91cml0ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF9jb250YWluZXJcIiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVkIG9mIGNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdDtcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveFwiIFtjbGFzc109XCJnZXRDbGFzc0ZvckZhdm91cml0ZU1lZChtZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmYXZvdXJpdGVNZWRpY2luZUxvYWRpbmcobWVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfYm94X2hlYWRlclwiIFtpbm5lckhUTUxdPVwibWVkLnByb2R1Y3ROYW1lXCI+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxiPlF1YW50aXR5OjwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVkLnF1YW50aXR5fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4+PGI+UnB0czo8L2I+IHt7IG1lZC5yZXBlYXRzIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiPjxiPlJlc3RyaWN0aW9uOjwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVkLnJlc3RyaWN0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4+PGI+R2VuZXJpYyBOYW1lOiA8L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIm1lZC5nZW5lcmljTmFtZVwiPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlNlY29uZGFyeVNlYXJjaFNwaW5uZXJcIiBjbGFzcz1cImxvYWRlciBtbC1sb2FkLTQ1XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmYXZNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZhdk1lZGljaW5lTG9hZGVyXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNS1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkIG5ld19yeF9wb3B1cF90YWJfMV9ncmlkIG5ld19yeF9wb3B1cF90YWJfMV9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX3RpdGxlXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiA1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCYmY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUhPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWU6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpYyBOYW1lOjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwmJmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUhPXVuZGVmaW5lZCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogJydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCcmFuZCBOYW1lOjxzcGFuIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXRCcmFuZE5hbWUoY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbilcclxuICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgU2NoZWR1bGU6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uICE9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24hPW51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXMhPXVuZGVmaW5lZCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXMhPW51bGwgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5wb2lzb25DbGFzc2VzLmxlbmd0aD4wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXNbMF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTm8gU2NoZWR1bGVkIEluZm9ybWF0aW9uIEF2YWlsYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQQlMgTGlzdGluZzo8c3Bhbj57e2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSE9dW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUhPXVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSE9bnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gXCIgKFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbjowcHggO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1heCBRdWFudGl0eSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRNYXhRdWFudGl0eSgpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgUmVwZWF0cyA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6XCJcIn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcmVnbmFuY3lDYXRlZ29yeSE9dW5kZWZpbmVkICYmIFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnkgIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGVnb3J5Q29kZSE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0ZWdvcnlDb2RlIT1udWxsXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVnbmFuY3kgQ2F0ZWdvcnk6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGVnb3J5Q29kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRpdGlvbmFsTm90ZSAhPXVuZGVmaW5lZCAmJiBcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZGl0aW9uYWxOb3RlICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZGl0aW9uYWxOb3RlICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbE5vdGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlZ25hbmN5Q2F0ZWdvcnkuYWRkaXRpb25hbE5vdGVcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFtpbm5lckhUTUxdPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPT0gdHJ1ZSAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyE9dW5kZWZpbmVkICYmIFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9ICcnXHJcbiAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UmVzdHJpY3Rpb25zOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxvbCBzdHlsZT1cIm1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDE1cHhcIiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zIT11bmRlZmluZWQgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuZXdfcnhfcG9wX2F1dF9pbnRcIiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN0cmljdGlvbiBvZiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5SZXN0cmljdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3ICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCAhPSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ4X3Jlc3RyaWN0aW9uVGV4dFwiICpuZ0lmPVwicmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0Lmxlbmd0aCA8IDYwXCI+PGI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblR5cGUgfX08L2I+IC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaHRtbFRvRm9ybWF0dGVkVGV4dChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnhfcmVzdHJpY3Rpb25UZXh0XCIgKm5nSWY9XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQubGVuZ3RoID4gNjBcIj48Yj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVHlwZSB9fTwvYj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5odG1sVG9Gb3JtYXR0ZWRUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuc3Vic3RyaW5nKDAsIDYwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiPjwvc3Bhbj4uLi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7IGNvbG9yOiAjZmY5OTc4XCIgaWQ9XCJzaG93LXRvb2x0aXAtaWRcIj5TaG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb3JlPC9hPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBkZW1vPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJ4X3Rvb2x0aXBfaW5uZXJfYm94XCIgW2lubmVySFRNTF09XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHRcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfM19zbWFsbF9ib3hcIiBbc3R5bGUuZGlzcGxheV09XCJpc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpID8gJ2lubGluZS1mbGV4JyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImlzQ3VycmVudE1lZGljaW5lSW5GYXZvdXJpdGVzKCkgPyAnbWF4LWNvbnRlbnQnIDogbnVsbFwiICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6IDEwcHg7XCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF9jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGxcIiAoY2xpY2spPVwiYWRkVG9GYXZvdXJpdGVzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtYnV0dG9uLS1jb2xvcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5uZXh0QnV0dG9uXT1cIiFpc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ybWZhdmJ1dHRvbl09XCJpc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNDdXJyZW50TWVkaWNpbmVJbkZhdm91cml0ZXMoKTsgZWxzZSBhZGRUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlIGZyb20gZmF2b3VyaXRlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWRkVGV4dD4rIEFkZCB0byBmYXZvdXJpdGVzPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1hcmdpbi1yaWdodDogMTBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5RdWFudGl0eTogPC9zcGFuPjxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIiBuYW1lPVwicXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiBzdGVwPVwiMVwiIFttaW5dPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWxcIiAoa2V5cHJlc3MpPVwiY2hlY2tNb2JpbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJxdWFudGl0eUNoYW5nZSgpXCIgKHBhc3RlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlJlcGVhdHM6IDwvc3Bhbj48aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWUgfHwgY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJycHRzXCIgcGxhY2Vob2xkZXI9XCJcIiBbbWluXT1cIjBcIiAoaW5wdXQpPVwicmVwZWF0c0NoYW5nZSgpXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsXCIgKHBhc3RlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cImNoZWNrTW9iaWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gfHwgY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IGRpc2FibGVkUnhDb250ZW50OiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nfVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgRG9zZTpcclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3hcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+PGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjaGVja2JveDFcIiBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMudW5Vc3VhbERvc2VGbGFnXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwO2ZvbnQtc2l6ZTogMTZweDttYXJnaW4tdG9wOiAtN3B4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5VbnVzdWFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb3NlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJzZWxlY3RlZGRvc2VcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBEb3NlXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZVwiIChjbGljayk9XCJkb3NlRHJvcGRvd24oKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI0Rvc2VEcm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0RG9zZURyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93blwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInNlbGVjdERvc2VWYWx1ZShudWxsKVwiIGNsYXNzPVwicC0xMlwiPiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkb3NlIG9mIGRvc2VEYXRhXCIgKGNsaWNrKT1cInNlbGVjdERvc2VWYWx1ZShkb3NlKVwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2hsaWdodDogZG9zZVsndGV4dCddID09IGNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRvc2VbXCJ0ZXh0XCJdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5GcmVxdWVuY3k6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cInNlbGVjdGVkRnJlcXVlbmN5OlwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgRnJlcXVlbmN5XCIgcmVhZE9ubHkgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmcmVxRHJvcGRvd24oKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI0ZyZXFEcm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0RnJlcURyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJzZWxlY3RGcmVxdWVuY3lWYWx1ZShudWxsKVwiIGNsYXNzPVwicC0xMlwiPiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBmcmVxdWVuY3kgb2YgZnJlcXVlbmN5RGF0YVwiIChjbGljayk9XCJzZWxlY3RGcmVxdWVuY3lWYWx1ZShmcmVxdWVuY3kpXCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaGxpZ2h0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgZnJlcXVlbmN5Wyd0ZXh0J10gPT0gY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZnJlcXVlbmN5W1widGV4dFwiXSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+Rm9vZDo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwic2VsZWN0ZWRGcmVxdWVuY3k6XCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBGb29kXCIgcmVhZE9ubHkgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb29kRHJvcGRvd24oKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI0Zvb2REcm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0Rm9vZERyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJzZWxlY3RGb29kVmFsdWUobnVsbClcIiBjbGFzcz1cInAtMTJcIj4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZm9vZCBvZiBmb29kRGF0YVwiIChjbGljayk9XCJzZWxlY3RGb29kVmFsdWUoZm9vZClcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdobGlnaHQ6IGZvb2RbJ3RleHQnXSA9PSBjb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmb29kW1widGV4dFwiXSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+SW5zdHJ1Y3Rpb246PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cIkluc3RydWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBJbnN0cnVjdGlvblwiIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImluc3RydWN0aW9uRHJvcGRvd24oKVwiIChjaGFuZ2UpPVwiaW5zdHJ1Y3Rpb25PbkNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiYWxwaGFSZXN0cmljdGlvbigkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjSW5zdHJ1Y3Rpb25Ecm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7TV9saXN0X2JveF9zaG93OiBzZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID09PSB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cIkNoYW5nZUluc3RydWN0aW9uKG51bGwpXCIgY2xhc3M9XCJwLTEyXCI+IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJpdGVtLmlkID09IGNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCAmJiBpdGVtLnRleHQgPT0gY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA/ICdoZWlnaGxpZ2h0JyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpbnN0cnVjdGlvbkRhdGE7IGluZGV4IGFzIGlcIiAoY2xpY2spPVwiQ2hhbmdlSW5zdHJ1Y3Rpb24oaXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRleHQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0udXNlcmlkICE9PSAwXCIgY2xhc3M9XCJzcGFuX2ljb25cIiBzdHlsZT1cImZsb2F0OiByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiIHN0eWxlPVwicGFkZGluZzogNXB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRJbnN0cnVjdGlvbihpdGVtLmlkLCBpdGVtKVwiPmNyZWF0ZTwvaT48aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweDsgcGFkZGluZzogNXB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUluc3RydWN0aW9uKGl0ZW0uaWQpXCI+Y2xlYXI8L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJSWF9BRERfZHJvcGRvd25fYnRuXCIgKGNsaWNrKT1cImFkZE5ld0luc3RydWN0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICArIEFkZCBDb21wbGV4IEluc3RydWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPT0gZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBsZXhfaW5zdHJ1Y3Rpb25fYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDsgbWFyZ2luOiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGV4IEluc3RydWN0aW9uOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5zdHJ1Y3Rpb25fZmllbGRfY2xyIG1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXQgXCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJJbnN0cnVjdGlvblwiIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBDb21wbGV4IEluc3RydWN0aW9uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4OyBtYXJnaW46IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBsZXggSW5zdHJ1Y3Rpb24gRGVzY3JpcHRpb246XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBhdXRvY29tcGxldGU9XCJvZmZcIiBuYW1lPVwiXCIgaWQ9XCJcIiByb3dzPVwiMlwiIG1heExlbmd0aD1cIjUwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBDb21wbGV4IEluc3RydWN0aW9uIERlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5zdHJ1Y3Rpb25fZmllbGRfY2xyIHctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWFcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJSWF9BRERfZHJvcGRvd25fYnRuXzFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsZWFySW5zdHJ1Y3Rpb24oKVwiIGNsYXNzPVwicngtaW5zdHJ1Y3Rpb24tYnRuXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzYXZlSW5zdHJ1Y3Rpb24oKVwiIGNsYXNzPVwicngtaW5zdHJ1Y3Rpb24tYnRuXCI+U2F2ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5Sb3V0ZTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwic2VsZWN0ZWRSb3V0ZTpcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJvdXRlXCIgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlXCIgbWF4bGVuZ3RoPVwiNTBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyb3V0ZURyb3Bkb3duKClcIiAoa2V5cHJlc3MpPVwiYWxwaGFSZXN0cmljdGlvbigkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjUm91dGVEcm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0Um91dGVEcm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDEwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3JvdXRlX19pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBbdmFsdWVdPVwicm91dGVEYXRhRmlsdGVyID8gcm91dGVEYXRhRmlsdGVyIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwicm91dGVGaWx0ZXIoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIG1kLTI0IG5ld19yeF9wb3B1cF90YWJfMV9pbnB1dF9zZWFyY2ggcngtc2VhcmNoLWljb25cIj5zZWFyY2g8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0lmPVwiZmlsdGVyUm91dGVJdGVtcyhyb3V0ZURhdGEsIHJvdXRlRGF0YUZpbHRlcikubGVuZ3RoICE9IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93biByeF9kcm9wZG93bl9yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCByb3V0ZSBvZiBmaWx0ZXJSb3V0ZUl0ZW1zKHJvdXRlRGF0YSwgcm91dGVEYXRhRmlsdGVyKVxyXG4gICAgICAgICAgICAgICAgICBcIiAoY2xpY2spPVwic2VsZWN0Um91dGVzZWFyY1ZhbHVlKHJvdXRlKVwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2hsaWdodDpcclxuICAgICAgICAgICAgICAgICAgICAgIHJvdXRlWydyb3V0ZU5hbWUnXSA9PSBjb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcm91dGVbXCJyb3V0ZU5hbWVcIl0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgKm5nSWY9XCJmaWx0ZXJSb3V0ZUl0ZW1zKHJvdXRlRGF0YSwgcm91dGVEYXRhRmlsdGVyKS5sZW5ndGggPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duIHJ4X2Ryb3Bkb3duX3JvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGk+bm8gZGF0YTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlBybyBSZSBOYXRhIFByZXNjcmlwdGlvbjo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnJ4UFJOXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiUFJOQ2hhbmdlKGNvbW1vblNlcnZpY2VzLnJ4UFJOKVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5Qcm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgUmUgTmF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVzY3JpcHRpb248L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5QcmVzY3JpYmUgQXM6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19yYWRpb2JveF9idXR0b24gcnhfcmFkaW9fb3ZlcmFsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicnhfcmFkaW9fbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJyYWRpb1wiIGNsYXNzPVwibWRsLXJhZGlvX19idXR0b24gY3VzdG9tLXJhZGlvLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIlByZXNjcmliZUFzXCIgW3ZhbHVlXT1cIidQcml2YXRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLnRvTG93ZXJDYXNlKCkgPT09ICdwcml2YXRlJ1wiIChjbGljayk9XCJwcml2YXRlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVNcIiAvPjxzcGFuIGNsYXNzPVwibWRsLXJhZGlvX19sYWJlbCByYWRpb190eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlByaXZhdGU8L3NwYW4+PC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyeF9yYWRpb19sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInJhZGlvXCIgY2hlY2tlZD1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvbiBkLWlubGluZSByYWRpbyBjdXN0b20tcmFkaW8tYnV0dG9uXCIgbmFtZT1cIlByZXNjcmliZUFzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiJ1BCUydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcmVzY3JpYmVBU19QQlMgfHwgY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PT0gJ3BicydcIiAoY2xpY2spPVwiUEJTKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVNcIiAvPjxzcGFuIGNsYXNzPVwibWRsLXJhZGlvX19sYWJlbCByYWRpb190eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7ICdkaXNhYmxlZC1zdHlsZSc6IHByZXNjcmliZUFTX1BCUyA9PSB0cnVlfHwgY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5QQlM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicnhfcmFkaW9fbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJyYWRpb1wiIGNoZWNrZWQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLXJhZGlvX19idXR0b24gZC1pbmxpbmUgcmFkaW8gY3VzdG9tLXJhZGlvLWJ1dHRvblwiIG5hbWU9XCJQcmVzY3JpYmVBc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIidSUEJTJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXNjcmliZUFTX1JQQlMgfHwgY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PT0gJ3JwYnMnXCIgKGNsaWNrKT1cIlJQQlMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBU1wiIC8+PHNwYW4gY2xhc3M9XCJtZGwtcmFkaW9fX2xhYmVsIHJhZGlvX3R4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgJ2Rpc2FibGVkLXN0eWxlJzogcHJlc2NyaWJlQVNfUlBCUyA9PSB0cnVlfHwgY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5SUEJTPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3hcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSE9bnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT09ICdub24gcGJzJyAmJlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YU51bWJlciAhPSAnJyAmJiBpc05vblBic0ZsYWcgPT0gZmFsc2UgJiYgIWlzUHJlc2NyaWJlQXNQcml2YXRlT25seVxyXG4gICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94XCIgY2xhc3M9XCJjaGVja19ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBXCIgKGNsaWNrKT1cInVubGlzdGVkUkEoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMudW5saXN0ZWRSQVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWwgY2hlY2tfYm94X2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFVubGlzdGVkIFJBXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgIE1fQ1RHX2JveF9oaWRlOiAhKFxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMgJiZcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRDdGdGbGFnID09IDAgJiZcclxuICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRDdGdDb1BheW1lbnQgPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJ1xyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+Q1RHL1BCUyBDbyBQYXltZW50OjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50ID09IHRydWVcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+Q1RHL1BCU1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBDbyBQYXltZW50PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IGRpc2FibGVkUnhDb250ZW50OiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nfVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlNjcmlwdCBEYXRlOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJSeFNjcmlwdERhdGVcIiBwbGFjZWhvbGRlcj1cIiAuLi8uLi8uLi4uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlN0YXJ0IERhdGU6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCIgaWQ9XCJSeFN0YXJ0RGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIgLi4vLi4vLi4uLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuc3RhcnREYXRlXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkVuZCBEYXRlOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiIGlkPVwiUnhFbmREYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIi4uLy4uLy4uLi5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmVuZERhdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+RGF5cyBCZXR3ZWVuIFJlcGVhdHM6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKHBhc3RlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBEYXlzIEJldHdlZW4gUmVwZWF0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZXx8Y29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cIm51bWJlclwiIGlkPVwiRGF5YmV0d2VlbnJlcGVhdHNcIiBbbWluXT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9ufHxjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWxcIiAoa2V5cHJlc3MpPVwiY2hlY2tNb2JpbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImRheXNjaGFuZ2UoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UHVycG9zZTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwic2VsZWN0ZWRQdXJwb3NlOlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBQdXJwb3NlXCIgcmVhZE9ubHkgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInB1cnBvc2VEcm9wZG93bigpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICNQdXJwb3NlRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94IG5ld19yeF9wb3B1cF90YWJfcHVycG9zZV9ib3ggaC0xNjBwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0UHVycG9zZURyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic2VsZWN0UHVycG9zZVZhbHVlKG51bGwpXCIgY2xhc3M9XCJwLTEyXCI+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBwdXJwb3NlIG9mIHB1cnBvc2VEYXRhXCIgKGNsaWNrKT1cInNlbGVjdFB1cnBvc2VWYWx1ZShwdXJwb3NlKVwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaGxpZ2h0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXJwb3NlWydsb29rdXBUZXh0J10gPT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHB1cnBvc2VbXCJsb29rdXBUZXh0XCJdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fQ1RHX2JveF9oaWRlOiBjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSAhPSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlN1YnN0aXR1dGlvbjo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidGhpcy5icmFuZFN1YnN0aXR1dGVzTm90QWxsb3coY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93KVwiIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgPyBjb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcclxuICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPkJyYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFN1YnN0aXR1dGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBOb3QgUGVybWl0dGVkPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9DVEdfYm94X2hpZGVfYnJhbmQ6IGNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSB9XCIgaWQ9XCJicmFuZG5hbWV0b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiaGlkZVRvb2xUaXAoKVwiIChtb3VzZWVudGVyKT1cInNob3d0b29sdGlwKGNvbW1vblNlcnZpY2VzLmxlbWksYnJhbmR0b29sdGlwKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+QnJhbmQgTmFtZTo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2JyYW5kdG9vbHRpcD48c3BhbiBjbGFzcz1cImluY2x1ZGVfYnJhbmRfdG9vbHRpcFwiPlRoZSBzZWxlY3RlZCBwcm9kdWN0IGlzIExFTUlcclxuICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZWQuIFRoZXJlZm9yZSBpdCBtYXkgYmVcclxuICAgICAgICAgICAgICAgICAgICAgIHByZXNjcmliZWQgYnkgdGhlIGJyYW5kIG5hbWUgb25seS48L3NwYW4+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgTV9DVEdfYm94X2hpZGVfYnJhbmRfbmFtZTogY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidGhpcy5pc0NoYW5nZUJyYW5kTmFtZShjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSlcIiAvPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCI+SW5jbHVkZSBCcmFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBOYW1lPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5SZWd1bGF0aW9uIDI0OjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0XCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlJlZ3VsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgMjQ8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgZGlzYWJsZWRSeENvbnRlbnQ6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmd9XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5ETyBOT1Qgc2VuZCB0byBNeVNMOjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMubXlTTENvbnNlbnRcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+RE9cclxuICAgICAgICAgICAgICAgICAgICAgICAgTk9UIHNlbmQgdG8gTXlTTDwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBQaGFybWFjeTogLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPjxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVwiIChjaGFuZ2UpPVwic2VuZFRvUGhhcm1hY3lDaGFuZ2UoKVwiIC8+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDtmb250LXNpemU6IDE2cHg7bWFyZ2luLXRvcDogLTdweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+U2VuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gUGhhcm1hY3k8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIiByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cInNlbGVjdGVkZG9zZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWVcIiAoY2xpY2spPVwic3RwVmFsdWVEcm9wZG93bigpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX0NUR19ib3hfaGlkZTogY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgIT0gdHJ1ZSB9XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjc3RwRHJvcGRvd24gY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2Ryb3Bkb3duX2xpc3RfYm94IG5ld19yeF9wb3B1cF90YWJfc3RwX2JveCBoLTkzcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RzdHBEcm9wZG93biA9PT0gdHJ1ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd25cIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJzZWxlY3RTdHBWYWx1ZShudWxsKVwiIGNsYXNzPVwicC0xMlwiPjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHNlbmR0b3BoYXJtYWN5IG9mIHNlbmR0b3BoYXJtYWN5RGF0YVwiIChjbGljayk9XCJzZWxlY3RTdHBWYWx1ZShzZW5kdG9waGFybWFjeSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VuZHRvcGhhcm1hY3kubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+RW1lcmdlbmN5IFN1cHBseTo8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5FbWVyZ2VuY3lcclxuICAgICAgICAgICAgICAgICAgICAgICAgU3VwcGx5PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFnZSA9PSAyXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHg7IG9wYWNpdHk6IDFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIiBjbGFzcz1cIm1kbC1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfdGFiXzFfZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+Ulg8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGIgW2lubmVySFRNTF09XCJjb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lXCI+PC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCIgc3R5bGU9XCJtYXJnaW46IDBweFwiPlF1YW50aXR5OiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiByZ2IoNDUsIDQ1LCA0NSk7IGZvbnQtd2VpZ2h0OiA2MDBcIj57eyBjb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiBSZXBlYXRzOiA8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoNDUsIDQ1LCA0NSk7IGZvbnQtd2VpZ2h0OiA2MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCB9fTwvc3Bhbj4gRGVmYXVsdCBRdWFudGl0eTp7e2dldERlZmF1bHRRdWFudGl0eSgpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgUmVwZWF0czpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbCYmY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzIT1udWxsP2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0czpcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSAhPSAnJyB8fGNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSAhPSAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgfX0gPC9zcGFuPjxzcGFuPnt7IGNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUgIT0gJydcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tJbnN0cnVjdGlvbkRlc2NyaXB0aW9uICE9XCJcIiAmJiBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uIT1udWxsP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbjpjb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlIT1cIlwiICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlIT1udWxsP2NvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWU6XCJcIn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSAhPSAnJ1wiIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUC5SLk4gOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5yeFBSTlwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMucnhQUk5cIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+RGF5cyBCZXR3ZWVuIFJlcGVhdHM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKVwiPnt7Y29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWx9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbClcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbnVzdWFsIERvc2U6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZ1wiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMudW5Vc3VhbERvc2VGbGFnXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlNjcmlwdCBEYXRlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3t0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGV8ZGF0ZTonZGQtTU0teXl5eSd9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5TdGFydCBEYXRlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3t0aGlzLmNvbW1vblNlcnZpY2VzLnN0YXJ0RGF0ZXxkYXRlOidkZC1NTS15eXl5J319PC9zcGFuPiwgRW5kIERhdGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3RoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZXxkYXRlOidkZC1NTS15eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5QcmVzY3JpYmUgQXM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTKVwiPnt7Y29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUylcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+UHVycG9zZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlKVwiPnt7Y29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluY2x1ZGUgQnJhbmQgTmFtZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWVcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lXCI+LTwvc3Bhbj4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCcmFuZCBTdWJzdGl0dXRpb24gTm90IFBlcm1pdHRlZDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93XCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWd1bGF0aW9uIDI0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjRcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLnJlZ3VsYXRpb24yNFwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENURy9QQlMgQ28gUGF5bWVudDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50XCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnRcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBETyBOT1Qgc2VuZCB0byBNeVNMOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5teVNMQ29uc2VudFwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMubXlTTENvbnNlbnRcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kIHRvIFBoYXJtYWN5OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lcIj4tPC9zcGFuPiwgU2VuZCB0byBQaGFybWFjeSBWYWx1ZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IWNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSk/Y29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZTonLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWVyZ2VuY3kgU3VwcGx5OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHlcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+Tm90ZSBUbyBQaGFybWFjeTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbmFtZT1cIlwiIGlkPVwiXCIgcm93cz1cIjNcIiBtYXhsZW5ndGg9XCI1MFwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWEgcngtbS13LTUzNXBcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5Bbm5vdGF0aW9uOjwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbmFtZT1cIlwiIGlkPVwiXCIgcm93cz1cIjNcIiBtYXhsZW5ndGg9XCI1MDBcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0aGlzLmNvbW1vblNlcnZpY2VzLmFubm90YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWEgcngtbS13LTUzNXBcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5SZWFzb24gRm9yIFByZXNjcmlwdGlvbjo8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG5hbWU9XCJcIiBpZD1cIlwiIHJvd3M9XCIzXCIgbWF4bGVuZ3RoPVwiNTBcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYSByeC1tLXctNTM1cFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3t0aGlzLmdldFN0YXRlQXV0aG9yaXR5TGFiZWwoY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbjogMHB4O21hcmdpbi10b3A6IC04cHg7bWFyZ2luLWJvdHRvbTogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0ZS10eHQtY29sb3IgbmV3X3J4X3BvcHVwX2xhYmVsX3BcIj4oUmVsZXZhbnQgdG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSB9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImFwcHJvdmFsXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuU3RhdGVBdXRob3JpdHlOdW1iZXJcIiBtYXhsZW5ndGg9XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJhdXRob3JpdHlOb1ZhbGlkYXRpb24oJGV2ZW50KVwiIChuZ01vZGVsQ2hhbmdlKT1cImF1dGhvcml0eU5vQ2hhbmdlKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICduZXdfcnhfbm9fYXV0aG9yaXR5Jzohc2hvd0F1dGhvcml0eUJveChcclxuICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9uczonJyxjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyxjb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSxjb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKVxyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHNob3dBdXRob3JpdHlCb3goXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/ICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9uczonJyxcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDBweFwiIGNsYXNzPVwibWRsLWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tOC1jb2wgbWRsLWNlbGwtLTYtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfTmV3XCI+SE9UTElORTogPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3NwYW5cIj57e2NvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUlBCUyc/JzE4MDA1NTI1ODAnOicxODAwODg4MzMzJ319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS00LWNvbCBtZGwtY2VsbC0tMi1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcGFzc2V0cy5ob2xhLmhlYWx0aC9yeC13aWRnZXRzL3J4LW1pbXMucG5nXCIgYWx0PVwiTUlNUyBsb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHg7IGhlaWdodDogYXV0b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzY3JpYmVyIE5hbWU6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmZpcnN0TmFtZSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiBcIiArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5sYXN0TmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNjcmliZXIgTnVtYmVyOjxzcGFuPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRpZW50IE1lZGljYXJlIE51bWJlcjo8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml0eSBGb3JtIE5vOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+QXV0aG9yaXR5IEl0ZW06PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImF1dGhvcml0eV9pdGVtX3RleHRcIiBbaW5uZXJIVE1MXT1cImNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWVcIj48L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wIG5ld19yeF9wb3B1cF90YWJfc21hbGxCb3hlc1wiIHN0eWxlPVwibWFyZ2luOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFudGl0eTo8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoNDUsIDQ1LCA0NSk7IGZvbnQtd2VpZ2h0OiA2MDBcIj4ge3sgY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPiBSZXBlYXRzOjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYig0NSwgNDUsIDQ1KTsgZm9udC13ZWlnaHQ6IDYwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCB9fTwvc3Bhbj4gRGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFF1YW50aXR5Ont7Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbCYmY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cyE9bnVsbD8oY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWc/XCIxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeCBcIjpcIlwiKStjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzOlwiXCJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBlYXRzOnt7Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbCYmY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzIT1udWxsP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0czpcIlwifX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwicGFkZGluZzogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFBCUyBMaXN0ZWQgSW5kaWNhdGlvbiBBdXRob3JpdHk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLWhlaWdodDogNzBweDsgbWF4LWhlaWdodDogMTUwcHg7IG92ZXJmbG93OiBhdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIHN0eWxlPVwibWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMTVweDtsaXN0LXN0eWxlOiBub25lO3BhZGRpbmc6IDBweDtcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2hvd1Jlc3RyaWN0aW9ucyA9PSB0cnVlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJmb250LXNpemU6IDEycHg7cGFkZGluZzogMHB4IDEwcHg7bWFyZ2luLWJvdHRvbTogMTBweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5ld19yeF9wb3BfYXV0X2ludCBjdXJzb3JcIiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdHJpY3Rpb24gb2YgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAuUmVzdHJpY3Rpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4IGFzIGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcnhfcG9wX2F1dF9pbnNfc2VsZWN0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID09IGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uUHJldmlldyAhPSAnJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCAhPSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGlvbkF1dGhvcml0eShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHM6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0czonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ4X3Jlc3RyaWN0aW9uVGV4dFwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0Lmxlbmd0aCA8IDgwXCI+PGI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblR5cGUgfX08L2I+IC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sVG9Gb3JtYXR0ZWRUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj48L3NwYW4+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ4X3Jlc3RyaWN0aW9uVGV4dFwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dC5sZW5ndGggPiA4MFwiPjxiIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRpb25BdXRob3JpdHkoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0czonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVHlwZSB9fTwvYj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGlvbkF1dGhvcml0eShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD9jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD9jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHM6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgW2lubmVySFRNTF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sVG9Gb3JtYXR0ZWRUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5zdWJzdHJpbmcoMCwgODApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPjwvc3Bhbj4uLi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7IGNvbG9yOiAjZmY5OTc4XCIgaWQ9XCJzaG93LXRvb2x0aXAtaWRcIj5TaG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vcmU8L2E+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcGRlbW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJ4X3Rvb2x0aXBfaW5uZXJfYm94XCIgW2lubmVySFRNTF09XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHRcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5QQlMgTm90ZXM6PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBhdXRvY29tcGxldGU9XCJvZmZcIiBuYW1lPVwiXCIgaWQ9XCJcIiByb3dzPVwiMlwiIG1heGxlbmd0aD1cIjUwMFwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5wYnNOb3Rlc1wiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGlvbiBGb3IgVGhpcyBBdXRob3JpdHk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBhdXRvY29tcGxldGU9XCJvZmZcIiBuYW1lPVwiXCIgaWQ9XCJcIiByb3dzPVwiMlwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZHNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIG5ld19yeF9wb3B1cF90YWJfdGV4dGFyZWEgcngtbS13LTEwMFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QXV0aG9yaXR5TGFiZWwoY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBuYW1lPVwiYXBwcm92YWxcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm9cIiAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0Y2hhbmdlQXBwcm92YWxObygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJhdXRob3JpdHlOb1ZhbGlkYXRpb24oJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAhc2hvd0F1dGhvcml0eUJveChcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD8gY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnM6JycsXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSxcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMudW5saXN0ZWRSQVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IHJpZ2h0XCIgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcGFzc2V0cy5ob2xhLmhlYWx0aC9yeC13aWRnZXRzL3J4LW1pbXMucG5nXCIgYWx0PVwiTUlNUyBsb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogODBweDsgaGVpZ2h0OiBhdXRvXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiTm9fQXV0aG9yaXR5X2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHA+Tm8gQXV0aG9yaXR5IFJlcXVpcmVkPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X2Zvb3RlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfZm9vdGVyX2JyYW5kXCI+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtbC0xMFwiPjxzcGFuPkhvbGEgQ29uc3VsdCB8IDEuMCA8c3BhbiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnNhbmRib3hcIj58IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJ4X3N0YWdpbmdcIj5UaGlzIGlzIGEgc2FuZGJveCBlbnZpcm9ubWVudDwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvcD5cclxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm10LTE1cFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyeF9wb3B1cF9mb290ZXJfdGV4dFwiPsKpIDIwMjUgSG9sYSBIZWFsdGgsIGEgYnJhbmQgb2YgUGFja2FwaWxsIFB0eSBMdGQgfCB2XHJcbiAgICAgICAgICAgICAgICAgIDEuMS4wIHxcclxuICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vaG9sYS5oZWFsdGgvY29uc3VsdC10ZXJtc1wiIHRhcmdldD1cIl9ibGFua1wiPlRlcm1zPC9hPiB8XHJcbiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2hvbGEuaGVhbHRoL2NvbnN1bHQtcHJpdmFjeS1wb2xpY3lcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Qcml2YWN5IFBvbGljeTwvYT4gfFxyXG4gICAgICAgICAgICAgICAgICA8YSBocmVmPVwibWFpbHRvOnN1cHBvcnRAaG9sYS5oZWFsdGhcIiB0YXJnZXQ9XCJfYmxhbmtcIj5IZWxwPC9hPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|