@snabcentr/client-core 2.62.0 → 2.62.2

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.
@@ -1,3 +1,7 @@
1
1
  export * from './sc-i-configurator-base';
2
+ export * from './sc-i-configurator-calculate-result';
3
+ export * from './sc-i-configurator-calculate-sheet';
2
4
  export * from './sc-i-configurator-search-product-base';
3
5
  export * from './sc-i-configurator-settings-base';
6
+ export * from './sc-i-sandwich-calculate';
7
+ export * from './sc-i-sandwich-calculate-item';
@@ -0,0 +1,18 @@
1
+ import { ScIConfiguratorCalculateSheet } from './sc-i-configurator-calculate-sheet';
2
+ /**
3
+ * Результат расчета конфигуратора распила сэндвич-панелей.
4
+ */
5
+ export interface ScIConfiguratorCalculateResult {
6
+ /**
7
+ * Идентификатор расчета.
8
+ */
9
+ id: string;
10
+ /**
11
+ * Количество листов.
12
+ */
13
+ quantity: number;
14
+ /**
15
+ * Список данных о листах.
16
+ */
17
+ sheets: ScIConfiguratorCalculateSheet[];
18
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Данные о листе результата расчета конфигуратора.
3
+ */
4
+ export interface ScIConfiguratorCalculateSheet {
5
+ /**
6
+ * Процент заполнения листа.
7
+ */
8
+ filledPercent: number;
9
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Данные изделия для расчета конфигуратора распила сэндвич-панелей.
3
+ */
4
+ export interface ISandwichCalculateItem {
5
+ /**
6
+ * Ширина изделия, мм.
7
+ */
8
+ width: number;
9
+ /**
10
+ * Длина изделия, мм.
11
+ */
12
+ length: number;
13
+ /**
14
+ * Количество изделий.
15
+ */
16
+ quantity: number;
17
+ }
@@ -0,0 +1,14 @@
1
+ import { ISandwichCalculateItem } from './sc-i-sandwich-calculate-item';
2
+ /**
3
+ * Параметры запроса расчета конфигуратора распила сэндвич-панелей.
4
+ */
5
+ export interface ISandwichCalculate {
6
+ /**
7
+ * Идентификатор продукта.
8
+ */
9
+ productId: number;
10
+ /**
11
+ * Список параметров изделий.
12
+ */
13
+ items: ISandwichCalculateItem[];
14
+ }
@@ -1,29 +1,36 @@
1
- import { HttpClient, HttpParams } from '@angular/common/http';
1
+ import { HttpParams } from '@angular/common/http';
2
2
  import { Observable } from 'rxjs';
3
- import { ScCatalogService, ScProduct } from '../../catalog';
4
- import { ScIUrls } from '../../config';
5
- import { ScIConfiguratorBase, ScIConfiguratorSettingsBase } from '../dto';
6
- import { ScTypeByKey } from '../types';
3
+ import { ScProduct } from '../../catalog';
4
+ import { ISandwichCalculate, ScIConfiguratorCalculateResult, ScIConfiguratorSettingsBase } from '../dto';
7
5
  import * as i0 from "@angular/core";
8
6
  /**
9
7
  * Сервис для работы с конфигуратором.
10
8
  */
11
9
  export declare class ScConfiguratorService {
10
+ /**
11
+ * Список компонентов конфигураторов по их названию.
12
+ */
12
13
  private readonly configuratorComponents;
14
+ /**
15
+ * Список моделей настроек конфигураторов по их названию.
16
+ */
13
17
  private readonly configuratorSettings;
18
+ /**
19
+ * HTTP-клиент.
20
+ */
14
21
  private readonly http;
22
+ /**
23
+ * Список ссылок на разделы backend'a.
24
+ */
15
25
  private readonly urls;
26
+ /**
27
+ * Сервис для работы с каталогом.
28
+ */
16
29
  private readonly catalogService;
17
30
  /**
18
- * Инициализирует экземпляр класса {@link ScConfiguratorService}.
19
- *
20
- * @param configuratorComponents Список компонентов конфигураторов по их названию.
21
- * @param configuratorSettings Список моделей настроек конфигураторов по их названию.
22
- * @param http HTTP-клиент.
23
- * @param urls Список ссылок на разделы backend'a.
24
- * @param catalogService Сервис для работы с каталогом.
31
+ * Сервис конвертации данных.
25
32
  */
26
- constructor(configuratorComponents: ScTypeByKey<ScIConfiguratorBase>, configuratorSettings: ScTypeByKey<ScIConfiguratorSettingsBase> | undefined, http: HttpClient, urls: ScIUrls, catalogService: ScCatalogService);
33
+ private readonly convertersService;
27
34
  /**
28
35
  * Возвращает признак того, что конфигуратор с указанным названием существует и реализован.
29
36
  *
@@ -61,6 +68,14 @@ export declare class ScConfiguratorService {
61
68
  * @param templateId Идентификатор записи шаблона.
62
69
  */
63
70
  removeTemplate$(categoryId: number, editor: string, templateId: number): Observable<undefined>;
64
- static ɵfac: i0.ɵɵFactoryDeclaration<ScConfiguratorService, [null, { optional: true; }, null, null, null]>;
71
+ /**
72
+ * Выполняет расчет, через указанный конфигуратор с переданными параметрами.
73
+ *
74
+ * @param categoryIdOrSlug Идентификатор или slug категории товаров.
75
+ * @param editor Название конфигуратора.
76
+ * @param params Параметры запроса расчета конфигуратора.
77
+ */
78
+ calculate$(categoryIdOrSlug: string | number, editor: string, params: ISandwichCalculate): Observable<ScIConfiguratorCalculateResult>;
79
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScConfiguratorService, never>;
65
80
  static ɵprov: i0.ɵɵInjectableDeclaration<ScConfiguratorService>;
66
81
  }
@@ -1,4 +1,8 @@
1
1
  export * from './sc-i-configurator-base';
2
+ export * from './sc-i-configurator-calculate-result';
3
+ export * from './sc-i-configurator-calculate-sheet';
2
4
  export * from './sc-i-configurator-search-product-base';
3
5
  export * from './sc-i-configurator-settings-base';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbmZpZ3VyYXRvci9kdG8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjLWktY29uZmlndXJhdG9yLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLWNvbmZpZ3VyYXRvci1zZWFyY2gtcHJvZHVjdC1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaS1jb25maWd1cmF0b3Itc2V0dGluZ3MtYmFzZSc7XG4iXX0=
6
+ export * from './sc-i-sandwich-calculate';
7
+ export * from './sc-i-sandwich-calculate-item';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbmZpZ3VyYXRvci9kdG8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2MtaS1jb25maWd1cmF0b3ItYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWktY29uZmlndXJhdG9yLWNhbGN1bGF0ZS1yZXN1bHQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLWNvbmZpZ3VyYXRvci1jYWxjdWxhdGUtc2hlZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLWNvbmZpZ3VyYXRvci1zZWFyY2gtcHJvZHVjdC1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaS1jb25maWd1cmF0b3Itc2V0dGluZ3MtYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWktc2FuZHdpY2gtY2FsY3VsYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaS1zYW5kd2ljaC1jYWxjdWxhdGUtaXRlbSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1jb25maWd1cmF0b3ItY2FsY3VsYXRlLXJlc3VsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29uZmlndXJhdG9yL2R0by9zYy1pLWNvbmZpZ3VyYXRvci1jYWxjdWxhdGUtcmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY0lDb25maWd1cmF0b3JDYWxjdWxhdGVTaGVldCB9IGZyb20gJy4vc2MtaS1jb25maWd1cmF0b3ItY2FsY3VsYXRlLXNoZWV0JztcblxuLyoqXG4gKiDQoNC10LfRg9C70YzRgtCw0YIg0YDQsNGB0YfQtdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAg0YDQsNGB0L/QuNC70LAg0YHRjdC90LTQstC40Yct0L/QsNC90LXQu9C10LkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NJQ29uZmlndXJhdG9yQ2FsY3VsYXRlUmVzdWx0IHtcbiAgICAvKipcbiAgICAgKiDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgNCw0YHRh9C10YLQsC5cbiAgICAgKi9cbiAgICBpZDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog0JrQvtC70LjRh9C10YHRgtCy0L4g0LvQuNGB0YLQvtCyLlxuICAgICAqL1xuICAgIHF1YW50aXR5OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LTQsNC90L3Ri9GFINC+INC70LjRgdGC0LDRhS5cbiAgICAgKi9cbiAgICBzaGVldHM6IFNjSUNvbmZpZ3VyYXRvckNhbGN1bGF0ZVNoZWV0W107XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1jb25maWd1cmF0b3ItY2FsY3VsYXRlLXNoZWV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb25maWd1cmF0b3IvZHRvL3NjLWktY29uZmlndXJhdG9yLWNhbGN1bGF0ZS1zaGVldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDQlNCw0L3QvdGL0LUg0L4g0LvQuNGB0YLQtSDRgNC10LfRg9C70YzRgtCw0YLQsCDRgNCw0YHRh9C10YLQsCDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY0lDb25maWd1cmF0b3JDYWxjdWxhdGVTaGVldCB7XG4gICAgLyoqXG4gICAgICog0J/RgNC+0YbQtdC90YIg0LfQsNC/0L7Qu9C90LXQvdC40Y8g0LvQuNGB0YLQsC5cbiAgICAgKi9cbiAgICBmaWxsZWRQZXJjZW50OiBudW1iZXI7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1zYW5kd2ljaC1jYWxjdWxhdGUtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29uZmlndXJhdG9yL2R0by9zYy1pLXNhbmR3aWNoLWNhbGN1bGF0ZS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqINCU0LDQvdC90YvQtSDQuNC30LTQtdC70LjRjyDQtNC70Y8g0YDQsNGB0YfQtdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAg0YDQsNGB0L/QuNC70LAg0YHRjdC90LTQstC40Yct0L/QsNC90LXQu9C10LkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNhbmR3aWNoQ2FsY3VsYXRlSXRlbSB7XG4gICAgLyoqXG4gICAgICog0KjQuNGA0LjQvdCwINC40LfQtNC10LvQuNGPLCDQvNC8LlxuICAgICAqL1xuICAgIHdpZHRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQlNC70LjQvdCwINC40LfQtNC10LvQuNGPLCDQvNC8LlxuICAgICAqL1xuICAgIGxlbmd0aDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICog0JrQvtC70LjRh9C10YHRgtCy0L4g0LjQt9C00LXQu9C40LkuXG4gICAgICovXG4gICAgcXVhbnRpdHk6IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1zYW5kd2ljaC1jYWxjdWxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbmZpZ3VyYXRvci9kdG8vc2MtaS1zYW5kd2ljaC1jYWxjdWxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElTYW5kd2ljaENhbGN1bGF0ZUl0ZW0gfSBmcm9tICcuL3NjLWktc2FuZHdpY2gtY2FsY3VsYXRlLWl0ZW0nO1xuXG4vKipcbiAqINCf0LDRgNCw0LzQtdGC0YDRiyDQt9Cw0L/RgNC+0YHQsCDRgNCw0YHRh9C10YLQsCDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsCDRgNCw0YHQv9C40LvQsCDRgdGN0L3QtNCy0LjRhy3Qv9Cw0L3QtdC70LXQuS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2FuZHdpY2hDYWxjdWxhdGUge1xuICAgIC8qKlxuICAgICAqINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC/0YDQvtC00YPQutGC0LAuXG4gICAgICovXG4gICAgcHJvZHVjdElkOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0L/QsNGA0LDQvNC10YLRgNC+0LIg0LjQt9C00LXQu9C40LkuXG4gICAgICovXG4gICAgaXRlbXM6IElTYW5kd2ljaENhbGN1bGF0ZUl0ZW1bXTtcbn1cbiJdfQ==
@@ -1,29 +1,39 @@
1
- import { Inject, Injectable, Optional } from '@angular/core';
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { inject, Injectable } from '@angular/core';
2
3
  import { map, of, tap } from 'rxjs';
3
- import { ScProduct } from '../../catalog';
4
+ import { ScCatalogService, ScProduct } from '../../catalog';
5
+ import { ScConvertersService } from '../../converters/services/sc-converters.service';
4
6
  import { SC_CONFIGURATOR_COMPONENTS, SC_CONFIGURATOR_SETTINGS, SC_URLS } from '../../tokens';
5
7
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common/http";
7
- import * as i2 from "../../catalog";
8
8
  /**
9
9
  * Сервис для работы с конфигуратором.
10
10
  */
11
11
  export class ScConfiguratorService {
12
- /**
13
- * Инициализирует экземпляр класса {@link ScConfiguratorService}.
14
- *
15
- * @param configuratorComponents Список компонентов конфигураторов по их названию.
16
- * @param configuratorSettings Список моделей настроек конфигураторов по их названию.
17
- * @param http HTTP-клиент.
18
- * @param urls Список ссылок на разделы backend'a.
19
- * @param catalogService Сервис для работы с каталогом.
20
- */
21
- constructor(configuratorComponents, configuratorSettings, http, urls, catalogService) {
22
- this.configuratorComponents = configuratorComponents;
23
- this.configuratorSettings = configuratorSettings;
24
- this.http = http;
25
- this.urls = urls;
26
- this.catalogService = catalogService;
12
+ constructor() {
13
+ /**
14
+ * Список компонентов конфигураторов по их названию.
15
+ */
16
+ this.configuratorComponents = inject(SC_CONFIGURATOR_COMPONENTS);
17
+ /**
18
+ * Список моделей настроек конфигураторов по их названию.
19
+ */
20
+ this.configuratorSettings = inject(SC_CONFIGURATOR_SETTINGS, { optional: true }) ?? undefined;
21
+ /**
22
+ * HTTP-клиент.
23
+ */
24
+ this.http = inject(HttpClient);
25
+ /**
26
+ * Список ссылок на разделы backend'a.
27
+ */
28
+ this.urls = inject(SC_URLS);
29
+ /**
30
+ * Сервис для работы с каталогом.
31
+ */
32
+ this.catalogService = inject(ScCatalogService);
33
+ /**
34
+ * Сервис конвертации данных.
35
+ */
36
+ this.convertersService = inject(ScConvertersService);
27
37
  }
28
38
  /**
29
39
  * Возвращает признак того, что конфигуратор с указанным названием существует и реализован.
@@ -85,7 +95,19 @@ export class ScConfiguratorService {
85
95
  removeTemplate$(categoryId, editor, templateId) {
86
96
  return this.http.delete(`${this.urls.apiUrl}/catalog/categories/${categoryId}/configurators/${editor}/template/${templateId}`);
87
97
  }
88
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, deps: [{ token: SC_CONFIGURATOR_COMPONENTS }, { token: SC_CONFIGURATOR_SETTINGS, optional: true }, { token: i1.HttpClient }, { token: SC_URLS }, { token: i2.ScCatalogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
98
+ /**
99
+ * Выполняет расчет, через указанный конфигуратор с переданными параметрами.
100
+ *
101
+ * @param categoryIdOrSlug Идентификатор или slug категории товаров.
102
+ * @param editor Название конфигуратора.
103
+ * @param params Параметры запроса расчета конфигуратора.
104
+ */
105
+ calculate$(categoryIdOrSlug, editor, params) {
106
+ return this.http.get(`${this.urls.apiUrl}/catalog/categories/${categoryIdOrSlug}/configurators/${editor}/calculate`, {
107
+ params: this.convertersService.toHttpParams({ ...params }, { nonNullable: true }),
108
+ });
109
+ }
110
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
89
111
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, providedIn: 'root' }); }
90
112
  }
