buildingproduct-library 0.3.2 → 0.3.3

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.
Files changed (77) hide show
  1. package/{buildingproduct-library-0.3.2.tgz → buildingproduct-library-0.3.3.tgz} +0 -0
  2. package/bundles/buildingproduct-library.umd.js +120 -92
  3. package/bundles/buildingproduct-library.umd.js.map +1 -1
  4. package/esm2015/lib/account-dropdown/account-dropdown.component.js +1 -1
  5. package/esm2015/lib/checkout/add-new-address/add-new-address.component.js +1 -1
  6. package/esm2015/lib/checkout/checkout.module.js +5 -2
  7. package/esm2015/lib/checkout/custom-checkout/custom-checkout.component.js +9 -8
  8. package/esm2015/lib/checkout/order-confirmation/order-confirmation.component.js +5 -4
  9. package/esm2015/lib/checkout/order-review/delivery-information/delivery-information.component.js +1 -1
  10. package/esm2015/lib/checkout/order-review/order-review-grid/order-review-grid.component.js +1 -1
  11. package/esm2015/lib/checkout/order-review/order-review-list/order-review-list.component.js +1 -1
  12. package/esm2015/lib/checkout/order-review/order-review.component.js +7 -6
  13. package/esm2015/lib/contact-us/contact-us.component.js +1 -1
  14. package/esm2015/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.js +5 -4
  15. package/esm2015/lib/custom-cart/custom-cart.component.js +1 -1
  16. package/esm2015/lib/custom-cart/custom-cart.module.js +6 -2
  17. package/esm2015/lib/custom-mini-cart/custom-mini-cart.component.js +2 -2
  18. package/esm2015/lib/custom-mini-cart/custom-mini-cart.module.js +5 -2
  19. package/esm2015/lib/custom-navigation/custom-navigation.component.js +1 -1
  20. package/esm2015/lib/custom-order-details/custom-order-details.component.js +1 -1
  21. package/esm2015/lib/custom-order-details/download-popup/download-popup.component.js +1 -1
  22. package/esm2015/lib/custom-order-details/order-detail-grid/order-detail-grid.component.js +1 -1
  23. package/esm2015/lib/custom-order-details/order-detail-list/order-detail-list.component.js +1 -1
  24. package/esm2015/lib/custom-order-history/custom-order-history.component.js +12 -11
  25. package/esm2015/lib/custom-order-history/custom-order-history.module.js +6 -2
  26. package/esm2015/lib/custom-order-history/slider-progress/slider-progress.component.js +1 -1
  27. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.js +1 -1
  28. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.js +1 -1
  29. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.js +1 -1
  30. package/esm2015/lib/custom-saved-cart/custom-saved-cart.component.js +6 -5
  31. package/esm2015/lib/custom-saved-cart/custom-saved-cart.module.js +5 -1
  32. package/esm2015/lib/custom-search/custom-search.component.js +1 -1
  33. package/esm2015/lib/custom-user-account/custom-user-account.component.js +1 -1
  34. package/esm2015/lib/delivery-details/delivery-details-grid/delivery-details-grid.component.js +1 -1
  35. package/esm2015/lib/delivery-details/delivery-details-list/delivery-details-list.component.js +1 -1
  36. package/esm2015/lib/delivery-details/delivery-details.component.js +8 -8
  37. package/esm2015/lib/delivery-details/delivery-details.module.js +6 -3
  38. package/esm2015/lib/find-store/find-store.component.js +1 -1
  39. package/esm2015/lib/help-support/help-support.component.js +1 -1
  40. package/esm2015/lib/my-account/account-dashboard/account-dashboard.component.js +4 -3
  41. package/esm2015/lib/my-account/account-statements/account-statements.component.js +4 -3
  42. package/esm2015/lib/my-account/invoice-credit/invoice-credit.component.js +7 -6
  43. package/esm2015/lib/my-account/my-account.component.js +7 -6
  44. package/esm2015/lib/my-account/my-account.module.js +5 -1
  45. package/esm2015/lib/my-deliveries/delivery-grid/delivery-grid.component.js +1 -1
  46. package/esm2015/lib/my-deliveries/delivery-list/delivery-list.component.js +1 -1
  47. package/esm2015/lib/my-deliveries/my-deliveries.component.js +7 -6
  48. package/esm2015/lib/my-deliveries/my-deliveries.module.js +6 -2
  49. package/esm2015/lib/my-reports/my-reports.component.js +1 -1
  50. package/esm2015/lib/my-team/my-team.component.js +8 -7
  51. package/esm2015/lib/my-team/my-team.module.js +5 -1
  52. package/esm2015/lib/shared/active-saved-cart/active-saved-cart.component.js +1 -1
  53. package/esm2015/lib/shared/custom-breadcrum/custom-breadcrum.component.js +1 -1
  54. package/esm2015/lib/shared/custom-cart-detail/bundlepopup/bundlepopup.component.js +1 -1
  55. package/esm2015/lib/shared/custom-cart-detail/custom-cart-detail.component.js +1 -1
  56. package/esm2015/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.js +2 -2
  57. package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js +2 -2
  58. package/esm2015/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.js +1 -1
  59. package/esm2015/lib/shared/custom-flashing-image-details/custom-flashing-image-details.component.js +1 -1
  60. package/esm2015/lib/shared/date-range-picker/date-range-picker.component.js +1 -1
  61. package/esm2015/lib/shared/pod-download-popup/pod-download-popup.component.js +1 -1
  62. package/esm2015/lib/shared/saved-cart-popup/saved-cart-popup.component.js +1 -1
  63. package/esm2015/lib/shared/shared-components.module.js +5 -2
  64. package/esm2015/lib/shared/shared-download-order/shared-download-order.component.js +1 -1
  65. package/fesm2015/buildingproduct-library.js +91 -63
  66. package/fesm2015/buildingproduct-library.js.map +1 -1
  67. package/lib/checkout/checkout.module.d.ts +5 -5
  68. package/lib/custom-cart/custom-cart.module.d.ts +5 -4
  69. package/lib/custom-mini-cart/custom-mini-cart.module.d.ts +1 -1
  70. package/lib/custom-order-history/custom-order-history.module.d.ts +8 -7
  71. package/lib/custom-saved-cart/custom-saved-cart.module.d.ts +6 -5
  72. package/lib/delivery-details/delivery-details.module.d.ts +1 -1
  73. package/lib/my-account/my-account.module.d.ts +7 -6
  74. package/lib/my-deliveries/my-deliveries.module.d.ts +5 -4
  75. package/lib/my-team/my-team.module.d.ts +8 -7
  76. package/lib/shared/shared-components.module.d.ts +1 -1
  77. package/package.json +1 -1
@@ -5,12 +5,13 @@ import * as i1 from "../../services/checkout.service";
5
5
  import * as i2 from "@spartacus/core";
6
6
  import * as i3 from "@ng-bootstrap/ng-bootstrap";
7
7
  import * as i4 from "../../shared/custom-breadcrum/custom-breadcrum.component";
8
- import * as i5 from "@angular/material/card";
9
- import * as i6 from "@syncfusion/ej2-angular-calendars";
10
- import * as i7 from "@angular/material/radio";
11
- import * as i8 from "../add-new-address/add-new-address.component";
12
- import * as i9 from "@angular/common";
13
- import * as i10 from "@angular/forms";
8
+ import * as i5 from "@spartacus/storefront";
9
+ import * as i6 from "@angular/material/card";
10
+ import * as i7 from "@syncfusion/ej2-angular-calendars";
11
+ import * as i8 from "@angular/material/radio";
12
+ import * as i9 from "../add-new-address/add-new-address.component";
13
+ import * as i10 from "@angular/common";
14
+ import * as i11 from "@angular/forms";
14
15
  export class CustomCheckoutComponent {
15
16
  constructor(checkoutService, cmsService, cd, calendar, activeCartService) {
16
17
  this.checkoutService = checkoutService;
@@ -331,7 +332,7 @@ export class CustomCheckoutComponent {
331
332
  }
332
333
  }
333
334
  CustomCheckoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomCheckoutComponent, deps: [{ token: i1.CustomCheckoutService }, { token: i2.CmsService }, { token: i0.ChangeDetectorRef }, { token: i3.NgbCalendar }, { token: i2.ActiveCartService }], target: i0.ɵɵFactoryTarget.Component });
