buildingproduct-library 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/assets/fonts/arial-webfont.woff +0 -0
- package/assets/fonts/arial-webfont.woff2 +0 -0
- package/assets/fonts/arialblack-webfont.woff +0 -0
- package/assets/fonts/arialblack-webfont.woff2 +0 -0
- package/assets/fonts/arialbold-webfont.woff +0 -0
- package/assets/fonts/arialbold-webfont.woff2 +0 -0
- package/assets/fonts/helveticaneue.woff +0 -0
- package/assets/fonts/helveticaneue.woff2 +0 -0
- package/assets/fonts/helveticaneuemedium-webfont.woff +0 -0
- package/assets/fonts/helveticaneuemedium-webfont.woff2 +0 -0
- package/assets/fonts/helveticaneuethin-webfont.woff +0 -0
- package/assets/fonts/helveticaneuethin-webfont.woff2 +0 -0
- package/assets/fonts/icomoon.ttf +0 -0
- package/assets/fonts/icomoon.woff +0 -0
- package/assets/images/ActivateIcon.svg +14 -0
- package/assets/images/AlertIcon.svg +3 -0
- package/assets/images/DisableIcon.svg +3 -0
- package/assets/images/Divider line.svg +3 -0
- package/assets/images/EditIconEnabled.svg +6 -0
- package/assets/images/EditIcondisabled.svg +6 -0
- package/assets/images/Grid-dark.svg +8 -0
- package/assets/images/Grid-light.svg +8 -0
- package/assets/images/Hamburger_icon_white.png +0 -0
- package/assets/images/Icon-awesome-user-alt-white.svg +13 -0
- package/assets/images/Icon-ionic-ios-arrow-down.svg +3 -0
- package/assets/images/Icon-ionic-ios-help-circle.svg +6 -0
- package/assets/images/Icon-ionic-ios-home.svg +6 -0
- package/assets/images/Icon-ionic-ios-settings.svg +6 -0
- package/assets/images/Icon-material-shopping-cart.svg +7 -0
- package/assets/images/Invited.svg +4 -0
- package/assets/images/List-dark.svg +3 -0
- package/assets/images/List-light.svg +3 -0
- package/assets/images/PDP-add-more.svg +3 -0
- package/assets/images/PDP-colour-selected.svg +7 -0
- package/assets/images/PDP-quote-exists.svg +12 -0
- package/assets/images/PDP-remove-icon.svg +3 -0
- package/assets/images/Selected icon.svg +3 -0
- package/assets/images/Selected-icon.svg +3 -0
- package/assets/images/banner-image.png +0 -0
- package/assets/images/br_down.png +0 -0
- package/assets/images/cart-shopping-fast.svg +6 -0
- package/assets/images/check-square.svg +3 -0
- package/assets/images/checkmark-circle-outline.svg +4 -0
- package/assets/images/closegrey.svg +71 -0
- package/assets/images/dashboard.svg +35 -0
- package/assets/images/delivery.svg +11 -0
- package/assets/images/download-icon.svg +7 -0
- package/assets/images/downloads-dark.svg +6 -0
- package/assets/images/downloads-light.svg +6 -0
- package/assets/images/erroricon.svg +3 -0
- package/assets/images/home-icon.svg +6 -0
- package/assets/images/home_banner.png +0 -0
- package/assets/images/ic_calender.svg +15 -0
- package/assets/images/icon-clock-icon.svg +10 -0
- package/assets/images/icon-feather-edit.svg +6 -0
- package/assets/images/icon-flashing-black.svg +3 -0
- package/assets/images/icon-flashing-white.svg +3 -0
- package/assets/images/icon-ionic-ios-search.svg +3 -0
- package/assets/images/icon-logout.svg +6 -0
- package/assets/images/icon-mail-icon.svg +7 -0
- package/assets/images/icon-metro-info.svg +3 -0
- package/assets/images/ionic-arrow-back.svg +3 -0
- package/assets/images/ionic-ios-feather-phone.svg +3 -0
- package/assets/images/ionic-ios-help-circle-outline.svg +6 -0
- package/assets/images/ionic-ios-location-outline.svg +3 -0
- package/assets/images/ionic-ios-my-location.svg +3 -0
- package/assets/images/ionic-ios-users-outline.svg +3 -0
- package/assets/images/ionic-trash.svg +3 -0
- package/assets/images/logo-black.svg +16 -0
- package/assets/images/logo-dark.svg +48 -0
- package/assets/images/logo.svg +16 -0
- package/assets/images/my-account.svg +21 -0
- package/assets/images/my-list.svg +43 -0
- package/assets/images/my-team.svg +17 -0
- package/assets/images/newsfeed-banner.jpg +0 -0
- package/assets/images/newtab.svg +11 -0
- package/assets/images/no-saved-cart.svg +3 -0
- package/assets/images/open-account-logout.png +0 -0
- package/assets/images/orders.svg +23 -0
- package/assets/images/pdf-icon.svg +45 -0
- package/assets/images/pdp-noimage.svg +21 -0
- package/assets/images/pickup.svg +8 -0
- package/assets/images/plp-grid-noimage.svg +22 -0
- package/assets/images/plp-list-noimage.svg +16 -0
- package/assets/images/product-banner.png +0 -0
- package/assets/images/product-details-dark.svg +10 -0
- package/assets/images/product-details-light.svg +10 -0
- package/assets/images/products.svg +34 -0
- package/assets/images/quotes.svg +12 -0
- package/assets/images/related-products-dark.svg +9 -0
- package/assets/images/related-products-light.svg +9 -0
- package/assets/images/search-noimage.svg +16 -0
- package/assets/images/see-more-bg-hover.svg +1 -0
- package/assets/images/see-more-bg.svg +1 -0
- package/assets/images/shopping-cart-icon.svg +14 -0
- package/assets/images/slash-small-white.svg +3 -0
- package/assets/images/warningicon.svg +3 -0
- package/assets/images/why-dimond.svg +7 -0
- package/buildingproduct-library-0.2.7.tgz +0 -0
- package/buildingproduct-library.d.ts +5 -0
- package/bundles/buildingproduct-library.umd.js +10979 -0
- package/bundles/buildingproduct-library.umd.js.map +1 -0
- package/esm2015/buildingproduct-library.js +5 -0
- package/esm2015/lib/account-dropdown/account-dropdown.component.js +159 -0
- package/esm2015/lib/account-dropdown/account-dropdown.module.js +59 -0
- package/esm2015/lib/account-dropdown/account-dropdown.service.js +55 -0
- package/esm2015/lib/checkout/add-new-address/add-new-address.component.js +442 -0
- package/esm2015/lib/checkout/checkout.module.js +149 -0
- package/esm2015/lib/checkout/custom-checkout/custom-checkout.component.js +348 -0
- package/esm2015/lib/checkout/order-confirmation/order-confirmation.component.js +37 -0
- package/esm2015/lib/checkout/order-review/delivery-information/delivery-information.component.js +32 -0
- package/esm2015/lib/checkout/order-review/order-review-grid/order-review-grid.component.js +162 -0
- package/esm2015/lib/checkout/order-review/order-review-list/order-review-list.component.js +151 -0
- package/esm2015/lib/checkout/order-review/order-review.component.js +123 -0
- package/esm2015/lib/constants/general.js +57 -0
- package/esm2015/lib/contact-us/contact-us.component.js +38 -0
- package/esm2015/lib/contact-us/contact-us.module.js +41 -0
- package/esm2015/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.js +48 -0
- package/esm2015/lib/custom-cart/custom-cart.component.js +70 -0
- package/esm2015/lib/custom-cart/custom-cart.module.js +91 -0
- package/esm2015/lib/custom-header-logo/custom-header-logo.component.js +27 -0
- package/esm2015/lib/custom-header-logo/custom-header-logo.module.js +54 -0
- package/esm2015/lib/custom-header-paragraph/custom-header-paragraph.component.js +24 -0
- package/esm2015/lib/custom-header-paragraph/custom-header-paragraph.module.js +48 -0
- package/esm2015/lib/custom-mini-cart/custom-mini-cart.component.js +239 -0
- package/esm2015/lib/custom-mini-cart/custom-mini-cart.module.js +64 -0
- package/esm2015/lib/custom-navigation/custom-navigation.component.js +122 -0
- package/esm2015/lib/custom-navigation/custom-navigation.module.js +79 -0
- package/esm2015/lib/custom-order-details/custom-order-details.component.js +205 -0
- package/esm2015/lib/custom-order-details/custom-order-details.module.js +99 -0
- package/esm2015/lib/custom-order-details/download-popup/download-popup.component.js +34 -0
- package/esm2015/lib/custom-order-details/order-detail-grid/order-detail-grid.component.js +191 -0
- package/esm2015/lib/custom-order-details/order-detail-list/order-detail-list.component.js +169 -0
- package/esm2015/lib/custom-order-history/custom-order-history.component.js +680 -0
- package/esm2015/lib/custom-order-history/custom-order-history.module.js +105 -0
- package/esm2015/lib/custom-order-history/slider-progress/slider-progress.component.js +62 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.js +108 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-saved-cart-details.module.js +125 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.js +91 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.js +56 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.js +51 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart.component.js +114 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart.module.js +89 -0
- package/esm2015/lib/custom-saved-cart/save-cart.service.js +67 -0
- package/esm2015/lib/custom-saved-cart/saved-cart-general.js +49 -0
- package/esm2015/lib/custom-saved-cart/saved-cart.service.js +48 -0
- package/esm2015/lib/custom-search/custom-search.component.js +132 -0
- package/esm2015/lib/custom-search/custom-search.module.js +46 -0
- package/esm2015/lib/custom-user-account/custom-user-account.component.js +92 -0
- package/esm2015/lib/custom-user-account/custom-user-account.module.js +63 -0
- package/esm2015/lib/directives/custom-directives.module.js +22 -0
- package/esm2015/lib/directives/custom-paginatior.directive.js +197 -0
- package/esm2015/lib/environments/environment.js +24 -0
- package/esm2015/lib/find-store/find-store.component.js +94 -0
- package/esm2015/lib/find-store/find-store.module.js +66 -0
- package/esm2015/lib/help-support/help-support.component.js +24 -0
- package/esm2015/lib/help-support/help-support.module.js +38 -0
- package/esm2015/lib/my-account/account-dashboard/account-dashboard.component.js +133 -0
- package/esm2015/lib/my-account/account-statements/account-statements.component.js +57 -0
- package/esm2015/lib/my-account/invoice-credit/invoice-credit.component.js +379 -0
- package/esm2015/lib/my-account/my-account.component.js +95 -0
- package/esm2015/lib/my-account/my-account.module.js +99 -0
- package/esm2015/lib/my-team/my-team.component.js +445 -0
- package/esm2015/lib/my-team/my-team.module.js +100 -0
- package/esm2015/lib/my-team/team-member.service.js +95 -0
- package/esm2015/lib/pipes/custom-date-pipe.pipe.js +26 -0
- package/esm2015/lib/services/account-dropdown-state.service.js +21 -0
- package/esm2015/lib/services/cart.service.js +70 -0
- package/esm2015/lib/services/checkout.service.js +69 -0
- package/esm2015/lib/services/endPointURL.js +192 -0
- package/esm2015/lib/services/find-store.service.js +50 -0
- package/esm2015/lib/services/logout.service.js +50 -0
- package/esm2015/lib/services/my-account.service.js +68 -0
- package/esm2015/lib/services/order-history.service.js +65 -0
- package/esm2015/lib/services/order.review.js +38 -0
- package/esm2015/lib/services/search.service.js +42 -0
- package/esm2015/lib/services/user-account-detail-service.service.js +207 -0
- package/esm2015/lib/shared/CustomProduct.js +48 -0
- package/esm2015/lib/shared/active-saved-cart/active-saved-cart.component.js +116 -0
- package/esm2015/lib/shared/custom-breadcrum/custom-breadcrum.component.js +102 -0
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-detail.component.js +95 -0
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.js +477 -0
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js +431 -0
- package/esm2015/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.js +622 -0
- package/esm2015/lib/shared/custom-cart-detail/split.pipe.js +17 -0
- package/esm2015/lib/shared/date-range-picker/date-range-picker.component.js +173 -0
- package/esm2015/lib/shared/regEx.validator.js +17 -0
- package/esm2015/lib/shared/saved-cart-popup/saved-cart-popup.component.js +83 -0
- package/esm2015/lib/shared/shared-components.module.js +119 -0
- package/esm2015/lib/shared/shared-download-order/shared-download-order.component.js +220 -0
- package/esm2015/lib/spa-custom-header.component.js +26 -0
- package/esm2015/lib/spa-custom-header.module.js +145 -0
- package/esm2015/lib/spa-custom-header.service.js +14 -0
- package/esm2015/lib/utils/utils.js +27 -0
- package/esm2015/lib/utils.js +27 -0
- package/esm2015/public-api.js +35 -0
- package/fesm2015/buildingproduct-library.js +10197 -0
- package/fesm2015/buildingproduct-library.js.map +1 -0
- package/lib/account-dropdown/account-dropdown.component.d.ts +24 -0
- package/lib/account-dropdown/account-dropdown.module.d.ts +11 -0
- package/lib/account-dropdown/account-dropdown.service.d.ts +14 -0
- package/lib/checkout/add-new-address/add-new-address.component.d.ts +30 -0
- package/lib/checkout/checkout.module.d.ts +28 -0
- package/lib/checkout/custom-checkout/custom-checkout.component.d.ts +77 -0
- package/lib/checkout/order-confirmation/order-confirmation.component.d.ts +23 -0
- package/lib/checkout/order-review/delivery-information/delivery-information.component.d.ts +13 -0
- package/lib/checkout/order-review/order-review-grid/order-review-grid.component.d.ts +33 -0
- package/lib/checkout/order-review/order-review-list/order-review-list.component.d.ts +31 -0
- package/lib/checkout/order-review/order-review.component.d.ts +41 -0
- package/lib/constants/general.d.ts +50 -0
- package/lib/contact-us/contact-us.component.d.ts +13 -0
- package/lib/contact-us/contact-us.module.d.ts +9 -0
- package/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.d.ts +18 -0
- package/lib/custom-cart/custom-cart.component.d.ts +22 -0
- package/lib/custom-cart/custom-cart.module.d.ts +15 -0
- package/lib/custom-header-logo/custom-header-logo.component.d.ts +11 -0
- package/lib/custom-header-logo/custom-header-logo.module.d.ts +11 -0
- package/lib/custom-header-paragraph/custom-header-paragraph.component.d.ts +11 -0
- package/lib/custom-header-paragraph/custom-header-paragraph.module.d.ts +10 -0
- package/lib/custom-mini-cart/custom-mini-cart.component.d.ts +62 -0
- package/lib/custom-mini-cart/custom-mini-cart.module.d.ts +13 -0
- package/lib/custom-navigation/custom-navigation.component.d.ts +37 -0
- package/lib/custom-navigation/custom-navigation.module.d.ts +21 -0
- package/lib/custom-order-details/custom-order-details.component.d.ts +63 -0
- package/lib/custom-order-details/custom-order-details.module.d.ts +19 -0
- package/lib/custom-order-details/download-popup/download-popup.component.d.ts +15 -0
- package/lib/custom-order-details/order-detail-grid/order-detail-grid.component.d.ts +40 -0
- package/lib/custom-order-details/order-detail-list/order-detail-list.component.d.ts +35 -0
- package/lib/custom-order-history/custom-order-history.component.d.ts +99 -0
- package/lib/custom-order-history/custom-order-history.module.d.ts +19 -0
- package/lib/custom-order-history/slider-progress/slider-progress.component.d.ts +15 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.d.ts +33 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/custom-saved-cart-details.module.d.ts +20 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.d.ts +65 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.d.ts +31 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.d.ts +19 -0
- package/lib/custom-saved-cart/custom-saved-cart.component.d.ts +59 -0
- package/lib/custom-saved-cart/custom-saved-cart.module.d.ts +16 -0
- package/lib/custom-saved-cart/save-cart.service.d.ts +17 -0
- package/lib/custom-saved-cart/saved-cart-general.d.ts +88 -0
- package/lib/custom-saved-cart/saved-cart.service.d.ts +12 -0
- package/lib/custom-search/custom-search.component.d.ts +35 -0
- package/lib/custom-search/custom-search.module.d.ts +10 -0
- package/lib/custom-user-account/custom-user-account.component.d.ts +35 -0
- package/lib/custom-user-account/custom-user-account.module.d.ts +12 -0
- package/lib/directives/custom-directives.module.d.ts +8 -0
- package/lib/directives/custom-paginatior.directive.d.ts +29 -0
- package/lib/environments/environment.d.ts +12 -0
- package/lib/find-store/find-store.component.d.ts +34 -0
- package/lib/find-store/find-store.module.d.ts +12 -0
- package/lib/help-support/help-support.component.d.ts +11 -0
- package/lib/help-support/help-support.module.d.ts +9 -0
- package/lib/my-account/account-dashboard/account-dashboard.component.d.ts +34 -0
- package/lib/my-account/account-statements/account-statements.component.d.ts +24 -0
- package/lib/my-account/invoice-credit/invoice-credit.component.d.ts +66 -0
- package/lib/my-account/my-account.component.d.ts +26 -0
- package/lib/my-account/my-account.module.d.ts +20 -0
- package/lib/my-team/my-team.component.d.ts +103 -0
- package/lib/my-team/my-team.module.d.ts +18 -0
- package/lib/my-team/team-member.service.d.ts +17 -0
- package/lib/pipes/custom-date-pipe.pipe.d.ts +11 -0
- package/lib/services/account-dropdown-state.service.d.ts +10 -0
- package/lib/services/cart.service.d.ts +15 -0
- package/lib/services/checkout.service.d.ts +17 -0
- package/lib/services/endPointURL.d.ts +156 -0
- package/lib/services/find-store.service.d.ts +14 -0
- package/lib/services/logout.service.d.ts +11 -0
- package/lib/services/my-account.service.d.ts +16 -0
- package/lib/services/order-history.service.d.ts +14 -0
- package/lib/services/order.review.d.ts +11 -0
- package/lib/services/search.service.d.ts +11 -0
- package/lib/services/user-account-detail-service.service.d.ts +40 -0
- package/lib/shared/CustomProduct.d.ts +28 -0
- package/lib/shared/active-saved-cart/active-saved-cart.component.d.ts +58 -0
- package/lib/shared/custom-breadcrum/custom-breadcrum.component.d.ts +30 -0
- package/lib/shared/custom-cart-detail/custom-cart-detail.component.d.ts +32 -0
- package/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.d.ts +81 -0
- package/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.d.ts +72 -0
- package/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.d.ts +100 -0
- package/lib/shared/custom-cart-detail/split.pipe.d.ts +7 -0
- package/lib/shared/date-range-picker/date-range-picker.component.d.ts +39 -0
- package/lib/shared/regEx.validator.d.ts +10 -0
- package/lib/shared/saved-cart-popup/saved-cart-popup.component.d.ts +37 -0
- package/lib/shared/shared-components.module.d.ts +26 -0
- package/lib/shared/shared-download-order/shared-download-order.component.d.ts +40 -0
- package/lib/spa-custom-header.component.d.ts +11 -0
- package/lib/spa-custom-header.module.d.ts +27 -0
- package/lib/spa-custom-header.service.d.ts +6 -0
- package/lib/utils/utils.d.ts +6 -0
- package/lib/utils.d.ts +5 -0
- package/package.json +92 -0
- package/public-api.d.ts +31 -0
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
import { Component, ViewChild } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { CommonUtils } from '../../utils';
|
|
4
|
+
import * as moment from 'moment';
|
|
5
|
+
import { NgxMasonryComponent } from 'ngx-masonry';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../../services/my-account.service";
|
|
8
|
+
import * as i2 from "@spartacus/core";
|
|
9
|
+
import * as i3 from "@angular/common/http";
|
|
10
|
+
import * as i4 from "../../shared/date-range-picker/date-range-picker.component";
|
|
11
|
+
import * as i5 from "ngx-masonry";
|
|
12
|
+
import * as i6 from "@angular/common";
|
|
13
|
+
import * as i7 from "ngx-infinite-scroll";
|
|
14
|
+
import * as i8 from "@angular/forms";
|
|
15
|
+
// Future requirement
|
|
16
|
+
// declare var require: any;
|
|
17
|
+
// const FileSaver = require('file-saver');
|
|
18
|
+
export class InvoiceCreditComponent {
|
|
19
|
+
constructor(myAccountService, cmsService, cd, http) {
|
|
20
|
+
this.myAccountService = myAccountService;
|
|
21
|
+
this.cmsService = cmsService;
|
|
22
|
+
this.cd = cd;
|
|
23
|
+
this.http = http;
|
|
24
|
+
this.listview = true;
|
|
25
|
+
this.isDesktop = true;
|
|
26
|
+
this.isMobile = false;
|
|
27
|
+
this.isTablet = false;
|
|
28
|
+
this.showWaitCursor = new BehaviorSubject(false);
|
|
29
|
+
this.loaderImage = new BehaviorSubject(false);
|
|
30
|
+
this.currentPage = 0;
|
|
31
|
+
this.invoiceCreditList = [];
|
|
32
|
+
this.statusLists = [];
|
|
33
|
+
this.searchText = '';
|
|
34
|
+
this.isClearAll = false;
|
|
35
|
+
this.noSearchResults = false;
|
|
36
|
+
this.sortByValue = 'byDocumentAsc';
|
|
37
|
+
this.selectedOrderType = 'documentNumber';
|
|
38
|
+
this.selectedStatuses = [];
|
|
39
|
+
this.invoiceStates = [];
|
|
40
|
+
this.invoiceTypes = [];
|
|
41
|
+
this.billingStatuses = [];
|
|
42
|
+
this.isInputValue = false;
|
|
43
|
+
this.selectedDateKey = 'dateRange';
|
|
44
|
+
this.isFirstCall = true;
|
|
45
|
+
}
|
|
46
|
+
ngOnInit() {
|
|
47
|
+
this.cmsService
|
|
48
|
+
.getComponentData('EmptySearchInvoicesListComponent')
|
|
49
|
+
.subscribe((data) => {
|
|
50
|
+
if (data) {
|
|
51
|
+
this.noInvoiceCrditData = data.content;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
const orderNumber = this.myAccountService.getOrderNumber();
|
|
55
|
+
if (orderNumber != null) {
|
|
56
|
+
this.searchText = orderNumber;
|
|
57
|
+
this.selectedOrderType = 'orderNumber';
|
|
58
|
+
}
|
|
59
|
+
this.getLastMonthDateRange();
|
|
60
|
+
this.getSearchDropdownData();
|
|
61
|
+
this.getInvoiceCreditData();
|
|
62
|
+
// this.getSearchResults();
|
|
63
|
+
this.onPageRefresh();
|
|
64
|
+
}
|
|
65
|
+
getInvoiceCreditData() {
|
|
66
|
+
this.showWaitCursor.next(true);
|
|
67
|
+
const reqObj = {
|
|
68
|
+
searchParams: this.selectedStatuses,
|
|
69
|
+
};
|
|
70
|
+
this.myAccountService
|
|
71
|
+
.getInvoicesCreditList(reqObj, this.currentPage)
|
|
72
|
+
.subscribe((data) => {
|
|
73
|
+
var _a, _b;
|
|
74
|
+
if (this.isClearAll == true) {
|
|
75
|
+
this.invoiceCreditList = [];
|
|
76
|
+
this.isClearAll = false;
|
|
77
|
+
}
|
|
78
|
+
let date = new Date();
|
|
79
|
+
date.getFullYear();
|
|
80
|
+
date.getMonth();
|
|
81
|
+
date.getDay();
|
|
82
|
+
this.invoiceCreditList = [];
|
|
83
|
+
this.invoiceCreditList = this.invoiceCreditList.concat(data.documents);
|
|
84
|
+
this.statusLists = (_a = data === null || data === void 0 ? void 0 : data.documents) === null || _a === void 0 ? void 0 : _a.status;
|
|
85
|
+
this.invoiceSortLists = data === null || data === void 0 ? void 0 : data.sorts;
|
|
86
|
+
this.totalResults = (_b = data === null || data === void 0 ? void 0 : data.pagination) === null || _b === void 0 ? void 0 : _b.totalResults;
|
|
87
|
+
this.getStatus();
|
|
88
|
+
this.invoiceSortLists.forEach((element) => {
|
|
89
|
+
if (element.code == 'byDocumentDesc') {
|
|
90
|
+
element.value = 'Newest Invoice';
|
|
91
|
+
}
|
|
92
|
+
if (element.code == 'byDocumentAsc') {
|
|
93
|
+
element.value = 'Oldest Invoice';
|
|
94
|
+
}
|
|
95
|
+
if (element.code == 'byPODesc') {
|
|
96
|
+
element.value = 'Highest PO Number';
|
|
97
|
+
}
|
|
98
|
+
if (element.code == 'byPOAsc') {
|
|
99
|
+
element.value = 'Lowest PO Number';
|
|
100
|
+
}
|
|
101
|
+
if (element.code == 'byOrderCodeDesc') {
|
|
102
|
+
element.value = 'Highest Order Number';
|
|
103
|
+
}
|
|
104
|
+
if (element.code == 'byOrderCodeAsc') {
|
|
105
|
+
element.value = 'Lowest Order Number';
|
|
106
|
+
}
|
|
107
|
+
this.loaderImage.next(false);
|
|
108
|
+
this.cd.markForCheck();
|
|
109
|
+
});
|
|
110
|
+
this.cd.markForCheck();
|
|
111
|
+
setTimeout(() => {
|
|
112
|
+
this.isFirstCall = false;
|
|
113
|
+
}, 2000);
|
|
114
|
+
this.showWaitCursor.next(false);
|
|
115
|
+
}, (error) => {
|
|
116
|
+
this.invoiceCreditList = [];
|
|
117
|
+
setTimeout(() => {
|
|
118
|
+
this.isFirstCall = false;
|
|
119
|
+
}, 2000);
|
|
120
|
+
this.showWaitCursor.next(false);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
getStatus() {
|
|
124
|
+
this.invoiceCreditList.forEach((element) => {
|
|
125
|
+
if (element.status == 'open') {
|
|
126
|
+
element.className = 'status-open';
|
|
127
|
+
}
|
|
128
|
+
else if (element.status == 'closed') {
|
|
129
|
+
element.className = 'status-paid';
|
|
130
|
+
}
|
|
131
|
+
else if (element.status == 'paid') {
|
|
132
|
+
element.className = 'status-paid';
|
|
133
|
+
}
|
|
134
|
+
else if (element.status == 'overdue') {
|
|
135
|
+
element.className = 'status-overdue';
|
|
136
|
+
}
|
|
137
|
+
else if (element.status == 'outstanding') {
|
|
138
|
+
element.className = 'status-open';
|
|
139
|
+
}
|
|
140
|
+
else if (element.status == 'refund') {
|
|
141
|
+
element.className = 'status-paid';
|
|
142
|
+
}
|
|
143
|
+
this.loaderImage.next(false);
|
|
144
|
+
this.cd.markForCheck();
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
getLastMonthDateRange() {
|
|
148
|
+
this.selectedDateRange = [moment().subtract(29, 'days'), moment()];
|
|
149
|
+
const dateValue = this.selectedDateRange[0]._d.getDate() +
|
|
150
|
+
'/' +
|
|
151
|
+
(this.selectedDateRange[0]._d.getMonth() + 1) +
|
|
152
|
+
'/' +
|
|
153
|
+
this.selectedDateRange[0]._d.getFullYear() +
|
|
154
|
+
',' +
|
|
155
|
+
this.selectedDateRange[1]._d.getDate() +
|
|
156
|
+
'/' +
|
|
157
|
+
(this.selectedDateRange[1]._d.getMonth() + 1) +
|
|
158
|
+
'/' +
|
|
159
|
+
this.selectedDateRange[1]._d.getFullYear();
|
|
160
|
+
let obj = {
|
|
161
|
+
key: this.selectedDateKey,
|
|
162
|
+
value: dateValue,
|
|
163
|
+
};
|
|
164
|
+
this.selectedStatuses.push(obj);
|
|
165
|
+
}
|
|
166
|
+
getSelectedDate(event) {
|
|
167
|
+
event.name = event.value;
|
|
168
|
+
event.key = 'dateRange';
|
|
169
|
+
this.selectedDateRange = event;
|
|
170
|
+
const ind = this.selectedStatuses.findIndex((element) => element.key == 'dateRange');
|
|
171
|
+
if (ind > -1)
|
|
172
|
+
this.selectedStatuses.splice(ind, 1);
|
|
173
|
+
this.selectedStatuses.push(event);
|
|
174
|
+
this.invoiceCreditList = [];
|
|
175
|
+
if (this.isFirstCall == false) {
|
|
176
|
+
this.getInvoiceCreditData();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
getSearchDropdownData() {
|
|
180
|
+
this.showWaitCursor.next(true);
|
|
181
|
+
this.myAccountService.getInvoiceCreditStatuses().subscribe((data) => {
|
|
182
|
+
if (data) {
|
|
183
|
+
this.invoiceStates = data.states;
|
|
184
|
+
this.invoiceTypes = data.types;
|
|
185
|
+
this.billingStatuses = data.statuses;
|
|
186
|
+
this.cd.markForCheck();
|
|
187
|
+
}
|
|
188
|
+
this.showWaitCursor.next(false);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
clearAll() {
|
|
192
|
+
this.searchText = '';
|
|
193
|
+
this.selectedOrderType = 'documentNumber';
|
|
194
|
+
this.selectedStatuses = [];
|
|
195
|
+
this.invoiceCreditList = [];
|
|
196
|
+
this.noSearchResults = false;
|
|
197
|
+
this.isClearAll = true;
|
|
198
|
+
this.isInputValue = false;
|
|
199
|
+
// this.getLastMonthDateRange();
|
|
200
|
+
// this.getInvoiceCreditData();
|
|
201
|
+
}
|
|
202
|
+
getCheckedInvoiceStatuses(data) {
|
|
203
|
+
const ind = this.selectedStatuses.findIndex((element) => element.value == data.value);
|
|
204
|
+
return ind > -1 ? true : false;
|
|
205
|
+
this.invoiceCreditList = [];
|
|
206
|
+
this.getSearchResults();
|
|
207
|
+
}
|
|
208
|
+
checkInvoiceStatus(event, data, mobileData) {
|
|
209
|
+
var _a;
|
|
210
|
+
this.currentPage = 0;
|
|
211
|
+
if (event.currentTarget.checked) {
|
|
212
|
+
this.selectedStatuses.push(data);
|
|
213
|
+
this.invoiceCreditList = [];
|
|
214
|
+
if (!mobileData) {
|
|
215
|
+
this.getSearchResults();
|
|
216
|
+
}
|
|
217
|
+
this.cd.markForCheck();
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
const ind = this.selectedStatuses.findIndex((element) => element.value == data.value);
|
|
221
|
+
this.selectedStatuses.splice(ind, 1);
|
|
222
|
+
this.invoiceCreditList = [];
|
|
223
|
+
console.log(this.selectedStatuses);
|
|
224
|
+
if (!mobileData && ((_a = this.selectedStatuses) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
225
|
+
this.getSearchResults();
|
|
226
|
+
}
|
|
227
|
+
this.cd.markForCheck();
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
removeChips(data) {
|
|
231
|
+
var _a;
|
|
232
|
+
const ind = this.selectedStatuses.findIndex((element) => element.value == data.value);
|
|
233
|
+
this.selectedStatuses.splice(ind, 1);
|
|
234
|
+
this.invoiceCreditList = [];
|
|
235
|
+
if (((_a = this.selectedStatuses) === null || _a === void 0 ? void 0 : _a.length) == 0) {
|
|
236
|
+
this.invoiceCreditList = [];
|
|
237
|
+
this.noSearchResults = true;
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
this.getInvoiceCreditData();
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
onChange(e) {
|
|
244
|
+
this.selectedOrderType = e.target.value;
|
|
245
|
+
}
|
|
246
|
+
getSearchResults() {
|
|
247
|
+
this.selectedFilters = JSON.parse(JSON.stringify(this.selectedStatuses));
|
|
248
|
+
const obj = {
|
|
249
|
+
key: this.selectedOrderType,
|
|
250
|
+
value: this.searchText,
|
|
251
|
+
};
|
|
252
|
+
if (this.searchText != '') {
|
|
253
|
+
this.selectedStatuses = [];
|
|
254
|
+
this.selectedFilters = [];
|
|
255
|
+
this.selectedFilters.push(obj);
|
|
256
|
+
}
|
|
257
|
+
const reqObj = {
|
|
258
|
+
searchParams: this.selectedFilters,
|
|
259
|
+
};
|
|
260
|
+
this.showWaitCursor.next(true);
|
|
261
|
+
this.myAccountService
|
|
262
|
+
.getInvoiceCreditSearchResults(reqObj, this.currentPage)
|
|
263
|
+
.subscribe((res) => {
|
|
264
|
+
var _a, _b;
|
|
265
|
+
if (res && ((_a = res === null || res === void 0 ? void 0 : res.documents) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
266
|
+
if (this.currentPage > 0) {
|
|
267
|
+
this.invoiceCreditList = this.invoiceCreditList.concat(res === null || res === void 0 ? void 0 : res.documents);
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
this.invoiceCreditList = res === null || res === void 0 ? void 0 : res.documents;
|
|
271
|
+
}
|
|
272
|
+
this.totalResults = (_b = res === null || res === void 0 ? void 0 : res.pagination) === null || _b === void 0 ? void 0 : _b.totalResults;
|
|
273
|
+
this.noSearchResults = false;
|
|
274
|
+
this.getStatus();
|
|
275
|
+
this.cd.markForCheck();
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
this.invoiceCreditList = [];
|
|
279
|
+
this.noSearchResults = true;
|
|
280
|
+
}
|
|
281
|
+
this.showWaitCursor.next(false);
|
|
282
|
+
}, (error) => {
|
|
283
|
+
this.invoiceCreditList = [];
|
|
284
|
+
this.showWaitCursor.next(false);
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
onSearchChange(e) {
|
|
288
|
+
if (e.target.value == '' || e.target.value.indexOf(' ') >= 0) {
|
|
289
|
+
this.isInputValue = false;
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
this.isInputValue = true;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
onSubmit() {
|
|
296
|
+
this.getSearchResults();
|
|
297
|
+
}
|
|
298
|
+
sortBy(e) {
|
|
299
|
+
this.showWaitCursor.next(true);
|
|
300
|
+
this.sortByValue = e.target.value;
|
|
301
|
+
const reqObj = {
|
|
302
|
+
searchParams: this.selectedFilters,
|
|
303
|
+
};
|
|
304
|
+
this.myAccountService.sortInvoiceCredit(this.sortByValue, reqObj).subscribe((res) => {
|
|
305
|
+
this.invoiceCreditList = res === null || res === void 0 ? void 0 : res.documents;
|
|
306
|
+
this.getStatus();
|
|
307
|
+
this.cd.markForCheck();
|
|
308
|
+
this.showWaitCursor.next(false);
|
|
309
|
+
}, (error) => {
|
|
310
|
+
this.showWaitCursor.next(false);
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
toggleGridOrListView(event) {
|
|
314
|
+
event.preventDefault();
|
|
315
|
+
this.listview = !this.listview;
|
|
316
|
+
if (this.listview == false) {
|
|
317
|
+
setTimeout(() => {
|
|
318
|
+
this.reloadMasonaryGrid();
|
|
319
|
+
}, 1000);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
// Future requirement
|
|
323
|
+
// downloadPdf(pdfUrl: any, pdfName: string) {
|
|
324
|
+
// FileSaver.saveAs(pdfUrl, pdfName);
|
|
325
|
+
// }
|
|
326
|
+
reloadMasonaryGrid() {
|
|
327
|
+
if (this.masonry && (CommonUtils.isDesktop() || CommonUtils.isTablet())) {
|
|
328
|
+
this.masonry.reloadItems();
|
|
329
|
+
this.masonry.layout();
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
search() {
|
|
333
|
+
this.currentPage = 0;
|
|
334
|
+
this.getSearchResults();
|
|
335
|
+
}
|
|
336
|
+
loadMoreRecord() {
|
|
337
|
+
this.loaderImage.next(true);
|
|
338
|
+
this.currentPage += 1;
|
|
339
|
+
this.getInvoiceCreditData();
|
|
340
|
+
}
|
|
341
|
+
onScroll() {
|
|
342
|
+
if (!this.noSearchResults &&
|
|
343
|
+
this.totalResults > this.invoiceCreditList.length) {
|
|
344
|
+
this.loadMoreRecord();
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
onResize(event) {
|
|
348
|
+
event.target.innerWidth;
|
|
349
|
+
if (event.target.innerWidth < 992) {
|
|
350
|
+
this.isMobile = true;
|
|
351
|
+
this.isDesktop = false;
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
this.isDesktop = true;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
onPageRefresh() {
|
|
358
|
+
this.isMobile = CommonUtils.isMobile();
|
|
359
|
+
this.isTablet = CommonUtils.isTablet();
|
|
360
|
+
this.isDesktop = CommonUtils.isDesktop();
|
|
361
|
+
}
|
|
362
|
+
ngOnDestroy() {
|
|
363
|
+
this.myAccountService.setOrderNumber('');
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
InvoiceCreditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: InvoiceCreditComponent, deps: [{ token: i1.MyAccountService }, { token: i2.CmsService }, { token: i0.ChangeDetectorRef }, { token: i3.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
|
|
367
|
+
InvoiceCreditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: InvoiceCreditComponent, selector: "app-invoice-credit", viewQueries: [{ propertyName: "masonry", first: true, predicate: NgxMasonryComponent, descendants: true }], ngImport: i0, template: "<div class=\"loading\" *ngIf=\"showWaitCursor | async\">Loading…</div>\r\n<div\r\n class=\"container px-0\"\r\n infiniteScroll\r\n [infiniteScrollDistance]=\"0\"\r\n [infiniteScrollThrottle]=\"1000\"\r\n (scrolled)=\"onScroll()\"\r\n (window:resize)=\"onResize($event)\"\r\n>\r\n <div class=\"invoice-credit-content\">\r\n <span *ngIf=\"isDesktop\" class=\"d-flex justify-content-end\">\r\n <a href=\"javascript:void(0)\" (click)=\"clearAll()\"><u>Clear all</u></a>\r\n </span>\r\n <div class=\"invoice-search-block\">\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <select name=\"\" id=\"\" (change)=\"onChange($event)\">\r\n <option\r\n value=\"documentNumber\"\r\n [selected]=\"selectedOrderType == 'documentNumber'\"\r\n >\r\n Invoice #\r\n </option>\r\n <option\r\n value=\"poNumber\"\r\n [selected]=\"selectedOrderType == 'poNumber'\"\r\n >\r\n PO #\r\n </option>\r\n <option\r\n value=\"orderNumber\"\r\n [selected]=\"selectedOrderType == 'orderNumber'\"\r\n >\r\n Order #\r\n </option>\r\n </select>\r\n </div>\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"searchText\"\r\n (keyup.enter)=\"search()\"\r\n (input)=\"onSearchChange($event)\"\r\n aria-label=\"Text input with dropdown button\"\r\n />\r\n <div class=\"input-group-append\">\r\n <button\r\n type=\"button\"\r\n class=\"btn search-btn\"\r\n (click)=\"search()\"\r\n [disabled]=\"!isInputValue\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-ionic-ios-search.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"filter-block\">\r\n <div class=\"custom-date-input\">\r\n <app-date-range-picker\r\n (selectedDate)=\"getSelectedDate($event)\"\r\n [(ngModel)]=\"selectedDateRange\"\r\n ></app-date-range-picker>\r\n <!-- <img src=\"../../../../assets/images/ic_calender.svg\" alt=\"calender\" class=\"date-icon\"> -->\r\n </div>\r\n <ng-container *ngIf=\"isDesktop; else filterMobile\">\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"orderState\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Invoice State\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderState\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of invoiceStates\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStateLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus($event, { key: 'state', value: data.key })\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"deliveryType\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Invoice Type\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"deliveryType\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of invoiceTypes\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"deliveryTypeLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus($event, {\r\n key: 'documentType',\r\n value: data.key\r\n })\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"orderStatus\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Billing Status\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderStatus\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of billingStatuses\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStatusLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus($event, {\r\n key: 'statuses',\r\n value: data.key\r\n })\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"chips-block\" *ngIf=\"selectedStatuses.length > 0\">\r\n <ng-container *ngIf=\"selectedStatuses && selectedStatuses.length > 0\">\r\n <div class=\"chips\" *ngFor=\"let data of selectedStatuses\">\r\n <p class=\"chip-title\">\r\n {{\r\n data.key == \"state\"\r\n ? \"Invoice State\"\r\n : data.key == \"documentType\"\r\n ? \"Invoice Type\"\r\n : data.key == \"statuses\"\r\n ? \"Billing Status\"\r\n : \"Date Range\"\r\n }}\r\n :\r\n </p>\r\n <span class=\"chip-content ml-1\">{{ data.value }}</span>\r\n <i\r\n class=\"fas fa-times-circle ml-3 close-icon\"\r\n (click)=\"removeChips(data)\"\r\n ></i>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-template #filterMobile>\r\n <button\r\n type=\"button\"\r\n class=\"btn dimond-secondary-btn filter-btn\"\r\n data-toggle=\"modal\"\r\n data-target=\"#filterModal\"\r\n >\r\n More Filters\r\n </button>\r\n </ng-template>\r\n </div>\r\n <hr />\r\n <!-- Filter Modal-->\r\n <div\r\n class=\"modal fade modal-right\"\r\n id=\"filterModal\"\r\n role=\"dialog\"\r\n aria-labelledby=\"inviteMemberLabel\"\r\n aria-hidden=\"true\"\r\n >\r\n <div class=\"modal-dialog modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\"></h5>\r\n <i\r\n class=\"icon-close filter-popup-close\"\r\n (click)=\"clearAll()\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"d-flex justify-content-between main-view\">\r\n <div class=\"filter-head\">\r\n <h3>Filters</h3>\r\n </div>\r\n <a\r\n href=\"javascript:void(0)\"\r\n (click)=\"clearAll()\"\r\n class=\"clearAll\"\r\n >\r\n <u>Clear all</u></a\r\n >\r\n </div>\r\n <div id=\"main\">\r\n <div class=\"accordion\" id=\"faq\">\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead1\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq1\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq1\"\r\n >Invoice State</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq1\"\r\n class=\"collapse show\"\r\n aria-labelledby=\"faqhead1\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of invoiceStates\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStateLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus(\r\n $event,\r\n { key: 'state', value: data.key },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead2\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link collapsed\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq2\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq2\"\r\n >Invoice Type</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq2\"\r\n class=\"collapse\"\r\n aria-labelledby=\"faqhead2\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of invoiceTypes\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"deliveryTypeLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus(\r\n $event,\r\n { key: 'documentType', value: data.key },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead3\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link collapsed\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq3\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq3\"\r\n >Billing Status</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq3\"\r\n class=\"collapse\"\r\n aria-labelledby=\"faqhead3\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of billingStatuses\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStatusLabel\"\r\n [checked]=\"getCheckedInvoiceStatuses(data)\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkInvoiceStatus(\r\n $event,\r\n { key: 'statuses', value: data.key },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.value }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"d-lg-flex d-sm-block justify-content-end d-block fixed-bottom\"\r\n >\r\n <button\r\n type=\"button\"\r\n data-dismiss=\"modal\"\r\n (click)=\"clearAll()\"\r\n class=\"btn mobile-cancel-btn dimond-secondary-btn mr-lg-5\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n type=\"submit\"\r\n data-dismiss=\"modal\"\r\n class=\"btn mobile-save-btn dimond-primary-btn float-right\"\r\n (click)=\"onSubmit()\"\r\n >\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- NO SEARCH RESULTS -->\r\n <ng-container *ngIf=\"invoiceCreditList?.length == 0\">\r\n <div class=\"row empty-accountPage-container text-center\">\r\n <div class=\"col-sm-12 col-md-12 col-12\">\r\n <div class=\"text-center\" [innerHTML]=\"noInvoiceCrditData\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container>\r\n <div class=\"invoice-credit-table\" *ngIf=\"invoiceCreditList?.length > 0\">\r\n <span class=\"total-order\"\r\n >{{ totalResults }} Invoices and Credit Notes found</span\r\n >\r\n <div class=\"d-flex justify-content-between py-3\">\r\n <div>\r\n <div class=\"btn-group\">\r\n <select name=\"\" id=\"\" class=\"mr-3\" (change)=\"sortBy($event)\">\r\n <option\r\n value=\"{{ option.code }}\"\r\n *ngFor=\"let option of invoiceSortLists\"\r\n >\r\n {{ option.value }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"main-view\" *ngIf=\"isDesktop\">\r\n <button\r\n [ngClass]=\"{ active: listview === false }\"\r\n class=\"btn btn-sm\"\r\n (click)=\"toggleGridOrListView($event)\"\r\n >\r\n <img\r\n *ngIf=\"listview === false\"\r\n src=\"../../../assets/images/Grid-light.svg\"\r\n alt=\"gridviewlight\"\r\n />\r\n <img\r\n *ngIf=\"listview === true\"\r\n src=\"../../../assets/images/Grid-dark.svg\"\r\n alt=\"gridviewdark\"\r\n />\r\n Grid\r\n </button>\r\n <button\r\n [ngClass]=\"{ active: listview === true }\"\r\n class=\"btn btn-sm active\"\r\n (click)=\"toggleGridOrListView($event)\"\r\n >\r\n <img\r\n *ngIf=\"listview === true\"\r\n class=\"list-img\"\r\n src=\"../../../assets/images/List-light.svg\"\r\n alt=\"listview\"\r\n />\r\n <img\r\n *ngIf=\"listview === false\"\r\n class=\"list-img\"\r\n src=\"../../../assets/images/List-dark.svg\"\r\n alt=\"listview\"\r\n />\r\n List\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- INVOICE CREDIT LIST -->\r\n <div\r\n class=\"list-view table-responsive\"\r\n *ngIf=\"listview && isDesktop && invoiceCreditList?.length > 0\"\r\n >\r\n <table class=\"table account-list-table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">Date</th>\r\n <th scope=\"col\">Type</th>\r\n <th scope=\"col\">Invoice #</th>\r\n <th scope=\"col\">Order #</th>\r\n <th scope=\"col\">PO #</th>\r\n <th scope=\"col\">Status</th>\r\n <th scope=\"col\">Total <span class=\"gst-text\">excl GST</span></th>\r\n <th scope=\"col\">\r\n Outstanding <span class=\"gst-text\">excl GST</span>\r\n </th>\r\n <th scope=\"col\">Download</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of invoiceCreditList\">\r\n <td>{{ data.date | date : \"dd/MM/yyyy\" }}</td>\r\n <td>{{ data.documentType.name }}</td>\r\n <td>{{ data.documentNumber }}</td>\r\n <td>{{ data.orderNumber }}</td>\r\n <td>{{ data.poNumber }}</td>\r\n <td class=\"status-message {{ data.className }}\">\r\n {{ data.status }}\r\n </td>\r\n <td [ngClass]=\"{ 'negative-price': data.amount < 0 }\">\r\n {{ data.formattedAmount }}\r\n </td>\r\n <td [ngClass]=\"{ 'negative-price': data.openAmount < 0 }\">\r\n {{ data.formattedOpenAmount }}\r\n </td>\r\n <td>\r\n <!-- <a href=\"javascript:void(0)\" (click)=\"downloadPdf(data?.attachments[0]?.downloadURL, data?.attachments[0]?.realFileName)\">\r\n <img src=\"../../../../assets/images/download-icon.svg\" alt=\"download\" class=\"mr-2\">PDF</a> -->\r\n <a\r\n *ngIf=\"data.attachments\"\r\n target=\"_blank\"\r\n href=\"{{ data?.attachments[0]?.downloadURL }}\"\r\n ><img\r\n src=\"../../../../assets/images/download-icon.svg\"\r\n alt=\"download\"\r\n class=\"mr-2\"\r\n />PDF</a\r\n >\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- INVOICE CREDIT GRID -->\r\n <ngx-masonry\r\n class=\"row grid-view\"\r\n *ngIf=\"(!listview || !isDesktop) && invoiceCreditList?.length > 0\"\r\n >\r\n <div\r\n ngxMasonryItem\r\n class=\"col-lg-3 col-md-6 col-sm-12 col-12\"\r\n *ngFor=\"let data of invoiceCreditList\"\r\n >\r\n <div class=\"grid-tile\">\r\n <div class=\"grid-top\">\r\n <table>\r\n <tr>\r\n <th>Invoice #:</th>\r\n <td>{{ data.documentNumber }}</td>\r\n </tr>\r\n <tr>\r\n <th>Type:</th>\r\n <td>{{ data.documentType.name }}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"grid-middle\">\r\n <table>\r\n <tr>\r\n <th>Date:</th>\r\n <td>{{ data.date | date : \"dd/MM/yyyy\" }}</td>\r\n </tr>\r\n <tr>\r\n <th>Order #:</th>\r\n <td>{{ data.orderNumber }}</td>\r\n </tr>\r\n <tr>\r\n <th>PO #:</th>\r\n <td>{{ data.poNumber }}</td>\r\n </tr>\r\n <tr>\r\n <th>Total:</th>\r\n <td [ngClass]=\"{ 'negative-price': data.amount < 0 }\">\r\n {{ data.formattedAmount\r\n }}<span class=\"gst-text\">excl GST</span>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>Outstanding:</th>\r\n <td [ngClass]=\"{ 'negative-price': data.openAmount < 0 }\">\r\n {{ data.formattedOpenAmount\r\n }}<span class=\"gst-text\">excl GST</span>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>Status:</th>\r\n <td class=\"status-message {{ data.className }} status-icon\">\r\n {{ data.status }}\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>Download:</th>\r\n <td>\r\n <!-- Future requirement-->\r\n <!-- <a href=\"javascript:void(0)\" (click)=\"downloadPdf(data?.attachments[0]?.downloadURL, data?.attachments[0]?.realFileName)\">\r\n <img src=\"../../../../assets/images/download-icon.svg\" alt=\"download\" class=\"mr-2\">PDF</a> -->\r\n <a\r\n *ngIf=\"data.attachments\"\r\n target=\"_blank\"\r\n href=\"{{ data?.attachments[0]?.downloadURL }}\"\r\n ><img\r\n src=\"../../../../assets/images/download-icon.svg\"\r\n alt=\"download\"\r\n class=\"mr-2\"\r\n />PDF</a\r\n >\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </ngx-masonry>\r\n </ng-container>\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)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[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}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;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{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}}::ng-deep cx-page-layout.AccountPageTemplate cx-page-slot{max-width:100%!important;padding:0}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-content{margin-top:30px}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block{background-color:#fff;border:1px solid #E0E0E0;padding:35px 30px}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block .drop-down-btn{background-color:#f6f6f6;border:1px solid #E0E0E0;border-radius:0;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block .search-btn{background-color:#000;color:#fff;border-radius:0}::ng-deep cx-page-layout.AccountPageTemplate .invoice-search-block .input-group-prepend select{border:1px solid #E0E0E0;border-right:10px solid #F6F6F6;background-color:#f6f6f6;cursor:pointer;padding:0 10px;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block{padding:20px 30px;border:1px solid #E0E0E0;margin-bottom:2.375rem;position:relative}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input{display:inline-block}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input mat-radio-group{display:none}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-inner-circle{background-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-outer-circle{border-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action{height:40px;border:1px solid #E0E0E0;vertical-align:middle;padding:12px;margin-right:30px;color:#161616;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action::placeholder{color:#1d1d1b}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .date-icon{position:absolute;left:180px;top:43px;height:auto;border:none;cursor:pointer}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;height:40px;width:240px}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .chips-block{margin-top:40px}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips{background-color:#e8e8e8;display:inline-block;margin-bottom:10px;padding:8px 12px;border-radius:20px;margin-right:24px;font-size:var(--fontsize14)}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips .chip-title{display:inline;font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips .chip-content{font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .chips-block .chips .close-icon{cursor:pointer}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem{padding:10px 0 10px 50px;margin-bottom:0}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem input[type=checkbox]{margin-top:.1rem}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table{margin-top:1.25rem}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table select{height:40px;border:1px solid #E0E0E0;padding:0 12px;cursor:pointer;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .total-order{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .history-table-dropdown{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;width:240px;height:40px}::ng-deep cx-page-layout.AccountPageTemplate .invoice-credit-table .history-table-dropdown .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .status-message{text-transform:capitalize}::ng-deep cx-page-layout.AccountPageTemplate .status-default,::ng-deep cx-page-layout.AccountPageTemplate .status-deactive:before,::ng-deep cx-page-layout.AccountPageTemplate .status-open:before,::ng-deep cx-page-layout.AccountPageTemplate .status-paid:before,::ng-deep cx-page-layout.AccountPageTemplate .status-overdue:before{content:\"\";width:8px;height:8px;border-radius:50%;position:absolute;left:0px;top:50%;transform:translate(-50%,-50%)}::ng-deep cx-page-layout.AccountPageTemplate .status-overdue:before{background-color:#d0021b}::ng-deep cx-page-layout.AccountPageTemplate .status-paid:before{background-color:#2aa900}::ng-deep cx-page-layout.AccountPageTemplate .status-open:before{background-color:#ff7d00}::ng-deep cx-page-layout.AccountPageTemplate .status-deactive{color:#8d8d8d}::ng-deep cx-page-layout.AccountPageTemplate .status-deactive:before{background-color:#8d8d8d}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile{border:1px solid #E0E0E0;margin-bottom:30px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-top{padding:15px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-middle{background-color:#fff;padding:15px;border-top:1px solid #E0E0E0;border-bottom:1px solid #E0E0E0}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-middle .status-icon{position:relative;padding-left:10px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table{width:100%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr{vertical-align:baseline;line-height:2rem}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr th{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif;width:50%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr td{font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .price-bold{font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .gst-text{font-size:var(--fontsize14);font-family:\"Arial Regular\",sans-serif;display:block;line-height:10px}::ng-deep cx-page-layout.AccountPageTemplate .noResults{margin:5rem auto}::ng-deep cx-page-layout.AccountPageTemplate .noResults h3{margin-top:1.5rem;font-size:var(--fontsize28);font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table thead{background-color:#646363;height:60px}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table thead th{border-bottom:none;vertical-align:middle;text-align:left;color:#fff;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody tr{background-color:#fff}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody tr:nth-child(even){background-color:#f6f6f6}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody td{position:relative}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody td a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:200px}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table tbody .price-bold{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table .gst-text{font-size:var(--fontsize12);display:block;text-transform:none;font-style:italic}::ng-deep cx-page-layout.AccountPageTemplate .account-list-table .negative-price{color:#d0021b}::ng-deep cx-page-layout.AccountPageTemplate .empty-accountPage-container{margin:5rem auto}#filterModal .modal-body .btn-group{display:block}#filterModal .modal-body .btn-group .custom-dropdown-btn{width:100%;display:flex;justify-content:space-between;border-bottom:1px solid #E0E0E0}#filterModal .modal-body .filter-head h3{font-family:\"Arial Bold\",sans-serif}#filterModal .modal-body .fixed-bottom{position:fixed;right:20px;left:20px}#filterModal .modal-body .mobile-cancel-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-body .mobile-save-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-content{height:100vh}#filterModal .modal-content .filter-popup-close{font-size:1.6rem;color:#1d1d1b}#main{margin:50px 0}#main #faq .card{margin-bottom:30px;border:0}#main #faq .card .card-header{padding:0;border-bottom:1px solid #E0E0E0;background-color:#fff}#main #faq .card .card-header .btn-header-link{display:block;text-align:left;padding-left:0;color:#161616;font-family:\"Arial Bold\",sans-serif}#main #faq .card .card-header .btn-header-link:after{content:\"\\f107\";font-family:\"Font Awesome 5 Free\";font-weight:900;float:right}#main #faq .card .card-header .btn-header-link.collapsed:after{content:\"\\f106\"}#main #faq .card .collapse{border:0}@media screen and (max-width: 991px){.invoice-search-block{background-color:transparent!important;border:none!important;padding:0!important}.invoice-search-block .input-group-prepend select{height:48px}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .fx-date-range-container{display:inline!important}::ng-deep .filter-block .dimond-secondary-btn{margin-bottom:0!important}::ng-deep .filter-block .custom-date-input .date-icon{top:-2px!important;left:150px!important}#filterModal .modal-dialog{margin:0}#filterModal .modal-body .fixed-bottom{position:absolute;right:20px;left:20px}#filterModal .modal-content{width:50%!important;float:right!important}}@media screen and (min-width: 767px){#filterModal .modal-dialog{position:fixed;width:100%;max-width:500px!important;min-width:500px!important;margin-top:0;right:0px;padding-bottom:2rem}}@media screen and (max-width: 768px){.invoice-search-block{background-color:transparent!important;border:none!important;padding:0!important}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .d-flex-mobile{display:flex;align-items:center}::ng-deep .filter-block .custom-date-input .date-icon{position:absolute!important;left:150px!important;top:-2px!important}::ng-deep .filter-block .btn-group .custom-dropdown-btn{width:auto}::ng-deep .filter-block .filter-btn{border:1px solid #E0E0E0!important;float:right;text-transform:none}#filterModal .modal-dialog{margin:0}#filterModal .modal-content{width:100%!important}.input-group-prepend select{height:48px}::ng-deep .fx-date-range-container .md-drppicker.shown{width:100%!important;left:0px!important}::ng-deep .fx-date-range-container .md-drppicker.shown .calendar{max-width:100%}::ng-deep .fx-date-range-container .md-drppicker.shown .btn{width:calc(100% - 15px)!important}::ng-deep .fx-date-range-container .md-drppicker.shown .btn-default{width:calc(100% - 15px)!important;border:1px solid #1D1D1B;margin-right:0!important}}@media screen and (max-width: 440px){#filterModal .modal-body{padding:20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}@media only screen and (min-width: 360px) and (max-width: 440px){::ng-deep .filter-block .custom-date-input .ngx-daterangepicker-action{width:140px}::ng-deep .filter-block .custom-date-input .date-icon{width:auto;left:100px!important}::ng-deep .filter-block .custom-date-input .md-drppicker.double{width:100%}#filterModal .modal-body{padding:15px 20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}\n"], components: [{ type: i4.DateRangePickerComponent, selector: "app-date-range-picker", inputs: ["selectedDateRange"], outputs: ["selectedDate"] }, { type: i5.NgxMasonryComponent, selector: "[ngx-masonry], ngx-masonry", inputs: ["updateLayout", "ordered", "options"], outputs: ["layoutComplete", "removeComplete", "itemsLoaded"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgxMasonryDirective, selector: "[ngxMasonryItem], ngxMasonryItem", inputs: ["prepend"] }], pipes: { "async": i6.AsyncPipe, "date": i6.DatePipe } });
|
|
368
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: InvoiceCreditComponent, decorators: [{
|
|
369
|
+
type: Component,
|
|
370
|
+
args: [{
|
|
371
|
+
selector: 'app-invoice-credit',
|
|
372
|
+
templateUrl: './invoice-credit.component.html',
|
|
373
|
+
styleUrls: ['./invoice-credit.component.scss'],
|
|
374
|
+
}]
|
|
375
|
+
}], ctorParameters: function () { return [{ type: i1.MyAccountService }, { type: i2.CmsService }, { type: i0.ChangeDetectorRef }, { type: i3.HttpClient }]; }, propDecorators: { masonry: [{
|
|
376
|
+
type: ViewChild,
|
|
377
|
+
args: [NgxMasonryComponent, { static: false }]
|
|
378
|
+
}] } });
|
|
379
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1jcmVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9teS1hY2NvdW50L2ludm9pY2UtY3JlZGl0L2ludm9pY2UtY3JlZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvbXktYWNjb3VudC9pbnZvaWNlLWNyZWRpdC9pbnZvaWNlLWNyZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUcxQyxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7QUFFbEQscUJBQXFCO0FBQ3JCLDRCQUE0QjtBQUM1QiwyQ0FBMkM7QUFPM0MsTUFBTSxPQUFPLHNCQUFzQjtJQTZCakMsWUFDVSxnQkFBa0MsRUFDbkMsVUFBc0IsRUFDdEIsRUFBcUIsRUFDcEIsSUFBZ0I7UUFIaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNuQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3BCLFNBQUksR0FBSixJQUFJLENBQVk7UUFoQzFCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsbUJBQWMs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QVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7b0hBNVhVLHNCQUFzQjt3R0FBdEIsc0JBQXNCLG1HQTJCdEIsbUJBQW1CLGdEQzdDaEMsODF0QkFxbEJBOzRGRG5rQmEsc0JBQXNCO2tCQUxsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSxpQ0FBaUM7b0JBQzlDLFNBQVMsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO2lCQUMvQzt5TEE0Qm9ELE9BQU87c0JBQXpELFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tbW9uVXRpbHMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IE15QWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9teS1hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbXNTZXJ2aWNlIH0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE5neE1hc29ucnlDb21wb25lbnQgfSBmcm9tICduZ3gtbWFzb25yeSc7XHJcblxyXG4vLyBGdXR1cmUgcmVxdWlyZW1lbnRcclxuLy8gZGVjbGFyZSB2YXIgcmVxdWlyZTogYW55O1xyXG4vLyBjb25zdCBGaWxlU2F2ZXIgPSByZXF1aXJlKCdmaWxlLXNhdmVyJyk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pbnZvaWNlLWNyZWRpdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ludm9pY2UtY3JlZGl0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnZvaWNlLWNyZWRpdC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW52b2ljZUNyZWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBsaXN0dmlldzogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNEZXNrdG9wID0gdHJ1ZTtcclxuICBpc01vYmlsZSA9IGZhbHNlO1xyXG4gIGlzVGFibGV0ID0gZmFsc2U7XHJcbiAgc2hvd1dhaXRDdXJzb3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBsb2FkZXJJbWFnZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHRvdGFsUmVzdWx0czogYW55O1xyXG4gIGludm9pY2VTb3J0TGlzdHM6IGFueTtcclxuICBjdXJyZW50UGFnZSA9IDA7XHJcbiAgaW52b2ljZUNyZWRpdExpc3Q6IGFueSA9IFtdO1xyXG4gIHN0YXR1c0xpc3RzOiBhbnkgPSBbXTtcclxuICBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcclxuICBpc0NsZWFyQWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbm9TZWFyY2hSZXN1bHRzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc29ydEJ5VmFsdWU6IGFueSA9ICdieURvY3VtZW50QXNjJztcclxuICBzZWxlY3RlZE9yZGVyVHlwZTogYW55ID0gJ2RvY3VtZW50TnVtYmVyJztcclxuICBzZWxlY3RlZFN0YXR1c2VzOiBhbnkgPSBbXTtcclxuICBpbnZvaWNlU3RhdGVzOiBhbnkgPSBbXTtcclxuICBpbnZvaWNlVHlwZXM6IGFueSA9IFtdO1xyXG4gIGJpbGxpbmdTdGF0dXNlczogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRGaWx0ZXJzOiBhbnk7XHJcbiAgaXNJbnB1dFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWREYXRlUmFuZ2U6IGFueTtcclxuICBzZWxlY3RlZERhdGVLZXk6IHN0cmluZyA9ICdkYXRlUmFuZ2UnO1xyXG4gIG5vSW52b2ljZUNyZGl0RGF0YTogYW55O1xyXG4gIGlzRmlyc3RDYWxsOiBib29sZWFuID0gdHJ1ZTtcclxuICBAVmlld0NoaWxkKE5neE1hc29ucnlDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBtYXNvbnJ5OiBOZ3hNYXNvbnJ5Q29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbXlBY2NvdW50U2VydmljZTogTXlBY2NvdW50U2VydmljZSxcclxuICAgIHB1YmxpYyBjbXNTZXJ2aWNlOiBDbXNTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdFbXB0eVNlYXJjaEludm9pY2VzTGlzdENvbXBvbmVudCcpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm5vSW52b2ljZUNyZGl0RGF0YSA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgY29uc3Qgb3JkZXJOdW1iZXI6IGFueSA9IHRoaXMubXlBY2NvdW50U2VydmljZS5nZXRPcmRlck51bWJlcigpO1xyXG4gICAgaWYgKG9yZGVyTnVtYmVyICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gb3JkZXJOdW1iZXI7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUgPSAnb3JkZXJOdW1iZXInO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRMYXN0TW9udGhEYXRlUmFuZ2UoKTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoRHJvcGRvd25EYXRhKCk7XHJcbiAgICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcbiAgICAvLyB0aGlzLmdldFNlYXJjaFJlc3VsdHMoKTtcclxuICAgIHRoaXMub25QYWdlUmVmcmVzaCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW52b2ljZUNyZWRpdERhdGEoKSB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICBjb25zdCByZXFPYmo6IGFueSA9IHtcclxuICAgICAgc2VhcmNoUGFyYW1zOiB0aGlzLnNlbGVjdGVkU3RhdHVzZXMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5teUFjY291bnRTZXJ2aWNlXHJcbiAgICAgIC5nZXRJbnZvaWNlc0NyZWRpdExpc3QocmVxT2JqLCB0aGlzLmN1cnJlbnRQYWdlKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmlzQ2xlYXJBbGwgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuaXNDbGVhckFsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgICAgZGF0ZS5nZXRNb250aCgpO1xyXG4gICAgICAgICAgZGF0ZS5nZXREYXkoKTtcclxuICAgICAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSB0aGlzLmludm9pY2VDcmVkaXRMaXN0LmNvbmNhdChcclxuICAgICAgICAgICAgZGF0YS5kb2N1bWVudHNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnN0YXR1c0xpc3RzID0gZGF0YT8uZG9jdW1lbnRzPy5zdGF0dXM7XHJcbiAgICAgICAgICB0aGlzLmludm9pY2VTb3J0TGlzdHMgPSBkYXRhPy5zb3J0cztcclxuICAgICAgICAgIHRoaXMudG90YWxSZXN1bHRzID0gZGF0YT8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG4gICAgICAgICAgdGhpcy5nZXRTdGF0dXMoKTtcclxuICAgICAgICAgIHRoaXMuaW52b2ljZVNvcnRMaXN0cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlEb2N1bWVudERlc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdOZXdlc3QgSW52b2ljZSc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlEb2N1bWVudEFzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ09sZGVzdCBJbnZvaWNlJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieVBPRGVzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ0hpZ2hlc3QgUE8gTnVtYmVyJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieVBPQXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnTG93ZXN0IFBPIE51bWJlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlPcmRlckNvZGVEZXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnSGlnaGVzdCBPcmRlciBOdW1iZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5T3JkZXJDb2RlQXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnTG93ZXN0IE9yZGVyIE51bWJlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5sb2FkZXJJbWFnZS5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzRmlyc3RDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzRmlyc3RDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdHVzKCkge1xyXG4gICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdvcGVuJykge1xyXG4gICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ3N0YXR1cy1vcGVuJztcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnY2xvc2VkJykge1xyXG4gICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ3N0YXR1cy1wYWlkJztcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAncGFpZCcpIHtcclxuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdzdGF0dXMtcGFpZCc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ292ZXJkdWUnKSB7XHJcbiAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAnc3RhdHVzLW92ZXJkdWUnO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdvdXRzdGFuZGluZycpIHtcclxuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdzdGF0dXMtb3Blbic7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ3JlZnVuZCcpIHtcclxuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdzdGF0dXMtcGFpZCc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sb2FkZXJJbWFnZS5uZXh0KGZhbHNlKTtcclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFzdE1vbnRoRGF0ZVJhbmdlKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IFttb21lbnQoKS5zdWJ0cmFjdCgyOSwgJ2RheXMnKSwgbW9tZW50KCldO1xyXG4gICAgY29uc3QgZGF0ZVZhbHVlID1cclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVswXS5fZC5nZXREYXRlKCkgK1xyXG4gICAgICAnLycgK1xyXG4gICAgICAodGhpcy5zZWxlY3RlZERhdGVSYW5nZVswXS5fZC5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAnLycgK1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzBdLl9kLmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgICAnLCcgK1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzFdLl9kLmdldERhdGUoKSArXHJcbiAgICAgICcvJyArXHJcbiAgICAgICh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzFdLl9kLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICcvJyArXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMV0uX2QuZ2V0RnVsbFllYXIoKTtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIGtleTogdGhpcy5zZWxlY3RlZERhdGVLZXksXHJcbiAgICAgIHZhbHVlOiBkYXRlVmFsdWUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0YXR1c2VzLnB1c2gob2JqKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkRGF0ZShldmVudDogYW55KSB7XHJcbiAgICBldmVudC5uYW1lID0gZXZlbnQudmFsdWU7XHJcbiAgICBldmVudC5rZXkgPSAnZGF0ZVJhbmdlJztcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSBldmVudDtcclxuICAgIGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQua2V5ID09ICdkYXRlUmFuZ2UnXHJcbiAgICApO1xyXG4gICAgaWYgKGluZCA+IC0xKSB0aGlzLnNlbGVjdGVkU3RhdHVzZXMuc3BsaWNlKGluZCwgMSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RhdHVzZXMucHVzaChldmVudCk7XHJcbiAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICBpZiAodGhpcy5pc0ZpcnN0Q2FsbCA9PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hEcm9wZG93bkRhdGEoKSB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLm15QWNjb3VudFNlcnZpY2UuZ2V0SW52b2ljZUNyZWRpdFN0YXR1c2VzKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmludm9pY2VTdGF0ZXMgPSBkYXRhLnN0YXRlcztcclxuICAgICAgICB0aGlzLmludm9pY2VUeXBlcyA9IGRhdGEudHlwZXM7XHJcbiAgICAgICAgdGhpcy5iaWxsaW5nU3RhdHVzZXMgPSBkYXRhLnN0YXR1c2VzO1xyXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGwoKSB7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUgPSAnZG9jdW1lbnROdW1iZXInO1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0YXR1c2VzID0gW107XHJcbiAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0NsZWFyQWxsID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gZmFsc2U7XHJcbiAgICAvLyB0aGlzLmdldExhc3RNb250aERhdGVSYW5nZSgpO1xyXG4gICAgLy8gdGhpcy5nZXRJbnZvaWNlQ3JlZGl0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tlZEludm9pY2VTdGF0dXNlcyhkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudmFsdWUgPT0gZGF0YS52YWx1ZVxyXG4gICAgKTtcclxuICAgIHJldHVybiBpbmQgPiAtMSA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJbnZvaWNlU3RhdHVzKGV2ZW50OiBhbnksIGRhdGE6IGFueSwgbW9iaWxlRGF0YT86IHN0cmluZykge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDA7XHJcbiAgICBpZiAoZXZlbnQuY3VycmVudFRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGF0dXNlcy5wdXNoKGRhdGEpO1xyXG4gICAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICAgIGlmICghbW9iaWxlRGF0YSkge1xyXG4gICAgICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpbmQgPSB0aGlzLnNlbGVjdGVkU3RhdHVzZXMuZmluZEluZGV4KFxyXG4gICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQudmFsdWUgPT0gZGF0YS52YWx1ZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU3RhdHVzZXMuc3BsaWNlKGluZCwgMSk7XHJcbiAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSBbXTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZFN0YXR1c2VzKVxyXG4gICAgICBpZiAoIW1vYmlsZURhdGEgJiYgdGhpcy5zZWxlY3RlZFN0YXR1c2VzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUNoaXBzKGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgaW5kID0gdGhpcy5zZWxlY3RlZFN0YXR1c2VzLmZpbmRJbmRleChcclxuICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC52YWx1ZSA9PSBkYXRhLnZhbHVlXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0YXR1c2VzLnNwbGljZShpbmQsIDEpO1xyXG4gICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTdGF0dXNlcz8ubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUgPSBlLnRhcmdldC52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFJlc3VsdHMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZFN0YXR1c2VzKSk7XHJcbiAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgIGtleTogdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSxcclxuICAgICAgdmFsdWU6IHRoaXMuc2VhcmNoVGV4dCxcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5zZWFyY2hUZXh0ICE9ICcnKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGF0dXNlcyA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycyA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5wdXNoKG9iaik7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXFPYmo6IGFueSA9IHtcclxuICAgICAgc2VhcmNoUGFyYW1zOiB0aGlzLnNlbGVjdGVkRmlsdGVycyxcclxuICAgIH07XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLm15QWNjb3VudFNlcnZpY2VcclxuICAgICAgLmdldEludm9pY2VDcmVkaXRTZWFyY2hSZXN1bHRzKHJlcU9iaiwgdGhpcy5jdXJyZW50UGFnZSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzPy5kb2N1bWVudHM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IHRoaXMuaW52b2ljZUNyZWRpdExpc3QuY29uY2F0KFxyXG4gICAgICAgICAgICAgICAgcmVzPy5kb2N1bWVudHNcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuaW52b2ljZUNyZWRpdExpc3QgPSByZXM/LmRvY3VtZW50cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRvdGFsUmVzdWx0cyA9IHJlcz8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG4gICAgICAgICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmdldFN0YXR1cygpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZvaWNlQ3JlZGl0TGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2hhbmdlKGU6IGFueSkge1xyXG4gICAgaWYgKGUudGFyZ2V0LnZhbHVlID09ICcnIHx8IGUudGFyZ2V0LnZhbHVlLmluZGV4T2YoJyAnKSA+PSAwKSB7XHJcbiAgICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzSW5wdXRWYWx1ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gIH1cclxuXHJcbiAgc29ydEJ5KGU6IGFueSkge1xyXG4gICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5zb3J0QnlWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgY29uc3QgcmVxT2JqOiBhbnkgPSB7XHJcbiAgICAgIHNlYXJjaFBhcmFtczogdGhpcy5zZWxlY3RlZEZpbHRlcnMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5teUFjY291bnRTZXJ2aWNlLnNvcnRJbnZvaWNlQ3JlZGl0KHRoaXMuc29ydEJ5VmFsdWUsIHJlcU9iaikuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmludm9pY2VDcmVkaXRMaXN0ID0gcmVzPy5kb2N1bWVudHM7XHJcbiAgICAgICAgdGhpcy5nZXRTdGF0dXMoKTtcclxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVHcmlkT3JMaXN0VmlldyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5saXN0dmlldyA9ICF0aGlzLmxpc3R2aWV3O1xyXG4gICAgaWYgKHRoaXMubGlzdHZpZXcgPT0gZmFsc2UpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWxvYWRNYXNvbmFyeUdyaWQoKTtcclxuICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIEZ1dHVyZSByZXF1aXJlbWVudFxyXG4gIC8vIGRvd25sb2FkUGRmKHBkZlVybDogYW55LCBwZGZOYW1lOiBzdHJpbmcpIHtcclxuICAvLyAgIEZpbGVTYXZlci5zYXZlQXMocGRmVXJsLCBwZGZOYW1lKTtcclxuICAvLyB9XHJcblxyXG4gIHJlbG9hZE1hc29uYXJ5R3JpZCgpIHtcclxuICAgIGlmICh0aGlzLm1hc29ucnkgJiYgKENvbW1vblV0aWxzLmlzRGVza3RvcCgpIHx8IENvbW1vblV0aWxzLmlzVGFibGV0KCkpKSB7XHJcbiAgICAgIHRoaXMubWFzb25yeS5yZWxvYWRJdGVtcygpXHJcbiAgICAgIHRoaXMubWFzb25yeS5sYXlvdXQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2VhcmNoKCkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDA7XHJcbiAgICB0aGlzLmdldFNlYXJjaFJlc3VsdHMoKTtcclxuICB9XHJcbiAgbG9hZE1vcmVSZWNvcmQoKSB7XHJcbiAgICB0aGlzLmxvYWRlckltYWdlLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlICs9IDE7XHJcbiAgICB0aGlzLmdldEludm9pY2VDcmVkaXREYXRhKCk7XHJcbiAgfVxyXG4gIG9uU2Nyb2xsKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5ub1NlYXJjaFJlc3VsdHMgJiZcclxuICAgICAgdGhpcy50b3RhbFJlc3VsdHMgPiB0aGlzLmludm9pY2VDcmVkaXRMaXN0Lmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubG9hZE1vcmVSZWNvcmQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUmVzaXplKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5pbm5lcldpZHRoIDwgOTkyKSB7XHJcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzRGVza3RvcCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0Rlc2t0b3AgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYWdlUmVmcmVzaCgpIHtcclxuICAgIHRoaXMuaXNNb2JpbGUgPSBDb21tb25VdGlscy5pc01vYmlsZSgpO1xyXG4gICAgdGhpcy5pc1RhYmxldCA9IENvbW1vblV0aWxzLmlzVGFibGV0KCk7XHJcbiAgICB0aGlzLmlzRGVza3RvcCA9IENvbW1vblV0aWxzLmlzRGVza3RvcCgpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubXlBY2NvdW50U2VydmljZS5zZXRPcmRlck51bWJlcignJyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJsb2FkaW5nXCIgKm5nSWY9XCJzaG93V2FpdEN1cnNvciB8IGFzeW5jXCI+TG9hZGluZyYjODIzMDs8L2Rpdj5cclxuPGRpdlxyXG4gIGNsYXNzPVwiY29udGFpbmVyIHB4LTBcIlxyXG4gIGluZmluaXRlU2Nyb2xsXHJcbiAgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMFwiXHJcbiAgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiMTAwMFwiXHJcbiAgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsKClcIlxyXG4gICh3aW5kb3c6cmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImludm9pY2UtY3JlZGl0LWNvbnRlbnRcIj5cclxuICAgIDxzcGFuICpuZ0lmPVwiaXNEZXNrdG9wXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj48dT5DbGVhciBhbGw8L3U+PC9hPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImludm9pY2Utc2VhcmNoLWJsb2NrXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1wcmVwZW5kXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJcIiBpZD1cIlwiIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJkb2N1bWVudE51bWJlclwiXHJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkT3JkZXJUeXBlID09ICdkb2N1bWVudE51bWJlcidcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgSW52b2ljZSAjXHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJwb051bWJlclwiXHJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkT3JkZXJUeXBlID09ICdwb051bWJlcidcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgUE8gI1xyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgIHZhbHVlPVwib3JkZXJOdW1iZXJcIlxyXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZE9yZGVyVHlwZSA9PSAnb3JkZXJOdW1iZXInXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIE9yZGVyICNcclxuICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VhcmNoKClcIlxyXG4gICAgICAgICAgKGlucHV0KT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRleHQgaW5wdXQgd2l0aCBkcm9wZG93biBidXR0b25cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gc2VhcmNoLWJ0blwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2goKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNJbnB1dFZhbHVlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvaWNvbi1pb25pYy1pb3Mtc2VhcmNoLnN2Z1wiXHJcbiAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1ibG9ja1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRhdGUtaW5wdXRcIj5cclxuICAgICAgICA8YXBwLWRhdGUtcmFuZ2UtcGlja2VyXHJcbiAgICAgICAgICAoc2VsZWN0ZWREYXRlKT1cImdldFNlbGVjdGVkRGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlUmFuZ2VcIlxyXG4gICAgICAgID48L2FwcC1kYXRlLXJhbmdlLXBpY2tlcj5cclxuICAgICAgICA8IS0tIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY19jYWxlbmRlci5zdmdcIiBhbHQ9XCJjYWxlbmRlclwiIGNsYXNzPVwiZGF0ZS1pY29uXCI+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGVza3RvcDsgZWxzZSBmaWx0ZXJNb2JpbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGN1c3RvbS1kcm9wZG93bi1idG4gcG9zaXRpb24tcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXRlXCJcclxuICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgSW52b2ljZSBTdGF0ZVxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwib3JkZXJTdGF0ZVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlU3RhdGVzXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0ZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgY2hlY2tJbnZvaWNlU3RhdHVzKCRldmVudCwgeyBrZXk6ICdzdGF0ZScsIHZhbHVlOiBkYXRhLmtleSB9KVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIHt7IGRhdGEudmFsdWUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gY3VzdG9tLWRyb3Bkb3duLWJ0biBwb3NpdGlvbi1yZWxhdGl2ZVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBpZD1cImRlbGl2ZXJ5VHlwZVwiXHJcbiAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxyXG4gICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIEludm9pY2UgVHlwZVxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZGVsaXZlcnlUeXBlXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImRyb3Bkb3duSXRlbVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGludm9pY2VUeXBlc1wiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICBpZD1cImRlbGl2ZXJ5VHlwZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgY2hlY2tJbnZvaWNlU3RhdHVzKCRldmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleTogJ2RvY3VtZW50VHlwZScsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEua2V5XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAge3sgZGF0YS52YWx1ZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBjdXN0b20tZHJvcGRvd24tYnRuIHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0dXNcIlxyXG4gICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcclxuICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBCaWxsaW5nIFN0YXR1c1xyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwib3JkZXJTdGF0dXNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZHJvcGRvd25JdGVtXCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgYmlsbGluZ1N0YXR1c2VzXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0dXNMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkSW52b2ljZVN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrSW52b2ljZVN0YXR1cygkZXZlbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICBrZXk6ICdzdGF0dXNlcycsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEua2V5XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAge3sgZGF0YS52YWx1ZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2hpcHMtYmxvY2tcIiAqbmdJZj1cInNlbGVjdGVkU3RhdHVzZXMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFN0YXR1c2VzICYmIHNlbGVjdGVkU3RhdHVzZXMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBzXCIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc2VsZWN0ZWRTdGF0dXNlc1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImNoaXAtdGl0bGVcIj5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgZGF0YS5rZXkgPT0gXCJzdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgID8gXCJJbnZvaWNlIFN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgOiBkYXRhLmtleSA9PSBcImRvY3VtZW50VHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgID8gXCJJbnZvaWNlIFR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICA6IGRhdGEua2V5ID09IFwic3RhdHVzZXNcIlxyXG4gICAgICAgICAgICAgICAgICA/IFwiQmlsbGluZyBTdGF0dXNcIlxyXG4gICAgICAgICAgICAgICAgICA6IFwiRGF0ZSBSYW5nZVwiXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwLWNvbnRlbnQgbWwtMVwiPnt7IGRhdGEudmFsdWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgZmEtdGltZXMtY2lyY2xlIG1sLTMgY2xvc2UtaWNvblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNoaXBzKGRhdGEpXCJcclxuICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmaWx0ZXJNb2JpbGU+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBkaW1vbmQtc2Vjb25kYXJ5LWJ0biBmaWx0ZXItYnRuXCJcclxuICAgICAgICAgIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxyXG4gICAgICAgICAgZGF0YS10YXJnZXQ9XCIjZmlsdGVyTW9kYWxcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIE1vcmUgRmlsdGVyc1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aHIgLz5cclxuICAgIDwhLS0gRmlsdGVyIE1vZGFsLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibW9kYWwgZmFkZSBtb2RhbC1yaWdodFwiXHJcbiAgICAgIGlkPVwiZmlsdGVyTW9kYWxcIlxyXG4gICAgICByb2xlPVwiZGlhbG9nXCJcclxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiaW52aXRlTWVtYmVyTGFiZWxcIlxyXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgcm9sZT1cImRvY3VtZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj48L2g1PlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1jbG9zZSBmaWx0ZXItcG9wdXAtY2xvc2VcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckFsbCgpXCJcclxuICAgICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlXCJcclxuICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYWluLXZpZXdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWhlYWRcIj5cclxuICAgICAgICAgICAgICAgIDxoMz5GaWx0ZXJzPC9oMz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJBbGwoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyQWxsXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8dT5DbGVhciBhbGw8L3U+PC9hXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBpZD1cIm1haW5cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNjb3JkaW9uXCIgaWQ9XCJmYXFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiIGlkPVwiZmFxaGVhZDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWhlYWRlci1saW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10YXJnZXQ9XCIjZmFxMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZmFxMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+SW52b2ljZSBTdGF0ZTwvYVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJmYXExXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbGxhcHNlIHNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImZhcWhlYWQxXCJcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLXBhcmVudD1cIiNmYXFcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25JdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgaW52b2ljZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXRlTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRJbnZvaWNlU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJbnZvaWNlU3RhdHVzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsga2V5OiAnc3RhdGUnLCB2YWx1ZTogZGF0YS5rZXkgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vYmlsZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhLnZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCIgaWQ9XCJmYXFoZWFkMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taGVhZGVyLWxpbmsgY29sbGFwc2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10YXJnZXQ9XCIjZmFxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZmFxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+SW52b2ljZSBUeXBlPC9hXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBpZD1cImZhcTJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImZhcWhlYWQyXCJcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLXBhcmVudD1cIiNmYXFcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25JdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgaW52b2ljZVR5cGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImRlbGl2ZXJ5VHlwZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkSW52b2ljZVN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSW52b2ljZVN0YXR1cyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleTogJ2RvY3VtZW50VHlwZScsIHZhbHVlOiBkYXRhLmtleSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9iaWxlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGEudmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIiBpZD1cImZhcWhlYWQzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1oZWFkZXItbGluayBjb2xsYXBzZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRhcmdldD1cIiNmYXEzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJmYXEzXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5CaWxsaW5nIFN0YXR1czwvYVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJmYXEzXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbGxhcHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJmYXFoZWFkM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1wYXJlbnQ9XCIjZmFxXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duSXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIGJpbGxpbmdTdGF0dXNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXR1c0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkSW52b2ljZVN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSW52b2ljZVN0YXR1cyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleTogJ3N0YXR1c2VzJywgdmFsdWU6IGRhdGEua2V5IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2JpbGUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YS52YWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtbGctZmxleCBkLXNtLWJsb2NrIGp1c3RpZnktY29udGVudC1lbmQgZC1ibG9jayBmaXhlZC1ib3R0b21cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsKClcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBtb2JpbGUtY2FuY2VsLWJ0biBkaW1vbmQtc2Vjb25kYXJ5LWJ0biBtci1sZy01XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gbW9iaWxlLXNhdmUtYnRuIGRpbW9uZC1wcmltYXJ5LWJ0biBmbG9hdC1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgQXBwbHlcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBOTyBTRUFSQ0ggUkVTVUxUUyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnZvaWNlQ3JlZGl0TGlzdD8ubGVuZ3RoID09IDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBlbXB0eS1hY2NvdW50UGFnZS1jb250YWluZXIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtMTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIFtpbm5lckhUTUxdPVwibm9JbnZvaWNlQ3JkaXREYXRhXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW52b2ljZS1jcmVkaXQtdGFibGVcIiAqbmdJZj1cImludm9pY2VDcmVkaXRMaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b3RhbC1vcmRlclwiXHJcbiAgICAgICAgICA+e3sgdG90YWxSZXN1bHRzIH19IEludm9pY2VzIGFuZCBDcmVkaXQgTm90ZXMgZm91bmQ8L3NwYW5cclxuICAgICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBweS0zXCI+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwiXCIgaWQ9XCJcIiBjbGFzcz1cIm1yLTNcIiAoY2hhbmdlKT1cInNvcnRCeSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgb3B0aW9uLmNvZGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGludm9pY2VTb3J0TGlzdHNcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfX1cclxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tdmlld1wiICpuZ0lmPVwiaXNEZXNrdG9wXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGxpc3R2aWV3ID09PSBmYWxzZSB9XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlR3JpZE9yTGlzdFZpZXcoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImxpc3R2aWV3ID09PSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvR3JpZC1saWdodC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJncmlkdmlld2xpZ2h0XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0dyaWQtZGFyay5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJncmlkdmlld2RhcmtcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIEdyaWRcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogbGlzdHZpZXcgPT09IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVHcmlkT3JMaXN0VmlldygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtaW1nXCJcclxuICAgICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9MaXN0LWxpZ2h0LnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgIGFsdD1cImxpc3R2aWV3XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWltZ1wiXHJcbiAgICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvTGlzdC1kYXJrLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgIGFsdD1cImxpc3R2aWV3XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICBMaXN0XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIElOVk9JQ0UgQ1JFRElUIExJU1QgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImxpc3QtdmlldyB0YWJsZS1yZXNwb25zaXZlXCJcclxuICAgICAgICAqbmdJZj1cImxpc3R2aWV3ICYmIGlzRGVza3RvcCAmJiBpbnZvaWNlQ3JlZGl0TGlzdD8ubGVuZ3RoID4gMFwiXHJcbiAgICAgID5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhY2NvdW50LWxpc3QtdGFibGVcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkRhdGU8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlR5cGU8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkludm9pY2UgIzwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T3JkZXIgIzwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+UE8gIzwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U3RhdHVzPC90aD5cclxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Ub3RhbCA8c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+PC90aD5cclxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIE91dHN0YW5kaW5nIDxzcGFuIGNsYXNzPVwiZ3N0LXRleHRcIj5leGNsIEdTVDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkRvd25sb2FkPC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlQ3JlZGl0TGlzdFwiPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBkYXRhLmRhdGUgfCBkYXRlIDogXCJkZC9NTS95eXl5XCIgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBkYXRhLmRvY3VtZW50VHlwZS5uYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3sgZGF0YS5kb2N1bWVudE51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7IGRhdGEub3JkZXJOdW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBkYXRhLnBvTnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzdGF0dXMtbWVzc2FnZSB7eyBkYXRhLmNsYXNzTmFtZSB9fVwiPlxyXG4gICAgICAgICAgICAgICAge3sgZGF0YS5zdGF0dXMgfX1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ7ICduZWdhdGl2ZS1wcmljZSc6IGRhdGEuYW1vdW50IDwgMCB9XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBkYXRhLmZvcm1hdHRlZEFtb3VudCB9fVxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsgJ25lZ2F0aXZlLXByaWNlJzogZGF0YS5vcGVuQW1vdW50IDwgMCB9XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBkYXRhLmZvcm1hdHRlZE9wZW5BbW91bnQgfX1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJkb3dubG9hZFBkZihkYXRhPy5hdHRhY2htZW50c1swXT8uZG93bmxvYWRVUkwsIGRhdGE/LmF0dGFjaG1lbnRzWzBdPy5yZWFsRmlsZU5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZG93bmxvYWQtaWNvbi5zdmdcIiBhbHQ9XCJkb3dubG9hZFwiIGNsYXNzPVwibXItMlwiPlBERjwvYT4gLS0+XHJcbiAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGEuYXR0YWNobWVudHNcIlxyXG4gICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICBocmVmPVwie3sgZGF0YT8uYXR0YWNobWVudHNbMF0/LmRvd25sb2FkVVJMIH19XCJcclxuICAgICAgICAgICAgICAgICAgPjxpbWdcclxuICAgICAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Rvd25sb2FkLWljb24uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICBhbHQ9XCJkb3dubG9hZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtci0yXCJcclxuICAgICAgICAgICAgICAgICAgLz5QREY8L2FcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gSU5WT0lDRSBDUkVESVQgR1JJRCAtLT5cclxuICAgICAgPG5neC1tYXNvbnJ5XHJcbiAgICAgICAgY2xhc3M9XCJyb3cgZ3JpZC12aWV3XCJcclxuICAgICAgICAqbmdJZj1cIighbGlzdHZpZXcgfHwgIWlzRGVza3RvcCkgJiYgaW52b2ljZUNyZWRpdExpc3Q/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgbmd4TWFzb25yeUl0ZW1cclxuICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29sLW1kLTYgY29sLXNtLTEyIGNvbC0xMlwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpbnZvaWNlQ3JlZGl0TGlzdFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtdGlsZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC10b3BcIj5cclxuICAgICAgICAgICAgICA8dGFibGU+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5JbnZvaWNlICM6PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRkPnt7IGRhdGEuZG9jdW1lbnROdW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRoPlR5cGU6PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRkPnt7IGRhdGEuZG9jdW1lbnRUeXBlLm5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgPHRhYmxlPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+RGF0ZTo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+e3sgZGF0YS5kYXRlIHwgZGF0ZSA6IFwiZGQvTU0veXl5eVwiIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5PcmRlciAjOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD57eyBkYXRhLm9yZGVyTnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5QTyAjOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD57eyBkYXRhLnBvTnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5Ub3RhbDo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgW25nQ2xhc3NdPVwieyAnbmVnYXRpdmUtcHJpY2UnOiBkYXRhLmFtb3VudCA8IDAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGEuZm9ybWF0dGVkQW1vdW50XHJcbiAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+T3V0c3RhbmRpbmc6PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsgJ25lZ2F0aXZlLXByaWNlJzogZGF0YS5vcGVuQW1vdW50IDwgMCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5mb3JtYXR0ZWRPcGVuQW1vdW50XHJcbiAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+U3RhdHVzOjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInN0YXR1cy1tZXNzYWdlIHt7IGRhdGEuY2xhc3NOYW1lIH19IHN0YXR1cy1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5zdGF0dXMgfX1cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5Eb3dubG9hZDo8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBGdXR1cmUgcmVxdWlyZW1lbnQtLT5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZG93bmxvYWRQZGYoZGF0YT8uYXR0YWNobWVudHNbMF0/LmRvd25sb2FkVVJMLCBkYXRhPy5hdHRhY2htZW50c1swXT8ucmVhbEZpbGVOYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZG93bmxvYWQtaWNvbi5zdmdcIiBhbHQ9XCJkb3dubG9hZFwiIGNsYXNzPVwibXItMlwiPlBERjwvYT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5hdHRhY2htZW50c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgaHJlZj1cInt7IGRhdGE/LmF0dGFjaG1lbnRzWzBdPy5kb3dubG9hZFVSTCB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Rvd25sb2FkLWljb24uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiZG93bmxvYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgLz5QREY8L2FcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmd4LW1hc29ucnk+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|