@veloceapps/sdk 11.0.0-11 → 11.0.0-12
Sign up to get free protection for your applications and to get access to all the features.
- package/cms/vendor-map.d.ts +7 -6
- package/core/modules/configuration/helpers.d.ts +2 -1
- package/core/modules/configuration/services/configuration-runtime.service.d.ts +1 -3
- package/core/modules/configuration/services/configuration-state.service.d.ts +7 -7
- package/core/modules/configuration/services/configuration.service.d.ts +5 -10
- package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +11 -32
- package/core/services/catalog-products.service.d.ts +11 -0
- package/core/services/flow-info.service.d.ts +23 -10
- package/core/services/flow-state.service.d.ts +9 -12
- package/core/services/index.d.ts +2 -2
- package/core/services/quote-draft.service.d.ts +5 -5
- package/core/services/sales-transaction.service.d.ts +28 -0
- package/core/types/flow-state.types.d.ts +2 -2
- package/esm2020/cms/vendor-map.mjs +8 -7
- package/esm2020/core/core.module.mjs +7 -4
- package/esm2020/core/modules/configuration/helpers.mjs +11 -17
- package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +8 -45
- package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +46 -54
- package/esm2020/core/modules/configuration/services/configuration.service.mjs +21 -39
- package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +34 -110
- package/esm2020/core/services/catalog-products.service.mjs +25 -0
- package/esm2020/core/services/flow-info.service.mjs +70 -28
- package/esm2020/core/services/flow-state.service.mjs +59 -133
- package/esm2020/core/services/index.mjs +3 -3
- package/esm2020/core/services/quote-draft.service.mjs +20 -38
- package/esm2020/core/services/sales-transaction.service.mjs +62 -0
- package/esm2020/core/types/flow-state.types.mjs +1 -1
- package/esm2020/src/components/flow-header/flow-header.component.mjs +3 -6
- package/esm2020/src/components/guided-selling/guided-selling.component.mjs +3 -6
- package/esm2020/src/flow-routing.module.mjs +5 -36
- package/esm2020/src/flow.component.mjs +5 -5
- package/esm2020/src/guards/flow.guard.mjs +10 -9
- package/esm2020/src/guards/product-unload.guard.mjs +5 -7
- package/esm2020/src/index.mjs +1 -2
- package/esm2020/src/pages/assets/assets.component.mjs +3 -3
- package/esm2020/src/pages/catalog/catalog.component.mjs +3 -3
- package/esm2020/src/pages/debug/debug.component.mjs +7 -11
- package/esm2020/src/pages/product/product.component.mjs +47 -67
- package/esm2020/src/pages/product/product.module.mjs +5 -5
- package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +3 -3
- package/esm2020/src/resolvers/flow.resolver.mjs +10 -18
- package/esm2020/src/resolvers/quote.resolver.mjs +11 -11
- package/esm2020/src/services/flow-dialog.service.mjs +8 -8
- package/esm2020/src/services/flow-router.service.mjs +11 -21
- package/esm2020/src/services/flow.service.mjs +10 -43
- package/esm2020/src/utils/flow.utils.mjs +2 -13
- package/fesm2015/veloceapps-sdk-cms.mjs +7 -6
- package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
- package/fesm2015/veloceapps-sdk-core.mjs +1483 -1636
- package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2015/veloceapps-sdk.mjs +126 -672
- package/fesm2015/veloceapps-sdk.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-cms.mjs +7 -6
- package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-core.mjs +1515 -1707
- package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk.mjs +124 -667
- package/fesm2020/veloceapps-sdk.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/flow-header/flow-header.component.d.ts +1 -1
- package/src/components/guided-selling/guided-selling.component.d.ts +1 -1
- package/src/flow-routing.module.d.ts +1 -2
- package/src/flow.component.d.ts +2 -2
- package/src/guards/product-unload.guard.d.ts +4 -5
- package/src/index.d.ts +0 -1
- package/src/pages/assets/assets.component.d.ts +1 -1
- package/src/pages/catalog/catalog.component.d.ts +1 -1
- package/src/pages/debug/debug.component.d.ts +2 -3
- package/src/pages/product/product.component.d.ts +9 -10
- package/src/pages/product/product.module.d.ts +1 -1
- package/src/pages/shopping-cart/shopping-cart.component.d.ts +1 -1
- package/src/resolvers/flow.resolver.d.ts +5 -6
- package/src/resolvers/quote.resolver.d.ts +5 -6
- package/src/services/flow-dialog.service.d.ts +3 -3
- package/src/services/flow-router.service.d.ts +2 -4
- package/src/services/flow.service.d.ts +2 -6
- package/src/utils/flow.utils.d.ts +0 -7
- package/core/services/context.service.d.ts +0 -23
- package/esm2020/core/services/context.service.mjs +0 -91
- package/esm2020/src/guards/context.guard.mjs +0 -91
- package/esm2020/src/guards/index.mjs +0 -2
- package/esm2020/src/pages/remote/remote.component.mjs +0 -342
- package/esm2020/src/pages/remote/remote.module.mjs +0 -20
- package/esm2020/src/pages/remote/remote.types.mjs +0 -2
- package/src/guards/context.guard.d.ts +0 -19
- package/src/guards/index.d.ts +0 -1
- package/src/pages/remote/remote.component.d.ts +0 -46
- package/src/pages/remote/remote.module.d.ts +0 -10
- package/src/pages/remote/remote.types.d.ts +0 -4
@@ -1,61 +1,96 @@
|
|
1
1
|
import { Inject, Injectable, Optional } from '@angular/core';
|
2
|
-
import {
|
3
|
-
import { UITemplateType } from '@veloceapps/core';
|
4
|
-
import { BehaviorSubject,
|
2
|
+
import { UITemplatesApiService } from '@veloceapps/api/v2';
|
3
|
+
import { SalesforceIdUtils, UITemplateType, } from '@veloceapps/core';
|
4
|
+
import { BehaviorSubject, forkJoin, map, of, switchMap } from 'rxjs';
|
5
5
|
import { FLOW_CUSTOMIZATION } from '../types';
|
6
|
+
import { RuntimeSettingsService } from './runtime-settings.service';
|
6
7
|
import * as i0 from "@angular/core";
|
7
|
-
import * as i1 from "
|
8
|
+
import * as i1 from "./runtime-settings.service";
|
9
|
+
import * as i2 from "@veloceapps/api/v2";
|
8
10
|
export class FlowInfoService {
|
9
11
|
get flow() {
|
12
|
+
if (!this.flowSubj$.value) {
|
13
|
+
throw new Error(`Flow not initialized yet`);
|
14
|
+
}
|
10
15
|
return this.flowSubj$.value;
|
11
16
|
}
|
12
|
-
|
13
|
-
this.flowSubj$.
|
17
|
+
get isFlowInitialized() {
|
18
|
+
return Boolean(this.flowSubj$.value);
|
19
|
+
}
|
20
|
+
get context() {
|
21
|
+
if (!this.contextSubj$.value) {
|
22
|
+
throw new Error('Context is not initialized yet!');
|
23
|
+
}
|
24
|
+
return { ...this.contextSubj$.value };
|
14
25
|
}
|
15
|
-
get
|
16
|
-
return
|
26
|
+
get templates() {
|
27
|
+
return this.templatesSubj$.value;
|
28
|
+
}
|
29
|
+
get isFlowEngineInitialized$() {
|
30
|
+
return this.templates$.pipe(map(v => Boolean(v.FLOW_ENGINE)));
|
17
31
|
}
|
18
32
|
get isStateful() {
|
19
33
|
return !!this.flow?.properties.stateful;
|
20
34
|
}
|
21
|
-
constructor(
|
22
|
-
this.
|
35
|
+
constructor(runtimeSettingsService, templatesApiService, customizationService) {
|
36
|
+
this.runtimeSettingsService = runtimeSettingsService;
|
23
37
|
this.templatesApiService = templatesApiService;
|
24
38
|
this.customizationService = customizationService;
|
25
|
-
this.templates = {};
|
26
39
|
this.defaultTemplates = {
|
27
40
|
flowEngine: 'Flow Engine',
|
28
41
|
};
|
29
42
|
this.flowSubj$ = new BehaviorSubject(null);
|
43
|
+
this.templatesSubj$ = new BehaviorSubject({});
|
44
|
+
this.contextSubj$ = new BehaviorSubject(null);
|
30
45
|
this.flow$ = this.flowSubj$.asObservable();
|
31
|
-
|
32
|
-
init$(flowId, routeQueryParams) {
|
33
|
-
return this.flowsApiService.getFlow(flowId).pipe(switchMap(flow => this.initFlowTemplates$(flow).pipe(map(() => flow))), tap(flow => {
|
34
|
-
this.params = { ...routeQueryParams, ...flow.properties.queryParams };
|
35
|
-
this.flowSubj$.next(flow);
|
36
|
-
}), map(noop), catchError(e => {
|
37
|
-
this.flowSubj$.next(null);
|
38
|
-
return throwError(() => e);
|
39
|
-
}));
|
46
|
+
this.templates$ = this.templatesSubj$.asObservable();
|
40
47
|
}
|
41
48
|
cleanup() {
|
42
49
|
this.flowSubj$.next(null);
|
43
|
-
this.
|
44
|
-
this.
|
50
|
+
this.templatesSubj$.next({});
|
51
|
+
this.contextSubj$.next(null);
|
45
52
|
}
|
46
|
-
|
53
|
+
init$(flowId, routeQueryParams) {
|
54
|
+
return this.initFlow$(flowId, routeQueryParams).pipe(switchMap(() => this.initFlowTemplates$()));
|
55
|
+
}
|
56
|
+
initFlow$(flowId, routeQueryParams) {
|
57
|
+
const flow = this.runtimeSettingsService.getConfigurationSettings()['flows']?.find(({ id }) => flowId === id);
|
58
|
+
if (!flow) {
|
59
|
+
this.flowSubj$.next(null);
|
60
|
+
throw new Error(`Flow with flowId=${flowId} is not defined`);
|
61
|
+
}
|
62
|
+
const headerId = routeQueryParams['headerId'];
|
63
|
+
if (typeof headerId !== 'string') {
|
64
|
+
throw new Error(`Please provide 'headerId'`);
|
65
|
+
}
|
66
|
+
const mode = this.getFlowContextMode(headerId);
|
67
|
+
// Restrict if mode is not defined
|
68
|
+
if (mode == null) {
|
69
|
+
throw new Error('Mode is undefined');
|
70
|
+
}
|
71
|
+
this.contextSubj$.next({
|
72
|
+
...flow.properties.queryParams,
|
73
|
+
...routeQueryParams,
|
74
|
+
mode,
|
75
|
+
});
|
76
|
+
this.flowSubj$.next(flow);
|
77
|
+
return of(undefined);
|
78
|
+
}
|
79
|
+
initFlowTemplates$() {
|
47
80
|
return forkJoin([
|
48
81
|
this.templatesApiService.fetchTemplates$(),
|
49
82
|
this.customizationService?.getTemplates?.() ?? of([]),
|
50
83
|
]).pipe(map(([templates, localTemplates]) => {
|
51
|
-
|
84
|
+
const newValue = {};
|
85
|
+
Object.entries({ ...this.defaultTemplates, ...(this.flow?.properties.templates ?? {}) }).forEach(([key, name]) => {
|
52
86
|
const type = this.remapTemplateName(key);
|
53
87
|
if (type) {
|
54
|
-
|
88
|
+
newValue[type] =
|
55
89
|
localTemplates.find(template => template.name === name && template.type === type) ??
|
56
90
|
templates.find(template => template.name === name && template.type === type);
|
57
91
|
}
|
58
92
|
});
|
93
|
+
this.templatesSubj$.next(newValue);
|
59
94
|
}));
|
60
95
|
}
|
61
96
|
remapTemplateName(templateType) {
|
@@ -81,15 +116,22 @@ export class FlowInfoService {
|
|
81
116
|
}
|
82
117
|
return undefined;
|
83
118
|
}
|
119
|
+
getFlowContextMode(headerId) {
|
120
|
+
const objectName = SalesforceIdUtils.getSfObjectNameById(headerId);
|
121
|
+
if (!objectName) {
|
122
|
+
return;
|
123
|
+
}
|
124
|
+
return objectName.toUpperCase();
|
125
|
+
}
|
84
126
|
}
|
85
|
-
FlowInfoService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowInfoService, deps: [{ token: i1.
|
127
|
+
FlowInfoService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowInfoService, deps: [{ token: i1.RuntimeSettingsService }, { token: i2.UITemplatesApiService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
86
128
|
FlowInfoService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowInfoService });
|
87
129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowInfoService, decorators: [{
|
88
130
|
type: Injectable
|
89
|
-
}], ctorParameters: function () { return [{ type: i1.
|
131
|
+
}], ctorParameters: function () { return [{ type: i1.RuntimeSettingsService }, { type: i2.UITemplatesApiService }, { type: undefined, decorators: [{
|
90
132
|
type: Optional
|
91
133
|
}, {
|
92
134
|
type: Inject,
|
93
135
|
args: [FLOW_CUSTOMIZATION]
|
94
136
|
}] }]; } });
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1pbmZvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2Zsb3ctaW5mby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUFzQyxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtCQUFrQixFQUFxQixNQUFNLFVBQVUsQ0FBQzs7O0FBR2pFLE1BQU0sT0FBTyxlQUFlO0lBSzFCLElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQVcsSUFBSSxDQUFDLEtBQWtCO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDO0lBQy9ELENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQzFDLENBQUM7SUFPRCxZQUNVLGVBQWdDLEVBQ2hDLG1CQUEwQyxFQUNGLG9CQUF3QztRQUZoRixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF1QjtRQUNGLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBb0I7UUF6Qm5GLGNBQVMsR0FBNkMsRUFBRSxDQUFDO1FBaUIvQyxxQkFBZ0IsR0FBRztZQUNsQyxVQUFVLEVBQUUsYUFBYTtTQUMxQixDQUFDO1FBQ00sY0FBUyxHQUFHLElBQUksZUFBZSxDQUFjLElBQUksQ0FBQyxDQUFDO1FBT3pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQWMsRUFBRSxnQkFBd0I7UUFDbkQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQzlDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDdEUsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFDVCxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBVTtRQUNuQyxPQUFPLFFBQVEsQ0FBQztZQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUU7WUFDMUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztTQUN0RCxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pHLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFekMsSUFBSSxJQUFJLEVBQUU7b0JBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7d0JBQ2xCLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQzs0QkFDakYsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7aUJBQ2hGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGlCQUFpQixDQUFDLFlBQW9CO1FBQzVDLFFBQVEsWUFBa0QsRUFBRTtZQUMxRCxLQUFLLFlBQVk7Z0JBQ2YsT0FBTyxjQUFjLENBQUMsV0FBVyxDQUFDO1lBQ3BDO2dCQUNFLE1BQU07U0FDVDtRQUVELFFBQVEsWUFBc0MsRUFBRTtZQUM5QyxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssY0FBYztnQkFDakIsNENBQTRDO2dCQUM1QyxPQUFPLGNBQWMsQ0FBQyxhQUFhLENBQUM7WUFDdEMsS0FBSyxTQUFTO2dCQUNaLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQztZQUNoQyxLQUFLLGVBQWU7Z0JBQ2xCLE9BQU8sY0FBYyxDQUFDLGNBQWMsQ0FBQztZQUN2QyxLQUFLLFlBQVk7Z0JBQ2YsT0FBTyxjQUFjLENBQUMsV0FBVyxDQUFDO1lBQ3BDO2dCQUNFLE1BQU07U0FDVDtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7OzRHQWpHVSxlQUFlLHNGQTRCSixrQkFBa0I7Z0hBNUI3QixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQTZCTixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGbG93c0FwaVNlcnZpY2UsIFVJVGVtcGxhdGVzQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQgeyBGbG93LCBGbG93VGVtcGxhdGVzTWFwLCBVSVRlbXBsYXRlLCBVSVRlbXBsYXRlVHlwZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjYXRjaEVycm9yLCBmb3JrSm9pbiwgbWFwLCBub29wLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwLCB0YXAsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZMT1dfQ1VTVE9NSVpBVElPTiwgRmxvd0N1c3RvbWl6YXRpb24gfSBmcm9tICcuLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93SW5mb1NlcnZpY2Uge1xuICBwdWJsaWMgZmxvdyQ6IE9ic2VydmFibGU8RmxvdyB8IG51bGw+O1xuICBwdWJsaWMgcGFyYW1zPzogUGFyYW1zO1xuICBwdWJsaWMgdGVtcGxhdGVzOiB7IFtrZXkgaW4gVUlUZW1wbGF0ZVR5cGVdPzogVUlUZW1wbGF0ZSB9ID0ge307XG5cbiAgcHVibGljIGdldCBmbG93KCk6IEZsb3cgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5mbG93U3ViaiQudmFsdWU7XG4gIH1cbiAgcHVibGljIHNldCBmbG93KHZhbHVlOiBGbG93IHwgbnVsbCkge1xuICAgIHRoaXMuZmxvd1N1YmokLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0xlZ2FjeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmZsb3cgJiYgdGhpcy5mbG93Py5wcm9wZXJ0aWVzLnN0YXRlZnVsID09IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU3RhdGVmdWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5mbG93Py5wcm9wZXJ0aWVzLnN0YXRlZnVsO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0VGVtcGxhdGVzID0ge1xuICAgIGZsb3dFbmdpbmU6ICdGbG93IEVuZ2luZScsXG4gIH07XG4gIHByaXZhdGUgZmxvd1N1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGbG93IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmbG93c0FwaVNlcnZpY2U6IEZsb3dzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHRlbXBsYXRlc0FwaVNlcnZpY2U6IFVJVGVtcGxhdGVzQXBpU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZMT1dfQ1VTVE9NSVpBVElPTikgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZT86IEZsb3dDdXN0b21pemF0aW9uLFxuICApIHtcbiAgICB0aGlzLmZsb3ckID0gdGhpcy5mbG93U3ViaiQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdCQoZmxvd0lkOiBzdHJpbmcsIHJvdXRlUXVlcnlQYXJhbXM6IFBhcmFtcyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmZsb3dzQXBpU2VydmljZS5nZXRGbG93KGZsb3dJZCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChmbG93ID0+IHRoaXMuaW5pdEZsb3dUZW1wbGF0ZXMkKGZsb3cpLnBpcGUobWFwKCgpID0+IGZsb3cpKSksXG4gICAgICB0YXAoZmxvdyA9PiB7XG4gICAgICAgIHRoaXMucGFyYW1zID0geyAuLi5yb3V0ZVF1ZXJ5UGFyYW1zLCAuLi5mbG93LnByb3BlcnRpZXMucXVlcnlQYXJhbXMgfTtcbiAgICAgICAgdGhpcy5mbG93U3ViaiQubmV4dChmbG93KTtcbiAgICAgIH0pLFxuICAgICAgbWFwKG5vb3ApLFxuICAgICAgY2F0Y2hFcnJvcihlID0+IHtcbiAgICAgICAgdGhpcy5mbG93U3ViaiQubmV4dChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNsZWFudXAoKTogdm9pZCB7XG4gICAgdGhpcy5mbG93U3ViaiQubmV4dChudWxsKTtcbiAgICB0aGlzLnBhcmFtcyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRlbXBsYXRlcyA9IHt9O1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Rmxvd1RlbXBsYXRlcyQoZmxvdzogRmxvdyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBmb3JrSm9pbihbXG4gICAgICB0aGlzLnRlbXBsYXRlc0FwaVNlcnZpY2UuZmV0Y2hUZW1wbGF0ZXMkKCksXG4gICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlPy5nZXRUZW1wbGF0ZXM/LigpID8/IG9mKFtdKSxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbdGVtcGxhdGVzLCBsb2NhbFRlbXBsYXRlc10pID0+IHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoeyAuLi50aGlzLmRlZmF1bHRUZW1wbGF0ZXMsIC4uLmZsb3cucHJvcGVydGllcy50ZW1wbGF0ZXMgfSkuZm9yRWFjaCgoW2tleSwgbmFtZV0pID0+IHtcbiAgICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5yZW1hcFRlbXBsYXRlTmFtZShrZXkpO1xuXG4gICAgICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVzW3R5cGVdID1cbiAgICAgICAgICAgICAgbG9jYWxUZW1wbGF0ZXMuZmluZCh0ZW1wbGF0ZSA9PiB0ZW1wbGF0ZS5uYW1lID09PSBuYW1lICYmIHRlbXBsYXRlLnR5cGUgPT09IHR5cGUpID8/XG4gICAgICAgICAgICAgIHRlbXBsYXRlcy5maW5kKHRlbXBsYXRlID0+IHRlbXBsYXRlLm5hbWUgPT09IG5hbWUgJiYgdGVtcGxhdGUudHlwZSA9PT0gdHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlbWFwVGVtcGxhdGVOYW1lKHRlbXBsYXRlVHlwZTogc3RyaW5nKTogVUlUZW1wbGF0ZVR5cGUgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAodGVtcGxhdGVUeXBlIGFzIGtleW9mIHR5cGVvZiB0aGlzLmRlZmF1bHRUZW1wbGF0ZXMpIHtcbiAgICAgIGNhc2UgJ2Zsb3dFbmdpbmUnOlxuICAgICAgICByZXR1cm4gVUlUZW1wbGF0ZVR5cGUuRkxPV19FTkdJTkU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRlbXBsYXRlVHlwZSBhcyBrZXlvZiBGbG93VGVtcGxhdGVzTWFwKSB7XG4gICAgICBjYXNlICdhc3NldHMnOlxuICAgICAgY2FzZSAnc2hvcHBpbmdDYXJ0JzpcbiAgICAgICAgLy8gTm8gc2VwYXJhdGUgQXNzZXRzIHRlbXBsYXRlIGF0IHRoZSBtb21lbnRcbiAgICAgICAgcmV0dXJuIFVJVGVtcGxhdGVUeXBlLlNIT1BQSU5HX0NBUlQ7XG4gICAgICBjYXNlICdjYXRhbG9nJzpcbiAgICAgICAgcmV0dXJuIFVJVGVtcGxhdGVUeXBlLkNBVEFMT0c7XG4gICAgICBjYXNlICdndWlkZWRTZWxsaW5nJzpcbiAgICAgICAgcmV0dXJuIFVJVGVtcGxhdGVUeXBlLkdVSURFRF9TRUxMSU5HO1xuICAgICAgY2FzZSAnZmxvd0hlYWRlcic6XG4gICAgICAgIHJldHVybiBVSVRlbXBsYXRlVHlwZS5GTE9XX0hFQURFUjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1pbmZvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2Zsb3ctaW5mby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRCxPQUFPLEVBS0wsaUJBQWlCLEVBRWpCLGNBQWMsR0FDZixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBcUIsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFHcEUsTUFBTSxPQUFPLGVBQWU7SUFJMUIsSUFBVyxJQUFJO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUM3QztRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlB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QztpQkFDaEY7WUFDSCxDQUFDLENBQ0YsQ0FBQztZQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCLENBQUMsWUFBb0I7UUFDNUMsUUFBUSxZQUFrRCxFQUFFO1lBQzFELEtBQUssWUFBWTtnQkFDZixPQUFPLGNBQWMsQ0FBQyxXQUFXLENBQUM7WUFDcEM7Z0JBQ0UsTUFBTTtTQUNUO1FBRUQsUUFBUSxZQUFzQyxFQUFFO1lBQzlDLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxjQUFjO2dCQUNqQiw0Q0FBNEM7Z0JBQzVDLE9BQU8sY0FBYyxDQUFDLGFBQWEsQ0FBQztZQUN0QyxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDO1lBQ2hDLEtBQUssZUFBZTtnQkFDbEIsT0FBTyxjQUFjLENBQUMsY0FBYyxDQUFDO1lBQ3ZDLEtBQUssWUFBWTtnQkFDZixPQUFPLGNBQWMsQ0FBQyxXQUFXLENBQUM7WUFDcEM7Z0JBQ0UsTUFBTTtTQUNUO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFFBQWdCO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixPQUFPO1NBQ1I7UUFFRCxPQUFPLFVBQVUsQ0FBQyxXQUFXLEVBQXFCLENBQUM7SUFDckQsQ0FBQzs7NEdBcEpVLGVBQWUsNkZBOENKLGtCQUFrQjtnSEE5QzdCLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBK0NOLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFVJVGVtcGxhdGVzQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaS92Mic7XG5pbXBvcnQge1xuICBGbG93LFxuICBGbG93Q29udGV4dCxcbiAgRmxvd0NvbnRleHRNb2RlLFxuICBGbG93VGVtcGxhdGVzTWFwLFxuICBTYWxlc2ZvcmNlSWRVdGlscyxcbiAgVUlUZW1wbGF0ZSxcbiAgVUlUZW1wbGF0ZVR5cGUsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGbG93Q3VzdG9taXphdGlvbiwgRkxPV19DVVNUT01JWkFUSU9OIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUnVudGltZVNldHRpbmdzU2VydmljZSB9IGZyb20gJy4vcnVudGltZS1zZXR0aW5ncy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dJbmZvU2VydmljZSB7XG4gIHB1YmxpYyBmbG93JDogT2JzZXJ2YWJsZTxGbG93IHwgbnVsbD47XG4gIHB1YmxpYyB0ZW1wbGF0ZXMkOiBPYnNlcnZhYmxlPHsgW2tleSBpbiBVSVRlbXBsYXRlVHlwZV0/OiBVSVRlbXBsYXRlIH0+O1xuXG4gIHB1YmxpYyBnZXQgZmxvdygpOiBGbG93IHtcbiAgICBpZiAoIXRoaXMuZmxvd1N1YmokLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZsb3cgbm90IGluaXRpYWxpemVkIHlldGApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZsb3dTdWJqJC52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNGbG93SW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5mbG93U3ViaiQudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb250ZXh0KCk6IEZsb3dDb250ZXh0IHtcbiAgICBpZiAoIXRoaXMuY29udGV4dFN1YmokLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRleHQgaXMgbm90IGluaXRpYWxpemVkIHlldCEnKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyAuLi50aGlzLmNvbnRleHRTdWJqJC52YWx1ZSB9O1xuICB9XG5cbiAgcHVibGljIGdldCB0ZW1wbGF0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzU3ViaiQudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRmxvd0VuZ2luZUluaXRpYWxpemVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZXMkLnBpcGUobWFwKHYgPT4gQm9vbGVhbih2LkZMT1dfRU5HSU5FKSkpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1N0YXRlZnVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZmxvdz8ucHJvcGVydGllcy5zdGF0ZWZ1bDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFRlbXBsYXRlcyA9IHtcbiAgICBmbG93RW5naW5lOiAnRmxvdyBFbmdpbmUnLFxuICB9O1xuICBwcml2YXRlIGZsb3dTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmxvdyB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHRlbXBsYXRlc1N1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtrZXkgaW4gVUlUZW1wbGF0ZVR5cGVdPzogVUlUZW1wbGF0ZSB9Pih7fSk7XG4gIHByaXZhdGUgY29udGV4dFN1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGbG93Q29udGV4dCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcnVudGltZVNldHRpbmdzU2VydmljZTogUnVudGltZVNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIHRlbXBsYXRlc0FwaVNlcnZpY2U6IFVJVGVtcGxhdGVzQXBpU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZMT1dfQ1VTVE9NSVpBVElPTikgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZT86IEZsb3dDdXN0b21pemF0aW9uLFxuICApIHtcbiAgICB0aGlzLmZsb3ckID0gdGhpcy5mbG93U3ViaiQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy50ZW1wbGF0ZXMkID0gdGhpcy50ZW1wbGF0ZXNTdWJqJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhbnVwKCk6IHZvaWQge1xuICAgIHRoaXMuZmxvd1N1YmokLm5leHQobnVsbCk7XG4gICAgdGhpcy50ZW1wbGF0ZXNTdWJqJC5uZXh0KHt9KTtcbiAgICB0aGlzLmNvbnRleHRTdWJqJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIGluaXQkKGZsb3dJZDogc3RyaW5nLCByb3V0ZVF1ZXJ5UGFyYW1zOiBQYXJhbXMpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0RmxvdyQoZmxvd0lkLCByb3V0ZVF1ZXJ5UGFyYW1zKS5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aGlzLmluaXRGbG93VGVtcGxhdGVzJCgpKSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGbG93JChmbG93SWQ6IHN0cmluZywgcm91dGVRdWVyeVBhcmFtczogUGFyYW1zKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZmxvdyA9IHRoaXMucnVudGltZVNldHRpbmdzU2VydmljZS5nZXRDb25maWd1cmF0aW9uU2V0dGluZ3MoKVsnZmxvd3MnXT8uZmluZCgoeyBpZCB9KSA9PiBmbG93SWQgPT09IGlkKTtcbiAgICBpZiAoIWZsb3cpIHtcbiAgICAgIHRoaXMuZmxvd1N1YmokLm5leHQobnVsbCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZsb3cgd2l0aCBmbG93SWQ9JHtmbG93SWR9IGlzIG5vdCBkZWZpbmVkYCk7XG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVySWQgPSByb3V0ZVF1ZXJ5UGFyYW1zWydoZWFkZXJJZCddO1xuICAgIGlmICh0eXBlb2YgaGVhZGVySWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBsZWFzZSBwcm92aWRlICdoZWFkZXJJZCdgKTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlID0gdGhpcy5nZXRGbG93Q29udGV4dE1vZGUoaGVhZGVySWQpO1xuXG4gICAgLy8gUmVzdHJpY3QgaWYgbW9kZSBpcyBub3QgZGVmaW5lZFxuICAgIGlmIChtb2RlID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTW9kZSBpcyB1bmRlZmluZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRleHRTdWJqJC5uZXh0KHtcbiAgICAgIC4uLmZsb3cucHJvcGVydGllcy5xdWVyeVBhcmFtcyxcbiAgICAgIC4uLnJvdXRlUXVlcnlQYXJhbXMsXG4gICAgICBtb2RlLFxuICAgIH0gYXMgRmxvd0NvbnRleHQpO1xuXG4gICAgdGhpcy5mbG93U3ViaiQubmV4dChmbG93KTtcbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZsb3dUZW1wbGF0ZXMkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBmb3JrSm9pbihbXG4gICAgICB0aGlzLnRlbXBsYXRlc0FwaVNlcnZpY2UuZmV0Y2hUZW1wbGF0ZXMkKCksXG4gICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlPy5nZXRUZW1wbGF0ZXM/LigpID8/IG9mKFtdKSxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbdGVtcGxhdGVzLCBsb2NhbFRlbXBsYXRlc10pID0+IHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWU6IHsgW2tleSBpbiBVSVRlbXBsYXRlVHlwZV0/OiBVSVRlbXBsYXRlIH0gPSB7fTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoeyAuLi50aGlzLmRlZmF1bHRUZW1wbGF0ZXMsIC4uLih0aGlzLmZsb3c/LnByb3BlcnRpZXMudGVtcGxhdGVzID8/IHt9KSB9KS5mb3JFYWNoKFxuICAgICAgICAgIChba2V5LCBuYW1lXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMucmVtYXBUZW1wbGF0ZU5hbWUoa2V5KTtcblxuICAgICAgICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgICAgICAgbmV3VmFsdWVbdHlwZV0gPVxuICAgICAgICAgICAgICAgIGxvY2FsVGVtcGxhdGVzLmZpbmQodGVtcGxhdGUgPT4gdGVtcGxhdGUubmFtZSA9PT0gbmFtZSAmJiB0ZW1wbGF0ZS50eXBlID09PSB0eXBlKSA/P1xuICAgICAgICAgICAgICAgIHRlbXBsYXRlcy5maW5kKHRlbXBsYXRlID0+IHRlbXBsYXRlLm5hbWUgPT09IG5hbWUgJiYgdGVtcGxhdGUudHlwZSA9PT0gdHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnRlbXBsYXRlc1N1YmokLm5leHQobmV3VmFsdWUpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtYXBUZW1wbGF0ZU5hbWUodGVtcGxhdGVUeXBlOiBzdHJpbmcpOiBVSVRlbXBsYXRlVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoICh0ZW1wbGF0ZVR5cGUgYXMga2V5b2YgdHlwZW9mIHRoaXMuZGVmYXVsdFRlbXBsYXRlcykge1xuICAgICAgY2FzZSAnZmxvd0VuZ2luZSc6XG4gICAgICAgIHJldHVybiBVSVRlbXBsYXRlVHlwZS5GTE9XX0VOR0lORTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGVtcGxhdGVUeXBlIGFzIGtleW9mIEZsb3dUZW1wbGF0ZXNNYXApIHtcbiAgICAgIGNhc2UgJ2Fzc2V0cyc6XG4gICAgICBjYXNlICdzaG9wcGluZ0NhcnQnOlxuICAgICAgICAvLyBObyBzZXBhcmF0ZSBBc3NldHMgdGVtcGxhdGUgYXQgdGhlIG1vbWVudFxuICAgICAgICByZXR1cm4gVUlUZW1wbGF0ZVR5cGUuU0hPUFBJTkdfQ0FSVDtcbiAgICAgIGNhc2UgJ2NhdGFsb2cnOlxuICAgICAgICByZXR1cm4gVUlUZW1wbGF0ZVR5cGUuQ0FUQUxPRztcbiAgICAgIGNhc2UgJ2d1aWRlZFNlbGxpbmcnOlxuICAgICAgICByZXR1cm4gVUlUZW1wbGF0ZVR5cGUuR1VJREVEX1NFTExJTkc7XG4gICAgICBjYXNlICdmbG93SGVhZGVyJzpcbiAgICAgICAgcmV0dXJuIFVJVGVtcGxhdGVUeXBlLkZMT1dfSEVBREVSO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rmxvd0NvbnRleHRNb2RlKGhlYWRlcklkOiBzdHJpbmcpOiBGbG93Q29udGV4dE1vZGUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG9iamVjdE5hbWUgPSBTYWxlc2ZvcmNlSWRVdGlscy5nZXRTZk9iamVjdE5hbWVCeUlkKGhlYWRlcklkKTtcbiAgICBpZiAoIW9iamVjdE5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqZWN0TmFtZS50b1VwcGVyQ2FzZSgpIGFzIEZsb3dDb250ZXh0TW9kZTtcbiAgfVxufVxuIl19
|