ca-components 1.3.34 → 1.3.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/assets/scss/background.scss +44 -0
  2. package/assets/scss/border-radius.scss +17 -0
  3. package/assets/scss/filters.scss +151 -0
  4. package/assets/scss/icons.scss +39 -0
  5. package/assets/scss/spacing.scss +59 -0
  6. package/assets/scss/styles.scss +22 -1
  7. package/assets/scss/text-selection.scss +15 -0
  8. package/assets/theme/variables.scss +1 -1
  9. package/esm2022/lib/ca-components.module.mjs +25 -1
  10. package/esm2022/lib/components/ca-activity-log-list/ca-activity-log-list.component.mjs +3 -3
  11. package/esm2022/lib/components/ca-autoclose-popover/ca-autoclose-popover.component.mjs +6 -3
  12. package/esm2022/lib/components/ca-checkbox/ca-checkbox.component.mjs +2 -2
  13. package/esm2022/lib/components/ca-collapsible-filter/ca-collapsible-filter.component.mjs +2 -2
  14. package/esm2022/lib/components/ca-comment/ca-comment.component.mjs +2 -2
  15. package/esm2022/lib/components/ca-comment/modals/comment-modal/comment-modal.component.mjs +3 -3
  16. package/esm2022/lib/components/ca-custom-scrollbar/ca-custom-scrollbar.component.mjs +3 -3
  17. package/esm2022/lib/components/ca-details-dropdown/ca-details-dropdown.component.mjs +2 -2
  18. package/esm2022/lib/components/ca-dropdown-menu/ca-dropdown-menu.component.mjs +2 -2
  19. package/esm2022/lib/components/ca-filters/ca-filter.component.mjs +4 -4
  20. package/esm2022/lib/components/ca-filters/components/ca-dispatcher-filter/ca-dispatcher-filter.component.mjs +3 -3
  21. package/esm2022/lib/components/ca-filters/components/ca-location-filter/ca-location-filter.component.mjs +2 -2
  22. package/esm2022/lib/components/ca-filters/components/ca-money-filter/ca-money-filter.component.mjs +2 -2
  23. package/esm2022/lib/components/ca-filters/components/ca-pm-filter/ca-pm-filter.component.mjs +2 -2
  24. package/esm2022/lib/components/ca-filters/components/ca-state-filter/ca-state-filter.component.mjs +2 -2
  25. package/esm2022/lib/components/ca-filters/components/ca-status-filter/ca-status-filter.component.mjs +2 -2
  26. package/esm2022/lib/components/ca-filters/components/ca-time-filter/ca-time-filter.component.mjs +4 -4
  27. package/esm2022/lib/components/ca-filters/components/ca-trailer-type-filter/ca-trailer-type-filter.component.mjs +2 -2
  28. package/esm2022/lib/components/ca-filters/components/ca-truck-type-filter/ca-truck-type-filter.component.mjs +2 -2
  29. package/esm2022/lib/components/ca-filters/components/ca-user-filter/ca-user-filter.component.mjs +2 -2
  30. package/esm2022/lib/components/ca-filters/components/ca-violation-filter/ca-violation-filter.component.mjs +2 -2
  31. package/esm2022/lib/components/ca-filters/pipes/index.mjs +7 -0
  32. package/esm2022/lib/components/ca-filters/utils/helpers/index.mjs +2 -1
  33. package/esm2022/lib/components/ca-filters/utils/helpers/time-filter.helper.mjs +117 -0
  34. package/esm2022/lib/components/ca-filters/utils/svg-routes/index.mjs +2 -0
  35. package/esm2022/lib/components/ca-input/ca-input.component.mjs +2 -2
  36. package/esm2022/lib/components/ca-input/components/ca-input-placeholder-icon/ca-input-placeholder-icon.component.mjs +3 -3
  37. package/esm2022/lib/components/ca-input/input-test/input-test.component.mjs +2 -2
  38. package/esm2022/lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component.mjs +2 -2
  39. package/esm2022/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +2 -2
  40. package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +2 -2
  41. package/esm2022/lib/components/ca-input-note/ca-input-note.component.mjs +2 -2
  42. package/esm2022/lib/components/ca-logo-change/ca-logo-change.component.mjs +3 -3
  43. package/esm2022/lib/components/ca-map/ca-map.component.mjs +2 -2
  44. package/esm2022/lib/components/ca-map-dropdown/ca-map-dropdown.component.mjs +2 -2
  45. package/esm2022/lib/components/ca-modal/ca-modal.component.mjs +2 -2
  46. package/esm2022/lib/components/ca-modal-button/ca-modal-button.component.mjs +3 -3
  47. package/esm2022/lib/components/ca-new-filter/ca-filter-dropdown.component.mjs +98 -0
  48. package/esm2022/lib/components/ca-new-filter/components/ca-filter-list-dropdown/ca-filter-list-dropdown.component.mjs +142 -0
  49. package/esm2022/lib/components/ca-new-filter/components/ca-filter-state-dropdown/ca-filter-state-dropdown.component.mjs +131 -0
  50. package/esm2022/lib/components/ca-new-filter/components/ca-filter-time-dropdown/ca-filter-time-dropdown.component.mjs +131 -0
  51. package/esm2022/lib/components/ca-new-filter/constant/filter-dropdown-icons.constant.mjs +87 -0
  52. package/esm2022/lib/components/ca-new-filter/constant/index.mjs +2 -0
  53. package/esm2022/lib/components/ca-new-filter/enums/filter-dropdown-types.enum.mjs +15 -0
  54. package/esm2022/lib/components/ca-new-filter/enums/filter-sorting-key.enum.mjs +6 -0
  55. package/esm2022/lib/components/ca-new-filter/enums/filter-time.enum.mjs +37 -0
  56. package/esm2022/lib/components/ca-new-filter/enums/index.mjs +4 -0
  57. package/esm2022/lib/components/ca-new-filter/interface/country.interface.mjs +2 -0
  58. package/esm2022/lib/components/ca-new-filter/interface/filter-action.interface.mjs +2 -0
  59. package/esm2022/lib/components/ca-new-filter/interface/filter-dropdown-configuration.interface.mjs +2 -0
  60. package/esm2022/lib/components/ca-new-filter/interface/filter-dropdown-list.mjs +2 -0
  61. package/esm2022/lib/components/ca-new-filter/interface/index.mjs +7 -0
  62. package/esm2022/lib/components/ca-new-filter/interface/sorting-emmiter.interface.mjs +2 -0
  63. package/esm2022/lib/components/ca-new-filter/interface/time-options.interface.mjs +2 -0
  64. package/esm2022/lib/components/ca-new-filter/pipes/filter-search.pipe.mjs +31 -0
  65. package/esm2022/lib/components/ca-new-filter/types/filter-dropdown.types.mjs +2 -0
  66. package/esm2022/lib/components/ca-new-filter/types/filter-sorting-key.type.mjs +2 -0
  67. package/esm2022/lib/components/ca-new-filter/types/filter-time.types.mjs +2 -0
  68. package/esm2022/lib/components/ca-new-filter/types/index.mjs +4 -0
  69. package/esm2022/lib/components/ca-new-filter/utils/configs/filter-dropdown-fields.config.mjs +37 -0
  70. package/esm2022/lib/components/ca-new-filter/utils/configs/index.mjs +2 -0
  71. package/esm2022/lib/components/ca-new-filter/utils/helpers/index.mjs +2 -0
  72. package/esm2022/lib/components/ca-new-filter/utils/helpers/time-filter.helper.mjs +133 -0
  73. package/esm2022/lib/components/ca-ngx-slider/ca-ngx-slider.component.mjs +2 -2
  74. package/esm2022/lib/components/ca-note/ca-note.component.mjs +2 -2
  75. package/esm2022/lib/components/ca-note-container/ca-note-container.component.mjs +2 -2
  76. package/esm2022/lib/components/ca-payroll-list-summary-overview/ca-payroll-list-summary-overview.component.mjs +2 -2
  77. package/esm2022/lib/components/ca-period-content/ca-period-content.component.mjs +2 -2
  78. package/esm2022/lib/components/ca-period-content/components/ca-period-content-extra-info/ca-period-content-extra-info.component.mjs +3 -3
  79. package/esm2022/lib/components/ca-period-content/components/ca-period-content-payment/ca-period-content-payment.component.mjs +2 -2
  80. package/esm2022/lib/components/ca-period-content/components/ca-period-content-user-info/ca-period-content-user-info.component.mjs +3 -3
  81. package/esm2022/lib/components/ca-pickup-delivery-block/ca-pickup-delivery-block.component.mjs +3 -3
  82. package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/ca-load.component.mjs +3 -3
  83. package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-list/ca-load-list.component.mjs +3 -3
  84. package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-single/ca-load-single.component.mjs +3 -3
  85. package/esm2022/lib/components/ca-profile-image/ca-profile-image.component.mjs +3 -3
  86. package/esm2022/lib/components/ca-progress-bar/ca-progress-bar.component.mjs +2 -2
  87. package/esm2022/lib/components/ca-progress-expiration/ca-progress-expiration.component.mjs +2 -2
  88. package/esm2022/lib/components/ca-rating-review/ca-rating-review.component.mjs +2 -2
  89. package/esm2022/lib/components/ca-rating-review/components/ca-rating-review-user/ca-rating-review-user.component.mjs +2 -2
  90. package/esm2022/lib/components/ca-rating-review/components/ca-ratings-reviews-popup/ca-ratings-reviews-popup.component.mjs +2 -2
  91. package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-company/ca-right-side-panel-company.component.mjs +3 -3
  92. package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-menu/ca-right-side-panel-menu.component.mjs +3 -3
  93. package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-top-bar/ca-right-side-panel-top-bar.component.mjs +3 -3
  94. package/esm2022/lib/components/ca-search-multiple-states/ca-search-multiple-states.component.mjs +3 -3
  95. package/esm2022/lib/components/ca-search-multiple-states/models/tab-data.model.mjs +1 -1
  96. package/esm2022/lib/components/ca-sort-dropdown/ca-sort-dropdown.component.mjs +21 -8
  97. package/esm2022/lib/components/ca-sort-dropdown/types/index.mjs +2 -0
  98. package/esm2022/lib/components/ca-sort-dropdown/types/sort-directions.type.mjs +2 -0
  99. package/esm2022/lib/components/ca-sort-dropdown/utils/svg-routes/ca-sort-dropdown-svg-routes.mjs +3 -2
  100. package/esm2022/lib/components/ca-spinner/ca-spinner.component.mjs +2 -2
  101. package/esm2022/lib/components/ca-tab-switch/ca-tab-switch.component.mjs +3 -3
  102. package/esm2022/lib/components/ca-todo/ca-todo.component.mjs +3 -3
  103. package/esm2022/lib/components/ca-todo/components/ca-todo-card.component.mjs +3 -3
  104. package/esm2022/lib/components/ca-tooltip-list/ca-tooltip-list.component.mjs +3 -3
  105. package/esm2022/lib/components/ca-truck-trailer-progress-bar/ca-truck-trailer-progress-bar.component.mjs +2 -2
  106. package/esm2022/lib/components/ca-upload-files/ca-upload-files.component.mjs +3 -3
  107. package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/ca-upload-dropzone.component.mjs +3 -3
  108. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/ca-upload-file.component.mjs +2 -2
  109. package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/ca-upload-files-carousel.component.mjs +3 -3
  110. package/esm2022/public-api.mjs +8 -1
  111. package/fesm2022/ca-components.mjs +1093 -276
  112. package/fesm2022/ca-components.mjs.map +1 -1
  113. package/lib/ca-components.module.d.ts +38 -34
  114. package/lib/components/ca-autoclose-popover/ca-autoclose-popover.component.d.ts +2 -1
  115. package/lib/components/ca-filters/pipes/index.d.ts +6 -0
  116. package/lib/components/ca-filters/utils/helpers/index.d.ts +1 -0
  117. package/lib/components/ca-filters/utils/{constants/time-filter.constants.d.ts → helpers/time-filter.helper.d.ts} +14 -2
  118. package/lib/components/ca-filters/utils/svg-routes/index.d.ts +1 -0
  119. package/lib/components/ca-new-filter/ca-filter-dropdown.component.d.ts +35 -0
  120. package/lib/components/ca-new-filter/components/ca-filter-list-dropdown/ca-filter-list-dropdown.component.d.ts +43 -0
  121. package/lib/components/ca-new-filter/components/ca-filter-state-dropdown/ca-filter-state-dropdown.component.d.ts +35 -0
  122. package/lib/components/ca-new-filter/components/ca-filter-time-dropdown/ca-filter-time-dropdown.component.d.ts +43 -0
  123. package/lib/components/ca-new-filter/constant/filter-dropdown-icons.constant.d.ts +3 -0
  124. package/lib/components/ca-new-filter/constant/index.d.ts +1 -0
  125. package/lib/components/ca-new-filter/enums/filter-dropdown-types.enum.d.ts +13 -0
  126. package/lib/components/ca-new-filter/enums/filter-sorting-key.enum.d.ts +4 -0
  127. package/lib/components/ca-new-filter/enums/filter-time.enum.d.ts +35 -0
  128. package/lib/components/ca-new-filter/enums/index.d.ts +3 -0
  129. package/lib/components/ca-new-filter/interface/country.interface.d.ts +13 -0
  130. package/lib/components/ca-new-filter/interface/filter-action.interface.d.ts +18 -0
  131. package/lib/components/ca-new-filter/interface/filter-dropdown-configuration.interface.d.ts +13 -0
  132. package/lib/components/ca-new-filter/interface/filter-dropdown-list.d.ts +17 -0
  133. package/lib/components/ca-new-filter/interface/index.d.ts +6 -0
  134. package/lib/components/ca-new-filter/interface/sorting-emmiter.interface.d.ts +5 -0
  135. package/lib/components/ca-new-filter/interface/time-options.interface.d.ts +9 -0
  136. package/lib/components/ca-new-filter/pipes/filter-search.pipe.d.ts +8 -0
  137. package/lib/components/ca-new-filter/types/filter-dropdown.types.d.ts +2 -0
  138. package/lib/components/ca-new-filter/types/filter-sorting-key.type.d.ts +2 -0
  139. package/lib/components/ca-new-filter/types/filter-time.types.d.ts +2 -0
  140. package/lib/components/ca-new-filter/types/index.d.ts +3 -0
  141. package/lib/components/ca-new-filter/utils/configs/filter-dropdown-fields.config.d.ts +7 -0
  142. package/lib/components/ca-new-filter/utils/configs/index.d.ts +1 -0
  143. package/lib/components/ca-new-filter/utils/helpers/index.d.ts +1 -0
  144. package/lib/components/ca-new-filter/utils/helpers/time-filter.helper.d.ts +6 -0
  145. package/lib/components/ca-search-multiple-states/ca-search-multiple-states.component.d.ts +2 -2
  146. package/lib/components/ca-search-multiple-states/models/tab-data.model.d.ts +11 -11
  147. package/lib/components/ca-sort-dropdown/ca-sort-dropdown.component.d.ts +12 -5
  148. package/lib/components/ca-sort-dropdown/types/index.d.ts +1 -0
  149. package/lib/components/ca-sort-dropdown/types/sort-directions.type.d.ts +5 -0
  150. package/lib/components/ca-sort-dropdown/utils/svg-routes/ca-sort-dropdown-svg-routes.d.ts +2 -1
  151. package/package.json +1 -1
  152. package/public-api.d.ts +7 -0
  153. package/src/assets/ca-components/svg/common/ic_arrow_desc.svg +3 -0
  154. package/esm2022/lib/components/ca-filters/utils/constants/time-filter.constants.mjs +0 -102