91
113
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, decorators: [{
@@ -93,16 +115,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
93
115
  args: [{
94
116
  providedIn: 'root',
95
117
  }]
96
- }], ctorParameters: () => [{ type: undefined, decorators: [{
97
- type: Inject,
98
- args: [SC_CONFIGURATOR_COMPONENTS]
99
- }] }, { type: undefined, decorators: [{
100
- type: Optional
101
- }, {
102
- type: Inject,
103
- args: [SC_CONFIGURATOR_SETTINGS]
104
- }] }, { type: i1.HttpClient }, { type: undefined, decorators: [{
105
- type: Inject,
106
- args: [SC_URLS]
107
- }] }, { type: i2.ScCatalogService }] });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29uZmlndXJhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbmZpZ3VyYXRvci9zZXJ2aWNlcy9zYy1jb25maWd1cmF0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBbUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFJN0Y7O0dBRUc7QUFJSCxNQUFNLE9BQU8scUJBQXFCO0lBQzlCOzs7Ozs7OztPQVFHO0lBQ0gsWUFDeUQsc0JBQXdELEVBQzlDLG9CQUEwRSxFQUN4SCxJQUFnQixFQUNDLElBQWEsRUFDOUIsY0FBZ0M7UUFKSSwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQWtDO1FBQzlDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0Q7UUFDeEgsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNDLFNBQUksR0FBSixJQUFJLENBQVM7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWtCO0lBQ2xELENBQUM7SUFFSjs7OztPQUlHO0lBQ0ksb0JBQW9CLENBQUMsSUFBWTtRQUNwQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFlBQVksQ0FBQyxnQkFBaUMsRUFBRSxNQUFjO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUxRSxJQUFJLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE4QixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSx1QkFBdUIsZ0JBQWdCLGtCQUFrQixNQUFNLFdBQVcsQ0FBQyxDQUFDLElBQUk7UUFDakosNERBQTREO1FBQzVELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQ2xKLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2IsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDWCxRQUFRLENBQUMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDO1lBQzdDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVcsQ0FBQyxnQkFBaUMsRUFBRSxNQUFjLEVBQUUsTUFBa0I7UUFDcEYsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sdUJBQXVCLGdCQUFnQixrQkFBa0IsTUFBTSxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDcEksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCw2RUFBNkU7SUFDdEUsYUFBYSxDQUFJLFVBQWtCLEVBQUUsTUFBYyxFQUFFLFdBQWM7UUFDdEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSx1QkFBdUIsVUFBVSxrQkFBa0IsTUFBTSxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0ksQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGVBQWUsQ0FBQyxVQUFrQixFQUFFLE1BQWMsRUFBRSxVQUFrQjtRQUN6RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLHVCQUF1QixVQUFVLGtCQUFrQixNQUFNLGFBQWEsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM5SSxDQUFDOytHQXJGUSxxQkFBcUIsa0JBV2xCLDBCQUEwQixhQUNkLHdCQUF3Qix1REFFcEMsT0FBTzttSEFkVixxQkFBcUIsY0FGbEIsTUFBTTs7NEZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBWVEsTUFBTTsyQkFBQywwQkFBMEI7OzBCQUNqQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHdCQUF3Qjs7MEJBRTNDLE1BQU07MkJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIG9mLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NDYXRhbG9nU2VydmljZSwgU2NJUHJvZHVjdERUTywgU2NQcm9kdWN0IH0gZnJvbSAnLi4vLi4vY2F0YWxvZyc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IFNDX0NPTkZJR1VSQVRPUl9DT01QT05FTlRTLCBTQ19DT05GSUdVUkFUT1JfU0VUVElOR1MsIFNDX1VSTFMgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgU2NJQ29uZmlndXJhdG9yQmFzZSwgU2NJQ29uZmlndXJhdG9yU2V0dGluZ3NCYXNlIH0gZnJvbSAnLi4vZHRvJztcbmltcG9ydCB7IFNjVHlwZUJ5S2V5IH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNC+0LwuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ29uZmlndXJhdG9yU2VydmljZSB7XG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0NvbmZpZ3VyYXRvclNlcnZpY2V9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbmZpZ3VyYXRvckNvbXBvbmVudHMg0KHQv9C40YHQvtC6INC60L7QvNC/0L7QvdC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0L7QsiDQv9C+INC40YUg0L3QsNC30LLQsNC90LjRji5cbiAgICAgKiBAcGFyYW0gY29uZmlndXJhdG9yU2V0dGluZ3Mg0KHQv9C40YHQvtC6INC80L7QtNC10LvQtdC5INC90LDRgdGC0YDQvtC10Log0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0L7QsiDQv9C+INC40YUg0L3QsNC30LLQsNC90LjRji5cbiAgICAgKiBAcGFyYW0gaHR0cCBIVFRQLdC60LvQuNC10L3Rgi5cbiAgICAgKiBAcGFyYW0gdXJscyDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC90LAg0YDQsNC30LTQtdC70YsgYmFja2VuZCdhLlxuICAgICAqIEBwYXJhbSBjYXRhbG9nU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFNDX0NPTkZJR1VSQVRPUl9DT01QT05FTlRTKSBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRvckNvbXBvbmVudHM6IFNjVHlwZUJ5S2V5PFNjSUNvbmZpZ3VyYXRvckJhc2U+LFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFNDX0NPTkZJR1VSQVRPUl9TRVRUSU5HUykgcHJpdmF0ZSByZWFkb25seSBjb25maWd1cmF0b3JTZXR0aW5nczogU2NUeXBlQnlLZXk8U2NJQ29uZmlndXJhdG9yU2V0dGluZ3NCYXNlPiB8IHVuZGVmaW5lZCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBASW5qZWN0KFNDX1VSTFMpIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nU2VydmljZTogU2NDYXRhbG9nU2VydmljZVxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDRh9GC0L4g0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGAINGBINGD0LrQsNC30LDQvdC90YvQvCDQvdCw0LfQstCw0L3QuNC10Lwg0YHRg9GJ0LXRgdGC0LLRg9C10YIg0Lgg0YDQtdCw0LvQuNC30L7QstCw0L0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSDQndCw0LfQstCw0L3QuNC1INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc0NvbmZpZ3VyYXRvckV4aXN0cyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uZmlndXJhdG9yQ29tcG9uZW50cykuaW5jbHVkZXMobmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L3QsNGB0YLRgNC+0LnQutC4INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwINC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC60LDRgtC10LPQvtGA0LjQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKiBAcGFyYW0gZWRpdG9yINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldFNldHRpbmdzJChjYXRlZ29yeUlkT3JTbHVnOiBzdHJpbmcgfCBudW1iZXIsIGVkaXRvcjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gdGhpcy5jYXRhbG9nU2VydmljZS5nZXRDYXRlZ29yeUZyb21NYXAoY2F0ZWdvcnlJZE9yU2x1Zyk7XG5cbiAgICAgICAgaWYgKGNhdGVnb3J5Py5jb25maWd1cmF0b3JTZXR0aW5ncykge1xuICAgICAgICAgICAgcmV0dXJuIG9mKGNhdGVnb3J5LmNvbmZpZ3VyYXRvclNldHRpbmdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFNjSUNvbmZpZ3VyYXRvclNldHRpbmdzQmFzZT4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9jYXRlZ29yaWVzLyR7Y2F0ZWdvcnlJZE9yU2x1Z30vY29uZmlndXJhdG9ycy8ke2VkaXRvcn0vc2V0dGluZ3NgKS5waXBlKFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICBtYXAoKHNldHRpbmdzKSA9PiAodGhpcy5jb25maWd1cmF0b3JTZXR0aW5ncyAmJiBlZGl0b3IgaW4gdGhpcy5jb25maWd1cmF0b3JTZXR0aW5ncyA/IG5ldyB0aGlzLmNvbmZpZ3VyYXRvclNldHRpbmdzW2VkaXRvcl0oc2V0dGluZ3MpIDogc2V0dGluZ3MpKSxcbiAgICAgICAgICAgIHRhcCgoc2V0dGluZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkuY29uZmlndXJhdG9yU2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC40L3RhNC+0YDQvNCw0YbQuNGOINC+INC/0YDQvtC00YPQutGC0LUsINC/0L4g0YPQutCw0LfQsNC90L3Ri9C8INC/0LDRgNCw0LzQtdGC0YDQsNC8INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0LrQsNGC0LXQs9C+0YDQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqIEBwYXJhbSBlZGl0b3Ig0J3QsNC30LLQsNC90LjQtSDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAgICAgKiBAcGFyYW0gcGFyYW1zINCf0LDRgNCw0LzQtdGC0YDRiyDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsCDQtNC70Y8g0L/QvtC40YHQutCwINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJvZHVjdCQoY2F0ZWdvcnlJZE9yU2x1Zzogc3RyaW5nIHwgbnVtYmVyLCBlZGl0b3I6IHN0cmluZywgcGFyYW1zOiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxTY1Byb2R1Y3Q+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxTY0lQcm9kdWN0RFRPPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL2NhdGVnb3JpZXMvJHtjYXRlZ29yeUlkT3JTbHVnfS9jb25maWd1cmF0b3JzLyR7ZWRpdG9yfS9wcm9kdWN0YCwgeyBwYXJhbXM6IHBhcmFtcyB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKChwcm9kdWN0RFRPKSA9PiBuZXcgU2NQcm9kdWN0KHByb2R1Y3REVE8pKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40Lkg0YjQsNCx0LvQvtC9INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC/0LjRgdC4INC60LDRgtC10LPQvtGA0LjQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKiBAcGFyYW0gZWRpdG9yINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICogQHBhcmFtIG5ld1RlbXBsYXRlINCf0LDRgNCw0LzQtdGC0YDRiyDRiNCw0LHQu9C+0L3QsCDQtNC70Y8g0YHQvtC30LTQsNC90LjRjy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVyc1xuICAgIHB1YmxpYyBzYXZlVGVtcGxhdGUkPFQ+KGNhdGVnb3J5SWQ6IG51bWJlciwgZWRpdG9yOiBzdHJpbmcsIG5ld1RlbXBsYXRlOiBUKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHVuZGVmaW5lZD4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9jYXRlZ29yaWVzLyR7Y2F0ZWdvcnlJZH0vY29uZmlndXJhdG9ycy8ke2VkaXRvcn0vdGVtcGxhdGVgLCBuZXdUZW1wbGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40Lkg0YjQsNCx0LvQvtC9INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC/0LjRgdC4INC60LDRgtC10LPQvtGA0LjQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKiBAcGFyYW0gZWRpdG9yINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICogQHBhcmFtIHRlbXBsYXRlSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsNC/0LjRgdC4INGI0LDQsdC70L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVUZW1wbGF0ZSQoY2F0ZWdvcnlJZDogbnVtYmVyLCBlZGl0b3I6IHN0cmluZywgdGVtcGxhdGVJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8dW5kZWZpbmVkPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL2NhdGVnb3JpZXMvJHtjYXRlZ29yeUlkfS9jb25maWd1cmF0b3JzLyR7ZWRpdG9yfS90ZW1wbGF0ZS8ke3RlbXBsYXRlSWR9YCk7XG4gICAgfVxufVxuIl19
118
+ }] });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29uZmlndXJhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbmZpZ3VyYXRvci9zZXJ2aWNlcy9zYy1jb25maWd1cmF0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBSTdGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUhsQztRQUlJOztXQUVHO1FBQ2MsMkJBQXNCLEdBQXFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRS9HOztXQUVHO1FBQ2MseUJBQW9CLEdBQXlELE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUVoSzs7V0FFRztRQUNjLFNBQUksR0FBZSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkQ7O1dBRUc7UUFDYyxTQUFJLEdBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpEOztXQUVHO1FBQ2MsbUJBQWMsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0U7O1dBRUc7UUFDYyxzQkFBaUIsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixD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UCxDQUFDOytHQS9HUSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZsQixNQUFNOzs0RkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBvZiwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjQ2F0YWxvZ1NlcnZpY2UsIFNjSVByb2R1Y3REVE8sIFNjUHJvZHVjdCB9IGZyb20gJy4uLy4uL2NhdGFsb2cnO1xuaW1wb3J0IHsgU2NJVXJscyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBTY0NvbnZlcnRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29udmVydGVycy9zZXJ2aWNlcy9zYy1jb252ZXJ0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU0NfQ09ORklHVVJBVE9SX0NPTVBPTkVOVFMsIFNDX0NPTkZJR1VSQVRPUl9TRVRUSU5HUywgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBJU2FuZHdpY2hDYWxjdWxhdGUsIFNjSUNvbmZpZ3VyYXRvckJhc2UsIFNjSUNvbmZpZ3VyYXRvckNhbGN1bGF0ZVJlc3VsdCwgU2NJQ29uZmlndXJhdG9yU2V0dGluZ3NCYXNlIH0gZnJvbSAnLi4vZHRvJztcbmltcG9ydCB7IFNjVHlwZUJ5S2V5IH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNC+0LwuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ29uZmlndXJhdG9yU2VydmljZSB7XG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INC60L7QvNC/0L7QvdC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0L7QsiDQv9C+INC40YUg0L3QsNC30LLQsNC90LjRji5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRvckNvbXBvbmVudHM6IFNjVHlwZUJ5S2V5PFNjSUNvbmZpZ3VyYXRvckJhc2U+ID0gaW5qZWN0KFNDX0NPTkZJR1VSQVRPUl9DT01QT05FTlRTKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQvNC+0LTQtdC70LXQuSDQvdCw0YHRgtGA0L7QtdC6INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNC+0LIg0L/QviDQuNGFINC90LDQt9Cy0LDQvdC40Y4uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWd1cmF0b3JTZXR0aW5nczogU2NUeXBlQnlLZXk8U2NJQ29uZmlndXJhdG9yU2V0dGluZ3NCYXNlPiB8IHVuZGVmaW5lZCA9IGluamVjdChTQ19DT05GSUdVUkFUT1JfU0VUVElOR1MsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogSFRUUC3QutC70LjQtdC90YIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQvdCwINGA0LDQt9C00LXQu9GLIGJhY2tlbmQnYS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMgPSBpbmplY3QoU0NfVVJMUyk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nU2VydmljZTogU2NDYXRhbG9nU2VydmljZSA9IGluamVjdChTY0NhdGFsb2dTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQutC+0L3QstC10YDRgtCw0YbQuNC4INC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnRlcnNTZXJ2aWNlOiBTY0NvbnZlcnRlcnNTZXJ2aWNlID0gaW5qZWN0KFNjQ29udmVydGVyc1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/RgNC40LfQvdCw0Log0YLQvtCz0L4sINGH0YLQviDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YAg0YEg0YPQutCw0LfQsNC90L3Ri9C8INC90LDQt9Cy0LDQvdC40LXQvCDRgdGD0YnQtdGB0YLQstGD0LXRgiDQuCDRgNC10LDQu9C40LfQvtCy0LDQvS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGlzQ29uZmlndXJhdG9yRXhpc3RzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5jb25maWd1cmF0b3JDb21wb25lbnRzKS5pbmNsdWRlcyhuYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvdCw0YHRgtGA0L7QudC60Lgg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0LrQsNGC0LXQs9C+0YDQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqIEBwYXJhbSBlZGl0b3Ig0J3QsNC30LLQsNC90LjQtSDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2V0dGluZ3MkKGNhdGVnb3J5SWRPclNsdWc6IHN0cmluZyB8IG51bWJlciwgZWRpdG9yOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLmNhdGFsb2dTZXJ2aWNlLmdldENhdGVnb3J5RnJvbU1hcChjYXRlZ29yeUlkT3JTbHVnKTtcblxuICAgICAgICBpZiAoY2F0ZWdvcnk/LmNvbmZpZ3VyYXRvclNldHRpbmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoY2F0ZWdvcnkuY29uZmlndXJhdG9yU2V0dGluZ3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2NJQ29uZmlndXJhdG9yU2V0dGluZ3NCYXNlPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL2NhdGVnb3JpZXMvJHtjYXRlZ29yeUlkT3JTbHVnfS9jb25maWd1cmF0b3JzLyR7ZWRpdG9yfS9zZXR0aW5nc2ApLnBpcGUoXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgIG1hcCgoc2V0dGluZ3MpID0+ICh0aGlzLmNvbmZpZ3VyYXRvclNldHRpbmdzICYmIGVkaXRvciBpbiB0aGlzLmNvbmZpZ3VyYXRvclNldHRpbmdzID8gbmV3IHRoaXMuY29uZmlndXJhdG9yU2V0dGluZ3NbZWRpdG9yXShzZXR0aW5ncykgOiBzZXR0aW5ncykpLFxuICAgICAgICAgICAgdGFwKChzZXR0aW5ncykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjYXRlZ29yeSkge1xuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeS5jb25maWd1cmF0b3JTZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LjQvdGE0L7RgNC80LDRhtC40Y4g0L4g0L/RgNC+0LTRg9C60YLQtSwg0L/QviDRg9C60LDQt9Cw0L3QvdGL0Lwg0L/QsNGA0LDQvNC10YLRgNCw0Lwg0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQutCw0YLQtdCz0L7RgNC40Lgg0YLQvtCy0LDRgNC+0LIuXG4gICAgICogQHBhcmFtIGVkaXRvciDQndCw0LfQstCw0L3QuNC1INC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwLlxuICAgICAqIEBwYXJhbSBwYXJhbXMg0J/QsNGA0LDQvNC10YLRgNGLINC60L7QvdGE0LjQs9GD0YDQsNGC0L7RgNCwINC00LvRjyDQv9C+0LjRgdC60LAg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0JChjYXRlZ29yeUlkT3JTbHVnOiBzdHJpbmcgfCBudW1iZXIsIGVkaXRvcjogc3RyaW5nLCBwYXJhbXM6IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFNjUHJvZHVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PFNjSVByb2R1Y3REVE8+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvY2F0ZWdvcmllcy8ke2NhdGVnb3J5SWRPclNsdWd9L2NvbmZpZ3VyYXRvcnMvJHtlZGl0b3J9L3Byb2R1Y3RgLCB7IHBhcmFtczogcGFyYW1zIH0pXG4gICAgICAgICAgICAucGlwZShtYXAoKHByb2R1Y3REVE8pID0+IG5ldyBTY1Byb2R1Y3QocHJvZHVjdERUTykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQuSDRiNCw0LHQu9C+0L0g0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0L/QuNGB0Lgg0LrQsNGC0LXQs9C+0YDQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqIEBwYXJhbSBlZGl0b3Ig0J3QsNC30LLQsNC90LjQtSDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAgICAgKiBAcGFyYW0gbmV3VGVtcGxhdGUg0J/QsNGA0LDQvNC10YLRgNGLINGI0LDQsdC70L7QvdCwINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1wYXJhbWV0ZXJzXG4gICAgcHVibGljIHNhdmVUZW1wbGF0ZSQ8VD4oY2F0ZWdvcnlJZDogbnVtYmVyLCBlZGl0b3I6IHN0cmluZywgbmV3VGVtcGxhdGU6IFQpOiBPYnNlcnZhYmxlPHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8dW5kZWZpbmVkPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL2NhdGVnb3JpZXMvJHtjYXRlZ29yeUlkfS9jb25maWd1cmF0b3JzLyR7ZWRpdG9yfS90ZW1wbGF0ZWAsIG5ld1RlbXBsYXRlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQuSDRiNCw0LHQu9C+0L0g0LrQvtC90YTQuNCz0YPRgNCw0YLQvtGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0L/QuNGB0Lgg0LrQsNGC0LXQs9C+0YDQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqIEBwYXJhbSBlZGl0b3Ig0J3QsNC30LLQsNC90LjQtSDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAgICAgKiBAcGFyYW0gdGVtcGxhdGVJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9Cw0L/QuNGB0Lgg0YjQsNCx0LvQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZVRlbXBsYXRlJChjYXRlZ29yeUlkOiBudW1iZXIsIGVkaXRvcjogc3RyaW5nLCB0ZW1wbGF0ZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTx1bmRlZmluZWQ+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvY2F0ZWdvcmllcy8ke2NhdGVnb3J5SWR9L2NvbmZpZ3VyYXRvcnMvJHtlZGl0b3J9L3RlbXBsYXRlLyR7dGVtcGxhdGVJZH1gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0L/QvtC70L3Rj9C10YIg0YDQsNGB0YfQtdGCLCDRh9C10YDQtdC3INGD0LrQsNC30LDQvdC90YvQuSDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YAg0YEg0L/QtdGA0LXQtNCw0L3QvdGL0LzQuCDQv9Cw0YDQsNC80LXRgtGA0LDQvNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0LrQsNGC0LXQs9C+0YDQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqIEBwYXJhbSBlZGl0b3Ig0J3QsNC30LLQsNC90LjQtSDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAgICAgKiBAcGFyYW0gcGFyYW1zINCf0LDRgNCw0LzQtdGC0YDRiyDQt9Cw0L/RgNC+0YHQsCDRgNCw0YHRh9C10YLQsCDQutC+0L3RhNC40LPRg9GA0LDRgtC+0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2FsY3VsYXRlJChjYXRlZ29yeUlkT3JTbHVnOiBzdHJpbmcgfCBudW1iZXIsIGVkaXRvcjogc3RyaW5nLCBwYXJhbXM6IElTYW5kd2ljaENhbGN1bGF0ZSk6IE9ic2VydmFibGU8U2NJQ29uZmlndXJhdG9yQ2FsY3VsYXRlUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFNjSUNvbmZpZ3VyYXRvckNhbGN1bGF0ZVJlc3VsdD4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9jYXRlZ29yaWVzLyR7Y2F0ZWdvcnlJZE9yU2x1Z30vY29uZmlndXJhdG9ycy8ke2VkaXRvcn0vY2FsY3VsYXRlYCwge1xuICAgICAgICAgICAgcGFyYW1zOiB0aGlzLmNvbnZlcnRlcnNTZXJ2aWNlLnRvSHR0cFBhcmFtcyh7IC4uLnBhcmFtcyB9LCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1uZXctb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL29yZGVyL2R0by9zYy1pLW5ldy1vcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NVcGxvYWRlZEZpbGUgfSBmcm9tICcuLi8uLi9jb250YWN0cy9kdG8vc2MtdXBsb2FkZWQtZmlsZSc7XG5pbXBvcnQgeyBTY1VUTSB9IGZyb20gJy4uLy4uL3V0bS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNjRGVsaXZlcnlUeXBlLCBTY1BheW1lbnRUeXBlIH0gZnJvbSAnLi4vZW51bXMnO1xuXG4vKipcbiAqINCc0L7QtNC10LvRjCDQtNCw0L3QvdGL0YUg0L3QvtCy0L7Qs9C+INC30LDQutCw0LfQsC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY0lOZXdPcmRlciB7XG4gICAgLyoqXG4gICAgICog0KLQuNC/INC+0L/Qu9Cw0YLRiy5cbiAgICAgKi9cbiAgICBwYXltZW50VHlwZTogU2NQYXltZW50VHlwZTtcblxuICAgIC8qKlxuICAgICAqINCi0LjQvyDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAqL1xuICAgIGRlbGl2ZXJ5VHlwZTogU2NEZWxpdmVyeVR5cGU7XG5cbiAgICAvKipcbiAgICAgKiDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutC+0L3RgtGA0LDQs9C10L3RgtCwINC60LvQuNC10L3RgtCwLiDQl9C90LDRh9C10L3QuNC1INC+0LHRj9C30LDRgtC10LvRjNC90L4g0LIg0YHQu9GD0YfQsNC1INC10YHQu9C4INC60LvQuNC10L3RgiDRjtGALiDQu9C40YbQvi5cbiAgICAgKi9cbiAgICBjb250cmFnZW50SWQ/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQltC10LvQsNC10LzQsNGPINC00LDRgtCwINC00L7RgdGC0LDQstC60Lgg0LjQu9C4INGB0LDQvNC+0LLRi9Cy0L7Qt9CwLlxuICAgICAqL1xuICAgIGRlbGl2ZXJ5RGF0ZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60Lgg0LrQvtC90YLRgNCw0LPQtdC90YLQsCDQutC70LjQtdC90YLQsC4g0JfQvdCw0YfQtdC90LjQtSDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdC+INC/0YDQuCDRgtC40L/QtSDQtNC+0YHRgtCw0LLQutC4IFwi0JTQvtGB0YLQsNCy0LrQsFwiLlxuICAgICAqL1xuICAgIGFkZHJlc3NJZD86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0LrQu9Cw0LTQsC4g0JfQvdCw0YfQtdC90LjQtSDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdC+INC/0YDQuCDRgtC40L/QtSDQtNC+0YHRgtCw0LLQutC4IFwi0KHQsNC80L7QstGL0LLQvtC3XCIuXG4gICAgICovXG4gICAgd2FyZWhvdXNlSWQ/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQl9Cw0LPRgNGD0LbQsNC10LzRi9C5INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC8INGE0LDQudC7LCDRgdC+0LTQtdGA0LbQuNC80L7QtSDQutC+0YLQvtGA0L7Qs9C+INC60L7QtNC40YDQvtCy0LDQvdC+INCyIGJhc2U2NC5cbiAgICAgKi9cbiAgICBpbWFnZT86IFNjVXBsb2FkZWRGaWxlO1xuXG4gICAgLyoqXG4gICAgICog0JrQvtC80LzQtdC90YLQsNGA0LjQuSDQutC70LjQtdC90YLQsCDQuiDQt9Cw0LrQsNC30YMuXG4gICAgICovXG4gICAgY29tbWVudD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDRh9GC0L4g0Y3RgtC+INGH0LXRgNC90L7QstC40Log0LfQsNC60LDQt9CwLlxuICAgICAqL1xuICAgIGlzRHJhZnQ/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog0JTQsNC90L3Ri9C1INC+IFVUTS3QvNC10YLQutC1LlxuICAgICAqL1xuICAgIHV0bT86IFNjVVRNO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1uZXctb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL29yZGVyL2R0by9zYy1pLW5ldy1vcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NVcGxvYWRlZEZpbGUgfSBmcm9tICcuLi8uLi9jb250YWN0cy9kdG8vc2MtdXBsb2FkZWQtZmlsZSc7XG5pbXBvcnQgeyBTY1VUTSB9IGZyb20gJy4uLy4uL3V0bS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNjRGVsaXZlcnlUeXBlLCBTY1BheW1lbnRUeXBlIH0gZnJvbSAnLi4vZW51bXMnO1xuXG4vKipcbiAqINCc0L7QtNC10LvRjCDQtNCw0L3QvdGL0YUg0L3QvtCy0L7Qs9C+INC30LDQutCw0LfQsC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY0lOZXdPcmRlciB7XG4gICAgLyoqXG4gICAgICog0KLQuNC/INC+0L/Qu9Cw0YLRiy5cbiAgICAgKi9cbiAgICBwYXltZW50VHlwZTogU2NQYXltZW50VHlwZTtcblxuICAgIC8qKlxuICAgICAqINCi0LjQvyDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAqL1xuICAgIGRlbGl2ZXJ5VHlwZTogU2NEZWxpdmVyeVR5cGU7XG5cbiAgICAvKipcbiAgICAgKiDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutC+0L3RgtGA0LDQs9C10L3RgtCwINC60LvQuNC10L3RgtCwLiDQl9C90LDRh9C10L3QuNC1INC+0LHRj9C30LDRgtC10LvRjNC90L4g0LIg0YHQu9GD0YfQsNC1INC10YHQu9C4INC60LvQuNC10L3RgiDRjtGALiDQu9C40YbQvi5cbiAgICAgKi9cbiAgICBjb250cmFnZW50SWQ/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQltC10LvQsNC10LzQsNGPINC00LDRgtCwINC00L7RgdGC0LDQstC60Lgg0LjQu9C4INGB0LDQvNC+0LLRi9Cy0L7Qt9CwLlxuICAgICAqL1xuICAgIGRlbGl2ZXJ5RGF0ZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60Lgg0LrQvtC90YLRgNCw0LPQtdC90YLQsCDQutC70LjQtdC90YLQsC4g0JfQvdCw0YfQtdC90LjQtSDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdC+INC/0YDQuCDRgtC40L/QtSDQtNC+0YHRgtCw0LLQutC4IFwi0JTQvtGB0YLQsNCy0LrQsFwiLlxuICAgICAqL1xuICAgIGFkZHJlc3NJZD86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0LrQu9Cw0LTQsC4g0JfQvdCw0YfQtdC90LjQtSDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdC+INC/0YDQuCDRgtC40L/QtSDQtNC+0YHRgtCw0LLQutC4IFwi0KHQsNC80L7QstGL0LLQvtC3XCIuXG4gICAgICovXG4gICAgd2FyZWhvdXNlSWQ/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQl9Cw0LPRgNGD0LbQsNC10LzRi9C5INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC8INGE0LDQudC7LCDRgdC+0LTQtdGA0LbQuNC80L7QtSDQutC+0YLQvtGA0L7Qs9C+INC60L7QtNC40YDQvtCy0LDQvdC+INCyIGJhc2U2NC5cbiAgICAgKi9cbiAgICBpbWFnZT86IFNjVXBsb2FkZWRGaWxlO1xuXG4gICAgLyoqXG4gICAgICog0JrQvtC80LzQtdC90YLQsNGA0LjQuSDQutC70LjQtdC90YLQsCDQuiDQt9Cw0LrQsNC30YMuXG4gICAgICovXG4gICAgY29tbWVudD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7RgNC30LjQvdGLLCDQutC+0YLQvtGA0YvQtSDQv9C+0L/QsNC00YPRgiDQsiDQt9Cw0LrQsNC3LlxuICAgICAqL1xuICAgIGl0ZW1zPzogQXJyYXk8bnVtYmVyIHwgc3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDRh9GC0L4g0Y3RgtC+INGH0LXRgNC90L7QstC40Log0LfQsNC60LDQt9CwLlxuICAgICAqL1xuICAgIGlzRHJhZnQ/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog0JTQsNC90L3Ri9C1INC+IFVUTS3QvNC10YLQutC1LlxuICAgICAqL1xuICAgIHV0bT86IFNjVVRNO1xufVxuIl19
@@ -3427,21 +3427,31 @@ var ScRouteKeys;
3427
3427
  * Сервис для работы с конфигуратором.
