simpo-component-library 3.5.36 → 3.5.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/sections/registration-form/registration-form.component.mjs +28 -7
- package/esm2022/lib/services/image-upload-service.service.mjs +2 -2
- package/fesm2022/simpo-component-library.mjs +28 -7
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/components/input-fields/input-fields.component.d.ts +1 -1
- package/lib/directive/background-directive.d.ts +1 -1
- package/lib/directive/button-directive.directive.d.ts +1 -1
- package/lib/directive/color.directive.d.ts +1 -1
- package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -1
- package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
- package/lib/sections/registration-form/registration-form.component.d.ts +1 -1
- package/package.json +1 -1
- package/simpo-component-library-3.5.38.tgz +0 -0
- package/simpo-component-library-3.5.36.tgz +0 -0
@@ -129,6 +129,27 @@ export class RegistrationFormComponent extends BaseSection {
|
|
129
129
|
element.isDisplay = true;
|
130
130
|
}
|
131
131
|
});
|
132
|
+
fieldData?.data.forEach((element) => {
|
133
|
+
if (element.dataSourceType === 'COUNTRY') {
|
134
|
+
element.isDisplay = false;
|
135
|
+
}
|
136
|
+
});
|
137
|
+
fieldData?.data.forEach((element) => {
|
138
|
+
const hasSiblingsGroup = Array.isArray(element.fieldGroup) && element.fieldGroup.some((group) => group.fieldGroupName?.toLowerCase().includes("siblings details"));
|
139
|
+
if (hasSiblingsGroup) {
|
140
|
+
const labelCheck = element.fieldLabel?.includes('1');
|
141
|
+
const valueCheck = !!element.fieldValue;
|
142
|
+
element.isDisplay = labelCheck || valueCheck;
|
143
|
+
}
|
144
|
+
});
|
145
|
+
fieldData.data.forEach((element) => {
|
146
|
+
const hasSiblingsGroup = Array.isArray(element.fieldGroup) && element.fieldGroup.some((group) => group.fieldGroupName?.toLowerCase().includes("past school details"));
|
147
|
+
if (hasSiblingsGroup) {
|
148
|
+
const labelCheck = element.fieldLabel?.includes('1');
|
149
|
+
const valueCheck = !!element.fieldValue;
|
150
|
+
element.isDisplay = labelCheck || valueCheck;
|
151
|
+
}
|
152
|
+
});
|
132
153
|
this.formStatus = admissionData.status;
|
133
154
|
// this.payload = admissionData;
|
134
155
|
this.payload['documents'] = [];
|
@@ -316,7 +337,7 @@ export class RegistrationFormComponent extends BaseSection {
|
|
316
337
|
// }
|
317
338
|
// this.payload.studentFeeStructure['paymentPlanType'] = this.payload.paymentPlanType;
|
318
339
|
// this.payload['returnUrl'] = `https://cmis.tejsoft.com/verify-payment/?url=true&type=ADMISSION&bId=${this.businessId}`; //production
|
319
|
-
this.payload['returnUrl'] = `https://
|
340
|
+
this.payload['returnUrl'] = `https://stage-portal.cmis.ac.in/verify-payment/?url=true&type=ADMISSION&bId=${this.businessId}`; //dev
|
320
341
|
// this.payload['returnUrl'] = `https://stage.cmis.tejsoft.com/verify-payment/?url=true&type=ADMISSION&bId=${this.businessId}`; //stage
|
321
342
|
if (this.backupDocFile) {
|
322
343
|
let imageData = await this.imageUploadService.uploadFileInAzure(this.backupDocFile);
|
@@ -350,10 +371,10 @@ export class RegistrationFormComponent extends BaseSection {
|
|
350
371
|
let payload = {
|
351
372
|
"mailPaymentLink": window.location.href,
|
352
373
|
"feeSummaryId": admissionData.id,
|
353
|
-
"name": this.fetchStudentDetails('STUDENT_NAME'),
|
374
|
+
"name": this.fetchStudentDetails(admissionData.fieldItems, 'STUDENT_NAME'),
|
354
375
|
"amount": admissionData.studentFeeStructureV2.totalFee,
|
355
|
-
"mobile": this.fetchStudentDetails('CONTACT_MOBILE'),
|
356
|
-
"email": this.fetchStudentDetails('CONTACT_EMAIL'),
|
376
|
+
"mobile": this.fetchStudentDetails(admissionData.fieldItems, 'CONTACT_MOBILE'),
|
377
|
+
"email": this.fetchStudentDetails(admissionData.fieldItems, 'CONTACT_EMAIL'),
|
357
378
|
"feeConfig": admissionData.studentFeeStructureV2.feeConfig,
|
358
379
|
"preAdmissionId": admissionData.id,
|
359
380
|
"selectedStopDetail": admissionData.selectedStopDetail,
|
@@ -364,8 +385,8 @@ export class RegistrationFormComponent extends BaseSection {
|
|
364
385
|
});
|
365
386
|
});
|
366
387
|
}
|
367
|
-
fetchStudentDetails(getType) {
|
368
|
-
const element =
|
388
|
+
fetchStudentDetails(array, getType) {
|
389
|
+
const element = array.find((el) => el.type === getType);
|
369
390
|
if (element) {
|
370
391
|
return element.fieldValue;
|
371
392
|
}
|
@@ -808,4 +829,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
808
829
|
}], nextComponentColor: [{
|
809
830
|
type: Input
|
810
831
|
}] } });
|
811
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9yZWdpc3RyYXRpb24tZm9ybS9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3JlZ2lzdHJhdGlvbi1mb3JtL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUcsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVy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QUFXO2dCQUNYLGtCQUFrQix5RkFDbEIsbUJBQW1CLDBHQUNuQixlQUFlLG1GQUNmLHdCQUF3QixzSUFDeEIsbUJBQW1CLG1GQUNuQixjQUFjLGdGQUNkLGdCQUFnQixvRkFDaEIsZUFBZSxnTUFDZixlQUFlLCt0QkFDZixXQUFXLDBwQ0FDWCxhQUFhLG9MQUNiLGNBQWM7OzRGQUtMLHlCQUF5QjtrQkExQnJDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZix3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsY0FBYztxQkFDZjsrTkFLUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRHcmlkTGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2dyaWQtbGlzdCc7XG5pbXBvcnQgeyBTaW1wb0VsZW1lbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvaW5kZXgnO1xuaW1wb3J0IHsgQmFja2dyb3VuZE1vZGVsLCBTdHlsZXNNb2RlbCB9IGZyb20gJy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xuaW1wb3J0IHsgIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uL0Jhc2VTZWN0aW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgSW1hZ2VVcGxhb2RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBSZWdpc3RyYXRpb25Gb3JtQ29udGVudE1vZGVsLCBSZWdpc3RyYXRpb25Gb3JtTW9kZWwgfSBmcm9tICcuL3JlZ2lzdHJhdGlvbkZvcm0ubW9kZWwnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLXJlZ2lzdHJhdGlvbi1mb3JtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRHcmlkTGlzdE1vZHVsZSxcbiAgICBTaW1wb0VsZW1lbnRzTW9kdWxlLFxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAvL2RpcmVjdGl2ZVxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxuICAgIEJvcmRlckRpcmVjdGl2ZSxcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcbiAgICBIb3ZlckRpcmVjdGl2ZSxcbiAgICBPdmVybGF5RGlyZWN0aXZlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRSYWRpb01vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgUmVnaXN0cmF0aW9uRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3l7XG4gIEBJbnB1dCgpIGRhdGE/OiBSZWdpc3RyYXRpb25Gb3JtTW9kZWw7XG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuO1xuICBASW5wdXQoKSBuZXh0Q29tcG9uZW50Q29sb3I/OiBCYWNrZ3JvdW5kTW9kZWw7XG4gIGNvbnRlbnQ6IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwgfCB1bmRlZmluZWQ7XG4gIHN0eWxlczogU3R5bGVzTW9kZWwgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHJpdmF0ZSBfZXZlbnRTZXJ2aWNlIDogRXZlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogQWN0aXZhdGVkUm91dGUsXG4gICAgcHVibGljIGRzOiBEb21TYW5pdGl6ZXIsXG4gICAgcHVibGljIGltYWdlVXBsb2FkU2VydmljZTogSW1hZ2VVcGxhb2RTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBPYmplY3QgPSBPYmplY3Q7XG4gIHBheWxvYWQ6IGFueSA9IHtcbiAgICBcImJ1c2luZXNzRGV0YWlsc1wiOiB7XG4gICAgICBcImlkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcbiAgICAgIFwibmFtZVwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJOYW1lXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NOYW1lXCIpXG4gICAgfSxcbiAgICBcImZpZWxkSXRlbXNcIjogW10sXG4gICAgXCJpbWdVcmxcIjogJycsXG4gICAgJ2RvY3VtZW50cyc6IFtdLFxuICAgIFwicGFyZW50QXV0aG9yaXphdGlvblwiOiBmYWxzZSxcbiAgICBcImJhY2t1cERvY1wiIDogJycsXG4gICAgXCJwYXltZW50UGxhblR5cGVcIiA6ICdBTk5VQUxMWScsXG4gICAgXCJzdWJzY3JpcHRpb25QbGFuc1wiOiBbXSxcbiAgICBcImFkbWlzc2lvblBheW1lbnREZXRhaWxcIjoge1xuICAgICAgXCJhbW91bnRcIjogMCxcbiAgICAgIFwicGF5bWVudERhdGVcIjogbmV3IERhdGUoKSxcbiAgICAgIFwicGF5bWVudFN0YXR1c1wiOiBcIlBFTkRJTkdcIixcbiAgICAgIFwiZmFpbGVkUmVhc29uXCI6IFwiXCIsXG4gICAgICBcInBheW1lbnRMaW5rXCI6IFwiXCIsXG4gICAgICBcIm9mZmxpbmVQYXltZW50TW9kZVwiOiBudWxsLFxuICAgICAgXCJjaGVxdWVJc3N1ZWRCeVwiOiBcIlwiLFxuICAgICAgXCJhY2NvdW50TnVtYmVyXCI6IFwiXCIsXG4gICAgICBcImNoZXF1ZUJhbmtcIjogXCJcIixcbiAgICAgIFwicmVtYXJrc1wiOiBcIlwiLFxuICAgICAgXCJyZWZlcmVuY2VOdW1iZXJcIjogXCJcIixcbiAgICAgIFwib2ZmbGluZVBheW1lbnRcIjogZmFsc2UsXG4gICAgICBcImF0dGFjaGVtZW50VXJsXCI6IFwiXCJcbiAgICB9XG4gIH1cblxuICBzZWxlY3RlZEtleTogYW55O1xuICBmaWVsZERhdGE6IGFueSA9IHt9XG4gIGJ1c2luZXNzSWQ6IGFueSA9ICcxZWZkZDNmMC1mYzkzLTY2OGYtYjZkMC1mZDYwYTI1NDI0NjMnO1xuICBzZWxlY3RlZEdyYWRlSWQ6IGFueTtcbiAgc2VsZWN0ZWRBY2FkZW1pY1llYXI6IGFueTtcbiAgZG9jdW1lbnRMaXN0OiBhbnlbXSA9IFtdO1xuICBmb3JtU3RhdHVzOiBzdHJpbmcgPSAnJ1xuICBzdHVkZW50TGl2ZVdpdGg6IGFueSA9ICcnXG4gIGJhY2t1cERvY0ZpbGU/OiBGaWxlO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucm91dGVyLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW06IGFueSkgPT4ge1xuICAgICAgaWYocGFyYW1bJ2VJZCddKVxuICAgICAgICB0aGlzLnBheWxvYWRbJ2VucXVpcnlJZCddID0gcGFyYW1bJ2VJZCddO1xuXG4gICAgICBpZihwYXJhbVsncklkJ10pXG4gICAgICAgIHRoaXMucGF5bG9hZFsncmVnaXN0cmF0aW9uSWQnXSA9IHBhcmFtWydySWQnXTtcblxuICAgICAgaWYocGFyYW1bJ2JJZCddKVxuICAgICAgICB0aGlzLmJ1c2luZXNzSWQgPSBwYXJhbVsnYklkJ107XG5cbiAgICAgIGlmKHBhcmFtWyd0SWQnXSlcbiAgICAgICAgdGhpcy5wYXlsb2FkWyd0ZW1wbGF0ZUlkJ10gPSBwYXJhbVsndElkJ107XG5cbiAgICAgIHRoaXMucGF5bG9hZC5idXNpbmVzc0RldGFpbHMuaWQgPSB0aGlzLmJ1c2luZXNzSWQ7XG5cbiAgICAgIGlmKHRoaXMucGF5bG9hZFsncmVnaXN0cmF0aW9uSWQnXSB8fCB0aGlzLnBheWxvYWRbJ2VucXVpcnlJZCddKSB7XG4gICAgICAgIHRoaXMuZ2V0Rm9ybWRhdGEodGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddIHx8IHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5nZXRBbGxGaWVsZHMoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5nZXRBTExEb2N1bWVudExpc3QoKTtcblxuICAgIH0pXG5cbiAgICAvLyB0aGlzLmJ1c2luZXNzSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIik7XG5cbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZm9ybUZpZWxkQ2hhbmdlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0Rm9ybWRhdGEoYWRtaXNzaW9uSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHNlcnZlckNhbGwgPSBmb3JrSm9pbih7XG4gICAgICBhZG1pc3Npb25EYXRhOiB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyB0aGlzLnJlc3RTZXJ2aWNlLmdldExlYWRCeUlkKGFkbWlzc2lvbklkKSA6IHRoaXMucmVzdFNlcnZpY2UuZ2V0UmVnaXN0cmF0aW9uTGlzdCh7aWQ6IGFkbWlzc2lvbklkLCBwYWdlTm86IDAsIHBhZ2VTaXplOiAxfSksXG4gICAgICBmaWVsZERhdGE6IHRoaXMucmVzdFNlcnZpY2UuZ2V0U2VsZWN0ZWRMaXN0RmllbGRzKHRoaXMuYnVzaW5lc3NJZCwgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJywgIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/ICdSRUdJU1RSQVRJT04nIDogJ0FETUlTU0lPTicpXG4gICAgfSlcblxuXG4gICAgc2VydmVyQ2FsbC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICBsZXQgYWRtaXNzaW9uRGF0YSA9IHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IHJlc3VsdC5hZG1pc3Npb25EYXRhLmRhdGEgOiByZXN1bHQuYWRtaXNzaW9uRGF0YS5kYXRhLmRhdGFbMF07XG4gICAgICBsZXQgZmllbGREYXRhID0gcmVzdWx0LmZpZWxkRGF0YS5kYXRhO1xuICAgICAgZmllbGREYXRhPy5kYXRhLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICAgIGlmICgoZWxlbWVudC5maWVsZExhYmVsKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdwYXNzcG9ydCcpICYmIGVsZW1lbnQuZGF0YVR5cGUgIT0gJ1JBRElPQlVUVE9OJykge1xuICAgICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZWxlbWVudC5pc0Rpc3BsYXkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZm9ybVN0YXR1cyA9IGFkbWlzc2lvbkRhdGEuc3RhdHVzXG5cbiAgICAgIC8vIHRoaXMucGF5bG9hZCA9IGFkbWlzc2lvbkRhdGE7XG4gICAgICB0aGlzLnBheWxvYWRbJ2RvY3VtZW50cyddID0gW107XG4gICAgICB0aGlzLnBheWxvYWQuYnVzaW5lc3NEZXRhaWxzLmlkID0gdGhpcy5idXNpbmVzc0lkO1xuICAgICAgdGhpcy5wYXlsb2FkLmltZ1VybCA9IGFkbWlzc2lvbkRhdGEuaW1nVXJsXG5cbiAgICAgIGFkbWlzc2lvbkRhdGFbJ2ZpZWxkTWFwJ10gPSB7fTtcbiAgICAgIGZvcihsZXQgZmllbGRJdGVtIG9mIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IChhZG1pc3Npb25EYXRhPy5maWVsZERhdGEgfHwgW10pIDogKGFkbWlzc2lvbkRhdGE/LmZpZWxkSXRlbXMgfHwgW10pKSB7XG4gICAgICAgIGlmKGZpZWxkSXRlbS5maWVsZE5hbWUgPT09ICdBY2FkZW1pYyBZZWFyJykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgPSBmaWVsZEl0ZW0uZmllbGRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZihmaWVsZEl0ZW0udHlwZSA9PT0gJ0ZBVEhFUl9JTUFHRScgfHwgZmllbGRJdGVtLnR5cGUgPT09ICdNT1RIRVJfSU1BR0UnIHx8IGZpZWxkSXRlbS50eXBlID09PSAnR1VBUkRJQU5fSU1BR0UnKXtcbiAgICAgICAgICBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2ZpZWxkSXRlbS50eXBlXSA9IGZpZWxkSXRlbS5maWVsZEltYWdlVXJsO1xuICAgICAgICB9XG4gICAgICAgIGlmICggZmllbGRJdGVtLnR5cGUgIT0gbnVsbCAmJiBmaWVsZEl0ZW0udHlwZSAhPT0gJ0ZBVEhFUl9JTUFHRScgJiYgZmllbGRJdGVtLnR5cGUgIT09ICdNT1RIRVJfSU1BR0UnICYmIGZpZWxkSXRlbS50eXBlICE9PSAnR1VBUkRJQU5fSU1BR0UnKSB7XG4gICAgICAgICAgYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZEl0ZW0udHlwZV0gPSBmaWVsZEl0ZW0uZmllbGRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaWQgPSBmaWVsZEl0ZW0uZmllbGROYW1lICsgZmllbGRJdGVtLmZpZWxkR3JvdXBOYW1lO1xuICAgICAgICBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2lkXSA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZpZWxkRGF0YSA9IHRoaXMucmVzdFNlcnZpY2UuZ2V0RmllbGRzVG9EaXNwbGF5KGZpZWxkRGF0YS5kYXRhKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKVswXVxuXG4gICAgICBmb3IobGV0IHN0ZXAgb2YgdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSkpIHtcbiAgICAgICAgZm9yKGxldCBncm91cCBvZiBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YVtzdGVwXSkpIHtcbiAgICAgICAgICBmb3IobGV0IGZpZWxkIG9mIHRoaXMuZmllbGREYXRhW3N0ZXBdW2dyb3VwXSkge1xuICAgICAgICAgICAgaWYgKGZpZWxkLnR5cGUgIT0gbnVsbCAmJiBmaWVsZC50eXBlICE9PSAnRkFUSEVSX0lNQUdFJyAmJiBmaWVsZC50eXBlICE9PSAnTU9USEVSX0lNQUdFJyAmJiBmaWVsZC50eXBlICE9PSAnR1VBUkRJQU5fSU1BR0UnKSB7XG4gICAgICAgICAgICAgIGZpZWxkLmZpZWxkVmFsdWUgPSBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2ZpZWxkLnR5cGVdO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIGlmKGZpZWxkLnR5cGUgPT09ICdGQVRIRVJfSU1BR0UnIHx8IGZpZWxkLnR5cGUgPT09ICdNT1RIRVJfSU1BR0UnIHx8IGZpZWxkLnR5cGUgPT09ICdHVUFSRElBTl9JTUFHRScpe1xuICAgICAgICAgICAgICBmaWVsZC5maWVsZEltYWdlVXJsID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC50eXBlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC5maWVsZExhYmVsICsgZ3JvdXBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZihmaWVsZD8udHlwZSA9PT0gJ0dSQURFJylcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVHcmFkZShmaWVsZC5zb3VyY2VEYXRhW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXSwgZmllbGQuZmllbGRWYWx1ZSk7XG5cbiAgICAgICAgICAgIGlmKGZpZWxkLnR5cGUgPT09ICdBQ0FERU1JQ19ZRUFSJylcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVBY2FkZW1pY1llYXIoZmllbGQuc291cmNlRGF0YVtmaWVsZC5kYXRhU291cmNlVHlwZV0sIGZpZWxkLmZpZWxkVmFsdWUpXG5cbiAgICAgICAgICAgIGlmKGZpZWxkLmRhdGFUeXBlID09PSAnQ0hFQ0tCT1gnKSB7XG4gICAgICAgICAgICAgIHRoaXMuZm9ybWF0Q2hlY2tCb3hWYWx1ZShmaWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ2V0RmVlU3RydWN0dXJlKCk7XG4gICAgfSlcblxuICB9XG5cbiAgdXBkYXRlR3JhZGUoZ3JhZGVMaXN0IDphbnlbXSwgZ3JhZGVOYW1lOiBhbnkpIHtcbiAgICBmb3IobGV0IGdyYWRlIG9mIGdyYWRlTGlzdCkge1xuICAgICAgaWYoZ3JhZGUubmFtZSA9PT0gZ3JhZGVOYW1lKXtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyYWRlSWQgPSBncmFkZS5pZDtcbiAgICAgICAgdGhpcy5pbnB1dEZpZWxkQ2hhbmdlKHt9LGdyYWRlKVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVBY2FkZW1pY1llYXIoYWNZZWFyTGlzdDphbnlbXSxhY3lOYW1lOiBhbnkpe1xuICAgIGZvciAobGV0IGF5IG9mIGFjWWVhckxpc3QpIHtcbiAgICAgIGlmKGF5Lm5hbWUgPT09IGFjeU5hbWUpe1xuICAgICAgICB0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyID0gYXlcbiAgICAgICAgdGhpcy5pbnB1dEZpZWxkQ2hhbmdlKHt9LGF5KVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIFxuICAgIH0gXG4gIH1cblxuICBmb3JtYXRDaGVja0JveFZhbHVlKGZpZWxkOiBhbnkpIHtcbiAgICBpZihmaWVsZC52YWx1ZSkge1xuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnZhbHVlKSB7XG4gICAgICAgIGlmKGZpZWxkLmZpZWxkVmFsdWU/LmluY2x1ZGVzKGZpZWxkVmFsdWUudmFsdWUpKSB7XG4gICAgICAgICAgZmllbGRWYWx1ZS5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcihsZXQgZmllbGRWYWx1ZSBvZiBmaWVsZC5zb3VyY2VEYXRhPy5bZmllbGQuZGF0YVNvdXJjZVR5cGVdIHx8IFtdKSB7XG4gICAgICAgIGlmKGZpZWxkLmZpZWxkVmFsdWU/LmluY2x1ZGVzKGZpZWxkVmFsdWUubmFtZSkpIHtcbiAgICAgICAgICBmaWVsZFZhbHVlLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBnZXRBbGxGaWVsZHMoKSB7XG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuXG4gICAgICByZXMuZGF0YS5kYXRhLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICAgIGlmICgoZWxlbWVudC5maWVsZExhYmVsKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdwYXNzcG9ydCcpICYmIGVsZW1lbnQuZGF0YVR5cGUgIT0gJ1JBRElPQlVUVE9OJykge1xuICAgICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZWxlbWVudC5pc0Rpc3BsYXkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmVzLmRhdGEuZGF0YS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xuICAgICAgICBpZihlbGVtZW50LmRhdGFTb3VyY2VUeXBlID09PSAnQ09VTlRSWScpe1xuICAgICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjdXJyZW50WWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNvbnN0IG5leHRZZWFyID0gY3VycmVudFllYXIgKyAxO1xuXG4gICAgICByZXMuZGF0YS5kYXRhLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LmRhdGFUeXBlICE9PSAnRFJPUERPV04nKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGVsZW1lbnQudmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICAgIGVsZW1lbnQuZmllbGRWYWx1ZSA9IGVsZW1lbnQudmFsdWVbMF0udmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgc291cmNlTGlzdCA9IGVsZW1lbnQuc291cmNlRGF0YVtlbGVtZW50LmRhdGFTb3VyY2VUeXBlXTtcbiAgICAgICAgICBpZiAoZWxlbWVudC5maWVsZExhYmVsID09PSAnQWNhZGVtaWMgWWVhcicpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc291cmNlTGlzdC5maW5kKChlOmFueSkgPT4gZS5uYW1lID09PSBgJHtjdXJyZW50WWVhcn0tJHtuZXh0WWVhcn1gKTtcbiAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICBlbGVtZW50LmZpZWxkVmFsdWUgPSBtYXRjaC5uYW1lO1xuICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRDaGFuZ2UobWF0Y2gsIGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoc291cmNlTGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBlbGVtZW50LmZpZWxkVmFsdWUgPSBzb3VyY2VMaXN0WzBdLm5hbWU7XG4gICAgICAgICAgICB0aGlzLmlucHV0RmllbGRDaGFuZ2Uoc291cmNlTGlzdFswXSwgZWxlbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmVzLmRhdGEuZGF0YS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xuICAgICAgICBjb25zdCBoYXNTaWJsaW5nc0dyb3VwID0gQXJyYXkuaXNBcnJheShlbGVtZW50LmZpZWxkR3JvdXApICYmIGVsZW1lbnQuZmllbGRHcm91cC5zb21lKFxuICAgICAgICAgIChncm91cDphbnkpID0+IGdyb3VwLmZpZWxkR3JvdXBOYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwic2libGluZ3MgZGV0YWlsc1wiKVxuICAgICAgICApO1xuICAgICAgICBpZiAoaGFzU2libGluZ3NHcm91cCkge1xuICAgICAgICAgIGNvbnN0IGxhYmVsQ2hlY2sgPSBlbGVtZW50LmZpZWxkTGFiZWw/LmluY2x1ZGVzKCcxJyk7XG4gICAgICAgICAgY29uc3QgdmFsdWVDaGVjayA9ICEhZWxlbWVudC5maWVsZFZhbHVlO1xuICAgICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gbGFiZWxDaGVjayB8fCB2YWx1ZUNoZWNrO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmVzLmRhdGEuZGF0YS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xuICAgICAgICBjb25zdCBoYXNTaWJsaW5nc0dyb3VwID0gQXJyYXkuaXNBcnJheShlbGVtZW50LmZpZWxkR3JvdXApICYmIGVsZW1lbnQuZmllbGRHcm91cC5zb21lKFxuICAgICAgICAgIChncm91cDphbnkpID0+IGdyb3VwLmZpZWxkR3JvdXBOYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwicGFzdCBzY2hvb2wgZGV0YWlsc1wiKVxuICAgICAgICApO1xuICAgICAgICBpZiAoaGFzU2libGluZ3NHcm91cCkge1xuICAgICAgICAgIGNvbnN0IGxhYmVsQ2hlY2sgPSBlbGVtZW50LmZpZWxkTGFiZWw/LmluY2x1ZGVzKCcxJyk7XG4gICAgICAgICAgY29uc3QgdmFsdWVDaGVjayA9ICEhZWxlbWVudC5maWVsZFZhbHVlO1xuICAgICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gbGFiZWxDaGVjayB8fCB2YWx1ZUNoZWNrO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5maWVsZERhdGEgPSB0aGlzLnJlc3RTZXJ2aWNlLmdldEZpZWxkc1RvRGlzcGxheShyZXMuZGF0YS5kYXRhKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKVswXTtcbiAgICB9KVxuICB9XG5cbiAgZ2V0QUxMRG9jdW1lbnRMaXN0KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBcImJ1c2luZXNzSWRcIjogdGhpcy5idXNpbmVzc0lkLFxuICAgICAgXCJzb3J0QnlcIjogXCJcIixcbiAgICAgIFwic29ydE9yZGVyXCI6IFwiXCIsXG4gICAgICBcInN0YXR1c1wiOiB0cnVlLFxuICAgICAgXCJpc0RlbGV0ZWRcIjogZmFsc2VcbiAgICB9XG5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbERvY3VtZW50KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZG9jdW1lbnRMaXN0ID0gcmVzLmRhdGEuZGF0YTtcbiAgICB9KVxuICB9XG5cbiAgZm9ybUZpZWxkQ2hhbmdlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBmb3JtRmllbGRDaGFuZ2VkKCkge1xuICAgIHRoaXMuZm9ybUZpZWxkQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5fZXZlbnRTZXJ2aWNlLmZvcm1GaWVsZENoYW5nZWQuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5nZXRBbGxGaWVsZHMoKTtcbiAgICB9KVxuICB9XG5cblxuXG4gIGFzeW5jIHN1Ym1pdEZvcm0oKSB7XG4gICAgdGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMgPSB0aGlzLmNvbnZlcnRUb0xpc3RPZkZpZWxkcygpO1xuICAgIGlmKHRoaXMucGF5bG9hZC5maWVsZEl0ZW1zLmxlbmd0aCA9PSAwKVxuICAgICAgcmV0dXJuO1xuXG4gICAgaWYodGhpcy5maWxlRGF0YSkge1xuICAgICAgbGV0IGltYWdlRGF0YTogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUodGhpcy5maWxlRGF0YSk7XG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gaW1hZ2VEYXRhLnVybCB8fCBpbWFnZURhdGEuX3Jlc3BvbnNlPy5yZXF1ZXN0Py51cmxcbiAgICB9XG5cbiAgICB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyB0aGlzLmNyZWF0ZVJlZ2lzdHJhdGlvbigpIDogdGhpcy5jcmVhdGVBZG1pc3Npb24oKTtcbiAgfVxuXG4gIHJlZ2lzdHJhdGlvblN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgYXN5bmMgY3JlYXRlUmVnaXN0cmF0aW9uKCkge1xuICAgIC8vIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPVJFR0lTVFJBVElPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YCAvL3Byb2R1Y3Rpb25cbiAgICB0aGlzLnBheWxvYWRbJ3JldHVyblVybCddID0gYGh0dHBzOi8vc3RhZ2UtcG9ydGFsLmNtaXMuYWMuaW4vdmVyaWZ5LXBheW1lbnQvP3VybD10cnVlJnR5cGU9UkVHSVNUUkFUSU9OJmJJZD0ke3RoaXMuYnVzaW5lc3NJZH1gIC8vZGV2XG4gICAgLy8gdGhpcy5wYXlsb2FkWydyZXR1cm5VcmwnXSA9IGBodHRwczovL3N0YWdlLmNtaXMudGVqc29mdC5jb20vdmVyaWZ5LXBheW1lbnQvP3VybD10cnVlJnR5cGU9UkVHSVNUUkFUSU9OJmJJZD0ke3RoaXMuYnVzaW5lc3NJZH1gIC8vc3RhZ2VcbiAgICBmb3IobGV0IGluZmllbGREb2N1bWVudCBvZiB0aGlzLnBheWxvYWQuZmllbGRJdGVtcyl7XG4gICAgICBpZihpbmZpZWxkRG9jdW1lbnQuZmllbGRJbWFnZVVybCl7XG4gICAgICAgIGxldCBpbWFnZURhdGEgOiBhbnkgPSBhd2FpdCB0aGlzLmltYWdlVXBsb2FkU2VydmljZS51cGxvYWRGaWxlSW5BenVyZShpbmZpZWxkRG9jdW1lbnQuc2VsZWN0ZWRJbWFnZURhdGEpO1xuICAgICAgICBpbmZpZWxkRG9jdW1lbnQuZmllbGRJbWFnZVVybCA9IGltYWdlRGF0YS51cmwgfHwgaW1hZ2VEYXRhLl9yZXNwb25zZT8ucmVxdWVzdD8udXJsO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJlZ2lzdHJhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucmVzdFNlcnZpY2UuY3JlYXRlUmVnaXN0cmF0aW9uRm9yUGF5bWVudCh0aGlzLnBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIC8vIHRoaXMuc25hY2tCYXIub3BlbignUmVnaXN0cmF0aW9uIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5JywgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSk7XG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHtyZXNwb25zZTogcmVzLCBwYXltZW50VHlwZTonUkVHSVNUUkFUSU9OJ30pO1xuICAgIH0pXG4gIH1cblxuICBhc3luYyBjcmVhdGVBZG1pc3Npb24oKSB7XG4gICAgLy8gaWYodGhpcy5wYXlsb2FkLnBheW1lbnRQbGFuVHlwZSA9PT0gJ1RFUk0nICYmICh0aGlzLnBheWxvYWQ/LnN0dWRlbnRGZWVTdHJ1Y3R1cmU/LnRlcm1QYXltZW50TGlzdD8ubGVuZ3RoIHx8IDApID09IDApe1xuICAgIC8vICAgdGhpcy5zbmFja0Jhci5vcGVuKCdQbGVhc2Ugc2VsZWN0IHRlcm0nKTtcbiAgICAvLyAgIHJldHVybjtcbiAgICAvLyB9XG5cbiAgICAvLyB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZVsncGF5bWVudFBsYW5UeXBlJ10gPSB0aGlzLnBheWxvYWQucGF5bWVudFBsYW5UeXBlO1xuICAgIC8vIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPUFETUlTU0lPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YDsgLy9wcm9kdWN0aW9uXG4gICAgdGhpcy5wYXlsb2FkWydyZXR1cm5VcmwnXSA9IGBodHRwczovL2Rldi5jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPUFETUlTU0lPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YDsgLy9kZXZcbiAgICAvLyB0aGlzLnBheWxvYWRbJ3JldHVyblVybCddID0gYGh0dHBzOi8vc3RhZ2UuY21pcy50ZWpzb2Z0LmNvbS92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1BRE1JU1NJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWA7IC8vc3RhZ2VcblxuICAgIGlmKHRoaXMuYmFja3VwRG9jRmlsZSkge1xuICAgICAgbGV0IGltYWdlRGF0YTogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUodGhpcy5iYWNrdXBEb2NGaWxlKTtcbiAgICAgIC8vIHRoaXMucGF5bG9hZC5iYWNrdXBEb2MgPSBpbWFnZURhdGEudXJsXG4gICAgICB0aGlzLnBheWxvYWQuYmFja3VwRG9jID0gaW1hZ2VEYXRhLnVybCB8fCBpbWFnZURhdGEuX3Jlc3BvbnNlPy5yZXF1ZXN0Py51cmw7XG4gICAgfVxuXG4gICAgZm9yKGxldCBkb2N1bWVudCBvZiB0aGlzLmRvY3VtZW50TGlzdCkge1xuICAgICAgaWYoZG9jdW1lbnQuZmlsZSkge1xuICAgICAgICBsZXQgaW1hZ2VEYXRhOiBhbnkgPSBhd2FpdCB0aGlzLmltYWdlVXBsb2FkU2VydmljZS51cGxvYWRGaWxlSW5BenVyZShkb2N1bWVudC5maWxlKTtcblxuICAgICAgICB0aGlzLnBheWxvYWRbJ2RvY3VtZW50cyddLnB1c2goXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogZG9jdW1lbnQuZGlzcGxheVRleHQsXG4gICAgICAgICAgICB1cmw6IGltYWdlRGF0YS51cmwgfHwgaW1hZ2VEYXRhLl9yZXNwb25zZT8ucmVxdWVzdD8udXJsLFxuICAgICAgICAgICAgZG9jVHlwZTogZG9jdW1lbnQubmFtZSxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRUeXBlOiBkb2N1bWVudC50eXBlXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yKGxldCBpbmZpZWxkRG9jdW1lbnQgb2YgdGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMpe1xuICAgICAgaWYoaW5maWVsZERvY3VtZW50LmZpZWxkSW1hZ2VVcmwpe1xuICAgICAgICBpZighaW5maWVsZERvY3VtZW50LmZpZWxkSW1hZ2VVcmwuaW5jbHVkZXMoJ2h0dHBzOicpKXtcbiAgICAgICAgICBsZXQgaW1hZ2VEYXRhIDogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUoaW5maWVsZERvY3VtZW50LnNlbGVjdGVkSW1hZ2VEYXRhKTtcbiAgICAgICAgICBpbmZpZWxkRG9jdW1lbnQuZmllbGRJbWFnZVVybCA9IGltYWdlRGF0YS51cmwgfHwgaW1hZ2VEYXRhLl9yZXNwb25zZT8ucmVxdWVzdD8udXJsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMucGF5bG9hZClcbiAgICB0aGlzLnBheWxvYWQuYWRtaXNzaW9uUGF5bWVudERldGFpbC5hbW91bnQgPSB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZVYyLnRvdGFsRmVlO1xuICAgIHRoaXMucmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5yZXN0U2VydmljZS5jcmVhdGVBZG1pc3Npb24odGhpcy5wYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAvLyB0aGlzLnNuYWNrQmFyLm9wZW4oJ0FkbWlzc2lvbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseScsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xuICAgICAgbGV0IGFkbWlzc2lvbkRhdGEgPSByZXMuZGF0YVxuICAgICAgbGV0IHBheWxvYWQgPSB7XG4gICAgICAgIFwibWFpbFBheW1lbnRMaW5rXCI6d2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAgIFwiZmVlU3VtbWFyeUlkXCI6IGFkbWlzc2lvbkRhdGEuaWQsXG4gICAgICAgIFwibmFtZVwiOiB0aGlzLmZldGNoU3R1ZGVudERldGFpbHMoJ1NUVURFTlRfTkFNRScpLFxuICAgICAgICBcImFtb3VudFwiOiBhZG1pc3Npb25EYXRhLnN0dWRlbnRGZWVTdHJ1Y3R1cmVWMi50b3RhbEZlZSxcbiAgICAgICAgXCJtb2JpbGVcIjogdGhpcy5mZXRjaFN0dWRlbnREZXRhaWxzKCdDT05UQUNUX01PQklMRScpLFxuICAgICAgICBcImVtYWlsXCI6IHRoaXMuZmV0Y2hTdHVkZW50RGV0YWlscygnQ09OVEFDVF9FTUFJTCcpLFxuICAgICAgICBcImZlZUNvbmZpZ1wiOiBhZG1pc3Npb25EYXRhLnN0dWRlbnRGZWVTdHJ1Y3R1cmVWMi5mZWVDb25maWcsXG4gICAgICAgIFwicHJlQWRtaXNzaW9uSWRcIjphZG1pc3Npb25EYXRhLmlkLFxuICAgICAgICBcInNlbGVjdGVkU3RvcERldGFpbFwiOmFkbWlzc2lvbkRhdGEuc2VsZWN0ZWRTdG9wRGV0YWlsLFxuICAgICAgICBcInN1YnNjcmlwdGlvblBsYW5zXCI6YWRtaXNzaW9uRGF0YS5zdWJzY3JpcHRpb25QbGFuc1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmNyZWF0ZVBheW1lbnRMaW5rKHBheWxvYWQpLnN1YnNjcmliZShcbiAgICAgICAgKHJlczphbnkpID0+IHtcbiAgICAgICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHtyZXNwb25zZTogcmVzLCBwYXltZW50VHlwZTonQURNSVNTSU9OJ30pO1xuICAgICAgICB9XG4gICAgICApXG4gICAgfSlcbiAgfVxuXG4gIGZldGNoU3R1ZGVudERldGFpbHMoZ2V0VHlwZTogYW55KSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZmllbGREYXRhLmZpZWxkSXRlbXMuZmluZCgoZWw6YW55KSA9PiBlbC50eXBlID09PSBnZXRUeXBlKTtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZmllbGRWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29udmVydFRvTGlzdE9mRmllbGRzKCkge1xuICAgIGxldCBmaWVsZExpc3Q6IGFueVtdID0gW107XG5cbiAgICBmb3IobGV0IHN0ZXAgb2YgdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSkpIHtcbiAgICAgIGZvcihsZXQgZ3JvdXAgb2YgT2JqZWN0LmtleXModGhpcy5maWVsZERhdGFbc3RlcF0pKSB7XG5cbiAgICAgICAgaWYoZ3JvdXAgPT0gJ0JhY2t1cCBDb250YWN0JyAmJiB0aGlzLnN0dWRlbnRMaXZlV2l0aCAhPSAnc2luZ2xlIHBhcmVudCcpXG4gICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgZm9yKGxldCBmaWVsZCBvZiB0aGlzLmZpZWxkRGF0YVtzdGVwXVtncm91cF0pIHtcbiAgICAgICAgICBpZihmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuZmllbGRWYWx1ZSAmJiBmaWVsZC5kYXRhVHlwZSAhPSAnQ0hFQ0tCT1gnICYmICFmaWVsZC5maWVsZEltYWdlVXJsKSB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYFBsZWFzZSBlbnRlciAke2ZpZWxkLmZpZWxkTGFiZWx9YCwgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGNoZWNrQm94VmFsdWU6IGFueVtdID0gW107XG4gICAgICAgICAgaWYoZmllbGQuZGF0YVR5cGUgPT09ICdDSEVDS0JPWCcpIHtcbiAgICAgICAgICAgIGNoZWNrQm94VmFsdWUgPSB0aGlzLmdldENoZWNrQm94VmFsdWUoZmllbGQpO1xuXG4gICAgICAgICAgICBpZihjaGVja0JveFZhbHVlLmxlbmd0aCAgPT0gMCAmJiBmaWVsZC5yZXF1aXJlZCl7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgUGxlYXNlIGVudGVyICR7ZmllbGQuZmllbGRMYWJlbH1gLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpZWxkTGlzdC5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkSWQ6IGZpZWxkLmZpZWxkSWQsXG4gICAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkLmZpZWxkTGFiZWwsXG4gICAgICAgICAgICBmaWVsZFZhbHVlOiBmaWVsZC5kYXRhVHlwZSAhPT0gJ0NIRUNLQk9YJyA/IGZpZWxkLmZpZWxkVmFsdWUgOiBjaGVja0JveFZhbHVlLFxuICAgICAgICAgICAgZmllbGRHcm91cElkOiBmaWVsZC5maWVsZEdyb3VwSWQsXG4gICAgICAgICAgICBmaWVsZEdyb3VwTmFtZTogZ3JvdXAsXG4gICAgICAgICAgICBmaWVsZFN0ZXBJZDogZmllbGQuZmllbGRTdGVwSWQsXG4gICAgICAgICAgICBmaWVsZFN0ZXBOYW1lOiBzdGVwLFxuICAgICAgICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgICAgIGZpZWxkSW1hZ2VVcmwgOiBmaWVsZC5maWVsZEltYWdlVXJsLFxuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZURhdGEgOiBmaWVsZC5zZWxlY3RlZEltYWdlRGF0YSxcbiAgICAgICAgICAgIGRhdGFUeXBlOiBmaWVsZD8uZGF0YVR5cGVcbiAgICAgICAgICB9KVxuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmllbGRMaXN0O1xuICB9XG5cbiAgZ2V0Q2hlY2tCb3hWYWx1ZShmaWVsZDogYW55KSB7XG4gICAgbGV0IHJlc3BvbnNlOiBhbnlbXSA9IFtdO1xuXG4gICAgaWYoZmllbGQudmFsdWUpIHtcbiAgICAgIGZvcihsZXQgZmllbGRWYWx1ZSBvZiBmaWVsZC52YWx1ZSkge1xuICAgICAgICBpZihmaWVsZFZhbHVlLmNoZWNrZWQpIHtcbiAgICAgICAgICByZXNwb25zZS5wdXNoKGZpZWxkVmFsdWUudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcihsZXQgZmllbGRWYWx1ZSBvZiBmaWVsZC5zb3VyY2VEYXRhPy5bZmllbGQuZGF0YVNvdXJjZVR5cGVdIHx8IFtdKSB7XG4gICAgICAgIGlmKGZpZWxkVmFsdWUuY2hlY2tlZCkge1xuICAgICAgICAgIHJlc3BvbnNlLnB1c2goZmllbGRWYWx1ZS5uYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIGZpbGVEYXRhPzogRmlsZTtcbiAgdXBkYXRlQWRtaXNzaW9uSW1hZ2UoZXY6IGFueSkge1xuICAgIGxldCBmaWxlSW5wdXQgOiBhbnkgPSBldi50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLmZpbGVEYXRhID0gZmlsZUlucHV0LmZpbGVzWzBdO1xuXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5vbmxvYWQgPSAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgdGhpcy5wYXlsb2FkLmltZ1VybCA9IHJlc3BvbnNlLnRhcmdldC5yZXN1bHQ7XG4gICAgfVxuXG4gICAgdGhpcy5maWxlRGF0YSA/IHJlYWRlci5yZWFkQXNEYXRhVVJMKHRoaXMuZmlsZURhdGEpIDogbnVsbDtcblxuICAgIGZpbGVJbnB1dC52YWx1ZSA9ICcnXG4gIH1cblxuICBkZWxldGVJbWcoKSB7XG4gICAgdGhpcy5wYXlsb2FkLmltZ1VybCA9ICcnO1xuICAgIHRoaXMuZmlsZURhdGEgPSB1bmRlZmluZWQ7XG4gIH0gIHJlZGlyZWN0VG9QYXltZW50KCkge1xuICAgIGlmKCEodGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciAmJiAgdGhpcy5zZWxlY3RlZEdyYWRlSWQpKXtcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignU2VsZWN0ZWQgR3JhZGUgYW5kIEFjYWRlbWljIFllYXIgZmlyc3QnLCdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSAnUGF5bWVudCdcbiAgfVxuXG4gIGNvbnRpbnVlQWRtaXNzaW9uKCkge1xuICAgIGxldCBzdGVwcyA9IE9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKTtcbiAgICBsZXQgaW5kZXggPSBzdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRLZXkpO1xuXG4gICAgaWYodGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nICYmIHRoaXMuc2VsZWN0ZWRLZXkgPT09ICdEb2N1bWVudCcgJiYgISh0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyICYmICB0aGlzLnNlbGVjdGVkR3JhZGVJZCkpIHtcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignU2VsZWN0ZWQgR3JhZGUgYW5kIEFjYWRlbWljIFllYXIgZmlyc3QnLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmKHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJylcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSBpbmRleCA9PT0gc3RlcHMubGVuZ3RoIC0gMSA/ICdEb2N1bWVudCcgOiB0aGlzLnNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnID8gJ1BheW1lbnQnIDogc3RlcHNbaW5kZXggKyAxXTtcbiAgICBlbHNlXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gc3RlcHNbaW5kZXggKyAxXVxuICB9XG5cbiAgc3Vic2NyaXB0aW9uc0RhdGE6IGFueVtdID0gW11cbiAgdGVybVBheW1lbnRMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIGdldEZlZVN0cnVjdHVyZSgpIHtcbiAgICBpZighdGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciB8fCAhdGhpcy5zZWxlY3RlZEdyYWRlSWQpXG4gICAgICByZXR1cm47XG4gICAgXG4gICAgbGV0IHBheWxvYWQgPSB7XG4gICAgICAvLyBcImJ1c2luZXNzSWRcIjogdGhpcy5idXNpbmVzc0lkLFxuICAgICAgLy8gXCJzdGFydFllYXJcIjogTnVtYmVyKHllYXJbMF0pLFxuICAgICAgLy8gXCJlbmRZZWFyXCI6IE51bWJlcih5ZWFyWzFdKSxcbiAgICAgIC8vIFwicGFnZU5vXCI6IDAsXG4gICAgICAvLyBcInNpemVcIjogMSxcbiAgICAgIC8vIFwiZ3JhZGVJZHNcIjogW3RoaXMuc2VsZWN0ZWRHcmFkZUlkXSxcbiAgICAgIC8vIFwic2VhcmNoVGV4dFwiOiBcIlwiXG4gICAgICBhY2FkZW1pY1llYXJJZCA6IFt0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyLmlkXSxcbiAgICAgIGJ1c2luZXNzSWQgOiB0aGlzLmJ1c2luZXNzSWQsXG4gICAgICBncmFkZUlkcyA6IFt0aGlzLnNlbGVjdGVkR3JhZGVJZF0sXG4gICAgICBwYWdlTm8gOiAwLFxuICAgICAgcGFnZVNpemUgOiAxMDAwLFxuICAgICAgc2VhcmNoVGV4dCA6IFwiXCJcbiAgICB9XG5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLm5ld0ZlZVN0cnVjdHVyZUdldExpc3QocGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmVWMiA9IHJlcy5kYXRhLmRhdGFbMF07XG4gICAgICB0aGlzLmdldEFsbFN1YmNyaXB0aW9uKCk7XG4gICAgICAvLyB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZSA9IHJlcy5kYXRhLmRhdGFbMF07XG4gICAgICAvLyB0aGlzLnN1YnNjcmlwdGlvbnNEYXRhID0gIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUuc3Vic2NyaXB0aW9uUGxhbnMpKTtcbiAgICAgIC8vIHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlLnN1YnNjcmlwdGlvblBsYW5zID0gW107XG4gICAgICAvLyB0aGlzLnRlcm1QYXltZW50TGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmU/LnRlcm1QYXltZW50TGlzdCB8fCAnJykpO1xuICAgICAgLy8gdGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUudGVybVBheW1lbnRMaXN0ID0gW107XG4gICAgfSlcbiAgfVxuXG4gIGdldEFsbFN1YmNyaXB0aW9uKCl7XG4gICAgY29uc3Qgc2VydmVyQ2FsbCA9IGZvcmtKb2luKHtcbiAgICAgIGFsbFN1YnNjcmlwdGlvbnMgOiB0aGlzLnJlc3RTZXJ2aWNlLmdldEFjdGl2ZVN1YnNjcmlwdGlvbkZvckZlZVN0cnVjdHVyZSh0aGlzLmJ1c2luZXNzSWQsdGhpcy5zZWxlY3RlZEdyYWRlSWQpXG4gICAgfSlcbiAgICBzZXJ2ZXJDYWxsLnN1YnNjcmliZSgocmVzOmFueSk9PntcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc0RhdGEgPSByZXMuYWxsU3Vic2NyaXB0aW9ucy5kYXRhLmRhdGFcbiAgICAgIHJlcy5hbGxTdWJzY3JpcHRpb25zLmRhdGEuZGF0YS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xuICAgICAgICBpZiAoIWVsZW1lbnQubmV3UHJpY2luZ0xpc3QpIHtcbiAgICAgICAgICBlbGVtZW50Lm5ld1ByaWNpbmdMaXN0ID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3Qua2V5cyhlbGVtZW50LnByaWNpbmcpLmZvckVhY2goKHByaWNlOiBhbnkpID0+IHtcbiAgICAgICAgICBlbGVtZW50Lm5ld1ByaWNpbmdMaXN0LnB1c2goe1xuICAgICAgICAgICAgbmFtZTogcHJpY2UsXG4gICAgICAgICAgICBhbW91bnQ6IGVsZW1lbnQucHJpY2luZ1twcmljZV0sXG4gICAgICAgICAgICBzZWxlY3RlU3RhdHVzOiBmYWxzZSxcbiAgICAgICAgICAgIHBhaWQ6ZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KVxuICB9XG5cbiAgaW5wdXRGaWVsZENoYW5nZShpdGVtOiBhbnksIGZpZWxkOiBhbnkpIHtcbiAgICBpZihmaWVsZC5maWVsZExhYmVsID09PSAnQWNhZGVtaWMgWWVhcicpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgPSBpdGVtO1xuICAgICAgdGhpcy5nZXRGZWVTdHJ1Y3R1cmUoKTtcbiAgICB9XG4gICAgaWYoZmllbGQuZmllbGRMYWJlbCA9PT0gJ0dyYWRlJykge1xuICAgICAgdGhpcy5zZWxlY3RlZEdyYWRlSWQgPSBpdGVtLmlkO1xuICAgICAgdGhpcy5nZXRGZWVTdHJ1Y3R1cmUoKTtcbiAgICB9XG4gIH1cblxuICBtYXN0ZXJEcm9wZG93blZhbHVlQ2hhbmdlKGl0ZW06IGFueSwgZmllbGQ6IGFueSkge1xuICAgIGlmKGZpZWxkLmZpZWxkTGFiZWwgPT09ICdTdHVkZW50IGxpdmUgd2l0aCcpIHtcbiAgICAgIHRoaXMuc3R1ZGVudExpdmVXaXRoID0gaXRlbS52YWx1ZVxuICAgIH1cbiAgICBpZihmaWVsZC50eXBlID09PSAnTkFUSU9OQUxJVFknKXtcbiAgICAgIGlmKGZpZWxkLmZpZWxkVmFsdWUgPT09ICdOUkknKXtcbiAgICAgICAgdGhpcy5maWVsZERhdGFbJ1N0dWRlbnQgRGV0YWlscyddWydJZGVudGl0eSBpbmZvcm1hdGlvbiddLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICAgICAgaWYoZWxlbWVudC5kYXRhU291cmNlVHlwZSA9PT0gJ0NPVU5UUlknKXtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYoZmllbGQuZmllbGRWYWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdpbmRpYW4nKSl7XG4gICAgICAgIHRoaXMuZmllbGREYXRhWydTdHVkZW50IERldGFpbHMnXVsnSWRlbnRpdHkgaW5mb3JtYXRpb24nXS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xuICAgICAgICAgIGlmKGVsZW1lbnQuZGF0YVNvdXJjZVR5cGUgPT09ICdDT1VOVFJZJyl7XG4gICAgICAgICAgICBlbGVtZW50LmlzRGlzcGxheSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBsb2FkQmFja1VwRG9jdW1lbnQoZXY6IGFueSkge1xuICAgIHRoaXMuYmFja3VwRG9jRmlsZSA9IGV2LnNyY0VsZW1lbnQuZmlsZXNbMF07XG4gIH1cblxuXG4gIGFycmFuZ2VTdWJzY3JpcHRpb25Gb3JBZG1pc3Npb24oc3Vic2NyaXB0aW9uTGlzdDogYW55W10pIHtcbiAgICBsZXQgcmVzcG9uc2U6IGFueSA9IHt9O1xuXG4gICAgZm9yKGxldCBzdWJzY3JpcHRpb24gb2Ygc3Vic2NyaXB0aW9uTGlzdCkge1xuICAgICAgaWYoIXJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXSkge1xuICAgICAgICByZXNwb25zZVtzdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uVHlwZV0gPSBbXTtcbiAgICAgIH1cbiAgICAgIHJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXS5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgYXJyYW5nZUZlZUNvbmZpZyhmZWVDb25maWdMaXN0OiBhbnlbXSkge1xuICAgIGxldCByZXNwb25zZTogYW55ID0ge307XG5cbiAgICBmb3IobGV0IGNvbmZpZyBvZiBmZWVDb25maWdMaXN0KSB7XG4gICAgICBpZighcmVzcG9uc2VbY29uZmlnLmZlZVR5cGVdKVxuICAgICAgICByZXNwb25zZVtjb25maWcuZmVlVHlwZV0gPSBbXTtcblxuICAgICAgcmVzcG9uc2VbY29uZmlnLmZlZVR5cGVdLnB1c2goY29uZmlnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBnZXRNYXhEYXRlKGl0ZW06YW55KSB7XG4gICAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSAoaXRlbS5maWVsZExhYmVsIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBmaWVsZEdyb3VwTmFtZSA9IChpdGVtLmZpZWxkR3JvdXAgfHwgW10pLmZsYXRNYXAoKGc6YW55KSA9PiBbXG4gICAgICAoZy5maWVsZEdyb3VwTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSxcbiAgICAgIChnLmZpZWxkU3RlcE5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKClcbiAgICBdKTtcbiAgXG4gICAgaWYgKGZvcm1hdHRlZExhYmVsLmluY2x1ZGVzKCdkb2InKSkge1xuICAgICAgY29uc3QgdGVtcERhdGUgPSBuZXcgRGF0ZSgpO1xuICBcbiAgICAgIGlmIChmaWVsZEdyb3VwTmFtZS5zb21lKChuYW1lOmFueSkgPT4gbmFtZS5pbmNsdWRlcygnc3R1ZGVudCcpKSkge1xuICAgICAgICB0ZW1wRGF0ZS5zZXRGdWxsWWVhcih0ZW1wRGF0ZS5nZXRGdWxsWWVhcigpIC0gMyk7XG4gICAgICAgIHJldHVybiB0ZW1wRGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gICAgICB9XG4gIFxuICAgICAgaWYgKGZpZWxkR3JvdXBOYW1lLnNvbWUoKG5hbWU6YW55KSA9PiBuYW1lLmluY2x1ZGVzKCdtb3RoZXInKSkpIHtcbiAgICAgICAgdGVtcERhdGUuc2V0RnVsbFllYXIodGVtcERhdGUuZ2V0RnVsbFllYXIoKSAtIDE4KTtcbiAgICAgICAgcmV0dXJuIHRlbXBEYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgIH1cbiAgXG4gICAgICBpZiAoZmllbGRHcm91cE5hbWUuc29tZSgobmFtZTphbnkpID0+IG5hbWUuaW5jbHVkZXMoJ2ZhdGhlcicpIHx8IG5hbWUuaW5jbHVkZXMoJ2d1YXJkaWFuJykpKSB7XG4gICAgICAgIHRlbXBEYXRlLnNldEZ1bGxZZWFyKHRlbXBEYXRlLmdldEZ1bGxZZWFyKCkgLSAyMSk7XG4gICAgICAgIHJldHVybiB0ZW1wRGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gICAgICB9XG4gICAgfVxuICBcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJhZGlvQnV0dG9uQ2hhbmdlZChpdGVtOiBhbnksIHNlbGVjdGVkS2V5OiBhbnksIGdyb3VwOiBhbnkpIHtcbiAgICBpZiAoaXRlbS50eXBlID09PSAnUEFTU1BPUlRfQVZBSUxBQkxFJykge1xuICAgICAgdGhpcy5zaG93T3JIaWRlRmllbGRzKGl0ZW0uZmllbGRWYWx1ZSwgc2VsZWN0ZWRLZXksIGdyb3VwKVxuICAgIH1cbiAgICBlbHNlIGlmKGl0ZW0udHlwZSA9PT0gJ1BSSU1BUllfQ09OVEFDVCcpe1xuICAgICAgdGhpcy5jb252ZXJ0T3RoZXJzQXNTZWNvbmRhcnkoaXRlbS5maWVsZFZhbHVlLHNlbGVjdGVkS2V5LGdyb3VwKTsgIFxuICAgIH1cbiAgfVxuXG4gIGNvbnZlcnRPdGhlcnNBc1NlY29uZGFyeSh2YWx1ZTphbnksc2VsZWN0ZWRLZXk6YW55LGdyb3VwOmFueSl7XG4gICAgY29uc3QgZm9ybWF0dGVkR3JvdXAgPSBncm91cC50b0xvd2VyQ2FzZSgpLnNwbGl0KCcgJykuam9pbignXycpO1xuICAgIGNvbnN0IGdyb3VwcyA9IFt7bmFtZTonZmF0aGVyX2RldGFpbHMnLGFWYWx1ZTonRmF0aGVyIGRldGFpbHMnfSx7bmFtZTonbW90aGVyX2RldGFpbHMnLGFWYWx1ZTonTW90aGVyIGRldGFpbHMnfSx7bmFtZTonZ3VhcmRpYW5fZGV0YWlscycsYVZhbHVlOidHdWFyZGlhbiBEZXRhaWxzJ31dO1xuICAgIGNvbnN0IG90aGVyR3JvdXBzID0gZ3JvdXBzLmZpbHRlcihnID0+IGcubmFtZSAhPT0gZm9ybWF0dGVkR3JvdXApO1xuICAgIGNvbnN0IFtzZWNvbmRhcnlHcm91cDEsIHNlY29uZGFyeUdyb3VwMl0gPSBvdGhlckdyb3VwcztcbiAgICB0aGlzLmZpZWxkRGF0YVtzZWxlY3RlZEtleV1bc2Vjb25kYXJ5R3JvdXAxLmFWYWx1ZV0uZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgIGlmKGVsZW1lbnQudHlwZSA9PT0gJ1BSSU1BUllfQ09OVEFDVCcpe1xuICAgICAgICBlbGVtZW50LmZpZWxkVmFsdWUgPSAnTm8nXG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5maWVsZERhdGFbc2VsZWN0ZWRLZXldW3NlY29uZGFyeUdyb3VwMi5hVmFsdWVdLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICBpZihlbGVtZW50LnR5cGUgPT09ICdQUklNQVJZX0NPTlRBQ1QnKXtcbiAgICAgICAgZWxlbWVudC5maWVsZFZhbHVlID0gJ05vJ1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICBzaG93UmVsYXRpdmVGaWVsZHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd09ySGlkZUZpZWxkcyh2YWx1ZTogYW55LCBzZWxlY3RlZEtleTogYW55LCBncm91cDogYW55KSB7XG4gICAgY29uc3Qgc2hvdWxkU2hvdyA9IHZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3llcycpO1xuICAgIHRoaXMuZmllbGREYXRhW3NlbGVjdGVkS2V5XVtncm91cF0uZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmRhdGFUeXBlICE9PSAnUkFESU9CVVRUT04nICYmIGVsZW1lbnQuZmllbGRMYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdwYXNzcG9ydCcpKSB7XG4gICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gc2hvdWxkU2hvdztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHVwbG9hZFBhcmVudEd1YXJkaW5hSW1hZ2VzKGV2OmFueSxmaWVsZDphbnkpe1xuICAgIGxldCBzZWxlY3RlZEltYWdlRGF0YSA6IEZpbGUgO1xuICAgIHNlbGVjdGVkSW1hZ2VEYXRhID0gZXYuc3JjRWxlbWVudC5maWxlc1swXTtcblxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICByZWFkZXIub25sb2FkID0gKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIGZpZWxkLmZpZWxkSW1hZ2VVcmwgPSByZXNwb25zZS50YXJnZXQucmVzdWx0O1xuICAgIH1cblxuICAgIHNlbGVjdGVkSW1hZ2VEYXRhID8gcmVhZGVyLnJlYWRBc0RhdGFVUkwoc2VsZWN0ZWRJbWFnZURhdGEpIDogbnVsbDtcbiAgICBmaWVsZC5zZWxlY3RlZEltYWdlRGF0YSA9IHNlbGVjdGVkSW1hZ2VEYXRhO1xuICB9XG5cbiAgdXBkYXRlU2VsZWN0ZWRJbWFnZShldjphbnksZmllbGQ6YW55KSB7XG4gICAgbGV0IHNlbGVjdGVkSW1hZ2VEYXRhIDogRmlsZSA7XG4gICAgc2VsZWN0ZWRJbWFnZURhdGEgPSBldi5zcmNFbGVtZW50LmZpbGVzWzBdO1xuXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5vbmxvYWQgPSAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgZmllbGQuZmllbGRJbWFnZVVybCA9IHJlc3BvbnNlLnRhcmdldC5yZXN1bHQ7XG4gICAgfVxuXG4gICAgc2VsZWN0ZWRJbWFnZURhdGEgPyByZWFkZXIucmVhZEFzRGF0YVVSTChzZWxlY3RlZEltYWdlRGF0YSkgOiBudWxsO1xuICAgIGZpZWxkLnNlbGVjdGVkSW1hZ2VEYXRhID0gc2VsZWN0ZWRJbWFnZURhdGE7XG4gIH1cblxuICBpc0ltYWdlKGZpbGVVcmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgZmlsZVVybCA9PT0gJ3N0cmluZycgJiYgKFxuICAgICAgZmlsZVVybC5zdGFydHNXaXRoKCdkYXRhOmltYWdlJykgfHwgL1xcLihqcGd8anBlZ3xwbmd8Z2lmKSQvaS50ZXN0KGZpbGVVcmwpXG4gICAgKTtcbiAgfVxuXG4gIGdldEZpZWxkVmFsaWRhdGlvbihpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCBsYWJlbCA9IChpdGVtLmZpZWxkTGFiZWwgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIFxuICAgIGNvbnN0IGlzUGhvbmUgPSBsYWJlbC5pbmNsdWRlcygncGhvbmUgbnVtYmVyJyk7XG4gICAgY29uc3QgaXNFbWFpbCA9IGxhYmVsLmluY2x1ZGVzKCdlbWFpbCcpO1xuICBcbiAgICBjb25zdCB2YWx1ZVN0ciA9IGl0ZW0uZmllbGRWYWx1ZT8udG9TdHJpbmcoKSB8fCAnJztcbiAgXG4gICAgaWYgKGlzUGhvbmUpIHtcbiAgICAgIGNvbnN0IG1vYmlsZVBhdHRlcm4gPSAvXls2LTldXFxkezl9JC87XG4gICAgICByZXR1cm4gbW9iaWxlUGF0dGVybi50ZXN0KHZhbHVlU3RyKSAmJiB2YWx1ZVN0ci5sZW5ndGggPT09IDEwO1xuICAgIH1cbiAgICBcbiAgICBpZiAoaXNFbWFpbCkge1xuICAgICAgY29uc3QgZW1haWxQYXR0ZXJuID0gL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC87XG4gICAgICByZXR1cm4gZW1haWxQYXR0ZXJuLnRlc3QodmFsdWVTdHIpO1xuICAgIH1cbiAgXG4gICAgcmV0dXJuIHRydWU7XG4gIH0gIFxuXG4gIGNoZWNrRG9iKGl0ZW06IGFueSkge1xuICAgIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gKGl0ZW0uZmllbGRMYWJlbCB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgZmllbGRHcm91cE5hbWUgPSAoaXRlbS5maWVsZEdyb3VwIHx8IFtdKS5mbGF0TWFwKChnOmFueSkgPT4gW1xuICAgICAgKGcuZmllbGRHcm91cE5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCksXG4gICAgICAoZy5maWVsZFN0ZXBOYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpXG4gICAgXSk7XG4gIFxuICAgIGlmIChmb3JtYXR0ZWRMYWJlbC5pbmNsdWRlcygnZG9iJykgJiYgaXRlbS5maWVsZFZhbHVlKSB7XG4gICAgICBjb25zdCBlbnRlcmVkRGF0ZSA9IG5ldyBEYXRlKGl0ZW0uZmllbGRWYWx1ZSk7XG4gICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gIFxuICAgICAgaWYgKGZpZWxkR3JvdXBOYW1lLnNvbWUoKG5hbWU6YW55KSA9PiBuYW1lLmluY2x1ZGVzKCdzdHVkZW50JykpKSB7XG4gICAgICAgIGNvbnN0IGFnZSA9IHRvZGF5LmdldEZ1bGxZZWFyKCkgLSBlbnRlcmVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBjb25zdCBoYXNCaXJ0aGRheVBhc3NlZCA9XG4gICAgICAgICAgdG9kYXkuZ2V0TW9udGgoKSA+IGVudGVyZWREYXRlLmdldE1vbnRoKCkgfHxcbiAgICAgICAgICAodG9kYXkuZ2V0TW9udGgoKSA9PT0gZW50ZXJlZERhdGUuZ2V0TW9udGgoKSAmJiB0b2RheS5nZXREYXRlKCkgPj0gZW50ZXJlZERhdGUuZ2V0RGF0ZSgpKTtcbiAgXG4gICAgICAgIGNvbnN0IGV4YWN0QWdlID0gaGFzQmlydGhkYXlQYXNzZWQgPyBhZ2UgOiBhZ2UgLSAxO1xuICBcbiAgICAgICAgaWYgKGV4YWN0QWdlIDwgMykge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihcbiAgICAgICAgICAgICdTdHVkZW50IG11c3QgYmUgYXQgbGVhc3QgMyB5ZWFycyBvbGQuJyxcbiAgICAgICAgICAgICdPaycsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGR1cmF0aW9uOjM1MDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgaXRlbS5maWVsZFZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkR3JvdXBOYW1lLnNvbWUoKG5hbWU6YW55KSA9PiBuYW1lLmluY2x1ZGVzKCdtb3RoZXInKSkpIHtcbiAgICAgICAgY29uc3QgYWdlID0gdG9kYXkuZ2V0RnVsbFllYXIoKSAtIGVudGVyZWREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGNvbnN0IGhhc0JpcnRoZGF5UGFzc2VkID1cbiAgICAgICAgICB0b2RheS5nZXRNb250aCgpID4gZW50ZXJlZERhdGUuZ2V0TW9udGgoKSB8fFxuICAgICAgICAgICh0b2RheS5nZXRNb250aCgpID09PSBlbnRlcmVkRGF0ZS5nZXRNb250aCgpICYmIHRvZGF5LmdldERhdGUoKSA+PSBlbnRlcmVkRGF0ZS5nZXREYXRlKCkpO1xuICBcbiAgICAgICAgY29uc3QgZXhhY3RBZ2UgPSBoYXNCaXJ0aGRheVBhc3NlZCA/IGFnZSA6IGFnZSAtIDE7XG4gIFxuICAgICAgICBpZiAoZXhhY3RBZ2UgPCAxOCkge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihcbiAgICAgICAgICAgICdNb3RoZXIgbXVzdCBiZSBhdCBsZWFzdCAxOCB5ZWFycyBvbGQuJyxcbiAgICAgICAgICAgICdPaycsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGR1cmF0aW9uOjM1MDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgaXRlbS5maWVsZFZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkR3JvdXBOYW1lLnNvbWUoKG5hbWU6YW55KSA9PiBuYW1lLmluY2x1ZGVzKCdmYXRoZXInKSB8fCBuYW1lLmluY2x1ZGVzKCdndWFyZGlhbicpKSkge1xuICAgICAgICBjb25zdCBhZ2UgPSB0b2RheS5nZXRGdWxsWWVhcigpIC0gZW50ZXJlZERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgY29uc3QgaGFzQmlydGhkYXlQYXNzZWQgPVxuICAgICAgICAgIHRvZGF5LmdldE1vbnRoKCkgPiBlbnRlcmVkRGF0ZS5nZXRNb250aCgpIHx8XG4gICAgICAgICAgKHRvZGF5LmdldE1vbnRoKCkgPT09IGVudGVyZWREYXRlLmdldE1vbnRoKCkgJiYgdG9kYXkuZ2V0RGF0ZSgpID49IGVudGVyZWREYXRlLmdldERhdGUoKSk7XG4gIFxuICAgICAgICBjb25zdCBleGFjdEFnZSA9IGhhc0JpcnRoZGF5UGFzc2VkID8gYWdlIDogYWdlIC0gMTtcbiAgXG4gICAgICAgIGlmIChleGFjdEFnZSA8IDIxKSB7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFxuICAgICAgICAgICAgJ0ZhdGhlciBtdXN0IGJlIGF0IGxlYXN0IDIxIHllYXJzIG9sZC4nLFxuICAgICAgICAgICAgJ09rJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZHVyYXRpb246MzUwMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICBpdGVtLmZpZWxkVmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gIFxuICB9XG5cbiAgbmV4dFNpYmxpbmdOdW1iZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBzaG93QWRkU2libGluZ3NCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2libGluZ3MgPSB0aGlzLmZpZWxkRGF0YVsnRmFtaWx5IERldGFpbHMnXVsnU2libGluZ3MgRGV0YWlscyddO1xuXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNTsgaSsrKSB7XG4gICAgICBjb25zdCBzaWJsaW5nID0gc2libGluZ3MuZmluZCgoZWw6IGFueSkgPT5cbiAgICAgICAgZWwuZmllbGRMYWJlbD8uaW5jbHVkZXMoaS50b1N0cmluZygpKVxuICAgICAgKTtcbiAgICAgIGlmICghc2libGluZyB8fCAhc2libGluZy5pc0Rpc3BsYXkpIHtcbiAgICAgICAgdGhpcy5uZXh0U2libGluZ051bWJlciA9IGk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubmV4dFNpYmxpbmdOdW1iZXIgPSBudWxsO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG5cbiAgYWRkU2libGluZyhzaWJsaW5nTnVtYmVyOiBhbnkpIHtcbiAgICBjb25zdCBzaWJsaW5ncyA9IHRoaXMuZmllbGREYXRhWydGYW1pbHkgRGV0YWlscyddWydTaWJsaW5ncyBEZXRhaWxzJ107XG4gICAgc2libGluZ3MuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmZpZWxkTGFiZWw/LmluY2x1ZGVzKHNpYmxpbmdOdW1iZXIpKSB7XG4gICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBvYmplY3RLZXlzID0gT2JqZWN0LmtleXM7XG5cbiAgZ3JvdXBPZlNpYmxpbmdzKGl0ZW06YW55KTphbnl7XG4gICAgY29uc3QgZ3JvdXBlZEZpZWxkczogeyBba2V5OiBzdHJpbmddOiBhbnlbXSB9ID0ge307XG5cbiAgICBpdGVtLmZvckVhY2goKGZpZWxkOmFueSkgPT4ge1xuICAgICAgY29uc3QgbWF0Y2ggPSBmaWVsZC5maWVsZExhYmVsLm1hdGNoKC9cXGQrJC8pOyAvLyBFeHRyYWN0IHRyYWlsaW5nIG51bWJlciBmcm9tIGZpZWxkTGFiZWxcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBjb25zdCBzaWJsaW5nTnVtYmVyID0gbWF0Y2hbMF07XG4gIFxuICAgICAgICBpZiAoIWdyb3VwZWRGaWVsZHNbc2libGluZ051bWJlcl0pIHtcbiAgICAgICAgICBncm91cGVkRmllbGRzW3NpYmxpbmdOdW1iZXJdID0gW107XG4gICAgICAgIH1cbiAgXG4gICAgICAgIGdyb3VwZWRGaWVsZHNbc2libGluZ051bWJlcl0ucHVzaChmaWVsZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ3JvdXBlZEZpZWxkcztcbiAgfVxuXG4gIHJldHVybkRpc3BsYXlUZXh0KGl0ZW06YW55KXtcbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIGdyb3VwT2ZQYXN0U2Nob29sRGV0YWlscyhpdGVtOmFueSk6YW55e1xuICAgIGNvbnN0IGdyb3VwZWRGaWVsZHM6IHsgW2tleTogc3RyaW5nXTogYW55W10gfSA9IHt9O1xuXG4gICAgaXRlbS5mb3JFYWNoKChmaWVsZDphbnkpID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoID0gZmllbGQuZmllbGRMYWJlbC5tYXRjaCgvXFxkKyQvKTsgLy8gRXh0cmFjdCB0cmFpbGluZyBudW1iZXIgZnJvbSBmaWVsZExhYmVsXG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgY29uc3Qgc2libGluZ051bWJlciA9IG1hdGNoWzBdO1xuICBcbiAgICAgICAgaWYgKCFncm91cGVkRmllbGRzW3NpYmxpbmdOdW1iZXJdKSB7XG4gICAgICAgICAgZ3JvdXBlZEZpZWxkc1tzaWJsaW5nTnVtYmVyXSA9IFtdO1xuICAgICAgICB9XG4gIFxuICAgICAgICBncm91cGVkRmllbGRzW3NpYmxpbmdOdW1iZXJdLnB1c2goZmllbGQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdyb3VwZWRGaWVsZHM7XG4gIH1cblxuICBuZXh0UGFzdFNjaG9vbE51bWJlcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHNob3dBZGRQYXN0U2Nob29sQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNpYmxpbmdzID0gdGhpcy5maWVsZERhdGFbJ1N0dWRlbnQgRGV0YWlscyddWydQYXN0IHNjaG9vbCBEZXRhaWxzJ107XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAzOyBpKyspIHtcbiAgICAgIGNvbnN0IHNpYmxpbmcgPSBzaWJsaW5ncy5maW5kKChlbDogYW55KSA9PlxuICAgICAgICBlbC5maWVsZExhYmVsPy5pbmNsdWRlcyhpLnRvU3RyaW5nKCkpXG4gICAgICApO1xuICAgICAgaWYgKCFzaWJsaW5nIHx8ICFzaWJsaW5nLmlzRGlzcGxheSkge1xuICAgICAgICB0aGlzLm5leHRQYXN0U2Nob29sTnVtYmVyID0gaTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5uZXh0UGFzdFNjaG9vbE51bWJlciA9IG51bGw7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYWRkUGFzdFNjaG9vbChwYXN0U2Nob29sTnVtYmVyOiBhbnkpIHtcbiAgICBjb25zdCBzaWJsaW5ncyA9IHRoaXMuZmllbGREYXRhWydTdHVkZW50IERldGFpbHMnXVsnUGFzdCBzY2hvb2wgRGV0YWlscyddO1xuICAgIHNpYmxpbmdzLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5maWVsZExhYmVsPy5pbmNsdWRlcyhwYXN0U2Nob29sTnVtYmVyKSkge1xuICAgICAgICBlbGVtZW50LmlzRGlzcGxheSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxufVxuIiwiPHNlY3Rpb24gc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lclwiPlxuICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCI+XG4gICAgPGRpdiAjbWFpbkNvbnRhaW5lciBjbGFzcz1cInJvd0ZsZXhcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9PdmVybGF5XT1cInN0eWxlcz8uYmFja2dyb3VuZFwiXG4gICAgICBbc2ltcG9Cb3JkZXJdPVwic3R5bGVzPy5ib3JkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLXNlY3Rpb25cIlxuICAgICAgICBbbmdDbGFzc109XCJ7J2p1c3RpZnktY29udGVudC1tZC1zdGFydCc6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2xlZnQnICwgJ2p1c3RpZnktY29udGVudC1tZC1lbmQnOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdyaWdodCd9XCJcbiAgICAgICAgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJib2R5LXNlY3Rpb25cIj5cbiAgICAgICAgICA8ZGl2IFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiIFtpZF09XCJkYXRhPy5pZFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWxlbWVudCBbdGV4dERhdGFdPVwiY29udGVudD8uaW5wdXRUZXh0Py5bMF0/LnZhbHVlXCIgW3RleHRMYWJlbF09XCJjb250ZW50Py5pbnB1dFRleHQ/LlswXT8ubGFiZWxcIj48L3NpbXBvLXRleHQtZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBkLW1kLWZsZXggbXQtMTVcIiAqbmdJZj1cImRhdGE/LmFjdGlvbj8uZGlzcGxheVwiIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICAgICAgc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnbGVmdCcgPyAnanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0JyA6ICcnLFxuICAgICAgICAgICAgICBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdjZW50ZXInID8gJ2p1c3RpZnktY29udGVudC1tZC1jZW50ZXInIDogJycsXG4gICAgICAgICAgICAgIHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ3JpZ2h0JyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtZW5kJyA6ICcnXG4gICAgICAgICAgICBdXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICA8c2VjdGlvbiBjbGFzcz1cIm1haW4tc2VjdGlvblwiPlxuICAgIDxkaXYgKm5nSWY9XCJmb3JtU3RhdHVzICE9ICdSRUdJU1RFUkVEJyAmJiBmb3JtU3RhdHVzICE9ICdBRE1JVFRFRCdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdWJUYWJzX3NlY3Rpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfdGFicyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQga2V5IG9mIE9iamVjdC5rZXlzKGZpZWxkRGF0YSlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGVfdGFiIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNlbGVjdGVkS2V5ID0ga2V5XCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRLZXkgPT09IGtleSA/ICdzaW5nbGVfdGFiX2FjdGl2ZScgOiAnc2luZ2xlX3RhYidcIj5cbiAgICAgICAgICAgICAge3trZXkgfCB0aXRsZWNhc2V9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZV90YWIgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2VsZWN0ZWRLZXkgPSAnRG9jdW1lbnQnXCIgKm5nSWY9XCJkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnID8gJ3NpbmdsZV90YWJfYWN0aXZlJyA6ICdzaW5nbGVfdGFiJ1wiPlxuICAgICAgICAgICAgRG9jdW1lbnRcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlX3RhYiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZWRpcmVjdFRvUGF5bWVudCgpXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEtleSA9PT0gJ1BheW1lbnQnID8gJ3NpbmdsZV90YWJfYWN0aXZlJyA6ICdzaW5nbGVfdGFiJ1wiPlxuICAgICAgICAgICAgUGF5bWVudFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGZpZWxkRGF0YVtzZWxlY3RlZEtleV0gPyBPYmplY3Qua2V5cyhmaWVsZERhdGFbc2VsZWN0ZWRLZXldKSA6IFtdO2xldCBncm91cEluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHlcIiAqbmdJZj1cImdyb3VwICE9PSAnQmFja3VwIENvbnRhY3QnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfdGFicyBiYWNrVG9MZWFkcyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICB7e2dyb3VwfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cEluZGV4ID09IDAgJiYgT2JqZWN0LmtleXMoZmllbGREYXRhKVswXSA9PT0gc2VsZWN0ZWRLZXlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1ib3hcIiAqbmdJZj1cIiFwYXlsb2FkLmltZ1VybFwiPlxuICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZHVtbXktaW1hZ2VcIiBzcmM9XCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL21hc3Rlci9hZGQtaW1hZ2Uuc3ZnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlX2JveFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmNfYnJvd3NlX2J0blwiIGlkPVwiZGlzcGxheV9icm93c2VfYnRuXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+Q2xpY2sgdG9cbiAgICAgICAgICAgICAgICAgIHVwbG9hZDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgaWQ9XCJ2ZW5kb3JJbWFnZVwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cIm15ZmlsZVwiXG4gICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlL3gtcG5nLGltYWdlL2pwZWcsaW1hZ2UvanBnXCIgKGNoYW5nZSk9XCJ1cGRhdGVBZG1pc3Npb25JbWFnZSgkZXZlbnQpXCIgY2xhc3M9XCJwYy1idG5cIlxuICAgICAgICAgICAgICBpZD1cImJyb3dzZV9jb250YWN0X2ltYWdlXCIgI2ZpbGVJbnB1dCAvPlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGF5bG9hZC5pbWdVcmxcIiBjbGFzcz1cImFkZGVkSW1nXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRlZEltZ1wiPlxuICAgICAgICAgICAgICAgIDxpbWcgIGFsdD1cIlwiIFtzcmNdPVwiZHMuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChwYXlsb2FkLmltZ1VybClcIj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Jsb2dzL2NoYW5nZV9pbWFnZS5zdmdcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgICAgICAgIENoYW5nZSBJbWFnZVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gZGVsZXRlLWNoYW5nZVwiIChjbGljayk9XCJkZWxldGVJbWcoKVwiPlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Jsb2dzL2RlbGV0ZV9pbWFnZS5zdmdcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5EZWxldGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvdyBtdC0xXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbmZvIG9mIGZpZWxkRGF0YVtzZWxlY3RlZEtleV1bZ3JvdXBdXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtMTIgbXQtMVwiICpuZ0lmPVwiaW5mby5pc0Rpc3BsYXlcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJsYWJlbC10ZXh0XCI+e3tpbmZvLmRpc3BsYXlUZXh0IHx8IGluZm8uZmllbGRMYWJlbH19PC9sYWJlbD4mbmJzcDsgPHNwYW4gc3R5bGU9XCJjb2xvcjogcmVkO1wiICpuZ0lmPVwiaW5mby5yZXF1aXJlZFwiPio8L3NwYW4+IDxicj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXREYXRhOyBjb250ZXh0OiB7ZGF0YTogaW5mbywgZ3JvdXA6Z3JvdXB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMVwiICpuZ0lmPVwiZ3JvdXAgIT0gJ1NpYmxpbmdzIERldGFpbHMnICYmIGdyb3VwICE9ICdQYXN0IHNjaG9vbCBEZXRhaWxzJ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW5mbyBvZiBmaWVsZERhdGFbc2VsZWN0ZWRLZXldW2dyb3VwXVwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGluZm8udHlwZSA9PT0gJ0ZBVEhFUl9JTUFHRScgfHwgaW5mby50eXBlID09PSAnTU9USEVSX0lNQUdFJyB8fCBpbmZvLnR5cGUgPT09ICdHVUFSRElBTl9JTUFHRScpID8gJ2NvbC1tZC0xMiBjb2wtMTInIDogJ2NvbC1tZC00IGNvbC0xMiBtdC0xJ1wiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpbmZvLmlzRGlzcGxheVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImxhYmVsLXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihpbmZvLnR5cGUgIT0gJ0ZBVEhFUl9JTUFHRScgJiYgaW5mby50eXBlICE9ICdNT1RIRVJfSU1BR0UnICYmIGluZm8udHlwZSAhPSAnR1VBUkRJQU5fSU1BR0UnKVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJyZXR1cm5EaXNwbGF5VGV4dChpbmZvLmRpc3BsYXlUZXh0IHx8IGluZm8uZmllbGRMYWJlbClcIj57e3JldHVybkRpc3BsYXlUZXh0KGluZm8uZGlzcGxheVRleHQgfHwgaW5mby5maWVsZExhYmVsKX19PC9sYWJlbD4mbmJzcDsgPHNwYW4gc3R5bGU9XCJjb2xvcjogcmVkO1wiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaW5mby5yZXF1aXJlZCAmJiAoaW5mby50eXBlICE9ICdGQVRIRVJfSU1BR0UnICYmIGluZm8udHlwZSAhPSAnTU9USEVSX0lNQUdFJyAmJiBpbmZvLnR5cGUgIT0gJ0dVQVJESUFOX0lNQUdFJylcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dERhdGE7IGNvbnRleHQ6IHtkYXRhOiBpbmZvLCBncm91cDpncm91cH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgKm5nSWY9XCJncm91cCA9PT0gJ1NpYmxpbmdzIERldGFpbHMnXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBrZXkgb2Ygb2JqZWN0S2V5cyhncm91cE9mU2libGluZ3MoZmllbGREYXRhWydGYW1pbHkgRGV0YWlscyddWydTaWJsaW5ncyBEZXRhaWxzJ10pKTtsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMlwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGluZm8gb2YgZ3JvdXBPZlNpYmxpbmdzKGZpZWxkRGF0YVsnRmFtaWx5IERldGFpbHMnXVsnU2libGluZ3MgRGV0YWlscyddKVtrZXldXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgY29sLTEyIG10LTFcIiAqbmdJZj1cImluZm8uaXNEaXNwbGF5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJsYWJlbC10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGluZm8udHlwZSAhPSAnRkFUSEVSX0lNQUdFJyAmJiBpbmZvLnR5cGUgIT0gJ01PVEhFUl9JTUFHRScgJiYgaW5mby50eXBlICE9ICdHVUFSRElBTl9JTUFHRScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJyZXR1cm5EaXNwbGF5VGV4dChpbmZvLmRpc3BsYXlUZXh0IHx8IGluZm8uZmllbGRMYWJlbClcIj57e2luZm8uZGlzcGxheVRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IGluZm8uZmllbGRMYWJlbH19PC9sYWJlbD4mbmJzcDsgPHNwYW4gc3R5bGU9XCJjb2xvcjogcmVkO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImluZm8ucmVxdWlyZWQgJiYgKGluZm8udHlwZSAhPSAnRkFUSEVSX0lNQUdFJyAmJiBpbmZvLnR5cGUgIT0gJ01PVEhFUl9JTUFHRScgJiYgaW5mby50eXBlICE9ICdHVUFSRElBTl9JTUFHRScpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dERhdGE7IGNvbnRleHQ6IHtkYXRhOiBpbmZvLCBncm91cDpncm91cH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYm9yZGVyX2JvdHRvbVwiICpuZ0lmPVwiaSA+PSAxXCI+PC9kaXY+IC0tPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkX21vcmVfc2libGluZ3MgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIlxuICAgICAgICAgICAgICAqbmdJZj1cImdyb3VwID09PSAnU2libGluZ3MgRGV0YWlscycgJiYgc2hvd0FkZFNpYmxpbmdzQnV0dG9uKClcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkU2libGluZyhuZXh0U2libGluZ051bWJlcilcIiBjbGFzcz1cImFkZF9zaWJsaW5nXCIgc3R5bGU9XCJ3aWR0aDptYXgtY29udGVudCAhaW1wb3J0YW50XCI+KyBBZGQgU2libGluZyB7eyBuZXh0U2libGluZ051bWJlclxuICAgICAgICAgICAgICAgIH19PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgKm5nSWY9XCJncm91cCA9PT0gJ1Bhc3Qgc2Nob29sIERldGFpbHMnXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBrZXkgb2Ygb2JqZWN0S2V5cyhncm91cE9mUGFzdFNjaG9vbERldGFpbHMoZmllbGREYXRhWydTdHVkZW50IERldGFpbHMnXVsnUGFzdCBzY2hvb2wgRGV0YWlscyddKSk7bGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbmZvIG9mIGdyb3VwT2ZQYXN0U2Nob29sRGV0YWlscyhmaWVsZERhdGFbJ1N0dWRlbnQgRGV0YWlscyddWydQYXN0IHNjaG9vbCBEZXRhaWxzJ10pW2tleV1cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtMTIgbXQtMVwiICpuZ0lmPVwiaW5mby5pc0Rpc3BsYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImxhYmVsLXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoaW5mby50eXBlICE9ICdGQVRIRVJfSU1BR0UnICYmIGluZm8udHlwZSAhPSAnTU9USEVSX0lNQUdFJyAmJiBpbmZvLnR5cGUgIT0gJ0dVQVJESUFOX0lNQUdFJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cInJldHVybkRpc3BsYXlUZXh0KGluZm8uZGlzcGxheVRleHQgfHwgaW5mby5maWVsZExhYmVsKVwiPnt7aW5mby5kaXNwbGF5VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgaW5mby5maWVsZExhYmVsfX08L2xhYmVsPiZuYnNwOyA8c3BhbiBzdHlsZT1cImNvbG9yOiByZWQ7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaW5mby5yZXF1aXJlZCAmJiAoaW5mby50eXBlICE9ICdGQVRIRVJfSU1BR0UnICYmIGluZm8udHlwZSAhPSAnTU9USEVSX0lNQUdFJyAmJiBpbmZvLnR5cGUgIT0gJ0dVQVJESUFOX0lNQUdFJylcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RGF0YTsgY29udGV4dDoge2RhdGE6IGluZm8sIGdyb3VwOmdyb3VwfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkX21vcmVfc2libGluZ3MgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIlxuICAgICAgICAgICAgICAqbmdJZj1cImdyb3VwID09PSAnUGFzdCBzY2hvb2wgRGV0YWlscycgJiYgc2hvd0FkZFBhc3RTY2hvb2xCdXR0b24oKVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGRQYXN0U2Nob29sKG5leHRQYXN0U2Nob29sTnVtYmVyKVwiIGNsYXNzPVwiYWRkX3NpYmxpbmdcIlxuICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOm1heC1jb250ZW50ICFpbXBvcnRhbnRcIj4rIEFkZCBQYXN0IFNjaG9vbCB7eyBuZXh0UGFzdFNjaG9vbE51bWJlcn19PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHlcIiAqbmdJZj1cImZpZWxkRGF0YVtzZWxlY3RlZEtleV0uaGFzT3duUHJvcGVydHkoJ0JhY2t1cCBDb250YWN0JykgJiYgc3R1ZGVudExpdmVXaXRoID09PSAnc2luZ2xlIHBhcmVudCcgJiYgZ3JvdXBJbmRleCA9PSAwICYmIE9iamVjdC5rZXlzKGZpZWxkRGF0YSlbMF0gPT09IHNlbGVjdGVkS2V5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfdGFicyBiYWNrVG9MZWFkcyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICBCYWNrdXAgQ29udGFjdCAoT3B0aW9uYWwpXG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibXRiLTE1IGNoZWNrYm94LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJcIiBpZD1cIlwiIFsobmdNb2RlbCldPVwicGF5bG9hZC5wYXJlbnRBdXRob3JpemF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICBJIGF1dGhvcml6ZSB0aGUgc2Nob29sIHRvIHJlbGVhc2UgdGhlIGNoaWxkIG9ubHkgdG8gdGhlIHBhcmVudCBsaXN0ZWQgYWJvdmVcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCIgKm5nRm9yPVwibGV0IGluZm8gb2YgZmllbGREYXRhW3NlbGVjdGVkS2V5XVsnQmFja3VwIENvbnRhY3QnXVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJsYWJlbC10ZXh0XCI+e3tpbmZvLmRpc3BsYXlUZXh0IHx8IGluZm8uZmllbGRMYWJlbH19PC9sYWJlbD4mbmJzcDsgPHNwYW4gc3R5bGU9XCJjb2xvcjogcmVkO1wiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpbmZvLnJlcXVpcmVkXCI+Kjwvc3Bhbj4gPGJyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXREYXRhOyBjb250ZXh0OiB7ZGF0YTogaW5mb31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImxhYmVsLXRleHRcIj5VcGxvYWQgU3VwcG9ydGluZyBEb2N1bWVudCAoT3B0aW9uYWwpPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXRleHQgdXBsb2FkLWZpbGVcIiAoY2xpY2spPVwiYmFja1VwRG9jSW5wdXQuY2xpY2soKVwiPlxuICAgICAgICAgICAgICAgIDxwPnt7YmFja3VwRG9jRmlsZSA/ICdGaWxlIFVwbG9hZGVkJyA6ICdVcGxvYWQgRmlsZSd9fTwvcD5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvdWRfdXBsb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dCBpZD1cInZlbmRvckltYWdlXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwibXlmaWxlXCIgaGlkZGVuXG4gICAgICAgICAgICAgICAgYWNjZXB0PVwiLmRvYywuZG9jeCxhcHBsaWNhdGlvbi9tc3dvcmQsYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQsaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGcsLnBkZiwgdmlkZW8vbXA0LHZpZGVvL3gtbWF0cm9za2EsdmlkZW8veC1tc3ZpZGVvLHZpZGVvL3F1aWNrdGltZVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGxvYWRCYWNrVXBEb2N1bWVudCgkZXZlbnQpXCIgY2xhc3M9XCJwYy1idG5cIlxuICAgICAgICAgICAgICAgIGlkPVwiYnJvd3NlX2NvbnRhY3RfaW1hZ2VcIiAjYmFja1VwRG9jSW5wdXQgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtZGV0YWlsc1wiICpuZ0lmPVwic2VsZWN0ZWRLZXkgPT09ICdEb2N1bWVudCcgJiYgZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiPlxuICAgICAgICAgIDxzaW1wby1kb2N1bWVudCBbZG9jdW1lbnRMaXN0XT1cImRvY3VtZW50TGlzdFwiPjwvc2ltcG8tZG9jdW1lbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1kZXRhaWxzXCIgKm5nSWY9XCJzZWxlY3RlZEtleSA9PT0gJ1BheW1lbnQnICYmIGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIj5cbiAgICAgICAgICA8c2ltcG8tcGF5bWVudC1kZXRhaWxzIFthZG1pc3Npb25EYXRhXT1cInBheWxvYWRcIlxuICAgICAgICAgICAgW3N1YnNjcmlwdGlvbnNEYXRhXT1cInN1YnNjcmlwdGlvbnNEYXRhXCIgW3Rlcm1QYXltZW50TGlzdF09XCJ0ZXJtUGF5bWVudExpc3RcIj48L3NpbXBvLXBheW1lbnQtZGV0YWlscz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1wYXJlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGRhdGE/LmFjdGlvbj8uYnV0dG9uc1wiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkK2J1dHRvbi5pZFwiXG4gICAgICAgICAgICBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiICpuZ0lmPVwiKGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybScgJiYgc2VsZWN0ZWRLZXkgPT0gJ1BheW1lbnQnKSB8fFxuICAgICAgICAgICAgKGRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgJiZcbiAgICAgICAgICAgICAgKE9iamVjdC5rZXlzKGZpZWxkRGF0YSlbT2JqZWN0LmtleXMoZmllbGREYXRhKS5sZW5ndGggLSAxXSA9PSBzZWxlY3RlZEtleSkpXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3tidXR0b24/LmNvbnRlbnQ/LmxhYmVsfX08L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY29udGludWVBZG1pc3Npb24oKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCtidXR0b24uaWRcIlxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cImJ1dHRvbi5zdHlsZXNcIiAqbmdJZj1cInNlbGVjdGVkS2V5ICE9ICdQYXltZW50JyAmJiBkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+Q29udGludWU8L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY29udGludWVBZG1pc3Npb24oKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCtidXR0b24uaWRcIlxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cImJ1dHRvbi5zdHlsZXNcIlxuICAgICAgICAgICAgKm5nSWY9XCJkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nICYmIChPYmplY3Qua2V5cyhmaWVsZERhdGEpW09iamVjdC5rZXlzKGZpZWxkRGF0YSkubGVuZ3RoIC0gMV0gIT0gc2VsZWN0ZWRLZXkpXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+Q29udGludWU8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJlbXB0eVRleHRcIiAqbmdJZj1cImZvcm1TdGF0dXMgPT0gJ1JFR0lTVEVSRUQnIHx8IGZvcm1TdGF0dXMgPT0gJ0FETUlUVEVEJ1wiPlxuICAgICAgPGltZyBbc3JjXT1cImNvbnRlbnQ/LmltYWdlPy51cmxcIiBhbHQ9XCJcIiAqbmdJZj1cImNvbnRlbnQ/LmltYWdlPy5zaG93SW1hZ2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLWxhcmdlXCIgW2lubmVySHRtbF09XCJjb250ZW50Py5pbnB1dFRleHQ/LlsxXT8udmFsdWVcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuXG4gIDxuZy10ZW1wbGF0ZSAjaW5wdXREYXRhIGxldC1maWVsZD1cImRhdGFcIiBsZXQtZ3JvdXA9XCJncm91cFwiPlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PSAnSU1BR0UnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtYm94XCIgKm5nSWY9XCIhZmllbGQuZmllbGRJbWFnZVVybFwiPlxuICAgICAgICA8aW1nIGNsYXNzPVwiZHVtbXktaW1hZ2VcIiBzcmM9XCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL21hc3Rlci9hZGQtaW1hZ2Uuc3ZnXCJcbiAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0Mi5jbGljaygpXCIgYWx0PVwiXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmY19icm93c2VfYnRuXCIgaWQ9XCJkaXNwbGF5X2Jyb3dzZV9idG5cIiAoY2xpY2spPVwiZmlsZUlucHV0Mi5jbGljaygpXCI+Q2xpY2sgdG9cbiAgICAgICAgICAgIHVwbG9hZDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgaWQ9XCJ2ZW5kb3JJbWFnZVwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cIm15ZmlsZVwiIGFjY2VwdD1cImltYWdlL3gtcG5nLGltYWdlL2pwZWcsaW1hZ2UvanBnXCJcbiAgICAgICAgKGNoYW5nZSk9XCJ1cGxvYWRQYXJlbnRHdWFyZGluYUltYWdlcygkZXZlbnQsZmllbGQpXCIgY2xhc3M9XCJwYy1idG5cIiBpZD1cImJyb3dzZV9jb250YWN0X2ltYWdlXCIgI2ZpbGVJbnB1dDIgLz5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZpZWxkLmZpZWxkSW1hZ2VVcmxcIiBjbGFzcz1cImFkZGVkSW1nXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZGVkSW1nXCI+XG4gICAgICAgICAgICA8aW1nIGFsdD1cIlwiIFtzcmNdPVwiZHMuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChmaWVsZC5maWVsZEltYWdlVXJsKVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1idXR0b25zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZpbGVJbnB1dDIuY2xpY2soKVwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYmxvZ3MvY2hhbmdlX2ltYWdlLnN2Z1wiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICBDaGFuZ2UgSW1hZ2VcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBkZWxldGUtY2hhbmdlXCIgKGNsaWNrKT1cImRlbGV0ZUltZygpXCI+XG4gIFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlXCI+XG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYmxvZ3MvZGVsZXRlX2ltYWdlLnN2Z1wiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICAgIDxkaXY+RGVsZXRlPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdURVhUJyAmJiBmaWVsZC5pc0Rpc3BsYXlcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIFtwbGFjZWhvbGRlcl09XCInRW50ZXIgJytmaWVsZC5maWVsZExhYmVsXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JcIiAqbmdJZj1cImZpZWxkLmZpZWxkVmFsdWUgJiYgIWdldEZpZWxkVmFsaWRhdGlvbihmaWVsZClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkTGFiZWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3Bob25lIG51bWJlcicpXCI+XG4gICAgICAgICAgUGxlYXNlIGVudGVyIGEgdmFsaWQgMTAtZGlnaXQgSW5kaWFuIG1vYmlsZSBudW1iZXIuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRMYWJlbD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZW1haWwnKVwiPlxuICAgICAgICAgIFBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnTlVNQkVSJyAmJiBmaWVsZC5pc0Rpc3BsYXlcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgW3BsYWNlaG9sZGVyXT1cIidFbnRlciAnK2ZpZWxkLmZpZWxkTGFiZWxcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwiZmllbGQuZmllbGRWYWx1ZSAmJiAhZ2V0RmllbGRWYWxpZGF0aW9uKGZpZWxkKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRMYWJlbD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygncGhvbmUgbnVtYmVyJylcIj5cbiAgICAgICAgICBQbGVhc2UgZW50ZXIgYSB2YWxpZCAxMC1kaWdpdCBJbmRpYW4gbW9iaWxlIG51bWJlci5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZExhYmVsPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdlbWFpbCcpXCI+XG4gICAgICAgICAgUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdNT05FWScgJiYgZmllbGQuaXNEaXNwbGF5XCI+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImlucHV0LXRleHRcIiBbcGxhY2Vob2xkZXJdPVwiJ0VudGVyICcrZmllbGQuZmllbGRMYWJlbFwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ0RBVEUnICYmIGZpZWxkLmlzRGlzcGxheVwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJkYXRlXCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCIgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgJytmaWVsZC5maWVsZExhYmVsXCIgW21heF09XCJnZXRNYXhEYXRlKGZpZWxkKVwiXG4gICAgICAoaW5wdXQpPVwiY2hlY2tEb2IoZmllbGQpXCI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdURVhUX0ZJTEUnICYmIGZpZWxkLmlzRGlzcGxheVwiPlxuICAgICAgPGlucHV0IG1hdElucHV0IGNsYXNzPVwiaW5wdXQtdGV4dC0xXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCIgc3R5bGU9XCJ3aWR0aDo5MCVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1ib3gtMSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdJZj1cIiFmaWVsZC5maWVsZEltYWdlVXJsXCJcbiAgICAgICAgc3R5bGU9XCJ3aWR0aDoxMCVcIj5cbiAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJmaWxlSW5wdXQxLmNsaWNrKClcIlxuICAgICAgICAgIGNsYXNzPVwiZHVtbXktaW1hZ2UtMSB3LTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPmNsb3VkX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1ib3gtMSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdJZj1cImZpZWxkLmZpZWxkSW1hZ2VVcmxcIiBzdHlsZT1cIndpZHRoOjEwJVwiPlxuICAgICAgICA8IS0tIElmIHRoZSB1cGxvYWRlZCBmaWxlIGlzIGFuIGltYWdlLCBzaG93IHRoZSBwcmV2aWV3IC0tPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJpc0ltYWdlKGZpZWxkLmZpZWxkSW1hZ2VVcmwpXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgIGNsYXNzPVwidy0xMDAgaC0xMDBcIlxuICAgICAgICAgIFtzcmNdPVwiZHMuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChmaWVsZC5maWVsZEltYWdlVXJsKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dDEuY2xpY2soKVwiIC8+XG4gICAgICBcbiAgICAgICAgPCEtLSBJZiB0aGUgdXBsb2FkZWQgZmlsZSBpcyBub3QgYW4gaW1hZ2UsIHNob3cgYSBmaWxlIGljb24gLS0+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICpuZ0lmPVwiIWlzSW1hZ2UoZmllbGQuZmllbGRJbWFnZVVybClcIlxuICAgICAgICAgIGNsYXNzPVwidy0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGR1bW15LWltYWdlLTFcIlxuICAgICAgICAgIChjbGljayk9XCJmaWxlSW5wdXQxLmNsaWNrKClcIj5pbnNlcnRfZHJpdmVfZmlsZTwvbWF0LWljb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIFxuICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBpZD1cInZlbmRvckltYWdlXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwibXlmaWxlXCJcbiAgICAgICAgYWNjZXB0PVwiLmRvYywuZG9jeCxhcHBsaWNhdGlvbi9tc3dvcmQsYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQsaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGcsLnBkZiwgdmlkZW8vbXA0LHZpZGVvL3gtbWF0cm9za2EsdmlkZW8veC1tc3ZpZGVvLHZpZGVvL3F1aWNrdGltZVwiXG4gICAgICAgIChjaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRJbWFnZSgkZXZlbnQsZmllbGQpXCIgY2xhc3M9XCJwYy1idG5cIiBpZD1cImJyb3dzZV9jb250YWN0X2ltYWdlXCIgI2ZpbGVJbnB1dDEgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdEUk9QRE9XTicgJiYgZmllbGQuaXNEaXNwbGF5XCIgY2xhc3M9XCJhZG1pc3Npb25cIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImlucHV0LXRleHQtMSBpbnB1dF9jYXJkXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBzdHlsZT1cIndpZHRoOjEwMCVcIj5cbiAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJpbnB1dFN0eWxlXCIgcGxhY2Vob2xkZXI9XCItLVNlbGVjdC0tXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlU2VsZWN0aW9uXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLnZhbHVlXCIgW3ZhbHVlXT1cIml0ZW0/LnZhbHVlXCIgKGNsaWNrKT1cIm1hc3RlckRyb3Bkb3duVmFsdWVDaGFuZ2UoaXRlbSwgZmllbGQpXCI+e3tpdGVtLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA9PSAwXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5zb3VyY2VEYXRhW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJpbnB1dEZpZWxkQ2hhbmdlKGl0ZW0sIGZpZWxkKVwiIFt2YWx1ZV09XCJpdGVtPy5uYW1lXCI+e3tpdGVtLm5hbWV9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdDSEVDS0JPWCcgJiYgZmllbGQuaXNEaXNwbGF5XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID4gMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi01XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQudmFsdWVcIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJcIiBpZD1cImZsZXhDaGVja0NoZWNrZWRcIiBbKG5nTW9kZWwpXT1cImRhdGEuY2hlY2tlZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJmbGV4Q2hlY2tDaGVja2VkXCI+XG4gICAgICAgICAgICB7e2RhdGEubGFiZWx9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPT0gMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi01XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQuc291cmNlRGF0YVtmaWVsZC5kYXRhU291cmNlVHlwZV1cIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJcIiBpZD1cImZsZXhDaGVja0NoZWNrZWRcIiBbKG5nTW9kZWwpXT1cImRhdGEuY2hlY2tlZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJmbGV4Q2hlY2tDaGVja2VkXCI+XG4gICAgICAgICAgICB7e2RhdGEubmFtZX19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdSQURJT0JVVFRPTicgJiYgZmllbGQuaXNEaXNwbGF5XCI+XG4gICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAyMHB4OyBtYXJnaW4tdG9wOiAxMHB4OyBoZWlnaHQ6IDM1cHg7YWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCIgbWItNVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkLnZhbHVlXCI+XG4gICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPnt7ZGF0YS5sYWJlbH19PC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiIChjaGFuZ2UpPVwicmFkaW9CdXR0b25DaGFuZ2VkKGZpZWxkLHNlbGVjdGVkS2V5LGdyb3VwKVwiPlxuICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQudmFsdWVcIiBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiPlxuICAgICAgICAgICAgICB7eyBkYXRhLmxhYmVsIH19XG4gICAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICBcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA9PSAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItNVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkLnZhbHVlXCI+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cInJhZGlvXCIgW3ZhbHVlXT1cImRhdGEubmFtZVwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiIC8+XG4gIFxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIFtmb3JdPVwiJ3JhZGlvXycgKyBkYXRhLm5hbWVcIj5cbiAgICAgICAgICAgICAge3sgZGF0YS5uYW1lIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlcz8uZGV2aWRlcj8uZGlzcGxheVwiPlxuICAgIDxzaW1wby1zdmctZGl2aWRlciBbZGl2aWRlclR5cGVdPVwic3R5bGVzPy5kZXZpZGVyPy5kZXZpZGVyVHlwZVwiXG4gICAgICBbY29sb3JdPVwibmV4dENvbXBvbmVudENvbG9yPy5jb2xvclwiPjwvc2ltcG8tc3ZnLWRpdmlkZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XG4gICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
|
832
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9yZWdpc3RyYXRpb24tZm9ybS9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3JlZ2lzdHJhdGlvbi1mb3JtL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUcsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVy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QUUsRUFBRTtZQUMvQixJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDbkQsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FyN0JVLHlCQUF5QjttR0FBekIseUJBQXlCLDRNQ3hEdEMsbXFzQkFpWUEsNnlKRC9WSSxZQUFZLGlrQkFDWixpQkFBaUIsOEJBQ2pCLG1CQUFtQiw2UUFDbkIsb0JBQW9CLDJkQUNwQixlQUFlO2dCQUNmLFdBQVc7Z0JBQ1gsa0JBQWtCLHlGQUNsQixtQkFBbUIsMEdBQ25CLGVBQWUsbUZBQ2Ysd0JBQXdCLHNJQUN4QixtQkFBbUIsbUZBQ25CLGNBQWMsZ0ZBQ2QsZ0JBQWdCLG9GQUNoQixlQUFlLGdNQUNmLGVBQWUsK3RCQUNmLFdBQVcsMHBDQUNYLGFBQWEsb0xBQ2IsY0FBYzs7NEZBS0wseUJBQXlCO2tCQTFCckMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYixjQUFjO3FCQUNmOytOQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IGZvcmtKb2luLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEdyaWRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZ3JpZC1saXN0JztcbmltcG9ydCB7IFNpbXBvRWxlbWVudHNNb2R1bGUgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9pbmRleCc7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kTW9kZWwsIFN0eWxlc01vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XG5pbXBvcnQgeyAgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCb3JkZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYm9yZGVyLWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3ZlcmxheURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9vdmVybGF5LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBJbWFnZVVwbGFvZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbWFnZS11cGxvYWQtc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwsIFJlZ2lzdHJhdGlvbkZvcm1Nb2RlbCB9IGZyb20gJy4vcmVnaXN0cmF0aW9uRm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltcG8tcmVnaXN0cmF0aW9uLWZvcm0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEdyaWRMaXN0TW9kdWxlLFxuICAgIFNpbXBvRWxlbWVudHNNb2R1bGUsXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgIC8vZGlyZWN0aXZlXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXG4gICAgQm9yZGVyRGlyZWN0aXZlLFxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxuICAgIEhvdmVyRGlyZWN0aXZlLFxuICAgIE92ZXJsYXlEaXJlY3RpdmUsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFJhZGlvTW9kdWxlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBSZWdpc3RyYXRpb25Gb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveXtcbiAgQElucHV0KCkgZGF0YT86IFJlZ2lzdHJhdGlvbkZvcm1Nb2RlbDtcbiAgQElucHV0KCkgaW5kZXg/IDogbnVtYmVyO1xuICBASW5wdXQoKSBlZGl0PyA6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG5leHRDb21wb25lbnRDb2xvcj86IEJhY2tncm91bmRNb2RlbDtcbiAgY29udGVudDogUmVnaXN0cmF0aW9uRm9ybUNvbnRlbnRNb2RlbCB8IHVuZGVmaW5lZDtcbiAgc3R5bGVzOiBTdHlsZXNNb2RlbCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIF9ldmVudFNlcnZpY2UgOiBFdmVudHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwdWJsaWMgZHM6IERvbVNhbml0aXplcixcbiAgICBwdWJsaWMgaW1hZ2VVcGxvYWRTZXJ2aWNlOiBJbWFnZVVwbGFvZFNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIE9iamVjdCA9IE9iamVjdDtcbiAgcGF5bG9hZDogYW55ID0ge1xuICAgIFwiYnVzaW5lc3NEZXRhaWxzXCI6IHtcbiAgICAgIFwiaWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxuICAgICAgXCJuYW1lXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYk5hbWVcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc05hbWVcIilcbiAgICB9LFxuICAgIFwiZmllbGRJdGVtc1wiOiBbXSxcbiAgICBcImltZ1VybFwiOiAnJyxcbiAgICAnZG9jdW1lbnRzJzogW10sXG4gICAgXCJwYXJlbnRBdXRob3JpemF0aW9uXCI6IGZhbHNlLFxuICAgIFwiYmFja3VwRG9jXCIgOiAnJyxcbiAgICBcInBheW1lbnRQbGFuVHlwZVwiIDogJ0FOTlVBTExZJyxcbiAgICBcInN1YnNjcmlwdGlvblBsYW5zXCI6IFtdLFxuICAgIFwiYWRtaXNzaW9uUGF5bWVudERldGFpbFwiOiB7XG4gICAgICBcImFtb3VudFwiOiAwLFxuICAgICAgXCJwYXltZW50RGF0ZVwiOiBuZXcgRGF0ZSgpLFxuICAgICAgXCJwYXltZW50U3RhdHVzXCI6IFwiUEVORElOR1wiLFxuICAgICAgXCJmYWlsZWRSZWFzb25cIjogXCJcIixcbiAgICAgIFwicGF5bWVudExpbmtcIjogXCJcIixcbiAgICAgIFwib2ZmbGluZVBheW1lbnRNb2RlXCI6IG51bGwsXG4gICAgICBcImNoZXF1ZUlzc3VlZEJ5XCI6IFwiXCIsXG4gICAgICBcImFjY291bnROdW1iZXJcIjogXCJcIixcbiAgICAgIFwiY2hlcXVlQmFua1wiOiBcIlwiLFxuICAgICAgXCJyZW1hcmtzXCI6IFwiXCIsXG4gICAgICBcInJlZmVyZW5jZU51bWJlclwiOiBcIlwiLFxuICAgICAgXCJvZmZsaW5lUGF5bWVudFwiOiBmYWxzZSxcbiAgICAgIFwiYXR0YWNoZW1lbnRVcmxcIjogXCJcIlxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdGVkS2V5OiBhbnk7XG4gIGZpZWxkRGF0YTogYW55ID0ge31cbiAgYnVzaW5lc3NJZDogYW55ID0gJzFlZmRkM2YwLWZjOTMtNjY4Zi1iNmQwLWZkNjBhMjU0MjQ2Myc7XG4gIHNlbGVjdGVkR3JhZGVJZDogYW55O1xuICBzZWxlY3RlZEFjYWRlbWljWWVhcjogYW55O1xuICBkb2N1bWVudExpc3Q6IGFueVtdID0gW107XG4gIGZvcm1TdGF0dXM6IHN0cmluZyA9ICcnXG4gIHN0dWRlbnRMaXZlV2l0aDogYW55ID0gJydcbiAgYmFja3VwRG9jRmlsZT86IEZpbGU7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yb3V0ZXIucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbTogYW55KSA9PiB7XG4gICAgICBpZihwYXJhbVsnZUlkJ10pXG4gICAgICAgIHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10gPSBwYXJhbVsnZUlkJ107XG5cbiAgICAgIGlmKHBhcmFtWydySWQnXSlcbiAgICAgICAgdGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddID0gcGFyYW1bJ3JJZCddO1xuXG4gICAgICBpZihwYXJhbVsnYklkJ10pXG4gICAgICAgIHRoaXMuYnVzaW5lc3NJZCA9IHBhcmFtWydiSWQnXTtcblxuICAgICAgaWYocGFyYW1bJ3RJZCddKVxuICAgICAgICB0aGlzLnBheWxvYWRbJ3RlbXBsYXRlSWQnXSA9IHBhcmFtWyd0SWQnXTtcblxuICAgICAgdGhpcy5wYXlsb2FkLmJ1c2luZXNzRGV0YWlscy5pZCA9IHRoaXMuYnVzaW5lc3NJZDtcblxuICAgICAgaWYodGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddIHx8IHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10pIHtcbiAgICAgICAgdGhpcy5nZXRGb3JtZGF0YSh0aGlzLnBheWxvYWRbJ3JlZ2lzdHJhdGlvbklkJ10gfHwgdGhpcy5wYXlsb2FkWydlbnF1aXJ5SWQnXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdldEFsbEZpZWxkcygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmdldEFMTERvY3VtZW50TGlzdCgpO1xuXG4gICAgfSlcblxuICAgIC8vIHRoaXMuYnVzaW5lc3NJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKTtcblxuICAgIHRoaXMuY29udGVudCA9IHRoaXMuZGF0YT8uY29udGVudDtcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JtRmllbGRDaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnZXRGb3JtZGF0YShhZG1pc3Npb25JZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VydmVyQ2FsbCA9IGZvcmtKb2luKHtcbiAgICAgIGFkbWlzc2lvbkRhdGE6IHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IHRoaXMucmVzdFNlcnZpY2UuZ2V0TGVhZEJ5SWQoYWRtaXNzaW9uSWQpIDogdGhpcy5yZXN0U2VydmljZS5nZXRSZWdpc3RyYXRpb25MaXN0KHtpZDogYWRtaXNzaW9uSWQsIHBhZ2VObzogMCwgcGFnZVNpemU6IDF9KSxcbiAgICAgIGZpZWxkRGF0YTogdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJylcbiAgICB9KVxuXG5cbiAgICBzZXJ2ZXJDYWxsLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGxldCBhZG1pc3Npb25EYXRhID0gdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gcmVzdWx0LmFkbWlzc2lvbkRhdGEuZGF0YSA6IHJlc3VsdC5hZG1pc3Npb25EYXRhLmRhdGEuZGF0YVswXTtcbiAgICAgIGxldCBmaWVsZERhdGEgPSByZXN1bHQuZmllbGREYXRhLmRhdGE7XG4gICAgICBmaWVsZERhdGE/LmRhdGEuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgICAgaWYgKChlbGVtZW50LmZpZWxkTGFiZWwpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3Bhc3Nwb3J0JykgJiYgZWxlbWVudC5kYXRhVHlwZSAhPSAnUkFESU9CVVRUT04nKSB7XG4gICAgICAgICAgZWxlbWVudC5pc0Rpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBlbGVtZW50LmlzRGlzcGxheSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBmaWVsZERhdGE/LmRhdGEuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgICAgaWYoZWxlbWVudC5kYXRhU291cmNlVHlwZSA9PT0gJ0NPVU5UUlknKXtcbiAgICAgICAgICBlbGVtZW50LmlzRGlzcGxheSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgZmllbGREYXRhPy5kYXRhLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc1NpYmxpbmdzR3JvdXAgPSBBcnJheS5pc0FycmF5KGVsZW1lbnQuZmllbGRHcm91cCkgJiYgZWxlbWVudC5maWVsZEdyb3VwLnNvbWUoXG4gICAgICAgICAgKGdyb3VwOmFueSkgPT4gZ3JvdXAuZmllbGRHcm91cE5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJzaWJsaW5ncyBkZXRhaWxzXCIpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChoYXNTaWJsaW5nc0dyb3VwKSB7XG4gICAgICAgICAgY29uc3QgbGFiZWxDaGVjayA9IGVsZW1lbnQuZmllbGRMYWJlbD8uaW5jbHVkZXMoJzEnKTtcbiAgICAgICAgICBjb25zdCB2YWx1ZUNoZWNrID0gISFlbGVtZW50LmZpZWxkVmFsdWU7XG4gICAgICAgICAgZWxlbWVudC5pc0Rpc3BsYXkgPSBsYWJlbENoZWNrIHx8IHZhbHVlQ2hlY2s7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgXG4gICAgICBmaWVsZERhdGEuZGF0YS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xuICAgICAgICBjb25zdCBoYXNTaWJsaW5nc0dyb3VwID0gQXJyYXkuaXNBcnJheShlbGVtZW50LmZpZWxkR3JvdXApICYmIGVsZW1lbnQuZmllbGRHcm91cC5zb21lKFxuICAgICAgICAgIChncm91cDphbnkpID0+IGdyb3VwLmZpZWxkR3JvdXBOYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwicGFzdCBzY2hvb2wgZGV0YWlsc1wiKVxuICAgICAgICApO1xuICAgICAgICBpZiAoaGFzU2libGluZ3NHcm91cCkge1xuICAgICAgICAgIGNvbnN0IGxhYmVsQ2hlY2sgPSBlbGVtZW50LmZpZWxkTGFiZWw/LmluY2x1ZGVzKCcxJyk7XG4gICAgICAgICAgY29uc3QgdmFsdWVDaGVjayA9ICEhZWxlbWVudC5maWVsZFZhbHVlO1xuICAgICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gbGFiZWxDaGVjayB8fCB2YWx1ZUNoZWNrO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZm9ybVN0YXR1cyA9IGFkbWlzc2lvbkRhdGEuc3RhdHVzXG5cbiAgICAgIC8vIHRoaXMucGF5bG9hZCA9IGFkbWlzc2lvbkRhdGE7XG4gICAgICB0aGlzLnBheWxvYWRbJ2RvY3VtZW50cyddID0gW107XG4gICAgICB0aGlzLnBheWxvYWQuYnVzaW5lc3NEZXRhaWxzLmlkID0gdGhpcy5idXNpbmVzc0lkO1xuICAgICAgdGhpcy5wYXlsb2FkLmltZ1VybCA9IGFkbWlzc2lvbkRhdGEuaW1nVXJsXG5cbiAgICAgIGFkbWlzc2lvbkRhdGFbJ2ZpZWxkTWFwJ10gPSB7fTtcbiAgICAgIGZvcihsZXQgZmllbGRJdGVtIG9mIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IChhZG1pc3Npb25EYXRhPy5maWVsZERhdGEgfHwgW10pIDogKGFkbWlzc2lvbkRhdGE/LmZpZWxkSXRlbXMgfHwgW10pKSB7XG4gICAgICAgIGlmKGZpZWxkSXRlbS5maWVsZE5hbWUgPT09ICdBY2FkZW1pYyBZZWFyJykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgPSBmaWVsZEl0ZW0uZmllbGRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZihmaWVsZEl0ZW0udHlwZSA9PT0gJ0ZBVEhFUl9JTUFHRScgfHwgZmllbGRJdGVtLnR5cGUgPT09ICdNT1RIRVJfSU1BR0UnIHx8IGZpZWxkSXRlbS50eXBlID09PSAnR1VBUkRJQU5fSU1BR0UnKXtcbiAgICAgICAgICBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2ZpZWxkSXRlbS50eXBlXSA9IGZpZWxkSXRlbS5maWVsZEltYWdlVXJsO1xuICAgICAgICB9XG4gICAgICAgIGlmICggZmllbGRJdGVtLnR5cGUgIT0gbnVsbCAmJiBmaWVsZEl0ZW0udHlwZSAhPT0gJ0ZBVEhFUl9JTUFHRScgJiYgZmllbGRJdGVtLnR5cGUgIT09ICdNT1RIRVJfSU1BR0UnICYmIGZpZWxkSXRlbS50eXBlICE9PSAnR1VBUkRJQU5fSU1BR0UnKSB7XG4gICAgICAgICAgYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZEl0ZW0udHlwZV0gPSBmaWVsZEl0ZW0uZmllbGRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaWQgPSBmaWVsZEl0ZW0uZmllbGROYW1lICsgZmllbGRJdGVtLmZpZWxkR3JvdXBOYW1lO1xuICAgICAgICBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2lkXSA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZpZWxkRGF0YSA9IHRoaXMucmVzdFNlcnZpY2UuZ2V0RmllbGRzVG9EaXNwbGF5KGZpZWxkRGF0YS5kYXRhKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKVswXVxuXG4gICAgICBmb3IobGV0IHN0ZXAgb2YgdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSkpIHtcbiAgICAgICAgZm9yKGxldCBncm91cCBvZiBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YVtzdGVwXSkpIHtcbiAgICAgICAgICBmb3IobGV0IGZpZWxkIG9mIHRoaXMuZmllbGREYXRhW3N0ZXBdW2dyb3VwXSkge1xuICAgICAgICAgICAgaWYgKGZpZWxkLnR5cGUgIT0gbnVsbCAmJiBmaWVsZC50eXBlICE9PSAnRkFUSEVSX0lNQUdFJyAmJiBmaWVsZC50eXBlICE9PSAnTU9USEVSX0lNQUdFJyAmJiBmaWVsZC50eXBlICE9PSAnR1VBUkRJQU5fSU1BR0UnKSB7XG4gICAgICAgICAgICAgIGZpZWxkLmZpZWxkVmFsdWUgPSBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2ZpZWxkLnR5cGVdO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIGlmKGZpZWxkLnR5cGUgPT09ICdGQVRIRVJfSU1BR0UnIHx8IGZpZWxkLnR5cGUgPT09ICdNT1RIRVJfSU1BR0UnIHx8IGZpZWxkLnR5cGUgPT09ICdHVUFSRElBTl9JTUFHRScpe1xuICAgICAgICAgICAgICBmaWVsZC5maWVsZEltYWdlVXJsID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC50eXBlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC5maWVsZExhYmVsICsgZ3JvdXBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZihmaWVsZD8udHlwZSA9PT0gJ0dSQURFJylcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVHcmFkZShmaWVsZC5zb3VyY2VEYXRhW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXSwgZmllbGQuZmllbGRWYWx1ZSk7XG5cbiAgICAgICAgICAgIGlmKGZpZWxkLnR5cGUgPT09ICdBQ0FERU1JQ19ZRUFSJylcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVBY2FkZW1pY1llYXIoZmllbGQuc291cmNlRGF0YVtmaWVsZC5kYXRhU291cmNlVHlwZV0sIGZpZWxkLmZpZWxkVmFsdWUpXG5cbiAgICAgICAgICAgIGlmKGZpZWxkLmRhdGFUeXBlID09PSAnQ0hFQ0tCT1gnKSB7XG4gICAgICAgICAgICAgIHRoaXMuZm9ybWF0Q2hlY2tCb3hWYWx1ZShmaWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ2V0RmVlU3RydWN0dXJlKCk7XG4gICAgfSlcblxuICB9XG5cbiAgdXBkYXRlR3JhZGUoZ3JhZGVMaXN0IDphbnlbXSwgZ3JhZGVOYW1lOiBhbnkpIHtcbiAgICBmb3IobGV0IGdyYWRlIG9mIGdyYWRlTGlzdCkge1xuICAgICAgaWYoZ3JhZGUubmFtZSA9PT0gZ3JhZGVOYW1lKXtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyYWRlSWQgPSBncmFkZS5pZDtcbiAgICAgICAgdGhpcy5pbnB1dEZpZWxkQ2hhbmdlKHt9LGdyYWRlKVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVBY2FkZW1pY1llYXIoYWNZZWFyTGlzdDphbnlbXSxhY3lOYW1lOiBhbnkpe1xuICAgIGZvciAobGV0IGF5IG9mIGFjWWVhckxpc3QpIHtcbiAgICAgIGlmKGF5Lm5hbWUgPT09IGFjeU5hbWUpe1xuICAgICAgICB0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyID0gYXlcbiAgICAgICAgdGhpcy5pbnB1dEZpZWxkQ2hhbmdlKHt9LGF5KVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIFxuICAgIH0gXG4gIH1cblxuICBmb3JtYXRDaGVja0JveFZhbHVlKGZpZWxkOiBhbnkpIHtcbiAgICBpZihmaWVsZC52YWx1ZSkge1xuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnZhbHVlKSB7XG4gICAgICAgIGlmKGZpZWxkLmZpZWxkVmFsdWU/LmluY2x1ZGVzKGZpZWxkVmFsdWUudmFsdWUpKSB7XG4gICAgICAgICAgZmllbGRWYWx1ZS5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcihsZXQgZmllbGRWYWx1ZSBvZiBmaWVsZC5zb3VyY2VEYXRhPy5bZmllbGQuZGF0YVNvdXJjZVR5cGVdIHx8IFtdKSB7XG4gICAgICAgIGlmKGZpZWxkLmZpZWxkVmFsdWU/LmluY2x1ZGVzKGZpZWxkVmFsdWUubmFtZSkpIHtcbiAgICAgICAgICBmaWVsZFZhbHVlLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBnZXRBbGxGaWVsZHMoKSB7XG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuXG4gICAgICByZXMuZGF0YS5kYXRhLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICAgIGlmICgoZWxlbWVudC5maWVsZExhYmVsKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdwYXNzcG9ydCcpICYmIGVsZW1lbnQuZGF0YVR5cGUgIT0gJ1JBRElPQlVUVE9OJykge1xuICAgICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZWxlbWVudC5pc0Rpc3BsYXkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmVzLmRhdGEuZGF0YS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xuICAgICAgICBpZihlbGVtZW50LmRhdGFTb3VyY2VUeXBlID09PSAnQ09VTlRSWScpe1xuICAgICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjdXJyZW50WWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNvbnN0IG5leHRZZWFyID0gY3VycmVudFllYXIgKyAxO1xuXG4gICAgICByZXMuZGF0YS5kYXRhLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LmRhdGFUeXBlICE9PSAnRFJPUERPV04nKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGVsZW1lbnQudmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICAgIGVsZW1lbnQuZmllbGRWYWx1ZSA9IGVsZW1lbnQudmFsdWVbMF0udmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgc291cmNlTGlzdCA9IGVsZW1lbnQuc291cmNlRGF0YVtlbGVtZW50LmRhdGFTb3VyY2VUeXBlXTtcbiAgICAgICAgICBpZiAoZWxlbWVudC5maWVsZExhYmVsID09PSAnQWNhZGVtaWMgWWVhcicpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc291cmNlTGlzdC5maW5kKChlOmFueSkgPT4gZS5uYW1lID09PSBgJHtjdXJyZW50WWVhcn0tJHtuZXh0WWVhcn1gKTtcbiAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICBlbGVtZW50LmZpZWxkVmFsdWUgPSBtYXRjaC5uYW1lO1xuICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRDaGFuZ2UobWF0Y2gsIGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoc291cmNlTGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBlbGVtZW50LmZpZWxkVmFsdWUgPSBzb3VyY2VMaXN0WzBdLm5hbWU7XG4gICAgICAgICAgICB0aGlzLmlucHV0RmllbGRDaGFuZ2Uoc291cmNlTGlzdFswXSwgZWxlbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmVzLmRhdGEuZGF0YS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xuICAgICAgICBjb25zdCBoYXNTaWJsaW5nc0dyb3VwID0gQXJyYXkuaXNBcnJheShlbGVtZW50LmZpZWxkR3JvdXApICYmIGVsZW1lbnQuZmllbGRHcm91cC5zb21lKFxuICAgICAgICAgIChncm91cDphbnkpID0+IGdyb3VwLmZpZWxkR3JvdXBOYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwic2libGluZ3MgZGV0YWlsc1wiKVxuICAgICAgICApO1xuICAgICAgICBpZiAoaGFzU2libGluZ3NHcm91cCkge1xuICAgICAgICAgIGNvbnN0IGxhYmVsQ2hlY2sgPSBlbGVtZW50LmZpZWxkTGFiZWw/LmluY2x1ZGVzKCcxJyk7XG4gICAgICAgICAgY29uc3QgdmFsdWVDaGVjayA9ICEhZWxlbWVudC5maWVsZFZhbHVlO1xuICAgICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gbGFiZWxDaGVjayB8fCB2YWx1ZUNoZWNrO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmVzLmRhdGEuZGF0YS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xuICAgICAgICBjb25zdCBoYXNTaWJsaW5nc0dyb3VwID0gQXJyYXkuaXNBcnJheShlbGVtZW50LmZpZWxkR3JvdXApICYmIGVsZW1lbnQuZmllbGRHcm91cC5zb21lKFxuICAgICAgICAgIChncm91cDphbnkpID0+IGdyb3VwLmZpZWxkR3JvdXBOYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwicGFzdCBzY2hvb2wgZGV0YWlsc1wiKVxuICAgICAgICApO1xuICAgICAgICBpZiAoaGFzU2libGluZ3NHcm91cCkge1xuICAgICAgICAgIGNvbnN0IGxhYmVsQ2hlY2sgPSBlbGVtZW50LmZpZWxkTGFiZWw/LmluY2x1ZGVzKCcxJyk7XG4gICAgICAgICAgY29uc3QgdmFsdWVDaGVjayA9ICEhZWxlbWVudC5maWVsZFZhbHVlO1xuICAgICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gbGFiZWxDaGVjayB8fCB2YWx1ZUNoZWNrO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5maWVsZERhdGEgPSB0aGlzLnJlc3RTZXJ2aWNlLmdldEZpZWxkc1RvRGlzcGxheShyZXMuZGF0YS5kYXRhKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKVswXTtcbiAgICB9KVxuICB9XG5cbiAgZ2V0QUxMRG9jdW1lbnRMaXN0KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBcImJ1c2luZXNzSWRcIjogdGhpcy5idXNpbmVzc0lkLFxuICAgICAgXCJzb3J0QnlcIjogXCJcIixcbiAgICAgIFwic29ydE9yZGVyXCI6IFwiXCIsXG4gICAgICBcInN0YXR1c1wiOiB0cnVlLFxuICAgICAgXCJpc0RlbGV0ZWRcIjogZmFsc2VcbiAgICB9XG5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbERvY3VtZW50KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZG9jdW1lbnRMaXN0ID0gcmVzLmRhdGEuZGF0YTtcbiAgICB9KVxuICB9XG5cbiAgZm9ybUZpZWxkQ2hhbmdlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBmb3JtRmllbGRDaGFuZ2VkKCkge1xuICAgIHRoaXMuZm9ybUZpZWxkQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5fZXZlbnRTZXJ2aWNlLmZvcm1GaWVsZENoYW5nZWQuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5nZXRBbGxGaWVsZHMoKTtcbiAgICB9KVxuICB9XG5cblxuXG4gIGFzeW5jIHN1Ym1pdEZvcm0oKSB7XG4gICAgdGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMgPSB0aGlzLmNvbnZlcnRUb0xpc3RPZkZpZWxkcygpO1xuICAgIGlmKHRoaXMucGF5bG9hZC5maWVsZEl0ZW1zLmxlbmd0aCA9PSAwKVxuICAgICAgcmV0dXJuO1xuXG4gICAgaWYodGhpcy5maWxlRGF0YSkge1xuICAgICAgbGV0IGltYWdlRGF0YTogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUodGhpcy5maWxlRGF0YSk7XG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gaW1hZ2VEYXRhLnVybCB8fCBpbWFnZURhdGEuX3Jlc3BvbnNlPy5yZXF1ZXN0Py51cmxcbiAgICB9XG5cbiAgICB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyB0aGlzLmNyZWF0ZVJlZ2lzdHJhdGlvbigpIDogdGhpcy5jcmVhdGVBZG1pc3Npb24oKTtcbiAgfVxuXG4gIHJlZ2lzdHJhdGlvblN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgYXN5bmMgY3JlYXRlUmVnaXN0cmF0aW9uKCkge1xuICAgIC8vIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPVJFR0lTVFJBVElPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YCAvL3Byb2R1Y3Rpb25cbiAgICB0aGlzLnBheWxvYWRbJ3JldHVyblVybCddID0gYGh0dHBzOi8vc3RhZ2UtcG9ydGFsLmNtaXMuYWMuaW4vdmVyaWZ5LXBheW1lbnQvP3VybD10cnVlJnR5cGU9UkVHSVNUUkFUSU9OJmJJZD0ke3RoaXMuYnVzaW5lc3NJZH1gIC8vZGV2XG4gICAgLy8gdGhpcy5wYXlsb2FkWydyZXR1cm5VcmwnXSA9IGBodHRwczovL3N0YWdlLmNtaXMudGVqc29mdC5jb20vdmVyaWZ5LXBheW1lbnQvP3VybD10cnVlJnR5cGU9UkVHSVNUUkFUSU9OJmJJZD0ke3RoaXMuYnVzaW5lc3NJZH1gIC8vc3RhZ2VcbiAgICBmb3IobGV0IGluZmllbGREb2N1bWVudCBvZiB0aGlzLnBheWxvYWQuZmllbGRJdGVtcyl7XG4gICAgICBpZihpbmZpZWxkRG9jdW1lbnQuZmllbGRJbWFnZVVybCl7XG4gICAgICAgIGxldCBpbWFnZURhdGEgOiBhbnkgPSBhd2FpdCB0aGlzLmltYWdlVXBsb2FkU2VydmljZS51cGxvYWRGaWxlSW5BenVyZShpbmZpZWxkRG9jdW1lbnQuc2VsZWN0ZWRJbWFnZURhdGEpO1xuICAgICAgICBpbmZpZWxkRG9jdW1lbnQuZmllbGRJbWFnZVVybCA9IGltYWdlRGF0YS51cmwgfHwgaW1hZ2VEYXRhLl9yZXNwb25zZT8ucmVxdWVzdD8udXJsO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJlZ2lzdHJhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucmVzdFNlcnZpY2UuY3JlYXRlUmVnaXN0cmF0aW9uRm9yUGF5bWVudCh0aGlzLnBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIC8vIHRoaXMuc25hY2tCYXIub3BlbignUmVnaXN0cmF0aW9uIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5JywgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSk7XG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHtyZXNwb25zZTogcmVzLCBwYXltZW50VHlwZTonUkVHSVNUUkFUSU9OJ30pO1xuICAgIH0pXG4gIH1cblxuICBhc3luYyBjcmVhdGVBZG1pc3Npb24oKSB7XG4gICAgLy8gaWYodGhpcy5wYXlsb2FkLnBheW1lbnRQbGFuVHlwZSA9PT0gJ1RFUk0nICYmICh0aGlzLnBheWxvYWQ/LnN0dWRlbnRGZWVTdHJ1Y3R1cmU/LnRlcm1QYXltZW50TGlzdD8ubGVuZ3RoIHx8IDApID09IDApe1xuICAgIC8vICAgdGhpcy5zbmFja0Jhci5vcGVuKCdQbGVhc2Ugc2VsZWN0IHRlcm0nKTtcbiAgICAvLyAgIHJldHVybjtcbiAgICAvLyB9XG5cbiAgICAvLyB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZVsncGF5bWVudFBsYW5UeXBlJ10gPSB0aGlzLnBheWxvYWQucGF5bWVudFBsYW5UeXBlO1xuICAgIC8vIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPUFETUlTU0lPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YDsgLy9wcm9kdWN0aW9uXG4gICAgdGhpcy5wYXlsb2FkWydyZXR1cm5VcmwnXSA9IGBodHRwczovL3N0YWdlLXBvcnRhbC5jbWlzLmFjLmluL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPUFETUlTU0lPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YDsgLy9kZXZcbiAgICAvLyB0aGlzLnBheWxvYWRbJ3JldHVyblVybCddID0gYGh0dHBzOi8vc3RhZ2UuY21pcy50ZWpzb2Z0LmNvbS92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1BRE1JU1NJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWA7IC8vc3RhZ2VcblxuICAgIGlmKHRoaXMuYmFja3VwRG9jRmlsZSkge1xuICAgICAgbGV0IGltYWdlRGF0YTogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUodGhpcy5iYWNrdXBEb2NGaWxlKTtcbiAgICAgIC8vIHRoaXMucGF5bG9hZC5iYWNrdXBEb2MgPSBpbWFnZURhdGEudXJsXG4gICAgICB0aGlzLnBheWxvYWQuYmFja3VwRG9jID0gaW1hZ2VEYXRhLnVybCB8fCBpbWFnZURhdGEuX3Jlc3BvbnNlPy5yZXF1ZXN0Py51cmw7XG4gICAgfVxuXG4gICAgZm9yKGxldCBkb2N1bWVudCBvZiB0aGlzLmRvY3VtZW50TGlzdCkge1xuICAgICAgaWYoZG9jdW1lbnQuZmlsZSkge1xuICAgICAgICBsZXQgaW1hZ2VEYXRhOiBhbnkgPSBhd2FpdCB0aGlzLmltYWdlVXBsb2FkU2VydmljZS51cGxvYWRGaWxlSW5BenVyZShkb2N1bWVudC5maWxlKTtcblxuICAgICAgICB0aGlzLnBheWxvYWRbJ2RvY3VtZW50cyddLnB1c2goXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogZG9jdW1lbnQuZGlzcGxheVRleHQsXG4gICAgICAgICAgICB1cmw6IGltYWdlRGF0YS51cmwgfHwgaW1hZ2VEYXRhLl9yZXNwb25zZT8ucmVxdWVzdD8udXJsLFxuICAgICAgICAgICAgZG9jVHlwZTogZG9jdW1lbnQubmFtZSxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRUeXBlOiBkb2N1bWVudC50eXBlXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yKGxldCBpbmZpZWxkRG9jdW1lbnQgb2YgdGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMpe1xuICAgICAgaWYoaW5maWVsZERvY3VtZW50LmZpZWxkSW1hZ2VVcmwpe1xuICAgICAgICBpZighaW5maWVsZERvY3VtZW50LmZpZWxkSW1hZ2VVcmwuaW5jbHVkZXMoJ2h0dHBzOicpKXtcbiAgICAgICAgICBsZXQgaW1hZ2VEYXRhIDogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUoaW5maWVsZERvY3VtZW50LnNlbGVjdGVkSW1hZ2VEYXRhKTtcbiAgICAgICAgICBpbmZpZWxkRG9jdW1lbnQuZmllbGRJbWFnZVVybCA9IGltYWdlRGF0YS51cmwgfHwgaW1hZ2VEYXRhLl9yZXNwb25zZT8ucmVxdWVzdD8udXJsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMucGF5bG9hZClcbiAgICB0aGlzLnBheWxvYWQuYWRtaXNzaW9uUGF5bWVudERldGFpbC5hbW91bnQgPSB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZVYyLnRvdGFsRmVlO1xuICAgIHRoaXMucmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5yZXN0U2VydmljZS5jcmVhdGVBZG1pc3Npb24odGhpcy5wYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAvLyB0aGlzLnNuYWNrQmFyLm9wZW4oJ0FkbWlzc2lvbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseScsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xuICAgICAgbGV0IGFkbWlzc2lvbkRhdGEgPSByZXMuZGF0YVxuICAgICAgbGV0IHBheWxvYWQgPSB7XG4gICAgICAgIFwibWFpbFBheW1lbnRMaW5rXCI6d2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAgIFwiZmVlU3VtbWFyeUlkXCI6IGFkbWlzc2lvbkRhdGEuaWQsXG4gICAgICAgIFwibmFtZVwiOiB0aGlzLmZldGNoU3R1ZGVudERldGFpbHMoYWRtaXNzaW9uRGF0YS5maWVsZEl0ZW1zLCdTVFVERU5UX05BTUUnKSxcbiAgICAgICAgXCJhbW91bnRcIjogYWRtaXNzaW9uRGF0YS5zdHVkZW50RmVlU3RydWN0dXJlVjIudG90YWxGZWUsXG4gICAgICAgIFwibW9iaWxlXCI6IHRoaXMuZmV0Y2hTdHVkZW50RGV0YWlscyhhZG1pc3Npb25EYXRhLmZpZWxkSXRlbXMsJ0NPTlRBQ1RfTU9CSUxFJyksXG4gICAgICAgIFwiZW1haWxcIjogdGhpcy5mZXRjaFN0dWRlbnREZXRhaWxzKGFkbWlzc2lvbkRhdGEuZmllbGRJdGVtcywnQ09OVEFDVF9FTUFJTCcpLFxuICAgICAgICBcImZlZUNvbmZpZ1wiOiBhZG1pc3Npb25EYXRhLnN0dWRlbnRGZWVTdHJ1Y3R1cmVWMi5mZWVDb25maWcsXG4gICAgICAgIFwicHJlQWRtaXNzaW9uSWRcIjphZG1pc3Npb25EYXRhLmlkLFxuICAgICAgICBcInNlbGVjdGVkU3RvcERldGFpbFwiOmFkbWlzc2lvbkRhdGEuc2VsZWN0ZWRTdG9wRGV0YWlsLFxuICAgICAgICBcInN1YnNjcmlwdGlvblBsYW5zXCI6YWRtaXNzaW9uRGF0YS5zdWJzY3JpcHRpb25QbGFuc1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmNyZWF0ZVBheW1lbnRMaW5rKHBheWxvYWQpLnN1YnNjcmliZShcbiAgICAgICAgKHJlczphbnkpID0+IHtcbiAgICAgICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHtyZXNwb25zZTogcmVzLCBwYXltZW50VHlwZTonQURNSVNTSU9OJ30pO1xuICAgICAgICB9XG4gICAgICApXG4gICAgfSlcbiAgfVxuXG4gIGZldGNoU3R1ZGVudERldGFpbHMoYXJyYXk6YW55LGdldFR5cGU6IGFueSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheS5maW5kKChlbDphbnkpID0+IGVsLnR5cGUgPT09IGdldFR5cGUpO1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5maWVsZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb252ZXJ0VG9MaXN0T2ZGaWVsZHMoKSB7XG4gICAgbGV0IGZpZWxkTGlzdDogYW55W10gPSBbXTtcblxuICAgIGZvcihsZXQgc3RlcCBvZiB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKSkge1xuICAgICAgZm9yKGxldCBncm91cCBvZiBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YVtzdGVwXSkpIHtcblxuICAgICAgICBpZihncm91cCA9PSAnQmFja3VwIENvbnRhY3QnICYmIHRoaXMuc3R1ZGVudExpdmVXaXRoICE9ICdzaW5nbGUgcGFyZW50JylcbiAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBmb3IobGV0IGZpZWxkIG9mIHRoaXMuZmllbGREYXRhW3N0ZXBdW2dyb3VwXSkge1xuICAgICAgICAgIGlmKGZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5maWVsZFZhbHVlICYmIGZpZWxkLmRhdGFUeXBlICE9ICdDSEVDS0JPWCcgJiYgIWZpZWxkLmZpZWxkSW1hZ2VVcmwpIHtcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgUGxlYXNlIGVudGVyICR7ZmllbGQuZmllbGRMYWJlbH1gLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgY2hlY2tCb3hWYWx1ZTogYW55W10gPSBbXTtcbiAgICAgICAgICBpZihmaWVsZC5kYXRhVHlwZSA9PT0gJ0NIRUNLQk9YJykge1xuICAgICAgICAgICAgY2hlY2tCb3hWYWx1ZSA9IHRoaXMuZ2V0Q2hlY2tCb3hWYWx1ZShmaWVsZCk7XG5cbiAgICAgICAgICAgIGlmKGNoZWNrQm94VmFsdWUubGVuZ3RoICA9PSAwICYmIGZpZWxkLnJlcXVpcmVkKXtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGBQbGVhc2UgZW50ZXIgJHtmaWVsZC5maWVsZExhYmVsfWAsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xuICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmllbGRMaXN0LnB1c2goe1xuICAgICAgICAgICAgZmllbGRJZDogZmllbGQuZmllbGRJZCxcbiAgICAgICAgICAgIGZpZWxkTmFtZTogZmllbGQuZmllbGRMYWJlbCxcbiAgICAgICAgICAgIGZpZWxkVmFsdWU6IGZpZWxkLmRhdGFUeXBlICE9PSAnQ0hFQ0tCT1gnID8gZmllbGQuZmllbGRWYWx1ZSA6IGNoZWNrQm94VmFsdWUsXG4gICAgICAgICAgICBmaWVsZEdyb3VwSWQ6IGZpZWxkLmZpZWxkR3JvdXBJZCxcbiAgICAgICAgICAgIGZpZWxkR3JvdXBOYW1lOiBncm91cCxcbiAgICAgICAgICAgIGZpZWxkU3RlcElkOiBmaWVsZC5maWVsZFN0ZXBJZCxcbiAgICAgICAgICAgIGZpZWxkU3RlcE5hbWU6IHN0ZXAsXG4gICAgICAgICAgICB0eXBlOiBmaWVsZC50eXBlLFxuICAgICAgICAgICAgZmllbGRJbWFnZVVybCA6IGZpZWxkLmZpZWxkSW1hZ2VVcmwsXG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlRGF0YSA6IGZpZWxkLnNlbGVjdGVkSW1hZ2VEYXRhLFxuICAgICAgICAgICAgZGF0YVR5cGU6IGZpZWxkPy5kYXRhVHlwZVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaWVsZExpc3Q7XG4gIH1cblxuICBnZXRDaGVja0JveFZhbHVlKGZpZWxkOiBhbnkpIHtcbiAgICBsZXQgcmVzcG9uc2U6IGFueVtdID0gW107XG5cbiAgICBpZihmaWVsZC52YWx1ZSkge1xuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnZhbHVlKSB7XG4gICAgICAgIGlmKGZpZWxkVmFsdWUuY2hlY2tlZCkge1xuICAgICAgICAgIHJlc3BvbnNlLnB1c2goZmllbGRWYWx1ZS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnNvdXJjZURhdGE/LltmaWVsZC5kYXRhU291cmNlVHlwZV0gfHwgW10pIHtcbiAgICAgICAgaWYoZmllbGRWYWx1ZS5jaGVja2VkKSB7XG4gICAgICAgICAgcmVzcG9uc2UucHVzaChmaWVsZFZhbHVlLm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgZmlsZURhdGE/OiBGaWxlO1xuICB1cGRhdGVBZG1pc3Npb25JbWFnZShldjogYW55KSB7XG4gICAgbGV0IGZpbGVJbnB1dCA6IGFueSA9IGV2LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHRoaXMuZmlsZURhdGEgPSBmaWxlSW5wdXQuZmlsZXNbMF07XG5cbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgcmVhZGVyLm9ubG9hZCA9IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gcmVzcG9uc2UudGFyZ2V0LnJlc3VsdDtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGVEYXRhID8gcmVhZGVyLnJlYWRBc0RhdGFVUkwodGhpcy5maWxlRGF0YSkgOiBudWxsO1xuXG4gICAgZmlsZUlucHV0LnZhbHVlID0gJydcbiAgfVxuXG4gIGRlbGV0ZUltZygpIHtcbiAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gJyc7XG4gICAgdGhpcy5maWxlRGF0YSA9IHVuZGVmaW5lZDtcbiAgfSAgcmVkaXJlY3RUb1BheW1lbnQoKSB7XG4gICAgaWYoISh0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyICYmICB0aGlzLnNlbGVjdGVkR3JhZGVJZCkpe1xuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdTZWxlY3RlZCBHcmFkZSBhbmQgQWNhZGVtaWMgWWVhciBmaXJzdCcsJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSlcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEtleSA9ICdQYXltZW50J1xuICB9XG5cbiAgY29udGludWVBZG1pc3Npb24oKSB7XG4gICAgbGV0IHN0ZXBzID0gT2JqZWN0LmtleXModGhpcy5maWVsZERhdGEpO1xuICAgIGxldCBpbmRleCA9IHN0ZXBzLmluZGV4T2YodGhpcy5zZWxlY3RlZEtleSk7XG5cbiAgICBpZih0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybScgJiYgdGhpcy5zZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyAmJiAhKHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgJiYgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkKSkge1xuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdTZWxlY3RlZCBHcmFkZSBhbmQgQWNhZGVtaWMgWWVhciBmaXJzdCcsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYodGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nKVxuICAgICAgdGhpcy5zZWxlY3RlZEtleSA9IGluZGV4ID09PSBzdGVwcy5sZW5ndGggLSAxID8gJ0RvY3VtZW50JyA6IHRoaXMuc2VsZWN0ZWRLZXkgPT09ICdEb2N1bWVudCcgPyAnUGF5bWVudCcgOiBzdGVwc1tpbmRleCArIDFdO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSBzdGVwc1tpbmRleCArIDFdXG4gIH1cblxuICBzdWJzY3JpcHRpb25zRGF0YTogYW55W10gPSBbXVxuICB0ZXJtUGF5bWVudExpc3Q6IGFueVtdID0gW107XG5cbiAgZ2V0RmVlU3RydWN0dXJlKCkge1xuICAgIGlmKCF0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyIHx8ICF0aGlzLnNlbGVjdGVkR3JhZGVJZClcbiAgICAgIHJldHVybjtcbiAgICBcbiAgICBsZXQgcGF5bG9hZCA9IHtcbiAgICAgIC8vIFwiYnVzaW5lc3NJZFwiOiB0aGlzLmJ1c2luZXNzSWQsXG4gICAgICAvLyBcInN0YXJ0WWVhclwiOiBOdW1iZXIoeWVhclswXSksXG4gICAgICAvLyBcImVuZFllYXJcIjogTnVtYmVyKHllYXJbMV0pLFxuICAgICAgLy8gXCJwYWdlTm9cIjogMCxcbiAgICAgIC8vIFwic2l6ZVwiOiAxLFxuICAgICAgLy8gXCJncmFkZUlkc1wiOiBbdGhpcy5zZWxlY3RlZEdyYWRlSWRdLFxuICAgICAgLy8gXCJzZWFyY2hUZXh0XCI6IFwiXCJcbiAgICAgIGFjYWRlbWljWWVhcklkIDogW3RoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIuaWRdLFxuICAgICAgYnVzaW5lc3NJZCA6IHRoaXMuYnVzaW5lc3NJZCxcbiAgICAgIGdyYWRlSWRzIDogW3RoaXMuc2VsZWN0ZWRHcmFkZUlkXSxcbiAgICAgIHBhZ2VObyA6IDAsXG4gICAgICBwYWdlU2l6ZSA6IDEwMDAsXG4gICAgICBzZWFyY2hUZXh0IDogXCJcIlxuICAgIH1cblxuICAgIHRoaXMucmVzdFNlcnZpY2UubmV3RmVlU3RydWN0dXJlR2V0TGlzdChwYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZVYyID0gcmVzLmRhdGEuZGF0YVswXTtcbiAgICAgIHRoaXMuZ2V0QWxsU3ViY3JpcHRpb24oKTtcbiAgICAgIC8vIHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlID0gcmVzLmRhdGEuZGF0YVswXTtcbiAgICAgIC8vIHRoaXMuc3Vic2NyaXB0aW9uc0RhdGEgPSAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS5zdWJzY3JpcHRpb25QbGFucykpO1xuICAgICAgLy8gdGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUuc3Vic2NyaXB0aW9uUGxhbnMgPSBbXTtcbiAgICAgIC8vIHRoaXMudGVybVBheW1lbnRMaXN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZT8udGVybVBheW1lbnRMaXN0IHx8ICcnKSk7XG4gICAgICAvLyB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS50ZXJtUGF5bWVudExpc3QgPSBbXTtcbiAgICB9KVxuICB9XG5cbiAgZ2V0QWxsU3ViY3JpcHRpb24oKXtcbiAgICBjb25zdCBzZXJ2ZXJDYWxsID0gZm9ya0pvaW4oe1xuICAgICAgYWxsU3Vic2NyaXB0aW9ucyA6IHRoaXMucmVzdFNlcnZpY2UuZ2V0QWN0aXZlU3Vic2NyaXB0aW9uRm9yRmVlU3RydWN0dXJlKHRoaXMuYnVzaW5lc3NJZCx0aGlzLnNlbGVjdGVkR3JhZGVJZClcbiAgICB9KVxuICAgIHNlcnZlckNhbGwuc3Vic2NyaWJlKChyZXM6YW55KT0+e1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zRGF0YSA9IHJlcy5hbGxTdWJzY3JpcHRpb25zLmRhdGEuZGF0YVxuICAgICAgcmVzLmFsbFN1YnNjcmlwdGlvbnMuZGF0YS5kYXRhLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICAgIGlmICghZWxlbWVudC5uZXdQcmljaW5nTGlzdCkge1xuICAgICAgICAgIGVsZW1lbnQubmV3UHJpY2luZ0xpc3QgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5rZXlzKGVsZW1lbnQucHJpY2luZykuZm9yRWFjaCgocHJpY2U6IGFueSkgPT4ge1xuICAgICAgICAgIGVsZW1lbnQubmV3UHJpY2luZ0xpc3QucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiBwcmljZSxcbiAgICAgICAgICAgIGFtb3VudDogZWxlbWVudC5wcmljaW5nW3ByaWNlXSxcbiAgICAgICAgICAgIHNlbGVjdGVTdGF0dXM6IGZhbHNlLFxuICAgICAgICAgICAgcGFpZDpmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pXG4gIH1cblxuICBpbnB1dEZpZWxkQ2hhbmdlKGl0ZW06IGFueSwgZmllbGQ6IGFueSkge1xuICAgIGlmKGZpZWxkLmZpZWxkTGFiZWwgPT09ICdBY2FkZW1pYyBZZWFyJykge1xuICAgICAgdGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciA9IGl0ZW07XG4gICAgICB0aGlzLmdldEZlZVN0cnVjdHVyZSgpO1xuICAgIH1cbiAgICBpZihmaWVsZC5maWVsZExhYmVsID09PSAnR3JhZGUnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR3JhZGVJZCA9IGl0ZW0uaWQ7XG4gICAgICB0aGlzLmdldEZlZVN0cnVjdHVyZSgpO1xuICAgIH1cbiAgfVxuXG4gIG1hc3RlckRyb3Bkb3duVmFsdWVDaGFuZ2UoaXRlbTogYW55LCBmaWVsZDogYW55KSB7XG4gICAgaWYoZmllbGQuZmllbGRMYWJlbCA9PT0gJ1N0dWRlbnQgbGl2ZSB3aXRoJykge1xuICAgICAgdGhpcy5zdHVkZW50TGl2ZVdpdGggPSBpdGVtLnZhbHVlXG4gICAgfVxuICAgIGlmKGZpZWxkLnR5cGUgPT09ICdOQVRJT05BTElUWScpe1xuICAgICAgaWYoZmllbGQuZmllbGRWYWx1ZSA9PT0gJ05SSScpe1xuICAgICAgICB0aGlzLmZpZWxkRGF0YVsnU3R1ZGVudCBEZXRhaWxzJ11bJ0lkZW50aXR5IGluZm9ybWF0aW9uJ10uZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgICAgICBpZihlbGVtZW50LmRhdGFTb3VyY2VUeXBlID09PSAnQ09VTlRSWScpe1xuICAgICAgICAgICAgZWxlbWVudC5pc0Rpc3BsYXkgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZihmaWVsZC5maWVsZFZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2luZGlhbicpKXtcbiAgICAgICAgdGhpcy5maWVsZERhdGFbJ1N0dWRlbnQgRGV0YWlscyddWydJZGVudGl0eSBpbmZvcm1hdGlvbiddLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICAgICAgaWYoZWxlbWVudC5kYXRhU291cmNlVHlwZSA9PT0gJ0NPVU5UUlknKXtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGxvYWRCYWNrVXBEb2N1bWVudChldjogYW55KSB7XG4gICAgdGhpcy5iYWNrdXBEb2NGaWxlID0gZXYuc3JjRWxlbWVudC5maWxlc1swXTtcbiAgfVxuXG5cbiAgYXJyYW5nZVN1YnNjcmlwdGlvbkZvckFkbWlzc2lvbihzdWJzY3JpcHRpb25MaXN0OiBhbnlbXSkge1xuICAgIGxldCByZXNwb25zZTogYW55ID0ge307XG5cbiAgICBmb3IobGV0IHN1YnNjcmlwdGlvbiBvZiBzdWJzY3JpcHRpb25MaXN0KSB7XG4gICAgICBpZighcmVzcG9uc2Vbc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvblR5cGVdKSB7XG4gICAgICAgIHJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXSA9IFtdO1xuICAgICAgfVxuICAgICAgcmVzcG9uc2Vbc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvblR5cGVdLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBhcnJhbmdlRmVlQ29uZmlnKGZlZUNvbmZpZ0xpc3Q6IGFueVtdKSB7XG4gICAgbGV0IHJlc3BvbnNlOiBhbnkgPSB7fTtcblxuICAgIGZvcihsZXQgY29uZmlnIG9mIGZlZUNvbmZpZ0xpc3QpIHtcbiAgICAgIGlmKCFyZXNwb25zZVtjb25maWcuZmVlVHlwZV0pXG4gICAgICAgIHJlc3BvbnNlW2NvbmZpZy5mZWVUeXBlXSA9IFtdO1xuXG4gICAgICByZXNwb25zZVtjb25maWcuZmVlVHlwZV0ucHVzaChjb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIGdldE1heERhdGUoaXRlbTphbnkpIHtcbiAgICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IChpdGVtLmZpZWxkTGFiZWwgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGZpZWxkR3JvdXBOYW1lID0gKGl0ZW0uZmllbGRHcm91cCB8fCBbXSkuZmxhdE1hcCgoZzphbnkpID0+IFtcbiAgICAgIChnLmZpZWxkR3JvdXBOYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgKGcuZmllbGRTdGVwTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKVxuICAgIF0pO1xuICBcbiAgICBpZiAoZm9ybWF0dGVkTGFiZWwuaW5jbHVkZXMoJ2RvYicpKSB7XG4gICAgICBjb25zdCB0ZW1wRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIFxuICAgICAgaWYgKGZpZWxkR3JvdXBOYW1lLnNvbWUoKG5hbWU6YW55KSA9PiBuYW1lLmluY2x1ZGVzKCdzdHVkZW50JykpKSB7XG4gICAgICAgIHRlbXBEYXRlLnNldEZ1bGxZZWFyKHRlbXBEYXRlLmdldEZ1bGxZZWFyKCkgLSAzKTtcbiAgICAgICAgcmV0dXJuIHRlbXBEYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgIH1cbiAgXG4gICAgICBpZiAoZmllbGRHcm91cE5hbWUuc29tZSgobmFtZTphbnkpID0+IG5hbWUuaW5jbHVkZXMoJ21vdGhlcicpKSkge1xuICAgICAgICB0ZW1wRGF0ZS5zZXRGdWxsWWVhcih0ZW1wRGF0ZS5nZXRGdWxsWWVhcigpIC0gMTgpO1xuICAgICAgICByZXR1cm4gdGVtcERhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICAgICAgfVxuICBcbiAgICAgIGlmIChmaWVsZEdyb3VwTmFtZS5zb21lKChuYW1lOmFueSkgPT4gbmFtZS5pbmNsdWRlcygnZmF0aGVyJykgfHwgbmFtZS5pbmNsdWRlcygnZ3VhcmRpYW4nKSkpIHtcbiAgICAgICAgdGVtcERhdGUuc2V0RnVsbFllYXIodGVtcERhdGUuZ2V0RnVsbFllYXIoKSAtIDIxKTtcbiAgICAgICAgcmV0dXJuIHRlbXBEYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgIH1cbiAgICB9XG4gIFxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmFkaW9CdXR0b25DaGFuZ2VkKGl0ZW06IGFueSwgc2VsZWN0ZWRLZXk6IGFueSwgZ3JvdXA6IGFueSkge1xuICAgIGlmIChpdGVtLnR5cGUgPT09ICdQQVNTUE9SVF9BVkFJTEFCTEUnKSB7XG4gICAgICB0aGlzLnNob3dPckhpZGVGaWVsZHMoaXRlbS5maWVsZFZhbHVlLCBzZWxlY3RlZEtleSwgZ3JvdXApXG4gICAgfVxuICAgIGVsc2UgaWYoaXRlbS50eXBlID09PSAnUFJJTUFSWV9DT05UQUNUJyl7XG4gICAgICB0aGlzLmNvbnZlcnRPdGhlcnNBc1NlY29uZGFyeShpdGVtLmZpZWxkVmFsdWUsc2VsZWN0ZWRLZXksZ3JvdXApOyAgXG4gICAgfVxuICB9XG5cbiAgY29udmVydE90aGVyc0FzU2Vjb25kYXJ5KHZhbHVlOmFueSxzZWxlY3RlZEtleTphbnksZ3JvdXA6YW55KXtcbiAgICBjb25zdCBmb3JtYXR0ZWRHcm91cCA9IGdyb3VwLnRvTG93ZXJDYXNlKCkuc3BsaXQoJyAnKS5qb2luKCdfJyk7XG4gICAgY29uc3QgZ3JvdXBzID0gW3tuYW1lOidmYXRoZXJfZGV0YWlscycsYVZhbHVlOidGYXRoZXIgZGV0YWlscyd9LHtuYW1lOidtb3RoZXJfZGV0YWlscycsYVZhbHVlOidNb3RoZXIgZGV0YWlscyd9LHtuYW1lOidndWFyZGlhbl9kZXRhaWxzJyxhVmFsdWU6J0d1YXJkaWFuIERldGFpbHMnfV07XG4gICAgY29uc3Qgb3RoZXJHcm91cHMgPSBncm91cHMuZmlsdGVyKGcgPT4gZy5uYW1lICE9PSBmb3JtYXR0ZWRHcm91cCk7XG4gICAgY29uc3QgW3NlY29uZGFyeUdyb3VwMSwgc2Vjb25kYXJ5R3JvdXAyXSA9IG90aGVyR3JvdXBzO1xuICAgIHRoaXMuZmllbGREYXRhW3NlbGVjdGVkS2V5XVtzZWNvbmRhcnlHcm91cDEuYVZhbHVlXS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xuICAgICAgaWYoZWxlbWVudC50eXBlID09PSAnUFJJTUFSWV9DT05UQUNUJyl7XG4gICAgICAgIGVsZW1lbnQuZmllbGRWYWx1ZSA9ICdObydcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmZpZWxkRGF0YVtzZWxlY3RlZEtleV1bc2Vjb25kYXJ5R3JvdXAyLmFWYWx1ZV0uZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgIGlmKGVsZW1lbnQudHlwZSA9PT0gJ1BSSU1BUllfQ09OVEFDVCcpe1xuICAgICAgICBlbGVtZW50LmZpZWxkVmFsdWUgPSAnTm8nXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIHNob3dSZWxhdGl2ZUZpZWxkczogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93T3JIaWRlRmllbGRzKHZhbHVlOiBhbnksIHNlbGVjdGVkS2V5OiBhbnksIGdyb3VwOiBhbnkpIHtcbiAgICBjb25zdCBzaG91bGRTaG93ID0gdmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygneWVzJyk7XG4gICAgdGhpcy5maWVsZERhdGFbc2VsZWN0ZWRLZXldW2dyb3VwXS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuZGF0YVR5cGUgIT09ICdSQURJT0JVVFRPTicgJiYgZWxlbWVudC5maWVsZExhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3Bhc3Nwb3J0JykpIHtcbiAgICAgICAgZWxlbWVudC5pc0Rpc3BsYXkgPSBzaG91bGRTaG93O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBsb2FkUGFyZW50R3VhcmRpbmFJbWFnZXMoZXY6YW55LGZpZWxkOmFueSl7XG4gICAgbGV0IHNlbGVjdGVkSW1hZ2VEYXRhIDogRmlsZSA7XG4gICAgc2VsZWN0ZWRJbWFnZURhdGEgPSBldi5zcmNFbGVtZW50LmZpbGVzWzBdO1xuXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5vbmxvYWQgPSAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgZmllbGQuZmllbGRJbWFnZVVybCA9IHJlc3BvbnNlLnRhcmdldC5yZXN1bHQ7XG4gICAgfVxuXG4gICAgc2VsZWN0ZWRJbWFnZURhdGEgPyByZWFkZXIucmVhZEFzRGF0YVVSTChzZWxlY3RlZEltYWdlRGF0YSkgOiBudWxsO1xuICAgIGZpZWxkLnNlbGVjdGVkSW1hZ2VEYXRhID0gc2VsZWN0ZWRJbWFnZURhdGE7XG4gIH1cblxuICB1cGRhdGVTZWxlY3RlZEltYWdlKGV2OmFueSxmaWVsZDphbnkpIHtcbiAgICBsZXQgc2VsZWN0ZWRJbWFnZURhdGEgOiBGaWxlIDtcbiAgICBzZWxlY3RlZEltYWdlRGF0YSA9IGV2LnNyY0VsZW1lbnQuZmlsZXNbMF07XG5cbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgcmVhZGVyLm9ubG9hZCA9IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBmaWVsZC5maWVsZEltYWdlVXJsID0gcmVzcG9uc2UudGFyZ2V0LnJlc3VsdDtcbiAgICB9XG5cbiAgICBzZWxlY3RlZEltYWdlRGF0YSA/IHJlYWRlci5yZWFkQXNEYXRhVVJMKHNlbGVjdGVkSW1hZ2VEYXRhKSA6IG51bGw7XG4gICAgZmllbGQuc2VsZWN0ZWRJbWFnZURhdGEgPSBzZWxlY3RlZEltYWdlRGF0YTtcbiAgfVxuXG4gIGlzSW1hZ2UoZmlsZVVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBmaWxlVXJsID09PSAnc3RyaW5nJyAmJiAoXG4gICAgICBmaWxlVXJsLnN0YXJ0c1dpdGgoJ2RhdGE6aW1hZ2UnKSB8fCAvXFwuKGpwZ3xqcGVnfHBuZ3xnaWYpJC9pLnRlc3QoZmlsZVVybClcbiAgICApO1xuICB9XG5cbiAgZ2V0RmllbGRWYWxpZGF0aW9uKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhYmVsID0gKGl0ZW0uZmllbGRMYWJlbCB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgXG4gICAgY29uc3QgaXNQaG9uZSA9IGxhYmVsLmluY2x1ZGVzKCdwaG9uZSBudW1iZXInKTtcbiAgICBjb25zdCBpc0VtYWlsID0gbGFiZWwuaW5jbHVkZXMoJ2VtYWlsJyk7XG4gIFxuICAgIGNvbnN0IHZhbHVlU3RyID0gaXRlbS5maWVsZFZhbHVlPy50b1N0cmluZygpIHx8ICcnO1xuICBcbiAgICBpZiAoaXNQaG9uZSkge1xuICAgICAgY29uc3QgbW9iaWxlUGF0dGVybiA9IC9eWzYtOV1cXGR7OX0kLztcbiAgICAgIHJldHVybiBtb2JpbGVQYXR0ZXJuLnRlc3QodmFsdWVTdHIpICYmIHZhbHVlU3RyLmxlbmd0aCA9PT0gMTA7XG4gICAgfVxuICAgIFxuICAgIGlmIChpc0VtYWlsKSB7XG4gICAgICBjb25zdCBlbWFpbFBhdHRlcm4gPSAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLztcbiAgICAgIHJldHVybiBlbWFpbFBhdHRlcm4udGVzdCh2YWx1ZVN0cik7XG4gICAgfVxuICBcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAgXG5cbiAgY2hlY2tEb2IoaXRlbTogYW55KSB7XG4gICAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSAoaXRlbS5maWVsZExhYmVsIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBmaWVsZEdyb3VwTmFtZSA9IChpdGVtLmZpZWxkR3JvdXAgfHwgW10pLmZsYXRNYXAoKGc6YW55KSA9PiBbXG4gICAgICAoZy5maWVsZEdyb3VwTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSxcbiAgICAgIChnLmZpZWxkU3RlcE5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKClcbiAgICBdKTtcbiAgXG4gICAgaWYgKGZvcm1hdHRlZExhYmVsLmluY2x1ZGVzKCdkb2InKSAmJiBpdGVtLmZpZWxkVmFsdWUpIHtcbiAgICAgIGNvbnN0IGVudGVyZWREYXRlID0gbmV3IERhdGUoaXRlbS5maWVsZFZhbHVlKTtcbiAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgXG4gICAgICBpZiAoZmllbGRHcm91cE5hbWUuc29tZSgobmFtZTphbnkpID0+IG5hbWUuaW5jbHVkZXMoJ3N0dWRlbnQnKSkpIHtcbiAgICAgICAgY29uc3QgYWdlID0gdG9kYXkuZ2V0RnVsbFllYXIoKSAtIGVudGVyZWREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGNvbnN0IGhhc0JpcnRoZGF5UGFzc2VkID1cbiAgICAgICAgICB0b2RheS5nZXRNb250aCgpID4gZW50ZXJlZERhdGUuZ2V0TW9udGgoKSB8fFxuICAgICAgICAgICh0b2RheS5nZXRNb250aCgpID09PSBlbnRlcmVkRGF0ZS5nZXRNb250aCgpICYmIHRvZGF5LmdldERhdGUoKSA+PSBlbnRlcmVkRGF0ZS5nZXREYXRlKCkpO1xuICBcbiAgICAgICAgY29uc3QgZXhhY3RBZ2UgPSBoYXNCaXJ0aGRheVBhc3NlZCA/IGFnZSA6IGFnZSAtIDE7XG4gIFxuICAgICAgICBpZiAoZXhhY3RBZ2UgPCAzKSB7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFxuICAgICAgICAgICAgJ1N0dWRlbnQgbXVzdCBiZSBhdCBsZWFzdCAzIHllYXJzIG9sZC4nLFxuICAgICAgICAgICAgJ09rJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZHVyYXRpb246MzUwMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICBpdGVtLmZpZWxkVmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGRHcm91cE5hbWUuc29tZSgobmFtZTphbnkpID0+IG5hbWUuaW5jbHVkZXMoJ21vdGhlcicpKSkge1xuICAgICAgICBjb25zdCBhZ2UgPSB0b2RheS5nZXRGdWxsWWVhcigpIC0gZW50ZXJlZERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgY29uc3QgaGFzQmlydGhkYXlQYXNzZWQgPVxuICAgICAgICAgIHRvZGF5LmdldE1vbnRoKCkgPiBlbnRlcmVkRGF0ZS5nZXRNb250aCgpIHx8XG4gICAgICAgICAgKHRvZGF5LmdldE1vbnRoKCkgPT09IGVudGVyZWREYXRlLmdldE1vbnRoKCkgJiYgdG9kYXkuZ2V0RGF0ZSgpID49IGVudGVyZWREYXRlLmdldERhdGUoKSk7XG4gIFxuICAgICAgICBjb25zdCBleGFjdEFnZSA9IGhhc0JpcnRoZGF5UGFzc2VkID8gYWdlIDogYWdlIC0gMTtcbiAgXG4gICAgICAgIGlmIChleGFjdEFnZSA8IDE4KSB7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFxuICAgICAgICAgICAgJ01vdGhlciBtdXN0IGJlIGF0IGxlYXN0IDE4IHllYXJzIG9sZC4nLFxuICAgICAgICAgICAgJ09rJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZHVyYXRpb246MzUwMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICBpdGVtLmZpZWxkVmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGRHcm91cE5hbWUuc29tZSgobmFtZTphbnkpID0+IG5hbWUuaW5jbHVkZXMoJ2ZhdGhlcicpIHx8IG5hbWUuaW5jbHVkZXMoJ2d1YXJkaWFuJykpKSB7XG4gICAgICAgIGNvbnN0IGFnZSA9IHRvZGF5LmdldEZ1bGxZZWFyKCkgLSBlbnRlcmVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBjb25zdCBoYXNCaXJ0aGRheVBhc3NlZCA9XG4gICAgICAgICAgdG9kYXkuZ2V0TW9udGgoKSA+IGVudGVyZWREYXRlLmdldE1vbnRoKCkgfHxcbiAgICAgICAgICAodG9kYXkuZ2V0TW9udGgoKSA9PT0gZW50ZXJlZERhdGUuZ2V0TW9udGgoKSAmJiB0b2RheS5nZXREYXRlKCkgPj0gZW50ZXJlZERhdGUuZ2V0RGF0ZSgpKTtcbiAgXG4gICAgICAgIGNvbnN0IGV4YWN0QWdlID0gaGFzQmlydGhkYXlQYXNzZWQgPyBhZ2UgOiBhZ2UgLSAxO1xuICBcbiAgICAgICAgaWYgKGV4YWN0QWdlIDwgMjEpIHtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oXG4gICAgICAgICAgICAnRmF0aGVyIG11c3QgYmUgYXQgbGVhc3QgMjEgeWVhcnMgb2xkLicsXG4gICAgICAgICAgICAnT2snLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkdXJhdGlvbjozNTAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICAgIGl0ZW0uZmllbGRWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAgXG4gIH1cblxuICBuZXh0U2libGluZ051bWJlcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHNob3dBZGRTaWJsaW5nc0J1dHRvbigpOiBib29sZWFuIHtcbiAgICBjb25zdCBzaWJsaW5ncyA9IHRoaXMuZmllbGREYXRhWydGYW1pbHkgRGV0YWlscyddWydTaWJsaW5ncyBEZXRhaWxzJ107XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA1OyBpKyspIHtcbiAgICAgIGNvbnN0IHNpYmxpbmcgPSBzaWJsaW5ncy5maW5kKChlbDogYW55KSA9PlxuICAgICAgICBlbC5maWVsZExhYmVsPy5pbmNsdWRlcyhpLnRvU3RyaW5nKCkpXG4gICAgICApO1xuICAgICAgaWYgKCFzaWJsaW5nIHx8ICFzaWJsaW5nLmlzRGlzcGxheSkge1xuICAgICAgICB0aGlzLm5leHRTaWJsaW5nTnVtYmVyID0gaTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5uZXh0U2libGluZ051bWJlciA9IG51bGw7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cblxuICBhZGRTaWJsaW5nKHNpYmxpbmdOdW1iZXI6IGFueSkge1xuICAgIGNvbnN0IHNpYmxpbmdzID0gdGhpcy5maWVsZERhdGFbJ0ZhbWlseSBEZXRhaWxzJ11bJ1NpYmxpbmdzIERldGFpbHMnXTtcbiAgICBzaWJsaW5ncy5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuZmllbGRMYWJlbD8uaW5jbHVkZXMoc2libGluZ051bWJlcikpIHtcbiAgICAgICAgZWxlbWVudC5pc0Rpc3BsYXkgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cztcblxuICBncm91cE9mU2libGluZ3MoaXRlbTphbnkpOmFueXtcbiAgICBjb25zdCBncm91cGVkRmllbGRzOiB7IFtrZXk6IHN0cmluZ106IGFueVtdIH0gPSB7fTtcblxuICAgIGl0ZW0uZm9yRWFjaCgoZmllbGQ6YW55KSA9PiB7XG4gICAgICBjb25zdCBtYXRjaCA9IGZpZWxkLmZpZWxkTGFiZWwubWF0Y2goL1xcZCskLyk7IC8vIEV4dHJhY3QgdHJhaWxpbmcgbnVtYmVyIGZyb20gZmllbGRMYWJlbFxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IHNpYmxpbmdOdW1iZXIgPSBtYXRjaFswXTtcbiAgXG4gICAgICAgIGlmICghZ3JvdXBlZEZpZWxkc1tzaWJsaW5nTnVtYmVyXSkge1xuICAgICAgICAgIGdyb3VwZWRGaWVsZHNbc2libGluZ051bWJlcl0gPSBbXTtcbiAgICAgICAgfVxuICBcbiAgICAgICAgZ3JvdXBlZEZpZWxkc1tzaWJsaW5nTnVtYmVyXS5wdXNoKGZpZWxkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBncm91cGVkRmllbGRzO1xuICB9XG5cbiAgcmV0dXJuRGlzcGxheVRleHQoaXRlbTphbnkpe1xuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgZ3JvdXBPZlBhc3RTY2hvb2xEZXRhaWxzKGl0ZW06YW55KTphbnl7XG4gICAgY29uc3QgZ3JvdXBlZEZpZWxkczogeyBba2V5OiBzdHJpbmddOiBhbnlbXSB9ID0ge307XG5cbiAgICBpdGVtLmZvckVhY2goKGZpZWxkOmFueSkgPT4ge1xuICAgICAgY29uc3QgbWF0Y2ggPSBmaWVsZC5maWVsZExhYmVsLm1hdGNoKC9cXGQrJC8pOyAvLyBFeHRyYWN0IHRyYWlsaW5nIG51bWJlciBmcm9tIGZpZWxkTGFiZWxcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBjb25zdCBzaWJsaW5nTnVtYmVyID0gbWF0Y2hbMF07XG4gIFxuICAgICAgICBpZiAoIWdyb3VwZWRGaWVsZHNbc2libGluZ051bWJlcl0pIHtcbiAgICAgICAgICBncm91cGVkRmllbGRzW3NpYmxpbmdOdW1iZXJdID0gW107XG4gICAgICAgIH1cbiAgXG4gICAgICAgIGdyb3VwZWRGaWVsZHNbc2libGluZ051bWJlcl0ucHVzaChmaWVsZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ3JvdXBlZEZpZWxkcztcbiAgfVxuXG4gIG5leHRQYXN0U2Nob29sTnVtYmVyOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgc2hvd0FkZFBhc3RTY2hvb2xCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2libGluZ3MgPSB0aGlzLmZpZWxkRGF0YVsnU3R1ZGVudCBEZXRhaWxzJ11bJ1Bhc3Qgc2Nob29sIERldGFpbHMnXTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDM7IGkrKykge1xuICAgICAgY29uc3Qgc2libGluZyA9IHNpYmxpbmdzLmZpbmQoKGVsOiBhbnkpID0+XG4gICAgICAgIGVsLmZpZWxkTGFiZWw/LmluY2x1ZGVzKGkudG9TdHJpbmcoKSlcbiAgICAgICk7XG4gICAgICBpZiAoIXNpYmxpbmcgfHwgIXNpYmxpbmcuaXNEaXNwbGF5KSB7XG4gICAgICAgIHRoaXMubmV4dFBhc3RTY2hvb2xOdW1iZXIgPSBpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm5leHRQYXN0U2Nob29sTnVtYmVyID0gbnVsbDtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhZGRQYXN0U2Nob29sKHBhc3RTY2hvb2xOdW1iZXI6IGFueSkge1xuICAgIGNvbnN0IHNpYmxpbmdzID0gdGhpcy5maWVsZERhdGFbJ1N0dWRlbnQgRGV0YWlscyddWydQYXN0IHNjaG9vbCBEZXRhaWxzJ107XG4gICAgc2libGluZ3MuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmZpZWxkTGFiZWw/LmluY2x1ZGVzKHBhc3RTY2hvb2xOdW1iZXIpKSB7XG4gICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG59XG4iLCI8c2VjdGlvbiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIGNsYXNzPVwidG90YWwtY29udGFpbmVyXCI+XG4gIDxkaXYgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIj5cbiAgICA8ZGl2ICNtYWluQ29udGFpbmVyIGNsYXNzPVwicm93RmxleFwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb092ZXJsYXldPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCJcbiAgICAgIFtzaW1wb0JvcmRlcl09XCJzdHlsZXM/LmJvcmRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tc2VjdGlvblwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0Jzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnbGVmdCcgLCAnanVzdGlmeS1jb250ZW50LW1kLWVuZCc6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ3JpZ2h0J31cIlxuICAgICAgICBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktc2VjdGlvblwiPlxuICAgICAgICAgIDxkaXYgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCIgW2lkXT1cImRhdGE/LmlkXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lbGVtZW50IFt0ZXh0RGF0YV09XCJjb250ZW50Py5pbnB1dFRleHQ/LlswXT8udmFsdWVcIiBbdGV4dExhYmVsXT1cImNvbnRlbnQ/LmlucHV0VGV4dD8uWzBdPy5sYWJlbFwiPjwvc2ltcG8tdGV4dC1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGQtbWQtZmxleCBtdC0xNVwiICpuZ0lmPVwiZGF0YT8uYWN0aW9uPy5kaXNwbGF5XCIgW25nQ2xhc3NdPVwiW1xuICAgICAgICAgICAgICBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdsZWZ0JyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnQnIDogJycsXG4gICAgICAgICAgICAgIHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2NlbnRlcicgPyAnanVzdGlmeS1jb250ZW50LW1kLWNlbnRlcicgOiAnJyxcbiAgICAgICAgICAgICAgc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAncmlnaHQnID8gJ2p1c3RpZnktY29udGVudC1tZC1lbmQnIDogJydcbiAgICAgICAgICAgIF1cIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuXG4gIDxzZWN0aW9uIGNsYXNzPVwibWFpbi1zZWN0aW9uXCI+XG4gICAgPGRpdiAqbmdJZj1cImZvcm1TdGF0dXMgIT0gJ1JFR0lTVEVSRUQnICYmIGZvcm1TdGF0dXMgIT0gJ0FETUlUVEVEJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInN1YlRhYnNfc2VjdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdF90YWJzIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrZXkgb2YgT2JqZWN0LmtleXMoZmllbGREYXRhKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZV90YWIgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2VsZWN0ZWRLZXkgPSBrZXlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEtleSA9PT0ga2V5ID8gJ3NpbmdsZV90YWJfYWN0aXZlJyA6ICdzaW5nbGVfdGFiJ1wiPlxuICAgICAgICAgICAgICB7e2tleSB8IHRpdGxlY2FzZX19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlX3RhYiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzZWxlY3RlZEtleSA9ICdEb2N1bWVudCdcIiAqbmdJZj1cImRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRLZXkgPT09ICdEb2N1bWVudCcgPyAnc2luZ2xlX3RhYl9hY3RpdmUnIDogJ3NpbmdsZV90YWInXCI+XG4gICAgICAgICAgICBEb2N1bWVudFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGVfdGFiIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInJlZGlyZWN0VG9QYXltZW50KClcIlxuICAgICAgICAgICAgKm5nSWY9XCJkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkS2V5ID09PSAnUGF5bWVudCcgPyAnc2luZ2xlX3RhYl9hY3RpdmUnIDogJ3NpbmdsZV90YWInXCI+XG4gICAgICAgICAgICBQYXltZW50XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZmllbGREYXRhW3NlbGVjdGVkS2V5XSA/IE9iamVjdC5rZXlzKGZpZWxkRGF0YVtzZWxlY3RlZEtleV0pIDogW107bGV0IGdyb3VwSW5kZXggPSBpbmRleFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiICpuZ0lmPVwiZ3JvdXAgIT09ICdCYWNrdXAgQ29udGFjdCdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdF90YWJzIGJhY2tUb0xlYWRzIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIHt7Z3JvdXB9fVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwSW5kZXggPT0gMCAmJiBPYmplY3Qua2V5cyhmaWVsZERhdGEpWzBdID09PSBzZWxlY3RlZEtleVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWJveFwiICpuZ0lmPVwiIXBheWxvYWQuaW1nVXJsXCI+XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJkdW1teS1pbWFnZVwiIHNyYz1cIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvbWFzdGVyL2FkZC1pbWFnZS5zdmdcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VfYm94XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmY19icm93c2VfYnRuXCIgaWQ9XCJkaXNwbGF5X2Jyb3dzZV9idG5cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5DbGljayB0b1xuICAgICAgICAgICAgICAgICAgdXBsb2FkPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBpZD1cInZlbmRvckltYWdlXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwibXlmaWxlXCJcbiAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGdcIiAoY2hhbmdlKT1cInVwZGF0ZUFkbWlzc2lvbkltYWdlKCRldmVudClcIiBjbGFzcz1cInBjLWJ0blwiXG4gICAgICAgICAgICAgIGlkPVwiYnJvd3NlX2NvbnRhY3RfaW1hZ2VcIiAjZmlsZUlucHV0IC8+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXlsb2FkLmltZ1VybFwiIGNsYXNzPVwiYWRkZWRJbWdcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZGVkSW1nXCI+XG4gICAgICAgICAgICAgICAgPGltZyAgYWx0PVwiXCIgW3NyY109XCJkcy5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHBheWxvYWQuaW1nVXJsKVwiPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYmxvZ3MvY2hhbmdlX2ltYWdlLnN2Z1wiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICAgICAgQ2hhbmdlIEltYWdlXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBkZWxldGUtY2hhbmdlXCIgKGNsaWNrKT1cImRlbGV0ZUltZygpXCI+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYmxvZ3MvZGVsZXRlX2ltYWdlLnN2Z1wiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PkRlbGV0ZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93IG10LTFcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGluZm8gb2YgZmllbGREYXRhW3NlbGVjdGVkS2V5XVtncm91cF1cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCIgKm5nSWY9XCJpbmZvLmlzRGlzcGxheVwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImxhYmVsLXRleHRcIj57e2luZm8uZGlzcGxheVRleHQgfHwgaW5mby5maWVsZExhYmVsfX08L2xhYmVsPiZuYnNwOyA8c3BhbiBzdHlsZT1cImNvbG9yOiByZWQ7XCIgKm5nSWY9XCJpbmZvLnJlcXVpcmVkXCI+Kjwvc3Bhbj4gPGJyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dERhdGE7IGNvbnRleHQ6IHtkYXRhOiBpbmZvLCBncm91cDpncm91cH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0xXCIgKm5nSWY9XCJncm91cCAhPSAnU2libGluZ3MgRGV0YWlscycgJiYgZ3JvdXAgIT0gJ1Bhc3Qgc2Nob29sIERldGFpbHMnXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbmZvIG9mIGZpZWxkRGF0YVtzZWxlY3RlZEtleV1bZ3JvdXBdXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIoaW5mby50eXBlID09PSAnRkFUSEVSX0lNQUdFJyB8fCBpbmZvLnR5cGUgPT09ICdNT1RIRVJfSU1BR0UnIHx8IGluZm8udHlwZSA9PT0gJ0dVQVJESUFOX0lNQUdFJykgPyAnY29sLW1kLTEyIGNvbC0xMicgOiAnY29sLW1kLTQgY29sLTEyIG10LTEnXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImluZm8uaXNEaXNwbGF5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwibGFiZWwtdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGluZm8udHlwZSAhPSAnRkFUSEVSX0lNQUdFJyAmJiBpbmZvLnR5cGUgIT0gJ01PVEhFUl9JTUFHRScgJiYgaW5mby50eXBlICE9ICdHVUFSRElBTl9JTUFHRScpXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cInJldHVybkRpc3BsYXlUZXh0KGluZm8uZGlzcGxheVRleHQgfHwgaW5mby5maWVsZExhYmVsKVwiPnt7cmV0dXJuRGlzcGxheVRleHQoaW5mby5kaXNwbGF5VGV4dCB8fCBpbmZvLmZpZWxkTGFiZWwpfX08L2xhYmVsPiZuYnNwOyA8c3BhbiBzdHlsZT1cImNvbG9yOiByZWQ7XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpbmZvLnJlcXVpcmVkICYmIChpbmZvLnR5cGUgIT0gJ0ZBVEhFUl9JTUFHRScgJiYgaW5mby50eXBlICE9ICdNT1RIRVJfSU1BR0UnICYmIGluZm8udHlwZSAhPSAnR1VBUkRJQU5fSU1BR0UnKVwiPio8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RGF0YTsgY29udGV4dDoge2RhdGE6IGluZm8sIGdyb3VwOmdyb3VwfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiAqbmdJZj1cImdyb3VwID09PSAnU2libGluZ3MgRGV0YWlscydcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGtleSBvZiBvYmplY3RLZXlzKGdyb3VwT2ZTaWJsaW5ncyhmaWVsZERhdGFbJ0ZhbWlseSBEZXRhaWxzJ11bJ1NpYmxpbmdzIERldGFpbHMnXSkpO2xldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0yXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW5mbyBvZiBncm91cE9mU2libGluZ3MoZmllbGREYXRhWydGYW1pbHkgRGV0YWlscyddWydTaWJsaW5ncyBEZXRhaWxzJ10pW2tleV1cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtMTIgbXQtMVwiICpuZ0lmPVwiaW5mby5pc0Rpc3BsYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImxhYmVsLXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoaW5mby50eXBlICE9ICdGQVRIRVJfSU1BR0UnICYmIGluZm8udHlwZSAhPSAnTU9USEVSX0lNQUdFJyAmJiBpbmZvLnR5cGUgIT0gJ0dVQVJESUFOX0lNQUdFJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cInJldHVybkRpc3BsYXlUZXh0KGluZm8uZGlzcGxheVRleHQgfHwgaW5mby5maWVsZExhYmVsKVwiPnt7aW5mby5kaXNwbGF5VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgaW5mby5maWVsZExhYmVsfX08L2xhYmVsPiZuYnNwOyA8c3BhbiBzdHlsZT1cImNvbG9yOiByZWQ7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaW5mby5yZXF1aXJlZCAmJiAoaW5mby50eXBlICE9ICdGQVRIRVJfSU1BR0UnICYmIGluZm8udHlwZSAhPSAnTU9USEVSX0lNQUdFJyAmJiBpbmZvLnR5cGUgIT0gJ0dVQVJESUFOX0lNQUdFJylcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RGF0YTsgY29udGV4dDoge2RhdGE6IGluZm8sIGdyb3VwOmdyb3VwfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJib3JkZXJfYm90dG9tXCIgKm5nSWY9XCJpID49IDFcIj48L2Rpdj4gLS0+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGRfbW9yZV9zaWJsaW5ncyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXAgPT09ICdTaWJsaW5ncyBEZXRhaWxzJyAmJiBzaG93QWRkU2libGluZ3NCdXR0b24oKVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGRTaWJsaW5nKG5leHRTaWJsaW5nTnVtYmVyKVwiIGNsYXNzPVwiYWRkX3NpYmxpbmdcIiBzdHlsZT1cIndpZHRoOm1heC1jb250ZW50ICFpbXBvcnRhbnRcIj4rIEFkZCBTaWJsaW5nIHt7IG5leHRTaWJsaW5nTnVtYmVyXG4gICAgICAgICAgICAgICAgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiAqbmdJZj1cImdyb3VwID09PSAnUGFzdCBzY2hvb2wgRGV0YWlscydcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGtleSBvZiBvYmplY3RLZXlzKGdyb3VwT2ZQYXN0U2Nob29sRGV0YWlscyhmaWVsZERhdGFbJ1N0dWRlbnQgRGV0YWlscyddWydQYXN0IHNjaG9vbCBEZXRhaWxzJ10pKTtsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMlwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGluZm8gb2YgZ3JvdXBPZlBhc3RTY2hvb2xEZXRhaWxzKGZpZWxkRGF0YVsnU3R1ZGVudCBEZXRhaWxzJ11bJ1Bhc3Qgc2Nob29sIERldGFpbHMnXSlba2V5XVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCIgKm5nSWY9XCJpbmZvLmlzRGlzcGxheVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwibGFiZWwtdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihpbmZvLnR5cGUgIT0gJ0ZBVEhFUl9JTUFHRScgJiYgaW5mby50eXBlICE9ICdNT1RIRVJfSU1BR0UnICYmIGluZm8udHlwZSAhPSAnR1VBUkRJQU5fSU1BR0UnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwicmV0dXJuRGlzcGxheVRleHQoaW5mby5kaXNwbGF5VGV4dCB8fCBpbmZvLmZpZWxkTGFiZWwpXCI+e3tpbmZvLmRpc3BsYXlUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBpbmZvLmZpZWxkTGFiZWx9fTwvbGFiZWw+Jm5ic3A7IDxzcGFuIHN0eWxlPVwiY29sb3I6IHJlZDtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpbmZvLnJlcXVpcmVkICYmIChpbmZvLnR5cGUgIT0gJ0ZBVEhFUl9JTUFHRScgJiYgaW5mby50eXBlICE9ICdNT1RIRVJfSU1BR0UnICYmIGluZm8udHlwZSAhPSAnR1VBUkRJQU5fSU1BR0UnKVwiPio8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXREYXRhOyBjb250ZXh0OiB7ZGF0YTogaW5mbywgZ3JvdXA6Z3JvdXB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGRfbW9yZV9zaWJsaW5ncyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXAgPT09ICdQYXN0IHNjaG9vbCBEZXRhaWxzJyAmJiBzaG93QWRkUGFzdFNjaG9vbEJ1dHRvbigpXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFkZFBhc3RTY2hvb2wobmV4dFBhc3RTY2hvb2xOdW1iZXIpXCIgY2xhc3M9XCJhZGRfc2libGluZ1wiXG4gICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6bWF4LWNvbnRlbnQgIWltcG9ydGFudFwiPisgQWRkIFBhc3QgU2Nob29sIHt7IG5leHRQYXN0U2Nob29sTnVtYmVyfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiICpuZ0lmPVwiZmllbGREYXRhW3NlbGVjdGVkS2V5XS5oYXNPd25Qcm9wZXJ0eSgnQmFja3VwIENvbnRhY3QnKSAmJiBzdHVkZW50TGl2ZVdpdGggPT09ICdzaW5nbGUgcGFyZW50JyAmJiBncm91cEluZGV4ID09IDAgJiYgT2JqZWN0LmtleXMoZmllbGREYXRhKVswXSA9PT0gc2VsZWN0ZWRLZXlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdF90YWJzIGJhY2tUb0xlYWRzIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIEJhY2t1cCBDb250YWN0IChPcHRpb25hbClcbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtdGItMTUgY2hlY2tib3gtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cIlwiIGlkPVwiXCIgWyhuZ01vZGVsKV09XCJwYXlsb2FkLnBhcmVudEF1dGhvcml6YXRpb25cIj5cbiAgICAgICAgICAgICAgICAgIEkgYXV0aG9yaXplIHRoZSBzY2hvb2wgdG8gcmVsZWFzZSB0aGUgY2hpbGQgb25seSB0byB0aGUgcGFyZW50IGxpc3RlZCBhYm92ZVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgY29sLTEyIG10LTFcIiAqbmdGb3I9XCJsZXQgaW5mbyBvZiBmaWVsZERhdGFbc2VsZWN0ZWRLZXldWydCYWNrdXAgQ29udGFjdCddXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImxhYmVsLXRleHRcIj57e2luZm8uZGlzcGxheVRleHQgfHwgaW5mby5maWVsZExhYmVsfX08L2xhYmVsPiZuYnNwOyA8c3BhbiBzdHlsZT1cImNvbG9yOiByZWQ7XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImluZm8ucmVxdWlyZWRcIj4qPC9zcGFuPiA8YnI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dERhdGE7IGNvbnRleHQ6IHtkYXRhOiBpbmZvfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgY29sLTEyIG10LTFcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwibGFiZWwtdGV4dFwiPlVwbG9hZCBTdXBwb3J0aW5nIERvY3VtZW50IChPcHRpb25hbCk8L2xhYmVsPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtdGV4dCB1cGxvYWQtZmlsZVwiIChjbGljayk9XCJiYWNrVXBEb2NJbnB1dC5jbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPHA+e3tiYWNrdXBEb2NGaWxlID8gJ0ZpbGUgVXBsb2FkZWQnIDogJ1VwbG9hZCBGaWxlJ319PC9wPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG91ZF91cGxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGlucHV0IGlkPVwidmVuZG9ySW1hZ2VcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCJteWZpbGVcIiBoaWRkZW5cbiAgICAgICAgICAgICAgICBhY2NlcHQ9XCIuZG9jLC5kb2N4LGFwcGxpY2F0aW9uL21zd29yZCxhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCxpbWFnZS94LXBuZyxpbWFnZS9qcGVnLGltYWdlL2pwZywucGRmLCB2aWRlby9tcDQsdmlkZW8veC1tYXRyb3NrYSx2aWRlby94LW1zdmlkZW8sdmlkZW8vcXVpY2t0aW1lXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZEJhY2tVcERvY3VtZW50KCRldmVudClcIiBjbGFzcz1cInBjLWJ0blwiXG4gICAgICAgICAgICAgICAgaWQ9XCJicm93c2VfY29udGFjdF9pbWFnZVwiICNiYWNrVXBEb2NJbnB1dCAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1kZXRhaWxzXCIgKm5nSWY9XCJzZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyAmJiBkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCI+XG4gICAgICAgICAgPHNpbXBvLWRvY3VtZW50IFtkb2N1bWVudExpc3RdPVwiZG9jdW1lbnRMaXN0XCI+PC9zaW1wby1kb2N1bWVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWRldGFpbHNcIiAqbmdJZj1cInNlbGVjdGVkS2V5ID09PSAnUGF5bWVudCcgJiYgZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiPlxuICAgICAgICAgIDxzaW1wby1wYXltZW50LWRldGFpbHMgW2FkbWlzc2lvbkRhdGFdPVwicGF5bG9hZFwiXG4gICAgICAgICAgICBbc3Vic2NyaXB0aW9uc0RhdGFdPVwic3Vic2NyaXB0aW9uc0RhdGFcIiBbdGVybVBheW1lbnRMaXN0XT1cInRlcm1QYXltZW50TGlzdFwiPjwvc2ltcG8tcGF5bWVudC1kZXRhaWxzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXBhcmVudFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZGF0YT8uYWN0aW9uPy5idXR0b25zXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJzdWJtaXRGb3JtKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCJcbiAgICAgICAgICAgIFtidXR0b25TdHlsZV09XCJidXR0b24uc3R5bGVzXCIgKm5nSWY9XCIoZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJyAmJiBzZWxlY3RlZEtleSA9PSAnUGF5bWVudCcpIHx8XG4gICAgICAgICAgICAoZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyAmJlxuICAgICAgICAgICAgICAoT2JqZWN0LmtleXMoZmllbGREYXRhKVtPYmplY3Qua2V5cyhmaWVsZERhdGEpLmxlbmd0aCAtIDFdID09IHNlbGVjdGVkS2V5KSlcIlxuICAgICAgICAgICAgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj57e2J1dHRvbj8uY29udGVudD8ubGFiZWx9fTwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjb250aW51ZUFkbWlzc2lvbigpXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkK2J1dHRvbi5pZFwiXG4gICAgICAgICAgICBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiICpuZ0lmPVwic2VsZWN0ZWRLZXkgIT0gJ1BheW1lbnQnICYmIGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIlxuICAgICAgICAgICAgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5Db250aW51ZTwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjb250aW51ZUFkbWlzc2lvbigpXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkK2J1dHRvbi5pZFwiXG4gICAgICAgICAgICBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiXG4gICAgICAgICAgICAqbmdJZj1cImRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgJiYgKE9iamVjdC5rZXlzKGZpZWxkRGF0YSlbT2JqZWN0LmtleXMoZmllbGREYXRhKS5sZW5ndGggLSAxXSAhPSBzZWxlY3RlZEtleSlcIlxuICAgICAgICAgICAgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5Db250aW51ZTwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImVtcHR5VGV4dFwiICpuZ0lmPVwiZm9ybVN0YXR1cyA9PSAnUkVHSVNURVJFRCcgfHwgZm9ybVN0YXR1cyA9PSAnQURNSVRURUQnXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiY29udGVudD8uaW1hZ2U/LnVybFwiIGFsdD1cIlwiICpuZ0lmPVwiY29udGVudD8uaW1hZ2U/LnNob3dJbWFnZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbGFyZ2VcIiBbaW5uZXJIdG1sXT1cImNvbnRlbnQ/LmlucHV0VGV4dD8uWzFdPy52YWx1ZVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG5cbiAgPG5nLXRlbXBsYXRlICNpbnB1dERhdGEgbGV0LWZpZWxkPVwiZGF0YVwiIGxldC1ncm91cD1cImdyb3VwXCI+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09ICdJTUFHRSdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1ib3hcIiAqbmdJZj1cIiFmaWVsZC5maWVsZEltYWdlVXJsXCI+XG4gICAgICAgIDxpbWcgY2xhc3M9XCJkdW1teS1pbWFnZVwiIHNyYz1cIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvbWFzdGVyL2FkZC1pbWFnZS5zdmdcIlxuICAgICAgICAgIChjbGljayk9XCJmaWxlSW5wdXQyLmNsaWNrKClcIiBhbHQ9XCJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZjX2Jyb3dzZV9idG5cIiBpZD1cImRpc3BsYXlfYnJvd3NlX2J0blwiIChjbGljayk9XCJmaWxlSW5wdXQyLmNsaWNrKClcIj5DbGljayB0b1xuICAgICAgICAgICAgdXBsb2FkPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBpZD1cInZlbmRvckltYWdlXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwibXlmaWxlXCIgYWNjZXB0PVwiaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGdcIlxuICAgICAgICAoY2hhbmdlKT1cInVwbG9hZFBhcmVudEd1YXJkaW5hSW1hZ2VzKCRldmVudCxmaWVsZClcIiBjbGFzcz1cInBjLWJ0blwiIGlkPVwiYnJvd3NlX2NvbnRhY3RfaW1hZ2VcIiAjZmlsZUlucHV0MiAvPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZmllbGRJbWFnZVVybFwiIGNsYXNzPVwiYWRkZWRJbWdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkZWRJbWdcIj5cbiAgICAgICAgICAgIDxpbWcgYWx0PVwiXCIgW3NyY109XCJkcy5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGZpZWxkLmZpZWxkSW1hZ2VVcmwpXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiZmlsZUlucHV0Mi5jbGljaygpXCI+XG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9ibG9ncy9jaGFuZ2VfaW1hZ2Uuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgIENoYW5nZSBJbWFnZVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGRlbGV0ZS1jaGFuZ2VcIiAoY2xpY2spPVwiZGVsZXRlSW1nKClcIj5cbiAgXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGVcIj5cbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9ibG9ncy9kZWxldGVfaW1hZ2Uuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5EZWxldGU8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gIFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ1RFWFQnICYmIGZpZWxkLmlzRGlzcGxheVwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgW3BsYWNlaG9sZGVyXT1cIidFbnRlciAnK2ZpZWxkLmZpZWxkTGFiZWxcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwiZmllbGQuZmllbGRWYWx1ZSAmJiAhZ2V0RmllbGRWYWxpZGF0aW9uKGZpZWxkKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRMYWJlbD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygncGhvbmUgbnVtYmVyJylcIj5cbiAgICAgICAgICBQbGVhc2UgZW50ZXIgYSB2YWxpZCAxMC1kaWdpdCBJbmRpYW4gbW9iaWxlIG51bWJlci5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZExhYmVsPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdlbWFpbCcpXCI+XG4gICAgICAgICAgUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdOVU1CRVInICYmIGZpZWxkLmlzRGlzcGxheVwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImlucHV0LXRleHRcIiBbcGxhY2Vob2xkZXJdPVwiJ0VudGVyICcrZmllbGQuZmllbGRMYWJlbFwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImVycm9yXCIgKm5nSWY9XCJmaWVsZC5maWVsZFZhbHVlICYmICFnZXRGaWVsZFZhbGlkYXRpb24oZmllbGQpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZExhYmVsPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdwaG9uZSBudW1iZXInKVwiPlxuICAgICAgICAgIFBsZWFzZSBlbnRlciBhIHZhbGlkIDEwLWRpZ2l0IEluZGlhbiBtb2JpbGUgbnVtYmVyLlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkTGFiZWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2VtYWlsJylcIj5cbiAgICAgICAgICBQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ01PTkVZJyAmJiBmaWVsZC5pc0Rpc3BsYXlcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIFtwbGFjZWhvbGRlcl09XCInRW50ZXIgJytmaWVsZC5maWVsZExhYmVsXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnREFURScgJiYgZmllbGQuaXNEaXNwbGF5XCI+XG4gICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImlucHV0LXRleHRcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCAnK2ZpZWxkLmZpZWxkTGFiZWxcIiBbbWF4XT1cImdldE1heERhdGUoZmllbGQpXCJcbiAgICAgIChpbnB1dCk9XCJjaGVja0RvYihmaWVsZClcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCIgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ1RFWFRfRklMRScgJiYgZmllbGQuaXNEaXNwbGF5XCI+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgY2xhc3M9XCJpbnB1dC10ZXh0LTFcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIiBzdHlsZT1cIndpZHRoOjkwJVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWJveC0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiIWZpZWxkLmZpZWxkSW1hZ2VVcmxcIlxuICAgICAgICBzdHlsZT1cIndpZHRoOjEwJVwiPlxuICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImZpbGVJbnB1dDEuY2xpY2soKVwiXG4gICAgICAgICAgY2xhc3M9XCJkdW1teS1pbWFnZS0xIHctMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+Y2xvdWRfdXBsb2FkPC9tYXQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWJveC0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiZmllbGQuZmllbGRJbWFnZVVybFwiIHN0eWxlPVwid2lkdGg6MTAlXCI+XG4gICAgICAgIDwhLS0gSWYgdGhlIHVwbG9hZGVkIGZpbGUgaXMgYW4gaW1hZ2UsIHNob3cgdGhlIHByZXZpZXcgLS0+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cImlzSW1hZ2UoZmllbGQuZmllbGRJbWFnZVVybClcIlxuICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgY2xhc3M9XCJ3LTEwMCBoLTEwMFwiXG4gICAgICAgICAgW3NyY109XCJkcy5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGZpZWxkLmZpZWxkSW1hZ2VVcmwpXCJcbiAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0MS5jbGljaygpXCIgLz5cbiAgICAgIFxuICAgICAgICA8IS0tIElmIHRoZSB1cGxvYWRlZCBmaWxlIGlzIG5vdCBhbiBpbWFnZSwgc2hvdyBhIGZpbGUgaWNvbiAtLT5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgKm5nSWY9XCIhaXNJbWFnZShmaWVsZC5maWVsZEltYWdlVXJsKVwiXG4gICAgICAgICAgY2xhc3M9XCJ3LTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZHVtbXktaW1hZ2UtMVwiXG4gICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dDEuY2xpY2soKVwiPmluc2VydF9kcml2ZV9maWxlPC9tYXQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgXG4gICAgICA8aW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGlkPVwidmVuZG9ySW1hZ2VcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCJteWZpbGVcIlxuICAgICAgICBhY2NlcHQ9XCIuZG9jLC5kb2N4LGFwcGxpY2F0aW9uL21zd29yZCxhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCxpbWFnZS94LXBuZyxpbWFnZS9qcGVnLGltYWdlL2pwZywucGRmLCB2aWRlby9tcDQsdmlkZW8veC1tYXRyb3NrYSx2aWRlby94LW1zdmlkZW8sdmlkZW8vcXVpY2t0aW1lXCJcbiAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZEltYWdlKCRldmVudCxmaWVsZClcIiBjbGFzcz1cInBjLWJ0blwiIGlkPVwiYnJvd3NlX2NvbnRhY3RfaW1hZ2VcIiAjZmlsZUlucHV0MSAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ0RST1BET1dOJyAmJiBmaWVsZC5pc0Rpc3BsYXlcIiBjbGFzcz1cImFkbWlzc2lvblwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaW5wdXQtdGV4dC0xIGlucHV0X2NhcmRcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiIHN0eWxlPVwid2lkdGg6MTAwJVwiPlxuICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImlucHV0U3R5bGVcIiBwbGFjZWhvbGRlcj1cIi0tU2VsZWN0LS1cIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIiBbbXVsdGlwbGVdPVwiZmllbGQubXVsdGlwbGVTZWxlY3Rpb25cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID4gMFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQudmFsdWVcIiBbdmFsdWVdPVwiaXRlbT8udmFsdWVcIiAoY2xpY2spPVwibWFzdGVyRHJvcGRvd25WYWx1ZUNoYW5nZShpdGVtLCBmaWVsZClcIj57e2l0ZW0ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID09IDBcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLnNvdXJjZURhdGFbZmllbGQuZGF0YVNvdXJjZVR5cGVdXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImlucHV0RmllbGRDaGFuZ2UoaXRlbSwgZmllbGQpXCIgW3ZhbHVlXT1cIml0ZW0/Lm5hbWVcIj57e2l0ZW0ubmFtZX19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ0NIRUNLQk9YJyAmJiBmaWVsZC5pc0Rpc3BsYXlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPiAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTVcIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmaWVsZC52YWx1ZVwiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIlwiIGlkPVwiZmxleENoZWNrQ2hlY2tlZFwiIFsobmdNb2RlbCldPVwiZGF0YS5jaGVja2VkXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImZsZXhDaGVja0NoZWNrZWRcIj5cbiAgICAgICAgICAgIHt7ZGF0YS5sYWJlbH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA9PSAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTVcIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmaWVsZC5zb3VyY2VEYXRhW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXVwiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIlwiIGlkPVwiZmxleENoZWNrQ2hlY2tlZFwiIFsobmdNb2RlbCldPVwiZGF0YS5jaGVja2VkXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImZsZXhDaGVja0NoZWNrZWRcIj5cbiAgICAgICAgICAgIHt7ZGF0YS5uYW1lfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ1JBRElPQlVUVE9OJyAmJiBmaWVsZC5pc0Rpc3BsYXlcIj5cbiAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IDIwcHg7IG1hcmdpbi10b3A6IDEwcHg7IGhlaWdodDogMzVweDthbGlnbi1pdGVtczogY2VudGVyO1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID4gMFwiPlxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIiBtYi01XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQudmFsdWVcIj5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCI+e3tkYXRhLmxhYmVsfX08L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCIgKGNoYW5nZSk9XCJyYWRpb0J1dHRvbkNoYW5nZWQoZmllbGQsc2VsZWN0ZWRLZXksZ3JvdXApXCI+XG4gICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmaWVsZC52YWx1ZVwiIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCI+XG4gICAgICAgICAgICAgIHt7IGRhdGEubGFiZWwgfX1cbiAgICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gIFxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID09IDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi01XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQudmFsdWVcIj5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwicmFkaW9cIiBbdmFsdWVdPVwiZGF0YS5uYW1lXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCIgLz5cbiAgXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgW2Zvcl09XCIncmFkaW9fJyArIGRhdGEubmFtZVwiPlxuICAgICAgICAgICAgICB7eyBkYXRhLm5hbWUgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGVzPy5kZXZpZGVyPy5kaXNwbGF5XCI+XG4gICAgPHNpbXBvLXN2Zy1kaXZpZGVyIFtkaXZpZGVyVHlwZV09XCJzdHlsZXM/LmRldmlkZXI/LmRldmlkZXJUeXBlXCJcbiAgICAgIFtjb2xvcl09XCJuZXh0Q29tcG9uZW50Q29sb3I/LmNvbG9yXCI+PC9zaW1wby1zdmctZGl2aWRlcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cbiAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=
|