@@ -0,0 +1,142 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output, } from '@angular/core';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ // Enums
5
+ import { eFilterDropdownEnum, eFilterSortingKey } from '../../enums';
6
+ import { LoadStatusEnum } from '../../../../enums/load-status.enum';
7
+ // Constants & Utils
8
+ import { CaFiltersSvgRoutes } from '../../../ca-filters/utils/svg-routes';
9
+ import { FilterDropdownIconsConst } from '../../constant';
10
+ // Components
11
+ import { CaFilterDropdownComponent } from '../../ca-filter-dropdown.component';
12
+ import { CaProfileImageComponent } from '../../../ca-profile-image/ca-profile-image.component';
13
+ import { CaInputComponent } from '../../../ca-input/ca-input.component';
14
+ // Pipes
15
+ import { FilterTrailerColorPipe, FilterTruckColorPipe, } from '../../../ca-filters/pipes';
16
+ import { DropdownLoadStatusColorPipe } from '../../../../pipes';
17
+ import { FilterSearchPipe } from '../../pipes/filter-search.pipe';
18
+ // External Libraries
19
+ import { SvgIconComponent } from 'angular-svg-icon';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "@angular/forms";
22
+ import * as i2 from "@angular/common";
23
+ export class CaFilterListDropdownComponent {
24
+ set type(value) {
25
+ this.setInitalType(value);
26
+ }
27
+ set list(value) {
28
+ this.setInitalList(value);
29
+ }
30
+ constructor(formBuilder) {
31
+ this.formBuilder = formBuilder;
32
+ this.setFilter = new EventEmitter();
33
+ this.caFiltersSvgRoutes = CaFiltersSvgRoutes;
34
+ this.loadStatusEnum = LoadStatusEnum;
35
+ this.srollLimitSize = 8;
36
+ this.selectedList = [];
37
+ this.unselectedList = [];
38
+ this.searchForm = this.formBuilder.group({
39
+ search: null,
40
+ });
41
+ this.sortKey = eFilterSortingKey.NAME;
42
+ this.directionMultiplier = 1;
43
+ this.initialListSize = 0;
44
+ this.selectedCount = 0;
45
+ this.activeCount = 0;
46
+ this._list = [];
47
+ // Public
48
+ this.selectItem = (item) => {
49
+ this.moveItem(item, this.unselectedList, this.selectedList);
50
+ };
51
+ this.unSelectItem = (item) => {
52
+ this.moveItem(item, this.selectedList, this.unselectedList);
53
+ };
54
+ }
55
+ // Getters
56
+ get type() {
57
+ return this._type;
58
+ }
59
+ get truckOrTrailerIconPipe() {
60
+ return this.type === eFilterDropdownEnum.TRUCK_TYPE
61
+ ? new FilterTruckColorPipe()
62
+ : new FilterTrailerColorPipe();
63
+ }
64
+ clearValues() {
65
+ this.emitData([]);
66
+ this.selectedList = [];
67
+ this.unselectedList = [...this._list];
68
+ this.selectedCount = 0;
69
+ this.activeCount = 0;
70
+ }
71
+ passFilterValue() {
72
+ this.emitData(this.selectedList.map((list) => list.id));
73
+ this.selectedCount = this.activeCount;
74
+ }
75
+ sortValues(sorting) {
76
+ this.sortKey = sorting.sortKey;
77
+ this.directionMultiplier = sorting.directionMultiplier;
78
+ }
79
+ emitData(list) {
80
+ this.setFilter.emit({
81
+ filterType: this.type,
82
+ selectedIds: list,
83
+ });
84
+ }
85
+ updateLists() {
86
+ this.selectedList = this._list.filter((item) => item.selected);
87
+ this.unselectedList = this._list.filter((item) => !item.selected);
88
+ }
89
+ moveItem(item, fromList, toList) {
90
+ const index = fromList.indexOf(item);
91
+ if (index !== -1) {
92
+ fromList.splice(index, 1);
93
+ toList.push(item);
94
+ // Update references so list is updated
95
+ this.selectedList = [...this.selectedList];
96
+ this.unselectedList = [...this.unselectedList];
97
+ this.calculateSelectedCount();
98
+ }
99
+ }
100
+ calculateSelectedCount() {
101
+ this.activeCount = this.selectedList.length;
102
+ }
103
+ setInitalList(value) {
104
+ if (value) {
105
+ // Pm and truck type don't have id so we need to map names
106
+ this._list = value.map((item) => ({
107
+ ...item,
108
+ id: item.id ?? item.name,
109
+ }));
110
+ this.updateLists();
111
+ this.initialListSize = value.length;
112
+ }
113
+ }
114
+ setInitalType(value) {
115
+ this._type = value;
116
+ this.config = FilterDropdownIconsConst[this._type];
117
+ }
118
+ 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 }); }
119
+ 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" }, outputs: { setFilter: "setFilter" }, ngImport: i0, template: "<app-ca-filter-dropdown\n [type]=\"type\"\n [config]=\"config\"\n [bodyTemplate]=\"bodyTemplate\"\n [isFormChanged]=\"!!activeCount\"\n [appliedFiltersCount]=\"selectedCount\"\n (handleFiltersClear)=\"clearValues()\"\n (setFilter)=\"passFilterValue()\"\n (sorting)=\"sortValues($event)\"\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.search &&\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.name\"\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: ["type", "config", "bodyTemplate", "isFormChanged", "appliedFiltersCount", "customTitle", "customCancelButton"], outputs: ["setFilter", "handleFiltersClear", "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" }] }); }
120
+ }
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaFilterListDropdownComponent, decorators: [{
122
+ type: Component,
123
+ args: [{ selector: 'app-ca-filter-list-dropdown', standalone: true, imports: [
124
+ CommonModule,
125
+ ReactiveFormsModule,
126
+ CaInputComponent,
127
+ CaFilterDropdownComponent,
128
+ CaProfileImageComponent,
129
+ SvgIconComponent,
130
+ DropdownLoadStatusColorPipe,
131
+ FilterTruckColorPipe,
132
+ FilterTrailerColorPipe,
133
+ FilterSearchPipe,
134
+ ], template: "<app-ca-filter-dropdown\n [type]=\"type\"\n [config]=\"config\"\n [bodyTemplate]=\"bodyTemplate\"\n [isFormChanged]=\"!!activeCount\"\n [appliedFiltersCount]=\"selectedCount\"\n (handleFiltersClear)=\"clearValues()\"\n (setFilter)=\"passFilterValue()\"\n (sorting)=\"sortValues($event)\"\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.search &&\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.name\"\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" }]
135
+ }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }], propDecorators: { type: [{
136
+ type: Input
137
+ }], list: [{
138
+ type: Input
139
+ }], setFilter: [{
140
+ type: Output
141
+ }] } });
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtZmlsdGVyLWxpc3QtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbmV3LWZpbHRlci9jb21wb25lbnRzL2NhLWZpbHRlci1saXN0LWRyb3Bkb3duL2NhLWZpbHRlci1saXN0LWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW5ldy1maWx0ZXIvY29tcG9uZW50cy9jYS1maWx0ZXItbGlzdC1kcm9wZG93bi9jYS1maWx0ZXItbGlzdC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsUUFBUTtBQUNSLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFXcEUsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFELGFBQWE7QUFDYixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUMvRixPQUFP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Q3BCLHNCQUFzQjt3QkFDdEIsZ0JBQWdCO3FCQUNuQjt1RkFNRyxJQUFJO3NCQURQLEtBQUs7Z0JBTUYsSUFBSTtzQkFEUCxLQUFLO2dCQUtJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBQaXBlVHJhbnNmb3JtLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLy8gRW51bXNcbmltcG9ydCB7IGVGaWx0ZXJEcm9wZG93bkVudW0sIGVGaWx0ZXJTb3J0aW5nS2V5IH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgTG9hZFN0YXR1c0VudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtcy9sb2FkLXN0YXR1cy5lbnVtJztcblxuLy8gVHlwZXMgJiBJbnRlcmZhY2VzXG5pbXBvcnQgeyBGaWx0ZXJEcm9wZG93blR5cGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgICBJRmlsdGVyQWN0aW9uLFxuICAgIElGaWx0ZXJEcm9wZG93bkNvbmZpZ3VyYXRpb24sXG4gICAgSUZpbHRlckRyb3Bkb3duTGlzdCxcbiAgICBJU29ydEVtaXQsXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZSc7XG5cbi8vIENvbnN0YW50cyAmIFV0aWxzXG5pbXBvcnQgeyBDYUZpbHRlcnNTdmdSb3V0ZXMgfSBmcm9tICcuLi8uLi8uLi9jYS1maWx0ZXJzL3V0aWxzL3N2Zy1yb3V0ZXMnO1xuaW1wb3J0IHsgRmlsdGVyRHJvcGRvd25JY29uc0NvbnN0IH0gZnJvbSAnLi4vLi4vY29uc3RhbnQnO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBDYUZpbHRlckRyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY2EtZmlsdGVyLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYVByb2ZpbGVJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLXByb2ZpbGUtaW1hZ2UvY2EtcHJvZmlsZS1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLWlucHV0L2NhLWlucHV0LmNvbXBvbmVudCc7XG5cbi8vIFBpcGVzXG5pbXBvcnQge1xuICAgIEZpbHRlclRyYWlsZXJDb2xvclBpcGUsXG4gICAgRmlsdGVyVHJ1Y2tDb2xvclBpcGUsXG59IGZyb20gJy4uLy4uLy4uL2NhLWZpbHRlcnMvcGlwZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25Mb2FkU3RhdHVzQ29sb3JQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMnO1xuaW1wb3J0IHsgRmlsdGVyU2VhcmNoUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2ZpbHRlci1zZWFyY2gucGlwZSc7XG5cbi8vIEV4dGVybmFsIExpYnJhcmllc1xuaW1wb3J0IHsgU3ZnSWNvbkNvbXBvbmVudCB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1jYS1maWx0ZXItbGlzdC1kcm9wZG93bicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgXG4gICAgICAgIENhSW5wdXRDb21wb25lbnQsXG4gICAgICAgIENhRmlsdGVyRHJvcGRvd25Db21wb25lbnQsXG4gICAgICAgIENhUHJvZmlsZUltYWdlQ29tcG9uZW50LFxuICAgICAgICBTdmdJY29uQ29tcG9uZW50LFxuXG4gICAgICAgIERyb3Bkb3duTG9hZFN0YXR1c0NvbG9yUGlwZSxcbiAgICAgICAgRmlsdGVyVHJ1Y2tDb2xvclBpcGUsXG4gICAgICAgIEZpbHRlclRyYWlsZXJDb2xvclBpcGUsXG4gICAgICAgIEZpbHRlclNlYXJjaFBpcGUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtZmlsdGVyLWxpc3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jYS1maWx0ZXItbGlzdC1kcm9wZG93bi5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2FGaWx0ZXJMaXN0RHJvcGRvd25Db21wb25lbnQge1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHR5cGUodmFsdWU6IEZpbHRlckRyb3Bkb3duVHlwZXMpIHtcbiAgICAgICAgdGhpcy5zZXRJbml0YWxUeXBlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBsaXN0KHZhbHVlOiBJRmlsdGVyRHJvcGRvd25MaXN0W10pIHtcbiAgICAgICAgdGhpcy5zZXRJbml0YWxMaXN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgc2V0RmlsdGVyOiBFdmVudEVtaXR0ZXI8SUZpbHRlckFjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgY2FGaWx0ZXJzU3ZnUm91dGVzID0gQ2FGaWx0ZXJzU3ZnUm91dGVzO1xuICAgIHB1YmxpYyBsb2FkU3RhdHVzRW51bSA9IExvYWRTdGF0dXNFbnVtO1xuICAgIHB1YmxpYyBzcm9sbExpbWl0U2l6ZTogbnVtYmVyID0gODtcblxuICAgIHB1YmxpYyBzZWxlY3RlZExpc3Q6IElGaWx0ZXJEcm9wZG93bkxpc3RbXSA9IFtdO1xuICAgIHB1YmxpYyB1bnNlbGVjdGVkTGlzdDogSUZpbHRlckRyb3Bkb3duTGlzdFtdID0gW107XG4gICAgcHVibGljIHNlYXJjaEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgc2VhcmNoOiBudWxsLFxuICAgIH0pO1xuICAgIHB1YmxpYyBzb3J0S2V5OiBrZXlvZiBJRmlsdGVyRHJvcGRvd25MaXN0ID0gZUZpbHRlclNvcnRpbmdLZXkuTkFNRTtcbiAgICBwdWJsaWMgZGlyZWN0aW9uTXVsdGlwbGllcjogbnVtYmVyID0gMTtcbiAgICBwdWJsaWMgaW5pdGlhbExpc3RTaXplOiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBjb25maWchOiBJRmlsdGVyRHJvcGRvd25Db25maWd1cmF0aW9uO1xuICAgIFxuICAgIHB1YmxpYyBzZWxlY3RlZENvdW50OiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBhY3RpdmVDb3VudDogbnVtYmVyID0gMDtcbiAgICBcbiAgICBwcml2YXRlIF90eXBlITogRmlsdGVyRHJvcGRvd25UeXBlczsgXG4gICAgcHJpdmF0ZSBfbGlzdDogSUZpbHRlckRyb3Bkb3duTGlzdFtdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIpIHt9XG5cbiAgICAvLyBHZXR0ZXJzXG4gICAgZ2V0IHR5cGUoKTogRmlsdGVyRHJvcGRvd25UeXBlcyB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlO1xuICAgIH1cblxuICAgIC8vIFB1YmxpY1xuICAgIHB1YmxpYyBzZWxlY3RJdGVtID0gKGl0ZW06IElGaWx0ZXJEcm9wZG93bkxpc3QpID0+IHtcbiAgICAgICAgdGhpcy5tb3ZlSXRlbShpdGVtLCB0aGlzLnVuc2VsZWN0ZWRMaXN0LCB0aGlzLnNlbGVjdGVkTGlzdCk7XG4gICAgfTtcblxuICAgIHB1YmxpYyB1blNlbGVjdEl0ZW0gPSAoaXRlbTogSUZpbHRlckRyb3Bkb3duTGlzdCkgPT4ge1xuICAgICAgICB0aGlzLm1vdmVJdGVtKGl0ZW0sIHRoaXMuc2VsZWN0ZWRMaXN0LCB0aGlzLnVuc2VsZWN0ZWRMaXN0KTtcbiAgICB9O1xuXG4gICAgcHVibGljIGdldCB0cnVja09yVHJhaWxlckljb25QaXBlKCk6IFBpcGVUcmFuc2Zvcm0ge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBlRmlsdGVyRHJvcGRvd25FbnVtLlRSVUNLX1RZUEVcbiAgICAgICAgICAgID8gbmV3IEZpbHRlclRydWNrQ29sb3JQaXBlKClcbiAgICAgICAgICAgIDogbmV3IEZpbHRlclRyYWlsZXJDb2xvclBpcGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJWYWx1ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW1pdERhdGEoW10pO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0ID0gW107XG4gICAgICAgIHRoaXMudW5zZWxlY3RlZExpc3QgPSBbLi4udGhpcy5fbGlzdF07IFxuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnQgPSAwO1xuICAgICAgICB0aGlzLmFjdGl2ZUNvdW50ID0gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFzc0ZpbHRlclZhbHVlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVtaXREYXRhKHRoaXMuc2VsZWN0ZWRMaXN0Lm1hcCgobGlzdCkgPT4gbGlzdC5pZCkpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnQgPSB0aGlzLmFjdGl2ZUNvdW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzb3J0VmFsdWVzKHNvcnRpbmc6IElTb3J0RW1pdCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNvcnRLZXkgPSBzb3J0aW5nLnNvcnRLZXk7XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uTXVsdGlwbGllciA9IHNvcnRpbmcuZGlyZWN0aW9uTXVsdGlwbGllcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXREYXRhKGxpc3Q6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RmlsdGVyLmVtaXQoe1xuICAgICAgICAgICAgZmlsdGVyVHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgc2VsZWN0ZWRJZHM6IGxpc3QsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTGlzdHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0ID0gdGhpcy5fbGlzdC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLnVuc2VsZWN0ZWRMaXN0ID0gdGhpcy5fbGlzdC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmVJdGVtKFxuICAgICAgICBpdGVtOiBJRmlsdGVyRHJvcGRvd25MaXN0LFxuICAgICAgICBmcm9tTGlzdDogSUZpbHRlckRyb3Bkb3duTGlzdFtdLFxuICAgICAgICB0b0xpc3Q6IElGaWx0ZXJEcm9wZG93bkxpc3RbXVxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IGZyb21MaXN0LmluZGV4T2YoaXRlbSk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGZyb21MaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB0b0xpc3QucHVzaChpdGVtKTtcblxuICAgICAgICAgICAgLy8gVXBkYXRlIHJlZmVyZW5jZXMgc28gbGlzdCBpcyB1cGRhdGVkXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGlzdCA9IFsuLi50aGlzLnNlbGVjdGVkTGlzdF07XG4gICAgICAgICAgICB0aGlzLnVuc2VsZWN0ZWRMaXN0ID0gWy4uLnRoaXMudW5zZWxlY3RlZExpc3RdO1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVTZWxlY3RlZENvdW50KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVTZWxlY3RlZENvdW50KCkgOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVDb3VudCA9IHRoaXMuc2VsZWN0ZWRMaXN0Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEluaXRhbExpc3QodmFsdWU6IElGaWx0ZXJEcm9wZG93bkxpc3RbXSkgOiB2b2lkICB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgLy8gUG0gYW5kIHRydWNrIHR5cGUgZG9uJ3QgaGF2ZSBpZCBzbyB3ZSBuZWVkIHRvIG1hcCBuYW1lc1xuICAgICAgICAgICAgdGhpcy5fbGlzdCA9IHZhbHVlLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkID8/IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGlzdHMoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbExpc3RTaXplID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbml0YWxUeXBlKHZhbHVlOiBGaWx0ZXJEcm9wZG93blR5cGVzKSAgOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHlwZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNvbmZpZyA9IEZpbHRlckRyb3Bkb3duSWNvbnNDb25zdFt0aGlzLl90eXBlXTtcbiAgICB9XG59XG4iLCI8YXBwLWNhLWZpbHRlci1kcm9wZG93blxuICAgIFt0eXBlXT1cInR5cGVcIlxuICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICBbYm9keVRlbXBsYXRlXT1cImJvZHlUZW1wbGF0ZVwiXG4gICAgW2lzRm9ybUNoYW5nZWRdPVwiISFhY3RpdmVDb3VudFwiXG4gICAgW2FwcGxpZWRGaWx0ZXJzQ291bnRdPVwic2VsZWN0ZWRDb3VudFwiXG4gICAgKGhhbmRsZUZpbHRlcnNDbGVhcik9XCJjbGVhclZhbHVlcygpXCJcbiAgICAoc2V0RmlsdGVyKT1cInBhc3NGaWx0ZXJWYWx1ZSgpXCJcbiAgICAoc29ydGluZyk9XCJzb3J0VmFsdWVzKCRldmVudClcIlxuPlxuICAgIEBsZXQgaXNUcnVjayA9IHR5cGUgPT09ICdUcnVja1R5cGUnO1xuICAgIEBsZXQgaXNUcmFpbGVyID0gdHlwZSA9PT0gJ1RyYWlsZXJUeXBlJztcbiAgICBAbGV0IGlzUG0gPSB0eXBlID09PSAnUG0nO1xuICAgIEBsZXQgaXNTZXJ2aWNlID0gdHlwZSA9PT0gJ1NlcnZpY2UnO1xuICAgIEBsZXQgaXNUcnVja09yVHJhaWxlciA9IGlzVHJ1Y2sgfHwgaXNUcmFpbGVyO1xuICAgIEBsZXQgaGFzTGVmdEljb24gPSBpc1BtIHx8IGlzU2VydmljZTtcbiAgICA8bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZT5cbiAgICAgICAgQGlmIChcbiAgICAgICAgICAgIGluaXRpYWxMaXN0U2l6ZSA+IHNyb2xsTGltaXRTaXplICYmXG4gICAgICAgICAgICBjb25maWcgJiZcbiAgICAgICAgICAgIGNvbmZpZy5zZWFyY2ggJiZcbiAgICAgICAgICAgIGNvbmZpZy5mb3JtRmllbGRDb25maWdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICA8ZGl2IFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImNvbmZpZy5mb3JtRmllbGRDb25maWdcIlxuICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLWxpc3RcIlxuICAgICAgICAgICAgW2NsYXNzLmNhLXNjcm9sbC1iYXJdPVwiaW5pdGlhbExpc3RTaXplID4gc3JvbGxMaW1pdFNpemVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGl2aWRlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgQGxldCBzZWFyY2hTdHJpbmcgPSBzZWFyY2hGb3JtLmdldCgnc2VhcmNoJyk/LnZhbHVlO1xuXG4gICAgICAgICAgICA8IS0tIFNlbGVjdGVkIExpc3QgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgbGlzdFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpbHRlclNlYXJjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaFN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICduYW1lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBkaXJlY3Rpb25NdWx0aXBsaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tGbjogdW5TZWxlY3RJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPCEtLSBVbnNlbGVjdGVkIExpc3QgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgbGlzdFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNlbGVjdGVkTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyU2VhcmNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ25hbWUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydEtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRpcmVjdGlvbk11bHRpcGxpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGlja0ZuOiBzZWxlY3RJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgI2xpc3RUZW1wbGF0ZVxuICAgICAgICBsZXQtaXRlbXM9XCJpdGVtc1wiXG4gICAgICAgIGxldC1jbGlja0ZuPVwiY2xpY2tGblwiXG4gICAgICAgIGxldC1pc1NlbGVjdGVkTGlzdD1cInNlbGVjdGVkTGlzdFwiXG4gICAgPlxuICAgICAgICBAaWYgKGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAteHMgbWItMSBtYXJnaW4tdC00XCI+XG4gICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLWxpc3QtaXRlbSBwYWRkaW5nLTQgYnItMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGMtcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0taG92ZXInOiBpc1NlbGVjdGVkTGlzdCxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdmctaG92ZXItZ3JleS00IHN2Zy1maWxsLW11dGVkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGVmdEljb24gJiYgIWlzU2VsZWN0ZWRMaXN0LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N2Zy1ob3Zlci1ibHVlLTE5IHN2Zy1maWxsLWJsdWUtOCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0xlZnRJY29uICYmIGlzU2VsZWN0ZWRMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tGbihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgbWFyZ2luLXItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmp1c3RpZnktY29udGVudC1iZXR3ZWVuXT1cImlzVHJ1Y2tPclRyYWlsZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodHlwZSA9PT0gJ0Rpc3BhdGNoZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtcHJvZmlsZS1pbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZHhdPVwiJGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0U2hvcnROYW1lXT1cIml0ZW0ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhdGFySW1nXT1cIml0ZW0uYXZhdGFyPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hcmdpbi1yLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtcHJvZmlsZS1pbWFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICh0eXBlID09PSAnU3RhdHVzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkU3RhdHVzRW51bVtpdGVtLmlkIV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkcm9wZG93bkxvYWRTdGF0dXNDb2xvcjogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLWxpc3QtaXRlbS1zdGF0dXMtY2lyY2xlIGJyLWNpcmNsZSBtYXJnaW4tci00XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGhhc0xlZnRJY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpdGVtLmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXJnaW4tci00IHN2Zy1zaXplLTE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtY29sb3Itd2hpdGUgdGV4dC1zaXplLTE0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNhLWZvbnQtZXh0cmEtYm9sZF09XCJpc1NlbGVjdGVkTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50ZXh0LXVwcGVyY2FzZV09XCJ0eXBlID09PSAnU3RhdHVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNUcnVja09yVHJhaWxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLWxpc3QtaXRlbS1pY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1zdmctZmlsbC1jb2xvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVja09yVHJhaWxlckljb25QaXBlLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uIFtzcmNdPVwiaXRlbS5pY29uXCI+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudDogaXRlbS5jb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWRMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc1NlbGVjdGVkTGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImNhRmlsdGVyc1N2Z1JvdXRlcy5yZW1vdmVTZWxlY3RlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctc2l6ZS0xMCBzdmctZmlsbC1yZWQtMTAgZmlsdGVyLWRyb3Bkb3duLWxpc3QtaXRlbS1yZW1vdmUganVzdGlmeS1jb250ZW50LWNlbnRlciBmaWx0ZXItZHJvcGRvd24tbGlzdC1iYWRnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpdmlkZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIERpdmlkZXIgVGVtcGxhdGUgLS0+XG4gICAgPG5nLXRlbXBsYXRlICNkaXZpZGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZC1ibGFjayBici0yIGhlaWdodC0xXCI+PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlIGxldC1jb3VudD1cImNvdW50XCIgbGV0LWlzU2VsZWN0ZWQ9XCJpc1NlbGVjdGVkXCI+XG4gICAgICAgIDwhLS0gQ291bnQgY2FuIGJlIHVuZGVmaW5lZCBmb3IgZXhhbXBsZSBvbiBhc3NpZ24gZGlzcGF0Y2ggbG9hZCBsaXN0LCBvciBpdCBjYW4gYmUgMCBhcyB3ZWxsIGZvciBzb21lIGRpc3BhdGNoZXJzIC0tPlxuICAgICAgICBAaWYgKGNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJyLTEwIGZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0tY291bnQgdGV4dC1zaXplLTExIGNhLWZvbnQtc2VtaS1ib2xkIHBhZGRpbmcteS0yIHBhZGRpbmcteC01IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmaWx0ZXItZHJvcGRvd24tbGlzdC1iYWRnZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2JhY2tncm91bmQtYmx1ZS0xNCB0ZXh0LWNvbG9yLXdoaXRlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmFja2dyb3VuZC1ibGFjayB0ZXh0LWNvbG9yLXdoaXRlLTQnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBjb3VudCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9hcHAtY2EtZmlsdGVyLWRyb3Bkb3duPlxuIl19
@@ -0,0 +1,131 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ // Components
5
+ import { CaFilterDropdownComponent } from '../../ca-filter-dropdown.component';
6
+ import { SvgIconComponent } from 'angular-svg-icon';
7
+ import { CaInputComponent } from '../../../ca-input/ca-input.component';
8
+ // Enums
9
+ import { eFilterDropdownEnum, eFilterSortingKey } from '../../enums';
10
+ // Svg routes
11
+ import { CaFiltersSvgRoutes } from '../../../ca-filters/utils/svg-routes';
12
+ // Const
13
+ import { FilterDropdownIconsConst } from '../../constant';
14
+ // Config
15
+ import { FilterDropdownFields } from '../../utils/configs';
16
+ // Pipes
17
+ import { FilterSearchPipe } from '../../pipes/filter-search.pipe';
18
+ import * as i0 from "@angular/core";
19
+ import * as i1 from "@angular/forms";
20
+ import * as i2 from "@angular/common";
21
+ export class CaFilterStateDropdownComponent {
22
+ set states(value) {
23
+ this.mapInitalStates(value);
24
+ }
25
+ constructor(formBuilder) {
26
+ this.formBuilder = formBuilder;
27
+ this.setFilter = new EventEmitter();
28
+ this.sortKey = eFilterSortingKey.NAME;
29
+ this.directionMultiplier = 1;
30
+ this.config = FilterDropdownIconsConst.State;
31
+ this.eFilterDropdownEnum = eFilterDropdownEnum;
32
+ this.caFiltersSvgRoutes = CaFiltersSvgRoutes;
33
+ this.selectedList = [];
34
+ this.unselectedList = [];
35
+ this.searchForm = this.formBuilder.group({
36
+ search: null,
37
+ });
38
+ this.stateSearchForm = FilterDropdownFields.stateSearch;
39
+ this.selectedCount = 0;
40
+ this.activeCount = 0;
41
+ this._states = [];
42
+ this.selectItem = (item, countryName) => {
43
+ const country = this.states.find((state) => state.country === countryName);
44
+ if (country) {
45
+ country.unselectedList = country.unselectedList.filter((_country) => _country !== item);
46
+ country.selectedList = [...country.selectedList, item];
47
+ }
48
+ this.calculateSelectedCount();
49
+ };
50
+ this.unSelectItem = (item, countryName) => {
51
+ const country = this.states.find((state) => state.country === countryName);
52
+ if (country) {
53
+ country.selectedList = country.selectedList.filter((_country) => _country !== item);
54
+ country.unselectedList = [...country.unselectedList, item];
55
+ }
56
+ this.calculateSelectedCount();
57
+ };
58
+ }
59
+ get states() {
60
+ return this._states;
61
+ }
62
+ calculateSelectedCount() {
63
+ this.activeCount = this._states.reduce((sum, state) => sum + state.selectedList.length, 0);
64
+ }
65
+ clearValues() {
66
+ this.emitData([]);
67
+ this.states = this.states.map((state) => {
68
+ return {
69
+ ...state,
70
+ selectedList: [],
71
+ unselectedList: state.initalList,
72
+ };
73
+ });
74
+ this.selectedCount = 0;
75
+ this.activeCount = 0;
76
+ }
77
+ passFilterValue() {
78
+ const states = this.states
79
+ .map((country) => country.selectedList
80
+ .map((state) => state.stateShortName)
81
+ .filter((shortName) => Boolean(shortName)))
82
+ .flat();
83
+ this.emitData(states);
84
+ this.selectedCount = this.activeCount;
85
+ }
86
+ sortValues(sorting) {
87
+ this.sortKey = sorting.sortKey;
88
+ this.directionMultiplier = sorting.directionMultiplier;
89
+ }
90
+ emitData(selectedStates) {
91
+ this.setFilter.emit({
92
+ filterType: eFilterDropdownEnum.STATE,
93
+ selectedStates,
94
+ });
95
+ }
96
+ mapInitalStates(value) {
97
+ this._states = value.map((country) => {
98
+ const states = country.states.map((state, index) => ({
99
+ stateShortName: state.stateShortName,
100
+ name: state.stateName || state.stateName,
101
+ count: state.count,
102
+ selected: false,
103
+ id: index,
104
+ }));
105
+ return {
106
+ ...country,
107
+ unselectedList: states,
108
+ selectedList: [],
109
+ initialList: [...states],
110
+ };
111
+ });
112
+ }
113
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaFilterStateDropdownComponent, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
114
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaFilterStateDropdownComponent, isStandalone: true, selector: "app-ca-filter-state-dropdown", inputs: { states: "states" }, outputs: { setFilter: "setFilter" }, ngImport: i0, template: "<app-ca-filter-dropdown\n [type]=\"eFilterDropdownEnum.STATE\"\n [config]=\"config\"\n [bodyTemplate]=\"bodyTemplate\"\n [isFormChanged]=\"!!activeCount\"\n [appliedFiltersCount]=\"selectedCount\"\n (handleFiltersClear)=\"clearValues()\"\n (setFilter)=\"passFilterValue()\"\n (sorting)=\"sortValues($event)\"\n>\n <ng-template #bodyTemplate>\n @let searchString = searchForm.get('search')?.value;\n\n <div [formGroup]=\"searchForm\">\n <app-ca-input\n formControlName=\"search\"\n [inputConfig]=\"stateSearchForm\"\n ></app-ca-input>\n </div>\n\n <div class=\"filter-dropdown-list padding-x-4\">\n @for (country of states; track $index) {\n @if (country.selectedList.length) {\n <p\n class=\"text-color-white text-size-11 ca-font-bold margin-t-6\"\n >\n {{ country.country }}\n </p>\n <!-- Selected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n country.selectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n country: country.country,\n clickFn: unSelectItem,\n selectedList: true,\n }\n \"\n ></ng-container>\n }\n }\n\n @for (country of states; track $index) {\n @if (country.unselectedList.length) {\n <p\n class=\"text-color-white text-size-11 ca-font-bold margin-t-6\"\n >\n {{ country.country }}\n </p>\n <!-- Unselected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n country.unselectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n country: country.country,\n clickFn: selectItem,\n selectedList: false,\n }\n \"\n ></ng-container>\n }\n }\n </div>\n </ng-template>\n\n <ng-template\n #listTemplate\n let-items=\"items\"\n let-country=\"country\"\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 (click)=\"clickFn(item, country)\"\n >\n <div class=\"d-flex align-items-center w-100 margin-r-4\">\n <div\n class=\"margin-r-4 br-1 ca-font-extra-bold text-shortName text-center\"\n [ngClass]=\"\n isSelectedList\n ? 'background-blue-13 text-color-blue-16'\n : 'background-black text-color-white-4'\n \"\n >\n {{ item.stateShortName }}\n </div>\n <div\n class=\"text-color-white text-size-14\"\n [class.ca-font-extra-bold]=\"isSelectedList\"\n >\n {{ item.name }}\n </div>\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: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#fff}.table-progress-popover .progress-dropdown .progress-header .progress-title span{font-weight:400}.table-progress-popover .progress-dropdown .progress-header .progress-total{font-size:14px;line-height:17px;color:#fff}.table-progress-popover .progress-dropdown .table-progress-bar-container{width:100%;height:8px;margin-top:6px;border-radius:2px;overflow:hidden}.table-progress-popover .progress-dropdown .table-progress-bar-container .table-progress-bar{height:100%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-dual-info-container .progress-info-container{width:50%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container{margin-top:10px}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-title{margin-bottom:2px;font-size:11px;font-weight:700;line-height:14px;color:#ffffffb2}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-text{font-size:14px;line-height:18px;color:#fff}.table-progress-popover .progress-dropdown.credit-dropdown{height:100px}@-webkit-keyframes progressAnimation{0%{height:0px}to{height:220px}}@keyframes progressAnimation{0%{height:0px}to{height:220px}}ngb-popover-window{padding:unset!important;border:unset!important}ngb-popover-window .popover-arrow{display:none!important}ngb-popover-window .popover-body{padding:unset!important}.dispatch-note .popover-body{position:relative;top:-4px;left:-4px}.tooltip{font-size:12px;position:relative}.tooltip.show{opacity:.83}.tooltip.fade:after,.tooltip.fade:before{transform:translateY(-10px);transition:all .15s ease-in-out}.tooltip.fade:hover:after,.tooltip.fade:hover:before{opacity:1;transform:translate(0)}.tooltip-inner{padding:4px 10px;white-space:nowrap;max-width:none;border-radius:3px}.tooltip-inner:empty{padding:0}.placeholder-delete .tooltip-inner{background-color:#f66}.placeholder-delete .arrow:before{border-top-color:#f66}.custom-popup-owners-for-flag .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(126%) translate(-50%)!important;width:130px;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-for-flag .arrow{bottom:-18%;transform:rotate(180deg);left:calc(50% + 2.7rem)}.custom-popup-owners-for-flag .tooltip{opacity:.93!important;width:0}.custom-popup-owners{z-index:999}.custom-popup-owners .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners .tooltip{transform:translateY(-61px)!important}.custom-popup-owners-year{z-index:999}.custom-popup-owners-year .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners-year .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners-year .tooltip{transform:translate(70px,-61px)!important}.custom-popup-owners-info .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-100%) translate(-10%);width:200px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;margin-top:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info .tooltip{opacity:.93;width:0}.custom-popup-owners-info .arrow{display:none}.custom-popup-owners-info #phone-inside{position:relative;right:26px;bottom:0}.custom-popup-owners-info-at .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-108%) translate(-7%);width:270px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info-at .tooltip{opacity:1;width:0}.custom-popup-owners-info-at .arrow{display:none}.custom-popup-owners-for-tag .tooltip-inner{color:#3b3b3b;background-color:#fff;width:100px;border-radius:3px;box-shadow:0 0 3px #0003!important}.custom-popup-owners-for-tag .tooltip{top:5px!important}.custom-popup-owners-for-tag .arrow{bottom:-24%}.align-items-flex-start{justify-content:center;align-items:center}.align-items-flex-end{display:flex;justify-content:center;flex-direction:column;align-self:flex-end;align-items:flex-start}.label-add{align-self:flex-start}.fadeInLoad{animation:fadeInLoad .25s}@keyframes fadeInLoad{0%{opacity:0}to{opacity:1}}.fadeIn{opacity:1;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;transition:.25s}.thisText:hover .fadeIn{opacity:0}.fadeInLoad{animation-name:example;animation-duration:.25s}@keyframes example{0%{transform:scale(.5)}to{transform:scale(1)}}.tooltip.tooltip-table-icons{left:12px!important;opacity:1}.tooltip.tooltip-table-icons .arrow{display:none!important}.tooltip.tooltip-table-icons .tooltip-inner{border-radius:0 50px 50px;background:#28529f}.tooltip.show{opacity:1;animation:fadeIn ease .5s!important;-webkit-animation:fadeIn ease .5s!important;-moz-animation:fadeIn ease .5s!important;-o-animation:fadeIn ease .5s!important;-ms-animation:fadeIn ease .5s!important}.ta-tooltip{position:absolute;font-size:12px;text-align:center;color:#fff;line-height:22px;z-index:999999!important;opacity:0;white-space:nowrap;transform:scale(.7)}.ta-tooltip.ta-tooltip-show{opacity:.85;transform:scale(1);padding:0 12px}.ta-tooltip.ta-tooltip-bottom-right,.ta-tooltip.ta-tooltip-bottom-right-corner{transform-origin:top left;border-radius:0 15px 15px}.ta-tooltip.ta-tooltip-bottom-left{transform-origin:top right;border-radius:15px 0 15px 15px}@keyframes scaleItem{0%{transform:scale(.4)}to{transform:scale(1)}}.app-ca-main-tooltip{pointer-events:none}.app-ca-main-tooltip .tooltip-inner{padding:0;background-color:transparent;pointer-events:none}.app-ca-main-tooltip .tooltip-inner .tooltip-holder{display:flex;font-size:11px;font-weight:700;border-radius:2px;padding:2px 8px;animation:scaleItem .3s;white-space:normal}.app-ca-main-tooltip .tooltip-inner .tooltip-holder:empty{padding:0}.tooltip-arrow{display:none!important}.trucks.semitruck svg path,.trucks.semisleeper svg path,.trucks.flatbed svg path,.trucks.stepdeck svg path,.trucks.lowboyrgn svg path,.trucks.chassis svg path,.trucks.conestoga svg path,.trucks.sidekit svg path,.trucks.container svg path,.trailers.semitruck svg path,.trailers.semisleeper svg path,.trailers.flatbed svg path,.trailers.stepdeck svg path,.trailers.lowboyrgn svg path,.trailers.chassis svg path,.trailers.conestoga svg path,.trailers.sidekit svg path,.trailers.container svg path{fill:#92b1f5}.trucks.boxtruck svg path,.trucks.reefertruck svg path,.trucks.cargovan svg path,.trucks.dryvan svg path,.trucks.reefer svg path,.trailers.boxtruck svg path,.trailers.reefertruck svg path,.trailers.cargovan svg path,.trailers.dryvan svg path,.trailers.reefer svg path{fill:#fbc88b}.trucks.dumptruck svg path,.trucks.cementtruck svg path,.trucks.garbagetruck svg path,.trucks.enddump svg path,.trucks.bottomdump svg path,.trucks.hopper svg path,.trucks.tanker svg path,.trucks.pneumatictanker svg path,.trailers.dumptruck svg path,.trailers.cementtruck svg path,.trailers.garbagetruck svg path,.trailers.enddump svg path,.trailers.bottomdump svg path,.trailers.hopper svg path,.trailers.tanker svg path,.trailers.pneumatictanker svg path{fill:#ed9292}.trucks.towtruck svg path,.trucks.carhauler svg path,.trucks.spotter svg path,.trucks.carhaulerstigner svg path,.trailers.towtruck svg path,.trailers.carhauler svg path,.trailers.spotter svg path,.trailers.carhaulerstigner svg path{fill:#86c9c3}.trucks .svgtext-template-text,.trailers .svgtext-template-text{color:#fff;transition:color .3s ease-in-out}.colors .black svg #droplet{fill:#6c6c6c}.colors .brown svg #droplet{fill:#a1887f}.colors .darkgreen svg #droplet{fill:#4db6a2}.colors .lightgreen svg #droplet{fill:#81c784}.colors .darkblue svg #droplet{fill:#546fd2}.colors .lightblue svg #droplet{fill:#64b5f6}.colors .gray svg #droplet{fill:#aaa}.colors .purple svg #droplet{fill:#ba68c8}.colors .gold svg #droplet{fill:#bcad79}.colors .silver svg #droplet{fill:#dadada}.colors .red svg #droplet{fill:#f96b69}.colors .pink svg #droplet{fill:#f26ec2}.colors .white svg #droplet{fill:#f1f1f1}.colors .orange svg #droplet{fill:#ff8a65}.colors .yellow svg #droplet{fill:#ffd54f}.colors:hover{transition:all .3s ease-in-out}.colors:hover .black svg #droplet{fill:#3c3c3c}.colors:hover .brown svg #droplet{fill:#8d6e63}.colors:hover .darkgreen svg #droplet{fill:#26a690}.colors:hover .lightgreen svg #droplet{fill:#66bb6a}.colors:hover .darkblue svg #droplet{fill:#304fc1}.colors:hover .lightblue svg #droplet{fill:#42a5f5}.colors:hover .gray svg #droplet{fill:#919191}.colors:hover .purple svg #droplet{fill:#ab47bc}.colors:hover .gold svg #droplet{fill:#aa9c6e}.colors:hover .silver svg #droplet{fill:#b7b7b7}.colors:hover .red svg #droplet{fill:#ef5350}.colors:hover .pink svg #droplet{fill:#fa4daa}.colors:hover .white svg #droplet{fill:#fff}.colors:hover .orange svg #droplet{fill:#ff7043}.colors:hover .yellow svg #droplet{fill:#ffca28}.text-color-black{color:#424242!important}.text-color-black::-moz-selection{background:#42424233!important;color:#424242!important}.text-color-black::selection{background:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background:#91919133!important;color:#919191!important}.text-color-muted::selection{background:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-13::selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-16{color:#e9effd!important}.text-color-blue-16::-moz-selection{background:#66921833!important;color:#e9effd!important}.text-color-blue-16::selection{background:#66921833!important;color:#e9effd!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background:#e6676733!important;color:#e66767!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background:#ed929233!important;color:#ed9292!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{color:#ccc!important;background:#aaa3!important}.text-color-light-grey-6::selection{color:#ccc!important;background:#aaa3!important}.text-color-white{color:#fff!important}.text-color-white::-moz-selection{color:#fff!important;background:#fff3!important}.text-color-white::selection{color:#fff!important;background:#fff3!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{color:#fff!important;background:#fff3!important}.text-color-white-2::selection{color:#fff!important;background:#fff3!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{color:#ffffffb2!important;background:#fff3!important}.text-color-white-4::selection{color:#ffffffb2!important;background:#fff3!important}.text-color-dark-grey{color:#6c6c6c!important}.text-color-dark-grey::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-dark-grey::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey::selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{color:#919191!important;background:#91919133!important}.text-size-11{font-size:11px!important;line-height:14px!important}.text-size-14{font-size:14px!important;line-height:18px!important}.text-size-16{font-size:16px!important;line-height:19px!important}.text-size-18{font-size:18px!important;line-height:22px!important}.text-size-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}.svg-fill-black svg path{fill:#424242!important}.svg-fill-white svg path{fill:#fff!important}.svg-fill-white-2 svg path{fill:#fff!important}.svg-fill-muted svg path{fill:#919191!important}.svg-fill-bw-9 svg path{fill:#dadada!important}.svg-fill-light-grey-2 svg path{fill:#aaa!important}.svg-fill-light-grey-6 svg path{fill:#ccc!important}.svg-fill-blue-8 svg path{fill:#6692f1!important}.svg-fill-blue-13 svg path{fill:#6692f1!important}.svg-fill-blue-17 svg path{fill:#bed0f9!important}.svg-fill-blue-19 svg path{fill:#92b1f5!important}.svg-fill-blue-26 svg path{fill:#4dc5eb!important}.svg-fill-white-4 svg path{fill:#ffffffb2!important}.svg-fill-grey svg path{fill:#919191!important}.svg-fill-red-10 svg path{fill:#e66767!important}.svg-fill-green svg path{fill:#56b4ac!important}.svg-hover-white svg path{transition:all .3s ease-in-out}.svg-hover-white:hover svg path{fill:#fff!important}.svg-hover-white-2 svg path{transition:all .3s ease-in-out}.svg-hover-white-2:hover svg path{fill:#fff!important}.svg-hover-muted svg path{transition:all .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-grey-4 svg path{transition:all .3s ease-in-out}.svg-hover-grey-4:hover svg path{fill:#ccc!important}.svg-hover-black svg path{transition:all .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-10 svg path{transition:all .3s ease-in-out}.svg-hover-blue-10:hover svg path{fill:#bed0f9!important}.svg-hover-blue-15 svg path{transition:all .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-blue-19 svg path{transition:all .3s ease-in-out}.svg-hover-blue-19:hover svg path{fill:#92b1f5!important}.svg-hover-bw6-2 svg path{transition:all .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:all .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:all .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.svg-size-10 svg{width:10px;height:10px}.svg-size-12 svg{width:12px;height:12px}.svg-size-14 svg{width:14px;height:14px}.svg-size-16 svg{width:16px;height:16px}.svg-size-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-26 svg{width:26px;height:26px}.svg-size-44-16 svg{width:44px;height:16px}.background-black{background-color:#424242}.background-black-2{background-color:#2f2f2f}.background-blue-13{background-color:#6692f1}.background-blue-14{background-color:#3b73ed}.background-dark-2{background-color:#91919133}.background-hover-bw2{transition:background-color .3s ease-in-out}.background-hover-bw2:hover{background-color:#eee!important}.background-hover-blue-15{transition:background-color .3s ease-in-out}.background-hover-blue-15:hover{background-color:#0b49d1!important}.br-1{border-radius:1px}.br-2{border-radius:2px}.br-3{border-radius:3px}.br-10{border-radius:10px}.br-circle{border-radius:50%}.padding-2{padding:2px}.padding-4{padding:4px}.padding-y-2{padding-top:2px;padding-bottom:2px}.padding-y-4{padding-top:4px;padding-bottom:4px}.padding-x-4{padding-left:4px;padding-right:4px}.padding-x-5{padding-left:5px;padding-right:5px}.margin-t-4{margin-top:4px}.margin-r-4{margin-right:4px}.margin-b-4{margin-bottom:4px}.margin-t-6{margin-top:6px}.margin-r-6{margin-right:6px}.margin-b-6{margin-bottom:6px}.margin-t-24{margin-top:24px}.margin-r-24{margin-right:24px}.margin-b-24{margin-bottom:24px}.gap-xs{gap:2px}.height-1{height:1px}@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.filter-dropdown-popover{width:260px}.filter-dropdown-popover-max-height{max-height:360px}.filter-dropdown-list{max-height:260px;overflow-y:auto}.filter-dropdown-list-icon{height:26px;transition:background-color .3s ease-in-out}.filter-dropdown-list-icon-value{height:14px;width:14px}.filter-dropdown-list-icon-remove{display:none}.filter-dropdown-list-icon:hover{background-color:#424242}.filter-dropdown-list-icon:hover .filter-dropdown-icon-count{display:none}.filter-dropdown-list-icon-selected:hover{background-color:#0b49d1}.filter-dropdown-list-item-icons{transition:opacity .3s ease-in-out;opacity:0}.filter-dropdown-list-item-status-circle{height:10px;width:10px}.filter-dropdown-list-item-remove{display:none}.filter-dropdown-list-item:hover{background-color:#424242}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons{opacity:1}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons svg path{fill:var(--svg-fill-color, #e66767)}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove{display:flex}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove svg path{fill:#e66767!important}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-count{display:none!important}.filter-dropdown-icon{height:26px;width:26px}.filter-dropdown-count{height:14px;width:14px}.filter-dropdown-count-remove,.filter-dropdown-count-hover:hover .filter-dropdown-count-value{display:none}.filter-dropdown-count-hover:hover .filter-dropdown-count-remove{display:flex}.filter-dropdown-button{height:26px}.filter-dropdown-footer-button{color:#dadada;transition:color .3s ease-in-out,background-color .3s ease-in-out;height:18px;width:50%}.filter-dropdown-footer-button-set{color:#fff;background-color:#3b73ed}.filter-dropdown-footer-button-set:hover{background-color:#e9effd;color:#0b49d1}.filter-dropdown-footer-button-clear{color:#dadada}.filter-dropdown-footer-button-clear:hover{background-color:#eee;color:#424242}.filter-dropdown-list-badge{min-width:18px}*{margin:0;font-family:Montserrat,sans-serif}html{scroll-behavior:auto!important}.gm-style-iw-chr,.gm-style-iw-tc{display:none}.gm-style .gm-style-iw-c{border-radius:0}.gm-style-iw{overflow-y:auto!important;overflow-x:hidden!important}.gm-style-iw>div{overflow:visible!important}.infoWindow{overflow:hidden!important}.gm-style-iw-d,.gm-style-iw.gm-style-iw-c{max-height:350px!important}::ng-deep .popover{--bs-popover-border-width: 0;--bs-popover-body-padding-y: 0;--bs-popover-body-padding-x: 0}::ng-deep .popover .popover-arrow{display:none}.c-pointer{cursor:pointer}.ca-scroll-bar{overflow-y:scroll}.ca-scroll-bar::-webkit-scrollbar{width:2px}.ca-scroll-bar::-webkit-scrollbar-thumb{background:#ccc;border-radius:1px}.ca-scroll-bar::-webkit-scrollbar-track{background:#2f2f2f}.text-shortName{font-size:11px;height:18px;line-height:18px;width:28px}\n"], 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: "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: CaFilterDropdownComponent, selector: "app-ca-filter-dropdown", inputs: ["type", "config", "bodyTemplate", "isFormChanged", "appliedFiltersCount", "customTitle", "customCancelButton"], outputs: ["setFilter", "handleFiltersClear", "sorting"] }, { 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: SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "pipe", type: FilterSearchPipe, name: "filterSearch" }] }); }
115
+ }
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaFilterStateDropdownComponent, decorators: [{
117
+ type: Component,
118
+ args: [{ selector: 'app-ca-filter-state-dropdown', standalone: true, imports: [
119
+ CommonModule,
120
+ ReactiveFormsModule,
121
+ CaFilterDropdownComponent,
122
+ CaInputComponent,
123
+ SvgIconComponent,
124
+ FilterSearchPipe,
125
+ ], template: "<app-ca-filter-dropdown\n [type]=\"eFilterDropdownEnum.STATE\"\n [config]=\"config\"\n [bodyTemplate]=\"bodyTemplate\"\n [isFormChanged]=\"!!activeCount\"\n [appliedFiltersCount]=\"selectedCount\"\n (handleFiltersClear)=\"clearValues()\"\n (setFilter)=\"passFilterValue()\"\n (sorting)=\"sortValues($event)\"\n>\n <ng-template #bodyTemplate>\n @let searchString = searchForm.get('search')?.value;\n\n <div [formGroup]=\"searchForm\">\n <app-ca-input\n formControlName=\"search\"\n [inputConfig]=\"stateSearchForm\"\n ></app-ca-input>\n </div>\n\n <div class=\"filter-dropdown-list padding-x-4\">\n @for (country of states; track $index) {\n @if (country.selectedList.length) {\n <p\n class=\"text-color-white text-size-11 ca-font-bold margin-t-6\"\n >\n {{ country.country }}\n </p>\n <!-- Selected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n country.selectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n country: country.country,\n clickFn: unSelectItem,\n selectedList: true,\n }\n \"\n ></ng-container>\n }\n }\n\n @for (country of states; track $index) {\n @if (country.unselectedList.length) {\n <p\n class=\"text-color-white text-size-11 ca-font-bold margin-t-6\"\n >\n {{ country.country }}\n </p>\n <!-- Unselected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n country.unselectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n country: country.country,\n clickFn: selectItem,\n selectedList: false,\n }\n \"\n ></ng-container>\n }\n }\n </div>\n </ng-template>\n\n <ng-template\n #listTemplate\n let-items=\"items\"\n let-country=\"country\"\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 (click)=\"clickFn(item, country)\"\n >\n <div class=\"d-flex align-items-center w-100 margin-r-4\">\n <div\n class=\"margin-r-4 br-1 ca-font-extra-bold text-shortName text-center\"\n [ngClass]=\"\n isSelectedList\n ? 'background-blue-13 text-color-blue-16'\n : 'background-black text-color-white-4'\n \"\n >\n {{ item.stateShortName }}\n </div>\n <div\n class=\"text-color-white text-size-14\"\n [class.ca-font-extra-bold]=\"isSelectedList\"\n >\n {{ item.name }}\n </div>\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: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#fff}.table-progress-popover .progress-dropdown .progress-header .progress-title span{font-weight:400}.table-progress-popover .progress-dropdown .progress-header .progress-total{font-size:14px;line-height:17px;color:#fff}.table-progress-popover .progress-dropdown .table-progress-bar-container{width:100%;height:8px;margin-top:6px;border-radius:2px;overflow:hidden}.table-progress-popover .progress-dropdown .table-progress-bar-container .table-progress-bar{height:100%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-dual-info-container .progress-info-container{width:50%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container{margin-top:10px}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-title{margin-bottom:2px;font-size:11px;font-weight:700;line-height:14px;color:#ffffffb2}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-text{font-size:14px;line-height:18px;color:#fff}.table-progress-popover .progress-dropdown.credit-dropdown{height:100px}@-webkit-keyframes progressAnimation{0%{height:0px}to{height:220px}}@keyframes progressAnimation{0%{height:0px}to{height:220px}}ngb-popover-window{padding:unset!important;border:unset!important}ngb-popover-window .popover-arrow{display:none!important}ngb-popover-window .popover-body{padding:unset!important}.dispatch-note .popover-body{position:relative;top:-4px;left:-4px}.tooltip{font-size:12px;position:relative}.tooltip.show{opacity:.83}.tooltip.fade:after,.tooltip.fade:before{transform:translateY(-10px);transition:all .15s ease-in-out}.tooltip.fade:hover:after,.tooltip.fade:hover:before{opacity:1;transform:translate(0)}.tooltip-inner{padding:4px 10px;white-space:nowrap;max-width:none;border-radius:3px}.tooltip-inner:empty{padding:0}.placeholder-delete .tooltip-inner{background-color:#f66}.placeholder-delete .arrow:before{border-top-color:#f66}.custom-popup-owners-for-flag .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(126%) translate(-50%)!important;width:130px;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-for-flag .arrow{bottom:-18%;transform:rotate(180deg);left:calc(50% + 2.7rem)}.custom-popup-owners-for-flag .tooltip{opacity:.93!important;width:0}.custom-popup-owners{z-index:999}.custom-popup-owners .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners .tooltip{transform:translateY(-61px)!important}.custom-popup-owners-year{z-index:999}.custom-popup-owners-year .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners-year .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners-year .tooltip{transform:translate(70px,-61px)!important}.custom-popup-owners-info .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-100%) translate(-10%);width:200px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;margin-top:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info .tooltip{opacity:.93;width:0}.custom-popup-owners-info .arrow{display:none}.custom-popup-owners-info #phone-inside{position:relative;right:26px;bottom:0}.custom-popup-owners-info-at .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-108%) translate(-7%);width:270px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info-at .tooltip{opacity:1;width:0}.custom-popup-owners-info-at .arrow{display:none}.custom-popup-owners-for-tag .tooltip-inner{color:#3b3b3b;background-color:#fff;width:100px;border-radius:3px;box-shadow:0 0 3px #0003!important}.custom-popup-owners-for-tag .tooltip{top:5px!important}.custom-popup-owners-for-tag .arrow{bottom:-24%}.align-items-flex-start{justify-content:center;align-items:center}.align-items-flex-end{display:flex;justify-content:center;flex-direction:column;align-self:flex-end;align-items:flex-start}.label-add{align-self:flex-start}.fadeInLoad{animation:fadeInLoad .25s}@keyframes fadeInLoad{0%{opacity:0}to{opacity:1}}.fadeIn{opacity:1;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;transition:.25s}.thisText:hover .fadeIn{opacity:0}.fadeInLoad{animation-name:example;animation-duration:.25s}@keyframes example{0%{transform:scale(.5)}to{transform:scale(1)}}.tooltip.tooltip-table-icons{left:12px!important;opacity:1}.tooltip.tooltip-table-icons .arrow{display:none!important}.tooltip.tooltip-table-icons .tooltip-inner{border-radius:0 50px 50px;background:#28529f}.tooltip.show{opacity:1;animation:fadeIn ease .5s!important;-webkit-animation:fadeIn ease .5s!important;-moz-animation:fadeIn ease .5s!important;-o-animation:fadeIn ease .5s!important;-ms-animation:fadeIn ease .5s!important}.ta-tooltip{position:absolute;font-size:12px;text-align:center;color:#fff;line-height:22px;z-index:999999!important;opacity:0;white-space:nowrap;transform:scale(.7)}.ta-tooltip.ta-tooltip-show{opacity:.85;transform:scale(1);padding:0 12px}.ta-tooltip.ta-tooltip-bottom-right,.ta-tooltip.ta-tooltip-bottom-right-corner{transform-origin:top left;border-radius:0 15px 15px}.ta-tooltip.ta-tooltip-bottom-left{transform-origin:top right;border-radius:15px 0 15px 15px}@keyframes scaleItem{0%{transform:scale(.4)}to{transform:scale(1)}}.app-ca-main-tooltip{pointer-events:none}.app-ca-main-tooltip .tooltip-inner{padding:0;background-color:transparent;pointer-events:none}.app-ca-main-tooltip .tooltip-inner .tooltip-holder{display:flex;font-size:11px;font-weight:700;border-radius:2px;padding:2px 8px;animation:scaleItem .3s;white-space:normal}.app-ca-main-tooltip .tooltip-inner .tooltip-holder:empty{padding:0}.tooltip-arrow{display:none!important}.trucks.semitruck svg path,.trucks.semisleeper svg path,.trucks.flatbed svg path,.trucks.stepdeck svg path,.trucks.lowboyrgn svg path,.trucks.chassis svg path,.trucks.conestoga svg path,.trucks.sidekit svg path,.trucks.container svg path,.trailers.semitruck svg path,.trailers.semisleeper svg path,.trailers.flatbed svg path,.trailers.stepdeck svg path,.trailers.lowboyrgn svg path,.trailers.chassis svg path,.trailers.conestoga svg path,.trailers.sidekit svg path,.trailers.container svg path{fill:#92b1f5}.trucks.boxtruck svg path,.trucks.reefertruck svg path,.trucks.cargovan svg path,.trucks.dryvan svg path,.trucks.reefer svg path,.trailers.boxtruck svg path,.trailers.reefertruck svg path,.trailers.cargovan svg path,.trailers.dryvan svg path,.trailers.reefer svg path{fill:#fbc88b}.trucks.dumptruck svg path,.trucks.cementtruck svg path,.trucks.garbagetruck svg path,.trucks.enddump svg path,.trucks.bottomdump svg path,.trucks.hopper svg path,.trucks.tanker svg path,.trucks.pneumatictanker svg path,.trailers.dumptruck svg path,.trailers.cementtruck svg path,.trailers.garbagetruck svg path,.trailers.enddump svg path,.trailers.bottomdump svg path,.trailers.hopper svg path,.trailers.tanker svg path,.trailers.pneumatictanker svg path{fill:#ed9292}.trucks.towtruck svg path,.trucks.carhauler svg path,.trucks.spotter svg path,.trucks.carhaulerstigner svg path,.trailers.towtruck svg path,.trailers.carhauler svg path,.trailers.spotter svg path,.trailers.carhaulerstigner svg path{fill:#86c9c3}.trucks .svgtext-template-text,.trailers .svgtext-template-text{color:#fff;transition:color .3s ease-in-out}.colors .black svg #droplet{fill:#6c6c6c}.colors .brown svg #droplet{fill:#a1887f}.colors .darkgreen svg #droplet{fill:#4db6a2}.colors .lightgreen svg #droplet{fill:#81c784}.colors .darkblue svg #droplet{fill:#546fd2}.colors .lightblue svg #droplet{fill:#64b5f6}.colors .gray svg #droplet{fill:#aaa}.colors .purple svg #droplet{fill:#ba68c8}.colors .gold svg #droplet{fill:#bcad79}.colors .silver svg #droplet{fill:#dadada}.colors .red svg #droplet{fill:#f96b69}.colors .pink svg #droplet{fill:#f26ec2}.colors .white svg #droplet{fill:#f1f1f1}.colors .orange svg #droplet{fill:#ff8a65}.colors .yellow svg #droplet{fill:#ffd54f}.colors:hover{transition:all .3s ease-in-out}.colors:hover .black svg #droplet{fill:#3c3c3c}.colors:hover .brown svg #droplet{fill:#8d6e63}.colors:hover .darkgreen svg #droplet{fill:#26a690}.colors:hover .lightgreen svg #droplet{fill:#66bb6a}.colors:hover .darkblue svg #droplet{fill:#304fc1}.colors:hover .lightblue svg #droplet{fill:#42a5f5}.colors:hover .gray svg #droplet{fill:#919191}.colors:hover .purple svg #droplet{fill:#ab47bc}.colors:hover .gold svg #droplet{fill:#aa9c6e}.colors:hover .silver svg #droplet{fill:#b7b7b7}.colors:hover .red svg #droplet{fill:#ef5350}.colors:hover .pink svg #droplet{fill:#fa4daa}.colors:hover .white svg #droplet{fill:#fff}.colors:hover .orange svg #droplet{fill:#ff7043}.colors:hover .yellow svg #droplet{fill:#ffca28}.text-color-black{color:#424242!important}.text-color-black::-moz-selection{background:#42424233!important;color:#424242!important}.text-color-black::selection{background:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background:#91919133!important;color:#919191!important}.text-color-muted::selection{background:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-13::selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-16{color:#e9effd!important}.text-color-blue-16::-moz-selection{background:#66921833!important;color:#e9effd!important}.text-color-blue-16::selection{background:#66921833!important;color:#e9effd!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background:#e6676733!important;color:#e66767!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background:#ed929233!important;color:#ed9292!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{color:#ccc!important;background:#aaa3!important}.text-color-light-grey-6::selection{color:#ccc!important;background:#aaa3!important}.text-color-white{color:#fff!important}.text-color-white::-moz-selection{color:#fff!important;background:#fff3!important}.text-color-white::selection{color:#fff!important;background:#fff3!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{color:#fff!important;background:#fff3!important}.text-color-white-2::selection{color:#fff!important;background:#fff3!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{color:#ffffffb2!important;background:#fff3!important}.text-color-white-4::selection{color:#ffffffb2!important;background:#fff3!important}.text-color-dark-grey{color:#6c6c6c!important}.text-color-dark-grey::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-dark-grey::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey::selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{color:#919191!important;background:#91919133!important}.text-size-11{font-size:11px!important;line-height:14px!important}.text-size-14{font-size:14px!important;line-height:18px!important}.text-size-16{font-size:16px!important;line-height:19px!important}.text-size-18{font-size:18px!important;line-height:22px!important}.text-size-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}.svg-fill-black svg path{fill:#424242!important}.svg-fill-white svg path{fill:#fff!important}.svg-fill-white-2 svg path{fill:#fff!important}.svg-fill-muted svg path{fill:#919191!important}.svg-fill-bw-9 svg path{fill:#dadada!important}.svg-fill-light-grey-2 svg path{fill:#aaa!important}.svg-fill-light-grey-6 svg path{fill:#ccc!important}.svg-fill-blue-8 svg path{fill:#6692f1!important}.svg-fill-blue-13 svg path{fill:#6692f1!important}.svg-fill-blue-17 svg path{fill:#bed0f9!important}.svg-fill-blue-19 svg path{fill:#92b1f5!important}.svg-fill-blue-26 svg path{fill:#4dc5eb!important}.svg-fill-white-4 svg path{fill:#ffffffb2!important}.svg-fill-grey svg path{fill:#919191!important}.svg-fill-red-10 svg path{fill:#e66767!important}.svg-fill-green svg path{fill:#56b4ac!important}.svg-hover-white svg path{transition:all .3s ease-in-out}.svg-hover-white:hover svg path{fill:#fff!important}.svg-hover-white-2 svg path{transition:all .3s ease-in-out}.svg-hover-white-2:hover svg path{fill:#fff!important}.svg-hover-muted svg path{transition:all .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-grey-4 svg path{transition:all .3s ease-in-out}.svg-hover-grey-4:hover svg path{fill:#ccc!important}.svg-hover-black svg path{transition:all .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-10 svg path{transition:all .3s ease-in-out}.svg-hover-blue-10:hover svg path{fill:#bed0f9!important}.svg-hover-blue-15 svg path{transition:all .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-blue-19 svg path{transition:all .3s ease-in-out}.svg-hover-blue-19:hover svg path{fill:#92b1f5!important}.svg-hover-bw6-2 svg path{transition:all .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:all .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:all .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.svg-size-10 svg{width:10px;height:10px}.svg-size-12 svg{width:12px;height:12px}.svg-size-14 svg{width:14px;height:14px}.svg-size-16 svg{width:16px;height:16px}.svg-size-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-26 svg{width:26px;height:26px}.svg-size-44-16 svg{width:44px;height:16px}.background-black{background-color:#424242}.background-black-2{background-color:#2f2f2f}.background-blue-13{background-color:#6692f1}.background-blue-14{background-color:#3b73ed}.background-dark-2{background-color:#91919133}.background-hover-bw2{transition:background-color .3s ease-in-out}.background-hover-bw2:hover{background-color:#eee!important}.background-hover-blue-15{transition:background-color .3s ease-in-out}.background-hover-blue-15:hover{background-color:#0b49d1!important}.br-1{border-radius:1px}.br-2{border-radius:2px}.br-3{border-radius:3px}.br-10{border-radius:10px}.br-circle{border-radius:50%}.padding-2{padding:2px}.padding-4{padding:4px}.padding-y-2{padding-top:2px;padding-bottom:2px}.padding-y-4{padding-top:4px;padding-bottom:4px}.padding-x-4{padding-left:4px;padding-right:4px}.padding-x-5{padding-left:5px;padding-right:5px}.margin-t-4{margin-top:4px}.margin-r-4{margin-right:4px}.margin-b-4{margin-bottom:4px}.margin-t-6{margin-top:6px}.margin-r-6{margin-right:6px}.margin-b-6{margin-bottom:6px}.margin-t-24{margin-top:24px}.margin-r-24{margin-right:24px}.margin-b-24{margin-bottom:24px}.gap-xs{gap:2px}.height-1{height:1px}@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.filter-dropdown-popover{width:260px}.filter-dropdown-popover-max-height{max-height:360px}.filter-dropdown-list{max-height:260px;overflow-y:auto}.filter-dropdown-list-icon{height:26px;transition:background-color .3s ease-in-out}.filter-dropdown-list-icon-value{height:14px;width:14px}.filter-dropdown-list-icon-remove{display:none}.filter-dropdown-list-icon:hover{background-color:#424242}.filter-dropdown-list-icon:hover .filter-dropdown-icon-count{display:none}.filter-dropdown-list-icon-selected:hover{background-color:#0b49d1}.filter-dropdown-list-item-icons{transition:opacity .3s ease-in-out;opacity:0}.filter-dropdown-list-item-status-circle{height:10px;width:10px}.filter-dropdown-list-item-remove{display:none}.filter-dropdown-list-item:hover{background-color:#424242}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons{opacity:1}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons svg path{fill:var(--svg-fill-color, #e66767)}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove{display:flex}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove svg path{fill:#e66767!important}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-count{display:none!important}.filter-dropdown-icon{height:26px;width:26px}.filter-dropdown-count{height:14px;width:14px}.filter-dropdown-count-remove,.filter-dropdown-count-hover:hover .filter-dropdown-count-value{display:none}.filter-dropdown-count-hover:hover .filter-dropdown-count-remove{display:flex}.filter-dropdown-button{height:26px}.filter-dropdown-footer-button{color:#dadada;transition:color .3s ease-in-out,background-color .3s ease-in-out;height:18px;width:50%}.filter-dropdown-footer-button-set{color:#fff;background-color:#3b73ed}.filter-dropdown-footer-button-set:hover{background-color:#e9effd;color:#0b49d1}.filter-dropdown-footer-button-clear{color:#dadada}.filter-dropdown-footer-button-clear:hover{background-color:#eee;color:#424242}.filter-dropdown-list-badge{min-width:18px}*{margin:0;font-family:Montserrat,sans-serif}html{scroll-behavior:auto!important}.gm-style-iw-chr,.gm-style-iw-tc{display:none}.gm-style .gm-style-iw-c{border-radius:0}.gm-style-iw{overflow-y:auto!important;overflow-x:hidden!important}.gm-style-iw>div{overflow:visible!important}.infoWindow{overflow:hidden!important}.gm-style-iw-d,.gm-style-iw.gm-style-iw-c{max-height:350px!important}::ng-deep .popover{--bs-popover-border-width: 0;--bs-popover-body-padding-y: 0;--bs-popover-body-padding-x: 0}::ng-deep .popover .popover-arrow{display:none}.c-pointer{cursor:pointer}.ca-scroll-bar{overflow-y:scroll}.ca-scroll-bar::-webkit-scrollbar{width:2px}.ca-scroll-bar::-webkit-scrollbar-thumb{background:#ccc;border-radius:1px}.ca-scroll-bar::-webkit-scrollbar-track{background:#2f2f2f}.text-shortName{font-size:11px;height:18px;line-height:18px;width:28px}\n"] }]
126
+ }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }], propDecorators: { states: [{
127
+ type: Input
128
+ }], setFilter: [{
129
+ type: Output
130
+ }] } });
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtZmlsdGVyLXN0YXRlLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW5ldy1maWx0ZXIvY29tcG9uZW50cy9jYS1maWx0ZXItc3RhdGUtZHJvcGRvd24vY2EtZmlsdGVyLXN0YXRlLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW5ldy1maWx0ZXIvY29tcG9uZW50cy9jYS1maWx0ZXItc3RhdGUtZHJvcGRvd24vY2EtZmlsdGVyLXN0YXRlLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxhQUFhO0FBQ2IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFeEUsUUFBUTtBQUNSLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVdyRSxhQUFhO0FBQ2IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFMUUsUUFBUTtBQUNSLE9BQU8sRUFBRyx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixD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ZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8vIENvbXBvbmVudHNcbmltcG9ydCB7IENhRmlsdGVyRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jYS1maWx0ZXItZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IFN2Z0ljb25Db21wb25lbnQgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcbmltcG9ydCB7IENhSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jYS1pbnB1dC9jYS1pbnB1dC5jb21wb25lbnQnO1xuXG4vLyBFbnVtc1xuaW1wb3J0IHsgZUZpbHRlckRyb3Bkb3duRW51bSwgZUZpbHRlclNvcnRpbmdLZXkgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5cbi8vIEludGVyZmFjZVxuaW1wb3J0IHtcbiAgICBJRmlsdGVyRHJvcGRvd25MaXN0LFxuICAgIElDb3VudHJ5LFxuICAgIElGaWx0ZXJBY3Rpb24sXG4gICAgSVNvcnRFbWl0LFxuICAgIElTdGF0ZSxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlJztcblxuLy8gU3ZnIHJvdXRlc1xuaW1wb3J0IHsgQ2FGaWx0ZXJzU3ZnUm91dGVzIH0gZnJvbSAnLi4vLi4vLi4vY2EtZmlsdGVycy91dGlscy9zdmctcm91dGVzJztcblxuLy8gQ29uc3RcbmltcG9ydCB7ICBGaWx0ZXJEcm9wZG93bkljb25zQ29uc3QgfSBmcm9tICcuLi8uLi9jb25zdGFudCc7XG5cbi8vIENvbmZpZ1xuaW1wb3J0IHsgIEZpbHRlckRyb3Bkb3duRmllbGRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlncyc7XG5cbi8vIFBpcGVzXG5pbXBvcnQgeyBGaWx0ZXJTZWFyY2hQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvZmlsdGVyLXNlYXJjaC5waXBlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtY2EtZmlsdGVyLXN0YXRlLWRyb3Bkb3duJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBDYUZpbHRlckRyb3Bkb3duQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0Q29tcG9uZW50LFxuICAgICAgICBTdmdJY29uQ29tcG9uZW50LFxuICAgICAgICBGaWx0ZXJTZWFyY2hQaXBlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLWZpbHRlci1zdGF0ZS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2NhLWZpbHRlci1zdGF0ZS1kcm9wZG93bi5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIENhRmlsdGVyU3RhdGVEcm9wZG93bkNvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBzZXQgc3RhdGVzKHZhbHVlOiBJQ291bnRyeVtdKSB7XG4gICAgICAgIHRoaXMubWFwSW5pdGFsU3RhdGVzKHZhbHVlKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgc2V0RmlsdGVyOiBFdmVudEVtaXR0ZXI8SUZpbHRlckFjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgc29ydEtleToga2V5b2YgSUZpbHRlckRyb3Bkb3duTGlzdCA9IGVGaWx0ZXJTb3J0aW5nS2V5Lk5BTUU7XG4gICAgcHVibGljIGRpcmVjdGlvbk11bHRpcGxpZXI6IG51bWJlciA9IDE7XG4gICAgcHVibGljIGNvbmZpZyA9IEZpbHRlckRyb3Bkb3duSWNvbnNDb25zdC5TdGF0ZTtcbiAgICBwdWJsaWMgZUZpbHRlckRyb3Bkb3duRW51bSA9IGVGaWx0ZXJEcm9wZG93bkVudW07XG4gICAgcHVibGljIGNhRmlsdGVyc1N2Z1JvdXRlcyA9IENhRmlsdGVyc1N2Z1JvdXRlcztcbiAgICBwdWJsaWMgc2VsZWN0ZWRMaXN0OiBJRmlsdGVyRHJvcGRvd25MaXN0W10gPSBbXTtcbiAgICBwdWJsaWMgdW5zZWxlY3RlZExpc3Q6IElGaWx0ZXJEcm9wZG93bkxpc3RbXSA9IFtdO1xuICAgIHB1YmxpYyBzZWFyY2hGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgIHNlYXJjaDogbnVsbCxcbiAgICB9KTtcbiAgICBwdWJsaWMgc3RhdGVTZWFyY2hGb3JtID0gRmlsdGVyRHJvcGRvd25GaWVsZHMuc3RhdGVTZWFyY2g7XG4gICAgcHVibGljIHNlbGVjdGVkQ291bnQ6IG51bWJlciA9IDA7XG4gICAgcHVibGljIGFjdGl2ZUNvdW50OiBudW1iZXIgPSAwO1xuXG4gICAgcHJpdmF0ZSBfc3RhdGVzOiBJQ291bnRyeVtdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIpIHt9IFxuXG4gICAgZ2V0IHN0YXRlcygpOiBJQ291bnRyeVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsY3VsYXRlU2VsZWN0ZWRDb3VudCgpOiB2b2lkIHsgXG4gICAgICAgIHRoaXMuYWN0aXZlQ291bnQgPSB0aGlzLl9zdGF0ZXMucmVkdWNlKFxuICAgICAgICAgICAgKHN1bSwgc3RhdGUpID0+IHN1bSArIHN0YXRlLnNlbGVjdGVkTGlzdC5sZW5ndGgsXG4gICAgICAgICAgICAwXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEl0ZW0gPSAoaXRlbTogSUZpbHRlckRyb3Bkb3duTGlzdCwgY291bnRyeU5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBjb3VudHJ5ID0gdGhpcy5zdGF0ZXMuZmluZCgoc3RhdGUpID0+IHN0YXRlLmNvdW50cnkgPT09IGNvdW50cnlOYW1lKTtcbiAgICAgICAgaWYgKGNvdW50cnkpIHtcbiAgICAgICAgICAgIGNvdW50cnkudW5zZWxlY3RlZExpc3QgPSBjb3VudHJ5LnVuc2VsZWN0ZWRMaXN0LmZpbHRlcihcbiAgICAgICAgICAgICAgICAoX2NvdW50cnkpID0+IF9jb3VudHJ5ICE9PSBpdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY291bnRyeS5zZWxlY3RlZExpc3QgPSBbLi4uY291bnRyeS5zZWxlY3RlZExpc3QsIGl0ZW1dO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlU2VsZWN0ZWRDb3VudCgpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgdW5TZWxlY3RJdGVtID0gKGl0ZW06IElGaWx0ZXJEcm9wZG93bkxpc3QsIGNvdW50cnlOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgY291bnRyeSA9IHRoaXMuc3RhdGVzLmZpbmQoKHN0YXRlKSA9PiBzdGF0ZS5jb3VudHJ5ID09PSBjb3VudHJ5TmFtZSk7XG4gICAgICAgIGlmIChjb3VudHJ5KSB7XG4gICAgICAgICAgICBjb3VudHJ5LnNlbGVjdGVkTGlzdCA9IGNvdW50cnkuc2VsZWN0ZWRMaXN0LmZpbHRlcihcbiAgICAgICAgICAgICAgICAoX2NvdW50cnkpID0+IF9jb3VudHJ5ICE9PSBpdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY291bnRyeS51bnNlbGVjdGVkTGlzdCA9IFsuLi5jb3VudHJ5LnVuc2VsZWN0ZWRMaXN0LCBpdGVtXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbGN1bGF0ZVNlbGVjdGVkQ291bnQoKTtcbiAgICB9O1xuXG4gICAgcHVibGljIGNsZWFyVmFsdWVzKCk6IHZvaWQge1xuICAgICAgIHRoaXMuZW1pdERhdGEoW10pXG5cbiAgICAgICAgdGhpcy5zdGF0ZXMgPSB0aGlzLnN0YXRlcy5tYXAoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdDogW10sXG4gICAgICAgICAgICAgICAgdW5zZWxlY3RlZExpc3Q6IHN0YXRlLmluaXRhbExpc3QsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnQgPSAwO1xuICAgICAgICB0aGlzLmFjdGl2ZUNvdW50ID0gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFzc0ZpbHRlclZhbHVlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGF0ZXMgPSB0aGlzLnN0YXRlc1xuICAgICAgICAubWFwKChjb3VudHJ5KSA9PlxuICAgICAgICAgICAgY291bnRyeS5zZWxlY3RlZExpc3RcbiAgICAgICAgICAgICAgICAubWFwKChzdGF0ZSkgPT4gc3RhdGUuc3RhdGVTaG9ydE5hbWUpIFxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHNob3J0TmFtZSk6IHNob3J0TmFtZSBpcyBzdHJpbmcgPT4gQm9vbGVhbihzaG9ydE5hbWUpKSBcbiAgICAgICAgKVxuICAgICAgICAuZmxhdCgpO1xuXG4gICAgICAgIHRoaXMuZW1pdERhdGEoc3RhdGVzKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50ID0gdGhpcy5hY3RpdmVDb3VudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc29ydFZhbHVlcyhzb3J0aW5nOiBJU29ydEVtaXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zb3J0S2V5ID0gc29ydGluZy5zb3J0S2V5O1xuICAgICAgICB0aGlzLmRpcmVjdGlvbk11bHRpcGxpZXIgPSBzb3J0aW5nLmRpcmVjdGlvbk11bHRpcGxpZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0RGF0YShzZWxlY3RlZFN0YXRlczogc3RyaW5nW10pIDogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RmlsdGVyLmVtaXQoe1xuICAgICAgICAgICAgZmlsdGVyVHlwZTogZUZpbHRlckRyb3Bkb3duRW51bS5TVEFURSxcbiAgICAgICAgICAgIHNlbGVjdGVkU3RhdGVzLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcEluaXRhbFN0YXRlcyh2YWx1ZTogSUNvdW50cnlbXSkgOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RhdGVzID0gdmFsdWUubWFwKChjb3VudHJ5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZXMgPSBjb3VudHJ5LnN0YXRlcy5tYXAoKHN0YXRlLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICBzdGF0ZVNob3J0TmFtZTogc3RhdGUuc3RhdGVTaG9ydE5hbWUsXG4gICAgICAgICAgICAgICAgbmFtZTogc3RhdGUuc3RhdGVOYW1lIHx8IHN0YXRlLnN0YXRlTmFtZSxcbiAgICAgICAgICAgICAgICBjb3VudDogc3RhdGUuY291bnQsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlkOiBpbmRleCxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uY291bnRyeSxcbiAgICAgICAgICAgICAgICB1bnNlbGVjdGVkTGlzdDogc3RhdGVzLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdDogW10sXG4gICAgICAgICAgICAgICAgaW5pdGlhbExpc3Q6IFsuLi5zdGF0ZXNdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGFwcC1jYS1maWx0ZXItZHJvcGRvd25cbiAgICBbdHlwZV09XCJlRmlsdGVyRHJvcGRvd25FbnVtLlNUQVRFXCJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgW2JvZHlUZW1wbGF0ZV09XCJib2R5VGVtcGxhdGVcIlxuICAgIFtpc0Zvcm1DaGFuZ2VkXT1cIiEhYWN0aXZlQ291bnRcIlxuICAgIFthcHBsaWVkRmlsdGVyc0NvdW50XT1cInNlbGVjdGVkQ291bnRcIlxuICAgIChoYW5kbGVGaWx0ZXJzQ2xlYXIpPVwiY2xlYXJWYWx1ZXMoKVwiXG4gICAgKHNldEZpbHRlcik9XCJwYXNzRmlsdGVyVmFsdWUoKVwiXG4gICAgKHNvcnRpbmcpPVwic29ydFZhbHVlcygkZXZlbnQpXCJcbj5cbiAgICA8bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZT5cbiAgICAgICAgQGxldCBzZWFyY2hTdHJpbmcgPSBzZWFyY2hGb3JtLmdldCgnc2VhcmNoJyk/LnZhbHVlO1xuXG4gICAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtXCI+XG4gICAgICAgICAgICA8YXBwLWNhLWlucHV0XG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwic3RhdGVTZWFyY2hGb3JtXCJcbiAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1kcm9wZG93bi1saXN0IHBhZGRpbmcteC00XCI+XG4gICAgICAgICAgICBAZm9yIChjb3VudHJ5IG9mIHN0YXRlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQGlmIChjb3VudHJ5LnNlbGVjdGVkTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jb2xvci13aGl0ZSB0ZXh0LXNpemUtMTEgY2EtZm9udC1ib2xkIG1hcmdpbi10LTZcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudHJ5LmNvdW50cnkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdGVkIExpc3QgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5LnNlbGVjdGVkTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaWx0ZXJTZWFyY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaFN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ25hbWUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBkaXJlY3Rpb25NdWx0aXBsaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBjb3VudHJ5LmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrRm46IHVuU2VsZWN0SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBmb3IgKGNvdW50cnkgb2Ygc3RhdGVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICBAaWYgKGNvdW50cnkudW5zZWxlY3RlZExpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtY29sb3Itd2hpdGUgdGV4dC1zaXplLTExIGNhLWZvbnQtYm9sZCBtYXJnaW4tdC02XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnRyeS5jb3VudHJ5IH19XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBVbnNlbGVjdGVkIExpc3QgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5LnVuc2VsZWN0ZWRMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpbHRlclNlYXJjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnbmFtZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRpcmVjdGlvbk11bHRpcGxpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGNvdW50cnkuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tGbjogc2VsZWN0SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICNsaXN0VGVtcGxhdGVcbiAgICAgICAgbGV0LWl0ZW1zPVwiaXRlbXNcIlxuICAgICAgICBsZXQtY291bnRyeT1cImNvdW50cnlcIlxuICAgICAgICBsZXQtY2xpY2tGbj1cImNsaWNrRm5cIlxuICAgICAgICBsZXQtaXNTZWxlY3RlZExpc3Q9XCJzZWxlY3RlZExpc3RcIlxuICAgID5cbiAgICAgICAgQGlmIChpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLXhzIG1iLTEgbWFyZ2luLXQtNFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0gcGFkZGluZy00IGJyLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWx0ZXItZHJvcGRvd24tbGlzdC1pdGVtLWhvdmVyJzogaXNTZWxlY3RlZExpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0ZuKGl0ZW0sIGNvdW50cnkpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgbWFyZ2luLXItNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXJnaW4tci00IGJyLTEgY2EtZm9udC1leHRyYS1ib2xkIHRleHQtc2hvcnROYW1lIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2JhY2tncm91bmQtYmx1ZS0xMyB0ZXh0LWNvbG9yLWJsdWUtMTYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmFja2dyb3VuZC1ibGFjayB0ZXh0LWNvbG9yLXdoaXRlLTQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnN0YXRlU2hvcnROYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtY29sb3Itd2hpdGUgdGV4dC1zaXplLTE0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNhLWZvbnQtZXh0cmEtYm9sZF09XCJpc1NlbGVjdGVkTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6IGl0ZW0uY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNTZWxlY3RlZExpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJjYUZpbHRlcnNTdmdSb3V0ZXMucmVtb3ZlU2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLXNpemUtMTAgc3ZnLWZpbGwtcmVkLTEwIGZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0tcmVtb3ZlIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmlsdGVyLWRyb3Bkb3duLWxpc3QtYmFkZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkaXZpZGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBEaXZpZGVyIFRlbXBsYXRlIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGl2aWRlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmQtYmxhY2sgYnItMiBoZWlnaHQtMVwiPjwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZSBsZXQtY291bnQ9XCJjb3VudFwiIGxldC1pc1NlbGVjdGVkPVwiaXNTZWxlY3RlZFwiPlxuICAgICAgICA8IS0tIENvdW50IGNhbiBiZSB1bmRlZmluZWQgZm9yIGV4YW1wbGUgb24gYXNzaWduIGRpc3BhdGNoIGxvYWQgbGlzdCwgb3IgaXQgY2FuIGJlIDAgYXMgd2VsbCBmb3Igc29tZSBkaXNwYXRjaGVycyAtLT5cbiAgICAgICAgQGlmIChjb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJici0xMCBmaWx0ZXItZHJvcGRvd24tbGlzdC1pdGVtLWNvdW50IHRleHQtc2l6ZS0xMSBjYS1mb250LXNlbWktYm9sZCBwYWRkaW5nLXktMiBwYWRkaW5nLXgtNSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmlsdGVyLWRyb3Bkb3duLWxpc3QtYmFkZ2VcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdiYWNrZ3JvdW5kLWJsdWUtMTQgdGV4dC1jb2xvci13aGl0ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ2JhY2tncm91bmQtYmxhY2sgdGV4dC1jb2xvci13aGl0ZS00J1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgY291bnQgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvYXBwLWNhLWZpbHRlci1kcm9wZG93bj5cbiJdfQ==