@snabcentr/client-ui 3.47.8 → 3.48.0

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.
@@ -0,0 +1,3 @@
1
+ export * from './tokens/sc-catalog-products-filters';
2
+ export * from './tokens/sc-catalog-show-products-recursively';
3
+ export * from './sc-catalog-filters.component';
@@ -0,0 +1,99 @@
1
+ import { FormControl, FormGroup } from '@angular/forms';
2
+ import { ScCatalogFilter, ScICheckboxFilter, ScPropertyFilters, ScRangeFilter, ScToggleFilter } from '@snabcentr/client-core';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Компонент вывода фильтров каталога.
6
+ */
7
+ export declare class ScCatalogFiltersComponent {
8
+ /**
9
+ * Состояние открытия accordion.
10
+ */
11
+ readonly isOpenAccordion: import("@angular/core").InputSignal<boolean>;
12
+ /**
13
+ * Сервис для работы с фильтрами каталога.
14
+ */
15
+ private readonly catalogFilterService;
16
+ /**
17
+ * Пайп, возвращающий идентификатор или символьное обозначение (slug) исходя из настроек окружения.
18
+ */
19
+ private readonly idOrSlugPipe;
20
+ /**
21
+ * Subject для хранения фильтров продуктов.
22
+ */
23
+ private readonly catalogProductsFilters$;
24
+ /**
25
+ * Признак необходимости отображать фильтры для вложенных категорий.
26
+ */
27
+ private readonly isRecursively;
28
+ /**
29
+ * {@link Observable} фильтров категории.
30
+ */
31
+ protected readonly filters: import("@angular/core").Signal<ScCatalogFilter[]>;
32
+ /**
33
+ * FormGroup для фильтров.
34
+ */
35
+ readonly form: FormGroup<Record<string, FormControl<boolean> | FormGroup<Record<string, FormControl<boolean>>> | FormControl<[number, number]>>>;
36
+ /**
37
+ * Инициализирует экземпляр класса {@link ScCatalogFiltersComponent}.
38
+ */
39
+ constructor();
40
+ /**
41
+ * Обновляет состав контролов формы на основе переданных фильтров.
42
+ *
43
+ * @param filters Массив фильтров для создания контролов.
44
+ */
45
+ protected updateFormControls(filters: ScCatalogFilter[]): void;
46
+ /**
47
+ * Преобразует значения формы в объект фильтров свойств.
48
+ *
49
+ * @param value Значения формы.
50
+ * @returns Объект фильтров свойств.
51
+ */
52
+ protected buildPropertyFilters(value: Partial<Record<string, boolean | Record<string, boolean> | [number, number]>> | Record<string, unknown>): ScPropertyFilters;
53
+ /**
54
+ * Создает FormGroup для checkbox.
55
+ *
56
+ * @param checkboxFilter Фильтр типа checkbox.
57
+ */
58
+ protected createCheckboxFormControl(checkboxFilter: ScICheckboxFilter): FormGroup<Record<string, FormControl<boolean>>>;
59
+ /**
60
+ * Создает FormControl для range.
61
+ *
62
+ * @param rangeFilter Фильтр типа range.
63
+ */
64
+ protected createRangeFormControl(rangeFilter: ScRangeFilter): FormControl<[number, number]>;
65
+ /**
66
+ * Создает FormControl для toggle.
67
+ *
68
+ * @param toggleFilter Фильтр типа toggle.
69
+ */
70
+ protected createToggleFormControl(toggleFilter: ScToggleFilter): FormControl<boolean>;
71
+ /**
72
+ * Обрабатывает checkbox фильтр.
73
+ *
74
+ * @param result Объект результата для заполнения.
75
+ * @param filterId Идентификатор фильтра.
76
+ * @param controlValue Значение контрола формы.
77
+ */
78
+ private processCheckboxFilter;
79
+ /**
80
+ * Обрабатывает range фильтр.
81
+ *
82
+ * @param result Объект результата для заполнения.
83
+ * @param filterId Идентификатор фильтра.
84
+ * @param controlValue Значение контрола формы.
85
+ * @param controlValue.0 Начальное значение диапазона.
86
+ * @param controlValue.1 Конечное значение диапазона.
87
+ */
88
+ private processRangeFilter;
89
+ /**
90
+ * Обрабатывает toggle фильтр.
91
+ *
92
+ * @param result Объект результата для заполнения.
93
+ * @param filterId Идентификатор фильтра.
94
+ * @param controlValue Значение контрола формы.
95
+ */
96
+ private processToggleFilter;
97
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScCatalogFiltersComponent, never>;
98
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScCatalogFiltersComponent, "sc-catalog-filters", never, { "isOpenAccordion": { "alias": "isOpenAccordion"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
99
+ }
@@ -0,0 +1,7 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { ScPropertyFilters } from '@snabcentr/client-core';
3
+ import { Subject } from 'rxjs';
4
+ /**
5
+ * Токен для инъекции {@link Subject} для хранения фильтров продуктов.
6
+ */
7
+ export declare const SC_CATALOG_PRODUCTS_FILTERS: InjectionToken<Subject<ScPropertyFilters>>;
@@ -0,0 +1,5 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ /**
3
+ * Токен для инъекции признака необходимости отображать фильтры для вложенных категорий.
4
+ */
5
+ export declare const SC_CATALOG_SHOW_PRODUCTS_RECURSIVELY: InjectionToken<boolean>;
@@ -11,3 +11,4 @@ export * from './price-list-pagination/sc-price-list-pagination.component';
11
11
  export * from './price-warehouse-stock/sc-price-warehouse-stock.component';
12
12
  export * from './sc-favorite-button/sc-favorite-button.component';
13
13
  export * from './sc-catalog.module';
14
+ export * from './catalog-filters';
@@ -0,0 +1,4 @@
1
+ export * from './tokens/sc-catalog-products-filters';
2
+ export * from './tokens/sc-catalog-show-products-recursively';
3
+ export * from './sc-catalog-filters.component';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9jYXRhbG9nLWZpbHRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Rva2Vucy9zYy1jYXRhbG9nLXByb2R1Y3RzLWZpbHRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi90b2tlbnMvc2MtY2F0YWxvZy1zaG93LXByb2R1Y3RzLXJlY3Vyc2l2ZWx5JztcbmV4cG9ydCAqIGZyb20gJy4vc2MtY2F0YWxvZy1maWx0ZXJzLmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,202 @@
1
+ /* eslint-disable class-methods-use-this */
2
+ import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
3
+ import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
4
+ import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
+ import { ScCatalogFilterService, ScIdOrSlugPipe } from '@snabcentr/client-core';
6
+ import { tuiIsPresent } from '@taiga-ui/cdk';
7
+ import { TuiTextfield } from '@taiga-ui/core';
8
+ import { TuiAccordion } from '@taiga-ui/experimental';
9
+ import { TuiCheckbox, TuiInputRange } from '@taiga-ui/kit';
10
+ import { isNil } from 'lodash-es';
11
+ import { debounceTime, filter, map, share, switchMap, tap } from 'rxjs';
12
+ import { SC_CATEGORY_INFO } from '../../providers/sc-category.providers';
13
+ import { SC_CATALOG_PRODUCTS_FILTERS } from './tokens/sc-catalog-products-filters';
14
+ import { SC_CATALOG_SHOW_PRODUCTS_RECURSIVELY } from './tokens/sc-catalog-show-products-recursively';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "@angular/forms";
17
+ import * as i2 from "@taiga-ui/kit";
18
+ import * as i3 from "@taiga-ui/experimental";
19
+ import * as i4 from "@taiga-ui/experimental/components/expand";
20
+ /**
21
+ * Компонент вывода фильтров каталога.
22
+ */
23
+ export class ScCatalogFiltersComponent {
24
+ /**
25
+ * Инициализирует экземпляр класса {@link ScCatalogFiltersComponent}.
26
+ */
27
+ constructor() {
28
+ /**
29
+ * Состояние открытия accordion.
30
+ */
31
+ this.isOpenAccordion = input(false);
32
+ /**
33
+ * Сервис для работы с фильтрами каталога.
34
+ */
35
+ this.catalogFilterService = inject(ScCatalogFilterService);
36
+ /**
37
+ * Пайп, возвращающий идентификатор или символьное обозначение (slug) исходя из настроек окружения.
38
+ */
39
+ this.idOrSlugPipe = inject(ScIdOrSlugPipe);
40
+ /**
41
+ * Subject для хранения фильтров продуктов.
42
+ */
43
+ this.catalogProductsFilters$ = inject(SC_CATALOG_PRODUCTS_FILTERS);
44
+ /**
45
+ * Признак необходимости отображать фильтры для вложенных категорий.
46
+ */
47
+ this.isRecursively = inject(SC_CATALOG_SHOW_PRODUCTS_RECURSIVELY);
48
+ /**
49
+ * {@link Observable} фильтров категории.
50
+ */
51
+ this.filters = toSignal(inject(SC_CATEGORY_INFO).pipe(filter(tuiIsPresent), switchMap((category) => this.catalogFilterService.getFilters$(this.idOrSlugPipe.transform(category), this.isRecursively)), map((filters) => filters.filter((item) => item.type !== 'range' || item.min !== item.max)), tap((filters) => {
52
+ // Обновляем состав контролов формы на основе полученных фильтров.
53
+ this.updateFormControls(filters);
54
+ }), share()), { initialValue: [] });
55
+ /**
56
+ * FormGroup для фильтров.
57
+ */
58
+ this.form = new FormGroup({});
59
+ this.form.valueChanges.pipe(debounceTime(0), takeUntilDestroyed()).subscribe((filters) => {
60
+ this.catalogProductsFilters$.next(this.buildPropertyFilters(filters));
61
+ });
62
+ }
63
+ /**
64
+ * Обновляет состав контролов формы на основе переданных фильтров.
65
+ *
66
+ * @param filters Массив фильтров для создания контролов.
67
+ */
68
+ updateFormControls(filters) {
69
+ Object.keys(this.form.controls).forEach((key) => {
70
+ this.form.removeControl(key, { emitEvent: false });
71
+ });
72
+ filters.forEach((item) => {
73
+ switch (item.type) {
74
+ case 'checkbox':
75
+ this.form.addControl(item.id, this.createCheckboxFormControl(item), { emitEvent: false });
76
+ break;
77
+ case 'range':
78
+ this.form.addControl(item.id, this.createRangeFormControl(item), { emitEvent: false });
79
+ break;
80
+ case 'toggle':
81
+ this.form.addControl(item.id, this.createToggleFormControl(item), { emitEvent: false });
82
+ break;
83
+ default:
84
+ break;
85
+ }
86
+ });
87
+ this.form.updateValueAndValidity();
88
+ }
89
+ /**
90
+ * Преобразует значения формы в объект фильтров свойств.
91
+ *
92
+ * @param value Значения формы.
93
+ * @returns Объект фильтров свойств.
94
+ */
95
+ buildPropertyFilters(value) {
96
+ const result = {};
97
+ this.filters().forEach((filterItem) => {
98
+ const controlValue = value[filterItem.id];
99
+ if (isNil(controlValue)) {
100
+ return;
101
+ }
102
+ switch (filterItem.type) {
103
+ case 'checkbox':
104
+ this.processCheckboxFilter(result, filterItem.id, controlValue);
105
+ break;
106
+ case 'range':
107
+ this.processRangeFilter(result, filterItem.id, controlValue);
108
+ break;
109
+ case 'toggle':
110
+ this.processToggleFilter(result, filterItem.id, controlValue);
111
+ break;
112
+ default:
113
+ break;
114
+ }
115
+ });
116
+ return result;
117
+ }
118
+ /**
119
+ * Создает FormGroup для checkbox.
120
+ *
121
+ * @param checkboxFilter Фильтр типа checkbox.
122
+ */
123
+ createCheckboxFormControl(checkboxFilter) {
124
+ const controls = {};
125
+ checkboxFilter.values.forEach((value) => {
126
+ controls[value.id] = new FormControl(false, { nonNullable: true });
127
+ });
128
+ return new FormGroup(controls);
129
+ }
130
+ /**
131
+ * Создает FormControl для range.
132
+ *
133
+ * @param rangeFilter Фильтр типа range.
134
+ */
135
+ createRangeFormControl(rangeFilter) {
136
+ // TODO: Добавить updateOn: 'blur' после исправления бага в taiga-ui.
137
+ return new FormControl([Number(rangeFilter.selectedMin ?? rangeFilter.min), Number(rangeFilter.selectedMax ?? rangeFilter.max)], { nonNullable: true });
138
+ }
139
+ /**
140
+ * Создает FormControl для toggle.
141
+ *
142
+ * @param toggleFilter Фильтр типа toggle.
143
+ */
144
+ createToggleFormControl(toggleFilter) {
145
+ return new FormControl(toggleFilter.selectedValue ?? false, { nonNullable: true });
146
+ }
147
+ /**
148
+ * Обрабатывает checkbox фильтр.
149
+ *
150
+ * @param result Объект результата для заполнения.
151
+ * @param filterId Идентификатор фильтра.
152
+ * @param controlValue Значение контрола формы.
153
+ */
154
+ processCheckboxFilter(result, filterId, controlValue) {
155
+ // Для checkbox: FormGroup с FormControl<boolean> -> string[] (массив ID выбранных значений)
156
+ const selectedIds = Object.entries(controlValue)
157
+ .filter(([, isSelected]) => isSelected)
158
+ .map(([id]) => id);
159
+ if (selectedIds.length > 0) {
160
+ // eslint-disable-next-line security/detect-object-injection, no-param-reassign
161
+ result[filterId] = selectedIds;
162
+ }
163
+ }
164
+ /**
165
+ * Обрабатывает range фильтр.
166
+ *
167
+ * @param result Объект результата для заполнения.
168
+ * @param filterId Идентификатор фильтра.
169
+ * @param controlValue Значение контрола формы.
170
+ * @param controlValue.0 Начальное значение диапазона.
171
+ * @param controlValue.1 Конечное значение диапазона.
172
+ */
173
+ processRangeFilter(result, filterId, [from, to]) {
174
+ // Для range: FormControl<[number, number]> -> { from?: string; to?: string; }
175
+ // eslint-disable-next-line security/detect-object-injection, no-param-reassign
176
+ result[filterId] = {
177
+ from: String(from),
178
+ to: String(to),
179
+ };
180
+ }
181
+ /**
182
+ * Обрабатывает toggle фильтр.
183
+ *
184
+ * @param result Объект результата для заполнения.
185
+ * @param filterId Идентификатор фильтра.
186
+ * @param controlValue Значение контрола формы.
187
+ */
188
+ processToggleFilter(result, filterId, controlValue) {
189
+ // Для toggle: FormControl<boolean> -> boolean
190
+ if (controlValue) {
191
+ // eslint-disable-next-line security/detect-object-injection, no-param-reassign
192
+ result[filterId] = controlValue;
193
+ }
194
+ }
195
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScCatalogFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
196
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScCatalogFiltersComponent, isStandalone: true, selector: "sc-catalog-filters", inputs: { isOpenAccordion: { classPropertyName: "isOpenAccordion", publicName: "isOpenAccordion", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (filters().length) {\n <div class=\"bg-tui-base-01 shadow-sc mb-4 flex flex-col items-center gap-3 rounded-xl\">\n <tui-accordion class=\"accordion\">\n <button\n [tuiAccordion]=\"isOpenAccordion()\"\n appearance=\"primary\"\n >\n \u0424\u0438\u043B\u044C\u0442\u0440\u044B\n </button>\n <tui-expand>\n <form\n [formGroup]=\"form\"\n class=\"flex flex-col gap-4 pb-1\"\n >\n @for (filter of filters(); track filter.id) {\n <div class=\"flex flex-col gap-2\">\n <label class=\"text-body-s font-medium\">{{ filter.label }}</label>\n\n @if (filter.type === 'checkbox') {\n <div\n [formGroupName]=\"filter.id\"\n class=\"flex flex-col gap-2\"\n >\n @for (value of filter.values; track value.id) {\n <label class=\"flex items-center gap-2\">\n <input\n [formControlName]=\"value.id\"\n tuiCheckbox\n type=\"checkbox\"\n />\n <span class=\"text-body-s\">{{ value.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (filter.type === 'range') {\n <tui-input-range\n [formControlName]=\"filter.id\"\n [min]=\"+filter.min\"\n [max]=\"+filter.max\"\n />\n }\n\n @if (filter.type === 'toggle') {\n <label class=\"flex items-center gap-2\">\n <input\n [formControlName]=\"filter.id\"\n tuiCheckbox\n type=\"checkbox\"\n />\n <span class=\"text-body-s\">\u0414\u0430</span>\n </label>\n }\n </div>\n }\n </form>\n </tui-expand>\n </tui-accordion>\n </div>\n}\n", styles: [".accordion [tuiAccordion]{border:none;mask:none}.accordion tui-expand{box-shadow:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: TuiCheckbox, selector: "input[type=\"checkbox\"][tuiCheckbox]", inputs: ["size"] }, { kind: "component", type: i2.TuiInputRangeComponent, selector: "tui-input-range", inputs: ["min", "max", "step", "segments", "keySteps", "prefix", "postfix", "quantum", "content"] }, { kind: "component", type: i3.TuiAccordionComponent, selector: "tui-accordion", inputs: ["closeOthers", "size"] }, { kind: "directive", type: i3.TuiAccordionDirective, selector: "button[tuiAccordion]", inputs: ["tuiAccordion"], outputs: ["tuiAccordionChange"] }, { kind: "component", type: i4.TuiExpand, selector: "tui-expand", inputs: ["expanded"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
197
+ }
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScCatalogFiltersComponent, decorators: [{
199
+ type: Component,
200
+ args: [{ standalone: true, selector: 'sc-catalog-filters', changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, TuiTextfield, TuiCheckbox, TuiInputRange, TuiAccordion, ReactiveFormsModule], template: "@if (filters().length) {\n <div class=\"bg-tui-base-01 shadow-sc mb-4 flex flex-col items-center gap-3 rounded-xl\">\n <tui-accordion class=\"accordion\">\n <button\n [tuiAccordion]=\"isOpenAccordion()\"\n appearance=\"primary\"\n >\n \u0424\u0438\u043B\u044C\u0442\u0440\u044B\n </button>\n <tui-expand>\n <form\n [formGroup]=\"form\"\n class=\"flex flex-col gap-4 pb-1\"\n >\n @for (filter of filters(); track filter.id) {\n <div class=\"flex flex-col gap-2\">\n <label class=\"text-body-s font-medium\">{{ filter.label }}</label>\n\n @if (filter.type === 'checkbox') {\n <div\n [formGroupName]=\"filter.id\"\n class=\"flex flex-col gap-2\"\n >\n @for (value of filter.values; track value.id) {\n <label class=\"flex items-center gap-2\">\n <input\n [formControlName]=\"value.id\"\n tuiCheckbox\n type=\"checkbox\"\n />\n <span class=\"text-body-s\">{{ value.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (filter.type === 'range') {\n <tui-input-range\n [formControlName]=\"filter.id\"\n [min]=\"+filter.min\"\n [max]=\"+filter.max\"\n />\n }\n\n @if (filter.type === 'toggle') {\n <label class=\"flex items-center gap-2\">\n <input\n [formControlName]=\"filter.id\"\n tuiCheckbox\n type=\"checkbox\"\n />\n <span class=\"text-body-s\">\u0414\u0430</span>\n </label>\n }\n </div>\n }\n </form>\n </tui-expand>\n </tui-accordion>\n </div>\n}\n", styles: [".accordion [tuiAccordion]{border:none;mask:none}.accordion tui-expand{box-shadow:none}\n"] }]
201
+ }], ctorParameters: () => [] });
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL2NhdGFsb2ctZmlsdGVycy9zYy1jYXRhbG9nLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0YWxvZy1maWx0ZXJzL3NjLWNhdGFsb2ctZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQW1CLHNCQUFzQixFQUFxQixjQUFjLEVBQW9ELE1BQU0sd0JBQXdCLENBQUM7QUFDdEssT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFB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QUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNjQ2F0YWxvZ0ZpbHRlciwgU2NDYXRhbG9nRmlsdGVyU2VydmljZSwgU2NJQ2hlY2tib3hGaWx0ZXIsIFNjSWRPclNsdWdQaXBlLCBTY1Byb3BlcnR5RmlsdGVycywgU2NSYW5nZUZpbHRlciwgU2NUb2dnbGVGaWx0ZXIgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IHR1aUlzUHJlc2VudCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpVGV4dGZpZWxkIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpQWNjb3JkaW9uIH0gZnJvbSAnQHRhaWdhLXVpL2V4cGVyaW1lbnRhbCc7XG5pbXBvcnQgeyBUdWlDaGVja2JveCwgVHVpSW5wdXRSYW5nZSB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgc2hhcmUsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNDX0NBVEVHT1JZX0lORk8gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc2MtY2F0ZWdvcnkucHJvdmlkZXJzJztcbmltcG9ydCB7IFNDX0NBVEFMT0dfUFJPRFVDVFNfRklMVEVSUyB9IGZyb20gJy4vdG9rZW5zL3NjLWNhdGFsb2ctcHJvZHVjdHMtZmlsdGVycyc7XG5pbXBvcnQgeyBTQ19DQVRBTE9HX1NIT1dfUFJPRFVDVFNfUkVDVVJTSVZFTFkgfSBmcm9tICcuL3Rva2Vucy9zYy1jYXRhbG9nLXNob3ctcHJvZHVjdHMtcmVjdXJzaXZlbHknO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQstGL0LLQvtC00LAg0YTQuNC70YzRgtGA0L7QsiDQutCw0YLQsNC70L7Qs9CwLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtY2F0YWxvZy1maWx0ZXJzJyxcbiAgICBzdHlsZVVybDogJy4vc2MtY2F0YWxvZy1maWx0ZXJzLmNvbXBvbmVudC5zY3NzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtY2F0YWxvZy1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFR1aVRleHRmaWVsZCwgVHVpQ2hlY2tib3gsIFR1aUlucHV0UmFuZ2UsIFR1aUFjY29yZGlvbiwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2F0YWxvZ0ZpbHRlcnNDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCh0L7RgdGC0L7Rj9C90LjQtSDQvtGC0LrRgNGL0YLQuNGPIGFjY29yZGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNPcGVuQWNjb3JkaW9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0YTQuNC70YzRgtGA0LDQvNC4INC60LDRgtCw0LvQvtCz0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nRmlsdGVyU2VydmljZTogU2NDYXRhbG9nRmlsdGVyU2VydmljZSA9IGluamVjdChTY0NhdGFsb2dGaWx0ZXJTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0LDQudC/LCDQstC+0LfQstGA0LDRidCw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4INGB0LjQvNCy0L7Qu9GM0L3QvtC1INC+0LHQvtC30L3QsNGH0LXQvdC40LUgKHNsdWcpINC40YHRhdC+0LTRjyDQuNC3INC90LDRgdGC0YDQvtC10Log0L7QutGA0YPQttC10L3QuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWRPclNsdWdQaXBlOiBTY0lkT3JTbHVnUGlwZSA9IGluamVjdChTY0lkT3JTbHVnUGlwZSk7XG5cbiAgICAvKipcbiAgICAgKiBTdWJqZWN0INC00LvRjyDRhdGA0LDQvdC10L3QuNGPINGE0LjQu9GM0YLRgNC+0LIg0L/RgNC+0LTRg9C60YLQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0YWxvZ1Byb2R1Y3RzRmlsdGVycyQgPSBpbmplY3QoU0NfQ0FUQUxPR19QUk9EVUNUU19GSUxURVJTKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INC+0YLQvtCx0YDQsNC20LDRgtGMINGE0LjQu9GM0YLRgNGLINC00LvRjyDQstC70L7QttC10L3QvdGL0YUg0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNSZWN1cnNpdmVseSA9IGluamVjdChTQ19DQVRBTE9HX1NIT1dfUFJPRFVDVFNfUkVDVVJTSVZFTFkpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INGE0LjQu9GM0YLRgNC+0LIg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJzID0gdG9TaWduYWwoXG4gICAgICAgIGluamVjdChTQ19DQVRFR09SWV9JTkZPKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGNhdGVnb3J5KSA9PiB0aGlzLmNhdGFsb2dGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlcnMkKHRoaXMuaWRPclNsdWdQaXBlLnRyYW5zZm9ybShjYXRlZ29yeSksIHRoaXMuaXNSZWN1cnNpdmVseSkpLFxuICAgICAgICAgICAgbWFwKChmaWx0ZXJzKSA9PiBmaWx0ZXJzLmZpbHRlcigoaXRlbSkgPT4gaXRlbS50eXBlICE9PSAncmFuZ2UnIHx8IGl0ZW0ubWluICE9PSBpdGVtLm1heCkpLFxuICAgICAgICAgICAgdGFwKChmaWx0ZXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8g0J7QsdC90L7QstC70Y/QtdC8INGB0L7RgdGC0LDQsiDQutC+0L3RgtGA0L7Qu9C+0LIg0YTQvtGA0LzRiyDQvdCwINC+0YHQvdC+0LLQtSDQv9C+0LvRg9GH0LXQvdC90YvRhSDRhNC40LvRjNGC0YDQvtCyLlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRm9ybUNvbnRyb2xzKGZpbHRlcnMpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzaGFyZSgpXG4gICAgICAgICksXG4gICAgICAgIHsgaW5pdGlhbFZhbHVlOiBbXSB9XG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIEZvcm1Hcm91cCDQtNC70Y8g0YTQuNC70YzRgtGA0L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXA8XG4gICAgICAgIFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIHRoaXMuY3JlYXRlQ2hlY2tib3hGb3JtQ29udHJvbD4gfCBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmNyZWF0ZVJhbmdlRm9ybUNvbnRyb2w+IHwgUmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5jcmVhdGVUb2dnbGVGb3JtQ29udHJvbD4+XG4gICAgPih7fSk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjQ2F0YWxvZ0ZpbHRlcnNDb21wb25lbnR9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgwKSwgdGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoZmlsdGVycykgPT4ge1xuICAgICAgICAgICAgdGhpcy5jYXRhbG9nUHJvZHVjdHNGaWx0ZXJzJC5uZXh0KHRoaXMuYnVpbGRQcm9wZXJ0eUZpbHRlcnMoZmlsdGVycykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0L3QvtCy0LvRj9C10YIg0YHQvtGB0YLQsNCyINC60L7QvdGC0YDQvtC70L7QsiDRhNC+0YDQvNGLINC90LAg0L7RgdC90L7QstC1INC/0LXRgNC10LTQsNC90L3Ri9GFINGE0LjQu9GM0YLRgNC+0LIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVycyDQnNCw0YHRgdC40LIg0YTQuNC70YzRgtGA0L7QsiDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQutC+0L3RgtGA0L7Qu9C+0LIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHVwZGF0ZUZvcm1Db250cm9scyhmaWx0ZXJzOiBTY0NhdGFsb2dGaWx0ZXJbXSk6IHZvaWQge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHMpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ucmVtb3ZlQ29udHJvbChrZXkgYXMgbmV2ZXIsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZmlsdGVycy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0udHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNrYm94JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woaXRlbS5pZCwgdGhpcy5jcmVhdGVDaGVja2JveEZvcm1Db250cm9sKGl0ZW0pLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3JhbmdlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woaXRlbS5pZCwgdGhpcy5jcmVhdGVSYW5nZUZvcm1Db250cm9sKGl0ZW0pLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3RvZ2dsZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGl0ZW0uaWQsIHRoaXMuY3JlYXRlVG9nZ2xlRm9ybUNvbnRyb2woaXRlbSksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDQt9C90LDRh9C10L3QuNGPINGE0L7RgNC80Ysg0LIg0L7QsdGK0LXQutGCINGE0LjQu9GM0YLRgNC+0LIg0YHQstC+0LnRgdGC0LIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUg0JfQvdCw0YfQtdC90LjRjyDRhNC+0YDQvNGLLlxuICAgICAqIEByZXR1cm5zINCe0LHRitC10LrRgiDRhNC40LvRjNGC0YDQvtCyINGB0LLQvtC50YHRgtCyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBidWlsZFByb3BlcnR5RmlsdGVycyh2YWx1ZTogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCBib29sZWFuIHwgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gfCBbbnVtYmVyLCBudW1iZXJdPj4gfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFNjUHJvcGVydHlGaWx0ZXJzIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBTY1Byb3BlcnR5RmlsdGVycyA9IHt9O1xuXG4gICAgICAgIHRoaXMuZmlsdGVycygpLmZvckVhY2goKGZpbHRlckl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IHZhbHVlW2ZpbHRlckl0ZW0uaWRdIGFzIGJvb2xlYW4gfCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiB8IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmIChpc05pbChjb250cm9sVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKGZpbHRlckl0ZW0udHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNrYm94JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzQ2hlY2tib3hGaWx0ZXIocmVzdWx0LCBmaWx0ZXJJdGVtLmlkLCBjb250cm9sVmFsdWUgYXMgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyYW5nZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc1JhbmdlRmlsdGVyKHJlc3VsdCwgZmlsdGVySXRlbS5pZCwgY29udHJvbFZhbHVlIGFzIFtudW1iZXIsIG51bWJlcl0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd0b2dnbGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NUb2dnbGVGaWx0ZXIocmVzdWx0LCBmaWx0ZXJJdGVtLmlkLCBjb250cm9sVmFsdWUgYXMgYm9vbGVhbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDQtdGCIEZvcm1Hcm91cCDQtNC70Y8gY2hlY2tib3guXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2hlY2tib3hGaWx0ZXIg0KTQuNC70YzRgtGAINGC0LjQv9CwIGNoZWNrYm94LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVDaGVja2JveEZvcm1Db250cm9sKGNoZWNrYm94RmlsdGVyOiBTY0lDaGVja2JveEZpbHRlcik6IEZvcm1Hcm91cDxSZWNvcmQ8c3RyaW5nLCBGb3JtQ29udHJvbDxib29sZWFuPj4+IHtcbiAgICAgICAgY29uc3QgY29udHJvbHM6IFJlY29yZDxzdHJpbmcsIEZvcm1Db250cm9sPGJvb2xlYW4+PiA9IHt9O1xuICAgICAgICBjaGVja2JveEZpbHRlci52YWx1ZXMuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGNvbnRyb2xzW3ZhbHVlLmlkXSA9IG5ldyBGb3JtQ29udHJvbChmYWxzZSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoY29udHJvbHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDQtdGCIEZvcm1Db250cm9sINC00LvRjyByYW5nZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByYW5nZUZpbHRlciDQpNC40LvRjNGC0YAg0YLQuNC/0LAgcmFuZ2UuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVJhbmdlRm9ybUNvbnRyb2wocmFuZ2VGaWx0ZXI6IFNjUmFuZ2VGaWx0ZXIpOiBGb3JtQ29udHJvbDxbbnVtYmVyLCBudW1iZXJdPiB7XG4gICAgICAgIC8vIFRPRE86INCU0L7QsdCw0LLQuNGC0YwgdXBkYXRlT246ICdibHVyJyDQv9C+0YHQu9C1INC40YHQv9GA0LDQstC70LXQvdC40Y8g0LHQsNCz0LAg0LIgdGFpZ2EtdWkuXG4gICAgICAgIHJldHVybiBuZXcgRm9ybUNvbnRyb2woW051bWJlcihyYW5nZUZpbHRlci5zZWxlY3RlZE1pbiA/PyByYW5nZUZpbHRlci5taW4pLCBOdW1iZXIocmFuZ2VGaWx0ZXIuc2VsZWN0ZWRNYXggPz8gcmFuZ2VGaWx0ZXIubWF4KV0sIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIgRm9ybUNvbnRyb2wg0LTQu9GPIHRvZ2dsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0b2dnbGVGaWx0ZXIg0KTQuNC70YzRgtGAINGC0LjQv9CwIHRvZ2dsZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVG9nZ2xlRm9ybUNvbnRyb2wodG9nZ2xlRmlsdGVyOiBTY1RvZ2dsZUZpbHRlcik6IEZvcm1Db250cm9sPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGb3JtQ29udHJvbCh0b2dnbGVGaWx0ZXIuc2VsZWN0ZWRWYWx1ZSA/PyBmYWxzZSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0LDRgtGL0LLQsNC10YIgY2hlY2tib3gg0YTQuNC70YzRgtGALlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlc3VsdCDQntCx0YrQtdC60YIg0YDQtdC30YPQu9GM0YLQsNGC0LAg0LTQu9GPINC30LDQv9C+0LvQvdC10L3QuNGPLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRhNC40LvRjNGC0YDQsC5cbiAgICAgKiBAcGFyYW0gY29udHJvbFZhbHVlINCX0L3QsNGH0LXQvdC40LUg0LrQvtC90YLRgNC+0LvQsCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc0NoZWNrYm94RmlsdGVyKHJlc3VsdDogU2NQcm9wZXJ0eUZpbHRlcnMsIGZpbHRlcklkOiBzdHJpbmcsIGNvbnRyb2xWYWx1ZTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pOiB2b2lkIHtcbiAgICAgICAgLy8g0JTQu9GPIGNoZWNrYm94OiBGb3JtR3JvdXAg0YEgRm9ybUNvbnRyb2w8Ym9vbGVhbj4gLT4gc3RyaW5nW10gKNC80LDRgdGB0LjQsiBJRCDQstGL0LHRgNCw0L3QvdGL0YUg0LfQvdCw0YfQtdC90LjQuSlcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBPYmplY3QuZW50cmllcyhjb250cm9sVmFsdWUpXG4gICAgICAgICAgICAuZmlsdGVyKChbLCBpc1NlbGVjdGVkXSkgPT4gaXNTZWxlY3RlZClcbiAgICAgICAgICAgIC5tYXAoKFtpZF0pID0+IGlkKTtcblxuICAgICAgICBpZiAoc2VsZWN0ZWRJZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uLCBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgICAgcmVzdWx0W2ZpbHRlcklkXSA9IHNlbGVjdGVkSWRzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdCw0YLRi9Cy0LDQtdGCIHJhbmdlINGE0LjQu9GM0YLRgC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXN1bHQg0J7QsdGK0LXQutGCINGA0LXQt9GD0LvRjNGC0LDRgtCwINC00LvRjyDQt9Cw0L/QvtC70L3QtdC90LjRjy5cbiAgICAgKiBAcGFyYW0gZmlsdGVySWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YTQuNC70YzRgtGA0LAuXG4gICAgICogQHBhcmFtIGNvbnRyb2xWYWx1ZSDQl9C90LDRh9C10L3QuNC1INC60L7QvdGC0YDQvtC70LAg0YTQvtGA0LzRiy5cbiAgICAgKiBAcGFyYW0gY29udHJvbFZhbHVlLjAg0J3QsNGH0LDQu9GM0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LTQuNCw0L/QsNC30L7QvdCwLlxuICAgICAqIEBwYXJhbSBjb250cm9sVmFsdWUuMSDQmtC+0L3QtdGH0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LTQuNCw0L/QsNC30L7QvdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc1JhbmdlRmlsdGVyKHJlc3VsdDogU2NQcm9wZXJ0eUZpbHRlcnMsIGZpbHRlcklkOiBzdHJpbmcsIFtmcm9tLCB0b106IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgLy8g0JTQu9GPIHJhbmdlOiBGb3JtQ29udHJvbDxbbnVtYmVyLCBudW1iZXJdPiAtPiB7IGZyb20/OiBzdHJpbmc7IHRvPzogc3RyaW5nOyB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvbiwgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgcmVzdWx0W2ZpbHRlcklkXSA9IHtcbiAgICAgICAgICAgIGZyb206IFN0cmluZyhmcm9tKSxcbiAgICAgICAgICAgIHRvOiBTdHJpbmcodG8pLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQsNGC0YvQstCw0LXRgiB0b2dnbGUg0YTQuNC70YzRgtGALlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlc3VsdCDQntCx0YrQtdC60YIg0YDQtdC30YPQu9GM0YLQsNGC0LAg0LTQu9GPINC30LDQv9C+0LvQvdC10L3QuNGPLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRhNC40LvRjNGC0YDQsC5cbiAgICAgKiBAcGFyYW0gY29udHJvbFZhbHVlINCX0L3QsNGH0LXQvdC40LUg0LrQvtC90YLRgNC+0LvQsCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc1RvZ2dsZUZpbHRlcihyZXN1bHQ6IFNjUHJvcGVydHlGaWx0ZXJzLCBmaWx0ZXJJZDogc3RyaW5nLCBjb250cm9sVmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgLy8g0JTQu9GPIHRvZ2dsZTogRm9ybUNvbnRyb2w8Ym9vbGVhbj4gLT4gYm9vbGVhblxuICAgICAgICBpZiAoY29udHJvbFZhbHVlKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb24sIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICByZXN1bHRbZmlsdGVySWRdID0gY29udHJvbFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGlmIChmaWx0ZXJzKCkubGVuZ3RoKSB7XG4gICAgPGRpdiBjbGFzcz1cImJnLXR1aS1iYXNlLTAxIHNoYWRvdy1zYyBtYi00IGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0zIHJvdW5kZWQteGxcIj5cbiAgICAgICAgPHR1aS1hY2NvcmRpb24gY2xhc3M9XCJhY2NvcmRpb25cIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBbdHVpQWNjb3JkaW9uXT1cImlzT3BlbkFjY29yZGlvbigpXCJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0KTQuNC70YzRgtGA0YtcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHR1aS1leHBhbmQ+XG4gICAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00IHBiLTFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoZmlsdGVyIG9mIGZpbHRlcnMoKTsgdHJhY2sgZmlsdGVyLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtYm9keS1zIGZvbnQtbWVkaXVtXCI+e3sgZmlsdGVyLmxhYmVsIH19PC9sYWJlbD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cE5hbWVdPVwiZmlsdGVyLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHZhbHVlIG9mIGZpbHRlci52YWx1ZXM7IHRyYWNrIHZhbHVlLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInZhbHVlLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYm9keS1zXCI+e3sgdmFsdWUubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHVpLWlucHV0LXJhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlci5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIitmaWx0ZXIubWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwiK2ZpbHRlci5tYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmlsdGVyLnR5cGUgPT09ICd0b2dnbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlci5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ib2R5LXNcIj7QlNCwPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgPC90dWktZXhwYW5kPlxuICAgICAgICA8L3R1aS1hY2NvcmRpb24+XG4gICAgPC9kaXY+XG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ /**
4
+ * Токен для инъекции {@link Subject} для хранения фильтров продуктов.
5
+ */
6
+ export const SC_CATALOG_PRODUCTS_FILTERS = new InjectionToken('SC_CATALOG_PRODUCTS_FILTERS$', {
7
+ providedIn: 'root',
8
+ factory: () => new Subject(),
9
+ });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy1wcm9kdWN0cy1maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0YWxvZy1maWx0ZXJzL3Rva2Vucy9zYy1jYXRhbG9nLXByb2R1Y3RzLWZpbHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9COztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxjQUFjLENBQTZCLDhCQUE4QixFQUFFO0lBQ3RILFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLE9BQU8sRUFBcUI7Q0FDbEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjUHJvcGVydHlGaWx0ZXJzIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICog0KLQvtC60LXQvSDQtNC70Y8g0LjQvdGK0LXQutGG0LjQuCB7QGxpbmsgU3ViamVjdH0g0LTQu9GPINGF0YDQsNC90LXQvdC40Y8g0YTQuNC70YzRgtGA0L7QsiDQv9GA0L7QtNGD0LrRgtC+0LIuXG4gKi9cbmV4cG9ydCBjb25zdCBTQ19DQVRBTE9HX1BST0RVQ1RTX0ZJTFRFUlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3ViamVjdDxTY1Byb3BlcnR5RmlsdGVycz4+KCdTQ19DQVRBTE9HX1BST0RVQ1RTX0ZJTFRFUlMkJywge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiAoKSA9PiBuZXcgU3ViamVjdDxTY1Byb3BlcnR5RmlsdGVycz4oKSxcbn0pO1xuIl19
@@ -0,0 +1,6 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ /**
3
+ * Токен для инъекции признака необходимости отображать фильтры для вложенных категорий.
4
+ */
5
+ export const SC_CATALOG_SHOW_PRODUCTS_RECURSIVELY = new InjectionToken('SC_CATALOG_SHOW_PRODUCTS_RECURSIVELY');
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy1zaG93LXByb2R1Y3RzLXJlY3Vyc2l2ZWx5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0YWxvZy1maWx0ZXJzL3Rva2Vucy9zYy1jYXRhbG9nLXNob3ctcHJvZHVjdHMtcmVjdXJzaXZlbHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLElBQUksY0FBYyxDQUFVLHNDQUFzQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqINCi0L7QutC10L0g0LTQu9GPINC40L3RitC10LrRhtC40Lgg0L/RgNC40LfQvdCw0LrQsCDQvdC10L7QsdGF0L7QtNC40LzQvtGB0YLQuCDQvtGC0L7QsdGA0LDQttCw0YLRjCDRhNC40LvRjNGC0YDRiyDQtNC70Y8g0LLQu9C+0LbQtdC90L3Ri9GFINC60LDRgtC10LPQvtGA0LjQuS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNDX0NBVEFMT0dfU0hPV19QUk9EVUNUU19SRUNVUlNJVkVMWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPignU0NfQ0FUQUxPR19TSE9XX1BST0RVQ1RTX1JFQ1VSU0lWRUxZJyk7XG4iXX0=
@@ -11,4 +11,5 @@ export * from './price-list-pagination/sc-price-list-pagination.component';
11
11
  export * from './price-warehouse-stock/sc-price-warehouse-stock.component';
12
12
  export * from './sc-favorite-button/sc-favorite-button.component';
13
13
  export * from './sc-catalog.module';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kb3dubG9hZC1wcmljZS1saXN0L3NjLWRvd25sb2FkLXByaWNlLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2F0ZWdvcnktY2FyZC9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Nvc3Qtd2l0aC1kaXNjb3VudC9jb3N0LXdpdGgtZGlzY291bnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaG92ZXItaW1hZ2UtY2Fyb3VzZWwvc2MtaG92ZXItaW1hZ2UtY2Fyb3VzZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtcXVhbnRpdHkvc2MtaW5wdXQtcXVhbnRpdHkuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZ5LXdoZW4taW4tc3RvY2stZGlhbG9nJztcbmV4cG9ydCAqIGZyb20gJy4vcHJpY2UtY2FyZC9zYy1wcmljZS1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3ByaWNlLWNhcmQtaW5saW5lL3NjLXByaWNlLWNhcmQtaW5saW5lLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3ByaWNlLWhpc3Rvcnkvc2MtcHJpY2UtaGlzdG9yeS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wcmljZS1saXN0LXBhZ2luYXRpb24vc2MtcHJpY2UtbGlzdC1wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3ByaWNlLXdhcmVob3VzZS1zdG9jay9zYy1wcmljZS13YXJlaG91c2Utc3RvY2suY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2MtZmF2b3JpdGUtYnV0dG9uL3NjLWZhdm9yaXRlLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1jYXRhbG9nLm1vZHVsZSc7XG4iXX0=
14
+ export * from './catalog-filters';
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Rvd25sb2FkLXByaWNlLWxpc3Qvc2MtZG93bmxvYWQtcHJpY2UtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXRlZ29yeS1jYXJkL3NjLWNhdGVnb3J5LWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29zdC13aXRoLWRpc2NvdW50L2Nvc3Qtd2l0aC1kaXNjb3VudC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ob3Zlci1pbWFnZS1jYXJvdXNlbC9zYy1ob3Zlci1pbWFnZS1jYXJvdXNlbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1xdWFudGl0eS9zYy1pbnB1dC1xdWFudGl0eS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZnktd2hlbi1pbi1zdG9jay1kaWFsb2cnO1xuZXhwb3J0ICogZnJvbSAnLi9wcmljZS1jYXJkL3NjLXByaWNlLWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHJpY2UtY2FyZC1pbmxpbmUvc2MtcHJpY2UtY2FyZC1pbmxpbmUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHJpY2UtaGlzdG9yeS9zYy1wcmljZS1oaXN0b3J5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3ByaWNlLWxpc3QtcGFnaW5hdGlvbi9zYy1wcmljZS1saXN0LXBhZ2luYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHJpY2Utd2FyZWhvdXNlLXN0b2NrL3NjLXByaWNlLXdhcmVob3VzZS1zdG9jay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1mYXZvcml0ZS1idXR0b24vc2MtZmF2b3JpdGUtYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWNhdGFsb2cubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY2F0YWxvZy1maWx0ZXJzJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './sc-get-current-route';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvbWV0aG9kcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zYy1nZXQtY3VycmVudC1yb3V0ZSc7XG4iXX0=
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Возвращает текущий маршрут.
3
+ * Функция проходит по дереву маршрутов начиная с переданного route и возвращает самый вложенный активный маршрут.
4
+ *
5
+ * @param route Данные маршрута, от которого ищем текущий маршрут в приложении.
6
+ */
7
+ export const scGetCurrentRoute = (route) => {
8
+ let currentRoute = route;
9
+ while (currentRoute.firstChild) {
10
+ currentRoute = currentRoute.firstChild;
11
+ }
12
+ return currentRoute;
13
+ };
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZ2V0LWN1cnJlbnQtcm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvbWV0aG9kcy9zYy1nZXQtY3VycmVudC1yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFO0lBQ3ZELElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztJQUV6QixPQUFPLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM3QixZQUFZLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsT0FBTyxZQUFZLENBQUM7QUFDeEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG4vKipcbiAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGC0LXQutGD0YnQuNC5INC80LDRgNGI0YDRg9GCLlxuICog0KTRg9C90LrRhtC40Y8g0L/RgNC+0YXQvtC00LjRgiDQv9C+INC00LXRgNC10LLRgyDQvNCw0YDRiNGA0YPRgtC+0LIg0L3QsNGH0LjQvdCw0Y8g0YEg0L/QtdGA0LXQtNCw0L3QvdC+0LPQviByb3V0ZSDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDRgdCw0LzRi9C5INCy0LvQvtC20LXQvdC90YvQuSDQsNC60YLQuNCy0L3Ri9C5INC80LDRgNGI0YDRg9GCLlxuICpcbiAqIEBwYXJhbSByb3V0ZSDQlNCw0L3QvdGL0LUg0LzQsNGA0YjRgNGD0YLQsCwg0L7RgiDQutC+0YLQvtGA0L7Qs9C+INC40YnQtdC8INGC0LXQutGD0YnQuNC5INC80LDRgNGI0YDRg9GCINCyINC/0YDQuNC70L7QttC10L3QuNC4LlxuICovXG5leHBvcnQgY29uc3Qgc2NHZXRDdXJyZW50Um91dGUgPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlKSA9PiB7XG4gICAgbGV0IGN1cnJlbnRSb3V0ZSA9IHJvdXRlO1xuXG4gICAgd2hpbGUgKGN1cnJlbnRSb3V0ZS5maXJzdENoaWxkKSB7XG4gICAgICAgIGN1cnJlbnRSb3V0ZSA9IGN1cnJlbnRSb3V0ZS5maXJzdENoaWxkO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50Um91dGU7XG59O1xuIl19
@@ -5,7 +5,7 @@ import { ScConvertersService, ScFrequentlyAskedQuestionsService } from '@snabcen
5
5
  import { TUI_WINDOW_SIZE, tuiIsFalsy, tuiIsPresent } from '@taiga-ui/cdk';
6
6
  import { TuiButton } from '@taiga-ui/core';
7
7
  import { TuiPagination } from '@taiga-ui/kit';
8
- import { BehaviorSubject, combineLatest, debounceTime, filter, map, shareReplay, startWith, Subject, switchMap } from 'rxjs';
8
+ import { BehaviorSubject, combineLatest, debounceTime, filter, map, of, shareReplay, startWith, Subject, switchMap } from 'rxjs';
9
9
  import { ScFrequentlyAskedQuestionsComponent, ScFrequentlyAskedQuestionsGroupSelectorComponent } from '..';
10
10
  import { SC_PAGE_SIZE_OPTIONS } from '../frequently-asked-questions/sc-page-size-options';
11
11
  import * as i0 from "@angular/core";
@@ -53,6 +53,7 @@ export class ScFrequentlyAskedQuestionsWithGroupsComponent {
53
53
  page: this.page$,
54
54
  perPage: this.perPage$,
55
55
  group: this.groupId$,
56
+ paginate: of(true),
56
57
  }).pipe(
57
58
  // Нулевой debounceTime для случая, когда меняются направление и поле сортировки одновременно.
58
59
  debounceTime(0), switchMap((value) => this.frequentlyAskedQuestionsService
@@ -103,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
103
104
  type: Component,
104
105
  args: [{ standalone: true, selector: 'sc-frequently-asked-questions-with-groups', imports: [AsyncPipe, NgIf, ScFrequentlyAskedQuestionsGroupSelectorComponent, TuiButton, ScFrequentlyAskedQuestionsComponent, TuiPagination], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let items = data$ | async;\n@let pageCount = pageCount$ | async;\n@let viewMode = viewMode$ | async;\n\n<div\n *ngIf=\"viewMode\"\n class=\"flex gap-6\"\n [class.flex-col]=\"viewMode === 'select'\"\n>\n <div class=\"flex flex-col gap-7\">\n <sc-frequently-asked-questions-group-selector\n (groupIdChange)=\"groupIdChange($event)\"\n [viewMode]=\"viewMode\"\n class=\"shrink-0\"\n [class.w-64]=\"viewMode !== 'select'\"\n />\n\n <button\n *ngIf=\"viewMode === 'list'\"\n tuiButton\n size=\"m\"\n type=\"button\"\n iconStart=\"@tui.circle-help\"\n appearance=\"secondary\"\n (click)=\"clickSendQuestion.emit()\"\n class=\"self-center\"\n >\n \u0417\u0430\u0434\u0430\u0442\u044C \u0432\u043E\u043F\u0440\u043E\u0441\n </button>\n </div>\n\n <div class=\"grow\">\n @if (items && items.length) {\n <sc-frequently-asked-questions\n [items]=\"items\"\n [showLoading]=\"isLoading()\"\n />\n\n <tui-pagination\n *ngIf=\"pageCount && pageCount > 1\"\n [length]=\"pageCount\"\n [index]=\"(currentPage$ | async) ?? 0\"\n (indexChange)=\"paginationChange($event)\"\n class=\"mt-4 !justify-items-center\"\n />\n } @else {\n <p class=\"text-body-s-bold\">\u0421\u043F\u0438\u0441\u043E\u043A \u0432\u043E\u043F\u0440\u043E\u0441\u043E\u0432 \u043F\u0443\u0441\u0442</p>\n }\n </div>\n</div>\n" }]
105
106
  }] });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMtd2l0aC1ncm91cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3BhZ2VzL2ZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLXdpdGgtZ3JvdXBzL3NjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLXdpdGgtZ3JvdXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9wYWdlcy9mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy13aXRoLWdyb3Vwcy9zYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy13aXRoLWdyb3Vwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBYSxpQ0FBaUMsRUFBNEQsTUFBTSx3QkFBd0IsQ0FBQztBQUNySyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpJ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QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FvQnJKO0lBbEJHOzs7O09BSUc7SUFDTyxnQkFBZ0IsQ0FBQyxTQUFpQjtRQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxhQUFhLENBQUMsRUFBVTtRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQzsrR0EvR1EsNkNBQTZDO21HQUE3Qyw2Q0FBNkMsMEpDdEIxRCw2bkRBa0RBLHVDRC9CYyxTQUFTLDhDQUFFLElBQUksNkZBQUUsZ0RBQWdELDJJQUFFLFNBQVMsb0lBQUUsbUNBQW1DLDRHQUFFLGFBQWE7OzRGQUdqSSw2Q0FBNkM7a0JBUHpELFNBQVM7aUNBQ00sSUFBSSxZQUNOLDJDQUEyQyxXQUU1QyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0RBQWdELEVBQUUsU0FBUyxFQUFFLG1DQUFtQyxFQUFFLGFBQWEsQ0FBQyxtQkFDMUgsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIG91dHB1dCwgT3V0cHV0RW1pdHRlclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBTY0NvbnZlcnRlcnNTZXJ2aWNlLCBTY0ZhcUl0ZW0sIFNjRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zU2VydmljZSwgU2NJRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zUGFnaW5hdGlvblBhcmFtcywgU2NJUGFnaW5hdGUgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFRVSV9XSU5ET1dfU0laRSwgdHVpSXNGYWxzeSwgdHVpSXNQcmVzZW50IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlCdXR0b24gfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBUdWlQYWdpbmF0aW9uIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc0NvbXBvbmVudCwgU2NGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNHcm91cFNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgU0NfUEFHRV9TSVpFX09QVElPTlMgfSBmcm9tICcuLi9mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy9zYy1wYWdlLXNpemUtb3B0aW9ucyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGH0LDRgdGC0L4g0LfQsNC00LDQstCw0LXQvNGL0YUg0LLQvtC/0YDQvtGB0L7QsiDRgSDQstC+0LfQvNC+0LbQvdC+0YHRgtGM0Y4g0LLRi9Cx0L7RgNCwINCz0YDRg9C/0L/RiyDQstC+0L/RgNC+0YHQvtCyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMtd2l0aC1ncm91cHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy13aXRoLWdyb3Vwcy5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW0FzeW5jUGlwZSwgTmdJZiwgU2NGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNHcm91cFNlbGVjdG9yQ29tcG9uZW50LCBUdWlCdXR0b24sIFNjRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zQ29tcG9uZW50LCBUdWlQYWdpbmF0aW9uXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNXaXRoR3JvdXBzQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPIEVtYWlsINC00LvRjyDRgdCy0Y/Qt9C4INC/0L4g0LLQvtC/0YDQvtGB0LDQvCDRgNC10LrQu9Cw0LzQsNGG0LjQuS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZnJlcXVlbnRseUFza2VkUXVlc3Rpb25zU2VydmljZTogU2NGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNTZXJ2aWNlID0gaW5qZWN0KFNjRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LrQvtC90LLQtdGA0YLQsNGG0LjQuCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0ZXJzU2VydmljZTogU2NDb252ZXJ0ZXJzU2VydmljZSA9IGluamVjdChTY0NvbnZlcnRlcnNTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QtNC10LrRgSDQv9C10YDQstC+0Lkg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpcnN0UGFnZUluZGV4OiBudW1iZXIgPSAxO1xuXG4gICAgLyoqXG4gICAgICog0JrQvtC70LjRh9C10YHRgtCy0L4g0LfQsNC/0LjRgdC10Lkg0L3QsCDRgdGC0YDQsNC90LjRhtC1INC/0LDQs9C40L3QsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gPSBpbmplY3QoU0NfUEFHRV9TSVpFX09QVElPTlMpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIEJlaGF2aW9yU3ViamVjdH0g0LjQt9C80LXQvdC10L3QuNGPINC60L7Qu9C40YfQtdGB0YLQstCwINC30LDQv9C40YHQtdC5INC90LAg0YHRgtGA0LDQvdC40YbQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBlclBhZ2UkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPih0aGlzLnBhZ2VTaXplT3B0aW9uc1swXSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgQmVoYXZpb3JTdWJqZWN0fSDQuNC30LzQtdC90LXQvdC40Y8g0L3QvtC80LXRgNCwINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4odGhpcy5maXJzdFBhZ2VJbmRleCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgQmVoYXZpb3JTdWJqZWN0fSDQuNC30LzQtdC90LXQvdC40Y8g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQsCDQs9GA0YPQv9C/0YsuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdyb3VwSWQkOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC40LPQvdCw0Lsg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMgXCLQl9Cw0LTQsNGC0Ywg0LLQvtC/0YDQvtGBXCIuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWNrU2VuZFF1ZXN0aW9uOiBPdXRwdXRFbWl0dGVyUmVmPHZvaWQ+ID0gb3V0cHV0KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0LTQsNC90L3Ri9GFINGB0L/QuNGB0LrQsCDQt9Cw0LrQsNC30L7Qsi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3QkOiBPYnNlcnZhYmxlPFNjSVBhZ2luYXRlPFNjRmFxSXRlbT4gfCBudWxsPiA9IGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICBwYWdlOiB0aGlzLnBhZ2UkLFxuICAgICAgICBwZXJQYWdlOiB0aGlzLnBlclBhZ2UkLFxuICAgICAgICBncm91cDogdGhpcy5ncm91cElkJCxcbiAgICB9KS5waXBlKFxuICAgICAgICAvLyDQndGD0LvQtdCy0L7QuSBkZWJvdW5jZVRpbWUg0LTQu9GPINGB0LvRg9GH0LDRjywg0LrQvtCz0LTQsCDQvNC10L3Rj9GO0YLRgdGPINC90LDQv9GA0LDQstC70LXQvdC40LUg0Lgg0L/QvtC70LUg0YHQvtGA0YLQuNGA0L7QstC60Lgg0L7QtNC90L7QstGA0LXQvNC10L3QvdC+LlxuICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWU6IFNjSUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1BhZ2luYXRpb25QYXJhbXMpID0+XG4gICAgICAgICAgICB0aGlzLmZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1NlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zJCh0aGlzLmNvbnZlcnRlcnNTZXJ2aWNlLnJlbW92ZU51bGw8U2NJRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zUGFnaW5hdGlvblBhcmFtcz4odmFsdWUpKVxuICAgICAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aChudWxsKSlcbiAgICAgICAgKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINC+0LHRidC10LPQviDQutC+0LvQuNGH0LXRgdGC0LLQsCDRgdGC0YDQsNC90LjRhiDQv9Cw0LPQuNC90LDRhtC40LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZ2VDb3VudCQ6IE9ic2VydmFibGU8bnVtYmVyPiA9IHRoaXMucmVxdWVzdCQucGlwZShcbiAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgIG1hcCgoeyBtZXRhIH0pID0+IG1ldGEubGFzdFBhZ2UpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0L3QvtC80LXRgNCwINGB0YLRgNCw0L3QuNGG0Ysg0L/QsNCz0LjQvdCw0YbQuNC4INC40Lcg0LTQsNC90L3Ri9GFINC/0LDQs9C40L3QsNGG0LjQuCDQt9Cw0L/RgNC+0YHQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3VycmVudFBhZ2UkOiBPYnNlcnZhYmxlPG51bWJlcj4gPSB0aGlzLnJlcXVlc3QkLnBpcGUoXG4gICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICBtYXAoKHsgbWV0YSB9KSA9PiBtZXRhLmN1cnJlbnRQYWdlIC0gMSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LfQsNCz0YDRg9C30LrQuCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTG9hZGluZyA9IHRvU2lnbmFsKHRoaXMucmVxdWVzdCQucGlwZShtYXAodHVpSXNGYWxzeSkpLCB7IGluaXRpYWxWYWx1ZTogZmFsc2UgfSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0L/QuNGB0LrQsCDQt9Cw0LrQsNC30L7QsiDRgdGC0YDQsNC90LjRhtGLINC/0LDQs9C40L3QsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YSQ6IE9ic2VydmFibGU8U2NGYXFJdGVtW10gfCBudWxsPiA9IHRoaXMucmVxdWVzdCQucGlwZShcbiAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgIG1hcCgoZGF0YSkgPT4gZGF0YS5kYXRhKSxcbiAgICAgICAgc3RhcnRXaXRoKG51bGwpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YTQvtGA0LzQsNGC0LAg0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDRhNC40LvRjNGC0YDQsCDQs9GA0YPQv9C/LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB2aWV3TW9kZSQ6IE9ic2VydmFibGU8J2xpc3QnIHwgJ3NlbGVjdCc+ID0gaW5qZWN0KFRVSV9XSU5ET1dfU0laRSkucGlwZShtYXAoKHJlY3QpID0+IChyZWN0LndpZHRoID4gNzY4ID8gJ2xpc3QnIDogJ3NlbGVjdCcpKSk7XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDQtNCw0L3QvdGL0LUg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhZ2VJbmRleCDQmNC90LTQtdC60YEg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcGFnaW5hdGlvbkNoYW5nZShwYWdlSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2UkLm5leHQocGFnZUluZGV4ICsgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LPRgNGD0L/Qv9GLLlxuICAgICAqXG4gICAgICogQHBhcmFtIGlkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINCz0YDRg9C/0L/Riy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ3JvdXBJZENoYW5nZShpZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ3JvdXBJZCQubmV4dChpZCk7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbkNoYW5nZSgwKTtcbiAgICB9XG59XG4iLCJAbGV0IGl0ZW1zID0gZGF0YSQgfCBhc3luYztcbkBsZXQgcGFnZUNvdW50ID0gcGFnZUNvdW50JCB8IGFzeW5jO1xuQGxldCB2aWV3TW9kZSA9IHZpZXdNb2RlJCB8IGFzeW5jO1xuXG48ZGl2XG4gICAgKm5nSWY9XCJ2aWV3TW9kZVwiXG4gICAgY2xhc3M9XCJmbGV4IGdhcC02XCJcbiAgICBbY2xhc3MuZmxleC1jb2xdPVwidmlld01vZGUgPT09ICdzZWxlY3QnXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtN1wiPlxuICAgICAgICA8c2MtZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMtZ3JvdXAtc2VsZWN0b3JcbiAgICAgICAgICAgIChncm91cElkQ2hhbmdlKT1cImdyb3VwSWRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbdmlld01vZGVdPVwidmlld01vZGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJzaHJpbmstMFwiXG4gICAgICAgICAgICBbY2xhc3Mudy02NF09XCJ2aWV3TW9kZSAhPT0gJ3NlbGVjdCdcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwidmlld01vZGUgPT09ICdsaXN0J1wiXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5jaXJjbGUtaGVscFwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGlja1NlbmRRdWVzdGlvbi5lbWl0KClcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCX0LDQtNCw0YLRjCDQstC+0L/RgNC+0YFcbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ3Jvd1wiPlxuICAgICAgICBAaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgPHNjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zXG4gICAgICAgICAgICAgICAgW2l0ZW1zXT1cIml0ZW1zXCJcbiAgICAgICAgICAgICAgICBbc2hvd0xvYWRpbmddPVwiaXNMb2FkaW5nKClcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPHR1aS1wYWdpbmF0aW9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlQ291bnQgJiYgcGFnZUNvdW50ID4gMVwiXG4gICAgICAgICAgICAgICAgW2xlbmd0aF09XCJwYWdlQ291bnRcIlxuICAgICAgICAgICAgICAgIFtpbmRleF09XCIoY3VycmVudFBhZ2UkIHwgYXN5bmMpID8/IDBcIlxuICAgICAgICAgICAgICAgIChpbmRleENoYW5nZSk9XCJwYWdpbmF0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtNCAhanVzdGlmeS1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtYm9keS1zLWJvbGRcIj7QodC/0LjRgdC+0Log0LLQvtC/0YDQvtGB0L7QsiDQv9GD0YHRgjwvcD5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMtd2l0aC1ncm91cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3BhZ2VzL2ZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLXdpdGgtZ3JvdXBzL3NjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLXdpdGgtZ3JvdXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9wYWdlcy9mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy13aXRoLWdyb3Vwcy9zYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy13aXRoLWdyb3Vwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBYSxpQ0FBaUMsRUFBNEQsTUFBTSx3QkFBd0IsQ0FBQztBQUNySyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0s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QUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBb0JySjtJQWxCRzs7OztPQUlHO0lBQ08sZ0JBQWdCLENBQUMsU0FBaUI7UUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sYUFBYSxDQUFDLEVBQVU7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7K0dBaEhRLDZDQUE2QzttR0FBN0MsNkNBQTZDLDBKQ3RCMUQsNm5EQWtEQSx1Q0QvQmMsU0FBUyw4Q0FBRSxJQUFJLDZGQUFFLGdEQUFnRCwySUFBRSxTQUFTLG9JQUFFLG1DQUFtQyw0R0FBRSxhQUFhOzs0RkFHakksNkNBQTZDO2tCQVB6RCxTQUFTO2lDQUNNLElBQUksWUFDTiwyQ0FBMkMsV0FFNUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGdEQUFnRCxFQUFFLFNBQVMsRUFBRSxtQ0FBbUMsRUFBRSxhQUFhLENBQUMsbUJBQzFILHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBvdXRwdXQsIE91dHB1dEVtaXR0ZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgU2NDb252ZXJ0ZXJzU2VydmljZSwgU2NGYXFJdGVtLCBTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1NlcnZpY2UsIFNjSUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1BhZ2luYXRpb25QYXJhbXMsIFNjSVBhZ2luYXRlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUVUlfV0lORE9XX1NJWkUsIHR1aUlzRmFsc3ksIHR1aUlzUHJlc2VudCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpUGFnaW5hdGlvbiB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zQ29tcG9uZW50LCBTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc0dyb3VwU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBTQ19QQUdFX1NJWkVfT1BUSU9OUyB9IGZyb20gJy4uL2ZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zL3NjLXBhZ2Utc2l6ZS1vcHRpb25zJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YfQsNGB0YLQviDQt9Cw0LTQsNCy0LDQtdC80YvRhSDQstC+0L/RgNC+0YHQvtCyINGBINCy0L7Qt9C80L7QttC90L7RgdGC0YzRjiDQstGL0LHQvtGA0LAg0LPRgNGD0L/Qv9GLINCy0L7Qv9GA0L7RgdC+0LIuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucy13aXRoLWdyb3VwcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLXdpdGgtZ3JvdXBzLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBOZ0lmLCBTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc0dyb3VwU2VsZWN0b3JDb21wb25lbnQsIFR1aUJ1dHRvbiwgU2NGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNDb21wb25lbnQsIFR1aVBhZ2luYXRpb25dLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1dpdGhHcm91cHNDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8gRW1haWwg0LTQu9GPINGB0LLRj9C30Lgg0L/QviDQstC+0L/RgNC+0YHQsNC8INGA0LXQutC70LDQvNCw0YbQuNC5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNTZXJ2aWNlOiBTY0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1NlcnZpY2UgPSBpbmplY3QoU2NGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQutC+0L3QstC10YDRgtCw0YbQuNC4INC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnRlcnNTZXJ2aWNlOiBTY0NvbnZlcnRlcnNTZXJ2aWNlID0gaW5qZWN0KFNjQ29udmVydGVyc1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC00LXQutGBINC/0LXRgNCy0L7QuSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlyc3RQYWdlSW5kZXg6IG51bWJlciA9IDE7XG5cbiAgICAvKipcbiAgICAgKiDQmtC+0LvQuNGH0LXRgdGC0LLQviDQt9Cw0L/QuNGB0LXQuSDQvdCwINGB0YLRgNCw0L3QuNGG0LUg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IGluamVjdChTQ19QQUdFX1NJWkVfT1BUSU9OUyk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgQmVoYXZpb3JTdWJqZWN0fSDQuNC30LzQtdC90LXQvdC40Y8g0LrQvtC70LjRh9C10YHRgtCy0LAg0LfQsNC/0LjRgdC10Lkg0L3QsCDRgdGC0YDQsNC90LjRhtC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVyUGFnZSQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KHRoaXMucGFnZVNpemVPcHRpb25zWzBdKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBCZWhhdmlvclN1YmplY3R9INC40LfQvNC10L3QtdC90LjRjyDQvdC+0LzQtdGA0LAg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2UkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPih0aGlzLmZpcnN0UGFnZUluZGV4KTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBCZWhhdmlvclN1YmplY3R9INC40LfQvNC10L3QtdC90LjRjyDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNCwINCz0YDRg9C/0L/Riy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ3JvdXBJZCQ6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0LjQs9C90LDQuyDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCX0LDQtNCw0YLRjCDQstC+0L/RgNC+0YFcIi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xpY2tTZW5kUXVlc3Rpb246IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQtNCw0L3QvdGL0YUg0YHQv9C40YHQutCwINC30LDQutCw0LfQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdCQ6IE9ic2VydmFibGU8U2NJUGFnaW5hdGU8U2NGYXFJdGVtPiB8IG51bGw+ID0gY29tYmluZUxhdGVzdCh7XG4gICAgICAgIHBhZ2U6IHRoaXMucGFnZSQsXG4gICAgICAgIHBlclBhZ2U6IHRoaXMucGVyUGFnZSQsXG4gICAgICAgIGdyb3VwOiB0aGlzLmdyb3VwSWQkLFxuICAgICAgICBwYWdpbmF0ZTogb2YodHJ1ZSksXG4gICAgfSkucGlwZShcbiAgICAgICAgLy8g0J3Rg9C70LXQstC+0LkgZGVib3VuY2VUaW1lINC00LvRjyDRgdC70YPRh9Cw0Y8sINC60L7Qs9C00LAg0LzQtdC90Y/RjtGC0YHRjyDQvdCw0L/RgNCw0LLQu9C10L3QuNC1INC4INC/0L7Qu9C1INGB0L7RgNGC0LjRgNC+0LLQutC4INC+0LTQvdC+0LLRgNC10LzQtdC90L3Qvi5cbiAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlOiBTY0lGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNQYWdpbmF0aW9uUGFyYW1zKSA9PlxuICAgICAgICAgICAgdGhpcy5mcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyQodGhpcy5jb252ZXJ0ZXJzU2VydmljZS5yZW1vdmVOdWxsPFNjSUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1BhZ2luYXRpb25QYXJhbXM+KHZhbHVlKSlcbiAgICAgICAgICAgICAgICAucGlwZShzdGFydFdpdGgobnVsbCkpXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDQvtCx0YnQtdCz0L4g0LrQvtC70LjRh9C10YHRgtCy0LAg0YHRgtGA0LDQvdC40YYg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwYWdlQ291bnQkOiBPYnNlcnZhYmxlPG51bWJlcj4gPSB0aGlzLnJlcXVlc3QkLnBpcGUoXG4gICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICBtYXAoKHsgbWV0YSB9KSA9PiBtZXRhLmxhc3RQYWdlKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINC90L7QvNC10YDQsCDRgdGC0YDQsNC90LjRhtGLINC/0LDQs9C40L3QsNGG0LjQuCDQuNC3INC00LDQvdC90YvRhSDQv9Cw0LPQuNC90LDRhtC40Lgg0LfQsNC/0YDQvtGB0LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGN1cnJlbnRQYWdlJDogT2JzZXJ2YWJsZTxudW1iZXI+ID0gdGhpcy5yZXF1ZXN0JC5waXBlKFxuICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgbWFwKCh7IG1ldGEgfSkgPT4gbWV0YS5jdXJyZW50UGFnZSAtIDEpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0xvYWRpbmcgPSB0b1NpZ25hbCh0aGlzLnJlcXVlc3QkLnBpcGUobWFwKHR1aUlzRmFsc3kpKSwgeyBpbml0aWFsVmFsdWU6IGZhbHNlIH0pO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC/0LjRgdC60LAg0LfQsNC60LDQt9C+0LIg0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPFNjRmFxSXRlbVtdIHwgbnVsbD4gPSB0aGlzLnJlcXVlc3QkLnBpcGUoXG4gICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICBtYXAoKGRhdGEpID0+IGRhdGEuZGF0YSksXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGE0L7RgNC80LDRgtCwINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0YTQuNC70YzRgtGA0LAg0LPRgNGD0L/Qvy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlld01vZGUkOiBPYnNlcnZhYmxlPCdsaXN0JyB8ICdzZWxlY3QnPiA9IGluamVjdChUVUlfV0lORE9XX1NJWkUpLnBpcGUobWFwKChyZWN0KSA9PiAocmVjdC53aWR0aCA+IDc2OCA/ICdsaXN0JyA6ICdzZWxlY3QnKSkpO1xuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LTQsNC90L3Ri9C1INC/0LDQs9C40L3QsNGG0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYWdlSW5kZXgg0JjQvdC00LXQutGBINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHBhZ2luYXRpb25DaGFuZ2UocGFnZUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdlJC5uZXh0KHBhZ2VJbmRleCArIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINCz0YDRg9C/0L/Riy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQs9GA0YPQv9C/0YsuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdyb3VwSWRDaGFuZ2UoaWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmdyb3VwSWQkLm5leHQoaWQpO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UoMCk7XG4gICAgfVxufVxuIiwiQGxldCBpdGVtcyA9IGRhdGEkIHwgYXN5bmM7XG5AbGV0IHBhZ2VDb3VudCA9IHBhZ2VDb3VudCQgfCBhc3luYztcbkBsZXQgdmlld01vZGUgPSB2aWV3TW9kZSQgfCBhc3luYztcblxuPGRpdlxuICAgICpuZ0lmPVwidmlld01vZGVcIlxuICAgIGNsYXNzPVwiZmxleCBnYXAtNlwiXG4gICAgW2NsYXNzLmZsZXgtY29sXT1cInZpZXdNb2RlID09PSAnc2VsZWN0J1wiXG4+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTdcIj5cbiAgICAgICAgPHNjLWZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zLWdyb3VwLXNlbGVjdG9yXG4gICAgICAgICAgICAoZ3JvdXBJZENoYW5nZSk9XCJncm91cElkQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW3ZpZXdNb2RlXT1cInZpZXdNb2RlXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2hyaW5rLTBcIlxuICAgICAgICAgICAgW2NsYXNzLnctNjRdPVwidmlld01vZGUgIT09ICdzZWxlY3QnXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInZpZXdNb2RlID09PSAnbGlzdCdcIlxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuY2lyY2xlLWhlbHBcIlxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tTZW5kUXVlc3Rpb24uZW1pdCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZi1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQl9Cw0LTQsNGC0Ywg0LLQvtC/0YDQvtGBXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdyb3dcIj5cbiAgICAgICAgQGlmIChpdGVtcyAmJiBpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxzYy1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9uc1xuICAgICAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dMb2FkaW5nXT1cImlzTG9hZGluZygpXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDx0dWktcGFnaW5hdGlvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwicGFnZUNvdW50ICYmIHBhZ2VDb3VudCA+IDFcIlxuICAgICAgICAgICAgICAgIFtsZW5ndGhdPVwicGFnZUNvdW50XCJcbiAgICAgICAgICAgICAgICBbaW5kZXhdPVwiKGN1cnJlbnRQYWdlJCB8IGFzeW5jKSA/PyAwXCJcbiAgICAgICAgICAgICAgICAoaW5kZXhDaGFuZ2UpPVwicGFnaW5hdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTQgIWp1c3RpZnktaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWJvZHktcy1ib2xkXCI+0KHQv9C40YHQvtC6INCy0L7Qv9GA0L7RgdC+0LIg0L/Rg9GB0YI8L3A+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,4 +1,5 @@
1
1
  export * from './sc-verification-code-timeout';
2
+ export * from './sc-category.providers';
2
3
  export * from './sc-allow-select-terminated';
3
4
  export * from './sc-help-notification-limit';
4
5
  export * from './sc-help-notification-close';
@@ -11,4 +12,4 @@ export * from './sc-date-value-transformer';
11
12
  export * from './sc-notify-when-in-stock-required-fields';
12
13
  export * from './sc-banner-duration';
13
14
  export * from './sc-debounce-time-default';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvcHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjLXZlcmlmaWNhdGlvbi1jb2RlLXRpbWVvdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1hbGxvdy1zZWxlY3QtdGVybWluYXRlZCc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWhlbHAtbm90aWZpY2F0aW9uLWxpbWl0JztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaGVscC1ub3RpZmljYXRpb24tY2xvc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1tYXgtZmlsZXMtaW4tZm9ybS1pbnB1dCc7XG5leHBvcnQgKiBmcm9tICcuL3NjLXBhZ2Utc2l6ZS1vcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtY291bnRyeS1pZHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy11c2VyLXByb3ZpZGVycyc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWRhdGUtZm9ybWF0dGVyJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtZGF0ZS12YWx1ZS10cmFuc2Zvcm1lcic7XG5leHBvcnQgKiBmcm9tICcuL3NjLW5vdGlmeS13aGVuLWluLXN0b2NrLXJlcXVpcmVkLWZpZWxkcyc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWJhbm5lci1kdXJhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3NjLWRlYm91bmNlLXRpbWUtZGVmYXVsdCc7XG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvcHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2MtdmVyaWZpY2F0aW9uLWNvZGUtdGltZW91dCc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWNhdGVnb3J5LnByb3ZpZGVycyc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWFsbG93LXNlbGVjdC10ZXJtaW5hdGVkJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaGVscC1ub3RpZmljYXRpb24tbGltaXQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1oZWxwLW5vdGlmaWNhdGlvbi1jbG9zZSc7XG5leHBvcnQgKiBmcm9tICcuL3NjLW1heC1maWxlcy1pbi1mb3JtLWlucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vc2MtcGFnZS1zaXplLW9wdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1jb3VudHJ5LWlkcyc7XG5leHBvcnQgKiBmcm9tICcuL3NjLXVzZXItcHJvdmlkZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtZGF0ZS1mb3JtYXR0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1kYXRlLXZhbHVlLXRyYW5zZm9ybWVyJztcbmV4cG9ydCAqIGZyb20gJy4vc2Mtbm90aWZ5LXdoZW4taW4tc3RvY2stcmVxdWlyZWQtZmllbGRzJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtYmFubmVyLWR1cmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtZGVib3VuY2UtdGltZS1kZWZhdWx0JztcbiJdfQ==