334
- CustomCheckoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CustomCheckoutComponent, selector: "app-custom-checkout", viewQueries: [{ propertyName: "checkoutForm", first: true, predicate: ["checkoutForm"], descendants: true }, { propertyName: "checkoutToTime", first: true, predicate: ["checkoutToTime"], descendants: true }, { propertyName: "collectTimeObj", first: true, predicate: ["collectTimeObj"], descendants: true }, { propertyName: "mapViewEl", first: true, predicate: ["mapViewNode"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"loading\" *ngIf=\"showWaitCursor | async \">Loading&#8230;</div>\r\n<app-custom-breadcrum [customCrumbData]=\"breadcrumbData\" class=\"products-breadcums\"></app-custom-breadcrum>\r\n<div class=\"container mb-120\">\r\n <div class=\"top-checkout col-sm-9\">\r\n <h1 class=\"pageTitle\">{{pageTitle}}</h1>\r\n <p class=\"checkout-header-paragraph\">{{checkoutHeaderContent}}</p>\r\n </div>\r\n <div class=\"row content-row\">\r\n <div class=\"col-sm-12 col-lg-7 offset-lg-3\">\r\n <form #checkoutForm=\"ngForm\">\r\n <mat-card-header class=\"line-step-navigation first-step\">\r\n <div class=\"card-title cus-title-margin-card\">\r\n <mat-card-title class=\"font-bold\"> <span class=\"card-number\"> 1 </span> Choose Your Delivery Method</mat-card-title>\r\n </div>\r\n </mat-card-header>\r\n <mat-card class=\"custom-mat-card line-step-navigation\">\r\n <mat-card-content>\r\n <div class=\"card-container d-sm-inline-flex d-md-flex align-content-center justify-content-between \">\r\n <mat-card class=\"matlft\">\r\n <mat-card-content class=\"box-container\">\r\n <div (click)=\"isDeliveryBox = true;\" class=\"delivery-box d-sm-inline-flex align-items-sm-center justify-content-sm-around\" [ngClass]=\"isDeliveryBox ? ACTIVE_ITEM : ''\">\r\n <img class=\"delivery-img\" src=\"../../../../assets/images/delivery.svg\" />\r\n <ng-template [ngIf]=\"isDeliveryBox\">\r\n <img class=\"check-square-del\" src=\"../../../../assets/images/check-square.svg\" />\r\n </ng-template>\r\n </div>\r\n <div class=\"delivery-heading-text\">\r\n <mat-card-title>{{deliveryModes[0]?.name || 'Delivery'}} </mat-card-title>\r\n <mat-card-subtitle> {{deliveryModes[0]?.description || 'We deliver right to your door.'}} </mat-card-subtitle>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <mat-card class=\"matright\">\r\n <mat-card-content class=\"box-container\">\r\n <div (click)=\"isDeliveryBox = false;\" class=\"collect-box d-sm-inline-flex align-items-sm-center justify-content-sm-around\" [ngClass]=\"isDeliveryBox ? '' : ACTIVE_ITEM\">\r\n <img class=\"pickup-img\" src=\"../../../../assets/images/pickup.svg\" />\r\n <ng-template [ngIf]=\"!isDeliveryBox\">\r\n <img class=\"check-square-cc\" src=\"../../../../assets/images/check-square.svg\" />\r\n </ng-template>\r\n </div>\r\n <div class=\"delivery-heading-text\">\r\n <mat-card-title> {{deliveryModes[1]?.name || 'Click & Collect'}}</mat-card-title>\r\n <mat-card-subtitle> {{deliveryModes[1]?.description || 'Collect from your nearest branch.' }}</mat-card-subtitle>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n <mat-card-header class=\"line-step-navigation\">\r\n <div class=\"card-title cus-title-margin-card\">\r\n <mat-card-title class=\"font-bold\"> <span class=\"card-number\"> 2 </span> Purchase Order Number</mat-card-title>\r\n </div>\r\n </mat-card-header>\r\n <mat-card class=\"custom-mat-card line-step-navigation\">\r\n <mat-card-content>\r\n <div class=\"form-container for-mob col-sm-6 pl-0\">\r\n <label class=\"form-label\">Purchase Order Number <span class=\"marker\">*</span></label>\r\n <input #poNumber=\"ngModel\" name=\"poNumber\" id=\"poNumber\" type=\"text\" maxlength=\"15\" [(ngModel)]=\"checkoutFormData.poNumber\" class=\"form-control joborder-input\" required>\r\n </div>\r\n <p *ngIf=\"isSubmitted\" [hidden]=\"poNumber.valid\" class=\"error-message\">\r\n Purchase Order Number is required\r\n </p>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <mat-card-header class=\"line-step-navigation\">\r\n <div class=\"card-title cus-title-margin-card\">\r\n\r\n <mat-card-title class=\"font-bold\"> <span class=\"card-number\"> 3 </span> {{isDeliveryBox ? 'Delivery': 'Pickup '}} Date and Time</mat-card-title>\r\n </div>\r\n </mat-card-header>\r\n\r\n <mat-card class=\"custom-mat-card line-step-navigation\">\r\n <mat-card-content>\r\n <div class=\"form-container for-mob col-sm-6 pl-0\">\r\n <label for=\"date\" class=\"form-label\">Date <span class=\"marker\">*</span></label>\r\n <form class=\"ngb-date-form\">\r\n <div class=\"form-group\">\r\n <div class=\"input-group\">\r\n <input [firstDayOfWeek]=\"7\" #deliveryPickUpDate=\"ngModel\" class=\"form-control cus-width date-input\" [(ngModel)]=\"checkoutFormData.deliveryPickUpDate\" id=\"date\" name=\"txtDate\" tabindex=\"-1\" onkeydown=\"return false\" placeholder=\"DD-MM-YYYY\" ngbDatepicker #ngDate=\"ngbDatepicker\"\r\n [minDate]=\"ngbMinDate\" (dateSelect)=\"datechange($event)\" container=\"body\" required [markDisabled]=\"isDisabled\" />\r\n <div class=\"input-group-append custom-date-button\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"ngDate.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <p *ngIf=\"isSubmitted && !checkoutFormData.deliveryPickUpDate\" class=\"error-message\">\r\n Date is required\r\n </p>\r\n <div class=\"form-container for-mob col-sm-6 pl-0\">\r\n <label for=\"time\" class=\"form-label pt-4\">Time <span class=\"marker\">*</span></label>\r\n <div class=\"d-flex align-items-center\">\r\n <form class=\"form-job\">\r\n <div class=\"selectdiv\">\r\n <label class=\"jobinput\">\r\n <ejs-timepicker format=\"hh:mm a\" id='timepicker' [showClearButton]=\"false\"\r\n (click)=\"timeClick($event, collectTimeObj)\" #collectTimeObj\r\n [(value)]='checkoutFormData.deliveryPickUpFromTime' [min]=\"minTime\" [allowEdit]=\"false\" [max]=\"fromMaxTime\"\r\n (change)=\"onFromTimeChanged(collectTimeObj)\"\r\n ></ejs-timepicker> \r\n </label>\r\n </div>\r\n </form>\r\n <label for=\"time\" class=\"form-label p-3\">to</label>\r\n\r\n <form class=\"form-job\">\r\n <div class=\"selectdiv\">\r\n <label class=\"jobinput\">\r\n <ejs-timepicker format=\"hh:mm a\" id='totTmepicker' [showClearButton]=\"false\"\r\n (click)=\"timeClick($event, checkoutToTime)\" #checkoutToTime\r\n [(value)]='checkoutFormData.deliveryPickUpToTime' [min]=\"minToTime\" [allowEdit]=\"false\" [max]=\"maxTime\"\r\n ></ejs-timepicker>\r\n \r\n </label>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <!-- <p *ngIf=\"isSubmitted\" [hidden]=\"checkoutFormData.deliveryPickUpFromTime != undefined\" class=\"error-message\">\r\n From time is required\r\n </p>\r\n <p *ngIf=\"isSubmitted\" [hidden]=\"checkoutFormData.deliveryPickUpToTime != undefined\" class=\"error-message\">\r\n To time is required\r\n </p> -->\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <mat-card-header class=\"line-step-navigation\" *ngIf=\"!isDeliveryBox\">\r\n <div class=\"card-title cus-title-margin-card\">\r\n <mat-card-title class=\"font-bold\"> <span class=\"card-number\"> 4 </span> Pickup Location</mat-card-title>\r\n </div>\r\n </mat-card-header>\r\n <mat-card *ngIf=\"!isDeliveryBox\" class=\"custom-mat-card line-step-navigation\">\r\n <mat-card-content>\r\n <div class=\"branch-container\">\r\n <mat-card-title class='address-title'>\r\n {{branchAddress?.town}}</mat-card-title>\r\n <mat-card-subtitle> {{branchAddress?.formattedAddress}}</mat-card-subtitle>\r\n <mat-card-subtitle> <span class=\"form-label\">Phone: </span> {{branchAddress?.phone}}</mat-card-subtitle>\r\n <div class=\"branch-hour-container\">\r\n <mat-card-title class='address-title'>Opening Hours</mat-card-title>\r\n <mat-card-subtitle *ngFor=\"let data of tempBranchListData\">\r\n <span class=\"hour-label-left\">{{ data?.weekDay }}</span>\r\n <span *ngIf=\"data?.openingTime?.formattedHour || data?.closingTime?.formattedHour\">{{data?.openingTime?.formattedHour}}\r\n - {{data?.closingTime?.formattedHour}}</span>\r\n <span class=\"error-message\" *ngIf=\"!data?.openingTime?.formattedHour && !data?.closingTime?.formattedHour\">Closed</span>\r\n </mat-card-subtitle>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n <mat-card-header class=\"line-step-navigation\" *ngIf=\"isDeliveryBox\">\r\n <div class=\"card-title cus-title-margin-card\">\r\n <mat-card-title class=\"font-bold\"> <span class=\"card-number\"> 4 </span> {{isDeliveryBox ? 'Select your Delivery Address Preference': 'Pickup Location '}}\r\n\r\n </mat-card-title>\r\n </div>\r\n </mat-card-header>\r\n <mat-card [hidden]=\"!isDeliveryBox\" class=\"custom-mat-card line-step-navigation\">\r\n <mat-card-content>\r\n <div class=\"d-flex mat-inner-container radio-btn-container\">\r\n <mat-radio-group aria-label=\"Select an option\">\r\n <mat-radio-button *ngIf=\"defaultAccountAddress?.formattedAddress || (deliveryAddresses && deliveryAddresses.length > 0)\" [checked]=\"selectedAddress == 'accountAddress'\" (change)=\"selectedAddress = 'accountAddress';selectedRecentAddress= deliveryAddresses[0]\"\r\n [value]=\"'accountAddress'\" class=\"pl-0 pr-md-4\">Account Address</mat-radio-button>\r\n <mat-radio-button *ngIf=\"deliveryAddresses && recentAddress.length> 0\" [checked]=\"selectedAddress == 'recentAddress'\" (change)=\"selectedAddress = 'recentAddress'; selectedRecentAddress= recentAddress[0]\" [value]=\"'recentAddress'\" class=\"pl-0 pr-md-4\">Recent Address</mat-radio-button>\r\n <mat-radio-button [checked]=\"selectedAddress == 'addNewAddress'\" (change)=\"addNewAddress()\" [value]=\"'addNewAddress'\">Add New Address</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n <div class=\"py-2 address-inner-container\" *ngIf=\"selectedAddress == 'accountAddress' && deliveryAddresses.length > 0 \">\r\n <label *ngIf=\"!showMoreAddresses\" class=\"form-label\">Confirmed Delivery Address </label>\r\n\r\n <div *ngIf=\"!showMoreAddresses\" class=\"form-container\">\r\n <div class=\"map-selected-address\" id=\"address\" required #isAddrSelectedOrNot>\r\n {{defaultAccountAddress?.formattedAddress}}</div>\r\n </div>\r\n <div *ngIf=\"showMoreAddresses\">\r\n <mat-radio-group aria-labelledby=\"example-radio-group-label\" class=\"example-radio-group radio-btn-size\">\r\n <mat-radio-button class=\"py-1\" [checked]=\"selectedRecentAddress?.id == address.id\" *ngFor=\"let address of deliveryAddresses\" [value]=\"address.id\" (change)=\"selectedRecentAddress=address\">\r\n {{address.formattedAddress}}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n </div>\r\n <div class=\"py-2 address-inner-container\" *ngIf=\"selectedAddress == 'recentAddress' && recentAddress.length > 0\">\r\n <mat-radio-group aria-labelledby=\"example-radio-group-label\" class=\"example-radio-group radio-btn-size\">\r\n <mat-radio-button class=\"py-1\" [checked]=\"selectedRecentAddress?.id == address.id\" *ngFor=\"let address of recentAddress \" [value]=\"address.id\" (change)=\"selectedRecentAddress=address\">\r\n {{address.formattedAddress}}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n <div *ngIf=\"selectedAddress == 'addNewAddress'\">\r\n <!-- Map Div -->\r\n <app-add-new-address [confirmedAddress]=\"confirmedNewAddress\" (updateNewAddress)=\"getNewAddress($event)\"></app-add-new-address>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n <mat-card-header class=\"line-step-navigation last-step\">\r\n <div class=\"card-title cus-title-margin-card\">\r\n <mat-card-title>\r\n <span class=\"card-number\"> 5 </span> {{isDeliveryBox ? 'Site Delivery Requirements': 'Comments '}}\r\n <span class=\"info-icon pl-2\" [ngbTooltip]=\"isDeliveryBox ? siteDeliveryRequirements : clickandCollectComments\" placement=\"bottom\"></span>\r\n </mat-card-title>\r\n </div>\r\n </mat-card-header>\r\n <mat-card class=\"custom-mat-card line-step-navigation\">\r\n <mat-card-content>\r\n <textarea class=\"form-control\" [(ngModel)]=\"checkoutFormData.deliveryPickUpNotes\" rows=\"3\" name=\"Instructions\" id=\"Instructions\" [placeholder]=\"isDeliveryBox ? 'Provide any specific delivery instructions':'Provide any specific pickup instructions'\" maxlength=\"250\"></textarea>\r\n </mat-card-content>\r\n </mat-card>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"cart-page-footer\">\r\n <div class=\"container\">\r\n <div class=\"sticky-footer row\">\r\n <div class=\"col-sm-12\">\r\n <p class=\" float-md-right m-0 checkout-footer-btns\">\r\n <a title=\"Back to Cart\" href=\"/cart\" class=\"mr-3 font-weight-bold\">\r\n <img src=\"../../../../assets/images/ionic-arrow-back.svg\" alt=\"back-arrow\" class=\"mr-2\" /> BACK\r\n </a>\r\n <button type=\"button\" (click)=\"reviewOrder()\" class=\"btn primary-button\">Review And Order</button>\r\n </p>\r\n </div>\r\n <div class=\" col-sm-12 alert alert-danger justify-content-start mt-3\" role=\"alert\" *ngIf=\"errorInd$ | async\">\r\n <img class=\"mr-3\" src=\"../../../../assets/images/erroricon.svg\" alt=\"alert\"> {{infoMessage}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0;position:relative}cx-storefront header.is-expanded .PreHeader{position:absolute;right:-5px;top:5px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;bottom:110px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{bottom:160px;max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}.mb-120{margin-bottom:120px}::ng-deep .OrderCheckoutTemplate header{display:none!important}::ng-deep cx-storefront.stop-navigating:before,::ng-deep cx-storefront.stop-navigating:after{height:0}.custom-arrow{position:absolute;right:15px;top:18px;z-index:1}.esri-view{padding:0;margin:0;height:100%;width:100%}#mapViewNode{padding:0;margin:0;height:100%;width:100%}::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle{border-color:#b61828!important}::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-inner-circle{background:#B61828!important}::ng-deep ejs-timepicker .e-input-group{padding:8px}.e-input-group.e-control-wrapper.e-time-wrapper.e-lib.e-keyboard.e-valid-input.e-non-edit{font-size:var(--fontsize16);margin-right:1rem}button.calendar,button.calendar:active{opacity:1;display:block;background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 width%3D%2219.785%22 height%3D%2222%22 viewBox%3D%220 0 19.785 22%22%3E%0D %3Cdefs%3E%0D %3CclipPath id%3D%22clip-path%22%3E%0D %3Cpath id%3D%22Mask%22 d%3D%22M17.569%2C22H2.215a2.143%2C2.143%2C0%2C0%2C1-1.571-.644A2.147%2C2.147%2C0%2C0%2C1%2C0%2C19.785V4.431A2.147%2C2.147%2C0%2C0%2C1%2C.644%2C2.859a2.147%2C2.147%2C0%2C0%2C1%2C1.571-.644H3.3V0H5.513V2.215h8.759V0h2.215V2.215h1.082a2.2%2C2.2%2C0%2C0%2C1%2C2.215%2C2.215V19.785A2.2%2C2.2%2C0%2C0%2C1%2C17.569%2C22ZM2.215%2C7.728V19.785H17.569V7.728Zm13.19%2C9.893H9.893V12.108h5.513v5.513Z%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3C%2FclipPath%3E%0D %3C%2Fdefs%3E%0D %3Cg id%3D%22Group%22 transform%3D%22translate(0)%22%3E%0D %3Cpath id%3D%22Mask-2%22 data-name%3D%22Mask%22 d%3D%22M17.569%2C22H2.215a2.143%2C2.143%2C0%2C0%2C1-1.571-.644A2.147%2C2.147%2C0%2C0%2C1%2C0%2C19.785V4.431A2.147%2C2.147%2C0%2C0%2C1%2C.644%2C2.859a2.147%2C2.147%2C0%2C0%2C1%2C1.571-.644H3.3V0H5.513V2.215h8.759V0h2.215V2.215h1.082a2.2%2C2.2%2C0%2C0%2C1%2C2.215%2C2.215V19.785A2.2%2C2.2%2C0%2C0%2C1%2C17.569%2C22ZM2.215%2C7.728V19.785H17.569V7.728Zm13.19%2C9.893H9.893V12.108h5.513v5.513Z%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cg id%3D%22Group-2%22 data-name%3D%22Group%22 clip-path%3D%22url(%23clip-path)%22%3E%0D %3Cg id%3D%22_icon-color%22 data-name%3D%22%E2%86%B3%F0%9F%8E%A8icon-color%22 transform%3D%22translate(-49.463 -47.247)%22%3E%0D %3Crect id%3D%22Icon-Shade%22 width%3D%22118.71%22 height%3D%22118.71%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3C%2Fg%3E%0D %3C%2Fg%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat;background-size:20px 20px;background-position:center;border-width:thin;align-items:center;position:relative;text-align:center;justify-content:center;padding:0;border-radius:0;border:1px solid #d3d6db;border-left-width:0px}.form-label{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}.mat-card:not([class*=mat-elevation-z]){padding:1.5rem}.delivery-box,.collect-box{border:1px solid #A6A6A5;border-radius:10px;opacity:1;align-items:center;justify-content:center;background-color:#eee3;display:inline-flex;padding:36px;height:160px;width:219px;cursor:pointer;position:relative}.delivery-box .delivery-img,.collect-box .delivery-img{width:6.25em;height:3.688em}.delivery-box .pickup-img,.collect-box .pickup-img{width:5em;height:5em}.delivery-box.active-box,.collect-box.active-box{background-color:#eee3;border:2px solid #B61828;opacity:1}.delivery-box .mat-checkbox.active-checkbox,.collect-box .mat-checkbox.active-checkbox{right:25px;position:absolute;top:10%}.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background,.mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#b61828}.box-container .mat-card-title{text-align:center;font-family:\"Arial Bold\",sans-serif;opacity:1;margin:0;font-size:var(--fontsize16)}.box-container .mat-card-title{margin:5px!important}.box-container .mat-card-subtitle{opacity:1;font-size:var(--fontsize16);margin-bottom:0;color:#1d1d1b}.marker{color:#973937;font-family:\"Arial Bold\",sans-serif}.branch-container .mat-card-subtitle{margin-bottom:6px;font-size:var(--fontsize16);color:#1d1d1b}.branch-container .mat-card-subtitle .branch-hour-container span:not(.error-message):last-child{text-transform:uppercase}.branch-container .mat-card-title{font-family:\"Arial Bold\",sans-serif;margin-bottom:4px;font-size:var(--fontsize16)}.branch-container .branch-link{font-size:var(--fontsize18)}.branch-container .hour-label-left{width:15%;position:relative;display:inline-block}input[type=time]::-webkit-calendar-picker-indicator{background:none}.check-square-del,.check-square-cc{position:absolute;top:-1px;right:0}.selectdiv{position:relative}.selectdiv select{height:50px;width:100%;line-height:35px;border:1px solid #d3d6db;font-size:var(--fontsize16);color:#1d1d1b;padding-left:13px;-webkit-appearance:none;appearance:none;position:relative;z-index:1}::ng-deep .OrderCheckoutTemplate .mat-card-header-text{margin:0!important}::ng-deep .OrderCheckoutTemplate mat-radio-button{padding-left:10px}::ng-deep .OrderCheckoutTemplate mat-radio-button .mat-radio-label{white-space:pre-line}::ng-deep .OrderCheckoutTemplate .card-number{background-color:#1d1d1b;border-radius:50%;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-family:\"Arial Bold\",sans-serif;margin-right:1rem}::ng-deep .OrderCheckoutTemplate .mat-card-content .mat-inner-container .mat-radio-label-content{font-family:\"Arial Bold\",sans-serif;font-size:var(--fontsize16)}::ng-deep .OrderCheckoutTemplate .mat-card-content .mat-radio-label-content{font-family:\"Arial Regular\",sans-serif;font-size:var(--fontsize16)}::ng-deep .OrderCheckoutTemplate .form-control{color:#1d1d1b;font-family:\"Arial Regular\",sans-serif}::ng-deep .OrderCheckoutTemplate #Instructions{resize:none}::ng-deep .OrderCheckoutTemplate #Instructions::placeholder{font-family:\"Arial Regular\",sans-serif;font-size:var(--fontsize16);color:#c6c6c6}::ng-deep .OrderCheckoutTemplate .info-icon{position:relative;background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22%3E%0D %3Cpath id%3D%22Icon_metro-info%22 data-name%3D%22Icon metro-info%22 d%3D%22M9.571%2C6.678a.752.752%2C0%2C0%2C1%2C.75-.75h.5a.752.752%2C0%2C0%2C1%2C.75.75v.5a.752.752%2C0%2C0%2C1-.75.75h-.5a.752.752%2C0%2C0%2C1-.75-.75Zm3%2C7.25h-4v-1h1v-3h-1v-1h3v4h1Zm-2-12a8%2C8%2C0%2C1%2C0%2C8%2C8%2C8%2C8%2C0%2C0%2C0-8-8Zm0%2C14.5a6.5%2C6.5%2C0%2C1%2C1%2C6.5-6.5A6.5%2C6.5%2C0%2C0%2C1%2C10.571%2C16.428Z%22 transform%3D%22translate(-2.571 -1.928)%22 fill%3D%22%23c6c6c6%22%2F%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center;width:16px;height:16px;display:inline-block;top:1px;left:15px}::ng-deep .OrderCheckoutTemplate .cart-page-footer{background-color:#fff;border-top:1px solid #E0E0E0;padding:24px 0;position:fixed;bottom:0;left:0;right:0;width:100%;z-index:9;transition:transform .3s ease-in-out}::ng-deep .OrderCheckoutTemplate .error-message{color:#da1e28}::ng-deep .OrderCheckoutTemplate .example-radio-group .mat-radio-button{display:block}::ng-deep .OrderCheckoutTemplate .content-row{margin-bottom:3rem}::ng-deep .OrderCheckoutTemplate mat-card.line-step-navigation{box-shadow:none;border:1px solid #E0E0E0}::ng-deep .OrderCheckoutTemplate .card-container mat-card{box-shadow:none}::ng-deep .OrderCheckoutTemplate .line-step-navigation{position:relative}::ng-deep .OrderCheckoutTemplate .line-step-navigation:before{display:inline-block;content:\"\";position:absolute;top:0;left:-35px;width:10px;height:100%;border-left:2px dashed #C6C6C6}::ng-deep .OrderCheckoutTemplate .line-step-navigation:last-child:before{border-left:none}::ng-deep .OrderCheckoutTemplate .line-step-navigation .cus-title-margin-card{position:relative;left:-50px;margin-bottom:0}::ng-deep .OrderCheckoutTemplate .line-step-navigation.last-step:before{height:75%}::ng-deep .OrderCheckoutTemplate .line-step-navigation.first-step:before{height:75%;top:15%}::ng-deep .OrderCheckoutTemplate .mat-card-header .card-title .mat-card-title{margin:1rem 0;font-size:1.5rem;display:inline-flex;align-items:center}::ng-deep .OrderCheckoutTemplate .map-selected-address{background-color:#e8e8e8;border:1px solid #d3d6db;padding:.75rem;align-self:flex-start;width:100%;min-height:50px;font-size:var(--fontsize16)}::ng-deep .OrderCheckoutTemplate .box-container{text-align:center}@media (max-width: 992px){::ng-deep .OrderCheckoutTemplate .radio-btn-container .mat-radio-group{display:inline-flex;flex-direction:row;align-items:flex-start}::ng-deep .OrderCheckoutTemplate .radio-btn-container .mat-radio-group .mat-radio-button .mat-radio-label{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}::ng-deep .OrderCheckoutTemplate .radio-btn-container .mat-radio-group .mat-radio-button .mat-radio-label .mat-radio-label-content{margin-top:5px}::ng-deep .OrderCheckoutTemplate .line-step-navigation{background:transparent;box-shadow:none!important;border:none!important}::ng-deep .OrderCheckoutTemplate .line-step-navigation:before{left:15px}::ng-deep .OrderCheckoutTemplate .line-step-navigation .cus-title-margin-card{left:0}::ng-deep .OrderCheckoutTemplate .card-container mat-card{background:transparent;box-shadow:none!important}::ng-deep .OrderCheckoutTemplate .checkout-footer-btns{display:flex;justify-content:space-around;align-items:center}::ng-deep .OrderCheckoutTemplate .mat-card:not([class*=mat-elevation-z]){padding:1rem .25rem 1rem 1.5rem}::ng-deep .OrderCheckoutTemplate .mat-card-header .card-title .mat-card-title{font-size:1.25rem;align-items:center;margin:0}::ng-deep .OrderCheckoutTemplate .mat-card-content.box-container{display:flex}::ng-deep .OrderCheckoutTemplate .mat-card-content mat-card .mat-card{align-items:center;justify-content:center}::ng-deep .OrderCheckoutTemplate .delivery-box,::ng-deep .OrderCheckoutTemplate .collect-box{height:102px;width:140px}::ng-deep .OrderCheckoutTemplate .box-container{text-align:left}::ng-deep .OrderCheckoutTemplate .box-container .delivery-heading-text{padding-left:1rem}::ng-deep .OrderCheckoutTemplate .box-container .delivery-heading-text .mat-card-title{text-align:left;margin-left:0!important}::ng-deep .OrderCheckoutTemplate .address-inner-container{padding-left:15px}}\n"], components: [{ type: i4.CustomBreadcrumComponent, selector: "app-custom-breadcrum", inputs: ["customCrumbData"] }, { type: i5.MatCardHeader, selector: "mat-card-header" }, { type: i5.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i6.TimePickerComponent, selector: "ejs-timepicker", inputs: ["allowEdit", "cssClass", "enableMask", "enablePersistence", "enableRtl", "enabled", "floatLabelType", "format", "htmlAttributes", "keyConfigs", "locale", "maskPlaceholder", "max", "min", "openOnFocus", "placeholder", "readonly", "scrollTo", "showClearButton", "step", "strictMode", "value", "width", "zIndex"], outputs: ["blur", "change", "cleared", "close", "created", "destroyed", "focus", "itemRender", "open", "valueChange"] }, { type: i7.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { type: i8.AddNewAddressComponent, selector: "app-add-new-address", inputs: ["confirmedAddress"], outputs: ["updateNewAddress"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i5.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i10.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i10.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["disabled", "autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }], pipes: { "async": i9.AsyncPipe } });
335
+ CustomCheckoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CustomCheckoutComponent, selector: "app-custom-checkout", viewQueries: [{ propertyName: "checkoutForm", first: true, predicate: ["checkoutForm"], descendants: true }, { propertyName: "checkoutToTime", first: true, predicate: ["checkoutToTime"], descendants: true }, { propertyName: "collectTimeObj", first: true, predicate: ["collectTimeObj"], descendants: true }, { propertyName: "mapViewEl", first: true, predicate: ["mapViewNode"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"loading\" *ngIf=\"showWaitCursor | async \">Loading&#8230;</div>\r\n<app-custom-breadcrum [customCrumbData]=\"breadcrumbData\" class=\"products-breadcums\"></app-custom-breadcrum>\r\n<div class=\"container mb-120\">\r\n <div class=\"top-checkout col-sm-9\">\r\n <h1 class=\"pageTitle\">{{pageTitle}}</h1>\r\n <!-- <p class=\"checkout-header-paragraph\">{{checkoutHeaderContent}}</p> -->\r\n <cx-page-slot class=\"checkout-header-paragraph\" position=\"CheckoutParagraphContextSlot-checkoutPage\"></cx-page-slot>\r\n </div>\r\n <div class=\"row content-row\">\r\n <div class=\"col-sm-12 col-lg-7 offset-lg-3\">\r\n <form #checkoutForm=\"ngForm\">\r\n <mat-card-header class=\"line-step-navigation first-step\">\r\n <div class=\"card-title cus-title-margin-card\">\r\n <mat-card-title class=\"font-bold\"> <span class=\"card-number\"> 1 </span> Choose Your Delivery Method</mat-card-title>\r\n </div>\r\n </mat-card-header>\r\n <mat-card class=\"custom-mat-card line-step-navigation\">\r\n <mat-card-content>\r\n <div class=\"card-container d-sm-inline-flex d-md-flex align-content-center justify-content-between \">\r\n <mat-card class=\"matlft\">\r\n <mat-card-content class=\"box-container\">\r\n <div (click)=\"isDeliveryBox = true;\" class=\"delivery-box d-sm-inline-flex align-items-sm-center justify-content-sm-around\" [ngClass]=\"isDeliveryBox ? ACTIVE_ITEM : ''\">\r\n <img class=\"delivery-img\" src=\"../../../../assets/images/delivery.svg\" />\r\n <ng-template [ngIf]=\"isDeliveryBox\">\r\n <img class=\"check-square-del\" src=\"../../../../assets/images/check-square.svg\" />\r\n </ng-template>\r\n </div>\r\n <div class=\"delivery-heading-text\">\r\n <mat-card-title>{{deliveryModes[0]?.name || 'Delivery'}} </mat-card-title>\r\n <mat-card-subtitle> {{deliveryModes[0]?.description || 'We deliver right to your door.'}} </mat-card-subtitle>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <mat-card class=\"matright\">\r\n <mat-card-content class=\"box-container\">\r\n <div (click)=\"isDeliveryBox = false;\" class=\"collect-box d-sm-inline-flex align-items-sm-center justify-content-sm-around\" [ngClass]=\"isDeliveryBox ? '' : ACTIVE_ITEM\">\r\n <img class=\"pickup-img\" src=\"../../../../assets/images/pickup.svg\" />\r\n <ng-template [ngIf]=\"!isDeliveryBox\">\r\n <img class=\"check-square-cc\" src=\"../../../../assets/images/check-square.svg\" />\r\n </ng-template>\r\n </div>\r\n <div class=\"delivery-heading-text\">\r\n <mat-card-title> {{deliveryModes[1]?.name || 'Click & Collect'}}</mat-card-title>\r\n <mat-card-subtitle> {{deliveryModes[1]?.description || 'Collect from your nearest branch.' }}</mat-card-subtitle>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n <mat-card-header class=\"line-step-navigation\">\r\n <div class=\"card-title cus-title-margin-card\">\r\n <mat-card-title class=\"font-bold\"> <span class=\"card-number\"> 2 </span> Purchase Order Number</mat-card-title>\r\n </div>\r\n </mat-card-header>\r\n <mat-card class=\"custom-mat-card line-step-navigation\">\r\n <mat-card-content>\r\n <div class=\"form-container for-mob col-sm-6 pl-0\">\r\n <label class=\"form-label\">Purchase Order Number <span class=\"marker\">*</span></label>\r\n <input #poNumber=\"ngModel\" name=\"poNumber\" id=\"poNumber\" type=\"text\" maxlength=\"15\" [(ngModel)]=\"checkoutFormData.poNumber\" class=\"form-control joborder-input\" required>\r\n </div>\r\n <p *ngIf=\"isSubmitted\" [hidden]=\"poNumber.valid\" class=\"error-message\">\r\n Purchase Order Number is required\r\n </p>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <mat-card-header class=\"line-step-navigation\">\r\n <div class=\"card-title cus-title-margin-card\">\r\n\r\n <mat-card-title class=\"font-bold\"> <span class=\"card-number\"> 3 </span> {{isDeliveryBox ? 'Delivery': 'Pickup '}} Date and Time</mat-card-title>\r\n </div>\r\n </mat-card-header>\r\n\r\n <mat-card class=\"custom-mat-card line-step-navigation\">\r\n <mat-card-content>\r\n <div class=\"form-container for-mob col-sm-6 pl-0\">\r\n <label for=\"date\" class=\"form-label\">Date <span class=\"marker\">*</span></label>\r\n <form class=\"ngb-date-form\">\r\n <div class=\"form-group\">\r\n <div class=\"input-group\">\r\n <input [firstDayOfWeek]=\"7\" #deliveryPickUpDate=\"ngModel\" class=\"form-control cus-width date-input\" [(ngModel)]=\"checkoutFormData.deliveryPickUpDate\" id=\"date\" name=\"txtDate\" tabindex=\"-1\" onkeydown=\"return false\" placeholder=\"DD-MM-YYYY\" ngbDatepicker #ngDate=\"ngbDatepicker\"\r\n [minDate]=\"ngbMinDate\" (dateSelect)=\"datechange($event)\" container=\"body\" required [markDisabled]=\"isDisabled\" />\r\n <div class=\"input-group-append custom-date-button\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"ngDate.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <p *ngIf=\"isSubmitted && !checkoutFormData.deliveryPickUpDate\" class=\"error-message\">\r\n Date is required\r\n </p>\r\n <div class=\"form-container for-mob col-sm-6 pl-0\">\r\n <label for=\"time\" class=\"form-label pt-4\">Time <span class=\"marker\">*</span></label>\r\n <div class=\"d-flex align-items-center\">\r\n <form class=\"form-job\">\r\n <div class=\"selectdiv\">\r\n <label class=\"jobinput\">\r\n <ejs-timepicker format=\"hh:mm a\" id='timepicker' [showClearButton]=\"false\"\r\n (click)=\"timeClick($event, collectTimeObj)\" #collectTimeObj\r\n [(value)]='checkoutFormData.deliveryPickUpFromTime' [min]=\"minTime\" [allowEdit]=\"false\" [max]=\"fromMaxTime\"\r\n (change)=\"onFromTimeChanged(collectTimeObj)\"\r\n ></ejs-timepicker> \r\n </label>\r\n </div>\r\n </form>\r\n <label for=\"time\" class=\"form-label p-3\">to</label>\r\n\r\n <form class=\"form-job\">\r\n <div class=\"selectdiv\">\r\n <label class=\"jobinput\">\r\n <ejs-timepicker format=\"hh:mm a\" id='totTmepicker' [showClearButton]=\"false\"\r\n (click)=\"timeClick($event, checkoutToTime)\" #checkoutToTime\r\n [(value)]='checkoutFormData.deliveryPickUpToTime' [min]=\"minToTime\" [allowEdit]=\"false\" [max]=\"maxTime\"\r\n ></ejs-timepicker>\r\n \r\n </label>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <!-- <p *ngIf=\"isSubmitted\" [hidden]=\"checkoutFormData.deliveryPickUpFromTime != undefined\" class=\"error-message\">\r\n From time is required\r\n </p>\r\n <p *ngIf=\"isSubmitted\" [hidden]=\"checkoutFormData.deliveryPickUpToTime != undefined\" class=\"error-message\">\r\n To time is required\r\n </p> -->\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <mat-card-header class=\"line-step-navigation\" *ngIf=\"!isDeliveryBox\">\r\n <div class=\"card-title cus-title-margin-card\">\r\n <mat-card-title class=\"font-bold\"> <span class=\"card-number\"> 4 </span> Pickup Location</mat-card-title>\r\n </div>\r\n </mat-card-header>\r\n <mat-card *ngIf=\"!isDeliveryBox\" class=\"custom-mat-card line-step-navigation\">\r\n <mat-card-content>\r\n <div class=\"branch-container\">\r\n <mat-card-title class='address-title'>\r\n {{branchAddress?.town}}</mat-card-title>\r\n <mat-card-subtitle> {{branchAddress?.formattedAddress}}</mat-card-subtitle>\r\n <mat-card-subtitle> <span class=\"form-label\">Phone: </span> {{branchAddress?.phone}}</mat-card-subtitle>\r\n <div class=\"branch-hour-container\">\r\n <mat-card-title class='address-title'>Opening Hours</mat-card-title>\r\n <mat-card-subtitle *ngFor=\"let data of tempBranchListData\">\r\n <span class=\"hour-label-left\">{{ data?.weekDay }}</span>\r\n <span *ngIf=\"data?.openingTime?.formattedHour || data?.closingTime?.formattedHour\">{{data?.openingTime?.formattedHour}}\r\n - {{data?.closingTime?.formattedHour}}</span>\r\n <span class=\"error-message\" *ngIf=\"!data?.openingTime?.formattedHour && !data?.closingTime?.formattedHour\">Closed</span>\r\n </mat-card-subtitle>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n <mat-card-header class=\"line-step-navigation\" *ngIf=\"isDeliveryBox\">\r\n <div class=\"card-title cus-title-margin-card\">\r\n <mat-card-title class=\"font-bold\"> <span class=\"card-number\"> 4 </span> {{isDeliveryBox ? 'Select your Delivery Address Preference': 'Pickup Location '}}\r\n\r\n </mat-card-title>\r\n </div>\r\n </mat-card-header>\r\n <mat-card [hidden]=\"!isDeliveryBox\" class=\"custom-mat-card line-step-navigation\">\r\n <mat-card-content>\r\n <div class=\"d-flex mat-inner-container radio-btn-container\">\r\n <mat-radio-group aria-label=\"Select an option\">\r\n <mat-radio-button *ngIf=\"defaultAccountAddress?.formattedAddress || (deliveryAddresses && deliveryAddresses.length > 0)\" [checked]=\"selectedAddress == 'accountAddress'\" (change)=\"selectedAddress = 'accountAddress';selectedRecentAddress= deliveryAddresses[0]\"\r\n [value]=\"'accountAddress'\" class=\"pl-0 pr-md-4\">Account Address</mat-radio-button>\r\n <mat-radio-button *ngIf=\"deliveryAddresses && recentAddress.length> 0\" [checked]=\"selectedAddress == 'recentAddress'\" (change)=\"selectedAddress = 'recentAddress'; selectedRecentAddress= recentAddress[0]\" [value]=\"'recentAddress'\" class=\"pl-0 pr-md-4\">Recent Address</mat-radio-button>\r\n <mat-radio-button [checked]=\"selectedAddress == 'addNewAddress'\" (change)=\"addNewAddress()\" [value]=\"'addNewAddress'\">Add New Address</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n <div class=\"py-2 address-inner-container\" *ngIf=\"selectedAddress == 'accountAddress' && deliveryAddresses.length > 0 \">\r\n <label *ngIf=\"!showMoreAddresses\" class=\"form-label\">Confirmed Delivery Address </label>\r\n\r\n <div *ngIf=\"!showMoreAddresses\" class=\"form-container\">\r\n <div class=\"map-selected-address\" id=\"address\" required #isAddrSelectedOrNot>\r\n {{defaultAccountAddress?.formattedAddress}}</div>\r\n </div>\r\n <div *ngIf=\"showMoreAddresses\">\r\n <mat-radio-group aria-labelledby=\"example-radio-group-label\" class=\"example-radio-group radio-btn-size\">\r\n <mat-radio-button class=\"py-1\" [checked]=\"selectedRecentAddress?.id == address.id\" *ngFor=\"let address of deliveryAddresses\" [value]=\"address.id\" (change)=\"selectedRecentAddress=address\">\r\n {{address.formattedAddress}}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n </div>\r\n <div class=\"py-2 address-inner-container\" *ngIf=\"selectedAddress == 'recentAddress' && recentAddress.length > 0\">\r\n <mat-radio-group aria-labelledby=\"example-radio-group-label\" class=\"example-radio-group radio-btn-size\">\r\n <mat-radio-button class=\"py-1\" [checked]=\"selectedRecentAddress?.id == address.id\" *ngFor=\"let address of recentAddress \" [value]=\"address.id\" (change)=\"selectedRecentAddress=address\">\r\n {{address.formattedAddress}}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n <div *ngIf=\"selectedAddress == 'addNewAddress'\">\r\n <!-- Map Div -->\r\n <app-add-new-address [confirmedAddress]=\"confirmedNewAddress\" (updateNewAddress)=\"getNewAddress($event)\"></app-add-new-address>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n <mat-card-header class=\"line-step-navigation last-step\">\r\n <div class=\"card-title cus-title-margin-card\">\r\n <mat-card-title>\r\n <span class=\"card-number\"> 5 </span> {{isDeliveryBox ? 'Site Delivery Requirements': 'Comments '}}\r\n <span class=\"info-icon pl-2\" [ngbTooltip]=\"isDeliveryBox ? siteDeliveryRequirements : clickandCollectComments\" placement=\"bottom\"></span>\r\n </mat-card-title>\r\n </div>\r\n </mat-card-header>\r\n <mat-card class=\"custom-mat-card line-step-navigation\">\r\n <mat-card-content>\r\n <textarea class=\"form-control\" [(ngModel)]=\"checkoutFormData.deliveryPickUpNotes\" rows=\"3\" name=\"Instructions\" id=\"Instructions\" [placeholder]=\"isDeliveryBox ? 'Provide any specific delivery instructions':'Provide any specific pickup instructions'\" maxlength=\"250\"></textarea>\r\n </mat-card-content>\r\n </mat-card>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"cart-page-footer\">\r\n <div class=\"container\">\r\n <div class=\"sticky-footer row\">\r\n <div class=\"col-sm-12\">\r\n <p class=\" float-md-right m-0 checkout-footer-btns\">\r\n <a title=\"Back to Cart\" href=\"/cart\" class=\"mr-3 font-weight-bold\">\r\n <img src=\"../../../../assets/images/ionic-arrow-back.svg\" alt=\"back-arrow\" class=\"mr-2\" /> BACK\r\n </a>\r\n <button type=\"button\" (click)=\"reviewOrder()\" class=\"btn primary-button\">Review And Order</button>\r\n </p>\r\n </div>\r\n <div class=\" col-sm-12 alert alert-danger justify-content-start mt-3\" role=\"alert\" *ngIf=\"errorInd$ | async\">\r\n <img class=\"mr-3\" src=\"../../../../assets/images/erroricon.svg\" alt=\"alert\"> {{infoMessage}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54);color:#1d1d1b;padding-top:2rem}[aria-label=Close]{cursor:pointer}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0;position:relative}cx-storefront header.is-expanded .PreHeader{position:absolute;right:-5px;top:5px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;bottom:110px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{bottom:160px;max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}.mb-120{margin-bottom:120px}::ng-deep .OrderCheckoutTemplate header{display:none!important}::ng-deep cx-storefront.stop-navigating:before,::ng-deep cx-storefront.stop-navigating:after{height:0}.custom-arrow{position:absolute;right:15px;top:18px;z-index:1}.esri-view{padding:0;margin:0;height:100%;width:100%}#mapViewNode{padding:0;margin:0;height:100%;width:100%}::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle{border-color:#b61828!important}::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-inner-circle{background:#B61828!important}::ng-deep ejs-timepicker .e-input-group{padding:8px}.e-input-group.e-control-wrapper.e-time-wrapper.e-lib.e-keyboard.e-valid-input.e-non-edit{font-size:var(--fontsize16);margin-right:1rem}button.calendar,button.calendar:active{opacity:1;display:block;background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 width%3D%2219.785%22 height%3D%2222%22 viewBox%3D%220 0 19.785 22%22%3E%0D %3Cdefs%3E%0D %3CclipPath id%3D%22clip-path%22%3E%0D %3Cpath id%3D%22Mask%22 d%3D%22M17.569%2C22H2.215a2.143%2C2.143%2C0%2C0%2C1-1.571-.644A2.147%2C2.147%2C0%2C0%2C1%2C0%2C19.785V4.431A2.147%2C2.147%2C0%2C0%2C1%2C.644%2C2.859a2.147%2C2.147%2C0%2C0%2C1%2C1.571-.644H3.3V0H5.513V2.215h8.759V0h2.215V2.215h1.082a2.2%2C2.2%2C0%2C0%2C1%2C2.215%2C2.215V19.785A2.2%2C2.2%2C0%2C0%2C1%2C17.569%2C22ZM2.215%2C7.728V19.785H17.569V7.728Zm13.19%2C9.893H9.893V12.108h5.513v5.513Z%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3C%2FclipPath%3E%0D %3C%2Fdefs%3E%0D %3Cg id%3D%22Group%22 transform%3D%22translate(0)%22%3E%0D %3Cpath id%3D%22Mask-2%22 data-name%3D%22Mask%22 d%3D%22M17.569%2C22H2.215a2.143%2C2.143%2C0%2C0%2C1-1.571-.644A2.147%2C2.147%2C0%2C0%2C1%2C0%2C19.785V4.431A2.147%2C2.147%2C0%2C0%2C1%2C.644%2C2.859a2.147%2C2.147%2C0%2C0%2C1%2C1.571-.644H3.3V0H5.513V2.215h8.759V0h2.215V2.215h1.082a2.2%2C2.2%2C0%2C0%2C1%2C2.215%2C2.215V19.785A2.2%2C2.2%2C0%2C0%2C1%2C17.569%2C22ZM2.215%2C7.728V19.785H17.569V7.728Zm13.19%2C9.893H9.893V12.108h5.513v5.513Z%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cg id%3D%22Group-2%22 data-name%3D%22Group%22 clip-path%3D%22url(%23clip-path)%22%3E%0D %3Cg id%3D%22_icon-color%22 data-name%3D%22%E2%86%B3%F0%9F%8E%A8icon-color%22 transform%3D%22translate(-49.463 -47.247)%22%3E%0D %3Crect id%3D%22Icon-Shade%22 width%3D%22118.71%22 height%3D%22118.71%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3C%2Fg%3E%0D %3C%2Fg%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat;background-size:20px 20px;background-position:center;border-width:thin;align-items:center;position:relative;text-align:center;justify-content:center;padding:0;border-radius:0;border:1px solid #d3d6db;border-left-width:0px}.form-label{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}.mat-card:not([class*=mat-elevation-z]){padding:1.5rem}.delivery-box,.collect-box{border:1px solid #A6A6A5;border-radius:10px;opacity:1;align-items:center;justify-content:center;background-color:#eee3;display:inline-flex;padding:36px;height:160px;width:219px;cursor:pointer;position:relative}.delivery-box .delivery-img,.collect-box .delivery-img{width:6.25em;height:3.688em}.delivery-box .pickup-img,.collect-box .pickup-img{width:5em;height:5em}.delivery-box.active-box,.collect-box.active-box{background-color:#eee3;border:2px solid #B61828;opacity:1}.delivery-box .mat-checkbox.active-checkbox,.collect-box .mat-checkbox.active-checkbox{right:25px;position:absolute;top:10%}.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background,.mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#b61828}.box-container .mat-card-title{text-align:center;font-family:\"Arial Bold\",sans-serif;opacity:1;margin:0;font-size:var(--fontsize16)}.box-container .mat-card-title{margin:5px!important}.box-container .mat-card-subtitle{opacity:1;font-size:var(--fontsize16);margin-bottom:0;color:#1d1d1b}.marker{color:#973937;font-family:\"Arial Bold\",sans-serif}.branch-container .mat-card-subtitle{margin-bottom:6px;font-size:var(--fontsize16);color:#1d1d1b}.branch-container .mat-card-subtitle .branch-hour-container span:not(.error-message):last-child{text-transform:uppercase}.branch-container .mat-card-title{font-family:\"Arial Bold\",sans-serif;margin-bottom:4px;font-size:var(--fontsize16)}.branch-container .branch-link{font-size:var(--fontsize18)}.branch-container .hour-label-left{width:15%;position:relative;display:inline-block}input[type=time]::-webkit-calendar-picker-indicator{background:none}.check-square-del,.check-square-cc{position:absolute;top:-1px;right:0}.selectdiv{position:relative}.selectdiv select{height:50px;width:100%;line-height:35px;border:1px solid #d3d6db;font-size:var(--fontsize16);color:#1d1d1b;padding-left:13px;-webkit-appearance:none;appearance:none;position:relative;z-index:1}::ng-deep .OrderCheckoutTemplate .mat-card-header-text{margin:0!important}::ng-deep .OrderCheckoutTemplate mat-radio-button{padding-left:10px}::ng-deep .OrderCheckoutTemplate mat-radio-button .mat-radio-label{white-space:pre-line}::ng-deep .OrderCheckoutTemplate .card-number{background-color:#1d1d1b;border-radius:50%;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-family:\"Arial Bold\",sans-serif;margin-right:1rem}::ng-deep .OrderCheckoutTemplate .mat-card-content .mat-inner-container .mat-radio-label-content{font-family:\"Arial Bold\",sans-serif;font-size:var(--fontsize16)}::ng-deep .OrderCheckoutTemplate .mat-card-content .mat-radio-label-content{font-family:\"Arial Regular\",sans-serif;font-size:var(--fontsize16)}::ng-deep .OrderCheckoutTemplate .form-control{color:#1d1d1b;font-family:\"Arial Regular\",sans-serif}::ng-deep .OrderCheckoutTemplate #Instructions{resize:none}::ng-deep .OrderCheckoutTemplate #Instructions::placeholder{font-family:\"Arial Regular\",sans-serif;font-size:var(--fontsize16);color:#c6c6c6}::ng-deep .OrderCheckoutTemplate .info-icon{position:relative;background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22%3E%0D %3Cpath id%3D%22Icon_metro-info%22 data-name%3D%22Icon metro-info%22 d%3D%22M9.571%2C6.678a.752.752%2C0%2C0%2C1%2C.75-.75h.5a.752.752%2C0%2C0%2C1%2C.75.75v.5a.752.752%2C0%2C0%2C1-.75.75h-.5a.752.752%2C0%2C0%2C1-.75-.75Zm3%2C7.25h-4v-1h1v-3h-1v-1h3v4h1Zm-2-12a8%2C8%2C0%2C1%2C0%2C8%2C8%2C8%2C8%2C0%2C0%2C0-8-8Zm0%2C14.5a6.5%2C6.5%2C0%2C1%2C1%2C6.5-6.5A6.5%2C6.5%2C0%2C0%2C1%2C10.571%2C16.428Z%22 transform%3D%22translate(-2.571 -1.928)%22 fill%3D%22%23c6c6c6%22%2F%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center;width:16px;height:16px;display:inline-block;top:1px;left:15px}::ng-deep .OrderCheckoutTemplate .cart-page-footer{background-color:#fff;border-top:1px solid #E0E0E0;padding:24px 0;position:fixed;bottom:0;left:0;right:0;width:100%;z-index:9;transition:transform .3s ease-in-out}::ng-deep .OrderCheckoutTemplate .error-message{color:#da1e28}::ng-deep .OrderCheckoutTemplate .example-radio-group .mat-radio-button{display:block}::ng-deep .OrderCheckoutTemplate .content-row{margin-bottom:3rem}::ng-deep .OrderCheckoutTemplate mat-card.line-step-navigation{box-shadow:none;border:1px solid #E0E0E0}::ng-deep .OrderCheckoutTemplate .card-container mat-card{box-shadow:none}::ng-deep .OrderCheckoutTemplate .line-step-navigation{position:relative}::ng-deep .OrderCheckoutTemplate .line-step-navigation:before{display:inline-block;content:\"\";position:absolute;top:0;left:-35px;width:10px;height:100%;border-left:2px dashed #C6C6C6}::ng-deep .OrderCheckoutTemplate .line-step-navigation:last-child:before{border-left:none}::ng-deep .OrderCheckoutTemplate .line-step-navigation .cus-title-margin-card{position:relative;left:-50px;margin-bottom:0}::ng-deep .OrderCheckoutTemplate .line-step-navigation.last-step:before{height:75%}::ng-deep .OrderCheckoutTemplate .line-step-navigation.first-step:before{height:75%;top:15%}::ng-deep .OrderCheckoutTemplate .mat-card-header .card-title .mat-card-title{margin:1rem 0;font-size:1.5rem;display:inline-flex;align-items:center}::ng-deep .OrderCheckoutTemplate .map-selected-address{background-color:#e8e8e8;border:1px solid #d3d6db;padding:.75rem;align-self:flex-start;width:100%;min-height:50px;font-size:var(--fontsize16)}::ng-deep .OrderCheckoutTemplate .box-container{text-align:center}@media (max-width: 992px){::ng-deep .OrderCheckoutTemplate .radio-btn-container .mat-radio-group{display:inline-flex;flex-direction:row;align-items:flex-start}::ng-deep .OrderCheckoutTemplate .radio-btn-container .mat-radio-group .mat-radio-button .mat-radio-label{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}::ng-deep .OrderCheckoutTemplate .radio-btn-container .mat-radio-group .mat-radio-button .mat-radio-label .mat-radio-label-content{margin-top:5px}::ng-deep .OrderCheckoutTemplate .line-step-navigation{background:transparent;box-shadow:none!important;border:none!important}::ng-deep .OrderCheckoutTemplate .line-step-navigation:before{left:15px}::ng-deep .OrderCheckoutTemplate .line-step-navigation .cus-title-margin-card{left:0}::ng-deep .OrderCheckoutTemplate .card-container mat-card{background:transparent;box-shadow:none!important}::ng-deep .OrderCheckoutTemplate .checkout-footer-btns{display:flex;justify-content:space-around;align-items:center}::ng-deep .OrderCheckoutTemplate .mat-card:not([class*=mat-elevation-z]){padding:1rem .25rem 1rem 1.5rem}::ng-deep .OrderCheckoutTemplate .mat-card-header .card-title .mat-card-title{font-size:1.25rem;align-items:center;margin:0}::ng-deep .OrderCheckoutTemplate .mat-card-content.box-container{display:flex}::ng-deep .OrderCheckoutTemplate .mat-card-content mat-card .mat-card{align-items:center;justify-content:center}::ng-deep .OrderCheckoutTemplate .delivery-box,::ng-deep .OrderCheckoutTemplate .collect-box{height:102px;width:140px}::ng-deep .OrderCheckoutTemplate .box-container{text-align:left}::ng-deep .OrderCheckoutTemplate .box-container .delivery-heading-text{padding-left:1rem}::ng-deep .OrderCheckoutTemplate .box-container .delivery-heading-text .mat-card-title{text-align:left;margin-left:0!important}::ng-deep .OrderCheckoutTemplate .address-inner-container{padding-left:15px}}\n"], components: [{ type: i4.CustomBreadcrumComponent, selector: "app-custom-breadcrum", inputs: ["customCrumbData"] }, { type: i5.PageSlotComponent, selector: "cx-page-slot,[cx-page-slot]", inputs: ["position", "class", "isPageFold", "hasComponents"] }, { type: i6.MatCardHeader, selector: "mat-card-header" }, { type: i6.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i7.TimePickerComponent, selector: "ejs-timepicker", inputs: ["allowEdit", "cssClass", "enableMask", "enablePersistence", "enableRtl", "enabled", "floatLabelType", "format", "htmlAttributes", "keyConfigs", "locale", "maskPlaceholder", "max", "min", "openOnFocus", "placeholder", "readonly", "scrollTo", "showClearButton", "step", "strictMode", "value", "width", "zIndex"], outputs: ["blur", "change", "cleared", "close", "created", "destroyed", "focus", "itemRender", "open", "valueChange"] }, { type: i8.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { type: i9.AddNewAddressComponent, selector: "app-add-new-address", inputs: ["confirmedAddress"], outputs: ["updateNewAddress"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i11.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i11.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i6.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i11.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i11.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["disabled", "autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }], pipes: { "async": i10.AsyncPipe } });
335
336
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomCheckoutComponent, decorators: [{
336
337
  type: Component,
337
338
  args: [{
@@ -352,4 +353,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
352
353
  type: ViewChild,
353
354
  args: ['mapViewNode', { static: true }]
354
355
  }] } });
355
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNoZWNrb3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvY2hlY2tvdXQvY3VzdG9tLWNoZWNrb3V0L2N1c3RvbS1jaGVja291dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL2NoZWNrb3V0L2N1c3RvbS1jaGVja291dC9jdXN0b20tY2hlY2tvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFJVCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7O0FBU3ZDLE1BQU0sT0FBTyx1QkFBdUI7SUE4Q2xDLFlBQ1MsZUFBc0MsRUFDckMsVUFBc0IsRUFDdkIsRUFBcUIsRUFDckIsUUFBcUIsRUFDckIsaUJBQW9DO1FBSnBDLG9CQUFlLEdBQWYsZUFBZSxDQUF1QjtRQUNyQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3ZCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWxEN0MsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2hELGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFDOUIsZ0JBQVcsR0FBVyxZQUFZLENBQUM7UUFFbkMsb0JBQWUsR0FBVyxnQkFBZ0IsQ0FBQztRQUczQyxjQUFTLEdBQUcsSUFBSSxJQUFJ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SSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3JGLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztJQUVsQyxDQUFDOztxSEEzWVUsdUJBQXVCO3lHQUF2Qix1QkFBdUIsd2RDbkJwQyxnNWpCQTBPQTs0RkR2TmEsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSxrQ0FBa0M7b0JBQy9DLFNBQVMsRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2lCQUNoRDsrTkF1QjRCLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFPdUIsY0FBYztzQkFBN0QsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0UsY0FBYztzQkFBN0QsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ00sU0FBUztzQkFBNUQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiQ2FsZW5kYXIsIE5nYkRhdGVTdHJ1Y3QgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEFjdGl2ZUNhcnRTZXJ2aWNlIH0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEN1c3RvbUNoZWNrb3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoZWNrb3V0LnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQ21zU2VydmljZSB9IGZyb20gJ0BzcGFydGFjdXMvY29yZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS1jaGVja291dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1jaGVja291dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLWNoZWNrb3V0LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21DaGVja291dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZXJyb3JJbmQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgaW5mb01lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIHByZXZpb3VzVXJsOiBzdHJpbmcgPSAnJztcclxuICBjYXJ0SWQ6IHN0cmluZyA9ICcnO1xyXG4gIGlzRGVsaXZlcnlCb3g6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEFDVElWRV9JVEVNOiBzdHJpbmcgPSAnYWN0aXZlLWJveCc7XHJcbiAgbmdiTWluRGF0ZTogYW55O1xyXG4gIHNlbGVjdGVkQWRkcmVzczogc3RyaW5nID0gJ2FjY291bnRBZGRyZXNzJztcclxuICBwdWJsaWMgbWF4VGltZTogYW55O1xyXG4gIHB1YmxpYyBmcm9tTWF4VGltZTogYW55O1xyXG4gIGNjbWluVGltZSA9IG5ldyBEYXRlKDIwMjIsIDAsIDI4LCA2LCAwLCAwKTtcclxuICBjY21heFRpbWUgPSBuZXcgRGF0ZSgyMDIyLCAwLCAyOCwgMjIsIDAsIDApO1xyXG4gIHB1YmxpYyBtaW5UaW1lOiBhbnk7XHJcbiAgcHVibGljIG1pblRvVGltZTogYW55O1xyXG4gIGNoZWNrb3V0Rm9ybURhdGE6IGFueSA9IHt9O1xyXG4gIGlzU3VibWl0dGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RhcnRUaW1lOiBhbnkgPSBbXTtcclxuICByZWNlbnRBZGRyZXNzOiBhbnkgPSBbXTtcclxuICBkZWxpdmVyVGltZTogYW55O1xyXG4gIGRlZmF1bHRBY2NvdW50QWRkcmVzczogYW55O1xyXG4gIGJyYW5jaEFkZHJlc3M6IGFueTtcclxuICBAVmlld0NoaWxkKCdjaGVja291dEZvcm0nKSBjaGVja291dEZvcm06IGFueTtcclxuICBzZWxlY3RlZFJlY2VudEFkZHJlc3M6IGFueSA9IHt9O1xyXG4gIHRlbXBCcmFuY2hMaXN0RGF0YTogYW55ID0gW107XHJcbiAgcHVibGljIGRlbGl2ZXJ5RGlzYWJsZURhdGVzOiBhbnk7XHJcbiAgY29sbGVjdFRpbWU6IGFueTtcclxuICBtaW5MZWFkVGltZTogbnVtYmVyID0gMztcclxuICByZXNwb25zZURhdGE6IGFueTtcclxuICBAVmlld0NoaWxkKCdjaGVja291dFRvVGltZScsIHsgc3RhdGljOiBmYWxzZSB9KSBjaGVja291dFRvVGltZTogYW55O1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbGxlY3RUaW1lT2JqJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNvbGxlY3RUaW1lT2JqOiBhbnk7XHJcbiAgQFZpZXdDaGlsZCgnbWFwVmlld05vZGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIG1hcFZpZXdFbCE6IEVsZW1lbnRSZWY7XHJcbiAgc3BlY2lhbERheU9wZW5pbmdMaXN0OiBhbnkgPSBbXTtcclxuICB3ZWVrRGF5T3BlbmluZ0xpc3Q6IGFueSA9IFtdO1xyXG4gIGRlbGl2ZXJ5QWRkcmVzc2VzOiBhbnkgPSBbXTtcclxuICBzaG93TW9yZUFkZHJlc3NlczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNpdGVEZWxpdmVyeVJlcXVpcmVtZW50czogYW55O1xyXG4gIGNsaWNrYW5kQ29sbGVjdENvbW1lbnRzOiBhbnk7XHJcbiAgY2hlY2tvdXRIZWFkZXJDb250ZW50OiBhbnk7XHJcbiAgYnJlYWRjcnVtYkRhdGE6IGFueSA9IFtdO1xyXG4gIGRlbGl2ZXJ5TW9kZXM6IGFueSA9IFtdO1xyXG4gIHZpZXc6IGFueTtcclxuICBwYWdlVGl0bGU6IGFueTtcclxuICBuZXdBZGRyZXNzOiBhbnk7XHJcbiAgY29uZmlybWVkTmV3QWRkcmVzczogc3RyaW5nID0gJyc7XHJcbiAgc2hvd1dhaXRDdXJzb3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjaGVja291dFNlcnZpY2U6IEN1c3RvbUNoZWNrb3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgY21zU2VydmljZTogQ21zU2VydmljZSxcclxuICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY2FsZW5kYXI6IE5nYkNhbGVuZGFyLFxyXG4gICAgcHVibGljIGFjdGl2ZUNhcnRTZXJ2aWNlOiBBY3RpdmVDYXJ0U2VydmljZVxyXG4gICkgeyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2UuZ2V0Q3VycmVudFBhZ2UoKS5zdWJzY3JpYmUoKHBhZ2FkYXRhOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5wYWdlVGl0bGUgPSBwYWdhZGF0YS50aXRsZTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmJyZWFkY3J1bWJEYXRhLnB1c2goeyB1cmw6ICcvJywgbmFtZTogJ0hvbWUnIH0pO1xyXG4gICAgdGhpcy5icmVhZGNydW1iRGF0YS5wdXNoKHsgdXJsOiAnL2NhcnQnLCBuYW1lOiAnQ2FydCcgfSk7XHJcbiAgICB0aGlzLmJyZWFkY3J1bWJEYXRhLnB1c2goeyB1cmw6ICcvY2hlY2tvdXQnLCBuYW1lOiAnQ2hlY2tvdXQnIH0pO1xyXG4gICAgbGV0IGNhcnQ6IGFueSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzcGFydGFjdXPimr9kaW1vbmQtc3Bh4pq/Y2FydCcpO1xyXG4gICAgdGhpcy5jYXJ0SWQgPSBKU09OLnBhcnNlKGNhcnQpPy5hY3RpdmU7XHJcbiAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBEYXRlID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwVG9UaW1lID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRnJvbVRpbWUgPSB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBjaGVja291dERhdGE6IGFueSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoZWNrb3V0RGF0YScpO1xyXG4gICAgaWYgKGNoZWNrb3V0RGF0YSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YSA9IEpTT04ucGFyc2UoY2hlY2tvdXREYXRhKTtcclxuICAgICAgdGhpcy5pc0RlbGl2ZXJ5Qm94ID0gdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5TWV0aG9kID09ICdjbGlja0FuZENvbGxlY3QnID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgfVxyXG4gICAgdmFyIGxvY0FkZHJlc3M6IGFueSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdicmFuY2hEZXRhaWxzJyk7XHJcbiAgICB0aGlzLmJyYW5jaEFkZHJlc3MgPSBKU09OLnBhcnNlKGxvY0FkZHJlc3MpO1xyXG5cclxuICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldERlbGl2ZXJ5TW9kZXModGhpcy5jYXJ0SWQpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIHRoaXMuZGVsaXZlcnlNb2RlcyA9IGRhdGEuZGVsaXZlcnlNb2RlcztcclxuICAgICAgICB0aGlzLmRlbGl2ZXJ5TW9kZXMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IChhLmNvZGUgPiBiLmNvZGUgPyAtMSA6IDEpKVxyXG4gICAgICB9XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgdGhpcy5kZWxpdmVyeU1vZGVzID0gW3sgY29kZTogJ3N0YW5kYXJkX2RlbGl2ZXJ5JyB9LCB7IGNvZGU6ICdjbGlja0FuZENvbGxlY3QnIH1dXHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0QWRkcmVzc0luZm8oKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRBY2NvdW50QWRkcmVzcyA9IGRhdGEuYWRkcmVzc2VzWzBdO1xyXG4gICAgICAgIHRoaXMucmVjZW50QWRkcmVzcyA9IGRhdGEucmVjZW50QWRkcmVzc2VzO1xyXG4gICAgICAgIHRoaXMuc2hvd01vcmVBZGRyZXNzZXMgPSBkYXRhLmFkZHJlc3NlcyAmJiBkYXRhLmFkZHJlc3Nlcy5sZW5ndGggPiAxID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzZXMgPSBkYXRhLmFkZHJlc3NlcyAmJiBkYXRhLmFkZHJlc3Nlcy5sZW5ndGggPiAwID8gZGF0YS5hZGRyZXNzZXMgOiBbXTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQWRkcmVzcyA9IHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5zZWxlY3RlZEFkZHJlc3MgIT0gdW5kZWZpbmVkID8gdGhpcy5jaGVja291dEZvcm1EYXRhLnNlbGVjdGVkQWRkcmVzcyA6ICdhY2NvdW50QWRkcmVzcyc7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJlY2VudEFkZHJlc3MuaWQgPSB0aGlzLmNoZWNrb3V0Rm9ybURhdGEgJiYgdGhpcy5jaGVja291dEZvcm1EYXRhPy5kZWxpdmVyeUFkZHJlc3NQSyA/IHRoaXMuY2hlY2tvdXRGb3JtRGF0YT8uZGVsaXZlcnlBZGRyZXNzUEsgOiB0aGlzLmRlZmF1bHRBY2NvdW50QWRkcmVzcz8uaWQ7XHJcbiAgICAgICAgdGhpcy5jb25maXJtZWROZXdBZGRyZXNzID0gdGhpcy5jaGVja291dEZvcm1EYXRhLnNlbGVjdGVkQWRkcmVzcyAhPSB1bmRlZmluZWQgJiYgdGhpcy5jaGVja291dEZvcm1EYXRhLnNlbGVjdGVkQWRkcmVzcyA9PSAnYWRkTmV3QWRkcmVzcycgPyB0aGlzLmNoZWNrb3V0Rm9ybURhdGEubmV3QWRkcmVzcz8uc2VsZWN0ZWRBZGRyZXNzIDogJyc7XHJcbiAgICAgICAgdGhpcy5uZXdBZGRyZXNzID0gdGhpcy5jaGVja291dEZvcm1EYXRhLnNlbGVjdGVkQWRkcmVzcyAhPSB1bmRlZmluZWQgJiYgdGhpcy5jaGVja291dEZvcm1EYXRhLnNlbGVjdGVkQWRkcmVzcyA9PSAnYWRkTmV3QWRkcmVzcycgPyB0aGlzLmNoZWNrb3V0Rm9ybURhdGEubmV3QWRkcmVzcyA6ICcnO1xyXG4gICAgICAgIGlmICh0aGlzLmRlbGl2ZXJ5QWRkcmVzc2VzLmxlbmd0aCA9PSAwICYmIHRoaXMuc2VsZWN0ZWRBZGRyZXNzICE9ICdhZGROZXdBZGRyZXNzJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEFkZHJlc3MgPSAncmVjZW50QWRkcmVzcyc7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUmVjZW50QWRkcmVzcyA9IHRoaXMucmVjZW50QWRkcmVzc1swXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmRlZmF1bHRBY2NvdW50QWRkcmVzcyAmJiB0aGlzLmRlbGl2ZXJ5QWRkcmVzc2VzLmxlbmd0aCA8IDEgJiYgdGhpcy5yZWNlbnRBZGRyZXNzLmxlbmd0aCA8IDEpIHRoaXMuc2VsZWN0ZWRBZGRyZXNzID0gJ2FkZE5ld0FkZHJlc3MnO1xyXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tPdXRWYWx1ZXModGhpcy5jYXJ0SWQpLnN1YnNjcmliZShcclxuICAgICAgKGRhdGEpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgdGhpcy53ZWVrRGF5T3BlbmluZ0xpc3QgPSB0aGlzLmlzRGVsaXZlcnlCb3hcclxuICAgICAgICAgICAgPyBkYXRhLnBvaW50T2ZTZXJ2aWNlPy5kZWxpdmVyeVNjaGVkdWxlPy53ZWVrRGF5T3BlbmluZ0xpc3RcclxuICAgICAgICAgICAgOiBkYXRhLnBvaW50T2ZTZXJ2aWNlPy5waWNrdXBTY2hlZHVsZT8ud2Vla0RheU9wZW5pbmdMaXN0O1xyXG4gICAgICAgICAgdGhpcy5zcGVjaWFsRGF5T3BlbmluZ0xpc3QgPSB0aGlzLmlzRGVsaXZlcnlCb3hcclxuICAgICAgICAgICAgPyBkYXRhLnBvaW50T2ZTZXJ2aWNlPy5kZWxpdmVyeVNjaGVkdWxlPy5zcGVjaWFsRGF5T3BlbmluZ0xpc3RcclxuICAgICAgICAgICAgOiBkYXRhLnBvaW50T2ZTZXJ2aWNlPy5waWNrdXBTY2hlZHVsZT8uc3BlY2lhbERheU9wZW5pbmdMaXN0O1xyXG4gICAgICAgICAgdGhpcy5nZXREZXRhaWxSZXNwb25zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIC8vY29kZSBmb3IgRGVsaXZlcnkgU2l0ZSBEZWxpdmVyeSBSZXF1aXJlbWVudHMgdG9vbHRpcFxyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdTaXRlRGVsaXZlcnlSZXF1aXJlbWVudHNDb21wb25lbnQnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5zaXRlRGVsaXZlcnlSZXF1aXJlbWVudHMgPSBkYXRhPy5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAvL2NvZGUgZm9yIENsaWNrIEFuZCBDb2xsZWN0IENvbW1lbnRzIHRvb2x0aXBcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YSgnQ29tbWVudHNDbGlja0FuZENvbGxlY3RDb21wb25lbnQnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5jbGlja2FuZENvbGxlY3RDb21tZW50cyA9IGRhdGE/LmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIC8vY29kZSBmb3IgaGVhZGVyIGNvbnRlbnRcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YSgnY2hlY2tvdXRIZWFkZXJDb250ZW50Q29tcG9uZW50JylcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tvdXRIZWFkZXJDb250ZW50ID0gZGF0YT8uY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERldGFpbFJlc3BvbnNlKCkge1xyXG4gICAgdGhpcy50ZW1wQnJhbmNoTGlzdERhdGEgPSB0aGlzLnJlc3BvbnNlRGF0YT8ucG9pbnRPZlNlcnZpY2U/LnBpY2t1cFNjaGVkdWxlPy53ZWVrRGF5T3BlbmluZ0xpc3Q7XHJcbiAgICB0aGlzLmJyYW5jaEFkZHJlc3MgPSB0aGlzLnJlc3BvbnNlRGF0YT8ucG9pbnRPZlNlcnZpY2U/LmFkZHJlc3M7XHJcbiAgICB2YXIgY2hlY2tvdXREYXRlVmFsdWUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgbGV0IGogPSAwO1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLmRlbGl2ZXJ5TWluTGVhZFRpbWUgfHwgdGhpcy5yZXNwb25zZURhdGEucGlja1VwTWluTGVhZFRpbWUpXHJcbiAgICAgIHRoaXMubWluTGVhZFRpbWUgPSB0aGlzLmlzRGVsaXZlcnlCb3ggPyB0aGlzLnJlc3BvbnNlRGF0YS5kZWxpdmVyeU1pbkxlYWRUaW1lIDogdGhpcy5yZXNwb25zZURhdGEucGlja1VwTWluTGVhZFRpbWU7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICB3aGlsZSAoaSA8IHRoaXMubWluTGVhZFRpbWUpIHtcclxuICAgICAgaiA9IGogKyAxO1xyXG4gICAgICBkYXRlLnNldERhdGUoY2hlY2tvdXREYXRlVmFsdWUuZ2V0RGF0ZSgpICsgaik7XHJcbiAgICAgIGlmIChkYXRlLmdldERheSgpID09IDYpIHtcclxuICAgICAgICBpZiAodGhpcy53ZWVrRGF5T3BlbmluZ0xpc3RbNV0uY2xvc2VkID09IHRydWUgJiYgZGF0ZS5nZXREYXkoKSA9PSA1KVxyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpID0gaSArIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGkgPSBpICsgMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaiA9IGRhdGUuZ2V0RGF5KCkgPT0gMCA/IGogKyAxIDogajtcclxuICAgIHRoaXMubmdiTWluRGF0ZSA9IHtcclxuICAgICAgZGF5OiAoY2hlY2tvdXREYXRlVmFsdWUuZ2V0RGF0ZSgpICsgaiA+IDMwKSA/IGNoZWNrb3V0RGF0ZVZhbHVlLmdldERhdGUoKSArIGogLSAzMCA6IGNoZWNrb3V0RGF0ZVZhbHVlLmdldERhdGUoKSArIGosXHJcbiAgICAgIG1vbnRoOiAoY2hlY2tvdXREYXRlVmFsdWUuZ2V0RGF0ZSgpICsgaikgPiAzMCA/IGNoZWNrb3V0RGF0ZVZhbHVlLmdldE1vbnRoKCkgPT0gMTEgPyAxIDogY2hlY2tvdXREYXRlVmFsdWUuZ2V0TW9udGgoKSArIDIgOiBjaGVja291dERhdGVWYWx1ZS5nZXRNb250aCgpICsgMSxcclxuICAgICAgeWVhcjogKGNoZWNrb3V0RGF0ZVZhbHVlLmdldERhdGUoKSArIGopID4gMzAgJiYgY2hlY2tvdXREYXRlVmFsdWUuZ2V0TW9udGgoKSA9PSAxMSA/IGNoZWNrb3V0RGF0ZVZhbHVlLmdldEZ1bGxZZWFyKCkgKyAxIDogY2hlY2tvdXREYXRlVmFsdWUuZ2V0RnVsbFllYXIoKSxcclxuICAgIH07XHJcbiAgICB0aGlzLnVwZGF0ZU1pbk1heFRpbWUoY2hlY2tvdXREYXRlVmFsdWUpO1xyXG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcbiAgdXBkYXRlTWluTWF4VGltZShkYXRlOiBEYXRlKSB7XHJcbiAgICBjb25zdCB0b2RheURheTogYW55ID0gdGhpcy53ZWVrRGF5T3BlbmluZ0xpc3RbZGF0ZS5nZXREYXkoKSAtIDFdO1xyXG4gICAgdGhpcy5taW5UaW1lID0gbmV3IERhdGUoXHJcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICBkYXRlLmdldERhdGUoKSxcclxuICAgICAgdG9kYXlEYXk/Lm9wZW5pbmdUaW1lPy5ob3VyIHx8IDksXHJcbiAgICAgIHRvZGF5RGF5Py5vcGVuaW5nVGltZT8ubWludXRlIHx8IDAsXHJcbiAgICAgIDBcclxuICAgICk7XHJcbiAgICB0aGlzLm1pblRvVGltZSA9IG5ldyBEYXRlKFxyXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgZGF0ZS5nZXREYXRlKCksXHJcbiAgICAgIHRvZGF5RGF5Py5vcGVuaW5nVGltZT8uaG91ciB8fCAxMSxcclxuICAgICAgdG9kYXlEYXk/Lm9wZW5pbmdUaW1lPy5taW51dGUgfHwgMCxcclxuICAgICAgMFxyXG4gICAgKTtcclxuICAgIHRoaXMuZnJvbU1heFRpbWUgPSBuZXcgRGF0ZShcclxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICBkYXRlLmdldE1vbnRoKCksXHJcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICB0b2RheURheT8uY2xvc2luZ1RpbWUuZm9ybWF0dGVkSG91ci5zcGxpdCgnICcpWzFdID09ICdwbSdcclxuICAgICAgICA/IHRvZGF5RGF5Py5jbG9zaW5nVGltZT8uaG91ciArIDEwXHJcbiAgICAgICAgOiB0b2RheURheT8uY2xvc2luZ1RpbWU/LmhvdXIgfHwgMTUsXHJcbiAgICAgIHRvZGF5RGF5Py5jbG9zaW5nVGltZT8ubWludXRlIHx8IDAsXHJcbiAgICAgIDBcclxuICAgICk7XHJcbiAgICB0aGlzLm1heFRpbWUgPSBuZXcgRGF0ZShcclxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICBkYXRlLmdldE1vbnRoKCksXHJcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICB0b2RheURheT8uY2xvc2luZ1RpbWUuZm9ybWF0dGVkSG91ci5zcGxpdCgnICcpWzFdID09ICdwbSdcclxuICAgICAgICA/IHRvZGF5RGF5Py5jbG9zaW5nVGltZT8uaG91ciArIDEyXHJcbiAgICAgICAgOiB0b2RheURheT8uY2xvc2luZ1RpbWU/LmhvdXIgfHwgMTcsXHJcbiAgICAgIHRvZGF5RGF5Py5jbG9zaW5nVGltZT8ubWludXRlIHx8IDAsXHJcbiAgICAgIDBcclxuICAgICk7XHJcbiAgICB0aGlzLnVwZGF0ZVJlcXVlc3RlZFRpbWUoKTtcclxuICB9XHJcbiAgdXBkYXRlUmVxdWVzdGVkVGltZSgpIHtcclxuICAgIHRoaXMubWluVGltZSA9IHRoaXMuZ2V0Um91bmRNaW5UaW1lKHRoaXMubWluVGltZSk7XHJcbiAgICB0aGlzLm1pblRvVGltZSA9IHRoaXMuZ2V0Um91bmRNaW5UaW1lKHRoaXMubWluVG9UaW1lKTtcclxuICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcFRvVGltZSA9IHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcFRvVGltZSA/IHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcFRvVGltZSA6IHRoaXMubWF4VGltZTtcclxuICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcEZyb21UaW1lID0gdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRnJvbVRpbWUgPyB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBGcm9tVGltZSA6IHRoaXMubWluVG9UaW1lO1xyXG4gIH1cclxuXHJcbiAgaXNEaXNhYmxlZCA9IChkYXRlOiBOZ2JEYXRlU3RydWN0KSA9PiB7XHJcbiAgICBjb25zdCBkYXQgPSBuZXcgRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGggLSAxLCBkYXRlLmRheSk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmdldFNwZWNpYWxEYXlzKGRhdGUpID4gLTEgfHxcclxuICAgICAgKHRoaXMud2Vla0RheU9wZW5pbmdMaXN0WzVdLmNsb3NlZCA9PSB0cnVlICYmIGRhdC5nZXREYXkoKSA9PT0gNikgfHxcclxuICAgICAgZGF0LmdldERheSgpID09PSAwXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIGdldFNwZWNpYWxEYXlzKGRhdGU6IE5nYkRhdGVTdHJ1Y3QpIHtcclxuICAgIGNvbnN0IGluZCA9IHRoaXMuc3BlY2lhbERheU9wZW5pbmdMaXN0Py5maW5kSW5kZXgoKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBkYXRlT2JqID0gZWxlbWVudC5mb3JtYXR0ZWREYXRlLnNwbGl0KCcvJyk7XHJcbiAgICAgIHJldHVybiBkYXRlT2JqWzBdID09IGRhdGUuZGF5ICYmIGRhdGVPYmpbMV0gPT0gZGF0ZS5tb250aDtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGluZDtcclxuICB9XHJcblxyXG4gIGdldFJvdW5kTWluVGltZShtaW5UaW1lOiBhbnkpIHtcclxuICAgIHZhciBjb2ZmID0gMTAwMCAqIDYwICogMzA7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoTWF0aC5jZWlsKG1pblRpbWUuZ2V0VGltZSgpIC8gY29mZikgKiBjb2ZmKTtcclxuICB9XHJcblxyXG4gIHRpbWVDbGljayhldmVudDogRXZlbnQsIHRpbWVPYmo6IGFueSkge1xyXG4gICAgaWYgKHRpbWVPYmogJiYgdGltZU9iai5pbnB1dFdyYXBwZXIpIHtcclxuICAgICAgdGltZU9iai5pbnB1dFdyYXBwZXIuY29udGFpbmVyICYmXHJcbiAgICAgICAgdGltZU9iai5pbnB1dFdyYXBwZXIuY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2UtZGlzYWJsZWQnKTtcclxuICAgICAgdGltZU9iai5pbnB1dFdyYXBwZXIuYnV0dG9ucyAmJlxyXG4gICAgICAgIHRpbWVPYmouaW5wdXRXcmFwcGVyLmJ1dHRvbnNbMF0gJiZcclxuICAgICAgICB0aW1lT2JqLmlucHV0V3JhcHBlci5idXR0b25zWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ2UtZGlzYWJsZWQnKTtcclxuICAgICAgdGltZU9iai5zaG93KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0aW1lVG9DbGljayhldmVudDogRXZlbnQsIHRpbWVPYmo6IGFueSkge1xyXG4gICAgaWYgKHRpbWVPYmogJiYgdGltZU9iai5pbnB1dFdyYXBwZXIpIHtcclxuICAgICAgdGltZU9iai5pbnB1dFdyYXBwZXIuY29udGFpbmVyICYmXHJcbiAgICAgICAgdGltZU9iai5pbnB1dFdyYXBwZXIuY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2UtZGlzYWJsZWQnKTtcclxuICAgICAgdGltZU9iai5pbnB1dFdyYXBwZXIuYnV0dG9ucyAmJlxyXG4gICAgICAgIHRpbWVPYmouaW5wdXRXcmFwcGVyLmJ1dHRvbnNbMF0gJiZcclxuICAgICAgICB0aW1lT2JqLmlucHV0V3JhcHBlci5idXR0b25zWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ2UtZGlzYWJsZWQnKTtcclxuICAgICAgdGltZU9iai5zaG93KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTdGF0aWNUaW1lKGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcERhdGUgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgICAgdGhpcy5taW5Ub1RpbWUgPSBuZXcgRGF0ZShcclxuICAgICAgICB0b2RheS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICAgIHRvZGF5LmdldE1vbnRoKCksXHJcbiAgICAgICAgdG9kYXkuZ2V0RGF0ZSgpLFxyXG4gICAgICAgIGhvdXJzLFxyXG4gICAgICAgIG1pbnV0ZXMsXHJcbiAgICAgICAgMFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcERhdGU7XHJcbiAgICAgIHRoaXMubWluVG9UaW1lID0gbmV3IERhdGUoXHJcbiAgICAgICAgZGF0ZS55ZWFyLFxyXG4gICAgICAgIGRhdGUubW9udGgsXHJcbiAgICAgICAgZGF0ZS5kYXksXHJcbiAgICAgICAgaG91cnMsXHJcbiAgICAgICAgbWludXRlcyxcclxuICAgICAgICAwXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1pblRvVGltZSA9IHRoaXMuZ2V0Um91bmRNaW5UaW1lKHRoaXMubWluVG9UaW1lKTtcclxuICB9XHJcbiAgZ2V0TmV3QWRkcmVzcyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm5ld0FkZHJlc3MgPSBldmVudDtcclxuICB9XHJcbiAgcmV2aWV3T3JkZXIoKSB7XHJcbiAgICB0aGlzLmlzU3VibWl0dGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuY2hlY2tvdXRGb3JtLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5jaGVja291dEZvcm0udmFsaWQgJiZcclxuICAgICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRGF0ZSAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwVG9UaW1lICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBEYXRlLmRheSAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRnJvbVRpbWUgIT0gdW5kZWZpbmVkXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMuaXNEZWxpdmVyeUJveCAmJiB0aGlzLnNlbGVjdGVkUmVjZW50QWRkcmVzcz8uaWQgPT0gJycpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXNEZWxpdmVyeUJveCAmJiB0aGlzLnNlbGVjdGVkQWRkcmVzcyA9PSAnYWRkTmV3QWRkcmVzcycgJiYgIXRoaXMubmV3QWRkcmVzcykge1xyXG4gICAgICAgIHRoaXMuZXJyb3JJbmQkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5pbmZvTWVzc2FnZSA9ICdQbGVhc2UgU2VsZWN0IGFuZCBDb25maXJtIEFkZHJlc3MgZnJvbSBNYXAnO1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5jYXJ0SUQgPSB0aGlzLmNhcnRJZDtcclxuICAgICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5QWRkcmVzc1BLID0gdGhpcy5pc0RlbGl2ZXJ5Qm94ID09IGZhbHNlID8gdGhpcy5icmFuY2hBZGRyZXNzPy5pZCA6IHRoaXMuc2VsZWN0ZWRSZWNlbnRBZGRyZXNzPy5pZDtcclxuICAgICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5TWV0aG9kID0gdGhpcy5pc0RlbGl2ZXJ5Qm94ID8gdGhpcy5kZWxpdmVyeU1vZGVzWzBdLmNvZGUgOiB0aGlzLmRlbGl2ZXJ5TW9kZXNbMV0uY29kZTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRBZGRyZXNzID09ICdhZGROZXdBZGRyZXNzJykge1xyXG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5uZXdBZGRyZXNzID0gdGhpcy5uZXdBZGRyZXNzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmNoZWNrb3V0Rm9ybURhdGEubmV3QWRkcmVzcztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuc2VsZWN0ZWRBZGRyZXNzID0gdGhpcy5zZWxlY3RlZEFkZHJlc3M7XHJcbiAgICAgIGxldCBzZXNzaW9uRGF0YSA9IHRoaXMuY2hlY2tvdXRGb3JtRGF0YTtcclxuICAgICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRnJvbVRpbWUgPSB0aGlzLmNvbGxlY3RUaW1lT2JqPy5nZXRUZXh0KCk7XHJcbiAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcFRvVGltZSA9IHRoaXMuY2hlY2tvdXRUb1RpbWU/LmdldFRleHQoKTtcclxuICAgICAgbGV0IGRlbGl2ZXJ5UGlja1VwRGF0ZSA9IHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcERhdGU7XHJcbiAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcERhdGUgPSB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBEYXRlPy5kYXkgKyAnLycgKyB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBEYXRlPy5tb250aCArICcvJyArIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcERhdGU/LnllYXI7XHJcbiAgICAgIGNvbnN0IHJldmlld0RhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY2hlY2tvdXRGb3JtRGF0YSkpO1xyXG4gICAgICB0aGlzLmNoZWNrb3V0U2VydmljZVxyXG4gICAgICAgIC5WYWxpZGF0ZUNoZWNrb3V0RGF0ZVRpbWUodGhpcy5jaGVja291dEZvcm1EYXRhKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5jaGVja291dFJldmlld0FuZE9yZGVyKHJldmlld0RhdGEpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRGF0ZSA9IGRlbGl2ZXJ5UGlja1VwRGF0ZTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgICAgICAgICAgICdjaGVja291dERhdGEnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc2Vzc2lvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvcmV2aWV3LW9yZGVyJztcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5kJC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcERhdGUgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlQaWNrVXBEYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5mb01lc3NhZ2UgPSBkYXRhLm1lc3NhZ2VzWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoZXJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBEYXRlID0gZGVsaXZlcnlQaWNrVXBEYXRlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lcnJvckluZCQubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBEYXRlID0gZGVsaXZlcnlQaWNrVXBEYXRlO1xyXG4gICAgICAgICAgICAgIHRoaXMuaW5mb01lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlc1swXTtcclxuICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRGF0ZSA9IGRlbGl2ZXJ5UGlja1VwRGF0ZTtcclxuICAgICAgICAgICAgdGhpcy5lcnJvckluZCQubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5pbmZvTWVzc2FnZSA9IGVycm9yPy5lcnJvcj8uZXJyb3JzWzBdLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRnJvbVRpbWVDaGFuZ2VkKG9iajogYW55KSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IG9iaj8uZ2V0VGV4dCgpO1xyXG4gICAgbGV0IGhvdXJzID0gTnVtYmVyKHZhbHVlLnNwbGl0KCc6JylbMF0pO1xyXG4gICAgbGV0IG1pbnV0ZXMgPSBOdW1iZXIodmFsdWUuc3BsaXQoJyAnKVswXS5zcGxpdCgnOicpWzFdKTtcclxuICAgIGlmICh2YWx1ZS5zcGxpdCgnICcpWzFdID09ICdQTScpIGhvdXJzID0gaG91cnMgPT0gMTIgPyBob3VycyA6IGhvdXJzICsgMTI7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRpY1RpbWUoaG91cnMgKyAyLCBtaW51dGVzKTtcclxuICAgIGlmICh0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBUb1RpbWUgPD0gdGhpcy5nZXRSb3VuZE1pblRpbWUodGhpcy5taW5Ub1RpbWUpKVxyXG4gICAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBUb1RpbWUgPSB0aGlzLmdldFJvdW5kTWluVGltZSh0aGlzLm1pblRvVGltZSlcclxuICB9XHJcblxyXG4gIGRhdGVjaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGV2ZW50Lm1vbnRoICsgJy8nICsgZXZlbnQuZGF5ICsgJy8nICsgZXZlbnQueWVhcik7XHJcbiAgICB0aGlzLnVwZGF0ZU1pbk1heFRpbWUoZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBhZGROZXdBZGRyZXNzKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEFkZHJlc3MgPSAnYWRkTmV3QWRkcmVzcyc7XHJcbiAgICB0aGlzLnNlbGVjdGVkUmVjZW50QWRkcmVzcyA9ICcnO1xyXG5cclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJsb2FkaW5nXCIgKm5nSWY9XCJzaG93V2FpdEN1cnNvciB8IGFzeW5jIFwiPkxvYWRpbmcmIzgyMzA7PC9kaXY+XHJcbjxhcHAtY3VzdG9tLWJyZWFkY3J1bSBbY3VzdG9tQ3J1bWJEYXRhXT1cImJyZWFkY3J1bWJEYXRhXCIgY2xhc3M9XCJwcm9kdWN0cy1icmVhZGN1bXNcIj48L2FwcC1jdXN0b20tYnJlYWRjcnVtPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyIG1iLTEyMFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRvcC1jaGVja291dCBjb2wtc20tOVwiPlxyXG4gICAgICAgIDxoMSBjbGFzcz1cInBhZ2VUaXRsZVwiPnt7cGFnZVRpdGxlfX08L2gxPlxyXG4gICAgICAgIDxwIGNsYXNzPVwiY2hlY2tvdXQtaGVhZGVyLXBhcmFncmFwaFwiPnt7Y2hlY2tvdXRIZWFkZXJDb250ZW50fX08L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgY29udGVudC1yb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1sZy03IG9mZnNldC1sZy0zXCI+XHJcbiAgICAgICAgICAgIDxmb3JtICNjaGVja291dEZvcm09XCJuZ0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1oZWFkZXIgY2xhc3M9XCJsaW5lLXN0ZXAtbmF2aWdhdGlvbiBmaXJzdC1zdGVwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgY3VzLXRpdGxlLW1hcmdpbi1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz1cImZvbnQtYm9sZFwiPiA8c3BhbiBjbGFzcz1cImNhcmQtbnVtYmVyXCI+IDEgPC9zcGFuPiBDaG9vc2UgWW91ciBEZWxpdmVyeSBNZXRob2Q8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJjdXN0b20tbWF0LWNhcmQgbGluZS1zdGVwLW5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGFpbmVyIGQtc20taW5saW5lLWZsZXggZC1tZC1mbGV4IGFsaWduLWNvbnRlbnQtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWF0bGZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJib3gtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImlzRGVsaXZlcnlCb3ggPSB0cnVlO1wiIGNsYXNzPVwiZGVsaXZlcnktYm94IGQtc20taW5saW5lLWZsZXggYWxpZ24taXRlbXMtc20tY2VudGVyIGp1c3RpZnktY29udGVudC1zbS1hcm91bmRcIiBbbmdDbGFzc109XCJpc0RlbGl2ZXJ5Qm94ID8gQUNUSVZFX0lURU0gOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImRlbGl2ZXJ5LWltZ1wiIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZGVsaXZlcnkuc3ZnXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJpc0RlbGl2ZXJ5Qm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImNoZWNrLXNxdWFyZS1kZWxcIiBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2NoZWNrLXNxdWFyZS5zdmdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxpdmVyeS1oZWFkaW5nLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC10aXRsZT57e2RlbGl2ZXJ5TW9kZXNbMF0/Lm5hbWUgfHwgJ0RlbGl2ZXJ5J319IDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtc3VidGl0bGU+IHt7ZGVsaXZlcnlNb2Rlc1swXT8uZGVzY3JpcHRpb24gfHwgJ1dlIGRlbGl2ZXIgcmlnaHQgdG8geW91ciBkb29yLid9fSA8L21hdC1jYXJkLXN1YnRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1hdHJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJib3gtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImlzRGVsaXZlcnlCb3ggPSBmYWxzZTtcIiBjbGFzcz1cImNvbGxlY3QtYm94IGQtc20taW5saW5lLWZsZXggYWxpZ24taXRlbXMtc20tY2VudGVyIGp1c3RpZnktY29udGVudC1zbS1hcm91bmRcIiBbbmdDbGFzc109XCJpc0RlbGl2ZXJ5Qm94ID8gJycgOiBBQ1RJVkVfSVRFTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInBpY2t1cC1pbWdcIiBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL3BpY2t1cC5zdmdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFpc0RlbGl2ZXJ5Qm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImNoZWNrLXNxdWFyZS1jY1wiIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvY2hlY2stc3F1YXJlLnN2Z1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LWhlYWRpbmctdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlPiB7e2RlbGl2ZXJ5TW9kZXNbMV0/Lm5hbWUgfHwgJ0NsaWNrICYgQ29sbGVjdCd9fTwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtc3VidGl0bGU+IHt7ZGVsaXZlcnlNb2Rlc1sxXT8uZGVzY3JpcHRpb24gfHwgJ0NvbGxlY3QgZnJvbSB5b3VyIG5lYXJlc3QgYnJhbmNoLicgfX08L21hdC1jYXJkLXN1YnRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWhlYWRlciBjbGFzcz1cImxpbmUtc3RlcC1uYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgY3VzLXRpdGxlLW1hcmdpbi1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz1cImZvbnQtYm9sZFwiPiA8c3BhbiBjbGFzcz1cImNhcmQtbnVtYmVyXCI+IDIgPC9zcGFuPiBQdXJjaGFzZSBPcmRlciBOdW1iZXI8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJjdXN0b20tbWF0LWNhcmQgbGluZS1zdGVwLW5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udGFpbmVyIGZvci1tb2IgY29sLXNtLTYgcGwtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlB1cmNoYXNlIE9yZGVyIE51bWJlciAgPHNwYW4gY2xhc3M9XCJtYXJrZXJcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgI3BvTnVtYmVyPVwibmdNb2RlbFwiIG5hbWU9XCJwb051bWJlclwiIGlkPVwicG9OdW1iZXJcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjE1XCIgWyhuZ01vZGVsKV09XCJjaGVja291dEZvcm1EYXRhLnBvTnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgam9ib3JkZXItaW5wdXRcIiByZXF1aXJlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiaXNTdWJtaXR0ZWRcIiBbaGlkZGVuXT1cInBvTnVtYmVyLnZhbGlkXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdXJjaGFzZSBPcmRlciBOdW1iZXIgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWhlYWRlciBjbGFzcz1cImxpbmUtc3RlcC1uYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgY3VzLXRpdGxlLW1hcmdpbi1jYXJkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGUgY2xhc3M9XCJmb250LWJvbGRcIj4gPHNwYW4gY2xhc3M9XCJjYXJkLW51bWJlclwiPiAzIDwvc3Bhbj4ge3tpc0RlbGl2ZXJ5Qm94ID8gJ0RlbGl2ZXJ5JzogJ1BpY2t1cCAnfX0gRGF0ZSBhbmQgVGltZTwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJjdXN0b20tbWF0LWNhcmQgbGluZS1zdGVwLW5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udGFpbmVyIGZvci1tb2IgY29sLXNtLTYgcGwtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImRhdGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5EYXRlIDxzcGFuIGNsYXNzPVwibWFya2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJuZ2ItZGF0ZS1mb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2ZpcnN0RGF5T2ZXZWVrXT1cIjdcIiAjZGVsaXZlcnlQaWNrVXBEYXRlPVwibmdNb2RlbFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGN1cy13aWR0aCBkYXRlLWlucHV0XCIgWyhuZ01vZGVsKV09XCJjaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRGF0ZVwiIGlkPVwiZGF0ZVwiIG5hbWU9XCJ0eHREYXRlXCIgdGFiaW5kZXg9XCItMVwiIG9ua2V5ZG93bj1cInJldHVybiBmYWxzZVwiIHBsYWNlaG9sZGVyPVwiREQtTU0tWVlZWVwiIG5nYkRhdGVwaWNrZXIgI25nRGF0ZT1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cIm5nYk1pbkRhdGVcIiAoZGF0ZVNlbGVjdCk9XCJkYXRlY2hhbmdlKCRldmVudClcIiBjb250YWluZXI9XCJib2R5XCIgcmVxdWlyZWQgW21hcmtEaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmQgY3VzdG9tLWRhdGUtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgY2FsZW5kYXJcIiAoY2xpY2spPVwibmdEYXRlLnRvZ2dsZSgpXCIgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJpc1N1Ym1pdHRlZCAmJiAhY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcERhdGVcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGUgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250YWluZXIgZm9yLW1vYiBjb2wtc20tNiBwbC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidGltZVwiIGNsYXNzPVwiZm9ybS1sYWJlbCBwdC00XCI+VGltZSA8c3BhbiBjbGFzcz1cIm1hcmtlclwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWpvYlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZGl2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJqb2JpbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWpzLXRpbWVwaWNrZXIgZm9ybWF0PVwiaGg6bW0gYVwiIGlkPSd0aW1lcGlja2VyJyAgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0aW1lQ2xpY2soJGV2ZW50LCBjb2xsZWN0VGltZU9iailcIiAgI2NvbGxlY3RUaW1lT2JqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT0nY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcEZyb21UaW1lJyBbbWluXT1cIm1pblRpbWVcIiBbYWxsb3dFZGl0XT1cImZhbHNlXCIgW21heF09XCJmcm9tTWF4VGltZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Gcm9tVGltZUNoYW5nZWQoY29sbGVjdFRpbWVPYmopXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZWpzLXRpbWVwaWNrZXI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidGltZVwiIGNsYXNzPVwiZm9ybS1sYWJlbCBwLTNcIj50bzwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1qb2JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGRpdlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiam9iaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVqcy10aW1lcGlja2VyIGZvcm1hdD1cImhoOm1tIGFcIiBpZD0ndG90VG1lcGlja2VyJyAgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0aW1lQ2xpY2soJGV2ZW50LCBjaGVja291dFRvVGltZSlcIiAgI2NoZWNrb3V0VG9UaW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT0nY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcFRvVGltZScgW21pbl09XCJtaW5Ub1RpbWVcIiBbYWxsb3dFZGl0XT1cImZhbHNlXCIgW21heF09XCJtYXhUaW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9lanMtdGltZXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxwICpuZ0lmPVwiaXNTdWJtaXR0ZWRcIiBbaGlkZGVuXT1cImNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBGcm9tVGltZSAhPSB1bmRlZmluZWRcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb20gdGltZSBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiaXNTdWJtaXR0ZWRcIiBbaGlkZGVuXT1cImNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBUb1RpbWUgIT0gdW5kZWZpbmVkXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyB0aW1lIGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtaGVhZGVyIGNsYXNzPVwibGluZS1zdGVwLW5hdmlnYXRpb25cIiAqbmdJZj1cIiFpc0RlbGl2ZXJ5Qm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgY3VzLXRpdGxlLW1hcmdpbi1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz1cImZvbnQtYm9sZFwiPiA8c3BhbiBjbGFzcz1cImNhcmQtbnVtYmVyXCI+IDQgPC9zcGFuPiBQaWNrdXAgTG9jYXRpb248L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQgKm5nSWY9XCIhaXNEZWxpdmVyeUJveFwiIGNsYXNzPVwiY3VzdG9tLW1hdC1jYXJkIGxpbmUtc3RlcC1uYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmFuY2gtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGUgY2xhc3M9J2FkZHJlc3MtdGl0bGUnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YnJhbmNoQWRkcmVzcz8udG93bn19PC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1zdWJ0aXRsZT4ge3ticmFuY2hBZGRyZXNzPy5mb3JtYXR0ZWRBZGRyZXNzfX08L21hdC1jYXJkLXN1YnRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXN1YnRpdGxlPiA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWxcIj5QaG9uZTogPC9zcGFuPiB7e2JyYW5jaEFkZHJlc3M/LnBob25lfX08L21hdC1jYXJkLXN1YnRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyYW5jaC1ob3VyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz0nYWRkcmVzcy10aXRsZSc+T3BlbmluZyBIb3VyczwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXN1YnRpdGxlICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRlbXBCcmFuY2hMaXN0RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvdXItbGFiZWwtbGVmdFwiPnt7IGRhdGE/LndlZWtEYXkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YT8ub3BlbmluZ1RpbWU/LmZvcm1hdHRlZEhvdXIgfHwgZGF0YT8uY2xvc2luZ1RpbWU/LmZvcm1hdHRlZEhvdXJcIj57e2RhdGE/Lm9wZW5pbmdUaW1lPy5mb3JtYXR0ZWRIb3VyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSB7e2RhdGE/LmNsb3NpbmdUaW1lPy5mb3JtYXR0ZWRIb3VyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiIWRhdGE/Lm9wZW5pbmdUaW1lPy5mb3JtYXR0ZWRIb3VyICYmICFkYXRhPy5jbG9zaW5nVGltZT8uZm9ybWF0dGVkSG91clwiPkNsb3NlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLXN1YnRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtaGVhZGVyIGNsYXNzPVwibGluZS1zdGVwLW5hdmlnYXRpb25cIiAqbmdJZj1cImlzRGVsaXZlcnlCb3hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBjdXMtdGl0bGUtbWFyZ2luLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlIGNsYXNzPVwiZm9udC1ib2xkXCI+IDxzcGFuIGNsYXNzPVwiY2FyZC1udW1iZXJcIj4gNCA8L3NwYW4+IHt7aXNEZWxpdmVyeUJveCA/ICdTZWxlY3QgeW91ciBEZWxpdmVyeSBBZGRyZXNzIFByZWZlcmVuY2UnOiAnUGlja3VwIExvY2F0aW9uICd9fVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkIFtoaWRkZW5dPVwiIWlzRGVsaXZlcnlCb3hcIiBjbGFzcz1cImN1c3RvbS1tYXQtY2FyZCBsaW5lLXN0ZXAtbmF2aWdhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1hdC1pbm5lci1jb250YWluZXIgcmFkaW8tYnRuLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1yYWRpby1ncm91cCBhcmlhLWxhYmVsPVwiU2VsZWN0IGFuIG9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0lmPVwiZGVmYXVsdEFjY291bnRBZGRyZXNzPy5mb3JtYXR0ZWRBZGRyZXNzIHx8IChkZWxpdmVyeUFkZHJlc3NlcyAmJiBkZWxpdmVyeUFkZHJlc3Nlcy5sZW5ndGggPiAwKVwiIFtjaGVja2VkXT1cInNlbGVjdGVkQWRkcmVzcyA9PSAnYWNjb3VudEFkZHJlc3MnXCIgKGNoYW5nZSk9XCJzZWxlY3RlZEFkZHJlc3MgPSAnYWNjb3VudEFkZHJlc3MnO3NlbGVjdGVkUmVjZW50QWRkcmVzcz0gZGVsaXZlcnlBZGRyZXNzZXNbMF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiJ2FjY291bnRBZGRyZXNzJ1wiIGNsYXNzPVwicGwtMCBwci1tZC00XCI+QWNjb3VudCBBZGRyZXNzPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0lmPVwiZGVsaXZlcnlBZGRyZXNzZXMgJiYgcmVjZW50QWRkcmVzcy5sZW5ndGg+IDBcIiBbY2hlY2tlZF09XCJzZWxlY3RlZEFkZHJlc3MgPT0gJ3JlY2VudEFkZHJlc3MnXCIgKGNoYW5nZSk9XCJzZWxlY3RlZEFkZHJlc3MgPSAncmVjZW50QWRkcmVzcyc7IHNlbGVjdGVkUmVjZW50QWRkcmVzcz0gcmVjZW50QWRkcmVzc1swXVwiIFt2YWx1ZV09XCIncmVjZW50QWRkcmVzcydcIiBjbGFzcz1cInBsLTAgcHItbWQtNFwiPlJlY2VudCBBZGRyZXNzPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIFtjaGVja2VkXT1cInNlbGVjdGVkQWRkcmVzcyA9PSAnYWRkTmV3QWRkcmVzcydcIiAoY2hhbmdlKT1cImFkZE5ld0FkZHJlc3MoKVwiIFt2YWx1ZV09XCInYWRkTmV3QWRkcmVzcydcIj5BZGQgTmV3IEFkZHJlc3M8L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGFkZHJlc3MtaW5uZXItY29udGFpbmVyXCIgKm5nSWY9XCJzZWxlY3RlZEFkZHJlc3MgPT0gJ2FjY291bnRBZGRyZXNzJyAmJiBkZWxpdmVyeUFkZHJlc3Nlcy5sZW5ndGggPiAwIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiIXNob3dNb3JlQWRkcmVzc2VzXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q29uZmlybWVkIERlbGl2ZXJ5IEFkZHJlc3MgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNob3dNb3JlQWRkcmVzc2VzXCIgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXAtc2VsZWN0ZWQtYWRkcmVzc1wiIGlkPVwiYWRkcmVzc1wiIHJlcXVpcmVkICNpc0FkZHJTZWxlY3RlZE9yTm90PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RlZmF1bHRBY2NvdW50QWRkcmVzcz8uZm9ybWF0dGVkQWRkcmVzc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93TW9yZUFkZHJlc3Nlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgYXJpYS1sYWJlbGxlZGJ5PVwiZXhhbXBsZS1yYWRpby1ncm91cC1sYWJlbFwiIGNsYXNzPVwiZXhhbXBsZS1yYWRpby1ncm91cCByYWRpby1idG4tc2l6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cInB5LTFcIiBbY2hlY2tlZF09XCJzZWxlY3RlZFJlY2VudEFkZHJlc3M/LmlkID09IGFkZHJlc3MuaWRcIiAqbmdGb3I9XCJsZXQgYWRkcmVzcyBvZiBkZWxpdmVyeUFkZHJlc3Nlc1wiIFt2YWx1ZV09XCJhZGRyZXNzLmlkXCIgKGNoYW5nZSk9XCJzZWxlY3RlZFJlY2VudEFkZHJlc3M9YWRkcmVzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3thZGRyZXNzLmZvcm1hdHRlZEFkZHJlc3N9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGFkZHJlc3MtaW5uZXItY29udGFpbmVyXCIgKm5nSWY9XCJzZWxlY3RlZEFkZHJlc3MgPT0gJ3JlY2VudEFkZHJlc3MnICYmIHJlY2VudEFkZHJlc3MubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1yYWRpby1ncm91cCBhcmlhLWxhYmVsbGVkYnk9XCJleGFtcGxlLXJhZGlvLWdyb3VwLWxhYmVsXCIgY2xhc3M9XCJleGFtcGxlLXJhZGlvLWdyb3VwIHJhZGlvLWJ0bi1zaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJweS0xXCIgW2NoZWNrZWRdPVwic2VsZWN0ZWRSZWNlbnRBZGRyZXNzPy5pZCA9PSBhZGRyZXNzLmlkXCIgKm5nRm9yPVwibGV0IGFkZHJlc3Mgb2YgcmVjZW50QWRkcmVzcyBcIiBbdmFsdWVdPVwiYWRkcmVzcy5pZFwiIChjaGFuZ2UpPVwic2VsZWN0ZWRSZWNlbnRBZGRyZXNzPWFkZHJlc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3thZGRyZXNzLmZvcm1hdHRlZEFkZHJlc3N9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkQWRkcmVzcyA9PSAnYWRkTmV3QWRkcmVzcydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTWFwIERpdiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYWRkLW5ldy1hZGRyZXNzIFtjb25maXJtZWRBZGRyZXNzXT1cImNvbmZpcm1lZE5ld0FkZHJlc3NcIiAodXBkYXRlTmV3QWRkcmVzcyk9XCJnZXROZXdBZGRyZXNzKCRldmVudClcIj48L2FwcC1hZGQtbmV3LWFkZHJlc3M+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtaGVhZGVyIGNsYXNzPVwibGluZS1zdGVwLW5hdmlnYXRpb24gbGFzdC1zdGVwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgY3VzLXRpdGxlLW1hcmdpbi1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1udW1iZXJcIj4gNSA8L3NwYW4+IHt7aXNEZWxpdmVyeUJveCA/ICdTaXRlIERlbGl2ZXJ5IFJlcXVpcmVtZW50cyc6ICdDb21tZW50cyAnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mby1pY29uIHBsLTJcIiBbbmdiVG9vbHRpcF09XCJpc0RlbGl2ZXJ5Qm94ID8gc2l0ZURlbGl2ZXJ5UmVxdWlyZW1lbnRzIDogY2xpY2thbmRDb2xsZWN0Q29tbWVudHNcIiBwbGFjZW1lbnQ9XCJib3R0b21cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cImN1c3RvbS1tYXQtY2FyZCBsaW5lLXN0ZXAtbmF2aWdhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBOb3Rlc1wiIHJvd3M9XCIzXCIgbmFtZT1cIkluc3RydWN0aW9uc1wiIGlkPVwiSW5zdHJ1Y3Rpb25zXCIgW3BsYWNlaG9sZGVyXT1cImlzRGVsaXZlcnlCb3ggPyAnUHJvdmlkZSBhbnkgc3BlY2lmaWMgZGVsaXZlcnkgaW5zdHJ1Y3Rpb25zJzonUHJvdmlkZSBhbnkgc3BlY2lmaWMgcGlja3VwIGluc3RydWN0aW9ucydcIiBtYXhsZW5ndGg9XCIyNTBcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cImNhcnQtcGFnZS1mb290ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LWZvb3RlciByb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCIgZmxvYXQtbWQtcmlnaHQgbS0wIGNoZWNrb3V0LWZvb3Rlci1idG5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgdGl0bGU9XCJCYWNrIHRvIENhcnRcIiBocmVmPVwiL2NhcnRcIiBjbGFzcz1cIm1yLTMgZm9udC13ZWlnaHQtYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvaW9uaWMtYXJyb3ctYmFjay5zdmdcIiBhbHQ9XCJiYWNrLWFycm93XCIgY2xhc3M9XCJtci0yXCIgLz4gQkFDS1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmV2aWV3T3JkZXIoKVwiIGNsYXNzPVwiYnRuIHByaW1hcnktYnV0dG9uXCI+UmV2aWV3IEFuZCBPcmRlcjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBjb2wtc20tMTIgYWxlcnQgYWxlcnQtZGFuZ2VyIGp1c3RpZnktY29udGVudC1zdGFydCBtdC0zXCIgcm9sZT1cImFsZXJ0XCIgKm5nSWY9XCJlcnJvckluZCQgfCBhc3luY1wiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm1yLTNcIiBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Vycm9yaWNvbi5zdmdcIiBhbHQ9XCJhbGVydFwiPiB7e2luZm9NZXNzYWdlfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
356
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNoZWNrb3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvY2hlY2tvdXQvY3VzdG9tLWNoZWNrb3V0L2N1c3RvbS1jaGVja291dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL2NoZWNrb3V0L2N1c3RvbS1jaGVja291dC9jdXN0b20tY2hlY2tvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFJVCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7OztBQVN2QyxNQUFNLE9BQU8sdUJBQXVCO0lBOENsQyxZQUNTLGVBQXNDLEVBQ3JDLFVBQXNCLEVBQ3ZCLEVBQXFCLEVBQ3JCLFFBQXFCLEVBQ3JCLGlCQUFvQztRQUpwQyxvQkFBZSxHQUFmLGVBQWUsQ0FBdUI7UUFDckMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN2QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFsRDdDLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNoRCxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGdCQUFXLEdBQVcsWUFBWSxDQUFDO1FBRW5DLG9CQUFlLEdBQVcsZ0JBQWdCLENBQUM7UUFHM0MsY0FBUyxHQUFHLElBQUksSUFB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QUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNyRixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7SUFFbEMsQ0FBQzs7cUhBM1lVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLHdkQ25CcEMsaWlrQkEyT0E7NEZEeE5hLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixXQUFXLEVBQUUsa0NBQWtDO29CQUMvQyxTQUFTLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQztpQkFDaEQ7K05BdUI0QixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBT3VCLGNBQWM7c0JBQTdELFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNFLGNBQWM7c0JBQTdELFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNNLFNBQVM7c0JBQTVELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkNhbGVuZGFyLCBOZ2JEYXRlU3RydWN0IH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBY3RpdmVDYXJ0U2VydmljZSB9IGZyb20gJ0BzcGFydGFjdXMvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDdXN0b21DaGVja291dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGVja291dC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IENtc1NlcnZpY2UgfSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tY2hlY2tvdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tY2hlY2tvdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2N1c3RvbS1jaGVja291dC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ2hlY2tvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGVycm9ySW5kJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGluZm9NZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICBwcmV2aW91c1VybDogc3RyaW5nID0gJyc7XHJcbiAgY2FydElkOiBzdHJpbmcgPSAnJztcclxuICBpc0RlbGl2ZXJ5Qm94OiBib29sZWFuID0gdHJ1ZTtcclxuICBBQ1RJVkVfSVRFTTogc3RyaW5nID0gJ2FjdGl2ZS1ib3gnO1xyXG4gIG5nYk1pbkRhdGU6IGFueTtcclxuICBzZWxlY3RlZEFkZHJlc3M6IHN0cmluZyA9ICdhY2NvdW50QWRkcmVzcyc7XHJcbiAgcHVibGljIG1heFRpbWU6IGFueTtcclxuICBwdWJsaWMgZnJvbU1heFRpbWU6IGFueTtcclxuICBjY21pblRpbWUgPSBuZXcgRGF0ZSgyMDIyLCAwLCAyOCwgNiwgMCwgMCk7XHJcbiAgY2NtYXhUaW1lID0gbmV3IERhdGUoMjAyMiwgMCwgMjgsIDIyLCAwLCAwKTtcclxuICBwdWJsaWMgbWluVGltZTogYW55O1xyXG4gIHB1YmxpYyBtaW5Ub1RpbWU6IGFueTtcclxuICBjaGVja291dEZvcm1EYXRhOiBhbnkgPSB7fTtcclxuICBpc1N1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0YXJ0VGltZTogYW55ID0gW107XHJcbiAgcmVjZW50QWRkcmVzczogYW55ID0gW107XHJcbiAgZGVsaXZlclRpbWU6IGFueTtcclxuICBkZWZhdWx0QWNjb3VudEFkZHJlc3M6IGFueTtcclxuICBicmFuY2hBZGRyZXNzOiBhbnk7XHJcbiAgQFZpZXdDaGlsZCgnY2hlY2tvdXRGb3JtJykgY2hlY2tvdXRGb3JtOiBhbnk7XHJcbiAgc2VsZWN0ZWRSZWNlbnRBZGRyZXNzOiBhbnkgPSB7fTtcclxuICB0ZW1wQnJhbmNoTGlzdERhdGE6IGFueSA9IFtdO1xyXG4gIHB1YmxpYyBkZWxpdmVyeURpc2FibGVEYXRlczogYW55O1xyXG4gIGNvbGxlY3RUaW1lOiBhbnk7XHJcbiAgbWluTGVhZFRpbWU6IG51bWJlciA9IDM7XHJcbiAgcmVzcG9uc2VEYXRhOiBhbnk7XHJcbiAgQFZpZXdDaGlsZCgnY2hlY2tvdXRUb1RpbWUnLCB7IHN0YXRpYzogZmFsc2UgfSkgY2hlY2tvdXRUb1RpbWU6IGFueTtcclxuICBAVmlld0NoaWxkKCdjb2xsZWN0VGltZU9iaicsIHsgc3RhdGljOiBmYWxzZSB9KSBjb2xsZWN0VGltZU9iajogYW55O1xyXG4gIEBWaWV3Q2hpbGQoJ21hcFZpZXdOb2RlJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBtYXBWaWV3RWwhOiBFbGVtZW50UmVmO1xyXG4gIHNwZWNpYWxEYXlPcGVuaW5nTGlzdDogYW55ID0gW107XHJcbiAgd2Vla0RheU9wZW5pbmdMaXN0OiBhbnkgPSBbXTtcclxuICBkZWxpdmVyeUFkZHJlc3NlczogYW55ID0gW107XHJcbiAgc2hvd01vcmVBZGRyZXNzZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaXRlRGVsaXZlcnlSZXF1aXJlbWVudHM6IGFueTtcclxuICBjbGlja2FuZENvbGxlY3RDb21tZW50czogYW55O1xyXG4gIGNoZWNrb3V0SGVhZGVyQ29udGVudDogYW55O1xyXG4gIGJyZWFkY3J1bWJEYXRhOiBhbnkgPSBbXTtcclxuICBkZWxpdmVyeU1vZGVzOiBhbnkgPSBbXTtcclxuICB2aWV3OiBhbnk7XHJcbiAgcGFnZVRpdGxlOiBhbnk7XHJcbiAgbmV3QWRkcmVzczogYW55O1xyXG4gIGNvbmZpcm1lZE5ld0FkZHJlc3M6IHN0cmluZyA9ICcnO1xyXG4gIHNob3dXYWl0Q3Vyc29yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY2hlY2tvdXRTZXJ2aWNlOiBDdXN0b21DaGVja291dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNtc1NlcnZpY2U6IENtc1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNhbGVuZGFyOiBOZ2JDYWxlbmRhcixcclxuICAgIHB1YmxpYyBhY3RpdmVDYXJ0U2VydmljZTogQWN0aXZlQ2FydFNlcnZpY2VcclxuICApIHsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlLmdldEN1cnJlbnRQYWdlKCkuc3Vic2NyaWJlKChwYWdhZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucGFnZVRpdGxlID0gcGFnYWRhdGEudGl0bGU7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5icmVhZGNydW1iRGF0YS5wdXNoKHsgdXJsOiAnLycsIG5hbWU6ICdIb21lJyB9KTtcclxuICAgIHRoaXMuYnJlYWRjcnVtYkRhdGEucHVzaCh7IHVybDogJy9jYXJ0JywgbmFtZTogJ0NhcnQnIH0pO1xyXG4gICAgdGhpcy5icmVhZGNydW1iRGF0YS5wdXNoKHsgdXJsOiAnL2NoZWNrb3V0JywgbmFtZTogJ0NoZWNrb3V0JyB9KTtcclxuICAgIGxldCBjYXJ0OiBhbnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc3BhcnRhY3Vz4pq/ZGltb25kLXNwYeKav2NhcnQnKTtcclxuICAgIHRoaXMuY2FydElkID0gSlNPTi5wYXJzZShjYXJ0KT8uYWN0aXZlO1xyXG4gICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRGF0ZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcFRvVGltZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcEZyb21UaW1lID0gdW5kZWZpbmVkO1xyXG4gICAgY29uc3QgY2hlY2tvdXREYXRhOiBhbnkgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjaGVja291dERhdGEnKTtcclxuICAgIGlmIChjaGVja291dERhdGEgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEgPSBKU09OLnBhcnNlKGNoZWNrb3V0RGF0YSk7XHJcbiAgICAgIHRoaXMuaXNEZWxpdmVyeUJveCA9IHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeU1ldGhvZCA9PSAnY2xpY2tBbmRDb2xsZWN0JyA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIH1cclxuICAgIHZhciBsb2NBZGRyZXNzOiBhbnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnJhbmNoRGV0YWlscycpO1xyXG4gICAgdGhpcy5icmFuY2hBZGRyZXNzID0gSlNPTi5wYXJzZShsb2NBZGRyZXNzKTtcclxuXHJcbiAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXREZWxpdmVyeU1vZGVzKHRoaXMuY2FydElkKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmRlbGl2ZXJ5TW9kZXMgPSBkYXRhLmRlbGl2ZXJ5TW9kZXM7XHJcbiAgICAgICAgdGhpcy5kZWxpdmVyeU1vZGVzLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiAoYS5jb2RlID4gYi5jb2RlID8gLTEgOiAxKSlcclxuICAgICAgfVxyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIHRoaXMuZGVsaXZlcnlNb2RlcyA9IFt7IGNvZGU6ICdzdGFuZGFyZF9kZWxpdmVyeScgfSwgeyBjb2RlOiAnY2xpY2tBbmRDb2xsZWN0JyB9XVxyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldEFkZHJlc3NJbmZvKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0QWNjb3VudEFkZHJlc3MgPSBkYXRhLmFkZHJlc3Nlc1swXTtcclxuICAgICAgICB0aGlzLnJlY2VudEFkZHJlc3MgPSBkYXRhLnJlY2VudEFkZHJlc3NlcztcclxuICAgICAgICB0aGlzLnNob3dNb3JlQWRkcmVzc2VzID0gZGF0YS5hZGRyZXNzZXMgJiYgZGF0YS5hZGRyZXNzZXMubGVuZ3RoID4gMSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLmRlbGl2ZXJ5QWRkcmVzc2VzID0gZGF0YS5hZGRyZXNzZXMgJiYgZGF0YS5hZGRyZXNzZXMubGVuZ3RoID4gMCA/IGRhdGEuYWRkcmVzc2VzIDogW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFkZHJlc3MgPSB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuc2VsZWN0ZWRBZGRyZXNzICE9IHVuZGVmaW5lZCA/IHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5zZWxlY3RlZEFkZHJlc3MgOiAnYWNjb3VudEFkZHJlc3MnO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSZWNlbnRBZGRyZXNzLmlkID0gdGhpcy5jaGVja291dEZvcm1EYXRhICYmIHRoaXMuY2hlY2tvdXRGb3JtRGF0YT8uZGVsaXZlcnlBZGRyZXNzUEsgPyB0aGlzLmNoZWNrb3V0Rm9ybURhdGE/LmRlbGl2ZXJ5QWRkcmVzc1BLIDogdGhpcy5kZWZhdWx0QWNjb3VudEFkZHJlc3M/LmlkO1xyXG4gICAgICAgIHRoaXMuY29uZmlybWVkTmV3QWRkcmVzcyA9IHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5zZWxlY3RlZEFkZHJlc3MgIT0gdW5kZWZpbmVkICYmIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5zZWxlY3RlZEFkZHJlc3MgPT0gJ2FkZE5ld0FkZHJlc3MnID8gdGhpcy5jaGVja291dEZvcm1EYXRhLm5ld0FkZHJlc3M/LnNlbGVjdGVkQWRkcmVzcyA6ICcnO1xyXG4gICAgICAgIHRoaXMubmV3QWRkcmVzcyA9IHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5zZWxlY3RlZEFkZHJlc3MgIT0gdW5kZWZpbmVkICYmIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5zZWxlY3RlZEFkZHJlc3MgPT0gJ2FkZE5ld0FkZHJlc3MnID8gdGhpcy5jaGVja291dEZvcm1EYXRhLm5ld0FkZHJlc3MgOiAnJztcclxuICAgICAgICBpZiAodGhpcy5kZWxpdmVyeUFkZHJlc3Nlcy5sZW5ndGggPT0gMCAmJiB0aGlzLnNlbGVjdGVkQWRkcmVzcyAhPSAnYWRkTmV3QWRkcmVzcycpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBZGRyZXNzID0gJ3JlY2VudEFkZHJlc3MnO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJlY2VudEFkZHJlc3MgPSB0aGlzLnJlY2VudEFkZHJlc3NbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5kZWZhdWx0QWNjb3VudEFkZHJlc3MgJiYgdGhpcy5kZWxpdmVyeUFkZHJlc3Nlcy5sZW5ndGggPCAxICYmIHRoaXMucmVjZW50QWRkcmVzcy5sZW5ndGggPCAxKSB0aGlzLnNlbGVjdGVkQWRkcmVzcyA9ICdhZGROZXdBZGRyZXNzJztcclxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldENoZWNrT3V0VmFsdWVzKHRoaXMuY2FydElkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMud2Vla0RheU9wZW5pbmdMaXN0ID0gdGhpcy5pc0RlbGl2ZXJ5Qm94XHJcbiAgICAgICAgICAgID8gZGF0YS5wb2ludE9mU2VydmljZT8uZGVsaXZlcnlTY2hlZHVsZT8ud2Vla0RheU9wZW5pbmdMaXN0XHJcbiAgICAgICAgICAgIDogZGF0YS5wb2ludE9mU2VydmljZT8ucGlja3VwU2NoZWR1bGU/LndlZWtEYXlPcGVuaW5nTGlzdDtcclxuICAgICAgICAgIHRoaXMuc3BlY2lhbERheU9wZW5pbmdMaXN0ID0gdGhpcy5pc0RlbGl2ZXJ5Qm94XHJcbiAgICAgICAgICAgID8gZGF0YS5wb2ludE9mU2VydmljZT8uZGVsaXZlcnlTY2hlZHVsZT8uc3BlY2lhbERheU9wZW5pbmdMaXN0XHJcbiAgICAgICAgICAgIDogZGF0YS5wb2ludE9mU2VydmljZT8ucGlja3VwU2NoZWR1bGU/LnNwZWNpYWxEYXlPcGVuaW5nTGlzdDtcclxuICAgICAgICAgIHRoaXMuZ2V0RGV0YWlsUmVzcG9uc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICAvL2NvZGUgZm9yIERlbGl2ZXJ5IFNpdGUgRGVsaXZlcnkgUmVxdWlyZW1lbnRzIHRvb2x0aXBcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YSgnU2l0ZURlbGl2ZXJ5UmVxdWlyZW1lbnRzQ29tcG9uZW50JylcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuc2l0ZURlbGl2ZXJ5UmVxdWlyZW1lbnRzID0gZGF0YT8uY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgLy9jb2RlIGZvciBDbGljayBBbmQgQ29sbGVjdCBDb21tZW50cyB0b29sdGlwXHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoJ0NvbW1lbnRzQ2xpY2tBbmRDb2xsZWN0Q29tcG9uZW50JylcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuY2xpY2thbmRDb2xsZWN0Q29tbWVudHMgPSBkYXRhPy5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAvL2NvZGUgZm9yIGhlYWRlciBjb250ZW50XHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoJ2NoZWNrb3V0SGVhZGVyQ29udGVudENvbXBvbmVudCcpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrb3V0SGVhZGVyQ29udGVudCA9IGRhdGE/LmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBnZXREZXRhaWxSZXNwb25zZSgpIHtcclxuICAgIHRoaXMudGVtcEJyYW5jaExpc3REYXRhID0gdGhpcy5yZXNwb25zZURhdGE/LnBvaW50T2ZTZXJ2aWNlPy5waWNrdXBTY2hlZHVsZT8ud2Vla0RheU9wZW5pbmdMaXN0O1xyXG4gICAgdGhpcy5icmFuY2hBZGRyZXNzID0gdGhpcy5yZXNwb25zZURhdGE/LnBvaW50T2ZTZXJ2aWNlPy5hZGRyZXNzO1xyXG4gICAgdmFyIGNoZWNrb3V0RGF0ZVZhbHVlID0gbmV3IERhdGUoKTtcclxuICAgIGxldCBpID0gMDtcclxuICAgIGxldCBqID0gMDtcclxuICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5kZWxpdmVyeU1pbkxlYWRUaW1lIHx8IHRoaXMucmVzcG9uc2VEYXRhLnBpY2tVcE1pbkxlYWRUaW1lKVxyXG4gICAgICB0aGlzLm1pbkxlYWRUaW1lID0gdGhpcy5pc0RlbGl2ZXJ5Qm94ID8gdGhpcy5yZXNwb25zZURhdGEuZGVsaXZlcnlNaW5MZWFkVGltZSA6IHRoaXMucmVzcG9uc2VEYXRhLnBpY2tVcE1pbkxlYWRUaW1lO1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgd2hpbGUgKGkgPCB0aGlzLm1pbkxlYWRUaW1lKSB7XHJcbiAgICAgIGogPSBqICsgMTtcclxuICAgICAgZGF0ZS5zZXREYXRlKGNoZWNrb3V0RGF0ZVZhbHVlLmdldERhdGUoKSArIGopO1xyXG4gICAgICBpZiAoZGF0ZS5nZXREYXkoKSA9PSA2KSB7XHJcbiAgICAgICAgaWYgKHRoaXMud2Vla0RheU9wZW5pbmdMaXN0WzVdLmNsb3NlZCA9PSB0cnVlICYmIGRhdGUuZ2V0RGF5KCkgPT0gNSlcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaSA9IGkgKyAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpID0gaSArIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGogPSBkYXRlLmdldERheSgpID09IDAgPyBqICsgMSA6IGo7XHJcbiAgICB0aGlzLm5nYk1pbkRhdGUgPSB7XHJcbiAgICAgIGRheTogKGNoZWNrb3V0RGF0ZVZhbHVlLmdldERhdGUoKSArIGogPiAzMCkgPyBjaGVja291dERhdGVWYWx1ZS5nZXREYXRlKCkgKyBqIC0gMzAgOiBjaGVja291dERhdGVWYWx1ZS5nZXREYXRlKCkgKyBqLFxyXG4gICAgICBtb250aDogKGNoZWNrb3V0RGF0ZVZhbHVlLmdldERhdGUoKSArIGopID4gMzAgPyBjaGVja291dERhdGVWYWx1ZS5nZXRNb250aCgpID09IDExID8gMSA6IGNoZWNrb3V0RGF0ZVZhbHVlLmdldE1vbnRoKCkgKyAyIDogY2hlY2tvdXREYXRlVmFsdWUuZ2V0TW9udGgoKSArIDEsXHJcbiAgICAgIHllYXI6IChjaGVja291dERhdGVWYWx1ZS5nZXREYXRlKCkgKyBqKSA+IDMwICYmIGNoZWNrb3V0RGF0ZVZhbHVlLmdldE1vbnRoKCkgPT0gMTEgPyBjaGVja291dERhdGVWYWx1ZS5nZXRGdWxsWWVhcigpICsgMSA6IGNoZWNrb3V0RGF0ZVZhbHVlLmdldEZ1bGxZZWFyKCksXHJcbiAgICB9O1xyXG4gICAgdGhpcy51cGRhdGVNaW5NYXhUaW1lKGNoZWNrb3V0RGF0ZVZhbHVlKTtcclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG4gIHVwZGF0ZU1pbk1heFRpbWUoZGF0ZTogRGF0ZSkge1xyXG4gICAgY29uc3QgdG9kYXlEYXk6IGFueSA9IHRoaXMud2Vla0RheU9wZW5pbmdMaXN0W2RhdGUuZ2V0RGF5KCkgLSAxXTtcclxuICAgIHRoaXMubWluVGltZSA9IG5ldyBEYXRlKFxyXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgZGF0ZS5nZXREYXRlKCksXHJcbiAgICAgIHRvZGF5RGF5Py5vcGVuaW5nVGltZT8uaG91ciB8fCA5LFxyXG4gICAgICB0b2RheURheT8ub3BlbmluZ1RpbWU/Lm1pbnV0ZSB8fCAwLFxyXG4gICAgICAwXHJcbiAgICApO1xyXG4gICAgdGhpcy5taW5Ub1RpbWUgPSBuZXcgRGF0ZShcclxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICBkYXRlLmdldE1vbnRoKCksXHJcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICB0b2RheURheT8ub3BlbmluZ1RpbWU/LmhvdXIgfHwgMTEsXHJcbiAgICAgIHRvZGF5RGF5Py5vcGVuaW5nVGltZT8ubWludXRlIHx8IDAsXHJcbiAgICAgIDBcclxuICAgICk7XHJcbiAgICB0aGlzLmZyb21NYXhUaW1lID0gbmV3IERhdGUoXHJcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICBkYXRlLmdldERhdGUoKSxcclxuICAgICAgdG9kYXlEYXk/LmNsb3NpbmdUaW1lLmZvcm1hdHRlZEhvdXIuc3BsaXQoJyAnKVsxXSA9PSAncG0nXHJcbiAgICAgICAgPyB0b2RheURheT8uY2xvc2luZ1RpbWU/LmhvdXIgKyAxMFxyXG4gICAgICAgIDogdG9kYXlEYXk/LmNsb3NpbmdUaW1lPy5ob3VyIHx8IDE1LFxyXG4gICAgICB0b2RheURheT8uY2xvc2luZ1RpbWU/Lm1pbnV0ZSB8fCAwLFxyXG4gICAgICAwXHJcbiAgICApO1xyXG4gICAgdGhpcy5tYXhUaW1lID0gbmV3IERhdGUoXHJcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICBkYXRlLmdldERhdGUoKSxcclxuICAgICAgdG9kYXlEYXk/LmNsb3NpbmdUaW1lLmZvcm1hdHRlZEhvdXIuc3BsaXQoJyAnKVsxXSA9PSAncG0nXHJcbiAgICAgICAgPyB0b2RheURheT8uY2xvc2luZ1RpbWU/LmhvdXIgKyAxMlxyXG4gICAgICAgIDogdG9kYXlEYXk/LmNsb3NpbmdUaW1lPy5ob3VyIHx8IDE3LFxyXG4gICAgICB0b2RheURheT8uY2xvc2luZ1RpbWU/Lm1pbnV0ZSB8fCAwLFxyXG4gICAgICAwXHJcbiAgICApO1xyXG4gICAgdGhpcy51cGRhdGVSZXF1ZXN0ZWRUaW1lKCk7XHJcbiAgfVxyXG4gIHVwZGF0ZVJlcXVlc3RlZFRpbWUoKSB7XHJcbiAgICB0aGlzLm1pblRpbWUgPSB0aGlzLmdldFJvdW5kTWluVGltZSh0aGlzLm1pblRpbWUpO1xyXG4gICAgdGhpcy5taW5Ub1RpbWUgPSB0aGlzLmdldFJvdW5kTWluVGltZSh0aGlzLm1pblRvVGltZSk7XHJcbiAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBUb1RpbWUgPSB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBUb1RpbWUgPyB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBUb1RpbWUgOiB0aGlzLm1heFRpbWU7XHJcbiAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBGcm9tVGltZSA9IHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcEZyb21UaW1lID8gdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRnJvbVRpbWUgOiB0aGlzLm1pblRvVGltZTtcclxuICB9XHJcblxyXG4gIGlzRGlzYWJsZWQgPSAoZGF0ZTogTmdiRGF0ZVN0cnVjdCkgPT4ge1xyXG4gICAgY29uc3QgZGF0ID0gbmV3IERhdGUoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoIC0gMSwgZGF0ZS5kYXkpO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5nZXRTcGVjaWFsRGF5cyhkYXRlKSA+IC0xIHx8XHJcbiAgICAgICh0aGlzLndlZWtEYXlPcGVuaW5nTGlzdFs1XS5jbG9zZWQgPT0gdHJ1ZSAmJiBkYXQuZ2V0RGF5KCkgPT09IDYpIHx8XHJcbiAgICAgIGRhdC5nZXREYXkoKSA9PT0gMFxyXG4gICAgKTtcclxuICB9O1xyXG5cclxuICBnZXRTcGVjaWFsRGF5cyhkYXRlOiBOZ2JEYXRlU3RydWN0KSB7XHJcbiAgICBjb25zdCBpbmQgPSB0aGlzLnNwZWNpYWxEYXlPcGVuaW5nTGlzdD8uZmluZEluZGV4KChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgZGF0ZU9iaiA9IGVsZW1lbnQuZm9ybWF0dGVkRGF0ZS5zcGxpdCgnLycpO1xyXG4gICAgICByZXR1cm4gZGF0ZU9ialswXSA9PSBkYXRlLmRheSAmJiBkYXRlT2JqWzFdID09IGRhdGUubW9udGg7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpbmQ7XHJcbiAgfVxyXG5cclxuICBnZXRSb3VuZE1pblRpbWUobWluVGltZTogYW55KSB7XHJcbiAgICB2YXIgY29mZiA9IDEwMDAgKiA2MCAqIDMwO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKE1hdGguY2VpbChtaW5UaW1lLmdldFRpbWUoKSAvIGNvZmYpICogY29mZik7XHJcbiAgfVxyXG5cclxuICB0aW1lQ2xpY2soZXZlbnQ6IEV2ZW50LCB0aW1lT2JqOiBhbnkpIHtcclxuICAgIGlmICh0aW1lT2JqICYmIHRpbWVPYmouaW5wdXRXcmFwcGVyKSB7XHJcbiAgICAgIHRpbWVPYmouaW5wdXRXcmFwcGVyLmNvbnRhaW5lciAmJlxyXG4gICAgICAgIHRpbWVPYmouaW5wdXRXcmFwcGVyLmNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdlLWRpc2FibGVkJyk7XHJcbiAgICAgIHRpbWVPYmouaW5wdXRXcmFwcGVyLmJ1dHRvbnMgJiZcclxuICAgICAgICB0aW1lT2JqLmlucHV0V3JhcHBlci5idXR0b25zWzBdICYmXHJcbiAgICAgICAgdGltZU9iai5pbnB1dFdyYXBwZXIuYnV0dG9uc1swXS5jbGFzc0xpc3QucmVtb3ZlKCdlLWRpc2FibGVkJyk7XHJcbiAgICAgIHRpbWVPYmouc2hvdygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGltZVRvQ2xpY2soZXZlbnQ6IEV2ZW50LCB0aW1lT2JqOiBhbnkpIHtcclxuICAgIGlmICh0aW1lT2JqICYmIHRpbWVPYmouaW5wdXRXcmFwcGVyKSB7XHJcbiAgICAgIHRpbWVPYmouaW5wdXRXcmFwcGVyLmNvbnRhaW5lciAmJlxyXG4gICAgICAgIHRpbWVPYmouaW5wdXRXcmFwcGVyLmNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdlLWRpc2FibGVkJyk7XHJcbiAgICAgIHRpbWVPYmouaW5wdXRXcmFwcGVyLmJ1dHRvbnMgJiZcclxuICAgICAgICB0aW1lT2JqLmlucHV0V3JhcHBlci5idXR0b25zWzBdICYmXHJcbiAgICAgICAgdGltZU9iai5pbnB1dFdyYXBwZXIuYnV0dG9uc1swXS5jbGFzc0xpc3QucmVtb3ZlKCdlLWRpc2FibGVkJyk7XHJcbiAgICAgIHRpbWVPYmouc2hvdygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlU3RhdGljVGltZShob3VyczogbnVtYmVyLCBtaW51dGVzOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBEYXRlID09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIHRoaXMubWluVG9UaW1lID0gbmV3IERhdGUoXHJcbiAgICAgICAgdG9kYXkuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgICB0b2RheS5nZXRNb250aCgpLFxyXG4gICAgICAgIHRvZGF5LmdldERhdGUoKSxcclxuICAgICAgICBob3VycyxcclxuICAgICAgICBtaW51dGVzLFxyXG4gICAgICAgIDBcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBEYXRlO1xyXG4gICAgICB0aGlzLm1pblRvVGltZSA9IG5ldyBEYXRlKFxyXG4gICAgICAgIGRhdGUueWVhcixcclxuICAgICAgICBkYXRlLm1vbnRoLFxyXG4gICAgICAgIGRhdGUuZGF5LFxyXG4gICAgICAgIGhvdXJzLFxyXG4gICAgICAgIG1pbnV0ZXMsXHJcbiAgICAgICAgMFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5taW5Ub1RpbWUgPSB0aGlzLmdldFJvdW5kTWluVGltZSh0aGlzLm1pblRvVGltZSk7XHJcbiAgfVxyXG4gIGdldE5ld0FkZHJlc3MoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5uZXdBZGRyZXNzID0gZXZlbnQ7XHJcbiAgfVxyXG4gIHJldmlld09yZGVyKCkge1xyXG4gICAgdGhpcy5pc1N1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICB0aGlzLmNoZWNrb3V0Rm9ybS5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY2hlY2tvdXRGb3JtLnZhbGlkICYmXHJcbiAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcERhdGUgIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcFRvVGltZSAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRGF0ZS5kYXkgIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcEZyb21UaW1lICE9IHVuZGVmaW5lZFxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzRGVsaXZlcnlCb3ggJiYgdGhpcy5zZWxlY3RlZFJlY2VudEFkZHJlc3M/LmlkID09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmlzRGVsaXZlcnlCb3ggJiYgdGhpcy5zZWxlY3RlZEFkZHJlc3MgPT0gJ2FkZE5ld0FkZHJlc3MnICYmICF0aGlzLm5ld0FkZHJlc3MpIHtcclxuICAgICAgICB0aGlzLmVycm9ySW5kJC5uZXh0KHRydWUpO1xyXG4gICAgICAgIHRoaXMuaW5mb01lc3NhZ2UgPSAnUGxlYXNlIFNlbGVjdCBhbmQgQ29uZmlybSBBZGRyZXNzIGZyb20gTWFwJztcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuY2FydElEID0gdGhpcy5jYXJ0SWQ7XHJcbiAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeUFkZHJlc3NQSyA9IHRoaXMuaXNEZWxpdmVyeUJveCA9PSBmYWxzZSA/IHRoaXMuYnJhbmNoQWRkcmVzcz8uaWQgOiB0aGlzLnNlbGVjdGVkUmVjZW50QWRkcmVzcz8uaWQ7XHJcbiAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeU1ldGhvZCA9IHRoaXMuaXNEZWxpdmVyeUJveCA/IHRoaXMuZGVsaXZlcnlNb2Rlc1swXS5jb2RlIDogdGhpcy5kZWxpdmVyeU1vZGVzWzFdLmNvZGU7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkQWRkcmVzcyA9PSAnYWRkTmV3QWRkcmVzcycpIHtcclxuICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEubmV3QWRkcmVzcyA9IHRoaXMubmV3QWRkcmVzcztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkZWxldGUgdGhpcy5jaGVja291dEZvcm1EYXRhLm5ld0FkZHJlc3M7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGVja291dEZvcm1EYXRhLnNlbGVjdGVkQWRkcmVzcyA9IHRoaXMuc2VsZWN0ZWRBZGRyZXNzO1xyXG4gICAgICBsZXQgc2Vzc2lvbkRhdGEgPSB0aGlzLmNoZWNrb3V0Rm9ybURhdGE7XHJcbiAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcEZyb21UaW1lID0gdGhpcy5jb2xsZWN0VGltZU9iaj8uZ2V0VGV4dCgpO1xyXG4gICAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBUb1RpbWUgPSB0aGlzLmNoZWNrb3V0VG9UaW1lPy5nZXRUZXh0KCk7XHJcbiAgICAgIGxldCBkZWxpdmVyeVBpY2tVcERhdGUgPSB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBEYXRlO1xyXG4gICAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBEYXRlID0gdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRGF0ZT8uZGF5ICsgJy8nICsgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRGF0ZT8ubW9udGggKyAnLycgKyB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBEYXRlPy55ZWFyO1xyXG4gICAgICBjb25zdCByZXZpZXdEYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoZWNrb3V0Rm9ybURhdGEpKTtcclxuICAgICAgdGhpcy5jaGVja291dFNlcnZpY2VcclxuICAgICAgICAuVmFsaWRhdGVDaGVja291dERhdGVUaW1lKHRoaXMuY2hlY2tvdXRGb3JtRGF0YSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UuY2hlY2tvdXRSZXZpZXdBbmRPcmRlcihyZXZpZXdEYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcERhdGUgPSBkZWxpdmVyeVBpY2tVcERhdGU7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tvdXREYXRhJyxcclxuICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNlc3Npb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL3Jldmlldy1vcmRlcic7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvckluZCQubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBEYXRlID1cclxuICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5UGlja1VwRGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZm9NZXNzYWdlID0gZGF0YS5tZXNzYWdlc1swXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKGVyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRGF0ZSA9IGRlbGl2ZXJ5UGlja1VwRGF0ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZXJyb3JJbmQkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRGF0ZSA9IGRlbGl2ZXJ5UGlja1VwRGF0ZTtcclxuICAgICAgICAgICAgICB0aGlzLmluZm9NZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZXNbMF07XHJcbiAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcERhdGUgPSBkZWxpdmVyeVBpY2tVcERhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JJbmQkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaW5mb01lc3NhZ2UgPSBlcnJvcj8uZXJyb3I/LmVycm9yc1swXS5tZXNzYWdlO1xyXG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZyb21UaW1lQ2hhbmdlZChvYmo6IGFueSkge1xyXG4gICAgY29uc3QgdmFsdWUgPSBvYmo/LmdldFRleHQoKTtcclxuICAgIGxldCBob3VycyA9IE51bWJlcih2YWx1ZS5zcGxpdCgnOicpWzBdKTtcclxuICAgIGxldCBtaW51dGVzID0gTnVtYmVyKHZhbHVlLnNwbGl0KCcgJylbMF0uc3BsaXQoJzonKVsxXSk7XHJcbiAgICBpZiAodmFsdWUuc3BsaXQoJyAnKVsxXSA9PSAnUE0nKSBob3VycyA9IGhvdXJzID09IDEyID8gaG91cnMgOiBob3VycyArIDEyO1xyXG4gICAgdGhpcy51cGRhdGVTdGF0aWNUaW1lKGhvdXJzICsgMiwgbWludXRlcyk7XHJcbiAgICBpZiAodGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwVG9UaW1lIDw9IHRoaXMuZ2V0Um91bmRNaW5UaW1lKHRoaXMubWluVG9UaW1lKSlcclxuICAgICAgdGhpcy5jaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwVG9UaW1lID0gdGhpcy5nZXRSb3VuZE1pblRpbWUodGhpcy5taW5Ub1RpbWUpXHJcbiAgfVxyXG5cclxuICBkYXRlY2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShldmVudC5tb250aCArICcvJyArIGV2ZW50LmRheSArICcvJyArIGV2ZW50LnllYXIpO1xyXG4gICAgdGhpcy51cGRhdGVNaW5NYXhUaW1lKGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgYWRkTmV3QWRkcmVzcygpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRBZGRyZXNzID0gJ2FkZE5ld0FkZHJlc3MnO1xyXG4gICAgdGhpcy5zZWxlY3RlZFJlY2VudEFkZHJlc3MgPSAnJztcclxuXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibG9hZGluZ1wiICpuZ0lmPVwic2hvd1dhaXRDdXJzb3IgfCBhc3luYyBcIj5Mb2FkaW5nJiM4MjMwOzwvZGl2PlxyXG48YXBwLWN1c3RvbS1icmVhZGNydW0gW2N1c3RvbUNydW1iRGF0YV09XCJicmVhZGNydW1iRGF0YVwiIGNsYXNzPVwicHJvZHVjdHMtYnJlYWRjdW1zXCI+PC9hcHAtY3VzdG9tLWJyZWFkY3J1bT5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lciBtYi0xMjBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0b3AtY2hlY2tvdXQgY29sLXNtLTlcIj5cclxuICAgICAgICA8aDEgY2xhc3M9XCJwYWdlVGl0bGVcIj57e3BhZ2VUaXRsZX19PC9oMT5cclxuICAgICAgICA8IS0tIDxwIGNsYXNzPVwiY2hlY2tvdXQtaGVhZGVyLXBhcmFncmFwaFwiPnt7Y2hlY2tvdXRIZWFkZXJDb250ZW50fX08L3A+IC0tPlxyXG4gICAgICAgICAgICA8Y3gtcGFnZS1zbG90IGNsYXNzPVwiY2hlY2tvdXQtaGVhZGVyLXBhcmFncmFwaFwiIHBvc2l0aW9uPVwiQ2hlY2tvdXRQYXJhZ3JhcGhDb250ZXh0U2xvdC1jaGVja291dFBhZ2VcIj48L2N4LXBhZ2Utc2xvdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBjb250ZW50LXJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLWxnLTcgb2Zmc2V0LWxnLTNcIj5cclxuICAgICAgICAgICAgPGZvcm0gI2NoZWNrb3V0Rm9ybT1cIm5nRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWhlYWRlciBjbGFzcz1cImxpbmUtc3RlcC1uYXZpZ2F0aW9uIGZpcnN0LXN0ZXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBjdXMtdGl0bGUtbWFyZ2luLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlIGNsYXNzPVwiZm9udC1ib2xkXCI+IDxzcGFuIGNsYXNzPVwiY2FyZC1udW1iZXJcIj4gMSA8L3NwYW4+IENob29zZSBZb3VyIERlbGl2ZXJ5IE1ldGhvZDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cImN1c3RvbS1tYXQtY2FyZCBsaW5lLXN0ZXAtbmF2aWdhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250YWluZXIgZC1zbS1pbmxpbmUtZmxleCBkLW1kLWZsZXggYWxpZ24tY29udGVudC1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYXRsZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImJveC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiaXNEZWxpdmVyeUJveCA9IHRydWU7XCIgY2xhc3M9XCJkZWxpdmVyeS1ib3ggZC1zbS1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1zbS1jZW50ZXIganVzdGlmeS1jb250ZW50LXNtLWFyb3VuZFwiIFtuZ0NsYXNzXT1cImlzRGVsaXZlcnlCb3ggPyBBQ1RJVkVfSVRFTSA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZGVsaXZlcnktaW1nXCIgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9kZWxpdmVyeS5zdmdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImlzRGVsaXZlcnlCb3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiY2hlY2stc3F1YXJlLWRlbFwiIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvY2hlY2stc3F1YXJlLnN2Z1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LWhlYWRpbmctdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlPnt7ZGVsaXZlcnlNb2Rlc1swXT8ubmFtZSB8fCAnRGVsaXZlcnknfX0gPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1zdWJ0aXRsZT4ge3tkZWxpdmVyeU1vZGVzWzBdPy5kZXNjcmlwdGlvbiB8fCAnV2UgZGVsaXZlciByaWdodCB0byB5b3VyIGRvb3IuJ319IDwvbWF0LWNhcmQtc3VidGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWF0cmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImJveC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiaXNEZWxpdmVyeUJveCA9IGZhbHNlO1wiIGNsYXNzPVwiY29sbGVjdC1ib3ggZC1zbS1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1zbS1jZW50ZXIganVzdGlmeS1jb250ZW50LXNtLWFyb3VuZFwiIFtuZ0NsYXNzXT1cImlzRGVsaXZlcnlCb3ggPyAnJyA6IEFDVElWRV9JVEVNXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwicGlja3VwLWltZ1wiIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvcGlja3VwLnN2Z1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiIWlzRGVsaXZlcnlCb3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiY2hlY2stc3F1YXJlLWNjXCIgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9jaGVjay1zcXVhcmUuc3ZnXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsaXZlcnktaGVhZGluZy10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGU+IHt7ZGVsaXZlcnlNb2Rlc1sxXT8ubmFtZSB8fCAnQ2xpY2sgJiBDb2xsZWN0J319PC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1zdWJ0aXRsZT4ge3tkZWxpdmVyeU1vZGVzWzFdPy5kZXNjcmlwdGlvbiB8fCAnQ29sbGVjdCBmcm9tIHlvdXIgbmVhcmVzdCBicmFuY2guJyB9fTwvbWF0LWNhcmQtc3VidGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtaGVhZGVyIGNsYXNzPVwibGluZS1zdGVwLW5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBjdXMtdGl0bGUtbWFyZ2luLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlIGNsYXNzPVwiZm9udC1ib2xkXCI+IDxzcGFuIGNsYXNzPVwiY2FyZC1udW1iZXJcIj4gMiA8L3NwYW4+IFB1cmNoYXNlIE9yZGVyIE51bWJlcjwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cImN1c3RvbS1tYXQtY2FyZCBsaW5lLXN0ZXAtbmF2aWdhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250YWluZXIgZm9yLW1vYiBjb2wtc20tNiBwbC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UHVyY2hhc2UgT3JkZXIgTnVtYmVyICA8c3BhbiBjbGFzcz1cIm1hcmtlclwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAjcG9OdW1iZXI9XCJuZ01vZGVsXCIgbmFtZT1cInBvTnVtYmVyXCIgaWQ9XCJwb051bWJlclwiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiMTVcIiBbKG5nTW9kZWwpXT1cImNoZWNrb3V0Rm9ybURhdGEucG9OdW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBqb2JvcmRlci1pbnB1dFwiIHJlcXVpcmVkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJpc1N1Ym1pdHRlZFwiIFtoaWRkZW5dPVwicG9OdW1iZXIudmFsaWRcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1cmNoYXNlIE9yZGVyIE51bWJlciBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtaGVhZGVyIGNsYXNzPVwibGluZS1zdGVwLW5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBjdXMtdGl0bGUtbWFyZ2luLWNhcmRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz1cImZvbnQtYm9sZFwiPiA8c3BhbiBjbGFzcz1cImNhcmQtbnVtYmVyXCI+IDMgPC9zcGFuPiB7e2lzRGVsaXZlcnlCb3ggPyAnRGVsaXZlcnknOiAnUGlja3VwICd9fSBEYXRlIGFuZCBUaW1lPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cImN1c3RvbS1tYXQtY2FyZCBsaW5lLXN0ZXAtbmF2aWdhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250YWluZXIgZm9yLW1vYiBjb2wtc20tNiBwbC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZGF0ZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkRhdGUgPHNwYW4gY2xhc3M9XCJtYXJrZXJcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz1cIm5nYi1kYXRlLWZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbZmlyc3REYXlPZldlZWtdPVwiN1wiICNkZWxpdmVyeVBpY2tVcERhdGU9XCJuZ01vZGVsXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzLXdpZHRoIGRhdGUtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImNoZWNrb3V0Rm9ybURhdGEuZGVsaXZlcnlQaWNrVXBEYXRlXCIgaWQ9XCJkYXRlXCIgbmFtZT1cInR4dERhdGVcIiB0YWJpbmRleD1cIi0xXCIgb25rZXlkb3duPVwicmV0dXJuIGZhbHNlXCIgcGxhY2Vob2xkZXI9XCJERC1NTS1ZWVlZXCIgbmdiRGF0ZXBpY2tlciAjbmdEYXRlPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbkRhdGVdPVwibmdiTWluRGF0ZVwiIChkYXRlU2VsZWN0KT1cImRhdGVjaGFuZ2UoJGV2ZW50KVwiIGNvbnRhaW5lcj1cImJvZHlcIiByZXF1aXJlZCBbbWFya0Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZCBjdXN0b20tZGF0ZS1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBjYWxlbmRhclwiIChjbGljayk9XCJuZ0RhdGUudG9nZ2xlKClcIiB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImlzU3VibWl0dGVkICYmICFjaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRGF0ZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZSBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lciBmb3ItbW9iIGNvbC1zbS02IHBsLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ0aW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsIHB0LTRcIj5UaW1lIDxzcGFuIGNsYXNzPVwibWFya2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0tam9iXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RkaXZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImpvYmlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlanMtdGltZXBpY2tlciBmb3JtYXQ9XCJoaDptbSBhXCIgaWQ9J3RpbWVwaWNrZXInICBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRpbWVDbGljaygkZXZlbnQsIGNvbGxlY3RUaW1lT2JqKVwiICAjY29sbGVjdFRpbWVPYmpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPSdjaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwRnJvbVRpbWUnIFttaW5dPVwibWluVGltZVwiIFthbGxvd0VkaXRdPVwiZmFsc2VcIiBbbWF4XT1cImZyb21NYXhUaW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZyb21UaW1lQ2hhbmdlZChjb2xsZWN0VGltZU9iailcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9lanMtdGltZXBpY2tlcj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ0aW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsIHAtM1wiPnRvPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWpvYlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZGl2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJqb2JpbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWpzLXRpbWVwaWNrZXIgZm9ybWF0PVwiaGg6bW0gYVwiIGlkPSd0b3RUbWVwaWNrZXInICBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRpbWVDbGljaygkZXZlbnQsIGNoZWNrb3V0VG9UaW1lKVwiICAjY2hlY2tvdXRUb1RpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPSdjaGVja291dEZvcm1EYXRhLmRlbGl2ZXJ5UGlja1VwVG9UaW1lJyBbbWluXT1cIm1pblRvVGltZVwiIFthbGxvd0VkaXRdPVwiZmFsc2VcIiBbbWF4XT1cIm1heFRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2Vqcy10aW1lcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHAgKm5nSWY9XCJpc1N1Ym1pdHRlZFwiIFtoaWRkZW5dPVwiY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcEZyb21UaW1lICE9IHVuZGVmaW5lZFwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbSB0aW1lIGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJpc1N1Ym1pdHRlZFwiIFtoaWRkZW5dPVwiY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcFRvVGltZSAhPSB1bmRlZmluZWRcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvIHRpbWUgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkPlxyXG5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1oZWFkZXIgY2xhc3M9XCJsaW5lLXN0ZXAtbmF2aWdhdGlvblwiICpuZ0lmPVwiIWlzRGVsaXZlcnlCb3hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBjdXMtdGl0bGUtbWFyZ2luLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlIGNsYXNzPVwiZm9udC1ib2xkXCI+IDxzcGFuIGNsYXNzPVwiY2FyZC1udW1iZXJcIj4gNCA8L3NwYW4+IFBpY2t1cCBMb2NhdGlvbjwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2FyZCAqbmdJZj1cIiFpc0RlbGl2ZXJ5Qm94XCIgY2xhc3M9XCJjdXN0b20tbWF0LWNhcmQgbGluZS1zdGVwLW5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyYW5jaC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz0nYWRkcmVzcy10aXRsZSc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ticmFuY2hBZGRyZXNzPy50b3dufX08L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXN1YnRpdGxlPiB7e2JyYW5jaEFkZHJlc3M/LmZvcm1hdHRlZEFkZHJlc3N9fTwvbWF0LWNhcmQtc3VidGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtc3VidGl0bGU+IDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBob25lOiA8L3NwYW4+IHt7YnJhbmNoQWRkcmVzcz8ucGhvbmV9fTwvbWF0LWNhcmQtc3VidGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJhbmNoLWhvdXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlIGNsYXNzPSdhZGRyZXNzLXRpdGxlJz5PcGVuaW5nIEhvdXJzPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtc3VidGl0bGUgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGVtcEJyYW5jaExpc3REYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaG91ci1sYWJlbC1sZWZ0XCI+e3sgZGF0YT8ud2Vla0RheSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhPy5vcGVuaW5nVGltZT8uZm9ybWF0dGVkSG91ciB8fCBkYXRhPy5jbG9zaW5nVGltZT8uZm9ybWF0dGVkSG91clwiPnt7ZGF0YT8ub3BlbmluZ1RpbWU/LmZvcm1hdHRlZEhvdXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHt7ZGF0YT8uY2xvc2luZ1RpbWU/LmZvcm1hdHRlZEhvdXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCIhZGF0YT8ub3BlbmluZ1RpbWU/LmZvcm1hdHRlZEhvdXIgJiYgIWRhdGE/LmNsb3NpbmdUaW1lPy5mb3JtYXR0ZWRIb3VyXCI+Q2xvc2VkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtc3VidGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1oZWFkZXIgY2xhc3M9XCJsaW5lLXN0ZXAtbmF2aWdhdGlvblwiICpuZ0lmPVwiaXNEZWxpdmVyeUJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGN1cy10aXRsZS1tYXJnaW4tY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGUgY2xhc3M9XCJmb250LWJvbGRcIj4gPHNwYW4gY2xhc3M9XCJjYXJkLW51bWJlclwiPiA0IDwvc3Bhbj4ge3tpc0RlbGl2ZXJ5Qm94ID8gJ1NlbGVjdCB5b3VyIERlbGl2ZXJ5IEFkZHJlc3MgUHJlZmVyZW5jZSc6ICdQaWNrdXAgTG9jYXRpb24gJ319XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQgW2hpZGRlbl09XCIhaXNEZWxpdmVyeUJveFwiIGNsYXNzPVwiY3VzdG9tLW1hdC1jYXJkIGxpbmUtc3RlcC1uYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbWF0LWlubmVyLWNvbnRhaW5lciByYWRpby1idG4tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIGFyaWEtbGFiZWw9XCJTZWxlY3QgYW4gb3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nSWY9XCJkZWZhdWx0QWNjb3VudEFkZHJlc3M/LmZvcm1hdHRlZEFkZHJlc3MgfHwgKGRlbGl2ZXJ5QWRkcmVzc2VzICYmIGRlbGl2ZXJ5QWRkcmVzc2VzLmxlbmd0aCA+IDApXCIgW2NoZWNrZWRdPVwic2VsZWN0ZWRBZGRyZXNzID09ICdhY2NvdW50QWRkcmVzcydcIiAoY2hhbmdlKT1cInNlbGVjdGVkQWRkcmVzcyA9ICdhY2NvdW50QWRkcmVzcyc7c2VsZWN0ZWRSZWNlbnRBZGRyZXNzPSBkZWxpdmVyeUFkZHJlc3Nlc1swXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCInYWNjb3VudEFkZHJlc3MnXCIgY2xhc3M9XCJwbC0wIHByLW1kLTRcIj5BY2NvdW50IEFkZHJlc3M8L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nSWY9XCJkZWxpdmVyeUFkZHJlc3NlcyAmJiByZWNlbnRBZGRyZXNzLmxlbmd0aD4gMFwiIFtjaGVja2VkXT1cInNlbGVjdGVkQWRkcmVzcyA9PSAncmVjZW50QWRkcmVzcydcIiAoY2hhbmdlKT1cInNlbGVjdGVkQWRkcmVzcyA9ICdyZWNlbnRBZGRyZXNzJzsgc2VsZWN0ZWRSZWNlbnRBZGRyZXNzPSByZWNlbnRBZGRyZXNzWzBdXCIgW3ZhbHVlXT1cIidyZWNlbnRBZGRyZXNzJ1wiIGNsYXNzPVwicGwtMCBwci1tZC00XCI+UmVjZW50IEFkZHJlc3M8L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gW2NoZWNrZWRdPVwic2VsZWN0ZWRBZGRyZXNzID09ICdhZGROZXdBZGRyZXNzJ1wiIChjaGFuZ2UpPVwiYWRkTmV3QWRkcmVzcygpXCIgW3ZhbHVlXT1cIidhZGROZXdBZGRyZXNzJ1wiPkFkZCBOZXcgQWRkcmVzczwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgYWRkcmVzcy1pbm5lci1jb250YWluZXJcIiAqbmdJZj1cInNlbGVjdGVkQWRkcmVzcyA9PSAnYWNjb3VudEFkZHJlc3MnICYmIGRlbGl2ZXJ5QWRkcmVzc2VzLmxlbmd0aCA+IDAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCIhc2hvd01vcmVBZGRyZXNzZXNcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Db25maXJtZWQgRGVsaXZlcnkgQWRkcmVzcyA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd01vcmVBZGRyZXNzZXNcIiBjbGFzcz1cImZvcm0tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcC1zZWxlY3RlZC1hZGRyZXNzXCIgaWQ9XCJhZGRyZXNzXCIgcmVxdWlyZWQgI2lzQWRkclNlbGVjdGVkT3JOb3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVmYXVsdEFjY291bnRBZGRyZXNzPy5mb3JtYXR0ZWRBZGRyZXNzfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dNb3JlQWRkcmVzc2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1yYWRpby1ncm91cCBhcmlhLWxhYmVsbGVkYnk9XCJleGFtcGxlLXJhZGlvLWdyb3VwLWxhYmVsXCIgY2xhc3M9XCJleGFtcGxlLXJhZGlvLWdyb3VwIHJhZGlvLWJ0bi1zaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwicHktMVwiIFtjaGVja2VkXT1cInNlbGVjdGVkUmVjZW50QWRkcmVzcz8uaWQgPT0gYWRkcmVzcy5pZFwiICpuZ0Zvcj1cImxldCBhZGRyZXNzIG9mIGRlbGl2ZXJ5QWRkcmVzc2VzXCIgW3ZhbHVlXT1cImFkZHJlc3MuaWRcIiAoY2hhbmdlKT1cInNlbGVjdGVkUmVjZW50QWRkcmVzcz1hZGRyZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2FkZHJlc3MuZm9ybWF0dGVkQWRkcmVzc319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgYWRkcmVzcy1pbm5lci1jb250YWluZXJcIiAqbmdJZj1cInNlbGVjdGVkQWRkcmVzcyA9PSAncmVjZW50QWRkcmVzcycgJiYgcmVjZW50QWRkcmVzcy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIGFyaWEtbGFiZWxsZWRieT1cImV4YW1wbGUtcmFkaW8tZ3JvdXAtbGFiZWxcIiBjbGFzcz1cImV4YW1wbGUtcmFkaW8tZ3JvdXAgcmFkaW8tYnRuLXNpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cInB5LTFcIiBbY2hlY2tlZF09XCJzZWxlY3RlZFJlY2VudEFkZHJlc3M/LmlkID09IGFkZHJlc3MuaWRcIiAqbmdGb3I9XCJsZXQgYWRkcmVzcyBvZiByZWNlbnRBZGRyZXNzIFwiIFt2YWx1ZV09XCJhZGRyZXNzLmlkXCIgKGNoYW5nZSk9XCJzZWxlY3RlZFJlY2VudEFkZHJlc3M9YWRkcmVzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2FkZHJlc3MuZm9ybWF0dGVkQWRkcmVzc319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRBZGRyZXNzID09ICdhZGROZXdBZGRyZXNzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNYXAgRGl2IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1hZGQtbmV3LWFkZHJlc3MgW2NvbmZpcm1lZEFkZHJlc3NdPVwiY29uZmlybWVkTmV3QWRkcmVzc1wiICh1cGRhdGVOZXdBZGRyZXNzKT1cImdldE5ld0FkZHJlc3MoJGV2ZW50KVwiPjwvYXBwLWFkZC1uZXctYWRkcmVzcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1oZWFkZXIgY2xhc3M9XCJsaW5lLXN0ZXAtbmF2aWdhdGlvbiBsYXN0LXN0ZXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBjdXMtdGl0bGUtbWFyZ2luLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLW51bWJlclwiPiA1IDwvc3Bhbj4ge3tpc0RlbGl2ZXJ5Qm94ID8gJ1NpdGUgRGVsaXZlcnkgUmVxdWlyZW1lbnRzJzogJ0NvbW1lbnRzICd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWljb24gcGwtMlwiIFtuZ2JUb29sdGlwXT1cImlzRGVsaXZlcnlCb3ggPyBzaXRlRGVsaXZlcnlSZXF1aXJlbWVudHMgOiBjbGlja2FuZENvbGxlY3RDb21tZW50c1wiIHBsYWNlbWVudD1cImJvdHRvbVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwiY3VzdG9tLW1hdC1jYXJkIGxpbmUtc3RlcC1uYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiY2hlY2tvdXRGb3JtRGF0YS5kZWxpdmVyeVBpY2tVcE5vdGVzXCIgcm93cz1cIjNcIiBuYW1lPVwiSW5zdHJ1Y3Rpb25zXCIgaWQ9XCJJbnN0cnVjdGlvbnNcIiBbcGxhY2Vob2xkZXJdPVwiaXNEZWxpdmVyeUJveCA/ICdQcm92aWRlIGFueSBzcGVjaWZpYyBkZWxpdmVyeSBpbnN0cnVjdGlvbnMnOidQcm92aWRlIGFueSBzcGVjaWZpYyBwaWNrdXAgaW5zdHJ1Y3Rpb25zJ1wiIG1heGxlbmd0aD1cIjI1MFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwiY2FydC1wYWdlLWZvb3RlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGlja3ktZm9vdGVyIHJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIiBmbG9hdC1tZC1yaWdodCBtLTAgY2hlY2tvdXQtZm9vdGVyLWJ0bnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSB0aXRsZT1cIkJhY2sgdG8gQ2FydFwiIGhyZWY9XCIvY2FydFwiIGNsYXNzPVwibXItMyBmb250LXdlaWdodC1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pb25pYy1hcnJvdy1iYWNrLnN2Z1wiIGFsdD1cImJhY2stYXJyb3dcIiBjbGFzcz1cIm1yLTJcIiAvPiBCQUNLXHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXZpZXdPcmRlcigpXCIgY2xhc3M9XCJidG4gcHJpbWFyeS1idXR0b25cIj5SZXZpZXcgQW5kIE9yZGVyPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGNvbC1zbS0xMiBhbGVydCBhbGVydC1kYW5nZXIganVzdGlmeS1jb250ZW50LXN0YXJ0IG10LTNcIiByb2xlPVwiYWxlcnRcIiAqbmdJZj1cImVycm9ySW5kJCB8IGFzeW5jXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibXItM1wiIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZXJyb3JpY29uLnN2Z1wiIGFsdD1cImFsZXJ0XCI+IHt7aW5mb01lc3NhZ2V9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19