awf-test-lib 0.0.35 → 0.0.36

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.
@@ -28,6 +28,9 @@ export class ContactSupportComponent {
28
28
  if (this.reasons && this.reasonContact === ReasonContact.MoreDatesFormPm) {
29
29
  this.selectedReason = this.reasons[0];
30
30
  }
31
+ if (this.reasons && this.reasonContact === ReasonContact.CancelFormPm) {
32
+ this.selectedReason = this.reasons[2];
33
+ }
31
34
  this.setDateRules();
32
35
  this.loadForm();
33
36
  }
@@ -60,7 +63,7 @@ export class ContactSupportComponent {
60
63
  name: [name !== 'null' ? name : '', [Validators.required, Validators.minLength(3)]],
61
64
  email: [email !== 'null' ? email : '', [Validators.required, Validators.email]],
62
65
  phone: [phone !== 'null' ? phone : '', [Validators.required]],
63
- reason: [{ value: '', disabled: (this.reasonContact === ReasonContact.MoreDatesFormPm) }, [Validators.required]],
66
+ reason: [{ value: '', disabled: ((this.reasonContact === ReasonContact.CancelFormPm) || (this.reasonContact === ReasonContact.MoreDatesFormPm)) }, [Validators.required]],
64
67
  system: [{ value: this.detailedPmJob.systemName + ' ' + this.detailedPmJob.systemId, disabled: true }, [Validators.required]],
65
68
  workOrder: [{ value: this.detailedPmJob.pmJob.workorderId, disabled: true }, [Validators.required]],
66
69
  message: ['', [Validators.required, Validators.minLength(15)]],
@@ -82,7 +85,7 @@ export class ContactSupportComponent {
82
85
  this.detailedPmJob.name = this.form.value.name;
83
86
  this.detailedPmJob.phone = this.form.value.phone;
84
87
  this.detailedPmJob.email = this.form.value.email;
85
- this.detailedPmJob.reason = (this.reasonContact === ReasonContact.MoreDatesFormPm) ? this.translate.reasons[0].name : this.form.value.reason.name;
88
+ this.detailedPmJob.reason = (this.reasonContact === ReasonContact.MoreDatesFormPm) ? this.reasons[0].name : (this.reasonContact === ReasonContact.CancelFormPm) ? this.reasons[2].name : this.form.value.reason.name;
86
89
  this.detailedPmJob.comment = this.form.value.message;
87
90
  this.detailedPmJob.reasonContact = this.reasonContact;
88
91
  this.sendContactMeEmail.emit(this.detailedPmJob);
@@ -107,10 +110,10 @@ export class ContactSupportComponent {
107
110
  }
108
111
  }
109
112
  ContactSupportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: ContactSupportComponent, deps: [{ token: i1.MessageService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
110
- ContactSupportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.3", type: ContactSupportComponent, selector: "app-contact-support", inputs: { displaycontactSupport: "displaycontactSupport", globaltranslate: "globaltranslate", translate: "translate", showDate: "showDate", detailedPmJob: "detailedPmJob", reasonContact: "reasonContact", reasons: "reasons" }, outputs: { closeContactSupportPopup: "closeContactSupportPopup", sendContactMeEmail: "sendContactMeEmail", sendForm: "sendForm" }, providers: [MessageService], usesOnChanges: true, ngImport: i0, template: "<p-dialog header=\"\" [modal]=\"true\" [(visible)]=\"displaycontactSupport\" [maximizable]=\"true\" [breakpoints]=\"{'960px': '75vw'}\" [style]=\"{width: '900px',height:'1000px'}\" [draggable]=\"false\" [resizable]=\"false\" (onHide)=\"cancelcontactSupport()\">\r\n <strong>\r\n <h3 class=\"text-center title\"> {{translate.header}} </h3>\r\n </strong>\r\n <br>\r\n <div class=\"row\" *ngIf=\"translate && form && reasons \">\r\n \r\n <div class=\"col-md-6 card-bg\" >\r\n <div class=\"conteur contact-bloc\" [style]=\"{height:'200px'}\">\r\n <img class=\"d-block mx-auto\" src=\"assets/img/GEPortal/phone-call-.png\">\r\n <p class=\"counter contact-icon text-center mt-4\">{{translate.contacted}}</p>\r\n </div>\r\n <br>\r\n <form [formGroup]=\"form\" *ngIf=\"form\" class=\"contact100-form validate-form\">\r\n <span class=\"contact100-form-title\">{{translate.title}}</span>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderName}}</span> <span class=\"requis\">* </span>:\r\n <input [placeholder]=\"translate.placeholderName\" type=\"text\" pInputText formControlName=\"name\" [ngClass]=\"{ 'is-invalid': submitted && f.name.invalid }\">\r\n <div *ngIf=\"submitted && f.name.errors\">\r\n <div class=\"requis\" *ngIf=\"f.name.errors.required\">{{translate.requiredName}}</div>\r\n <div class=\"requis\" *ngIf=\"f.name.errors.minlength\">{{translate.requiredNameMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderEmail}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderEmail\" type=\"text\" pInputText formControlName=\"email\" [ngClass]=\"{ 'is-invalid': submitted && f.email.invalid }\">\r\n <div *ngIf=\"submitted && f.email.errors\">\r\n <div class=\"requis\" *ngIf=\"f.email.errors.required\">{{translate.requiredEmail}}</div>\r\n <div class=\"requis\" *ngIf=\"f.email.errors.email\">{{translate.requiredEmailFormat}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderPhone}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderPhone\" type=\"text\" pInputText formControlName=\"phone\" [ngClass]=\"{ 'is-invalid': submitted && f.phone.invalid }\" (keypress)=\"preventStringKeypress($event)\">\r\n <div *ngIf=\"submitted && f.phone.errors\">\r\n <div class=\"requis\" *ngIf=\"f.phone.errors.required\">{{translate.requiredPhone}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.reason}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown [options]=\"reasons\" [placeholder]=\"translate.selectReason\" [(ngModel)]=\"selectedReason\" optionLabel=\"name\" formControlName=\"reason\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"></p-dropdown>\r\n <!-- <input [placeholder]=\"translate.reason\" type=\"text\" pInputText formControlName=\"reason\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"> -->\r\n <div *ngIf=\"submitted && f.reason.errors\">\r\n <div class=\"requis\" *ngIf=\"f.reason.errors.required\">{{translate.reasonRequired}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.system}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.system\" type=\"text\" pInputText formControlName=\"system\" [ngClass]=\"{ 'is-invalid': submitted && f.system.invalid }\">\r\n <div *ngIf=\"submitted && f.system.errors\">\r\n <div class=\"requis\" *ngIf=\"f.system.errors?.required\">{{translate.required}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.workOrder}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.workOrder\" type=\"text\" pInputText formControlName=\"workOrder\" [ngClass]=\"{ 'is-invalid': submitted && f.workOrder.invalid }\">\r\n <div *ngIf=\"submitted && f.workOrder.errors\">\r\n <div class=\"requis\" *ngIf=\"f.workOrder.errors?.required\">{{translate.required}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.message}} </span> <span class=\"requis\">*</span>:\r\n <textarea pInputTextarea style=\" min-height:100px;height:100%;width:100%;\" [placeholder]=\"translate.message +'...'\" formControlName=\"message\" [ngClass]=\"{ 'is-invalid': submitted && f.message.errors }\"></textarea>\r\n <div *ngIf=\"submitted && f.message.errors\">\r\n <div class=\"requis\" *ngIf=\"f.message.errors.required\">{{translate.required}}</div>\r\n <div class=\"requis\" *ngIf=\"f.message.errors.minlength\">{{translate.requiredMessageMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <br>\r\n <br>\r\n <div class=\"container-contact100-form-btn\">\r\n <div class=\"wrap-contact100-form-btn\">\r\n <div class=\"contact100-form-bgbtn\"></div>\r\n <button pButton pRipple class=\"d-block mx-auto\" [label]=\"translate.accept\" icon=\"pi pi-thumbs-up\" [pTooltip]=\"translate.accept\" tooltipPosition=\"bottom\" (click)=\"onSubmit()\"></button>\r\n </div>\r\n </div>\r\n </form>\r\n <!-- <button pButton pRipple class=\"d-block mx-auto\" [label]=\"translate.accept\" icon=\"pi pi-thumbs-up\" [pTooltip]=\"translate.accept\" tooltipPosition=\"bottom\" (click)=\"contacted()\"></button> -->\r\n </div>\r\n <div class=\"col-md-6 card-bg\" >\r\n <div class=\"conteur contact-bloc\" [style]=\"{height:'200px'}\">\r\n <img class=\"d-block mx-auto\" src=\"assets/img/GEPortal/phone-called.png\">\r\n <p class=\"counter contact-icon text-center mt-4\">{{translate.contact}}</p>\r\n </div>\r\n <br>\r\n <button pButton pRipple class=\"d-block mx-auto\" [label]=\"translate.seeNumber\" icon=\"pi pi-eye\" [pTooltip]=\"translate.accept\" tooltipPosition=\"bottom\" (click)=\"contact()\"></button>\r\n <br>\r\n <iframe src=\"https://maps.google.com/maps?q=283,%20Rue%20De%20la%20Miniere-BP34%20%2078533%20BUC%20%E2%80%93%20Cedex&amp;t=&amp;z=13&amp;ie=UTF8&amp;iwloc=&amp;output=embed\" width=\"100%\" height=\"250\" style=\"border:0;\" allowfullscreen=\"\" loading=\"lazy\"></iframe>\r\n <h6 class=\"fs-4 mt-3\"> {{translate.information}}</h6>\r\n <section class=\"mb-4\">\r\n <div class=\"\">\r\n <i class=\"pi pi-envelope\"></i><label> &nbsp; {{translate.emailText}}</label>\r\n <p class=\"\">{{translate.email}} </p>\r\n </div>\r\n <div class=\" mt-4\">\r\n <i class=\"pi pi-map\"></i><label> &nbsp; {{translate.addressText}}</label>\r\n <p class=\"\">{{translate.adress}}</p>\r\n <p class=\"\">{{translate.town}}</p>\r\n <p class=\"\">{{translate.country}}</p>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n</p-dialog>\r\n<p-dialog *ngIf=\"translate\"[header]=\"translate.serviceCenterPhoneText\" [modal]=\"true\" [(visible)]=\"displayNumber\" [breakpoints]=\"{'960px': '75vw'}\" [style]=\"{width: '400px',height:'200px'}\" [draggable]=\"false\" [resizable]=\"false\" (onHide)=\"closeNumber()\">\r\n<br>\r\n <h4 class=\"number\"> <strong> <i class=\"pi pi-phone\"></i> &nbsp;{{translate.contactNumber}}</strong></h4>\r\n</p-dialog>\r\n\r\n\r\n<p-toast position=\"top-center\"></p-toast>", styles: [".contact-icon{font-weight:inherit;font-size:15px}.number{text-align:center;color:#0084ff}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]" }, { kind: "component", type: i5.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i6.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i10.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "itemSize", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }] });
113
+ ContactSupportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.3", type: ContactSupportComponent, selector: "app-contact-support", inputs: { displaycontactSupport: "displaycontactSupport", globaltranslate: "globaltranslate", translate: "translate", showDate: "showDate", detailedPmJob: "detailedPmJob", reasonContact: "reasonContact", reasons: "reasons" }, outputs: { closeContactSupportPopup: "closeContactSupportPopup", sendContactMeEmail: "sendContactMeEmail", sendForm: "sendForm" }, providers: [MessageService], usesOnChanges: true, ngImport: i0, template: "<p-dialog header=\"\" [modal]=\"true\" [(visible)]=\"displaycontactSupport\" [maximizable]=\"true\" [breakpoints]=\"{'960px': '75vw'}\" [style]=\"{width: '900px',height:'1400px'}\" [draggable]=\"false\" [resizable]=\"true\" (onHide)=\"cancelcontactSupport()\">\r\n <strong>\r\n <h3 class=\"text-center title\"> {{translate.header}} </h3>\r\n </strong>\r\n <br>\r\n <div class=\"row\" *ngIf=\"translate && form && reasons \">\r\n \r\n <div class=\"col-md-6 card-bg\" >\r\n <div class=\"conteur contact-bloc\" [style]=\"{height:'150px'}\">\r\n <img class=\"d-block mx-auto\" src=\"assets/img/GEPortal/phone-call-.png\">\r\n <p class=\"counter contact-icon text-center mt-4\">{{translate.contacted}}</p>\r\n </div>\r\n <br>\r\n <form [formGroup]=\"form\" *ngIf=\"form\" class=\"contact100-form validate-form\">\r\n <span class=\"contact100-form-title\">{{translate.title}}</span>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderName}}</span> <span class=\"requis\">* </span>:\r\n <input [placeholder]=\"translate.placeholderName\" type=\"text\" pInputText formControlName=\"name\" [ngClass]=\"{ 'is-invalid': submitted && f.name.invalid }\">\r\n <div *ngIf=\"submitted && f.name.errors\">\r\n <div class=\"requis\" *ngIf=\"f.name.errors.required\">{{translate.requiredName}}</div>\r\n <div class=\"requis\" *ngIf=\"f.name.errors.minlength\">{{translate.requiredNameMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderEmail}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderEmail\" type=\"text\" pInputText formControlName=\"email\" [ngClass]=\"{ 'is-invalid': submitted && f.email.invalid }\">\r\n <div *ngIf=\"submitted && f.email.errors\">\r\n <div class=\"requis\" *ngIf=\"f.email.errors.required\">{{translate.requiredEmail}}</div>\r\n <div class=\"requis\" *ngIf=\"f.email.errors.email\">{{translate.requiredEmailFormat}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderPhone}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderPhone\" type=\"text\" pInputText formControlName=\"phone\" [ngClass]=\"{ 'is-invalid': submitted && f.phone.invalid }\" (keypress)=\"preventStringKeypress($event)\">\r\n <div *ngIf=\"submitted && f.phone.errors\">\r\n <div class=\"requis\" *ngIf=\"f.phone.errors.required\">{{translate.requiredPhone}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.system}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.system\" type=\"text\" pInputText formControlName=\"system\" [ngClass]=\"{ 'is-invalid': submitted && f.system.invalid }\">\r\n <div *ngIf=\"submitted && f.system.errors\">\r\n <div class=\"requis\" *ngIf=\"f.system.errors?.required\">{{translate.required}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.workOrder}}</span> <span class=\"requis\"></span>:\r\n <input [placeholder]=\"translate.workOrder\" type=\"text\" pInputText formControlName=\"workOrder\" [ngClass]=\"{ 'is-invalid': submitted && f.workOrder.invalid }\">\r\n <div *ngIf=\"submitted && f.workOrder.errors\">\r\n <div class=\"requis\" *ngIf=\"f.workOrder.errors?.required\">{{translate.required}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.reason}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown [options]=\"reasons\" [placeholder]=\"translate.selectReason\" [(ngModel)]=\"selectedReason\" optionLabel=\"name\" formControlName=\"reason\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"></p-dropdown>\r\n <!-- <input [placeholder]=\"translate.reason\" type=\"text\" pInputText formControlName=\"reason\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"> -->\r\n <div *ngIf=\"submitted && f.reason.errors\">\r\n <div class=\"requis\" *ngIf=\"f.reason.errors.required\">{{translate.reasonRequired}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.message}} </span> <span class=\"requis\">*</span>:\r\n <textarea pInputTextarea style=\" min-height:100px;height:100%;width:100%;\" [placeholder]=\"translate.message +'...'\" formControlName=\"message\" [ngClass]=\"{ 'is-invalid': submitted && f.message.errors }\"></textarea>\r\n <div *ngIf=\"submitted && f.message.errors\">\r\n <div class=\"requis\" *ngIf=\"f.message.errors.required\">{{translate.required}}</div>\r\n <div class=\"requis\" *ngIf=\"f.message.errors.minlength\">{{translate.requiredMessageMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <br>\r\n <br>\r\n <div class=\"container-contact100-form-btn\">\r\n <div class=\"wrap-contact100-form-btn\">\r\n <div class=\"contact100-form-bgbtn\"></div>\r\n <button pButton pRipple class=\"d-block mx-auto\" [label]=\"translate.accept\" icon=\"pi pi-thumbs-up\" [pTooltip]=\"translate.accept\" tooltipPosition=\"bottom\" (click)=\"onSubmit()\"></button>\r\n </div>\r\n </div>\r\n </form>\r\n <!-- <button pButton pRipple class=\"d-block mx-auto\" [label]=\"translate.accept\" icon=\"pi pi-thumbs-up\" [pTooltip]=\"translate.accept\" tooltipPosition=\"bottom\" (click)=\"contacted()\"></button> -->\r\n </div>\r\n <div class=\"col-md-6 card-bg\" >\r\n <div class=\"conteur contact-bloc\" [style]=\"{height:'150px'}\">\r\n <img class=\"d-block mx-auto\" src=\"assets/img/GEPortal/phone-called.png\">\r\n <p class=\"counter contact-icon text-center mt-4\">{{translate.contact}}</p>\r\n </div>\r\n <br>\r\n <button pButton pRipple class=\"d-block mx-auto\" [label]=\"translate.seeNumber\" icon=\"pi pi-eye\" [pTooltip]=\"translate.accept\" tooltipPosition=\"bottom\" (click)=\"contact()\"></button>\r\n <br>\r\n <iframe src=\"https://maps.google.com/maps?q=283,%20Rue%20De%20la%20Miniere-BP34%20%2078533%20BUC%20%E2%80%93%20Cedex&amp;t=&amp;z=13&amp;ie=UTF8&amp;iwloc=&amp;output=embed\" width=\"100%\" height=\"250\" style=\"border:0;\" allowfullscreen=\"\" loading=\"lazy\"></iframe>\r\n <h6 class=\"fs-4 mt-3\"> {{translate.information}}</h6>\r\n <section class=\"mb-4\">\r\n <div class=\"\">\r\n <i class=\"pi pi-envelope\"></i><label> &nbsp; {{translate.emailText}}</label>\r\n <p class=\"\">{{translate.email}} </p>\r\n </div>\r\n <div class=\" mt-4\">\r\n <i class=\"pi pi-map\"></i><label> &nbsp; {{translate.addressText}}</label>\r\n <p class=\"\">{{translate.adress}}</p>\r\n <p class=\"\">{{translate.town}}</p>\r\n <p class=\"\">{{translate.country}}</p>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n</p-dialog>\r\n<p-dialog *ngIf=\"translate\"[header]=\"translate.serviceCenterPhoneText\" [modal]=\"true\" [(visible)]=\"displayNumber\" [breakpoints]=\"{'960px': '75vw'}\" [style]=\"{width: '400px',height:'200px'}\" [draggable]=\"false\" [resizable]=\"false\" (onHide)=\"closeNumber()\">\r\n<br>\r\n <h4 class=\"number\"> <strong> <i class=\"pi pi-phone\"></i> &nbsp;{{translate.contactNumber}}</strong></h4>\r\n</p-dialog>\r\n\r\n\r\n<p-toast position=\"top-center\"></p-toast>", styles: [".contact-icon{font-weight:inherit;font-size:15px}.number{text-align:center;color:#0084ff}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]" }, { kind: "component", type: i5.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i6.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i10.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "itemSize", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }] });
111
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: ContactSupportComponent, decorators: [{
112
115
  type: Component,
113
- args: [{ selector: 'app-contact-support', providers: [MessageService], template: "<p-dialog header=\"\" [modal]=\"true\" [(visible)]=\"displaycontactSupport\" [maximizable]=\"true\" [breakpoints]=\"{'960px': '75vw'}\" [style]=\"{width: '900px',height:'1000px'}\" [draggable]=\"false\" [resizable]=\"false\" (onHide)=\"cancelcontactSupport()\">\r\n <strong>\r\n <h3 class=\"text-center title\"> {{translate.header}} </h3>\r\n </strong>\r\n <br>\r\n <div class=\"row\" *ngIf=\"translate && form && reasons \">\r\n \r\n <div class=\"col-md-6 card-bg\" >\r\n <div class=\"conteur contact-bloc\" [style]=\"{height:'200px'}\">\r\n <img class=\"d-block mx-auto\" src=\"assets/img/GEPortal/phone-call-.png\">\r\n <p class=\"counter contact-icon text-center mt-4\">{{translate.contacted}}</p>\r\n </div>\r\n <br>\r\n <form [formGroup]=\"form\" *ngIf=\"form\" class=\"contact100-form validate-form\">\r\n <span class=\"contact100-form-title\">{{translate.title}}</span>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderName}}</span> <span class=\"requis\">* </span>:\r\n <input [placeholder]=\"translate.placeholderName\" type=\"text\" pInputText formControlName=\"name\" [ngClass]=\"{ 'is-invalid': submitted && f.name.invalid }\">\r\n <div *ngIf=\"submitted && f.name.errors\">\r\n <div class=\"requis\" *ngIf=\"f.name.errors.required\">{{translate.requiredName}}</div>\r\n <div class=\"requis\" *ngIf=\"f.name.errors.minlength\">{{translate.requiredNameMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderEmail}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderEmail\" type=\"text\" pInputText formControlName=\"email\" [ngClass]=\"{ 'is-invalid': submitted && f.email.invalid }\">\r\n <div *ngIf=\"submitted && f.email.errors\">\r\n <div class=\"requis\" *ngIf=\"f.email.errors.required\">{{translate.requiredEmail}}</div>\r\n <div class=\"requis\" *ngIf=\"f.email.errors.email\">{{translate.requiredEmailFormat}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderPhone}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderPhone\" type=\"text\" pInputText formControlName=\"phone\" [ngClass]=\"{ 'is-invalid': submitted && f.phone.invalid }\" (keypress)=\"preventStringKeypress($event)\">\r\n <div *ngIf=\"submitted && f.phone.errors\">\r\n <div class=\"requis\" *ngIf=\"f.phone.errors.required\">{{translate.requiredPhone}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.reason}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown [options]=\"reasons\" [placeholder]=\"translate.selectReason\" [(ngModel)]=\"selectedReason\" optionLabel=\"name\" formControlName=\"reason\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"></p-dropdown>\r\n <!-- <input [placeholder]=\"translate.reason\" type=\"text\" pInputText formControlName=\"reason\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"> -->\r\n <div *ngIf=\"submitted && f.reason.errors\">\r\n <div class=\"requis\" *ngIf=\"f.reason.errors.required\">{{translate.reasonRequired}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.system}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.system\" type=\"text\" pInputText formControlName=\"system\" [ngClass]=\"{ 'is-invalid': submitted && f.system.invalid }\">\r\n <div *ngIf=\"submitted && f.system.errors\">\r\n <div class=\"requis\" *ngIf=\"f.system.errors?.required\">{{translate.required}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.workOrder}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.workOrder\" type=\"text\" pInputText formControlName=\"workOrder\" [ngClass]=\"{ 'is-invalid': submitted && f.workOrder.invalid }\">\r\n <div *ngIf=\"submitted && f.workOrder.errors\">\r\n <div class=\"requis\" *ngIf=\"f.workOrder.errors?.required\">{{translate.required}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.message}} </span> <span class=\"requis\">*</span>:\r\n <textarea pInputTextarea style=\" min-height:100px;height:100%;width:100%;\" [placeholder]=\"translate.message +'...'\" formControlName=\"message\" [ngClass]=\"{ 'is-invalid': submitted && f.message.errors }\"></textarea>\r\n <div *ngIf=\"submitted && f.message.errors\">\r\n <div class=\"requis\" *ngIf=\"f.message.errors.required\">{{translate.required}}</div>\r\n <div class=\"requis\" *ngIf=\"f.message.errors.minlength\">{{translate.requiredMessageMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <br>\r\n <br>\r\n <div class=\"container-contact100-form-btn\">\r\n <div class=\"wrap-contact100-form-btn\">\r\n <div class=\"contact100-form-bgbtn\"></div>\r\n <button pButton pRipple class=\"d-block mx-auto\" [label]=\"translate.accept\" icon=\"pi pi-thumbs-up\" [pTooltip]=\"translate.accept\" tooltipPosition=\"bottom\" (click)=\"onSubmit()\"></button>\r\n </div>\r\n </div>\r\n </form>\r\n <!-- <button pButton pRipple class=\"d-block mx-auto\" [label]=\"translate.accept\" icon=\"pi pi-thumbs-up\" [pTooltip]=\"translate.accept\" tooltipPosition=\"bottom\" (click)=\"contacted()\"></button> -->\r\n </div>\r\n <div class=\"col-md-6 card-bg\" >\r\n <div class=\"conteur contact-bloc\" [style]=\"{height:'200px'}\">\r\n <img class=\"d-block mx-auto\" src=\"assets/img/GEPortal/phone-called.png\">\r\n <p class=\"counter contact-icon text-center mt-4\">{{translate.contact}}</p>\r\n </div>\r\n <br>\r\n <button pButton pRipple class=\"d-block mx-auto\" [label]=\"translate.seeNumber\" icon=\"pi pi-eye\" [pTooltip]=\"translate.accept\" tooltipPosition=\"bottom\" (click)=\"contact()\"></button>\r\n <br>\r\n <iframe src=\"https://maps.google.com/maps?q=283,%20Rue%20De%20la%20Miniere-BP34%20%2078533%20BUC%20%E2%80%93%20Cedex&amp;t=&amp;z=13&amp;ie=UTF8&amp;iwloc=&amp;output=embed\" width=\"100%\" height=\"250\" style=\"border:0;\" allowfullscreen=\"\" loading=\"lazy\"></iframe>\r\n <h6 class=\"fs-4 mt-3\"> {{translate.information}}</h6>\r\n <section class=\"mb-4\">\r\n <div class=\"\">\r\n <i class=\"pi pi-envelope\"></i><label> &nbsp; {{translate.emailText}}</label>\r\n <p class=\"\">{{translate.email}} </p>\r\n </div>\r\n <div class=\" mt-4\">\r\n <i class=\"pi pi-map\"></i><label> &nbsp; {{translate.addressText}}</label>\r\n <p class=\"\">{{translate.adress}}</p>\r\n <p class=\"\">{{translate.town}}</p>\r\n <p class=\"\">{{translate.country}}</p>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n</p-dialog>\r\n<p-dialog *ngIf=\"translate\"[header]=\"translate.serviceCenterPhoneText\" [modal]=\"true\" [(visible)]=\"displayNumber\" [breakpoints]=\"{'960px': '75vw'}\" [style]=\"{width: '400px',height:'200px'}\" [draggable]=\"false\" [resizable]=\"false\" (onHide)=\"closeNumber()\">\r\n<br>\r\n <h4 class=\"number\"> <strong> <i class=\"pi pi-phone\"></i> &nbsp;{{translate.contactNumber}}</strong></h4>\r\n</p-dialog>\r\n\r\n\r\n<p-toast position=\"top-center\"></p-toast>", styles: [".contact-icon{font-weight:inherit;font-size:15px}.number{text-align:center;color:#0084ff}\n"] }]
116
+ args: [{ selector: 'app-contact-support', providers: [MessageService], template: "<p-dialog header=\"\" [modal]=\"true\" [(visible)]=\"displaycontactSupport\" [maximizable]=\"true\" [breakpoints]=\"{'960px': '75vw'}\" [style]=\"{width: '900px',height:'1400px'}\" [draggable]=\"false\" [resizable]=\"true\" (onHide)=\"cancelcontactSupport()\">\r\n <strong>\r\n <h3 class=\"text-center title\"> {{translate.header}} </h3>\r\n </strong>\r\n <br>\r\n <div class=\"row\" *ngIf=\"translate && form && reasons \">\r\n \r\n <div class=\"col-md-6 card-bg\" >\r\n <div class=\"conteur contact-bloc\" [style]=\"{height:'150px'}\">\r\n <img class=\"d-block mx-auto\" src=\"assets/img/GEPortal/phone-call-.png\">\r\n <p class=\"counter contact-icon text-center mt-4\">{{translate.contacted}}</p>\r\n </div>\r\n <br>\r\n <form [formGroup]=\"form\" *ngIf=\"form\" class=\"contact100-form validate-form\">\r\n <span class=\"contact100-form-title\">{{translate.title}}</span>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderName}}</span> <span class=\"requis\">* </span>:\r\n <input [placeholder]=\"translate.placeholderName\" type=\"text\" pInputText formControlName=\"name\" [ngClass]=\"{ 'is-invalid': submitted && f.name.invalid }\">\r\n <div *ngIf=\"submitted && f.name.errors\">\r\n <div class=\"requis\" *ngIf=\"f.name.errors.required\">{{translate.requiredName}}</div>\r\n <div class=\"requis\" *ngIf=\"f.name.errors.minlength\">{{translate.requiredNameMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderEmail}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderEmail\" type=\"text\" pInputText formControlName=\"email\" [ngClass]=\"{ 'is-invalid': submitted && f.email.invalid }\">\r\n <div *ngIf=\"submitted && f.email.errors\">\r\n <div class=\"requis\" *ngIf=\"f.email.errors.required\">{{translate.requiredEmail}}</div>\r\n <div class=\"requis\" *ngIf=\"f.email.errors.email\">{{translate.requiredEmailFormat}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderPhone}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderPhone\" type=\"text\" pInputText formControlName=\"phone\" [ngClass]=\"{ 'is-invalid': submitted && f.phone.invalid }\" (keypress)=\"preventStringKeypress($event)\">\r\n <div *ngIf=\"submitted && f.phone.errors\">\r\n <div class=\"requis\" *ngIf=\"f.phone.errors.required\">{{translate.requiredPhone}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.system}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.system\" type=\"text\" pInputText formControlName=\"system\" [ngClass]=\"{ 'is-invalid': submitted && f.system.invalid }\">\r\n <div *ngIf=\"submitted && f.system.errors\">\r\n <div class=\"requis\" *ngIf=\"f.system.errors?.required\">{{translate.required}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.workOrder}}</span> <span class=\"requis\"></span>:\r\n <input [placeholder]=\"translate.workOrder\" type=\"text\" pInputText formControlName=\"workOrder\" [ngClass]=\"{ 'is-invalid': submitted && f.workOrder.invalid }\">\r\n <div *ngIf=\"submitted && f.workOrder.errors\">\r\n <div class=\"requis\" *ngIf=\"f.workOrder.errors?.required\">{{translate.required}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.reason}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown [options]=\"reasons\" [placeholder]=\"translate.selectReason\" [(ngModel)]=\"selectedReason\" optionLabel=\"name\" formControlName=\"reason\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"></p-dropdown>\r\n <!-- <input [placeholder]=\"translate.reason\" type=\"text\" pInputText formControlName=\"reason\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"> -->\r\n <div *ngIf=\"submitted && f.reason.errors\">\r\n <div class=\"requis\" *ngIf=\"f.reason.errors.required\">{{translate.reasonRequired}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.message}} </span> <span class=\"requis\">*</span>:\r\n <textarea pInputTextarea style=\" min-height:100px;height:100%;width:100%;\" [placeholder]=\"translate.message +'...'\" formControlName=\"message\" [ngClass]=\"{ 'is-invalid': submitted && f.message.errors }\"></textarea>\r\n <div *ngIf=\"submitted && f.message.errors\">\r\n <div class=\"requis\" *ngIf=\"f.message.errors.required\">{{translate.required}}</div>\r\n <div class=\"requis\" *ngIf=\"f.message.errors.minlength\">{{translate.requiredMessageMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <br>\r\n <br>\r\n <div class=\"container-contact100-form-btn\">\r\n <div class=\"wrap-contact100-form-btn\">\r\n <div class=\"contact100-form-bgbtn\"></div>\r\n <button pButton pRipple class=\"d-block mx-auto\" [label]=\"translate.accept\" icon=\"pi pi-thumbs-up\" [pTooltip]=\"translate.accept\" tooltipPosition=\"bottom\" (click)=\"onSubmit()\"></button>\r\n </div>\r\n </div>\r\n </form>\r\n <!-- <button pButton pRipple class=\"d-block mx-auto\" [label]=\"translate.accept\" icon=\"pi pi-thumbs-up\" [pTooltip]=\"translate.accept\" tooltipPosition=\"bottom\" (click)=\"contacted()\"></button> -->\r\n </div>\r\n <div class=\"col-md-6 card-bg\" >\r\n <div class=\"conteur contact-bloc\" [style]=\"{height:'150px'}\">\r\n <img class=\"d-block mx-auto\" src=\"assets/img/GEPortal/phone-called.png\">\r\n <p class=\"counter contact-icon text-center mt-4\">{{translate.contact}}</p>\r\n </div>\r\n <br>\r\n <button pButton pRipple class=\"d-block mx-auto\" [label]=\"translate.seeNumber\" icon=\"pi pi-eye\" [pTooltip]=\"translate.accept\" tooltipPosition=\"bottom\" (click)=\"contact()\"></button>\r\n <br>\r\n <iframe src=\"https://maps.google.com/maps?q=283,%20Rue%20De%20la%20Miniere-BP34%20%2078533%20BUC%20%E2%80%93%20Cedex&amp;t=&amp;z=13&amp;ie=UTF8&amp;iwloc=&amp;output=embed\" width=\"100%\" height=\"250\" style=\"border:0;\" allowfullscreen=\"\" loading=\"lazy\"></iframe>\r\n <h6 class=\"fs-4 mt-3\"> {{translate.information}}</h6>\r\n <section class=\"mb-4\">\r\n <div class=\"\">\r\n <i class=\"pi pi-envelope\"></i><label> &nbsp; {{translate.emailText}}</label>\r\n <p class=\"\">{{translate.email}} </p>\r\n </div>\r\n <div class=\" mt-4\">\r\n <i class=\"pi pi-map\"></i><label> &nbsp; {{translate.addressText}}</label>\r\n <p class=\"\">{{translate.adress}}</p>\r\n <p class=\"\">{{translate.town}}</p>\r\n <p class=\"\">{{translate.country}}</p>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n</p-dialog>\r\n<p-dialog *ngIf=\"translate\"[header]=\"translate.serviceCenterPhoneText\" [modal]=\"true\" [(visible)]=\"displayNumber\" [breakpoints]=\"{'960px': '75vw'}\" [style]=\"{width: '400px',height:'200px'}\" [draggable]=\"false\" [resizable]=\"false\" (onHide)=\"closeNumber()\">\r\n<br>\r\n <h4 class=\"number\"> <strong> <i class=\"pi pi-phone\"></i> &nbsp;{{translate.contactNumber}}</strong></h4>\r\n</p-dialog>\r\n\r\n\r\n<p-toast position=\"top-center\"></p-toast>", styles: [".contact-icon{font-weight:inherit;font-size:15px}.number{text-align:center;color:#0084ff}\n"] }]
114
117
  }], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.FormBuilder }]; }, propDecorators: { displaycontactSupport: [{
115
118
  type: Input
116
119
  }], closeContactSupportPopup: [{
@@ -132,4 +135,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImpor
132
135
  }], sendForm: [{
133
136
  type: Output
134
137
  }] } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9jb250YWN0LXN1cHBvcnQvY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9jb250YWN0LXN1cHBvcnQvY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7OztBQVUzRCxNQUFNLE9BQU8sdUJBQXVCO0lBcUJoQyxZQUFvQixjQUE4QixFQUFTLFdBQXdCO1FBQS9ELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBbkJ6RSw2QkFBd0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBT3ZELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDN0MsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRzNELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUdsQixrQkFBYSxHQUFHLEtBQUssQ0FBQztJQUlpRSxDQUFDO0lBR3hGLFdBQVc7UUFDUCxJQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMs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Q0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN4RCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEVBQ3ZDO1lBQ0UsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQzs7b0hBbElRLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLG1aQUpyQixDQUFDLGNBQWMsQ0FBQywrQ0NWL0IsNHJVQTRIeUM7MkZEOUc1Qix1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0kscUJBQXFCLGFBR3BCLENBQUMsY0FBYyxDQUFDOytIQUtsQixxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0ksd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUNFLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IERldGFpbGVkUG1Kb2IgfSBmcm9tICcuLi8uLi9tb2RlbHMvZGV0YWlsZWRQbUpvYi5tb2RlbCc7XHJcbmltcG9ydCB7IFJlYXNvbkNvbnRhY3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVhc29uQ29udGFjdCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLWNvbnRhY3Qtc3VwcG9ydCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NvbnRhY3Qtc3VwcG9ydC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2VdLFxyXG4gICBcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDb250YWN0U3VwcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyAge1xyXG4gICAgQElucHV0KCkgZGlzcGxheWNvbnRhY3RTdXBwb3J0ITogYm9vbGVhbjtcclxuICAgIEBPdXRwdXQoKSBjbG9zZUNvbnRhY3RTdXBwb3J0UG9wdXAgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgICBASW5wdXQoKSBnbG9iYWx0cmFuc2xhdGUhOiBhbnk7XHJcbiAgICBASW5wdXQoKSB0cmFuc2xhdGUhOiBhbnk7XHJcbiAgICBASW5wdXQoKSBzaG93RGF0ZSE6Ym9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGRldGFpbGVkUG1Kb2IhOiBEZXRhaWxlZFBtSm9iO1xyXG4gICAgQElucHV0KCkgcmVhc29uQ29udGFjdCE6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHJlYXNvbnMhOiBhbnk7XHJcbiAgICBAT3V0cHV0KCkgc2VuZENvbnRhY3RNZUVtYWlsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgc2VuZEZvcm06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgZm9ybSE6IEZvcm1Hcm91cDtcclxuICAgIGRhdGVzITogRGF0ZVtdO1xyXG4gICAgbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICBtaW5EYXRlITogRGF0ZTtcclxuICAgIG1heERhdGUhOiBEYXRlO1xyXG4gICAgZGlzcGxheU51bWJlciA9IGZhbHNlO1xyXG4gICBcclxuICAgIHNlbGVjdGVkUmVhc29uITogUmVhc29uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbWVzc2FnZVNlcnZpY2UgOk1lc3NhZ2VTZXJ2aWNlLHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7IH1cclxuXHJcblxyXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICAgICAgaWYodGhpcy5yZWFzb25zICYmIHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0pXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmVhc29uID0gdGhpcy5yZWFzb25zWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLnNldERhdGVSdWxlcygpIDtcclxuICAgICAgICB0aGlzLmxvYWRGb3JtKCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGNhbmNlbGNvbnRhY3RTdXBwb3J0KCkge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6IHRoaXMuZ2xvYmFsdHJhbnNsYXRlLnN1bW1hcnlSZWplY3QsIGRldGFpbDogdGhpcy5nbG9iYWx0cmFuc2xhdGUuZGV0YWlsUmVqZWN0IH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2xvc2VDb250YWN0U3VwcG9ydFBvcHVwLmVtaXQodHJ1ZSk7XHJcblxyXG4gICAgfVxyXG4gICAgZ2V0IGYoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scztcclxuICAgIH1cclxuXHJcbiAgICBzYXZlRm9ybSgpIHtcclxuICAgICAgICB0aGlzLmNsb3NlQ29udGFjdFN1cHBvcnRQb3B1cC5lbWl0KHRydWUpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZXREYXRlUnVsZXMoKSB7XHJcbiAgICAgICAgbGV0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgICAgICBsZXQgbW9udGggPSB0b2RheS5nZXRNb250aCgpO1xyXG4gICAgICAgIGxldCB5ZWFyID0gdG9kYXkuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICBsZXQgcHJldk1vbnRoID0gKG1vbnRoID09PSAwKSA/IDExIDogbW9udGggLSAxO1xyXG4gICAgICAgIGxldCBwcmV2WWVhciA9IChwcmV2TW9udGggPT09IDExKSA/IHllYXIgLSAxIDogeWVhcjtcclxuICAgICAgICB0aGlzLm1pbkRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHRoaXMubWluRGF0ZS5zZXRNb250aChtb250aCk7XHJcbiAgICAgICAgdGhpcy5taW5EYXRlLnNldEZ1bGxZZWFyKHByZXZZZWFyKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgbG9hZEZvcm0oKSB7XHJcbiAgICAgICAgbGV0IG5hbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlcl9uYW1lJykgYXMgc3RyaW5nICA7XHJcbiAgICAgICAgbGV0IGVtYWlsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJfZW1haWwnKSBhcyBzdHJpbmc7XHJcbiAgICAgICAgbGV0IHBob25lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJfcGhvbmVfbnVtYmVyJykgYXMgc3RyaW5nO1xyXG5cclxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgbmFtZTogWyAgbmFtZSAhPT0gJ251bGwnID8gbmFtZSA6ICcnICwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpXV0sXHJcbiAgICAgICAgICAgIGVtYWlsOiBbIGVtYWlsIT09ICdudWxsJyA/IGVtYWlsICA6ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxyXG4gICAgICAgICAgICBwaG9uZTogWyBwaG9uZSE9PSAnbnVsbCcgPyBwaG9uZSAgOiAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgcmVhc29uOiBbe3ZhbHVlOiAnJyAsIGRpc2FibGVkOiAodGhpcy5yZWFzb25Db250YWN0ID09PSBSZWFzb25Db250YWN0Lk1vcmVEYXRlc0Zvcm1QbSl9ICwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgc3lzdGVtOiBbIHt2YWx1ZTogdGhpcy5kZXRhaWxlZFBtSm9iLnN5c3RlbU5hbWUgKyAnICcgKyB0aGlzLmRldGFpbGVkUG1Kb2Iuc3lzdGVtSWQsIGRpc2FibGVkOiB0cnVlfSAgICwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgd29ya09yZGVyOiBbIHt2YWx1ZTogdGhpcy5kZXRhaWxlZFBtSm9iLnBtSm9iLndvcmtvcmRlcklkICwgZGlzYWJsZWQ6IHRydWV9ICAgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxNSldXSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb250YWN0ZWQoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuc2VuZENvbnRhY3RNZUVtYWlsTWV0aG9kZSgpO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogdGhpcy50cmFuc2xhdGUuaW5mbywgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZS5jb250YWN0ZWRmbGFzaE1zZyB9KTtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2xvc2VDb250YWN0U3VwcG9ydFBvcHVwLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBjb250YWN0KClcclxuICAgIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlOdW1iZXIgPSB0cnVlO1xyXG4gICAgXHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VOdW1iZXIoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheU51bWJlciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbmRDb250YWN0TWVFbWFpbE1ldGhvZGUoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYi5uYW1lID0gdGhpcy5mb3JtLnZhbHVlLm5hbWU7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iLnBob25lID0gdGhpcy5mb3JtLnZhbHVlLnBob25lO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYi5lbWFpbCA9IHRoaXMuZm9ybS52YWx1ZS5lbWFpbDtcclxuICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2IucmVhc29uID0gKHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0pID8gdGhpcy50cmFuc2xhdGUucmVhc29uc1swXS5uYW1lIDp0aGlzLmZvcm0udmFsdWUucmVhc29uLm5hbWU7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iLmNvbW1lbnQgPSB0aGlzLmZvcm0udmFsdWUubWVzc2FnZTtcclxuICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2IucmVhc29uQ29udGFjdCA9IHRoaXMucmVhc29uQ29udGFjdCA7XHJcbiAgICAgICAgdGhpcy5zZW5kQ29udGFjdE1lRW1haWwuZW1pdCggdGhpcy5kZXRhaWxlZFBtSm9iKTtcclxuICAgIH1cclxuXHJcbiAgICBvblN1Ym1pdCgpIHtcclxuICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICBcclxuICAgICAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiAnRXJyb3InLFxyXG4gICAgICAgICAgICAgICAgZGV0YWlsOiAnVGhlIGZvcm0gaXMgaW52YWxpZCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuIGNvbnRhY3RlZCgpO1xyXG5cclxuICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgcHJldmVudFN0cmluZ0tleXByZXNzKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGlzTmFOKE51bWJlcihTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmNoYXJDb2RlKSkpIHx8XHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQuY2hhckNvZGUpID09PSAnICdcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcblxyXG5pbnRlcmZhY2UgUmVhc29uIHtcclxuICAgIG5hbWU6IHN0cmluZyxcclxuICAgIGNvZGU6IHN0cmluZ1xyXG59XHJcblxyXG4iLCI8cC1kaWFsb2cgaGVhZGVyPVwiXCIgW21vZGFsXT1cInRydWVcIiBbKHZpc2libGUpXT1cImRpc3BsYXljb250YWN0U3VwcG9ydFwiIFttYXhpbWl6YWJsZV09XCJ0cnVlXCIgW2JyZWFrcG9pbnRzXT1cInsnOTYwcHgnOiAnNzV2dyd9XCIgW3N0eWxlXT1cInt3aWR0aDogJzkwMHB4JyxoZWlnaHQ6JzEwMDBweCd9XCIgW2RyYWdnYWJsZV09XCJmYWxzZVwiIFtyZXNpemFibGVdPVwiZmFsc2VcIiAob25IaWRlKT1cImNhbmNlbGNvbnRhY3RTdXBwb3J0KClcIj5cclxuICAgIDxzdHJvbmc+XHJcbiAgICA8aDMgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0aXRsZVwiPiB7e3RyYW5zbGF0ZS5oZWFkZXJ9fSA8L2gzPlxyXG4gIDwvc3Ryb25nPlxyXG4gICAgPGJyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInRyYW5zbGF0ZSAmJiBmb3JtICYmIHJlYXNvbnMgXCI+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNhcmQtYmdcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGV1ciBjb250YWN0LWJsb2NcIiBbc3R5bGVdPVwie2hlaWdodDonMjAwcHgnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJkLWJsb2NrIG14LWF1dG9cIiBzcmM9XCJhc3NldHMvaW1nL0dFUG9ydGFsL3Bob25lLWNhbGwtLnBuZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY291bnRlciBjb250YWN0LWljb24gdGV4dC1jZW50ZXIgbXQtNFwiPnt7dHJhbnNsYXRlLmNvbnRhY3RlZH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cImZvcm1cIiBjbGFzcz1cImNvbnRhY3QxMDAtZm9ybSB2YWxpZGF0ZS1mb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGFjdDEwMC1mb3JtLXRpdGxlXCI+e3t0cmFuc2xhdGUudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLnBsYWNlaG9sZGVyTmFtZX19PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPiogPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnBsYWNlaG9sZGVyTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLm5hbWUuaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYubmFtZS5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLm5hbWUuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWROYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLm5hbWUuZXJyb3JzLm1pbmxlbmd0aFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkTmFtZU1pbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5wbGFjZWhvbGRlckVtYWlsfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5wbGFjZWhvbGRlckVtYWlsXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLmVtYWlsLmludmFsaWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLmVtYWlsLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYuZW1haWwuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRFbWFpbH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5lbWFpbC5lcnJvcnMuZW1haWxcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZEVtYWlsRm9ybWF0fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLnBsYWNlaG9sZGVyUGhvbmV9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj4qPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnBsYWNlaG9sZGVyUGhvbmVcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYucGhvbmUuaW52YWxpZCB9XCIgKGtleXByZXNzKT1cInByZXZlbnRTdHJpbmdLZXlwcmVzcygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYucGhvbmUuZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5waG9uZS5lcnJvcnMucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZFBob25lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLnJlYXNvbn19PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPio8L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW29wdGlvbnNdPVwicmVhc29uc1wiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUuc2VsZWN0UmVhc29uXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFJlYXNvblwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIGZvcm1Db250cm9sTmFtZT1cInJlYXNvblwiICBvcHRpb25EaXNhYmxlZD1cImluYWN0aXZlXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnJlYXNvbi5pbnZhbGlkIH1cIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnJlYXNvblwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBmb3JtQ29udHJvbE5hbWU9XCJyZWFzb25cIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYucmVhc29uLmludmFsaWQgfVwiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5yZWFzb24uZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5yZWFzb24uZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVhc29uUmVxdWlyZWR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgcC1mbHVpZCBwLW10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sLTEyIHAtbWQtMTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdHJlXCI+e3t0cmFuc2xhdGUuc3lzdGVtfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5zeXN0ZW1cIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgZm9ybUNvbnRyb2xOYW1lPVwic3lzdGVtXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnN5c3RlbS5pbnZhbGlkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5zeXN0ZW0uZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5zeXN0ZW0uZXJyb3JzPy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLndvcmtPcmRlcn19PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPio8L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUud29ya09yZGVyXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cIndvcmtPcmRlclwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi53b3JrT3JkZXIuaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYud29ya09yZGVyLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYud29ya09yZGVyLmVycm9ycz8ucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5tZXNzYWdlfX0gPC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPio8L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHBJbnB1dFRleHRhcmVhIHN0eWxlPVwiIG1pbi1oZWlnaHQ6MTAwcHg7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLm1lc3NhZ2UgKycuLi4nXCIgZm9ybUNvbnRyb2xOYW1lPVwibWVzc2FnZVwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5tZXNzYWdlLmVycm9ycyB9XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5tZXNzYWdlLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYubWVzc2FnZS5lcnJvcnMucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5tZXNzYWdlLmVycm9ycy5taW5sZW5ndGhcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZE1lc3NhZ2VNaW59fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxicj5cclxuICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1jb250YWN0MTAwLWZvcm0tYnRuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwLWNvbnRhY3QxMDAtZm9ybS1idG5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0MTAwLWZvcm0tYmdidG5cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwiZC1ibG9jayBteC1hdXRvXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5hY2NlcHRcIiBpY29uPVwicGkgcGktdGh1bWJzLXVwXCIgW3BUb29sdGlwXT1cInRyYW5zbGF0ZS5hY2NlcHRcIiAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwiZC1ibG9jayBteC1hdXRvXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5hY2NlcHRcIiBpY29uPVwicGkgcGktdGh1bWJzLXVwXCIgW3BUb29sdGlwXT1cInRyYW5zbGF0ZS5hY2NlcHRcIiAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgKGNsaWNrKT1cImNvbnRhY3RlZCgpXCI+PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNhcmQtYmdcIiAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRldXIgY29udGFjdC1ibG9jXCIgW3N0eWxlXT1cIntoZWlnaHQ6JzIwMHB4J31cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZC1ibG9jayBteC1hdXRvXCIgc3JjPVwiYXNzZXRzL2ltZy9HRVBvcnRhbC9waG9uZS1jYWxsZWQucG5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjb3VudGVyIGNvbnRhY3QtaWNvbiB0ZXh0LWNlbnRlciBtdC00XCI+e3t0cmFuc2xhdGUuY29udGFjdH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cImQtYmxvY2sgbXgtYXV0b1wiIFtsYWJlbF09XCJ0cmFuc2xhdGUuc2VlTnVtYmVyXCIgaWNvbj1cInBpIHBpLWV5ZVwiIFtwVG9vbHRpcF09XCJ0cmFuc2xhdGUuYWNjZXB0XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgKGNsaWNrKT1cImNvbnRhY3QoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgPGlmcmFtZSBzcmM9XCJodHRwczovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP3E9MjgzLCUyMFJ1ZSUyMERlJTIwbGElMjBNaW5pZXJlLUJQMzQlMjAlMjA3ODUzMyUyMEJVQyUyMCVFMiU4MCU5MyUyMENlZGV4JmFtcDt0PSZhbXA7ej0xMyZhbXA7aWU9VVRGOCZhbXA7aXdsb2M9JmFtcDtvdXRwdXQ9ZW1iZWRcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIyNTBcIiBzdHlsZT1cImJvcmRlcjowO1wiIGFsbG93ZnVsbHNjcmVlbj1cIlwiIGxvYWRpbmc9XCJsYXp5XCI+PC9pZnJhbWU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwiZnMtNCBtdC0zXCI+IHt7dHJhbnNsYXRlLmluZm9ybWF0aW9ufX08L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWVudmVsb3BlXCI+PC9pPjxsYWJlbD4gJm5ic3A7IHt7dHJhbnNsYXRlLmVtYWlsVGV4dH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+e3t0cmFuc2xhdGUuZW1haWx9fSA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktbWFwXCI+PC9pPjxsYWJlbD4gJm5ic3A7IHt7dHJhbnNsYXRlLmFkZHJlc3NUZXh0fX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj57e3RyYW5zbGF0ZS5hZHJlc3N9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+e3t0cmFuc2xhdGUudG93bn19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj57e3RyYW5zbGF0ZS5jb3VudHJ5fX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbjwvcC1kaWFsb2c+XHJcbjxwLWRpYWxvZyAqbmdJZj1cInRyYW5zbGF0ZVwiW2hlYWRlcl09XCJ0cmFuc2xhdGUuc2VydmljZUNlbnRlclBob25lVGV4dFwiIFttb2RhbF09XCJ0cnVlXCIgWyh2aXNpYmxlKV09XCJkaXNwbGF5TnVtYmVyXCIgIFticmVha3BvaW50c109XCJ7Jzk2MHB4JzogJzc1dncnfVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc0MDBweCcsaGVpZ2h0OicyMDBweCd9XCIgW2RyYWdnYWJsZV09XCJmYWxzZVwiIFtyZXNpemFibGVdPVwiZmFsc2VcIiAob25IaWRlKT1cImNsb3NlTnVtYmVyKClcIj5cclxuPGJyPlxyXG4gIDxoNCBjbGFzcz1cIm51bWJlclwiPiA8c3Ryb25nPiA8aSBjbGFzcz1cInBpIHBpLXBob25lXCI+PC9pPiAgJm5ic3A7e3t0cmFuc2xhdGUuY29udGFjdE51bWJlcn19PC9zdHJvbmc+PC9oND5cclxuPC9wLWRpYWxvZz5cclxuXHJcblxyXG48cC10b2FzdCBwb3NpdGlvbj1cInRvcC1jZW50ZXJcIj48L3AtdG9hc3Q+Il19
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9jb250YWN0LXN1cHBvcnQvY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9jb250YWN0LXN1cHBvcnQvY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7OztBQVUzRCxNQUFNLE9BQU8sdUJBQXVCO0lBcUJoQyxZQUFvQixjQUE4QixFQUFTLFdBQXdCO1FBQS9ELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBbkJ6RSw2QkFBd0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBT3ZELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDN0MsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRzNELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUdsQixrQkFBYSxHQUFHLEtBQUssQ0FBQztJQUlpRSxDQUFDO0lBR3hGLFdBQVc7UUFDUCxJQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMs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T25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgRGV0YWlsZWRQbUpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9kZXRhaWxlZFBtSm9iLm1vZGVsJztcclxuaW1wb3J0IHsgUmVhc29uQ29udGFjdCB9IGZyb20gJy4uLy4uL21vZGVscy9yZWFzb25Db250YWN0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtY29udGFjdC1zdXBwb3J0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb250YWN0LXN1cHBvcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29udGFjdC1zdXBwb3J0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgIFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbnRhY3RTdXBwb3J0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzICB7XHJcbiAgICBASW5wdXQoKSBkaXNwbGF5Y29udGFjdFN1cHBvcnQhOiBib29sZWFuO1xyXG4gICAgQE91dHB1dCgpIGNsb3NlQ29udGFjdFN1cHBvcnRQb3B1cCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgIEBJbnB1dCgpIGdsb2JhbHRyYW5zbGF0ZSE6IGFueTtcclxuICAgIEBJbnB1dCgpIHRyYW5zbGF0ZSE6IGFueTtcclxuICAgIEBJbnB1dCgpIHNob3dEYXRlITpib29sZWFuO1xyXG4gICAgQElucHV0KCkgZGV0YWlsZWRQbUpvYiE6IERldGFpbGVkUG1Kb2I7XHJcbiAgICBASW5wdXQoKSByZWFzb25Db250YWN0ITogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcmVhc29ucyE6IGFueTtcclxuICAgIEBPdXRwdXQoKSBzZW5kQ29udGFjdE1lRW1haWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZW5kRm9ybTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBmb3JtITogRm9ybUdyb3VwO1xyXG4gICAgZGF0ZXMhOiBEYXRlW107XHJcbiAgICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICBzdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIG1pbkRhdGUhOiBEYXRlO1xyXG4gICAgbWF4RGF0ZSE6IERhdGU7XHJcbiAgICBkaXNwbGF5TnVtYmVyID0gZmFsc2U7XHJcbiAgIFxyXG4gICAgc2VsZWN0ZWRSZWFzb24hOiBSZWFzb247XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBtZXNzYWdlU2VydmljZSA6TWVzc2FnZVNlcnZpY2UscHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHsgfVxyXG5cclxuXHJcbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgICAgICBpZih0aGlzLnJlYXNvbnMgJiYgdGhpcy5yZWFzb25Db250YWN0ID09PSBSZWFzb25Db250YWN0Lk1vcmVEYXRlc0Zvcm1QbSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZWFzb24gPSB0aGlzLnJlYXNvbnNbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMucmVhc29ucyAmJiB0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJlYXNvbiA9IHRoaXMucmVhc29uc1syXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5zZXREYXRlUnVsZXMoKSA7XHJcbiAgICAgICAgdGhpcy5sb2FkRm9ybSgpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBjYW5jZWxjb250YWN0U3VwcG9ydCgpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiB0aGlzLmdsb2JhbHRyYW5zbGF0ZS5zdW1tYXJ5UmVqZWN0LCBkZXRhaWw6IHRoaXMuZ2xvYmFsdHJhbnNsYXRlLmRldGFpbFJlamVjdCB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Y29udGFjdFN1cHBvcnQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNsb3NlQ29udGFjdFN1cHBvcnRQb3B1cC5lbWl0KHRydWUpO1xyXG5cclxuICAgIH1cclxuICAgIGdldCBmKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHM7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUZvcm0oKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZUNvbnRhY3RTdXBwb3J0UG9wdXAuZW1pdCh0cnVlKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGF0ZVJ1bGVzKCkge1xyXG4gICAgICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgbGV0IG1vbnRoID0gdG9kYXkuZ2V0TW9udGgoKTtcclxuICAgICAgICBsZXQgeWVhciA9IHRvZGF5LmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgbGV0IHByZXZNb250aCA9IChtb250aCA9PT0gMCkgPyAxMSA6IG1vbnRoIC0gMTtcclxuICAgICAgICBsZXQgcHJldlllYXIgPSAocHJldk1vbnRoID09PSAxMSkgPyB5ZWFyIC0gMSA6IHllYXI7XHJcbiAgICAgICAgdGhpcy5taW5EYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLm1pbkRhdGUuc2V0TW9udGgobW9udGgpO1xyXG4gICAgICAgIHRoaXMubWluRGF0ZS5zZXRGdWxsWWVhcihwcmV2WWVhcik7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGxvYWRGb3JtKCkge1xyXG4gICAgICAgIGxldCBuYW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJfbmFtZScpIGFzIHN0cmluZyAgO1xyXG4gICAgICAgIGxldCBlbWFpbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyX2VtYWlsJykgYXMgc3RyaW5nO1xyXG4gICAgICAgIGxldCBwaG9uZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyX3Bob25lX251bWJlcicpIGFzIHN0cmluZztcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgIG5hbWU6IFsgIG5hbWUgIT09ICdudWxsJyA/IG5hbWUgOiAnJyAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKV1dLFxyXG4gICAgICAgICAgICBlbWFpbDogWyBlbWFpbCE9PSAnbnVsbCcgPyBlbWFpbCAgOiAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcclxuICAgICAgICAgICAgcGhvbmU6IFsgcGhvbmUhPT0gJ251bGwnID8gcGhvbmUgIDogJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIHJlYXNvbjogW3t2YWx1ZTogJycgLCBkaXNhYmxlZDogKCh0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtKXx8KHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0pKX0gLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICBzeXN0ZW06IFsge3ZhbHVlOiB0aGlzLmRldGFpbGVkUG1Kb2Iuc3lzdGVtTmFtZSArICcgJyArIHRoaXMuZGV0YWlsZWRQbUpvYi5zeXN0ZW1JZCwgZGlzYWJsZWQ6IHRydWV9ICAgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICB3b3JrT3JkZXI6IFsge3ZhbHVlOiB0aGlzLmRldGFpbGVkUG1Kb2IucG1Kb2Iud29ya29yZGVySWQgLCBkaXNhYmxlZDogdHJ1ZX0gICAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDE1KV1dLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnRhY3RlZCgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5zZW5kQ29udGFjdE1lRW1haWxNZXRob2RlKCk7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbmZvLCBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmNvbnRhY3RlZGZsYXNoTXNnIH0pO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheWNvbnRhY3RTdXBwb3J0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jbG9zZUNvbnRhY3RTdXBwb3J0UG9wdXAuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuICAgIGNvbnRhY3QoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheU51bWJlciA9IHRydWU7XHJcbiAgICBcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZU51bWJlcigpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5TnVtYmVyID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2VuZENvbnRhY3RNZUVtYWlsTWV0aG9kZSgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iLm5hbWUgPSB0aGlzLmZvcm0udmFsdWUubmFtZTtcclxuICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2IucGhvbmUgPSB0aGlzLmZvcm0udmFsdWUucGhvbmU7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iLmVtYWlsID0gdGhpcy5mb3JtLnZhbHVlLmVtYWlsO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYi5yZWFzb24gPSAodGhpcy5yZWFzb25Db250YWN0ID09PSBSZWFzb25Db250YWN0Lk1vcmVEYXRlc0Zvcm1QbSkgPyB0aGlzLnJlYXNvbnNbMF0ubmFtZSA6ICh0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtKSA/IHRoaXMucmVhc29uc1syXS5uYW1lIDogdGhpcy5mb3JtLnZhbHVlLnJlYXNvbi5uYW1lO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYi5jb21tZW50ID0gdGhpcy5mb3JtLnZhbHVlLm1lc3NhZ2U7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iLnJlYXNvbkNvbnRhY3QgPSB0aGlzLnJlYXNvbkNvbnRhY3QgO1xyXG4gICAgICAgIHRoaXMuc2VuZENvbnRhY3RNZUVtYWlsLmVtaXQoIHRoaXMuZGV0YWlsZWRQbUpvYik7XHJcbiAgICB9XHJcblxyXG4gICAgb25TdWJtaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogJ0Vycm9yJyxcclxuICAgICAgICAgICAgICAgIGRldGFpbDogJ1RoZSBmb3JtIGlzIGludmFsaWQnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLiBjb250YWN0ZWQoKTtcclxuXHJcbiAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIHByZXZlbnRTdHJpbmdLZXlwcmVzcyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBpc05hTihOdW1iZXIoU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jaGFyQ29kZSkpKSB8fFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmNoYXJDb2RlKSA9PT0gJyAnXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuaW50ZXJmYWNlIFJlYXNvbiB7XHJcbiAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICBjb2RlOiBzdHJpbmdcclxufVxyXG5cclxuIiwiPHAtZGlhbG9nIGhlYWRlcj1cIlwiIFttb2RhbF09XCJ0cnVlXCIgWyh2aXNpYmxlKV09XCJkaXNwbGF5Y29udGFjdFN1cHBvcnRcIiBbbWF4aW1pemFibGVdPVwidHJ1ZVwiIFticmVha3BvaW50c109XCJ7Jzk2MHB4JzogJzc1dncnfVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc5MDBweCcsaGVpZ2h0OicxNDAwcHgnfVwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIiBbcmVzaXphYmxlXT1cInRydWVcIiAob25IaWRlKT1cImNhbmNlbGNvbnRhY3RTdXBwb3J0KClcIj5cclxuICAgIDxzdHJvbmc+XHJcbiAgICA8aDMgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0aXRsZVwiPiB7e3RyYW5zbGF0ZS5oZWFkZXJ9fSA8L2gzPlxyXG4gIDwvc3Ryb25nPlxyXG4gICAgPGJyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInRyYW5zbGF0ZSAmJiBmb3JtICYmIHJlYXNvbnMgXCI+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNhcmQtYmdcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGV1ciBjb250YWN0LWJsb2NcIiBbc3R5bGVdPVwie2hlaWdodDonMTUwcHgnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJkLWJsb2NrIG14LWF1dG9cIiBzcmM9XCJhc3NldHMvaW1nL0dFUG9ydGFsL3Bob25lLWNhbGwtLnBuZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY291bnRlciBjb250YWN0LWljb24gdGV4dC1jZW50ZXIgbXQtNFwiPnt7dHJhbnNsYXRlLmNvbnRhY3RlZH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cImZvcm1cIiBjbGFzcz1cImNvbnRhY3QxMDAtZm9ybSB2YWxpZGF0ZS1mb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGFjdDEwMC1mb3JtLXRpdGxlXCI+e3t0cmFuc2xhdGUudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLnBsYWNlaG9sZGVyTmFtZX19PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPiogPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnBsYWNlaG9sZGVyTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLm5hbWUuaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYubmFtZS5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLm5hbWUuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWROYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLm5hbWUuZXJyb3JzLm1pbmxlbmd0aFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkTmFtZU1pbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5wbGFjZWhvbGRlckVtYWlsfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5wbGFjZWhvbGRlckVtYWlsXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLmVtYWlsLmludmFsaWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLmVtYWlsLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYuZW1haWwuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRFbWFpbH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5lbWFpbC5lcnJvcnMuZW1haWxcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZEVtYWlsRm9ybWF0fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLnBsYWNlaG9sZGVyUGhvbmV9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj4qPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnBsYWNlaG9sZGVyUGhvbmVcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYucGhvbmUuaW52YWxpZCB9XCIgKGtleXByZXNzKT1cInByZXZlbnRTdHJpbmdLZXlwcmVzcygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYucGhvbmUuZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5waG9uZS5lcnJvcnMucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZFBob25lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLnN5c3RlbX19PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPio8L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUuc3lzdGVtXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cInN5c3RlbVwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5zeXN0ZW0uaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYuc3lzdGVtLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYuc3lzdGVtLmVycm9ycz8ucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS53b3JrT3JkZXJ9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj48L3NwYW4+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUud29ya09yZGVyXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cIndvcmtPcmRlclwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi53b3JrT3JkZXIuaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYud29ya09yZGVyLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYud29ya09yZGVyLmVycm9ycz8ucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5yZWFzb259fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj4qPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cInJlYXNvbnNcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnNlbGVjdFJlYXNvblwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSZWFzb25cIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJyZWFzb25cIiAgb3B0aW9uRGlzYWJsZWQ9XCJpbmFjdGl2ZVwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5yZWFzb24uaW52YWxpZCB9XCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5yZWFzb25cIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgZm9ybUNvbnRyb2xOYW1lPVwicmVhc29uXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnJlYXNvbi5pbnZhbGlkIH1cIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYucmVhc29uLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYucmVhc29uLmVycm9ycy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlYXNvblJlcXVpcmVkfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLm1lc3NhZ2V9fSA8L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgcElucHV0VGV4dGFyZWEgc3R5bGU9XCIgbWluLWhlaWdodDoxMDBweDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO1wiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUubWVzc2FnZSArJy4uLidcIiBmb3JtQ29udHJvbE5hbWU9XCJtZXNzYWdlXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLm1lc3NhZ2UuZXJyb3JzIH1cIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLm1lc3NhZ2UuZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5tZXNzYWdlLmVycm9ycy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLm1lc3NhZ2UuZXJyb3JzLm1pbmxlbmd0aFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkTWVzc2FnZU1pbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxicj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWNvbnRhY3QxMDAtZm9ybS1idG5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtY29udGFjdDEwMC1mb3JtLWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QxMDAtZm9ybS1iZ2J0blwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJkLWJsb2NrIG14LWF1dG9cIiBbbGFiZWxdPVwidHJhbnNsYXRlLmFjY2VwdFwiIGljb249XCJwaSBwaS10aHVtYnMtdXBcIiBbcFRvb2x0aXBdPVwidHJhbnNsYXRlLmFjY2VwdFwiICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiAoY2xpY2spPVwib25TdWJtaXQoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJkLWJsb2NrIG14LWF1dG9cIiBbbGFiZWxdPVwidHJhbnNsYXRlLmFjY2VwdFwiIGljb249XCJwaSBwaS10aHVtYnMtdXBcIiBbcFRvb2x0aXBdPVwidHJhbnNsYXRlLmFjY2VwdFwiICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiAoY2xpY2spPVwiY29udGFjdGVkKClcIj48L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY2FyZC1iZ1wiICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGV1ciBjb250YWN0LWJsb2NcIiBbc3R5bGVdPVwie2hlaWdodDonMTUwcHgnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJkLWJsb2NrIG14LWF1dG9cIiBzcmM9XCJhc3NldHMvaW1nL0dFUG9ydGFsL3Bob25lLWNhbGxlZC5wbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNvdW50ZXIgY29udGFjdC1pY29uIHRleHQtY2VudGVyIG10LTRcIj57e3RyYW5zbGF0ZS5jb250YWN0fX08L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxicj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwiZC1ibG9jayBteC1hdXRvXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5zZWVOdW1iZXJcIiBpY29uPVwicGkgcGktZXllXCIgW3BUb29sdGlwXT1cInRyYW5zbGF0ZS5hY2NlcHRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiAoY2xpY2spPVwiY29udGFjdCgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICA8aWZyYW1lIHNyYz1cImh0dHBzOi8vbWFwcy5nb29nbGUuY29tL21hcHM/cT0yODMsJTIwUnVlJTIwRGUlMjBsYSUyME1pbmllcmUtQlAzNCUyMCUyMDc4NTMzJTIwQlVDJTIwJUUyJTgwJTkzJTIwQ2VkZXgmYW1wO3Q9JmFtcDt6PTEzJmFtcDtpZT1VVEY4JmFtcDtpd2xvYz0mYW1wO291dHB1dD1lbWJlZFwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjI1MFwiIHN0eWxlPVwiYm9yZGVyOjA7XCIgYWxsb3dmdWxsc2NyZWVuPVwiXCIgbG9hZGluZz1cImxhenlcIj48L2lmcmFtZT5cclxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJmcy00IG10LTNcIj4ge3t0cmFuc2xhdGUuaW5mb3JtYXRpb259fTwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZW52ZWxvcGVcIj48L2k+PGxhYmVsPiAmbmJzcDsge3t0cmFuc2xhdGUuZW1haWxUZXh0fX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj57e3RyYW5zbGF0ZS5lbWFpbH19IDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1tYXBcIj48L2k+PGxhYmVsPiAmbmJzcDsge3t0cmFuc2xhdGUuYWRkcmVzc1RleHR9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIlwiPnt7dHJhbnNsYXRlLmFkcmVzc319PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj57e3RyYW5zbGF0ZS50b3dufX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIlwiPnt7dHJhbnNsYXRlLmNvdW50cnl9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuPC9wLWRpYWxvZz5cclxuPHAtZGlhbG9nICpuZ0lmPVwidHJhbnNsYXRlXCJbaGVhZGVyXT1cInRyYW5zbGF0ZS5zZXJ2aWNlQ2VudGVyUGhvbmVUZXh0XCIgW21vZGFsXT1cInRydWVcIiBbKHZpc2libGUpXT1cImRpc3BsYXlOdW1iZXJcIiAgW2JyZWFrcG9pbnRzXT1cInsnOTYwcHgnOiAnNzV2dyd9XCIgW3N0eWxlXT1cInt3aWR0aDogJzQwMHB4JyxoZWlnaHQ6JzIwMHB4J31cIiBbZHJhZ2dhYmxlXT1cImZhbHNlXCIgW3Jlc2l6YWJsZV09XCJmYWxzZVwiIChvbkhpZGUpPVwiY2xvc2VOdW1iZXIoKVwiPlxyXG48YnI+XHJcbiAgPGg0IGNsYXNzPVwibnVtYmVyXCI+IDxzdHJvbmc+IDxpIGNsYXNzPVwicGkgcGktcGhvbmVcIj48L2k+ICAmbmJzcDt7e3RyYW5zbGF0ZS5jb250YWN0TnVtYmVyfX08L3N0cm9uZz48L2g0PlxyXG48L3AtZGlhbG9nPlxyXG5cclxuXHJcbjxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiPjwvcC10b2FzdD4iXX0=
@@ -80,6 +80,7 @@ export class MaintenanceListComponent {
80
80
  }
