@uiapplib/ngx-ui-web-lib 0.0.29 → 0.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +4 -4
- package/esm2022/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.mjs +10 -4
- package/fesm2022/uiapplib-ngx-ui-web-lib.mjs +12 -6
- package/fesm2022/uiapplib-ngx-ui-web-lib.mjs.map +1 -1
- package/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.d.ts +2 -0
- package/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.d.ts.map +1 -1
- package/package.json +1 -1
package/esm2022/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.mjs
CHANGED
|
@@ -279,10 +279,10 @@ function WorkSearchEmployerComponentME_div_26_Template(rf, ctx) { if (rf & 1) {
|
|
|
279
279
|
i0.ɵɵadvance(2);
|
|
280
280
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 12, "work.search.journal.applicationDate"));
|
|
281
281
|
i0.ɵɵadvance(2);
|
|
282
|
-
i0.ɵɵproperty("showIcon", true)("formControl", ctx_r6.workSearchDate)("minDate", ctx_r6.sunDate)("maxDate", ctx_r6.
|
|
282
|
+
i0.ɵɵproperty("showIcon", true)("formControl", ctx_r6.workSearchDate)("minDate", ctx_r6.sunDate)("maxDate", ctx_r6.maxAllowedDate)("defaultDate", ctx_r6.sunDate)("selectOtherMonths", true);
|
|
283
283
|
i0.ɵɵadvance(1);
|
|
284
284
|
i0.ɵɵclassMap("app-grid");
|
|
285
|
-
i0.ɵɵproperty("field", ctx_r6.workSearchDate)("form", _r0)("errDef", i0.ɵɵpureFunction1(14, _c8, "Date should be between " + ctx_r6.sunDateString + " and " + ctx_r6.
|
|
285
|
+
i0.ɵɵproperty("field", ctx_r6.workSearchDate)("form", _r0)("errDef", i0.ɵɵpureFunction1(14, _c8, "Date should be between " + ctx_r6.sunDateString + " and " + ctx_r6.maxAllowedDateString + "."));
|
|
286
286
|
} }
|
|
287
287
|
function WorkSearchEmployerComponentME_section_27_div_13_Template(rf, ctx) { if (rf & 1) {
|
|
288
288
|
i0.ɵɵelementStart(0, "div", 6)(1, "label", 52);
|
|
@@ -535,6 +535,12 @@ export class WorkSearchEmployerComponentME {
|
|
|
535
535
|
this.satDateString = this.wcService.getSaturdayDateAsString();
|
|
536
536
|
this.sunDateString = this.wcService.getSundayDateAsString();
|
|
537
537
|
}
|
|
538
|
+
const now = new Date();
|
|
539
|
+
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
540
|
+
// If filing during the current week, cap at today
|
|
541
|
+
this.maxAllowedDate = today < this.satDate ? today : this.satDate;
|
|
542
|
+
// Format for error message
|
|
543
|
+
this.maxAllowedDateString = this.util.getDateInMMDDYYYYFormat(this.maxAllowedDate);
|
|
538
544
|
this.dynamicParam = {
|
|
539
545
|
'saturday_date': this.satDateString,
|
|
540
546
|
'sunday_date': this.sunDateString,
|
|
@@ -1184,7 +1190,7 @@ export class WorkSearchEmployerComponentME {
|
|
|
1184
1190
|
}
|
|
1185
1191
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WorkSearchEmployerComponentME, [{
|
|
1186
1192
|
type: Component,
|
|
1187
|
-
args: [{ selector: 'app-work-search-employer-me', template: "<p-dialog visible=\"true\" modal=\"true\" appendTo=\"body\" position=\"top\" [showHeader]=\"false\" [breakpoints]=\"{'1200px': '660px', '992px': '660px', '768px': '660px', '576px': '100vw'}\">\r\n <h4 style=\"color: var(--ion-color-grey); padding-left: 20px;\">{{'work.search.journal.activity.heading' | translate:dynamicParam }}</h4>\r\n <form [formGroup]=\"wsrForm\" #wsrFormDirective=\"ngForm\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"6\" sizeLg=\"6\" sizeXl=\"6\">\r\n <div class=\"p-fluid p-formgrid\">\r\n \r\n <div class=\"field\">\r\n <label for=\"activityType\">{{'work.search.journal.activity.type' | translate}}</label>\r\n <app-overlay-info [overlayText]=\"'work.search.journal.activity.ip2095' | translate | trustHtml\" style=\"padding-left: 8px;flex-grow: 1;\"></app-overlay-info>\r\n <app-dropdown [options]=\"activityTypeCombo\" optionLabel=\"DESC\" optionValue=\"NAME\" [formControl]=\"activityType\" appendTo=\"body\" inputId=\"activityType\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='activityType' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.',\r\n typeAlreadyUsed: 'You can only add one entry for this activity type this week.'\r\n }\"></app-error>\r\n </div>\r\n <section *ngIf=\"displayWorkingForAnEmployerQuestions\">\r\n <div class=\"field\">\r\n <label for=\"workOrPerformServiceType\">{{'work.search.journal.workOrPerformServiceType' | translate}}</label>\r\n <p-selectButton [options]=\"employmentTypeOptions\" optionLabel=\"DESC\" optionValue=\"NAME\"\r\n [formControl]=\"workOrPerformServiceType\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='workOrPerformServiceType' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n </section>\r\n <section *ngIf=\"displayUnionMemberQuestions\">\r\n <div class=\"field\">\r\n <label for=\"isInContactWithUnion\">{{'work.search.journal.isInContactWithUnion' | translate}}</label>\r\n <p-selectButton [options]=\"yesNoOptions\" optionLabel=\"DESC\" optionValue=\"NAME\"\r\n [formControl]=\"isInContactWithUnion\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='isInContactWithUnion' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"isInContactWithUnion.value === 'Y'\">\r\n <label for=\"unionName\">{{'work.search.journal.unionName' | translate}}</label>\r\n <input id=\"unionName\" type=\"input\" pInputText [formControl]=\"unionName\" appStripInvisibleChars />\r\n <app-error [class]=\"'app-grid'\" [field]='unionName' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"isInContactWithUnion.value === 'Y'\">\r\n <label for=\"unionContactPersonName\">{{'work.search.journal.unionContactPersonName' | translate}}</label>\r\n <input id=\"unionContactPersonName\" type=\"input\" pInputText [formControl]=\"unionContactPersonName\"\r\n appStripInvisibleChars />\r\n <app-error [class]=\"'app-grid'\" [field]='unionContactPersonName' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"isInContactWithUnion.value === 'Y'\">\r\n <label for=\"unionContactDate\">{{'work.search.journal.unionContactDate'| translate}}</label>\r\n <p-calendar [showIcon]=\"true\" inputId=\"unionContactDate\" appendTo=\"body\" [formControl]=\"unionContactDate\"\r\n [minDate]=\"sunDate\" [maxDate]=\"satDate\" [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='unionContactDate' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n </section>\r\n <section *ngIf=\"displayCCQuestions\">\r\n <div class=\"field\">\r\n <label for=\"workShopName\">{{'work.search.journal.workShopName' | translate}}</label>\r\n <input id=\"workShopName\" type=\"input\" pInputText [formControl]=\"workShopName\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='workShopName' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n </section>\r\n <section *ngIf =\"displayJobFairQuestions\">\r\n <div class=\"field\">\r\n <label for=\"jobFairLocation\">{{'work.search.journal.jobFairLocation' | translate}}</label>\r\n <input id=\"jobFairLocation\" type=\"input\" pInputText [formControl]=\"jobFairLocation\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='jobFairLocation' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n </section>\r\n <section *ngIf =\"displayEmployerQuestions\">\r\n <div class=\"field\">\r\n <label for=\"employerName\">{{'work.search.journal.employerName' | translate}}</label>\r\n <app-search-employer [formControl]=\"employerName\" (onFound)=\"setEmployer($event)\" [empType]=\"'REG'\"></app-search-employer>\r\n <app-error [class]=\"'app-grid'\" [field]='employerName' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.', pattern: 'only letters, numbers, spaces, and . , & \\' ( ) - # are allowed'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\">\r\n <label for=\"country\">{{'work.search.journal.country' | translate}}</label><br>\r\n <app-dropdown inputId=\"country\" [options]=\"countryOptions\" optionLabel=\"DESC\" optionValue=\"NAME\"\r\n appendTo=\"body\" [formControl]=\"country\" [autoDisplayFirst]=\"false\" inputId=\"country\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='country' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\">\r\n <label for=\"line1\">{{'work.search.journal.streetAddress' | translate}}</label>\r\n <input id=\"line1\" type=\"input\" pInputText [formControl]=\"line1\" maxlength=\"40\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='line1' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.', pattern: 'only letters, numbers, spaces, and . , & \\' ( ) - # are allowed'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\">\r\n <label for=\"city\">{{'work.search.journal.city' | translate}}</label>\r\n <input id=\"city\" type=\"input\" pInputText [formControl]=\"city\" maxlength=\"30\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='city' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.',\r\n invalidwsCityLength: 'City should not exceed a length of 30 characters',\r\n pattern: 'City name can only contain letters, spaces, and hyphens'\r\n }\"></app-error>\r\n </div>\r\n <ion-row>\r\n <ion-col style=\"padding: 0px;\">\r\n <div class=\"field\">\r\n <label for=\"state\">{{'work.search.journal.state'| translate}}</label>\r\n <app-dropdown inputId=\"state\" [options]=\"statesCombo\" optionLabel=\"DESC\" optionValue=\"NAME\"\r\n appendTo=\"body\" [formControl]=\"state\" inputId = \"state\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='state' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col size=\"1\"></ion-col>\r\n <ion-col style=\"padding: 0px;\">\r\n <div class=\"field\">\r\n <label for=\"zip\">{{'work.search.journal.zip'| translate}}</label>\r\n <input id=\"zip\" type=\"input\" pInputText [formControl]=\"zip\" minlength=\"5\" maxlength=\"9\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='zip' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.',\r\n invalidLength: 'Zip code should be of 5 or 9 digits.',\r\n invalidNumber: 'Zip code should only have numbers.',\r\n invalidZipCode: 'please enter a valid zip code'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <div class=\"field\" >\r\n <label for=\"employerPhone\">{{'work.search.journal.phoneNo' | translate}}</label>\r\n <p-inputMask inputId=\"employerPhone\" [formControl]=\"employerPhone\" mask=\"(999) 999-9999\" unmask=\"true\"></p-inputMask>\r\n <app-error [class]=\"'app-grid'\" [field]='employerPhone' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n </section>\r\n </div>\r\n </ion-col>\r\n <ion-col class=\"ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"6\" sizeLg=\"6\" sizeXl=\"6\">\r\n <div class=\"p-fluid p-formgrid\">\r\n <div class=\"field\" *ngIf=\"!displayUnionMemberQuestions && !displayWorkingForAnEmployerQuestions\">\r\n <label for=\"workSearchDate\">{{'work.search.journal.applicationDate'| translate}}</label>\r\n <p-calendar [showIcon]=\"true\" inputId=\"workSearchDate\" appendTo=\"body\" [formControl]=\"workSearchDate\" [minDate]=\"sunDate\" [maxDate]=\"satDate\" [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='workSearchDate' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.',\r\n dateNotBetween: 'Date should be between ' + sunDateString + ' and ' + satDateString + '.'\r\n }\"></app-error>\r\n </div>\r\n <section *ngIf =\"displayEmployerQuestions\">\r\n <div class=\"field\">\r\n <label for=\"positionAppliedFor\">{{'work.search.journal.jobTitle'| translate}}</label>\r\n <input id=\"positionAppliedFor\" type=\"input\" pInputText [formControl]=\"positionAppliedFor\" maxlength=\"50\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='positionAppliedFor' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.',\r\n pattern: 'Job Title can only contain letters, numbers, spaces, and hyphens'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"contactMethod\">{{'work.search.journal.contactMethod'| translate}}</label>\r\n <p-selectButton [options]=\"workSearchMethodContact\" optionLabel=\"DESC\" optionValue=\"NAME\" [formControl]=\"contactMethod\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='contactMethod' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n \r\n <div class=\"field\" *ngIf=\"contactMethod.value == 'TELE'\">\r\n <label for=\"contactPhone\">{{'work.search.journal.phoneNo' | translate}}</label>\r\n <p-inputMask inputId=\"contactPhone\" [formControl]=\"contactPhone\" mask=\"(999) 999-9999\" unmask=\"true\"></p-inputMask>\r\n <app-error [class]=\"'app-grid'\" [field]='contactPhone' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"contactMethod.value == 'EMAL'\">\r\n <label for=\"employerEmail\">{{'work.search.journal.email' | translate}}</label>\r\n <input id=\"employerEmail\" type=\"input\" pInputText [formControl]=\"employerEmail\" placeholder=\"emailid@example.com\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='employerEmail' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.',\r\n employerEmail: 'Invalid email address.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"contactMethod.value == 'ONLI'\">\r\n <label for=\"employerWebsite\">{{'work.search.journal.website' | translate}}</label>\r\n <input id=\"employerWebsite\" type=\"input\" pInputText [formControl]=\"employerWebsite\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='employerWebsite' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n \r\n <div class=\"field\" *ngIf=\"contactMethod.value !='ONLI'\">\r\n <label for=\"empContactPersonName\">{{'work.search.journal.contactNameTitle' | translate}}</label>\r\n <input id=\"empContactPersonName\" type=\"input\" pInputText [formControl]=\"empContactPersonName\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='empContactPersonName' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"searchResult\">{{'work.search.journal.result' | translate}}</label>\r\n <app-dropdown [options]=\"workSearchResultCombo\" optionLabel=\"DESC\" optionValue=\"NAME\" [formControl]=\"searchResult\" appendTo=\"body\" inputId=\"searchResult\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='searchResult' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"searchResult.value == 'OTHR'\">\r\n <label for=\"othResult\">{{'work.search.journal.result.oth' | translate}}</label>\r\n <input id=\"othResult\" type=\"input\" pInputText [formControl]=\"othResult\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='othResult' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"searchResult.value == 'HIRE'\">\r\n <label for=\"hasStartDate\">{{'work.search.journal.result.hasStartDate' | translate}}</label>\r\n <p-selectButton [options]=\"yesNoOptions\" optionLabel=\"DESC\" optionValue=\"NAME\" [formControl]=\"hasStartDate\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='hasStartDate' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"hasStartDate.value == 'Y' && searchResult.value == 'HIRE'\">\r\n <label for=\"workStartDate\">{{'work.search.journal.result.startDate' | translate}}</label>\r\n <p-calendar [showIcon]=\"true\" inputId=\"workStartDate\" appendTo=\"body\" [formControl]=\"workStartDate\" [minDate]=\"sunDate\" [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='workStartDate' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n\r\n </div>\r\n </section>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col class=\"ion-text-right\">\r\n <section *ngIf=\"displayUnionMemberQuestions\">\r\n\t\t\t <div class=\"field\" *ngIf=\"isInContactWithUnion.value === 'N'\">\r\n {{'work.search.journal.noContactWithUnion' | translate}}\r\n </div>\r\n </section>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col class=\"ion-text-right\">\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"close()\" type=\"reset\">{{'button.cancel' | translate}}</ion-button>\r\n <ion-button shape=\"round\" (click)=\"add()\" type=\"submit\">{{'button.add' | translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </form>\r\n</p-dialog>", styles: [":host ::ng-deep .p-dialog{width:90%!important}\n"] }]
|
|
1193
|
+
args: [{ selector: 'app-work-search-employer-me', template: "<p-dialog visible=\"true\" modal=\"true\" appendTo=\"body\" position=\"top\" [showHeader]=\"false\" [breakpoints]=\"{'1200px': '660px', '992px': '660px', '768px': '660px', '576px': '100vw'}\">\r\n <h4 style=\"color: var(--ion-color-grey); padding-left: 20px;\">{{'work.search.journal.activity.heading' | translate:dynamicParam }}</h4>\r\n <form [formGroup]=\"wsrForm\" #wsrFormDirective=\"ngForm\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"6\" sizeLg=\"6\" sizeXl=\"6\">\r\n <div class=\"p-fluid p-formgrid\">\r\n \r\n <div class=\"field\">\r\n <label for=\"activityType\">{{'work.search.journal.activity.type' | translate}}</label>\r\n <app-overlay-info [overlayText]=\"'work.search.journal.activity.ip2095' | translate | trustHtml\" style=\"padding-left: 8px;flex-grow: 1;\"></app-overlay-info>\r\n <app-dropdown [options]=\"activityTypeCombo\" optionLabel=\"DESC\" optionValue=\"NAME\" [formControl]=\"activityType\" appendTo=\"body\" inputId=\"activityType\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='activityType' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.',\r\n typeAlreadyUsed: 'You can only add one entry for this activity type this week.'\r\n }\"></app-error>\r\n </div>\r\n <section *ngIf=\"displayWorkingForAnEmployerQuestions\">\r\n <div class=\"field\">\r\n <label for=\"workOrPerformServiceType\">{{'work.search.journal.workOrPerformServiceType' | translate}}</label>\r\n <p-selectButton [options]=\"employmentTypeOptions\" optionLabel=\"DESC\" optionValue=\"NAME\"\r\n [formControl]=\"workOrPerformServiceType\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='workOrPerformServiceType' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n </section>\r\n <section *ngIf=\"displayUnionMemberQuestions\">\r\n <div class=\"field\">\r\n <label for=\"isInContactWithUnion\">{{'work.search.journal.isInContactWithUnion' | translate}}</label>\r\n <p-selectButton [options]=\"yesNoOptions\" optionLabel=\"DESC\" optionValue=\"NAME\"\r\n [formControl]=\"isInContactWithUnion\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='isInContactWithUnion' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"isInContactWithUnion.value === 'Y'\">\r\n <label for=\"unionName\">{{'work.search.journal.unionName' | translate}}</label>\r\n <input id=\"unionName\" type=\"input\" pInputText [formControl]=\"unionName\" appStripInvisibleChars />\r\n <app-error [class]=\"'app-grid'\" [field]='unionName' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"isInContactWithUnion.value === 'Y'\">\r\n <label for=\"unionContactPersonName\">{{'work.search.journal.unionContactPersonName' | translate}}</label>\r\n <input id=\"unionContactPersonName\" type=\"input\" pInputText [formControl]=\"unionContactPersonName\"\r\n appStripInvisibleChars />\r\n <app-error [class]=\"'app-grid'\" [field]='unionContactPersonName' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"isInContactWithUnion.value === 'Y'\">\r\n <label for=\"unionContactDate\">{{'work.search.journal.unionContactDate'| translate}}</label>\r\n <p-calendar [showIcon]=\"true\" inputId=\"unionContactDate\" appendTo=\"body\" [formControl]=\"unionContactDate\"\r\n [minDate]=\"sunDate\" [maxDate]=\"satDate\" [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='unionContactDate' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n </section>\r\n <section *ngIf=\"displayCCQuestions\">\r\n <div class=\"field\">\r\n <label for=\"workShopName\">{{'work.search.journal.workShopName' | translate}}</label>\r\n <input id=\"workShopName\" type=\"input\" pInputText [formControl]=\"workShopName\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='workShopName' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n </section>\r\n <section *ngIf =\"displayJobFairQuestions\">\r\n <div class=\"field\">\r\n <label for=\"jobFairLocation\">{{'work.search.journal.jobFairLocation' | translate}}</label>\r\n <input id=\"jobFairLocation\" type=\"input\" pInputText [formControl]=\"jobFairLocation\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='jobFairLocation' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n </section>\r\n <section *ngIf =\"displayEmployerQuestions\">\r\n <div class=\"field\">\r\n <label for=\"employerName\">{{'work.search.journal.employerName' | translate}}</label>\r\n <app-search-employer [formControl]=\"employerName\" (onFound)=\"setEmployer($event)\" [empType]=\"'REG'\"></app-search-employer>\r\n <app-error [class]=\"'app-grid'\" [field]='employerName' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.', pattern: 'only letters, numbers, spaces, and . , & \\' ( ) - # are allowed'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\">\r\n <label for=\"country\">{{'work.search.journal.country' | translate}}</label><br>\r\n <app-dropdown inputId=\"country\" [options]=\"countryOptions\" optionLabel=\"DESC\" optionValue=\"NAME\"\r\n appendTo=\"body\" [formControl]=\"country\" [autoDisplayFirst]=\"false\" inputId=\"country\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='country' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\">\r\n <label for=\"line1\">{{'work.search.journal.streetAddress' | translate}}</label>\r\n <input id=\"line1\" type=\"input\" pInputText [formControl]=\"line1\" maxlength=\"40\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='line1' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.', pattern: 'only letters, numbers, spaces, and . , & \\' ( ) - # are allowed'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\">\r\n <label for=\"city\">{{'work.search.journal.city' | translate}}</label>\r\n <input id=\"city\" type=\"input\" pInputText [formControl]=\"city\" maxlength=\"30\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='city' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.',\r\n invalidwsCityLength: 'City should not exceed a length of 30 characters',\r\n pattern: 'City name can only contain letters, spaces, and hyphens'\r\n }\"></app-error>\r\n </div>\r\n <ion-row>\r\n <ion-col style=\"padding: 0px;\">\r\n <div class=\"field\">\r\n <label for=\"state\">{{'work.search.journal.state'| translate}}</label>\r\n <app-dropdown inputId=\"state\" [options]=\"statesCombo\" optionLabel=\"DESC\" optionValue=\"NAME\"\r\n appendTo=\"body\" [formControl]=\"state\" inputId = \"state\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='state' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col size=\"1\"></ion-col>\r\n <ion-col style=\"padding: 0px;\">\r\n <div class=\"field\">\r\n <label for=\"zip\">{{'work.search.journal.zip'| translate}}</label>\r\n <input id=\"zip\" type=\"input\" pInputText [formControl]=\"zip\" minlength=\"5\" maxlength=\"9\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='zip' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.',\r\n invalidLength: 'Zip code should be of 5 or 9 digits.',\r\n invalidNumber: 'Zip code should only have numbers.',\r\n invalidZipCode: 'please enter a valid zip code'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <div class=\"field\" >\r\n <label for=\"employerPhone\">{{'work.search.journal.phoneNo' | translate}}</label>\r\n <p-inputMask inputId=\"employerPhone\" [formControl]=\"employerPhone\" mask=\"(999) 999-9999\" unmask=\"true\"></p-inputMask>\r\n <app-error [class]=\"'app-grid'\" [field]='employerPhone' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n </section>\r\n </div>\r\n </ion-col>\r\n <ion-col class=\"ion-padding\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"6\" sizeLg=\"6\" sizeXl=\"6\">\r\n <div class=\"p-fluid p-formgrid\">\r\n <div class=\"field\" *ngIf=\"!displayUnionMemberQuestions && !displayWorkingForAnEmployerQuestions\">\r\n <label for=\"workSearchDate\">{{'work.search.journal.applicationDate'| translate}}</label>\r\n <p-calendar [showIcon]=\"true\" inputId=\"workSearchDate\" appendTo=\"body\" [formControl]=\"workSearchDate\" [minDate]=\"sunDate\" [maxDate]=\"maxAllowedDate\" [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='workSearchDate' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.',\r\n dateNotBetween: 'Date should be between ' + sunDateString + ' and ' + maxAllowedDateString + '.'\r\n }\"></app-error>\r\n </div>\r\n <section *ngIf =\"displayEmployerQuestions\">\r\n <div class=\"field\">\r\n <label for=\"positionAppliedFor\">{{'work.search.journal.jobTitle'| translate}}</label>\r\n <input id=\"positionAppliedFor\" type=\"input\" pInputText [formControl]=\"positionAppliedFor\" maxlength=\"50\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='positionAppliedFor' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.',\r\n pattern: 'Job Title can only contain letters, numbers, spaces, and hyphens'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"contactMethod\">{{'work.search.journal.contactMethod'| translate}}</label>\r\n <p-selectButton [options]=\"workSearchMethodContact\" optionLabel=\"DESC\" optionValue=\"NAME\" [formControl]=\"contactMethod\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='contactMethod' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n \r\n <div class=\"field\" *ngIf=\"contactMethod.value == 'TELE'\">\r\n <label for=\"contactPhone\">{{'work.search.journal.phoneNo' | translate}}</label>\r\n <p-inputMask inputId=\"contactPhone\" [formControl]=\"contactPhone\" mask=\"(999) 999-9999\" unmask=\"true\"></p-inputMask>\r\n <app-error [class]=\"'app-grid'\" [field]='contactPhone' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"contactMethod.value == 'EMAL'\">\r\n <label for=\"employerEmail\">{{'work.search.journal.email' | translate}}</label>\r\n <input id=\"employerEmail\" type=\"input\" pInputText [formControl]=\"employerEmail\" placeholder=\"emailid@example.com\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='employerEmail' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.',\r\n employerEmail: 'Invalid email address.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"contactMethod.value == 'ONLI'\">\r\n <label for=\"employerWebsite\">{{'work.search.journal.website' | translate}}</label>\r\n <input id=\"employerWebsite\" type=\"input\" pInputText [formControl]=\"employerWebsite\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='employerWebsite' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n \r\n <div class=\"field\" *ngIf=\"contactMethod.value !='ONLI'\">\r\n <label for=\"empContactPersonName\">{{'work.search.journal.contactNameTitle' | translate}}</label>\r\n <input id=\"empContactPersonName\" type=\"input\" pInputText [formControl]=\"empContactPersonName\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='empContactPersonName' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label for=\"searchResult\">{{'work.search.journal.result' | translate}}</label>\r\n <app-dropdown [options]=\"workSearchResultCombo\" optionLabel=\"DESC\" optionValue=\"NAME\" [formControl]=\"searchResult\" appendTo=\"body\" inputId=\"searchResult\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='searchResult' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n\r\n <div class=\"field\" *ngIf=\"searchResult.value == 'OTHR'\">\r\n <label for=\"othResult\">{{'work.search.journal.result.oth' | translate}}</label>\r\n <input id=\"othResult\" type=\"input\" pInputText [formControl]=\"othResult\" appStripInvisibleChars/>\r\n <app-error [class]=\"'app-grid'\" [field]='othResult' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"searchResult.value == 'HIRE'\">\r\n <label for=\"hasStartDate\">{{'work.search.journal.result.hasStartDate' | translate}}</label>\r\n <p-selectButton [options]=\"yesNoOptions\" optionLabel=\"DESC\" optionValue=\"NAME\" [formControl]=\"hasStartDate\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='hasStartDate' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n </div>\r\n <div class=\"field\" *ngIf=\"hasStartDate.value == 'Y' && searchResult.value == 'HIRE'\">\r\n <label for=\"workStartDate\">{{'work.search.journal.result.startDate' | translate}}</label>\r\n <p-calendar [showIcon]=\"true\" inputId=\"workStartDate\" appendTo=\"body\" [formControl]=\"workStartDate\" [minDate]=\"sunDate\" [defaultDate]=\"sunDate\" [selectOtherMonths]=\"true\"></p-calendar>\r\n <app-error [class]=\"'app-grid'\" [field]='workStartDate' [form]=\"wsrFormDirective\" [errDef]=\"{ \r\n required: 'Required.'\r\n }\"></app-error>\r\n\r\n </div>\r\n </section>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col class=\"ion-text-right\">\r\n <section *ngIf=\"displayUnionMemberQuestions\">\r\n\t\t\t <div class=\"field\" *ngIf=\"isInContactWithUnion.value === 'N'\">\r\n {{'work.search.journal.noContactWithUnion' | translate}}\r\n </div>\r\n </section>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col class=\"ion-text-right\">\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"close()\" type=\"reset\">{{'button.cancel' | translate}}</ion-button>\r\n <ion-button shape=\"round\" (click)=\"add()\" type=\"submit\">{{'button.add' | translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </form>\r\n</p-dialog>", styles: [":host ::ng-deep .p-dialog{width:90%!important}\n"] }]
|
|
1188
1194
|
}], () => [{ type: i1.WeeklyCertServiceV2 }, { type: i2.UntypedFormBuilder }, { type: i3.UtilService }], { wsrFormDirective: [{
|
|
1189
1195
|
type: ViewChild,
|
|
1190
1196
|
args: ['wsrFormDirective', { static: false }]
|
|
@@ -1210,4 +1216,4 @@ export class WorkSearchEmployerComponentME {
|
|
|
1210
1216
|
type: Input
|
|
1211
1217
|
}] }); })();
|
|
1212
1218
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WorkSearchEmployerComponentME, { className: "WorkSearchEmployerComponentME", filePath: "lib\\components\\weekly-work-search-employer-me\\work-search-employer.component-me.ts", lineNumber: 16 }); })();
|
|
1213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay1zZWFyY2gtZW1wbG95ZXIuY29tcG9uZW50LW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dlZWtseS13b3JrLXNlYXJjaC1lbXBsb3llci1tZS93b3JrLXNlYXJjaC1lbXBsb3llci5jb21wb25lbnQtbWUudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvd2Vla2x5LXdvcmstc2VhcmNoLWVtcGxveWVyLW1lL3dvcmstc2VhcmNoLWVtcGxveWVyLmNvbXBvbmVudC1tZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBNkQsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNTN0MsK0JBQXNELGFBQUEsZ0JBQUE7SUFFWixZQUE4RDs7SUFBQSxpQkFBUTtJQUM1RyxxQ0FDNEQsb0JBQUE7SUFJOUQsaUJBQU0sRUFBQTs7OztJQU5rQyxlQUE4RDtJQUE5RCwwRkFBOEQ7SUFDcEYsZUFBaUM7SUFBakMsc0RBQWlDLGdEQUFBO0lBRXRDLGVBQW9CO0lBQXBCLHlCQUFvQjtJQUFDLHVEQUFrQyxhQUFBLHVDQUFBOzs7SUFjcEUsOEJB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cG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBOZ0Zvcm0sIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tYm9PcHRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tYm8tbW9kZWwnO1xyXG5pbXBvcnQgeyBFbXBsb3llclNlYXJjaFJlc3VsdCB9IGZyb20gJy4uLy4uL21vZGVscy9FbXBsb3llckRldGFpbFNlYXJjaFJlc3VsdCc7XHJcbmltcG9ydCB7IFdvcmtTZWFyY2hSZWNvcmRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy93ZWVrbHktY2VydC93b3JrLXNlYXJjaC1yZWNvcmQtdjItbW9kZWwnO1xyXG5pbXBvcnQgeyBXZWVrbHlDZXJ0U2VydmljZVYyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2Vla2x5LWNlcnQvd2Vla2x5LWNlcnQtdjIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcFZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi92YWxpZGF0aW9ucy9BcHBWYWxpZGF0b3JzJztcclxuaW1wb3J0IHsgTGliQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0xpYkNvbnN0YW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC13b3JrLXNlYXJjaC1lbXBsb3llci1tZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmstc2VhcmNoLWVtcGxveWVyLmNvbXBvbmVudC1tZS5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93b3JrLXNlYXJjaC1lbXBsb3llci5jb21wb25lbnQtbWUuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya1NlYXJjaEVtcGxveWVyQ29tcG9uZW50TUUgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCd3c3JGb3JtRGlyZWN0aXZlJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHdzckZvcm1EaXJlY3RpdmU6IE5nRm9ybTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgc3VjY2VzczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZWNvcmRJbmRleFRvRWRpdDogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkYXRhOiBXb3JrU2VhcmNoUmVjb3JkTW9kZWw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNhdERhdGU6IERhdGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHN1bkRhdGU6IERhdGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNhdERhdGVTdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHN1bkRhdGVTdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGpvdXJuYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZXhpc3RpbmdSZWNvcmRzOiBXb3JrU2VhcmNoUmVjb3JkTW9kZWxbXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgd29ya1NlYXJjaE1ldGhvZENvbnRhY3QgPSBDb21ib09wdGlvbi5Xb3JrU2VhcmNoTWV0aG9kQ29udGFjdDtcclxuICBwdWJsaWMgd29ya1NlYXJjaFJlc3VsdENvbWJvID0gQ29tYm9PcHRpb24uV29ya1NlYXJjaFJlc3VsdENhcmVlckNlbnRlckNvbWJvTWU7XHJcbiAgcHVibGljIHN0YXRlc0NvbWJvOiBhbnkgPSBbXTtcclxuICBwdWJsaWMgaXNSZWFkT25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB3b3JrU2VhcmNoUmVjb3JkRGF0YTogV29ya1NlYXJjaFJlY29yZE1vZGVsID0gbnVsbDtcclxuICBwdWJsaWMgd3NyRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBwdWJsaWMgY291bnRyeU9wdGlvbnMgPSBDb21ib09wdGlvbi5DT1VOVFJZO1xyXG5cclxuICBhY3Rpdml0eVR5cGVDb21ibzogQ29tYm9PcHRpb25bXTtcclxuICBkeW5hbWljUGFyYW06IGFueTtcclxuICBkaXNwbGF5RW1wbG95ZXJRdWVzdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNwbGF5Q0NRdWVzdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNwbGF5Sm9iRmFpclF1ZXN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpc3BsYXlVbmlvbk1lbWJlclF1ZXN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpc3BsYXlXb3JraW5nRm9yQW5FbXBsb3llclF1ZXN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHllc05vT3B0aW9ucyA9IENvbWJvT3B0aW9uLlllc05vT3B0aW9ucztcclxuICBlbXBsb3ltZW50VHlwZU9wdGlvbnMgPSBDb21ib09wdGlvbi5Xb3JrU2VhcmNoRW1wbG95bWVudFR5cGU7XHJcblxyXG4gIC8qKiBSYWlzZWQgd2hlbiAobG9jYWwgUkVFTSArIHNlcnZlciBSRUVNICsgY3VycmVudCBzZWxlY3Rpb24pID4gUkVFTV9MSU1JVCAqL1xyXG4gIHB1YmxpYyByZWVtRXhjZWVkZWRGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIE1heCBSRUVNIGFjdGl2aXRpZXMgKHByZXZpb3VzIHdlZWtzIGNvdW50ICsgdGhpcyB3ZWVrcyBjb3VudCArIGN1cnJlbnQgYWRkaXRpb24pICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBSRUVNX0xJTUlUID0gMjtcclxuXHJcbiAgLyoqIE5FVzogb25seSB0aGVzZSB0eXBlcyBhcmUgYWxsb3dlZCBvbmNlICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBTSU5HTEVUT05fVFlQRVMgPSBuZXcgU2V0KFsnVU5PTicsICdXUktQJ10pO1xyXG4gIC8qKiBSRUVNIEFjdGl2aXR5IFR5cGVzICovXHJcbiAgcHJpdmF0ZSBSRUVNX0FDVElWSVRZX1RZUEVTID0gbmV3IFNldChbJ0pCRlInLCAnQ1NWVyddKTtcclxuXHJcbiAgdXNaaXBjb2RlVmFsaWRhdGlvbnM6IFZhbGlkYXRvckZuW10gPSBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQXBwVmFsaWRhdG9ycy5pc1ZhbGlkWmlwQ29kZV07XHJcbiAgY2FuYWRhWmlwY29kZVZhbGlkYXRpb25zOiBWYWxpZGF0b3JGbltdID0gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFwcFZhbGlkYXRvcnMuaXNWYWxpZENhbmFkaWFuWmlwQ29kZV07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB3Y1NlcnZpY2U6IFdlZWtseUNlcnRTZXJ2aWNlVjIsIHB1YmxpYyBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLCBwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLmpvdXJuYWwpIHtcclxuICAgICAgdGhpcy5zYXREYXRlID0gdGhpcy51dGlsLmdldEVudGVyZWREYXRlKHRoaXMud2NTZXJ2aWNlLmdldFNhdHVyZGF5RGF0ZSgpKVxyXG4gICAgICB0aGlzLnN1bkRhdGUgPSB0aGlzLnV0aWwuZ2V0RW50ZXJlZERhdGUodGhpcy53Y1NlcnZpY2UuZ2V0U3VuZGF5RGF0ZSgpKTtcclxuICAgICAgdGhpcy5zYXREYXRlU3RyaW5nID0gdGhpcy53Y1NlcnZpY2UuZ2V0U2F0dXJkYXlEYXRlQXNTdHJpbmcoKTtcclxuICAgICAgdGhpcy5zdW5EYXRlU3RyaW5nID0gdGhpcy53Y1NlcnZpY2UuZ2V0U3VuZGF5RGF0ZUFzU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmR5bmFtaWNQYXJhbSA9IHtcclxuICAgICAgJ3NhdHVyZGF5X2RhdGUnOiB0aGlzLnNhdERhdGVTdHJpbmcsXHJcbiAgICAgICdzdW5kYXlfZGF0ZSc6IHRoaXMuc3VuRGF0ZVN0cmluZyxcclxuICAgIH07XHJcbiAgICB0aGlzLmluaXRpbGl6ZVdvcmtTZWFyY2hGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWxpemVXb3JrU2VhcmNoRm9ybSgpIHtcclxuICAgIGxldCB3c3I6IFdvcmtTZWFyY2hSZWNvcmRNb2RlbDtcclxuICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgd3NyID0gdGhpcy5kYXRhO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnJlY29yZEluZGV4VG9FZGl0ID09IHVuZGVmaW5lZCB8fCB0aGlzLnJlY29yZEluZGV4VG9FZGl0ID09IG51bGwpIHtcclxuICAgICAgd3NyID0gbmV3IFdvcmtTZWFyY2hSZWNvcmRNb2RlbCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd3NyID0gdGhpcy53Y1NlcnZpY2UuZ2V0V29ya1NlYXJjaFJlY29yZHMoKVt0aGlzLnJlY29yZEluZGV4VG9FZGl0XTtcclxuICAgICAgaWYgKHdzci5hY3Rpdml0eVR5cGUgPT0gbnVsbCkge1xyXG4gICAgICAgIHdzci5hY3Rpdml0eVR5cGUgPSAnQ05UQyc7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy53c3JGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICdhY3Rpdml0eVR5cGUnOiBbd3NyLmFjdGl2aXR5VHlwZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICd3b3JrU2VhcmNoRGF0ZSc6IFt3c3Iud29ya1NlYXJjaERhdGUgIT0gbnVsbCA/IHRoaXMuZ2V0RGF0ZSh3c3Iud29ya1NlYXJjaERhdGUpIDogJyddLFxyXG4gICAgICAnZW1wbG95ZXJOYW1lJzogW3dzci5lbXBsb3llck5hbWVdLFxyXG4gICAgICAnY2l0eSc6IFt3c3IuY2l0eV0sXHJcbiAgICAgICdsaW5lMSc6IFt3c3IubGluZTFdLFxyXG4gICAgICAnbGluZTInOiBbd3NyLmxpbmUyXSxcclxuICAgICAgJ3N0YXRlJzogW3dzci5zdGF0ZSAhPSBudWxsID8gd3NyLnN0YXRlIDogTGliQ29uc3RhbnRzLlNUQVRFXSxcclxuICAgICAgJ2NvdW50cnknOiBbd3NyLmNvdW50cnldLFxyXG4gICAgICAnY29udGFjdE1ldGhvZCc6IFt3c3IuY29udGFjdE1ldGhvZCAhPSBudWxsID8gd3NyLmNvbnRhY3RNZXRob2QgOiAnJ10sXHJcbiAgICAgICdlbXBDb250YWN0UGVyc29uTmFtZSc6IFt3c3IuZW1wQ29udGFjdFBlcnNvbk5hbWVdLFxyXG4gICAgICAnZW1wQ29udGFjdFBlcnNvblRpdGxlJzogW3dzci5lbXBDb250YWN0UGVyc29uVGl0bGVdLFxyXG4gICAgICAnemlwJzogW3dzci56aXBdLFxyXG4gICAgICAnZW1wbG95ZXJQaG9uZSc6IFt3c3IuZW1wbG95ZXJQaG9uZSAhPSBudWxsID8gd3NyLmVtcGxveWVyUGhvbmUgOiAnJ10sXHJcbiAgICAgICdjb250YWN0UGhvbmUnOiBbd3NyLmNvbnRhY3RQaG9uZSAhPSBudWxsID8gd3NyLmNvbnRhY3RQaG9uZSA6ICcnXSxcclxuICAgICAgJ2VtcGxveWVyRW1haWwnOiBbd3NyLmVtcGxveWVyRW1haWxdLFxyXG4gICAgICAnZW1wbG95ZXJXZWJzaXRlJzogW3dzci5lbXBsb3llcldlYnNpdGVdLFxyXG4gICAgICAnZW1wbG95ZXJGYXgnOiBbd3NyLmVtcGxveWVyRmF4ICE9IG51bGwgPyB3c3IuZW1wbG95ZXJGYXggOiAnJ10sXHJcbiAgICAgICdwb3NpdGlvbkFwcGxpZWRGb3InOiBbd3NyLnBvc2l0aW9uQXBwbGllZEZvcl0sXHJcbiAgICAgICdzZWFyY2hSZXN1bHQnOiBbd3NyLnNlYXJjaFJlc3VsdF0sXHJcbiAgICAgICd3aW5nc1JlZmVycmFsV29ya1NlYXJjaElkJzogW3dzci53aW5nc1JlZmVycmFsV29ya1NlYXJjaElkXSxcclxuICAgICAgJ2NsYWltYW50V29ya1NlYXJjaEpvdXJuYWxJZCc6IFt3c3IuY2xhaW1hbnRXb3JrU2VhcmNoSm91cm5hbElkXSxcclxuICAgICAgJ3dzcklkJzogW3dzci53c3JJZF0sXHJcbiAgICAgICd3b3JrU2hvcE5hbWUnOiBbd3NyLndvcmtTaG9wTmFtZV0sXHJcbiAgICAgICdqb2JGYWlyTG9jYXRpb24nOiBbd3NyLmpvYkZhaXJMb2NhdGlvbl0sXHJcbiAgICAgICdvdGhSZXN1bHQnOiBbd3NyLm90aFJlc3VsdF0sXHJcbiAgICAgICdoYXNTdGFydERhdGUnOiBbd3NyLmhhc1N0YXJ0RGF0ZV0sXHJcbiAgICAgICd3b3JrU3RhcnREYXRlJzogW3dzci53b3JrU3RhcnREYXRlXSxcclxuICAgICAgJ3R5cGVPZldvcmsnOiBbd3NyLnR5cGVPZldvcmtdLFxyXG4gICAgICAnaXNJbkNvbnRhY3RXaXRoVW5pb24nOiBbd3NyLmlzSW5Db250YWN0V2l0aFVuaW9uXSxcclxuICAgICAgJ3VuaW9uTmFtZSc6IFt3c3IudW5pb25OYW1lXSxcclxuICAgICAgJ3VuaW9uQ29udGFjdFBlcnNvbk5hbWUnOiBbd3NyLnVuaW9uQ29udGFjdFBlcnNvbk5hbWVdLFxyXG4gICAgICAndW5pb25Db250YWN0RGF0ZSc6IFt3c3IudW5pb25Db250YWN0RGF0ZV0sXHJcbiAgICAgICd3b3JrT3JQZXJmb3JtU2VydmljZVR5cGUnOiBbd3NyLndvcmtPclBlcmZvcm1TZXJ2aWNlVHlwZV1cclxuICAgIH0pO1xyXG5cclxuICAgIC8qKiBORVc6IGF0dGFjaCB1bmlxdWUtdHlwZSB2YWxpZGF0b3IgdG8gYWN0aXZpdHlUeXBlICovXHJcbiAgICBjb25zdCBwcmV2ID0gdGhpcy5hY3Rpdml0eVR5cGUudmFsaWRhdG9yID8gW3RoaXMuYWN0aXZpdHlUeXBlLnZhbGlkYXRvcl0gOiBbXTtcclxuICAgIHRoaXMuYWN0aXZpdHlUeXBlLnNldFZhbGlkYXRvcnMoWy4uLnByZXYsIHRoaXMudW5pcXVlQWN0aXZpdHlUeXBlVmFsaWRhdG9yKCldKTtcclxuICAgIHRoaXMuYWN0aXZpdHlUeXBlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cclxuICAgIGlmICh3c3IuYWN0aXZpdHlUeXBlID09ICdDTlRDJyB8fCB3c3IuYWN0aXZpdHlUeXBlID09ICdBUExEJyB8fCB3c3IuYWN0aXZpdHlUeXBlID09ICdOVFJXJykge1xyXG4gICAgICB0aGlzLmRpc3BsYXlFbXBsb3llclF1ZXN0aW9ucyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzcGxheUNDUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheUpvYkZhaXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5V29ya2luZ0ZvckFuRW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAod3NyLmFjdGl2aXR5VHlwZSA9PSAnSkJGUicpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5RW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Q0NRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Sm9iRmFpclF1ZXN0aW9ucyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzcGxheVdvcmtpbmdGb3JBbkVtcGxveWVyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKHdzci5hY3Rpdml0eVR5cGUgPT0gJ0NTVlcnIHx8IHdzci5hY3Rpdml0eVR5cGUgPT0gJ1JFU1InKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUVtcGxveWVyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheUNDUXVlc3Rpb25zID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Sm9iRmFpclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlXb3JraW5nRm9yQW5FbXBsb3llclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmICh3c3IuYWN0aXZpdHlUeXBlID09ICdVTk9OJykge1xyXG4gICAgICB0aGlzLmRpc3BsYXlFbXBsb3llclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlDQ1F1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlKb2JGYWlyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheVVuaW9uTWVtYmVyUXVlc3Rpb25zID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNwbGF5V29ya2luZ0ZvckFuRW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAod3NyLmFjdGl2aXR5VHlwZSA9PSAnV1JLUCcpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5RW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Q0NRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Sm9iRmFpclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlVbmlvbk1lbWJlclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlXb3JraW5nRm9yQW5FbXBsb3llclF1ZXN0aW9ucyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3Rpdml0eVR5cGVDb21ibyA9IENvbWJvT3B0aW9uLkFjdGl2aXR5VHlwZUNvbWJvO1xyXG4gICAgaWYgKHdzci5hY3Rpdml0eVR5cGUgPT0gJ0NOVEMnIHx8IHdzci5hY3Rpdml0eVR5cGUgPT0gJ0FQTEQnKSB7XHJcbiAgICAgIHRoaXMud29ya1NlYXJjaFJlc3VsdENvbWJvID0gQ29tYm9PcHRpb24uV29ya1NlYXJjaFJlc3VsdEVtcGxveWVyQ29tYm9NZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMud29ya1NlYXJjaFJlc3VsdENvbWJvID0gQ29tYm9PcHRpb24uV29ya1NlYXJjaFJlc3VsdENhcmVlckNlbnRlckNvbWJvTWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy53b3JrU2VhcmNoTWV0aG9kQ29udGFjdCA9IENvbWJvT3B0aW9uLldvcmtTZWFyY2hNZXRob2RDb250YWN0TWU7XHJcblxyXG4gICAgaWYgKHdzci53aW5nc1JlZmVycmFsV29ya1NlYXJjaElkICE9IG51bGwgJiYgd3NyLndpbmdzUmVmZXJyYWxXb3JrU2VhcmNoSWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuaXNSZWFkT25seSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzUmVhZE9ubHkgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuY29udGFjdE1ldGhvZC5zZXRWYWx1ZSh3c3IuY29udGFjdE1ldGhvZCAhPSBudWxsID8gd3NyLmNvbnRhY3RNZXRob2QgOiAnJyk7XHJcbiAgICB0aGlzLmNvbnRhY3RNZXRob2QudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICB0aGlzLnNldENvbnRhY3RJbmZvVmFsaWRhdGlvbih2YWwpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hY3Rpdml0eVR5cGUudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICB0aGlzLnJlZW1FeGNlZWRlZEZsYWcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZXRBY3Rpdml0eVR5cGVWYWxpZGF0aW9uKHZhbCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmlzSW5Db250YWN0V2l0aFVuaW9uLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgdGhpcy5zZXRVbmlvblZhbGlkYXRpb24odmFsKTtcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHdzci5zZWFyY2hSZXN1bHQgPT0gJ0hEUlcnKSB7XHJcbiAgICAgIHRoaXMuaGFzU3RhcnREYXRlLnNldFZhbHVlKHdzci5oYXNTdGFydERhdGUgIT0gbnVsbCA/IHdzci5oYXNTdGFydERhdGUgOiAnJyk7XHJcbiAgICAgIHRoaXMud29ya1N0YXJ0RGF0ZS5zZXRWYWx1ZSh3c3Iud29ya1N0YXJ0RGF0ZSAhPSBudWxsID8gbmV3IERhdGUod3NyLndvcmtTdGFydERhdGUpIDogJycpO1xyXG4gICAgICB0aGlzLnNlYXJjaFJlc3VsdC5zZXRWYWx1ZSgnSElSRScpO1xyXG4gICAgfSBlbHNlIGlmICh3c3Iuc2VhcmNoUmVzdWx0ID09ICdITlNEJykge1xyXG4gICAgICB0aGlzLmhhc1N0YXJ0RGF0ZS5zZXRWYWx1ZSh3c3IuaGFzU3RhcnREYXRlICE9IG51bGwgPyB3c3IuaGFzU3RhcnREYXRlIDogJycpO1xyXG4gICAgICB0aGlzLnNlYXJjaFJlc3VsdC5zZXRWYWx1ZSgnSElSRScpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaGFzU3RhcnREYXRlLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgaWYgKHZhbCA9PSAnWScpIHtcclxuICAgICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy53b3JrU3RhcnREYXRlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMud29ya1N0YXJ0RGF0ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRDb250YWN0SW5mb1ZhbGlkYXRpb24odGhpcy5jb250YWN0TWV0aG9kLnZhbHVlKTtcclxuICAgIHRoaXMuc2V0QWN0aXZpdHlUeXBlVmFsaWRhdGlvbih0aGlzLmFjdGl2aXR5VHlwZS52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogTkVXOiB1bmlxdWUtdHlwZSB2YWxpZGF0b3IgZmFjdG9yeSAqL1xyXG4gIHByaXZhdGUgdW5pcXVlQWN0aXZpdHlUeXBlVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbCkgPT4ge1xyXG4gICAgICBjb25zdCB2ID0gY29udHJvbD8udmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICBpZiAoIXYpIHJldHVybiBudWxsO1xyXG4gICAgICBpZiAodGhpcy5TSU5HTEVUT05fVFlQRVMuaGFzKHYpICYmIHRoaXMuaGFzVHlwZSh2KSkge1xyXG4gICAgICAgIHJldHVybiB7IHR5cGVBbHJlYWR5VXNlZDogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gICAgIC8qKiBORVc6IGNoZWNrcyBpZiBVTk9OL1dSS1AgYWxyZWFkeSBleGlzdHMgb24gYW5vdGhlciByb3cgKi9cclxuICBwcml2YXRlIGhhc1R5cGUodHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgLy8gUHJlZmVyIHRoZSBwYXNzZWQtaW4gbGlzdCBpZiBwcm92aWRlZDsgZmFsbCBiYWNrIHRvIHNlcnZpY2VcclxuICBjb25zdCBsaXN0ID1cclxuICAgICh0aGlzLmV4aXN0aW5nUmVjb3JkcyAmJiB0aGlzLmV4aXN0aW5nUmVjb3Jkcy5sZW5ndGggPiAwKVxyXG4gICAgICA/IHRoaXMuZXhpc3RpbmdSZWNvcmRzXHJcbiAgICAgIDogKHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hSZWNvcmRzKCkgPz8gW10pO1xyXG4gXHJcbiAgLy8gQ29ycmVjdGx5IGRldGVjdCBpZiB3ZSBhcmUgZWRpdGluZyBldmVuIHdoZW4gaW5kZXggaXMgMFxyXG4gIGNvbnN0IGhhc0VkaXRJZHggPSB0aGlzLnJlY29yZEluZGV4VG9FZGl0ICE9PSBudWxsICYmIHRoaXMucmVjb3JkSW5kZXhUb0VkaXQgIT09IHVuZGVmaW5lZDtcclxuICBjb25zdCBlZGl0SWR4ID0gaGFzRWRpdElkeCA/IHRoaXMucmVjb3JkSW5kZXhUb0VkaXQgOiAtMTtcclxuIFxyXG4gIC8vIEV4Y2x1ZGUgdGhlIHJvdyBiZWluZyBlZGl0ZWRcclxuICByZXR1cm4gbGlzdC5zb21lKChyLCBpZHgpID0+IHI/LmFjdGl2aXR5VHlwZSA9PT0gdHlwZSAmJiBpZHggIT09IGVkaXRJZHgpO1xyXG59XHJcblxyXG4gIGZpbHRlclN0YXRlKGV2ZW50KSB7XHJcbiAgICBsZXQgY2hvaWNlOiBhbnk7XHJcbiAgICBpZiAodGhpcy5jb3VudHJ5Py52YWx1ZSA9PT0gJ1VTJykge1xyXG4gICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSBDb21ib09wdGlvbi5TdGF0ZXNDb21iby5maW5kKHN0YXRlID0+IHN0YXRlLk5BTUUgPT0gdGhpcy51dGlsLmdldFN0YXRlKCkpXHJcbiAgICAgIGNob2ljZSA9IFtjdXJyZW50U3RhdGUsIC4uLkNvbWJvT3B0aW9uLlN0YXRlc0NvbWJvLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5OQU1FICE9IHRoaXMudXRpbC5nZXRTdGF0ZSgpKV07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY291bnRyeT8udmFsdWUgPT09ICdDQScpIHtcclxuICAgICAgY2hvaWNlID0gQ29tYm9PcHRpb24uQ0FfU1RBVEVTO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3RhdGVzQ29tYm8gPSBjaG9pY2U7XHJcbiAgfVxyXG5cclxuICBzZXRaaXBDb2RlVmFsaWRhdGlvbkJhc2VkT25Db3VudHJ5KCkge1xyXG4gICAgdGhpcy5jb3VudHJ5LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoYyA9PiB7XHJcbiAgICAgIGlmIChjID09ICdVUycpIHtcclxuICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuemlwKTtcclxuICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLnppcCwgdGhpcy51c1ppcGNvZGVWYWxpZGF0aW9ucyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoYyA9PSAnQ0EnKSB7XHJcbiAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnppcCk7XHJcbiAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy56aXAsIHRoaXMuY2FuYWRhWmlwY29kZVZhbGlkYXRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHNldFVuaW9uVmFsaWRhdGlvbih2YWw6IGFueSl7XHJcbiAgICBpZih2YWwgPT0gJ1knKXtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMudW5pb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMudW5pb25Db250YWN0UGVyc29uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLnVuaW9uQ29udGFjdERhdGUpO1xyXG4gICAgfSBlbHNle1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudW5pb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnVuaW9uQ29udGFjdFBlcnNvbk5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudW5pb25Db250YWN0RGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRBY3Rpdml0eVR5cGVWYWxpZGF0aW9uKHZhbDogYW55KSB7XHJcbiAgICB0aGlzLmRpc3BsYXlFbXBsb3llclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaXNwbGF5Q0NRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlzcGxheUpvYkZhaXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlzcGxheVVuaW9uTWVtYmVyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICB0aGlzLmRpc3BsYXlXb3JraW5nRm9yQW5FbXBsb3llclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh2YWwgPT0gJ0NOVEMnIHx8IHZhbCA9PSAnQVBMRCcgfHwgdmFsID09ICdOVFJXJykge1xyXG4gICAgICB0aGlzLmRpc3BsYXlFbXBsb3llclF1ZXN0aW9ucyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzcGxheUNDUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheUpvYkZhaXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5VW5pb25NZW1iZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5V29ya2luZ0ZvckFuRW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb3VudHJ5LnNldFZhbHVlKFwiVVNcIik7XHJcblxyXG4gICAgICB0aGlzLmNvdW50cnkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjb3VudHJ5ID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlclN0YXRlKGNvdW50cnkpXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zZXRaaXBDb2RlVmFsaWRhdGlvbkJhc2VkT25Db3VudHJ5KCk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMud29ya1NlYXJjaERhdGUsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQXBwVmFsaWRhdG9ycy5pc0JldHdlZW4odGhpcy5zdW5EYXRlLCB0aGlzLnNhdERhdGUpXSkpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuam9iRmFpckxvY2F0aW9uKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndvcmtPclBlcmZvcm1TZXJ2aWNlVHlwZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53b3JrU2hvcE5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuaXNJbkNvbnRhY3RXaXRoVW5pb24pO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudW5pb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnVuaW9uQ29udGFjdFBlcnNvbk5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudW5pb25Db250YWN0RGF0ZSk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmVtcGxveWVyTmFtZSk7XHJcbiAgICAgIHRoaXMuZW1wbG95ZXJOYW1lLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucGF0dGVybigvXltBLVphLXowLTlcXHNcXC4sJicoKSMtXSskLyldKTtcclxuICAgICAgdGhpcy5lbXBsb3llck5hbWUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5saW5lMSk7XHJcbiAgICAgIHRoaXMubGluZTEuYWRkVmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5wYXR0ZXJuKC9eWzAtOUEtWmEtelxccywnXFwtXFwuI1xcL10rJC8pXSk7XHJcbiAgICAgIHRoaXMubGluZTEudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5jaXR5KTtcclxuICAgICAgdGhpcy5jaXR5LmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucGF0dGVybigvXig/IS0pW0EtWmEteiAtXSokLyldKTtcclxuICAgICAgdGhpcy5jaXR5LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuY291bnRyeSk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLnN0YXRlKTtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuemlwKTtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuZW1wbG95ZXJQaG9uZSk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLnBvc2l0aW9uQXBwbGllZEZvcik7XHJcbiAgICAgIHRoaXMucG9zaXRpb25BcHBsaWVkRm9yLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucGF0dGVybigvXig/IS0pW0EtWmEtejAtOSAtXSokLyldKTtcclxuICAgICAgdGhpcy5wb3NpdGlvbkFwcGxpZWRGb3IudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5jb250YWN0TWV0aG9kKTtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuZW1wQ29udGFjdFBlcnNvbk5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5zZWFyY2hSZXN1bHQpO1xyXG5cclxuICAgICAgaWYgKHZhbCA9PSAnQ05UQycgfHwgdmFsID09ICdBUExEJykge1xyXG4gICAgICAgIHRoaXMud29ya1NlYXJjaFJlc3VsdENvbWJvID0gQ29tYm9PcHRpb24uV29ya1NlYXJjaFJlc3VsdEVtcGxveWVyQ29tYm9NZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLndvcmtTZWFyY2hSZXN1bHRDb21ibyA9IENvbWJvT3B0aW9uLldvcmtTZWFyY2hSZXN1bHRDYXJlZXJDZW50ZXJDb21ib01lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodmFsID09ICdKQkZSJykge1xyXG4gICAgICB0aGlzLmRpc3BsYXlFbXBsb3llclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlDQ1F1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlKb2JGYWlyUXVlc3Rpb25zID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNwbGF5VW5pb25NZW1iZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5V29ya2luZ0ZvckFuRW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmpvYkZhaXJMb2NhdGlvbik7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMud29ya1NlYXJjaERhdGUsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQXBwVmFsaWRhdG9ycy5pc0JldHdlZW4odGhpcy5zdW5EYXRlLCB0aGlzLnNhdERhdGUpXSkpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMud29ya09yUGVyZm9ybVNlcnZpY2VUeXBlKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmlzSW5Db250YWN0V2l0aFVuaW9uKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnVuaW9uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy51bmlvbkNvbnRhY3RQZXJzb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnVuaW9uQ29udGFjdERhdGUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMud29ya1Nob3BOYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5saW5lMSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jaXR5KTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnN0YXRlKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNvdW50cnkpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuemlwKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyUGhvbmUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMucG9zaXRpb25BcHBsaWVkRm9yKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNvbnRhY3RNZXRob2QpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wQ29udGFjdFBlcnNvbk5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuc2VhcmNoUmVzdWx0KTtcclxuXHJcbiAgICB9XHJcbiAgICBpZiAodmFsID09ICdDU1ZXJyB8fCB2YWwgPT0gJ1JFU1InKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUVtcGxveWVyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheUNDUXVlc3Rpb25zID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Sm9iRmFpclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlVbmlvbk1lbWJlclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlXb3JraW5nRm9yQW5FbXBsb3llclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy53b3JrU2VhcmNoRGF0ZSwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmlzQmV0d2Vlbih0aGlzLnN1bkRhdGUsIHRoaXMuc2F0RGF0ZSldKSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5qb2JGYWlyTG9jYXRpb24pO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy53b3JrU2hvcE5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMud29ya09yUGVyZm9ybVNlcnZpY2VUeXBlKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmlzSW5Db250YWN0V2l0aFVuaW9uKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnVuaW9uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy51bmlvbkNvbnRhY3RQZXJzb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnVuaW9uQ29udGFjdERhdGUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJOYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmxpbmUxKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNpdHkpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuc3RhdGUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuY291bnRyeSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy56aXApO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJQaG9uZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5wb3NpdGlvbkFwcGxpZWRGb3IpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuY29udGFjdE1ldGhvZCk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBDb250YWN0UGVyc29uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5zZWFyY2hSZXN1bHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbCA9PSAnVU5PTicpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5RW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Q0NRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Sm9iRmFpclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlVbmlvbk1lbWJlclF1ZXN0aW9ucyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzcGxheVdvcmtpbmdGb3JBbkVtcGxveWVyUXVlc3Rpb25zID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5pc0luQ29udGFjdFdpdGhVbmlvbik7XHJcbiAgICAgIGlmICh0aGlzLndvcmtTZWFyY2hEYXRlLnZhbHVlID09PSAnJyB8fCB0aGlzLndvcmtTZWFyY2hEYXRlLnZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLndvcmtTZWFyY2hEYXRlLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMud29ya09yUGVyZm9ybVNlcnZpY2VUeXBlKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndvcmtTZWFyY2hEYXRlKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmpvYkZhaXJMb2NhdGlvbik7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53b3JrU2hvcE5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJOYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmxpbmUxKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNpdHkpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuc3RhdGUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuY291bnRyeSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy56aXApO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJQaG9uZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5wb3NpdGlvbkFwcGxpZWRGb3IpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuY29udGFjdE1ldGhvZCk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBDb250YWN0UGVyc29uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5zZWFyY2hSZXN1bHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbCA9PSAnV1JLUCcpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5RW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Q0NRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Sm9iRmFpclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlVbmlvbk1lbWJlclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlXb3JraW5nRm9yQW5FbXBsb3llclF1ZXN0aW9ucyA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy53b3JrT3JQZXJmb3JtU2VydmljZVR5cGUpO1xyXG4gICAgICBpZiAodGhpcy53b3JrU2VhcmNoRGF0ZS52YWx1ZSA9PT0gJycgfHwgdGhpcy53b3JrU2VhcmNoRGF0ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy53b3JrU2VhcmNoRGF0ZS5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmlzSW5Db250YWN0V2l0aFVuaW9uKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndvcmtTZWFyY2hEYXRlKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnVuaW9uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy51bmlvbkNvbnRhY3RQZXJzb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnVuaW9uQ29udGFjdERhdGUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuam9iRmFpckxvY2F0aW9uKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndvcmtTaG9wTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llck5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMubGluZTEpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuY2l0eSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5zdGF0ZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jb3VudHJ5KTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnppcCk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llclBob25lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnBvc2l0aW9uQXBwbGllZEZvcik7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jb250YWN0TWV0aG9kKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcENvbnRhY3RQZXJzb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnNlYXJjaFJlc3VsdCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldENvbnRhY3RJbmZvVmFsaWRhdGlvbih2YWw6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbCA9PSAnVEVMRScpIHtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuZW1wbG95ZXJQaG9uZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBDb250YWN0UGVyc29uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llckVtYWlsKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyV2Vic2l0ZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llckZheCk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmNvbnRhY3RQaG9uZSk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmVtcENvbnRhY3RQZXJzb25OYW1lKTtcclxuICAgIH1cclxuICAgIGlmICh2YWwgPT0gJ0VNQUwnKSB7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJFbWFpbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcENvbnRhY3RQZXJzb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyUGhvbmUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJXZWJzaXRlKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyRmF4KTtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuZW1wbG95ZXJQaG9uZSk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmVtcENvbnRhY3RQZXJzb25OYW1lKTtcclxuICAgIH1cclxuICAgIGlmICh2YWwgPT0gJ09OTEknKSB7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmVtcGxveWVyV2Vic2l0ZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBDb250YWN0UGVyc29uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llclBob25lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyRW1haWwpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJGYXgpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5lbXBsb3llclBob25lKTtcclxuICAgIH1cclxuICAgIGlmICh2YWwgPT0gJ0ZBWE4nKSB7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmVtcGxveWVyRmF4KTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcENvbnRhY3RQZXJzb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyUGhvbmUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJFbWFpbCk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llcldlYnNpdGUpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5lbXBsb3llclBob25lKTtcclxuICAgIH1cclxuICAgIGlmICh2YWwgPT0gJ01BSUwnIHx8IHZhbCA9PSAnUFJTTicpIHtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuZW1wQ29udGFjdFBlcnNvbk5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJGYXgpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJQaG9uZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llckVtYWlsKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyV2Vic2l0ZSk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmVtcGxveWVyUGhvbmUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXREYXRlKHdzRGF0ZSk6IERhdGUge1xyXG4gICAgaWYgKCEod3NEYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudXRpbC5nZXRFbnRlcmVkRGF0ZSh3c0RhdGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdzRGF0ZTtcclxuICB9XHJcblxyXG4gIGdldCB3b3JrU2VhcmNoRGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ3dvcmtTZWFyY2hEYXRlJ107XHJcbiAgfVxyXG5cclxuICBnZXQgZW1wbG95ZXJOYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snZW1wbG95ZXJOYW1lJ107XHJcbiAgfVxyXG5cclxuICBnZXQgY2l0eSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ2NpdHknXTtcclxuICB9XHJcblxyXG4gIGdldCBsaW5lMSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ2xpbmUxJ107XHJcbiAgfVxyXG5cclxuICBnZXQgbGluZTIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWydsaW5lMiddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN0YXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snc3RhdGUnXTtcclxuICB9XHJcblxyXG4gIGdldCBjb3VudHJ5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snY291bnRyeSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbnRhY3RNZXRob2QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWydjb250YWN0TWV0aG9kJ107XHJcbiAgfVxyXG5cclxuICBnZXQgZW1wQ29udGFjdFBlcnNvbk5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWydlbXBDb250YWN0UGVyc29uTmFtZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVtcENvbnRhY3RQZXJzb25UaXRsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ2VtcENvbnRhY3RQZXJzb25UaXRsZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHppcCgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ3ppcCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVtcGxveWVyUGhvbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWydlbXBsb3llclBob25lJ107XHJcbiAgfVxyXG5cclxuICBnZXQgZW1wbG95ZXJFbWFpbCgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ2VtcGxveWVyRW1haWwnXTtcclxuICB9XHJcblxyXG4gIGdldCBlbXBsb3llcldlYnNpdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWydlbXBsb3llcldlYnNpdGUnXTtcclxuICB9XHJcblxyXG4gIGdldCBlbXBsb3llckZheCgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ2VtcGxveWVyRmF4J107XHJcbiAgfVxyXG5cclxuICBnZXQgcG9zaXRpb25BcHBsaWVkRm9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1sncG9zaXRpb25BcHBsaWVkRm9yJ107XHJcbiAgfVxyXG5cclxuICBnZXQgc2VhcmNoUmVzdWx0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snc2VhcmNoUmVzdWx0J107XHJcbiAgfVxyXG5cclxuICBnZXQgd2luZ3NSZWZlcnJhbFdvcmtTZWFyY2hJZCgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ3dpbmdzUmVmZXJyYWxXb3JrU2VhcmNoSWQnXTtcclxuICB9XHJcblxyXG4gIGdldCBjbGFpbWFudFdvcmtTZWFyY2hKb3VybmFsSWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWydjbGFpbWFudFdvcmtTZWFyY2hKb3VybmFsSWQnXTtcclxuICB9XHJcblxyXG4gIGdldCB3c3JJZCgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ3dzcklkJ107XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZpdHlUeXBlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snYWN0aXZpdHlUeXBlJ107XHJcbiAgfVxyXG5cclxuICBnZXQgY29udGFjdFBob25lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snY29udGFjdFBob25lJ107XHJcbiAgfVxyXG5cclxuICBnZXQgd29ya1Nob3BOYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snd29ya1Nob3BOYW1lJ107XHJcbiAgfVxyXG5cclxuICBnZXQgam9iRmFpckxvY2F0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snam9iRmFpckxvY2F0aW9uJ107XHJcbiAgfVxyXG5cclxuICBnZXQgb3RoUmVzdWx0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snb3RoUmVzdWx0J107XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzU3RhcnREYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snaGFzU3RhcnREYXRlJ107XHJcbiAgfVxyXG5cclxuICBnZXQgd29ya1N0YXJ0RGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ3dvcmtTdGFydERhdGUnXTtcclxuICB9XHJcblxyXG4gIGdldCB0eXBlT2ZXb3JrKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1sndHlwZU9mV29yayddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSW5Db250YWN0V2l0aFVuaW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snaXNJbkNvbnRhY3RXaXRoVW5pb24nXTtcclxuICB9XHJcblxyXG4gIGdldCB1bmlvbk5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWyd1bmlvbk5hbWUnXTtcclxuICB9XHJcblxyXG4gIGdldCB1bmlvbkNvbnRhY3RQZXJzb25OYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1sndW5pb25Db250YWN0UGVyc29uTmFtZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHVuaW9uQ29udGFjdERhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWyd1bmlvbkNvbnRhY3REYXRlJ107XHJcbiAgfVxyXG5cclxuICBnZXQgd29ya09yUGVyZm9ybVNlcnZpY2VUeXBlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snd29ya09yUGVyZm9ybVNlcnZpY2VUeXBlJ107XHJcbiAgfVxyXG5cclxuICAvLyAtLS0gQUREOiBjb3VudCBSRUVNIGFjdGl2aXRpZXMgaW4gbG9jYWwgbGlzdCwgb3B0aW9uYWxseSBleGNsdWRpbmcgZWRpdGVkIHJvdyAtLS1cclxuICBwcml2YXRlIHJlZW1BY3Rpdml0eUNvdW50Rm9yQ3VycmVudFdlZWsoZXhjbHVkZUluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbCk6IG51bWJlciB7XHJcbiAgICBjb25zdCBsaXN0ID0gdGhpcy53Y1NlcnZpY2UuZ2V0V29ya1NlYXJjaFJlY29yZHMoKSA/PyBbXTtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGV4Y2x1ZGVJbmRleCAhPT0gbnVsbCAmJiBpID09PSBleGNsdWRlSW5kZXgpIGNvbnRpbnVlO1xyXG4gICAgICBjb25zdCByID0gbGlzdFtpXTtcclxuICAgICAgaWYgKHIgJiYgdGhpcy5SRUVNX0FDVElWSVRZX1RZUEVTLmhhcyhyLmFjdGl2aXR5VHlwZSkpIGNvdW50Kys7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY291bnQ7XHJcbiAgfVxyXG5cclxuICByZWVtQWN0aXZpdHlDaGVjayhzZWxlY3RlZFR5cGU6IHN0cmluZykge1xyXG4gICAgLy8gPj4+IE5FVzogUkVFTSBjYXAgY2hlY2sgaW5jbHVkaW5nIHRoZSBjdXJyZW50IHNlbGVjdGlvbiA8PDxcclxuICAgIHRoaXMucmVlbUV4Y2VlZGVkRmxhZyA9IGZhbHNlOyAvLyByZXNldCBlYWNoIHN1Ym1pdFxyXG5cclxuICAgIGNvbnN0IGlzUmVlbSA9IHRoaXMuUkVFTV9BQ1RJVklUWV9UWVBFUy5oYXMoc2VsZWN0ZWRUeXBlKTtcclxuXHJcbiAgICAvLyBsb2NhbCBSRUVNXHJcbiAgICBjb25zdCBoYXNFZGl0SWR4ID0gdGhpcy5yZWNvcmRJbmRleFRvRWRpdCAhPT0gbnVsbCAmJiB0aGlzLnJlY29yZEluZGV4VG9FZGl0ICE9PSB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBlZGl0SWR4ID0gaGFzRWRpdElkeCA/IHRoaXMucmVjb3JkSW5kZXhUb0VkaXQgOiBudWxsO1xyXG4gICAgY29uc3QgbG9jYWxSZWVtID0gdGhpcy5yZWVtQWN0aXZpdHlDb3VudEZvckN1cnJlbnRXZWVrKGVkaXRJZHgpO1xyXG4gICAgLy8gc2VydmVyIFJFRU1cclxuICAgIGNvbnN0IHNlcnZlclJlZW0gPSBOdW1iZXIodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGE/LmhpZFJlZW1Xb3JrU2VhcmNoUmVjb3JkQ291bnQgPz8gMCk7XHJcbiAgICAvLyBpbmNsdWRlIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpbiB0aGUgdG90YWxcclxuICAgIGNvbnN0IHRvdGFsSWZTYXZlZCA9IGxvY2FsUmVlbSArIHNlcnZlclJlZW0gKyAoaXNSZWVtID8gMSA6IDApO1xyXG5cclxuICAgIGlmIChpc1JlZW0gJiYgdG90YWxJZlNhdmVkID4gdGhpcy5SRUVNX0xJTUlUKSB7XHJcbiAgICAgIHRoaXMucmVlbUV4Y2VlZGVkRmxhZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogVVBEQVRFRDogYWRkKCkgc2V0cyB0aGUgc2FtZSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wcyAqL1xyXG4gIGFkZCgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkVHlwZSA9IHRoaXMuYWN0aXZpdHlUeXBlLnZhbHVlIGFzIHN0cmluZztcclxuICAgIHRoaXMucmVlbUFjdGl2aXR5Q2hlY2soc2VsZWN0ZWRUeXBlKTtcclxuICAgIC8vIGVuZm9yY2Ugc2luZ2xldG9uIHR5cGVzIGF0IHN1Ym1pdCB0aW1lIHRvb1xyXG4gICAgaWYgKHRoaXMuU0lOR0xFVE9OX1RZUEVTLmhhcyhzZWxlY3RlZFR5cGUpICYmIHRoaXMuaGFzVHlwZShzZWxlY3RlZFR5cGUpKSB7XHJcbiAgICAgIGNvbnN0IHByZXYgPSB0aGlzLmFjdGl2aXR5VHlwZS5lcnJvcnMgfHwge307XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLnNldEVycm9ycyh7IC4uLnByZXYsIHR5cGVBbHJlYWR5VXNlZDogdHJ1ZSB9KTtcclxuICAgICAgdGhpcy5hY3Rpdml0eVR5cGUubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy53c3JGb3JtLnZhbGlkKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlYXJjaFJlc3VsdC52YWx1ZSA9PSAnSElSRScgJiYgdGhpcy5oYXNTdGFydERhdGUudmFsdWUgPT0gJ1knKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQuc2V0VmFsdWUoJ0hEUlcnKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaFJlc3VsdC52YWx1ZSA9PSAnSElSRScgJiYgdGhpcy5oYXNTdGFydERhdGUudmFsdWUgPT0gJ04nKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQuc2V0VmFsdWUoJ0hOU0QnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN1Y2Nlc3MuZW1pdCh7XHJcbiAgICAgICAgLi4udGhpcy53c3JGb3JtLnZhbHVlLFxyXG4gICAgICAgIHJlZW1FeGNlZWRlZEZsYWc6IHRoaXMucmVlbUV4Y2VlZGVkRmxhZ1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMud3NyRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzZXRFbXBsb3llcihlbXBsb3llcjogRW1wbG95ZXJTZWFyY2hSZXN1bHQpIHtcclxuICAgIHRoaXMuZW1wbG95ZXJOYW1lLnNldFZhbHVlKGVtcGxveWVyLmVtcGxveWVyTmFtZSk7XHJcbiAgICB0aGlzLmxpbmUxLnNldFZhbHVlKGVtcGxveWVyLmFkZHJlc3NMaW5lMSk7XHJcbiAgICB0aGlzLmxpbmUyLnNldFZhbHVlKGVtcGxveWVyLmFkZHJlc3NMaW5lMik7XHJcbiAgICB0aGlzLmNpdHkuc2V0VmFsdWUoZW1wbG95ZXIuY2l0eSk7XHJcbiAgICB0aGlzLnN0YXRlLnNldFZhbHVlKGVtcGxveWVyLnN0YXRlLnZhbHVlKTtcclxuICAgIHRoaXMuY291bnRyeS5zZXRWYWx1ZShlbXBsb3llci5jb3VudHJ5LnZhbHVlKTtcclxuICAgIHRoaXMuemlwLnNldFZhbHVlKGVtcGxveWVyLnppcCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8cC1kaWFsb2cgdmlzaWJsZT1cInRydWVcIiBtb2RhbD1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIiBwb3NpdGlvbj1cInRvcFwiIFtzaG93SGVhZGVyXT1cImZhbHNlXCIgW2JyZWFrcG9pbnRzXT1cInsnMTIwMHB4JzogJzY2MHB4JywgJzk5MnB4JzogJzY2MHB4JywgJzc2OHB4JzogJzY2MHB4JywgJzU3NnB4JzogJzEwMHZ3J31cIj5cclxuICA8aDQgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLWdyZXkpOyBwYWRkaW5nLWxlZnQ6IDIwcHg7XCI+e3snd29yay5zZWFyY2guam91cm5hbC5hY3Rpdml0eS5oZWFkaW5nJyB8IHRyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfX08L2g0PlxyXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwid3NyRm9ybVwiICN3c3JGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCI+XHJcbiAgICA8aW9uLWdyaWQ+XHJcbiAgICAgIDxpb24tcm93PlxyXG4gICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXBhZGRpbmdcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiNlwiIHNpemVMZz1cIjZcIiBzaXplWGw9XCI2XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkXCI+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYWN0aXZpdHlUeXBlXCI+e3snd29yay5zZWFyY2guam91cm5hbC5hY3Rpdml0eS50eXBlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwiJ3dvcmsuc2VhcmNoLmpvdXJuYWwuYWN0aXZpdHkuaXAyMDk1JyB8IHRyYW5zbGF0ZSB8IHRydXN0SHRtbFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7ZmxleC1ncm93OiAxO1wiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgICA8YXBwLWRyb3Bkb3duIFtvcHRpb25zXT1cImFjdGl2aXR5VHlwZUNvbWJvXCIgb3B0aW9uTGFiZWw9XCJERVNDXCIgb3B0aW9uVmFsdWU9XCJOQU1FXCIgW2Zvcm1Db250cm9sXT1cImFjdGl2aXR5VHlwZVwiIGFwcGVuZFRvPVwiYm9keVwiIGlucHV0SWQ9XCJhY3Rpdml0eVR5cGVcIj48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nYWN0aXZpdHlUeXBlJyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZC4nLFxyXG4gICAgICAgICAgICAgICAgdHlwZUFscmVhZHlVc2VkOiAnWW91IGNhbiBvbmx5IGFkZCBvbmUgZW50cnkgZm9yIHRoaXMgYWN0aXZpdHkgdHlwZSB0aGlzIHdlZWsuJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiZGlzcGxheVdvcmtpbmdGb3JBbkVtcGxveWVyUXVlc3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwid29ya09yUGVyZm9ybVNlcnZpY2VUeXBlXCI+e3snd29yay5zZWFyY2guam91cm5hbC53b3JrT3JQZXJmb3JtU2VydmljZVR5cGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIFtvcHRpb25zXT1cImVtcGxveW1lbnRUeXBlT3B0aW9uc1wiIG9wdGlvbkxhYmVsPVwiREVTQ1wiIG9wdGlvblZhbHVlPVwiTkFNRVwiXHJcbiAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ3b3JrT3JQZXJmb3JtU2VydmljZVR5cGVcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3dvcmtPclBlcmZvcm1TZXJ2aWNlVHlwZScgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cImRpc3BsYXlVbmlvbk1lbWJlclF1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImlzSW5Db250YWN0V2l0aFVuaW9uXCI+e3snd29yay5zZWFyY2guam91cm5hbC5pc0luQ29udGFjdFdpdGhVbmlvbicgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gW29wdGlvbnNdPVwieWVzTm9PcHRpb25zXCIgb3B0aW9uTGFiZWw9XCJERVNDXCIgb3B0aW9uVmFsdWU9XCJOQU1FXCJcclxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImlzSW5Db250YWN0V2l0aFVuaW9uXCI+PC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdpc0luQ29udGFjdFdpdGhVbmlvbicgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cImlzSW5Db250YWN0V2l0aFVuaW9uLnZhbHVlID09PSAnWSdcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ1bmlvbk5hbWVcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLnVuaW9uTmFtZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ1bmlvbk5hbWVcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJ1bmlvbk5hbWVcIiBhcHBTdHJpcEludmlzaWJsZUNoYXJzIC8+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0ndW5pb25OYW1lJyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cImlzSW5Db250YWN0V2l0aFVuaW9uLnZhbHVlID09PSAnWSdcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ1bmlvbkNvbnRhY3RQZXJzb25OYW1lXCI+e3snd29yay5zZWFyY2guam91cm5hbC51bmlvbkNvbnRhY3RQZXJzb25OYW1lJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInVuaW9uQ29udGFjdFBlcnNvbk5hbWVcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJ1bmlvbkNvbnRhY3RQZXJzb25OYW1lXCJcclxuICAgICAgICAgICAgICAgICAgYXBwU3RyaXBJbnZpc2libGVDaGFycyAvPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3VuaW9uQ29udGFjdFBlcnNvbk5hbWUnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwiaXNJbkNvbnRhY3RXaXRoVW5pb24udmFsdWUgPT09ICdZJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInVuaW9uQ29udGFjdERhdGVcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLnVuaW9uQ29udGFjdERhdGUnfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8cC1jYWxlbmRhciBbc2hvd0ljb25dPVwidHJ1ZVwiIGlucHV0SWQ9XCJ1bmlvbkNvbnRhY3REYXRlXCIgYXBwZW5kVG89XCJib2R5XCIgW2Zvcm1Db250cm9sXT1cInVuaW9uQ29udGFjdERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJzdW5EYXRlXCIgW21heERhdGVdPVwic2F0RGF0ZVwiIFtkZWZhdWx0RGF0ZV09XCJzdW5EYXRlXCIgW3NlbGVjdE90aGVyTW9udGhzXT1cInRydWVcIj48L3AtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0ndW5pb25Db250YWN0RGF0ZScgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cImRpc3BsYXlDQ1F1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndvcmtTaG9wTmFtZVwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwud29ya1Nob3BOYW1lJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIndvcmtTaG9wTmFtZVwiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cIndvcmtTaG9wTmFtZVwiIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMvPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3dvcmtTaG9wTmFtZScgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZC4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWYgPVwiZGlzcGxheUpvYkZhaXJRdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJqb2JGYWlyTG9jYXRpb25cIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLmpvYkZhaXJMb2NhdGlvbicgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJqb2JGYWlyTG9jYXRpb25cIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJqb2JGYWlyTG9jYXRpb25cIiBhcHBTdHJpcEludmlzaWJsZUNoYXJzLz5cclxuICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdqb2JGYWlyTG9jYXRpb24nIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmID1cImRpc3BsYXlFbXBsb3llclF1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImVtcGxveWVyTmFtZVwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwuZW1wbG95ZXJOYW1lJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxhcHAtc2VhcmNoLWVtcGxveWVyIFtmb3JtQ29udHJvbF09XCJlbXBsb3llck5hbWVcIiAob25Gb3VuZCk9XCJzZXRFbXBsb3llcigkZXZlbnQpXCIgW2VtcFR5cGVdPVwiJ1JFRydcIj48L2FwcC1zZWFyY2gtZW1wbG95ZXI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nZW1wbG95ZXJOYW1lJyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLicsIHBhdHRlcm46ICdvbmx5IGxldHRlcnMsIG51bWJlcnMsIHNwYWNlcywgYW5kIC4gLCAmIFxcJyAoICkgLSAjIGFyZSBhbGxvd2VkJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb3VudHJ5XCI+e3snd29yay5zZWFyY2guam91cm5hbC5jb3VudHJ5JyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnI+XHJcbiAgICAgICAgICAgICAgPGFwcC1kcm9wZG93biBpbnB1dElkPVwiY291bnRyeVwiIFtvcHRpb25zXT1cImNvdW50cnlPcHRpb25zXCIgb3B0aW9uTGFiZWw9XCJERVNDXCIgb3B0aW9uVmFsdWU9XCJOQU1FXCJcclxuICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiIFtmb3JtQ29udHJvbF09XCJjb3VudHJ5XCIgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBpbnB1dElkPVwiY291bnRyeVwiPjwvYXBwLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdjb3VudHJ5JyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwibGluZTFcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLnN0cmVldEFkZHJlc3MnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwibGluZTFcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJsaW5lMVwiIG1heGxlbmd0aD1cIjQwXCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nbGluZTEnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJywgcGF0dGVybjogJ29ubHkgbGV0dGVycywgbnVtYmVycywgc3BhY2VzLCBhbmQgLiAsICYgXFwnICggKSAtICMgYXJlIGFsbG93ZWQnXHJcbiAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY2l0eVwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwuY2l0eScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJjaXR5XCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiY2l0eVwiICBtYXhsZW5ndGg9XCIzMFwiIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMvPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2NpdHknIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgICAgaW52YWxpZHdzQ2l0eUxlbmd0aDogJ0NpdHkgc2hvdWxkIG5vdCBleGNlZWQgYSBsZW5ndGggb2YgMzAgY2hhcmFjdGVycycsXHJcbiAgICAgICAgICAgICAgICAgIHBhdHRlcm46ICdDaXR5IG5hbWUgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBzcGFjZXMsIGFuZCBoeXBoZW5zJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgc3R5bGU9XCJwYWRkaW5nOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdGF0ZVwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwuc3RhdGUnfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1kcm9wZG93biBpbnB1dElkPVwic3RhdGVcIiBbb3B0aW9uc109XCJzdGF0ZXNDb21ib1wiIG9wdGlvbkxhYmVsPVwiREVTQ1wiIG9wdGlvblZhbHVlPVwiTkFNRVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIiBbZm9ybUNvbnRyb2xdPVwic3RhdGVcIiBpbnB1dElkID0gXCJzdGF0ZVwiPjwvYXBwLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdzdGF0ZScgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMVwiPjwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIHN0eWxlPVwicGFkZGluZzogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiemlwXCI+e3snd29yay5zZWFyY2guam91cm5hbC56aXAnfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiemlwXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiemlwXCIgbWlubGVuZ3RoPVwiNVwiIG1heGxlbmd0aD1cIjlcIiBhcHBTdHJpcEludmlzaWJsZUNoYXJzLz5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nemlwJyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZC4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaW52YWxpZExlbmd0aDogJ1ppcCBjb2RlIHNob3VsZCBiZSBvZiA1IG9yIDkgZGlnaXRzLicsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkTnVtYmVyOiAnWmlwIGNvZGUgc2hvdWxkIG9ubHkgaGF2ZSBudW1iZXJzLicsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkWmlwQ29kZTogJ3BsZWFzZSBlbnRlciBhIHZhbGlkIHppcCBjb2RlJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiID5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJlbXBsb3llclBob25lXCI+e3snd29yay5zZWFyY2guam91cm5hbC5waG9uZU5vJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxwLWlucHV0TWFzayBpbnB1dElkPVwiZW1wbG95ZXJQaG9uZVwiIFtmb3JtQ29udHJvbF09XCJlbXBsb3llclBob25lXCIgbWFzaz1cIig5OTkpIDk5OS05OTk5XCIgdW5tYXNrPVwidHJ1ZVwiPjwvcC1pbnB1dE1hc2s+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nZW1wbG95ZXJQaG9uZScgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZC4nXHJcbiAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjZcIiBzaXplTGc9XCI2XCIgc2l6ZVhsPVwiNlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cIiFkaXNwbGF5VW5pb25NZW1iZXJRdWVzdGlvbnMgJiYgIWRpc3BsYXlXb3JraW5nRm9yQW5FbXBsb3llclF1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3b3JrU2VhcmNoRGF0ZVwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwuYXBwbGljYXRpb25EYXRlJ3wgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxwLWNhbGVuZGFyIFtzaG93SWNvbl09XCJ0cnVlXCIgaW5wdXRJZD1cIndvcmtTZWFyY2hEYXRlXCIgYXBwZW5kVG89XCJib2R5XCIgW2Zvcm1Db250cm9sXT1cIndvcmtTZWFyY2hEYXRlXCIgW21pbkRhdGVdPVwic3VuRGF0ZVwiIFttYXhEYXRlXT1cInNhdERhdGVcIiBbZGVmYXVsdERhdGVdPVwic3VuRGF0ZVwiIFtzZWxlY3RPdGhlck1vbnRoc109XCJ0cnVlXCI+PC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3b3JrU2VhcmNoRGF0ZScgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgIGRhdGVOb3RCZXR3ZWVuOiAnRGF0ZSBzaG91bGQgYmUgYmV0d2VlbiAnICsgc3VuRGF0ZVN0cmluZyArICcgYW5kICcgKyBzYXREYXRlU3RyaW5nICsgJy4nXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWYgPVwiZGlzcGxheUVtcGxveWVyUXVlc3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicG9zaXRpb25BcHBsaWVkRm9yXCI+e3snd29yay5zZWFyY2guam91cm5hbC5qb2JUaXRsZSd8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBvc2l0aW9uQXBwbGllZEZvclwiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cInBvc2l0aW9uQXBwbGllZEZvclwiIG1heGxlbmd0aD1cIjUwXCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0ncG9zaXRpb25BcHBsaWVkRm9yJyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLicsXHJcbiAgICAgICAgICAgICAgICAgIHBhdHRlcm46ICdKb2IgVGl0bGUgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBzcGFjZXMsIGFuZCBoeXBoZW5zJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb250YWN0TWV0aG9kXCI+e3snd29yay5zZWFyY2guam91cm5hbC5jb250YWN0TWV0aG9kJ3wgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIFtvcHRpb25zXT1cIndvcmtTZWFyY2hNZXRob2RDb250YWN0XCIgb3B0aW9uTGFiZWw9XCJERVNDXCIgb3B0aW9uVmFsdWU9XCJOQU1FXCIgW2Zvcm1Db250cm9sXT1cImNvbnRhY3RNZXRob2RcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2NvbnRhY3RNZXRob2QnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwiY29udGFjdE1ldGhvZC52YWx1ZSA9PSAnVEVMRSdcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb250YWN0UGhvbmVcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLnBob25lTm8nIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHAtaW5wdXRNYXNrIGlucHV0SWQ9XCJjb250YWN0UGhvbmVcIiBbZm9ybUNvbnRyb2xdPVwiY29udGFjdFBob25lXCIgbWFzaz1cIig5OTkpIDk5OS05OTk5XCIgdW5tYXNrPVwidHJ1ZVwiPjwvcC1pbnB1dE1hc2s+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nY29udGFjdFBob25lJyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJjb250YWN0TWV0aG9kLnZhbHVlID09ICdFTUFMJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImVtcGxveWVyRW1haWxcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLmVtYWlsJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImVtcGxveWVyRW1haWxcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJlbXBsb3llckVtYWlsXCIgcGxhY2Vob2xkZXI9XCJlbWFpbGlkQGV4YW1wbGUuY29tXCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nZW1wbG95ZXJFbWFpbCcgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZC4nLFxyXG4gICAgICAgICAgICAgICAgICBlbXBsb3llckVtYWlsOiAnSW52YWxpZCBlbWFpbCBhZGRyZXNzLidcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJjb250YWN0TWV0aG9kLnZhbHVlID09ICdPTkxJJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImVtcGxveWVyV2Vic2l0ZVwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwud2Vic2l0ZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJlbXBsb3llcldlYnNpdGVcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJlbXBsb3llcldlYnNpdGVcIiBhcHBTdHJpcEludmlzaWJsZUNoYXJzLz5cclxuICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdlbXBsb3llcldlYnNpdGUnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwiY29udGFjdE1ldGhvZC52YWx1ZSAhPSdPTkxJJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImVtcENvbnRhY3RQZXJzb25OYW1lXCI+e3snd29yay5zZWFyY2guam91cm5hbC5jb250YWN0TmFtZVRpdGxlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImVtcENvbnRhY3RQZXJzb25OYW1lXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiZW1wQ29udGFjdFBlcnNvbk5hbWVcIiBhcHBTdHJpcEludmlzaWJsZUNoYXJzLz5cclxuICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdlbXBDb250YWN0UGVyc29uTmFtZScgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZC4nXHJcbiAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInNlYXJjaFJlc3VsdFwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwucmVzdWx0JyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gW29wdGlvbnNdPVwid29ya1NlYXJjaFJlc3VsdENvbWJvXCIgb3B0aW9uTGFiZWw9XCJERVNDXCIgb3B0aW9uVmFsdWU9XCJOQU1FXCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaFJlc3VsdFwiIGFwcGVuZFRvPVwiYm9keVwiIGlucHV0SWQ9XCJzZWFyY2hSZXN1bHRcIj48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdzZWFyY2hSZXN1bHQnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cInNlYXJjaFJlc3VsdC52YWx1ZSA9PSAnT1RIUidcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJvdGhSZXN1bHRcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLnJlc3VsdC5vdGgnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwib3RoUmVzdWx0XCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwib3RoUmVzdWx0XCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+XHJcbiAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J290aFJlc3VsdCcgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwic2VhcmNoUmVzdWx0LnZhbHVlID09ICdISVJFJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImhhc1N0YXJ0RGF0ZVwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwucmVzdWx0Lmhhc1N0YXJ0RGF0ZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gW29wdGlvbnNdPVwieWVzTm9PcHRpb25zXCIgb3B0aW9uTGFiZWw9XCJERVNDXCIgb3B0aW9uVmFsdWU9XCJOQU1FXCIgW2Zvcm1Db250cm9sXT1cImhhc1N0YXJ0RGF0ZVwiPjwvcC1zZWxlY3RCdXR0b24+XHJcbiAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2hhc1N0YXJ0RGF0ZScgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cImhhc1N0YXJ0RGF0ZS52YWx1ZSA9PSAnWScgJiYgc2VhcmNoUmVzdWx0LnZhbHVlID09ICdISVJFJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndvcmtTdGFydERhdGVcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLnJlc3VsdC5zdGFydERhdGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgW3Nob3dJY29uXT1cInRydWVcIiBpbnB1dElkPVwid29ya1N0YXJ0RGF0ZVwiIGFwcGVuZFRvPVwiYm9keVwiIFtmb3JtQ29udHJvbF09XCJ3b3JrU3RhcnREYXRlXCIgW21pbkRhdGVdPVwic3VuRGF0ZVwiIFtkZWZhdWx0RGF0ZV09XCJzdW5EYXRlXCIgW3NlbGVjdE90aGVyTW9udGhzXT1cInRydWVcIj48L3AtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3dvcmtTdGFydERhdGUnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJkaXNwbGF5VW5pb25NZW1iZXJRdWVzdGlvbnNcIj5cclxuXHRcdFx0ICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cImlzSW5Db250YWN0V2l0aFVuaW9uLnZhbHVlID09PSAnTidcIj5cclxuICAgICAgICAgICAgICAgICAge3snd29yay5zZWFyY2guam91cm5hbC5ub0NvbnRhY3RXaXRoVW5pb24nIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlKClcIiB0eXBlPVwicmVzZXRcIj57eydidXR0b24uY2FuY2VsJyB8IHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJhZGQoKVwiIHR5cGU9XCJzdWJtaXRcIj57eydidXR0b24uYWRkJyB8IHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPC9pb24tcm93PlxyXG4gICAgPC9pb24tZ3JpZD5cclxuICA8L2Zvcm0+XHJcbjwvcC1kaWFsb2c+Il19
|
|
1219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay1zZWFyY2gtZW1wbG95ZXIuY29tcG9uZW50LW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dlZWtseS13b3JrLXNlYXJjaC1lbXBsb3llci1tZS93b3JrLXNlYXJjaC1lbXBsb3llci5jb21wb25lbnQtbWUudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvd2Vla2x5LXdvcmstc2VhcmNoLWVtcGxveWVyLW1lL3dvcmstc2VhcmNoLWVtcGxveWVyLmNvbXBvbmVudC1tZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBNkQsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNTN0MsK0JBQXNELGFBQUEsZ0JBQUE7SUFFWixZQUE4RDs7SUFBQSxpQkFBUTtJQUM1RyxxQ0FDNEQsb0JBQUE7SUFJOUQsaUJBQU0sRUFBQTs7OztJQU5rQyxlQUE4RDtJQUE5RCwwRkFBOEQ7SUFDcEYsZUFBaUM7SUFBakMsc0RBQWlDLGdEQUFBO0lBRXRDLGVBQW9CO0lBQXBCLHlCQUFvQjtJQUFDLHVEQUFrQyxhQUFBLHVDQUFBOzs7SUFjcEUsOEJB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QTVCLDBEQUE0Qjs7O2lGRDdPakYsNkJBQTZCO2NBTHpDLFNBQVM7MkJBQ0UsNkJBQTZCOytHQU9oQyxnQkFBZ0I7a0JBRHRCLFNBQVM7bUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBSWhELE9BQU87a0JBRE4sTUFBTTtZQUlQLE9BQU87a0JBRE4sTUFBTTtZQUlBLGlCQUFpQjtrQkFEdkIsS0FBSztZQUlDLElBQUk7a0JBRFYsS0FBSztZQUlDLE9BQU87a0JBRGIsS0FBSztZQUlDLE9BQU87a0JBRGIsS0FBSztZQUlDLGFBQWE7a0JBRG5CLEtBQUs7WUFJQyxhQUFhO2tCQURuQixLQUFLO1lBSUMsT0FBTztrQkFEYixLQUFLO1lBSUMsZUFBZTtrQkFEckIsS0FBSzs7a0ZBaENLLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBOZ0Zvcm0sIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tYm9PcHRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tYm8tbW9kZWwnO1xyXG5pbXBvcnQgeyBFbXBsb3llclNlYXJjaFJlc3VsdCB9IGZyb20gJy4uLy4uL21vZGVscy9FbXBsb3llckRldGFpbFNlYXJjaFJlc3VsdCc7XHJcbmltcG9ydCB7IFdvcmtTZWFyY2hSZWNvcmRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy93ZWVrbHktY2VydC93b3JrLXNlYXJjaC1yZWNvcmQtdjItbW9kZWwnO1xyXG5pbXBvcnQgeyBXZWVrbHlDZXJ0U2VydmljZVYyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2Vla2x5LWNlcnQvd2Vla2x5LWNlcnQtdjIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcFZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi92YWxpZGF0aW9ucy9BcHBWYWxpZGF0b3JzJztcclxuaW1wb3J0IHsgTGliQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0xpYkNvbnN0YW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC13b3JrLXNlYXJjaC1lbXBsb3llci1tZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmstc2VhcmNoLWVtcGxveWVyLmNvbXBvbmVudC1tZS5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93b3JrLXNlYXJjaC1lbXBsb3llci5jb21wb25lbnQtbWUuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya1NlYXJjaEVtcGxveWVyQ29tcG9uZW50TUUgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCd3c3JGb3JtRGlyZWN0aXZlJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHdzckZvcm1EaXJlY3RpdmU6IE5nRm9ybTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgc3VjY2VzczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZWNvcmRJbmRleFRvRWRpdDogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkYXRhOiBXb3JrU2VhcmNoUmVjb3JkTW9kZWw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNhdERhdGU6IERhdGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHN1bkRhdGU6IERhdGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNhdERhdGVTdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHN1bkRhdGVTdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGpvdXJuYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZXhpc3RpbmdSZWNvcmRzOiBXb3JrU2VhcmNoUmVjb3JkTW9kZWxbXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgbWF4QWxsb3dlZERhdGU6IERhdGU7XHJcbiAgcHVibGljIG1heEFsbG93ZWREYXRlU3RyaW5nOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyB3b3JrU2VhcmNoTWV0aG9kQ29udGFjdCA9IENvbWJvT3B0aW9uLldvcmtTZWFyY2hNZXRob2RDb250YWN0O1xyXG4gIHB1YmxpYyB3b3JrU2VhcmNoUmVzdWx0Q29tYm8gPSBDb21ib09wdGlvbi5Xb3JrU2VhcmNoUmVzdWx0Q2FyZWVyQ2VudGVyQ29tYm9NZTtcclxuICBwdWJsaWMgc3RhdGVzQ29tYm86IGFueSA9IFtdO1xyXG4gIHB1YmxpYyBpc1JlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHdvcmtTZWFyY2hSZWNvcmREYXRhOiBXb3JrU2VhcmNoUmVjb3JkTW9kZWwgPSBudWxsO1xyXG4gIHB1YmxpYyB3c3JGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBjb3VudHJ5T3B0aW9ucyA9IENvbWJvT3B0aW9uLkNPVU5UUlk7XHJcblxyXG4gIGFjdGl2aXR5VHlwZUNvbWJvOiBDb21ib09wdGlvbltdO1xyXG4gIGR5bmFtaWNQYXJhbTogYW55O1xyXG4gIGRpc3BsYXlFbXBsb3llclF1ZXN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpc3BsYXlDQ1F1ZXN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpc3BsYXlKb2JGYWlyUXVlc3Rpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlzcGxheVVuaW9uTWVtYmVyUXVlc3Rpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlzcGxheVdvcmtpbmdGb3JBbkVtcGxveWVyUXVlc3Rpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgeWVzTm9PcHRpb25zID0gQ29tYm9PcHRpb24uWWVzTm9PcHRpb25zO1xyXG4gIGVtcGxveW1lbnRUeXBlT3B0aW9ucyA9IENvbWJvT3B0aW9uLldvcmtTZWFyY2hFbXBsb3ltZW50VHlwZTtcclxuXHJcbiAgLyoqIFJhaXNlZCB3aGVuIChsb2NhbCBSRUVNICsgc2VydmVyIFJFRU0gKyBjdXJyZW50IHNlbGVjdGlvbikgPiBSRUVNX0xJTUlUICovXHJcbiAgcHVibGljIHJlZW1FeGNlZWRlZEZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogTWF4IFJFRU0gYWN0aXZpdGllcyAocHJldmlvdXMgd2Vla3MgY291bnQgKyB0aGlzIHdlZWtzIGNvdW50ICsgY3VycmVudCBhZGRpdGlvbikgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IFJFRU1fTElNSVQgPSAyO1xyXG5cclxuICAvKiogTkVXOiBvbmx5IHRoZXNlIHR5cGVzIGFyZSBhbGxvd2VkIG9uY2UgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IFNJTkdMRVRPTl9UWVBFUyA9IG5ldyBTZXQoWydVTk9OJywgJ1dSS1AnXSk7XHJcbiAgLyoqIFJFRU0gQWN0aXZpdHkgVHlwZXMgKi9cclxuICBwcml2YXRlIFJFRU1fQUNUSVZJVFlfVFlQRVMgPSBuZXcgU2V0KFsnSkJGUicsICdDU1ZXJ10pO1xyXG5cclxuICB1c1ppcGNvZGVWYWxpZGF0aW9uczogVmFsaWRhdG9yRm5bXSA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmlzVmFsaWRaaXBDb2RlXTtcclxuICBjYW5hZGFaaXBjb2RlVmFsaWRhdGlvbnM6IFZhbGlkYXRvckZuW10gPSBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQXBwVmFsaWRhdG9ycy5pc1ZhbGlkQ2FuYWRpYW5aaXBDb2RlXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHdjU2VydmljZTogV2Vla2x5Q2VydFNlcnZpY2VWMiwgcHVibGljIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHB1YmxpYyB1dGlsOiBVdGlsU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuam91cm5hbCkge1xyXG4gICAgICB0aGlzLnNhdERhdGUgPSB0aGlzLnV0aWwuZ2V0RW50ZXJlZERhdGUodGhpcy53Y1NlcnZpY2UuZ2V0U2F0dXJkYXlEYXRlKCkpXHJcbiAgICAgIHRoaXMuc3VuRGF0ZSA9IHRoaXMudXRpbC5nZXRFbnRlcmVkRGF0ZSh0aGlzLndjU2VydmljZS5nZXRTdW5kYXlEYXRlKCkpO1xyXG4gICAgICB0aGlzLnNhdERhdGVTdHJpbmcgPSB0aGlzLndjU2VydmljZS5nZXRTYXR1cmRheURhdGVBc1N0cmluZygpO1xyXG4gICAgICB0aGlzLnN1bkRhdGVTdHJpbmcgPSB0aGlzLndjU2VydmljZS5nZXRTdW5kYXlEYXRlQXNTdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZShcclxuICAgICAgbm93LmdldEZ1bGxZZWFyKCksXHJcbiAgICAgIG5vdy5nZXRNb250aCgpLFxyXG4gICAgICBub3cuZ2V0RGF0ZSgpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIElmIGZpbGluZyBkdXJpbmcgdGhlIGN1cnJlbnQgd2VlaywgY2FwIGF0IHRvZGF5XHJcbiAgICB0aGlzLm1heEFsbG93ZWREYXRlID0gdG9kYXkgPCB0aGlzLnNhdERhdGUgPyB0b2RheSA6IHRoaXMuc2F0RGF0ZTtcclxuXHJcbiAgICAvLyBGb3JtYXQgZm9yIGVycm9yIG1lc3NhZ2VcclxuICAgIHRoaXMubWF4QWxsb3dlZERhdGVTdHJpbmcgPSB0aGlzLnV0aWwuZ2V0RGF0ZUluTU1ERFlZWVlGb3JtYXQodGhpcy5tYXhBbGxvd2VkRGF0ZSk7XHJcblxyXG4gICAgdGhpcy5keW5hbWljUGFyYW0gPSB7XHJcbiAgICAgICdzYXR1cmRheV9kYXRlJzogdGhpcy5zYXREYXRlU3RyaW5nLFxyXG4gICAgICAnc3VuZGF5X2RhdGUnOiB0aGlzLnN1bkRhdGVTdHJpbmcsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbml0aWxpemVXb3JrU2VhcmNoRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlsaXplV29ya1NlYXJjaEZvcm0oKSB7XHJcbiAgICBsZXQgd3NyOiBXb3JrU2VhcmNoUmVjb3JkTW9kZWw7XHJcbiAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgIHdzciA9IHRoaXMuZGF0YTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5yZWNvcmRJbmRleFRvRWRpdCA9PSB1bmRlZmluZWQgfHwgdGhpcy5yZWNvcmRJbmRleFRvRWRpdCA9PSBudWxsKSB7XHJcbiAgICAgIHdzciA9IG5ldyBXb3JrU2VhcmNoUmVjb3JkTW9kZWwoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHdzciA9IHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hSZWNvcmRzKClbdGhpcy5yZWNvcmRJbmRleFRvRWRpdF07XHJcbiAgICAgIGlmICh3c3IuYWN0aXZpdHlUeXBlID09IG51bGwpIHtcclxuICAgICAgICB3c3IuYWN0aXZpdHlUeXBlID0gJ0NOVEMnO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMud3NyRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAnYWN0aXZpdHlUeXBlJzogW3dzci5hY3Rpdml0eVR5cGUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnd29ya1NlYXJjaERhdGUnOiBbd3NyLndvcmtTZWFyY2hEYXRlICE9IG51bGwgPyB0aGlzLmdldERhdGUod3NyLndvcmtTZWFyY2hEYXRlKSA6ICcnXSxcclxuICAgICAgJ2VtcGxveWVyTmFtZSc6IFt3c3IuZW1wbG95ZXJOYW1lXSxcclxuICAgICAgJ2NpdHknOiBbd3NyLmNpdHldLFxyXG4gICAgICAnbGluZTEnOiBbd3NyLmxpbmUxXSxcclxuICAgICAgJ2xpbmUyJzogW3dzci5saW5lMl0sXHJcbiAgICAgICdzdGF0ZSc6IFt3c3Iuc3RhdGUgIT0gbnVsbCA/IHdzci5zdGF0ZSA6IExpYkNvbnN0YW50cy5TVEFURV0sXHJcbiAgICAgICdjb3VudHJ5JzogW3dzci5jb3VudHJ5XSxcclxuICAgICAgJ2NvbnRhY3RNZXRob2QnOiBbd3NyLmNvbnRhY3RNZXRob2QgIT0gbnVsbCA/IHdzci5jb250YWN0TWV0aG9kIDogJyddLFxyXG4gICAgICAnZW1wQ29udGFjdFBlcnNvbk5hbWUnOiBbd3NyLmVtcENvbnRhY3RQZXJzb25OYW1lXSxcclxuICAgICAgJ2VtcENvbnRhY3RQZXJzb25UaXRsZSc6IFt3c3IuZW1wQ29udGFjdFBlcnNvblRpdGxlXSxcclxuICAgICAgJ3ppcCc6IFt3c3IuemlwXSxcclxuICAgICAgJ2VtcGxveWVyUGhvbmUnOiBbd3NyLmVtcGxveWVyUGhvbmUgIT0gbnVsbCA/IHdzci5lbXBsb3llclBob25lIDogJyddLFxyXG4gICAgICAnY29udGFjdFBob25lJzogW3dzci5jb250YWN0UGhvbmUgIT0gbnVsbCA/IHdzci5jb250YWN0UGhvbmUgOiAnJ10sXHJcbiAgICAgICdlbXBsb3llckVtYWlsJzogW3dzci5lbXBsb3llckVtYWlsXSxcclxuICAgICAgJ2VtcGxveWVyV2Vic2l0ZSc6IFt3c3IuZW1wbG95ZXJXZWJzaXRlXSxcclxuICAgICAgJ2VtcGxveWVyRmF4JzogW3dzci5lbXBsb3llckZheCAhPSBudWxsID8gd3NyLmVtcGxveWVyRmF4IDogJyddLFxyXG4gICAgICAncG9zaXRpb25BcHBsaWVkRm9yJzogW3dzci5wb3NpdGlvbkFwcGxpZWRGb3JdLFxyXG4gICAgICAnc2VhcmNoUmVzdWx0JzogW3dzci5zZWFyY2hSZXN1bHRdLFxyXG4gICAgICAnd2luZ3NSZWZlcnJhbFdvcmtTZWFyY2hJZCc6IFt3c3Iud2luZ3NSZWZlcnJhbFdvcmtTZWFyY2hJZF0sXHJcbiAgICAgICdjbGFpbWFudFdvcmtTZWFyY2hKb3VybmFsSWQnOiBbd3NyLmNsYWltYW50V29ya1NlYXJjaEpvdXJuYWxJZF0sXHJcbiAgICAgICd3c3JJZCc6IFt3c3Iud3NySWRdLFxyXG4gICAgICAnd29ya1Nob3BOYW1lJzogW3dzci53b3JrU2hvcE5hbWVdLFxyXG4gICAgICAnam9iRmFpckxvY2F0aW9uJzogW3dzci5qb2JGYWlyTG9jYXRpb25dLFxyXG4gICAgICAnb3RoUmVzdWx0JzogW3dzci5vdGhSZXN1bHRdLFxyXG4gICAgICAnaGFzU3RhcnREYXRlJzogW3dzci5oYXNTdGFydERhdGVdLFxyXG4gICAgICAnd29ya1N0YXJ0RGF0ZSc6IFt3c3Iud29ya1N0YXJ0RGF0ZV0sXHJcbiAgICAgICd0eXBlT2ZXb3JrJzogW3dzci50eXBlT2ZXb3JrXSxcclxuICAgICAgJ2lzSW5Db250YWN0V2l0aFVuaW9uJzogW3dzci5pc0luQ29udGFjdFdpdGhVbmlvbl0sXHJcbiAgICAgICd1bmlvbk5hbWUnOiBbd3NyLnVuaW9uTmFtZV0sXHJcbiAgICAgICd1bmlvbkNvbnRhY3RQZXJzb25OYW1lJzogW3dzci51bmlvbkNvbnRhY3RQZXJzb25OYW1lXSxcclxuICAgICAgJ3VuaW9uQ29udGFjdERhdGUnOiBbd3NyLnVuaW9uQ29udGFjdERhdGVdLFxyXG4gICAgICAnd29ya09yUGVyZm9ybVNlcnZpY2VUeXBlJzogW3dzci53b3JrT3JQZXJmb3JtU2VydmljZVR5cGVdXHJcbiAgICB9KTtcclxuXHJcbiAgICAvKiogTkVXOiBhdHRhY2ggdW5pcXVlLXR5cGUgdmFsaWRhdG9yIHRvIGFjdGl2aXR5VHlwZSAqL1xyXG4gICAgY29uc3QgcHJldiA9IHRoaXMuYWN0aXZpdHlUeXBlLnZhbGlkYXRvciA/IFt0aGlzLmFjdGl2aXR5VHlwZS52YWxpZGF0b3JdIDogW107XHJcbiAgICB0aGlzLmFjdGl2aXR5VHlwZS5zZXRWYWxpZGF0b3JzKFsuLi5wcmV2LCB0aGlzLnVuaXF1ZUFjdGl2aXR5VHlwZVZhbGlkYXRvcigpXSk7XHJcbiAgICB0aGlzLmFjdGl2aXR5VHlwZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHJcbiAgICBpZiAod3NyLmFjdGl2aXR5VHlwZSA9PSAnQ05UQycgfHwgd3NyLmFjdGl2aXR5VHlwZSA9PSAnQVBMRCcgfHwgd3NyLmFjdGl2aXR5VHlwZSA9PSAnTlRSVycpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5RW1wbG95ZXJRdWVzdGlvbnMgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlDQ1F1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlKb2JGYWlyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheVdvcmtpbmdGb3JBbkVtcGxveWVyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKHdzci5hY3Rpdml0eVR5cGUgPT0gJ0pCRlInKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUVtcGxveWVyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheUNDUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheUpvYkZhaXJRdWVzdGlvbnMgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlXb3JraW5nRm9yQW5FbXBsb3llclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmICh3c3IuYWN0aXZpdHlUeXBlID09ICdDU1ZXJyB8fCB3c3IuYWN0aXZpdHlUeXBlID09ICdSRVNSJykge1xyXG4gICAgICB0aGlzLmRpc3BsYXlFbXBsb3llclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlDQ1F1ZXN0aW9ucyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzcGxheUpvYkZhaXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5V29ya2luZ0ZvckFuRW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAod3NyLmFjdGl2aXR5VHlwZSA9PSAnVU5PTicpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5RW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Q0NRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Sm9iRmFpclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlVbmlvbk1lbWJlclF1ZXN0aW9ucyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzcGxheVdvcmtpbmdGb3JBbkVtcGxveWVyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKHdzci5hY3Rpdml0eVR5cGUgPT0gJ1dSS1AnKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUVtcGxveWVyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheUNDUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheUpvYkZhaXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5VW5pb25NZW1iZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5V29ya2luZ0ZvckFuRW1wbG95ZXJRdWVzdGlvbnMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aXZpdHlUeXBlQ29tYm8gPSBDb21ib09wdGlvbi5BY3Rpdml0eVR5cGVDb21ibztcclxuICAgIGlmICh3c3IuYWN0aXZpdHlUeXBlID09ICdDTlRDJyB8fCB3c3IuYWN0aXZpdHlUeXBlID09ICdBUExEJykge1xyXG4gICAgICB0aGlzLndvcmtTZWFyY2hSZXN1bHRDb21ibyA9IENvbWJvT3B0aW9uLldvcmtTZWFyY2hSZXN1bHRFbXBsb3llckNvbWJvTWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLndvcmtTZWFyY2hSZXN1bHRDb21ibyA9IENvbWJvT3B0aW9uLldvcmtTZWFyY2hSZXN1bHRDYXJlZXJDZW50ZXJDb21ib01lO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMud29ya1NlYXJjaE1ldGhvZENvbnRhY3QgPSBDb21ib09wdGlvbi5Xb3JrU2VhcmNoTWV0aG9kQ29udGFjdE1lO1xyXG5cclxuICAgIGlmICh3c3Iud2luZ3NSZWZlcnJhbFdvcmtTZWFyY2hJZCAhPSBudWxsICYmIHdzci53aW5nc1JlZmVycmFsV29ya1NlYXJjaElkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmlzUmVhZE9ubHkgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc1JlYWRPbmx5ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnRhY3RNZXRob2Quc2V0VmFsdWUod3NyLmNvbnRhY3RNZXRob2QgIT0gbnVsbCA/IHdzci5jb250YWN0TWV0aG9kIDogJycpO1xyXG4gICAgdGhpcy5jb250YWN0TWV0aG9kLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgdGhpcy5zZXRDb250YWN0SW5mb1ZhbGlkYXRpb24odmFsKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWN0aXZpdHlUeXBlLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgdGhpcy5yZWVtRXhjZWVkZWRGbGFnID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZpdHlUeXBlVmFsaWRhdGlvbih2YWwpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5pc0luQ29udGFjdFdpdGhVbmlvbi52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgIHRoaXMuc2V0VW5pb25WYWxpZGF0aW9uKHZhbCk7XHJcbiAgICB9KVxyXG5cclxuICAgIGlmICh3c3Iuc2VhcmNoUmVzdWx0ID09ICdIRFJXJykge1xyXG4gICAgICB0aGlzLmhhc1N0YXJ0RGF0ZS5zZXRWYWx1ZSh3c3IuaGFzU3RhcnREYXRlICE9IG51bGwgPyB3c3IuaGFzU3RhcnREYXRlIDogJycpO1xyXG4gICAgICB0aGlzLndvcmtTdGFydERhdGUuc2V0VmFsdWUod3NyLndvcmtTdGFydERhdGUgIT0gbnVsbCA/IG5ldyBEYXRlKHdzci53b3JrU3RhcnREYXRlKSA6ICcnKTtcclxuICAgICAgdGhpcy5zZWFyY2hSZXN1bHQuc2V0VmFsdWUoJ0hJUkUnKTtcclxuICAgIH0gZWxzZSBpZiAod3NyLnNlYXJjaFJlc3VsdCA9PSAnSE5TRCcpIHtcclxuICAgICAgdGhpcy5oYXNTdGFydERhdGUuc2V0VmFsdWUod3NyLmhhc1N0YXJ0RGF0ZSAhPSBudWxsID8gd3NyLmhhc1N0YXJ0RGF0ZSA6ICcnKTtcclxuICAgICAgdGhpcy5zZWFyY2hSZXN1bHQuc2V0VmFsdWUoJ0hJUkUnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhc1N0YXJ0RGF0ZS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgIGlmICh2YWwgPT0gJ1knKSB7XHJcbiAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMud29ya1N0YXJ0RGF0ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndvcmtTdGFydERhdGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0Q29udGFjdEluZm9WYWxpZGF0aW9uKHRoaXMuY29udGFjdE1ldGhvZC52YWx1ZSk7XHJcbiAgICB0aGlzLnNldEFjdGl2aXR5VHlwZVZhbGlkYXRpb24odGhpcy5hY3Rpdml0eVR5cGUudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIE5FVzogdW5pcXVlLXR5cGUgdmFsaWRhdG9yIGZhY3RvcnkgKi9cclxuICBwcml2YXRlIHVuaXF1ZUFjdGl2aXR5VHlwZVZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2wpID0+IHtcclxuICAgICAgY29uc3QgdiA9IGNvbnRyb2w/LnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgaWYgKCF2KSByZXR1cm4gbnVsbDtcclxuICAgICAgaWYgKHRoaXMuU0lOR0xFVE9OX1RZUEVTLmhhcyh2KSAmJiB0aGlzLmhhc1R5cGUodikpIHtcclxuICAgICAgICByZXR1cm4geyB0eXBlQWxyZWFkeVVzZWQ6IHRydWUgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAgICAvKiogTkVXOiBjaGVja3MgaWYgVU5PTi9XUktQIGFscmVhZHkgZXhpc3RzIG9uIGFub3RoZXIgcm93ICovXHJcbiAgcHJpdmF0ZSBoYXNUeXBlKHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIC8vIFByZWZlciB0aGUgcGFzc2VkLWluIGxpc3QgaWYgcHJvdmlkZWQ7IGZhbGwgYmFjayB0byBzZXJ2aWNlXHJcbiAgY29uc3QgbGlzdCA9XHJcbiAgICAodGhpcy5leGlzdGluZ1JlY29yZHMgJiYgdGhpcy5leGlzdGluZ1JlY29yZHMubGVuZ3RoID4gMClcclxuICAgICAgPyB0aGlzLmV4aXN0aW5nUmVjb3Jkc1xyXG4gICAgICA6ICh0aGlzLndjU2VydmljZS5nZXRXb3JrU2VhcmNoUmVjb3JkcygpID8/IFtdKTtcclxuIFxyXG4gIC8vIENvcnJlY3RseSBkZXRlY3QgaWYgd2UgYXJlIGVkaXRpbmcgZXZlbiB3aGVuIGluZGV4IGlzIDBcclxuICBjb25zdCBoYXNFZGl0SWR4ID0gdGhpcy5yZWNvcmRJbmRleFRvRWRpdCAhPT0gbnVsbCAmJiB0aGlzLnJlY29yZEluZGV4VG9FZGl0ICE9PSB1bmRlZmluZWQ7XHJcbiAgY29uc3QgZWRpdElkeCA9IGhhc0VkaXRJZHggPyB0aGlzLnJlY29yZEluZGV4VG9FZGl0IDogLTE7XHJcbiBcclxuICAvLyBFeGNsdWRlIHRoZSByb3cgYmVpbmcgZWRpdGVkXHJcbiAgcmV0dXJuIGxpc3Quc29tZSgociwgaWR4KSA9PiByPy5hY3Rpdml0eVR5cGUgPT09IHR5cGUgJiYgaWR4ICE9PSBlZGl0SWR4KTtcclxufVxyXG5cclxuICBmaWx0ZXJTdGF0ZShldmVudCkge1xyXG4gICAgbGV0IGNob2ljZTogYW55O1xyXG4gICAgaWYgKHRoaXMuY291bnRyeT8udmFsdWUgPT09ICdVUycpIHtcclxuICAgICAgY29uc3QgY3VycmVudFN0YXRlID0gQ29tYm9PcHRpb24uU3RhdGVzQ29tYm8uZmluZChzdGF0ZSA9PiBzdGF0ZS5OQU1FID09IHRoaXMudXRpbC5nZXRTdGF0ZSgpKVxyXG4gICAgICBjaG9pY2UgPSBbY3VycmVudFN0YXRlLCAuLi5Db21ib09wdGlvbi5TdGF0ZXNDb21iby5maWx0ZXIoc3RhdGUgPT4gc3RhdGUuTkFNRSAhPSB0aGlzLnV0aWwuZ2V0U3RhdGUoKSldO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvdW50cnk/LnZhbHVlID09PSAnQ0EnKSB7XHJcbiAgICAgIGNob2ljZSA9IENvbWJvT3B0aW9uLkNBX1NUQVRFUztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN0YXRlc0NvbWJvID0gY2hvaWNlO1xyXG4gIH1cclxuXHJcbiAgc2V0WmlwQ29kZVZhbGlkYXRpb25CYXNlZE9uQ291bnRyeSgpIHtcclxuICAgIHRoaXMuY291bnRyeS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICBpZiAoYyA9PSAnVVMnKSB7XHJcbiAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnppcCk7XHJcbiAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy56aXAsIHRoaXMudXNaaXBjb2RlVmFsaWRhdGlvbnMpO1xyXG4gICAgICB9IGVsc2UgaWYgKGMgPT0gJ0NBJykge1xyXG4gICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy56aXApO1xyXG4gICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuemlwLCB0aGlzLmNhbmFkYVppcGNvZGVWYWxpZGF0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZXRVbmlvblZhbGlkYXRpb24odmFsOiBhbnkpe1xyXG4gICAgaWYodmFsID09ICdZJyl7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLnVuaW9uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLnVuaW9uQ29udGFjdFBlcnNvbk5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy51bmlvbkNvbnRhY3REYXRlKTtcclxuICAgIH0gZWxzZXtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnVuaW9uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy51bmlvbkNvbnRhY3RQZXJzb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnVuaW9uQ29udGFjdERhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZpdHlUeXBlVmFsaWRhdGlvbih2YWw6IGFueSkge1xyXG4gICAgdGhpcy5kaXNwbGF5RW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlzcGxheUNDUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICB0aGlzLmRpc3BsYXlKb2JGYWlyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICB0aGlzLmRpc3BsYXlVbmlvbk1lbWJlclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaXNwbGF5V29ya2luZ0ZvckFuRW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodmFsID09ICdDTlRDJyB8fCB2YWwgPT0gJ0FQTEQnIHx8IHZhbCA9PSAnTlRSVycpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5RW1wbG95ZXJRdWVzdGlvbnMgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlDQ1F1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlKb2JGYWlyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheVVuaW9uTWVtYmVyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheVdvcmtpbmdGb3JBbkVtcGxveWVyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY291bnRyeS5zZXRWYWx1ZShcIlVTXCIpO1xyXG5cclxuICAgICAgdGhpcy5jb3VudHJ5LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoY291bnRyeSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJTdGF0ZShjb3VudHJ5KVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc2V0WmlwQ29kZVZhbGlkYXRpb25CYXNlZE9uQ291bnRyeSgpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLndvcmtTZWFyY2hEYXRlLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFwcFZhbGlkYXRvcnMuaXNCZXR3ZWVuKHRoaXMuc3VuRGF0ZSwgdGhpcy5zYXREYXRlKV0pKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmpvYkZhaXJMb2NhdGlvbik7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53b3JrT3JQZXJmb3JtU2VydmljZVR5cGUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMud29ya1Nob3BOYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmlzSW5Db250YWN0V2l0aFVuaW9uKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnVuaW9uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy51bmlvbkNvbnRhY3RQZXJzb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnVuaW9uQ29udGFjdERhdGUpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5lbXBsb3llck5hbWUpO1xyXG4gICAgICB0aGlzLmVtcGxveWVyTmFtZS5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnBhdHRlcm4oL15bQS1aYS16MC05XFxzXFwuLCYnKCkjLV0rJC8pXSk7XHJcbiAgICAgIHRoaXMuZW1wbG95ZXJOYW1lLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMubGluZTEpO1xyXG4gICAgICB0aGlzLmxpbmUxLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucGF0dGVybigvXlswLTlBLVphLXpcXHMsJ1xcLVxcLiNcXC9dKyQvKV0pO1xyXG4gICAgICB0aGlzLmxpbmUxLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuY2l0eSk7XHJcbiAgICAgIHRoaXMuY2l0eS5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnBhdHRlcm4oL14oPyEtKVtBLVphLXogLV0qJC8pXSk7XHJcbiAgICAgIHRoaXMuY2l0eS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmNvdW50cnkpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5zdGF0ZSk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLnppcCk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmVtcGxveWVyUGhvbmUpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5wb3NpdGlvbkFwcGxpZWRGb3IpO1xyXG4gICAgICB0aGlzLnBvc2l0aW9uQXBwbGllZEZvci5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnBhdHRlcm4oL14oPyEtKVtBLVphLXowLTkgLV0qJC8pXSk7XHJcbiAgICAgIHRoaXMucG9zaXRpb25BcHBsaWVkRm9yLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuY29udGFjdE1ldGhvZCk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmVtcENvbnRhY3RQZXJzb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuc2VhcmNoUmVzdWx0KTtcclxuXHJcbiAgICAgIGlmICh2YWwgPT0gJ0NOVEMnIHx8IHZhbCA9PSAnQVBMRCcpIHtcclxuICAgICAgICB0aGlzLndvcmtTZWFyY2hSZXN1bHRDb21ibyA9IENvbWJvT3B0aW9uLldvcmtTZWFyY2hSZXN1bHRFbXBsb3llckNvbWJvTWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy53b3JrU2VhcmNoUmVzdWx0Q29tYm8gPSBDb21ib09wdGlvbi5Xb3JrU2VhcmNoUmVzdWx0Q2FyZWVyQ2VudGVyQ29tYm9NZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHZhbCA9PSAnSkJGUicpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5RW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Q0NRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5Sm9iRmFpclF1ZXN0aW9ucyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzcGxheVVuaW9uTWVtYmVyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheVdvcmtpbmdGb3JBbkVtcGxveWVyUXVlc3Rpb25zID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5qb2JGYWlyTG9jYXRpb24pO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLndvcmtTZWFyY2hEYXRlLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFwcFZhbGlkYXRvcnMuaXNCZXR3ZWVuKHRoaXMuc3VuRGF0ZSwgdGhpcy5zYXREYXRlKV0pKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndvcmtPclBlcmZvcm1TZXJ2aWNlVHlwZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5pc0luQ29udGFjdFdpdGhVbmlvbik7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy51bmlvbk5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudW5pb25Db250YWN0UGVyc29uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy51bmlvbkNvbnRhY3REYXRlKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndvcmtTaG9wTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llck5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMubGluZTEpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuY2l0eSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5zdGF0ZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jb3VudHJ5KTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnppcCk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llclBob25lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnBvc2l0aW9uQXBwbGllZEZvcik7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jb250YWN0TWV0aG9kKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcENvbnRhY3RQZXJzb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnNlYXJjaFJlc3VsdCk7XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKHZhbCA9PSAnQ1NWVycgfHwgdmFsID09ICdSRVNSJykge1xyXG4gICAgICB0aGlzLmRpc3BsYXlFbXBsb3llclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlDQ1F1ZXN0aW9ucyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzcGxheUpvYkZhaXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5VW5pb25NZW1iZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5V29ya2luZ0ZvckFuRW1wbG95ZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMud29ya1NlYXJjaERhdGUsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQXBwVmFsaWRhdG9ycy5pc0JldHdlZW4odGhpcy5zdW5EYXRlLCB0aGlzLnNhdERhdGUpXSkpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuam9iRmFpckxvY2F0aW9uKTtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMud29ya1Nob3BOYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndvcmtPclBlcmZvcm1TZXJ2aWNlVHlwZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5pc0luQ29udGFjdFdpdGhVbmlvbik7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy51bmlvbk5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudW5pb25Db250YWN0UGVyc29uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy51bmlvbkNvbnRhY3REYXRlKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5saW5lMSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jaXR5KTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnN0YXRlKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNvdW50cnkpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuemlwKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyUGhvbmUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMucG9zaXRpb25BcHBsaWVkRm9yKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNvbnRhY3RNZXRob2QpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wQ29udGFjdFBlcnNvbk5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuc2VhcmNoUmVzdWx0KTtcclxuICAgIH1cclxuICAgIGlmICh2YWwgPT0gJ1VOT04nKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUVtcGxveWVyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheUNDUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheUpvYkZhaXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5VW5pb25NZW1iZXJRdWVzdGlvbnMgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlXb3JraW5nRm9yQW5FbXBsb3llclF1ZXN0aW9ucyA9IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuaXNJbkNvbnRhY3RXaXRoVW5pb24pO1xyXG4gICAgICBpZiAodGhpcy53b3JrU2VhcmNoRGF0ZS52YWx1ZSA9PT0gJycgfHwgdGhpcy53b3JrU2VhcmNoRGF0ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy53b3JrU2VhcmNoRGF0ZS5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLndvcmtPclBlcmZvcm1TZXJ2aWNlVHlwZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53b3JrU2VhcmNoRGF0ZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5qb2JGYWlyTG9jYXRpb24pO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMud29ya1Nob3BOYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5saW5lMSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jaXR5KTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnN0YXRlKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNvdW50cnkpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuemlwKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyUGhvbmUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMucG9zaXRpb25BcHBsaWVkRm9yKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNvbnRhY3RNZXRob2QpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wQ29udGFjdFBlcnNvbk5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuc2VhcmNoUmVzdWx0KTtcclxuICAgIH1cclxuICAgIGlmICh2YWwgPT0gJ1dSS1AnKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUVtcGxveWVyUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheUNDUXVlc3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzcGxheUpvYkZhaXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5VW5pb25NZW1iZXJRdWVzdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNwbGF5V29ya2luZ0ZvckFuRW1wbG95ZXJRdWVzdGlvbnMgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMud29ya09yUGVyZm9ybVNlcnZpY2VUeXBlKTtcclxuICAgICAgaWYgKHRoaXMud29ya1NlYXJjaERhdGUudmFsdWUgPT09ICcnIHx8IHRoaXMud29ya1NlYXJjaERhdGUudmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMud29ya1NlYXJjaERhdGUuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5pc0luQ29udGFjdFdpdGhVbmlvbik7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53b3JrU2VhcmNoRGF0ZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy51bmlvbk5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudW5pb25Db250YWN0UGVyc29uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy51bmlvbkNvbnRhY3REYXRlKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmpvYkZhaXJMb2NhdGlvbik7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy53b3JrU2hvcE5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJOYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmxpbmUxKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNpdHkpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuc3RhdGUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuY291bnRyeSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy56aXApO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJQaG9uZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5wb3NpdGlvbkFwcGxpZWRGb3IpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuY29udGFjdE1ldGhvZCk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBDb250YWN0UGVyc29uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5zZWFyY2hSZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRDb250YWN0SW5mb1ZhbGlkYXRpb24odmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwgPT0gJ1RFTEUnKSB7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmVtcGxveWVyUGhvbmUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wQ29udGFjdFBlcnNvbk5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJFbWFpbCk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llcldlYnNpdGUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJGYXgpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5jb250YWN0UGhvbmUpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5lbXBDb250YWN0UGVyc29uTmFtZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsID09ICdFTUFMJykge1xyXG4gICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLmVtcGxveWVyRW1haWwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBDb250YWN0UGVyc29uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llclBob25lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyV2Vic2l0ZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llckZheCk7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmVtcGxveWVyUGhvbmUpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5lbXBDb250YWN0UGVyc29uTmFtZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsID09ICdPTkxJJykge1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5lbXBsb3llcldlYnNpdGUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wQ29udGFjdFBlcnNvbk5hbWUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJQaG9uZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llckVtYWlsKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyRmF4KTtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuZW1wbG95ZXJQaG9uZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsID09ICdGQVhOJykge1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5lbXBsb3llckZheCk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBDb250YWN0UGVyc29uTmFtZSk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llclBob25lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyRW1haWwpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJXZWJzaXRlKTtcclxuICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuZW1wbG95ZXJQaG9uZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsID09ICdNQUlMJyB8fCB2YWwgPT0gJ1BSU04nKSB7XHJcbiAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmVtcENvbnRhY3RQZXJzb25OYW1lKTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyRmF4KTtcclxuICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmVtcGxveWVyUGhvbmUpO1xyXG4gICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuZW1wbG95ZXJFbWFpbCk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5lbXBsb3llcldlYnNpdGUpO1xyXG4gICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5lbXBsb3llclBob25lKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0RGF0ZSh3c0RhdGUpOiBEYXRlIHtcclxuICAgIGlmICghKHdzRGF0ZSBpbnN0YW5jZW9mIERhdGUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0RW50ZXJlZERhdGUod3NEYXRlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB3c0RhdGU7XHJcbiAgfVxyXG5cclxuICBnZXQgd29ya1NlYXJjaERhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWyd3b3JrU2VhcmNoRGF0ZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVtcGxveWVyTmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ2VtcGxveWVyTmFtZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNpdHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWydjaXR5J107XHJcbiAgfVxyXG5cclxuICBnZXQgbGluZTEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWydsaW5lMSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxpbmUyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snbGluZTInXTtcclxuICB9XHJcblxyXG4gIGdldCBzdGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ3N0YXRlJ107XHJcbiAgfVxyXG5cclxuICBnZXQgY291bnRyeSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ2NvdW50cnknXTtcclxuICB9XHJcblxyXG4gIGdldCBjb250YWN0TWV0aG9kKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snY29udGFjdE1ldGhvZCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVtcENvbnRhY3RQZXJzb25OYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snZW1wQ29udGFjdFBlcnNvbk5hbWUnXTtcclxuICB9XHJcblxyXG4gIGdldCBlbXBDb250YWN0UGVyc29uVGl0bGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWydlbXBDb250YWN0UGVyc29uVGl0bGUnXTtcclxuICB9XHJcblxyXG4gIGdldCB6aXAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWyd6aXAnXTtcclxuICB9XHJcblxyXG4gIGdldCBlbXBsb3llclBob25lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snZW1wbG95ZXJQaG9uZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVtcGxveWVyRW1haWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWydlbXBsb3llckVtYWlsJ107XHJcbiAgfVxyXG5cclxuICBnZXQgZW1wbG95ZXJXZWJzaXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snZW1wbG95ZXJXZWJzaXRlJ107XHJcbiAgfVxyXG5cclxuICBnZXQgZW1wbG95ZXJGYXgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWydlbXBsb3llckZheCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9uQXBwbGllZEZvcigpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ3Bvc2l0aW9uQXBwbGllZEZvciddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlYXJjaFJlc3VsdCgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ3NlYXJjaFJlc3VsdCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHdpbmdzUmVmZXJyYWxXb3JrU2VhcmNoSWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWyd3aW5nc1JlZmVycmFsV29ya1NlYXJjaElkJ107XHJcbiAgfVxyXG5cclxuICBnZXQgY2xhaW1hbnRXb3JrU2VhcmNoSm91cm5hbElkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1snY2xhaW1hbnRXb3JrU2VhcmNoSm91cm5hbElkJ107XHJcbiAgfVxyXG5cclxuICBnZXQgd3NySWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWyd3c3JJZCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjdGl2aXR5VHlwZSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ2FjdGl2aXR5VHlwZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbnRhY3RQaG9uZSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ2NvbnRhY3RQaG9uZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHdvcmtTaG9wTmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ3dvcmtTaG9wTmFtZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGpvYkZhaXJMb2NhdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ2pvYkZhaXJMb2NhdGlvbiddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG90aFJlc3VsdCgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ290aFJlc3VsdCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc1N0YXJ0RGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ2hhc1N0YXJ0RGF0ZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHdvcmtTdGFydERhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53c3JGb3JtLmNvbnRyb2xzWyd3b3JrU3RhcnREYXRlJ107XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZU9mV29yaygpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ3R5cGVPZldvcmsnXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0luQ29udGFjdFdpdGhVbmlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ2lzSW5Db250YWN0V2l0aFVuaW9uJ107XHJcbiAgfVxyXG5cclxuICBnZXQgdW5pb25OYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1sndW5pb25OYW1lJ107XHJcbiAgfVxyXG5cclxuICBnZXQgdW5pb25Db250YWN0UGVyc29uTmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ3VuaW9uQ29udGFjdFBlcnNvbk5hbWUnXTtcclxuICB9XHJcblxyXG4gIGdldCB1bmlvbkNvbnRhY3REYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMud3NyRm9ybS5jb250cm9sc1sndW5pb25Db250YWN0RGF0ZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHdvcmtPclBlcmZvcm1TZXJ2aWNlVHlwZSgpIHtcclxuICAgIHJldHVybiB0aGlzLndzckZvcm0uY29udHJvbHNbJ3dvcmtPclBlcmZvcm1TZXJ2aWNlVHlwZSddO1xyXG4gIH1cclxuXHJcbiAgLy8gLS0tIEFERDogY291bnQgUkVFTSBhY3Rpdml0aWVzIGluIGxvY2FsIGxpc3QsIG9wdGlvbmFsbHkgZXhjbHVkaW5nIGVkaXRlZCByb3cgLS0tXHJcbiAgcHJpdmF0ZSByZWVtQWN0aXZpdHlDb3VudEZvckN1cnJlbnRXZWVrKGV4Y2x1ZGVJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGwpOiBudW1iZXIge1xyXG4gICAgY29uc3QgbGlzdCA9IHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hSZWNvcmRzKCkgPz8gW107XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChleGNsdWRlSW5kZXggIT09IG51bGwgJiYgaSA9PT0gZXhjbHVkZUluZGV4KSBjb250aW51ZTtcclxuICAgICAgY29uc3QgciA9IGxpc3RbaV07XHJcbiAgICAgIGlmIChyICYmIHRoaXMuUkVFTV9BQ1RJVklUWV9UWVBFUy5oYXMoci5hY3Rpdml0eVR5cGUpKSBjb3VudCsrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvdW50O1xyXG4gIH1cclxuXHJcbiAgcmVlbUFjdGl2aXR5Q2hlY2soc2VsZWN0ZWRUeXBlOiBzdHJpbmcpIHtcclxuICAgIC8vID4+PiBORVc6IFJFRU0gY2FwIGNoZWNrIGluY2x1ZGluZyB0aGUgY3VycmVudCBzZWxlY3Rpb24gPDw8XHJcbiAgICB0aGlzLnJlZW1FeGNlZWRlZEZsYWcgPSBmYWxzZTsgLy8gcmVzZXQgZWFjaCBzdWJtaXRcclxuXHJcbiAgICBjb25zdCBpc1JlZW0gPSB0aGlzLlJFRU1fQUNUSVZJVFlfVFlQRVMuaGFzKHNlbGVjdGVkVHlwZSk7XHJcblxyXG4gICAgLy8gbG9jYWwgUkVFTVxyXG4gICAgY29uc3QgaGFzRWRpdElkeCA9IHRoaXMucmVjb3JkSW5kZXhUb0VkaXQgIT09IG51bGwgJiYgdGhpcy5yZWNvcmRJbmRleFRvRWRpdCAhPT0gdW5kZWZpbmVkO1xyXG4gICAgY29uc3QgZWRpdElkeCA9IGhhc0VkaXRJZHggPyB0aGlzLnJlY29yZEluZGV4VG9FZGl0IDogbnVsbDtcclxuICAgIGNvbnN0IGxvY2FsUmVlbSA9IHRoaXMucmVlbUFjdGl2aXR5Q291bnRGb3JDdXJyZW50V2VlayhlZGl0SWR4KTtcclxuICAgIC8vIHNlcnZlciBSRUVNXHJcbiAgICBjb25zdCBzZXJ2ZXJSZWVtID0gTnVtYmVyKHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhPy5oaWRSZWVtV29ya1NlYXJjaFJlY29yZENvdW50ID8/IDApO1xyXG4gICAgLy8gaW5jbHVkZSB0aGUgY3VycmVudCBzZWxlY3Rpb24gaW4gdGhlIHRvdGFsXHJcbiAgICBjb25zdCB0b3RhbElmU2F2ZWQgPSBsb2NhbFJlZW0gKyBzZXJ2ZXJSZWVtICsgKGlzUmVlbSA/IDEgOiAwKTtcclxuXHJcbiAgICBpZiAoaXNSZWVtICYmIHRvdGFsSWZTYXZlZCA+IHRoaXMuUkVFTV9MSU1JVCkge1xyXG4gICAgICB0aGlzLnJlZW1FeGNlZWRlZEZsYWcgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFVQREFURUQ6IGFkZCgpIHNldHMgdGhlIHNhbWUgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcHMgKi9cclxuICBhZGQoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFR5cGUgPSB0aGlzLmFjdGl2aXR5VHlwZS52YWx1ZSBhcyBzdHJpbmc7XHJcbiAgICB0aGlzLnJlZW1BY3Rpdml0eUNoZWNrKHNlbGVjdGVkVHlwZSk7XHJcbiAgICAvLyBlbmZvcmNlIHNpbmdsZXRvbiB0eXBlcyBhdCBzdWJtaXQgdGltZSB0b29cclxuICAgIGlmICh0aGlzLlNJTkdMRVRPTl9UWVBFUy5oYXMoc2VsZWN0ZWRUeXBlKSAmJiB0aGlzLmhhc1R5cGUoc2VsZWN0ZWRUeXBlKSkge1xyXG4gICAgICBjb25zdCBwcmV2ID0gdGhpcy5hY3Rpdml0eVR5cGUuZXJyb3JzIHx8IHt9O1xyXG4gICAgICB0aGlzLmFjdGl2aXR5VHlwZS5zZXRFcnJvcnMoeyAuLi5wcmV2LCB0eXBlQWxyZWFkeVVzZWQ6IHRydWUgfSk7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMud3NyRm9ybS52YWxpZCkge1xyXG4gICAgICBpZiAodGhpcy5zZWFyY2hSZXN1bHQudmFsdWUgPT0gJ0hJUkUnICYmIHRoaXMuaGFzU3RhcnREYXRlLnZhbHVlID09ICdZJykge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0LnNldFZhbHVlKCdIRFJXJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hSZXN1bHQudmFsdWUgPT0gJ0hJUkUnICYmIHRoaXMuaGFzU3RhcnREYXRlLnZhbHVlID09ICdOJykge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0LnNldFZhbHVlKCdITlNEJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdWNjZXNzLmVtaXQoe1xyXG4gICAgICAgIC4uLnRoaXMud3NyRm9ybS52YWx1ZSxcclxuICAgICAgICByZWVtRXhjZWVkZWRGbGFnOiB0aGlzLnJlZW1FeGNlZWRlZEZsYWdcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLndzckZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLm9uQ2xvc2UuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RW1wbG95ZXIoZW1wbG95ZXI6IEVtcGxveWVyU2VhcmNoUmVzdWx0KSB7XHJcbiAgICB0aGlzLmVtcGxveWVyTmFtZS5zZXRWYWx1ZShlbXBsb3llci5lbXBsb3llck5hbWUpO1xyXG4gICAgdGhpcy5saW5lMS5zZXRWYWx1ZShlbXBsb3llci5hZGRyZXNzTGluZTEpO1xyXG4gICAgdGhpcy5saW5lMi5zZXRWYWx1ZShlbXBsb3llci5hZGRyZXNzTGluZTIpO1xyXG4gICAgdGhpcy5jaXR5LnNldFZhbHVlKGVtcGxveWVyLmNpdHkpO1xyXG4gICAgdGhpcy5zdGF0ZS5zZXRWYWx1ZShlbXBsb3llci5zdGF0ZS52YWx1ZSk7XHJcbiAgICB0aGlzLmNvdW50cnkuc2V0VmFsdWUoZW1wbG95ZXIuY291bnRyeS52YWx1ZSk7XHJcbiAgICB0aGlzLnppcC5zZXRWYWx1ZShlbXBsb3llci56aXApO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPHAtZGlhbG9nIHZpc2libGU9XCJ0cnVlXCIgbW9kYWw9XCJ0cnVlXCIgYXBwZW5kVG89XCJib2R5XCIgcG9zaXRpb249XCJ0b3BcIiBbc2hvd0hlYWRlcl09XCJmYWxzZVwiIFticmVha3BvaW50c109XCJ7JzEyMDBweCc6ICc2NjBweCcsICc5OTJweCc6ICc2NjBweCcsICc3NjhweCc6ICc2NjBweCcsICc1NzZweCc6ICcxMDB2dyd9XCI+XHJcbiAgPGg0IHN0eWxlPVwiY29sb3I6IHZhcigtLWlvbi1jb2xvci1ncmV5KTsgcGFkZGluZy1sZWZ0OiAyMHB4O1wiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwuYWN0aXZpdHkuaGVhZGluZycgfCB0cmFuc2xhdGU6ZHluYW1pY1BhcmFtIH19PC9oND5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cIndzckZvcm1cIiAjd3NyRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiPlxyXG4gICAgPGlvbi1ncmlkPlxyXG4gICAgICA8aW9uLXJvdz5cclxuICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1wYWRkaW5nXCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjZcIiBzaXplTGc9XCI2XCIgc2l6ZVhsPVwiNlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZFwiPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFjdGl2aXR5VHlwZVwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwuYWN0aXZpdHkudHlwZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cIid3b3JrLnNlYXJjaC5qb3VybmFsLmFjdGl2aXR5LmlwMjA5NScgfCB0cmFuc2xhdGUgfCB0cnVzdEh0bWxcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4O2ZsZXgtZ3JvdzogMTtcIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJhY3Rpdml0eVR5cGVDb21ib1wiIG9wdGlvbkxhYmVsPVwiREVTQ1wiIG9wdGlvblZhbHVlPVwiTkFNRVwiIFtmb3JtQ29udHJvbF09XCJhY3Rpdml0eVR5cGVcIiBhcHBlbmRUbz1cImJvZHlcIiBpbnB1dElkPVwiYWN0aXZpdHlUeXBlXCI+PC9hcHAtZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2FjdGl2aXR5VHlwZScgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgIHR5cGVBbHJlYWR5VXNlZDogJ1lvdSBjYW4gb25seSBhZGQgb25lIGVudHJ5IGZvciB0aGlzIGFjdGl2aXR5IHR5cGUgdGhpcyB3ZWVrLidcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cImRpc3BsYXlXb3JraW5nRm9yQW5FbXBsb3llclF1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIndvcmtPclBlcmZvcm1TZXJ2aWNlVHlwZVwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwud29ya09yUGVyZm9ybVNlcnZpY2VUeXBlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbb3B0aW9uc109XCJlbXBsb3ltZW50VHlwZU9wdGlvbnNcIiBvcHRpb25MYWJlbD1cIkRFU0NcIiBvcHRpb25WYWx1ZT1cIk5BTUVcIlxyXG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwid29ya09yUGVyZm9ybVNlcnZpY2VUeXBlXCI+PC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3b3JrT3JQZXJmb3JtU2VydmljZVR5cGUnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJkaXNwbGF5VW5pb25NZW1iZXJRdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpc0luQ29udGFjdFdpdGhVbmlvblwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwuaXNJbkNvbnRhY3RXaXRoVW5pb24nIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIFtvcHRpb25zXT1cInllc05vT3B0aW9uc1wiIG9wdGlvbkxhYmVsPVwiREVTQ1wiIG9wdGlvblZhbHVlPVwiTkFNRVwiXHJcbiAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpc0luQ29udGFjdFdpdGhVbmlvblwiPjwvcC1zZWxlY3RCdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0naXNJbkNvbnRhY3RXaXRoVW5pb24nIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJpc0luQ29udGFjdFdpdGhVbmlvbi52YWx1ZSA9PT0gJ1knXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidW5pb25OYW1lXCI+e3snd29yay5zZWFyY2guam91cm5hbC51bmlvbk5hbWUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwidW5pb25OYW1lXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwidW5pb25OYW1lXCIgYXBwU3RyaXBJbnZpc2libGVDaGFycyAvPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3VuaW9uTmFtZScgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZC4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJpc0luQ29udGFjdFdpdGhVbmlvbi52YWx1ZSA9PT0gJ1knXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidW5pb25Db250YWN0UGVyc29uTmFtZVwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwudW5pb25Db250YWN0UGVyc29uTmFtZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ1bmlvbkNvbnRhY3RQZXJzb25OYW1lXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwidW5pb25Db250YWN0UGVyc29uTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMgLz5cclxuICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd1bmlvbkNvbnRhY3RQZXJzb25OYW1lJyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cImlzSW5Db250YWN0V2l0aFVuaW9uLnZhbHVlID09PSAnWSdcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ1bmlvbkNvbnRhY3REYXRlXCI+e3snd29yay5zZWFyY2guam91cm5hbC51bmlvbkNvbnRhY3REYXRlJ3wgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgW3Nob3dJY29uXT1cInRydWVcIiBpbnB1dElkPVwidW5pb25Db250YWN0RGF0ZVwiIGFwcGVuZFRvPVwiYm9keVwiIFtmb3JtQ29udHJvbF09XCJ1bmlvbkNvbnRhY3REYXRlXCJcclxuICAgICAgICAgICAgICAgICAgW21pbkRhdGVdPVwic3VuRGF0ZVwiIFttYXhEYXRlXT1cInNhdERhdGVcIiBbZGVmYXVsdERhdGVdPVwic3VuRGF0ZVwiIFtzZWxlY3RPdGhlck1vbnRoc109XCJ0cnVlXCI+PC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3VuaW9uQ29udGFjdERhdGUnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJkaXNwbGF5Q0NRdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3b3JrU2hvcE5hbWVcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLndvcmtTaG9wTmFtZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ3b3JrU2hvcE5hbWVcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJ3b3JrU2hvcE5hbWVcIiBhcHBTdHJpcEludmlzaWJsZUNoYXJzLz5cclxuICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3b3JrU2hvcE5hbWUnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmID1cImRpc3BsYXlKb2JGYWlyUXVlc3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiam9iRmFpckxvY2F0aW9uXCI+e3snd29yay5zZWFyY2guam91cm5hbC5qb2JGYWlyTG9jYXRpb24nIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiam9iRmFpckxvY2F0aW9uXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiam9iRmFpckxvY2F0aW9uXCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nam9iRmFpckxvY2F0aW9uJyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICA8c2VjdGlvbiAqbmdJZiA9XCJkaXNwbGF5RW1wbG95ZXJRdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJlbXBsb3llck5hbWVcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLmVtcGxveWVyTmFtZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8YXBwLXNlYXJjaC1lbXBsb3llciBbZm9ybUNvbnRyb2xdPVwiZW1wbG95ZXJOYW1lXCIgKG9uRm91bmQpPVwic2V0RW1wbG95ZXIoJGV2ZW50KVwiIFtlbXBUeXBlXT1cIidSRUcnXCI+PC9hcHAtc2VhcmNoLWVtcGxveWVyPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2VtcGxveWVyTmFtZScgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZC4nLCBwYXR0ZXJuOiAnb25seSBsZXR0ZXJzLCBudW1iZXJzLCBzcGFjZXMsIGFuZCAuICwgJiBcXCcgKCApIC0gIyBhcmUgYWxsb3dlZCdcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY291bnRyeVwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwuY291bnRyeScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyPlxyXG4gICAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gaW5wdXRJZD1cImNvdW50cnlcIiBbb3B0aW9uc109XCJjb3VudHJ5T3B0aW9uc1wiIG9wdGlvbkxhYmVsPVwiREVTQ1wiIG9wdGlvblZhbHVlPVwiTkFNRVwiXHJcbiAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIiBbZm9ybUNvbnRyb2xdPVwiY291bnRyeVwiIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgaW5wdXRJZD1cImNvdW50cnlcIj48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nY291bnRyeScgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImxpbmUxXCI+e3snd29yay5zZWFyY2guam91cm5hbC5zdHJlZXRBZGRyZXNzJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImxpbmUxXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwibGluZTFcIiBtYXhsZW5ndGg9XCI0MFwiIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMvPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2xpbmUxJyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLicsIHBhdHRlcm46ICdvbmx5IGxldHRlcnMsIG51bWJlcnMsIHNwYWNlcywgYW5kIC4gLCAmIFxcJyAoICkgLSAjIGFyZSBhbGxvd2VkJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNpdHlcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLmNpdHknIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiY2l0eVwiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cImNpdHlcIiAgbWF4bGVuZ3RoPVwiMzBcIiBhcHBTdHJpcEludmlzaWJsZUNoYXJzLz5cclxuICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdjaXR5JyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLicsXHJcbiAgICAgICAgICAgICAgICAgIGludmFsaWR3c0NpdHlMZW5ndGg6ICdDaXR5IHNob3VsZCBub3QgZXhjZWVkIGEgbGVuZ3RoIG9mIDMwIGNoYXJhY3RlcnMnLFxyXG4gICAgICAgICAgICAgICAgICBwYXR0ZXJuOiAnQ2l0eSBuYW1lIGNhbiBvbmx5IGNvbnRhaW4gbGV0dGVycywgc3BhY2VzLCBhbmQgaHlwaGVucydcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIHN0eWxlPVwicGFkZGluZzogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RhdGVcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLnN0YXRlJ3wgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gaW5wdXRJZD1cInN0YXRlXCIgW29wdGlvbnNdPVwic3RhdGVzQ29tYm9cIiBvcHRpb25MYWJlbD1cIkRFU0NcIiBvcHRpb25WYWx1ZT1cIk5BTUVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCIgW2Zvcm1Db250cm9sXT1cInN0YXRlXCIgaW5wdXRJZCA9IFwic3RhdGVcIj48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nc3RhdGUnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjFcIj48L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBzdHlsZT1cInBhZGRpbmc6IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInppcFwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwuemlwJ3wgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInppcFwiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cInppcFwiIG1pbmxlbmd0aD1cIjVcIiBtYXhsZW5ndGg9XCI5XCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3ppcCcgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRMZW5ndGg6ICdaaXAgY29kZSBzaG91bGQgYmUgb2YgNSBvciA5IGRpZ2l0cy4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaW52YWxpZE51bWJlcjogJ1ppcCBjb2RlIHNob3VsZCBvbmx5IGhhdmUgbnVtYmVycy4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaW52YWxpZFppcENvZGU6ICdwbGVhc2UgZW50ZXIgYSB2YWxpZCB6aXAgY29kZSdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiA+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZW1wbG95ZXJQaG9uZVwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwucGhvbmVObycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8cC1pbnB1dE1hc2sgaW5wdXRJZD1cImVtcGxveWVyUGhvbmVcIiBbZm9ybUNvbnRyb2xdPVwiZW1wbG95ZXJQaG9uZVwiIG1hc2s9XCIoOTk5KSA5OTktOTk5OVwiIHVubWFzaz1cInRydWVcIj48L3AtaW5wdXRNYXNrPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2VtcGxveWVyUGhvbmUnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tcGFkZGluZ1wiIHNpemU9XCIxMlwiIHNpemVTbT1cIjEyXCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCI2XCIgc2l6ZUxnPVwiNlwiIHNpemVYbD1cIjZcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCIhZGlzcGxheVVuaW9uTWVtYmVyUXVlc3Rpb25zICYmICFkaXNwbGF5V29ya2luZ0ZvckFuRW1wbG95ZXJRdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwid29ya1NlYXJjaERhdGVcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLmFwcGxpY2F0aW9uRGF0ZSd8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8cC1jYWxlbmRhciBbc2hvd0ljb25dPVwidHJ1ZVwiIGlucHV0SWQ9XCJ3b3JrU2VhcmNoRGF0ZVwiIGFwcGVuZFRvPVwiYm9keVwiIFtmb3JtQ29udHJvbF09XCJ3b3JrU2VhcmNoRGF0ZVwiIFttaW5EYXRlXT1cInN1bkRhdGVcIiBbbWF4RGF0ZV09XCJtYXhBbGxvd2VkRGF0ZVwiIFtkZWZhdWx0RGF0ZV09XCJzdW5EYXRlXCIgW3NlbGVjdE90aGVyTW9udGhzXT1cInRydWVcIj48L3AtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3dvcmtTZWFyY2hEYXRlJyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZC4nLFxyXG4gICAgICAgICAgICAgICAgZGF0ZU5vdEJldHdlZW46ICdEYXRlIHNob3VsZCBiZSBiZXR3ZWVuICcgKyBzdW5EYXRlU3RyaW5nICsgJyBhbmQgJyArIG1heEFsbG93ZWREYXRlU3RyaW5nICArICcuJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmID1cImRpc3BsYXlFbXBsb3llclF1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvc2l0aW9uQXBwbGllZEZvclwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwuam9iVGl0bGUnfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwb3NpdGlvbkFwcGxpZWRGb3JcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJwb3NpdGlvbkFwcGxpZWRGb3JcIiBtYXhsZW5ndGg9XCI1MFwiIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMvPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3Bvc2l0aW9uQXBwbGllZEZvcicgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZC4nLFxyXG4gICAgICAgICAgICAgICAgICBwYXR0ZXJuOiAnSm9iIFRpdGxlIGNhbiBvbmx5IGNvbnRhaW4gbGV0dGVycywgbnVtYmVycywgc3BhY2VzLCBhbmQgaHlwaGVucydcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY29udGFjdE1ldGhvZFwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwuY29udGFjdE1ldGhvZCd8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbb3B0aW9uc109XCJ3b3JrU2VhcmNoTWV0aG9kQ29udGFjdFwiIG9wdGlvbkxhYmVsPVwiREVTQ1wiIG9wdGlvblZhbHVlPVwiTkFNRVwiIFtmb3JtQ29udHJvbF09XCJjb250YWN0TWV0aG9kXCI+PC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdjb250YWN0TWV0aG9kJyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cImNvbnRhY3RNZXRob2QudmFsdWUgPT0gJ1RFTEUnXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY29udGFjdFBob25lXCI+e3snd29yay5zZWFyY2guam91cm5hbC5waG9uZU5vJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxwLWlucHV0TWFzayBpbnB1dElkPVwiY29udGFjdFBob25lXCIgW2Zvcm1Db250cm9sXT1cImNvbnRhY3RQaG9uZVwiIG1hc2s9XCIoOTk5KSA5OTktOTk5OVwiIHVubWFzaz1cInRydWVcIj48L3AtaW5wdXRNYXNrPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2NvbnRhY3RQaG9uZScgW2Zvcm1dPVwid3NyRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZC4nXHJcbiAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwiY29udGFjdE1ldGhvZC52YWx1ZSA9PSAnRU1BTCdcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJlbXBsb3llckVtYWlsXCI+e3snd29yay5zZWFyY2guam91cm5hbC5lbWFpbCcgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJlbXBsb3llckVtYWlsXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiZW1wbG95ZXJFbWFpbFwiIHBsYWNlaG9sZGVyPVwiZW1haWxpZEBleGFtcGxlLmNvbVwiIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMvPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2VtcGxveWVyRW1haWwnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgICAgZW1wbG95ZXJFbWFpbDogJ0ludmFsaWQgZW1haWwgYWRkcmVzcy4nXHJcbiAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiICpuZ0lmPVwiY29udGFjdE1ldGhvZC52YWx1ZSA9PSAnT05MSSdcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJlbXBsb3llcldlYnNpdGVcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLndlYnNpdGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiZW1wbG95ZXJXZWJzaXRlXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiZW1wbG95ZXJXZWJzaXRlXCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nZW1wbG95ZXJXZWJzaXRlJyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cImNvbnRhY3RNZXRob2QudmFsdWUgIT0nT05MSSdcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJlbXBDb250YWN0UGVyc29uTmFtZVwiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwuY29udGFjdE5hbWVUaXRsZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJlbXBDb250YWN0UGVyc29uTmFtZVwiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cImVtcENvbnRhY3RQZXJzb25OYW1lXCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nZW1wQ29udGFjdFBlcnNvbk5hbWUnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzZWFyY2hSZXN1bHRcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLnJlc3VsdCcgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWRyb3Bkb3duIFtvcHRpb25zXT1cIndvcmtTZWFyY2hSZXN1bHRDb21ib1wiIG9wdGlvbkxhYmVsPVwiREVTQ1wiIG9wdGlvblZhbHVlPVwiTkFNRVwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hSZXN1bHRcIiBhcHBlbmRUbz1cImJvZHlcIiBpbnB1dElkPVwic2VhcmNoUmVzdWx0XCI+PC9hcHAtZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nc2VhcmNoUmVzdWx0JyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJzZWFyY2hSZXN1bHQudmFsdWUgPT0gJ09USFInXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwib3RoUmVzdWx0XCI+e3snd29yay5zZWFyY2guam91cm5hbC5yZXN1bHQub3RoJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIm90aFJlc3VsdFwiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cIm90aFJlc3VsdFwiIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMvPlxyXG4gICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdvdGhSZXN1bHQnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiAqbmdJZj1cInNlYXJjaFJlc3VsdC52YWx1ZSA9PSAnSElSRSdcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJoYXNTdGFydERhdGVcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLnJlc3VsdC5oYXNTdGFydERhdGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIFtvcHRpb25zXT1cInllc05vT3B0aW9uc1wiIG9wdGlvbkxhYmVsPVwiREVTQ1wiIG9wdGlvblZhbHVlPVwiTkFNRVwiIFtmb3JtQ29udHJvbF09XCJoYXNTdGFydERhdGVcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdoYXNTdGFydERhdGUnIFtmb3JtXT1cIndzckZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1JlcXVpcmVkLidcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJoYXNTdGFydERhdGUudmFsdWUgPT0gJ1knICYmIHNlYXJjaFJlc3VsdC52YWx1ZSA9PSAnSElSRSdcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3b3JrU3RhcnREYXRlXCI+e3snd29yay5zZWFyY2guam91cm5hbC5yZXN1bHQuc3RhcnREYXRlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyIFtzaG93SWNvbl09XCJ0cnVlXCIgaW5wdXRJZD1cIndvcmtTdGFydERhdGVcIiBhcHBlbmRUbz1cImJvZHlcIiBbZm9ybUNvbnRyb2xdPVwid29ya1N0YXJ0RGF0ZVwiIFttaW5EYXRlXT1cInN1bkRhdGVcIiBbZGVmYXVsdERhdGVdPVwic3VuRGF0ZVwiIFtzZWxlY3RPdGhlck1vbnRoc109XCJ0cnVlXCI+PC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd3b3JrU3RhcnREYXRlJyBbZm9ybV09XCJ3c3JGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZC4nXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICA8L2lvbi1yb3c+XHJcbiAgICAgIDxpb24tcm93PlxyXG4gICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIj5cclxuICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiZGlzcGxheVVuaW9uTWVtYmVyUXVlc3Rpb25zXCI+XHJcblx0XHRcdCAgPGRpdiBjbGFzcz1cImZpZWxkXCIgKm5nSWY9XCJpc0luQ29udGFjdFdpdGhVbmlvbi52YWx1ZSA9PT0gJ04nXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J3dvcmsuc2VhcmNoLmpvdXJuYWwubm9Db250YWN0V2l0aFVuaW9uJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICA8L2lvbi1yb3c+XHJcbiAgICAgIDxpb24tcm93PlxyXG4gICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIj5cclxuICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJjbG9zZSgpXCIgdHlwZT1cInJlc2V0XCI+e3snYnV0dG9uLmNhbmNlbCcgfCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiYWRkKClcIiB0eXBlPVwic3VibWl0XCI+e3snYnV0dG9uLmFkZCcgfCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDwvaW9uLXJvdz5cclxuICAgIDwvaW9uLWdyaWQ+XHJcbiAgPC9mb3JtPlxyXG48L3AtZGlhbG9nPiJdfQ==
|