ca-components 1.3.997 → 1.3.998
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/animations/index.mjs +11 -0
- package/esm2022/lib/animations/slide-in-out.animation.mjs +20 -0
- package/esm2022/lib/ca-components.module.mjs +7 -1
- package/esm2022/lib/components/ca-checkbox/ca-checkbox.component.mjs +3 -3
- package/esm2022/lib/components/ca-dropdown-menu/ca-dropdown-menu.component.mjs +8 -5
- package/esm2022/lib/components/ca-dropdown-menu/enums/dropdown-menu.enum.mjs +2 -2
- package/esm2022/lib/components/ca-dropdown-menu/interfaces/dropdown-menu-item.interface.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/ca-input-dropdown-test.component.mjs +19 -35
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-default-template/ca-input-dropdown-default-template.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-details-template/ca-input-dropdown-details-template.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-dispatch/ca-input-dropdown-dispatch.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-double-text-template/ca-input-dropdown-double-text-template.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-fuel-franchise/ca-input-dropdown-fuel-franchise.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-groups/ca-input-dropdown-groups.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-labels/ca-input-dropdown-labels.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-broker/ca-input-dropdown-load-broker-item/ca-input-dropdown-load-broker-item.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-broker/ca-input-dropdown-load-broker.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-broker-contact/ca-input-dropdown-load-broker-contact-item/ca-input-dropdown-load-broker-contact-item.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-broker-contact/ca-input-dropdown-load-broker-contact.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-broker-shipper/ca-input-dropdown-load-broker-shipper-item/ca-input-dropdown-load-broker-shipper-item.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-broker-shipper/ca-input-dropdown-load-broker-shipper.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-dispatcher/ca-input-dropdown-load-dispatcher-item/ca-input-dropdown-load-dispatcher-item.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-dispatcher/ca-input-dropdown-load-dispatcher.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-dispatches-ttd/ca-input-dropdown-load-dispatches-ttd-item/ca-input-dropdown-load-dispatches-ttd-item.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-dispatches-ttd/ca-input-dropdown-load-dispatches-ttd.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-multiselect/ca-input-dropdown-multiselect.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-payroll-trucks/ca-input-dropdown-payroll-trucks.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-svg-template/ca-input-dropdown-svg-template.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-svgtext-dispatch-template/ca-input-dropdown-svgtext-dispatch-template.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-svgtext-template/ca-input-dropdown-svgtext-template-item/ca-input-dropdown-svgtext-template-item.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-svgtext-template/ca-input-dropdown-svgtext-template.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-text-counter/ca-input-dropdown-text-counter.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-triple-text-template/ca-input-dropdown-triple-text-template.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/interfaces/input-dropdown-option.interface.mjs +2 -0
- package/esm2022/lib/components/ca-input-dropdown-test/pipes/dropdown-options.pipe.mjs +4 -2
- package/esm2022/lib/components/ca-input-dropdown-test/pipes/input-dropdown-default-template-class.pipe.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/pipes/input-dropdown-fuel-franchise-class.pipe.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/pipes/input-dropdown-get-icon.pipe.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/pipes/input-dropdown-label-class.pipe.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/pipes/input-dropdown-load-broker-container.pipe.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/pipes/input-dropdown-multiselect-class.pipe.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/pipes/input-dropdown-svgtext-template-container.pipe.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/pipes/input-dropdown-svgtext-template-icon.pipe.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/types/index.mjs +2 -0
- package/esm2022/lib/components/ca-input-dropdown-test/types/input-dropdown-forms.type.mjs +2 -0
- package/esm2022/lib/components/ca-input-dropdown-test/types/select-dropdown-value.type.mjs +2 -0
- package/esm2022/lib/components/ca-input-dropdown-test/validators/dropdown-empty-value.validator.mjs +1 -1
- package/esm2022/lib/components/ca-last-fuel-price-progress/ca-last-fuel-price-progress.component.mjs +22 -13
- package/esm2022/lib/components/ca-last-fuel-price-progress/interfaces/last-fuel-price-progress-config.interface.mjs +1 -1
- package/esm2022/lib/components/ca-last-fuel-price-progress/interfaces/last-fuel-price-progress-data.interface.mjs +1 -1
- package/esm2022/lib/components/ca-map/ca-map.component.mjs +53 -81
- package/esm2022/lib/components/ca-map/utils/helpers/map-marker-icon.helper.mjs +5 -4
- package/esm2022/lib/components/ca-map/utils/services/map-marker-icon.service.mjs +23 -5
- package/esm2022/lib/components/ca-map-dropdown/ca-map-dropdown.component.mjs +41 -8
- package/esm2022/lib/components/ca-map-dropdown/enums/map-dropdown-string.enum.mjs +3 -1
- package/esm2022/lib/components/ca-map-dropdown/models/map-dropdown-content.model.mjs +1 -1
- package/esm2022/lib/components/ca-new-filter/components/ca-filter-list-dropdown/ca-filter-list-dropdown.component.mjs +31 -23
- package/esm2022/lib/components/ca-pickup-delivery-block/ca-pickup-delivery-block.component.mjs +3 -3
- package/esm2022/lib/components/ca-search-multiple-states-2/ca-search-multiple-states-2.component.mjs +112 -0
- package/esm2022/lib/components/ca-search-multiple-states-2/enums/index.mjs +2 -0
- package/esm2022/lib/components/ca-search-multiple-states-2/enums/search-multiple-state-action.enum.mjs +5 -0
- package/esm2022/lib/components/ca-search-multiple-states-2/util/index.mjs +2 -0
- package/esm2022/lib/components/ca-search-multiple-states-2/util/routes/multiple-search-state-svg.route.mjs +6 -0
- package/esm2022/lib/enums/general-actions.enum.mjs +27 -11
- package/esm2022/lib/enums/string-placeholder.enum.mjs +2 -1
- package/esm2022/lib/pipes/date-from-string.pipe.mjs +4 -1
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ca-components.mjs +450 -275
- package/fesm2022/ca-components.mjs.map +1 -1
- package/lib/animations/index.d.ts +10 -0
- package/lib/animations/slide-in-out.animation.d.ts +1 -0
- package/lib/ca-components.module.d.ts +24 -23
- package/lib/components/ca-dropdown-menu/enums/dropdown-menu.enum.d.ts +1 -1
- package/lib/components/ca-dropdown-menu/interfaces/dropdown-menu-item.interface.d.ts +1 -1
- package/lib/components/ca-filters/ca-filter.component.d.ts +2 -2
- package/lib/components/ca-input-dropdown-test/ca-input-dropdown-test.component.d.ts +29 -34
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-default-template/ca-input-dropdown-default-template.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-details-template/ca-input-dropdown-details-template.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-dispatch/ca-input-dropdown-dispatch.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-double-text-template/ca-input-dropdown-double-text-template.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-fuel-franchise/ca-input-dropdown-fuel-franchise.component.d.ts +10 -10
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-groups/ca-input-dropdown-groups.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-labels/ca-input-dropdown-labels.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-broker/ca-input-dropdown-load-broker-item/ca-input-dropdown-load-broker-item.component.d.ts +3 -3
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-broker/ca-input-dropdown-load-broker.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-broker-contact/ca-input-dropdown-load-broker-contact-item/ca-input-dropdown-load-broker-contact-item.component.d.ts +3 -3
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-broker-contact/ca-input-dropdown-load-broker-contact.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-broker-shipper/ca-input-dropdown-load-broker-shipper-item/ca-input-dropdown-load-broker-shipper-item.component.d.ts +4 -4
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-broker-shipper/ca-input-dropdown-load-broker-shipper.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-dispatcher/ca-input-dropdown-load-dispatcher-item/ca-input-dropdown-load-dispatcher-item.component.d.ts +4 -4
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-dispatcher/ca-input-dropdown-load-dispatcher.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-dispatches-ttd/ca-input-dropdown-load-dispatches-ttd-item/ca-input-dropdown-load-dispatches-ttd-item.d.ts +4 -4
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-load-dispatches-ttd/ca-input-dropdown-load-dispatches-ttd.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-multiselect/ca-input-dropdown-multiselect.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-payroll-trucks/ca-input-dropdown-payroll-trucks.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-svg-template/ca-input-dropdown-svg-template.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-svgtext-dispatch-template/ca-input-dropdown-svgtext-dispatch-template.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-svgtext-template/ca-input-dropdown-svgtext-template-item/ca-input-dropdown-svgtext-template-item.component.d.ts +4 -4
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-svgtext-template/ca-input-dropdown-svgtext-template.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-text-counter/ca-input-dropdown-text-counter.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/components/ca-input-dropdown-triple-text-template/ca-input-dropdown-triple-text-template.component.d.ts +6 -6
- package/lib/components/ca-input-dropdown-test/{models/input-dropdown-option.model.d.ts → interfaces/input-dropdown-option.interface.d.ts} +1 -1
- package/lib/components/ca-input-dropdown-test/pipes/dropdown-options.pipe.d.ts +3 -3
- package/lib/components/ca-input-dropdown-test/pipes/input-dropdown-default-template-class.pipe.d.ts +2 -2
- package/lib/components/ca-input-dropdown-test/pipes/input-dropdown-fuel-franchise-class.pipe.d.ts +2 -2
- package/lib/components/ca-input-dropdown-test/pipes/input-dropdown-get-icon.pipe.d.ts +2 -2
- package/lib/components/ca-input-dropdown-test/pipes/input-dropdown-label-class.pipe.d.ts +2 -2
- package/lib/components/ca-input-dropdown-test/pipes/input-dropdown-load-broker-container.pipe.d.ts +2 -2
- package/lib/components/ca-input-dropdown-test/pipes/input-dropdown-multiselect-class.pipe.d.ts +2 -2
- package/lib/components/ca-input-dropdown-test/pipes/input-dropdown-svgtext-template-container.pipe.d.ts +2 -2
- package/lib/components/ca-input-dropdown-test/pipes/input-dropdown-svgtext-template-icon.pipe.d.ts +2 -2
- package/lib/components/ca-input-dropdown-test/types/index.d.ts +1 -0
- package/lib/components/ca-input-dropdown-test/types/input-dropdown-forms.type.d.ts +7 -0
- package/lib/components/ca-input-dropdown-test/types/select-dropdown-value.type.d.ts +7 -0
- package/lib/components/ca-last-fuel-price-progress/ca-last-fuel-price-progress.component.d.ts +1 -0
- package/lib/components/ca-last-fuel-price-progress/interfaces/last-fuel-price-progress-config.interface.d.ts +1 -0
- package/lib/components/ca-last-fuel-price-progress/interfaces/last-fuel-price-progress-data.interface.d.ts +2 -0
- package/lib/components/ca-map/ca-map.component.d.ts +12 -18
- package/lib/components/ca-map/utils/helpers/map-marker-icon.helper.d.ts +1 -1
- package/lib/components/ca-map/utils/services/map-marker-icon.service.d.ts +2 -2
- package/lib/components/ca-map-dropdown/ca-map-dropdown.component.d.ts +5 -1
- package/lib/components/ca-map-dropdown/enums/map-dropdown-string.enum.d.ts +3 -1
- package/lib/components/ca-map-dropdown/models/map-dropdown-content.model.d.ts +2 -1
- package/lib/components/ca-new-filter/components/ca-filter-list-dropdown/ca-filter-list-dropdown.component.d.ts +5 -5
- package/lib/components/ca-search-multiple-states-2/ca-search-multiple-states-2.component.d.ts +32 -0
- package/lib/components/ca-search-multiple-states-2/enums/index.d.ts +1 -0
- package/lib/components/ca-search-multiple-states-2/enums/search-multiple-state-action.enum.d.ts +3 -0
- package/lib/components/ca-search-multiple-states-2/util/index.d.ts +1 -0
- package/lib/components/ca-search-multiple-states-2/util/routes/multiple-search-state-svg.route.d.ts +5 -0
- package/lib/enums/general-actions.enum.d.ts +26 -10
- package/lib/enums/string-placeholder.enum.d.ts +2 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/esm2022/lib/components/ca-input-dropdown-test/models/index.mjs +0 -4
- package/esm2022/lib/components/ca-input-dropdown-test/models/input-dropdown-option.model.mjs +0 -2
- package/esm2022/lib/components/ca-input-dropdown-test/models/load-modal-status.model.mjs +0 -2
- package/esm2022/lib/components/ca-input-dropdown-test/models/status-order.model.mjs +0 -2
- package/lib/components/ca-input-dropdown-test/models/index.d.ts +0 -3
- package/lib/components/ca-input-dropdown-test/models/load-modal-status.model.d.ts +0 -5
- package/lib/components/ca-input-dropdown-test/models/status-order.model.d.ts +0 -4
|
@@ -5,6 +5,7 @@ export var eMapDropdownString;
|
|
|
5
5
|
eMapDropdownString["RATING_REVIEW"] = "rating-review";
|
|
6
6
|
eMapDropdownString["DIVIDER"] = "divider";
|
|
7
7
|
eMapDropdownString["REPAIR_SHOP_SERVICES"] = "repair-shop-services";
|
|
8
|
+
eMapDropdownString["FUEL_PRICE_RANGE"] = "fuel-price-range";
|
|
8
9
|
eMapDropdownString["ICON_TEXT"] = "icon-text";
|
|
9
10
|
eMapDropdownString["TITLE"] = "title";
|
|
10
11
|
eMapDropdownString["TITLE_COUNT"] = "title-count";
|
|
@@ -14,5 +15,6 @@ export var eMapDropdownString;
|
|
|
14
15
|
eMapDropdownString["SUBTITLE"] = "subtitle";
|
|
15
16
|
eMapDropdownString["TEXT"] = "text";
|
|
16
17
|
eMapDropdownString["SMALL_SUBTITLE"] = "small-subtitle";
|
|
18
|
+
eMapDropdownString["DATE"] = "date";
|
|
17
19
|
})(eMapDropdownString || (eMapDropdownString = {}));
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWRyb3Bkb3duLXN0cmluZy5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbWFwLWRyb3Bkb3duL2VudW1zL21hcC1kcm9wZG93bi1zdHJpbmcuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxrQkFpQlQ7QUFqQkgsV0FBWSxrQkFBa0I7SUFDMUIsNkJBQTZCO0lBQzdCLG1EQUE2QixDQUFBO0lBQzdCLHFEQUErQixDQUFBO0lBQy9CLHlDQUFtQixDQUFBO0lBQ25CLG1FQUE2QyxDQUFBO0lBQzdDLDJEQUFxQyxDQUFBO0lBQ3JDLDZDQUF1QixDQUFBO0lBQ3ZCLHFDQUFlLENBQUE7SUFDZixpREFBMkIsQ0FBQTtJQUMzQiwrQ0FBeUIsQ0FBQTtJQUN6QiwrQ0FBeUIsQ0FBQTtJQUN6QiwrQ0FBeUIsQ0FBQTtJQUN6QiwyQ0FBcUIsQ0FBQTtJQUNyQixtQ0FBYSxDQUFBO0lBQ2IsdURBQWlDLENBQUE7SUFDakMsbUNBQWEsQ0FBQTtBQUNmLENBQUMsRUFqQlMsa0JBQWtCLEtBQWxCLGtCQUFrQixRQWlCM0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBlTWFwRHJvcGRvd25TdHJpbmcge1xuICAgIC8vIERyb3Bkb3duIENvbnRlbnQgVGVtcGxhdGVzXG4gICAgSEVBREVSX1RJVExFID0gJ2hlYWRlci10aXRsZScsXG4gICAgUkFUSU5HX1JFVklFVyA9ICdyYXRpbmctcmV2aWV3JyxcbiAgICBESVZJREVSID0gJ2RpdmlkZXInLFxuICAgIFJFUEFJUl9TSE9QX1NFUlZJQ0VTID0gJ3JlcGFpci1zaG9wLXNlcnZpY2VzJyxcbiAgICBGVUVMX1BSSUNFX1JBTkdFID0gJ2Z1ZWwtcHJpY2UtcmFuZ2UnLFxuICAgIElDT05fVEVYVCA9ICdpY29uLXRleHQnLFxuICAgIFRJVExFID0gJ3RpdGxlJyxcbiAgICBUSVRMRV9DT1VOVCA9ICd0aXRsZS1jb3VudCcsXG4gICAgTU9ORVlfVEVYVCA9ICdtb25leS10ZXh0JyxcbiAgICBPUEVOX0hPVVJTID0gJ29wZW4taG91cnMnLFxuICAgIFRFWFRfQ09VTlQgPSAndGV4dC1jb3VudCcsXG4gICAgU1VCVElUTEUgPSAnc3VidGl0bGUnLFxuICAgIFRFWFQgPSAndGV4dCcsXG4gICAgU01BTExfU1VCVElUTEUgPSAnc21hbGwtc3VidGl0bGUnLFxuICAgIERBVEUgPSAnZGF0ZScsXG4gIH1cbiAgIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWRyb3Bkb3duLWNvbnRlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1tYXAtZHJvcGRvd24vbW9kZWxzL21hcC1kcm9wZG93bi1jb250ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIE1hcERyb3Bkb3duQ29udGVudCB7XG4gIG1haW5Db250ZW50PzogTWFwRHJvcGRvd25Db250ZW50SXRlbVtdO1xuICBleHBhbmRlZENvbnRlbnQ/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWRyb3Bkb3duLWNvbnRlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1tYXAtZHJvcGRvd24vbW9kZWxzL21hcC1kcm9wZG93bi1jb250ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIE1hcERyb3Bkb3duQ29udGVudCB7XG4gIG1haW5Db250ZW50PzogTWFwRHJvcGRvd25Db250ZW50SXRlbVtdO1xuICBleHBhbmRlZENvbnRlbnQ/OiBNYXBEcm9wZG93bkNvbnRlbnRJdGVtW107XG4gIGNsdXN0ZXJEYXRhPzogTWFwRHJvcGRvd25DbHVzdGVySXRlbVtdO1xuICBzZWxlY3RlZENsdXN0ZXJJdGVtRGF0YT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBEcm9wZG93bkNvbnRlbnRJdGVtIHtcbiAgdGVtcGxhdGU6XG4gICAgfCAnaGVhZGVyLXRpdGxlJ1xuICAgIHwgJ3JhdGluZy1yZXZpZXcnXG4gICAgfCAnZGl2aWRlcidcbiAgICB8ICdyZXBhaXItc2hvcC1zZXJ2aWNlcydcbiAgICB8ICdmdWVsLXByaWNlLXJhbmdlJ1xuICAgIHwgJ2ljb24tdGV4dCdcbiAgICB8ICd0aXRsZSdcbiAgICB8ICd0aXRsZS1jb3VudCdcbiAgICB8ICdzdWJ0aXRsZSdcbiAgICB8ICd0ZXh0J1xuICAgIHwgJ21vbmV5LXRleHQnXG4gICAgfCAnb3Blbi1ob3VycydcbiAgICB8ICdzbWFsbC1zdWJ0aXRsZSdcbiAgICB8ICd0ZXh0LWNvdW50J1xuICAgIHwgJ3NpZGUtYnktc2lkZSdcbiAgICB8ICdkYXRlJztcbiAgZmllbGQ6IHN0cmluZztcbiAgc2Vjb25kRmllbGQ/OiBzdHJpbmc7XG4gIHRoaXJkRmllbGQ/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbiAgY291bnQ/OiBudW1iZXI7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBpY29uVG9vbHRpcFRleHQ/OiBzdHJpbmc7XG4gIGhhc0JhY2tCdXR0b24/OiBib29sZWFuO1xuICBjdXN0b21DbGFzc0NvbnRhaW5lcj86IHN0cmluZztcbiAgY3VzdG9tQ2xhc3NUZXh0Pzogc3RyaW5nO1xuICBpc0RhdGU/OiBib29sZWFuO1xuICBzaWRlQnlTaWRlSW5mbz86IHtcbiAgICBsZWZ0U2lkZTogTWFwRHJvcGRvd25Db250ZW50SXRlbTtcbiAgICByaWdodFNpZGU6IE1hcERyb3Bkb3duQ29udGVudEl0ZW07XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwRHJvcGRvd25DbHVzdGVySXRlbSB7XG4gIGlkPzogbnVtYmVyO1xuICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgZmF2b3VyaXRlPzogYm9vbGVhbjtcbiAgaXNDbG9zZWQ/OiBib29sZWFuO1xuICBwcmljZVBlckdhbGxvbj86IG51bWJlciB8IG51bGw7XG59XG4iXX0=
|
|
@@ -25,19 +25,19 @@ import * as i1 from "@angular/forms";
|
|
|
25
25
|
import * as i2 from "@angular/common";
|
|
26
26
|
export class CaFilterListDropdownComponent extends NewFilterBaseComponent {
|
|
27
27
|
set type(value) {
|
|
28
|
-
this.
|
|
28
|
+
this.setInitialType(value);
|
|
29
29
|
}
|
|
30
30
|
set list(value) {
|
|
31
|
-
this.
|
|
31
|
+
this.setInitialList(value);
|
|
32
32
|
}
|
|
33
33
|
constructor(formBuilder) {
|
|
34
34
|
super();
|
|
35
35
|
this.formBuilder = formBuilder;
|
|
36
36
|
this.caFiltersSvgRoutes = CaFiltersSvgRoutes;
|
|
37
37
|
this.loadStatusEnum = eLoadStatus;
|
|
38
|
-
this.
|
|
39
|
-
this.
|
|
40
|
-
this.
|
|
38
|
+
this.scrollLimitSize = 8;
|
|
39
|
+
this.previousUnSelectedState = [];
|
|
40
|
+
this.previousSelectedState = [];
|
|
41
41
|
this.selectedList = [];
|
|
42
42
|
this.unselectedList = [];
|
|
43
43
|
this.searchForm = this.formBuilder.group({
|
|
@@ -76,7 +76,8 @@ export class CaFilterListDropdownComponent extends NewFilterBaseComponent {
|
|
|
76
76
|
this.activeCount = 0;
|
|
77
77
|
}
|
|
78
78
|
passFilterValue() {
|
|
79
|
-
this.
|
|
79
|
+
const selectedListIds = this.selectedList?.map((list) => list.id);
|
|
80
|
+
this.emitData(selectedListIds);
|
|
80
81
|
this.selectedCount = this.activeCount;
|
|
81
82
|
}
|
|
82
83
|
sortValues(sorting) {
|
|
@@ -84,10 +85,10 @@ export class CaFilterListDropdownComponent extends NewFilterBaseComponent {
|
|
|
84
85
|
this.directionMultiplier = sorting.directionMultiplier;
|
|
85
86
|
}
|
|
86
87
|
onResetFilterState() {
|
|
87
|
-
// Reset to
|
|
88
|
-
this.selectedList = [...this.
|
|
89
|
-
this.unselectedList = [...this.
|
|
90
|
-
this.selectedCount = this.
|
|
88
|
+
// Reset to previous value, since user didn't save it, he click on outside
|
|
89
|
+
this.selectedList = [...this.previousSelectedState];
|
|
90
|
+
this.unselectedList = [...this.previousUnSelectedState];
|
|
91
|
+
this.selectedCount = this.previousSelectedState.length;
|
|
91
92
|
this.activeCount = this.selectedList.length;
|
|
92
93
|
this.resetInputValue();
|
|
93
94
|
}
|
|
@@ -96,19 +97,26 @@ export class CaFilterListDropdownComponent extends NewFilterBaseComponent {
|
|
|
96
97
|
filterType: this.type,
|
|
97
98
|
selectedIds: list,
|
|
98
99
|
});
|
|
99
|
-
this.
|
|
100
|
-
this.
|
|
100
|
+
this.previousSelectedState = [...this.selectedList];
|
|
101
|
+
this.previousUnSelectedState = [...this.unselectedList];
|
|
101
102
|
this.resetInputValue();
|
|
102
103
|
}
|
|
103
104
|
updateLists() {
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
if (!this._list)
|
|
106
|
+
return;
|
|
107
|
+
this.selectedList = [];
|
|
108
|
+
this.unselectedList = [];
|
|
109
|
+
this._list?.forEach((item) => {
|
|
110
|
+
item.selected
|
|
111
|
+
? (this.selectedList = [...this.selectedList, item])
|
|
112
|
+
: (this.unselectedList = [...this.unselectedList, item]);
|
|
113
|
+
});
|
|
106
114
|
}
|
|
107
115
|
moveItem(item, fromList, toList) {
|
|
108
116
|
const index = fromList.indexOf(item);
|
|
109
117
|
if (index !== -1) {
|
|
110
|
-
fromList
|
|
111
|
-
toList
|
|
118
|
+
fromList?.splice(index, 1);
|
|
119
|
+
toList?.push(item);
|
|
112
120
|
// Update references so list is updated
|
|
113
121
|
this.selectedList = [...this.selectedList];
|
|
114
122
|
this.unselectedList = [...this.unselectedList];
|
|
@@ -118,20 +126,20 @@ export class CaFilterListDropdownComponent extends NewFilterBaseComponent {
|
|
|
118
126
|
calculateSelectedCount() {
|
|
119
127
|
this.activeCount = this.selectedList.length;
|
|
120
128
|
}
|
|
121
|
-
|
|
129
|
+
setInitialList(value) {
|
|
122
130
|
// Pm and truck type don't have id so we need to map names
|
|
123
|
-
this._list = value
|
|
131
|
+
this._list = value?.map((item) => ({
|
|
124
132
|
...item,
|
|
125
133
|
id: item.id ?? item.name,
|
|
126
134
|
initials: FilterHelper.getInitials(item.name),
|
|
127
135
|
}));
|
|
128
136
|
this.updateLists();
|
|
129
137
|
this.initialListSize = value.length;
|
|
130
|
-
this.
|
|
138
|
+
this.previousUnSelectedState = [...this._list];
|
|
131
139
|
this.activeCount = 0;
|
|
132
140
|
this.selectedCount = 0;
|
|
133
141
|
}
|
|
134
|
-
|
|
142
|
+
setInitialType(value) {
|
|
135
143
|
this._type = value;
|
|
136
144
|
this.config = FilterDropdownIconsConst[this._type];
|
|
137
145
|
}
|
|
@@ -139,7 +147,7 @@ export class CaFilterListDropdownComponent extends NewFilterBaseComponent {
|
|
|
139
147
|
this.searchForm.reset();
|
|
140
148
|
}
|
|
141
149
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaFilterListDropdownComponent, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
142
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaFilterListDropdownComponent, isStandalone: true, selector: "app-ca-filter-list-dropdown", inputs: { type: "type", list: "list" }, usesInheritance: true, ngImport: i0, template: "<app-ca-filter-dropdown\n [type]=\"type\"\n [config]=\"config\"\n [bodyTemplate]=\"bodyTemplate\"\n [isFormChanged]=\"!!activeCount\"\n [activeCount]=\"activeCount\"\n [appliedFiltersCount]=\"selectedCount\"\n (handleFiltersClear)=\"clearValues(true)\"\n (setFilter)=\"passFilterValue()\"\n (sorting)=\"sortValues($event)\"\n (resetFilterState)=\"onResetFilterState()\"\n>\n @let isTruck = type === 'TruckType';\n @let isTrailer = type === 'TrailerType';\n @let isPm = type === 'Pm';\n @let isService = type === 'Service';\n @let isTruckOrTrailer = isTruck || isTrailer;\n @let hasLeftIcon = isPm || isService;\n <ng-template #bodyTemplate>\n @if (\n initialListSize > srollLimitSize &&\n config &&\n config.isSearchActive &&\n config.formFieldConfig\n ) {\n <div [formGroup]=\"searchForm\">\n <app-ca-input\n formControlName=\"search\"\n [inputConfig]=\"config.formFieldConfig\"\n ></app-ca-input>\n </div>\n }\n <div\n class=\"filter-dropdown-list\"\n [class.ca-scroll-bar]=\"initialListSize > srollLimitSize\"\n >\n <ng-container *ngTemplateOutlet=\"divider\"></ng-container>\n @let searchString = searchForm.get('search')?.value;\n\n <!-- Selected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n selectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n clickFn: unSelectItem,\n selectedList: true,\n }\n \"\n ></ng-container>\n\n <!-- Unselected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n unselectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n clickFn: selectItem,\n selectedList: false,\n }\n \"\n ></ng-container>\n </div>\n </ng-template>\n\n <ng-template\n #listTemplate\n let-items=\"items\"\n let-clickFn=\"clickFn\"\n let-isSelectedList=\"selectedList\"\n >\n @if (items.length) {\n <div class=\"d-flex flex-column gap-xs mb-1 margin-t-4\">\n @for (item of items; track $index) {\n <div\n class=\"filter-dropdown-list-item padding-4 br-2 d-flex justify-content-between align-items-center c-pointer\"\n [ngClass]=\"{\n 'filter-dropdown-list-item-hover': isSelectedList,\n\n 'svg-hover-grey-4 svg-fill-muted':\n hasLeftIcon && !isSelectedList,\n\n 'svg-hover-blue-19 svg-fill-blue-8':\n hasLeftIcon && isSelectedList,\n }\"\n (click)=\"clickFn(item)\"\n >\n <div\n class=\"d-flex align-items-center w-100 margin-r-4\"\n [class.justify-content-between]=\"isTruckOrTrailer\"\n >\n @if (type === 'Dispatcher') {\n <app-ca-profile-image\n [indx]=\"$index\"\n [textShortName]=\"item.initials\"\n [avatarImg]=\"item.avatar?.url\"\n [size]=\"'small'\"\n class=\"margin-r-4\"\n ></app-ca-profile-image>\n } @else if (type === 'Status') {\n <div\n [ngStyle]=\"\n loadStatusEnum[item.id!]\n | dropdownLoadStatusColor: true\n \"\n class=\"filter-dropdown-list-item-status-circle br-circle margin-r-4\"\n ></div>\n } @else if (hasLeftIcon) {\n <svg-icon\n [src]=\"item.icon\"\n class=\"margin-r-4 svg-size-18\"\n ></svg-icon>\n }\n\n <div\n class=\"text-color-white text-size-14\"\n [class.ca-font-extra-bold]=\"isSelectedList\"\n [class.text-uppercase]=\"type === 'Status'\"\n >\n {{ item.name }}\n </div>\n\n @if (isTruckOrTrailer) {\n @if (item.icon) {\n <div\n class=\"filter-dropdown-list-item-icons\"\n [ngStyle]=\"{\n '--svg-fill-color':\n truckOrTrailerIconPipe.transform(\n item.name\n ),\n }\"\n >\n <svg-icon [src]=\"item.icon\"></svg-icon>\n </div>\n }\n }\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n count: item.count,\n isSelected: isSelectedList,\n }\n \"\n ></ng-container>\n\n @if (isSelectedList) {\n <svg-icon\n [src]=\"caFiltersSvgRoutes.removeSelectedValue\"\n class=\"svg-size-10 svg-fill-red-10 filter-dropdown-list-item-remove justify-content-center filter-dropdown-list-badge\"\n ></svg-icon>\n }\n </div>\n }\n </div>\n <ng-container *ngTemplateOutlet=\"divider\"></ng-container>\n }\n </ng-template>\n\n <!-- Divider Template -->\n <ng-template #divider>\n <div class=\"background-black br-2 height-1\"></div>\n </ng-template>\n\n <ng-template #itemTemplate let-count=\"count\" let-isSelected=\"isSelected\">\n <!-- Count can be undefined for example on assign dispatch load list, or it can be 0 as well for some dispatchers -->\n @if (count !== undefined) {\n <div\n class=\"br-10 filter-dropdown-list-item-count text-size-11 ca-font-semi-bold padding-y-2 padding-x-5 d-flex align-items-center justify-content-center filter-dropdown-list-badge\"\n [ngClass]=\"\n isSelected\n ? 'background-blue-14 text-color-white'\n : 'background-black text-color-white-4'\n \"\n >\n {{ count }}\n </div>\n }\n </ng-template>\n</app-ca-filter-dropdown>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CaInputComponent, selector: "app-ca-input", inputs: ["inputConfig", "dateTimePopover", "incorrectValue", "selectedDropdownLabelColor", "template"], outputs: ["handleToggleDropdownOptions", "incorrectEvent", "blurInput", "focusInput", "change", "commandEvent", "clear", "showHideDropdown", "dropDownKeyNavigation"] }, { kind: "component", type: CaFilterDropdownComponent, selector: "app-ca-filter-dropdown", inputs: ["activeCount", "type", "config", "bodyTemplate", "isFormChanged", "appliedFiltersCount", "customTitle", "customCancelButton"], outputs: ["setFilter", "handleFiltersClear", "resetFilterState", "sorting"] }, { kind: "component", type: CaProfileImageComponent, selector: "app-ca-profile-image", inputs: ["indx", "avatarImg", "avatarColor", "textShortName", "name", "isRound", "size", "height", "fontSize", "isHoverEffect"] }, { kind: "component", type: SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "pipe", type: DropdownLoadStatusColorPipe, name: "dropdownLoadStatusColor" }, { kind: "pipe", type: FilterSearchPipe, name: "filterSearch" }] }); }
|
|
150
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaFilterListDropdownComponent, isStandalone: true, selector: "app-ca-filter-list-dropdown", inputs: { type: "type", list: "list" }, usesInheritance: true, ngImport: i0, template: "<app-ca-filter-dropdown\n [type]=\"type\"\n [config]=\"config\"\n [bodyTemplate]=\"bodyTemplate\"\n [isFormChanged]=\"!!activeCount\"\n [activeCount]=\"activeCount\"\n [appliedFiltersCount]=\"selectedCount\"\n (handleFiltersClear)=\"clearValues(true)\"\n (setFilter)=\"passFilterValue()\"\n (sorting)=\"sortValues($event)\"\n (resetFilterState)=\"onResetFilterState()\"\n>\n @let isTruck = type === 'TruckType';\n @let isTrailer = type === 'TrailerType';\n @let isPm = type === 'Pm';\n @let isService = type === 'Service';\n @let isTruckOrTrailer = isTruck || isTrailer;\n @let hasLeftIcon = isPm || isService;\n <ng-template #bodyTemplate>\n @if (\n initialListSize > scrollLimitSize &&\n config &&\n config.isSearchActive &&\n config.formFieldConfig\n ) {\n <div [formGroup]=\"searchForm\">\n <app-ca-input\n formControlName=\"search\"\n [inputConfig]=\"config.formFieldConfig\"\n ></app-ca-input>\n </div>\n }\n <div\n class=\"filter-dropdown-list\"\n [class.ca-scroll-bar]=\"initialListSize > scrollLimitSize\"\n >\n <ng-container *ngTemplateOutlet=\"divider\"></ng-container>\n @let searchString = searchForm?.get('search')?.value;\n\n <!-- Selected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n selectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n clickFn: unSelectItem,\n selectedList: true,\n }\n \"\n ></ng-container>\n\n <!-- Unselected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n unselectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n clickFn: selectItem,\n selectedList: false,\n }\n \"\n ></ng-container>\n </div>\n </ng-template>\n\n <ng-template\n #listTemplate\n let-items=\"items\"\n let-clickFn=\"clickFn\"\n let-isSelectedList=\"selectedList\"\n >\n @if (items.length) {\n <div class=\"d-flex flex-column gap-xs mb-1 margin-t-4\">\n @for (item of items; let indx = $index; track indx) {\n <div\n class=\"filter-dropdown-list-item padding-4 br-2 d-flex justify-content-between align-items-center c-pointer\"\n [ngClass]=\"{\n 'filter-dropdown-list-item-hover': isSelectedList,\n\n 'svg-hover-grey-4 svg-fill-muted':\n hasLeftIcon && !isSelectedList,\n\n 'svg-hover-blue-19 svg-fill-blue-8':\n hasLeftIcon && isSelectedList,\n }\"\n (click)=\"clickFn(item)\"\n >\n <div\n class=\"d-flex align-items-center w-100 margin-r-4\"\n [class.justify-content-between]=\"isTruckOrTrailer\"\n >\n @switch (type) {\n @case ('Dispatcher') {\n <app-ca-profile-image\n [indx]=\"$index\"\n [textShortName]=\"item.initials\"\n [avatarImg]=\"item.avatar?.url\"\n [size]=\"'small'\"\n class=\"margin-r-4\"\n ></app-ca-profile-image>\n }\n @case ('Status') {\n <div\n [ngStyle]=\"\n loadStatusEnum[item.id!]\n | dropdownLoadStatusColor: true\n \"\n class=\"filter-dropdown-list-item-status-circle br-circle margin-r-4\"\n ></div>\n }\n @default {\n @if (hasLeftIcon) {\n <svg-icon\n [src]=\"item.icon\"\n class=\"margin-r-4 svg-size-18\"\n ></svg-icon>\n }\n }\n }\n\n <div\n class=\"text-color-white text-size-14\"\n [class.ca-font-extra-bold]=\"isSelectedList\"\n [class.text-uppercase]=\"type === 'Status'\"\n >\n {{ item.name }}\n </div>\n\n @if (isTruckOrTrailer) {\n @if (item?.icon) {\n <div\n class=\"filter-dropdown-list-item-icons\"\n [ngStyle]=\"{\n '--svg-fill-color':\n truckOrTrailerIconPipe.transform(\n item.name\n ),\n }\"\n >\n <svg-icon [src]=\"item.icon\"></svg-icon>\n </div>\n }\n }\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n count: item.count,\n isSelected: isSelectedList,\n }\n \"\n ></ng-container>\n\n @if (isSelectedList) {\n <svg-icon\n [src]=\"caFiltersSvgRoutes.removeSelectedValue\"\n class=\"svg-size-10 svg-fill-red-10 filter-dropdown-list-item-remove justify-content-center filter-dropdown-list-badge\"\n ></svg-icon>\n }\n </div>\n }\n </div>\n <ng-container *ngTemplateOutlet=\"divider\"></ng-container>\n }\n </ng-template>\n\n <!-- Divider Template -->\n <ng-template #divider>\n <div class=\"background-black br-2 height-1\"></div>\n </ng-template>\n\n <ng-template #itemTemplate let-count=\"count\" let-isSelected=\"isSelected\">\n <!-- Count can be undefined for example on assign dispatch load list, or it can be 0 as well for some dispatchers -->\n @if (count !== undefined) {\n <div\n class=\"br-10 filter-dropdown-list-item-count text-size-11 ca-font-semi-bold padding-y-2 padding-x-5 d-flex align-items-center justify-content-center filter-dropdown-list-badge\"\n [ngClass]=\"\n isSelected\n ? 'background-blue-14 text-color-white'\n : 'background-black text-color-white-4'\n \"\n >\n {{ count }}\n </div>\n }\n </ng-template>\n</app-ca-filter-dropdown>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CaInputComponent, selector: "app-ca-input", inputs: ["inputConfig", "dateTimePopover", "incorrectValue", "selectedDropdownLabelColor", "template"], outputs: ["handleToggleDropdownOptions", "incorrectEvent", "blurInput", "focusInput", "change", "commandEvent", "clear", "showHideDropdown", "dropDownKeyNavigation"] }, { kind: "component", type: CaFilterDropdownComponent, selector: "app-ca-filter-dropdown", inputs: ["activeCount", "type", "config", "bodyTemplate", "isFormChanged", "appliedFiltersCount", "customTitle", "customCancelButton"], outputs: ["setFilter", "handleFiltersClear", "resetFilterState", "sorting"] }, { kind: "component", type: CaProfileImageComponent, selector: "app-ca-profile-image", inputs: ["indx", "avatarImg", "avatarColor", "textShortName", "name", "isRound", "size", "height", "fontSize", "isHoverEffect"] }, { kind: "component", type: SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "pipe", type: DropdownLoadStatusColorPipe, name: "dropdownLoadStatusColor" }, { kind: "pipe", type: FilterSearchPipe, name: "filterSearch" }] }); }
|
|
143
151
|
}
|
|
144
152
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaFilterListDropdownComponent, decorators: [{
|
|
145
153
|
type: Component,
|
|
@@ -154,10 +162,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
154
162
|
FilterTruckColorPipe,
|
|
155
163
|
FilterTrailerColorPipe,
|
|
156
164
|
FilterSearchPipe,
|
|
157
|
-
], template: "<app-ca-filter-dropdown\n [type]=\"type\"\n [config]=\"config\"\n [bodyTemplate]=\"bodyTemplate\"\n [isFormChanged]=\"!!activeCount\"\n [activeCount]=\"activeCount\"\n [appliedFiltersCount]=\"selectedCount\"\n (handleFiltersClear)=\"clearValues(true)\"\n (setFilter)=\"passFilterValue()\"\n (sorting)=\"sortValues($event)\"\n (resetFilterState)=\"onResetFilterState()\"\n>\n @let isTruck = type === 'TruckType';\n @let isTrailer = type === 'TrailerType';\n @let isPm = type === 'Pm';\n @let isService = type === 'Service';\n @let isTruckOrTrailer = isTruck || isTrailer;\n @let hasLeftIcon = isPm || isService;\n <ng-template #bodyTemplate>\n @if (\n initialListSize >
|
|
165
|
+
], template: "<app-ca-filter-dropdown\n [type]=\"type\"\n [config]=\"config\"\n [bodyTemplate]=\"bodyTemplate\"\n [isFormChanged]=\"!!activeCount\"\n [activeCount]=\"activeCount\"\n [appliedFiltersCount]=\"selectedCount\"\n (handleFiltersClear)=\"clearValues(true)\"\n (setFilter)=\"passFilterValue()\"\n (sorting)=\"sortValues($event)\"\n (resetFilterState)=\"onResetFilterState()\"\n>\n @let isTruck = type === 'TruckType';\n @let isTrailer = type === 'TrailerType';\n @let isPm = type === 'Pm';\n @let isService = type === 'Service';\n @let isTruckOrTrailer = isTruck || isTrailer;\n @let hasLeftIcon = isPm || isService;\n <ng-template #bodyTemplate>\n @if (\n initialListSize > scrollLimitSize &&\n config &&\n config.isSearchActive &&\n config.formFieldConfig\n ) {\n <div [formGroup]=\"searchForm\">\n <app-ca-input\n formControlName=\"search\"\n [inputConfig]=\"config.formFieldConfig\"\n ></app-ca-input>\n </div>\n }\n <div\n class=\"filter-dropdown-list\"\n [class.ca-scroll-bar]=\"initialListSize > scrollLimitSize\"\n >\n <ng-container *ngTemplateOutlet=\"divider\"></ng-container>\n @let searchString = searchForm?.get('search')?.value;\n\n <!-- Selected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n selectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n clickFn: unSelectItem,\n selectedList: true,\n }\n \"\n ></ng-container>\n\n <!-- Unselected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n unselectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n clickFn: selectItem,\n selectedList: false,\n }\n \"\n ></ng-container>\n </div>\n </ng-template>\n\n <ng-template\n #listTemplate\n let-items=\"items\"\n let-clickFn=\"clickFn\"\n let-isSelectedList=\"selectedList\"\n >\n @if (items.length) {\n <div class=\"d-flex flex-column gap-xs mb-1 margin-t-4\">\n @for (item of items; let indx = $index; track indx) {\n <div\n class=\"filter-dropdown-list-item padding-4 br-2 d-flex justify-content-between align-items-center c-pointer\"\n [ngClass]=\"{\n 'filter-dropdown-list-item-hover': isSelectedList,\n\n 'svg-hover-grey-4 svg-fill-muted':\n hasLeftIcon && !isSelectedList,\n\n 'svg-hover-blue-19 svg-fill-blue-8':\n hasLeftIcon && isSelectedList,\n }\"\n (click)=\"clickFn(item)\"\n >\n <div\n class=\"d-flex align-items-center w-100 margin-r-4\"\n [class.justify-content-between]=\"isTruckOrTrailer\"\n >\n @switch (type) {\n @case ('Dispatcher') {\n <app-ca-profile-image\n [indx]=\"$index\"\n [textShortName]=\"item.initials\"\n [avatarImg]=\"item.avatar?.url\"\n [size]=\"'small'\"\n class=\"margin-r-4\"\n ></app-ca-profile-image>\n }\n @case ('Status') {\n <div\n [ngStyle]=\"\n loadStatusEnum[item.id!]\n | dropdownLoadStatusColor: true\n \"\n class=\"filter-dropdown-list-item-status-circle br-circle margin-r-4\"\n ></div>\n }\n @default {\n @if (hasLeftIcon) {\n <svg-icon\n [src]=\"item.icon\"\n class=\"margin-r-4 svg-size-18\"\n ></svg-icon>\n }\n }\n }\n\n <div\n class=\"text-color-white text-size-14\"\n [class.ca-font-extra-bold]=\"isSelectedList\"\n [class.text-uppercase]=\"type === 'Status'\"\n >\n {{ item.name }}\n </div>\n\n @if (isTruckOrTrailer) {\n @if (item?.icon) {\n <div\n class=\"filter-dropdown-list-item-icons\"\n [ngStyle]=\"{\n '--svg-fill-color':\n truckOrTrailerIconPipe.transform(\n item.name\n ),\n }\"\n >\n <svg-icon [src]=\"item.icon\"></svg-icon>\n </div>\n }\n }\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n count: item.count,\n isSelected: isSelectedList,\n }\n \"\n ></ng-container>\n\n @if (isSelectedList) {\n <svg-icon\n [src]=\"caFiltersSvgRoutes.removeSelectedValue\"\n class=\"svg-size-10 svg-fill-red-10 filter-dropdown-list-item-remove justify-content-center filter-dropdown-list-badge\"\n ></svg-icon>\n }\n </div>\n }\n </div>\n <ng-container *ngTemplateOutlet=\"divider\"></ng-container>\n }\n </ng-template>\n\n <!-- Divider Template -->\n <ng-template #divider>\n <div class=\"background-black br-2 height-1\"></div>\n </ng-template>\n\n <ng-template #itemTemplate let-count=\"count\" let-isSelected=\"isSelected\">\n <!-- Count can be undefined for example on assign dispatch load list, or it can be 0 as well for some dispatchers -->\n @if (count !== undefined) {\n <div\n class=\"br-10 filter-dropdown-list-item-count text-size-11 ca-font-semi-bold padding-y-2 padding-x-5 d-flex align-items-center justify-content-center filter-dropdown-list-badge\"\n [ngClass]=\"\n isSelected\n ? 'background-blue-14 text-color-white'\n : 'background-black text-color-white-4'\n \"\n >\n {{ count }}\n </div>\n }\n </ng-template>\n</app-ca-filter-dropdown>\n" }]
|
|
158
166
|
}], ctorParameters: () => [{ type: i1.UntypedFormBuilder }], propDecorators: { type: [{
|
|
159
167
|
type: Input
|
|
160
168
|
}], list: [{
|
|
161
169
|
type: Input
|
|
162
170
|
}] } });
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtZmlsdGVyLWxpc3QtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbmV3LWZpbHRlci9jb21wb25lbnRzL2NhLWZpbHRlci1saXN0LWRyb3Bkb3duL2NhLWZpbHRlci1saXN0LWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW5ldy1maWx0ZXIvY29tcG9uZW50cy9jYS1maWx0ZXItbGlzdC1kcm9wZG93bi9jYS1maWx0ZXItbGlzdC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEdBS1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFzQixNQUFNLGdCQUFnQixDQUFDO0FBRXpFLFFBQVE7QUFDUixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBU2hELG9CQUFvQjtBQUNwQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxhQUFhO0FBQ2IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1B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QUs7Z0JBTUYsSUFBSTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFBpcGVUcmFuc2Zvcm0sXG4gICAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8vIEVudW1zXG5pbXBvcnQgeyBlRmlsdGVyRHJvcGRvd25FbnVtLCBlRmlsdGVyU29ydGluZ0tleSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IGVMb2FkU3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW51bXMnO1xuXG4vLyBUeXBlcyAmIEludGVyZmFjZXNcbmltcG9ydCB7IEZpbHRlckRyb3Bkb3duVHlwZXMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge1xuICAgIElGaWx0ZXJEcm9wZG93bkxpc3QsXG4gICAgSVNvcnRFbWl0LFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2UnO1xuXG4vLyBDb25zdGFudHMgJiBVdGlsc1xuaW1wb3J0IHsgQ2FGaWx0ZXJzU3ZnUm91dGVzIH0gZnJvbSAnLi4vLi4vLi4vY2EtZmlsdGVycy91dGlscy9zdmctcm91dGVzJztcbmltcG9ydCB7IEZpbHRlckRyb3Bkb3duSWNvbnNDb25zdCB9IGZyb20gJy4uLy4uL2NvbnN0YW50JztcblxuLy8gQ29tcG9uZW50c1xuaW1wb3J0IHsgQ2FGaWx0ZXJEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NhLWZpbHRlci1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FQcm9maWxlSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jYS1wcm9maWxlLWltYWdlL2NhLXByb2ZpbGUtaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jYS1pbnB1dC9jYS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmV3RmlsdGVyQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL25ldy1maWx0ZXItYmFzZS9uZXctZmlsdGVyLWJhc2UuY29tcG9uZW50JztcblxuLy8gUGlwZXNcbmltcG9ydCB7XG4gICAgRmlsdGVyVHJhaWxlckNvbG9yUGlwZSxcbiAgICBGaWx0ZXJUcnVja0NvbG9yUGlwZSxcbn0gZnJvbSAnLi4vLi4vLi4vY2EtZmlsdGVycy9waXBlcyc7XG5pbXBvcnQgeyBEcm9wZG93bkxvYWRTdGF0dXNDb2xvclBpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi9waXBlcyc7XG5pbXBvcnQgeyBGaWx0ZXJTZWFyY2hQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvZmlsdGVyLXNlYXJjaC5waXBlJztcblxuLy8gRXh0ZXJuYWwgTGlicmFyaWVzXG5pbXBvcnQgeyBTdmdJY29uQ29tcG9uZW50IH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5cbi8vIEhlbHBlcnNcbmltcG9ydCB7IEZpbHRlckhlbHBlciB9IGZyb20gJy4uLy4uLy4uL2NhLWZpbHRlcnMvdXRpbHMvaGVscGVycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWNhLWZpbHRlci1saXN0LWRyb3Bkb3duJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuXG4gICAgICAgIENhSW5wdXRDb21wb25lbnQsXG4gICAgICAgIENhRmlsdGVyRHJvcGRvd25Db21wb25lbnQsXG4gICAgICAgIENhUHJvZmlsZUltYWdlQ29tcG9uZW50LFxuICAgICAgICBTdmdJY29uQ29tcG9uZW50LFxuXG4gICAgICAgIERyb3Bkb3duTG9hZFN0YXR1c0NvbG9yUGlwZSxcbiAgICAgICAgRmlsdGVyVHJ1Y2tDb2xvclBpcGUsXG4gICAgICAgIEZpbHRlclRyYWlsZXJDb2xvclBpcGUsXG4gICAgICAgIEZpbHRlclNlYXJjaFBpcGUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtZmlsdGVyLWxpc3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jYS1maWx0ZXItbGlzdC1kcm9wZG93bi5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2FGaWx0ZXJMaXN0RHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBOZXdGaWx0ZXJCYXNlQ29tcG9uZW50ICB7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCB0eXBlKHZhbHVlOiBGaWx0ZXJEcm9wZG93blR5cGVzKSB7XG4gICAgICAgIHRoaXMuc2V0SW5pdGFsVHlwZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgbGlzdCh2YWx1ZTogSUZpbHRlckRyb3Bkb3duTGlzdFtdKSB7XG4gICAgICAgIHRoaXMuc2V0SW5pdGFsTGlzdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhRmlsdGVyc1N2Z1JvdXRlcyA9IENhRmlsdGVyc1N2Z1JvdXRlcztcbiAgICBwdWJsaWMgbG9hZFN0YXR1c0VudW0gPSBlTG9hZFN0YXR1cztcbiAgICBwdWJsaWMgc3JvbGxMaW1pdFNpemU6IG51bWJlciA9IDg7XG4gICAgcHVibGljIHByZXZpdXNVblNlbGVjdGVkU3RhdGU6IElGaWx0ZXJEcm9wZG93bkxpc3RbXSA9IFtdO1xuICAgIHB1YmxpYyBwcmV2aXVzU2VsZWN0ZWRTdGF0ZTogSUZpbHRlckRyb3Bkb3duTGlzdFtdID0gW107XG5cbiAgICBwdWJsaWMgc2VsZWN0ZWRMaXN0OiBJRmlsdGVyRHJvcGRvd25MaXN0W10gPSBbXTtcbiAgICBwdWJsaWMgdW5zZWxlY3RlZExpc3Q6IElGaWx0ZXJEcm9wZG93bkxpc3RbXSA9IFtdO1xuICAgIHB1YmxpYyBzZWFyY2hGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgIHNlYXJjaDogbnVsbCxcbiAgICB9KTtcbiAgICBwdWJsaWMgc29ydEtleToga2V5b2YgSUZpbHRlckRyb3Bkb3duTGlzdCA9IGVGaWx0ZXJTb3J0aW5nS2V5Lk5BTUU7XG4gICAgcHVibGljIGRpcmVjdGlvbk11bHRpcGxpZXI6IG51bWJlciA9IDE7XG4gICAgcHVibGljIGluaXRpYWxMaXN0U2l6ZTogbnVtYmVyID0gMDtcblxuICAgIHB1YmxpYyBzZWxlY3RlZENvdW50OiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBhY3RpdmVDb3VudDogbnVtYmVyID0gMDtcblxuICAgIHByaXZhdGUgX3R5cGUhOiBGaWx0ZXJEcm9wZG93blR5cGVzO1xuICAgIHByaXZhdGUgX2xpc3Q6IElGaWx0ZXJEcm9wZG93bkxpc3RbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLy8gR2V0dGVyc1xuICAgIGdldCB0eXBlKCk6IEZpbHRlckRyb3Bkb3duVHlwZXMge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICB9XG5cbiAgICAvLyBQdWJsaWNcbiAgICBwdWJsaWMgc2VsZWN0SXRlbSA9IChpdGVtOiBJRmlsdGVyRHJvcGRvd25MaXN0KSA9PiB7XG4gICAgICAgIHRoaXMubW92ZUl0ZW0oaXRlbSwgdGhpcy51bnNlbGVjdGVkTGlzdCwgdGhpcy5zZWxlY3RlZExpc3QpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgdW5TZWxlY3RJdGVtID0gKGl0ZW06IElGaWx0ZXJEcm9wZG93bkxpc3QpID0+IHtcbiAgICAgICAgdGhpcy5tb3ZlSXRlbShpdGVtLCB0aGlzLnNlbGVjdGVkTGlzdCwgdGhpcy51bnNlbGVjdGVkTGlzdCk7XG4gICAgfTtcblxuICAgIHB1YmxpYyBnZXQgdHJ1Y2tPclRyYWlsZXJJY29uUGlwZSgpOiBQaXBlVHJhbnNmb3JtIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gZUZpbHRlckRyb3Bkb3duRW51bS5UUlVDS19UWVBFXG4gICAgICAgICAgICA/IG5ldyBGaWx0ZXJUcnVja0NvbG9yUGlwZSgpXG4gICAgICAgICAgICA6IG5ldyBGaWx0ZXJUcmFpbGVyQ29sb3JQaXBlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGNsZWFyVmFsdWVzKGlzRW1pdHRpbmdWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICAvLyBObyBuZWVkIHRvIGVtaXQgdmFsdWVzIHNpbmNlIHRoYXQgaXMgY2hhbmdlZCBhbmQgdmFsdWVzIGFyZSByZXNldCBvbiBtYWluIHByb2plY3RcbiAgICAgICAgaWYoaXNFbWl0dGluZ1ZhbHVlKSB0aGlzLmVtaXREYXRhKFtdKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkTGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnVuc2VsZWN0ZWRMaXN0ID0gWy4uLnRoaXMuX2xpc3RdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnQgPSAwO1xuICAgICAgICB0aGlzLmFjdGl2ZUNvdW50ID0gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFzc0ZpbHRlclZhbHVlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVtaXREYXRhKHRoaXMuc2VsZWN0ZWRMaXN0Lm1hcCgobGlzdCkgPT4gbGlzdC5pZCkpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnQgPSB0aGlzLmFjdGl2ZUNvdW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzb3J0VmFsdWVzKHNvcnRpbmc6IElTb3J0RW1pdCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNvcnRLZXkgPSBzb3J0aW5nLnNvcnRLZXk7XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uTXVsdGlwbGllciA9IHNvcnRpbmcuZGlyZWN0aW9uTXVsdGlwbGllcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZXNldEZpbHRlclN0YXRlKCk6IHZvaWQge1xuICAgICAgICAvLyBSZXNldCB0byBwcmV2aXVzIHZhbHVlLCBzaW5jZSB1c2VyIGRpZG4ndCBzYXZlIGl0LCBoZSBjbGljayBvbiBvdXRzaWRlXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0ID0gWy4uLnRoaXMucHJldml1c1NlbGVjdGVkU3RhdGVdO1xuICAgICAgICB0aGlzLnVuc2VsZWN0ZWRMaXN0ID0gWy4uLnRoaXMucHJldml1c1VuU2VsZWN0ZWRTdGF0ZV07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudCA9IHRoaXMucHJldml1c1NlbGVjdGVkU3RhdGUubGVuZ3RoO1xuICAgICAgICB0aGlzLmFjdGl2ZUNvdW50ID0gdGhpcy5zZWxlY3RlZExpc3QubGVuZ3RoO1xuICAgICAgICB0aGlzLnJlc2V0SW5wdXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdERhdGEobGlzdDogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXIuZW1pdCh7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBzZWxlY3RlZElkczogbGlzdCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5wcmV2aXVzU2VsZWN0ZWRTdGF0ZSA9IFsuLi50aGlzLnNlbGVjdGVkTGlzdF07XG4gICAgICAgIHRoaXMucHJldml1c1VuU2VsZWN0ZWRTdGF0ZSA9IFsuLi50aGlzLnVuc2VsZWN0ZWRMaXN0XTtcbiAgICAgICAgdGhpcy5yZXNldElucHV0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxpc3RzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGlzdCA9IHRoaXMuX2xpc3QuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy51bnNlbGVjdGVkTGlzdCA9IHRoaXMuX2xpc3QuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5zZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZlSXRlbShcbiAgICAgICAgaXRlbTogSUZpbHRlckRyb3Bkb3duTGlzdCxcbiAgICAgICAgZnJvbUxpc3Q6IElGaWx0ZXJEcm9wZG93bkxpc3RbXSxcbiAgICAgICAgdG9MaXN0OiBJRmlsdGVyRHJvcGRvd25MaXN0W11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBmcm9tTGlzdC5pbmRleE9mKGl0ZW0pO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBmcm9tTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdG9MaXN0LnB1c2goaXRlbSk7XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSByZWZlcmVuY2VzIHNvIGxpc3QgaXMgdXBkYXRlZFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExpc3QgPSBbLi4udGhpcy5zZWxlY3RlZExpc3RdO1xuICAgICAgICAgICAgdGhpcy51bnNlbGVjdGVkTGlzdCA9IFsuLi50aGlzLnVuc2VsZWN0ZWRMaXN0XTtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlU2VsZWN0ZWRDb3VudCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgY2FsY3VsYXRlU2VsZWN0ZWRDb3VudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVDb3VudCA9IHRoaXMuc2VsZWN0ZWRMaXN0Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEluaXRhbExpc3QodmFsdWU6IElGaWx0ZXJEcm9wZG93bkxpc3RbXSk6IHZvaWQge1xuICAgICAgICAvLyBQbSBhbmQgdHJ1Y2sgdHlwZSBkb24ndCBoYXZlIGlkIHNvIHdlIG5lZWQgdG8gbWFwIG5hbWVzXG4gICAgICAgIHRoaXMuX2xpc3QgPSB2YWx1ZS5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgaWQ6IGl0ZW0uaWQgPz8gaXRlbS5uYW1lLFxuICAgICAgICAgICAgaW5pdGlhbHM6IEZpbHRlckhlbHBlci5nZXRJbml0aWFscyhpdGVtLm5hbWUpLFxuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMudXBkYXRlTGlzdHMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsTGlzdFNpemUgPSB2YWx1ZS5sZW5ndGg7XG4gICAgICAgIHRoaXMucHJldml1c1VuU2VsZWN0ZWRTdGF0ZSA9IFsuLi50aGlzLl9saXN0XTtcbiAgICAgICAgdGhpcy5hY3RpdmVDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudCA9IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbml0YWxUeXBlKHZhbHVlOiBGaWx0ZXJEcm9wZG93blR5cGVzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3R5cGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jb25maWcgPSBGaWx0ZXJEcm9wZG93bkljb25zQ29uc3RbdGhpcy5fdHlwZV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldElucHV0VmFsdWUoKSA6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaEZvcm0ucmVzZXQoKTtcbiAgICB9XG59XG4iLCI8YXBwLWNhLWZpbHRlci1kcm9wZG93blxuICAgIFt0eXBlXT1cInR5cGVcIlxuICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICBbYm9keVRlbXBsYXRlXT1cImJvZHlUZW1wbGF0ZVwiXG4gICAgW2lzRm9ybUNoYW5nZWRdPVwiISFhY3RpdmVDb3VudFwiXG4gICAgW2FjdGl2ZUNvdW50XT1cImFjdGl2ZUNvdW50XCJcbiAgICBbYXBwbGllZEZpbHRlcnNDb3VudF09XCJzZWxlY3RlZENvdW50XCJcbiAgICAoaGFuZGxlRmlsdGVyc0NsZWFyKT1cImNsZWFyVmFsdWVzKHRydWUpXCJcbiAgICAoc2V0RmlsdGVyKT1cInBhc3NGaWx0ZXJWYWx1ZSgpXCJcbiAgICAoc29ydGluZyk9XCJzb3J0VmFsdWVzKCRldmVudClcIlxuICAgIChyZXNldEZpbHRlclN0YXRlKT1cIm9uUmVzZXRGaWx0ZXJTdGF0ZSgpXCJcbj5cbiAgICBAbGV0IGlzVHJ1Y2sgPSB0eXBlID09PSAnVHJ1Y2tUeXBlJztcbiAgICBAbGV0IGlzVHJhaWxlciA9IHR5cGUgPT09ICdUcmFpbGVyVHlwZSc7XG4gICAgQGxldCBpc1BtID0gdHlwZSA9PT0gJ1BtJztcbiAgICBAbGV0IGlzU2VydmljZSA9IHR5cGUgPT09ICdTZXJ2aWNlJztcbiAgICBAbGV0IGlzVHJ1Y2tPclRyYWlsZXIgPSBpc1RydWNrIHx8IGlzVHJhaWxlcjtcbiAgICBAbGV0IGhhc0xlZnRJY29uID0gaXNQbSB8fCBpc1NlcnZpY2U7XG4gICAgPG5nLXRlbXBsYXRlICNib2R5VGVtcGxhdGU+XG4gICAgICAgIEBpZiAoXG4gICAgICAgICAgICBpbml0aWFsTGlzdFNpemUgPiBzcm9sbExpbWl0U2l6ZSAmJlxuICAgICAgICAgICAgY29uZmlnICYmXG4gICAgICAgICAgICBjb25maWcuaXNTZWFyY2hBY3RpdmUgJiZcbiAgICAgICAgICAgIGNvbmZpZy5mb3JtRmllbGRDb25maWdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICA8ZGl2IFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImNvbmZpZy5mb3JtRmllbGRDb25maWdcIlxuICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLWxpc3RcIlxuICAgICAgICAgICAgW2NsYXNzLmNhLXNjcm9sbC1iYXJdPVwiaW5pdGlhbExpc3RTaXplID4gc3JvbGxMaW1pdFNpemVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGl2aWRlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgQGxldCBzZWFyY2hTdHJpbmcgPSBzZWFyY2hGb3JtLmdldCgnc2VhcmNoJyk/LnZhbHVlO1xuXG4gICAgICAgICAgICA8IS0tIFNlbGVjdGVkIExpc3QgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgbGlzdFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpbHRlclNlYXJjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaFN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICduYW1lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBkaXJlY3Rpb25NdWx0aXBsaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tGbjogdW5TZWxlY3RJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPCEtLSBVbnNlbGVjdGVkIExpc3QgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgbGlzdFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNlbGVjdGVkTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyU2VhcmNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ25hbWUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydEtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRpcmVjdGlvbk11bHRpcGxpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGlja0ZuOiBzZWxlY3RJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgI2xpc3RUZW1wbGF0ZVxuICAgICAgICBsZXQtaXRlbXM9XCJpdGVtc1wiXG4gICAgICAgIGxldC1jbGlja0ZuPVwiY2xpY2tGblwiXG4gICAgICAgIGxldC1pc1NlbGVjdGVkTGlzdD1cInNlbGVjdGVkTGlzdFwiXG4gICAgPlxuICAgICAgICBAaWYgKGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAteHMgbWItMSBtYXJnaW4tdC00XCI+XG4gICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLWxpc3QtaXRlbSBwYWRkaW5nLTQgYnItMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGMtcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0taG92ZXInOiBpc1NlbGVjdGVkTGlzdCxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdmctaG92ZXItZ3JleS00IHN2Zy1maWxsLW11dGVkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGVmdEljb24gJiYgIWlzU2VsZWN0ZWRMaXN0LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N2Zy1ob3Zlci1ibHVlLTE5IHN2Zy1maWxsLWJsdWUtOCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0xlZnRJY29uICYmIGlzU2VsZWN0ZWRMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tGbihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgbWFyZ2luLXItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmp1c3RpZnktY29udGVudC1iZXR3ZWVuXT1cImlzVHJ1Y2tPclRyYWlsZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodHlwZSA9PT0gJ0Rpc3BhdGNoZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtcHJvZmlsZS1pbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZHhdPVwiJGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0U2hvcnROYW1lXT1cIml0ZW0uaW5pdGlhbHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F2YXRhckltZ109XCJpdGVtLmF2YXRhcj8udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXJnaW4tci00XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLXByb2ZpbGUtaW1hZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAodHlwZSA9PT0gJ1N0YXR1cycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZFN0YXR1c0VudW1baXRlbS5pZCFdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZHJvcGRvd25Mb2FkU3RhdHVzQ29sb3I6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0tc3RhdHVzLWNpcmNsZSBici1jaXJjbGUgbWFyZ2luLXItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChoYXNMZWZ0SWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbS5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWFyZ2luLXItNCBzdmctc2l6ZS0xOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWNvbG9yLXdoaXRlIHRleHQtc2l6ZS0xNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5jYS1mb250LWV4dHJhLWJvbGRdPVwiaXNTZWxlY3RlZExpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGV4dC11cHBlcmNhc2VdPVwidHlwZSA9PT0gJ1N0YXR1cydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzVHJ1Y2tPclRyYWlsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0taWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tc3ZnLWZpbGwtY29sb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1Y2tPclRyYWlsZXJJY29uUGlwZS50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cIml0ZW0uaWNvblwiPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6IGl0ZW0uY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNTZWxlY3RlZExpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJjYUZpbHRlcnNTdmdSb3V0ZXMucmVtb3ZlU2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLXNpemUtMTAgc3ZnLWZpbGwtcmVkLTEwIGZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0tcmVtb3ZlIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmlsdGVyLWRyb3Bkb3duLWxpc3QtYmFkZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkaXZpZGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBEaXZpZGVyIFRlbXBsYXRlIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGl2aWRlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmQtYmxhY2sgYnItMiBoZWlnaHQtMVwiPjwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZSBsZXQtY291bnQ9XCJjb3VudFwiIGxldC1pc1NlbGVjdGVkPVwiaXNTZWxlY3RlZFwiPlxuICAgICAgICA8IS0tIENvdW50IGNhbiBiZSB1bmRlZmluZWQgZm9yIGV4YW1wbGUgb24gYXNzaWduIGRpc3BhdGNoIGxvYWQgbGlzdCwgb3IgaXQgY2FuIGJlIDAgYXMgd2VsbCBmb3Igc29tZSBkaXNwYXRjaGVycyAtLT5cbiAgICAgICAgQGlmIChjb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJici0xMCBmaWx0ZXItZHJvcGRvd24tbGlzdC1pdGVtLWNvdW50IHRleHQtc2l6ZS0xMSBjYS1mb250LXNlbWktYm9sZCBwYWRkaW5nLXktMiBwYWRkaW5nLXgtNSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmlsdGVyLWRyb3Bkb3duLWxpc3QtYmFkZ2VcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdiYWNrZ3JvdW5kLWJsdWUtMTQgdGV4dC1jb2xvci13aGl0ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ2JhY2tncm91bmQtYmxhY2sgdGV4dC1jb2xvci13aGl0ZS00J1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgY291bnQgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvYXBwLWNhLWZpbHRlci1kcm9wZG93bj5cbiJdfQ==
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtZmlsdGVyLWxpc3QtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbmV3LWZpbHRlci9jb21wb25lbnRzL2NhLWZpbHRlci1saXN0LWRyb3Bkb3duL2NhLWZpbHRlci1saXN0LWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW5ldy1maWx0ZXIvY29tcG9uZW50cy9jYS1maWx0ZXItbGlzdC1kcm9wZG93bi9jYS1maWx0ZXItbGlzdC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEdBS1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFzQixNQUFNLGdCQUFnQixDQUFDO0FBRXpFLFFBQVE7QUFDUixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBTWhELG9CQUFvQjtBQUNwQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxhQUFhO0FBQ2IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1B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O2tCQXBCekMsU0FBUzsrQkFDSSw2QkFBNkIsY0FDM0IsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUVuQixnQkFBZ0I7d0JBQ2hCLHlCQUF5Qjt3QkFDekIsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBRWhCLDJCQUEyQjt3QkFDM0Isb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLGdCQUFnQjtxQkFDbkI7dUZBTUcsSUFBSTtzQkFEUCxLQUFLO2dCQU1GLElBQUk7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbiAgICBQaXBlVHJhbnNmb3JtLFxuICAgIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBFbnVtc1xuaW1wb3J0IHsgZUZpbHRlckRyb3Bkb3duRW51bSwgZUZpbHRlclNvcnRpbmdLZXkgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBlTG9hZFN0YXR1cyB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zJztcblxuLy8gVHlwZXMgJiBJbnRlcmZhY2VzXG5pbXBvcnQgeyBGaWx0ZXJEcm9wZG93blR5cGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSUZpbHRlckRyb3Bkb3duTGlzdCwgSVNvcnRFbWl0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlJztcblxuLy8gQ29uc3RhbnRzICYgVXRpbHNcbmltcG9ydCB7IENhRmlsdGVyc1N2Z1JvdXRlcyB9IGZyb20gJy4uLy4uLy4uL2NhLWZpbHRlcnMvdXRpbHMvc3ZnLXJvdXRlcyc7XG5pbXBvcnQgeyBGaWx0ZXJEcm9wZG93bkljb25zQ29uc3QgfSBmcm9tICcuLi8uLi9jb25zdGFudCc7XG5cbi8vIENvbXBvbmVudHNcbmltcG9ydCB7IENhRmlsdGVyRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jYS1maWx0ZXItZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IENhUHJvZmlsZUltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY2EtcHJvZmlsZS1pbWFnZS9jYS1wcm9maWxlLWltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY2EtaW5wdXQvY2EtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE5ld0ZpbHRlckJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9uZXctZmlsdGVyLWJhc2UvbmV3LWZpbHRlci1iYXNlLmNvbXBvbmVudCc7XG5cbi8vIFBpcGVzXG5pbXBvcnQge1xuICAgIEZpbHRlclRyYWlsZXJDb2xvclBpcGUsXG4gICAgRmlsdGVyVHJ1Y2tDb2xvclBpcGUsXG59IGZyb20gJy4uLy4uLy4uL2NhLWZpbHRlcnMvcGlwZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25Mb2FkU3RhdHVzQ29sb3JQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMnO1xuaW1wb3J0IHsgRmlsdGVyU2VhcmNoUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2ZpbHRlci1zZWFyY2gucGlwZSc7XG5cbi8vIEV4dGVybmFsIExpYnJhcmllc1xuaW1wb3J0IHsgU3ZnSWNvbkNvbXBvbmVudCB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuXG4vLyBIZWxwZXJzXG5pbXBvcnQgeyBGaWx0ZXJIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jYS1maWx0ZXJzL3V0aWxzL2hlbHBlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1jYS1maWx0ZXItbGlzdC1kcm9wZG93bicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcblxuICAgICAgICBDYUlucHV0Q29tcG9uZW50LFxuICAgICAgICBDYUZpbHRlckRyb3Bkb3duQ29tcG9uZW50LFxuICAgICAgICBDYVByb2ZpbGVJbWFnZUNvbXBvbmVudCxcbiAgICAgICAgU3ZnSWNvbkNvbXBvbmVudCxcblxuICAgICAgICBEcm9wZG93bkxvYWRTdGF0dXNDb2xvclBpcGUsXG4gICAgICAgIEZpbHRlclRydWNrQ29sb3JQaXBlLFxuICAgICAgICBGaWx0ZXJUcmFpbGVyQ29sb3JQaXBlLFxuICAgICAgICBGaWx0ZXJTZWFyY2hQaXBlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLWZpbHRlci1saXN0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vY2EtZmlsdGVyLWxpc3QtZHJvcGRvd24uY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIENhRmlsdGVyTGlzdERyb3Bkb3duQ29tcG9uZW50IGV4dGVuZHMgTmV3RmlsdGVyQmFzZUNvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBzZXQgdHlwZSh2YWx1ZTogRmlsdGVyRHJvcGRvd25UeXBlcykge1xuICAgICAgICB0aGlzLnNldEluaXRpYWxUeXBlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBsaXN0KHZhbHVlOiBJRmlsdGVyRHJvcGRvd25MaXN0W10pIHtcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsTGlzdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhRmlsdGVyc1N2Z1JvdXRlcyA9IENhRmlsdGVyc1N2Z1JvdXRlcztcbiAgICBwdWJsaWMgbG9hZFN0YXR1c0VudW0gPSBlTG9hZFN0YXR1cztcbiAgICBwdWJsaWMgc2Nyb2xsTGltaXRTaXplOiBudW1iZXIgPSA4O1xuICAgIHB1YmxpYyBwcmV2aW91c1VuU2VsZWN0ZWRTdGF0ZTogSUZpbHRlckRyb3Bkb3duTGlzdFtdID0gW107XG4gICAgcHVibGljIHByZXZpb3VzU2VsZWN0ZWRTdGF0ZTogSUZpbHRlckRyb3Bkb3duTGlzdFtdID0gW107XG5cbiAgICBwdWJsaWMgc2VsZWN0ZWRMaXN0OiBJRmlsdGVyRHJvcGRvd25MaXN0W10gPSBbXTtcbiAgICBwdWJsaWMgdW5zZWxlY3RlZExpc3Q6IElGaWx0ZXJEcm9wZG93bkxpc3RbXSA9IFtdO1xuICAgIHB1YmxpYyBzZWFyY2hGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgIHNlYXJjaDogbnVsbCxcbiAgICB9KTtcbiAgICBwdWJsaWMgc29ydEtleToga2V5b2YgSUZpbHRlckRyb3Bkb3duTGlzdCA9IGVGaWx0ZXJTb3J0aW5nS2V5Lk5BTUU7XG4gICAgcHVibGljIGRpcmVjdGlvbk11bHRpcGxpZXI6IG51bWJlciA9IDE7XG4gICAgcHVibGljIGluaXRpYWxMaXN0U2l6ZTogbnVtYmVyID0gMDtcblxuICAgIHB1YmxpYyBzZWxlY3RlZENvdW50OiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBhY3RpdmVDb3VudDogbnVtYmVyID0gMDtcblxuICAgIHByaXZhdGUgX3R5cGUhOiBGaWx0ZXJEcm9wZG93blR5cGVzO1xuICAgIHByaXZhdGUgX2xpc3Q6IElGaWx0ZXJEcm9wZG93bkxpc3RbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLy8gR2V0dGVyc1xuICAgIGdldCB0eXBlKCk6IEZpbHRlckRyb3Bkb3duVHlwZXMge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICB9XG5cbiAgICAvLyBQdWJsaWNcbiAgICBwdWJsaWMgc2VsZWN0SXRlbSA9IChpdGVtOiBJRmlsdGVyRHJvcGRvd25MaXN0KSA9PiB7XG4gICAgICAgIHRoaXMubW92ZUl0ZW0oaXRlbSwgdGhpcy51bnNlbGVjdGVkTGlzdCwgdGhpcy5zZWxlY3RlZExpc3QpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgdW5TZWxlY3RJdGVtID0gKGl0ZW06IElGaWx0ZXJEcm9wZG93bkxpc3QpID0+IHtcbiAgICAgICAgdGhpcy5tb3ZlSXRlbShpdGVtLCB0aGlzLnNlbGVjdGVkTGlzdCwgdGhpcy51bnNlbGVjdGVkTGlzdCk7XG4gICAgfTtcblxuICAgIHB1YmxpYyBnZXQgdHJ1Y2tPclRyYWlsZXJJY29uUGlwZSgpOiBQaXBlVHJhbnNmb3JtIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gZUZpbHRlckRyb3Bkb3duRW51bS5UUlVDS19UWVBFXG4gICAgICAgICAgICA/IG5ldyBGaWx0ZXJUcnVja0NvbG9yUGlwZSgpXG4gICAgICAgICAgICA6IG5ldyBGaWx0ZXJUcmFpbGVyQ29sb3JQaXBlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGNsZWFyVmFsdWVzKGlzRW1pdHRpbmdWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICAvLyBObyBuZWVkIHRvIGVtaXQgdmFsdWVzIHNpbmNlIHRoYXQgaXMgY2hhbmdlZCBhbmQgdmFsdWVzIGFyZSByZXNldCBvbiBtYWluIHByb2plY3RcbiAgICAgICAgaWYgKGlzRW1pdHRpbmdWYWx1ZSkgdGhpcy5lbWl0RGF0YShbXSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZExpc3QgPSBbXTtcbiAgICAgICAgdGhpcy51bnNlbGVjdGVkTGlzdCA9IFsuLi50aGlzLl9saXN0XTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5hY3RpdmVDb3VudCA9IDA7XG4gICAgfVxuXG4gICAgcHVibGljIHBhc3NGaWx0ZXJWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRMaXN0SWRzOiBudW1iZXJbXSA9IHRoaXMuc2VsZWN0ZWRMaXN0Py5tYXAoXG4gICAgICAgICAgICAobGlzdDogSUZpbHRlckRyb3Bkb3duTGlzdCkgPT4gbGlzdC5pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmVtaXREYXRhKHNlbGVjdGVkTGlzdElkcyk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudCA9IHRoaXMuYWN0aXZlQ291bnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNvcnRWYWx1ZXMoc29ydGluZzogSVNvcnRFbWl0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc29ydEtleSA9IHNvcnRpbmcuc29ydEtleTtcbiAgICAgICAgdGhpcy5kaXJlY3Rpb25NdWx0aXBsaWVyID0gc29ydGluZy5kaXJlY3Rpb25NdWx0aXBsaWVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJlc2V0RmlsdGVyU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIC8vIFJlc2V0IHRvIHByZXZpb3VzIHZhbHVlLCBzaW5jZSB1c2VyIGRpZG4ndCBzYXZlIGl0LCBoZSBjbGljayBvbiBvdXRzaWRlXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0ID0gWy4uLnRoaXMucHJldmlvdXNTZWxlY3RlZFN0YXRlXTtcbiAgICAgICAgdGhpcy51bnNlbGVjdGVkTGlzdCA9IFsuLi50aGlzLnByZXZpb3VzVW5TZWxlY3RlZFN0YXRlXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50ID0gdGhpcy5wcmV2aW91c1NlbGVjdGVkU3RhdGUubGVuZ3RoO1xuICAgICAgICB0aGlzLmFjdGl2ZUNvdW50ID0gdGhpcy5zZWxlY3RlZExpc3QubGVuZ3RoO1xuICAgICAgICB0aGlzLnJlc2V0SW5wdXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdERhdGEobGlzdDogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXIuZW1pdCh7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBzZWxlY3RlZElkczogbGlzdCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5wcmV2aW91c1NlbGVjdGVkU3RhdGUgPSBbLi4udGhpcy5zZWxlY3RlZExpc3RdO1xuICAgICAgICB0aGlzLnByZXZpb3VzVW5TZWxlY3RlZFN0YXRlID0gWy4uLnRoaXMudW5zZWxlY3RlZExpc3RdO1xuICAgICAgICB0aGlzLnJlc2V0SW5wdXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTGlzdHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fbGlzdCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0ID0gW107XG4gICAgICAgIHRoaXMudW5zZWxlY3RlZExpc3QgPSBbXTtcblxuICAgICAgICB0aGlzLl9saXN0Py5mb3JFYWNoKChpdGVtOiBJRmlsdGVyRHJvcGRvd25MaXN0KSA9PiB7XG4gICAgICAgICAgICBpdGVtLnNlbGVjdGVkXG4gICAgICAgICAgICAgICAgPyAodGhpcy5zZWxlY3RlZExpc3QgPSBbLi4udGhpcy5zZWxlY3RlZExpc3QsIGl0ZW1dKVxuICAgICAgICAgICAgICAgIDogKHRoaXMudW5zZWxlY3RlZExpc3QgPSBbLi4udGhpcy51bnNlbGVjdGVkTGlzdCwgaXRlbV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmVJdGVtKFxuICAgICAgICBpdGVtOiBJRmlsdGVyRHJvcGRvd25MaXN0LFxuICAgICAgICBmcm9tTGlzdDogSUZpbHRlckRyb3Bkb3duTGlzdFtdLFxuICAgICAgICB0b0xpc3Q6IElGaWx0ZXJEcm9wZG93bkxpc3RbXVxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IGZyb21MaXN0LmluZGV4T2YoaXRlbSk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGZyb21MaXN0Py5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdG9MaXN0Py5wdXNoKGl0ZW0pO1xuXG4gICAgICAgICAgICAvLyBVcGRhdGUgcmVmZXJlbmNlcyBzbyBsaXN0IGlzIHVwZGF0ZWRcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0ID0gWy4uLnRoaXMuc2VsZWN0ZWRMaXN0XTtcbiAgICAgICAgICAgIHRoaXMudW5zZWxlY3RlZExpc3QgPSBbLi4udGhpcy51bnNlbGVjdGVkTGlzdF07XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVNlbGVjdGVkQ291bnQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVNlbGVjdGVkQ291bnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlQ291bnQgPSB0aGlzLnNlbGVjdGVkTGlzdC5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbml0aWFsTGlzdCh2YWx1ZTogSUZpbHRlckRyb3Bkb3duTGlzdFtdKTogdm9pZCB7XG4gICAgICAgIC8vIFBtIGFuZCB0cnVjayB0eXBlIGRvbid0IGhhdmUgaWQgc28gd2UgbmVlZCB0byBtYXAgbmFtZXNcbiAgICAgICAgdGhpcy5fbGlzdCA9IHZhbHVlPy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgaWQ6IGl0ZW0uaWQgPz8gaXRlbS5uYW1lLFxuICAgICAgICAgICAgaW5pdGlhbHM6IEZpbHRlckhlbHBlci5nZXRJbml0aWFscyhpdGVtLm5hbWUpLFxuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMudXBkYXRlTGlzdHMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsTGlzdFNpemUgPSB2YWx1ZS5sZW5ndGg7XG4gICAgICAgIHRoaXMucHJldmlvdXNVblNlbGVjdGVkU3RhdGUgPSBbLi4udGhpcy5fbGlzdF07XG4gICAgICAgIHRoaXMuYWN0aXZlQ291bnQgPSAwO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnQgPSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SW5pdGlhbFR5cGUodmFsdWU6IEZpbHRlckRyb3Bkb3duVHlwZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHlwZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNvbmZpZyA9IEZpbHRlckRyb3Bkb3duSWNvbnNDb25zdFt0aGlzLl90eXBlXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0SW5wdXRWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hGb3JtLnJlc2V0KCk7XG4gICAgfVxufVxuIiwiPGFwcC1jYS1maWx0ZXItZHJvcGRvd25cbiAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgW2JvZHlUZW1wbGF0ZV09XCJib2R5VGVtcGxhdGVcIlxuICAgIFtpc0Zvcm1DaGFuZ2VkXT1cIiEhYWN0aXZlQ291bnRcIlxuICAgIFthY3RpdmVDb3VudF09XCJhY3RpdmVDb3VudFwiXG4gICAgW2FwcGxpZWRGaWx0ZXJzQ291bnRdPVwic2VsZWN0ZWRDb3VudFwiXG4gICAgKGhhbmRsZUZpbHRlcnNDbGVhcik9XCJjbGVhclZhbHVlcyh0cnVlKVwiXG4gICAgKHNldEZpbHRlcik9XCJwYXNzRmlsdGVyVmFsdWUoKVwiXG4gICAgKHNvcnRpbmcpPVwic29ydFZhbHVlcygkZXZlbnQpXCJcbiAgICAocmVzZXRGaWx0ZXJTdGF0ZSk9XCJvblJlc2V0RmlsdGVyU3RhdGUoKVwiXG4+XG4gICAgQGxldCBpc1RydWNrID0gdHlwZSA9PT0gJ1RydWNrVHlwZSc7XG4gICAgQGxldCBpc1RyYWlsZXIgPSB0eXBlID09PSAnVHJhaWxlclR5cGUnO1xuICAgIEBsZXQgaXNQbSA9IHR5cGUgPT09ICdQbSc7XG4gICAgQGxldCBpc1NlcnZpY2UgPSB0eXBlID09PSAnU2VydmljZSc7XG4gICAgQGxldCBpc1RydWNrT3JUcmFpbGVyID0gaXNUcnVjayB8fCBpc1RyYWlsZXI7XG4gICAgQGxldCBoYXNMZWZ0SWNvbiA9IGlzUG0gfHwgaXNTZXJ2aWNlO1xuICAgIDxuZy10ZW1wbGF0ZSAjYm9keVRlbXBsYXRlPlxuICAgICAgICBAaWYgKFxuICAgICAgICAgICAgaW5pdGlhbExpc3RTaXplID4gc2Nyb2xsTGltaXRTaXplICYmXG4gICAgICAgICAgICBjb25maWcgJiZcbiAgICAgICAgICAgIGNvbmZpZy5pc1NlYXJjaEFjdGl2ZSAmJlxuICAgICAgICAgICAgY29uZmlnLmZvcm1GaWVsZENvbmZpZ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiY29uZmlnLmZvcm1GaWVsZENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItZHJvcGRvd24tbGlzdFwiXG4gICAgICAgICAgICBbY2xhc3MuY2Etc2Nyb2xsLWJhcl09XCJpbml0aWFsTGlzdFNpemUgPiBzY3JvbGxMaW1pdFNpemVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGl2aWRlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgQGxldCBzZWFyY2hTdHJpbmcgPSBzZWFyY2hGb3JtPy5nZXQoJ3NlYXJjaCcpPy52YWx1ZTtcblxuICAgICAgICAgICAgPCEtLSBTZWxlY3RlZCBMaXN0IC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGxpc3RUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaWx0ZXJTZWFyY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hTdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnbmFtZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZGlyZWN0aW9uTXVsdGlwbGllcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrRm46IHVuU2VsZWN0SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwhLS0gVW5zZWxlY3RlZCBMaXN0IC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGxpc3RUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zZWxlY3RlZExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpbHRlclNlYXJjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaFN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICduYW1lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBkaXJlY3Rpb25NdWx0aXBsaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tGbjogc2VsZWN0SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICNsaXN0VGVtcGxhdGVcbiAgICAgICAgbGV0LWl0ZW1zPVwiaXRlbXNcIlxuICAgICAgICBsZXQtY2xpY2tGbj1cImNsaWNrRm5cIlxuICAgICAgICBsZXQtaXNTZWxlY3RlZExpc3Q9XCJzZWxlY3RlZExpc3RcIlxuICAgID5cbiAgICAgICAgQGlmIChpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLXhzIG1iLTEgbWFyZ2luLXQtNFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXM7IGxldCBpbmR4ID0gJGluZGV4OyB0cmFjayBpbmR4KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLWxpc3QtaXRlbSBwYWRkaW5nLTQgYnItMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGMtcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0taG92ZXInOiBpc1NlbGVjdGVkTGlzdCxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdmctaG92ZXItZ3JleS00IHN2Zy1maWxsLW11dGVkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGVmdEljb24gJiYgIWlzU2VsZWN0ZWRMaXN0LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N2Zy1ob3Zlci1ibHVlLTE5IHN2Zy1maWxsLWJsdWUtOCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0xlZnRJY29uICYmIGlzU2VsZWN0ZWRMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tGbihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgbWFyZ2luLXItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmp1c3RpZnktY29udGVudC1iZXR3ZWVuXT1cImlzVHJ1Y2tPclRyYWlsZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdEaXNwYXRjaGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1wcm9maWxlLWltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZHhdPVwiJGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dFNob3J0TmFtZV09XCJpdGVtLmluaXRpYWxzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhdGFySW1nXT1cIml0ZW0uYXZhdGFyPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWFyZ2luLXItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtcHJvZmlsZS1pbWFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ1N0YXR1cycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZFN0YXR1c0VudW1baXRlbS5pZCFdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRyb3Bkb3duTG9hZFN0YXR1c0NvbG9yOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0tc3RhdHVzLWNpcmNsZSBici1jaXJjbGUgbWFyZ2luLXItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChoYXNMZWZ0SWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0uaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWFyZ2luLXItNCBzdmctc2l6ZS0xOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jb2xvci13aGl0ZSB0ZXh0LXNpemUtMTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuY2EtZm9udC1leHRyYS1ib2xkXT1cImlzU2VsZWN0ZWRMaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtdXBwZXJjYXNlXT1cInR5cGUgPT09ICdTdGF0dXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc1RydWNrT3JUcmFpbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbT8uaWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLWxpc3QtaXRlbS1pY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1zdmctZmlsbC1jb2xvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVja09yVHJhaWxlckljb25QaXBlLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uIFtzcmNdPVwiaXRlbS5pY29uXCI+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudDogaXRlbS5jb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWRMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc1NlbGVjdGVkTGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImNhRmlsdGVyc1N2Z1JvdXRlcy5yZW1vdmVTZWxlY3RlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctc2l6ZS0xMCBzdmctZmlsbC1yZWQtMTAgZmlsdGVyLWRyb3Bkb3duLWxpc3QtaXRlbS1yZW1vdmUganVzdGlmeS1jb250ZW50LWNlbnRlciBmaWx0ZXItZHJvcGRvd24tbGlzdC1iYWRnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpdmlkZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIERpdmlkZXIgVGVtcGxhdGUgLS0+XG4gICAgPG5nLXRlbXBsYXRlICNkaXZpZGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZC1ibGFjayBici0yIGhlaWdodC0xXCI+PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlIGxldC1jb3VudD1cImNvdW50XCIgbGV0LWlzU2VsZWN0ZWQ9XCJpc1NlbGVjdGVkXCI+XG4gICAgICAgIDwhLS0gQ291bnQgY2FuIGJlIHVuZGVmaW5lZCBmb3IgZXhhbXBsZSBvbiBhc3NpZ24gZGlzcGF0Y2ggbG9hZCBsaXN0LCBvciBpdCBjYW4gYmUgMCBhcyB3ZWxsIGZvciBzb21lIGRpc3BhdGNoZXJzIC0tPlxuICAgICAgICBAaWYgKGNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJyLTEwIGZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0tY291bnQgdGV4dC1zaXplLTExIGNhLWZvbnQtc2VtaS1ib2xkIHBhZGRpbmcteS0yIHBhZGRpbmcteC01IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmaWx0ZXItZHJvcGRvd24tbGlzdC1iYWRnZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2JhY2tncm91bmQtYmx1ZS0xNCB0ZXh0LWNvbG9yLXdoaXRlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmFja2dyb3VuZC1ibGFjayB0ZXh0LWNvbG9yLXdoaXRlLTQnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBjb3VudCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9hcHAtY2EtZmlsdGVyLWRyb3Bkb3duPlxuIl19
|