3428
3428
  */
3429
3429
  class ScConfiguratorService {
3430
- /**
3431
- * Инициализирует экземпляр класса {@link ScConfiguratorService}.
3432
- *
3433
- * @param configuratorComponents Список компонентов конфигураторов по их названию.
3434
- * @param configuratorSettings Список моделей настроек конфигураторов по их названию.
3435
- * @param http HTTP-клиент.
3436
- * @param urls Список ссылок на разделы backend'a.
3437
- * @param catalogService Сервис для работы с каталогом.
3438
- */
3439
- constructor(configuratorComponents, configuratorSettings, http, urls, catalogService) {
3440
- this.configuratorComponents = configuratorComponents;
3441
- this.configuratorSettings = configuratorSettings;
3442
- this.http = http;
3443
- this.urls = urls;
3444
- this.catalogService = catalogService;
3430
+ constructor() {
3431
+ /**
3432
+ * Список компонентов конфигураторов по их названию.
3433
+ */
3434
+ this.configuratorComponents = inject(SC_CONFIGURATOR_COMPONENTS);
3435
+ /**
3436
+ * Список моделей настроек конфигураторов по их названию.
3437
+ */
3438
+ this.configuratorSettings = inject(SC_CONFIGURATOR_SETTINGS, { optional: true }) ?? undefined;
3439
+ /**
3440
+ * HTTP-клиент.
3441
+ */
3442
+ this.http = inject(HttpClient);
3443
+ /**
3444
+ * Список ссылок на разделы backend'a.
3445
+ */
3446
+ this.urls = inject(SC_URLS);
3447
+ /**
3448
+ * Сервис для работы с каталогом.
3449
+ */
3450
+ this.catalogService = inject(ScCatalogService);
3451
+ /**
3452
+ * Сервис конвертации данных.
3453
+ */
3454
+ this.convertersService = inject(ScConvertersService);
3445
3455
  }
3446
3456
  /**
3447
3457
  * Возвращает признак того, что конфигуратор с указанным названием существует и реализован.
@@ -3503,7 +3513,19 @@ class ScConfiguratorService {
3503
3513
  removeTemplate$(categoryId, editor, templateId) {
3504
3514
  return this.http.delete(`${this.urls.apiUrl}/catalog/categories/${categoryId}/configurators/${editor}/template/${templateId}`);
3505
3515
  }
3506
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, deps: [{ token: SC_CONFIGURATOR_COMPONENTS }, { token: SC_CONFIGURATOR_SETTINGS, optional: true }, { token: i1$1.HttpClient }, { token: SC_URLS }, { token: ScCatalogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
3516
+ /**
3517
+ * Выполняет расчет, через указанный конфигуратор с переданными параметрами.
3518
+ *
3519
+ * @param categoryIdOrSlug Идентификатор или slug категории товаров.
3520
+ * @param editor Название конфигуратора.
3521
+ * @param params Параметры запроса расчета конфигуратора.
3522
+ */
3523
+ calculate$(categoryIdOrSlug, editor, params) {
3524
+ return this.http.get(`${this.urls.apiUrl}/catalog/categories/${categoryIdOrSlug}/configurators/${editor}/calculate`, {
3525
+ params: this.convertersService.toHttpParams({ ...params }, { nonNullable: true }),
3526
+ });
3527
+ }
3528
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3507
3529
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, providedIn: 'root' }); }
3508
3530
  }
3509
3531
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScConfiguratorService, decorators: [{
@@ -3511,18 +3533,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
3511
3533
  args: [{
3512
3534
  providedIn: 'root',
3513
3535
  }]
3514
- }], ctorParameters: () => [{ type: undefined, decorators: [{
3515
- type: Inject,
3516
- args: [SC_CONFIGURATOR_COMPONENTS]
3517
- }] }, { type: undefined, decorators: [{
3518
- type: Optional
3519
- }, {
3520
- type: Inject,
3521
- args: [SC_CONFIGURATOR_SETTINGS]
3522
- }] }, { type: i1$1.HttpClient }, { type: undefined, decorators: [{
3523
- type: Inject,
3524
- args: [SC_URLS]
3525
- }] }, { type: ScCatalogService }] });
3536
+ }] });
3526
3537
 
3527
3538
  /**
3528
3539
  * Перечисление, представляющее различные формы обратной связи.