@snabcentr/client-core 3.14.0 → 3.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/catalog/interfaces/index.d.ts +1 -0
- package/catalog/interfaces/sc-i-new-products-params.d.ts +25 -0
- package/catalog/services/sc-catalog.service.d.ts +10 -3
- package/esm2022/catalog/interfaces/index.mjs +2 -1
- package/esm2022/catalog/interfaces/sc-i-new-products-params.mjs +2 -0
- package/esm2022/catalog/services/sc-catalog.service.mjs +18 -1
- package/esm2022/helpers/sc-units-helper.mjs +6 -2
- package/esm2022/pagination/services/sc-pagination.service.mjs +13 -8
- package/esm2022/tokens/sc-product-pagination-options.mjs +6 -1
- package/fesm2022/snabcentr-client-core.mjs +39 -8
- package/fesm2022/snabcentr-client-core.mjs.map +1 -1
- package/helpers/sc-units-helper.d.ts +4 -0
- package/package.json +1 -1
- package/pagination/services/sc-pagination.service.d.ts +7 -0
- package/release_notes.tmp +1 -1
- package/tokens/sc-product-pagination-options.d.ts +13 -0
|
@@ -5,6 +5,7 @@ export * from './sc-i-parent-category-redirect';
|
|
|
5
5
|
export * from './sc-i-virtual-category';
|
|
6
6
|
export * from './sc-i-category-product-params';
|
|
7
7
|
export * from './sc-i-category-products-pagination-params';
|
|
8
|
+
export * from './sc-i-new-products-params';
|
|
8
9
|
export * from './sc-catalog-filter';
|
|
9
10
|
export * from './sc-i-checkbox-filter';
|
|
10
11
|
export * from './sc-i-range-filter';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ScISortOrder } from '../../pagination';
|
|
2
|
+
import { ScIPaginationParams } from '../../pagination/dto/sc-i-pagination-params';
|
|
3
|
+
import { ScTProductSortField } from './sc-t-product-sort-field';
|
|
4
|
+
/**
|
|
5
|
+
* Модель данных параметров запроса списка товаров, созданных за указанный период.
|
|
6
|
+
*/
|
|
7
|
+
export interface ScINewProductsParams extends ScIPaginationParams {
|
|
8
|
+
/**
|
|
9
|
+
* Период выборки товаров.
|
|
10
|
+
*/
|
|
11
|
+
period: {
|
|
12
|
+
/**
|
|
13
|
+
* Дата начала периода в формате `ГГГГ-ММ-ДД ЧЧ:ММ:СС`.
|
|
14
|
+
*/
|
|
15
|
+
from: string;
|
|
16
|
+
/**
|
|
17
|
+
* Дата окончания периода в формате `ГГГГ-ММ-ДД ЧЧ:ММ:СС`.
|
|
18
|
+
*/
|
|
19
|
+
to?: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Параметры сортировки.
|
|
23
|
+
*/
|
|
24
|
+
sort?: ScISortOrder<ScTProductSortField>;
|
|
25
|
+
}
|
|
@@ -14,6 +14,7 @@ import { ScMimeTypes } from '../enums/sc-mime-types';
|
|
|
14
14
|
import { ScICategory } from '../interfaces/sc-i-category';
|
|
15
15
|
import { ScICategoryProductParams } from '../interfaces/sc-i-category-product-params';
|
|
16
16
|
import { ScICategoryProductPaginationParams } from '../interfaces/sc-i-category-products-pagination-params';
|
|
17
|
+
import { ScINewProductsParams } from '../interfaces/sc-i-new-products-params';
|
|
17
18
|
import { ScIParentCategoryRedirect } from '../interfaces/sc-i-parent-category-redirect';
|
|
18
19
|
import { ScPriceHistory } from '../types/sc-price-history';
|
|
19
20
|
import * as i0 from "@angular/core";
|
|
@@ -156,6 +157,12 @@ export declare class ScCatalogService {
|
|
|
156
157
|
* @returns История изменения цен на продукт для клиента в формате {@link Observable} из запроса.
|
|
157
158
|
*/
|
|
158
159
|
getPriceHistory$(product: ScProduct): Observable<ScPriceHistory | null>;
|
|
160
|
+
/**
|
|
161
|
+
* Создает запрос получения списка товаров каталога с пагинацией.
|
|
162
|
+
*
|
|
163
|
+
* @param params Параметры пагинации товаров.
|
|
164
|
+
*/
|
|
165
|
+
getProducts$(params: ScICategoryProductPaginationParams): Observable<ScIPaginate<ScProduct>>;
|
|
159
166
|
/**
|
|
160
167
|
* Создает запрос получения списка товаров для конкретной категории.
|
|
161
168
|
*
|
|
@@ -163,11 +170,11 @@ export declare class ScCatalogService {
|
|
|
163
170
|
*/
|
|
164
171
|
getProducts$(params: ScICategoryProductParams): Observable<ScProduct[]>;
|
|
165
172
|
/**
|
|
166
|
-
* Создает запрос получения списка
|
|
173
|
+
* Создает запрос получения списка товаров, созданных за указанный период (с пагинацией).
|
|
167
174
|
*
|
|
168
|
-
* @param params Параметры
|
|
175
|
+
* @param params Параметры запроса товаров за период.
|
|
169
176
|
*/
|
|
170
|
-
|
|
177
|
+
getNewProducts$(params: ScINewProductsParams): Observable<ScIPaginate<ScProduct>>;
|
|
171
178
|
/**
|
|
172
179
|
* Создает запрос получения списка товаров категории и кэширует его.
|
|
173
180
|
*
|
|
@@ -5,6 +5,7 @@ export * from './sc-i-parent-category-redirect';
|
|
|
5
5
|
export * from './sc-i-virtual-category';
|
|
6
6
|
export * from './sc-i-category-product-params';
|
|
7
7
|
export * from './sc-i-category-products-pagination-params';
|
|
8
|
+
export * from './sc-i-new-products-params';
|
|
8
9
|
export * from './sc-catalog-filter';
|
|
9
10
|
export * from './sc-i-checkbox-filter';
|
|
10
11
|
export * from './sc-i-range-filter';
|
|
@@ -12,4 +13,4 @@ export * from './sc-i-toggle-filter';
|
|
|
12
13
|
export * from './sc-property-filters';
|
|
13
14
|
export * from './sc-i-base-catalog-filter';
|
|
14
15
|
export * from './sc-t-product-sort-field';
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NhdGFsb2cvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2MtaS1jYXRhbG9nLWl0ZW0nO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLXByb2R1Y3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLWNhdGVnb3J5JztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaS1wYXJlbnQtY2F0ZWdvcnktcmVkaXJlY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLXZpcnR1YWwtY2F0ZWdvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLWNhdGVnb3J5LXByb2R1Y3QtcGFyYW1zJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaS1jYXRlZ29yeS1wcm9kdWN0cy1wYWdpbmF0aW9uLXBhcmFtcyc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWktbmV3LXByb2R1Y3RzLXBhcmFtcyc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWNhdGFsb2ctZmlsdGVyJztcbmV4cG9ydCAqIGZyb20gJy4vc2MtaS1jaGVja2JveC1maWx0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLXJhbmdlLWZpbHRlcic7XG5leHBvcnQgKiBmcm9tICcuL3NjLWktdG9nZ2xlLWZpbHRlcic7XG5leHBvcnQgKiBmcm9tICcuL3NjLXByb3BlcnR5LWZpbHRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1pLWJhc2UtY2F0YWxvZy1maWx0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zYy10LXByb2R1Y3Qtc29ydC1maWVsZCc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1uZXctcHJvZHVjdHMtcGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jYXRhbG9nL2ludGVyZmFjZXMvc2MtaS1uZXctcHJvZHVjdHMtcGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY0lTb3J0T3JkZXIgfSBmcm9tICcuLi8uLi9wYWdpbmF0aW9uJztcbmltcG9ydCB7IFNjSVBhZ2luYXRpb25QYXJhbXMgfSBmcm9tICcuLi8uLi9wYWdpbmF0aW9uL2R0by9zYy1pLXBhZ2luYXRpb24tcGFyYW1zJztcbmltcG9ydCB7IFNjVFByb2R1Y3RTb3J0RmllbGQgfSBmcm9tICcuL3NjLXQtcHJvZHVjdC1zb3J0LWZpZWxkJztcblxuLyoqXG4gKiDQnNC+0LTQtdC70Ywg0LTQsNC90L3Ri9GFINC/0LDRgNCw0LzQtdGC0YDQvtCyINC30LDQv9GA0L7RgdCwINGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7Qsiwg0YHQvtC30LTQsNC90L3Ri9GFINC30LAg0YPQutCw0LfQsNC90L3Ri9C5INC/0LXRgNC40L7QtC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY0lOZXdQcm9kdWN0c1BhcmFtcyBleHRlbmRzIFNjSVBhZ2luYXRpb25QYXJhbXMge1xuICAgIC8qKlxuICAgICAqINCf0LXRgNC40L7QtCDQstGL0LHQvtGA0LrQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKi9cbiAgICBwZXJpb2Q6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqINCU0LDRgtCwINC90LDRh9Cw0LvQsCDQv9C10YDQuNC+0LTQsCDQsiDRhNC+0YDQvNCw0YLQtSBg0JPQk9CT0JMt0JzQnC3QlNCUINCn0Kc60JzQnDrQodChYC5cbiAgICAgICAgICovXG4gICAgICAgIGZyb206IHN0cmluZztcblxuICAgICAgICAvKipcbiAgICAgICAgICog0JTQsNGC0LAg0L7QutC+0L3Rh9Cw0L3QuNGPINC/0LXRgNC40L7QtNCwINCyINGE0L7RgNC80LDRgtC1IGDQk9CT0JPQky3QnNCcLdCU0JQg0KfQpzrQnNCcOtCh0KFgLlxuICAgICAgICAgKi9cbiAgICAgICAgdG8/OiBzdHJpbmc7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqINCf0LDRgNCw0LzQtdGC0YDRiyDRgdC+0YDRgtC40YDQvtCy0LrQuC5cbiAgICAgKi9cbiAgICBzb3J0PzogU2NJU29ydE9yZGVyPFNjVFByb2R1Y3RTb3J0RmllbGQ+O1xufVxuIl19
|
|
@@ -257,6 +257,23 @@ export class ScCatalogService {
|
|
|
257
257
|
return data.map((item, index) => new ScProduct(item, index));
|
|
258
258
|
}));
|
|
259
259
|
}
|
|
260
|
+
/**
|
|
261
|
+
* Создает запрос получения списка товаров, созданных за указанный период (с пагинацией).
|
|
262
|
+
*
|
|
263
|
+
* @param params Параметры запроса товаров за период.
|
|
264
|
+
*/
|
|
265
|
+
getNewProducts$(params) {
|
|
266
|
+
return this.http
|
|
267
|
+
.get(`${this.urls.apiUrl}/catalog/products/new`, {
|
|
268
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
269
|
+
params: this.convertersService.toHttpParams({ ...params }, { nonNullable: true }),
|
|
270
|
+
})
|
|
271
|
+
.pipe(map((data) => {
|
|
272
|
+
const cloneData = structuredClone(data);
|
|
273
|
+
cloneData.data = cloneData.data.map((item) => new ScProduct(item));
|
|
274
|
+
return cloneData;
|
|
275
|
+
}));
|
|
276
|
+
}
|
|
260
277
|
/**
|
|
261
278
|
* Создает запрос получения списка товаров категории и кэширует его.
|
|
262
279
|
*
|
|
@@ -376,4 +393,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
376
393
|
type: Inject,
|
|
377
394
|
args: [SC_CACHE_LIFETIME]
|
|
378
395
|
}] }, { type: i4.ScUserMetrikaService }] });
|
|
379
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jYXRhbG9nL3NlcnZpY2VzL3NjLWNhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTXJJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU3RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1C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QUM7SUFFRDs7Ozs7T0FLRztJQUNJLDRCQUE0QixDQUFDLGVBQWdDLEVBQUUsSUFBaUM7UUFDbkcsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxxQkFBcUIsZUFBZSxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkgsQ0FBQzsrR0F4Y1EsZ0JBQWdCLDRDQWdHYixPQUFPLDJFQUdQLGlCQUFpQjttSEFuR3BCLGdCQUFnQixjQUZiLE1BQU07OzRGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQWlHUSxNQUFNOzJCQUFDLE9BQU87OzBCQUdkLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbm9pbnNwZWN0aW9uIFR5cGVTY3JpcHRWYWxpZGF0ZVR5cGVzXG5cbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBEZXN0cm95UmVmLCBJbmplY3QsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgdHVpSXNQcmVzZW50IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBleHBhbmQsIGZpbHRlciwgZmlyc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBza2lwLCBzd2l0Y2hNYXAsIHRha2VXaGlsZSwgdGFwLCB0b0FycmF5IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjSUNhY2hlTGlmZXRpbWUgfSBmcm9tICcuLi8uLi9jb25maWcvc2MtaS1jYWNoZS1saWZldGltZSc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NjLWktdXJscyc7XG5pbXBvcnQgeyBTY0NvbnZlcnRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29udmVydGVycy9zZXJ2aWNlcy9zYy1jb252ZXJ0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NJUGFnaW5hdGUgfSBmcm9tICcuLi8uLi9wYWdpbmF0aW9uL2R0by9zYy1pLXBhZ2luYXRlJztcbmltcG9ydCB7IFNjSWRPclNsdWdQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvc2MtaWQtb3Itc2x1Zy5waXBlJztcbmltcG9ydCB7IFNDX0NBQ0hFX0xJRkVUSU1FIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLWNhY2hlLWxpZmV0aW1lJztcbmltcG9ydCB7IFNDX0lTX0hJRERFTl9FUlJPUl9BTEVSVF9IVFRQX0NPTlRFWFQgfSBmcm9tICcuLi8uLi90b2tlbnMvc2MtaXMtaGlkZGVuLWVycm9yLWFsZXJ0JztcbmltcG9ydCB7IFNDX1VSTFMgfSBmcm9tICcuLi8uLi90b2tlbnMvc2MtdXJscyc7XG5pbXBvcnQgeyBTY1VJU2VydmljZSB9IGZyb20gJy4uLy4uL3VpL3NlcnZpY2VzL3NjLXVpLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXIvc2VydmljZXMvc2MtdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNDX1VTRVJfSU5GTyB9IGZyb20gJy4uLy4uL3VzZXIvdG9rZW5zL3NjLXVzZXItcHJvdmlkZXJzJztcbmltcG9ydCB7IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0gfSBmcm9tICcuLi8uLi91c2VyLW1ldHJpa2EvZW51bXMvc2MtdXNlci1tZXRyaWthLWdvYWxzLWVudW0nO1xuaW1wb3J0IHsgU2NVc2VyTWV0cmlrYVNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLW1ldHJpa2Evc2VydmljZXMvc2MtdXNlci1tZXRyaWthLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NDYWNoZWRJdGVtIH0gZnJvbSAnLi4vY2xhc3Nlcyc7XG5pbXBvcnQgeyBTY0NhdGVnb3J5IH0gZnJvbSAnLi4vZHRvL3NjLWNhdGVnb3J5JztcbmltcG9ydCB7IFNjSVByb2R1Y3ROb3RpZnlXaGVuSW5TdG9jayB9IGZyb20gJy4uL2R0by9zYy1pLXByb2R1Y3Qtbm90aWZ5LXdoZW4taW4tc3RvY2snO1xuaW1wb3J0IHsgU2NQcm9kdWN0IH0gZnJvbSAnLi4vZHRvL3NjLXByb2R1Y3QnO1xuaW1wb3J0IHsgU2NWaXJ0dWFsQ2F0ZWdvcnkgfSBmcm9tICcuLi9kdG8vc2MtdmlydHVhbC1jYXRlZ29yeSc7XG5pbXBvcnQgeyBTY01pbWVUeXBlcyB9IGZyb20gJy4uL2VudW1zL3NjLW1pbWUtdHlwZXMnO1xuaW1wb3J0IHsgU2NJQ2F0ZWdvcnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktY2F0ZWdvcnknO1xuaW1wb3J0IHsgU2NJQ2F0ZWdvcnlQcm9kdWN0UGFyYW1zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zYy1pLWNhdGVnb3J5LXByb2R1Y3QtcGFyYW1zJztcbmltcG9ydCB7IFNjSUNhdGVnb3J5UHJvZHVjdFBhZ2luYXRpb25QYXJhbXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktY2F0ZWdvcnktcHJvZHVjdHMtcGFnaW5hdGlvbi1wYXJhbXMnO1xuaW1wb3J0IHsgU2NJUGFyZW50Q2F0ZWdvcnlSZWRpcmVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1wYXJlbnQtY2F0ZWdvcnktcmVkaXJlY3QnO1xuaW1wb3J0IHsgU2NJUHJvZHVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1wcm9kdWN0JztcbmltcG9ydCB7IFNjSVZpcnR1YWxDYXRlZ29yeSB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS12aXJ0dWFsLWNhdGVnb3J5JztcbmltcG9ydCB7IFNDX0NPVU5UX0ZJUlNUX0RJU0NPVU5URURfUFJPRFVDVFMgfSBmcm9tICcuLi90b2tlbnMvc2MtY291bnQtZmlyc3QtZGlzY291bnRlZC1wcm9kdWN0cyc7XG5pbXBvcnQgeyBTY1ByaWNlSGlzdG9yeSB9IGZyb20gJy4uL3R5cGVzL3NjLXByaWNlLWhpc3RvcnknO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60LDRgtCw0LvQvtCz0L7QvC5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NDYXRhbG9nU2VydmljZSB7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIE1hcH0g0LrQvtC70LvQtdC60YbQuNGPINC/0LDRgCDQutC70Y7Rhy3Qt9C90LDRh9C10L3QuNC1INC00LvRjyDQutCw0YLQtdCz0L7RgNC40Lkg0LrQsNGC0LDQu9C+0LPQsC5cbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgcHJpdmF0ZSBpZENhdGVnb3J5TWFwOiBNYXA8bnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkLCBTY0NhdGVnb3J5PiA9IG5ldyBNYXA8bnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkLCBTY0NhdGVnb3J5PigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE1hcH0g0LrQvtC70LvQtdC60YbQuNGPINC/0LDRgCDQutC70Y7Rhy3Qt9C90LDRh9C10L3QuNC1INC00LvRjyDQstC40YDRgtGD0LDQu9GM0L3Ri9GFINC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHZpcnR1YWxDYXRlZ29yeU1hcDogTWFwPHN0cmluZywgU2NDYWNoZWRJdGVtPFNjVmlydHVhbENhdGVnb3J5Pj4gPSBuZXcgTWFwPHN0cmluZywgU2NDYWNoZWRJdGVtPFNjVmlydHVhbENhdGVnb3J5Pj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LrRjdGI0LjRgNC+0LLQsNC90L3Ri9GFINC60LDRgtC10LPQvtGA0LjQuSDQutCw0YLQsNC70L7Qs9CwLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGVcbiAgICBwcml2YXRlIGNhdGVnb3J5TWFwOiBNYXA8bnVtYmVyIHwgc3RyaW5nIHwgdm9pZCwgU2NDYWNoZWRJdGVtPFNjQ2F0ZWdvcnk+PiA9IG5ldyBNYXA8bnVtYmVyIHwgc3RyaW5nIHwgdm9pZCwgU2NDYWNoZWRJdGVtPFNjQ2F0ZWdvcnk+PigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE1hcH0g0LrQvtC70LvQtdC60YbQuNGPINC/0LDRgCDQutC70Y7Rhy3Qt9C90LDRh9C10L3QuNC1INC00LvRjyDQv9GA0L7QtNGD0LrRgtC+0LIg0LrQsNGC0LDQu9C+0LPQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2R1Y3RNYXA6IE1hcDxudW1iZXIgfCBzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1Byb2R1Y3Q+PiA9IG5ldyBNYXA8bnVtYmVyIHwgc3RyaW5nLCBTY0NhY2hlZEl0ZW08U2NQcm9kdWN0Pj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LrRjdGI0LjRgNC+0LLQsNC90L3Ri9GFINGC0L7QstCw0YDQvtCyINC60LDRgtC10LPQvtGA0LjQuCDQutCw0YLQsNC70L7Qs9CwLlxuICAgICAqL1xuICAgIHByaXZhdGUgY2F0ZWdvcnlQcm9kdWN0c01hcDogTWFwPG51bWJlciB8IHN0cmluZywgU2NDYWNoZWRJdGVtPFNjUHJvZHVjdFtdPj4gPSBuZXcgTWFwPG51bWJlciwgU2NDYWNoZWRJdGVtPFNjUHJvZHVjdFtdPj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LrRjdGI0LjRgNC+0LLQsNC90LjRjyDQuNGB0YLQvtGA0LjQuCDRhtC10L0uXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9kdWN0SGlzdG9yeU1hcDogTWFwPG51bWJlciB8IHN0cmluZywgU2NDYWNoZWRJdGVtPFNjUHJpY2VIaXN0b3J5Pj4gPSBuZXcgTWFwPG51bWJlciB8IHN0cmluZywgU2NDYWNoZWRJdGVtPFNjUHJpY2VIaXN0b3J5Pj4oKTtcblxuICAgIC8qKlxuICAgICAqINCf0LDQudC/LCDQstC+0LfQstGA0LDRidCw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4INGB0LjQvNCy0L7Qu9GM0L3QvtC1INC+0LHQvtC30L3QsNGH0LXQvdC40LUgKHNsdWcpINC40YHRhdC+0LTRjyDQuNC3INC90LDRgdGC0YDQvtC10Log0L7QutGA0YPQttC10L3QuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWRPclNsdWdQaXBlOiBTY0lkT3JTbHVnUGlwZSA9IGluamVjdChTY0lkT3JTbHVnUGlwZSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINGB0L7Qv9C+0YHRgtCw0LLQu9C10L3QuNGPIHNsdWcg0LggaWQg0LrQsNGC0LXQs9C+0YDQuNC5INC/0YDQuCDQutC10YjQuNGA0L7QstCw0L3QuNC4INC30LDQv9GA0L7RgdC+0LIsINC10YHQu9C4INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC+0YLQu9C40YfQsNC10YLRgdGPINC+0YIg0YPRgdGC0LDQvdC+0LLQu9C10L3QvdC+0LPQviDQsiDQv9GA0L7QtdC60YLQtSAoc2x1Zy9pZCkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeUlkT3JTbHVnTWFwOiBNYXA8bnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+ID0gbmV3IE1hcDxudW1iZXIgfCBzdHJpbmcsIG51bWJlciB8IHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0YHQvtC/0L7RgdGC0LDQstC70LXQvdC40Y8gc2x1ZyDQuCBpZCDRgtC+0LLQsNGA0L7QsiDQv9GA0Lgg0LrQtdGI0LjRgNC+0LLQsNC90LjQuCDQt9Cw0L/RgNC+0YHQvtCyLCDQtdGB0LvQuCDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvtGC0LvQuNGH0LDQtdGC0YHRjyDQvtGCINGD0YHRgtCw0L3QvtCy0LvQtdC90L3QvtCz0L4g0LIg0L/RgNC+0LXQutGC0LUgKHNsdWcvaWQpLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdElkT3JTbHVnTWFwOiBNYXA8bnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+ID0gbmV3IE1hcDxudW1iZXIgfCBzdHJpbmcsIG51bWJlciB8IHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqINCn0LjRgdC70L4g0L/QtdGA0LLRi9GFINC30LDQv9C40YHQtdC5INGC0L7QstCw0YDQvtCyINGB0L4g0YHQutC40LTQutC+0LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3VudEZpcnN0RGlzY291bnRlZFByb2R1Y3RzOiBudW1iZXIgPSBpbmplY3QoU0NfQ09VTlRfRklSU1RfRElTQ09VTlRFRF9QUk9EVUNUUyk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LjQvdGE0L7RgNC80LDRhtC40Lgg0L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlclNlcnZpY2U6IFNjVXNlclNlcnZpY2UgPSBpbmplY3QoU2NVc2VyU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L3QsCDQttC40LfQvdC10L3QvdGL0Lkg0YbQuNC60Lsg0YHQtdGA0LLQuNGB0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmOiBEZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIg0YHQviDRgdC60LjQtNC60L7QuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZmlyc3REaXNjb3VudGVkJDogT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+IHwgbnVsbD4gPSBpbmplY3QoU0NfVVNFUl9JTkZPKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHVzZXIpID0+XG4gICAgICAgICAgICB1c2VyLmlzR3Vlc3QgPyBvZihudWxsKSA6IHRoaXMuZ2V0UHJvZHVjdHMkKHsgZmlsdGVyczogeyBvbmx5RGlzY291bnRlZDogdHJ1ZSB9LCBwYWdpbmF0ZTogdHJ1ZSwgcGFnZTogMSwgcGVyUGFnZTogdGhpcy5jb3VudEZpcnN0RGlzY291bnRlZFByb2R1Y3RzIH0pXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC/0LjRgdC60LAg0LjQtyDQv9C10YDQstGL0YUg0YLQvtCy0LDRgNC+0LIg0YHQviDRgdC60LjQtNC60L7QuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZmlyc3REaXNjb3VudGVkUHJvZHVjdHMkOiBPYnNlcnZhYmxlPFNjUHJvZHVjdFtdPiA9IHRoaXMuZmlyc3REaXNjb3VudGVkJC5waXBlKG1hcCgoZGF0YSkgPT4gZGF0YT8uZGF0YSA/PyBbXSkpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDQvtCx0YnQtdCz0L4g0LrQvtC70LvQuNGH0LXRgdGC0LLQsCDRgtC+0LLQsNGA0LAg0YHQviDRgdC60LjQtNC60L7QuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY291bnREaXNjb3VudGVkUHJvZHVjdHMkOiBPYnNlcnZhYmxlPG51bWJlcj4gPSB0aGlzLmZpcnN0RGlzY291bnRlZCQucGlwZShtYXAoKGRhdGEpID0+IGRhdGE/Lm1ldGEudG90YWwgPz8gMCkpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0NhdGFsb2dTZXJ2aWNlfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBodHRwINCh0LXRgNCy0LjRgSDQtNC70Y8g0LLRi9C/0L7Qu9C90LXQvdC40Y8gSFRUUC3Qt9Cw0L/RgNC+0YHQvtCyLlxuICAgICAqIEBwYXJhbSB1cmxzINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRgNCw0LfQtNC10LvRiyBiYWNrZW5kJ2EuXG4gICAgICogQHBhcmFtIHVpU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSBVSS5cbiAgICAgKiBAcGFyYW0gY29udmVydGVyc1NlcnZpY2Ug0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqIEBwYXJhbSBjYWNoZUxpZmVUaW1lINCe0LHRitC10LrRgiDRgSDQuNC90YTQvtGA0LzQsNGG0LjQtdC5INC+INCy0YDQtdC80LXQvdC4INC20LjQt9C90Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqIEBwYXJhbSB1c2VyTWV0cmlrYVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIEBJbmplY3QoU0NfVVJMUykgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVpU2VydmljZTogU2NVSVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoU0NfQ0FDSEVfTElGRVRJTUUpIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVMaWZlVGltZTogU2NJQ2FjaGVMaWZldGltZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1c2VyTWV0cmlrYVNlcnZpY2U6IFNjVXNlck1ldHJpa2FTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRVc2VyQ2hhbmdlJCgpXG4gICAgICAgICAgICAucGlwZShza2lwKDEpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJDYWNoZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7Rh9C40YnQsNC10YIg0LTQsNC90L3Ri9C1INC60LDRgtCw0LvQvtCz0LAsINC/0YDQuNCy0Y/Qt9Cw0L3QvdGL0LUg0Log0YLQtdC60YPRidC10LzRgyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y4uXG4gICAgICovXG4gICAgcHJpdmF0ZSBjbGVhckNhY2hlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlkQ2F0ZWdvcnlNYXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeU1hcC5jbGVhcigpO1xuICAgICAgICB0aGlzLnByb2R1Y3RIaXN0b3J5TWFwLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucHJvZHVjdE1hcC5jbGVhcigpO1xuICAgICAgICB0aGlzLmNhdGVnb3J5UHJvZHVjdHNNYXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy52aXJ0dWFsQ2F0ZWdvcnlNYXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeUlkT3JTbHVnTWFwLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucHJvZHVjdElkT3JTbHVnTWFwLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LrQsNGC0LXQs9C+0YDQuNGOINC40Lcg0LrQvtC70LvQtdC60YbQuNC4INC60LDRgtCw0LvQvtCz0LAsINC10YHQu9C4INC10ZEg0YHRgNC+0Log0LbQuNC30L3QuCDQvdC1INC40YHRgtGR0LouXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCDQo9C00LDQu9C40YLRjCDQsiDRgNCw0LzQutCw0YUg0LfQsNC00LDRh9C4IFRBU0tbIzEwMTUzXS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC60LDRgtC10LPQvtGA0LjQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2F0ZWdvcnlGcm9tTWFwKGNhdGVnb3J5SWRPclNsdWc/OiBudW1iZXIgfCBzdHJpbmcpOiBTY0NhdGVnb3J5IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLmlkQ2F0ZWdvcnlNYXAuZ2V0KGNhdGVnb3J5SWRPclNsdWc/LnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGlmIChjYXRlZ29yeSAmJiAoIWNhdGVnb3J5LnBhcmVudENhdGVnb3J5IHx8ICFjYXRlZ29yeS5sb2FkZWRBdCB8fCBjYXRlZ29yeS5jYWNoZWREYXRhSXNBY3R1YWwodGhpcy5jYWNoZUxpZmVUaW1lLmNhdGVnb3J5RGF0YSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2F0ZWdvcnk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlkQ2F0ZWdvcnlNYXAuZGVsZXRlKGNhdGVnb3J5SWRPclNsdWc/LnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0LrQsNGC0LXQs9C+0YDQuNC5INGC0L7QstCw0YDQvtCyINC40LvQuCDRgdC/0LjRgdC+0Log0LrQvtGA0L3QtdCy0YvRhSDQutCw0YLQtdCz0L7RgNC40LksINC10YHQu9C4INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC60LDRgtC10LPQvtGA0LjQuCDQvdC1INGD0LrQsNC30LDQvS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC60LDRgtC10LPQvtGA0LjQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldENhdGVnb3J5RGF0YSQoY2F0ZWdvcnlJZE9yU2x1Zz86IG51bWJlciB8IHN0cmluZyk6IE9ic2VydmFibGU8U2NDYXRlZ29yeT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxTY0lDYXRlZ29yeT4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9jYXRlZ29yaWVzLyR7Y2F0ZWdvcnlJZE9yU2x1ZyA/PyAnJ31gKS5waXBlKFxuICAgICAgICAgICAgbWFwKChjYXRlZ29yeSkgPT4gbmV3IFNjQ2F0ZWdvcnkoY2F0ZWdvcnkpKSxcbiAgICAgICAgICAgIHRhcCgoY2F0ZWdvcnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnlJZE9yU2x1Zykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5SWRPclNsdWdNYXAuc2V0KHR5cGVvZiBjYXRlZ29yeUlkT3JTbHVnID09PSAnc3RyaW5nJyA/IGNhdGVnb3J5LmlkIDogY2F0ZWdvcnkuc2x1ZywgY2F0ZWdvcnlJZE9yU2x1Zyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LrQvtGA0L3QtdCy0YvRhSDQutCw0YLQtdCz0L7RgNC40Lkg0YEg0L3QsNGB0YLRgNC+0LnQutCw0LzQuCDQvtGC0L7QsdGA0LDQttC10L3QuNGPLCDRh9GC0L7QsdGLINGA0LXQsNCz0LjRgNC+0LLQsNGC0Ywg0L3QsCDQuNC30LzQtdC90LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIGdldEZpbHRlcmVkUm9vdENhdGVnb3JpZXMkKCk6IE9ic2VydmFibGU8U2NJQ2F0ZWdvcnlbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy51aVNlcnZpY2UuZ2V0SGlkZGVuQ2F0ZWdvcmllc0xpc3QkKCkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoZmlsdGVycykgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmdldFJvb3RDYXRlZ29yaWVzJCgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGRhdGEpID0+IGRhdGEuZmlsdGVyKChjYXRlZ29yeSkgPT4gY2F0ZWdvcnkuaWQgJiYgIWZpbHRlcnMuaW5jbHVkZXMoY2F0ZWdvcnkuaWQpKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L7QtNC10YDQttC40LzQvtCz0L4g0LLQuNGA0YLRg9Cw0LvRjNC90L7QuSDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2x1ZyDQodC40LzQstC+0LvRjNC90YvQuSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQstC40YDRgtGD0LDQu9GM0L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VmlydHVhbENhdGVnb3J5Q2FjaGVkJChzbHVnOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjVmlydHVhbENhdGVnb3J5IHwgbnVsbD4ge1xuICAgICAgICBsZXQgY2FjaGVkSXRlbSA9IHRoaXMudmlydHVhbENhdGVnb3J5TWFwLmdldChzbHVnKTtcblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtKFxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVMaWZlVGltZS5jYXRlZ29yeURhdGEsXG4gICAgICAgICAgICAgICAgdGhpcy5odHRwLmdldDxTY0lWaXJ0dWFsQ2F0ZWdvcnk+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvdi1jYXRlZ29yaWVzLyR7c2x1Z31gKS5waXBlKG1hcCgoY2F0ZWdvcnkpID0+IG5ldyBTY1ZpcnR1YWxDYXRlZ29yeShjYXRlZ29yeSkpKSxcbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxDYXRlZ29yeU1hcC5zZXQoc2x1ZywgY2FjaGVkSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0uY2FjaGVkRGF0YUlzQWN0dWFsKCkpIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0udXBkYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FjaGVkSXRlbS5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQvtC00LXRgNC20LjQvNC+0LPQviDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQutCw0YLQtdCz0L7RgNC40Lgg0YLQvtCy0LDRgNC+0LIuXG4gICAgICovXG4gICAgcHVibGljIGdldENhdGVnb3J5Q2FjaGVkJChjYXRlZ29yeUlkT3JTbHVnPzogbnVtYmVyIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxTY0NhdGVnb3J5IHwgbnVsbD4ge1xuICAgICAgICBpZiAoY2F0ZWdvcnlJZE9yU2x1ZyAmJiB0aGlzLmNhdGVnb3J5SWRPclNsdWdNYXAuaGFzKGNhdGVnb3J5SWRPclNsdWcpKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgIGNhdGVnb3J5SWRPclNsdWcgPSB0aGlzLmNhdGVnb3J5SWRPclNsdWdNYXAuZ2V0KGNhdGVnb3J5SWRPclNsdWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhY2hlZEl0ZW0gPSB0aGlzLmNhdGVnb3J5TWFwLmdldChjYXRlZ29yeUlkT3JTbHVnPy50b1N0cmluZygpKTtcblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtKHRoaXMuY2FjaGVMaWZlVGltZS5jYXRlZ29yeURhdGEsIHRoaXMuZ2V0Q2F0ZWdvcnlEYXRhJChjYXRlZ29yeUlkT3JTbHVnKSwgbnVsbCk7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3J5TWFwLnNldChjYXRlZ29yeUlkT3JTbHVnPy50b1N0cmluZygpLCBjYWNoZWRJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbS5jYWNoZWREYXRhSXNBY3R1YWwoKSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbS51cGRhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWNoZWRJdGVtLml0ZW0kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDQtdGCINC30LDQv9GA0L7RgSDQv9C+0LvRg9GH0LXQvdC40Y8g0LrQvtGA0L3QtdCy0YvRhSDQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICovXG4gICAgcHVibGljIGdldE51bGxDYXRlZ29yeSQoKTogT2JzZXJ2YWJsZTxTY0NhdGVnb3J5IHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDYXRlZ29yeUNhY2hlZCQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINC60L7RgNC90LXQstGL0YUg0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSb290Q2F0ZWdvcmllcyQoKTogT2JzZXJ2YWJsZTxTY0lDYXRlZ29yeVtdIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXROdWxsQ2F0ZWdvcnkkKCkucGlwZShtYXAoKG51bGxDYXRlZ29yeSkgPT4gbnVsbENhdGVnb3J5Py5jYXRlZ29yaWVzID8/IG51bGwpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQoNCw0YHQutGA0YvQstCw0LXRgiDQutCw0YLQsNC70L7QsyDQtNC+INGD0LrQsNC30LDQvdC90L7QuSDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQutCw0YLQtdCz0L7RgNC40LgsINC00L4g0LrQvtGC0L7RgNC+0Lkg0L3QtdC+0LHRhdC+0LTQuNC80L4g0YDQsNGB0LrRgNGL0YLRjCDQutCw0YLQsNC70L7Qsy5cbiAgICAgKiBAcmV0dXJucyDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC/0LjRgdC+0Log0YDQsNGB0LrRgNGL0YLRi9GFINC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZENhdGFsb2dUcmVlQ2FjaGVkJChjYXRlZ29yeUlkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2F0ZWdvcnlDYWNoZWQkKGNhdGVnb3J5SWRPclNsdWcpLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBleHBhbmQoKGNhdGVnb3J5KSA9PlxuICAgICAgICAgICAgICAgIChjYXRlZ29yeS5wYXJlbnRDYXRlZ29yeSA/IHRoaXMuZ2V0Q2F0ZWdvcnlDYWNoZWQkKHRoaXMuaWRPclNsdWdQaXBlLnRyYW5zZm9ybShjYXRlZ29yeS5wYXJlbnRDYXRlZ29yeSkpIDogdGhpcy5nZXROdWxsQ2F0ZWdvcnkkKCkpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgICAgICBmaXJzdCgpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uLHNvbmFyanMvZGlmZmVyZW50LXR5cGVzLWNvbXBhcmlzb25cbiAgICAgICAgICAgIHRha2VXaGlsZSgocGFyZW50Q2F0ZWdvcnkpID0+IHBhcmVudENhdGVnb3J5LnBhcmVudENhdGVnb3J5ICE9PSB1bmRlZmluZWQsIHRydWUpLFxuICAgICAgICAgICAgdG9BcnJheSgpLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvbm8tbWlzbGVhZGluZy1hcnJheS1yZXZlcnNlXG4gICAgICAgICAgICBtYXAoKGNhdGVnb3JpZXMpID0+IGNhdGVnb3JpZXMucmV2ZXJzZSgpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDQv9C+0LvRg9GH0LXQvdC40Y8g0LjRgdGC0L7RgNC40Lgg0LjQt9C80LXQvdC10L3QuNGPINGG0LXQvSDQvdCwINC/0YDQvtC00YPQutGCINC00LvRjyDQutC70LjQtdC90YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0INCf0YDQvtC00YPQutGCLCDQtNC70Y8g0LrQvtGC0L7RgNC+0LPQviDQt9Cw0L/RgNCw0YjQuNCy0LDQtdGC0YHRjyDRhtC10L3QsC5cbiAgICAgKiBAcmV0dXJucyDQmNGB0YLQvtGA0LjRjyDQuNC30LzQtdC90LXQvdC40Y8g0YbQtdC9INC90LAg0L/RgNC+0LTRg9C60YIg0LTQu9GPINC60LvQuNC10L3RgtCwINCyINGE0L7RgNC80LDRgtC1IHtAbGluayBPYnNlcnZhYmxlfSDQuNC3INC30LDQv9GA0L7RgdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcmljZUhpc3RvcnkkKHByb2R1Y3Q6IFNjUHJvZHVjdCk6IE9ic2VydmFibGU8U2NQcmljZUhpc3RvcnkgfCBudWxsPiB7XG4gICAgICAgIGxldCBjYWNoZWRJdGVtID0gdGhpcy5wcm9kdWN0SGlzdG9yeU1hcC5nZXQocHJvZHVjdC5pZC50b1N0cmluZygpKTtcblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtKFxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVMaWZlVGltZS5jYXRlZ29yeURhdGEsXG4gICAgICAgICAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgICAgIC5nZXQ8U2NQcmljZUhpc3Rvcnk+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvcHJvZHVjdHMvJHtwcm9kdWN0LmlkfS9wcmljZS1oaXN0b3J5YCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogU0NfSVNfSElEREVOX0VSUk9SX0FMRVJUX0hUVFBfQ09OVEVYVCxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZih7fSkpKSxcbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RIaXN0b3J5TWFwLnNldChwcm9kdWN0LmlkLnRvU3RyaW5nKCksIGNhY2hlZEl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjYWNoZWRJdGVtLmNhY2hlZERhdGFJc0FjdHVhbCgpKSB7XG4gICAgICAgICAgICBjYWNoZWRJdGVtLnVwZGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhY2hlZEl0ZW0uaXRlbSQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIg0LTQu9GPINC60L7QvdC60YDQtdGC0L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbXMg0J/QsNGA0LDQvNC10YLRgNGLINC30LDQv9GA0L7RgdCwINGC0L7QstCw0YDQvtCyINC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJvZHVjdHMkKHBhcmFtczogU2NJQ2F0ZWdvcnlQcm9kdWN0UGFyYW1zKTogT2JzZXJ2YWJsZTxTY1Byb2R1Y3RbXT47XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7QsiDQutCw0YLQsNC70L7Qs9CwINGBINC/0LDQs9C40L3QsNGG0LjQtdC5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtcyDQn9Cw0YDQsNC80LXRgtGA0Ysg0L/QsNCz0LjQvdCw0YbQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0cyQocGFyYW1zOiBTY0lDYXRlZ29yeVByb2R1Y3RQYWdpbmF0aW9uUGFyYW1zKTogT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+PjtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVkdW5kYW50LXR5cGUtY29uc3RpdHVlbnRzXG4gICAgcHVibGljIGdldFByb2R1Y3RzJChwYXJhbXM6IFNjSUNhdGVnb3J5UHJvZHVjdFBhcmFtcyB8IFNjSUNhdGVnb3J5UHJvZHVjdFBhZ2luYXRpb25QYXJhbXMpOiBPYnNlcnZhYmxlPFNjUHJvZHVjdFtdIHwgU2NJUGFnaW5hdGU8U2NQcm9kdWN0Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PFNjSVBhZ2luYXRlPFNjSVByb2R1Y3Q+IHwgU2NJUHJvZHVjdFtdPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3Byb2R1Y3RzYCwge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB0aGlzLmNvbnZlcnRlcnNTZXJ2aWNlLnRvSHR0cFBhcmFtcyh7IC4uLnBhcmFtcyB9LCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2Z1bmN0aW9uLXJldHVybi10eXBlXG4gICAgICAgICAgICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgnbWV0YScgaW4gZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvbmVEYXRhID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZURhdGEuZGF0YSA9IGNsb25lRGF0YS5kYXRhLm1hcCgoaXRlbSkgPT4gbmV3IFNjUHJvZHVjdChpdGVtKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbG9uZURhdGEgYXMgU2NJUGFnaW5hdGU8U2NQcm9kdWN0PjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm1hcCgoaXRlbSwgaW5kZXgpID0+IG5ldyBTY1Byb2R1Y3QoaXRlbSwgaW5kZXgpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7QsiDQutCw0YLQtdCz0L7RgNC40Lgg0Lgg0LrRjdGI0LjRgNGD0LXRgiDQtdCz0L4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1zINCf0LDRgNCw0LzQtdGC0YDRiyDQt9Cw0L/RgNC+0YHQsCDRgtC+0LLQsNGA0L7QsiDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHVibGljIGdldFByb2R1Y3RzQ2F0ZWdvcnlDYWNoZWQkKHBhcmFtczogU2NJQ2F0ZWdvcnlQcm9kdWN0UGFyYW1zKTogT2JzZXJ2YWJsZTxTY1Byb2R1Y3RbXSB8IG51bGw+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgICAgICBpZiAoIXBhcmFtcy5jYXRlZ29yeUlkICYmICFwYXJhbXMuY2F0ZWdvcnlTbHVnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ9Cd0LUg0YPQutCw0LfQsNC9IGlkL3NsdWcg0LrQsNGC0LXQs9C+0YDQuNC4LicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24sQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50LEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgICAgICBjb25zdCBjYWNoZWRLZXkgPSAocGFyYW1zLmNhdGVnb3J5U2x1ZyA/PyBwYXJhbXMuY2F0ZWdvcnlJZCkhO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50LEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbCxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3NcbiAgICAgICAgbGV0IGNhY2hlZEl0ZW0gPSB0aGlzLmNhdGVnb3J5UHJvZHVjdHNNYXAuZ2V0KGNhY2hlZEtleS50b1N0cmluZygpKTtcblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtKHRoaXMuY2FjaGVMaWZlVGltZS5jYXRlZ29yeURhdGEsIHRoaXMuZ2V0UHJvZHVjdHMkKHBhcmFtcyksIG51bGwpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50LEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbFxuICAgICAgICAgICAgdGhpcy5jYXRlZ29yeVByb2R1Y3RzTWFwLnNldChjYWNoZWRLZXkudG9TdHJpbmcoKSwgY2FjaGVkSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0uY2FjaGVkRGF0YUlzQWN0dWFsKCkpIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0udXBkYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FjaGVkSXRlbS5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQuNC90YTQvtGA0LzQsNGG0LjRjiDQvtCxINGD0LrQsNC30LDQvdC90L7QvCDQv9GA0L7QtNGD0LrRgtC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2R1Y3RJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDRgtC+0LLQsNGA0LAv0YPRgdC70YPQs9C4LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0RGF0YSQocHJvZHVjdElkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjUHJvZHVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxTY0lQcm9kdWN0PihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3Byb2R1Y3RzLyR7cHJvZHVjdElkT3JTbHVnfWApLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHByb2R1Y3REVE8pID0+IG5ldyBTY1Byb2R1Y3QocHJvZHVjdERUTykpLFxuICAgICAgICAgICAgdGFwKChwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3RJZE9yU2x1Zykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RJZE9yU2x1Z01hcC5zZXQodHlwZW9mIHByb2R1Y3RJZE9yU2x1ZyA9PT0gJ3N0cmluZycgPyBwcm9kdWN0LmlkIDogcHJvZHVjdC5zbHVnLCBwcm9kdWN0SWRPclNsdWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LTQsNC90L3Ri9C1INC+INGA0L7QtNC40YLQtdC70YzRgdC60L7QuSDQutCw0YLQtdCz0L7RgNC40Lgg0LTQu9GPINGA0LXQtNC40YDQtdC60YLQsCwg0LrQvtCz0LTQsCDQutCw0YLQtdCz0L7RgNC40Y8g0L3QtdC00L7RgdGC0YPQv9C90LAgKEhUVFAgNDA0KS5cbiAgICAgKiDQldGB0LvQuCDRgyDQutCw0YLQtdCz0L7RgNC40Lgg0L3QtdGCINC90LXRgdC60YDRi9GC0L7QuSDRgNC+0LTQuNGC0LXQu9GM0YHQutC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LCDQstC+0LfQstGA0LDRidCw0LXRgtGB0Y8g0L/Rg9GB0YLQvtC5INC+0LHRitC10LrRgi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC90LXQtNC+0YHRgtGD0L/QvdC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXRlZ29yeVBhcmVudENhdGVnb3J5JChjYXRlZ29yeUlkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjSVBhcmVudENhdGVnb3J5UmVkaXJlY3Q+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2NJUGFyZW50Q2F0ZWdvcnlSZWRpcmVjdD4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9jYXRlZ29yaWVzLyR7Y2F0ZWdvcnlJZE9yU2x1Z30vcGFyZW50LWNhdGVnb3J5YCwge1xuICAgICAgICAgICAgY29udGV4dDogU0NfSVNfSElEREVOX0VSUk9SX0FMRVJUX0hUVFBfQ09OVEVYVCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LTQsNC90L3Ri9C1INC+INGA0L7QtNC40YLQtdC70YzRgdC60L7QuSDQutCw0YLQtdCz0L7RgNC40Lgg0LTQu9GPINGA0LXQtNC40YDQtdC60YLQsCwg0LrQvtCz0LTQsCDRgtC+0LLQsNGAINC90LXQtNC+0YHRgtGD0L/QtdC9IChIVFRQIDQwNCkuXG4gICAgICog0JXRgdC70Lgg0YMg0YLQvtCy0LDRgNCwINC90LXRgiDQvdC10YHQutGA0YvRgtC+0Lkg0YDQvtC00LjRgtC10LvRjNGB0LrQvtC5INC60LDRgtC10LPQvtGA0LjQuCwg0LLQvtC30LLRgNCw0YnQsNC10YLRgdGPINC/0YPRgdGC0L7QuSDQvtCx0YrQtdC60YIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdElkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC90LXQtNC+0YHRgtGD0L/QvdC+0LPQviDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldFByb2R1Y3RQYXJlbnRDYXRlZ29yeSQocHJvZHVjdElkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjSVBhcmVudENhdGVnb3J5UmVkaXJlY3Q+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2NJUGFyZW50Q2F0ZWdvcnlSZWRpcmVjdD4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9wcm9kdWN0cy8ke3Byb2R1Y3RJZE9yU2x1Z30vcGFyZW50LWNhdGVnb3J5YCwge1xuICAgICAgICAgICAgY29udGV4dDogU0NfSVNfSElEREVOX0VSUk9SX0FMRVJUX0hUVFBfQ09OVEVYVCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFByb2R1Y3REYXRhQ2FjaGVkJChwcm9kdWN0SWRPclNsdWc6IG51bWJlciB8IHN0cmluZyk6IE9ic2VydmFibGU8U2NQcm9kdWN0IHwgbnVsbD4ge1xuICAgICAgICBjb25zdCB2YWx1ZUZyb21NYXAgPSB0aGlzLnByb2R1Y3RJZE9yU2x1Z01hcC5nZXQocHJvZHVjdElkT3JTbHVnKTtcblxuICAgICAgICBpZiAodmFsdWVGcm9tTWFwKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgIHByb2R1Y3RJZE9yU2x1ZyA9IHZhbHVlRnJvbU1hcDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY2FjaGVkSXRlbSA9IHRoaXMucHJvZHVjdE1hcC5nZXQocHJvZHVjdElkT3JTbHVnLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbSA9IG5ldyBTY0NhY2hlZEl0ZW0odGhpcy5jYWNoZUxpZmVUaW1lLmNhdGVnb3J5RGF0YSwgdGhpcy5nZXRQcm9kdWN0RGF0YSQocHJvZHVjdElkT3JTbHVnKSwgbnVsbCk7XG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RNYXAuc2V0KHByb2R1Y3RJZE9yU2x1Zy50b1N0cmluZygpLCBjYWNoZWRJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbS5jYWNoZWREYXRhSXNBY3R1YWwoKSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbS51cGRhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWNoZWRJdGVtLml0ZW0kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDQvdCwINC/0L7Qu9GD0YfQtdC90LjQtSDQs9C10L3QtdGA0LjRgNGD0LXQvNC+0LPQviDRhNCw0LnQu9CwINC/0YDQsNC50YEt0LvQuNGB0YLQsCDQsiDRhNC+0YDQvNCw0YLQtSB7QGxpbmsgQmxvYn0sINC4INCy0YvQs9GA0YPQttCw0LXRgiDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y4g0LIg0LHRgNCw0YPQt9C10YAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSB7QGxpbmsgU2NNaW1lVHlwZXN9INC30LDQv9GA0LDRiNC40LLQsNC10LzQvtCz0L4g0YTQsNC50LvQsC5cbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutCw0YLQtdCz0L7RgNC40LgsINC00LvRjyDQutC+0YLQvtGA0L7QuSDQt9Cw0LPRgNGD0LbQsNC10YLRgdGPINC/0YDQsNC50YEt0LvQuNGB0YIuXG4gICAgICovXG4gICAgcHVibGljIGRvd25sb2FkUHJpY2UkKHR5cGU6IFNjTWltZVR5cGVzLCBjYXRlZ29yeUlkPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxCbG9iPiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuY29udmVydGVyc1NlcnZpY2UudG9IdHRwUGFyYW1zKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZvcm1hdDogT2JqZWN0LmtleXMoU2NNaW1lVHlwZXMpW09iamVjdC52YWx1ZXMoU2NNaW1lVHlwZXMpLmluZGV4T2YodHlwZSldLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiBjYXRlZ29yeUlkID8/IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBub25OdWxsYWJsZTogdHJ1ZSB9XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9kb3dubG9hZGAsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicsIHBhcmFtczogcGFyYW1zIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+IG5ldyBCbG9iKFtibG9iXSwgeyB0eXBlOiB0eXBlIH0pKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0uY2F0YWxvZ1ByaWNlRG93bmxvYWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IGNhdGVnb3J5SWQgPz8gJ3Jvb3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VfdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JfQsNC/0YDQvtGBINC90LAg0YPQstC10LTQvtC80LvQtdC90LjQtSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L4g0L/QvtGB0YLRg9C/0LvQtdC90LjQuCDQv9GA0L7QtNGD0LrRgtCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2R1Y3RJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDRgtC+0LLQsNGA0LAuXG4gICAgICogQHBhcmFtIGRhdGEg0JTQsNC90L3Ri9C1INC00LvRjyDQt9Cw0L/RgNC+0YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJvZHVjdE5vdGlmeVdoZW5JblN0b2NrJChwcm9kdWN0SWRPclNsdWc6IHN0cmluZyB8IG51bWJlciwgZGF0YTogU2NJUHJvZHVjdE5vdGlmeVdoZW5JblN0b2NrKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHVuZGVmaW5lZD4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9wcm9kdWN0cy8ke3Byb2R1Y3RJZE9yU2x1Z30vc3RvY2stbm90aWZ5YCwgZGF0YSk7XG4gICAgfVxufVxuIl19
|
|
396
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jYXRhbG9nL3NlcnZpY2VzL3NjLWNhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTXJJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU3RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1C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bGlkYXRlVHlwZXNcblxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdCwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyB0dWlJc1ByZXNlbnQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGV4cGFuZCwgZmlsdGVyLCBmaXJzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHNraXAsIHN3aXRjaE1hcCwgdGFrZVdoaWxlLCB0YXAsIHRvQXJyYXkgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NJQ2FjaGVMaWZldGltZSB9IGZyb20gJy4uLy4uL2NvbmZpZy9zYy1pLWNhY2hlLWxpZmV0aW1lJztcbmltcG9ydCB7IFNjSVVybHMgfSBmcm9tICcuLi8uLi9jb25maWcvc2MtaS11cmxzJztcbmltcG9ydCB7IFNjQ29udmVydGVyc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb252ZXJ0ZXJzL3NlcnZpY2VzL3NjLWNvbnZlcnRlcnMuc2VydmljZSc7XG5pbXBvcnQgeyBTY0lQYWdpbmF0ZSB9IGZyb20gJy4uLy4uL3BhZ2luYXRpb24vZHRvL3NjLWktcGFnaW5hdGUnO1xuaW1wb3J0IHsgU2NJZE9yU2x1Z1BpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9zYy1pZC1vci1zbHVnLnBpcGUnO1xuaW1wb3J0IHsgU0NfQ0FDSEVfTElGRVRJTUUgfSBmcm9tICcuLi8uLi90b2tlbnMvc2MtY2FjaGUtbGlmZXRpbWUnO1xuaW1wb3J0IHsgU0NfSVNfSElEREVOX0VSUk9SX0FMRVJUX0hUVFBfQ09OVEVYVCB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy1pcy1oaWRkZW4tZXJyb3ItYWxlcnQnO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy11cmxzJztcbmltcG9ydCB7IFNjVUlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdWkvc2VydmljZXMvc2MtdWkuc2VydmljZSc7XG5pbXBvcnQgeyBTY1VzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXNlci9zZXJ2aWNlcy9zYy11c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU0NfVVNFUl9JTkZPIH0gZnJvbSAnLi4vLi4vdXNlci90b2tlbnMvc2MtdXNlci1wcm92aWRlcnMnO1xuaW1wb3J0IHsgU2NVc2VyTWV0cmlrYUdvYWxzRW51bSB9IGZyb20gJy4uLy4uL3VzZXItbWV0cmlrYS9lbnVtcy9zYy11c2VyLW1ldHJpa2EtZ29hbHMtZW51bSc7XG5pbXBvcnQgeyBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXItbWV0cmlrYS9zZXJ2aWNlcy9zYy11c2VyLW1ldHJpa2Euc2VydmljZSc7XG5pbXBvcnQgeyBTY0NhY2hlZEl0ZW0gfSBmcm9tICcuLi9jbGFzc2VzJztcbmltcG9ydCB7IFNjQ2F0ZWdvcnkgfSBmcm9tICcuLi9kdG8vc2MtY2F0ZWdvcnknO1xuaW1wb3J0IHsgU2NJUHJvZHVjdE5vdGlmeVdoZW5JblN0b2NrIH0gZnJvbSAnLi4vZHRvL3NjLWktcHJvZHVjdC1ub3RpZnktd2hlbi1pbi1zdG9jayc7XG5pbXBvcnQgeyBTY1Byb2R1Y3QgfSBmcm9tICcuLi9kdG8vc2MtcHJvZHVjdCc7XG5pbXBvcnQgeyBTY1ZpcnR1YWxDYXRlZ29yeSB9IGZyb20gJy4uL2R0by9zYy12aXJ0dWFsLWNhdGVnb3J5JztcbmltcG9ydCB7IFNjTWltZVR5cGVzIH0gZnJvbSAnLi4vZW51bXMvc2MtbWltZS10eXBlcyc7XG5pbXBvcnQgeyBTY0lDYXRlZ29yeSB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1jYXRlZ29yeSc7XG5pbXBvcnQgeyBTY0lDYXRlZ29yeVByb2R1Y3RQYXJhbXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktY2F0ZWdvcnktcHJvZHVjdC1wYXJhbXMnO1xuaW1wb3J0IHsgU2NJQ2F0ZWdvcnlQcm9kdWN0UGFnaW5hdGlvblBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1jYXRlZ29yeS1wcm9kdWN0cy1wYWdpbmF0aW9uLXBhcmFtcyc7XG5pbXBvcnQgeyBTY0lOZXdQcm9kdWN0c1BhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1uZXctcHJvZHVjdHMtcGFyYW1zJztcbmltcG9ydCB7IFNjSVBhcmVudENhdGVnb3J5UmVkaXJlY3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktcGFyZW50LWNhdGVnb3J5LXJlZGlyZWN0JztcbmltcG9ydCB7IFNjSVByb2R1Y3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktcHJvZHVjdCc7XG5pbXBvcnQgeyBTY0lWaXJ0dWFsQ2F0ZWdvcnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktdmlydHVhbC1jYXRlZ29yeSc7XG5pbXBvcnQgeyBTQ19DT1VOVF9GSVJTVF9ESVNDT1VOVEVEX1BST0RVQ1RTIH0gZnJvbSAnLi4vdG9rZW5zL3NjLWNvdW50LWZpcnN0LWRpc2NvdW50ZWQtcHJvZHVjdHMnO1xuaW1wb3J0IHsgU2NQcmljZUhpc3RvcnkgfSBmcm9tICcuLi90eXBlcy9zYy1wcmljZS1oaXN0b3J5JztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2F0YWxvZ1NlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LrQsNGC0LXQs9C+0YDQuNC5INC60LDRgtCw0LvQvtCz0LAuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIHByaXZhdGUgaWRDYXRlZ29yeU1hcDogTWFwPG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCwgU2NDYXRlZ29yeT4gPSBuZXcgTWFwPG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCwgU2NDYXRlZ29yeT4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LLQuNGA0YLRg9Cw0LvRjNC90YvRhSDQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSB2aXJ0dWFsQ2F0ZWdvcnlNYXA6IE1hcDxzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1ZpcnR1YWxDYXRlZ29yeT4+ID0gbmV3IE1hcDxzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1ZpcnR1YWxDYXRlZ29yeT4+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINC60Y3RiNC40YDQvtCy0LDQvdC90YvRhSDQutCw0YLQtdCz0L7RgNC40Lkg0LrQsNGC0LDQu9C+0LPQsC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlXG4gICAgcHJpdmF0ZSBjYXRlZ29yeU1hcDogTWFwPG51bWJlciB8IHN0cmluZyB8IHZvaWQsIFNjQ2FjaGVkSXRlbTxTY0NhdGVnb3J5Pj4gPSBuZXcgTWFwPG51bWJlciB8IHN0cmluZyB8IHZvaWQsIFNjQ2FjaGVkSXRlbTxTY0NhdGVnb3J5Pj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0L/RgNC+0LTRg9C60YLQvtCyINC60LDRgtCw0LvQvtCz0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9kdWN0TWFwOiBNYXA8bnVtYmVyIHwgc3RyaW5nLCBTY0NhY2hlZEl0ZW08U2NQcm9kdWN0Pj4gPSBuZXcgTWFwPG51bWJlciB8IHN0cmluZywgU2NDYWNoZWRJdGVtPFNjUHJvZHVjdD4+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINC60Y3RiNC40YDQvtCy0LDQvdC90YvRhSDRgtC+0LLQsNGA0L7QsiDQutCw0YLQtdCz0L7RgNC40Lgg0LrQsNGC0LDQu9C+0LPQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNhdGVnb3J5UHJvZHVjdHNNYXA6IE1hcDxudW1iZXIgfCBzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1Byb2R1Y3RbXT4+ID0gbmV3IE1hcDxudW1iZXIsIFNjQ2FjaGVkSXRlbTxTY1Byb2R1Y3RbXT4+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINC60Y3RiNC40YDQvtCy0LDQvdC40Y8g0LjRgdGC0L7RgNC40Lgg0YbQtdC9LlxuICAgICAqL1xuICAgIHByaXZhdGUgcHJvZHVjdEhpc3RvcnlNYXA6IE1hcDxudW1iZXIgfCBzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1ByaWNlSGlzdG9yeT4+ID0gbmV3IE1hcDxudW1iZXIgfCBzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1ByaWNlSGlzdG9yeT4+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9Cw0LnQvywg0LLQvtC30LLRgNCw0YnQsNGO0YnQuNC5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCDRgdC40LzQstC+0LvRjNC90L7QtSDQvtCx0L7Qt9C90LDRh9C10L3QuNC1IChzbHVnKSDQuNGB0YXQvtC00Y8g0LjQtyDQvdCw0YHRgtGA0L7QtdC6INC+0LrRgNGD0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlkT3JTbHVnUGlwZTogU2NJZE9yU2x1Z1BpcGUgPSBpbmplY3QoU2NJZE9yU2x1Z1BpcGUpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE1hcH0g0LrQvtC70LvQtdC60YbQuNGPINC/0LDRgCDQutC70Y7Rhy3Qt9C90LDRh9C10L3QuNC1INC00LvRjyDRgdC+0L/QvtGB0YLQsNCy0LvQtdC90LjRjyBzbHVnINC4IGlkINC60LDRgtC10LPQvtGA0LjQuSDQv9GA0Lgg0LrQtdGI0LjRgNC+0LLQsNC90LjQuCDQt9Cw0L/RgNC+0YHQvtCyLCDQtdGB0LvQuCDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvtGC0LvQuNGH0LDQtdGC0YHRjyDQvtGCINGD0YHRgtCw0L3QvtCy0LvQtdC90L3QvtCz0L4g0LIg0L/RgNC+0LXQutGC0LUgKHNsdWcvaWQpLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlJZE9yU2x1Z01hcDogTWFwPG51bWJlciB8IHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPiA9IG5ldyBNYXA8bnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINGB0L7Qv9C+0YHRgtCw0LLQu9C10L3QuNGPIHNsdWcg0LggaWQg0YLQvtCy0LDRgNC+0LIg0L/RgNC4INC60LXRiNC40YDQvtCy0LDQvdC40Lgg0LfQsNC/0YDQvtGB0L7Qsiwg0LXRgdC70Lgg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L7RgtC70LjRh9Cw0LXRgtGB0Y8g0L7RgiDRg9GB0YLQsNC90L7QstC70LXQvdC90L7Qs9C+INCyINC/0YDQvtC10LrRgtC1IChzbHVnL2lkKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RJZE9yU2x1Z01hcDogTWFwPG51bWJlciB8IHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPiA9IG5ldyBNYXA8bnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQp9C40YHQu9C+INC/0LXRgNCy0YvRhSDQt9Cw0L/QuNGB0LXQuSDRgtC+0LLQsNGA0L7QsiDRgdC+INGB0LrQuNC00LrQvtC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY291bnRGaXJzdERpc2NvdW50ZWRQcm9kdWN0czogbnVtYmVyID0gaW5qZWN0KFNDX0NPVU5UX0ZJUlNUX0RJU0NPVU5URURfUFJPRFVDVFMpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC40L3RhNC+0YDQvNCw0YbQuNC4INC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJTZXJ2aWNlOiBTY1VzZXJTZXJ2aWNlID0gaW5qZWN0KFNjVXNlclNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHRgdGL0LvQutCwINC90LAg0LbQuNC30L3QtdC90L3Ri9C5INGG0LjQutC7INGB0LXRgNCy0LjRgdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZjogRGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQv9C40YHQutCwINGC0L7QstCw0YDQvtCyINGB0L4g0YHQutC40LTQutC+0LkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZpcnN0RGlzY291bnRlZCQ6IE9ic2VydmFibGU8U2NJUGFnaW5hdGU8U2NQcm9kdWN0PiB8IG51bGw+ID0gaW5qZWN0KFNDX1VTRVJfSU5GTykucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh1c2VyKSA9PlxuICAgICAgICAgICAgdXNlci5pc0d1ZXN0ID8gb2YobnVsbCkgOiB0aGlzLmdldFByb2R1Y3RzJCh7IGZpbHRlcnM6IHsgb25seURpc2NvdW50ZWQ6IHRydWUgfSwgcGFnaW5hdGU6IHRydWUsIHBhZ2U6IDEsIHBlclBhZ2U6IHRoaXMuY291bnRGaXJzdERpc2NvdW50ZWRQcm9kdWN0cyB9KVxuICAgICAgICApLFxuICAgICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQv9C40YHQutCwINC40Lcg0L/QtdGA0LLRi9GFINGC0L7QstCw0YDQvtCyINGB0L4g0YHQutC40LTQutC+0LkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZpcnN0RGlzY291bnRlZFByb2R1Y3RzJDogT2JzZXJ2YWJsZTxTY1Byb2R1Y3RbXT4gPSB0aGlzLmZpcnN0RGlzY291bnRlZCQucGlwZShtYXAoKGRhdGEpID0+IGRhdGE/LmRhdGEgPz8gW10pKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0L7QsdGJ0LXQs9C+INC60L7Qu9C70LjRh9C10YHRgtCy0LAg0YLQvtCy0LDRgNCwINGB0L4g0YHQutC40LTQutC+0LkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNvdW50RGlzY291bnRlZFByb2R1Y3RzJDogT2JzZXJ2YWJsZTxudW1iZXI+ID0gdGhpcy5maXJzdERpc2NvdW50ZWQkLnBpcGUobWFwKChkYXRhKSA9PiBkYXRhPy5tZXRhLnRvdGFsID8/IDApKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NDYXRhbG9nU2VydmljZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaHR0cCDQodC10YDQstC40YEg0LTQu9GPINCy0YvQv9C+0LvQvdC10L3QuNGPIEhUVFAt0LfQsNC/0YDQvtGB0L7Qsi5cbiAgICAgKiBAcGFyYW0gdXJscyDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC90LAg0YDQsNC30LTQtdC70YsgYmFja2VuZCdhLlxuICAgICAqIEBwYXJhbSB1aVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEgVUkuXG4gICAgICogQHBhcmFtIGNvbnZlcnRlcnNTZXJ2aWNlINCh0LXRgNCy0LjRgSDQutC+0L3QstC10YDRgtCw0YbQuNC4INC00LDQvdC90YvRhS5cbiAgICAgKiBAcGFyYW0gY2FjaGVMaWZlVGltZSDQntCx0YrQtdC60YIg0YEg0LjQvdGE0L7RgNC80LDRhtC40LXQuSDQviDQstGA0LXQvNC10L3QuCDQttC40LfQvdC4INC00LDQvdC90YvRhS5cbiAgICAgKiBAcGFyYW0gdXNlck1ldHJpa2FTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBASW5qZWN0KFNDX1VSTFMpIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1aVNlcnZpY2U6IFNjVUlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnRlcnNTZXJ2aWNlOiBTY0NvbnZlcnRlcnNTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNDX0NBQ0hFX0xJRkVUSU1FKSBwcml2YXRlIHJlYWRvbmx5IGNhY2hlTGlmZVRpbWU6IFNjSUNhY2hlTGlmZXRpbWUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VXNlckNoYW5nZSQoKVxuICAgICAgICAgICAgLnBpcGUoc2tpcCgxKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQ2FjaGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0YfQuNGJ0LDQtdGCINC00LDQvdC90YvQtSDQutCw0YLQsNC70L7Qs9CwLCDQv9GA0LjQstGP0LfQsNC90L3Ri9C1INC6INGC0LXQutGD0YnQtdC80YMg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GOLlxuICAgICAqL1xuICAgIHByaXZhdGUgY2xlYXJDYWNoZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pZENhdGVnb3J5TWFwLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlNYXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wcm9kdWN0SGlzdG9yeU1hcC5jbGVhcigpO1xuICAgICAgICB0aGlzLnByb2R1Y3RNYXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeVByb2R1Y3RzTWFwLmNsZWFyKCk7XG4gICAgICAgIHRoaXMudmlydHVhbENhdGVnb3J5TWFwLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlJZE9yU2x1Z01hcC5jbGVhcigpO1xuICAgICAgICB0aGlzLnByb2R1Y3RJZE9yU2x1Z01hcC5jbGVhcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC60LDRgtC10LPQvtGA0LjRjiDQuNC3INC60L7Qu9C70LXQutGG0LjQuCDQutCw0YLQsNC70L7Qs9CwLCDQtdGB0LvQuCDQtdGRINGB0YDQvtC6INC20LjQt9C90Lgg0L3QtSDQuNGB0YLRkdC6LlxuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWQg0KPQtNCw0LvQuNGC0Ywg0LIg0YDQsNC80LrQsNGFINC30LDQtNCw0YfQuCBUQVNLWyMxMDE1M10uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQutCw0YLQtdCz0L7RgNC40Lgg0YLQvtCy0LDRgNC+0LIuXG4gICAgICovXG4gICAgcHVibGljIGdldENhdGVnb3J5RnJvbU1hcChjYXRlZ29yeUlkT3JTbHVnPzogbnVtYmVyIHwgc3RyaW5nKTogU2NDYXRlZ29yeSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gdGhpcy5pZENhdGVnb3J5TWFwLmdldChjYXRlZ29yeUlkT3JTbHVnPy50b1N0cmluZygpKTtcblxuICAgICAgICBpZiAoY2F0ZWdvcnkgJiYgKCFjYXRlZ29yeS5wYXJlbnRDYXRlZ29yeSB8fCAhY2F0ZWdvcnkubG9hZGVkQXQgfHwgY2F0ZWdvcnkuY2FjaGVkRGF0YUlzQWN0dWFsKHRoaXMuY2FjaGVMaWZlVGltZS5jYXRlZ29yeURhdGEpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNhdGVnb3J5O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pZENhdGVnb3J5TWFwLmRlbGV0ZShjYXRlZ29yeUlkT3JTbHVnPy50b1N0cmluZygpKTtcblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDQtdGCINC30LDQv9GA0L7RgSDQv9C+0LvRg9GH0LXQvdC40Y8g0YHQv9C40YHQutCwINC60LDRgtC10LPQvtGA0LjQuSDRgtC+0LLQsNGA0L7QsiDQuNC70Lgg0YHQv9C40YHQvtC6INC60L7RgNC90LXQstGL0YUg0LrQsNGC0LXQs9C+0YDQuNC5LCDQtdGB0LvQuCDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutCw0YLQtdCz0L7RgNC40Lgg0L3QtSDRg9C60LDQt9Cw0L0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQutCw0YLQtdCz0L7RgNC40Lgg0YLQvtCy0LDRgNC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDYXRlZ29yeURhdGEkKGNhdGVnb3J5SWRPclNsdWc/OiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjQ2F0ZWdvcnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2NJQ2F0ZWdvcnk+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvY2F0ZWdvcmllcy8ke2NhdGVnb3J5SWRPclNsdWcgPz8gJyd9YCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoY2F0ZWdvcnkpID0+IG5ldyBTY0NhdGVnb3J5KGNhdGVnb3J5KSksXG4gICAgICAgICAgICB0YXAoKGNhdGVnb3J5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNhdGVnb3J5SWRPclNsdWcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeUlkT3JTbHVnTWFwLnNldCh0eXBlb2YgY2F0ZWdvcnlJZE9yU2x1ZyA9PT0gJ3N0cmluZycgPyBjYXRlZ29yeS5pZCA6IGNhdGVnb3J5LnNsdWcsIGNhdGVnb3J5SWRPclNsdWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INC60L7RgNC90LXQstGL0YUg0LrQsNGC0LXQs9C+0YDQuNC5INGBINC90LDRgdGC0YDQvtC50LrQsNC80Lgg0L7RgtC+0LHRgNCw0LbQtdC90LjRjywg0YfRgtC+0LHRiyDRgNC10LDQs9C40YDQvtCy0LDRgtGMINC90LAg0LjQt9C80LXQvdC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGaWx0ZXJlZFJvb3RDYXRlZ29yaWVzJCgpOiBPYnNlcnZhYmxlPFNjSUNhdGVnb3J5W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudWlTZXJ2aWNlLmdldEhpZGRlbkNhdGVnb3JpZXNMaXN0JCgpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGZpbHRlcnMpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRSb290Q2F0ZWdvcmllcyQoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKChkYXRhKSA9PiBkYXRhLmZpbHRlcigoY2F0ZWdvcnkpID0+IGNhdGVnb3J5LmlkICYmICFmaWx0ZXJzLmluY2x1ZGVzKGNhdGVnb3J5LmlkKSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+INCy0LjRgNGC0YPQsNC70YzQvdC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIHNsdWcg0KHQuNC80LLQvtC70YzQvdGL0Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LLQuNGA0YLRg9Cw0LvRjNC90L7QuSDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHVibGljIGdldFZpcnR1YWxDYXRlZ29yeUNhY2hlZCQoc2x1Zzogc3RyaW5nKTogT2JzZXJ2YWJsZTxTY1ZpcnR1YWxDYXRlZ29yeSB8IG51bGw+IHtcbiAgICAgICAgbGV0IGNhY2hlZEl0ZW0gPSB0aGlzLnZpcnR1YWxDYXRlZ29yeU1hcC5nZXQoc2x1Zyk7XG5cbiAgICAgICAgaWYgKCFjYWNoZWRJdGVtKSB7XG4gICAgICAgICAgICBjYWNoZWRJdGVtID0gbmV3IFNjQ2FjaGVkSXRlbShcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlTGlmZVRpbWUuY2F0ZWdvcnlEYXRhLFxuICAgICAgICAgICAgICAgIHRoaXMuaHR0cC5nZXQ8U2NJVmlydHVhbENhdGVnb3J5PihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3YtY2F0ZWdvcmllcy8ke3NsdWd9YCkucGlwZShtYXAoKGNhdGVnb3J5KSA9PiBuZXcgU2NWaXJ0dWFsQ2F0ZWdvcnkoY2F0ZWdvcnkpKSksXG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy52aXJ0dWFsQ2F0ZWdvcnlNYXAuc2V0KHNsdWcsIGNhY2hlZEl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjYWNoZWRJdGVtLmNhY2hlZERhdGFJc0FjdHVhbCgpKSB7XG4gICAgICAgICAgICBjYWNoZWRJdGVtLnVwZGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhY2hlZEl0ZW0uaXRlbSQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L7QtNC10YDQttC40LzQvtCz0L4g0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0LrQsNGC0LXQs9C+0YDQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXRlZ29yeUNhY2hlZCQoY2F0ZWdvcnlJZE9yU2x1Zz86IG51bWJlciB8IHN0cmluZyk6IE9ic2VydmFibGU8U2NDYXRlZ29yeSB8IG51bGw+IHtcbiAgICAgICAgaWYgKGNhdGVnb3J5SWRPclNsdWcgJiYgdGhpcy5jYXRlZ29yeUlkT3JTbHVnTWFwLmhhcyhjYXRlZ29yeUlkT3JTbHVnKSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICBjYXRlZ29yeUlkT3JTbHVnID0gdGhpcy5jYXRlZ29yeUlkT3JTbHVnTWFwLmdldChjYXRlZ29yeUlkT3JTbHVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjYWNoZWRJdGVtID0gdGhpcy5jYXRlZ29yeU1hcC5nZXQoY2F0ZWdvcnlJZE9yU2x1Zz8udG9TdHJpbmcoKSk7XG5cbiAgICAgICAgaWYgKCFjYWNoZWRJdGVtKSB7XG4gICAgICAgICAgICBjYWNoZWRJdGVtID0gbmV3IFNjQ2FjaGVkSXRlbSh0aGlzLmNhY2hlTGlmZVRpbWUuY2F0ZWdvcnlEYXRhLCB0aGlzLmdldENhdGVnb3J5RGF0YSQoY2F0ZWdvcnlJZE9yU2x1ZyksIG51bGwpO1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yeU1hcC5zZXQoY2F0ZWdvcnlJZE9yU2x1Zz8udG9TdHJpbmcoKSwgY2FjaGVkSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0uY2FjaGVkRGF0YUlzQWN0dWFsKCkpIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0udXBkYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FjaGVkSXRlbS5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINC60L7RgNC90LXQstGL0YUg0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROdWxsQ2F0ZWdvcnkkKCk6IE9ic2VydmFibGU8U2NDYXRlZ29yeSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2F0ZWdvcnlDYWNoZWQkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDQutC+0YDQvdC10LLRi9GFINC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Um9vdENhdGVnb3JpZXMkKCk6IE9ic2VydmFibGU8U2NJQ2F0ZWdvcnlbXSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TnVsbENhdGVnb3J5JCgpLnBpcGUobWFwKChudWxsQ2F0ZWdvcnkpID0+IG51bGxDYXRlZ29yeT8uY2F0ZWdvcmllcyA/PyBudWxsKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KDQsNGB0LrRgNGL0LLQsNC10YIg0LrQsNGC0LDQu9C+0LMg0LTQviDRg9C60LDQt9Cw0L3QvdC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0LrQsNGC0LXQs9C+0YDQuNC4LCDQtNC+INC60L7RgtC+0YDQvtC5INC90LXQvtCx0YXQvtC00LjQvNC+INGA0LDRgdC60YDRi9GC0Ywg0LrQsNGC0LDQu9C+0LMuXG4gICAgICogQHJldHVybnMg0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6INGA0LDRgdC60YDRi9GC0YvRhSDQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICovXG4gICAgcHVibGljIGxvYWRDYXRhbG9nVHJlZUNhY2hlZCQoY2F0ZWdvcnlJZE9yU2x1ZzogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENhdGVnb3J5Q2FjaGVkJChjYXRlZ29yeUlkT3JTbHVnKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgZXhwYW5kKChjYXRlZ29yeSkgPT5cbiAgICAgICAgICAgICAgICAoY2F0ZWdvcnkucGFyZW50Q2F0ZWdvcnkgPyB0aGlzLmdldENhdGVnb3J5Q2FjaGVkJCh0aGlzLmlkT3JTbHVnUGlwZS50cmFuc2Zvcm0oY2F0ZWdvcnkucGFyZW50Q2F0ZWdvcnkpKSA6IHRoaXMuZ2V0TnVsbENhdGVnb3J5JCgpKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3QoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvbixzb25hcmpzL2RpZmZlcmVudC10eXBlcy1jb21wYXJpc29uXG4gICAgICAgICAgICB0YWtlV2hpbGUoKHBhcmVudENhdGVnb3J5KSA9PiBwYXJlbnRDYXRlZ29yeS5wYXJlbnRDYXRlZ29yeSAhPT0gdW5kZWZpbmVkLCB0cnVlKSxcbiAgICAgICAgICAgIHRvQXJyYXkoKSxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL25vLW1pc2xlYWRpbmctYXJyYXktcmV2ZXJzZVxuICAgICAgICAgICAgbWFwKChjYXRlZ29yaWVzKSA9PiBjYXRlZ29yaWVzLnJldmVyc2UoKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0L/QvtC70YPRh9C10L3QuNGPINC40YHRgtC+0YDQuNC4INC40LfQvNC10L3QtdC90LjRjyDRhtC10L0g0L3QsCDQv9GA0L7QtNGD0LrRgiDQtNC70Y8g0LrQu9C40LXQvdGC0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCDQn9GA0L7QtNGD0LrRgiwg0LTQu9GPINC60L7RgtC+0YDQvtCz0L4g0LfQsNC/0YDQsNGI0LjQstCw0LXRgtGB0Y8g0YbQtdC90LAuXG4gICAgICogQHJldHVybnMg0JjRgdGC0L7RgNC40Y8g0LjQt9C80LXQvdC10L3QuNGPINGG0LXQvSDQvdCwINC/0YDQvtC00YPQutGCINC00LvRjyDQutC70LjQtdC90YLQsCDQsiDRhNC+0YDQvNCw0YLQtSB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQtyDQt9Cw0L/RgNC+0YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJpY2VIaXN0b3J5JChwcm9kdWN0OiBTY1Byb2R1Y3QpOiBPYnNlcnZhYmxlPFNjUHJpY2VIaXN0b3J5IHwgbnVsbD4ge1xuICAgICAgICBsZXQgY2FjaGVkSXRlbSA9IHRoaXMucHJvZHVjdEhpc3RvcnlNYXAuZ2V0KHByb2R1Y3QuaWQudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgaWYgKCFjYWNoZWRJdGVtKSB7XG4gICAgICAgICAgICBjYWNoZWRJdGVtID0gbmV3IFNjQ2FjaGVkSXRlbShcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlTGlmZVRpbWUuY2F0ZWdvcnlEYXRhLFxuICAgICAgICAgICAgICAgIHRoaXMuaHR0cFxuICAgICAgICAgICAgICAgICAgICAuZ2V0PFNjUHJpY2VIaXN0b3J5PihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3Byb2R1Y3RzLyR7cHJvZHVjdC5pZH0vcHJpY2UtaGlzdG9yeWAsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IFNDX0lTX0hJRERFTl9FUlJPUl9BTEVSVF9IVFRQX0NPTlRFWFQsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2Yoe30pKSksXG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5wcm9kdWN0SGlzdG9yeU1hcC5zZXQocHJvZHVjdC5pZC50b1N0cmluZygpLCBjYWNoZWRJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbS5jYWNoZWREYXRhSXNBY3R1YWwoKSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbS51cGRhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWNoZWRJdGVtLml0ZW0kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDQtdGCINC30LDQv9GA0L7RgSDQv9C+0LvRg9GH0LXQvdC40Y8g0YHQv9C40YHQutCwINGC0L7QstCw0YDQvtCyINC60LDRgtCw0LvQvtCz0LAg0YEg0L/QsNCz0LjQvdCw0YbQuNC10LkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1zINCf0LDRgNCw0LzQtdGC0YDRiyDQv9Cw0LPQuNC90LDRhtC40Lgg0YLQvtCy0LDRgNC+0LIuXG4gICAgICovXG4gICAgcHVibGljIGdldFByb2R1Y3RzJChwYXJhbXM6IFNjSUNhdGVnb3J5UHJvZHVjdFBhZ2luYXRpb25QYXJhbXMpOiBPYnNlcnZhYmxlPFNjSVBhZ2luYXRlPFNjUHJvZHVjdD4+O1xuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIg0LTQu9GPINC60L7QvdC60YDQtdGC0L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbXMg0J/QsNGA0LDQvNC10YLRgNGLINC30LDQv9GA0L7RgdCwINGC0L7QstCw0YDQvtCyINC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJvZHVjdHMkKHBhcmFtczogU2NJQ2F0ZWdvcnlQcm9kdWN0UGFyYW1zKTogT2JzZXJ2YWJsZTxTY1Byb2R1Y3RbXT47XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlZHVuZGFudC10eXBlLWNvbnN0aXR1ZW50c1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0cyQocGFyYW1zOiBTY0lDYXRlZ29yeVByb2R1Y3RQYXJhbXMgfCBTY0lDYXRlZ29yeVByb2R1Y3RQYWdpbmF0aW9uUGFyYW1zKTogT2JzZXJ2YWJsZTxTY1Byb2R1Y3RbXSB8IFNjSVBhZ2luYXRlPFNjUHJvZHVjdD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxTY0lQYWdpbmF0ZTxTY0lQcm9kdWN0PiB8IFNjSVByb2R1Y3RbXT4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9wcm9kdWN0c2AsIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICAgICAgICAgICAgICAgIHBhcmFtczogdGhpcy5jb252ZXJ0ZXJzU2VydmljZS50b0h0dHBQYXJhbXMoeyAuLi5wYXJhbXMgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9mdW5jdGlvbi1yZXR1cm4tdHlwZVxuICAgICAgICAgICAgICAgIG1hcCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJ21ldGEnIGluIGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lRGF0YSA9IHN0cnVjdHVyZWRDbG9uZShkYXRhKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmVEYXRhLmRhdGEgPSBjbG9uZURhdGEuZGF0YS5tYXAoKGl0ZW0pID0+IG5ldyBTY1Byb2R1Y3QoaXRlbSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xvbmVEYXRhIGFzIFNjSVBhZ2luYXRlPFNjUHJvZHVjdD47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5tYXAoKGl0ZW0sIGluZGV4KSA9PiBuZXcgU2NQcm9kdWN0KGl0ZW0sIGluZGV4KSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIsINGB0L7Qt9C00LDQvdC90YvRhSDQt9CwINGD0LrQsNC30LDQvdC90YvQuSDQv9C10YDQuNC+0LQgKNGBINC/0LDQs9C40L3QsNGG0LjQtdC5KS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbXMg0J/QsNGA0LDQvNC10YLRgNGLINC30LDQv9GA0L7RgdCwINGC0L7QstCw0YDQvtCyINC30LAg0L/QtdGA0LjQvtC0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROZXdQcm9kdWN0cyQocGFyYW1zOiBTY0lOZXdQcm9kdWN0c1BhcmFtcyk6IE9ic2VydmFibGU8U2NJUGFnaW5hdGU8U2NQcm9kdWN0Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PFNjSVBhZ2luYXRlPFNjSVByb2R1Y3Q+PihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3Byb2R1Y3RzL25ld2AsIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICAgICAgICAgICAgICAgIHBhcmFtczogdGhpcy5jb252ZXJ0ZXJzU2VydmljZS50b0h0dHBQYXJhbXMoeyAuLi5wYXJhbXMgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvbmVEYXRhID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNsb25lRGF0YS5kYXRhID0gY2xvbmVEYXRhLmRhdGEubWFwKChpdGVtKSA9PiBuZXcgU2NQcm9kdWN0KGl0ZW0pKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xvbmVEYXRhIGFzIFNjSVBhZ2luYXRlPFNjUHJvZHVjdD47XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIg0LrQsNGC0LXQs9C+0YDQuNC4INC4INC60Y3RiNC40YDRg9C10YIg0LXQs9C+LlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtcyDQn9Cw0YDQsNC80LXRgtGA0Ysg0LfQsNC/0YDQvtGB0LAg0YLQvtCy0LDRgNC+0LIg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0c0NhdGVnb3J5Q2FjaGVkJChwYXJhbXM6IFNjSUNhdGVnb3J5UHJvZHVjdFBhcmFtcyk6IE9ic2VydmFibGU8U2NQcm9kdWN0W10gfCBudWxsPiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3NcbiAgICAgICAgaWYgKCFwYXJhbXMuY2F0ZWdvcnlJZCAmJiAhcGFyYW1zLmNhdGVnb3J5U2x1Zykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCfQndC1INGD0LrQsNC30LDQvSBpZC9zbHVnINC60LDRgtC10LPQvtGA0LjQuC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uLEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudCxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3NcbiAgICAgICAgY29uc3QgY2FjaGVkS2V5ID0gKHBhcmFtcy5jYXRlZ29yeVNsdWcgPz8gcGFyYW1zLmNhdGVnb3J5SWQpITtcblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudCxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGwsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzXG4gICAgICAgIGxldCBjYWNoZWRJdGVtID0gdGhpcy5jYXRlZ29yeVByb2R1Y3RzTWFwLmdldChjYWNoZWRLZXkudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgaWYgKCFjYWNoZWRJdGVtKSB7XG4gICAgICAgICAgICBjYWNoZWRJdGVtID0gbmV3IFNjQ2FjaGVkSXRlbSh0aGlzLmNhY2hlTGlmZVRpbWUuY2F0ZWdvcnlEYXRhLCB0aGlzLmdldFByb2R1Y3RzJChwYXJhbXMpLCBudWxsKTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudCxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGxcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnlQcm9kdWN0c01hcC5zZXQoY2FjaGVkS2V5LnRvU3RyaW5nKCksIGNhY2hlZEl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjYWNoZWRJdGVtLmNhY2hlZERhdGFJc0FjdHVhbCgpKSB7XG4gICAgICAgICAgICBjYWNoZWRJdGVtLnVwZGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhY2hlZEl0ZW0uaXRlbSQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LjQvdGE0L7RgNC80LDRhtC40Y4g0L7QsSDRg9C60LDQt9Cw0L3QvdC+0Lwg0L/RgNC+0LTRg9C60YLQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0YLQvtCy0LDRgNCwL9GD0YHQu9GD0LPQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJvZHVjdERhdGEkKHByb2R1Y3RJZE9yU2x1ZzogbnVtYmVyIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxTY1Byb2R1Y3Q+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2NJUHJvZHVjdD4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9wcm9kdWN0cy8ke3Byb2R1Y3RJZE9yU2x1Z31gKS5waXBlKFxuICAgICAgICAgICAgbWFwKChwcm9kdWN0RFRPKSA9PiBuZXcgU2NQcm9kdWN0KHByb2R1Y3REVE8pKSxcbiAgICAgICAgICAgIHRhcCgocHJvZHVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0SWRPclNsdWcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0SWRPclNsdWdNYXAuc2V0KHR5cGVvZiBwcm9kdWN0SWRPclNsdWcgPT09ICdzdHJpbmcnID8gcHJvZHVjdC5pZCA6IHByb2R1Y3Quc2x1ZywgcHJvZHVjdElkT3JTbHVnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC00LDQvdC90YvQtSDQviDRgNC+0LTQuNGC0LXQu9GM0YHQutC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4INC00LvRjyDRgNC10LTQuNGA0LXQutGC0LAsINC60L7Qs9C00LAg0LrQsNGC0LXQs9C+0YDQuNGPINC90LXQtNC+0YHRgtGD0L/QvdCwIChIVFRQIDQwNCkuXG4gICAgICog0JXRgdC70Lgg0YMg0LrQsNGC0LXQs9C+0YDQuNC4INC90LXRgiDQvdC10YHQutGA0YvRgtC+0Lkg0YDQvtC00LjRgtC10LvRjNGB0LrQvtC5INC60LDRgtC10LPQvtGA0LjQuCwg0LLQvtC30LLRgNCw0YnQsNC10YLRgdGPINC/0YPRgdGC0L7QuSDQvtCx0YrQtdC60YIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQvdC10LTQvtGB0YLRg9C/0L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2F0ZWdvcnlQYXJlbnRDYXRlZ29yeSQoY2F0ZWdvcnlJZE9yU2x1ZzogbnVtYmVyIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxTY0lQYXJlbnRDYXRlZ29yeVJlZGlyZWN0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFNjSVBhcmVudENhdGVnb3J5UmVkaXJlY3Q+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvY2F0ZWdvcmllcy8ke2NhdGVnb3J5SWRPclNsdWd9L3BhcmVudC1jYXRlZ29yeWAsIHtcbiAgICAgICAgICAgIGNvbnRleHQ6IFNDX0lTX0hJRERFTl9FUlJPUl9BTEVSVF9IVFRQX0NPTlRFWFQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC00LDQvdC90YvQtSDQviDRgNC+0LTQuNGC0LXQu9GM0YHQutC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4INC00LvRjyDRgNC10LTQuNGA0LXQutGC0LAsINC60L7Qs9C00LAg0YLQvtCy0LDRgCDQvdC10LTQvtGB0YLRg9C/0LXQvSAoSFRUUCA0MDQpLlxuICAgICAqINCV0YHQu9C4INGDINGC0L7QstCw0YDQsCDQvdC10YIg0L3QtdGB0LrRgNGL0YLQvtC5INGA0L7QtNC40YLQtdC70YzRgdC60L7QuSDQutCw0YLQtdCz0L7RgNC40LgsINCy0L7Qt9Cy0YDQsNGJ0LDQtdGC0YHRjyDQv9GD0YHRgtC+0Lkg0L7QsdGK0LXQutGCLlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2R1Y3RJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQvdC10LTQvtGB0YLRg9C/0L3QvtCz0L4g0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0UGFyZW50Q2F0ZWdvcnkkKHByb2R1Y3RJZE9yU2x1ZzogbnVtYmVyIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxTY0lQYXJlbnRDYXRlZ29yeVJlZGlyZWN0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFNjSVBhcmVudENhdGVnb3J5UmVkaXJlY3Q+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvcHJvZHVjdHMvJHtwcm9kdWN0SWRPclNsdWd9L3BhcmVudC1jYXRlZ29yeWAsIHtcbiAgICAgICAgICAgIGNvbnRleHQ6IFNDX0lTX0hJRERFTl9FUlJPUl9BTEVSVF9IVFRQX0NPTlRFWFQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcm9kdWN0RGF0YUNhY2hlZCQocHJvZHVjdElkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjUHJvZHVjdCB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgdmFsdWVGcm9tTWFwID0gdGhpcy5wcm9kdWN0SWRPclNsdWdNYXAuZ2V0KHByb2R1Y3RJZE9yU2x1Zyk7XG5cbiAgICAgICAgaWYgKHZhbHVlRnJvbU1hcCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICBwcm9kdWN0SWRPclNsdWcgPSB2YWx1ZUZyb21NYXA7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNhY2hlZEl0ZW0gPSB0aGlzLnByb2R1Y3RNYXAuZ2V0KHByb2R1Y3RJZE9yU2x1Zy50b1N0cmluZygpKTtcblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtKHRoaXMuY2FjaGVMaWZlVGltZS5jYXRlZ29yeURhdGEsIHRoaXMuZ2V0UHJvZHVjdERhdGEkKHByb2R1Y3RJZE9yU2x1ZyksIG51bGwpO1xuICAgICAgICAgICAgdGhpcy5wcm9kdWN0TWFwLnNldChwcm9kdWN0SWRPclNsdWcudG9TdHJpbmcoKSwgY2FjaGVkSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0uY2FjaGVkRGF0YUlzQWN0dWFsKCkpIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0udXBkYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FjaGVkSXRlbS5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L3QsCDQv9C+0LvRg9GH0LXQvdC40LUg0LPQtdC90LXRgNC40YDRg9C10LzQvtCz0L4g0YTQsNC50LvQsCDQv9GA0LDQudGBLdC70LjRgdGC0LAg0LIg0YTQvtGA0LzQsNGC0LUge0BsaW5rIEJsb2J9LCDQuCDQstGL0LPRgNGD0LbQsNC10YIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GOINCyINCx0YDQsNGD0LfQtdGALlxuICAgICAqXG4gICAgICogQHBhcmFtIHR5cGUge0BsaW5rIFNjTWltZVR5cGVzfSDQt9Cw0L/RgNCw0YjQuNCy0LDQtdC80L7Qs9C+INGE0LDQudC70LAuXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQsNGC0LXQs9C+0YDQuNC4LCDQtNC70Y8g0LrQvtGC0L7RgNC+0Lkg0LfQsNCz0YDRg9C20LDQtdGC0YHRjyDQv9GA0LDQudGBLdC70LjRgdGCLlxuICAgICAqL1xuICAgIHB1YmxpYyBkb3dubG9hZFByaWNlJCh0eXBlOiBTY01pbWVUeXBlcywgY2F0ZWdvcnlJZD86IG51bWJlcik6IE9ic2VydmFibGU8QmxvYj4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmNvbnZlcnRlcnNTZXJ2aWNlLnRvSHR0cFBhcmFtcyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IE9iamVjdC5rZXlzKFNjTWltZVR5cGVzKVtPYmplY3QudmFsdWVzKFNjTWltZVR5cGVzKS5pbmRleE9mKHR5cGUpXSxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogY2F0ZWdvcnlJZCA/PyBudWxsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgbm9uTnVsbGFibGU6IHRydWUgfVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvZG93bmxvYWRgLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InLCBwYXJhbXM6IHBhcmFtcyB9KS5waXBlKFxuICAgICAgICAgICAgbWFwKChibG9iOiBCbG9iKSA9PiBuZXcgQmxvYihbYmxvYl0sIHsgdHlwZTogdHlwZSB9KSksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLmNhdGFsb2dQcmljZURvd25sb2FkLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiBjYXRlZ29yeUlkID8/ICdyb290JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlX3R5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCX0LDQv9GA0L7RgSDQvdCwINGD0LLQtdC00L7QvNC70LXQvdC40LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC+INC/0L7RgdGC0YPQv9C70LXQvdC40Lgg0L/RgNC+0LTRg9C60YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0YLQvtCy0LDRgNCwLlxuICAgICAqIEBwYXJhbSBkYXRhINCU0LDQvdC90YvQtSDQtNC70Y8g0LfQsNC/0YDQvtGB0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldFByb2R1Y3ROb3RpZnlXaGVuSW5TdG9jayQocHJvZHVjdElkT3JTbHVnOiBzdHJpbmcgfCBudW1iZXIsIGRhdGE6IFNjSVByb2R1Y3ROb3RpZnlXaGVuSW5TdG9jayk6IE9ic2VydmFibGU8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx1bmRlZmluZWQ+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvcHJvZHVjdHMvJHtwcm9kdWN0SWRPclNsdWd9L3N0b2NrLW5vdGlmeWAsIGRhdGEpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -13,10 +13,14 @@ export class ScUnitsHelper {
|
|
|
13
13
|
/**
|
|
14
14
|
* Возвращает кратность количества для указанного товара.
|
|
15
15
|
*
|
|
16
|
+
* Кратность равна {@link ScProduct.minCount} и не зависит от {@link ScIProperties.ignoreMinCountCheck}:
|
|
17
|
+
* этот признак только снимает валидацию кратности/минимума при ручном вводе, но начальное количество
|
|
18
|
+
* и шаг кнопок +/- остаются кратны minCount.
|
|
19
|
+
*
|
|
16
20
|
* @param product Данные о товаре для которого необходимо вернуть кратность количества.
|
|
17
21
|
*/
|
|
18
22
|
static getProductMultiplicity(product) {
|
|
19
|
-
return
|
|
23
|
+
return product.minCount && !ScUnitsHelper.productIsMeasurable(product) ? product.minCount : 1;
|
|
20
24
|
}
|
|
21
25
|
/**
|
|
22
26
|
* Возвращает кратность длины для указанного товара.
|
|
@@ -30,4 +34,4 @@ export class ScUnitsHelper {
|
|
|
30
34
|
return !product.properties?.ignoreMinCountCheck && product.minCount ? product.minCount : 0.01;
|
|
31
35
|
}
|
|
32
36
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdW5pdHMtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9oZWxwZXJzL3NjLXVuaXRzLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBQ3RCOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBa0I7UUFDaEQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsc0JBQXNCLENBQUMsT0FBa0I7UUFDbkQsT0FBTyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsNEJBQTRCLENBQUMsT0FBa0I7UUFDekQsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDekMsQ0FBQztRQUVELE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY1Byb2R1Y3QgfSBmcm9tICcuLi9jYXRhbG9nL2R0by9zYy1wcm9kdWN0JztcblxuLyoqXG4gKiDQmtC70LDRgdGBLdC/0L7QvNC+0YnQvdC40Log0LTQu9GPINGA0LDQsdC+0YLRiyDRgdC+INC30L3QsNGH0LXQvdC40Y/QvNC4INC10LTQuNC90LjRhiDQuNC30LzQtdGA0LXQvdC40Y8g0YLQvtCy0LDRgNCwLlxuICovXG5leHBvcnQgY2xhc3MgU2NVbml0c0hlbHBlciB7XG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/RgNC40LfQvdCw0LosINGH0YLQviDRg9C60LDQt9Cw0L3QvdGL0Lkg0YLQvtCy0LDRgCDQuNC80LXQtdGCINC70LjQvdC10LnQvdGD0Y4g0LXQtNC40L3QuNGG0YMg0LjQt9C80LXRgNC10L3QuNGPLlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2R1Y3Qg0JTQsNC90L3Ri9C1INC+INGC0L7QstCw0YDQtSDQtNC70Y8g0LrQvtGC0L7RgNC+0LPQviDQvdGD0LbQvdC+INC/0YDQvtCy0LXRgNC40YLRjCDQu9C40L3QtdC50L3QvtGB0YLRjCDQtdCz0L4g0LXQtNC40L3QuNGG0Ysg0LjQt9C80LXRgNC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcHJvZHVjdElzTWVhc3VyYWJsZShwcm9kdWN0OiBTY1Byb2R1Y3QpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHByb2R1Y3QudW5pdC5pc0xpbmVhciB8fCBwcm9kdWN0LnVuaXQuaXNTcXVhcmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LrRgNCw0YLQvdC+0YHRgtGMINC60L7Qu9C40YfQtdGB0YLQstCwINC00LvRjyDRg9C60LDQt9Cw0L3QvdC+0LPQviDRgtC+0LLQsNGA0LAuXG4gICAgICpcbiAgICAgKiDQmtGA0LDRgtC90L7RgdGC0Ywg0YDQsNCy0L3QsCB7QGxpbmsgU2NQcm9kdWN0Lm1pbkNvdW50fSDQuCDQvdC1INC30LDQstC40YHQuNGCINC+0YIge0BsaW5rIFNjSVByb3BlcnRpZXMuaWdub3JlTWluQ291bnRDaGVja306XG4gICAgICog0Y3RgtC+0YIg0L/RgNC40LfQvdCw0Log0YLQvtC70YzQutC+INGB0L3QuNC80LDQtdGCINCy0LDQu9C40LTQsNGG0LjRjiDQutGA0LDRgtC90L7RgdGC0Lgv0LzQuNC90LjQvNGD0LzQsCDQv9GA0Lgg0YDRg9GH0L3QvtC8INCy0LLQvtC00LUsINC90L4g0L3QsNGH0LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+XG4gICAgICog0Lgg0YjQsNCzINC60L3QvtC/0L7QuiArLy0g0L7RgdGC0LDRjtGC0YHRjyDQutGA0LDRgtC90YsgbWluQ291bnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCDQlNCw0L3QvdGL0LUg0L4g0YLQvtCy0LDRgNC1INC00LvRjyDQutC+0YLQvtGA0L7Qs9C+INC90LXQvtCx0YXQvtC00LjQvNC+INCy0LXRgNC90YPRgtGMINC60YDQsNGC0L3QvtGB0YLRjCDQutC+0LvQuNGH0LXRgdGC0LLQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldFByb2R1Y3RNdWx0aXBsaWNpdHkocHJvZHVjdDogU2NQcm9kdWN0KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHByb2R1Y3QubWluQ291bnQgJiYgIVNjVW5pdHNIZWxwZXIucHJvZHVjdElzTWVhc3VyYWJsZShwcm9kdWN0KSA/IHByb2R1Y3QubWluQ291bnQgOiAxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC60YDQsNGC0L3QvtGB0YLRjCDQtNC70LjQvdGLINC00LvRjyDRg9C60LDQt9Cw0L3QvdC+0LPQviDRgtC+0LLQsNGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCDQlNCw0L3QvdGL0LUg0L4g0YLQvtCy0LDRgNC1INC00LvRjyDQutC+0YLQvtGA0L7Qs9C+INC90LXQvtCx0YXQvtC00LjQvNC+INCy0LXRgNC90YPRgtGMINC60YDQsNGC0L3QvtGB0YLRjCDQtNC70LjQvdGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UHJvZHVjdExlbmd0aE11bHRpcGxpY2l0eShwcm9kdWN0OiBTY1Byb2R1Y3QpOiBudW1iZXIge1xuICAgICAgICBpZiAocHJvZHVjdC5wcm9wZXJ0aWVzPy5sZW5ndGhTdGVwKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvZHVjdC5wcm9wZXJ0aWVzLmxlbmd0aFN0ZXA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gIXByb2R1Y3QucHJvcGVydGllcz8uaWdub3JlTWluQ291bnRDaGVjayAmJiBwcm9kdWN0Lm1pbkNvdW50ID8gcHJvZHVjdC5taW5Db3VudCA6IDAuMDE7XG4gICAgfVxufVxuIl19
|
|
@@ -3,7 +3,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
|
3
3
|
import { tuiIsPresent } from '@taiga-ui/cdk';
|
|
4
4
|
import { BehaviorSubject, concatMap, debounceTime, filter, map, scan, share, startWith, switchMap, takeWhile } from 'rxjs';
|
|
5
5
|
import { ScCatalogService } from '../../catalog/services/sc-catalog.service';
|
|
6
|
-
import { SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS } from '../../tokens/sc-product-pagination-options';
|
|
6
|
+
import { SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS, SC_PRODUCTS_PAGINATION_LOADER, } from '../../tokens/sc-product-pagination-options';
|
|
7
7
|
import { SC_USER_INFO } from '../../user/tokens/sc-user-providers';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
/**
|
|
@@ -34,6 +34,15 @@ export class ScPaginationService {
|
|
|
34
34
|
* Сервис работы с каталогом.
|
|
35
35
|
*/
|
|
36
36
|
this.catalogService = inject(ScCatalogService);
|
|
37
|
+
/**
|
|
38
|
+
* Загрузчик страницы товаров. По умолчанию — обычный список товаров ({@link ScCatalogService.getProducts$});
|
|
39
|
+
* может быть переопределён через токен {@link SC_PRODUCTS_PAGINATION_LOADER} (например, для страницы новых товаров).
|
|
40
|
+
*
|
|
41
|
+
* @param params Параметры запроса страницы товаров с пагинацией.
|
|
42
|
+
*/
|
|
43
|
+
this.productsLoader = inject(SC_PRODUCTS_PAGINATION_LOADER, { optional: true }) ??
|
|
44
|
+
// eslint-disable-next-line unicorn/consistent-function-scoping
|
|
45
|
+
((params) => this.catalogService.getProducts$(params));
|
|
37
46
|
/**
|
|
38
47
|
* Объект данных пагинации.
|
|
39
48
|
*/
|
|
@@ -41,9 +50,7 @@ export class ScPaginationService {
|
|
|
41
50
|
// Избегаем множественных сигналов при одновременном изменении фильтров page$ и others$.
|
|
42
51
|
debounceTime(0),
|
|
43
52
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
44
|
-
map((page) => ({ ...params, ...page })),
|
|
45
|
-
// TODO: Заменить this.catalogService.getProducts$ на абстрактный метод сервиса по примеру `TuiTreeLoader`.
|
|
46
|
-
switchMap((paginationParams) => this.authStatus$.pipe(switchMap(() => this.catalogService.getProducts$(paginationParams).pipe(startWith(null))))))), share());
|
|
53
|
+
map((page) => ({ ...params, ...page })), switchMap((paginationParams) => this.authStatus$.pipe(switchMap(() => this.productsLoader(paginationParams).pipe(startWith(null))))))), share());
|
|
47
54
|
/**
|
|
48
55
|
* Объект данных пагинации с сохранением предыдущих значений для "разворачивания" списка товаров.
|
|
49
56
|
* Список сохраняется при переходе по страницам, до тех пор пока не будет получен сигнал `others$`.
|
|
@@ -53,9 +60,7 @@ export class ScPaginationService {
|
|
|
53
60
|
// «пинает» ещё живую предыдущую подписку — debounceTime(0) схлопывает такой всплеск до одной эмиссии.
|
|
54
61
|
debounceTime(0),
|
|
55
62
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
|
56
|
-
map((page) => ({ ...params, ...page })),
|
|
57
|
-
// TODO: Заменить this.catalogService.getProducts$ на абстрактный метод сервиса по примеру `TuiTreeLoader`.
|
|
58
|
-
concatMap((paginationParams) => this.catalogService.getProducts$(paginationParams).pipe(startWith(null))),
|
|
63
|
+
map((page) => ({ ...params, ...page })), concatMap((paginationParams) => this.productsLoader(paginationParams).pipe(startWith(null))),
|
|
59
64
|
// TODO: Заменить `ScProduct` на T тип.
|
|
60
65
|
scan(
|
|
61
66
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -157,4 +162,4 @@ export class ScPaginationService {
|
|
|
157
162
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScPaginationService, decorators: [{
|
|
158
163
|
type: Injectable
|
|
159
164
|
}], ctorParameters: () => [] });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9wYWdpbmF0aW9uL3NlcnZpY2VzL3NjLXBhZ2luYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3ZJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFJbkU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBb0Y1Qjs7T0FFRztJQUNIO1FBdEZBOztXQUVHO1FBQ2MsVUFBSyxHQUF5QyxJQUFJLGVBQWUsQ0FBc0IscUNBQXFDLENBQUMsQ0FBQztRQUUvSTs7V0FFRztRQUNjLFlBQU8sR0FBbUMsSUFBSSxlQUFlLENBQWdCLFNBQVMsQ0FBQyxDQUFDO1FBRXpHOztXQUVHO1FBQ2EsdUJBQWtCLEdBQXVCLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBRS9GOztXQUVHO1FBQ0ksZ0JBQVcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUks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USxtQkFBbUI7bUhBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyB0dWlJc1ByZXNlbnQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29uY2F0TWFwLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBzY2FuLCBzaGFyZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VXaGlsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY1Byb2R1Y3QgfSBmcm9tICcuLi8uLi9jYXRhbG9nL2R0by9zYy1wcm9kdWN0JztcbmltcG9ydCB7IFNjQ2F0YWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jYXRhbG9nL3NlcnZpY2VzL3NjLWNhdGFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBTQ19ORVhUX1BBR0VfUEFHSU5BVElPTl9DTElDSywgU0NfUFJPRFVDVF9QQUdJTkFUSU9OX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy1wcm9kdWN0LXBhZ2luYXRpb24tb3B0aW9ucyc7XG5pbXBvcnQgeyBTQ19VU0VSX0lORk8gfSBmcm9tICcuLi8uLi91c2VyL3Rva2Vucy9zYy11c2VyLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBTY0lQYWdpbmF0ZSB9IGZyb20gJy4uL2R0by9zYy1pLXBhZ2luYXRlJztcbmltcG9ydCB7IFNjSVBhZ2luYXRpb25QYXJhbXMgfSBmcm9tICcuLi9kdG8vc2MtaS1wYWdpbmF0aW9uLXBhcmFtcyc7XG5cbi8qKlxuICog0KHQtdGA0LLQuNGBINC/0LDQs9C40L3QsNGG0LjQuC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNjUGFnaW5hdGlvblNlcnZpY2U8UCBleHRlbmRzIFNjSVBhZ2luYXRpb25QYXJhbXMsIE8gZXh0ZW5kcyBvYmplY3QgPSBPbWl0PFAsIGtleW9mIFNjSVBhZ2luYXRpb25QYXJhbXM+PiB7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIEJlaGF2aW9yU3ViamVjdH0g0LjQt9C80LXQvdC10L3QuNGPINC00LDQvdC90YvRhSDQviDRgdGC0YDQsNC90LjRhtC1INC/0LDQs9C40L3QsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2UkOiBCZWhhdmlvclN1YmplY3Q8U2NJUGFnaW5hdGlvblBhcmFtcz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNjSVBhZ2luYXRpb25QYXJhbXM+KFNDX1BST0RVQ1RfUEFHSU5BVElPTl9ERUZBVUxUX09QVElPTlMpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIEJlaGF2aW9yU3ViamVjdH0g0LjQt9C80LXQvdC10L3QuNGPINC+0YHRgtCw0LLRiNC40YXRgdGPINC00LDQvdC90YvRhSDQv9Cw0LPQuNC90LDRhtC40Lgg0LHQtdC3INC00LDQvdC90YvRhSDQviDRgdGC0YDQsNC90LjRhtC1INC/0LDQs9C40L3QsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG90aGVycyQ6IEJlaGF2aW9yU3ViamVjdDxPIHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBFdmVudEVtaXR0ZXJ9INGB0L7QsdGL0YLQuNGPINC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDICjRgdC70LXQtNGD0Y7RidC40LUg0YLQvtCy0LDRgNGLKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbmV4dFBhZ2VDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBpbmplY3QoU0NfTkVYVF9QQUdFX1BBR0lOQVRJT05fQ0xJQ0spO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdGC0LDRgtGD0YHQsCDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBhdXRoU3RhdHVzJCA9IGluamVjdChTQ19VU0VSX0lORk8pLnBpcGUobWFwKCh1c2VyKSA9PiB1c2VyLmlzR3Vlc3QpKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDRgNCw0LHQvtGC0Ysg0YEg0LrQsNGC0LDQu9C+0LPQvtC8LlxuICAgICAqL1xuICAgIHB1YmxpYyBjYXRhbG9nU2VydmljZSA9IGluamVjdChTY0NhdGFsb2dTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgiDQtNCw0L3QvdGL0YUg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBkYXRhJDogT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+IHwgbnVsbD4gPSB0aGlzLm90aGVycyQucGlwZShcbiAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgIHN3aXRjaE1hcCgocGFyYW1zKSA9PlxuICAgICAgICAgICAgdGhpcy5wYWdlJC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgIC8vINCY0LfQsdC10LPQsNC10Lwg0LzQvdC+0LbQtdGB0YLQstC10L3QvdGL0YUg0YHQuNCz0L3QsNC70L7QsiDQv9GA0Lgg0L7QtNC90L7QstGA0LXQvNC10L3QvdC+0Lwg0LjQt9C80LXQvdC10L3QuNC4INGE0LjQu9GM0YLRgNC+0LIgcGFnZSQg0Lggb3RoZXJzJC5cbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgICAgICAgICAgbWFwKChwYWdlKSA9PiAoeyAuLi5wYXJhbXMsIC4uLnBhZ2UgfSkpLFxuICAgICAgICAgICAgICAgIC8vIFRPRE86INCX0LDQvNC10L3QuNGC0YwgdGhpcy5jYXRhbG9nU2VydmljZS5nZXRQcm9kdWN0cyQg0L3QsCDQsNCx0YHRgtGA0LDQutGC0L3Ri9C5INC80LXRgtC+0LQg0YHQtdGA0LLQuNGB0LAg0L/QviDQv9GA0LjQvNC10YDRgyBgVHVpVHJlZUxvYWRlcmAuXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChwYWdpbmF0aW9uUGFyYW1zKSA9PiB0aGlzLmF1dGhTdGF0dXMkLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMuY2F0YWxvZ1NlcnZpY2UuZ2V0UHJvZHVjdHMkKHBhZ2luYXRpb25QYXJhbXMpLnBpcGUoc3RhcnRXaXRoKG51bGwpKSkpKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgiDQtNCw0L3QvdGL0YUg0L/QsNCz0LjQvdCw0YbQuNC4INGBINGB0L7RhdGA0LDQvdC10L3QuNC10Lwg0L/RgNC10LTRi9C00YPRidC40YUg0LfQvdCw0YfQtdC90LjQuSDQtNC70Y8gXCLRgNCw0LfQstC+0YDQsNGH0LjQstCw0L3QuNGPXCIg0YHQv9C40YHQutCwINGC0L7QstCw0YDQvtCyLlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdC+0YXRgNCw0L3Rj9C10YLRgdGPINC/0YDQuCDQv9C10YDQtdGF0L7QtNC1INC/0L4g0YHRgtGA0LDQvdC40YbQsNC8LCDQtNC+INGC0LXRhSDQv9C+0YAg0L/QvtC60LAg0L3QtSDQsdGD0LTQtdGCINC/0L7Qu9GD0YfQtdC9INGB0LjQs9C90LDQuyBgb3RoZXJzJGAuXG4gICAgICovXG4gICAgcHVibGljIGRhdGFBY2N1bXVsYXRlZCQ6IE9ic2VydmFibGU8U2NJUGFnaW5hdGU8U2NQcm9kdWN0PiB8IG51bGw+ID0gdGhpcy5vdGhlcnMkLnBpcGUoXG4gICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHBhcmFtcykgPT4gdGhpcy5hdXRoU3RhdHVzJC5waXBlKG1hcCgoKSA9PiBwYXJhbXMpKSksXG4gICAgICAgIHN3aXRjaE1hcCgocGFyYW1zKSA9PlxuICAgICAgICAgICAgdGhpcy5wYWdlJC5waXBlKFxuICAgICAgICAgICAgICAgIC8vINCY0LfQsdC10LPQsNC10Lwg0LvQuNGI0L3QtdCz0L4g0LfQsNC/0YDQvtGB0LAg0YHQviDRgdGC0LDRgNGL0LzQuCDQv9Cw0YDQsNC80LXRgtGA0LDQvNC4OiDRgdCx0YDQvtGBINGB0YLRgNCw0L3QuNGG0YsgKHBhdGNoUGFnZSkg0L/RgNC4INGB0LzQtdC90LUgb3RoZXJzJCDRgdC40L3RhdGA0L7QvdC90L5cbiAgICAgICAgICAgICAgICAvLyDCq9C/0LjQvdCw0LXRgsK7INC10YnRkSDQttC40LLRg9GOINC/0YDQtdC00YvQtNGD0YnRg9GOINC/0L7QtNC/0LjRgdC60YMg4oCUIGRlYm91bmNlVGltZSgwKSDRgdGF0LvQvtC/0YvQstCw0LXRgiDRgtCw0LrQvtC5INCy0YHQv9C70LXRgdC6INC00L4g0L7QtNC90L7QuSDRjdC80LjRgdGB0LjQuC5cbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcbiAgICAgICAgICAgICAgICBtYXAoKHBhZ2UpID0+ICh7IC4uLnBhcmFtcywgLi4ucGFnZSB9KSksXG4gICAgICAgICAgICAgICAgLy8gVE9ETzog0JfQsNC80LXQvdC40YLRjCB0aGlzLmNhdGFsb2dTZXJ2aWNlLmdldFByb2R1Y3RzJCDQvdCwINCw0LHRgdGC0YDQsNC60YLQvdGL0Lkg0LzQtdGC0L7QtCDRgdC10YDQstC40YHQsCDQv9C+INC/0YDQuNC80LXRgNGDIGBUdWlUcmVlTG9hZGVyYC5cbiAgICAgICAgICAgICAgICBjb25jYXRNYXAoKHBhZ2luYXRpb25QYXJhbXMpID0+IHRoaXMuY2F0YWxvZ1NlcnZpY2UuZ2V0UHJvZHVjdHMkKHBhZ2luYXRpb25QYXJhbXMpLnBpcGUoc3RhcnRXaXRoKG51bGwpKSksXG4gICAgICAgICAgICAgICAgLy8gVE9ETzog0JfQsNC80LXQvdC40YLRjCBgU2NQcm9kdWN0YCDQvdCwIFQg0YLQuNC/LlxuICAgICAgICAgICAgICAgIHNjYW48U2NJUGFnaW5hdGU8U2NQcm9kdWN0PiB8IG51bGwsIFtTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+IHwgbnVsbCwgU2NJUGFnaW5hdGU8U2NQcm9kdWN0PiB8IG51bGxdPihcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgICAgICAgICAoW18sIGFjY3VtdWxhdG9yXSwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3ZhbHVlLCBhY2N1bXVsYXRvcl07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY2N1bXVsYXRvciAmJiB2YWx1ZS5tZXRhLmN1cnJlbnRQYWdlID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmRhdGEudW5zaGlmdCguLi5hY2N1bXVsYXRvci5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZSwgdmFsdWVdO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbbnVsbCwgbnVsbF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIG1hcCgoW3BhZ2luYXRlXSkgPT4gcGFnaW5hdGUpLFxuICAgICAgICAgICAgICAgIHRha2VXaGlsZSgocGFnaW5hdGUpID0+IHBhZ2luYXRlID09PSBudWxsIHx8IHBhZ2luYXRlLm1ldGEuY3VycmVudFBhZ2UgPCBwYWdpbmF0ZS5tZXRhLmxhc3RQYWdlLCB0cnVlKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NQYWdpbmF0aW9uU2VydmljZX0uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLm90aGVycyRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRQYWdlQ2xpY2tFdmVudC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbigoYWNjdW11bGF0b3IpID0+IGFjY3VtdWxhdG9yICsgMSwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoMSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHBhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhdGNoUGFnZSh7IHBhZ2U6IHBhZ2UgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LvQvdC+0YHRgtGM0Y4g0L7QsdC90L7QstC70Y/QtdGCINC30L3QsNGH0LXQvdC40Y8g0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40Lgge0BsaW5rIHBhZ2UkfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdQYWdlVmFsdWUg0J3QvtCy0YvQtSDQtNCw0L3QvdGL0LUg0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2UobmV3UGFnZVZhbHVlOiBTY0lQYWdpbmF0aW9uUGFyYW1zKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZSQubmV4dChuZXdQYWdlVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCn0LDRgdGC0LjRh9C90L4g0L7QsdC90L7QstC70Y/QtdGCINC30L3QsNGH0LXQvdC40Y8g0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40Lgge0BsaW5rIHBhZ2UkfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJ0aWFsUGFnZVZhbHVlINCd0L7QstGL0LUg0LTQsNC90L3Ri9C1INGB0YLRgNCw0L3QuNGG0Ysg0L/QsNCz0LjQvdCw0YbQuNC4LiDQnNC+0LbQvdC+INC/0LXRgNC10LTQsNGC0Ywg0YfQsNGB0YLRjCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHVibGljIHBhdGNoUGFnZShwYXJ0aWFsUGFnZVZhbHVlOiBQYXJ0aWFsPFNjSVBhZ2luYXRpb25QYXJhbXM+KTogdm9pZCB7XG4gICAgICAgIC8vINCX0L3QsNGH0LXQvdC40Y8g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2UkLnZhbHVlO1xuXG4gICAgICAgIC8vINCe0LHQvdC+0LLQu9GP0LXQvCDRgtC+0LvRjNC60L4g0YLQtSDQv9C+0LvRjywg0LrQvtGC0L7RgNGL0LUg0L/QtdGA0LXQtNCw0L3RiyDQsiBwYXJ0aWFsUGFnZVZhbHVlLlxuICAgICAgICBjb25zdCB1cGRhdGVkUGFnZTogU2NJUGFnaW5hdGlvblBhcmFtcyA9IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICAgICAgICBwYWdlOiBwYXJ0aWFsUGFnZVZhbHVlLnBhZ2UgPz8gY3VycmVudFBhZ2UucGFnZSxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICAgICAgICBwZXJQYWdlOiBwYXJ0aWFsUGFnZVZhbHVlLnBlclBhZ2UgPz8gY3VycmVudFBhZ2UucGVyUGFnZSxcbiAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucGFnZSQubmV4dCh1cGRhdGVkUGFnZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/QvtC70L3QvtGB0YLRjNGOINC+0LHQvdC+0LLQu9GP0LXRgiDQvtGB0YLQsNC70YzQvdGL0LUg0L/QsNGA0LDQvNC10YLRgNGLINC/0LDQs9C40L3QsNGG0LjQuCB7QGxpbmsgb3RoZXJzJH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3T3RoZXJzVmFsdWUg0J3QvtCy0YvQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRPdGhlcnMobmV3T3RoZXJzVmFsdWU6IE8pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vdGhlcnMkLm5leHQobmV3T3RoZXJzVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCn0LDRgdGC0LjRh9C90L4g0L7QsdC90L7QstC70Y/QtdGCINC+0YHRgtCw0LvRjNC90YvQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0L/QsNCz0LjQvdCw0YbQuNC4IHtAbGluayBvdGhlcnMkfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJ0aWFsT3RoZXJzVmFsdWUg0J3QvtCy0YvQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0L/QsNCz0LjQvdCw0YbQuNC4LiDQnNC+0LbQvdC+INC/0LXRgNC10LTQsNGC0Ywg0YfQsNGB0YLRjCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHVibGljIHBhdGNoT3RoZXJzKHBhcnRpYWxPdGhlcnNWYWx1ZTogUGFydGlhbDxPPik6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50T3RoZXJzID0gdGhpcy5vdGhlcnMkLnZhbHVlID8/ICh7fSBhcyBPKTtcblxuICAgICAgICAvLyDQmNC30LHQtdCz0LDQtdC8INC+0LHQvdC+0LLQu9C10L3QuNGPLCDQtdGB0LvQuCBwYXJ0aWFsT3RoZXJzVmFsdWUg0L/Rg9GB0YLQvtC5LlxuICAgICAgICBpZiAoT2JqZWN0LmtleXMocGFydGlhbE90aGVyc1ZhbHVlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkT3RoZXJzOiBPID0geyAuLi5jdXJyZW50T3RoZXJzLCAuLi5wYXJ0aWFsT3RoZXJzVmFsdWUgfTtcbiAgICAgICAgICAgIHRoaXMub3RoZXJzJC5uZXh0KHVwZGF0ZWRPdGhlcnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdC90L7QstC70Y/QtdGCINCy0YHQtSDQtNCw0L3QvdGL0LUg0L/QsNCz0LjQvdCw0YbQuNC4IHtAbGluayBwYWdlJH0g0Lgge0BsaW5rIG90aGVycyR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIG5ld1ZhbHVlINCd0L7QstGL0LUg0L/QsNGA0LDQvNC10YLRgNGLINC/0LDQs9C40L3QsNGG0LjQuCDQtNC70Y8ge0BsaW5rIHBhZ2UkfSDQuCB7QGxpbmsgb3RoZXJzJH0uXG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2luYXRpb25QYXJhbXMobmV3VmFsdWU6IFApOiB2b2lkIHtcbiAgICAgICAgLy8g0J7QsdC90L7QstC70Y/QtdC8INC30L3QsNGH0LXQvdC40LUgcGFnZSQuXG4gICAgICAgIHRoaXMucGFnZSQubmV4dCh7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICAgICAgICBwYWdlOiBuZXdWYWx1ZS5wYWdlLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgICAgICAgICAgcGVyUGFnZTogbmV3VmFsdWUucGVyUGFnZSxcbiAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyDQntCx0L3QvtCy0LvRj9C10Lwg0LfQvdCw0YfQtdC90LjQtSBvdGhlcnMkLlxuICAgICAgICBjb25zdCBvdGhlcnNWYWx1ZSA9IHRoaXMuZXh0cmFjdE90aGVycyhuZXdWYWx1ZSk7XG4gICAgICAgIHRoaXMub3RoZXJzJC5uZXh0KG90aGVyc1ZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0LTQtdC70Y/QtdGCINC/0LDRgNCw0LzQtdGC0YDRiyDQv9Cw0LPQuNC90LDRhtC40LgsINC90LUg0L7RgtC90L7RgdGP0YnQuNC10YHRjyDQuiDRgdGC0YDQsNC90LjRhtC1INC/0LDQs9C40L3QsNGG0LjQuCB7QGxpbmsgT30g0LjQtyDQv9C+0LvQvdC+0LPQviDQvtCx0YrQtdC60YLQsCDQv9Cw0YDQsNC80LXRgtGA0L7QsiDQv9Cw0LPQuNC90LDRhtC40Lgge0BsaW5rIFB9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlINCe0LHRitC10LrRgtGLINC/0LDRgNCw0LzQtdGC0YDQvtCyINC/0LDQs9C40L3QsNGG0LjQuCB7QGxpbmsgUH1cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICAgIHByaXZhdGUgZXh0cmFjdE90aGVycyh2YWx1ZTogUCk6IE8ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIGNvbnN0IHsgcGFnZSwgcGVyUGFnZSwgLi4ub3RoZXJzIH0gPSB2YWx1ZTtcblxuICAgICAgICByZXR1cm4gb3RoZXJzIGFzIE87XG4gICAgfVxufVxuIl19
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9wYWdpbmF0aW9uL3NlcnZpY2VzL3NjLXBhZ2luYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3ZJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFDSCw2QkFBNkIsRUFDN0IscUNBQXFDLEVBQ3JDLDZCQUE2QixHQUVoQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFJbkU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBNkY1Qjs7T0FFRztJQUNIO1FBL0ZBOztXQUVHO1FBQ2MsVUFBSyxHQUF5QyxJQUFJLGVBQWUsQ0FBc0IscUNBQXFDLENBQUMsQ0FBQztRQUUvSTs7V0FFRztRQUNjLFlBQU8sR0FBbUMsSUFBSSxlQUFlLENBQWdCLFNBQVMsQ0FBQyxDQUFDO1FBRXpHOztXQUVHO1FBQ2EsdUJBQWtCLEdBQXVCLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBRS9GOztXQUVHO1FBQ0ksZ0JBQVcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcs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SUc7SUFDSCxrREFBa0Q7SUFDMUMsYUFBYSxDQUFDLEtBQVE7UUFDMUIsNkRBQTZEO1FBQzdELE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRTNDLE9BQU8sTUFBVyxDQUFDO0lBQ3ZCLENBQUM7K0dBdk1RLG1CQUFtQjttSEFBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHR1aUlzUHJlc2VudCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb25jYXRNYXAsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHNjYW4sIHNoYXJlLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjUHJvZHVjdCB9IGZyb20gJy4uLy4uL2NhdGFsb2cvZHRvL3NjLXByb2R1Y3QnO1xuaW1wb3J0IHsgU2NDYXRhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uL2NhdGFsb2cvc2VydmljZXMvc2MtY2F0YWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgU0NfTkVYVF9QQUdFX1BBR0lOQVRJT05fQ0xJQ0ssXG4gICAgU0NfUFJPRFVDVF9QQUdJTkFUSU9OX0RFRkFVTFRfT1BUSU9OUyxcbiAgICBTQ19QUk9EVUNUU19QQUdJTkFUSU9OX0xPQURFUixcbiAgICBTY1Byb2R1Y3RzUGFnaW5hdGlvbkxvYWRlcixcbn0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLXByb2R1Y3QtcGFnaW5hdGlvbi1vcHRpb25zJztcbmltcG9ydCB7IFNDX1VTRVJfSU5GTyB9IGZyb20gJy4uLy4uL3VzZXIvdG9rZW5zL3NjLXVzZXItcHJvdmlkZXJzJztcbmltcG9ydCB7IFNjSVBhZ2luYXRlIH0gZnJvbSAnLi4vZHRvL3NjLWktcGFnaW5hdGUnO1xuaW1wb3J0IHsgU2NJUGFnaW5hdGlvblBhcmFtcyB9IGZyb20gJy4uL2R0by9zYy1pLXBhZ2luYXRpb24tcGFyYW1zJztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2NQYWdpbmF0aW9uU2VydmljZTxQIGV4dGVuZHMgU2NJUGFnaW5hdGlvblBhcmFtcywgTyBleHRlbmRzIG9iamVjdCA9IE9taXQ8UCwga2V5b2YgU2NJUGFnaW5hdGlvblBhcmFtcz4+IHtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgQmVoYXZpb3JTdWJqZWN0fSDQuNC30LzQtdC90LXQvdC40Y8g0LTQsNC90L3Ri9GFINC+INGB0YLRgNCw0L3QuNGG0LUg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZSQ6IEJlaGF2aW9yU3ViamVjdDxTY0lQYWdpbmF0aW9uUGFyYW1zPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2NJUGFnaW5hdGlvblBhcmFtcz4oU0NfUFJPRFVDVF9QQUdJTkFUSU9OX0RFRkFVTFRfT1BUSU9OUyk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgQmVoYXZpb3JTdWJqZWN0fSDQuNC30LzQtdC90LXQvdC40Y8g0L7RgdGC0LDQstGI0LjRhdGB0Y8g0LTQsNC90L3Ri9GFINC/0LDQs9C40L3QsNGG0LjQuCDQsdC10Lcg0LTQsNC90L3Ri9GFINC+INGB0YLRgNCw0L3QuNGG0LUg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3RoZXJzJDogQmVoYXZpb3JTdWJqZWN0PE8gfCB1bmRlZmluZWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIEV2ZW50RW1pdHRlcn0g0YHQvtCx0YvRgtC40Y8g0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMgKNGB0LvQtdC00YPRjtGJ0LjQtSDRgtC+0LLQsNGA0YspLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBuZXh0UGFnZUNsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IGluamVjdChTQ19ORVhUX1BBR0VfUEFHSU5BVElPTl9DTElDSyk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0YLQsNGC0YPRgdCwINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIGF1dGhTdGF0dXMkID0gaW5qZWN0KFNDX1VTRVJfSU5GTykucGlwZShtYXAoKHVzZXIpID0+IHVzZXIuaXNHdWVzdCkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gICAgICovXG4gICAgcHVibGljIGNhdGFsb2dTZXJ2aWNlID0gaW5qZWN0KFNjQ2F0YWxvZ1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0JfQsNCz0YDRg9C30YfQuNC6INGB0YLRgNCw0L3QuNGG0Ysg0YLQvtCy0LDRgNC+0LIuINCf0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIOKAlCDQvtCx0YvRh9C90YvQuSDRgdC/0LjRgdC+0Log0YLQvtCy0LDRgNC+0LIgKHtAbGluayBTY0NhdGFsb2dTZXJ2aWNlLmdldFByb2R1Y3RzJH0pO1xuICAgICAqINC80L7QttC10YIg0LHRi9GC0Ywg0L/QtdGA0LXQvtC/0YDQtdC00LXQu9GR0L0g0YfQtdGA0LXQtyDRgtC+0LrQtdC9IHtAbGluayBTQ19QUk9EVUNUU19QQUdJTkFUSU9OX0xPQURFUn0gKNC90LDQv9GA0LjQvNC10YAsINC00LvRjyDRgdGC0YDQsNC90LjRhtGLINC90L7QstGL0YUg0YLQvtCy0LDRgNC+0LIpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtcyDQn9Cw0YDQsNC80LXRgtGA0Ysg0LfQsNC/0YDQvtGB0LAg0YHRgtGA0LDQvdC40YbRiyDRgtC+0LLQsNGA0L7QsiDRgSDQv9Cw0LPQuNC90LDRhtC40LXQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RzTG9hZGVyOiBTY1Byb2R1Y3RzUGFnaW5hdGlvbkxvYWRlciA9XG4gICAgICAgIGluamVjdChTQ19QUk9EVUNUU19QQUdJTkFUSU9OX0xPQURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KSA/P1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9jb25zaXN0ZW50LWZ1bmN0aW9uLXNjb3BpbmdcbiAgICAgICAgKChwYXJhbXMpID0+IHRoaXMuY2F0YWxvZ1NlcnZpY2UuZ2V0UHJvZHVjdHMkKHBhcmFtcykpO1xuXG4gICAgLyoqXG4gICAgICog0J7QsdGK0LXQutGCINC00LDQvdC90YvRhSDQv9Cw0LPQuNC90LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIGRhdGEkOiBPYnNlcnZhYmxlPFNjSVBhZ2luYXRlPFNjUHJvZHVjdD4gfCBudWxsPiA9IHRoaXMub3RoZXJzJC5waXBlKFxuICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgc3dpdGNoTWFwKChwYXJhbXMpID0+XG4gICAgICAgICAgICB0aGlzLnBhZ2UkLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgICAgICAgICAgLy8g0JjQt9Cx0LXQs9Cw0LXQvCDQvNC90L7QttC10YHRgtCy0LXQvdC90YvRhSDRgdC40LPQvdCw0LvQvtCyINC/0YDQuCDQvtC00L3QvtCy0YDQtdC80LXQvdC90L7QvCDQuNC30LzQtdC90LXQvdC40Lgg0YTQuNC70YzRgtGA0L7QsiBwYWdlJCDQuCBvdGhlcnMkLlxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgICAgICAgICBtYXAoKHBhZ2UpID0+ICh7IC4uLnBhcmFtcywgLi4ucGFnZSB9KSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChwYWdpbmF0aW9uUGFyYW1zKSA9PiB0aGlzLmF1dGhTdGF0dXMkLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMucHJvZHVjdHNMb2FkZXIocGFnaW5hdGlvblBhcmFtcykucGlwZShzdGFydFdpdGgobnVsbCkpKSkpXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0J7QsdGK0LXQutGCINC00LDQvdC90YvRhSDQv9Cw0LPQuNC90LDRhtC40Lgg0YEg0YHQvtGF0YDQsNC90LXQvdC40LXQvCDQv9GA0LXQtNGL0LTRg9GJ0LjRhSDQt9C90LDRh9C10L3QuNC5INC00LvRjyBcItGA0LDQt9Cy0L7RgNCw0YfQuNCy0LDQvdC40Y9cIiDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIuXG4gICAgICog0KHQv9C40YHQvtC6INGB0L7RhdGA0LDQvdGP0LXRgtGB0Y8g0L/RgNC4INC/0LXRgNC10YXQvtC00LUg0L/QviDRgdGC0YDQsNC90LjRhtCw0LwsINC00L4g0YLQtdGFINC/0L7RgCDQv9C+0LrQsCDQvdC1INCx0YPQtNC10YIg0L/QvtC70YPRh9C10L0g0YHQuNCz0L3QsNC7IGBvdGhlcnMkYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGF0YUFjY3VtdWxhdGVkJDogT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+IHwgbnVsbD4gPSB0aGlzLm90aGVycyQucGlwZShcbiAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgIHN3aXRjaE1hcCgocGFyYW1zKSA9PiB0aGlzLmF1dGhTdGF0dXMkLnBpcGUobWFwKCgpID0+IHBhcmFtcykpKSxcbiAgICAgICAgc3dpdGNoTWFwKChwYXJhbXMpID0+XG4gICAgICAgICAgICB0aGlzLnBhZ2UkLnBpcGUoXG4gICAgICAgICAgICAgICAgLy8g0JjQt9Cx0LXQs9Cw0LXQvCDQu9C40YjQvdC10LPQviDQt9Cw0L/RgNC+0YHQsCDRgdC+INGB0YLQsNGA0YvQvNC4INC/0LDRgNCw0LzQtdGC0YDQsNC80Lg6INGB0LHRgNC+0YEg0YHRgtGA0LDQvdC40YbRiyAocGF0Y2hQYWdlKSDQv9GA0Lgg0YHQvNC10L3QtSBvdGhlcnMkINGB0LjQvdGF0YDQvtC90L3QvlxuICAgICAgICAgICAgICAgIC8vIMKr0L/QuNC90LDQtdGCwrsg0LXRidGRINC20LjQstGD0Y4g0L/RgNC10LTRi9C00YPRidGD0Y4g0L/QvtC00L/QuNGB0LrRgyDigJQgZGVib3VuY2VUaW1lKDApINGB0YXQu9C+0L/Ri9Cy0LDQtdGCINGC0LDQutC+0Lkg0LLRgdC/0LvQtdGB0Log0LTQviDQvtC00L3QvtC5INGN0LzQuNGB0YHQuNC4LlxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzLEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgICAgICAgICAgICAgIG1hcCgocGFnZSkgPT4gKHsgLi4ucGFyYW1zLCAuLi5wYWdlIH0pKSxcbiAgICAgICAgICAgICAgICBjb25jYXRNYXAoKHBhZ2luYXRpb25QYXJhbXMpID0+IHRoaXMucHJvZHVjdHNMb2FkZXIocGFnaW5hdGlvblBhcmFtcykucGlwZShzdGFydFdpdGgobnVsbCkpKSxcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiDQl9Cw0LzQtdC90LjRgtGMIGBTY1Byb2R1Y3RgINC90LAgVCDRgtC40L8uXG4gICAgICAgICAgICAgICAgc2NhbjxTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+IHwgbnVsbCwgW1NjSVBhZ2luYXRlPFNjUHJvZHVjdD4gfCBudWxsLCBTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+IHwgbnVsbF0+KFxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgICAgIChbXywgYWNjdW11bGF0b3JdLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbdmFsdWUsIGFjY3VtdWxhdG9yXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjY3VtdWxhdG9yICYmIHZhbHVlLm1ldGEuY3VycmVudFBhZ2UgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuZGF0YS51bnNoaWZ0KC4uLmFjY3VtdWxhdG9yLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3ZhbHVlLCB2YWx1ZV07XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtudWxsLCBudWxsXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbWFwKChbcGFnaW5hdGVdKSA9PiBwYWdpbmF0ZSksXG4gICAgICAgICAgICAgICAgdGFrZVdoaWxlKChwYWdpbmF0ZSkgPT4gcGFnaW5hdGUgPT09IG51bGwgfHwgcGFnaW5hdGUubWV0YS5jdXJyZW50UGFnZSA8IHBhZ2luYXRlLm1ldGEubGFzdFBhZ2UsIHRydWUpXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY1BhZ2luYXRpb25TZXJ2aWNlfS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMub3RoZXJzJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dFBhZ2VDbGlja0V2ZW50LnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FuKChhY2N1bXVsYXRvcikgPT4gYWNjdW11bGF0b3IgKyAxLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocGFnZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGF0Y2hQYWdlKHsgcGFnZTogcGFnZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0L7Qu9C90L7RgdGC0YzRjiDQvtCx0L3QvtCy0LvRj9C10YIg0LfQvdCw0YfQtdC90LjRjyDRgdGC0YDQsNC90LjRhtGLINC/0LDQs9C40L3QsNGG0LjQuCB7QGxpbmsgcGFnZSR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIG5ld1BhZ2VWYWx1ZSDQndC+0LLRi9C1INC00LDQvdC90YvQtSDRgdGC0YDQsNC90LjRhtGLINC/0LDQs9C40L3QsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UGFnZShuZXdQYWdlVmFsdWU6IFNjSVBhZ2luYXRpb25QYXJhbXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdlJC5uZXh0KG5ld1BhZ2VWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KfQsNGB0YLQuNGH0L3QviDQvtCx0L3QvtCy0LvRj9C10YIg0LfQvdCw0YfQtdC90LjRjyDRgdGC0YDQsNC90LjRhtGLINC/0LDQs9C40L3QsNGG0LjQuCB7QGxpbmsgcGFnZSR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcnRpYWxQYWdlVmFsdWUg0J3QvtCy0YvQtSDQtNCw0L3QvdGL0LUg0YHRgtGA0LDQvdC40YbRiyDQv9Cw0LPQuNC90LDRhtC40LguINCc0L7QttC90L4g0L/QtdGA0LXQtNCw0YLRjCDRh9Cw0YHRgtGMINC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcGF0Y2hQYWdlKHBhcnRpYWxQYWdlVmFsdWU6IFBhcnRpYWw8U2NJUGFnaW5hdGlvblBhcmFtcz4pOiB2b2lkIHtcbiAgICAgICAgLy8g0JfQvdCw0YfQtdC90LjRjyDQv9C+INGD0LzQvtC70YfQsNC90LjRji5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgICAgICBjb25zdCBjdXJyZW50UGFnZSA9IHRoaXMucGFnZSQudmFsdWU7XG5cbiAgICAgICAgLy8g0J7QsdC90L7QstC70Y/QtdC8INGC0L7Qu9GM0LrQviDRgtC1INC/0L7Qu9GPLCDQutC+0YLQvtGA0YvQtSDQv9C10YDQtdC00LDQvdGLINCyIHBhcnRpYWxQYWdlVmFsdWUuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQYWdlOiBTY0lQYWdpbmF0aW9uUGFyYW1zID0ge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcbiAgICAgICAgICAgIHBhZ2U6IHBhcnRpYWxQYWdlVmFsdWUucGFnZSA/PyBjdXJyZW50UGFnZS5wYWdlLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcbiAgICAgICAgICAgIHBlclBhZ2U6IHBhcnRpYWxQYWdlVmFsdWUucGVyUGFnZSA/PyBjdXJyZW50UGFnZS5wZXJQYWdlLFxuICAgICAgICAgICAgcGFnaW5hdGU6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5wYWdlJC5uZXh0KHVwZGF0ZWRQYWdlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LvQvdC+0YHRgtGM0Y4g0L7QsdC90L7QstC70Y/QtdGCINC+0YHRgtCw0LvRjNC90YvQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0L/QsNCz0LjQvdCw0YbQuNC4IHtAbGluayBvdGhlcnMkfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdPdGhlcnNWYWx1ZSDQndC+0LLRi9C1INC/0LDRgNCw0LzQtdGC0YDRiyDQv9Cw0LPQuNC90LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHNldE90aGVycyhuZXdPdGhlcnNWYWx1ZTogTyk6IHZvaWQge1xuICAgICAgICB0aGlzLm90aGVycyQubmV4dChuZXdPdGhlcnNWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KfQsNGB0YLQuNGH0L3QviDQvtCx0L3QvtCy0LvRj9C10YIg0L7RgdGC0LDQu9GM0L3Ri9C1INC/0LDRgNCw0LzQtdGC0YDRiyDQv9Cw0LPQuNC90LDRhtC40Lgge0BsaW5rIG90aGVycyR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcnRpYWxPdGhlcnNWYWx1ZSDQndC+0LLRi9C1INC/0LDRgNCw0LzQtdGC0YDRiyDQv9Cw0LPQuNC90LDRhtC40LguINCc0L7QttC90L4g0L/QtdGA0LXQtNCw0YLRjCDRh9Cw0YHRgtGMINC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcGF0Y2hPdGhlcnMocGFydGlhbE90aGVyc1ZhbHVlOiBQYXJ0aWFsPE8+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPdGhlcnMgPSB0aGlzLm90aGVycyQudmFsdWUgPz8gKHt9IGFzIE8pO1xuXG4gICAgICAgIC8vINCY0LfQsdC10LPQsNC10Lwg0L7QsdC90L7QstC70LXQvdC40Y8sINC10YHQu9C4IHBhcnRpYWxPdGhlcnNWYWx1ZSDQv9GD0YHRgtC+0LkuXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhwYXJ0aWFsT3RoZXJzVmFsdWUpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRPdGhlcnM6IE8gPSB7IC4uLmN1cnJlbnRPdGhlcnMsIC4uLnBhcnRpYWxPdGhlcnNWYWx1ZSB9O1xuICAgICAgICAgICAgdGhpcy5vdGhlcnMkLm5leHQodXBkYXRlZE90aGVycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0L3QvtCy0LvRj9C10YIg0LLRgdC1INC00LDQvdC90YvQtSDQv9Cw0LPQuNC90LDRhtC40Lgge0BsaW5rIHBhZ2UkfSDQuCB7QGxpbmsgb3RoZXJzJH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3VmFsdWUg0J3QvtCy0YvQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0L/QsNCz0LjQvdCw0YbQuNC4INC00LvRjyB7QGxpbmsgcGFnZSR9INC4IHtAbGluayBvdGhlcnMkfS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UGFnaW5hdGlvblBhcmFtcyhuZXdWYWx1ZTogUCk6IHZvaWQge1xuICAgICAgICAvLyDQntCx0L3QvtCy0LvRj9C10Lwg0LfQvdCw0YfQtdC90LjQtSBwYWdlJC5cbiAgICAgICAgdGhpcy5wYWdlJC5uZXh0KHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcbiAgICAgICAgICAgIHBhZ2U6IG5ld1ZhbHVlLnBhZ2UsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICAgICAgICBwZXJQYWdlOiBuZXdWYWx1ZS5wZXJQYWdlLFxuICAgICAgICAgICAgcGFnaW5hdGU6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vINCe0LHQvdC+0LLQu9GP0LXQvCDQt9C90LDRh9C10L3QuNC1IG90aGVycyQuXG4gICAgICAgIGNvbnN0IG90aGVyc1ZhbHVlID0gdGhpcy5leHRyYWN0T3RoZXJzKG5ld1ZhbHVlKTtcbiAgICAgICAgdGhpcy5vdGhlcnMkLm5leHQob3RoZXJzVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0YvQtNC10LvRj9C10YIg0L/QsNGA0LDQvNC10YLRgNGLINC/0LDQs9C40L3QsNGG0LjQuCwg0L3QtSDQvtGC0L3QvtGB0Y/RidC40LXRgdGPINC6INGB0YLRgNCw0L3QuNGG0LUg0L/QsNCz0LjQvdCw0YbQuNC4IHtAbGluayBPfSDQuNC3INC/0L7Qu9C90L7Qs9C+INC+0LHRitC10LrRgtCwINC/0LDRgNCw0LzQtdGC0YDQvtCyINC/0LDQs9C40L3QsNGG0LjQuCB7QGxpbmsgUH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUg0J7QsdGK0LXQutGC0Ysg0L/QsNGA0LDQvNC10YLRgNC+0LIg0L/QsNCz0LjQvdCw0YbQuNC4IHtAbGluayBQfVxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gICAgcHJpdmF0ZSBleHRyYWN0T3RoZXJzKHZhbHVlOiBQKTogTyB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgY29uc3QgeyBwYWdlLCBwZXJQYWdlLCAuLi5vdGhlcnMgfSA9IHZhbHVlO1xuXG4gICAgICAgIHJldHVybiBvdGhlcnMgYXMgTztcbiAgICB9XG59XG4iXX0=
|
|
@@ -19,4 +19,9 @@ export const SC_PRODUCT_PAGINATION_OPTIONS = new InjectionToken('SC_PRODUCT_PAGI
|
|
|
19
19
|
export const SC_NEXT_PAGE_PAGINATION_CLICK = new InjectionToken('SC_NEXT_PAGE_PAGINATION_CLICK', {
|
|
20
20
|
factory: () => new EventEmitter(),
|
|
21
21
|
});
|
|
22
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Токен подключаемого загрузчика страницы товаров для {@link ScPaginationService}.
|
|
24
|
+
* Если не задан, используется загрузчик по умолчанию (`ScCatalogService.getProducts$`).
|
|
25
|
+
*/
|
|
26
|
+
export const SC_PRODUCTS_PAGINATION_LOADER = new InjectionToken('SC_PRODUCTS_PAGINATION_LOADER');
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZHVjdC1wYWdpbmF0aW9uLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Rva2Vucy9zYy1wcm9kdWN0LXBhZ2luYXRpb24tb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVE3RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUF3QjtJQUN0RSxPQUFPLEVBQUUsRUFBRTtJQUNYLFFBQVEsRUFBRSxJQUFJO0lBQ2QsSUFBSSxFQUFFLENBQUM7Q0FDVixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsK0JBQStCLEVBQUU7SUFDbEgsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLHFDQUFxQztDQUN2RCxDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLElBQUksY0FBYyxDQUFxQiwrQkFBK0IsRUFBRTtJQUNqSCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxZQUFZLEVBQVE7Q0FDMUMsQ0FBQyxDQUFDO0FBT0g7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxjQUFjLENBQTZCLCtCQUErQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHR5cGUgeyBTY1Byb2R1Y3QgfSBmcm9tICcuLi9jYXRhbG9nL2R0by9zYy1wcm9kdWN0JztcbmltcG9ydCB0eXBlIHsgU2NJQ2F0ZWdvcnlQcm9kdWN0UGFnaW5hdGlvblBhcmFtcyB9IGZyb20gJy4uL2NhdGFsb2cvaW50ZXJmYWNlcy9zYy1pLWNhdGVnb3J5LXByb2R1Y3RzLXBhZ2luYXRpb24tcGFyYW1zJztcbmltcG9ydCB0eXBlIHsgU2NJUGFnaW5hdGUgfSBmcm9tICcuLi9wYWdpbmF0aW9uL2R0by9zYy1pLXBhZ2luYXRlJztcbmltcG9ydCB7IFNjSVBhZ2luYXRpb25QYXJhbXMgfSBmcm9tICcuLi9wYWdpbmF0aW9uL2R0by9zYy1pLXBhZ2luYXRpb24tcGFyYW1zJztcblxuLyoqXG4gKiDQl9C90LDRh9C10L3QuNGPINC/0LDQs9C40L3QsNGG0LjQuCDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIg0LrQsNGC0LXQs9C+0YDQuNC4INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLlxuICovXG5leHBvcnQgY29uc3QgU0NfUFJPRFVDVF9QQUdJTkFUSU9OX0RFRkFVTFRfT1BUSU9OUzogU2NJUGFnaW5hdGlvblBhcmFtcyA9IHtcbiAgICBwZXJQYWdlOiAyMCxcbiAgICBwYWdpbmF0ZTogdHJ1ZSxcbiAgICBwYWdlOiAwLFxufTtcblxuLyoqXG4gKiDQotC+0LrQtdC9INC30L3QsNGH0LXQvdC40Lkg0L/QsNCz0LjQvdCw0YbQuNC4INGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7QsiDQsiDQutCw0YLQsNC70L7Qs9C1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLlxuICovXG5leHBvcnQgY29uc3QgU0NfUFJPRFVDVF9QQUdJTkFUSU9OX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48U2NJUGFnaW5hdGlvblBhcmFtcz4oJ1NDX1BST0RVQ1RfUEFHSU5BVElPTl9PUFRJT05TJywge1xuICAgIGZhY3Rvcnk6ICgpID0+IFNDX1BST0RVQ1RfUEFHSU5BVElPTl9ERUZBVUxUX09QVElPTlMsXG59KTtcblxuLyoqXG4gKiAg0KLQvtC60LXQvSB7QGxpbmsgRXZlbnRFbWl0dGVyfSDRgdC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCf0L7QutCw0LfQsNGC0Ywg0YHQu9C10LTRg9GO0YnQuNC1INC/0L7Qt9C40YbQuNC4INC60LDRgtC10LPQvtGA0LjQuFwiLlxuICovXG5leHBvcnQgY29uc3QgU0NfTkVYVF9QQUdFX1BBR0lOQVRJT05fQ0xJQ0sgPSBuZXcgSW5qZWN0aW9uVG9rZW48RXZlbnRFbWl0dGVyPHZvaWQ+PignU0NfTkVYVF9QQUdFX1BBR0lOQVRJT05fQ0xJQ0snLCB7XG4gICAgZmFjdG9yeTogKCkgPT4gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpLFxufSk7XG5cbi8qKlxuICog0KTRg9C90LrRhtC40Y8g0LfQsNCz0YDRg9C30LrQuCDRgdGC0YDQsNC90LjRhtGLINGC0L7QstCw0YDQvtCyINC00LvRjyB7QGxpbmsgU2NQYWdpbmF0aW9uU2VydmljZX0uXG4gKi9cbmV4cG9ydCB0eXBlIFNjUHJvZHVjdHNQYWdpbmF0aW9uTG9hZGVyID0gKHBhcmFtczogU2NJQ2F0ZWdvcnlQcm9kdWN0UGFnaW5hdGlvblBhcmFtcykgPT4gT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+PjtcblxuLyoqXG4gKiDQotC+0LrQtdC9INC/0L7QtNC60LvRjtGH0LDQtdC80L7Qs9C+INC30LDQs9GA0YPQt9GH0LjQutCwINGB0YLRgNCw0L3QuNGG0Ysg0YLQvtCy0LDRgNC+0LIg0LTQu9GPIHtAbGluayBTY1BhZ2luYXRpb25TZXJ2aWNlfS5cbiAqINCV0YHQu9C4INC90LUg0LfQsNC00LDQvSwg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC30LDQs9GA0YPQt9GH0LjQuiDQv9C+INGD0LzQvtC70YfQsNC90LjRjiAoYFNjQ2F0YWxvZ1NlcnZpY2UuZ2V0UHJvZHVjdHMkYCkuXG4gKi9cbmV4cG9ydCBjb25zdCBTQ19QUk9EVUNUU19QQUdJTkFUSU9OX0xPQURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTY1Byb2R1Y3RzUGFnaW5hdGlvbkxvYWRlcj4oJ1NDX1BST0RVQ1RTX1BBR0lOQVRJT05fTE9BREVSJyk7XG4iXX0=
|