monkey-front-core 0.0.426 → 0.0.428
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/esm2020/lib/core/interfaces/index.mjs +2 -1
- package/esm2020/lib/core/interfaces/monkeyecx-resolver.mjs +2 -0
- package/esm2020/lib/core/services/commons/index.mjs +2 -1
- package/esm2020/lib/core/services/commons/monkeyecx-commons-resolve.service.mjs +123 -0
- package/esm2020/lib/core/services/commons/monkeyecx-commons.service.mjs +2 -1
- package/fesm2015/monkey-front-core.mjs +124 -3
- package/fesm2015/monkey-front-core.mjs.map +1 -1
- package/fesm2020/monkey-front-core.mjs +120 -3
- package/fesm2020/monkey-front-core.mjs.map +1 -1
- package/lib/core/interfaces/index.d.ts +1 -0
- package/lib/core/interfaces/monkeyecx-resolver.d.ts +39 -0
- package/lib/core/services/commons/index.d.ts +1 -0
- package/lib/core/services/commons/monkeyecx-commons-resolve.service.d.ts +56 -0
- package/lib/core/services/commons/monkeyecx-commons.service.d.ts +1 -0
- package/monkey-front-core-0.0.428.tgz +0 -0
- package/package.json +3 -3
- package/monkey-front-core-0.0.426.tgz +0 -0
|
@@ -17,6 +17,7 @@ export * from './monkeyecx-program';
|
|
|
17
17
|
export * from './monkeyecx-releases';
|
|
18
18
|
export * from './monkeyecx-request-in-progress';
|
|
19
19
|
export * from './monkeyecx-request-paged';
|
|
20
|
+
export * from './monkeyecx-resolver';
|
|
20
21
|
export * from './monkeyecx-response-links';
|
|
21
22
|
export * from './monkeyecx-response-paged';
|
|
22
23
|
export * from './monkeyecx-saved-state';
|
|
@@ -31,4 +32,4 @@ export * from './request-download';
|
|
|
31
32
|
export * from './request-queue';
|
|
32
33
|
export * from './request-upload';
|
|
33
34
|
export * from './schedules';
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9ua2V5ZWN4LWF1dGgtY3JlZGVudGlhbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC1jb21wYW55JztcclxuZXhwb3J0ICogZnJvbSAnLi9tb25rZXllY3gtY29tcGFueS1wZW5kZW5jaWVzJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb25rZXllY3gtY29uZmlnJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb25rZXllY3gtY29uZmlnLWJvb3RzdHJhcCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9ua2V5ZWN4LWNvdW50cnktc2VjdXJpdHknO1xyXG5leHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC1lcnJvci1yZXNwb25zZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9ua2V5ZWN4LWZpbHRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9ua2V5ZWN4LWhhbmRsZWQtZXJyb3ItcmVzcG9uc2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC1oZWFkZXItY3JlZGVudGlhbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC1pbnRlcmNvbS1vcHRpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb25rZXllY3gtaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb25rZXllY3gtbWUtY3JlZGVudGlhbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC1uYXZpZ2F0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb25rZXllY3gtcGFnaW5hdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9ua2V5ZWN4LXByb2dyYW0nO1xyXG5leHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC1yZWxlYXNlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9ua2V5ZWN4LXJlcXVlc3QtaW4tcHJvZ3Jlc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC1yZXF1ZXN0LXBhZ2VkJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb25rZXllY3gtcmVzb2x2ZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC1yZXNwb25zZS1saW5rcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9ua2V5ZWN4LXJlc3BvbnNlLXBhZ2VkJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb25rZXllY3gtc2F2ZWQtc3RhdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC1zY3JvbGwtb3B0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9ua2V5ZWN4LXNlcnZpY2UtY3JlZGVudGlhbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC1zdG9yYWdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb25rZXllY3gtc3RvcmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC1zdXBwb3J0LW9wdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC10b2tlbi1jcmVkZW50aWFscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9ua2V5ZWN4LXRyYW5zbGF0ZS1vcHRpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi9yZXF1ZXN0LWRvd25sb2FkJztcclxuZXhwb3J0ICogZnJvbSAnLi9yZXF1ZXN0LXF1ZXVlJztcclxuZXhwb3J0ICogZnJvbSAnLi9yZXF1ZXN0LXVwbG9hZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2NoZWR1bGVzJztcclxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LXJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LWZyb250LWNvcmUvc3JjL2xpYi9jb3JlL2ludGVyZmFjZXMvbW9ua2V5ZWN4LXJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNb25rZXlFY3hQYWdpbmF0aW9uU2VydmljZSwgTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9ucyB9IGZyb20gJy4uJztcclxuaW1wb3J0IHsgTW9ua2V5RWN4RmVhdHVyZVRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IE1vbmtleUVjeENvbmZpZyB9IGZyb20gJy4vbW9ua2V5ZWN4LWNvbmZpZyc7XHJcbmltcG9ydCB7IE1vbmtleUVjeENvdW50cnlTZWN1cml0eSB9IGZyb20gJy4vbW9ua2V5ZWN4LWNvdW50cnktc2VjdXJpdHknO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNb25rZXlFY3hDb21tb25zU2VhcmNoIHtcclxuICBidWlsZFBhcmFtcygpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTW9ua2V5RWN4SW5pdGlhbFJlc29sdmVyQ29uZmlnIHtcclxuICByb3V0ZTogc3RyaW5nO1xyXG4gIHNlYXJjaENsYXNzPzogbmV3IChkYXRhOiBhbnkpID0+IE1vbmtleUVjeENvbW1vbnNTZWFyY2g7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTW9ua2V5RWN4Q29tbW9uc0NvbmZpZyB7XHJcbiAgY29tcGFueVR5cGU/OiBzdHJpbmc7XHJcbiAgY2FsbGJhY2tNYWluOiBGdW5jdGlvbjtcclxuICByb3V0ZXI/OiBSb3V0ZXI7XHJcbiAgY2FsbGJhY2tQYWdpbmF0aW9uPzogRnVuY3Rpb247XHJcbiAgdHJhbnNsYXRlT3B0aW9ucz86IE1vbmtleUVjeFRyYW5zbGF0ZU9wdGlvbnM7XHJcbiAgZmVhdHVyZT86IHtcclxuICAgIHNlcnZpY2U6IE1vbmtleUVjeEZlYXR1cmVUb2dnbGVTZXJ2aWNlO1xyXG4gICAgZmxhZzogc3RyaW5nO1xyXG4gIH07XHJcbiAgZmVhdHVyZUJ5UHJvZ3JhbT86IHtcclxuICAgIGNvbmZpZzogTW9ua2V5RWN4Q29uZmlnO1xyXG4gICAgZmVhdHVyZTogc3RyaW5nO1xyXG4gIH07XHJcbiAgY291bnRyeVNlY3VyaXR5PzogTW9ua2V5RWN4Q291bnRyeVNlY3VyaXR5O1xyXG4gIHBlbmRlbmN5Pzoge1xyXG4gICAgc2VydmljZToge1xyXG4gICAgICBoYXNQZW5kZW5jaWVzOiBGdW5jdGlvbjtcclxuICAgIH07XHJcbiAgICB0eXBlOiBzdHJpbmc7XHJcbiAgfTtcclxuICBwYWdpbmF0aW9uT3B0aW9ucz86IHtcclxuICAgIHNlcnZpY2U6IE1vbmtleUVjeFBhZ2luYXRpb25TZXJ2aWNlO1xyXG4gICAgY2FsbGJhY2s6IEZ1bmN0aW9uO1xyXG4gICAgbmFtZT86IHN0cmluZztcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
export * from './monkeyecx-commons-resolve.service';
|
|
1
2
|
export * from './monkeyecx-commons.service';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvc2VydmljZXMvY29tbW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vbmtleWVjeC1jb21tb25zLXJlc29sdmUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9ua2V5ZWN4LWNvbW1vbnMuc2VydmljZSc7XHJcbiJdfQ==
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { Store } from '@ngrx/store';
|
|
4
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
5
|
+
import { MonkeyEcxCommonsService } from '.';
|
|
6
|
+
import { MonkeyEcxDiscoveryParamsService, MonkeyEcxPaginationService } from '../..';
|
|
7
|
+
import { MonkeyEcxUtils } from '../../utils';
|
|
8
|
+
export class MonkeyEcxCommonsResolveService extends MonkeyEcxCommonsService {
|
|
9
|
+
constructor(monkeyecxService, tokenStorage, config) {
|
|
10
|
+
super(monkeyecxService, tokenStorage);
|
|
11
|
+
this.route = null;
|
|
12
|
+
this.currentRoute = null;
|
|
13
|
+
this.paginationService = inject(MonkeyEcxPaginationService);
|
|
14
|
+
this.translateService = inject(TranslateService);
|
|
15
|
+
this.router = inject(Router);
|
|
16
|
+
this.store = inject(Store);
|
|
17
|
+
this.monkeyDiscovery = inject(MonkeyEcxDiscoveryParamsService);
|
|
18
|
+
const { actions, actionsPagination, selectors } = config;
|
|
19
|
+
this.action = actions;
|
|
20
|
+
this.actionPagination = actionsPagination;
|
|
21
|
+
this.selector = selectors;
|
|
22
|
+
}
|
|
23
|
+
;
|
|
24
|
+
async getData() {
|
|
25
|
+
try {
|
|
26
|
+
const { store, route, action, selector, tokenStorage } = this;
|
|
27
|
+
const { companyId, companyType } = await tokenStorage?.getToken();
|
|
28
|
+
const identifier = `${companyId}-${companyType}`;
|
|
29
|
+
if (!route)
|
|
30
|
+
return;
|
|
31
|
+
const url = MonkeyEcxUtils.replaceVariables(route, { companyId });
|
|
32
|
+
store.dispatch(action.load({ url, identifier }));
|
|
33
|
+
this.__data$ = store.select(selector.selectByIdentifier({ identifier }));
|
|
34
|
+
this.__control$ = store.select(selector.selectControl());
|
|
35
|
+
if (selector?.selectLinks) {
|
|
36
|
+
this.__pagination$ = store.select(selector.selectLinks({ identifier }));
|
|
37
|
+
}
|
|
38
|
+
if (selector?.selectPage) {
|
|
39
|
+
this.__page$ = store.select(selector.selectPage({ identifier }));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
throw new Error(`MECX Core - Method getData -> ${e}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async loadPage() {
|
|
47
|
+
try {
|
|
48
|
+
const { store, tokenStorage, actionPagination } = this;
|
|
49
|
+
const { companyId, companyType } = await tokenStorage?.getToken();
|
|
50
|
+
store.dispatch(actionPagination.load({
|
|
51
|
+
identifier: `${companyId}-${companyType}`,
|
|
52
|
+
pagination: {
|
|
53
|
+
action: 'next'
|
|
54
|
+
}
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
throw new Error(`MECX Core - Method loadPage -> ${e}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* @description Inicializar a class genérica
|
|
63
|
+
* @param (args: MonkeyEcxInitialResolverConfig)
|
|
64
|
+
* => route é obrigátorio pois ele quem inicializa a store.
|
|
65
|
+
* A searchClass só se faz necessaria quando for usar filtros
|
|
66
|
+
*/
|
|
67
|
+
init(args) {
|
|
68
|
+
try {
|
|
69
|
+
const { searchClass, route } = args;
|
|
70
|
+
this.route = route;
|
|
71
|
+
if (searchClass) {
|
|
72
|
+
// eslint-disable-next-line new-cap
|
|
73
|
+
const searchInstance = new searchClass(this.__search);
|
|
74
|
+
this.route = `${route}${searchInstance.buildParams()}`;
|
|
75
|
+
this.__onSearchChanged$.next(searchInstance);
|
|
76
|
+
}
|
|
77
|
+
this.getData();
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
throw new Error(`${e?.message}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
resolve(route, state, otherArgs) {
|
|
84
|
+
this.__search = route?.queryParams;
|
|
85
|
+
const [currentRoute] = state?.url.split('?') || [null];
|
|
86
|
+
this.currentRoute = currentRoute;
|
|
87
|
+
super.resolve(route, state, otherArgs);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* @description Atualizar os filtros da tela
|
|
91
|
+
* @param (search: T, route?: string)
|
|
92
|
+
* => route é opcional, passar ele apenas se a rota for diferente do padrão
|
|
93
|
+
*/
|
|
94
|
+
setSearch(search, route) {
|
|
95
|
+
try {
|
|
96
|
+
const { currentRoute, router } = this;
|
|
97
|
+
this.setSearchByUrl(router, route || `${currentRoute}`, search);
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
throw new Error(`MECX Core - Method setSearch -> ${e}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* @description Navegação para details.
|
|
105
|
+
* Por padrão sera redirecionado para '${currentRoute}/details'
|
|
106
|
+
* @param (detailsData: T, route?: string)
|
|
107
|
+
* => route é opcional, passar ele apenas se a rota for diferente do padrão
|
|
108
|
+
*/
|
|
109
|
+
navigateToDetails(detailsData, route) {
|
|
110
|
+
try {
|
|
111
|
+
const { router, currentRoute } = this;
|
|
112
|
+
router.navigate([route || `${currentRoute}/details`], {
|
|
113
|
+
state: {
|
|
114
|
+
detailsData
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
throw new Error(`MECX Core - Method navigateToDetails -> ${e}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LWNvbW1vbnMtcmVzb2x2ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LWZyb250LWNvcmUvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2NvbW1vbnMvbW9ua2V5ZWN4LWNvbW1vbnMtcmVzb2x2ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUEwQixNQUFNLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDdEYsT0FBTyxFQUFVLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDNUMsT0FBTyxFQUFFLCtCQUErQixFQUFFLDBCQUEwQixFQUFnQyxNQUFNLE9BQU8sQ0FBQztBQU1sSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzdDLE1BQU0sT0FBZ0IsOEJBQStCLFNBQVEsdUJBQXVCO0lBcUJsRixZQUNFLGdCQUFrQyxFQUNsQyxZQUEwQyxFQUMxQyxNQWFDO1FBRUQsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBaENoQyxVQUFLLEdBQWtCLElBQUksQ0FBQztRQUU1QixpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFFakMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFdkQscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFNUMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV4QixVQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRCLG9CQUFlLEdB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QUksV0FBYyxFQUFFLEtBQWM7UUFDeEQsSUFBSTtZQUNGLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBRXRDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLElBQUksR0FBRyxZQUFZLFVBQVUsQ0FBQyxFQUFFO2dCQUNwRCxLQUFLLEVBQUU7b0JBQ0wsV0FBVztpQkFDWjthQUNGLENBQUMsQ0FBQztTQUNKO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEFjdGlvbiwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgTW9ua2V5RWN4Q29tbW9uc1NlcnZpY2UgfSBmcm9tICcuJztcclxuaW1wb3J0IHsgTW9ua2V5RWN4RGlzY292ZXJ5UGFyYW1zU2VydmljZSwgTW9ua2V5RWN4UGFnaW5hdGlvblNlcnZpY2UsIE1vbmtleUVjeFRva2VuU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLic7XHJcbmltcG9ydCB7XHJcbiAgTW9ua2V5RWN4Q29tbW9uc0NvbmZpZyxcclxuICBNb25rZXlFY3hDb21tb25zU2VhcmNoLFxyXG4gIE1vbmtleUVjeEluaXRpYWxSZXNvbHZlckNvbmZpZ1xyXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBNb25rZXlFY3hVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuaW1wb3J0IHsgTW9ua2V5RWN4U2VydmljZSB9IGZyb20gJy4uL21vbmtleWVjeC1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1vbmtleUVjeENvbW1vbnNSZXNvbHZlU2VydmljZSBleHRlbmRzIE1vbmtleUVjeENvbW1vbnNTZXJ2aWNlIHtcclxuICBwcml2YXRlIGFjdGlvbjogYW55O1xyXG5cclxuICBwcml2YXRlIGFjdGlvblBhZ2luYXRpb246IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3RvcjogYW55O1xyXG5cclxuICBwcml2YXRlIHJvdXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBjdXJyZW50Um91dGU6IHN0cmluZyB8IG51bGwgPSBudWxsOztcclxuXHJcbiAgcHJvdGVjdGVkIHBhZ2luYXRpb25TZXJ2aWNlID0gaW5qZWN0KE1vbmtleUVjeFBhZ2luYXRpb25TZXJ2aWNlKTtcclxuXHJcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcblxyXG4gIHByb3RlY3RlZCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHJcbiAgcHJvdGVjdGVkIHN0b3JlID0gaW5qZWN0KFN0b3JlKTtcclxuXHJcbiAgcHJvdGVjdGVkIG1vbmtleURpc2NvdmVyeSA9IGluamVjdChNb25rZXlFY3hEaXNjb3ZlcnlQYXJhbXNTZXJ2aWNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBtb25rZXllY3hTZXJ2aWNlOiBNb25rZXlFY3hTZXJ2aWNlLFxyXG4gICAgdG9rZW5TdG9yYWdlOiBNb25rZXlFY3hUb2tlblN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgY29uZmlnOiB7XHJcbiAgICAgIGFjdGlvbnM6IHtcclxuICAgICAgICBsb2FkOiBBY3Rpb247XHJcbiAgICAgIH07XHJcbiAgICAgIHNlbGVjdG9yczoge1xyXG4gICAgICAgIHNlbGVjdEJ5SWRlbnRpZmllcjogRnVuY3Rpb247XHJcbiAgICAgICAgc2VsZWN0Q29udHJvbDogRnVuY3Rpb247XHJcbiAgICAgICAgc2VsZWN0TGlua3M/OiBGdW5jdGlvbjtcclxuICAgICAgICBzZWxlY3RQYWdlPzogRnVuY3Rpb247XHJcbiAgICAgIH07XHJcbiAgICAgIGFjdGlvbnNQYWdpbmF0aW9uPzoge1xyXG4gICAgICAgIGxvYWQ6IEFjdGlvbjtcclxuICAgICAgfTtcclxuICAgIH1cclxuICApIHtcclxuICAgIHN1cGVyKG1vbmtleWVjeFNlcnZpY2UsIHRva2VuU3RvcmFnZSk7XHJcbiAgICBjb25zdCB7IGFjdGlvbnMsIGFjdGlvbnNQYWdpbmF0aW9uLCBzZWxlY3RvcnMgfSA9IGNvbmZpZztcclxuXHJcbiAgICB0aGlzLmFjdGlvbiA9IGFjdGlvbnM7XHJcbiAgICB0aGlzLmFjdGlvblBhZ2luYXRpb24gPSBhY3Rpb25zUGFnaW5hdGlvbjtcclxuICAgIHRoaXMuc2VsZWN0b3IgPSBzZWxlY3RvcnM7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0RGF0YSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHsgc3RvcmUsIHJvdXRlLCBhY3Rpb24sIHNlbGVjdG9yLCB0b2tlblN0b3JhZ2UgfSA9IHRoaXM7XHJcblxyXG4gICAgICBjb25zdCB7IGNvbXBhbnlJZCwgY29tcGFueVR5cGUgfSA9IGF3YWl0IHRva2VuU3RvcmFnZT8uZ2V0VG9rZW4oKTtcclxuXHJcbiAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSBgJHtjb21wYW55SWR9LSR7Y29tcGFueVR5cGV9YDtcclxuXHJcbiAgICAgIGlmICghcm91dGUpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IHVybCA9IE1vbmtleUVjeFV0aWxzLnJlcGxhY2VWYXJpYWJsZXMocm91dGUsIHsgY29tcGFueUlkIH0pO1xyXG5cclxuICAgICAgc3RvcmUuZGlzcGF0Y2goYWN0aW9uLmxvYWQoeyB1cmwsIGlkZW50aWZpZXIgfSkpO1xyXG5cclxuICAgICAgdGhpcy5fX2RhdGEkID0gc3RvcmUuc2VsZWN0KHNlbGVjdG9yLnNlbGVjdEJ5SWRlbnRpZmllcih7IGlkZW50aWZpZXIgfSkpO1xyXG5cclxuICAgICAgdGhpcy5fX2NvbnRyb2wkID0gc3RvcmUuc2VsZWN0KHNlbGVjdG9yLnNlbGVjdENvbnRyb2woKSk7XHJcblxyXG4gICAgICBpZiAoc2VsZWN0b3I/LnNlbGVjdExpbmtzKSB7XHJcbiAgICAgICAgdGhpcy5fX3BhZ2luYXRpb24kID0gc3RvcmUuc2VsZWN0KHNlbGVjdG9yLnNlbGVjdExpbmtzKHsgaWRlbnRpZmllciB9KSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzZWxlY3Rvcj8uc2VsZWN0UGFnZSkge1xyXG4gICAgICAgIHRoaXMuX19wYWdlJCA9IHN0b3JlLnNlbGVjdChzZWxlY3Rvci5zZWxlY3RQYWdlKHsgaWRlbnRpZmllciB9KSk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNRUNYIENvcmUgLSBNZXRob2QgZ2V0RGF0YSAtPiAke2V9YCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXN5bmMgbG9hZFBhZ2UoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB7IHN0b3JlLCB0b2tlblN0b3JhZ2UsIGFjdGlvblBhZ2luYXRpb24gfSA9IHRoaXM7XHJcbiAgICAgIGNvbnN0IHsgY29tcGFueUlkLCBjb21wYW55VHlwZSB9ID0gYXdhaXQgdG9rZW5TdG9yYWdlPy5nZXRUb2tlbigpO1xyXG5cclxuICAgICAgc3RvcmUuZGlzcGF0Y2goXHJcbiAgICAgICAgYWN0aW9uUGFnaW5hdGlvbi5sb2FkKHtcclxuICAgICAgICAgIGlkZW50aWZpZXI6IGAke2NvbXBhbnlJZH0tJHtjb21wYW55VHlwZX1gLFxyXG4gICAgICAgICAgcGFnaW5hdGlvbjoge1xyXG4gICAgICAgICAgICBhY3Rpb246ICduZXh0J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTUVDWCBDb3JlIC0gTWV0aG9kIGxvYWRQYWdlIC0+ICR7ZX1gKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBJbmljaWFsaXphciBhIGNsYXNzIGdlbsOpcmljYVxyXG4gICAqIEBwYXJhbSAoYXJnczogTW9ua2V5RWN4SW5pdGlhbFJlc29sdmVyQ29uZmlnKVxyXG4gICAqID0+IHJvdXRlIMOpIG9icmlnw6F0b3JpbyBwb2lzIGVsZSBxdWVtIGluaWNpYWxpemEgYSBzdG9yZS5cclxuICAgKiBBIHNlYXJjaENsYXNzIHPDsyBzZSBmYXogbmVjZXNzYXJpYSBxdWFuZG8gZm9yIHVzYXIgZmlsdHJvc1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpbml0KGFyZ3M6IE1vbmtleUVjeEluaXRpYWxSZXNvbHZlckNvbmZpZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgeyBzZWFyY2hDbGFzcywgcm91dGUgfSA9IGFyZ3M7XHJcblxyXG4gICAgICB0aGlzLnJvdXRlID0gcm91dGU7XHJcblxyXG4gICAgICBpZiAoc2VhcmNoQ2xhc3MpIHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxyXG4gICAgICAgIGNvbnN0IHNlYXJjaEluc3RhbmNlOiBNb25rZXlFY3hDb21tb25zU2VhcmNoID0gbmV3IHNlYXJjaENsYXNzKHRoaXMuX19zZWFyY2gpO1xyXG5cclxuICAgICAgICB0aGlzLnJvdXRlID0gYCR7cm91dGV9JHtzZWFyY2hJbnN0YW5jZS5idWlsZFBhcmFtcygpfWA7XHJcblxyXG4gICAgICAgIHRoaXMuX19vblNlYXJjaENoYW5nZWQkLm5leHQoc2VhcmNoSW5zdGFuY2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmdldERhdGEoKTtcclxuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZT8ubWVzc2FnZX1gKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc29sdmUoXHJcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCB8IG51bGwsXHJcbiAgICBvdGhlckFyZ3M/OiBNb25rZXlFY3hDb21tb25zQ29uZmlnXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9fc2VhcmNoID0gcm91dGU/LnF1ZXJ5UGFyYW1zO1xyXG5cclxuICAgIGNvbnN0IFtjdXJyZW50Um91dGVdID0gc3RhdGU/LnVybC5zcGxpdCgnPycpIHx8IFtudWxsXTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnRSb3V0ZSA9IGN1cnJlbnRSb3V0ZTtcclxuXHJcbiAgICBzdXBlci5yZXNvbHZlKHJvdXRlLCBzdGF0ZSwgb3RoZXJBcmdzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBBdHVhbGl6YXIgb3MgZmlsdHJvcyBkYSB0ZWxhXHJcbiAgICogQHBhcmFtIChzZWFyY2g6IFQsIHJvdXRlPzogc3RyaW5nKVxyXG4gICAqID0+IHJvdXRlIMOpIG9wY2lvbmFsLCBwYXNzYXIgZWxlIGFwZW5hcyBzZSBhIHJvdGEgZm9yIGRpZmVyZW50ZSBkbyBwYWRyw6NvXHJcbiAgICovXHJcbiAgcHVibGljIHNldFNlYXJjaDxUPihzZWFyY2g6IFQsIHJvdXRlPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB7IGN1cnJlbnRSb3V0ZSwgcm91dGVyIH0gPSB0aGlzO1xyXG5cclxuICAgICAgdGhpcy5zZXRTZWFyY2hCeVVybChyb3V0ZXIsIHJvdXRlIHx8IGAke2N1cnJlbnRSb3V0ZX1gLCBzZWFyY2gpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1FQ1ggQ29yZSAtIE1ldGhvZCBzZXRTZWFyY2ggLT4gJHtlfWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIE5hdmVnYcOnw6NvIHBhcmEgZGV0YWlscy5cclxuICAgKiBQb3IgcGFkcsOjbyBzZXJhIHJlZGlyZWNpb25hZG8gcGFyYSAnJHtjdXJyZW50Um91dGV9L2RldGFpbHMnXHJcbiAgICogQHBhcmFtIChkZXRhaWxzRGF0YTogVCwgcm91dGU/OiBzdHJpbmcpXHJcbiAgICogPT4gcm91dGUgw6kgb3BjaW9uYWwsIHBhc3NhciBlbGUgYXBlbmFzIHNlIGEgcm90YSBmb3IgZGlmZXJlbnRlIGRvIHBhZHLDo29cclxuICAgKi9cclxuICBwdWJsaWMgbmF2aWdhdGVUb0RldGFpbHM8VD4oZGV0YWlsc0RhdGE6IFQsIHJvdXRlPzogc3RyaW5nKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB7IHJvdXRlciwgY3VycmVudFJvdXRlIH0gPSB0aGlzO1xyXG5cclxuICAgICAgcm91dGVyLm5hdmlnYXRlKFtyb3V0ZSB8fCBgJHtjdXJyZW50Um91dGV9L2RldGFpbHNgXSwge1xyXG4gICAgICAgIHN0YXRlOiB7XHJcbiAgICAgICAgICBkZXRhaWxzRGF0YVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTUVDWCBDb3JlIC0gTWV0aG9kIG5hdmlnYXRlVG9EZXRhaWxzIC0+ICR7ZX1gKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -22,6 +22,7 @@ export class MonkeyEcxCommonsService {
|
|
|
22
22
|
this.__data$ = null;
|
|
23
23
|
this.__pagination$ = null;
|
|
24
24
|
this.__control$ = null;
|
|
25
|
+
this.__page$ = null;
|
|
25
26
|
this.__savedState = null;
|
|
26
27
|
this.__error = null;
|
|
27
28
|
this.__handledError = null;
|
|
@@ -358,4 +359,4 @@ __decorate([
|
|
|
358
359
|
}
|
|
359
360
|
})
|
|
360
361
|
], MonkeyEcxCommonsService.prototype, "getGenericData", null);
|
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LWNvbW1vbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9jb21tb25zL21vbmtleWVjeC1jb21tb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFFTCxlQUFlLEVBR2hCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFjN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJbkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFLMUcsTUFBTSxVQUFXLFNBQVEsY0FBYztJQUNyQyxZQUFZLElBQVU7UUFDcEIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRSxNQUFNLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHVCQUF1QjtJQWtFbEMsWUFDUyxnQkFBbUMsRUFDbkMsWUFBMkMsRUFDM0MsU0FXTjtRQWJNLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDbkMsaUJBQVksR0FBWixZQUFZLENBQStCO1FBQzNDLGNBQVMsR0FBVCxTQUFTLENBV2Y7UUEvRUssa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUxQixZQUFPLEdBQTJCLElBQUksQ0FBQztRQUV2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RSxPQUFPO1lBQzVCLEdBQUcsTUFBTTtTQUNWLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBMEI7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDakIsR0FBRyxLQUFLO1NBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxVQUFrQixFQUFFLE1BQWU7UUFDckQsTUFBTSxNQUFNLEdBQVE7WUFDbEIsR0FBRyxFQUFFLFdBQVc7WUFDaEIsR0FBRyxFQUFFLFdBQVc7WUFDaEIsR0FBRyxFQUFFLGtCQUFrQjtZQUN2QixHQUFHLEVBQUUsa0JBQWtCO1NBQ3hCLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDTCxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsY0FBYyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0NBQ0Y7QUE1R0M7SUFMQyxvQkFBb0IsQ0FBQztRQUNwQixpQkFBaUIsRUFBRTtZQUNqQixZQUFZLEVBQUUsSUFBSTtTQUNuQjtLQUNGLENBQUM7NERBYUQ7QUFPRDtJQUxDLG9CQUFvQixDQUFDO1FBQ3BCLGlCQUFpQixFQUFFO1lBQ2pCLFlBQVksRUFBRSxJQUFJO1NBQ25CO0tBQ0YsQ0FBQzs2REFVRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1xyXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgTmF2aWdhdGlvblN0YXJ0LFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlLCB0YWtlV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1vbmtleUVjeENvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9tb25rZXllY3gtZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgTW9ua2V5RWN4Q29tcGFueVBlbmRlbmNpZXNWYWxpZGF0ZWQsXHJcbiAgTW9ua2V5RWN4Q29uZmlnLFxyXG4gIE1vbmtleUVjeENvdW50cnlTZWN1cml0eSxcclxuICBNb25rZXlFY3hFcnJvclJlc3BvbnNlLFxyXG4gIE1vbmtleUVjeEhhbmRsZWRFcnJvclJlc3BvbnNlLFxyXG4gIE1vbmtleUVjeFJlcXVlc3RQYWdlZCxcclxuICBNb25rZXlFY3hSZXF1ZXN0U2NoZWR1bGUsXHJcbiAgTW9ua2V5RWN4UmVzcG9uc2VMaW5rcyxcclxuICBNb25rZXlFY3hSZXNwb25zZVBhZ2VkLFxyXG4gIE1vbmtleUVjeFNhdmVkU3RhdGUsXHJcbiAgTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9uc1xyXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBNb25rZXlFY3hNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsJztcclxuaW1wb3J0IHsgTW9ua2V5RWN4VXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IE1vbmtleUVjeEZlYXR1cmVUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29uZmlnL21vbmtleWVjeC1mZWF0dXJlLXRvZ2dsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9ua2V5RWN4U2VydmljZSB9IGZyb20gJy4uL21vbmtleWVjeC1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb25rZXlFY3hQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4uL3BhZ2luYXRpb24nO1xyXG5pbXBvcnQgeyBNb25rZXlFY3hSZXF1ZXN0UGFnZWRIYW5kbGluZyB9IGZyb20gJy4uL3JlcXVlc3QtcGFnZWQvbW9ua2V5ZWN4LXJlcXVlc3QtcmVxdWVzdC1wYWdlZC1oYW5kbGluZyc7XHJcbmltcG9ydCB7IE1vbmtleUVjeFJlcXVlc3RRdWV1ZUhhbmRsaW5nU2VydmljZSB9IGZyb20gJy4uL3JlcXVlc3QtcXVldWUvbW9ua2V5ZWN4LXJlcXVlc3QtcXVldWUtaGFuZGxpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vbmtleUVjeFJlcXVlc3RTY2hlZHVsZVNlcnZpY2UgfSBmcm9tICcuLi9zY2hlZHVsZXMvbW9ua2V5ZWN4LXJlcXVlc3Qtc2NoZWR1bGUuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vbmtleUVjeFRva2VuU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yYWdlL21vbmtleWVjeC10b2tlbi1zdG9yYWdlLnNlcnZpY2UnO1xyXG5cclxuY2xhc3MgTGlua3NNb2RlbCBleHRlbmRzIE1vbmtleUVjeE1vZGVsIHtcclxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5fbGlua3MgPSBkYXRhPy5fbGlua3M7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTW9ua2V5RWN4Q29tbW9uc1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgZmxhZ1ZhbGlkYXRvciA9IHRydWU7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XHJcblxyXG4gIF9fZGF0YSQ6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBfX3BhZ2luYXRpb24kOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgX19jb250cm9sJDogT2JzZXJ2YWJsZTxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIF9fZGF0YTogYW55IHwgYW55W107XHJcblxyXG4gIF9fc2F2ZWRTdGF0ZTogTW9ua2V5RWN4U2F2ZWRTdGF0ZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBfX3BhcmFtczogYW55IHwgYW55W107XHJcblxyXG4gIF9fZXJyb3I6IE1vbmtleUVjeEVycm9yUmVzcG9uc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgX19oYW5kbGVkRXJyb3I6IE1vbmtleUVjeEhhbmRsZWRFcnJvclJlc3BvbnNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIF9fcGFnZTogTW9ua2V5RWN4UmVzcG9uc2VQYWdlZCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBfX2xpbmtzOiBNb25rZXlFY3hSZXNwb25zZUxpbmtzIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIF9fc2VhcmNoOiBhbnk7XHJcblxyXG4gIF9fcmVxdWVzdFBhZ2VkOiBNb25rZXlFY3hSZXF1ZXN0UGFnZWQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgX19vblNlYXJjaENoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG4gIF9fb25EYXRhQ2hhbmdlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcclxuXHJcbiAgX19vbkxvYWRpbmdJblByb2dyZXNzJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuXHJcbiAgX19vblVwbG9hZEluUHJvZ3Jlc3MkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xyXG5cclxuICBfX29uRGF0YURlbGV0ZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG4gIF9fb25FcnJvckNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG4gIF9fb25Hb3Zlcm5tZW50SWREYXRhQ2hhbmdlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcclxuXHJcbiAgX19vblppcENvZGVEYXRhQ2hhbmdlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcclxuXHJcbiAgX19vbmkxOG5EYXRhQ2hhbmdlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcclxuXHJcbiAgX19vbkRvU2VhcmNoJDogQmVoYXZpb3JTdWJqZWN0PE1vbmtleUVjeFJlcXVlc3RQYWdlZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KTtcclxuXHJcbiAgX19zY2hlZHVsZTogTW9ua2V5RWN4UmVxdWVzdFNjaGVkdWxlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIF9faTE4bjogYW55O1xyXG5cclxuICBfX2NhbGxiYWNrUGFnaW5hdGlvbjogRnVuY3Rpb24gPSAoKSA9PiB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxyXG4gICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ01ldGhvZCBjYWxsYmFja1BhZ2luYXRpb24gbmVlZHMgdG8gYmUgZGVjbGFyZWQnKTtcclxuICB9O1xyXG5cclxuICBfX3BhZ2luYXRpb25PcHRpb25zOiB7XHJcbiAgICBzZXJ2aWNlOiBNb25rZXlFY3hQYWdpbmF0aW9uU2VydmljZTtcclxuICAgIGNhbGxiYWNrOiBGdW5jdGlvbjtcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbiAgfSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgX19pc0FibGVUb0RvUGFnaW5hdGlvbiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBtb25rZXllY3hTZXJ2aWNlPzogTW9ua2V5RWN4U2VydmljZSxcclxuICAgIHB1YmxpYyB0b2tlblN0b3JhZ2U/OiBNb25rZXlFY3hUb2tlblN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIG90aGVyQXJncz86IHtcclxuICAgICAgcm91dGVyPzogUm91dGVyO1xyXG4gICAgICBzY2hlZHVsZT86IHtcclxuICAgICAgICBzZXJ2aWNlOiBNb25rZXlFY3hSZXF1ZXN0U2NoZWR1bGVTZXJ2aWNlO1xyXG4gICAgICAgIG9wdGlvbnM/OiB7XHJcbiAgICAgICAgICBjbGVhck9uQ2hhbmdlUm91dGU/OiBib29sZWFuO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH07XHJcbiAgICAgIHF1ZXVlPzoge1xyXG4gICAgICAgIHNlcnZpY2U6IE1vbmtleUVjeFJlcXVlc3RRdWV1ZUhhbmRsaW5nU2VydmljZTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICApIHtcclxuICAgIHRoaXMuaGFuZGxlSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVJbml0KCkge1xyXG4gICAgaWYgKHRoaXMub3RoZXJBcmdzPy5yb3V0ZXIpIHtcclxuICAgICAgY29uc3QgeyBjbGVhck9uQ2hhbmdlUm91dGUgfSA9IHRoaXMub3RoZXJBcmdzPy5zY2hlZHVsZT8ub3B0aW9ucyB8fCB7XHJcbiAgICAgICAgY2xlYXJPbkNoYW5nZVJvdXRlOiBmYWxzZVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5vdGhlckFyZ3Mucm91dGVyLmV2ZW50c1xyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydDtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdGFrZVdoaWxlKCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmRlc3Ryb3llZDtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX19zY2hlZHVsZSAmJiBjbGVhck9uQ2hhbmdlUm91dGUpIHtcclxuICAgICAgICAgICAgdGhpcy5vdGhlckFyZ3M/LnNjaGVkdWxlPy5zZXJ2aWNlPy5yZW1vdmVTY2hlZHVsZSh0aGlzLl9fc2NoZWR1bGUpO1xyXG4gICAgICAgICAgICB0aGlzLl9fc2NoZWR1bGUgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvUGVuZGVuY3lQYWdlKFxyXG4gICAgYXJnOiBNb25rZXlFY3hDb21wYW55UGVuZGVuY2llc1ZhbGlkYXRlZCxcclxuICAgIGNvbXBhbnlUeXBlPzogc3RyaW5nLFxyXG4gICAgcm91dGVyPzogUm91dGVyXHJcbiAgKSB7XHJcbiAgICBsZXQgcm91dGUgPSAnL2FwcCc7XHJcblxyXG4gICAgaWYgKGNvbXBhbnlUeXBlKSB7XHJcbiAgICAgIHJvdXRlID0gYCR7cm91dGV9LyR7Y29tcGFueVR5cGV9L3BhZ2VzYDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJvdXRlID0gYCR7cm91dGV9L3VzZXIvcHJvZmlsZS9wYWdlc2A7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFyb3V0ZXIpIHtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5lcnJvcignUm91dGVyIG11c3QgYmUgZGVjbGFyZWQnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJvdXRlci5uYXZpZ2F0ZShbYCR7cm91dGV9L2NvbXBhbnktcGVuZGVuY3lgLnRvTG93ZXJDYXNlKCldLCB7XHJcbiAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgIHBlbmRlbmN5RGF0YTogYXJnXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWxsb3dlZFNlY3VyaXR5QWNjZXNzQnlQZW5kZW5jeShhcmdzOiBhbnkpOiBNb25rZXlFY3hDb21wYW55UGVuZGVuY2llc1ZhbGlkYXRlZCB7XHJcbiAgICBpZiAoIWFyZ3MpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBoYXNQZW5kZW5jaWVzOiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBzZXJ2aWNlLCB0eXBlIH0gPSBhcmdzO1xyXG4gICAgcmV0dXJuIHNlcnZpY2UuaGFzUGVuZGVuY2llcyh0eXBlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWxsb3dlZFNlY3VyaXR5QWNjZXNzQnlGZWF0dXJlKGFyZ3M6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFhcmdzKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBjb25maWcsIGZlYXR1cmUgfSA9IGFyZ3M7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIU1vbmtleUVjeFV0aWxzLnBlcnNpc3ROdWxsRW1wdHlVbmRlZmluZWQoZmVhdHVyZSkgfHxcclxuICAgICAgICAhTW9ua2V5RWN4VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChjb25maWc/LnByb2dyYW0/LnNldHRpbmdzKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAhY29uZmlnPy5wcm9ncmFtPy5zZXR0aW5ncz8uW2ZlYXR1cmVdO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyBub3QgdG8gZG9cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhbGxvd2VkU2VjdXJpdHlBY2Nlc3NCeUNvdW50cnkoYXJnPzogTW9ua2V5RWN4Q291bnRyeVNlY3VyaXR5KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWFyZykgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gYXJnLmNvdW50cnkgPT09IGFyZy5lbnZDb3VudHJ5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVQYWdpbmF0aW9uT3B0aW9ucygpIHtcclxuICAgIGNvbnN0IHsgX19wYWdpbmF0aW9uT3B0aW9ucyB9ID0gdGhpcztcclxuICAgIGlmIChfX3BhZ2luYXRpb25PcHRpb25zKSB7XHJcbiAgICAgIGNvbnN0IHsgc2VydmljZSwgY2FsbGJhY2ssIG5hbWUgfSA9IF9fcGFnaW5hdGlvbk9wdGlvbnM7XHJcbiAgICAgIHNlcnZpY2U/LnNldENhbGxiYWNrKCh0eXBlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICB0aGlzLmRvUGFnaW5hdGlvbnYyKHR5cGUsIGNhbGxiYWNrKTtcclxuICAgICAgfSwgbmFtZSB8fCAnbWFpbicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UGFnZShyZXF1ZXN0UGFnZWQ6IE1vbmtleUVjeFJlcXVlc3RQYWdlZCkge1xyXG4gICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IHtcclxuICAgICAgLi4udGhpcy5fX3JlcXVlc3RQYWdlZCxcclxuICAgICAgLi4ucmVxdWVzdFBhZ2VkXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBuZXh0UGFnZSgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLl9fbGlua3MpIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy5fX2xpbmtzPy5uZXh0O1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLl9fcmVxdWVzdFBhZ2VkKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCB7IHBhZ2UgfSA9IHRoaXMuX19yZXF1ZXN0UGFnZWQgYXMgYW55O1xyXG4gICAgY29uc3QgeyBudW1iZXIsIHRvdGFsUGFnZXMgfSA9IHBhZ2U7XHJcbiAgICBpZiAobnVtYmVyIDwgdG90YWxQYWdlcykge1xyXG4gICAgICB0aGlzLl9fcmVxdWVzdFBhZ2VkID0ge1xyXG4gICAgICAgIC4uLnRoaXMuX19yZXF1ZXN0UGFnZWQsXHJcbiAgICAgICAgcGFnZToge1xyXG4gICAgICAgICAgLi4ucGFnZSxcclxuICAgICAgICAgIG51bWJlcjogbnVtYmVyICsgMVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRFbWJlZGRlZERhdGEoZGF0YTogYW55LCBmaWVsZDogc3RyaW5nKTogYW55W10gfCBhbnkge1xyXG4gICAgY29uc3QgeyBfZW1iZWRkZWQgfSA9IGRhdGE7XHJcbiAgICByZXR1cm4gX2VtYmVkZGVkID8gX2VtYmVkZGVkW2ZpZWxkXSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXROb3JtYWxpemVkVXJsKHVybDogc3RyaW5nLCBzYW1lUGFnZSA9IGZhbHNlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHsgX19yZXF1ZXN0UGFnZWQsIF9fbGlua3MgfSA9IHRoaXM7XHJcbiAgICByZXR1cm4gbmV3IE1vbmtleUVjeFJlcXVlc3RQYWdlZEhhbmRsaW5nKFxyXG4gICAgICB1cmwsXHJcbiAgICAgIF9fcmVxdWVzdFBhZ2VkIHx8IHt9LFxyXG4gICAgICBfX2xpbmtzLFxyXG4gICAgICBzYW1lUGFnZVxyXG4gICAgKS5nZXRSZXF1ZXN0V2l0aFBhZ2VkUGFyYW1zKCk7XHJcbiAgfVxyXG5cclxuICBjbGVhcihjbGVhckRhdGE6IGJvb2xlYW4pIHtcclxuICAgIGlmIChjbGVhckRhdGEpIHtcclxuICAgICAgdGhpcy5fX2RhdGEgPSBudWxsO1xyXG4gICAgICB0aGlzLl9fcmVxdWVzdFBhZ2VkID0gbnVsbDtcclxuICAgICAgdGhpcy5fX3BhcmFtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuX19wYWdlID0gbnVsbDtcclxuICAgICAgdGhpcy5fX2xpbmtzID0gbnVsbDtcclxuXHJcbiAgICAgIGlmICh0aGlzLl9fc2NoZWR1bGUpIHtcclxuICAgICAgICBjb25zdCB7IHF1ZXVlIH0gPSB0aGlzLl9fc2NoZWR1bGU7XHJcbiAgICAgICAgaWYgKHF1ZXVlKSB7XHJcbiAgICAgICAgICB0aGlzLm90aGVyQXJncz8ucXVldWU/LnNlcnZpY2U/LnJlbW92ZVF1ZXVlSXRlbShxdWV1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub3RoZXJBcmdzPy5zY2hlZHVsZT8uc2VydmljZT8ucmVtb3ZlU2NoZWR1bGUodGhpcy5fX3NjaGVkdWxlKTtcclxuICAgICAgICB0aGlzLl9fc2NoZWR1bGUgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9fZXJyb3IgPSBudWxsO1xyXG4gICAgdGhpcy5fX2hhbmRsZWRFcnJvciA9IG51bGw7XHJcbiAgICB0aGlzLmZsYWdWYWxpZGF0b3IgPSBmYWxzZTtcclxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHJlc29sdmUoXHJcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCB8IG51bGwsXHJcbiAgICBvdGhlckFyZ3M/OiB7XHJcbiAgICAgIGNvbXBhbnlUeXBlPzogc3RyaW5nLFxyXG4gICAgICBjYWxsYmFja01haW46IEZ1bmN0aW9uO1xyXG4gICAgICByb3V0ZXI/OiBSb3V0ZXI7XHJcbiAgICAgIGNhbGxiYWNrUGFnaW5hdGlvbj86IEZ1bmN0aW9uO1xyXG4gICAgICB0cmFuc2xhdGVPcHRpb25zPzogTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9ucztcclxuICAgICAgZmVhdHVyZT86IHtcclxuICAgICAgICBzZXJ2aWNlOiBNb25rZXlFY3hGZWF0dXJlVG9nZ2xlU2VydmljZTtcclxuICAgICAgICBmbGFnOiBzdHJpbmc7XHJcbiAgICAgIH07XHJcbiAgICAgIGZlYXR1cmVCeVByb2dyYW0/OiB7XHJcbiAgICAgICAgY29uZmlnOiBNb25rZXlFY3hDb25maWc7XHJcbiAgICAgICAgZmVhdHVyZTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb3VudHJ5U2VjdXJpdHk/OiBNb25rZXlFY3hDb3VudHJ5U2VjdXJpdHk7XHJcbiAgICAgIHBlbmRlbmN5Pzoge1xyXG4gICAgICAgIHNlcnZpY2U6IHtcclxuICAgICAgICAgIGhhc1BlbmRlbmNpZXM6IEZ1bmN0aW9uO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdHlwZTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBwYWdpbmF0aW9uT3B0aW9ucz86IHtcclxuICAgICAgICBzZXJ2aWNlOiBNb25rZXlFY3hQYWdpbmF0aW9uU2VydmljZSxcclxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb24sXHJcbiAgICAgICAgbmFtZT86IHN0cmluZ1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgKSB7XHJcbiAgICBpZiAoSlNPTi5zdHJpbmdpZnkocm91dGU/LnF1ZXJ5UGFyYW1zKSA9PT0gJ3t9Jykge1xyXG4gICAgICB0aGlzLl9fZGF0YSA9IG51bGw7XHJcbiAgICAgIHRoaXMuX19wYWdlID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9fcmVxdWVzdFBhZ2VkID0gbnVsbDtcclxuICAgIHRoaXMuZmxhZ1ZhbGlkYXRvciA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgcGVuZCA9IHRoaXMuYWxsb3dlZFNlY3VyaXR5QWNjZXNzQnlQZW5kZW5jeShvdGhlckFyZ3M/LnBlbmRlbmN5KTtcclxuICAgIGNvbnN0IGFsbG93ZWRCeVByb2dyYW0gPSB0aGlzLmFsbG93ZWRTZWN1cml0eUFjY2Vzc0J5RmVhdHVyZShvdGhlckFyZ3M/LmZlYXR1cmVCeVByb2dyYW0pO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5hbGxvd2VkU2VjdXJpdHlBY2Nlc3NCeUNvdW50cnkob3RoZXJBcmdzPy5jb3VudHJ5U2VjdXJpdHkpICYmXHJcbiAgICAgICFwZW5kLmhhc1BlbmRlbmNpZXMgJiZcclxuICAgICAgYWxsb3dlZEJ5UHJvZ3JhbVxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLl9fc2NoZWR1bGUpIHtcclxuICAgICAgICB0aGlzLm90aGVyQXJncz8uc2NoZWR1bGU/LnNlcnZpY2U/LnJlbW92ZVNjaGVkdWxlKHRoaXMuX19zY2hlZHVsZSk7XHJcbiAgICAgICAgdGhpcy5fX3NjaGVkdWxlID0gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgeyBfX3JlcXVlc3RQYWdlZCB9ID0gdGhpcztcclxuICAgICAgaWYgKCFfX3JlcXVlc3RQYWdlZCkge1xyXG4gICAgICAgIHRoaXMuc2V0UGFnZSh7XHJcbiAgICAgICAgICBwYWdlOiB7XHJcbiAgICAgICAgICAgIG51bWJlcjogMCxcclxuICAgICAgICAgICAgc2l6ZTogMTBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG90aGVyQXJncz8udHJhbnNsYXRlT3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IHsgc2VydmljZSwga2V5cyB9ID0gb3RoZXJBcmdzPy50cmFuc2xhdGVPcHRpb25zO1xyXG4gICAgICAgIHRoaXMuZ2V0aTE4bihzZXJ2aWNlLCBrZXlzIHx8ICcnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG90aGVyQXJncz8uY2FsbGJhY2tQYWdpbmF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5fX2NhbGxiYWNrUGFnaW5hdGlvbiA9IG90aGVyQXJncy5jYWxsYmFja1BhZ2luYXRpb247XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvdGhlckFyZ3M/LnBhZ2luYXRpb25PcHRpb25zKSB7XHJcbiAgICAgICAgdGhpcy5fX3BhZ2luYXRpb25PcHRpb25zID0gb3RoZXJBcmdzPy5wYWdpbmF0aW9uT3B0aW9ucztcclxuICAgICAgICB0aGlzLmhhbmRsZVBhZ2luYXRpb25PcHRpb25zKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvdGhlckFyZ3M/LmZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCB7IGZsYWcsIHNlcnZpY2UgfSA9IG90aGVyQXJncy5mZWF0dXJlO1xyXG5cclxuICAgICAgICBzZXJ2aWNlLm9uRmxhZ3NcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YWtlV2hpbGUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZsYWdWYWxpZGF0b3I7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCh2YWw6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgaWYgKHZhbCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGhhc0ZsYWcgPSBzZXJ2aWNlLmdldEZsYWcoZmxhZyk7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGhhc0ZsYWcpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0ZsYWcpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvRXJyb3JQYWdlKDQwNCwgb3RoZXJBcmdzPy5yb3V0ZXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG90aGVyQXJncz8uY2FsbGJhY2tNYWluKCk7XHJcbiAgICB9IGVsc2UgaWYgKCFhbGxvd2VkQnlQcm9ncmFtKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGVUb0Vycm9yUGFnZSg0MDQsIG90aGVyQXJncz8ucm91dGVyKTtcclxuICAgIH0gZWxzZSBpZiAocGVuZC5oYXNQZW5kZW5jaWVzKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGVUb1BlbmRlbmN5UGFnZShwZW5kLCBvdGhlckFyZ3M/LmNvbXBhbnlUeXBlLCBvdGhlckFyZ3M/LnJvdXRlcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5hdmlnYXRlVG9FcnJvclBhZ2UoNDAzLCBvdGhlckFyZ3M/LnJvdXRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRIVFRQSGVhZGVyQXBwbGljYXRpb25QREYoKTogT2JqZWN0IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgQE1vbmtleUVjeENvcmVTZXJ2aWNlKHtcclxuICAgIHJlcXVlc3RJblByb2dyZXNzOiB7XHJcbiAgICAgIHNob3dQcm9ncmVzczogdHJ1ZVxyXG4gICAgfVxyXG4gIH0pXHJcbiAgZ2VuZXJpY01ldGhvZChsaW5rOiBhbnksIGRhdGE/OiBhbnksIGNhbGxiYWNrPzogRnVuY3Rpb24pIHtcclxuICAgIGNvbnN0IHsgaHJlZiwgdHlwZSA9ICdnZXQnIH0gPSBsaW5rO1xyXG5cclxuICAgIHRoaXMubW9ua2V5ZWN4U2VydmljZT8uW3R5cGUudG9Mb3dlckNhc2UoKV0oYCR7aHJlZn1gLCBkYXRhKT8uc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjayhyZXNwKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgdGhyb3dFcnJvcihlcnIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQE1vbmtleUVjeENvcmVTZXJ2aWNlKHtcclxuICAgIHJlcXVlc3RJblByb2dyZXNzOiB7XHJcbiAgICAgIHNob3dQcm9ncmVzczogdHJ1ZVxyXG4gICAgfVxyXG4gIH0pXHJcbiAgYXN5bmMgZ2V0R2VuZXJpY0RhdGEoZGF0YTogYW55LCBhY3Rpb246IHN0cmluZykge1xyXG4gICAgY29uc3QgeyBtb25rZXllY3hTZXJ2aWNlIH0gPSB0aGlzO1xyXG4gICAgaWYgKCFtb25rZXllY3hTZXJ2aWNlKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IHsgaHJlZiwgdHlwZSB9ID0gbmV3IExpbmtzTW9kZWwoZGF0YSk/LmdldEFjdGlvbihhY3Rpb24pIHx8IHtcclxuICAgICAgaHJlZjogJycsIHR5cGU6ICdnZXQnXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBtb25rZXllY3hTZXJ2aWNlW3R5cGUudG9Mb3dlckNhc2UoKV08YW55PihocmVmKVxyXG4gICAgICAucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIGdldGkxOG4odHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwga2V5czogc3RyaW5nIHwgc3RyaW5nW10pIHtcclxuICAgIHRyYW5zbGF0ZVNlcnZpY2Uub25EZWZhdWx0TGFuZ0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9faTE4biA9IHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChrZXlzKTtcclxuICAgICAgdGhpcy5fX29uaTE4bkRhdGFDaGFuZ2VkJC5uZXh0KG51bGwpO1xyXG4gICAgfSk7XHJcbiAgICB0cmFuc2xhdGVTZXJ2aWNlLmdldFN0cmVhbU9uVHJhbnNsYXRpb25DaGFuZ2Uoa2V5cykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fX2kxOG4gPSB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoa2V5cyk7XHJcbiAgICAgIHRoaXMuX19vbmkxOG5EYXRhQ2hhbmdlZCQubmV4dChudWxsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZG9QYWdpbmF0aW9uKCkge1xyXG4gICAgaWYgKCF0aGlzLl9fb25Mb2FkaW5nSW5Qcm9ncmVzcyQudmFsdWUpIHtcclxuICAgICAgY29uc3QgaGFzTW9yZVBhZ2VzID0gdGhpcy5zZXRQYWdlKHtcclxuICAgICAgICBwYWdlOiB7XHJcbiAgICAgICAgICAuLi50aGlzLl9fcGFnZVxyXG4gICAgICAgIH1cclxuICAgICAgfSkubmV4dFBhZ2UoKTtcclxuXHJcbiAgICAgIGlmIChoYXNNb3JlUGFnZXMgJiYgdGhpcy5fX2NhbGxiYWNrUGFnaW5hdGlvbikge1xyXG4gICAgICAgIHRoaXMuX19jYWxsYmFja1BhZ2luYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG9QYWdpbmF0aW9udjIodHlwZTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcclxuICAgIGlmICghdGhpcy5fX29uTG9hZGluZ0luUHJvZ3Jlc3MkLnZhbHVlKSB7XHJcbiAgICAgIGlmIChjYWxsYmFjaykge1xyXG4gICAgICAgIGNhbGxiYWNrKHR5cGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRMaW5rcyhsaW5rczogYW55KSB7XHJcbiAgICB0aGlzLl9faXNBYmxlVG9Eb1BhZ2luYXRpb24gPSB7XHJcbiAgICAgIGZpcnN0OiAhIWxpbmtzPy5maXJzdCxcclxuICAgICAgbmV4dDogISFsaW5rcz8ubmV4dFxyXG4gICAgfTtcclxuICAgIHRoaXMuX19saW5rcyA9IGxpbmtzO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VhcmNoQnlVcmwocm91dGVyOiBSb3V0ZXIsIHVybDogc3RyaW5nLCBzZWFyY2g6IGFueSwgZXh0cmFzPzogYW55KSB7XHJcbiAgICB0aGlzLl9fZGF0YSA9IG51bGw7XHJcbiAgICB0aGlzLl9fcGFnZSA9IG51bGw7XHJcbiAgICB0aGlzLl9fb25EYXRhQ2hhbmdlZCQubmV4dChudWxsKTtcclxuICAgIHRoaXMuX19vbkxvYWRpbmdJblByb2dyZXNzJC5uZXh0KGZhbHNlKTtcclxuXHJcbiAgICByb3V0ZXIubmF2aWdhdGUoW3VybF0sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHtcclxuICAgICAgICAuLi5zZWFyY2gsXHJcbiAgICAgICAgcjogTW9ua2V5RWN4VXRpbHMuZ2V0UmFuZG9tU3RyaW5nKDMwKVxyXG4gICAgICB9LFxyXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxyXG4gICAgICAuLi5leHRyYXNcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVN0YXRlKHN0YXRlOiBNb25rZXlFY3hTYXZlZFN0YXRlKSB7XHJcbiAgICB0aGlzLl9fc2F2ZWRTdGF0ZSA9IHtcclxuICAgICAgcGFnZTogdGhpcy5fX3BhZ2UsXHJcbiAgICAgIC4uLnN0YXRlXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb0Vycm9yUGFnZShzdGF0dXNDb2RlOiBudW1iZXIsIHJvdXRlcj86IFJvdXRlcikge1xyXG4gICAgY29uc3Qgcm91dGVzOiBhbnkgPSB7XHJcbiAgICAgIDQwMzogJ2ZvcmJpZGRlbicsXHJcbiAgICAgIDQwNDogJ25vdC1mb3VuZCcsXHJcbiAgICAgIDUwMDogJ3NlcnZpY2UtcHJvYmxlbXMnLFxyXG4gICAgICA1MDM6ICdzZXJ2aWNlLXByb2JsZW1zJ1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoIXJvdXRlcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdSb3V0ZXIgbXVzdCBiZSBkZWNsYXJlZCcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcm91dGVyPy5uYXZpZ2F0ZShbYC9hcHAvcGFnZXMvJHtyb3V0ZXNbc3RhdHVzQ29kZV19YC50b0xvd2VyQ2FzZSgpXSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
362
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LWNvbW1vbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9jb21tb25zL21vbmtleWVjeC1jb21tb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFFTCxlQUFlLEVBR2hCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFjN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJbkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFLMUcsTUFBTSxVQUFXLFNBQVEsY0FBYztJQUNyQyxZQUFZLElBQVU7UUFDcEIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRSxNQUFNLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHVCQUF1QjtJQW9FbEMsWUFDUyxnQkFBbUMsRUFDbkMsWUFBMkMsRUFDM0MsU0FXTjtRQWJNLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDbkMsaUJBQVksR0FBWixZQUFZLENBQStCO1FBQzNDLGNBQVMsR0FBVCxTQUFTLENBV2Y7UUFqRkssa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUxQixZQUFPLEdBQTJCLElBQUksQ0FBQztRQUV2QyxrQkFBYSxHQUEyQixJQUFJLENBQUM7UUFFN0MsZUFBVSxHQUEyQixJQUFJLENBQUM7UUFFMUMsWUFBTyxHQUEyQixJQUFJLENBQUM7UUFJdkMsaUJBQVksR0FBK0IsSUFBSSxDQUFDO1FBSWhELFlBQU8sR0FBa0MsSUFBSSxDQUFDO1FBRTlDLG1CQUFjLEdBQXlDLElBQUksQ0FBQztRQUU1RCxXQUFNLEdBQWtDLElBQUksQ0FBQztRQUU3QyxZQUFPLEdBQWtDLElBQUksQ0FBQztRQUk5QyxtQkFBYyxHQUFpQyxJQUFJLENBQUM7UUFFcEQsdUJBQWtCLEdBQXlCLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJFLHFCQUFnQixHQUF5QixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRSwyQkFBc0IsR0FBeUIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUUsMEJBQXFCLEdBQXlCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpFLHFCQUFnQixHQUF5QixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRSxzQkFBaUIsR0FBeUIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEUsaUNBQTRCLEdBQXlCLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9FLDRCQUF1QixHQUF5QixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUxRSx5QkFBb0IsR0FBeUIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkUsa0JBQWEsR0FBMkMsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFaEYsZUFBVSxHQUFvQyxJQUFJLENBQUM7UUFJbkQseUJBQW9CLEdBQWEsR0FBRyxFQUFFO1lBQ3BDLHNDQUFzQztZQUN0QyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUM7UUFRRiwyQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFrQjFCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFO1lBQzFCLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sSUFBSTtnQkFDbEUsa0JBQWtCLEVBQUUsS0FBSzthQUMxQixDQUFDO1lBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTTtpQkFDekIsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNwQixPQUFPLEtBQUssWUFBWSxlQUFlLENBQUM7WUFDMUMsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDYixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FDSDtpQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxrQkFBa0IsRUFBRTtvQkFDekMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ25FLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2lCQUN4QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRU8sc0JBQXNCLENBQzVCLEdBQXdDLEVBQ3hDLFdBQW9CLEVBQ3BCLE1BQWU7UUFFZixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUM7UUFFbkIsSUFBSSxXQUFXLEVBQUU7WUFDZixLQUFLLEdBQUcsR0FBRyxLQUFLLElBQUksV0FBVyxRQUFRLENBQUM7U0FDekM7YUFBTTtZQUNMLEtBQUssR0FBRyxHQUFHLEtBQUsscUJBQXFCLENBQUM7U0FDdkM7UUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFO2dCQUMzRCxLQUFLLEVBQUU7b0JBQ0wsWUFBWSxFQUFFLEdBQUc7aUJBQ2xCO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU8sK0JBQStCLENBQUMsSUFBUztRQUMvQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTztnQkFDTCxhQUFhLEVBQUUsS0FBSzthQUNyQixDQUFDO1NBQ0g7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztRQUMvQixPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLDhCQUE4QixDQUFDLElBQVM7UUFDOUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJO1lBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUM7Z0JBQ3BELENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ3RFLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM5QztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsWUFBWTtTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sOEJBQThCLENBQUMsR0FBOEI7UUFDbkUsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN0QixPQUFPLEdBQUcsQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDLFVBQVUsQ0FBQztJQUN4QyxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNyQyxJQUFJLG1CQUFtQixFQUFFO1lBQ3ZCLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLG1CQUFtQixDQUFDO1lBQ3hELE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDdEMsQ0FBQyxFQUFFLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsWUFBbUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQixHQUFHLElBQUksQ0FBQyxjQUFjO1lBQ3RCLEdBQUcsWUFBWTtTQUNoQixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztTQUM3QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3ZDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBcUIsQ0FBQztRQUM1QyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNwQyxJQUFJLE1BQU0sR0FBRyxVQUFVLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRztnQkFDcEIsR0FBRyxJQUFJLENBQUMsY0FBYztnQkFDdEIsSUFBSSxFQUFFO29CQUNKLEdBQUcsSUFBSTtvQkFDUCxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUM7aUJBQ25CO2FBQ0YsQ0FBQztZQUNGLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBUyxFQUFFLEtBQWE7UUFDdEMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUMzQixPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDN0MsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVcsRUFBRSxRQUFRLEdBQUcsS0FBSztRQUM1QyxNQUFNLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztRQUN6QyxPQUFPLElBQUksNkJBQTZCLENBQ3RDLEdBQUcsRUFDSCxjQUFjLElBQUksRUFBRSxFQUNwQixPQUFPLEVBQ1AsUUFBUSxDQUNULENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQWtCO1FBQ3RCLElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFFcEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNuQixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDbEMsSUFBSSxLQUFLLEVBQUU7b0JBQ1QsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDeEQ7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25FLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2FBQ3hCO1NBQ0Y7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsT0FBTyxDQUNMLEtBQW9DLEVBQ3BDLEtBQWlDLEVBQ2pDLFNBMEJDO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDcEI7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUUxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTFGLElBQ0UsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUM7WUFDL0QsQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUNuQixnQkFBZ0IsRUFDaEI7WUFDQSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzthQUN4QjtZQUVELE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQztvQkFDWCxJQUFJLEVBQUU7d0JBQ0osTUFBTSxFQUFFLENBQUM7d0JBQ1QsSUFBSSxFQUFFLEVBQUU7cUJBQ1Q7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxJQUFJLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDL0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxTQUFTLEVBQUUsZ0JBQWdCLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQzthQUNuQztZQUVELElBQUksU0FBUyxFQUFFLGtCQUFrQixFQUFFO2dCQUNqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDO2FBQzFEO1lBRUQsSUFBSSxTQUFTLEVBQUUsaUJBQWlCLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLEVBQUUsaUJBQWlCLENBQUM7Z0JBQ3hELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2FBQ2hDO1lBRUQsSUFBSSxTQUFTLEVBQUUsT0FBTyxFQUFFO2dCQUN0QixNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7Z0JBRTVDLE9BQU8sQ0FBQyxPQUFPO3FCQUNaLElBQUksQ0FDSCxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLENBQ0g7cUJBQ0EsU0FBUyxDQUFDLENBQUMsR0FBWSxFQUFFLEVBQUU7b0JBQzFCLElBQUksR0FBRyxFQUFFO3dCQUNQLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBRXRDLElBQUksY0FBYyxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxFQUFFOzRCQUNyRCxJQUFJLENBQUMsT0FBTyxFQUFFO2dDQUNaLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDOzZCQUNsRDt5QkFDRjtxQkFDRjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNOO1lBRUQsU0FBUyxFQUFFLFlBQVksRUFBRSxDQUFDO1NBQzNCO2FBQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2xEO2FBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzdCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDOUU7YUFBTTtZQUNMLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPO1lBQ0wsT0FBTyxFQUFFLFVBQVU7WUFDbkIsWUFBWSxFQUFFLE1BQU07U0FDckIsQ0FBQztJQUNKLENBQUM7SUFPRCxhQUFhLENBQUMsSUFBUyxFQUFFLElBQVUsRUFBRSxRQUFtQjtRQUN0RCxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFcEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxTQUFTLENBQ3JFLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDWixJQUFJLFFBQVE7Z0JBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUMsRUFDRCxDQUFDLEdBQXNCLEVBQUUsRUFBRTtZQUN6QixJQUFJLFFBQVE7Z0JBQUUsUUFBUSxFQUFFLENBQUM7WUFDekIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQU9ELEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBUyxFQUFFLE1BQWM7UUFDNUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0I7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNuQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUNoRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLO1NBQ3RCLENBQUM7UUFFRixPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFNLElBQUksQ0FBQzthQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxnQkFBa0MsRUFBRSxJQUF1QjtRQUNqRSxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxnQkFBZ0IsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pFLElBQUksQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFO1lBQ3RDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ2hDLElBQUksRUFBRTtvQkFDSixHQUFHLElBQUksQ0FBQyxNQUFNO2lCQUNmO2FBQ0YsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRWQsSUFBSSxZQUFZLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUM3QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM3QjtTQUNGO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsUUFBa0I7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUU7WUFDdEMsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2hCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLHNCQUFzQixHQUFHO1lBQzVCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUs7WUFDckIsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSTtTQUNwQixDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFjLEVBQUUsR0FBVyxFQUFFLE1BQVcsRUFBRSxNQUFZO1FBQ25FLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4QyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDckIsV0FBVyxFQUFFO2dCQUNYLEdBQUcsTUFBTTtnQkFDVCxDQUFDLEVBQUUsY0FBYyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7YUFDdEM7WUFDRCxtQkFBbUIsRUFBRSxPQUFPO1lBQzVCLEdBQUcsTUFBTTtTQUNWLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBMEI7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDakIsR0FBRyxLQUFLO1NBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxVQUFrQixFQUFFLE1BQWU7UUFDckQsTUFBTSxNQUFNLEdBQVE7WUFDbEIsR0FBRyxFQUFFLFdBQVc7WUFDaEIsR0FBRyxFQUFFLFdBQVc7WUFDaEIsR0FBRyxFQUFFLGtCQUFrQjtZQUN2QixHQUFHLEVBQUUsa0JBQWtCO1NBQ3hCLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDTCxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsY0FBYyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0NBQ0Y7QUE1R0M7SUFMQyxvQkFBb0IsQ0FBQztRQUNwQixpQkFBaUIsRUFBRTtZQUNqQixZQUFZLEVBQUUsSUFBSTtTQUNuQjtLQUNGLENBQUM7NERBYUQ7QUFPRDtJQUxDLG9CQUFvQixDQUFDO1FBQ3BCLGlCQUFpQixFQUFFO1lBQ2pCLFlBQVksRUFBRSxJQUFJO1NBQ25CO0tBQ0YsQ0FBQzs2REFVRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1xyXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgTmF2aWdhdGlvblN0YXJ0LFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlLCB0YWtlV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1vbmtleUVjeENvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9tb25rZXllY3gtZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgTW9ua2V5RWN4Q29tcGFueVBlbmRlbmNpZXNWYWxpZGF0ZWQsXHJcbiAgTW9ua2V5RWN4Q29uZmlnLFxyXG4gIE1vbmtleUVjeENvdW50cnlTZWN1cml0eSxcclxuICBNb25rZXlFY3hFcnJvclJlc3BvbnNlLFxyXG4gIE1vbmtleUVjeEhhbmRsZWRFcnJvclJlc3BvbnNlLFxyXG4gIE1vbmtleUVjeFJlcXVlc3RQYWdlZCxcclxuICBNb25rZXlFY3hSZXF1ZXN0U2NoZWR1bGUsXHJcbiAgTW9ua2V5RWN4UmVzcG9uc2VMaW5rcyxcclxuICBNb25rZXlFY3hSZXNwb25zZVBhZ2VkLFxyXG4gIE1vbmtleUVjeFNhdmVkU3RhdGUsXHJcbiAgTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9uc1xyXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBNb25rZXlFY3hNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsJztcclxuaW1wb3J0IHsgTW9ua2V5RWN4VXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IE1vbmtleUVjeEZlYXR1cmVUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29uZmlnL21vbmtleWVjeC1mZWF0dXJlLXRvZ2dsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9ua2V5RWN4U2VydmljZSB9IGZyb20gJy4uL21vbmtleWVjeC1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb25rZXlFY3hQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4uL3BhZ2luYXRpb24nO1xyXG5pbXBvcnQgeyBNb25rZXlFY3hSZXF1ZXN0UGFnZWRIYW5kbGluZyB9IGZyb20gJy4uL3JlcXVlc3QtcGFnZWQvbW9ua2V5ZWN4LXJlcXVlc3QtcmVxdWVzdC1wYWdlZC1oYW5kbGluZyc7XHJcbmltcG9ydCB7IE1vbmtleUVjeFJlcXVlc3RRdWV1ZUhhbmRsaW5nU2VydmljZSB9IGZyb20gJy4uL3JlcXVlc3QtcXVldWUvbW9ua2V5ZWN4LXJlcXVlc3QtcXVldWUtaGFuZGxpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vbmtleUVjeFJlcXVlc3RTY2hlZHVsZVNlcnZpY2UgfSBmcm9tICcuLi9zY2hlZHVsZXMvbW9ua2V5ZWN4LXJlcXVlc3Qtc2NoZWR1bGUuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vbmtleUVjeFRva2VuU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yYWdlL21vbmtleWVjeC10b2tlbi1zdG9yYWdlLnNlcnZpY2UnO1xyXG5cclxuY2xhc3MgTGlua3NNb2RlbCBleHRlbmRzIE1vbmtleUVjeE1vZGVsIHtcclxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5fbGlua3MgPSBkYXRhPy5fbGlua3M7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTW9ua2V5RWN4Q29tbW9uc1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgZmxhZ1ZhbGlkYXRvciA9IHRydWU7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XHJcblxyXG4gIF9fZGF0YSQ6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBfX3BhZ2luYXRpb24kOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgX19jb250cm9sJDogT2JzZXJ2YWJsZTxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIF9fcGFnZSQ6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBfX2RhdGE6IGFueSB8IGFueVtdO1xyXG5cclxuICBfX3NhdmVkU3RhdGU6IE1vbmtleUVjeFNhdmVkU3RhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgX19wYXJhbXM6IGFueSB8IGFueVtdO1xyXG5cclxuICBfX2Vycm9yOiBNb25rZXlFY3hFcnJvclJlc3BvbnNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIF9faGFuZGxlZEVycm9yOiBNb25rZXlFY3hIYW5kbGVkRXJyb3JSZXNwb25zZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBfX3BhZ2U6IE1vbmtleUVjeFJlc3BvbnNlUGFnZWQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgX19saW5rczogTW9ua2V5RWN4UmVzcG9uc2VMaW5rcyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBfX3NlYXJjaDogYW55O1xyXG5cclxuICBfX3JlcXVlc3RQYWdlZDogTW9ua2V5RWN4UmVxdWVzdFBhZ2VkIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIF9fb25TZWFyY2hDaGFuZ2VkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xyXG5cclxuICBfX29uRGF0YUNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG4gIF9fb25Mb2FkaW5nSW5Qcm9ncmVzcyQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XHJcblxyXG4gIF9fb25VcGxvYWRJblByb2dyZXNzJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuXHJcbiAgX19vbkRhdGFEZWxldGVkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xyXG5cclxuICBfX29uRXJyb3JDaGFuZ2VkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xyXG5cclxuICBfX29uR292ZXJubWVudElkRGF0YUNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG4gIF9fb25aaXBDb2RlRGF0YUNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG4gIF9fb25pMThuRGF0YUNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG4gIF9fb25Eb1NlYXJjaCQ6IEJlaGF2aW9yU3ViamVjdDxNb25rZXlFY3hSZXF1ZXN0UGFnZWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XHJcblxyXG4gIF9fc2NoZWR1bGU6IE1vbmtleUVjeFJlcXVlc3RTY2hlZHVsZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBfX2kxOG46IGFueTtcclxuXHJcbiAgX19jYWxsYmFja1BhZ2luYXRpb246IEZ1bmN0aW9uID0gKCkgPT4ge1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcclxuICAgIHJldHVybiBjb25zb2xlLmVycm9yKCdNZXRob2QgY2FsbGJhY2tQYWdpbmF0aW9uIG5lZWRzIHRvIGJlIGRlY2xhcmVkJyk7XHJcbiAgfTtcclxuXHJcbiAgX19wYWdpbmF0aW9uT3B0aW9uczoge1xyXG4gICAgc2VydmljZTogTW9ua2V5RWN4UGFnaW5hdGlvblNlcnZpY2U7XHJcbiAgICBjYWxsYmFjazogRnVuY3Rpb247XHJcbiAgICBuYW1lPzogc3RyaW5nO1xyXG4gIH0gfCB1bmRlZmluZWQ7XHJcblxyXG4gIF9faXNBYmxlVG9Eb1BhZ2luYXRpb24gPSB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgbW9ua2V5ZWN4U2VydmljZT86IE1vbmtleUVjeFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdG9rZW5TdG9yYWdlPzogTW9ua2V5RWN4VG9rZW5TdG9yYWdlU2VydmljZSxcclxuICAgIHB1YmxpYyBvdGhlckFyZ3M/OiB7XHJcbiAgICAgIHJvdXRlcj86IFJvdXRlcjtcclxuICAgICAgc2NoZWR1bGU/OiB7XHJcbiAgICAgICAgc2VydmljZTogTW9ua2V5RWN4UmVxdWVzdFNjaGVkdWxlU2VydmljZTtcclxuICAgICAgICBvcHRpb25zPzoge1xyXG4gICAgICAgICAgY2xlYXJPbkNoYW5nZVJvdXRlPzogYm9vbGVhbjtcclxuICAgICAgICB9O1xyXG4gICAgICB9O1xyXG4gICAgICBxdWV1ZT86IHtcclxuICAgICAgICBzZXJ2aWNlOiBNb25rZXlFY3hSZXF1ZXN0UXVldWVIYW5kbGluZ1NlcnZpY2U7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgKSB7XHJcbiAgICB0aGlzLmhhbmRsZUluaXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm90aGVyQXJncz8ucm91dGVyKSB7XHJcbiAgICAgIGNvbnN0IHsgY2xlYXJPbkNoYW5nZVJvdXRlIH0gPSB0aGlzLm90aGVyQXJncz8uc2NoZWR1bGU/Lm9wdGlvbnMgfHwge1xyXG4gICAgICAgIGNsZWFyT25DaGFuZ2VSb3V0ZTogZmFsc2VcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMub3RoZXJBcmdzLnJvdXRlci5ldmVudHNcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGZpbHRlcigoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQ7XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHRha2VXaGlsZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5kZXN0cm95ZWQ7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLl9fc2NoZWR1bGUgJiYgY2xlYXJPbkNoYW5nZVJvdXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3RoZXJBcmdzPy5zY2hlZHVsZT8uc2VydmljZT8ucmVtb3ZlU2NoZWR1bGUodGhpcy5fX3NjaGVkdWxlKTtcclxuICAgICAgICAgICAgdGhpcy5fX3NjaGVkdWxlID0gbnVsbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbmF2aWdhdGVUb1BlbmRlbmN5UGFnZShcclxuICAgIGFyZzogTW9ua2V5RWN4Q29tcGFueVBlbmRlbmNpZXNWYWxpZGF0ZWQsXHJcbiAgICBjb21wYW55VHlwZT86IHN0cmluZyxcclxuICAgIHJvdXRlcj86IFJvdXRlclxyXG4gICkge1xyXG4gICAgbGV0IHJvdXRlID0gJy9hcHAnO1xyXG5cclxuICAgIGlmIChjb21wYW55VHlwZSkge1xyXG4gICAgICByb3V0ZSA9IGAke3JvdXRlfS8ke2NvbXBhbnlUeXBlfS9wYWdlc2A7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByb3V0ZSA9IGAke3JvdXRlfS91c2VyL3Byb2ZpbGUvcGFnZXNgO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghcm91dGVyKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1JvdXRlciBtdXN0IGJlIGRlY2xhcmVkJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByb3V0ZXIubmF2aWdhdGUoW2Ake3JvdXRlfS9jb21wYW55LXBlbmRlbmN5YC50b0xvd2VyQ2FzZSgpXSwge1xyXG4gICAgICAgIHN0YXRlOiB7XHJcbiAgICAgICAgICBwZW5kZW5jeURhdGE6IGFyZ1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFsbG93ZWRTZWN1cml0eUFjY2Vzc0J5UGVuZGVuY3koYXJnczogYW55KTogTW9ua2V5RWN4Q29tcGFueVBlbmRlbmNpZXNWYWxpZGF0ZWQge1xyXG4gICAgaWYgKCFhcmdzKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaGFzUGVuZGVuY2llczogZmFsc2VcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgc2VydmljZSwgdHlwZSB9ID0gYXJncztcclxuICAgIHJldHVybiBzZXJ2aWNlLmhhc1BlbmRlbmNpZXModHlwZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFsbG93ZWRTZWN1cml0eUFjY2Vzc0J5RmVhdHVyZShhcmdzOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICghYXJncykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgY29uZmlnLCBmZWF0dXJlIH0gPSBhcmdzO1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCFNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGZlYXR1cmUpIHx8XHJcbiAgICAgICAgIU1vbmtleUVjeFV0aWxzLnBlcnNpc3ROdWxsRW1wdHlVbmRlZmluZWQoY29uZmlnPy5wcm9ncmFtPy5zZXR0aW5ncykpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gIWNvbmZpZz8ucHJvZ3JhbT8uc2V0dGluZ3M/LltmZWF0dXJlXTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gbm90IHRvIGRvXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWxsb3dlZFNlY3VyaXR5QWNjZXNzQnlDb3VudHJ5KGFyZz86IE1vbmtleUVjeENvdW50cnlTZWN1cml0eSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFhcmcpIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIGFyZy5jb3VudHJ5ID09PSBhcmcuZW52Q291bnRyeTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlUGFnaW5hdGlvbk9wdGlvbnMoKSB7XHJcbiAgICBjb25zdCB7IF9fcGFnaW5hdGlvbk9wdGlvbnMgfSA9IHRoaXM7XHJcbiAgICBpZiAoX19wYWdpbmF0aW9uT3B0aW9ucykge1xyXG4gICAgICBjb25zdCB7IHNlcnZpY2UsIGNhbGxiYWNrLCBuYW1lIH0gPSBfX3BhZ2luYXRpb25PcHRpb25zO1xyXG4gICAgICBzZXJ2aWNlPy5zZXRDYWxsYmFjaygodHlwZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kb1BhZ2luYXRpb252Mih0eXBlLCBjYWxsYmFjayk7XHJcbiAgICAgIH0sIG5hbWUgfHwgJ21haW4nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFBhZ2UocmVxdWVzdFBhZ2VkOiBNb25rZXlFY3hSZXF1ZXN0UGFnZWQpIHtcclxuICAgIHRoaXMuX19yZXF1ZXN0UGFnZWQgPSB7XHJcbiAgICAgIC4uLnRoaXMuX19yZXF1ZXN0UGFnZWQsXHJcbiAgICAgIC4uLnJlcXVlc3RQYWdlZFxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgbmV4dFBhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5fX2xpbmtzKSB7XHJcbiAgICAgIHJldHVybiAhIXRoaXMuX19saW5rcz8ubmV4dDtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5fX3JlcXVlc3RQYWdlZCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgeyBwYWdlIH0gPSB0aGlzLl9fcmVxdWVzdFBhZ2VkIGFzIGFueTtcclxuICAgIGNvbnN0IHsgbnVtYmVyLCB0b3RhbFBhZ2VzIH0gPSBwYWdlO1xyXG4gICAgaWYgKG51bWJlciA8IHRvdGFsUGFnZXMpIHtcclxuICAgICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IHtcclxuICAgICAgICAuLi50aGlzLl9fcmVxdWVzdFBhZ2VkLFxyXG4gICAgICAgIHBhZ2U6IHtcclxuICAgICAgICAgIC4uLnBhZ2UsXHJcbiAgICAgICAgICBudW1iZXI6IG51bWJlciArIDFcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0RW1iZWRkZWREYXRhKGRhdGE6IGFueSwgZmllbGQ6IHN0cmluZyk6IGFueVtdIHwgYW55IHtcclxuICAgIGNvbnN0IHsgX2VtYmVkZGVkIH0gPSBkYXRhO1xyXG4gICAgcmV0dXJuIF9lbWJlZGRlZCA/IF9lbWJlZGRlZFtmaWVsZF0gOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9ybWFsaXplZFVybCh1cmw6IHN0cmluZywgc2FtZVBhZ2UgPSBmYWxzZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB7IF9fcmVxdWVzdFBhZ2VkLCBfX2xpbmtzIH0gPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5ldyBNb25rZXlFY3hSZXF1ZXN0UGFnZWRIYW5kbGluZyhcclxuICAgICAgdXJsLFxyXG4gICAgICBfX3JlcXVlc3RQYWdlZCB8fCB7fSxcclxuICAgICAgX19saW5rcyxcclxuICAgICAgc2FtZVBhZ2VcclxuICAgICkuZ2V0UmVxdWVzdFdpdGhQYWdlZFBhcmFtcygpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXIoY2xlYXJEYXRhOiBib29sZWFuKSB7XHJcbiAgICBpZiAoY2xlYXJEYXRhKSB7XHJcbiAgICAgIHRoaXMuX19kYXRhID0gbnVsbDtcclxuICAgICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IG51bGw7XHJcbiAgICAgIHRoaXMuX19wYXJhbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLl9fcGFnZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuX19saW5rcyA9IG51bGw7XHJcblxyXG4gICAgICBpZiAodGhpcy5fX3NjaGVkdWxlKSB7XHJcbiAgICAgICAgY29uc3QgeyBxdWV1ZSB9ID0gdGhpcy5fX3NjaGVkdWxlO1xyXG4gICAgICAgIGlmIChxdWV1ZSkge1xyXG4gICAgICAgICAgdGhpcy5vdGhlckFyZ3M/LnF1ZXVlPy5zZXJ2aWNlPy5yZW1vdmVRdWV1ZUl0ZW0ocXVldWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm90aGVyQXJncz8uc2NoZWR1bGU/LnNlcnZpY2U/LnJlbW92ZVNjaGVkdWxlKHRoaXMuX19zY2hlZHVsZSk7XHJcbiAgICAgICAgdGhpcy5fX3NjaGVkdWxlID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5fX2Vycm9yID0gbnVsbDtcclxuICAgIHRoaXMuX19oYW5kbGVkRXJyb3IgPSBudWxsO1xyXG4gICAgdGhpcy5mbGFnVmFsaWRhdG9yID0gZmFsc2U7XHJcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICByZXNvbHZlKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfCBudWxsLFxyXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QgfCBudWxsLFxyXG4gICAgb3RoZXJBcmdzPzoge1xyXG4gICAgICBjb21wYW55VHlwZT86IHN0cmluZyxcclxuICAgICAgY2FsbGJhY2tNYWluOiBGdW5jdGlvbjtcclxuICAgICAgcm91dGVyPzogUm91dGVyO1xyXG4gICAgICBjYWxsYmFja1BhZ2luYXRpb24/OiBGdW5jdGlvbjtcclxuICAgICAgdHJhbnNsYXRlT3B0aW9ucz86IE1vbmtleUVjeFRyYW5zbGF0ZU9wdGlvbnM7XHJcbiAgICAgIGZlYXR1cmU/OiB7XHJcbiAgICAgICAgc2VydmljZTogTW9ua2V5RWN4RmVhdHVyZVRvZ2dsZVNlcnZpY2U7XHJcbiAgICAgICAgZmxhZzogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBmZWF0dXJlQnlQcm9ncmFtPzoge1xyXG4gICAgICAgIGNvbmZpZzogTW9ua2V5RWN4Q29uZmlnO1xyXG4gICAgICAgIGZlYXR1cmU6IHN0cmluZztcclxuICAgICAgfTtcclxuICAgICAgY291bnRyeVNlY3VyaXR5PzogTW9ua2V5RWN4Q291bnRyeVNlY3VyaXR5O1xyXG4gICAgICBwZW5kZW5jeT86IHtcclxuICAgICAgICBzZXJ2aWNlOiB7XHJcbiAgICAgICAgICBoYXNQZW5kZW5jaWVzOiBGdW5jdGlvbjtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHR5cGU6IHN0cmluZztcclxuICAgICAgfTtcclxuICAgICAgcGFnaW5hdGlvbk9wdGlvbnM/OiB7XHJcbiAgICAgICAgc2VydmljZTogTW9ua2V5RWN4UGFnaW5hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uLFxyXG4gICAgICAgIG5hbWU/OiBzdHJpbmdcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICkge1xyXG4gICAgaWYgKEpTT04uc3RyaW5naWZ5KHJvdXRlPy5xdWVyeVBhcmFtcykgPT09ICd7fScpIHtcclxuICAgICAgdGhpcy5fX2RhdGEgPSBudWxsO1xyXG4gICAgICB0aGlzLl9fcGFnZSA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IG51bGw7XHJcbiAgICB0aGlzLmZsYWdWYWxpZGF0b3IgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IHBlbmQgPSB0aGlzLmFsbG93ZWRTZWN1cml0eUFjY2Vzc0J5UGVuZGVuY3kob3RoZXJBcmdzPy5wZW5kZW5jeSk7XHJcbiAgICBjb25zdCBhbGxvd2VkQnlQcm9ncmFtID0gdGhpcy5hbGxvd2VkU2VjdXJpdHlBY2Nlc3NCeUZlYXR1cmUob3RoZXJBcmdzPy5mZWF0dXJlQnlQcm9ncmFtKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuYWxsb3dlZFNlY3VyaXR5QWNjZXNzQnlDb3VudHJ5KG90aGVyQXJncz8uY291bnRyeVNlY3VyaXR5KSAmJlxyXG4gICAgICAhcGVuZC5oYXNQZW5kZW5jaWVzICYmXHJcbiAgICAgIGFsbG93ZWRCeVByb2dyYW1cclxuICAgICkge1xyXG4gICAgICBpZiAodGhpcy5fX3NjaGVkdWxlKSB7XHJcbiAgICAgICAgdGhpcy5vdGhlckFyZ3M/LnNjaGVkdWxlPy5zZXJ2aWNlPy5yZW1vdmVTY2hlZHVsZSh0aGlzLl9fc2NoZWR1bGUpO1xyXG4gICAgICAgIHRoaXMuX19zY2hlZHVsZSA9IG51bGw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHsgX19yZXF1ZXN0UGFnZWQgfSA9IHRoaXM7XHJcbiAgICAgIGlmICghX19yZXF1ZXN0UGFnZWQpIHtcclxuICAgICAgICB0aGlzLnNldFBhZ2Uoe1xyXG4gICAgICAgICAgcGFnZToge1xyXG4gICAgICAgICAgICBudW1iZXI6IDAsXHJcbiAgICAgICAgICAgIHNpemU6IDEwXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvdGhlckFyZ3M/LnRyYW5zbGF0ZU9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCB7IHNlcnZpY2UsIGtleXMgfSA9IG90aGVyQXJncz8udHJhbnNsYXRlT3B0aW9ucztcclxuICAgICAgICB0aGlzLmdldGkxOG4oc2VydmljZSwga2V5cyB8fCAnJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvdGhlckFyZ3M/LmNhbGxiYWNrUGFnaW5hdGlvbikge1xyXG4gICAgICAgIHRoaXMuX19jYWxsYmFja1BhZ2luYXRpb24gPSBvdGhlckFyZ3MuY2FsbGJhY2tQYWdpbmF0aW9uO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3RoZXJBcmdzPy5wYWdpbmF0aW9uT3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMuX19wYWdpbmF0aW9uT3B0aW9ucyA9IG90aGVyQXJncz8ucGFnaW5hdGlvbk9wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVQYWdpbmF0aW9uT3B0aW9ucygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3RoZXJBcmdzPy5mZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgeyBmbGFnLCBzZXJ2aWNlIH0gPSBvdGhlckFyZ3MuZmVhdHVyZTtcclxuXHJcbiAgICAgICAgc2VydmljZS5vbkZsYWdzXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFrZVdoaWxlKCgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mbGFnVmFsaWRhdG9yO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgodmFsOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2YWwpIHtcclxuICAgICAgICAgICAgICBjb25zdCBoYXNGbGFnID0gc2VydmljZS5nZXRGbGFnKGZsYWcpO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoTW9ua2V5RWN4VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChoYXNGbGFnKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGVUb0Vycm9yUGFnZSg0MDQsIG90aGVyQXJncz8ucm91dGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBvdGhlckFyZ3M/LmNhbGxiYWNrTWFpbigpO1xyXG4gICAgfSBlbHNlIGlmICghYWxsb3dlZEJ5UHJvZ3JhbSkge1xyXG4gICAgICB0aGlzLm5hdmlnYXRlVG9FcnJvclBhZ2UoNDA0LCBvdGhlckFyZ3M/LnJvdXRlcik7XHJcbiAgICB9IGVsc2UgaWYgKHBlbmQuaGFzUGVuZGVuY2llcykge1xyXG4gICAgICB0aGlzLm5hdmlnYXRlVG9QZW5kZW5jeVBhZ2UocGVuZCwgb3RoZXJBcmdzPy5jb21wYW55VHlwZSwgb3RoZXJBcmdzPy5yb3V0ZXIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0ZVRvRXJyb3JQYWdlKDQwMywgb3RoZXJBcmdzPy5yb3V0ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SFRUUEhlYWRlckFwcGxpY2F0aW9uUERGKCk6IE9iamVjdCB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxyXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIEBNb25rZXlFY3hDb3JlU2VydmljZSh7XHJcbiAgICByZXF1ZXN0SW5Qcm9ncmVzczoge1xyXG4gICAgICBzaG93UHJvZ3Jlc3M6IHRydWVcclxuICAgIH1cclxuICB9KVxyXG4gIGdlbmVyaWNNZXRob2QobGluazogYW55LCBkYXRhPzogYW55LCBjYWxsYmFjaz86IEZ1bmN0aW9uKSB7XHJcbiAgICBjb25zdCB7IGhyZWYsIHR5cGUgPSAnZ2V0JyB9ID0gbGluaztcclxuXHJcbiAgICB0aGlzLm1vbmtleWVjeFNlcnZpY2U/Llt0eXBlLnRvTG93ZXJDYXNlKCldKGAke2hyZWZ9YCwgZGF0YSk/LnN1YnNjcmliZShcclxuICAgICAgKHJlc3A6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2socmVzcCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xyXG4gICAgICAgIHRocm93RXJyb3IoZXJyKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIEBNb25rZXlFY3hDb3JlU2VydmljZSh7XHJcbiAgICByZXF1ZXN0SW5Qcm9ncmVzczoge1xyXG4gICAgICBzaG93UHJvZ3Jlc3M6IHRydWVcclxuICAgIH1cclxuICB9KVxyXG4gIGFzeW5jIGdldEdlbmVyaWNEYXRhKGRhdGE6IGFueSwgYWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHsgbW9ua2V5ZWN4U2VydmljZSB9ID0gdGhpcztcclxuICAgIGlmICghbW9ua2V5ZWN4U2VydmljZSkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCB7IGhyZWYsIHR5cGUgfSA9IG5ldyBMaW5rc01vZGVsKGRhdGEpPy5nZXRBY3Rpb24oYWN0aW9uKSB8fCB7XHJcbiAgICAgIGhyZWY6ICcnLCB0eXBlOiAnZ2V0J1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9ua2V5ZWN4U2VydmljZVt0eXBlLnRvTG93ZXJDYXNlKCldPGFueT4oaHJlZilcclxuICAgICAgLnBpcGUodGFrZSgxKSkudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRpMThuKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsIGtleXM6IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcbiAgICB0cmFuc2xhdGVTZXJ2aWNlLm9uRGVmYXVsdExhbmdDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fX2kxOG4gPSB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoa2V5cyk7XHJcbiAgICAgIHRoaXMuX19vbmkxOG5EYXRhQ2hhbmdlZCQubmV4dChudWxsKTtcclxuICAgIH0pO1xyXG4gICAgdHJhbnNsYXRlU2VydmljZS5nZXRTdHJlYW1PblRyYW5zbGF0aW9uQ2hhbmdlKGtleXMpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX19pMThuID0gdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGtleXMpO1xyXG4gICAgICB0aGlzLl9fb25pMThuRGF0YUNoYW5nZWQkLm5leHQobnVsbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRvUGFnaW5hdGlvbigpIHtcclxuICAgIGlmICghdGhpcy5fX29uTG9hZGluZ0luUHJvZ3Jlc3MkLnZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IGhhc01vcmVQYWdlcyA9IHRoaXMuc2V0UGFnZSh7XHJcbiAgICAgICAgcGFnZToge1xyXG4gICAgICAgICAgLi4udGhpcy5fX3BhZ2VcclxuICAgICAgICB9XHJcbiAgICAgIH0pLm5leHRQYWdlKCk7XHJcblxyXG4gICAgICBpZiAoaGFzTW9yZVBhZ2VzICYmIHRoaXMuX19jYWxsYmFja1BhZ2luYXRpb24pIHtcclxuICAgICAgICB0aGlzLl9fY2FsbGJhY2tQYWdpbmF0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvUGFnaW5hdGlvbnYyKHR5cGU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICBpZiAoIXRoaXMuX19vbkxvYWRpbmdJblByb2dyZXNzJC52YWx1ZSkge1xyXG4gICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICBjYWxsYmFjayh0eXBlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TGlua3MobGlua3M6IGFueSkge1xyXG4gICAgdGhpcy5fX2lzQWJsZVRvRG9QYWdpbmF0aW9uID0ge1xyXG4gICAgICBmaXJzdDogISFsaW5rcz8uZmlyc3QsXHJcbiAgICAgIG5leHQ6ICEhbGlua3M/Lm5leHRcclxuICAgIH07XHJcbiAgICB0aGlzLl9fbGlua3MgPSBsaW5rcztcclxuICB9XHJcblxyXG4gIHNldFNlYXJjaEJ5VXJsKHJvdXRlcjogUm91dGVyLCB1cmw6IHN0cmluZywgc2VhcmNoOiBhbnksIGV4dHJhcz86IGFueSkge1xyXG4gICAgdGhpcy5fX2RhdGEgPSBudWxsO1xyXG4gICAgdGhpcy5fX3BhZ2UgPSBudWxsO1xyXG4gICAgdGhpcy5fX29uRGF0YUNoYW5nZWQkLm5leHQobnVsbCk7XHJcbiAgICB0aGlzLl9fb25Mb2FkaW5nSW5Qcm9ncmVzcyQubmV4dChmYWxzZSk7XHJcblxyXG4gICAgcm91dGVyLm5hdmlnYXRlKFt1cmxdLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICAgICAgLi4uc2VhcmNoLFxyXG4gICAgICAgIHI6IE1vbmtleUVjeFV0aWxzLmdldFJhbmRvbVN0cmluZygzMClcclxuICAgICAgfSxcclxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcclxuICAgICAgLi4uZXh0cmFzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNhdmVTdGF0ZShzdGF0ZTogTW9ua2V5RWN4U2F2ZWRTdGF0ZSkge1xyXG4gICAgdGhpcy5fX3NhdmVkU3RhdGUgPSB7XHJcbiAgICAgIHBhZ2U6IHRoaXMuX19wYWdlLFxyXG4gICAgICAuLi5zdGF0ZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9FcnJvclBhZ2Uoc3RhdHVzQ29kZTogbnVtYmVyLCByb3V0ZXI/OiBSb3V0ZXIpIHtcclxuICAgIGNvbnN0IHJvdXRlczogYW55ID0ge1xyXG4gICAgICA0MDM6ICdmb3JiaWRkZW4nLFxyXG4gICAgICA0MDQ6ICdub3QtZm91bmQnLFxyXG4gICAgICA1MDA6ICdzZXJ2aWNlLXByb2JsZW1zJyxcclxuICAgICAgNTAzOiAnc2VydmljZS1wcm9ibGVtcydcclxuICAgIH07XHJcblxyXG4gICAgaWYgKCFyb3V0ZXIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignUm91dGVyIG11c3QgYmUgZGVjbGFyZWQnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJvdXRlcj8ubmF2aWdhdGUoW2AvYXBwL3BhZ2VzLyR7cm91dGVzW3N0YXR1c0NvZGVdfWAudG9Mb3dlckNhc2UoKV0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Input, NgModule, Pipe, ViewEncapsulation, Injectable, EventEmitter, Directive, Output, HostBinding, HostListener, forwardRef, Self, InjectionToken, Inject, Optional, SkipSelf, NgZone, ErrorHandler } from '@angular/core';
|
|
2
|
+
import { Component, Input, NgModule, Pipe, ViewEncapsulation, Injectable, EventEmitter, Directive, Output, HostBinding, HostListener, forwardRef, Self, InjectionToken, Inject, Optional, inject, SkipSelf, NgZone, ErrorHandler } from '@angular/core';
|
|
3
3
|
import * as i1 from 'monkey-style-guide';
|
|
4
4
|
import { MonkeyButtonModule, MonkeyModalModule, MonkeyIconModule, MonkeyInputModule, MonkeyRadioButtonModule, MonkeyOptionModule, MonkeyUtils, MonkeyStyleGuideModule, MonkeyStyleGuideModalService, MonkeyStyleGuideSettingsService, MonkeyStyleGuideSnackbarService } from 'monkey-style-guide';
|
|
5
5
|
import * as i2 from '@angular/common';
|
|
@@ -14,14 +14,14 @@ import { HttpParams, HttpErrorResponse, HTTP_INTERCEPTORS, HttpClientModule } fr
|
|
|
14
14
|
import * as i2$1 from '@angular/platform-browser';
|
|
15
15
|
import * as i1$3 from 'ngx-cookie-service';
|
|
16
16
|
import * as i2$2 from '@angular/router';
|
|
17
|
-
import { NavigationStart, NavigationEnd, NavigationError, NavigationCancel } from '@angular/router';
|
|
17
|
+
import { NavigationStart, NavigationEnd, NavigationError, NavigationCancel, Router } from '@angular/router';
|
|
18
18
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
19
19
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
20
20
|
import * as i1$4 from '@angular/cdk/overlay';
|
|
21
21
|
import { OverlayModule } from '@angular/cdk/overlay';
|
|
22
22
|
import { __awaiter, __decorate } from 'tslib';
|
|
23
23
|
import * as i2$3 from '@ngrx/store';
|
|
24
|
-
import { createAction, props, INIT, createReducer, on, createFeatureSelector, createSelector, StoreModule } from '@ngrx/store';
|
|
24
|
+
import { createAction, props, INIT, createReducer, on, createFeatureSelector, createSelector, Store, StoreModule } from '@ngrx/store';
|
|
25
25
|
import { createEntityAdapter } from '@ngrx/entity';
|
|
26
26
|
import { datadogRum } from '@datadog/browser-rum';
|
|
27
27
|
import * as i1$5 from '@angular/service-worker';
|
|
@@ -2760,6 +2760,7 @@ class MonkeyEcxCommonsService {
|
|
|
2760
2760
|
this.__data$ = null;
|
|
2761
2761
|
this.__pagination$ = null;
|
|
2762
2762
|
this.__control$ = null;
|
|
2763
|
+
this.__page$ = null;
|
|
2763
2764
|
this.__savedState = null;
|
|
2764
2765
|
this.__error = null;
|
|
2765
2766
|
this.__handledError = null;
|
|
@@ -3086,6 +3087,126 @@ __decorate([
|
|
|
3086
3087
|
})
|
|
3087
3088
|
], MonkeyEcxCommonsService.prototype, "getGenericData", null);
|
|
3088
3089
|
|
|
3090
|
+
class MonkeyEcxCommonsResolveService extends MonkeyEcxCommonsService {
|
|
3091
|
+
constructor(monkeyecxService, tokenStorage, config) {
|
|
3092
|
+
super(monkeyecxService, tokenStorage);
|
|
3093
|
+
this.route = null;
|
|
3094
|
+
this.currentRoute = null;
|
|
3095
|
+
this.paginationService = inject(MonkeyEcxPaginationService);
|
|
3096
|
+
this.translateService = inject(TranslateService);
|
|
3097
|
+
this.router = inject(Router);
|
|
3098
|
+
this.store = inject(Store);
|
|
3099
|
+
this.monkeyDiscovery = inject(MonkeyEcxDiscoveryParamsService);
|
|
3100
|
+
const { actions, actionsPagination, selectors } = config;
|
|
3101
|
+
this.action = actions;
|
|
3102
|
+
this.actionPagination = actionsPagination;
|
|
3103
|
+
this.selector = selectors;
|
|
3104
|
+
}
|
|
3105
|
+
;
|
|
3106
|
+
getData() {
|
|
3107
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
3108
|
+
try {
|
|
3109
|
+
const { store, route, action, selector, tokenStorage } = this;
|
|
3110
|
+
const { companyId, companyType } = yield (tokenStorage === null || tokenStorage === void 0 ? void 0 : tokenStorage.getToken());
|
|
3111
|
+
const identifier = `${companyId}-${companyType}`;
|
|
3112
|
+
if (!route)
|
|
3113
|
+
return;
|
|
3114
|
+
const url = MonkeyEcxUtils.replaceVariables(route, { companyId });
|
|
3115
|
+
store.dispatch(action.load({ url, identifier }));
|
|
3116
|
+
this.__data$ = store.select(selector.selectByIdentifier({ identifier }));
|
|
3117
|
+
this.__control$ = store.select(selector.selectControl());
|
|
3118
|
+
if (selector === null || selector === void 0 ? void 0 : selector.selectLinks) {
|
|
3119
|
+
this.__pagination$ = store.select(selector.selectLinks({ identifier }));
|
|
3120
|
+
}
|
|
3121
|
+
if (selector === null || selector === void 0 ? void 0 : selector.selectPage) {
|
|
3122
|
+
this.__page$ = store.select(selector.selectPage({ identifier }));
|
|
3123
|
+
}
|
|
3124
|
+
}
|
|
3125
|
+
catch (e) {
|
|
3126
|
+
throw new Error(`MECX Core - Method getData -> ${e}`);
|
|
3127
|
+
}
|
|
3128
|
+
});
|
|
3129
|
+
}
|
|
3130
|
+
loadPage() {
|
|
3131
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
3132
|
+
try {
|
|
3133
|
+
const { store, tokenStorage, actionPagination } = this;
|
|
3134
|
+
const { companyId, companyType } = yield (tokenStorage === null || tokenStorage === void 0 ? void 0 : tokenStorage.getToken());
|
|
3135
|
+
store.dispatch(actionPagination.load({
|
|
3136
|
+
identifier: `${companyId}-${companyType}`,
|
|
3137
|
+
pagination: {
|
|
3138
|
+
action: 'next'
|
|
3139
|
+
}
|
|
3140
|
+
}));
|
|
3141
|
+
}
|
|
3142
|
+
catch (e) {
|
|
3143
|
+
throw new Error(`MECX Core - Method loadPage -> ${e}`);
|
|
3144
|
+
}
|
|
3145
|
+
});
|
|
3146
|
+
}
|
|
3147
|
+
/**
|
|
3148
|
+
* @description Inicializar a class genérica
|
|
3149
|
+
* @param (args: MonkeyEcxInitialResolverConfig)
|
|
3150
|
+
* => route é obrigátorio pois ele quem inicializa a store.
|
|
3151
|
+
* A searchClass só se faz necessaria quando for usar filtros
|
|
3152
|
+
*/
|
|
3153
|
+
init(args) {
|
|
3154
|
+
try {
|
|
3155
|
+
const { searchClass, route } = args;
|
|
3156
|
+
this.route = route;
|
|
3157
|
+
if (searchClass) {
|
|
3158
|
+
// eslint-disable-next-line new-cap
|
|
3159
|
+
const searchInstance = new searchClass(this.__search);
|
|
3160
|
+
this.route = `${route}${searchInstance.buildParams()}`;
|
|
3161
|
+
this.__onSearchChanged$.next(searchInstance);
|
|
3162
|
+
}
|
|
3163
|
+
this.getData();
|
|
3164
|
+
}
|
|
3165
|
+
catch (e) {
|
|
3166
|
+
throw new Error(`${e === null || e === void 0 ? void 0 : e.message}`);
|
|
3167
|
+
}
|
|
3168
|
+
}
|
|
3169
|
+
resolve(route, state, otherArgs) {
|
|
3170
|
+
this.__search = route === null || route === void 0 ? void 0 : route.queryParams;
|
|
3171
|
+
const [currentRoute] = (state === null || state === void 0 ? void 0 : state.url.split('?')) || [null];
|
|
3172
|
+
this.currentRoute = currentRoute;
|
|
3173
|
+
super.resolve(route, state, otherArgs);
|
|
3174
|
+
}
|
|
3175
|
+
/**
|
|
3176
|
+
* @description Atualizar os filtros da tela
|
|
3177
|
+
* @param (search: T, route?: string)
|
|
3178
|
+
* => route é opcional, passar ele apenas se a rota for diferente do padrão
|
|
3179
|
+
*/
|
|
3180
|
+
setSearch(search, route) {
|
|
3181
|
+
try {
|
|
3182
|
+
const { currentRoute, router } = this;
|
|
3183
|
+
this.setSearchByUrl(router, route || `${currentRoute}`, search);
|
|
3184
|
+
}
|
|
3185
|
+
catch (e) {
|
|
3186
|
+
throw new Error(`MECX Core - Method setSearch -> ${e}`);
|
|
3187
|
+
}
|
|
3188
|
+
}
|
|
3189
|
+
/**
|
|
3190
|
+
* @description Navegação para details.
|
|
3191
|
+
* Por padrão sera redirecionado para '${currentRoute}/details'
|
|
3192
|
+
* @param (detailsData: T, route?: string)
|
|
3193
|
+
* => route é opcional, passar ele apenas se a rota for diferente do padrão
|
|
3194
|
+
*/
|
|
3195
|
+
navigateToDetails(detailsData, route) {
|
|
3196
|
+
try {
|
|
3197
|
+
const { router, currentRoute } = this;
|
|
3198
|
+
router.navigate([route || `${currentRoute}/details`], {
|
|
3199
|
+
state: {
|
|
3200
|
+
detailsData
|
|
3201
|
+
}
|
|
3202
|
+
});
|
|
3203
|
+
}
|
|
3204
|
+
catch (e) {
|
|
3205
|
+
throw new Error(`MECX Core - Method navigateToDetails -> ${e}`);
|
|
3206
|
+
}
|
|
3207
|
+
}
|
|
3208
|
+
}
|
|
3209
|
+
|
|
3089
3210
|
let window$1;
|
|
3090
3211
|
const text = {
|
|
3091
3212
|
i18n: {
|