@reusa/ngx-reusa-app-lib 0.0.1321 → 0.0.1323

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.
@@ -204,7 +204,7 @@ function ProfileComponent_div_3_div_1_Template(rf, ctx) { if (rf & 1) {
204
204
  i0.ɵɵpipe(14, "translate");
205
205
  i0.ɵɵelementEnd();
206
206
  i0.ɵɵelementStart(15, "ion-button", 30);
207
- i0.ɵɵlistener("click", function ProfileComponent_div_3_div_1_Template_ion_button_click_15_listener() { i0.ɵɵrestoreView(_r49); const ctx_r48 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r48.redirectLink(".claimantsummaryverification")); });
207
+ i0.ɵɵlistener("click", function ProfileComponent_div_3_div_1_Template_ion_button_click_15_listener() { i0.ɵɵrestoreView(_r49); const ctx_r48 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r48.getVerificationReport()); });
208
208
  i0.ɵɵelement(16, "ion-icon", 31);
209
209
  i0.ɵɵtext(17);
210
210
  i0.ɵɵpipe(18, "translate");
@@ -819,7 +819,7 @@ export class ProfileComponent extends BasePage {
819
819
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fb = _t.first);
820
820
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.otpFormDirective = _t.first);
821
821
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.securityQuestionFormDirective = _t.first);
822
- } }, inputs: { form: "form", question: "question" }, outputs: { onCancel: "onCancel", accepted: "accepted" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 13, consts: [["visible", "true", "modal", "true", "appendTo", "body", "position", "top", 3, "breakpoints"], ["pTemplate", "header"], ["style", "margin-left: -8px;", 4, "ngIf"], ["class", "proof-of-unemployment", 4, "ngIf"], ["style", "margin-top: -90px;", 4, "ngIf"], [4, "ngIf"], ["style", "color: var(--ion-color-green)", 4, "ngIf"], ["pTemplate", "footer"], [1, "ion-text-left", "heading", 2, "padding-left", "24px"], [2, "font-size", "16px"], ["styleClass", "ion-padding-start", "optionLabel", "text", "optionValue", "value", 3, "options", "ngModel", "ngModelChange", "onOptionClick", 4, "ngIf"], ["styleClass", "ion-padding-start", "optionLabel", "text", "optionValue", "value", 3, "options", "ngModel", "ngModelChange", "onOptionClick"], [2, "margin-left", "-8px"], [3, "flowKey", "showOnlyQuestion", "hideHeader", "hideFooter", "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg", "onError", "onComplete", 4, "ngIf"], [3, "flowKey", "showOnlyQuestion", "hideHeader", "hideFooter", "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg", "onError", "onComplete"], ["fb", ""], ["class", "error-banner", 4, "ngIf"], [1, "error-banner"], ["name", "alert-circle-outline", 2, "color", "var(--ion-color-danger)", "font-size", "18px", "margin-right", "8px"], [1, "proof-of-unemployment"], ["style", "padding: 0px 1rem", 4, "ngIf", "ngIfElse"], ["nonPhraseTwoView", ""], [2, "padding", "0px 1rem"], [2, "margin-top", "15px"], ["class", "flex align-items-center flex-column", "layout", "row", "style", "margin:3px;", 4, "ngIf"], ["layout", "row", 1, "flex", "align-items-center", "flex-column", 2, "margin", "3px"], [1, "p-4", 2, "height", "100%"], [2, "box-shadow", "0 0 0 0"], [1, "pi", "pi-check-circle", 2, "color", "var(--ion-color-primary)", "font-size", "30px"], [1, "pl-0", "pr-0", "flex", "align-items-center", "flex-column", 2, "height", "100%", "justify-content", "space-between"], ["shape", "round", 1, "Claimant-summary-ver-btn", 2, "padding-bottom", "30px", 3, "click"], ["name", "download-outline", 1, "pr-1", "pb-1"], [1, "pi", "pi-file", 2, "color", "var(--ion-color-primary)", "font-size", "30px"], ["shape", "round", 1, "Claimant-report-btn", 2, "padding-bottom", "30px", 3, "click"], ["layout", "row", "style", "margin:3px;", 4, "ngIf"], ["layout", "row", 2, "margin", "3px"], ["shape", "round", "fill", "outline", 1, "Claimant-summary-ver-btn", 3, "click"], ["shape", "round", "fill", "outline", 1, "Claimant-report-btn", 3, "click"], ["name", "download-outline"], [2, "margin-top", "-90px"], [3, "formGroup"], ["otpFormDirective", "ngForm"], [1, "p-fluid", "p-formgrid"], ["for", "otp", 3, "innerHTML"], ["formControlName", "otp", "mask", "999999", "size", "6", "maxlength", "6", "minlength", "6", "title", "Enter Authcode", 3, "autoFocus"], [3, "field", "form", "errDef"], ["shape", "round", "type", "submit", 3, "click"], ["securityQuestionFormDirective", "ngForm"], ["for", "securityQuestionAnswer", 3, "innerHTML"], ["pInputText", "", "formControlName", "securityQuestionAnswer", "size", "30", "maxlength", "30", "title", "Security Answer"], [2, "color", "var(--ion-color-green)"], [1, "ion-text-center", "ion-padding-top"], ["name", "checkmark-circle", 2, "font-size", "80px", "color", "var(--ion-color-green)"], ["name", "close-circle-outline", 2, "font-size", "80px", "color", "var(--ion-color-danger)"], ["size", "12", "sizeXl", "4", "sizeLg", "4", "sizeMd", "5", 1, "ion-text-left"], ["shape", "round", "fill", "outline", "type", "button", 3, "click"], ["size", "12", "sizeXl", "8", "sizeLg", "8", "sizeMd", "7", 1, "ion-text-right"], ["shape", "round", "fill", "outline", "type", "reset", 3, "click"], ["shape", "round", "type", "submit", 3, "disabled", "click", 4, "ngIf"], ["shape", "round", "type", "submit", 3, "disabled", "click"]], template: function ProfileComponent_Template(rf, ctx) { if (rf & 1) {
822
+ } }, inputs: { form: "form", question: "question" }, outputs: { onCancel: "onCancel", accepted: "accepted" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 13, consts: [["visible", "true", "modal", "true", "appendTo", "body", "position", "top", 3, "breakpoints"], ["pTemplate", "header"], ["style", "margin-left: -8px;", 4, "ngIf"], ["class", "proof-of-unemployment", 4, "ngIf"], ["style", "margin-top: -90px;", 4, "ngIf"], [4, "ngIf"], ["style", "color: var(--ion-color-green)", 4, "ngIf"], ["pTemplate", "footer"], [1, "ion-text-left", "heading", 2, "padding-left", "24px"], [2, "font-size", "16px"], ["styleClass", "ion-padding-start", "optionLabel", "text", "optionValue", "value", 3, "options", "ngModel", "ngModelChange", "onOptionClick", 4, "ngIf"], ["styleClass", "ion-padding-start", "optionLabel", "text", "optionValue", "value", 3, "options", "ngModel", "ngModelChange", "onOptionClick"], [2, "margin-left", "-8px"], [3, "flowKey", "showOnlyQuestion", "hideHeader", "hideFooter", "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg", "onError", "onComplete", 4, "ngIf"], [3, "flowKey", "showOnlyQuestion", "hideHeader", "hideFooter", "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg", "onError", "onComplete"], ["fb", ""], ["class", "error-banner", 4, "ngIf"], [1, "error-banner"], ["name", "alert-circle-outline", 2, "color", "var(--ion-color-danger)", "font-size", "18px", "margin-right", "8px"], [1, "proof-of-unemployment"], ["style", "padding: 0px 1rem", 4, "ngIf", "ngIfElse"], ["nonPhraseTwoView", ""], [2, "padding", "0px 1rem"], [2, "margin-top", "15px"], ["class", "flex align-items-center flex-column", "layout", "row", "style", "margin:3px;", 4, "ngIf"], ["layout", "row", 1, "flex", "align-items-center", "flex-column", 2, "margin", "3px"], [1, "p-4", 2, "height", "100%", "width", "100%"], [2, "box-shadow", "0 0 0 0"], [1, "pi", "pi-check-circle", 2, "color", "var(--ion-color-primary)", "font-size", "30px"], [1, "pl-0", "pr-0", "flex", "align-items-center", "flex-column", 2, "height", "100%", "justify-content", "space-between"], ["shape", "round", 1, "Claimant-summary-ver-btn", 2, "padding-bottom", "30px", 3, "click"], ["name", "download-outline", 1, "pr-1", "pb-1"], [1, "pi", "pi-file", 2, "color", "var(--ion-color-primary)", "font-size", "30px"], ["shape", "round", 1, "Claimant-report-btn", 2, "padding-bottom", "30px", 3, "click"], ["layout", "row", "style", "margin:3px;", 4, "ngIf"], ["layout", "row", 2, "margin", "3px"], ["shape", "round", "fill", "outline", 1, "Claimant-summary-ver-btn", 3, "click"], ["shape", "round", "fill", "outline", 1, "Claimant-report-btn", 3, "click"], ["name", "download-outline"], [2, "margin-top", "-90px"], [3, "formGroup"], ["otpFormDirective", "ngForm"], [1, "p-fluid", "p-formgrid"], ["for", "otp", 3, "innerHTML"], ["formControlName", "otp", "mask", "999999", "size", "6", "maxlength", "6", "minlength", "6", "title", "Enter Authcode", 3, "autoFocus"], [3, "field", "form", "errDef"], ["shape", "round", "type", "submit", 3, "click"], ["securityQuestionFormDirective", "ngForm"], ["for", "securityQuestionAnswer", 3, "innerHTML"], ["pInputText", "", "formControlName", "securityQuestionAnswer", "size", "30", "maxlength", "30", "title", "Security Answer"], [2, "color", "var(--ion-color-green)"], [1, "ion-text-center", "ion-padding-top"], ["name", "checkmark-circle", 2, "font-size", "80px", "color", "var(--ion-color-green)"], ["name", "close-circle-outline", 2, "font-size", "80px", "color", "var(--ion-color-danger)"], ["size", "12", "sizeXl", "4", "sizeLg", "4", "sizeMd", "5", 1, "ion-text-left"], ["shape", "round", "fill", "outline", "type", "button", 3, "click"], ["size", "12", "sizeXl", "8", "sizeLg", "8", "sizeMd", "7", 1, "ion-text-right"], ["shape", "round", "fill", "outline", "type", "reset", 3, "click"], ["shape", "round", "type", "submit", 3, "disabled", "click", 4, "ngIf"], ["shape", "round", "type", "submit", 3, "disabled", "click"]], template: function ProfileComponent_Template(rf, ctx) { if (rf & 1) {
823
823
  i0.ɵɵelementStart(0, "p-dialog", 0);
824
824
  i0.ɵɵtemplate(1, ProfileComponent_ng_template_1_Template, 11, 6, "ng-template", 1)(2, ProfileComponent_div_2_Template, 5, 4, "div", 2)(3, ProfileComponent_div_3_Template, 4, 2, "div", 3)(4, ProfileComponent_div_4_Template, 16, 15, "div", 4)(5, ProfileComponent_div_5_Template, 16, 14, "div", 4)(6, ProfileComponent_mat_error_6_Template, 2, 1, "mat-error", 5)(7, ProfileComponent_ion_label_7_Template, 3, 1, "ion-label", 6)(8, ProfileComponent_div_8_Template, 6, 3, "div", 5)(9, ProfileComponent_div_9_Template, 5, 2, "div", 5)(10, ProfileComponent_ng_template_10_Template, 11, 7, "ng-template", 7);
825
825
  i0.ɵɵelementEnd();
@@ -846,7 +846,7 @@ export class ProfileComponent extends BasePage {
846
846
  }
847
847
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProfileComponent, [{
848
848
  type: Component,
849
- args: [{ selector: 'app-profile', template: "<p-dialog visible=\"true\" modal=\"true\" appendTo=\"body\"\r\n [breakpoints]=\"{'1024px': '75vw', '768px': '85vw', '640px': '100vw'}\" [style]=\"{width: '60vw'}\" position=\"top\">\r\n <ng-template pTemplate=\"header\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-text-left heading\" style=\"padding-left: 24px;\">\r\n {{\"Your Account\" | translate}} <span style=\"font-size: 16px;\">(CLAIMANT ID\r\n {{ls.getUser().claimantId}})</span>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n <p-selectButton *ngIf=\"!isME()\" styleClass=\"ion-padding-start\" [options]=\"profileOpts\" optionLabel=\"text\"\r\n optionValue=\"value\" [(ngModel)]=\"selected\" (onOptionClick)=\"onValueChange($event)\">\r\n </p-selectButton>\r\n <p-selectButton *ngIf=\"isME()\" styleClass=\"ion-padding-start\" [options]=\"profileOptsIVR\" optionLabel=\"text\"\r\n optionValue=\"value\" [(ngModel)]=\"selected\" (onOptionClick)=\"onValueChange($event)\">\r\n </p-selectButton>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n <div *ngIf=\"!(showSuccess || showError)\" style=\"margin-left: -8px;\">\r\n <app-form-builder #fb *ngIf=\"selected == 'personal-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n <div *ngIf=\"selected == 'contact-details'\">\r\n <div *ngIf=\"showInlineError && selected === 'contact-details'\" class=\"error-banner\">\r\n <ion-icon name=\"alert-circle-outline\" style=\"color: var(--ion-color-danger); font-size: 18px; margin-right: 8px;\"></ion-icon>\r\n <span>{{ errorText }}</span>\r\n </div>\r\n <app-form-builder #fb *ngIf=\"selected == 'contact-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n </div>\r\n <app-form-builder #fb *ngIf=\"selected == 'payment-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n <app-form-builder #fb *ngIf=\"selected == 'update-ivr'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n </div>\r\n <div class=\"proof-of-unemployment\" *ngIf=\"selected == 'proof-of-unemployment'\">\r\n <div *ngIf=\"phaseTwoProofOfUIView==='true';else nonPhraseTwoView\" style=\"padding: 0px 1rem\">\r\n <!-- <h2 style=\"font-family: 'Open Sans, Light';\">\r\n {{ \"profile.proof.of.unemployment.label.proof.of.unemployment.pay\"| translate}}\r\n </h2>\r\n <div *ngIf=\"!listOfActiveClaim || listOfActiveClaim.length === 0; else activeClaimTable\">\r\n <h3 style=\"font-family: 'Open Sans, Light';\">\r\n {{\"profile.proof.of.unemployment.label.no.active.claim\"| translate}}\r\n </h3>\r\n </div>\r\n <ng-template #activeClaimTable>\r\n <p-table [value]=\"listOfActiveClaim\" dataKey=\"claimId\" [rowExpandMode]=\"'single'\" styleClass=\"seperate-row\" class=\"seperate-row\"\r\n [tableStyle]=\"{'border-collapse': 'separate','border-spacing': '0 8px'}\"\r\n >\r\n <ng-template pTemplate=\"body\" let-data let-expanded=\"expanded\">\r\n <tr>\r\n <td>\r\n <a href=\"#\" [pRowToggler]=\"data\">\r\n <i [ngClass]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\" style=\"font-size: 1.5rem;\"></i>\r\n </a> \r\n <td >\r\n {{data.effectiveDate}} - {{data.byeDate}}\r\n </td>\r\n <td>\r\n {{data.entitlementType}}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"rowexpansion\" let-data>\r\n <tr>\r\n <td colspan=\"7\" style=\" border-left: 1px solid #e4e4e4;border-right: 1px solid #e4e4e4;\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col style=\"display: flex;justify-content: center;\">\r\n <img [src]=\"docFileLink\" height='500px' width='420px'/>\r\n </ion-col>\r\n <ion-col style=\"display: flex;flex-direction: column;justify-content: space-between;\">\r\n <ion-row >\r\n <span [innerHTML]=\"data.description\" style=\"font-size: 19px;\"></span>\r\n </ion-row>\r\n <ion-row>\r\n \r\n <ion-button fill=\"outline\" shape=\"round\" style=\"padding-inline-end: 2rem;\" (click)=\"getVerificationReport()\">\r\n {{ \"profile.proof.of.unemployment.button.download.report\"| translate}}\r\n </ion-button>\r\n </ion-row>\r\n </ion-col>\r\n </ion-row>\r\n \r\n </ion-grid>\r\n \r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-template> -->\r\n <ion-grid style=\"margin-top: 15px;\">\r\n <ion-row>\r\n <ion-col *ngIf=\"!isME()\" class=\"flex align-items-center flex-column\" layout=\"row\" style = \"margin:3px;\">\r\n <ion-card class=\"p-4\" style=\"height: 100%;\">\r\n <ion-header style=\"box-shadow: 0 0 0 0\">\r\n <ion-card-title><i class=\"pi pi-file\" style=\"color: var(--ion-color-primary);font-size: 30px;\"></i>{{ \"profile.proof.of.unemployment.phase.two.label.download.unemployment.claim.report\"| translate}}</ion-card-title>\r\n </ion-header>\r\n <ion-card-content class=\"pl-0 pr-0 flex align-items-center flex-column\" style=\"height: 100%; justify-content: space-between;\">\r\n <label>\r\n {{'profile.proof.of.unemployment.phase.two.overlay.unemployment.claim.report'| translate}}\r\n </label>\r\n <ion-button shape=\"round\" (click)=\"getExternalClaimantReport()\" style=\"padding-bottom:30px\"\r\n class=\"Claimant-report-btn\">\r\n <ion-icon name=\"download-outline\" class=\"pr-1 pb-1\"></ion-icon>{{ \"profile.proof.of.unemployment.phase.two.button.download.report\"| translate}}\r\n </ion-button>\r\n </ion-card-content>\r\n \r\n </ion-card>\r\n <div *ngIf=\"downloadStatus=='started'\">{{ \"profile.proof.of.unemployment.status.download.start\"| translate}}</div>\r\n <mat-error *ngIf=\"downloadStatus=='error'\">{{ \"profile.proof.of.unemployment.status.download.error\"| translate}}</mat-error>\r\n </ion-col>\r\n <ion-col layout=\"row\" class=\"flex align-items-center flex-column\" style = \"margin:3px;\">\r\n <ion-card class=\"p-4\" style=\"height: 100%;\">\r\n <ion-header style=\"box-shadow: 0 0 0 0\">\r\n <ion-card-title><i class=\"pi pi-check-circle\" style=\"color: var(--ion-color-primary);font-size: 30px;\"></i> {{ \"profile.proof.of.unemployment.phase.two.label.summary.unemployment.claim\"| translate}}</ion-card-title>\r\n </ion-header>\r\n <ion-card-content class=\"pl-0 pr-0 flex align-items-center flex-column\" style=\"height: 100%; justify-content: space-between;\">\r\n <label>\r\n {{'profile.proof.of.unemployment.phase.two.overlay.summary.unemployment.claim'| translate}}\r\n </label>\r\n <ion-button shape=\"round\" (click)=\"redirectLink('.claimantsummaryverification')\" style=\"padding-bottom:30px\"\r\n class=\"Claimant-summary-ver-btn\">\r\n <ion-icon name=\"download-outline\" class=\"pr-1 pb-1\"></ion-icon> {{ \"profile.proof.of.unemployment.phase.two.button.download.report\"| translate}}\r\n </ion-button>\r\n </ion-card-content>\r\n \r\n </ion-card>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n\r\n </div>\r\n <ng-template #nonPhraseTwoView>\r\n <ion-grid style=\"margin-top: 15px;\">\r\n <ion-row>\r\n <ion-col *ngIf=\"!isME()\" layout=\"row\" style = \"margin:3px;\">\r\n <label>\r\n {{ \"profile.proof.of.unemployment.label.download.unemployment.claim.report\"| translate}}\r\n </label>\r\n <br>\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"getExternalClaimantReport()\"\r\n class=\"Claimant-report-btn\">\r\n <ion-icon name=\"download-outline\"></ion-icon>{{ \"profile.proof.of.unemployment.button.external.claimant.report\"| translate}}\r\n </ion-button>\r\n <br>\r\n <div *ngIf=\"downloadStatus=='started'\">{{ \"profile.proof.of.unemployment.status.download.start\"| translate}}</div>\r\n <mat-error *ngIf=\"downloadStatus=='error'\">{{ \"profile.proof.of.unemployment.status.download.error\"| translate}}</mat-error>\r\n </ion-col>\r\n <ion-col layout=\"row\" style = \"margin:3px;\">\r\n <label>\r\n {{ \"profile.proof.of.unemployment.label.summary.unemployment.claim\"| translate}}\r\n </label>\r\n <br>\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"redirectLink('.claimantsummaryverification')\"\r\n class=\"Claimant-summary-ver-btn\">{{ \"profile.proof.of.unemployment.button.unemployment.verification\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"isMS() && selected == 'contact-details' && isOtpSent == true\" style=\"margin-top: -90px;\">\r\n <form [formGroup]=\"otpForm\" #otpFormDirective=\"ngForm\">\r\n <ion-row>\r\n <div class=\"p-fluid p-formgrid\">\r\n <ion-row>\r\n <label for=\"otp\" [innerHTML]=\"'profile.contact.details.label.otp' | translate:{ type: type }\"></label>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n <p-inputMask formControlName=\"otp\" mask=\"999999\" size=\"6\" maxlength=\"6\" minlength=\"6\"\r\n [autoFocus]='true' title='Enter Authcode'></p-inputMask>\r\n <app-error [field]='otp' [form]=\"otpFormDirective\" [errDef]=\"{ \r\n required: 'Authcode is required.',\r\n minlength: 'Authcode should have 6 numbers.'\r\n }\"></app-error>\r\n </ion-col>\r\n <ion-col>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"verify()\">{{ \"profile.contact.details.button.verify\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n </ion-row>\r\n </form>\r\n </div>\r\n <div *ngIf=\"isME() && selected == 'contact-details' && displaySecurityQuestion == true\" style=\"margin-top: -90px;\">\r\n <form [formGroup]=\"securityQuestionForm\" #securityQuestionFormDirective=\"ngForm\">\r\n <ion-row>\r\n <div class=\"p-fluid p-formgrid\">\r\n <ion-row>\r\n <label for=\"securityQuestionAnswer\" [innerHTML]=\"'profile.contact.details.label.securityQuestion' | translate:{ securityQuestionToAsk: securityQuestionToAsk }\"></label>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n \t<input pInputText formControlName=\"securityQuestionAnswer\" size=\"30\" maxlength=\"30\" title=\"Security Answer\" />\r\n <app-error [field]='securityQuestionAnswer' [form]=\"securityQuestionFormDirective\" [errDef]=\"{ \r\n required: 'Security Answer is required.'\r\n }\"></app-error>\r\n </ion-col>\r\n <ion-col>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"verifySecurityQuestion()\">{{ \"profile.contact.details.button.verify\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n </ion-row>\r\n </form>\r\n </div>\r\n <mat-error *ngIf=\"errorDtls\">{{errorDtls}}</mat-error>\r\n <ion-label *ngIf=\"successDtls\" style=\"color: var(--ion-color-green)\">{{successDtls}}<br /></ion-label>\r\n\r\n <div *ngIf=\"showSuccess\">\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-icon name=\"checkmark-circle\" style=\"font-size: 80px; color: var(--ion-color-green);\"></ion-icon>\r\n <h1>{{ \"profile.banner.success\"| translate}}</h1>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showError\">\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-icon name=\"close-circle-outline\" style=\"font-size: 80px; color: var(--ion-color-danger);\"></ion-icon>\r\n <section *ngIf=\"isMS()\">\r\n <h1>{{ errorText ? errorText : ('profile.banner.request.process.failure' | translate) }}</h1>\r\n </section>\r\n <section *ngIf=\"!isMS()\">\r\n <h1>{{errorText ? errorText : ('profile.banner.request.process.failure' | translate) }}</h1>\r\n </section>\r\n </div>\r\n </div>\r\n <ng-template pTemplate=\"footer\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-text-left\" size=\"12\" sizeXl=\"4\" sizeLg=\"4\" sizeMd=\"5\">\r\n <ion-button shape=\"round\" fill=\"outline\" type=\"button\" (click)=\"logout()\">{{ \"profile.button.logout\"| translate}}</ion-button>\r\n </ion-col>\r\n <ion-col class=\"ion-text-right\" size=\"12\" sizeXl=\"8\" sizeLg=\"8\" sizeMd=\"7\">\r\n <ion-button shape=\"round\" fill=\"outline\" type=\"reset\" (click)=\"cancel()\">{{ \"profile.button.close\"| translate}}</ion-button>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"save()\" *ngIf=\"!(showSuccess || showError) && selected!='proof-of-unemployment'\"\r\n [disabled]=\"isOtpSent== true || displaySecurityQuestion== true\">{{ \"profile.button.save\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n</p-dialog>", styles: ["ion-col{margin-left:0!important}.Claimant-report-btn{margin-inline-end:3%}.proof-unemployment-btn-label{margin-bottom:3px}.error-banner{display:flex;align-items:center;background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;padding:8px 12px;margin-bottom:10px;font-size:14px}.seperate-row td:not(:first-child):not(:last-child){border-left:none;border-right:none}.seperate-row td:first-child{border-right:none}.seperate-row td:last-child{border-left:none;padding:1rem .55rem;padding-right:20px}.seperate-row td{border:1px solid #e4e4e4;font-family:\"Open Sans, Light\";font-size:26px;padding:1rem .55rem}\n"] }]
849
+ args: [{ selector: 'app-profile', template: "<p-dialog visible=\"true\" modal=\"true\" appendTo=\"body\"\r\n [breakpoints]=\"{'1024px': '75vw', '768px': '85vw', '640px': '100vw'}\" [style]=\"{width: '60vw'}\" position=\"top\">\r\n <ng-template pTemplate=\"header\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-text-left heading\" style=\"padding-left: 24px;\">\r\n {{\"Your Account\" | translate}} <span style=\"font-size: 16px;\">(CLAIMANT ID\r\n {{ls.getUser().claimantId}})</span>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n <p-selectButton *ngIf=\"!isME()\" styleClass=\"ion-padding-start\" [options]=\"profileOpts\" optionLabel=\"text\"\r\n optionValue=\"value\" [(ngModel)]=\"selected\" (onOptionClick)=\"onValueChange($event)\">\r\n </p-selectButton>\r\n <p-selectButton *ngIf=\"isME()\" styleClass=\"ion-padding-start\" [options]=\"profileOptsIVR\" optionLabel=\"text\"\r\n optionValue=\"value\" [(ngModel)]=\"selected\" (onOptionClick)=\"onValueChange($event)\">\r\n </p-selectButton>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n <div *ngIf=\"!(showSuccess || showError)\" style=\"margin-left: -8px;\">\r\n <app-form-builder #fb *ngIf=\"selected == 'personal-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n <div *ngIf=\"selected == 'contact-details'\">\r\n <div *ngIf=\"showInlineError && selected === 'contact-details'\" class=\"error-banner\">\r\n <ion-icon name=\"alert-circle-outline\" style=\"color: var(--ion-color-danger); font-size: 18px; margin-right: 8px;\"></ion-icon>\r\n <span>{{ errorText }}</span>\r\n </div>\r\n <app-form-builder #fb *ngIf=\"selected == 'contact-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n </div>\r\n <app-form-builder #fb *ngIf=\"selected == 'payment-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n <app-form-builder #fb *ngIf=\"selected == 'update-ivr'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n </div>\r\n <div class=\"proof-of-unemployment\" *ngIf=\"selected == 'proof-of-unemployment'\">\r\n <div *ngIf=\"phaseTwoProofOfUIView==='true';else nonPhraseTwoView\" style=\"padding: 0px 1rem\">\r\n <!-- <h2 style=\"font-family: 'Open Sans, Light';\">\r\n {{ \"profile.proof.of.unemployment.label.proof.of.unemployment.pay\"| translate}}\r\n </h2>\r\n <div *ngIf=\"!listOfActiveClaim || listOfActiveClaim.length === 0; else activeClaimTable\">\r\n <h3 style=\"font-family: 'Open Sans, Light';\">\r\n {{\"profile.proof.of.unemployment.label.no.active.claim\"| translate}}\r\n </h3>\r\n </div>\r\n <ng-template #activeClaimTable>\r\n <p-table [value]=\"listOfActiveClaim\" dataKey=\"claimId\" [rowExpandMode]=\"'single'\" styleClass=\"seperate-row\" class=\"seperate-row\"\r\n [tableStyle]=\"{'border-collapse': 'separate','border-spacing': '0 8px'}\"\r\n >\r\n <ng-template pTemplate=\"body\" let-data let-expanded=\"expanded\">\r\n <tr>\r\n <td>\r\n <a href=\"#\" [pRowToggler]=\"data\">\r\n <i [ngClass]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\" style=\"font-size: 1.5rem;\"></i>\r\n </a> \r\n <td >\r\n {{data.effectiveDate}} - {{data.byeDate}}\r\n </td>\r\n <td>\r\n {{data.entitlementType}}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"rowexpansion\" let-data>\r\n <tr>\r\n <td colspan=\"7\" style=\" border-left: 1px solid #e4e4e4;border-right: 1px solid #e4e4e4;\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col style=\"display: flex;justify-content: center;\">\r\n <img [src]=\"docFileLink\" height='500px' width='420px'/>\r\n </ion-col>\r\n <ion-col style=\"display: flex;flex-direction: column;justify-content: space-between;\">\r\n <ion-row >\r\n <span [innerHTML]=\"data.description\" style=\"font-size: 19px;\"></span>\r\n </ion-row>\r\n <ion-row>\r\n \r\n <ion-button fill=\"outline\" shape=\"round\" style=\"padding-inline-end: 2rem;\" (click)=\"getVerificationReport()\">\r\n {{ \"profile.proof.of.unemployment.button.download.report\"| translate}}\r\n </ion-button>\r\n </ion-row>\r\n </ion-col>\r\n </ion-row>\r\n \r\n </ion-grid>\r\n \r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-template> -->\r\n <ion-grid style=\"margin-top: 15px;\">\r\n <ion-row>\r\n <ion-col *ngIf=\"!isME()\" class=\"flex align-items-center flex-column\" layout=\"row\" style = \"margin:3px;\">\r\n <ion-card class=\"p-4\" style=\"height: 100%; width:100%;\">\r\n <ion-header style=\"box-shadow: 0 0 0 0\">\r\n <ion-card-title><i class=\"pi pi-file\" style=\"color: var(--ion-color-primary);font-size: 30px;\"></i>{{ \"profile.proof.of.unemployment.phase.two.label.download.unemployment.claim.report\"| translate}}</ion-card-title>\r\n </ion-header>\r\n <ion-card-content class=\"pl-0 pr-0 flex align-items-center flex-column\" style=\"height: 100%; justify-content: space-between;\">\r\n <label>\r\n {{'profile.proof.of.unemployment.phase.two.overlay.unemployment.claim.report'| translate}}\r\n </label>\r\n <ion-button shape=\"round\" (click)=\"getExternalClaimantReport()\" style=\"padding-bottom:30px\"\r\n class=\"Claimant-report-btn\">\r\n <ion-icon name=\"download-outline\" class=\"pr-1 pb-1\"></ion-icon>{{ \"profile.proof.of.unemployment.phase.two.button.download.report\"| translate}}\r\n </ion-button>\r\n </ion-card-content>\r\n \r\n </ion-card>\r\n <div *ngIf=\"downloadStatus=='started'\">{{ \"profile.proof.of.unemployment.status.download.start\"| translate}}</div>\r\n <mat-error *ngIf=\"downloadStatus=='error'\">{{ \"profile.proof.of.unemployment.status.download.error\"| translate}}</mat-error>\r\n </ion-col>\r\n <ion-col layout=\"row\" class=\"flex align-items-center flex-column\" style = \"margin:3px;\">\r\n <ion-card class=\"p-4\" style=\"height: 100%; width:100%;\">\r\n <ion-header style=\"box-shadow: 0 0 0 0\">\r\n <ion-card-title><i class=\"pi pi-check-circle\" style=\"color: var(--ion-color-primary);font-size: 30px;\"></i> {{ \"profile.proof.of.unemployment.phase.two.label.summary.unemployment.claim\"| translate}}</ion-card-title>\r\n </ion-header>\r\n <ion-card-content class=\"pl-0 pr-0 flex align-items-center flex-column\" style=\"height: 100%; justify-content: space-between;\">\r\n <label>\r\n {{'profile.proof.of.unemployment.phase.two.overlay.summary.unemployment.claim'| translate}}\r\n </label>\r\n <ion-button shape=\"round\" (click)=\"getVerificationReport()\" style=\"padding-bottom:30px\"\r\n class=\"Claimant-summary-ver-btn\">\r\n <ion-icon name=\"download-outline\" class=\"pr-1 pb-1\"></ion-icon> {{ \"profile.proof.of.unemployment.phase.two.button.download.report\"| translate}}\r\n </ion-button>\r\n </ion-card-content>\r\n \r\n </ion-card>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n\r\n </div>\r\n <ng-template #nonPhraseTwoView>\r\n <ion-grid style=\"margin-top: 15px;\">\r\n <ion-row>\r\n <ion-col *ngIf=\"!isME()\" layout=\"row\" style = \"margin:3px;\">\r\n <label>\r\n {{ \"profile.proof.of.unemployment.label.download.unemployment.claim.report\"| translate}}\r\n </label>\r\n <br>\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"getExternalClaimantReport()\"\r\n class=\"Claimant-report-btn\">\r\n <ion-icon name=\"download-outline\"></ion-icon>{{ \"profile.proof.of.unemployment.button.external.claimant.report\"| translate}}\r\n </ion-button>\r\n <br>\r\n <div *ngIf=\"downloadStatus=='started'\">{{ \"profile.proof.of.unemployment.status.download.start\"| translate}}</div>\r\n <mat-error *ngIf=\"downloadStatus=='error'\">{{ \"profile.proof.of.unemployment.status.download.error\"| translate}}</mat-error>\r\n </ion-col>\r\n <ion-col layout=\"row\" style = \"margin:3px;\">\r\n <label>\r\n {{ \"profile.proof.of.unemployment.label.summary.unemployment.claim\"| translate}}\r\n </label>\r\n <br>\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"redirectLink('.claimantsummaryverification')\"\r\n class=\"Claimant-summary-ver-btn\">{{ \"profile.proof.of.unemployment.button.unemployment.verification\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"isMS() && selected == 'contact-details' && isOtpSent == true\" style=\"margin-top: -90px;\">\r\n <form [formGroup]=\"otpForm\" #otpFormDirective=\"ngForm\">\r\n <ion-row>\r\n <div class=\"p-fluid p-formgrid\">\r\n <ion-row>\r\n <label for=\"otp\" [innerHTML]=\"'profile.contact.details.label.otp' | translate:{ type: type }\"></label>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n <p-inputMask formControlName=\"otp\" mask=\"999999\" size=\"6\" maxlength=\"6\" minlength=\"6\"\r\n [autoFocus]='true' title='Enter Authcode'></p-inputMask>\r\n <app-error [field]='otp' [form]=\"otpFormDirective\" [errDef]=\"{ \r\n required: 'Authcode is required.',\r\n minlength: 'Authcode should have 6 numbers.'\r\n }\"></app-error>\r\n </ion-col>\r\n <ion-col>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"verify()\">{{ \"profile.contact.details.button.verify\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n </ion-row>\r\n </form>\r\n </div>\r\n <div *ngIf=\"isME() && selected == 'contact-details' && displaySecurityQuestion == true\" style=\"margin-top: -90px;\">\r\n <form [formGroup]=\"securityQuestionForm\" #securityQuestionFormDirective=\"ngForm\">\r\n <ion-row>\r\n <div class=\"p-fluid p-formgrid\">\r\n <ion-row>\r\n <label for=\"securityQuestionAnswer\" [innerHTML]=\"'profile.contact.details.label.securityQuestion' | translate:{ securityQuestionToAsk: securityQuestionToAsk }\"></label>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n \t<input pInputText formControlName=\"securityQuestionAnswer\" size=\"30\" maxlength=\"30\" title=\"Security Answer\" />\r\n <app-error [field]='securityQuestionAnswer' [form]=\"securityQuestionFormDirective\" [errDef]=\"{ \r\n required: 'Security Answer is required.'\r\n }\"></app-error>\r\n </ion-col>\r\n <ion-col>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"verifySecurityQuestion()\">{{ \"profile.contact.details.button.verify\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n </ion-row>\r\n </form>\r\n </div>\r\n <mat-error *ngIf=\"errorDtls\">{{errorDtls}}</mat-error>\r\n <ion-label *ngIf=\"successDtls\" style=\"color: var(--ion-color-green)\">{{successDtls}}<br /></ion-label>\r\n\r\n <div *ngIf=\"showSuccess\">\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-icon name=\"checkmark-circle\" style=\"font-size: 80px; color: var(--ion-color-green);\"></ion-icon>\r\n <h1>{{ \"profile.banner.success\"| translate}}</h1>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showError\">\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-icon name=\"close-circle-outline\" style=\"font-size: 80px; color: var(--ion-color-danger);\"></ion-icon>\r\n <section *ngIf=\"isMS()\">\r\n <h1>{{ errorText ? errorText : ('profile.banner.request.process.failure' | translate) }}</h1>\r\n </section>\r\n <section *ngIf=\"!isMS()\">\r\n <h1>{{errorText ? errorText : ('profile.banner.request.process.failure' | translate) }}</h1>\r\n </section>\r\n </div>\r\n </div>\r\n <ng-template pTemplate=\"footer\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-text-left\" size=\"12\" sizeXl=\"4\" sizeLg=\"4\" sizeMd=\"5\">\r\n <ion-button shape=\"round\" fill=\"outline\" type=\"button\" (click)=\"logout()\">{{ \"profile.button.logout\"| translate}}</ion-button>\r\n </ion-col>\r\n <ion-col class=\"ion-text-right\" size=\"12\" sizeXl=\"8\" sizeLg=\"8\" sizeMd=\"7\">\r\n <ion-button shape=\"round\" fill=\"outline\" type=\"reset\" (click)=\"cancel()\">{{ \"profile.button.close\"| translate}}</ion-button>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"save()\" *ngIf=\"!(showSuccess || showError) && selected!='proof-of-unemployment'\"\r\n [disabled]=\"isOtpSent== true || displaySecurityQuestion== true\">{{ \"profile.button.save\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n</p-dialog>", styles: ["ion-col{margin-left:0!important}.Claimant-report-btn{margin-inline-end:3%}.proof-unemployment-btn-label{margin-bottom:3px}.error-banner{display:flex;align-items:center;background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;padding:8px 12px;margin-bottom:10px;font-size:14px}.seperate-row td:not(:first-child):not(:last-child){border-left:none;border-right:none}.seperate-row td:first-child{border-right:none}.seperate-row td:last-child{border-left:none;padding:1rem .55rem;padding-right:20px}.seperate-row td{border:1px solid #e4e4e4;font-family:\"Open Sans, Light\";font-size:26px;padding:1rem .55rem}\n"] }]
850
850
  }], () => [{ type: i1.LoggerService }, { type: i2.LoginService }, { type: i3.ClaimantService }, { type: i4.BirtService }, { type: i5.ClaimService }, { type: i6.NavController }, { type: i7.SecurityService }, { type: i8.UtilService }, { type: i9.UntypedFormBuilder }, { type: i10.Title }, { type: i6.ModalController }], { fb: [{
851
851
  type: ViewChild,
852
852
  args: ['fb']
@@ -866,4 +866,4 @@ export class ProfileComponent extends BasePage {
866
866
  type: Output
867
867
  }] }); })();
868
868
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProfileComponent, { className: "ProfileComponent", filePath: "lib\\components\\profile\\profile.component.ts", lineNumber: 32 }); })();
869
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcHJvZmlsZS9wcm9maWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9maWxlL3Byb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBTXBFLE9BQU8sRUFBZ0QsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU96RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDUDdELDBDQUN1RjtJQUEvRCxvUUFBc0IsME1BQWtCLGVBQUEsNkJBQXFCLENBQUEsSUFBdkM7SUFDOUMsaUJBQWlCOzs7SUFGOEMsNkNBQXVCLDZCQUFBOzs7O0lBR3RGLDBDQUN1RjtJQUEvRCxxUUFBc0IsMk1BQWtCLGVBQUEsNkJBQXFCLENBQUEsSUFBdkM7SUFDOUMsaUJBQWlCOzs7SUFGNkMsZ0RBQTBCLDZCQUFBOzs7SUFacEcsZ0NBQVUsY0FBQSxpQkFBQTtJQUdFLFlBQStCOztJQUFBLCtCQUErQjtJQUFBLFlBQzlCO0lBQUEsaUJBQU8sRUFBQSxFQUFBO0lBRy9DLCtCQUFTLGNBQUE7SUFFRCxzR0FFaUIsMkZBQUE7SUFJckIsaUJBQVUsRUFBQSxFQUFBOzs7SUFaTixlQUErQjtJQUEvQixxRUFBK0I7SUFBK0IsZUFDOUI7SUFEOEIsMkVBQzlCO0lBS2YsZUFBYTtJQUFiLHFDQUFhO0lBR2IsZUFBWTtJQUFaLG9DQUFZOzs7O0lBUXpDLGdEQUUrRztJQUEvRCx1TUFBVyxlQUFBLDJCQUFtQixDQUFBLElBQUMsZ01BQWUsZUFBQSx1QkFBZSxDQUFBLElBQTlCO0lBQy9FLGlCQUFtQjs7O0lBSDBDLDBDQUFvQiwwQkFBQSxvQkFBQSxvQkFBQSxjQUFBLGNBQUEsY0FBQSxjQUFBLGNBQUEsZUFBQSxlQUFBOzs7SUFLakYsK0JBQW9GO0lBQ3BGLCtCQUE2SDtJQUM3SCw0QkFBTTtJQUFBLFlBQWU7SUFBQSxpQkFBTyxFQUFBOzs7SUFBdEIsZUFBZTtJQUFmLHVDQUFlOzs7O0lBRXJCLGdEQUUrRztJQUEvRCw2TUFBVyxlQUFBLDJCQUFtQixDQUFBLElBQUMsc01BQWUsZUFBQSx1QkFBZSxDQUFBLElBQTlCO0lBQy9FLGlCQUFtQjs7O0lBSHlDLDBDQUFvQiwwQkFBQSxvQkFBQSxvQkFBQSxjQUFBLGNBQUEsY0FBQSxjQUFBLGNBQUEsZUFBQSxlQUFBOzs7SUFMaEYsMkJBQTJDO0lBQzNDLDhFQUdNLDRGQUFBO0lBS04saUJBQU07OztJQVJBLGVBQXVEO0lBQXZELHdGQUF1RDtJQUl0QyxlQUFtQztJQUFuQyw0REFBbUM7Ozs7SUFLMUQsZ0RBRStHO0lBQS9ELHVNQUFXLGVBQUEsMkJBQW1CLENBQUEsSUFBQyxnTUFBZSxlQUFBLHVCQUFlLENBQUEsSUFBOUI7SUFDL0UsaUJBQW1COzs7SUFIeUMsMENBQW9CLDBCQUFBLG9CQUFBLG9CQUFBLGNBQUEsY0FBQSxjQUFBLGNBQUEsY0FBQSxlQUFBLGVBQUE7Ozs7SUFJaEYsZ0RBRStHO0lBQS9ELHVNQUFXLGVBQUEsMkJBQW1CLENBQUEsSUFBQyxnTUFBZSxlQUFBLHVCQUFlLENBQUEsSUFBOUI7SUFDL0UsaUJBQW1COzs7SUFIb0MsMENBQW9CLDBCQUFBLG9CQUFBLG9CQUFBLGNBQUEsY0FBQSxjQUFBLGNBQUEsY0FBQSxlQUFBLGVBQUE7OztJQW5CL0UsK0JBQW9FO0lBQ2hFLG1HQUdtQiwwREFBQSxzRkFBQSxzRkFBQTtJQW1CdkIsaUJBQU07OztJQXRCcUIsZUFBb0M7SUFBcEMsNERBQW9DO0lBSXJELGVBQW1DO0lBQW5DLDJEQUFtQztJQVVsQixlQUFtQztJQUFuQywyREFBbUM7SUFJbkMsZUFBOEI7SUFBOUIsc0RBQThCOzs7SUErRXJDLDJCQUF1QztJQUFBLFlBQXFFOztJQUFBLGlCQUFNOztJQUEzRSxlQUFxRTtJQUFyRSxpR0FBcUU7OztJQUM1RyxpQ0FBMkM7SUFBQSxZQUFxRTs7SUFBQSxpQkFBWTs7SUFBakYsZUFBcUU7SUFBckUsaUdBQXFFOzs7O0lBakJwSCxtQ0FBd0csbUJBQUEscUJBQUEscUJBQUE7SUFHNUUsd0JBQW1GO0lBQUEsWUFBa0c7O0lBQUEsaUJBQWlCLEVBQUE7SUFFMU4sNENBQThILFlBQUE7SUFFdEgsWUFDSjs7SUFBQSxpQkFBUTtJQUNSLHVDQUNnQztJQUROLHFMQUFTLGVBQUEsbUNBQTJCLENBQUEsSUFBQztJQUUzRCxnQ0FBK0Q7SUFBQSxhQUNuRTs7SUFBQSxpQkFBYSxFQUFBLEVBQUE7SUFJckIseUZBQWtILHdGQUFBO0lBRXRILGlCQUFVOzs7SUFmcUcsZUFBa0c7SUFBbEcsOEhBQWtHO0lBSWpNLGVBQ0o7SUFESSxtSUFDSjtJQUdtRSxlQUNuRTtJQURtRSx1SEFDbkU7SUFJRixlQUErQjtJQUEvQiwwREFBK0I7SUFDekIsZUFBNkI7SUFBN0Isd0RBQTZCOzs7O0lBMUV6RCwrQkFBNkYsbUJBQUEsY0FBQTtJQXlEakYsd0ZBa0JVO0lBQ1YsbUNBQXdGLG1CQUFBLHFCQUFBLHFCQUFBO0lBRzVELHdCQUEyRjtJQUFFLFlBQTBGOztJQUFBLGlCQUFpQixFQUFBO0lBRTVOLDZDQUE4SCxhQUFBO0lBRXRILGFBQ0o7O0lBQUEsaUJBQVE7SUFDUix1Q0FDcUM7SUFEWCwyS0FBUyxlQUFBLHFCQUFhLDhCQUE4QixDQUFDLENBQUEsSUFBQztJQUU1RSxnQ0FBK0Q7SUFBQyxhQUNwRTs7SUFBQSxpQkFBYSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQTs7O0lBL0JmLGVBQWE7SUFBYixzQ0FBYTtJQXNCa0csZUFBMEY7SUFBMUYsaUlBQTBGO0lBSW5NLGVBQ0o7SUFESSxvSUFDSjtJQUdvRSxlQUNwRTtJQURvRSx3SEFDcEU7OztJQXNCWiwyQkFBdUM7SUFBQSxZQUFxRTs7SUFBQSxpQkFBTTs7SUFBM0UsZUFBcUU7SUFBckUsaUdBQXFFOzs7SUFDNUcsaUNBQTJDO0lBQUEsWUFBcUU7O0lBQUEsaUJBQVk7O0lBQWpGLGVBQXFFO0lBQXJFLGlHQUFxRTs7OztJQVhwSCxtQ0FBNEQsWUFBQTtJQUVwRCxZQUNKOztJQUFBLGlCQUFRO0lBQ1IscUJBQUk7SUFDSixzQ0FDZ0M7SUFEUyw0TEFBUyxlQUFBLG1DQUEyQixDQUFBLElBQUM7SUFFMUUsK0JBQTZDO0lBQUEsWUFDakQ7O0lBQUEsaUJBQWE7SUFDYixxQkFBSTtJQUNKLGlHQUFrSCxnR0FBQTtJQUV0SCxpQkFBVTs7O0lBVkYsZUFDSjtJQURJLCtIQUNKO0lBSWlELGVBQ2pEO0lBRGlELHFIQUNqRDtJQUVNLGVBQStCO0lBQS9CLDBEQUErQjtJQUN6QixlQUE2QjtJQUE3Qix3REFBNkI7Ozs7SUFiakQsb0NBQW9DLGNBQUE7SUFFaEMsK0ZBWVU7SUFDVixtQ0FBNEMsWUFBQTtJQUVwQyxZQUNKOztJQUFBLGlCQUFRO0lBQ1IscUJBQUk7SUFDSixzQ0FDcUM7SUFESSxrTEFBUyxlQUFBLHFCQUFhLDhCQUE4QixDQUFDLENBQUEsSUFBQztJQUMxRCxZQUFnRjs7SUFBQSxpQkFBYSxFQUFBLEVBQUEsRUFBQTs7O0lBbkI1SCxlQUFhO0lBQWIsc0NBQWE7SUFlZixlQUNKO0lBREksdUhBQ0o7SUFHcUMsZUFBZ0Y7SUFBaEYsNkdBQWdGOzs7SUF4SHJJLCtCQUErRTtJQUMzRSwwRUFnR00sNkdBQUE7SUE0QlYsaUJBQU07Ozs7SUE1SEksZUFBcUM7SUFBckMsOERBQXFDLGtCQUFBOzs7Ozs7SUE2SC9DLCtCQUFxRyxtQkFBQSxjQUFBLGNBQUEsY0FBQTtJQUs3RSw0QkFBc0c7O0lBQzlHLGlCQUFVO0lBQ1YsK0JBQVMsY0FBQTtJQUVELG1DQUM0RCxxQkFBQTtJQUtoRSxpQkFBVTtJQUNWLGdDQUFTLHNCQUFBO0lBQ21DLG9LQUFTLGVBQUEsZ0JBQVEsQ0FBQSxJQUFDO0lBQUMsYUFBdUQ7O0lBQUEsaUJBQWEsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUE7Ozs7SUFoQjdJLGVBQXFCO0lBQXJCLDBDQUFxQjtJQUlVLGVBQTRFO0lBQTVFLGtKQUE0RTtJQUt6RixlQUFrQjtJQUFsQixnQ0FBa0I7SUFDWCxlQUFhO0lBQWIsa0NBQWEsY0FBQSx1Q0FBQTtJQU1tQyxlQUF1RDtJQUF2RCxxRkFBdUQ7Ozs7OztJQU8xSSwrQkFBbUgsbUJBQUEsY0FBQSxjQUFBLGNBQUE7SUFLL0YsNEJBQXdLOztJQUM1SyxpQkFBVTtJQUNWLCtCQUFTLGNBQUE7SUFFSiw2QkFBOEcscUJBQUE7SUFJL0csaUJBQVU7SUFDVixnQ0FBUyxzQkFBQTtJQUNtQyxvS0FBUyxlQUFBLGdDQUF3QixDQUFBLElBQUM7SUFBQyxhQUF1RDs7SUFBQSxpQkFBYSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQTs7OztJQWQ3SixlQUFrQztJQUFsQyx1REFBa0M7SUFJWSxlQUEySDtJQUEzSCxnTEFBMkg7SUFLaEosZUFBZ0M7SUFBaEMscURBQWdDLGNBQUEsdUNBQUE7SUFLZ0MsZUFBdUQ7SUFBdkQsb0ZBQXVEOzs7SUFPMUosaUNBQTZCO0lBQUEsWUFBYTtJQUFBLGlCQUFZOzs7SUFBekIsZUFBYTtJQUFiLHNDQUFhOzs7SUFDMUMscUNBQXFFO0lBQUEsWUFBZTtJQUFBLHFCQUFNO0lBQUEsaUJBQVk7OztJQUFqQyxlQUFlO0lBQWYsd0NBQWU7OztJQUVwRiwyQkFBeUIsY0FBQTtJQUVqQiwrQkFBcUc7SUFDckcsMEJBQUk7SUFBQSxZQUF3Qzs7SUFBQSxpQkFBSyxFQUFBLEVBQUE7O0lBQTdDLGVBQXdDO0lBQXhDLG9FQUF3Qzs7O0lBTzVDLCtCQUF3QixTQUFBO0lBQ2hCLFlBQW9GOztJQUFBLGlCQUFLLEVBQUE7OztJQUF6RixlQUFvRjtJQUFwRiw0SEFBb0Y7OztJQUU1RiwrQkFBeUIsU0FBQTtJQUNqQixZQUFtRjs7SUFBQSxpQkFBSyxFQUFBOzs7SUFBeEYsZUFBbUY7SUFBbkYsNEhBQW1GOzs7SUFQbkcsMkJBQXVCLGNBQUE7SUFFZiwrQkFBMEc7SUFDMUcsK0VBRVUsa0VBQUE7SUFJZCxpQkFBTSxFQUFBOzs7SUFOUSxlQUFZO0lBQVosb0NBQVk7SUFHWixlQUFhO0lBQWIscUNBQWE7Ozs7SUFhZixzQ0FDb0U7SUFENUIsMkxBQVMsZUFBQSxjQUFNLENBQUEsSUFBQztJQUNZLFlBQXFDOztJQUFBLGlCQUFhOzs7SUFBbEgsK0ZBQStEO0lBQUMsZUFBcUM7SUFBckMsaUVBQXFDOzs7O0lBUnJILGdDQUFVLGNBQUEsa0JBQUEscUJBQUE7SUFHeUQsNEtBQVMsZUFBQSxnQkFBUSxDQUFBLElBQUM7SUFBQyxZQUF1Qzs7SUFBQSxpQkFBYSxFQUFBO0lBRWxJLG1DQUEyRSxxQkFBQTtJQUNqQiw0S0FBUyxlQUFBLGdCQUFRLENBQUEsSUFBQztJQUFDLFlBQXNDOztJQUFBLGlCQUFhO0lBQzVILGlHQUNzSDtJQUMxSCxpQkFBVSxFQUFBLEVBQUE7OztJQU5vRSxlQUF1QztJQUF2QyxtRUFBdUM7SUFHeEMsZUFBc0M7SUFBdEMsa0VBQXNDO0lBQ3JELGVBQXNFO0lBQXRFLDhHQUFzRTs7OztBRHhOcEosTUFBTSxPQUFPLGdCQUFpQixTQUFRLFFBQVE7SUFtRTVDLFlBQW1CLE1BQXFCLEVBQVMsRUFBZ0IsRUFBUyxFQUFtQixFQUFTLEVBQWUsRUFBUyxZQUEwQixFQUMvSSxHQUFrQixFQUFTLEVBQW1CLEVBQVMsSUFBaUIsRUFBUyxXQUErQixFQUFRLFlBQW1CLEVBQzFJLFNBQTBCO1FBQ2hDLEtBQUssRUFBRSxDQUFDO1FBSE8sV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQWM7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFpQjtRQUFTLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMvSSxRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQVEsaUJBQVksR0FBWixZQUFZLENBQU87UUFDMUksY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFwRXBDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsMEJBQXFCLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixDQUFDO1FBQzNELG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGdCQUFXLEdBQVUsNkJBQTZCLENBQUM7UUFFbkQsc0JBQWlCLEdBQVUsQ0FBQyxDQUFDO1FBQzdCLHlCQUFvQixHQUFRLElBQUksQ0FBQztRQUNqQyx1QkFBa0IsR0FBVSxFQUFFLENBQUM7UUFDL0IsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFDekIsdUJBQWtCLEdBQVcsR0FBRyxDQUFDO1FBQ2pDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBSXhCLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxQyxnQkFBVyxHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQztRQUVoRCxtQkFBYyxHQUFHLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQztRQUV2RCxhQUFRLEdBQUcsa0JBQWtCLENBQUM7UUFnQzlCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBU3JCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBUWpELENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFLO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUcsSUFBSSxDQUFDLFFBQVEsS0FBRyx1QkFBdUIsRUFBQztZQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1lBQ25ELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNwQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsOEJBQThCO1FBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNoRCx3QkFBd0IsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDZixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzthQUMvQjtpQkFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksaUJBQWlCLEVBQUU7Z0JBQzdDLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7Z0JBQzNFLHVDQUF1QztnQkFDdkMsRUFBRTtnQkFDRixzRUFBc0U7Z0JBQ3RFLHdCQUF3QjtnQkFFeEIsdUZBQXVGO2dCQUN2RixpRUFBaUU7Z0JBQ2pFLDhFQUE4RTtnQkFDOUUsK0JBQStCO2dCQUMvQixrR0FBa0c7Z0JBQ2xHLDJDQUEyQztnQkFDM0MsK0ZBQStGO2dCQUUvRix1Q0FBdUM7Z0JBQ3ZDLDhFQUE4RTtnQkFDOUUscUNBQXFDO2dCQUNyQyxzRUFBc0U7Z0JBQ3RFLE1BQU07Z0JBQ04sSUFBSTtnQkFDSixpREFBaUQ7Z0JBQ2pELHdHQUF3RztnQkFDeEcsbUVBQW1FO2dCQUVuRSxpREFBaUQ7Z0JBQ2pELGdEQUFnRDtnQkFDaEQsNERBQTREO2dCQUM1RCxJQUFJO2dCQUNKLDJDQUEyQztnQkFDM0MsOEhBQThIO2dCQUM5SCxJQUFJO2dCQUNKLHdGQUF3RjtnQkFDeEYsd0VBQXdFO2dCQUN4RSxJQUFJO2dCQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFO29CQUM5RyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO29CQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2lCQUMvQjtxQkFBTSxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxHQUFHLEVBQUU7b0JBQ3pGLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7b0JBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsb0VBQW9FLENBQUM7b0JBQ3RGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUN2QjtxQkFBTSxJQUFJLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLE1BQU0sSUFBSSxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxHQUFHLEVBQUU7b0JBQzNGLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7b0JBQzVFLElBQUksQ0FBQyxTQUFTLEdBQUcsMEZBQTBGLENBQUM7b0JBQzVHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUN2QjtxQkFDSTtvQkFDSCxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsRUFBRTt3QkFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7d0JBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO3FCQUNwQjt5QkFBTSxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsRUFBRTt3QkFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7d0JBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO3FCQUNyQjtvQkFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDdEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNyQixJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ3ZELElBQUksQ0FBQyxXQUFXLEdBQUcsZ0NBQWdDLENBQUM7b0JBQ3RELENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTt3QkFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzt3QkFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztvQkFDM0IsQ0FBQyxDQUFDLENBQUE7aUJBQ0g7YUFDRjtpQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFO2dCQUN4RixJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLENBQUM7YUFDL0I7U0FDRjthQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3ZCLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFO2dCQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLENBQUM7YUFDL0I7aUJBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLGlCQUFpQixFQUFFO2dCQUM3QyxJQUFJLENBQUMsRUFBRSxDQUFDLDZCQUE2QixFQUFFLENBQUMsU0FBUyxDQUFDO29CQUNoRCxJQUFJLEVBQUMsQ0FBQyxHQUFnQyxFQUFFLEVBQUU7d0JBQ3hDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxHQUFHLENBQUM7d0JBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsMkJBQTJCLENBQUM7d0JBQzFGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO29CQUMxQixDQUFDLEVBQUUsS0FBSyxFQUFDLENBQUMsR0FBVSxFQUFFLEVBQUU7d0JBQ3RCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7d0JBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO3dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7b0JBQy9CLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO2FBQ3JDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzthQUMvQjtTQUNIO2FBQU07WUFDSixJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsa0NBQWtDO0lBQzNCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxHQUFZLEVBQUUsR0FBWSxFQUFFLENBQU07UUFDcEUsTUFBTSxXQUFXLEdBQWMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsMEJBQTBCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUNoQyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQ3hDLFNBQVMsRUFBRSxxQkFBcUI7WUFDaEMsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO1lBQ3ZELGVBQWUsRUFBRSxLQUFLO1lBQ3RCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuRCxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUTtZQUFFLE9BQU87UUFDbEQsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLGVBQWUsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUMsdUNBQXVDO0lBQ3BDLDRCQUE0QixDQUFDLEdBQVEsRUFBRSxNQUFlO1FBQzdELE1BQU0sUUFBUSxHQUFHLE1BQU07WUFDdkIsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdkMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUNqQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7YUFDakMsQ0FBQztRQUNILElBQUksQ0FBQyxvQkFBb0IsR0FBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFTyxVQUFVLENBQUMsR0FBUTtRQUMzQixJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUU7WUFDcEIsbUJBQW1CO1lBQ25CLE9BQU87Z0JBQ1AsYUFBYSxFQUFFLEdBQUcsQ0FBQyxLQUFLO2dCQUN4QixlQUFlLEVBQUUsR0FBRyxDQUFDLEtBQUs7Z0JBQzFCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtnQkFDZCxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRTtnQkFDN0MsR0FBRyxFQUFFLEdBQUcsQ0FBQyxPQUFPO2dCQUNoQixPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRTthQUNsRCxDQUFDO1NBQ0Q7YUFBTTtZQUNQLDJCQUEyQjtZQUMzQixPQUFPO2dCQUNQLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYTtnQkFDaEMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxhQUFhO2dCQUNsQyxJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVE7Z0JBQ2xCLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDbkUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxPQUFPO2dCQUNoQixPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRTthQUNsRCxDQUFDO1NBQ0Q7SUFDRCxDQUFDO0lBRUMsTUFBTTtRQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQzlDLElBQUksQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUNyRixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxFQUFFO1lBQ2hDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUN0RSxJQUFJLENBQUMsRUFBRSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDeEYsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztnQkFDckMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztnQkFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFBO1NBQ0g7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQUk7UUFDZixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLG1CQUFtQix3Q0FBd0MsU0FBUyxDQUFDLFlBQVksTUFBTSxTQUFTLENBQUMsYUFBYSxxQ0FBcUMsSUFBSSxFQUFFLEVBQUcsT0FBTyxDQUFDLENBQUM7UUFDbk0sQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QseUJBQXlCO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM5RSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBQywwQkFBMEIsQ0FBQyxDQUFBO1FBQ3RELENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNQLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELGVBQWUsQ0FBQyxHQUFPLEVBQUUsUUFBZ0I7UUFDdkMsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN0QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDQyxXQUFXLENBQUMsS0FBSztRQUNmLElBQUksS0FBSyxFQUFFLFNBQVMsSUFBSSxLQUFLLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHO1FBQ1QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRixvQkFBb0I7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxFQUFFO1lBQ3hELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNqRixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBQyxvQ0FBb0MsQ0FBQyxDQUFBO1FBQ2hFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNQLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVNLGFBQWEsQ0FBQyxRQUFhLEVBQUUsa0JBQTBCO1FBQ3hELElBQUksQ0FBQyxlQUFlLEdBQUUsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFNUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUU7WUFDM0csSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUMvQjthQUFNLElBQUksUUFBUSxDQUFDLG1CQUFtQixDQUFDLEtBQUssR0FBRyxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsRUFBRTtZQUN6RixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsb0VBQW9FLENBQUM7WUFDdEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7YUFBTSxJQUFJLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLE1BQU0sSUFBSSxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxHQUFHLEVBQUU7WUFDM0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsU0FBUyxHQUFHLDBGQUEwRixDQUFDO1lBQzVHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO2FBQ0k7WUFDSCxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsRUFBRTtnQkFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO2FBQ3BCO2lCQUFNLElBQUksUUFBUSxDQUFDLG1CQUFtQixDQUFDLEtBQUssR0FBRyxFQUFFO2dCQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7YUFDckI7WUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN2RCxJQUFJLENBQUMsV0FBVyxHQUFHLGdDQUFnQyxDQUFDO1lBQ3RELENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQTtTQUNIO0lBQ1AsQ0FBQztJQUNELGdCQUFnQixDQUFDLE9BQVcsRUFBRSxJQUFRO1FBQ3RDLE9BQU8sT0FBTyxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsYUFBYTtZQUM1QyxPQUFPLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxlQUFlO1lBQ2hELE9BQU8sQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUk7WUFDMUIsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLO1lBQzFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUc7WUFDeEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7SUFDdEQsQ0FBQztpRkFoWlUsZ0JBQWdCO29FQUFoQixnQkFBZ0I7Ozs7Ozs7Ozs7WUMvQjdCLG1DQUNtSDtZQUMvRyxrRkFtQmMsb0RBQUEsb0RBQUEsc0RBQUEsc0RBQUEsZ0VBQUEsZ0VBQUEsb0RBQUEsb0RBQUEsdUVBQUE7WUF3T2xCLGlCQUFXOztZQTVQK0QsMENBQXlCO1lBQS9GLHlEQUFxRTtZQXFCL0QsZUFBaUM7WUFBakMsMERBQWlDO1lBd0JILGVBQXlDO1lBQXpDLDhEQUF5QztZQThIdkUsZUFBa0U7WUFBbEUsK0ZBQWtFO1lBd0JsRSxlQUFnRjtZQUFoRiw2R0FBZ0Y7WUFzQjFFLGVBQWU7WUFBZixvQ0FBZTtZQUNmLGVBQWlCO1lBQWpCLHNDQUFpQjtZQUV2QixlQUFpQjtZQUFqQixzQ0FBaUI7WUFPakIsZUFBZTtZQUFmLG9DQUFlOzs7aUZEck1aLGdCQUFnQjtjQUw1QixTQUFTOzJCQUNFLGFBQWE7b1VBaUJOLEVBQUU7a0JBQWxCLFNBQVM7bUJBQUMsSUFBSTtZQUdmLFFBQVE7a0JBRFAsTUFBTTtZQW1CQSxnQkFBZ0I7a0JBRnRCLFNBQVM7bUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBMEJ6Qyw2QkFBNkI7a0JBRm5DLFNBQVM7bUJBQUMsK0JBQStCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBS3BELElBQUk7a0JBQVosS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDSSxRQUFRO2tCQUFqQixNQUFNOztrRkEvREksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21ib09wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0NvbWJvTW9kZWwnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlclBhZ2UgfSBmcm9tICcuLi9xdWVzdGlvbm5haXJlL2Zvcm0tYnVpbGRlci9mb3JtLWJ1aWxkZXIucGFnZSc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgQ2xhaW1hbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2xhaW1hbnQtc2VydmljZS9jbGFpbWFudC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlY3VyaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlY3VyaXR5LXNlcnZpY2Uvc2VjdXJpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBOZ0Zvcm0sIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudHNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0VsZW1lbnRzTW9kZWwnO1xuaW1wb3J0IHsgQmFzZVBhZ2UgfSBmcm9tICcuLi8uLi9wYWdlcy9CYXNlUGFnZSc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IExpYkNvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9MaWJDb25zdGFudHMnO1xuaW1wb3J0IHsgQmlydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iaXJ0LXNlcnZpY2UvYmlydC5zZXJ2aWNlJztcbmltcG9ydCB7IENsYWltU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltcy9jbGFpbXMuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RpdmVDbGFpbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0FjdGl2ZUNsYWltTW9kZWwnOyBcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEFkZHJlc3NWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FkZHJlc3MtdmFsaWRhdGlvbi1zZXJ2aWNlL2FkZHJlc3MtdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFkZHJlc3NSZWNvbW1lbmRhdGlvbk1vZGVsIGFzIEFkZHJSZWN9IGZyb20gJy4uLy4uL21vZGVscy9hZGRyZXNzVmFsaWRhdGlvbi9BZGRyZXNzUmVjb21tZW5kYXRpb25Nb2RlbCc7XG5pbXBvcnQgeyBBZGRyZXNzUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9hZGRyZXNzLXBvcHVwL2FkZHJlc3MtcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IEFsZXJ0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEFkZHJlc3NWYWxpZGF0aW9uUmVxdWVzdENvbXBvbmVudE1vZGVsIGFzIEFkZHJSZXF9IGZyb20gJy4uLy4uL21vZGVscy9hZGRyZXNzVmFsaWRhdGlvbi9BZGRyZXNzVmFsaWRhdGlvblJlcXVlc3RDb21wb25lbnRNb2RlbCc7XG5pbXBvcnQgeyBBZGRyZXNzVmFsaWRhdGlvblJlc3BvbnNlQ29tcG9uZW50TW9kZWwgYXMgQWRkclJlc30gZnJvbSAnLi4vLi4vbW9kZWxzL2FkZHJlc3NWYWxpZGF0aW9uL0FkZHJlc3NWYWxpZGF0aW9uUmVzcG9uc2VDb21wb25lbnRNb2RlbCc7XG5pbXBvcnQgeyBTZWN1cml0eVF1ZXN0aW9uQW5zd2VyTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvU2VjdXJpdHlRdWVzdGlvbkFuc3dlck1vZGVsJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9maWxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2ZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9maWxlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZUNvbXBvbmVudCBleHRlbmRzIEJhc2VQYWdlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgc2hvd1N1Y2Nlc3MgPSBmYWxzZTtcbiAgc2hvd0Vycm9yID0gZmFsc2U7XG4gIHBoYXNlVHdvUHJvb2ZPZlVJVmlldyA9IExpYkNvbnN0YW50cy5QaGFzZVR3b1Byb29mT2ZVSVZpZXc7XG4gIGRvd25sb2FkU3RhdHVzID0gXCJcIjtcbiAgZG9jRmlsZUxpbms6c3RyaW5nID0gXCJhc3NldHMvaW1hZ2VzL3NhbXBsZURvYy5wbmdcIjtcbiAgZXJyb3JUZXh0OiBzdHJpbmc7XG4gIGNsYWltYW50QWRkcmVzc0lkOiBudW1iZXI9IDA7XG4gIGxhc3RWYWxpZGF0ZWRBZGRyZXNzOiBhbnkgPSBudWxsO1xuICBsYXN0VmFsaWRhdGVSZXN1bHQ6IHN0cmluZyA9Jyc7XG4gIGF0dGVtcHRDb3VudDogbnVtYmVyID0gMDtcbiAgaXNBZGRyZXNzVmFsaWRhdGVkOiBzdHJpbmcgPSAnMCc7XG4gIHNob3dJbmxpbmVFcnJvciA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdmYicpIGZiOiBGb3JtQnVpbGRlclBhZ2VcblxuICBAT3V0cHV0KClcbiAgb25DYW5jZWw6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBwcm9maWxlT3B0cyA9IENvbWJvT3B0aW9uLkNMQUlNQU5UX1BST0ZJTEVfT1BUUztcblxuICBwdWJsaWMgcHJvZmlsZU9wdHNJVlIgPSBDb21ib09wdGlvbi5DTEFJTUFOVF9QUk9GSUxFX09QVFNfSVZSO1xuXG4gIHB1YmxpYyBzZWxlY3RlZCA9ICdwZXJzb25hbC1kZXRhaWxzJztcblxuICBwdWJsaWMgdHlwZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBpc090cFNlbnQ6IGJvb2xlYW47XG5cbiAgcHVibGljIHN1Y2Nlc3NEdGxzO1xuXG4gIHB1YmxpYyBlcnJvckR0bHM7XG5cbiAgQFZpZXdDaGlsZCgnb3RwRm9ybURpcmVjdGl2ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuXG4gIHB1YmxpYyBvdHBGb3JtRGlyZWN0aXZlOiBOZ0Zvcm07XG5cbiAgcHVibGljIG90cEZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgcHVibGljIG90cENvZGU7XG5cbiAgcHVibGljIG90cFZlcmlmaWVkOiBib29sZWFuO1xuXG4gIHB1YmxpYyBkaXNwbGF5U2VjdXJpdHlRdWVzdGlvbjogYm9vbGVhbjtcblxuICBwdWJsaWMgc2VjdXJpdHlRdWVzdGlvbkZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgcHVibGljIHNlY3VyaXR5UXVlc3Rpb25Ub0FzaztcblxuICBwdWJsaWMgc2VjdXJpdHlBbnN3ZXI7XG5cbiAgcHVibGljIHNlY3VyaXR5UXVlc3Rpb25WZXJpZmllZDogYm9vbGVhbjtcblxuICBwdWJsaWMgcmFuZG9tU2VjdXJpdHlRdWVzdGlvbk1vZGVsOiBTZWN1cml0eVF1ZXN0aW9uQW5zd2VyTW9kZWw7XG5cbiAgcHVibGljIGZhaWxDb3VudGVyOiBudW1iZXIgPSAwO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlY3VyaXR5UXVlc3Rpb25Gb3JtRGlyZWN0aXZlJywgeyBzdGF0aWM6IGZhbHNlIH0pXG5cbiAgcHVibGljIHNlY3VyaXR5UXVlc3Rpb25Gb3JtRGlyZWN0aXZlOiBOZ0Zvcm07XG5cbiAgcHVibGljIHByb29mT2ZVbmVtcGxveW1lbnREYXRhOmFueTtcbiAgQElucHV0KCkgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcXVlc3Rpb246IEVsZW1lbnRzTW9kZWw7XG4gIEBPdXRwdXQoKSBhY2NlcHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgbGlzdE9mQWN0aXZlQ2xhaW06QWN0aXZlQ2xhaW1Nb2RlbFtdO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBsb2dnZXI6IExvZ2dlclNlcnZpY2UsIHB1YmxpYyBsczogTG9naW5TZXJ2aWNlLCBwdWJsaWMgY3M6IENsYWltYW50U2VydmljZSwgcHVibGljIGJzOiBCaXJ0U2VydmljZSwgcHVibGljIGNsYWltU2VydmljZTogQ2xhaW1TZXJ2aWNlLFxuICAgIHB1YmxpYyBuYXY6IE5hdkNvbnRyb2xsZXIsIHB1YmxpYyBzczogU2VjdXJpdHlTZXJ2aWNlLCBwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2UsIHB1YmxpYyBmb3JtYnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLHB1YmxpYyB0aXRsZVNlcnZpY2U6IFRpdGxlLFxuICAgIHByaXZhdGUgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIpIHtcbiAgICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnQpIHtcbiAgICB0aGlzLnNob3dFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1N1Y2Nlc3MgPSBmYWxzZTtcbiAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gXCJcIjtcbiAgICBpZih0aGlzLnNlbGVjdGVkPT09J3Byb29mLW9mLXVuZW1wbG95bWVudCcpe1xuICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUoXCJQcm9vZiBvZiBVbmVtcGxveW1lbnRcIilcbiAgICAgIHRoaXMuZ2V0TGlzdE9mQWN0aXZlQ2xhaW0oKTtcbiAgICB9XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBpbml0aWxpemVGb3JtKCkge1xuICAgIHRoaXMub3RwRm9ybSA9IHRoaXMuZm9ybWJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgJ290cCc6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNildXSxcbiAgICB9KTtcbiAgfVxuXG4gIGluaXRpYWxpemVTZWN1cml0eVF1ZXN0aW9uRm9ybSgpIHtcblx0ICB0aGlzLnNlY3VyaXR5UXVlc3Rpb25Gb3JtID0gdGhpcy5mb3JtYnVpbGRlci5ncm91cCh7XG4gICAgICAnc2VjdXJpdHlRdWVzdGlvbkFuc3dlcic6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG90cCgpIHtcbiAgICByZXR1cm4gdGhpcy5vdHBGb3JtLmdldCgnb3RwJyk7XG4gIH1cblxuICBnZXQgc2VjdXJpdHlRdWVzdGlvbkFuc3dlcigpIHtcbiAgICByZXR1cm4gdGhpcy5zZWN1cml0eVF1ZXN0aW9uRm9ybS5nZXQoJ3NlY3VyaXR5UXVlc3Rpb25BbnN3ZXInKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmUoKSB7XG4gICAgaWYgKHRoaXMuaXNNUygpKSB7XG4gICAgICBpZiAodGhpcy5vdHBWZXJpZmllZCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIk9UUCBWRVJJRklFRCBBTkQgU0FWSU5HXCIpO1xuICAgICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZCA9PSAnY29udGFjdC1kZXRhaWxzJykge1xuICAgICAgICBsZXQgZm9ybURhdGEgPSB0aGlzLmZiLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlRm9ybS52YWx1ZTtcbiAgICAgICAgLy9Db2RlIGZvciB0aGUgYWRkcmVzcyB2YWxpZGF0aW9uIHBvcHVwXG4gICAgICAgIC8vXG4gICAgICAgIC8vIGNvbnN0IGZvcm0gPSB0aGlzLmZiLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlRm9ybTtcbiAgICAgICAgLy8gY29uc3QgdiA9IGZvcm0udmFsdWU7XG5cbiAgICAgICAgLy8gLy9EZXRlcm1pbmUgQ3VycmVudCBhZGRyZXNzIGFuZCB0eXBlIGJhc2VkIG9uIHRoZSBhbnN3ZXIgdG8gbWFpbGluZyBhZGRyZXNzIHF1ZXN0aW9uXG4gICAgICAgIC8vIGNvbnN0IGN1cnJlbnRUeXBlID0gdi5kaWZmbWFpbGFkZHJlc3MgPT0gJ1knID8gJ21haWwnIDogJ3Jlcyc7XG4gICAgICAgIC8vIGNvbnN0IGN1cnJlbnRBZGRyZXNzID0gY3VycmVudFR5cGUgPT0gJ21haWwnID8gdi5tYWlsQWRkcmVzcyA6IHYucmVzQWRyZXNzO1xuICAgICAgICAvLyB0aGlzLnNob3dJbmxpbmVFcnJvciA9IGZhbHNlXG4gICAgICAgIC8vIC8vY2hlY2sgaWYgYWRkcmVzcyBjaGFuZ2VkIHNpbmNlIGxhc3QgdmFsaWRhdGlvbiBhbmQgaWYgbm8gY2hhbmdlIGNvbnRpbnVlIHdpdGhvdXQgaW50ZXJydXB0aW9uXG4gICAgICAgIC8vIGlmICh0aGlzLmxhc3RWYWxpZGF0ZWRBZGRyZXNzICE9IG51bGwpIHtcbiAgICAgICAgLy8gICBjb25zdCBsYXN0QWRkcmVzc1R5cGUgPSB0aGlzLmxhc3RWYWxpZGF0ZWRBZGRyZXNzLmRpZmZtYWlsYWRkcmVzcyA9PSAnWScgPyAnbWFpbCcgOiAncmVzJztcblxuICAgICAgICAvLyAgIGlmIChsYXN0QWRkcmVzc1R5cGUgPT0gY3VycmVudFR5cGVcbiAgICAgICAgLy8gICAgICYmICF0aGlzLmlzQWRkcmVzc0NoYW5nZWQoY3VycmVudEFkZHJlc3MsIHRoaXMubGFzdFZhbGlkYXRlZEFkZHJlc3MpKSB7XG4gICAgICAgIC8vICAgICB0aGlzLmlzQWRkcmVzc1ZhbGlkYXRlZCA9ICcxJztcbiAgICAgICAgLy8gICAgIHJldHVybiB0aGlzLmZpbmlzaEFuZFNhdmUoZm9ybS52YWx1ZSwgdGhpcy5pc0FkZHJlc3NWYWxpZGF0ZWQpO1xuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gfVxuICAgICAgICAvLyAvL1N0YXJ0aW5nIHRoZSBwcm9jZXNzIHRvIHZhbGlkYXRlIHRoZSBhZGRyZXNzXG4gICAgICAgIC8vIGNvbnN0IHJldHVybkNvbXBvbmVudCA9IGF3YWl0IHRoaXMuYWRkclN2Yy52YWxpZGF0ZUFkZHJlc3NQcm9jZXNzKGN1cnJlbnRUeXBlLCBjdXJyZW50QWRkcmVzcywgZm9ybSk7XG4gICAgICAgIC8vIHRoaXMubGFzdFZhbGlkYXRlZEFkZHJlc3MgPSByZXR1cm5Db21wb25lbnQubGFzdFZhbGlkYXRlZEFkZHJlc3NcblxuICAgICAgICAvLyBpZiAocmV0dXJuQ29tcG9uZW50LnNob3dJbmxpbmVFcnJvciA9PSB0cnVlKSB7XG4gICAgICAgIC8vICAgdGhpcy5lcnJvclRleHQgPSByZXR1cm5Db21wb25lbnQuZXJyb3JUZXh0O1xuICAgICAgICAvLyAgIHRoaXMuc2hvd0lubGluZUVycm9yID0gcmV0dXJuQ29tcG9uZW50LnNob3dJbmxpbmVFcnJvcjtcbiAgICAgICAgLy8gfVxuICAgICAgICAvLyBpZiAocmV0dXJuQ29tcG9uZW50LnNob3dQb3B1cCA9PSB0cnVlKSB7XG4gICAgICAgIC8vICAgYXdhaXQgdGhpcy5oYW5kbGVSZWNvbW1lbmRhdGlvbnMocmV0dXJuQ29tcG9uZW50LmFkZHJlc3NWYWxpZGF0aW9uUmVzcG9uc2UsIHJldHVybkNvbXBvbmVudC5hZGRyZXNzVmFsaWRhdGlvblJlcXVlc3QsIHYpO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vIGlmIChyZXR1cm5Db21wb25lbnQuc2hvd0lubGluZUVycm9yID09IGZhbHNlICYmIHJldHVybkNvbXBvbmVudC5zaG93UG9wdXAgPT0gZmFsc2UpIHtcbiAgICAgICAgLy8gICB0aGlzLmZpbmlzaEFuZFNhdmUoZm9ybS52YWx1ZSwgcmV0dXJuQ29tcG9uZW50LmlzQWRkcmVzc1ZhbGlkYXRlZCk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKChmb3JtRGF0YVsncGhvbmUnXSA9PSBmb3JtRGF0YVsnaGlkT3JpZ2luYWxQaG9uZSddKSAmJiAoZm9ybURhdGFbJ2VtYWlsJ10gPT0gZm9ybURhdGFbJ2hpZE9yaWdpbmFsRW1haWwnXSkpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlBob25lIG9yIEVtYWlsIE5vdCBDaGFuZ2VkXCIpO1xuICAgICAgICAgIHRoaXMuaXNPdHBTZW50ID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5mYi5zdWJtaXRRdWVzdGlvbm5haXJlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybURhdGFbXCJoaWRJc0VtYWlsQ2hhbmdlZFwiXSA9PT0gXCJZXCIgJiYgZm9ybURhdGFbXCJoaWRJc1Bob25lQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIkJvdGggRW1haWwgYW5kIFBob25lIENoYW5nZWRcIik7XG4gICAgICAgICAgdGhpcy5lcnJvclRleHQgPSBcIlBsZWFzZSBjb250YWN0IE1ERVMgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZSB1cGRhdGluZyBFbWFpbCBBZGRyZXNzLlwiO1xuICAgICAgICAgIHRoaXMuc2hvd0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtRGF0YVtcImhpZE9yaWdpbmFsUGhvbmVcIl0gPT09IFwibnVsbFwiICYmIGZvcm1EYXRhW1wiaGlkSXNFbWFpbENoYW5nZWRcIl0gPT09IFwiWVwiKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJUcnlpbmcgdG8gY2hhbmdlIGVtYWlsIGJ1dCBwaG9uZSBudW1iZXIgaXMgbm90IHByZXNlbnRcIik7XG4gICAgICAgICAgdGhpcy5lcnJvclRleHQgPSBcIlBsZWFzZSBjb250YWN0IE1ERVMgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZSB1cGRhdGluZyBFbWFpbCBBZGRyZXNzIGFuZCBDZWxsIFBob25lIE51bWJlci5cIjtcbiAgICAgICAgICB0aGlzLnNob3dFcnJvciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYgKGZvcm1EYXRhW1wiaGlkSXNFbWFpbENoYW5nZWRcIl0gPT09IFwiWVwiKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIkVtYWlsIENoYW5nZWRcIik7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAndGV4dCc7XG4gICAgICAgICAgfSBlbHNlIGlmIChmb3JtRGF0YVtcImhpZElzUGhvbmVDaGFuZ2VkXCJdID09PSBcIllcIikge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJQaG9uZSBDaGFuZ2VkXCIpO1xuICAgICAgICAgICAgdGhpcy50eXBlID0gJ2VtYWlsJztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pc090cFNlbnQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaW5pdGlsaXplRm9ybSgpO1xuICAgICAgICAgIHRoaXMuc3Muc2VuZE90cFdpdGhvdXRDYXB0Y2hhKHRoaXMudHlwZSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gXCJBY2Nlc3MgY29kZSBzZW50IHN1Y2Nlc3NmdWxseS5cIjtcbiAgICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc090cFNlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5lcnJvckR0bHMgPSBlcnIubXNnO1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoKHRoaXMuc2VsZWN0ZWQgPT0gJ3BlcnNvbmFsLWRldGFpbHMnKSB8fCAodGhpcy5zZWxlY3RlZCA9PSAncGF5bWVudC1kZXRhaWxzJykpIHtcbiAgICAgICAgdGhpcy5mYi5zdWJtaXRRdWVzdGlvbm5haXJlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzTUUoKSkge1xuXHQgICAgaWYgKHRoaXMuc2VjdXJpdHlRdWVzdGlvblZlcmlmaWVkKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiU0VDVVJJVFkgUVVFU1RJT04gVkVSSUZJRUQgQU5EIFNBVklOR1wiKTtcbiAgICAgICAgdGhpcy5mYi5zdWJtaXRRdWVzdGlvbm5haXJlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWQgPT0gJ2NvbnRhY3QtZGV0YWlscycpIHsgIFxuICAgICAgICB0aGlzLnNzLmdldFJhbmRvbVNlY3VyaXR5UXVlc3Rpb25TZWxmKCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OihyZXM6IFNlY3VyaXR5UXVlc3Rpb25BbnN3ZXJNb2RlbCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yYW5kb21TZWN1cml0eVF1ZXN0aW9uTW9kZWwgPSByZXM7XG4gICAgICAgICAgICB0aGlzLnNlY3VyaXR5UXVlc3Rpb25Ub0FzayA9IHRoaXMucmFuZG9tU2VjdXJpdHlRdWVzdGlvbk1vZGVsLnNlY3VyaXR5UXVlc3Rpb25EZXNjcmlwdGlvbjtcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xuICAgICAgICAgIH0sIGVycm9yOihlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlTZWN1cml0eVF1ZXN0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JEdGxzID0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcdFx0XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNlY3VyaXR5UXVlc3Rpb25Gb3JtKCk7XG4gICAgICAgIHRoaXMuZGlzcGxheVNlY3VyaXR5UXVlc3Rpb24gPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mYi5zdWJtaXRRdWVzdGlvbm5haXJlKCk7XG4gICAgICB9XG5cdCAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmIuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIYW5kbGUgUmVjb21tZW5kYXRpb24gUG9wdXAgKi9cbiAgcHVibGljIGFzeW5jIGhhbmRsZVJlY29tbWVuZGF0aW9ucyhyZXM6IEFkZHJSZXMsIHJlcTogQWRkclJlcSwgdjogYW55KSB7XG4gICBjb25zdCBzdWdnZXN0aW9uczogQWRkclJlY1tdID0gQXJyYXkuZnJvbShyZXMuYWRkcmVzc1JlY29tbWVuZGF0aW9uTW9kZWwgPz8gW10pO1xuICAgaWYgKCFzdWdnZXN0aW9ucy5sZW5ndGgpIHJldHVybjtcbiAgIGNvbnN0IG1vZGFsID0gYXdhaXQgdGhpcy5tb2RhbEN0cmwuY3JlYXRlKHtcbiAgICAgY29tcG9uZW50OiBBZGRyZXNzUG9wdXBDb21wb25lbnQsXG4gICAgIGNvbXBvbmVudFByb3BzOiB7IG9yaWdpbmFsOiByZXEsIGNob2ljZXM6IHN1Z2dlc3Rpb25zIH0sXG4gICAgIGJhY2tkcm9wRGlzbWlzczogZmFsc2UsXG4gICAgIGFuaW1hdGVkOiB0cnVlLFxuICAgICBzaG93QmFja2Ryb3A6IHRydWVcbiAgIH0pO1xuICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtb2RhbCk7XG4gICBhd2FpdCBtb2RhbC5wcmVzZW50KCk7XG4gICBjb25zdCB7IGRhdGEsIHJvbGUgfSA9IGF3YWl0IG1vZGFsLm9uV2lsbERpc21pc3MoKTtcbiAgIGlmIChyb2xlICE9PSAnY29uZmlybScgfHwgIWRhdGE/LnNlbGVjdGVkKSByZXR1cm47XG4gICB0aGlzLnBhdGNoRm9ybVdpdGhTZWxlY3RlZEFkZHJlc3MoZGF0YS5zZWxlY3RlZCwgdi5kaWZmbWFpbGFkZHJlc3MgPT09ICdZJyk7XG4gIH1cblxuICAgIC8qKiBQYXRjaCBGb3JtIFdpdGggU2VsZWN0ZWQgQWRkcmVzcyAqL1xucHVibGljIHBhdGNoRm9ybVdpdGhTZWxlY3RlZEFkZHJlc3Moc2VsOiBhbnksIGlzTWFpbDogYm9vbGVhbikge1xuY29uc3QgcGF0Y2hPYmogPSBpc01haWxcbj8geyBtYWlsQWRkcmVzczogdGhpcy5tYXBBZGRyZXNzKHNlbCkgfVxuOiB7IHJlc0FkcmVzczogdGhpcy5tYXBBZGRyZXNzKHNlbCksXG4gIG1haWxBZGRyZXNzOiB0aGlzLm1hcEFkZHJlc3Moc2VsKVxuIH07XG50aGlzLmxhc3RWYWxpZGF0ZWRBZGRyZXNzPSB0aGlzLm1hcEFkZHJlc3Moc2VsKTtcbnRoaXMuZmIucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmVGb3JtLmZvcm0ucGF0Y2hWYWx1ZShwYXRjaE9iaik7XG59XG5cbnByaXZhdGUgbWFwQWRkcmVzcyhzZWw6IGFueSkge1xuaWYgKHNlbC5pc09yaWdpbmFsKSB7XG4vLyBPcmlnaW5hbCBBZGRyZXNzXG5yZXR1cm4ge1xuc3RyZWV0QWRkcmVzczogc2VsLmxpbmUxLFxub3B0aW9uYWxBZGRyZXNzOiBzZWwubGluZTIsXG5jaXR5OiBzZWwuY2l0eSxcbnN0YXRlOiB7IGxhYmVsOiBzZWwuc3RhdGUsIHZhbHVlOiBzZWwuc3RhdGUgfSxcbnppcDogc2VsLnppcENvZGUsXG5jb3VudHJ5OiB7IGxhYmVsOiBzZWwuY291bnRyeSwgdmFsdWU6IHNlbC5jb3VudHJ5IH1cbn07XG59IGVsc2Uge1xuLy8gVVNQUyBSZWNvbW1lbmRlZCBBZGRyZXNzXG5yZXR1cm4ge1xuc3RyZWV0QWRkcmVzczogc2VsLmRlbGl2ZXJ5TGluZTEsXG5vcHRpb25hbEFkZHJlc3M6IHNlbC5kZWxpdmVyeUxpbmUyLFxuY2l0eTogc2VsLmNpdHlOYW1lLFxuc3RhdGU6IHsgbGFiZWw6IHNlbC5zdGF0ZUFiYnJldmF0aW9uLCB2YWx1ZTogc2VsLnN0YXRlQWJicmV2YXRpb24gfSxcbnppcDogc2VsLnppcENvZGUsXG5jb3VudHJ5OiB7IGxhYmVsOiBzZWwuY291bnRyeSwgdmFsdWU6IHNlbC5jb3VudHJ5IH1cbn07XG59XG59XG5cbiAgdmVyaWZ5KCkge1xuICAgIHRoaXMub3RwQ29kZSA9IHRoaXMub3RwRm9ybS5nZXQoJ290cCcpPy52YWx1ZTtcbiAgICB0aGlzLnNzLnZhbGlkYXRlT3RwRm9yQ2xhaW1hbnQodGhpcy5vdHBDb2RlKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIHRoaXMub3RwVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgdGhpcy5pc090cFNlbnQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xuICAgICAgdGhpcy5hY2NlcHRlZC5lbWl0KHRydWUpO1xuICAgIH0sIGVyciA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnVmVyaWZ5IHN0YXR1cyBlcnJvciAnLCBlcnIpO1xuICAgICAgdGhpcy5vdHBWZXJpZmllZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7IFxuICAgICAgdGhpcy5hY2NlcHRlZC5lbWl0KGZhbHNlKTtcbiAgICAgIHRoaXMuZXJyb3JEdGxzID0gZXJyLm1zZztcbiAgICB9KVxuICB9XG5cbiAgdmVyaWZ5U2VjdXJpdHlRdWVzdGlvbigpIHtcbiAgICB0aGlzLnNlY3VyaXR5QW5zd2VyID0gdGhpcy5zZWN1cml0eVF1ZXN0aW9uRm9ybS5nZXQoJ3NlY3VyaXR5UXVlc3Rpb25BbnN3ZXInKT8udmFsdWU7XG4gICAgaWYgKHRoaXMuc2VjdXJpdHlBbnN3ZXIgIT09IG51bGwpIHtcbiAgICAgIHRoaXMucmFuZG9tU2VjdXJpdHlRdWVzdGlvbk1vZGVsLnNlY3VyaXR5QW5zd2VyID0gdGhpcy5zZWN1cml0eUFuc3dlcjtcbiAgICAgIHRoaXMuc3MudmFsaWRhdGVVc2VyU2VjdXJpdHlJbmZvcm1hdGlvbih0aGlzLnJhbmRvbVNlY3VyaXR5UXVlc3Rpb25Nb2RlbCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuc2VjdXJpdHlRdWVzdGlvblZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kaXNwbGF5U2VjdXJpdHlRdWVzdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcbiAgICAgICAgdGhpcy5lcnJvckR0bHMgPSBudWxsO1xuICAgICAgICB0aGlzLmFjY2VwdGVkLmVtaXQodHJ1ZSk7XG4gICAgICB9LCBlcnIgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnVmVyaWZ5IHN0YXR1cyBlcnJvciAnLCBlcnIpO1xuICAgICAgICB0aGlzLnNlY3VyaXR5UXVlc3Rpb25WZXJpZmllZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcbiAgICAgICAgdGhpcy5lcnJvckR0bHMgPSBlcnIubXNnOyAgICAgXG4gICAgICAgIHRoaXMuYWNjZXB0ZWQuZW1pdChmYWxzZSk7ICAgIFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICByZWRpcmVjdExpbmsodmlldykge1xuICAgIGxldCB1c2VyTW9kZWwgPSB0aGlzLmxzLmdldFVzZXIoKTtcbiAgICB0aGlzLnV0aWwuc2hvd0xvYWRlcigpLnRoZW4oKCkgPT4ge1xuICAgICAgd2luZG93Lm9wZW4oYCR7TGliQ29uc3RhbnRzLmJlbmVmaXRzVXJsRXh0ZXJuYWx9L2ZhY2VzL3ZpcnR1YWwvY29udGV4dHN3aXRjaC54aHRtbD9hPSR7dXNlck1vZGVsLmFjY2Vzc190b2tlbn0mcj0ke3VzZXJNb2RlbC5yZWZyZXNoX3Rva2VufSZ2PTIyOTkmQ0xBSU1BTlRfUE9SVEFMPXRydWUmdmlldz0ke3ZpZXd9YCwgIFwiX3NlbGZcIik7XG4gICAgfSk7XG4gIH1cbiAgZ2V0RXh0ZXJuYWxDbGFpbWFudFJlcG9ydCgpIHtcbiAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gXCJzdGFydGVkXCI7XG4gICAgcmV0dXJuIHRoaXMuYnMuZ2V0RXh0ZXJuYWxDbGFpbWFudFJlcG9ydCh0aGlzLmxzLmdldFVzZXIoKS5zc24pLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgdGhpcy5kb3dubG9hZFJhd0ZpbGUocmVzLCdFeHRlcm5hbEFnZW5jeVJlcG9ydC5wZGYnKVxuICAgIH0sIGVyciA9PiB7XG4gICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gXCJlcnJvclwiO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0dldHRpbmcgRXh0ZXJuYWwgQ2xhaW1hbnQgUmVwb3J0IGVycm9yJywgZXJyKTtcbiAgICB9KVxuICB9XG4gIGRvd25sb2FkUmF3RmlsZShyZXM6YW55LCBmaWxlbmFtZTogc3RyaW5nKXtcbiAgICBsZXQgYmluYXJ5RGF0YSA9IFtdO1xuICAgIGJpbmFyeURhdGEucHVzaChyZXMpO1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKGJpbmFyeURhdGEsIHsgdHlwZTogXCJhcHBsaWNhdGlvbi94bHN4XCIgfSkpO1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgYS5ocmVmID0gdXJsO1xuICAgIGEuZG93bmxvYWQgPSBmaWxlbmFtZTtcbiAgICBhLmNsaWNrKCk7XG4gICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xufVxuICBoYW5kbGVFcnJvcihlcnJvcikge1xuICAgIGlmIChlcnJvcj8uZXJyb3JDb2RlID09ICc0MjInKSB7XG4gICAgICB0aGlzLmVycm9yVGV4dCA9IGVycm9yLm1zZ1swXTtcbiAgICB9XG4gICAgdGhpcy5zaG93RXJyb3IgPSB0cnVlO1xuICB9XG5cbiAgc3VjY2Vzcyhtc2cpIHtcbiAgICB0aGlzLnNob3dTdWNjZXNzID0gdHJ1ZTtcbiAgfVxuXG4gIGxvZ291dCgpIHtcbiAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoJy9sYW5kaW5nJyk7XG4gICAgdGhpcy5scy5sb2dvdXQoKTtcbiAgfVxuXG4gZ2V0TGlzdE9mQWN0aXZlQ2xhaW0oKXtcbiAgICB0aGlzLmNsYWltU2VydmljZS5nZXRMaXN0T2ZBY3RpdmVDbGFpbSgpLnN1YnNjcmliZSgocmVzKT0+e1xuICAgICAgdGhpcy5saXN0T2ZBY3RpdmVDbGFpbSA9IHJlcztcbiAgICB9KVxuICB9XG5cbiAgZ2V0VmVyaWZpY2F0aW9uUmVwb3J0KCl7XG4gICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9IFwic3RhcnRlZFwiO1xuICAgIHJldHVybiB0aGlzLmJzLmdldFZlcmlmaWNhdGlvblJlcG9ydCh0aGlzLmxzLmdldFVzZXIoKS5jbGFpbWFudElkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIHRoaXMuZG93bmxvYWRSYXdGaWxlKHJlcywnVW5lbXBsb3ltZW50VmVyaWZpY2F0aW9uUmVwb3J0LnBkZicpXG4gICAgfSwgZXJyID0+IHtcbiAgICAgIHRoaXMuZG93bmxvYWRTdGF0dXMgPSBcImVycm9yXCI7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnR2V0dGluZyBVbmVtcGxveW1lbnQgVmVyaWZpY2F0aW9uIFJlcG9ydCBlcnJvcicsIGVycik7XG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBmaW5pc2hBbmRTYXZlKGZvcm1EYXRhOiBhbnksIGlzQWRkcmVzc1ZhbGlkYXRlZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd0lubGluZUVycm9yPSBmYWxzZTsgXG4gICAgICAgdGhpcy5mYi5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZUZvcm0uZm9ybS5jb250cm9sc1snaGlkSXNBZGRyZXNzVmFsaWRhdGVkJ10uc2V0VmFsdWUoaXNBZGRyZXNzVmFsaWRhdGVkKTtcblxuICAgICBpZiAoKGZvcm1EYXRhWydwaG9uZSddID09IGZvcm1EYXRhWydoaWRPcmlnaW5hbFBob25lJ10pICYmIChmb3JtRGF0YVsnZW1haWwnXSA9PSBmb3JtRGF0YVsnaGlkT3JpZ2luYWxFbWFpbCddKSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiUGhvbmUgb3IgRW1haWwgTm90IENoYW5nZWRcIik7XG4gICAgICAgICAgdGhpcy5pc090cFNlbnQgPSBmYWxzZTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImFkZHJlc3MgdmFsaWRhdGlvbiBmb3JtIGZsYWdcIixmb3JtRGF0YS5oaWRJc0FkZHJlc3NWYWxpZGF0ZWQpO1xuICAgICAgICAgIHRoaXMuZmIuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1EYXRhW1wiaGlkSXNFbWFpbENoYW5nZWRcIl0gPT09IFwiWVwiICYmIGZvcm1EYXRhW1wiaGlkSXNQaG9uZUNoYW5nZWRcIl0gPT09IFwiWVwiKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJCb3RoIEVtYWlsIGFuZCBQaG9uZSBDaGFuZ2VkXCIpO1xuICAgICAgICAgIHRoaXMuZXJyb3JUZXh0ID0gXCJQbGVhc2UgY29udGFjdCBNREVTIHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UgdXBkYXRpbmcgRW1haWwgQWRkcmVzcy5cIjtcbiAgICAgICAgICB0aGlzLnNob3dFcnJvciA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybURhdGFbXCJoaWRPcmlnaW5hbFBob25lXCJdID09PSBcIm51bGxcIiAmJiBmb3JtRGF0YVtcImhpZElzRW1haWxDaGFuZ2VkXCJdID09PSBcIllcIikge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiVHJ5aW5nIHRvIGNoYW5nZSBlbWFpbCBidXQgcGhvbmUgbnVtYmVyIGlzIG5vdCBwcmVzZW50XCIpO1xuICAgICAgICAgIHRoaXMuZXJyb3JUZXh0ID0gXCJQbGVhc2UgY29udGFjdCBNREVTIHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UgdXBkYXRpbmcgRW1haWwgQWRkcmVzcyBhbmQgQ2VsbCBQaG9uZSBOdW1iZXIuXCI7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmIChmb3JtRGF0YVtcImhpZElzRW1haWxDaGFuZ2VkXCJdID09PSBcIllcIikge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJFbWFpbCBDaGFuZ2VkXCIpO1xuICAgICAgICAgICAgdGhpcy50eXBlID0gJ3RleHQnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybURhdGFbXCJoaWRJc1Bob25lQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiUGhvbmUgQ2hhbmdlZFwiKTtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9ICdlbWFpbCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNPdHBTZW50ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmluaXRpbGl6ZUZvcm0oKTtcbiAgICAgICAgICB0aGlzLnNzLnNlbmRPdHBXaXRob3V0Q2FwdGNoYSh0aGlzLnR5cGUpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IFwiQWNjZXNzIGNvZGUgc2VudCBzdWNjZXNzZnVsbHkuXCI7XG4gICAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPdHBTZW50ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JEdGxzID0gZXJyLm1zZztcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gIH1cbiAgaXNBZGRyZXNzQ2hhbmdlZChjdXJyZW50OmFueSwgbGFzdDphbnkpOiBib29sZWFue1xuICByZXR1cm4gY3VycmVudC5zdHJlZXRBZGRyZXNzICE9PSBsYXN0LnN0cmVldEFkZHJlc3MgfHxcbiAgICAgICAgIGN1cnJlbnQub3B0aW9uYWxBZGRyZXNzICE9PSBsYXN0Lm9wdGlvbmFsQWRkcmVzcyB8fCBcbiAgICAgICAgIGN1cnJlbnQuY2l0eSAhPT0gbGFzdC5jaXR5IHx8XG4gICAgICAgICBjdXJyZW50LnN0YXRlPy52YWx1ZSAhPT0gbGFzdC5zdGF0ZT8udmFsdWUgfHxcbiAgICAgICAgIGN1cnJlbnQuemlwICE9PSBsYXN0LnppcCB8fFxuICAgICAgICAgY3VycmVudC5jb3VudHJ5Py52YWx1ZSAhPT0gbGFzdC5jb3VudHJ5Py52YWx1ZTtcbiAgfVxufVxuIiwiPHAtZGlhbG9nIHZpc2libGU9XCJ0cnVlXCIgbW9kYWw9XCJ0cnVlXCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgIFticmVha3BvaW50c109XCJ7JzEwMjRweCc6ICc3NXZ3JywgJzc2OHB4JzogJzg1dncnLCAnNjQwcHgnOiAnMTAwdncnfVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc2MHZ3J31cIiBwb3NpdGlvbj1cInRvcFwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnQgaGVhZGluZ1wiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAyNHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7XCJZb3VyIEFjY291bnRcIiB8IHRyYW5zbGF0ZX19IDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4O1wiPihDTEFJTUFOVCBJRFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xzLmdldFVzZXIoKS5jbGFpbWFudElkfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uICpuZ0lmPVwiIWlzTUUoKVwiIHN0eWxlQ2xhc3M9XCJpb24tcGFkZGluZy1zdGFydFwiIFtvcHRpb25zXT1cInByb2ZpbGVPcHRzXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIiAob25PcHRpb25DbGljayk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiAqbmdJZj1cImlzTUUoKVwiIHN0eWxlQ2xhc3M9XCJpb24tcGFkZGluZy1zdGFydFwiIFtvcHRpb25zXT1cInByb2ZpbGVPcHRzSVZSXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIiAob25PcHRpb25DbGljayk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIShzaG93U3VjY2VzcyB8fCBzaG93RXJyb3IpXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogLThweDtcIj5cclxuICAgICAgICA8YXBwLWZvcm0tYnVpbGRlciAjZmIgKm5nSWY9XCJzZWxlY3RlZCA9PSAncGVyc29uYWwtZGV0YWlscydcIiBbZmxvd0tleV09XCJzZWxlY3RlZFwiIFtzaG93T25seVF1ZXN0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbaGlkZUhlYWRlcl09XCJ0cnVlXCIgW2hpZGVGb290ZXJdPVwidHJ1ZVwiIFtzaXplWHNdPVwiMTJcIiBbc2l6ZVNtXT1cIjEyXCIgW3NpemVNZF09XCIxMlwiIFtzaXplTGddPVwiMTJcIlxyXG4gICAgICAgICAgICBbc2l6ZVhsXT1cIjEyXCIgW29mZnNldFhsXT1cIjBcIiBbb2Zmc2V0TGddPVwiMFwiIChvbkVycm9yKT1cImhhbmRsZUVycm9yKCRldmVudClcIiAob25Db21wbGV0ZSk9XCJzdWNjZXNzKCRldmVudClcIj5cclxuICAgICAgICA8L2FwcC1mb3JtLWJ1aWxkZXI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkID09ICdjb250YWN0LWRldGFpbHMnXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dJbmxpbmVFcnJvciAmJiBzZWxlY3RlZCA9PT0gJ2NvbnRhY3QtZGV0YWlscydcIiBjbGFzcz1cImVycm9yLWJhbm5lclwiPlxyXG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiYWxlcnQtY2lyY2xlLW91dGxpbmVcIiBzdHlsZT1cImNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTsgZm9udC1zaXplOiAxOHB4OyBtYXJnaW4tcmlnaHQ6IDhweDtcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDxzcGFuPnt7IGVycm9yVGV4dCB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YXBwLWZvcm0tYnVpbGRlciAjZmIgKm5nSWY9XCJzZWxlY3RlZCA9PSAnY29udGFjdC1kZXRhaWxzJ1wiIFtmbG93S2V5XT1cInNlbGVjdGVkXCIgW3Nob3dPbmx5UXVlc3Rpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtoaWRlSGVhZGVyXT1cInRydWVcIiBbaGlkZUZvb3Rlcl09XCJ0cnVlXCIgW3NpemVYc109XCIxMlwiIFtzaXplU21dPVwiMTJcIiBbc2l6ZU1kXT1cIjEyXCIgW3NpemVMZ109XCIxMlwiXHJcbiAgICAgICAgICAgIFtzaXplWGxdPVwiMTJcIiBbb2Zmc2V0WGxdPVwiMFwiIFtvZmZzZXRMZ109XCIwXCIgKG9uRXJyb3IpPVwiaGFuZGxlRXJyb3IoJGV2ZW50KVwiIChvbkNvbXBsZXRlKT1cInN1Y2Nlc3MoJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvYXBwLWZvcm0tYnVpbGRlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YXBwLWZvcm0tYnVpbGRlciAjZmIgKm5nSWY9XCJzZWxlY3RlZCA9PSAncGF5bWVudC1kZXRhaWxzJ1wiIFtmbG93S2V5XT1cInNlbGVjdGVkXCIgW3Nob3dPbmx5UXVlc3Rpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtoaWRlSGVhZGVyXT1cInRydWVcIiBbaGlkZUZvb3Rlcl09XCJ0cnVlXCIgW3NpemVYc109XCIxMlwiIFtzaXplU21dPVwiMTJcIiBbc2l6ZU1kXT1cIjEyXCIgW3NpemVMZ109XCIxMlwiXHJcbiAgICAgICAgICAgIFtzaXplWGxdPVwiMTJcIiBbb2Zmc2V0WGxdPVwiMFwiIFtvZmZzZXRMZ109XCIwXCIgKG9uRXJyb3IpPVwiaGFuZGxlRXJyb3IoJGV2ZW50KVwiIChvbkNvbXBsZXRlKT1cInN1Y2Nlc3MoJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvYXBwLWZvcm0tYnVpbGRlcj5cclxuICAgICAgICA8YXBwLWZvcm0tYnVpbGRlciAjZmIgKm5nSWY9XCJzZWxlY3RlZCA9PSAndXBkYXRlLWl2cidcIiBbZmxvd0tleV09XCJzZWxlY3RlZFwiIFtzaG93T25seVF1ZXN0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbaGlkZUhlYWRlcl09XCJ0cnVlXCIgW2hpZGVGb290ZXJdPVwidHJ1ZVwiIFtzaXplWHNdPVwiMTJcIiBbc2l6ZVNtXT1cIjEyXCIgW3NpemVNZF09XCIxMlwiIFtzaXplTGddPVwiMTJcIlxyXG4gICAgICAgICAgICBbc2l6ZVhsXT1cIjEyXCIgW29mZnNldFhsXT1cIjBcIiBbb2Zmc2V0TGddPVwiMFwiIChvbkVycm9yKT1cImhhbmRsZUVycm9yKCRldmVudClcIiAob25Db21wbGV0ZSk9XCJzdWNjZXNzKCRldmVudClcIj5cclxuICAgICAgICA8L2FwcC1mb3JtLWJ1aWxkZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwcm9vZi1vZi11bmVtcGxveW1lbnRcIiAqbmdJZj1cInNlbGVjdGVkID09ICdwcm9vZi1vZi11bmVtcGxveW1lbnQnXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInBoYXNlVHdvUHJvb2ZPZlVJVmlldz09PSd0cnVlJztlbHNlICBub25QaHJhc2VUd29WaWV3XCIgc3R5bGU9XCJwYWRkaW5nOiAwcHggMXJlbVwiPlxyXG4gICAgICAgICAgICA8IS0tIDxoMiBzdHlsZT1cImZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zLCBMaWdodCc7XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LmxhYmVsLnByb29mLm9mLnVuZW1wbG95bWVudC5wYXlcInwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9oMj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFsaXN0T2ZBY3RpdmVDbGFpbSB8fCBsaXN0T2ZBY3RpdmVDbGFpbS5sZW5ndGggPT09IDA7IGVsc2UgYWN0aXZlQ2xhaW1UYWJsZVwiPlxyXG4gICAgICAgICAgICAgICA8aDMgc3R5bGU9XCJmb250LWZhbWlseTogJ09wZW4gU2FucywgTGlnaHQnO1wiPlxyXG4gICAgICAgICAgICAgICAge3tcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LmxhYmVsLm5vLmFjdGl2ZS5jbGFpbVwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhY3RpdmVDbGFpbVRhYmxlPlxyXG4gICAgICAgICAgICAgICAgPHAtdGFibGUgW3ZhbHVlXT1cImxpc3RPZkFjdGl2ZUNsYWltXCIgZGF0YUtleT1cImNsYWltSWRcIiBbcm93RXhwYW5kTW9kZV09XCInc2luZ2xlJ1wiIHN0eWxlQ2xhc3M9XCJzZXBlcmF0ZS1yb3dcIiBjbGFzcz1cInNlcGVyYXRlLXJvd1wiXHJcbiAgICAgICAgICAgICAgICBbdGFibGVTdHlsZV09XCJ7J2JvcmRlci1jb2xsYXBzZSc6ICdzZXBhcmF0ZScsJ2JvcmRlci1zcGFjaW5nJzogJzAgOHB4J31cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWRhdGEgbGV0LWV4cGFuZGVkPVwiZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgW3BSb3dUb2dnbGVyXT1cImRhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiZXhwYW5kZWQgPyAncGkgcGktY2hldnJvbi1kb3duJyA6ICdwaSBwaS1jaGV2cm9uLXJpZ2h0J1wiIHN0eWxlPVwiZm9udC1zaXplOiAxLjVyZW07XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhLmVmZmVjdGl2ZURhdGV9fSAtIHt7ZGF0YS5ieWVEYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhLmVudGl0bGVtZW50VHlwZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJvd2V4cGFuc2lvblwiIGxldC1kYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjdcIiBzdHlsZT1cIiBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlNGU0ZTQ7Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2U0ZTRlNDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1ncmlkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O2p1c3RpZnktY29udGVudDogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZG9jRmlsZUxpbmtcIiBoZWlnaHQ9JzUwMHB4JyB3aWR0aD0nNDIwcHgnLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdyA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImRhdGEuZGVzY3JpcHRpb25cIiBzdHlsZT1cImZvbnQtc2l6ZTogMTlweDtcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiIHNoYXBlPVwicm91bmRcIiBzdHlsZT1cInBhZGRpbmctaW5saW5lLWVuZDogMnJlbTtcIiAoY2xpY2spPVwiZ2V0VmVyaWZpY2F0aW9uUmVwb3J0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5idXR0b24uZG93bmxvYWQucmVwb3J0XCJ8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3AtdGFibGU+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+IC0tPlxyXG4gICAgICAgICAgICA8aW9uLWdyaWQgc3R5bGU9XCJtYXJnaW4tdG9wOiAxNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCIhaXNNRSgpXCIgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiIGxheW91dD1cInJvd1wiIHN0eWxlID0gXCJtYXJnaW46M3B4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNhcmQgY2xhc3M9XCJwLTRcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taGVhZGVyIHN0eWxlPVwiYm94LXNoYWRvdzogMCAwIDAgMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT48aSBjbGFzcz1cInBpIHBpLWZpbGVcIiBzdHlsZT1cImNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7Zm9udC1zaXplOiAzMHB4O1wiPjwvaT57eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnBoYXNlLnR3by5sYWJlbC5kb3dubG9hZC51bmVtcGxveW1lbnQuY2xhaW0ucmVwb3J0XCJ8IHRyYW5zbGF0ZX19PC9pb24tY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwicGwtMCBwci0wIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J3Byb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnBoYXNlLnR3by5vdmVybGF5LnVuZW1wbG95bWVudC5jbGFpbS5yZXBvcnQnfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJnZXRFeHRlcm5hbENsYWltYW50UmVwb3J0KClcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOjMwcHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIkNsYWltYW50LXJlcG9ydC1idG5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb3dubG9hZC1vdXRsaW5lXCIgY2xhc3M9XCJwci0xIHBiLTFcIj48L2lvbi1pY29uPnt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQucGhhc2UudHdvLmJ1dHRvbi5kb3dubG9hZC5yZXBvcnRcInwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZG93bmxvYWRTdGF0dXM9PSdzdGFydGVkJ1wiPnt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQuc3RhdHVzLmRvd25sb2FkLnN0YXJ0XCJ8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJkb3dubG9hZFN0YXR1cz09J2Vycm9yJ1wiPnt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQuc3RhdHVzLmRvd25sb2FkLmVycm9yXCJ8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGxheW91dD1cInJvd1wiIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIiBzdHlsZSA9IFwibWFyZ2luOjNweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkIGNsYXNzPVwicC00XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWhlYWRlciBzdHlsZT1cImJveC1zaGFkb3c6IDAgMCAwIDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+PGkgY2xhc3M9XCJwaSBwaS1jaGVjay1jaXJjbGVcIiBzdHlsZT1cImNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7Zm9udC1zaXplOiAzMHB4O1wiPjwvaT4gIHt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQucGhhc2UudHdvLmxhYmVsLnN1bW1hcnkudW5lbXBsb3ltZW50LmNsYWltXCJ8IHRyYW5zbGF0ZX19PC9pb24tY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwicGwtMCBwci0wIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J3Byb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnBoYXNlLnR3by5vdmVybGF5LnN1bW1hcnkudW5lbXBsb3ltZW50LmNsYWltJ3wgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwicmVkaXJlY3RMaW5rKCcuY2xhaW1hbnRzdW1tYXJ5dmVyaWZpY2F0aW9uJylcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOjMwcHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIkNsYWltYW50LXN1bW1hcnktdmVyLWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkLW91dGxpbmVcIiBjbGFzcz1cInByLTEgcGItMVwiPjwvaW9uLWljb24+IHt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQucGhhc2UudHdvLmJ1dHRvbi5kb3dubG9hZC5yZXBvcnRcInwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI25vblBocmFzZVR3b1ZpZXc+XHJcbiAgICAgICAgICAgIDxpb24tZ3JpZCBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sICpuZ0lmPVwiIWlzTUUoKVwiIGxheW91dD1cInJvd1wiIHN0eWxlID0gXCJtYXJnaW46M3B4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5sYWJlbC5kb3dubG9hZC51bmVtcGxveW1lbnQuY2xhaW0ucmVwb3J0XCJ8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImdldEV4dGVybmFsQ2xhaW1hbnRSZXBvcnQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiQ2xhaW1hbnQtcmVwb3J0LWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkLW91dGxpbmVcIj48L2lvbi1pY29uPnt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQuYnV0dG9uLmV4dGVybmFsLmNsYWltYW50LnJlcG9ydFwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRvd25sb2FkU3RhdHVzPT0nc3RhcnRlZCdcIj57eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnN0YXR1cy5kb3dubG9hZC5zdGFydFwifCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJkb3dubG9hZFN0YXR1cz09J2Vycm9yJ1wiPnt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQuc3RhdHVzLmRvd25sb2FkLmVycm9yXCJ8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBsYXlvdXQ9XCJyb3dcIiBzdHlsZSA9IFwibWFyZ2luOjNweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQubGFiZWwuc3VtbWFyeS51bmVtcGxveW1lbnQuY2xhaW1cInwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxicj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiAoY2xpY2spPVwicmVkaXJlY3RMaW5rKCcuY2xhaW1hbnRzdW1tYXJ5dmVyaWZpY2F0aW9uJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIkNsYWltYW50LXN1bW1hcnktdmVyLWJ0blwiPnt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQuYnV0dG9uLnVuZW1wbG95bWVudC52ZXJpZmljYXRpb25cInwgdHJhbnNsYXRlfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJpc01TKCkgJiYgc2VsZWN0ZWQgPT0gJ2NvbnRhY3QtZGV0YWlscycgJiYgaXNPdHBTZW50ID09IHRydWVcIiBzdHlsZT1cIm1hcmdpbi10b3A6IC05MHB4O1wiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwib3RwRm9ybVwiICNvdHBGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCI+XHJcbiAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm90cFwiIFtpbm5lckhUTUxdPVwiJ3Byb2ZpbGUuY29udGFjdC5kZXRhaWxzLmxhYmVsLm90cCcgfCB0cmFuc2xhdGU6eyB0eXBlOiB0eXBlIH1cIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1pbnB1dE1hc2sgZm9ybUNvbnRyb2xOYW1lPVwib3RwXCIgbWFzaz1cIjk5OTk5OVwiIHNpemU9XCI2XCIgbWF4bGVuZ3RoPVwiNlwiIG1pbmxlbmd0aD1cIjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvRm9jdXNdPSd0cnVlJyB0aXRsZT0nRW50ZXIgQXV0aGNvZGUnPjwvcC1pbnB1dE1hc2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J290cCcgW2Zvcm1dPVwib3RwRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ0F1dGhjb2RlIGlzIHJlcXVpcmVkLicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlubGVuZ3RoOiAnQXV0aGNvZGUgc2hvdWxkIGhhdmUgNiBudW1iZXJzLidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwidmVyaWZ5KClcIj57eyBcInByb2ZpbGUuY29udGFjdC5kZXRhaWxzLmJ1dHRvbi52ZXJpZnlcInwgdHJhbnNsYXRlfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImlzTUUoKSAmJiBzZWxlY3RlZCA9PSAnY29udGFjdC1kZXRhaWxzJyAmJiBkaXNwbGF5U2VjdXJpdHlRdWVzdGlvbiA9PSB0cnVlXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAtOTBweDtcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInNlY3VyaXR5UXVlc3Rpb25Gb3JtXCIgI3NlY3VyaXR5UXVlc3Rpb25Gb3JtRGlyZWN0aXZlPVwibmdGb3JtXCI+XHJcbiAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic2VjdXJpdHlRdWVzdGlvbkFuc3dlclwiIFtpbm5lckhUTUxdPVwiJ3Byb2ZpbGUuY29udGFjdC5kZXRhaWxzLmxhYmVsLnNlY3VyaXR5UXVlc3Rpb24nIHwgdHJhbnNsYXRlOnsgc2VjdXJpdHlRdWVzdGlvblRvQXNrOiBzZWN1cml0eVF1ZXN0aW9uVG9Bc2sgfVwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHQ8aW5wdXQgcElucHV0VGV4dCBmb3JtQ29udHJvbE5hbWU9XCJzZWN1cml0eVF1ZXN0aW9uQW5zd2VyXCIgc2l6ZT1cIjMwXCIgbWF4bGVuZ3RoPVwiMzBcIiB0aXRsZT1cIlNlY3VyaXR5IEFuc3dlclwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J3NlY3VyaXR5UXVlc3Rpb25BbnN3ZXInIFtmb3JtXT1cInNlY3VyaXR5UXVlc3Rpb25Gb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnU2VjdXJpdHkgQW5zd2VyIGlzIHJlcXVpcmVkLidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwidmVyaWZ5U2VjdXJpdHlRdWVzdGlvbigpXCI+e3sgXCJwcm9maWxlLmNvbnRhY3QuZGV0YWlscy5idXR0b24udmVyaWZ5XCJ8IHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJlcnJvckR0bHNcIj57e2Vycm9yRHRsc319PC9tYXQtZXJyb3I+XHJcbiAgICA8aW9uLWxhYmVsICpuZ0lmPVwic3VjY2Vzc0R0bHNcIiBzdHlsZT1cImNvbG9yOiB2YXIoLS1pb24tY29sb3ItZ3JlZW4pXCI+e3tzdWNjZXNzRHRsc319PGJyIC8+PC9pb24tbGFiZWw+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInNob3dTdWNjZXNzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tcGFkZGluZy10b3BcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmstY2lyY2xlXCIgc3R5bGU9XCJmb250LXNpemU6IDgwcHg7IGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZ3JlZW4pO1wiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDxoMT57eyBcInByb2ZpbGUuYmFubmVyLnN1Y2Nlc3NcInwgdHJhbnNsYXRlfX08L2gxPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInNob3dFcnJvclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLXBhZGRpbmctdG9wXCI+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2UtY2lyY2xlLW91dGxpbmVcIiBzdHlsZT1cImZvbnQtc2l6ZTogODBweDsgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIpO1wiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiaXNNUygpXCI+XHJcbiAgICAgICAgICAgICAgICA8aDE+e3sgZXJyb3JUZXh0ID8gZXJyb3JUZXh0IDogKCdwcm9maWxlLmJhbm5lci5yZXF1ZXN0LnByb2Nlc3MuZmFpbHVyZScgfCB0cmFuc2xhdGUpIH19PC9oMT5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cIiFpc01TKClcIj5cclxuICAgICAgICAgICAgICAgIDxoMT57e2Vycm9yVGV4dCA/IGVycm9yVGV4dCA6ICgncHJvZmlsZS5iYW5uZXIucmVxdWVzdC5wcm9jZXNzLmZhaWx1cmUnIHwgdHJhbnNsYXRlKSB9fTwvaDE+XHJcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxyXG4gICAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIiBzaXplPVwiMTJcIiBzaXplWGw9XCI0XCIgc2l6ZUxnPVwiNFwiIHNpemVNZD1cIjVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImxvZ291dCgpXCI+e3sgXCJwcm9maWxlLmJ1dHRvbi5sb2dvdXRcInwgdHJhbnNsYXRlfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgc2l6ZT1cIjEyXCIgc2l6ZVhsPVwiOFwiIHNpemVMZz1cIjhcIiBzaXplTWQ9XCI3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgdHlwZT1cInJlc2V0XCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+e3sgXCJwcm9maWxlLmJ1dHRvbi5jbG9zZVwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJzYXZlKClcIiAqbmdJZj1cIiEoc2hvd1N1Y2Nlc3MgfHwgc2hvd0Vycm9yKSAmJiBzZWxlY3RlZCE9J3Byb29mLW9mLXVuZW1wbG95bWVudCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNPdHBTZW50PT0gdHJ1ZSB8fCBkaXNwbGF5U2VjdXJpdHlRdWVzdGlvbj09IHRydWVcIj57eyBcInByb2ZpbGUuYnV0dG9uLnNhdmVcInwgdHJhbnNsYXRlfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWRpYWxvZz4iXX0=
869
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcHJvZmlsZS9wcm9maWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9maWxlL3Byb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBTXBFLE9BQU8sRUFBZ0QsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU96RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDUDdELDBDQUN1RjtJQUEvRCxvUUFBc0IsME1BQWtCLGVBQUEsNkJBQXFCLENBQUEsSUFBdkM7SUFDOUMsaUJBQWlCOzs7SUFGOEMsNkNBQXVCLDZCQUFBOzs7O0lBR3RGLDBDQUN1RjtJQUEvRCxxUUFBc0IsMk1BQWtCLGVBQUEsNkJBQXFCLENBQUEsSUFBdkM7SUFDOUMsaUJBQWlCOzs7SUFGNkMsZ0RBQTBCLDZCQUFBOzs7SUFacEcsZ0NBQVUsY0FBQSxpQkFBQTtJQUdFLFlBQStCOztJQUFBLCtCQUErQjtJQUFBLFlBQzlCO0lBQUEsaUJBQU8sRUFBQSxFQUFBO0lBRy9DLCtCQUFTLGNBQUE7SUFFRCxzR0FF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QUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0ksUUFBUTtrQkFBakIsTUFBTTs7a0ZBL0RJLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tYm9PcHRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9Db21ib01vZGVsJztcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXJQYWdlIH0gZnJvbSAnLi4vcXVlc3Rpb25uYWlyZS9mb3JtLWJ1aWxkZXIvZm9ybS1idWlsZGVyLnBhZ2UnO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IENsYWltYW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50LXNlcnZpY2UvY2xhaW1hbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTZWN1cml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZWN1cml0eS1zZXJ2aWNlL3NlY3VyaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTmdGb3JtLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IEVsZW1lbnRzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9FbGVtZW50c01vZGVsJztcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSAnLi4vLi4vcGFnZXMvQmFzZVBhZ2UnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcbmltcG9ydCB7IEJpcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmlydC1zZXJ2aWNlL2JpcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDbGFpbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbXMvY2xhaW1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZlQ2xhaW1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9BY3RpdmVDbGFpbU1vZGVsJzsgXG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBBZGRyZXNzVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hZGRyZXNzLXZhbGlkYXRpb24tc2VydmljZS9hZGRyZXNzLXZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBZGRyZXNzUmVjb21tZW5kYXRpb25Nb2RlbCBhcyBBZGRyUmVjfSBmcm9tICcuLi8uLi9tb2RlbHMvYWRkcmVzc1ZhbGlkYXRpb24vQWRkcmVzc1JlY29tbWVuZGF0aW9uTW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc1BvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkcmVzcy1wb3B1cC9hZGRyZXNzLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBBZGRyZXNzVmFsaWRhdGlvblJlcXVlc3RDb21wb25lbnRNb2RlbCBhcyBBZGRyUmVxfSBmcm9tICcuLi8uLi9tb2RlbHMvYWRkcmVzc1ZhbGlkYXRpb24vQWRkcmVzc1ZhbGlkYXRpb25SZXF1ZXN0Q29tcG9uZW50TW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc1ZhbGlkYXRpb25SZXNwb25zZUNvbXBvbmVudE1vZGVsIGFzIEFkZHJSZXN9IGZyb20gJy4uLy4uL21vZGVscy9hZGRyZXNzVmFsaWRhdGlvbi9BZGRyZXNzVmFsaWRhdGlvblJlc3BvbnNlQ29tcG9uZW50TW9kZWwnO1xuaW1wb3J0IHsgU2VjdXJpdHlRdWVzdGlvbkFuc3dlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1NlY3VyaXR5UXVlc3Rpb25BbnN3ZXJNb2RlbCc7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZmlsZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNob3dTdWNjZXNzID0gZmFsc2U7XG4gIHNob3dFcnJvciA9IGZhbHNlO1xuICBwaGFzZVR3b1Byb29mT2ZVSVZpZXcgPSBMaWJDb25zdGFudHMuUGhhc2VUd29Qcm9vZk9mVUlWaWV3O1xuICBkb3dubG9hZFN0YXR1cyA9IFwiXCI7XG4gIGRvY0ZpbGVMaW5rOnN0cmluZyA9IFwiYXNzZXRzL2ltYWdlcy9zYW1wbGVEb2MucG5nXCI7XG4gIGVycm9yVGV4dDogc3RyaW5nO1xuICBjbGFpbWFudEFkZHJlc3NJZDogbnVtYmVyPSAwO1xuICBsYXN0VmFsaWRhdGVkQWRkcmVzczogYW55ID0gbnVsbDtcbiAgbGFzdFZhbGlkYXRlUmVzdWx0OiBzdHJpbmcgPScnO1xuICBhdHRlbXB0Q291bnQ6IG51bWJlciA9IDA7XG4gIGlzQWRkcmVzc1ZhbGlkYXRlZDogc3RyaW5nID0gJzAnO1xuICBzaG93SW5saW5lRXJyb3IgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnZmInKSBmYjogRm9ybUJ1aWxkZXJQYWdlXG5cbiAgQE91dHB1dCgpXG4gIG9uQ2FuY2VsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgcHJvZmlsZU9wdHMgPSBDb21ib09wdGlvbi5DTEFJTUFOVF9QUk9GSUxFX09QVFM7XG5cbiAgcHVibGljIHByb2ZpbGVPcHRzSVZSID0gQ29tYm9PcHRpb24uQ0xBSU1BTlRfUFJPRklMRV9PUFRTX0lWUjtcblxuICBwdWJsaWMgc2VsZWN0ZWQgPSAncGVyc29uYWwtZGV0YWlscyc7XG5cbiAgcHVibGljIHR5cGU6IHN0cmluZztcblxuICBwdWJsaWMgaXNPdHBTZW50OiBib29sZWFuO1xuXG4gIHB1YmxpYyBzdWNjZXNzRHRscztcblxuICBwdWJsaWMgZXJyb3JEdGxzO1xuXG4gIEBWaWV3Q2hpbGQoJ290cEZvcm1EaXJlY3RpdmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcblxuICBwdWJsaWMgb3RwRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xuXG4gIHB1YmxpYyBvdHBGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBvdHBDb2RlO1xuXG4gIHB1YmxpYyBvdHBWZXJpZmllZDogYm9vbGVhbjtcblxuICBwdWJsaWMgZGlzcGxheVNlY3VyaXR5UXVlc3Rpb246IGJvb2xlYW47XG5cbiAgcHVibGljIHNlY3VyaXR5UXVlc3Rpb25Gb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBzZWN1cml0eVF1ZXN0aW9uVG9Bc2s7XG5cbiAgcHVibGljIHNlY3VyaXR5QW5zd2VyO1xuXG4gIHB1YmxpYyBzZWN1cml0eVF1ZXN0aW9uVmVyaWZpZWQ6IGJvb2xlYW47XG5cbiAgcHVibGljIHJhbmRvbVNlY3VyaXR5UXVlc3Rpb25Nb2RlbDogU2VjdXJpdHlRdWVzdGlvbkFuc3dlck1vZGVsO1xuXG4gIHB1YmxpYyBmYWlsQ291bnRlcjogbnVtYmVyID0gMDtcblxuICBAVmlld0NoaWxkKCdzZWN1cml0eVF1ZXN0aW9uRm9ybURpcmVjdGl2ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuXG4gIHB1YmxpYyBzZWN1cml0eVF1ZXN0aW9uRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xuXG4gIHB1YmxpYyBwcm9vZk9mVW5lbXBsb3ltZW50RGF0YTphbnk7XG4gIEBJbnB1dCgpIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBFbGVtZW50c01vZGVsO1xuICBAT3V0cHV0KCkgYWNjZXB0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIGxpc3RPZkFjdGl2ZUNsYWltOkFjdGl2ZUNsYWltTW9kZWxbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwdWJsaWMgbHM6IExvZ2luU2VydmljZSwgcHVibGljIGNzOiBDbGFpbWFudFNlcnZpY2UsIHB1YmxpYyBiczogQmlydFNlcnZpY2UsIHB1YmxpYyBjbGFpbVNlcnZpY2U6IENsYWltU2VydmljZSxcbiAgICBwdWJsaWMgbmF2OiBOYXZDb250cm9sbGVyLCBwdWJsaWMgc3M6IFNlY3VyaXR5U2VydmljZSwgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLCBwdWJsaWMgZm9ybWJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixwdWJsaWMgdGl0bGVTZXJ2aWNlOiBUaXRsZSxcbiAgICBwcml2YXRlIG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyKSB7XG4gICAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5zaG93RXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dTdWNjZXNzID0gZmFsc2U7XG4gICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9IFwiXCI7XG4gICAgaWYodGhpcy5zZWxlY3RlZD09PSdwcm9vZi1vZi11bmVtcGxveW1lbnQnKXtcbiAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKFwiUHJvb2Ygb2YgVW5lbXBsb3ltZW50XCIpXG4gICAgICB0aGlzLmdldExpc3RPZkFjdGl2ZUNsYWltKCk7XG4gICAgfVxuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgaW5pdGlsaXplRm9ybSgpIHtcbiAgICB0aGlzLm90cEZvcm0gPSB0aGlzLmZvcm1idWlsZGVyLmdyb3VwKHtcbiAgICAgICdvdHAnOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDYpXV0sXG4gICAgfSk7XG4gIH1cblxuICBpbml0aWFsaXplU2VjdXJpdHlRdWVzdGlvbkZvcm0oKSB7XG5cdCAgdGhpcy5zZWN1cml0eVF1ZXN0aW9uRm9ybSA9IHRoaXMuZm9ybWJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgJ3NlY3VyaXR5UXVlc3Rpb25BbnN3ZXInOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBvdHAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3RwRm9ybS5nZXQoJ290cCcpO1xuICB9XG5cbiAgZ2V0IHNlY3VyaXR5UXVlc3Rpb25BbnN3ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VjdXJpdHlRdWVzdGlvbkZvcm0uZ2V0KCdzZWN1cml0eVF1ZXN0aW9uQW5zd2VyJyk7XG4gIH1cblxuICBhc3luYyBzYXZlKCkge1xuICAgIGlmICh0aGlzLmlzTVMoKSkge1xuICAgICAgaWYgKHRoaXMub3RwVmVyaWZpZWQpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJPVFAgVkVSSUZJRUQgQU5EIFNBVklOR1wiKTtcbiAgICAgICAgdGhpcy5mYi5zdWJtaXRRdWVzdGlvbm5haXJlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWQgPT0gJ2NvbnRhY3QtZGV0YWlscycpIHtcbiAgICAgICAgbGV0IGZvcm1EYXRhID0gdGhpcy5mYi5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZUZvcm0udmFsdWU7XG4gICAgICAgIC8vQ29kZSBmb3IgdGhlIGFkZHJlc3MgdmFsaWRhdGlvbiBwb3B1cFxuICAgICAgICAvL1xuICAgICAgICAvLyBjb25zdCBmb3JtID0gdGhpcy5mYi5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZUZvcm07XG4gICAgICAgIC8vIGNvbnN0IHYgPSBmb3JtLnZhbHVlO1xuXG4gICAgICAgIC8vIC8vRGV0ZXJtaW5lIEN1cnJlbnQgYWRkcmVzcyBhbmQgdHlwZSBiYXNlZCBvbiB0aGUgYW5zd2VyIHRvIG1haWxpbmcgYWRkcmVzcyBxdWVzdGlvblxuICAgICAgICAvLyBjb25zdCBjdXJyZW50VHlwZSA9IHYuZGlmZm1haWxhZGRyZXNzID09ICdZJyA/ICdtYWlsJyA6ICdyZXMnO1xuICAgICAgICAvLyBjb25zdCBjdXJyZW50QWRkcmVzcyA9IGN1cnJlbnRUeXBlID09ICdtYWlsJyA/IHYubWFpbEFkZHJlc3MgOiB2LnJlc0FkcmVzcztcbiAgICAgICAgLy8gdGhpcy5zaG93SW5saW5lRXJyb3IgPSBmYWxzZVxuICAgICAgICAvLyAvL2NoZWNrIGlmIGFkZHJlc3MgY2hhbmdlZCBzaW5jZSBsYXN0IHZhbGlkYXRpb24gYW5kIGlmIG5vIGNoYW5nZSBjb250aW51ZSB3aXRob3V0IGludGVycnVwdGlvblxuICAgICAgICAvLyBpZiAodGhpcy5sYXN0VmFsaWRhdGVkQWRkcmVzcyAhPSBudWxsKSB7XG4gICAgICAgIC8vICAgY29uc3QgbGFzdEFkZHJlc3NUeXBlID0gdGhpcy5sYXN0VmFsaWRhdGVkQWRkcmVzcy5kaWZmbWFpbGFkZHJlc3MgPT0gJ1knID8gJ21haWwnIDogJ3Jlcyc7XG5cbiAgICAgICAgLy8gICBpZiAobGFzdEFkZHJlc3NUeXBlID09IGN1cnJlbnRUeXBlXG4gICAgICAgIC8vICAgICAmJiAhdGhpcy5pc0FkZHJlc3NDaGFuZ2VkKGN1cnJlbnRBZGRyZXNzLCB0aGlzLmxhc3RWYWxpZGF0ZWRBZGRyZXNzKSkge1xuICAgICAgICAvLyAgICAgdGhpcy5pc0FkZHJlc3NWYWxpZGF0ZWQgPSAnMSc7XG4gICAgICAgIC8vICAgICByZXR1cm4gdGhpcy5maW5pc2hBbmRTYXZlKGZvcm0udmFsdWUsIHRoaXMuaXNBZGRyZXNzVmFsaWRhdGVkKTtcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gLy9TdGFydGluZyB0aGUgcHJvY2VzcyB0byB2YWxpZGF0ZSB0aGUgYWRkcmVzc1xuICAgICAgICAvLyBjb25zdCByZXR1cm5Db21wb25lbnQgPSBhd2FpdCB0aGlzLmFkZHJTdmMudmFsaWRhdGVBZGRyZXNzUHJvY2VzcyhjdXJyZW50VHlwZSwgY3VycmVudEFkZHJlc3MsIGZvcm0pO1xuICAgICAgICAvLyB0aGlzLmxhc3RWYWxpZGF0ZWRBZGRyZXNzID0gcmV0dXJuQ29tcG9uZW50Lmxhc3RWYWxpZGF0ZWRBZGRyZXNzXG5cbiAgICAgICAgLy8gaWYgKHJldHVybkNvbXBvbmVudC5zaG93SW5saW5lRXJyb3IgPT0gdHJ1ZSkge1xuICAgICAgICAvLyAgIHRoaXMuZXJyb3JUZXh0ID0gcmV0dXJuQ29tcG9uZW50LmVycm9yVGV4dDtcbiAgICAgICAgLy8gICB0aGlzLnNob3dJbmxpbmVFcnJvciA9IHJldHVybkNvbXBvbmVudC5zaG93SW5saW5lRXJyb3I7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gaWYgKHJldHVybkNvbXBvbmVudC5zaG93UG9wdXAgPT0gdHJ1ZSkge1xuICAgICAgICAvLyAgIGF3YWl0IHRoaXMuaGFuZGxlUmVjb21tZW5kYXRpb25zKHJldHVybkNvbXBvbmVudC5hZGRyZXNzVmFsaWRhdGlvblJlc3BvbnNlLCByZXR1cm5Db21wb25lbnQuYWRkcmVzc1ZhbGlkYXRpb25SZXF1ZXN0LCB2KTtcbiAgICAgICAgLy8gfVxuICAgICAgICAvLyBpZiAocmV0dXJuQ29tcG9uZW50LnNob3dJbmxpbmVFcnJvciA9PSBmYWxzZSAmJiByZXR1cm5Db21wb25lbnQuc2hvd1BvcHVwID09IGZhbHNlKSB7XG4gICAgICAgIC8vICAgdGhpcy5maW5pc2hBbmRTYXZlKGZvcm0udmFsdWUsIHJldHVybkNvbXBvbmVudC5pc0FkZHJlc3NWYWxpZGF0ZWQpO1xuICAgICAgICAvLyB9XG4gICAgICAgIGlmICgoZm9ybURhdGFbJ3Bob25lJ10gPT0gZm9ybURhdGFbJ2hpZE9yaWdpbmFsUGhvbmUnXSkgJiYgKGZvcm1EYXRhWydlbWFpbCddID09IGZvcm1EYXRhWydoaWRPcmlnaW5hbEVtYWlsJ10pKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJQaG9uZSBvciBFbWFpbCBOb3QgQ2hhbmdlZFwiKTtcbiAgICAgICAgICB0aGlzLmlzT3RwU2VudCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZmIuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1EYXRhW1wiaGlkSXNFbWFpbENoYW5nZWRcIl0gPT09IFwiWVwiICYmIGZvcm1EYXRhW1wiaGlkSXNQaG9uZUNoYW5nZWRcIl0gPT09IFwiWVwiKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJCb3RoIEVtYWlsIGFuZCBQaG9uZSBDaGFuZ2VkXCIpO1xuICAgICAgICAgIHRoaXMuZXJyb3JUZXh0ID0gXCJQbGVhc2UgY29udGFjdCBNREVTIHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UgdXBkYXRpbmcgRW1haWwgQWRkcmVzcy5cIjtcbiAgICAgICAgICB0aGlzLnNob3dFcnJvciA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybURhdGFbXCJoaWRPcmlnaW5hbFBob25lXCJdID09PSBcIm51bGxcIiAmJiBmb3JtRGF0YVtcImhpZElzRW1haWxDaGFuZ2VkXCJdID09PSBcIllcIikge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiVHJ5aW5nIHRvIGNoYW5nZSBlbWFpbCBidXQgcGhvbmUgbnVtYmVyIGlzIG5vdCBwcmVzZW50XCIpO1xuICAgICAgICAgIHRoaXMuZXJyb3JUZXh0ID0gXCJQbGVhc2UgY29udGFjdCBNREVTIHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UgdXBkYXRpbmcgRW1haWwgQWRkcmVzcyBhbmQgQ2VsbCBQaG9uZSBOdW1iZXIuXCI7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmIChmb3JtRGF0YVtcImhpZElzRW1haWxDaGFuZ2VkXCJdID09PSBcIllcIikge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJFbWFpbCBDaGFuZ2VkXCIpO1xuICAgICAgICAgICAgdGhpcy50eXBlID0gJ3RleHQnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybURhdGFbXCJoaWRJc1Bob25lQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiUGhvbmUgQ2hhbmdlZFwiKTtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9ICdlbWFpbCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNPdHBTZW50ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmluaXRpbGl6ZUZvcm0oKTtcbiAgICAgICAgICB0aGlzLnNzLnNlbmRPdHBXaXRob3V0Q2FwdGNoYSh0aGlzLnR5cGUpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IFwiQWNjZXNzIGNvZGUgc2VudCBzdWNjZXNzZnVsbHkuXCI7XG4gICAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPdHBTZW50ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JEdGxzID0gZXJyLm1zZztcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCh0aGlzLnNlbGVjdGVkID09ICdwZXJzb25hbC1kZXRhaWxzJykgfHwgKHRoaXMuc2VsZWN0ZWQgPT0gJ3BheW1lbnQtZGV0YWlscycpKSB7XG4gICAgICAgIHRoaXMuZmIuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pc01FKCkpIHtcblx0ICAgIGlmICh0aGlzLnNlY3VyaXR5UXVlc3Rpb25WZXJpZmllZCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlNFQ1VSSVRZIFFVRVNUSU9OIFZFUklGSUVEIEFORCBTQVZJTkdcIik7XG4gICAgICAgIHRoaXMuZmIuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkID09ICdjb250YWN0LWRldGFpbHMnKSB7ICBcbiAgICAgICAgdGhpcy5zcy5nZXRSYW5kb21TZWN1cml0eVF1ZXN0aW9uU2VsZigpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDoocmVzOiBTZWN1cml0eVF1ZXN0aW9uQW5zd2VyTW9kZWwpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmFuZG9tU2VjdXJpdHlRdWVzdGlvbk1vZGVsID0gcmVzO1xuICAgICAgICAgICAgdGhpcy5zZWN1cml0eVF1ZXN0aW9uVG9Bc2sgPSB0aGlzLnJhbmRvbVNlY3VyaXR5UXVlc3Rpb25Nb2RlbC5zZWN1cml0eVF1ZXN0aW9uRGVzY3JpcHRpb247XG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcbiAgICAgICAgICB9LCBlcnJvcjooZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5U2VjdXJpdHlRdWVzdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tZXNzYWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XHRcdFxuICAgICAgICB0aGlzLmluaXRpYWxpemVTZWN1cml0eVF1ZXN0aW9uRm9ybSgpO1xuICAgICAgICB0aGlzLmRpc3BsYXlTZWN1cml0eVF1ZXN0aW9uID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmIuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xuICAgICAgfVxuXHQgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICB9XG4gIH1cblxuICAvKiogSGFuZGxlIFJlY29tbWVuZGF0aW9uIFBvcHVwICovXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVSZWNvbW1lbmRhdGlvbnMocmVzOiBBZGRyUmVzLCByZXE6IEFkZHJSZXEsIHY6IGFueSkge1xuICAgY29uc3Qgc3VnZ2VzdGlvbnM6IEFkZHJSZWNbXSA9IEFycmF5LmZyb20ocmVzLmFkZHJlc3NSZWNvbW1lbmRhdGlvbk1vZGVsID8/IFtdKTtcbiAgIGlmICghc3VnZ2VzdGlvbnMubGVuZ3RoKSByZXR1cm47XG4gICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMubW9kYWxDdHJsLmNyZWF0ZSh7XG4gICAgIGNvbXBvbmVudDogQWRkcmVzc1BvcHVwQ29tcG9uZW50LFxuICAgICBjb21wb25lbnRQcm9wczogeyBvcmlnaW5hbDogcmVxLCBjaG9pY2VzOiBzdWdnZXN0aW9ucyB9LFxuICAgICBiYWNrZHJvcERpc21pc3M6IGZhbHNlLFxuICAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICAgc2hvd0JhY2tkcm9wOiB0cnVlXG4gICB9KTtcbiAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobW9kYWwpO1xuICAgYXdhaXQgbW9kYWwucHJlc2VudCgpO1xuICAgY29uc3QgeyBkYXRhLCByb2xlIH0gPSBhd2FpdCBtb2RhbC5vbldpbGxEaXNtaXNzKCk7XG4gICBpZiAocm9sZSAhPT0gJ2NvbmZpcm0nIHx8ICFkYXRhPy5zZWxlY3RlZCkgcmV0dXJuO1xuICAgdGhpcy5wYXRjaEZvcm1XaXRoU2VsZWN0ZWRBZGRyZXNzKGRhdGEuc2VsZWN0ZWQsIHYuZGlmZm1haWxhZGRyZXNzID09PSAnWScpO1xuICB9XG5cbiAgICAvKiogUGF0Y2ggRm9ybSBXaXRoIFNlbGVjdGVkIEFkZHJlc3MgKi9cbnB1YmxpYyBwYXRjaEZvcm1XaXRoU2VsZWN0ZWRBZGRyZXNzKHNlbDogYW55LCBpc01haWw6IGJvb2xlYW4pIHtcbmNvbnN0IHBhdGNoT2JqID0gaXNNYWlsXG4/IHsgbWFpbEFkZHJlc3M6IHRoaXMubWFwQWRkcmVzcyhzZWwpIH1cbjogeyByZXNBZHJlc3M6IHRoaXMubWFwQWRkcmVzcyhzZWwpLFxuICBtYWlsQWRkcmVzczogdGhpcy5tYXBBZGRyZXNzKHNlbClcbiB9O1xudGhpcy5sYXN0VmFsaWRhdGVkQWRkcmVzcz0gdGhpcy5tYXBBZGRyZXNzKHNlbCk7XG50aGlzLmZiLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlRm9ybS5mb3JtLnBhdGNoVmFsdWUocGF0Y2hPYmopO1xufVxuXG5wcml2YXRlIG1hcEFkZHJlc3Moc2VsOiBhbnkpIHtcbmlmIChzZWwuaXNPcmlnaW5hbCkge1xuLy8gT3JpZ2luYWwgQWRkcmVzc1xucmV0dXJuIHtcbnN0cmVldEFkZHJlc3M6IHNlbC5saW5lMSxcbm9wdGlvbmFsQWRkcmVzczogc2VsLmxpbmUyLFxuY2l0eTogc2VsLmNpdHksXG5zdGF0ZTogeyBsYWJlbDogc2VsLnN0YXRlLCB2YWx1ZTogc2VsLnN0YXRlIH0sXG56aXA6IHNlbC56aXBDb2RlLFxuY291bnRyeTogeyBsYWJlbDogc2VsLmNvdW50cnksIHZhbHVlOiBzZWwuY291bnRyeSB9XG59O1xufSBlbHNlIHtcbi8vIFVTUFMgUmVjb21tZW5kZWQgQWRkcmVzc1xucmV0dXJuIHtcbnN0cmVldEFkZHJlc3M6IHNlbC5kZWxpdmVyeUxpbmUxLFxub3B0aW9uYWxBZGRyZXNzOiBzZWwuZGVsaXZlcnlMaW5lMixcbmNpdHk6IHNlbC5jaXR5TmFtZSxcbnN0YXRlOiB7IGxhYmVsOiBzZWwuc3RhdGVBYmJyZXZhdGlvbiwgdmFsdWU6IHNlbC5zdGF0ZUFiYnJldmF0aW9uIH0sXG56aXA6IHNlbC56aXBDb2RlLFxuY291bnRyeTogeyBsYWJlbDogc2VsLmNvdW50cnksIHZhbHVlOiBzZWwuY291bnRyeSB9XG59O1xufVxufVxuXG4gIHZlcmlmeSgpIHtcbiAgICB0aGlzLm90cENvZGUgPSB0aGlzLm90cEZvcm0uZ2V0KCdvdHAnKT8udmFsdWU7XG4gICAgdGhpcy5zcy52YWxpZGF0ZU90cEZvckNsYWltYW50KHRoaXMub3RwQ29kZSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLm90cFZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNPdHBTZW50ID0gZmFsc2U7XG4gICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcbiAgICAgIHRoaXMuYWNjZXB0ZWQuZW1pdCh0cnVlKTtcbiAgICB9LCBlcnIgPT4ge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1ZlcmlmeSBzdGF0dXMgZXJyb3IgJywgZXJyKTtcbiAgICAgIHRoaXMub3RwVmVyaWZpZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsOyBcbiAgICAgIHRoaXMuYWNjZXB0ZWQuZW1pdChmYWxzZSk7XG4gICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tc2c7XG4gICAgfSlcbiAgfVxuXG4gIHZlcmlmeVNlY3VyaXR5UXVlc3Rpb24oKSB7XG4gICAgdGhpcy5zZWN1cml0eUFuc3dlciA9IHRoaXMuc2VjdXJpdHlRdWVzdGlvbkZvcm0uZ2V0KCdzZWN1cml0eVF1ZXN0aW9uQW5zd2VyJyk/LnZhbHVlO1xuICAgIGlmICh0aGlzLnNlY3VyaXR5QW5zd2VyICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnJhbmRvbVNlY3VyaXR5UXVlc3Rpb25Nb2RlbC5zZWN1cml0eUFuc3dlciA9IHRoaXMuc2VjdXJpdHlBbnN3ZXI7XG4gICAgICB0aGlzLnNzLnZhbGlkYXRlVXNlclNlY3VyaXR5SW5mb3JtYXRpb24odGhpcy5yYW5kb21TZWN1cml0eVF1ZXN0aW9uTW9kZWwpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnNlY3VyaXR5UXVlc3Rpb25WZXJpZmllZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZGlzcGxheVNlY3VyaXR5UXVlc3Rpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICAgIHRoaXMuZXJyb3JEdGxzID0gbnVsbDtcbiAgICAgICAgdGhpcy5hY2NlcHRlZC5lbWl0KHRydWUpO1xuICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1ZlcmlmeSBzdGF0dXMgZXJyb3IgJywgZXJyKTtcbiAgICAgICAgdGhpcy5zZWN1cml0eVF1ZXN0aW9uVmVyaWZpZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICAgIHRoaXMuZXJyb3JEdGxzID0gZXJyLm1zZzsgICAgIFxuICAgICAgICB0aGlzLmFjY2VwdGVkLmVtaXQoZmFsc2UpOyAgICBcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmVkaXJlY3RMaW5rKHZpZXcpIHtcbiAgICBsZXQgdXNlck1vZGVsID0gdGhpcy5scy5nZXRVc2VyKCk7XG4gICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKS50aGVuKCgpID0+IHtcbiAgICAgIHdpbmRvdy5vcGVuKGAke0xpYkNvbnN0YW50cy5iZW5lZml0c1VybEV4dGVybmFsfS9mYWNlcy92aXJ0dWFsL2NvbnRleHRzd2l0Y2gueGh0bWw/YT0ke3VzZXJNb2RlbC5hY2Nlc3NfdG9rZW59JnI9JHt1c2VyTW9kZWwucmVmcmVzaF90b2tlbn0mdj0yMjk5JkNMQUlNQU5UX1BPUlRBTD10cnVlJnZpZXc9JHt2aWV3fWAsICBcIl9zZWxmXCIpO1xuICAgIH0pO1xuICB9XG4gIGdldEV4dGVybmFsQ2xhaW1hbnRSZXBvcnQoKSB7XG4gICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9IFwic3RhcnRlZFwiO1xuICAgIHJldHVybiB0aGlzLmJzLmdldEV4dGVybmFsQ2xhaW1hbnRSZXBvcnQodGhpcy5scy5nZXRVc2VyKCkuc3NuKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIHRoaXMuZG93bmxvYWRSYXdGaWxlKHJlcywnRXh0ZXJuYWxBZ2VuY3lSZXBvcnQucGRmJylcbiAgICB9LCBlcnIgPT4ge1xuICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9IFwiZXJyb3JcIjtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdHZXR0aW5nIEV4dGVybmFsIENsYWltYW50IFJlcG9ydCBlcnJvcicsIGVycik7XG4gICAgfSlcbiAgfVxuICBkb3dubG9hZFJhd0ZpbGUocmVzOmFueSwgZmlsZW5hbWU6IHN0cmluZyl7XG4gICAgbGV0IGJpbmFyeURhdGEgPSBbXTtcbiAgICBiaW5hcnlEYXRhLnB1c2gocmVzKTtcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihiaW5hcnlEYXRhLCB7IHR5cGU6IFwiYXBwbGljYXRpb24veGxzeFwiIH0pKTtcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGEuaHJlZiA9IHVybDtcbiAgICBhLmRvd25sb2FkID0gZmlsZW5hbWU7XG4gICAgYS5jbGljaygpO1xuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbn1cbiAgaGFuZGxlRXJyb3IoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3I/LmVycm9yQ29kZSA9PSAnNDIyJykge1xuICAgICAgdGhpcy5lcnJvclRleHQgPSBlcnJvci5tc2dbMF07XG4gICAgfVxuICAgIHRoaXMuc2hvd0Vycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIHN1Y2Nlc3MobXNnKSB7XG4gICAgdGhpcy5zaG93U3VjY2VzcyA9IHRydWU7XG4gIH1cblxuICBsb2dvdXQoKSB7XG4gICAgdGhpcy5uYXYubmF2aWdhdGVSb290KCcvbGFuZGluZycpO1xuICAgIHRoaXMubHMubG9nb3V0KCk7XG4gIH1cblxuIGdldExpc3RPZkFjdGl2ZUNsYWltKCl7XG4gICAgdGhpcy5jbGFpbVNlcnZpY2UuZ2V0TGlzdE9mQWN0aXZlQ2xhaW0oKS5zdWJzY3JpYmUoKHJlcyk9PntcbiAgICAgIHRoaXMubGlzdE9mQWN0aXZlQ2xhaW0gPSByZXM7XG4gICAgfSlcbiAgfVxuXG4gIGdldFZlcmlmaWNhdGlvblJlcG9ydCgpe1xuICAgIHRoaXMuZG93bmxvYWRTdGF0dXMgPSBcInN0YXJ0ZWRcIjtcbiAgICByZXR1cm4gdGhpcy5icy5nZXRWZXJpZmljYXRpb25SZXBvcnQodGhpcy5scy5nZXRVc2VyKCkuY2xhaW1hbnRJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLmRvd25sb2FkUmF3RmlsZShyZXMsJ1VuZW1wbG95bWVudFZlcmlmaWNhdGlvblJlcG9ydC5wZGYnKVxuICAgIH0sIGVyciA9PiB7XG4gICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gXCJlcnJvclwiO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0dldHRpbmcgVW5lbXBsb3ltZW50IFZlcmlmaWNhdGlvbiBSZXBvcnQgZXJyb3InLCBlcnIpO1xuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgZmluaXNoQW5kU2F2ZShmb3JtRGF0YTogYW55LCBpc0FkZHJlc3NWYWxpZGF0ZWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dJbmxpbmVFcnJvcj0gZmFsc2U7IFxuICAgICAgIHRoaXMuZmIucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmVGb3JtLmZvcm0uY29udHJvbHNbJ2hpZElzQWRkcmVzc1ZhbGlkYXRlZCddLnNldFZhbHVlKGlzQWRkcmVzc1ZhbGlkYXRlZCk7XG5cbiAgICAgaWYgKChmb3JtRGF0YVsncGhvbmUnXSA9PSBmb3JtRGF0YVsnaGlkT3JpZ2luYWxQaG9uZSddKSAmJiAoZm9ybURhdGFbJ2VtYWlsJ10gPT0gZm9ybURhdGFbJ2hpZE9yaWdpbmFsRW1haWwnXSkpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlBob25lIG9yIEVtYWlsIE5vdCBDaGFuZ2VkXCIpO1xuICAgICAgICAgIHRoaXMuaXNPdHBTZW50ID0gZmFsc2U7XG4gICAgICAgICAgY29uc29sZS5sb2coXCJhZGRyZXNzIHZhbGlkYXRpb24gZm9ybSBmbGFnXCIsZm9ybURhdGEuaGlkSXNBZGRyZXNzVmFsaWRhdGVkKTtcbiAgICAgICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtRGF0YVtcImhpZElzRW1haWxDaGFuZ2VkXCJdID09PSBcIllcIiAmJiBmb3JtRGF0YVtcImhpZElzUGhvbmVDaGFuZ2VkXCJdID09PSBcIllcIikge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiQm90aCBFbWFpbCBhbmQgUGhvbmUgQ2hhbmdlZFwiKTtcbiAgICAgICAgICB0aGlzLmVycm9yVGV4dCA9IFwiUGxlYXNlIGNvbnRhY3QgTURFUyBzdXBwb3J0IGZvciBhc3Npc3RhbmNlIHVwZGF0aW5nIEVtYWlsIEFkZHJlc3MuXCI7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1EYXRhW1wiaGlkT3JpZ2luYWxQaG9uZVwiXSA9PT0gXCJudWxsXCIgJiYgZm9ybURhdGFbXCJoaWRJc0VtYWlsQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlRyeWluZyB0byBjaGFuZ2UgZW1haWwgYnV0IHBob25lIG51bWJlciBpcyBub3QgcHJlc2VudFwiKTtcbiAgICAgICAgICB0aGlzLmVycm9yVGV4dCA9IFwiUGxlYXNlIGNvbnRhY3QgTURFUyBzdXBwb3J0IGZvciBhc3Npc3RhbmNlIHVwZGF0aW5nIEVtYWlsIEFkZHJlc3MgYW5kIENlbGwgUGhvbmUgTnVtYmVyLlwiO1xuICAgICAgICAgIHRoaXMuc2hvd0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAoZm9ybURhdGFbXCJoaWRJc0VtYWlsQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiRW1haWwgQ2hhbmdlZFwiKTtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1EYXRhW1wiaGlkSXNQaG9uZUNoYW5nZWRcIl0gPT09IFwiWVwiKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlBob25lIENoYW5nZWRcIik7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAnZW1haWwnO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzT3RwU2VudCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pbml0aWxpemVGb3JtKCk7XG4gICAgICAgICAgdGhpcy5zcy5zZW5kT3RwV2l0aG91dENhcHRjaGEodGhpcy50eXBlKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBcIkFjY2VzcyBjb2RlIHNlbnQgc3VjY2Vzc2Z1bGx5LlwiO1xuICAgICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzT3RwU2VudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tc2c7XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICB9XG4gIGlzQWRkcmVzc0NoYW5nZWQoY3VycmVudDphbnksIGxhc3Q6YW55KTogYm9vbGVhbntcbiAgcmV0dXJuIGN1cnJlbnQuc3RyZWV0QWRkcmVzcyAhPT0gbGFzdC5zdHJlZXRBZGRyZXNzIHx8XG4gICAgICAgICBjdXJyZW50Lm9wdGlvbmFsQWRkcmVzcyAhPT0gbGFzdC5vcHRpb25hbEFkZHJlc3MgfHwgXG4gICAgICAgICBjdXJyZW50LmNpdHkgIT09IGxhc3QuY2l0eSB8fFxuICAgICAgICAgY3VycmVudC5zdGF0ZT8udmFsdWUgIT09IGxhc3Quc3RhdGU/LnZhbHVlIHx8XG4gICAgICAgICBjdXJyZW50LnppcCAhPT0gbGFzdC56aXAgfHxcbiAgICAgICAgIGN1cnJlbnQuY291bnRyeT8udmFsdWUgIT09IGxhc3QuY291bnRyeT8udmFsdWU7XG4gIH1cbn1cbiIsIjxwLWRpYWxvZyB2aXNpYmxlPVwidHJ1ZVwiIG1vZGFsPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICBbYnJlYWtwb2ludHNdPVwieycxMDI0cHgnOiAnNzV2dycsICc3NjhweCc6ICc4NXZ3JywgJzY0MHB4JzogJzEwMHZ3J31cIiBbc3R5bGVdPVwie3dpZHRoOiAnNjB2dyd9XCIgcG9zaXRpb249XCJ0b3BcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0IGhlYWRpbmdcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMjRweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e1wiWW91ciBBY2NvdW50XCIgfCB0cmFuc2xhdGV9fSA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMTZweDtcIj4oQ0xBSU1BTlQgSURcclxuICAgICAgICAgICAgICAgICAgICAgICAge3tscy5nZXRVc2VyKCkuY2xhaW1hbnRJZH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiAqbmdJZj1cIiFpc01FKClcIiBzdHlsZUNsYXNzPVwiaW9uLXBhZGRpbmctc3RhcnRcIiBbb3B0aW9uc109XCJwcm9maWxlT3B0c1wiIG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkXCIgKG9uT3B0aW9uQ2xpY2spPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gKm5nSWY9XCJpc01FKClcIiBzdHlsZUNsYXNzPVwiaW9uLXBhZGRpbmctc3RhcnRcIiBbb3B0aW9uc109XCJwcm9maWxlT3B0c0lWUlwiIG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkXCIgKG9uT3B0aW9uQ2xpY2spPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPGRpdiAqbmdJZj1cIiEoc2hvd1N1Y2Nlc3MgfHwgc2hvd0Vycm9yKVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC04cHg7XCI+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ3BlcnNvbmFsLWRldGFpbHMnXCIgW2Zsb3dLZXldPVwic2VsZWN0ZWRcIiBbc2hvd09ubHlRdWVzdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiIFtoaWRlRm9vdGVyXT1cInRydWVcIiBbc2l6ZVhzXT1cIjEyXCIgW3NpemVTbV09XCIxMlwiIFtzaXplTWRdPVwiMTJcIiBbc2l6ZUxnXT1cIjEyXCJcclxuICAgICAgICAgICAgW3NpemVYbF09XCIxMlwiIFtvZmZzZXRYbF09XCIwXCIgW29mZnNldExnXT1cIjBcIiAob25FcnJvcik9XCJoYW5kbGVFcnJvcigkZXZlbnQpXCIgKG9uQ29tcGxldGUpPVwic3VjY2VzcygkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtZm9ybS1idWlsZGVyPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZCA9PSAnY29udGFjdC1kZXRhaWxzJ1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93SW5saW5lRXJyb3IgJiYgc2VsZWN0ZWQgPT09ICdjb250YWN0LWRldGFpbHMnXCIgY2xhc3M9XCJlcnJvci1iYW5uZXJcIj5cclxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImFsZXJ0LWNpcmNsZS1vdXRsaW5lXCIgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlcik7IGZvbnQtc2l6ZTogMThweDsgbWFyZ2luLXJpZ2h0OiA4cHg7XCI+PC9pb24taWNvbj5cclxuICAgICAgICA8c3Bhbj57eyBlcnJvclRleHQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ2NvbnRhY3QtZGV0YWlscydcIiBbZmxvd0tleV09XCJzZWxlY3RlZFwiIFtzaG93T25seVF1ZXN0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbaGlkZUhlYWRlcl09XCJ0cnVlXCIgW2hpZGVGb290ZXJdPVwidHJ1ZVwiIFtzaXplWHNdPVwiMTJcIiBbc2l6ZVNtXT1cIjEyXCIgW3NpemVNZF09XCIxMlwiIFtzaXplTGddPVwiMTJcIlxyXG4gICAgICAgICAgICBbc2l6ZVhsXT1cIjEyXCIgW29mZnNldFhsXT1cIjBcIiBbb2Zmc2V0TGddPVwiMFwiIChvbkVycm9yKT1cImhhbmRsZUVycm9yKCRldmVudClcIiAob25Db21wbGV0ZSk9XCJzdWNjZXNzKCRldmVudClcIj5cclxuICAgICAgICA8L2FwcC1mb3JtLWJ1aWxkZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ3BheW1lbnQtZGV0YWlscydcIiBbZmxvd0tleV09XCJzZWxlY3RlZFwiIFtzaG93T25seVF1ZXN0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbaGlkZUhlYWRlcl09XCJ0cnVlXCIgW2hpZGVGb290ZXJdPVwidHJ1ZVwiIFtzaXplWHNdPVwiMTJcIiBbc2l6ZVNtXT1cIjEyXCIgW3NpemVNZF09XCIxMlwiIFtzaXplTGddPVwiMTJcIlxyXG4gICAgICAgICAgICBbc2l6ZVhsXT1cIjEyXCIgW29mZnNldFhsXT1cIjBcIiBbb2Zmc2V0TGddPVwiMFwiIChvbkVycm9yKT1cImhhbmRsZUVycm9yKCRldmVudClcIiAob25Db21wbGV0ZSk9XCJzdWNjZXNzKCRldmVudClcIj5cclxuICAgICAgICA8L2FwcC1mb3JtLWJ1aWxkZXI+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ3VwZGF0ZS1pdnInXCIgW2Zsb3dLZXldPVwic2VsZWN0ZWRcIiBbc2hvd09ubHlRdWVzdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiIFtoaWRlRm9vdGVyXT1cInRydWVcIiBbc2l6ZVhzXT1cIjEyXCIgW3NpemVTbV09XCIxMlwiIFtzaXplTWRdPVwiMTJcIiBbc2l6ZUxnXT1cIjEyXCJcclxuICAgICAgICAgICAgW3NpemVYbF09XCIxMlwiIFtvZmZzZXRYbF09XCIwXCIgW29mZnNldExnXT1cIjBcIiAob25FcnJvcik9XCJoYW5kbGVFcnJvcigkZXZlbnQpXCIgKG9uQ29tcGxldGUpPVwic3VjY2VzcygkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtZm9ybS1idWlsZGVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvb2Ytb2YtdW5lbXBsb3ltZW50XCIgKm5nSWY9XCJzZWxlY3RlZCA9PSAncHJvb2Ytb2YtdW5lbXBsb3ltZW50J1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJwaGFzZVR3b1Byb29mT2ZVSVZpZXc9PT0ndHJ1ZSc7ZWxzZSAgbm9uUGhyYXNlVHdvVmlld1wiIHN0eWxlPVwicGFkZGluZzogMHB4IDFyZW1cIj5cclxuICAgICAgICAgICAgPCEtLSA8aDIgc3R5bGU9XCJmb250LWZhbWlseTogJ09wZW4gU2FucywgTGlnaHQnO1wiPlxyXG4gICAgICAgICAgICAgICAge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5sYWJlbC5wcm9vZi5vZi51bmVtcGxveW1lbnQucGF5XCJ8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbGlzdE9mQWN0aXZlQ2xhaW0gfHwgbGlzdE9mQWN0aXZlQ2xhaW0ubGVuZ3RoID09PSAwOyBlbHNlIGFjdGl2ZUNsYWltVGFibGVcIj5cclxuICAgICAgICAgICAgICAgPGgzIHN0eWxlPVwiZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMsIExpZ2h0JztcIj5cclxuICAgICAgICAgICAgICAgIHt7XCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5sYWJlbC5uby5hY3RpdmUuY2xhaW1cInwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWN0aXZlQ2xhaW1UYWJsZT5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJsaXN0T2ZBY3RpdmVDbGFpbVwiIGRhdGFLZXk9XCJjbGFpbUlkXCIgW3Jvd0V4cGFuZE1vZGVdPVwiJ3NpbmdsZSdcIiBzdHlsZUNsYXNzPVwic2VwZXJhdGUtcm93XCIgY2xhc3M9XCJzZXBlcmF0ZS1yb3dcIlxyXG4gICAgICAgICAgICAgICAgW3RhYmxlU3R5bGVdPVwieydib3JkZXItY29sbGFwc2UnOiAnc2VwYXJhdGUnLCdib3JkZXItc3BhY2luZyc6ICcwIDhweCd9XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1kYXRhIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIFtwUm93VG9nZ2xlcl09XCJkYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cImV4cGFuZGVkID8gJ3BpIHBpLWNoZXZyb24tZG93bicgOiAncGkgcGktY2hldnJvbi1yaWdodCdcIiBzdHlsZT1cImZvbnQtc2l6ZTogMS41cmVtO1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5lZmZlY3RpdmVEYXRlfX0gLSB7e2RhdGEuYnllRGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5lbnRpdGxlbWVudFR5cGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyb3dleHBhbnNpb25cIiBsZXQtZGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI3XCIgc3R5bGU9XCIgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZTRlNGU0O2JvcmRlci1yaWdodDogMXB4IHNvbGlkICNlNGU0ZTQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHN0eWxlPVwiZGlzcGxheTogZmxleDtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImRvY0ZpbGVMaW5rXCIgaGVpZ2h0PSc1MDBweCcgd2lkdGg9JzQyMHB4Jy8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHN0eWxlPVwiZGlzcGxheTogZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2p1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3cgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJkYXRhLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJmb250LXNpemU6IDE5cHg7XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBzaGFwZT1cInJvdW5kXCIgc3R5bGU9XCJwYWRkaW5nLWlubGluZS1lbmQ6IDJyZW07XCIgKGNsaWNrKT1cImdldFZlcmlmaWNhdGlvblJlcG9ydCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQuYnV0dG9uLmRvd25sb2FkLnJlcG9ydFwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9wLXRhYmxlPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICAgICAgPGlvbi1ncmlkIHN0eWxlPVwibWFyZ2luLXRvcDogMTVweDtcIj5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sICpuZ0lmPVwiIWlzTUUoKVwiIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIiBsYXlvdXQ9XCJyb3dcIiBzdHlsZSA9IFwibWFyZ2luOjNweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkIGNsYXNzPVwicC00XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHdpZHRoOjEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWhlYWRlciBzdHlsZT1cImJveC1zaGFkb3c6IDAgMCAwIDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+PGkgY2xhc3M9XCJwaSBwaS1maWxlXCIgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO2ZvbnQtc2l6ZTogMzBweDtcIj48L2k+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28ubGFiZWwuZG93bmxvYWQudW5lbXBsb3ltZW50LmNsYWltLnJlcG9ydFwifCB0cmFuc2xhdGV9fTwvaW9uLWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudCBjbGFzcz1cInBsLTAgcHItMCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28ub3ZlcmxheS51bmVtcGxveW1lbnQuY2xhaW0ucmVwb3J0J3wgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiZ2V0RXh0ZXJuYWxDbGFpbWFudFJlcG9ydCgpXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTozMHB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJDbGFpbWFudC1yZXBvcnQtYnRuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZG93bmxvYWQtb3V0bGluZVwiIGNsYXNzPVwicHItMSBwYi0xXCI+PC9pb24taWNvbj57eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnBoYXNlLnR3by5idXR0b24uZG93bmxvYWQucmVwb3J0XCJ8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRvd25sb2FkU3RhdHVzPT0nc3RhcnRlZCdcIj57eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnN0YXR1cy5kb3dubG9hZC5zdGFydFwifCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZG93bmxvYWRTdGF0dXM9PSdlcnJvcidcIj57eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnN0YXR1cy5kb3dubG9hZC5lcnJvclwifCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBsYXlvdXQ9XCJyb3dcIiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCIgc3R5bGUgPSBcIm1hcmdpbjozcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2FyZCBjbGFzcz1cInAtNFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDoxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1oZWFkZXIgc3R5bGU9XCJib3gtc2hhZG93OiAwIDAgMCAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPjxpIGNsYXNzPVwicGkgcGktY2hlY2stY2lyY2xlXCIgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO2ZvbnQtc2l6ZTogMzBweDtcIj48L2k+ICB7eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnBoYXNlLnR3by5sYWJlbC5zdW1tYXJ5LnVuZW1wbG95bWVudC5jbGFpbVwifCB0cmFuc2xhdGV9fTwvaW9uLWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudCBjbGFzcz1cInBsLTAgcHItMCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28ub3ZlcmxheS5zdW1tYXJ5LnVuZW1wbG95bWVudC5jbGFpbSd8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImdldFZlcmlmaWNhdGlvblJlcG9ydCgpXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTozMHB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJDbGFpbWFudC1zdW1tYXJ5LXZlci1idG5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb3dubG9hZC1vdXRsaW5lXCIgY2xhc3M9XCJwci0xIHBiLTFcIj48L2lvbi1pY29uPiB7eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnBoYXNlLnR3by5idXR0b24uZG93bmxvYWQucmVwb3J0XCJ8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgPC9pb24tZ3JpZD5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNub25QaHJhc2VUd29WaWV3PlxyXG4gICAgICAgICAgICA8aW9uLWdyaWQgc3R5bGU9XCJtYXJnaW4tdG9wOiAxNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbCAqbmdJZj1cIiFpc01FKClcIiBsYXlvdXQ9XCJyb3dcIiBzdHlsZSA9IFwibWFyZ2luOjNweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQubGFiZWwuZG93bmxvYWQudW5lbXBsb3ltZW50LmNsYWltLnJlcG9ydFwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJnZXRFeHRlcm5hbENsYWltYW50UmVwb3J0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIkNsYWltYW50LXJlcG9ydC1idG5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb3dubG9hZC1vdXRsaW5lXCI+PC9pb24taWNvbj57eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LmJ1dHRvbi5leHRlcm5hbC5jbGFpbWFudC5yZXBvcnRcInwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkb3dubG9hZFN0YXR1cz09J3N0YXJ0ZWQnXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5zdGF0dXMuZG93bmxvYWQuc3RhcnRcInwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZG93bmxvYWRTdGF0dXM9PSdlcnJvcidcIj57eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnN0YXR1cy5kb3dubG9hZC5lcnJvclwifCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgbGF5b3V0PVwicm93XCIgc3R5bGUgPSBcIm1hcmdpbjozcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LmxhYmVsLnN1bW1hcnkudW5lbXBsb3ltZW50LmNsYWltXCJ8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cInJlZGlyZWN0TGluaygnLmNsYWltYW50c3VtbWFyeXZlcmlmaWNhdGlvbicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJDbGFpbWFudC1zdW1tYXJ5LXZlci1idG5cIj57eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LmJ1dHRvbi51bmVtcGxveW1lbnQudmVyaWZpY2F0aW9uXCJ8IHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXNNUygpICYmIHNlbGVjdGVkID09ICdjb250YWN0LWRldGFpbHMnICYmIGlzT3RwU2VudCA9PSB0cnVlXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAtOTBweDtcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIm90cEZvcm1cIiAjb3RwRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiPlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJvdHBcIiBbaW5uZXJIVE1MXT1cIidwcm9maWxlLmNvbnRhY3QuZGV0YWlscy5sYWJlbC5vdHAnIHwgdHJhbnNsYXRlOnsgdHlwZTogdHlwZSB9XCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtaW5wdXRNYXNrIGZvcm1Db250cm9sTmFtZT1cIm90cFwiIG1hc2s9XCI5OTk5OTlcIiBzaXplPVwiNlwiIG1heGxlbmd0aD1cIjZcIiBtaW5sZW5ndGg9XCI2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0ZvY3VzXT0ndHJ1ZScgdGl0bGU9J0VudGVyIEF1dGhjb2RlJz48L3AtaW5wdXRNYXNrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSdvdHAnIFtmb3JtXT1cIm90cEZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdBdXRoY29kZSBpcyByZXF1aXJlZC4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aDogJ0F1dGhjb2RlIHNob3VsZCBoYXZlIDYgbnVtYmVycy4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInZlcmlmeSgpXCI+e3sgXCJwcm9maWxlLmNvbnRhY3QuZGV0YWlscy5idXR0b24udmVyaWZ5XCJ8IHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJpc01FKCkgJiYgc2VsZWN0ZWQgPT0gJ2NvbnRhY3QtZGV0YWlscycgJiYgZGlzcGxheVNlY3VyaXR5UXVlc3Rpb24gPT0gdHJ1ZVwiIHN0eWxlPVwibWFyZ2luLXRvcDogLTkwcHg7XCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJzZWN1cml0eVF1ZXN0aW9uRm9ybVwiICNzZWN1cml0eVF1ZXN0aW9uRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiPlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInNlY3VyaXR5UXVlc3Rpb25BbnN3ZXJcIiBbaW5uZXJIVE1MXT1cIidwcm9maWxlLmNvbnRhY3QuZGV0YWlscy5sYWJlbC5zZWN1cml0eVF1ZXN0aW9uJyB8IHRyYW5zbGF0ZTp7IHNlY3VyaXR5UXVlc3Rpb25Ub0Fzazogc2VjdXJpdHlRdWVzdGlvblRvQXNrIH1cIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFx0PGlucHV0IHBJbnB1dFRleHQgZm9ybUNvbnRyb2xOYW1lPVwic2VjdXJpdHlRdWVzdGlvbkFuc3dlclwiIHNpemU9XCIzMFwiIG1heGxlbmd0aD1cIjMwXCIgdGl0bGU9XCJTZWN1cml0eSBBbnN3ZXJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSdzZWN1cml0eVF1ZXN0aW9uQW5zd2VyJyBbZm9ybV09XCJzZWN1cml0eVF1ZXN0aW9uRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1NlY3VyaXR5IEFuc3dlciBpcyByZXF1aXJlZC4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInZlcmlmeVNlY3VyaXR5UXVlc3Rpb24oKVwiPnt7IFwicHJvZmlsZS5jb250YWN0LmRldGFpbHMuYnV0dG9uLnZlcmlmeVwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZXJyb3JEdGxzXCI+e3tlcnJvckR0bHN9fTwvbWF0LWVycm9yPlxyXG4gICAgPGlvbi1sYWJlbCAqbmdJZj1cInN1Y2Nlc3NEdGxzXCIgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLWdyZWVuKVwiPnt7c3VjY2Vzc0R0bHN9fTxiciAvPjwvaW9uLWxhYmVsPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93U3VjY2Vzc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLXBhZGRpbmctdG9wXCI+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrLWNpcmNsZVwiIHN0eWxlPVwiZm9udC1zaXplOiA4MHB4OyBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWdyZWVuKTtcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICA8aDE+e3sgXCJwcm9maWxlLmJhbm5lci5zdWNjZXNzXCJ8IHRyYW5zbGF0ZX19PC9oMT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RXJyb3JcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLWNpcmNsZS1vdXRsaW5lXCIgc3R5bGU9XCJmb250LXNpemU6IDgwcHg7IGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTtcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cImlzTVMoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGgxPnt7IGVycm9yVGV4dCA/IGVycm9yVGV4dCA6ICgncHJvZmlsZS5iYW5uZXIucmVxdWVzdC5wcm9jZXNzLmZhaWx1cmUnIHwgdHJhbnNsYXRlKSB9fTwvaDE+XHJcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCIhaXNNUygpXCI+XHJcbiAgICAgICAgICAgICAgICA8aDE+e3tlcnJvclRleHQgPyBlcnJvclRleHQgOiAoJ3Byb2ZpbGUuYmFubmVyLnJlcXVlc3QucHJvY2Vzcy5mYWlsdXJlJyB8IHRyYW5zbGF0ZSkgfX08L2gxPlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj5cclxuICAgICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCIgc2l6ZT1cIjEyXCIgc2l6ZVhsPVwiNFwiIHNpemVMZz1cIjRcIiBzaXplTWQ9XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2dvdXQoKVwiPnt7IFwicHJvZmlsZS5idXR0b24ubG9nb3V0XCJ8IHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIHNpemU9XCIxMlwiIHNpemVYbD1cIjhcIiBzaXplTGc9XCI4XCIgc2l6ZU1kPVwiN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIHR5cGU9XCJyZXNldFwiIChjbGljayk9XCJjYW5jZWwoKVwiPnt7IFwicHJvZmlsZS5idXR0b24uY2xvc2VcInwgdHJhbnNsYXRlfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwic2F2ZSgpXCIgKm5nSWY9XCIhKHNob3dTdWNjZXNzIHx8IHNob3dFcnJvcikgJiYgc2VsZWN0ZWQhPSdwcm9vZi1vZi11bmVtcGxveW1lbnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzT3RwU2VudD09IHRydWUgfHwgZGlzcGxheVNlY3VyaXR5UXVlc3Rpb249PSB0cnVlXCI+e3sgXCJwcm9maWxlLmJ1dHRvbi5zYXZlXCJ8IHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvcC1kaWFsb2c+Il19