81
81
  closeConfirmDialog(confirm) {
82
82
  this.displayConfirmDialog = false;
83
+ this.maintenanceSelected.futureStatus = PmJobStatus.ACCEPTED;
83
84
  if (confirm) {
84
85
  if (!this.isProposedDate) {
85
86
  this.updateAlternativeDate();
@@ -101,6 +102,7 @@ export class MaintenanceListComponent {
101
102
  this.op.hide();
102
103
  this.reasonContact = fromOtherDate ? ReasonContact.MoreDatesFormPm : ReasonContact.ContactFormPm;
103
104
  this.displaycontactSupport = true;
105
+ //this.prepareForPopup() ;
104
106
  }
105
107
  closeContactSupport() {
106
108
  this.displaycontactSupport = false;
@@ -154,9 +156,15 @@ export class MaintenanceListComponent {
154
156
  this.callApiToUpdate();
155
157
  }
156
158
  editPm() {
159
+ //alert('editPm') ;
157
160
  this.alreadyScheduledMsg = true;
158
161
  this.op.hide();
159
- this.displayConfirmValidatedToWaiting = true;
162
+ //this.displayConfirmValidatedToWaiting = true;
163
+ this.reasonContact = ReasonContact.CancelFormPm;
164
+ this.displaycontactSupport = true;
165
+ this.prepareForPopup();
166
+ }
167
+ prepareForPopup() {
160
168
  if (this.maintenanceSelected.pmJob.customerAccepted === "Yes") {
161
169
  //this.maintenanceSelected.selectedDate = this.maintenanceSelected.pmJob.startDateTime ;
162
170
  this.startDateTime = this.maintenanceSelected.pmJob.startDateTime;
@@ -230,6 +238,7 @@ export class MaintenanceListComponent {
230
238
  });
231
239
  }
232
240
  }
241
+ //
233
242
  sendContactMeEmailMethode(contactMerequest) {
234
243
  this.sendContactMeEmail.emit(contactMerequest);
235
244
  }
@@ -306,4 +315,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImpor
306
315
  }], sendForm: [{
307
316
  type: Output
308
317
  }] } });
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbnRlbmFuY2UtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hd2YtdGVzdC1saWIvc3JjL2xpYi9zaGFyZWQvbWFpbnRlbmFuY2UtbGlzdC9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9tYWludGVuYW5jZS1saXN0L21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBR1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUtsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTM0QsTUFBTSxPQUFPLHdCQUF3QjtJQXlDakMsWUFDWSxjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFwQ2pDLG9CQUFlLEdBQW9CLEVBQUUsQ0FBQztRQUN0QyxnQ0FBMkIsR0FBb0IsRUFBRSxDQUFDO1FBQ2xELGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBRWhDLDZCQUF3QixHQUFDLEtBQUssQ0FBQztRQUU5QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsRCx1QkFB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dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPdXRwdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERldGFpbGVkUG1Kb2IgfSBmcm9tICcuLi8uLi9tb2RlbHMvZGV0YWlsZWRQbUpvYi5tb2RlbCc7XHJcbmltcG9ydCB7IEFsdGVybmF0aXZlRGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy9hbHRlcm5hdGl2ZURhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBFbWFpbFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW1haWxUeXBlJztcclxuaW1wb3J0IHsgRXZlbnRTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnRTdGF0dXMnO1xyXG5pbXBvcnQgeyBQbUpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9wbUpvYi5tb2RlbCc7XHJcbi8vaW1wb3J0IHsgUG1Kb2JSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BtSm9iUmVxdWVzdC5tb2RlbCc7XHJcbmltcG9ydCB7IFBNR3JvdXBlZEpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9wTUdyb3VwZWRKb2IubW9kZWwnO1xyXG5pbXBvcnQgeyBQbUpvYlN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9wbUpvYlN0YXR1cyc7XHJcbmltcG9ydCB7IFJlYXNvbkNvbnRhY3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVhc29uQ29udGFjdCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2F3Zi1tYWludGVuYW5jZS1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1haW50ZW5hbmNlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2R0JykgZHQ6IFRhYmxlIHwgdW5kZWZpbmVkO1xyXG4gICAgQFZpZXdDaGlsZCgnb3AnKSBvcDogYW55IHwgdW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgdHJhbnNsYXRlOiBhbnk7XHJcbiAgICBASW5wdXQoKSByZWFzb25zOiBhbnk7XHJcbiAgICBASW5wdXQoKSBnbG9iYWx0cmFuc2xhdGU6IGFueTtcclxuICAgIEBJbnB1dCgpIG1haW50ZW5hbmNlTGlzdDogRGV0YWlsZWRQbUpvYltdID0gW107XHJcbiAgICBASW5wdXQoKSBtYWludGVuYW5jZUxpc3ROb3REaXNwbGF5ZWQ6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgcG1Kb2JMaXN0OiBEZXRhaWxlZFBtSm9iW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIGlzQWxyZWFkeVNjaGVkdWxlZCE6IEJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm89ZmFsc2U7XHJcbiAgICBASW5wdXQoKSBhbHRlcm5hdGl2ZURhdGVzTGlzdCE6IEFsdGVybmF0aXZlRGF0ZVtdIDtcclxuICAgIEBPdXRwdXQoKSBlbWl0Rm9yVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgZW1pdEZvckFsdGVybmF0aXZlRGF0ZXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZW5kQ29udGFjdE1lRW1haWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBJbnB1dCgpIHN0YXR1czogYW55O1xyXG4gICAgQE91dHB1dCgpIHNlbmRGb3JtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBwbUpvYkxpbmtlZExpc3Q6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QgOiBEZXRhaWxlZFBtSm9iW10gPSBbXTtcclxuICAgIHVwZGF0ZVBtU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gICAgYWx0ZXJuYXRpdmVEYXRlc1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHNob3dEYXRlITogYm9vbGVhbjtcclxuICAgIG1haW50ZW5hbmNlU2VsZWN0ZWQhOiBEZXRhaWxlZFBtSm9iO1xyXG4gICAgc3RhcnREYXRlVGltZSE6IGFueTtcclxuICAgIGVuZERhdGVUaW1lITogYW55O1xyXG4gICAgc2VsZWN0ZWRXb3Jrb3JkZXJJZCE6IGFueTtcclxuICAgIGFsdGVybmF0aXZlRGF0ZSE6IEFsdGVybmF0aXZlRGF0ZSA7XHJcbiAgICBhbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQ6IEFsdGVybmF0aXZlRGF0ZVtdID0gW107XHJcbiAgICBkaXNwbGF5Y29udGFjdFN1cHBvcnQgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlDb25maXJtVmFsaWRhdGVkVG9XYWl0aW5nID0gZmFsc2U7XHJcbiAgICBkaXNwbGF5Q29uZmlybURpYWxvZyA9IGZhbHNlO1xyXG4gICAgZGlzcGxheVNob3dMaW5rcyAgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG4gICAgaXNMaW5rcyA9IGZhbHNlO1xyXG4gICAgaXNQcm9wb3NlZERhdGUgPSB0cnVlO1xyXG4gICAgcG1TZWxlY3RlZFN0YXR1cyE6c3RyaW5nIDtcclxuICAgIGVtYWlsVHlwZXMhOnN0cmluZ1tdOyBcclxuICAgIGFscmVhZHlTY2hlZHVsZWRNc2cgITpib29sZWFuO1xyXG4gICAgcmVhc29uQ29udGFjdD1cIlwiO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgICApIHt9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudXBkYXRlUG1TdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVQbVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5hbHRlcm5hdGl2ZURhdGVzU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhcHBseUZpbHRlckdsb2JhbCgkZXZlbnQ6IGFueSwgc3RyaW5nVmFsOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmR0Py5maWx0ZXJHbG9iYWwoXHJcbiAgICAgICAgICAgICgkZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLFxyXG4gICAgICAgICAgICBzdHJpbmdWYWxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdEVsZW1lbnQoZWxlbWVudDogRGV0YWlsZWRQbUpvYikge1xyXG4gICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc0xpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLmVtYWlsVHlwZXMgPVtdO1xyXG4gICAgICAgIGlmKGVsZW1lbnQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnBtU2VsZWN0ZWRTdGF0dXMgPSBlbGVtZW50LnN0YXR1cyA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcblxyXG5cclxuICAgICAgICBpZihlbGVtZW50LnBtSm9iLmdyb3VwTGlzdClcclxuICAgICAgICB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmlzTGlua3MgPSBlbGVtZW50LnBtSm9iLmdyb3VwTGlzdD8ubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtvcmRlcklkID0gZWxlbWVudC5wbUpvYi53b3Jrb3JkZXJJZDtcclxuXHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkID0gZWxlbWVudDtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzQWxyZWFkeVNjaGVkdWxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldEFsdGVybmF0aXZlRGF0ZXMoZWxlbWVudC5wbUpvYik7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlVGltZSA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5zdGFydERhdGVUaW1lO1xyXG4gICAgICAgICAgICB0aGlzLmVuZERhdGVUaW1lID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmVuZERhdGVUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmdldExpbmtlZFBtSm9iKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybURpYWxvZygpIHtcclxuICAgICAgICB0aGlzLmlzUHJvcG9zZWREYXRlID0gdHJ1ZSA7XHJcbiAgICAgICAgdGhpcy5vcC5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybURpYWxvZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBcclxuXHJcbiAgICBjbG9zZUNvbmZpcm1EaWFsb2coY29uZmlybTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybURpYWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChjb25maXJtKSB7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLmlzUHJvcG9zZWREYXRlKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBbHRlcm5hdGl2ZURhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHsgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQcm9wb3NlZERhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQWNjZXB0ZWRfQ1NDKSA7XHJcbiAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5BY2NlcHRlZF9DbGllbnRzKSA7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG1Kb2IoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvcG9zZUFub3RoZXJEYXRlKCkge1xyXG4gICAgICAgIHRoaXMuaXNQcm9wb3NlZERhdGUgPSBmYWxzZSA7XHJcbiAgICAgICAgdGhpcy5vcC5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5QW5vdGhlckRhdGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnRhY3RTdXBwb3J0KGZyb21PdGhlckRhdGUgOiBib29sZWFuKSB7XHJcbiAgICAgIFxyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMucmVhc29uQ29udGFjdCA9IGZyb21PdGhlckRhdGUgPyBSZWFzb25Db250YWN0Lk1vcmVEYXRlc0Zvcm1QbSA6ICBSZWFzb25Db250YWN0LkNvbnRhY3RGb3JtUG0gO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheWNvbnRhY3RTdXBwb3J0ID0gdHJ1ZTtcclxuICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlQ29udGFjdFN1cHBvcnQoKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Y29udGFjdFN1cHBvcnQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dEYXRlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWFzb25Db250YWN0ID1cIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dMaW5rcyhlbGVtZW50PzphbnkpXHJcbiAgICB7XHJcbiAgICAgICAgaWYoZWxlbWVudClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RWxlbWVudChlbGVtZW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheVNob3dMaW5rcyA9IHRydWUgO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjbG9zZVNob3dMaW5rcygpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5U2hvd0xpbmtzID0gZmFsc2UgO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlQ29uZmlybWVkRGF0ZUluZm8oKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybWVkRGF0ZUluZm8gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBhY2NlcHREYXRlKGFsdGVybmF0aXZlRGF0ZXM6IEFsdGVybmF0aXZlRGF0ZVtdKVxyXG4gICAge1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1EaWFsb2cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1NlbGVjdGVkID0gYWx0ZXJuYXRpdmVEYXRlcztcclxuICAgICAgICB0aGlzLmZpbmREYXRlc1NlbGVjdGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZmluZERhdGVzU2VsZWN0ZWQoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1NlbGVjdGVkLmZvckVhY2goKGFsdGVybmF0aXZlRGF0ZTogQWx0ZXJuYXRpdmVEYXRlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKGFsdGVybmF0aXZlRGF0ZS5zZWxlY3RlZD09PVwiWWVzXCIpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlVGltZSA9IGFsdGVybmF0aXZlRGF0ZS5zdGFydERhdGVUaW1lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmREYXRlVGltZSA9IGFsdGVybmF0aXZlRGF0ZS5lbmREYXRlVGltZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5zZWxlY3RlZERhdGUgPSBhbHRlcm5hdGl2ZURhdGUuc3RhcnREYXRlVGltZTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlQW5vdGhlckRhdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUFub3RoZXJEYXRlID0gZmFsc2U7XHJcbiAgICAgICAgaWYoZXZlbnQ9PT1mYWxzZSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxyZWFkeVNjaGVkdWxlZE1zZyA9IGZhbHNlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmNvbnRhY3RTdXBwb3J0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVQbUpvYigpIHtcclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5wbUpvYkxpc3QgPVtdO1xyXG4gICAgICAgIHRoaXMucG1Kb2JMaXN0LnB1c2godGhpcy5tYWludGVuYW5jZVNlbGVjdGVkKTtcclxuICAgICAgICBpZih0aGlzLnBtSm9iTGlua2VkTGlzdC5sZW5ndGggPjApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnBtSm9iTGlua2VkTGlzdC5mb3JFYWNoKChwTUpvYjpEZXRhaWxlZFBtSm9iKSAgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMucG1Kb2JMaXN0LnB1c2gocE1Kb2IpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2FsbEFwaVRvVXBkYXRlKCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGVkaXRQbSgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5hbHJlYWR5U2NoZWR1bGVkTXNnID0gdHJ1ZSA7XHJcbiAgICAgICAgdGhpcy5vcC5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybVZhbGlkYXRlZFRvV2FpdGluZyA9IHRydWU7XHJcbiAgICAgICAgaWYodGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbWVyQWNjZXB0ZWQgPT09XCJZZXNcIilcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIC8vdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnNlbGVjdGVkRGF0ZSA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5zdGFydERhdGVUaW1lIDtcclxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGVUaW1lID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kRGF0ZVRpbWUgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZW5kRGF0ZVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1NlbGVjdGVkID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmFsdGVybmF0aXZlRGF0ZXM7XHJcbiAgICAgICAgICAgIHRoaXMuZmluZERhdGVzU2VsZWN0ZWQoKTtcclxuICAgICAgICB9IFxyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlQ29uZmlybURpYWxvZ1ZhbGlkYXRlZFRvV2FpdGluZyhjb25maXJtOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtVmFsaWRhdGVkVG9XYWl0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGNvbmZpcm0pIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZWRUb1dhaXRpbmdVcGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmFsaWRhdGVkVG9XYWl0aW5nVXBkYXRlKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tT2JqZWN0PSB7fTtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tT2JqZWN0LmN1c3RvbWVyV2FpdGluZyA9ICdZZXMnO1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5mdXR1cmVTdGF0dXMgPSBQbUpvYlN0YXR1cy5XQUlUSU5HIDtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLnBtSm9iTGlua2VkTGlzdC5mb3JFYWNoKChpdGVtIDpEZXRhaWxlZFBtSm9iICApICA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0ucG1Kb2IuY3VzdG9tT2JqZWN0LmN1c3RvbWVyV2FpdGluZyA9ICdZZXMnO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaCh0aGlzLmFscmVhZHlTY2hlZHVsZWRNc2cgPyBFbWFpbFR5cGUuUmVwb3J0RGF0ZV9DU0MgOiBFbWFpbFR5cGUuU2VuZE5ld0RhdGVzX0NTQykgIDtcclxuICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaCh0aGlzLmFscmVhZHlTY2hlZHVsZWRNc2cgPyBFbWFpbFR5cGUuUmVwb3J0RGF0ZV9DbGllbnRzIDogRW1haWxUeXBlLlNlbmROZXdEYXRlc19DbGllbnRzKSAgO1xyXG4gICAgICAgIHRoaXMudXBkYXRlUG1Kb2IoKTtcclxuICAgIH1cclxuXHJcbiAgXHJcblxyXG4gICAgdXBkYXRlUHJvcG9zZWREYXRlKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tZXJBY2NlcHRlZCA9ICdZZXMnO1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ldmVudFN0YXR1cyA9IEV2ZW50U3RhdHVzLkFTU0lHTkVEQU5DO1xyXG4gICAgICAgIHRoaXMucG1Kb2JMaW5rZWRMaXN0LmZvckVhY2goKGl0ZW0gOkRldGFpbGVkUG1Kb2IgICkgID0+IHtcclxuICAgICAgICAgICAgaXRlbS5wbUpvYi5jdXN0b21lckFjY2VwdGVkID0gJ1llcyc7XHJcbiAgICAgICAgICAgIGl0ZW0ucG1Kb2IuZXZlbnRTdGF0dXMgPSBFdmVudFN0YXR1cy5BU1NJR05FREFOQztcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQWx0ZXJuYXRpdmVEYXRlKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLmZpbmREYXRlc1NlbGVjdGVkKCk7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmFsdGVybmF0aXZlRGF0ZXMgPSAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQgO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMucG1Kb2JMaW5rZWRMaXN0LmZvckVhY2goKGl0ZW0gOkRldGFpbGVkUG1Kb2IgICkgID0+IHtcclxuICAgICAgICAgICAgaXRlbS5wbUpvYi5hbHRlcm5hdGl2ZURhdGVzID0gIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1NlbGVjdGVkIDtcclxuICAgICAgICAgICAgaXRlbS5wbUpvYi5ldmVudFN0YXR1cyA9IEV2ZW50U3RhdHVzLkFTU0lHTkVEQU5DO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUFub3RoZXJEYXRlID0gZmFsc2U7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGdldEFsdGVybmF0aXZlRGF0ZXMocG1Kb2IgOiBQbUpvYiApICB7XHJcbiAgICAgICAgdGhpcy5lbWl0Rm9yQWx0ZXJuYXRpdmVEYXRlcy5lbWl0KHBtSm9iKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMaW5rZWRQbUpvYigpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5wbUpvYkxpbmtlZExpc3QgPVtdO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QgPVtdO1xyXG4gICAgICAgIGlmKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZ3JvdXBMaXN0LmZvckVhY2goKGxpbmtlZCA6IFBNR3JvdXBlZEpvYiAgKSAgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VMaXN0LmZvckVhY2goKGl0ZW0gOkRldGFpbGVkUG1Kb2IgICkgID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZihsaW5rZWQud29ya29yZGVySWQgPT09IGl0ZW0ucG1Kb2Iud29ya29yZGVySWQpXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbUpvYkxpbmtlZExpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIHRoZSBsaW5rZWQgUE0gaW4gdGhlIG90aGVyIG1haW50ZW5hbmNlIGxpc3Qgbm90IHNlbGVjdGVkXHJcbiAgICAgICAgaWYodGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmdyb3VwTGlzdCAmJiAodGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmdyb3VwTGlzdC5sZW5ndGggIT09IHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QubGVuZ3RoKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QuZm9yRWFjaCgobGlua2VkIDogUE1Hcm91cGVkSm9iICApICA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZUxpc3ROb3REaXNwbGF5ZWQuZm9yRWFjaCgoaXRlbSA6RGV0YWlsZWRQbUpvYiAgKSAgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udG9VcGRhdGUgPSBmYWxzZSA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYobGlua2VkLndvcmtvcmRlcklkID09PSBpdGVtLnBtSm9iLndvcmtvcmRlcklkKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbUpvYkxpbmtlZExpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuXHJcbiAgICBzZW5kQ29udGFjdE1lRW1haWxNZXRob2RlKGNvbnRhY3RNZXJlcXVlc3Q6YW55KVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuc2VuZENvbnRhY3RNZUVtYWlsLmVtaXQoY29udGFjdE1lcmVxdWVzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FsbEFwaVRvVXBkYXRlKClcclxuICAgIHtcclxuICAgICAgICBsZXQgUG1Kb2JMaXN0Rm9yVXBkYXRlID0ge30gYXMgYW55O1xyXG4gICAgICAgIFBtSm9iTGlzdEZvclVwZGF0ZS5wbUpvYkxpc3QgPSB0aGlzLnBtSm9iTGlzdDtcclxuICAgICAgICBQbUpvYkxpc3RGb3JVcGRhdGUuZW1haWxUeXBlcyA9IHRoaXMuZW1haWxUeXBlcztcclxuICAgICAgICB0aGlzLmVtaXRGb3JVcGRhdGUuZW1pdChQbUpvYkxpc3RGb3JVcGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zZm9ybVN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcclxuICBcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5ORVcgOiByZXR1cm4gdGhpcy5zdGF0dXMubmV3O1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkFDQ0VQVEVEIDogcmV0dXJuIHRoaXMuc3RhdHVzLmFjY2VwdGVkO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkNMT1NFRCA6IHJldHVybiB0aGlzLnN0YXR1cy5jbG9zZWQ7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTGF0ZSA6IHJldHVybiB0aGlzLnN0YXR1cy5sYXRlO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLk9QRU4gOiByZXR1cm4gdGhpcy5zdGF0dXMub3BlbjtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5XQUlUSU5HIDogcmV0dXJuIHRoaXMuc3RhdHVzLndhaXRpbmc7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuRE9ORSA6IHJldHVybiB0aGlzLnN0YXR1cy5kb25lO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLlZBTElEQVRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy52YWxpZGF0ZWQ7XHJcbiAgICAgICAgICAgIGRlZmF1bHQgOiByZXR1cm4gXCJFcnJldXJcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RhdHVzVG9vbHRpcChzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5BQ0NFUFRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy5hY2NlcHRlZFRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTkVXIDogcmV0dXJuIHRoaXMuc3RhdHVzLm5ld1Rvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuQ0xPU0VEIDogcmV0dXJuIHRoaXMuc3RhdHVzLmNsb3NlZFRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTGF0ZSA6IHJldHVybiB0aGlzLnN0YXR1cy5sYXRlVG9vbHRpcDtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuT1BFTiA6IHJldHVybiB0aGlzLnN0YXR1cy5vcGVuVG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5XQUlUSU5HIDogcmV0dXJuIHRoaXMuc3RhdHVzLndhaXRpbmdUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkRPTkUgOiByZXR1cm4gdGhpcy5zdGF0dXMuZG9uZVRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuVkFMSURBVEVEIDogcmV0dXJuIHRoaXMuc3RhdHVzLnZhbGlkYXRlZFRvb2x0aXA7XHJcbiAgICAgICAgICAgIGRlZmF1bHQgOiByZXR1cm4gXCJFcnJldXJcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxwLXRhYmxlICNkdCBbdmFsdWVdPVwibWFpbnRlbmFuY2VMaXN0XCIgcmVzcG9uc2l2ZUxheW91dD1cInN0YWNrXCIgW3Jvd3NdPVwiMTBcIiBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIiBbcm93c1BlclBhZ2VPcHRpb25zXT1cIls1LDEwLDI1LDUwXVwiIFtwYWdpbmF0b3JdPVwidHJ1ZVwiIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwiWydzeXN0ZW1JZCcsJ3BtSm9iLmNhc2VJZCcsJ3N5c3RlbU5hbWUnLCdwbUpvYi53b3Jrb3JkZXJJZCcsJ3BtSm9iLnN0YXJ0RGF0ZVRpbWUnLCdwbUpvYi5lbmREYXRlVGltZScsJ3BtSm9iLmNhc2VfdHlwZScsJ3BtSm9iLmNhc2VfY2F0ZWdvcnknLCdzdGF0dXMnXVwiXHJcbiAgICBbcm93SG92ZXJdPVwidHJ1ZVwiIGRhdGFLZXk9XCJpZFwiIFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZS5jb3VudFBhZ2VzXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiAoaW5wdXQpPVwiYXBwbHlGaWx0ZXJHbG9iYWwoJGV2ZW50LCAnY29udGFpbnMnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdsb2JhbHRyYW5zbGF0ZS5zZWFyY2hcIiAvPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPCEtLSA8dGggcFNvcnRhYmxlQ29sdW1uPVwiY2FzZUlkXCI+Q2FzZSBJZCA8cC1zb3J0SWNvbiBmaWVsZD1cImNhc2VJZFwiPjwvcC1zb3J0SWNvbj4gLS0+XHJcbiAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzeXN0ZW1OYW1lXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnN5c3RlbX19XHJcbiAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInN5c3RlbUlkXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN5c3RlbUlkXCI+U3lzdGVtIElkXHJcbiAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzeXN0ZW1OYW1lXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJ3b3Jrb3JkZXJJZFwiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC53b3JrT3JkZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cIndvcmtvcmRlcklkXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwic3RhcnREYXRlVGltZVwiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5zdGFydERhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzdGFydERhdGVUaW1lXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJjYXNlX3R5cGVcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QudHlwZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiY2FzZV90eXBlXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN0YXR1c1wiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5zdGF0dXN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3RhdHVzXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzdGF0dXNcIiA+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0Lk5ickxpbmtzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzdGF0dXNcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4gQWN0aW9uPC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXByb2R1Y3QgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XHJcbiAgICAgICAgPHRyPiAgIFxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnN5c3RlbU5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnN5c3RlbUlkIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5wbUpvYi53b3Jrb3JkZXJOdW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnBtSm9iLnN0YXJ0RGF0ZVRpbWUgfCBkYXRlOiAnZGQgTU1NIHl5eXkgJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57e3Byb2R1Y3QucG1Kb2IuY2FzZVR5cGUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+PHNwYW4gW2NsYXNzXT1cIidwcm9kdWN0LXN0YXR1cyBzdGF0dXMtJyArIHByb2R1Y3Quc3RhdHVzXCIgW3BUb29sdGlwXT1cImdldFN0YXR1c1Rvb2x0aXAocHJvZHVjdC5zdGF0dXMpXCI+e3t0cmFuc2Zvcm1TdGF0dXMocHJvZHVjdC5zdGF0dXMpICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwicHJvZHVjdC5wbUpvYi5ncm91cExpc3QubGVuZ3RoPjAgXCIgKGNsaWNrKT1cInNob3dMaW5rcyhwcm9kdWN0KVwiPiA8c3BhbiBjbGFzcz1cImNpcmNsZVwiPnt7cHJvZHVjdC5wbUpvYi5ncm91cExpc3QubGVuZ3RoIH19PC9zcGFuPiA8aSBjbGFzcz1cInBpIHBpLWxpbmtcIiBzdHlsZT1cImZvbnQtc2l6ZTogMXJlbVwiPjwvaT4gPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwicHJvZHVjdC5wbUpvYi5ncm91cExpc3QubGVuZ3RoPT09MCBcIiAoY2xpY2spPVwic2hvd0xpbmtzKHByb2R1Y3QpXCI+IDxzcGFuIGNsYXNzPVwiY2lyY2xlbGlua2VkXCI+e3twcm9kdWN0LnBtSm9iLmdyb3VwTGlzdC5sZW5ndGggfX08L3NwYW4+IDxpIGNsYXNzPVwicGkgcGktbGlua1wiIHN0eWxlPVwiZm9udC1zaXplOiAxcmVtXCI+PC9pPiA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgbGFiZWw9XCJcIiBpY29uPVwicGkgcGktY2FsZW5kYXJcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWRcIiAjYWN0dWFsVGFyZ2V0IChjbGljayk9XCJzZWxlY3RFbGVtZW50KHByb2R1Y3QpXCIgKGNsaWNrKT1cIm9wLnRvZ2dsZSgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cIigocHJvZHVjdC5zdGF0dXMgPT09J2xhdGUnICB8fCBwcm9kdWN0LnN0YXR1cyA9PT0nYWNjZXB0ZWQnKSAmJiAhaXNBbHJlYWR5U2NoZWR1bGVkKSB8fCBwcm9kdWN0LnN0YXR1cyA9PT0nd2FpdGluZydcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJzdW1tYXJ5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtZC1mbGV4IHAtYWktY2VudGVyIHAtamMtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICB7e2dsb2JhbHRyYW5zbGF0ZS5jb3VudH19IHt7bWFpbnRlbmFuY2VMaXN0ID8gbWFpbnRlbmFuY2VMaXN0Lmxlbmd0aCA6IDAgfX0ge3tnbG9iYWx0cmFuc2xhdGUuZWxlbWVudHN9fS5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvcC10YWJsZT5cclxuXHJcbjxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiPjwvcC10b2FzdD5cclxuPHAtb3ZlcmxheVBhbmVsICNvcCBbZGlzbWlzc2FibGVdPVwidHJ1ZVwiIFtzaG93Q2xvc2VJY29uXT1cImZhbHNlXCIgW3Nob3dUcmFuc2l0aW9uT3B0aW9uc109XCInMG1zJ1wiIFtoaWRlVHJhbnNpdGlvbk9wdGlvbnNdPVwiJzBtcydcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiAqbmdJZj1cIiFpc0FscmVhZHlTY2hlZHVsZWRcIiBpY29uPVwicGkgcGktdGh1bWJzLXVwXCIgKGNsaWNrKT1cImNvbmZpcm1EaWFsb2coKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LmNvbmZpcm1EYXRlXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGhyICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZFwiPlxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiAqbmdJZj1cIiFpc0FscmVhZHlTY2hlZHVsZWQgJiYgKGFsdGVybmF0aXZlRGF0ZXNMaXN0Lmxlbmd0aD4wKSBcIiBpY29uPVwicGkgcGktY2FsZW5kYXItcGx1c1wiIChjbGljayk9XCJwcm9wb3NlQW5vdGhlckRhdGUoKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LmNob29zZUFub3RoZXJEYXRlXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XHJcbiAgICAgICAgPGhyICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZCAmJiAoYWx0ZXJuYXRpdmVEYXRlc0xpc3QubGVuZ3RoPjApIFwiPlxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBpY29uPVwicGkgcGktcGhvbmVcIiAoY2xpY2spPVwiY29udGFjdFN1cHBvcnQoZmFsc2UpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY29udGFjdFN1cHBvclwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxociAqbmdJZj1cIiBpc0xpbmtzXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIGljb249XCJwaSBwaS1saW5rXCIgKm5nSWY9XCIgaXNMaW5rc1wiIChjbGljayk9XCJzaG93TGlua3MoKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnNob3dMaW5rc1wiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxociAqbmdJZj1cImlzQWxyZWFkeVNjaGVkdWxlZCAmJiBwbVNlbGVjdGVkU3RhdHVzID09PSd2YWxpZGF0ZWQnXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiICpuZ0lmPVwiaXNBbHJlYWR5U2NoZWR1bGVkICYmIHBtU2VsZWN0ZWRTdGF0dXMgPT09J3ZhbGlkYXRlZCdcIiBpY29uPVwicGkgcGktcGVuY2lsXCIgKGNsaWNrKT1cImVkaXRQbSgpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY2FuY2VsXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3Atb3ZlcmxheVBhbmVsPlxyXG5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXljb250YWN0U3VwcG9ydCBcIiA+XHJcbiAgICA8YXBwLWNvbnRhY3Qtc3VwcG9ydCBbcmVhc29uQ29udGFjdF09XCJyZWFzb25Db250YWN0XCIgKHNlbmRDb250YWN0TWVFbWFpbCk9XCJzZW5kQ29udGFjdE1lRW1haWxNZXRob2RlKCRldmVudClcIiBbZGV0YWlsZWRQbUpvYl0gPVwibWFpbnRlbmFuY2VTZWxlY3RlZFwiIFtnbG9iYWx0cmFuc2xhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlXCIgIFtyZWFzb25zXT1cInJlYXNvbnNcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jb250YWN0U3VwcG9ydFwiIFtkaXNwbGF5Y29udGFjdFN1cHBvcnRdPVwiZGlzcGxheWNvbnRhY3RTdXBwb3J0XCIgW3Nob3dEYXRlXT1cInNob3dEYXRlXCIgKGNsb3NlQ29udGFjdFN1cHBvcnRQb3B1cCk9XCJjbG9zZUNvbnRhY3RTdXBwb3J0KClcIj48L2FwcC1jb250YWN0LXN1cHBvcnQ+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheUNvbmZpcm1EaWFsb2dcIj5cclxuICAgIDxhcHAtY29uZmlybS1kaWFsb2cgW2RldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XT1cImRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XCIgICBbaXNQcm9wb3NlZERhdGVdPVwiaXNQcm9wb3NlZERhdGVcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNvbmZpcm1EaWFsb2dcIlxyXG4gICAgICAgIFtzdGFydERhdGVUaW1lXT1cInN0YXJ0RGF0ZVRpbWVcIiBbZW5kRGF0ZVRpbWVdPVwiZW5kRGF0ZVRpbWVcIiBbZGlzcGxheUNvbmZpcm1EaWFsb2ddPVwiZGlzcGxheUNvbmZpcm1EaWFsb2dcIiAoY2xvc2VDb25maXJtRGlhbG9nKT1cImNsb3NlQ29uZmlybURpYWxvZygkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1jb25maXJtLWRpYWxvZz5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Q29uZmlybVZhbGlkYXRlZFRvV2FpdGluZ1wiPlxyXG4gICAgPGFwcC1jb25maXJtLWRpYWxvZy12YWxpZGF0ZWQtdG8td2FpdGluZyBbZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RdPVwiZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RcIiAgIFthbHJlYWR5U2NoZWR1bGVkTXNnXT1cImFscmVhZHlTY2hlZHVsZWRNc2dcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNvbmZpcm1WYWxpZGF0ZWRUb1dhaXRpbmdEaWFsb2dcIlxyXG4gICAgICAgIFtzdGFydERhdGVUaW1lXT1cInN0YXJ0RGF0ZVRpbWVcIiBbZW5kRGF0ZVRpbWVdPVwiZW5kRGF0ZVRpbWVcIiBbZGlzcGxheUNvbmZpcm1WYWxpZGF0ZWRUb1dhaXRpbmddPVwiZGlzcGxheUNvbmZpcm1WYWxpZGF0ZWRUb1dhaXRpbmdcIiAoY2xvc2VDb25maXJtRGlhbG9nVmFsaWRhdGVkVG9XYWl0aW5nKT1cImNsb3NlQ29uZmlybURpYWxvZ1ZhbGlkYXRlZFRvV2FpdGluZygkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1jb25maXJtLWRpYWxvZy12YWxpZGF0ZWQtdG8td2FpdGluZz5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm9cIj5cclxuICAgIDxhcHAtY29uZmlybWVkLWRhdGUtaW5mb3JtYXRpb24gW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jb25maXJtRGF0ZUluZm9ybWF0aW9uXCIgW3N0YXJ0RGF0ZVRpbWVdPVwic3RhcnREYXRlVGltZVwiIFtlbmREYXRlVGltZV09XCJlbmREYXRlVGltZVwiIFtkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm9dPVwiZGlzcGxheUNvbmZpcm1lZERhdGVJbmZvXCIgKGNsb3NlQ29uZmlybWVkRGF0ZUluZm8pPVwiY2xvc2VDb25maXJtZWREYXRlSW5mbygpXCI+PC9hcHAtY29uZmlybWVkLWRhdGUtaW5mb3JtYXRpb24+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheUFub3RoZXJEYXRlICYmIGFsdGVybmF0aXZlRGF0ZXNMaXN0XCI+XHJcbiAgICA8YXBwLWNob29zZS1hbm90aGVyLWRhdGUgW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jaG9vc2VBbm90aGVyRGF0ZVwiIFthbHRlcm5hdGl2ZURhdGVzTGlzdF09XCJhbHRlcm5hdGl2ZURhdGVzTGlzdFwiIFtkaXNwbGF5QW5vdGhlckRhdGVdPVwiZGlzcGxheUFub3RoZXJEYXRlXCIgKGNsb3NlQW5vdGhlckRhdGUpPVwiY2xvc2VBbm90aGVyRGF0ZSgkZXZlbnQpXCIgKGFjY2VwdERhdGUpPVwiYWNjZXB0RGF0ZSgkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1jaG9vc2UtYW5vdGhlci1kYXRlPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXlTaG93TGlua3MgJiYgc2VsZWN0ZWRXb3Jrb3JkZXJJZFwiPlxyXG4gICAgPGFwcC1zaG93LWxpbmtzIFtzdGF0dXNdPVwic3RhdHVzXCIgW3NlbGVjdGVkV29ya29yZGVySWRdPVwic2VsZWN0ZWRXb3Jrb3JkZXJJZFwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlXCIgW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbZGlzcGxheVNob3dMaW5rc109XCJkaXNwbGF5U2hvd0xpbmtzXCIgKGNsb3NlU2hvd0xpbmtzKT1cImNsb3NlU2hvd0xpbmtzKClcIiBbZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RdPVwiZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RcIj48L2FwcC1zaG93LWxpbmtzPlxyXG48L2Rpdj5cclxuXHJcblxyXG4iXX0=
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbnRlbmFuY2UtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hd2YtdGVzdC1saWIvc3JjL2xpYi9zaGFyZWQvbWFpbnRlbmFuY2UtbGlzdC9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9tYWludGVuYW5jZS1saXN0L21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBR1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUtsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTM0QsTUFBTSxPQUFPLHdCQUF3QjtJQXlDakMsWUFDWSxjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFwQ2pDLG9CQUFlLEdBQW9CLEVBQUUsQ0FBQztRQUN0QyxnQ0FBMkIsR0FBb0IsRUFBRSxDQUFDO1FBQ2xELGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBRWhDLDZCQUF3QixHQUFDLEtBQUssQ0FBQztRQUU5QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsRCx1QkFB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QUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0UsTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPdXRwdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERldGFpbGVkUG1Kb2IgfSBmcm9tICcuLi8uLi9tb2RlbHMvZGV0YWlsZWRQbUpvYi5tb2RlbCc7XHJcbmltcG9ydCB7IEFsdGVybmF0aXZlRGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy9hbHRlcm5hdGl2ZURhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBFbWFpbFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW1haWxUeXBlJztcclxuaW1wb3J0IHsgRXZlbnRTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnRTdGF0dXMnO1xyXG5pbXBvcnQgeyBQbUpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9wbUpvYi5tb2RlbCc7XHJcbi8vaW1wb3J0IHsgUG1Kb2JSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BtSm9iUmVxdWVzdC5tb2RlbCc7XHJcbmltcG9ydCB7IFBNR3JvdXBlZEpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9wTUdyb3VwZWRKb2IubW9kZWwnO1xyXG5pbXBvcnQgeyBQbUpvYlN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9wbUpvYlN0YXR1cyc7XHJcbmltcG9ydCB7IFJlYXNvbkNvbnRhY3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVhc29uQ29udGFjdCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2F3Zi1tYWludGVuYW5jZS1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1haW50ZW5hbmNlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2R0JykgZHQ6IFRhYmxlIHwgdW5kZWZpbmVkO1xyXG4gICAgQFZpZXdDaGlsZCgnb3AnKSBvcDogYW55IHwgdW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgdHJhbnNsYXRlOiBhbnk7XHJcbiAgICBASW5wdXQoKSByZWFzb25zOiBhbnk7XHJcbiAgICBASW5wdXQoKSBnbG9iYWx0cmFuc2xhdGU6IGFueTtcclxuICAgIEBJbnB1dCgpIG1haW50ZW5hbmNlTGlzdDogRGV0YWlsZWRQbUpvYltdID0gW107XHJcbiAgICBASW5wdXQoKSBtYWludGVuYW5jZUxpc3ROb3REaXNwbGF5ZWQ6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgcG1Kb2JMaXN0OiBEZXRhaWxlZFBtSm9iW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIGlzQWxyZWFkeVNjaGVkdWxlZCE6IEJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm89ZmFsc2U7XHJcbiAgICBASW5wdXQoKSBhbHRlcm5hdGl2ZURhdGVzTGlzdCE6IEFsdGVybmF0aXZlRGF0ZVtdIDtcclxuICAgIEBPdXRwdXQoKSBlbWl0Rm9yVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgZW1pdEZvckFsdGVybmF0aXZlRGF0ZXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZW5kQ29udGFjdE1lRW1haWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBJbnB1dCgpIHN0YXR1czogYW55O1xyXG4gICAgQE91dHB1dCgpIHNlbmRGb3JtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBwbUpvYkxpbmtlZExpc3Q6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QgOiBEZXRhaWxlZFBtSm9iW10gPSBbXTtcclxuICAgIHVwZGF0ZVBtU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gICAgYWx0ZXJuYXRpdmVEYXRlc1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHNob3dEYXRlITogYm9vbGVhbjtcclxuICAgIG1haW50ZW5hbmNlU2VsZWN0ZWQhOiBEZXRhaWxlZFBtSm9iO1xyXG4gICAgc3RhcnREYXRlVGltZSE6IGFueTtcclxuICAgIGVuZERhdGVUaW1lITogYW55O1xyXG4gICAgc2VsZWN0ZWRXb3Jrb3JkZXJJZCE6IGFueTtcclxuICAgIGFsdGVybmF0aXZlRGF0ZSE6IEFsdGVybmF0aXZlRGF0ZSA7XHJcbiAgICBhbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQ6IEFsdGVybmF0aXZlRGF0ZVtdID0gW107XHJcbiAgICBkaXNwbGF5Y29udGFjdFN1cHBvcnQgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlDb25maXJtVmFsaWRhdGVkVG9XYWl0aW5nID0gZmFsc2U7XHJcbiAgICBkaXNwbGF5Q29uZmlybURpYWxvZyA9IGZhbHNlO1xyXG4gICAgZGlzcGxheVNob3dMaW5rcyAgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG4gICAgaXNMaW5rcyA9IGZhbHNlO1xyXG4gICAgaXNQcm9wb3NlZERhdGUgPSB0cnVlO1xyXG4gICAgcG1TZWxlY3RlZFN0YXR1cyE6c3RyaW5nIDtcclxuICAgIGVtYWlsVHlwZXMhOnN0cmluZ1tdOyBcclxuICAgIGFscmVhZHlTY2hlZHVsZWRNc2cgITpib29sZWFuO1xyXG4gICAgcmVhc29uQ29udGFjdD1cIlwiO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgICApIHt9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudXBkYXRlUG1TdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVQbVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5hbHRlcm5hdGl2ZURhdGVzU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhcHBseUZpbHRlckdsb2JhbCgkZXZlbnQ6IGFueSwgc3RyaW5nVmFsOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmR0Py5maWx0ZXJHbG9iYWwoXHJcbiAgICAgICAgICAgICgkZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLFxyXG4gICAgICAgICAgICBzdHJpbmdWYWxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdEVsZW1lbnQoZWxlbWVudDogRGV0YWlsZWRQbUpvYikge1xyXG4gICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc0xpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLmVtYWlsVHlwZXMgPVtdO1xyXG4gICAgICAgIGlmKGVsZW1lbnQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnBtU2VsZWN0ZWRTdGF0dXMgPSBlbGVtZW50LnN0YXR1cyA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcblxyXG4gICAgICAgIGlmKGVsZW1lbnQucG1Kb2IuZ3JvdXBMaXN0KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5pc0xpbmtzID0gZWxlbWVudC5wbUpvYi5ncm91cExpc3Q/Lmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkV29ya29yZGVySWQgPSBlbGVtZW50LnBtSm9iLndvcmtvcmRlcklkO1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZCA9IGVsZW1lbnQ7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc0FscmVhZHlTY2hlZHVsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbHRlcm5hdGl2ZURhdGVzKGVsZW1lbnQucG1Kb2IpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZVRpbWUgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2Iuc3RhcnREYXRlVGltZTtcclxuICAgICAgICAgICAgdGhpcy5lbmREYXRlVGltZSA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5lbmREYXRlVGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5nZXRMaW5rZWRQbUpvYigpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpcm1EaWFsb2coKSB7XHJcbiAgICAgICAgdGhpcy5pc1Byb3Bvc2VkRGF0ZSA9IHRydWUgO1xyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1EaWFsb2cgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgXHJcblxyXG4gICAgY2xvc2VDb25maXJtRGlhbG9nKGNvbmZpcm06IGFueSkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1EaWFsb2cgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuZnV0dXJlU3RhdHVzID0gUG1Kb2JTdGF0dXMuQUNDRVBURUQgO1xyXG4gICAgICAgIGlmIChjb25maXJtKSB7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLmlzUHJvcG9zZWREYXRlKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBbHRlcm5hdGl2ZURhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHsgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQcm9wb3NlZERhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQWNjZXB0ZWRfQ1NDKSA7XHJcbiAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5BY2NlcHRlZF9DbGllbnRzKSA7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG1Kb2IoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvcG9zZUFub3RoZXJEYXRlKCkge1xyXG4gICAgICAgIHRoaXMuaXNQcm9wb3NlZERhdGUgPSBmYWxzZSA7XHJcbiAgICAgICAgdGhpcy5vcC5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5QW5vdGhlckRhdGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnRhY3RTdXBwb3J0KGZyb21PdGhlckRhdGUgOiBib29sZWFuKSB7XHJcblxyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMucmVhc29uQ29udGFjdCA9IGZyb21PdGhlckRhdGUgPyBSZWFzb25Db250YWN0Lk1vcmVEYXRlc0Zvcm1QbSA6ICBSZWFzb25Db250YWN0LkNvbnRhY3RGb3JtUG0gO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheWNvbnRhY3RTdXBwb3J0ID0gdHJ1ZTtcclxuICAgICAgICAvL3RoaXMucHJlcGFyZUZvclBvcHVwKCkgO1xyXG4gICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VDb250YWN0U3VwcG9ydCgpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd0RhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlYXNvbkNvbnRhY3QgPVwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0xpbmtzKGVsZW1lbnQ/OmFueSlcclxuICAgIHtcclxuICAgICAgICBpZihlbGVtZW50KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RFbGVtZW50KGVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vcC5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5U2hvd0xpbmtzID0gdHJ1ZSA7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNsb3NlU2hvd0xpbmtzKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlTaG93TGlua3MgPSBmYWxzZSA7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VDb25maXJtZWREYXRlSW5mbygpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtZWREYXRlSW5mbyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFjY2VwdERhdGUoYWx0ZXJuYXRpdmVEYXRlczogQWx0ZXJuYXRpdmVEYXRlW10pXHJcbiAgICB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybURpYWxvZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQgPSBhbHRlcm5hdGl2ZURhdGVzO1xyXG4gICAgICAgIHRoaXMuZmluZERhdGVzU2VsZWN0ZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBmaW5kRGF0ZXNTZWxlY3RlZCgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQuZm9yRWFjaCgoYWx0ZXJuYXRpdmVEYXRlOiBBbHRlcm5hdGl2ZURhdGUpID0+IHtcclxuICAgICAgICAgICAgaWYoYWx0ZXJuYXRpdmVEYXRlLnNlbGVjdGVkPT09XCJZZXNcIilcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGVUaW1lID0gYWx0ZXJuYXRpdmVEYXRlLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZERhdGVUaW1lID0gYWx0ZXJuYXRpdmVEYXRlLmVuZERhdGVUaW1lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnNlbGVjdGVkRGF0ZSA9IGFsdGVybmF0aXZlRGF0ZS5zdGFydERhdGVUaW1lO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VBbm90aGVyRGF0ZShldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5QW5vdGhlckRhdGUgPSBmYWxzZTtcclxuICAgICAgICBpZihldmVudD09PWZhbHNlKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5hbHJlYWR5U2NoZWR1bGVkTXNnID0gZmFsc2UgO1xyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuY29udGFjdFN1cHBvcnQodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVBtSm9iKCkge1xyXG5cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLnBtSm9iTGlzdCA9W107XHJcbiAgICAgICAgdGhpcy5wbUpvYkxpc3QucHVzaCh0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQpO1xyXG4gICAgICAgIGlmKHRoaXMucG1Kb2JMaW5rZWRMaXN0Lmxlbmd0aCA+MClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMucG1Kb2JMaW5rZWRMaXN0LmZvckVhY2goKHBNSm9iOkRldGFpbGVkUG1Kb2IpICA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wbUpvYkxpc3QucHVzaChwTUpvYik7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWxsQXBpVG9VcGRhdGUoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZWRpdFBtKClcclxuICAgIHtcclxuICAgICAgICAvL2FsZXJ0KCdlZGl0UG0nKSA7XHJcbiAgICAgICAgdGhpcy5hbHJlYWR5U2NoZWR1bGVkTXNnID0gdHJ1ZSA7XHJcbiAgICAgICAgdGhpcy5vcC5oaWRlKCk7XHJcbiAgICAgICAgLy90aGlzLmRpc3BsYXlDb25maXJtVmFsaWRhdGVkVG9XYWl0aW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlYXNvbkNvbnRhY3QgPSAgIFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtIDtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wcmVwYXJlRm9yUG9wdXAoKSA7XHJcbiAgICBcclxuICAgIH1cclxuXHJcbiAgICBwcmVwYXJlRm9yUG9wdXAoKVxyXG4gICAge1xyXG4gICAgICAgIGlmKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21lckFjY2VwdGVkID09PVwiWWVzXCIpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAvL3RoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5zZWxlY3RlZERhdGUgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2Iuc3RhcnREYXRlVGltZSA7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlVGltZSA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5zdGFydERhdGVUaW1lO1xyXG4gICAgICAgICAgICB0aGlzLmVuZERhdGVUaW1lID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmVuZERhdGVUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZCA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5hbHRlcm5hdGl2ZURhdGVzO1xyXG4gICAgICAgICAgICB0aGlzLmZpbmREYXRlc1NlbGVjdGVkKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBjbG9zZUNvbmZpcm1EaWFsb2dWYWxpZGF0ZWRUb1dhaXRpbmcoY29uZmlybTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybVZhbGlkYXRlZFRvV2FpdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChjb25maXJtKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVkVG9XYWl0aW5nVXBkYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYXRlZFRvV2FpdGluZ1VwZGF0ZSgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbU9iamVjdD0ge307XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbU9iamVjdC5jdXN0b21lcldhaXRpbmcgPSAnWWVzJztcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuZnV0dXJlU3RhdHVzID0gUG1Kb2JTdGF0dXMuV0FJVElORyA7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5wbUpvYkxpbmtlZExpc3QuZm9yRWFjaCgoaXRlbSA6RGV0YWlsZWRQbUpvYiAgKSAgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmN1c3RvbU9iamVjdC5jdXN0b21lcldhaXRpbmcgPSAnWWVzJztcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2godGhpcy5hbHJlYWR5U2NoZWR1bGVkTXNnID8gRW1haWxUeXBlLlJlcG9ydERhdGVfQ1NDIDogRW1haWxUeXBlLlNlbmROZXdEYXRlc19DU0MpICA7XHJcbiAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2godGhpcy5hbHJlYWR5U2NoZWR1bGVkTXNnID8gRW1haWxUeXBlLlJlcG9ydERhdGVfQ2xpZW50cyA6IEVtYWlsVHlwZS5TZW5kTmV3RGF0ZXNfQ2xpZW50cykgIDtcclxuICAgICAgICB0aGlzLnVwZGF0ZVBtSm9iKCk7XHJcbiAgICB9XHJcblxyXG4gIFxyXG5cclxuICAgIHVwZGF0ZVByb3Bvc2VkRGF0ZSgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbWVyQWNjZXB0ZWQgPSAnWWVzJztcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZXZlbnRTdGF0dXMgPSBFdmVudFN0YXR1cy5BU1NJR05FREFOQztcclxuICAgICAgICB0aGlzLnBtSm9iTGlua2VkTGlzdC5mb3JFYWNoKChpdGVtIDpEZXRhaWxlZFBtSm9iICApICA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0ucG1Kb2IuY3VzdG9tZXJBY2NlcHRlZCA9ICdZZXMnO1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmV2ZW50U3RhdHVzID0gRXZlbnRTdGF0dXMuQVNTSUdORURBTkM7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUFsdGVybmF0aXZlRGF0ZSgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5maW5kRGF0ZXNTZWxlY3RlZCgpO1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5hbHRlcm5hdGl2ZURhdGVzID0gIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1NlbGVjdGVkIDtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLnBtSm9iTGlua2VkTGlzdC5mb3JFYWNoKChpdGVtIDpEZXRhaWxlZFBtSm9iICApICA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0ucG1Kb2IuYWx0ZXJuYXRpdmVEYXRlcyA9ICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZCA7XHJcbiAgICAgICAgICAgIGl0ZW0ucG1Kb2IuZXZlbnRTdGF0dXMgPSBFdmVudFN0YXR1cy5BU1NJR05FREFOQztcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBnZXRBbHRlcm5hdGl2ZURhdGVzKHBtSm9iIDogUG1Kb2IgKSAge1xyXG4gICAgICAgIHRoaXMuZW1pdEZvckFsdGVybmF0aXZlRGF0ZXMuZW1pdChwbUpvYik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TGlua2VkUG1Kb2IoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMucG1Kb2JMaW5rZWRMaXN0ID1bXTtcclxuICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0ID1bXTtcclxuICAgICAgICBpZih0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZ3JvdXBMaXN0KVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmdyb3VwTGlzdC5mb3JFYWNoKChsaW5rZWQgOiBQTUdyb3VwZWRKb2IgICkgID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlTGlzdC5mb3JFYWNoKChpdGVtIDpEZXRhaWxlZFBtSm9iICApICA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYobGlua2VkLndvcmtvcmRlcklkID09PSBpdGVtLnBtSm9iLndvcmtvcmRlcklkKVxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG1Kb2JMaW5rZWRMaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiB0aGUgbGlua2VkIFBNIGluIHRoZSBvdGhlciBtYWludGVuYW5jZSBsaXN0IG5vdCBzZWxlY3RlZFxyXG4gICAgICAgIGlmKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QgJiYgKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QubGVuZ3RoICE9PSB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0Lmxlbmd0aCkpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZ3JvdXBMaXN0LmZvckVhY2goKGxpbmtlZCA6IFBNR3JvdXBlZEpvYiAgKSAgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VMaXN0Tm90RGlzcGxheWVkLmZvckVhY2goKGl0ZW0gOkRldGFpbGVkUG1Kb2IgICkgID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnRvVXBkYXRlID0gZmFsc2UgO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGxpbmtlZC53b3Jrb3JkZXJJZCA9PT0gaXRlbS5wbUpvYi53b3Jrb3JkZXJJZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG1Kb2JMaW5rZWRMaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgLy9cclxuXHJcbiAgICBzZW5kQ29udGFjdE1lRW1haWxNZXRob2RlKGNvbnRhY3RNZXJlcXVlc3Q6YW55KVxyXG4gICAge1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuc2VuZENvbnRhY3RNZUVtYWlsLmVtaXQoY29udGFjdE1lcmVxdWVzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FsbEFwaVRvVXBkYXRlKClcclxuICAgIHtcclxuICAgICAgICBsZXQgUG1Kb2JMaXN0Rm9yVXBkYXRlID0ge30gYXMgYW55O1xyXG4gICAgICAgIFBtSm9iTGlzdEZvclVwZGF0ZS5wbUpvYkxpc3QgPSB0aGlzLnBtSm9iTGlzdDtcclxuICAgICAgICBQbUpvYkxpc3RGb3JVcGRhdGUuZW1haWxUeXBlcyA9IHRoaXMuZW1haWxUeXBlcztcclxuICAgICAgICB0aGlzLmVtaXRGb3JVcGRhdGUuZW1pdChQbUpvYkxpc3RGb3JVcGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zZm9ybVN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcclxuICBcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5ORVcgOiByZXR1cm4gdGhpcy5zdGF0dXMubmV3O1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkFDQ0VQVEVEIDogcmV0dXJuIHRoaXMuc3RhdHVzLmFjY2VwdGVkO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkNMT1NFRCA6IHJldHVybiB0aGlzLnN0YXR1cy5jbG9zZWQ7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTGF0ZSA6IHJldHVybiB0aGlzLnN0YXR1cy5sYXRlO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLk9QRU4gOiByZXR1cm4gdGhpcy5zdGF0dXMub3BlbjtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5XQUlUSU5HIDogcmV0dXJuIHRoaXMuc3RhdHVzLndhaXRpbmc7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuRE9ORSA6IHJldHVybiB0aGlzLnN0YXR1cy5kb25lO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLlZBTElEQVRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy52YWxpZGF0ZWQ7XHJcbiAgICAgICAgICAgIGRlZmF1bHQgOiByZXR1cm4gXCJFcnJldXJcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RhdHVzVG9vbHRpcChzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5BQ0NFUFRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy5hY2NlcHRlZFRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTkVXIDogcmV0dXJuIHRoaXMuc3RhdHVzLm5ld1Rvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuQ0xPU0VEIDogcmV0dXJuIHRoaXMuc3RhdHVzLmNsb3NlZFRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuTGF0ZSA6IHJldHVybiB0aGlzLnN0YXR1cy5sYXRlVG9vbHRpcDtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuT1BFTiA6IHJldHVybiB0aGlzLnN0YXR1cy5vcGVuVG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5XQUlUSU5HIDogcmV0dXJuIHRoaXMuc3RhdHVzLndhaXRpbmdUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkRPTkUgOiByZXR1cm4gdGhpcy5zdGF0dXMuZG9uZVRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuVkFMSURBVEVEIDogcmV0dXJuIHRoaXMuc3RhdHVzLnZhbGlkYXRlZFRvb2x0aXA7XHJcbiAgICAgICAgICAgIGRlZmF1bHQgOiByZXR1cm4gXCJFcnJldXJcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxwLXRhYmxlICNkdCBbdmFsdWVdPVwibWFpbnRlbmFuY2VMaXN0XCIgcmVzcG9uc2l2ZUxheW91dD1cInN0YWNrXCIgW3Jvd3NdPVwiMTBcIiBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIiBbcm93c1BlclBhZ2VPcHRpb25zXT1cIls1LDEwLDI1LDUwXVwiIFtwYWdpbmF0b3JdPVwidHJ1ZVwiIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwiWydzeXN0ZW1JZCcsJ3BtSm9iLmNhc2VJZCcsJ3N5c3RlbU5hbWUnLCdwbUpvYi53b3Jrb3JkZXJJZCcsJ3BtSm9iLnN0YXJ0RGF0ZVRpbWUnLCdwbUpvYi5lbmREYXRlVGltZScsJ3BtSm9iLmNhc2VfdHlwZScsJ3BtSm9iLmNhc2VfY2F0ZWdvcnknLCdzdGF0dXMnXVwiXHJcbiAgICBbcm93SG92ZXJdPVwidHJ1ZVwiIGRhdGFLZXk9XCJpZFwiIFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZS5jb3VudFBhZ2VzXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiAoaW5wdXQpPVwiYXBwbHlGaWx0ZXJHbG9iYWwoJGV2ZW50LCAnY29udGFpbnMnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdsb2JhbHRyYW5zbGF0ZS5zZWFyY2hcIiAvPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPCEtLSA8dGggcFNvcnRhYmxlQ29sdW1uPVwiY2FzZUlkXCI+Q2FzZSBJZCA8cC1zb3J0SWNvbiBmaWVsZD1cImNhc2VJZFwiPjwvcC1zb3J0SWNvbj4gLS0+XHJcbiAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzeXN0ZW1OYW1lXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnN5c3RlbX19XHJcbiAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInN5c3RlbUlkXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN5c3RlbUlkXCI+U3lzdGVtIElkXHJcbiAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzeXN0ZW1OYW1lXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJ3b3Jrb3JkZXJJZFwiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC53b3JrT3JkZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cIndvcmtvcmRlcklkXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwic3RhcnREYXRlVGltZVwiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5zdGFydERhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzdGFydERhdGVUaW1lXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJjYXNlX3R5cGVcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QudHlwZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiY2FzZV90eXBlXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN0YXR1c1wiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5zdGF0dXN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3RhdHVzXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzdGF0dXNcIiA+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0Lk5ickxpbmtzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzdGF0dXNcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4gQWN0aW9uPC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXByb2R1Y3QgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XHJcbiAgICAgICAgPHRyPiAgIFxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnN5c3RlbU5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnN5c3RlbUlkIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5wbUpvYi53b3Jrb3JkZXJOdW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnBtSm9iLnN0YXJ0RGF0ZVRpbWUgfCBkYXRlOiAnZGQgTU1NIHl5eXkgJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57e3Byb2R1Y3QucG1Kb2IuY2FzZVR5cGUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+PHNwYW4gW2NsYXNzXT1cIidwcm9kdWN0LXN0YXR1cyBzdGF0dXMtJyArIHByb2R1Y3Quc3RhdHVzXCIgW3BUb29sdGlwXT1cImdldFN0YXR1c1Rvb2x0aXAocHJvZHVjdC5zdGF0dXMpXCI+e3t0cmFuc2Zvcm1TdGF0dXMocHJvZHVjdC5zdGF0dXMpICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwicHJvZHVjdC5wbUpvYi5ncm91cExpc3QubGVuZ3RoPjAgXCIgKGNsaWNrKT1cInNob3dMaW5rcyhwcm9kdWN0KVwiPiA8c3BhbiBjbGFzcz1cImNpcmNsZVwiPnt7cHJvZHVjdC5wbUpvYi5ncm91cExpc3QubGVuZ3RoIH19PC9zcGFuPiA8aSBjbGFzcz1cInBpIHBpLWxpbmtcIiBzdHlsZT1cImZvbnQtc2l6ZTogMXJlbVwiPjwvaT4gPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwicHJvZHVjdC5wbUpvYi5ncm91cExpc3QubGVuZ3RoPT09MCBcIiAoY2xpY2spPVwic2hvd0xpbmtzKHByb2R1Y3QpXCI+IDxzcGFuIGNsYXNzPVwiY2lyY2xlbGlua2VkXCI+e3twcm9kdWN0LnBtSm9iLmdyb3VwTGlzdC5sZW5ndGggfX08L3NwYW4+IDxpIGNsYXNzPVwicGkgcGktbGlua1wiIHN0eWxlPVwiZm9udC1zaXplOiAxcmVtXCI+PC9pPiA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgbGFiZWw9XCJcIiBpY29uPVwicGkgcGktY2FsZW5kYXJcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWRcIiAjYWN0dWFsVGFyZ2V0IChjbGljayk9XCJzZWxlY3RFbGVtZW50KHByb2R1Y3QpXCIgKGNsaWNrKT1cIm9wLnRvZ2dsZSgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cIigocHJvZHVjdC5zdGF0dXMgPT09J2xhdGUnICB8fCBwcm9kdWN0LnN0YXR1cyA9PT0nYWNjZXB0ZWQnKSAmJiAhaXNBbHJlYWR5U2NoZWR1bGVkKSB8fCBwcm9kdWN0LnN0YXR1cyA9PT0nd2FpdGluZydcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJzdW1tYXJ5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtZC1mbGV4IHAtYWktY2VudGVyIHAtamMtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICB7e2dsb2JhbHRyYW5zbGF0ZS5jb3VudH19IHt7bWFpbnRlbmFuY2VMaXN0ID8gbWFpbnRlbmFuY2VMaXN0Lmxlbmd0aCA6IDAgfX0ge3tnbG9iYWx0cmFuc2xhdGUuZWxlbWVudHN9fS5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvcC10YWJsZT5cclxuXHJcbjxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiPjwvcC10b2FzdD5cclxuPHAtb3ZlcmxheVBhbmVsICNvcCBbZGlzbWlzc2FibGVdPVwidHJ1ZVwiIFtzaG93Q2xvc2VJY29uXT1cImZhbHNlXCIgW3Nob3dUcmFuc2l0aW9uT3B0aW9uc109XCInMG1zJ1wiIFtoaWRlVHJhbnNpdGlvbk9wdGlvbnNdPVwiJzBtcydcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiAqbmdJZj1cIiFpc0FscmVhZHlTY2hlZHVsZWRcIiBpY29uPVwicGkgcGktdGh1bWJzLXVwXCIgKGNsaWNrKT1cImNvbmZpcm1EaWFsb2coKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LmNvbmZpcm1EYXRlXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGhyICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZFwiPlxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiAqbmdJZj1cIiFpc0FscmVhZHlTY2hlZHVsZWQgJiYgKGFsdGVybmF0aXZlRGF0ZXNMaXN0Lmxlbmd0aD4wKSBcIiBpY29uPVwicGkgcGktY2FsZW5kYXItcGx1c1wiIChjbGljayk9XCJwcm9wb3NlQW5vdGhlckRhdGUoKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LmNob29zZUFub3RoZXJEYXRlXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XHJcbiAgICAgICAgPGhyICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZCAmJiAoYWx0ZXJuYXRpdmVEYXRlc0xpc3QubGVuZ3RoPjApIFwiPlxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBpY29uPVwicGkgcGktcGhvbmVcIiAoY2xpY2spPVwiY29udGFjdFN1cHBvcnQoZmFsc2UpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY29udGFjdFN1cHBvclwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxociAqbmdJZj1cIiBpc0xpbmtzXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIGljb249XCJwaSBwaS1saW5rXCIgKm5nSWY9XCIgaXNMaW5rc1wiIChjbGljayk9XCJzaG93TGlua3MoKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnNob3dMaW5rc1wiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxociAqbmdJZj1cImlzQWxyZWFkeVNjaGVkdWxlZCAmJiBwbVNlbGVjdGVkU3RhdHVzID09PSd2YWxpZGF0ZWQnXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiICpuZ0lmPVwiaXNBbHJlYWR5U2NoZWR1bGVkICYmIHBtU2VsZWN0ZWRTdGF0dXMgPT09J3ZhbGlkYXRlZCdcIiBpY29uPVwicGkgcGktcGVuY2lsXCIgKGNsaWNrKT1cImVkaXRQbSgpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY2FuY2VsXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3Atb3ZlcmxheVBhbmVsPlxyXG5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXljb250YWN0U3VwcG9ydCBcIiA+XHJcbiAgICA8YXBwLWNvbnRhY3Qtc3VwcG9ydCBbcmVhc29uQ29udGFjdF09XCJyZWFzb25Db250YWN0XCIgKHNlbmRDb250YWN0TWVFbWFpbCk9XCJzZW5kQ29udGFjdE1lRW1haWxNZXRob2RlKCRldmVudClcIiBbZGV0YWlsZWRQbUpvYl0gPVwibWFpbnRlbmFuY2VTZWxlY3RlZFwiIFtnbG9iYWx0cmFuc2xhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlXCIgIFtyZWFzb25zXT1cInJlYXNvbnNcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jb250YWN0U3VwcG9ydFwiIFtkaXNwbGF5Y29udGFjdFN1cHBvcnRdPVwiZGlzcGxheWNvbnRhY3RTdXBwb3J0XCIgW3Nob3dEYXRlXT1cInNob3dEYXRlXCIgKGNsb3NlQ29udGFjdFN1cHBvcnRQb3B1cCk9XCJjbG9zZUNvbnRhY3RTdXBwb3J0KClcIj48L2FwcC1jb250YWN0LXN1cHBvcnQ+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheUNvbmZpcm1EaWFsb2dcIj5cclxuICAgIDxhcHAtY29uZmlybS1kaWFsb2cgW2RldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XT1cImRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XCIgICBbaXNQcm9wb3NlZERhdGVdPVwiaXNQcm9wb3NlZERhdGVcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNvbmZpcm1EaWFsb2dcIlxyXG4gICAgICAgIFtzdGFydERhdGVUaW1lXT1cInN0YXJ0RGF0ZVRpbWVcIiBbZW5kRGF0ZVRpbWVdPVwiZW5kRGF0ZVRpbWVcIiBbZGlzcGxheUNvbmZpcm1EaWFsb2ddPVwiZGlzcGxheUNvbmZpcm1EaWFsb2dcIiAoY2xvc2VDb25maXJtRGlhbG9nKT1cImNsb3NlQ29uZmlybURpYWxvZygkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1jb25maXJtLWRpYWxvZz5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Q29uZmlybVZhbGlkYXRlZFRvV2FpdGluZ1wiPlxyXG4gICAgPGFwcC1jb25maXJtLWRpYWxvZy12YWxpZGF0ZWQtdG8td2FpdGluZyBbZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RdPVwiZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RcIiAgIFthbHJlYWR5U2NoZWR1bGVkTXNnXT1cImFscmVhZHlTY2hlZHVsZWRNc2dcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNvbmZpcm1WYWxpZGF0ZWRUb1dhaXRpbmdEaWFsb2dcIlxyXG4gICAgICAgIFtzdGFydERhdGVUaW1lXT1cInN0YXJ0RGF0ZVRpbWVcIiBbZW5kRGF0ZVRpbWVdPVwiZW5kRGF0ZVRpbWVcIiBbZGlzcGxheUNvbmZpcm1WYWxpZGF0ZWRUb1dhaXRpbmddPVwiZGlzcGxheUNvbmZpcm1WYWxpZGF0ZWRUb1dhaXRpbmdcIiAoY2xvc2VDb25maXJtRGlhbG9nVmFsaWRhdGVkVG9XYWl0aW5nKT1cImNsb3NlQ29uZmlybURpYWxvZ1ZhbGlkYXRlZFRvV2FpdGluZygkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1jb25maXJtLWRpYWxvZy12YWxpZGF0ZWQtdG8td2FpdGluZz5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm9cIj5cclxuICAgIDxhcHAtY29uZmlybWVkLWRhdGUtaW5mb3JtYXRpb24gW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jb25maXJtRGF0ZUluZm9ybWF0aW9uXCIgW3N0YXJ0RGF0ZVRpbWVdPVwic3RhcnREYXRlVGltZVwiIFtlbmREYXRlVGltZV09XCJlbmREYXRlVGltZVwiIFtkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm9dPVwiZGlzcGxheUNvbmZpcm1lZERhdGVJbmZvXCIgKGNsb3NlQ29uZmlybWVkRGF0ZUluZm8pPVwiY2xvc2VDb25maXJtZWREYXRlSW5mbygpXCI+PC9hcHAtY29uZmlybWVkLWRhdGUtaW5mb3JtYXRpb24+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheUFub3RoZXJEYXRlICYmIGFsdGVybmF0aXZlRGF0ZXNMaXN0XCI+XHJcbiAgICA8YXBwLWNob29zZS1hbm90aGVyLWRhdGUgW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jaG9vc2VBbm90aGVyRGF0ZVwiIFthbHRlcm5hdGl2ZURhdGVzTGlzdF09XCJhbHRlcm5hdGl2ZURhdGVzTGlzdFwiIFtkaXNwbGF5QW5vdGhlckRhdGVdPVwiZGlzcGxheUFub3RoZXJEYXRlXCIgKGNsb3NlQW5vdGhlckRhdGUpPVwiY2xvc2VBbm90aGVyRGF0ZSgkZXZlbnQpXCIgKGFjY2VwdERhdGUpPVwiYWNjZXB0RGF0ZSgkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1jaG9vc2UtYW5vdGhlci1kYXRlPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXlTaG93TGlua3MgJiYgc2VsZWN0ZWRXb3Jrb3JkZXJJZFwiPlxyXG4gICAgPGFwcC1zaG93LWxpbmtzIFtzdGF0dXNdPVwic3RhdHVzXCIgW3NlbGVjdGVkV29ya29yZGVySWRdPVwic2VsZWN0ZWRXb3Jrb3JkZXJJZFwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlXCIgW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbZGlzcGxheVNob3dMaW5rc109XCJkaXNwbGF5U2hvd0xpbmtzXCIgKGNsb3NlU2hvd0xpbmtzKT1cImNsb3NlU2hvd0xpbmtzKClcIiBbZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RdPVwiZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RcIj48L2FwcC1zaG93LWxpbmtzPlxyXG48L2Rpdj5cclxuXHJcblxyXG4iXX0=