@veloceapps/sdk 9.0.0-0 → 9.0.0-10
Sign up to get free protection for your applications and to get access to all the features.
- package/core/modules/configuration/services/configuration-state.service.d.ts +6 -1
- package/core/services/flow-state.service.d.ts +1 -1
- package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +19 -13
- package/esm2020/core/services/flow-info.service.mjs +1 -5
- package/esm2020/core/services/flow-state.service.mjs +18 -9
- package/esm2020/core/services/quote-draft.service.mjs +11 -5
- package/esm2020/src/components/doc-gen/doc-gen.component.mjs +4 -1
- package/esm2020/src/components/flow-header/flow-header.component.mjs +4 -1
- package/esm2020/src/components/guided-selling/guided-selling.component.mjs +4 -1
- package/esm2020/src/services/flow.service.mjs +2 -2
- package/fesm2015/veloceapps-sdk-core.mjs +46 -28
- package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2015/veloceapps-sdk.mjs +10 -1
- package/fesm2015/veloceapps-sdk.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-core.mjs +46 -28
- package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk.mjs +10 -1
- package/fesm2020/veloceapps-sdk.mjs.map +1 -1
- package/package.json +1 -1
@@ -35,7 +35,7 @@ export class FlowStateService {
|
|
35
35
|
this.processors = {};
|
36
36
|
this.subscriptions = {};
|
37
37
|
this.flowStore = {};
|
38
|
-
this.
|
38
|
+
this.executionInProgress$ = new BehaviorSubject(false);
|
39
39
|
this.statefulRequestStream$ = new Subject();
|
40
40
|
this.cleanup$ = new Subject();
|
41
41
|
this.statefulExecutionRequest$ = this.initBufferedRequest$();
|
@@ -121,7 +121,7 @@ export class FlowStateService {
|
|
121
121
|
return this.stateId$.value;
|
122
122
|
}
|
123
123
|
get isExecutionInProgress$() {
|
124
|
-
return this.
|
124
|
+
return this.executionInProgress$.asObservable();
|
125
125
|
}
|
126
126
|
isInitialized$() {
|
127
127
|
return combineLatest([this.stateId$, this.quoteDraftService.isInitialized$]).pipe(map(values => values.some(Boolean)));
|
@@ -315,15 +315,15 @@ export class FlowStateService {
|
|
315
315
|
.filter(isDefined)
|
316
316
|
.reduce((acc, selectorsMap) => Object.assign(acc, selectorsMap), {}),
|
317
317
|
};
|
318
|
-
this.
|
318
|
+
this.executionInProgress$.next(true);
|
319
319
|
return this.flowStateApiService.execute(this.stateId$.value, request);
|
320
|
-
}), tap(({ stateId }) => this.stateId$.next(stateId)), share(), tap(() => this.
|
321
|
-
this.
|
320
|
+
}), tap(({ stateId }) => this.stateId$.next(stateId)), share(), tap(() => this.executionInProgress$.next(false)), catchError(e => {
|
321
|
+
this.executionInProgress$.next(false);
|
322
322
|
return throwError(() => e);
|
323
323
|
}));
|
324
324
|
}
|
325
325
|
executeStateful$(request) {
|
326
|
-
return this.
|
326
|
+
return this.executionInProgress$.pipe(filter(inProgress => !inProgress), take(1), switchMap(() =>
|
327
327
|
// make sure stream switches to statefulExecutionRequest$ before pushing an execution request
|
328
328
|
combineLatest([
|
329
329
|
this.statefulExecutionRequest$,
|
@@ -337,7 +337,12 @@ export class FlowStateService {
|
|
337
337
|
if (assets) {
|
338
338
|
this.flowStore = { ...this.flowStore, assets };
|
339
339
|
}
|
340
|
-
}), switchMap(() =>
|
340
|
+
}), switchMap(() => {
|
341
|
+
if (this.flowInfoService.isLegacy) {
|
342
|
+
return of(null);
|
343
|
+
}
|
344
|
+
return this.executeRequest$(this.getDefaultExecutionRequestDTO());
|
345
|
+
}), switchMap(() => this.calculate$()), tap(() => this.quoteDraftService.finalizeInit()), map(noop));
|
341
346
|
}
|
342
347
|
calculate$() {
|
343
348
|
const flowState = this.quoteDraftService.quoteDraft;
|
@@ -359,6 +364,7 @@ export class FlowStateService {
|
|
359
364
|
return this.flowConfiguration.calculate$(flowState);
|
360
365
|
}
|
361
366
|
executeStateless$(request) {
|
367
|
+
this.executionInProgress$.next(true);
|
362
368
|
return of(undefined).pipe(tap(() => this.executeStatelessActions(request)), switchMap(() => {
|
363
369
|
/*
|
364
370
|
Skip price calculation in case
|
@@ -371,7 +377,10 @@ export class FlowStateService {
|
|
371
377
|
else {
|
372
378
|
return this.calculate$();
|
373
379
|
}
|
374
|
-
}), map(() => this.executeStatelessSelectors(request)))
|
380
|
+
}), map(() => this.executeStatelessSelectors(request)), tap(() => this.executionInProgress$.next(false)), catchError(e => {
|
381
|
+
this.executionInProgress$.next(false);
|
382
|
+
return throwError(() => e);
|
383
|
+
}));
|
375
384
|
}
|
376
385
|
executeStatelessActions(request) {
|
377
386
|
if (!this.quoteDraftService.quoteDraft || !request.actions?.length) {
|
@@ -509,4 +518,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
509
518
|
type: Inject,
|
510
519
|
args: [FLOW_CUSTOMIZATION]
|
511
520
|
}] }]; } });
|
512
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9zZXJ2aWNlcy9mbG93LXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFJTCx3QkFBd0IsRUFHeEIsMkJBQTJCLEVBQzNCLFVBQVUsRUFRVixTQUFTLEVBRVQsY0FBYyxFQUNkLElBQUksR0FDTCxNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLE1BQU0sRUFDTixVQUFVLEVBQ1YsYUFBYSxFQUNiLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLFFBQVEsRUFDUixHQUFHLEVBQ0gsSUFBSSxFQUVKLEVBQUUsRUFDRixLQUFLLEVBQ0wsV0FBVyxFQUNYLE9BQU8sRUFDUCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEVBQ0gsVUFBVSxHQUNYLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RELE9BQU8sRUFBcUIsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUxRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RE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QU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1lBQ3BCLE9BQU8sRUFBRSwyQkFBMkI7WUFDcEMsT0FBTyxFQUFFLG9CQUFvQjtZQUM3QixTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVO1NBQ3BELENBQUMsQ0FBQztRQUVILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OzZHQWhxQlUsZ0JBQWdCLHVTQStCTCxrQkFBa0I7aUhBL0I3QixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBZ0NOLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblByb2Nlc3NvcnNBcGlTZXJ2aWNlLCBGbG93U3RhdGVBcGlTZXJ2aWNlLCBRdW90ZUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlLCBUb2FzdFR5cGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENoYXJnZSxcbiAgQ29tcGlsZWRQcmljZVBsYW4sXG4gIENvbmZpZ3VyYXRpb25Db250ZXh0LFxuICBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUsXG4gIENvbmZpZ3VyYXRpb25Qcm9jZXNzb3IsXG4gIENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JTY3JpcHRGbixcbiAgQ29uZmlndXJhdGlvblByb2Nlc3NvclR5cGVzLFxuICBFbnRpdHlVdGlsLFxuICBGbG93LFxuICBGbG93U3RhdGUsXG4gIEZsb3dTdGF0ZUV4ZWN1dGFibGVEVE8sXG4gIEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3QsXG4gIEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8sXG4gIEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdCxcbiAgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZSxcbiAgaXNEZWZpbmVkLFxuICBNZXRyaWNSdWxlLFxuICBVSVRlbXBsYXRlVHlwZSxcbiAgVVVJRCxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBhc3NpZ24sIGNsb25lRGVlcCwgRGljdGlvbmFyeSwgZmxhdHRlbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGJ1ZmZlcixcbiAgY2F0Y2hFcnJvcixcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBmaWx0ZXIsXG4gIGZpbmFsaXplLFxuICBmb3JrSm9pbixcbiAgbWFwLFxuICBub29wLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc2hhcmUsXG4gIHNoYXJlUmVwbGF5LFxuICBTdWJqZWN0LFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxuICB0aHJvd0Vycm9yLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL21vZHVsZXMnO1xuaW1wb3J0IHsgRmxvd0N1c3RvbWl6YXRpb24sIEZMT1dfQ1VTVE9NSVpBVElPTiB9IGZyb20gJy4uL3R5cGVzL2Zsb3ctY3VzdG9taXphdGlvbi50eXBlcyc7XG5pbXBvcnQgeyBGbG93U3RhdGVTdWJzY3JpcHRpb25PcHRpb25zLCBGbG93U3RvcmUgfSBmcm9tICcuLi90eXBlcy9mbG93LXN0YXRlLnR5cGVzJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd0luZm9TZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBRdW90ZURyYWZ0U2VydmljZSB9IGZyb20gJy4vcXVvdGUtZHJhZnQuc2VydmljZSc7XG5cbnR5cGUgUHJvY2Vzc29yc01hcCA9IFBhcnRpYWw8e1xuICBbb3duZXJJZDogc3RyaW5nXToge1xuICAgIFthcGlOYW1lOiBzdHJpbmddOiBDb25maWd1cmF0aW9uUHJvY2Vzc29yO1xuICB9O1xufT47XG5cbnR5cGUgU3Vic2NyaXB0aW9uID0ge1xuICByZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPO1xuICBkYXRhJDogQmVoYXZpb3JTdWJqZWN0PHVua25vd24+O1xufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dTdGF0ZVNlcnZpY2Uge1xuICBwdWJsaWMgY2hhcmdlcyQ6IE9ic2VydmFibGU8RGljdGlvbmFyeTxDaGFyZ2U+PjtcbiAgcHVibGljIHByaWNlUGxhbnMkOiBPYnNlcnZhYmxlPERpY3Rpb25hcnk8Q29tcGlsZWRQcmljZVBsYW4+PjtcbiAgcHVibGljIGFjdGl2ZU1ldHJpY3MkOiBPYnNlcnZhYmxlPE1ldHJpY1J1bGVbXT47XG4gIHB1YmxpYyBpc1ByaWNlTGlzdExvY2tlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBOT1RfSU5JVElBTElaRUQgPSBTeW1ib2woKTtcbiAgcHJpdmF0ZSByZWFkb25seSBFWEVDVVRJT05fQlVGRkVSX1RJTUUgPSAxMDA7XG5cbiAgcHJpdmF0ZSBleGVjdXRlZEZ1bmN0aW9uczogRGljdGlvbmFyeTxDb25maWd1cmF0aW9uUHJvY2Vzc29yU2NyaXB0Rm4+ID0ge307XG4gIHByaXZhdGUgc3RhdGVJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIF9oYXNTdGF0ZWZ1bFVuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcbiAgcHJpdmF0ZSBwcm9jZXNzb3JzOiBQcm9jZXNzb3JzTWFwID0ge307XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogUmVjb3JkPHN0cmluZywgU3Vic2NyaXB0aW9uPiA9IHt9O1xuICBwcml2YXRlIGZsb3dTdG9yZTogRmxvd1N0b3JlID0ge307XG5cbiAgcHJpdmF0ZSBzdGF0ZWZ1bEV4ZWN1dGlvbkluUHJvZ3Jlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgc3RhdGVmdWxSZXF1ZXN0U3RyZWFtJCA9IG5ldyBTdWJqZWN0PEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8+KCk7XG4gIHByaXZhdGUgc3RhdGVmdWxFeGVjdXRpb25SZXF1ZXN0JDogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+O1xuXG4gIHByaXZhdGUgY2xlYW51cCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93Q29uZmlndXJhdGlvbjogRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvY2Vzc29yc0FwaVNlcnZpY2U6IENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dTdGF0ZUFwaVNlcnZpY2U6IEZsb3dTdGF0ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZUFwaVNlcnZpY2U6IFF1b3RlQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkxPV19DVVNUT01JWkFUSU9OKSBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlPzogRmxvd0N1c3RvbWl6YXRpb24sXG4gICkge1xuICAgIHRoaXMuc3RhdGVmdWxFeGVjdXRpb25SZXF1ZXN0JCA9IHRoaXMuaW5pdEJ1ZmZlcmVkUmVxdWVzdCQoKTtcblxuICAgIC8qXG4gICAgICBJbiBzdGF0ZWxlc3MgbW9kZSB3YXRjaCBRdW90ZURyYWZ0IGNoYW5nZXMgYW5kIGNhbGwgZXhlY3V0ZVJlcXVlc3Qgc28gdGhhdFxuICAgICAgYWxsIHN1YnNjcmlwdGlvbnMgZ2V0IHRoZWlyIHVwZGF0ZXMgYWNjb3JkaW5nIHRvIHVwZGF0ZWQgUXVvdGVEcmFmdFxuICAgICovXG4gICAgdGhpcy5pc0luaXRpYWxpemVkJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMuZ2V0Rmxvd1NhZmUoKS5wcm9wZXJ0aWVzLnN0YXRlZnVsKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZmxvd0NvbmZpZ3VyYXRpb24udXBkYXRlZCQpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5leGVjdXRlUmVxdWVzdCQoe30sIHRydWUpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuY2hhcmdlcyQgPSB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93JC5waXBlKFxuICAgICAgZmlsdGVyKGlzRGVmaW5lZCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5mbG93SW5mb1NlcnZpY2UuaXNMZWdhY3kpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JC5waXBlKG1hcChxdW90ZURyYWZ0ID0+IHF1b3RlRHJhZnQuY2hhcmdlcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnN1YnNjcmliZSQ8RGljdGlvbmFyeTxDaGFyZ2U+PihVSVRlbXBsYXRlVHlwZS5GTE9XX0VOR0lORSwgJ0NIQVJHRVMnLCBudWxsLCB7XG4gICAgICAgICAgICBjb2xkOiB0cnVlLFxuICAgICAgICAgIH0pLnBpcGUobWFwKHJlc3BvbnNlID0+IChyZXNwb25zZS5zdWNjZXNzID8gcmVzcG9uc2UucmVzdWx0IDoge30pKSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgKTtcbiAgICB0aGlzLmNoYXJnZXMkLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5wcmljZVBsYW5zJCA9IHRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3ckLnBpcGUoXG4gICAgICBmaWx0ZXIoaXNEZWZpbmVkKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZsb3dJbmZvU2VydmljZS5pc0xlZ2FjeSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQkLnBpcGUobWFwKHF1b3RlRHJhZnQgPT4gcXVvdGVEcmFmdC5wcmljZVBsYW5zKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc3Vic2NyaWJlJDxEaWN0aW9uYXJ5PENvbXBpbGVkUHJpY2VQbGFuPj4oVUlUZW1wbGF0ZVR5cGUuRkxPV19FTkdJTkUsICdQUklDRV9QTEFOUycsIG51bGwsIHtcbiAgICAgICAgICAgIGNvbGQ6IHRydWUsXG4gICAgICAgICAgfSkucGlwZShtYXAocmVzcG9uc2UgPT4gKHJlc3BvbnNlLnN1Y2Nlc3MgPyByZXNwb25zZS5yZXN1bHQgOiB7fSkpKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuICAgIHRoaXMucHJpY2VQbGFucyQuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmFjdGl2ZU1ldHJpY3MkID0gdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdyQucGlwZShcbiAgICAgIGZpbHRlcihpc0RlZmluZWQpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZmxvd0luZm9TZXJ2aWNlLmlzTGVnYWN5KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCQucGlwZShtYXAocXVvdGVEcmFmdCA9PiBxdW90ZURyYWZ0LmFjdGl2ZU1ldHJpY3MpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zdWJzY3JpYmUkPE1ldHJpY1J1bGVbXT4oVUlUZW1wbGF0ZVR5cGUuRkxPV19FTkdJTkUsICdBQ1RJVkVfTUVUUklDUycsIG51bGwsIHtcbiAgICAgICAgICAgIGNvbGQ6IHRydWUsXG4gICAgICAgICAgfSkucGlwZShtYXAocmVzcG9uc2UgPT4gKHJlc3BvbnNlLnN1Y2Nlc3MgPyByZXNwb25zZS5yZXN1bHQgOiBbXSkpKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuICAgIHRoaXMuYWN0aXZlTWV0cmljcyQuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmlzUHJpY2VMaXN0TG9ja2VkJCA9IHRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3ckLnBpcGUoXG4gICAgICBmaWx0ZXIoaXNEZWZpbmVkKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZsb3dJbmZvU2VydmljZS5pc0xlZ2FjeSkge1xuICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc3Vic2NyaWJlJDxib29sZWFuPihVSVRlbXBsYXRlVHlwZS5GTE9XX0VOR0lORSwgJ0lTX1BSSUNFX0xJU1RfTE9DS0VEJywgbnVsbCwge1xuICAgICAgICAgICAgY29sZDogdHJ1ZSxcbiAgICAgICAgICB9KS5waXBlKG1hcChyZXNwb25zZSA9PiAocmVzcG9uc2Uuc3VjY2VzcyA/IHJlc3BvbnNlLnJlc3VsdCA6IGZhbHNlKSkpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICk7XG4gICAgdGhpcy5pc1ByaWNlTGlzdExvY2tlZCQuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdFByb2Nlc3NvcnMkKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGF0ZWZ1bCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmluaXRTdGF0ZWZ1bCQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0U3RhdGVsZXNzJCgpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNsZWFudXAoKTogdm9pZCB7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLnN1YnNjcmlwdGlvbnMpLmZvckVhY2goKHsgZGF0YSQgfSkgPT4gZGF0YSQuY29tcGxldGUoKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0ge307XG5cbiAgICBpZiAodGhpcy5zdGF0ZUlkJC52YWx1ZSkge1xuICAgICAgdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLmNhbmNlbCh0aGlzLnN0YXRlSWQkLnZhbHVlKS5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuc3RhdGVJZCQubmV4dChudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLnByb2Nlc3NvcnMgPSB7fTtcbiAgICB0aGlzLmZsb3dTdG9yZSA9IHt9O1xuICAgIHRoaXMuY2xlYW51cCQubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNVbnNhdmVkQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGbG93U2FmZSgpLnByb3BlcnRpZXMuc3RhdGVmdWxcbiAgICAgID8gdGhpcy5faGFzU3RhdGVmdWxVbnNhdmVkQ2hhbmdlc1xuICAgICAgOiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc1Vuc2F2ZWRDaGFuZ2VzO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZUlkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnN0YXRlSWQkLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0V4ZWN1dGlvbkluUHJvZ3Jlc3MkKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlZnVsRXhlY3V0aW9uSW5Qcm9ncmVzcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgaXNJbml0aWFsaXplZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuc3RhdGVJZCQsIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNJbml0aWFsaXplZCRdKS5waXBlKFxuICAgICAgbWFwKHZhbHVlcyA9PiB2YWx1ZXMuc29tZShCb29sZWFuKSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuc3RhdGVJZCQudmFsdWUpIHx8IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNJbml0aWFsaXplZDtcbiAgfVxuXG4gIHB1YmxpYyBleGVjdXRlJChcbiAgICBzY29wZTogVUlUZW1wbGF0ZVR5cGUsXG4gICAgZXhlYzogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdCxcbiAgKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHRbJ3NlbGVjdG9ycyddPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuZXhlY1RvUmVxdWVzdChzY29wZSwgZXhlYyk7XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUmVxdWVzdCQocmVxdWVzdCkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAvLyBLZWVwIG9ubHkgcmVxdWVzdGVkIHJlc3VsdHNcbiAgICAgICAgY29uc3QgYWN0dWFsU2VsZWN0b3JzID0gT2JqZWN0LmVudHJpZXMocmVzdWx0LnNlbGVjdG9ycykucmVkdWNlKFxuICAgICAgICAgICh0cnVuazogUmVjb3JkPHN0cmluZywgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZT4sIFtyZXF1ZXN0SWQsIHJlc3VsdF0pID0+IHtcbiAgICAgICAgICAgIGlmIChleGVjLnNlbGVjdG9ycz8uW3JlcXVlc3RJZF0pIHtcbiAgICAgICAgICAgICAgdHJ1bmtbcmVxdWVzdElkXSA9IHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVuaztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHt9LFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBhY3R1YWxTZWxlY3RvcnM7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGRpc3BhdGNoJChzY29wZTogVUlUZW1wbGF0ZVR5cGUsIGFjdGlvbjogc3RyaW5nLCBpbnB1dERhdGE/OiB1bmtub3duKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZXhlYzogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGFjdGlvbnM6IFt7IG5hbWU6IGFjdGlvbiwgaW5wdXREYXRhIH1dLFxuICAgIH07XG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuZXhlY1RvUmVxdWVzdChzY29wZSwgZXhlYyk7XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUmVxdWVzdCQocmVxdWVzdCkucGlwZShtYXAobm9vcCkpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdCQ8UmVzcG9uc2UgPSB1bmtub3duPihcbiAgICBzY29wZTogVUlUZW1wbGF0ZVR5cGUsXG4gICAgc2VsZWN0b3JOYW1lOiBzdHJpbmcsXG4gICAgaW5wdXREYXRhPzogdW5rbm93bixcbiAgKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlPFJlc3BvbnNlPj4ge1xuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMuZ2VuZXJhdGVSZXF1ZXN0SWQoc2NvcGUsIHNlbGVjdG9yTmFtZSwgaW5wdXREYXRhKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5leGVjVG9SZXF1ZXN0KHNjb3BlLCB7XG4gICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgW3JlcXVlc3RJZF06IHtcbiAgICAgICAgICBuYW1lOiBzZWxlY3Rvck5hbWUsXG4gICAgICAgICAgaW5wdXREYXRhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSZXF1ZXN0JChyZXF1ZXN0KS5waXBlKFxuICAgICAgbWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlLnNlbGVjdG9yc1tyZXF1ZXN0SWRdIGFzIEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN1YnNjcmliZSQ8UmVzcG9uc2UgPSB1bmtub3duPihcbiAgICBzY29wZTogVUlUZW1wbGF0ZVR5cGUsXG4gICAgc2VsZWN0b3JOYW1lOiBzdHJpbmcsXG4gICAgaW5wdXREYXRhPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogRmxvd1N0YXRlU3Vic2NyaXB0aW9uT3B0aW9ucyxcbiAgKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlPFJlc3BvbnNlPj4ge1xuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMuZ2VuZXJhdGVSZXF1ZXN0SWQoc2NvcGUsIHNlbGVjdG9yTmFtZSwgaW5wdXREYXRhKTtcblxuICAgIGxldCBzdWJzY3JpcHRpb24gPSB0aGlzLnN1YnNjcmlwdGlvbnNbcmVxdWVzdElkXTtcblxuICAgIGlmICghc3Vic2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5leGVjVG9SZXF1ZXN0KHNjb3BlLCB7XG4gICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgIFtyZXF1ZXN0SWRdOiB7XG4gICAgICAgICAgICBuYW1lOiBzZWxlY3Rvck5hbWUsXG4gICAgICAgICAgICBpbnB1dERhdGEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBzdWJzY3JpcHRpb24gPSB7XG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIGRhdGEkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHVua25vd24+KHRoaXMuTk9UX0lOSVRJQUxJWkVEKSxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdID0gc3Vic2NyaXB0aW9uO1xuXG4gICAgICBpZiAoIW9wdGlvbnM/LmNvbGQpIHtcbiAgICAgICAgdGhpcy5leGVjdXRlUmVxdWVzdCQocmVxdWVzdCkuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnNjcmlwdGlvbi5kYXRhJC5waXBlKFxuICAgICAgZmlsdGVyKGRhdGEgPT4gZGF0YSAhPSB0aGlzLk5PVF9JTklUSUFMSVpFRCksXG4gICAgICBtYXAoZGF0YSA9PiBkYXRhIGFzIEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+KSxcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnN1YnNjcmlwdGlvbnNbcmVxdWVzdElkXT8uZGF0YSQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF07XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSQoKTogT2JzZXJ2YWJsZTx7IHF1b3RlSWQ6IHN0cmluZyB9PiB7XG4gICAgaWYgKHRoaXMuZ2V0Rmxvd1NhZmUoKS5wcm9wZXJ0aWVzLnN0YXRlZnVsKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZUlkJC52YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLnNhdmUodGhpcy5zdGF0ZUlkJC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgICBpZiAocXVvdGVEcmFmdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5xdW90ZUFwaVNlcnZpY2UudXBzZXJ0UXVvdGUocXVvdGVEcmFmdCkucGlwZShcbiAgICAgICAgICB0YXAoKHsgY29uZmlndXJhdGlvbklkIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UudXBkYXRlKHsgcHJvcGVydGllczogeyBDb25maWd1cmF0aW9uSWQ6IGNvbmZpZ3VyYXRpb25JZCB9IH0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvZih7IHF1b3RlSWQ6ICcnIH0pO1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdCQoKTogT2JzZXJ2YWJsZTx7IHF1b3RlSWQ6IHN0cmluZyB9PiB7XG4gICAgaWYgKHRoaXMuZ2V0Rmxvd1NhZmUoKS5wcm9wZXJ0aWVzLnN0YXRlZnVsKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZUlkJC52YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLnN1Ym1pdCh0aGlzLnN0YXRlSWQkLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcbiAgICAgIGlmIChxdW90ZURyYWZ0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnF1b3RlQXBpU2VydmljZS5zdWJtaXRRdW90ZShxdW90ZURyYWZ0KS5waXBlKFxuICAgICAgICAgIHRhcCgoeyBjb25maWd1cmF0aW9uSWQgfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUoeyBwcm9wZXJ0aWVzOiB7IENvbmZpZ3VyYXRpb25JZDogY29uZmlndXJhdGlvbklkIH0gfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mKHsgcXVvdGVJZDogJycgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rmxvd1N0b3JlKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5mbG93U3RvcmU7XG4gIH1cblxuICBwcml2YXRlIGdldE93bmVySWRCeVNjb3BlKHNjb3BlOiBVSVRlbXBsYXRlVHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3duZXJJZCA9IHRoaXMuZmxvd0luZm9TZXJ2aWNlLnRlbXBsYXRlc1tzY29wZV0/LmlkO1xuICAgIGlmICghb3duZXJJZCkge1xuICAgICAgdGhyb3cgYE93bmVySWQgaXMgbm90IGZvdW5kIGZvciBzY29wZSAke3Njb3BlfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIG93bmVySWQ7XG4gIH1cblxuICBwcml2YXRlIGdldFNjb3BlQnlPd25lcklkKGlkOiBzdHJpbmcpOiBVSVRlbXBsYXRlVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChjb25zdCB0ZW1wbGF0ZSBvZiBPYmplY3QudmFsdWVzKHRoaXMuZmxvd0luZm9TZXJ2aWNlLnRlbXBsYXRlcykpIHtcbiAgICAgIGlmICh0ZW1wbGF0ZS5pZCA9PT0gaWQpIHtcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlLnR5cGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjVG9SZXF1ZXN0KHNjb3BlOiBVSVRlbXBsYXRlVHlwZSwgZXhlYzogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdCk6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8ge1xuICAgIGNvbnN0IG93bmVySWQgPSB0aGlzLmdldE93bmVySWRCeVNjb3BlKHNjb3BlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb25zOiBleGVjLmFjdGlvbnM/Lm1hcChhY3Rpb24gPT4gKHsgYXBpTmFtZTogYWN0aW9uLm5hbWUsIG93bmVySWQsIGlucHV0RGF0YTogYWN0aW9uLmlucHV0RGF0YSA/PyB7fSB9KSksXG4gICAgICBzZWxlY3RvcnM6XG4gICAgICAgIGV4ZWMuc2VsZWN0b3JzICYmXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGV4ZWMuc2VsZWN0b3JzKS5yZWR1Y2UoXG4gICAgICAgICAgKHRydW5rOiBSZWNvcmQ8c3RyaW5nLCBGbG93U3RhdGVFeGVjdXRhYmxlRFRPPiwgW2tleSwgc2VsZWN0b3JdKSA9PiAoe1xuICAgICAgICAgICAgLi4udHJ1bmssXG4gICAgICAgICAgICBba2V5XTogeyBhcGlOYW1lOiBzZWxlY3Rvci5uYW1lLCBvd25lcklkLCBpbnB1dERhdGE6IHNlbGVjdG9yLmlucHV0RGF0YSA/PyB7fSB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZXhlY3V0ZVJlcXVlc3QkKFxuICAgIHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8sXG4gICAgZm9yY2VTdWJzY3JpcHRpb25zOiBib29sZWFuID0gZmFsc2UsXG4gICk6IE9ic2VydmFibGU8Rmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0PiB7XG4gICAgY29uc3QgZnVsbFJlcXVlc3QgPSBjbG9uZURlZXAocmVxdWVzdCk7XG4gICAgaWYgKGZ1bGxSZXF1ZXN0LmFjdGlvbnM/Lmxlbmd0aCB8fCBmb3JjZVN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIE9iamVjdC52YWx1ZXModGhpcy5zdWJzY3JpcHRpb25zKSkge1xuICAgICAgICBmdWxsUmVxdWVzdC5zZWxlY3RvcnMgPSBhc3NpZ24oZnVsbFJlcXVlc3Quc2VsZWN0b3JzLCBzdWJzY3JpcHRpb24ucmVxdWVzdC5zZWxlY3RvcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGV4ZWN1dGlvbiQgPSB0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGF0ZWZ1bFxuICAgICAgPyB0aGlzLmV4ZWN1dGVTdGF0ZWZ1bCQoZnVsbFJlcXVlc3QpXG4gICAgICA6IHRoaXMuZXhlY3V0ZVN0YXRlbGVzcyQoZnVsbFJlcXVlc3QpO1xuXG4gICAgcmV0dXJuIGV4ZWN1dGlvbiQucGlwZSh0YXAocmVzdWx0ID0+IHRoaXMuaGFuZGxlU2VsZWN0b3JzUmVzcG9uc2UocmVzdWx0LnNlbGVjdG9ycykpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2VsZWN0b3JzUmVzcG9uc2Uoc2VsZWN0b3JzOiBSZWNvcmQ8c3RyaW5nLCBGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlPHVua25vd24+Pik6IHZvaWQge1xuICAgIE9iamVjdC5lbnRyaWVzKHNlbGVjdG9ycykuZm9yRWFjaCgoW3JlcXVlc3RJZCwgc2VsZWN0b3JSZXN1bHRdKSA9PiB7XG4gICAgICBpZiAoIXNlbGVjdG9yUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6IFRvYXN0VHlwZS5lcnJvciwgc3VtbWFyeTogc2VsZWN0b3JSZXN1bHQuZXJyb3JNZXNzYWdlIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24kID0gdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF0/LmRhdGEkO1xuICAgICAgaWYgKHN1YnNjcmlwdGlvbiQgJiYgc3Vic2NyaXB0aW9uJC52YWx1ZSAhPT0gc2VsZWN0b3JSZXN1bHQpIHtcbiAgICAgICAgc3Vic2NyaXB0aW9uJC5uZXh0KHNlbGVjdG9yUmVzdWx0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN0YXRlZnVsJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAvLyBTdWJzY3JpcHRpb25zXG4gICAgdGhpcy5zdWJzY3JpYmUkPENvbmZpZ3VyYXRpb25Db250ZXh0PihVSVRlbXBsYXRlVHlwZS5GTE9XX0VOR0lORSwgJ0NPTlRFWFQnLCBudWxsLCB7IGNvbGQ6IHRydWUgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZShyZXNwb25zZS5yZXN1bHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNsZWFudXAkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGNvbnN0IHByb2Nlc3NvcnNMaXN0ID0gZmxhdHRlbihPYmplY3QudmFsdWVzKHRoaXMucHJvY2Vzc29ycykubWFwKG93bmVyTWFwID0+IE9iamVjdC52YWx1ZXMob3duZXJNYXAgPz8ge30pKSk7XG4gICAgY29uc3QgcHJvY2Vzc29ycyA9IHByb2Nlc3NvcnNMaXN0Lmxlbmd0aCA/IHByb2Nlc3NvcnNMaXN0IDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNlbGVjdG9ycyA9IE9iamVjdC52YWx1ZXModGhpcy5zdWJzY3JpcHRpb25zKVxuICAgICAgLm1hcCgoeyByZXF1ZXN0IH0pID0+IHJlcXVlc3Quc2VsZWN0b3JzKVxuICAgICAgLmZpbHRlcihpc0RlZmluZWQpXG4gICAgICAucmVkdWNlKCh0cnVuaywgc2VsZWN0b3JzKSA9PiAoeyAuLi50cnVuaywgLi4uc2VsZWN0b3JzIH0pLCB7fSk7XG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuZ2V0RGVmYXVsdEV4ZWN1dGlvblJlcXVlc3REVE8oKTtcblxuICAgIHJldHVybiB0aGlzLmZsb3dTdGF0ZUFwaVNlcnZpY2VcbiAgICAgIC5pbml0KHtcbiAgICAgICAgcXVvdGVJZDogdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCkuaGVhZGVySWQsXG4gICAgICAgIHBhcmFtczogdGhpcy5mbG93SW5mb1NlcnZpY2UucGFyYW1zID8/IHt9LFxuICAgICAgICBhY3Rpb25zT3ZlcnJpZGU6IHByb2Nlc3NvcnM/LmZpbHRlcihwcm9jZXNzb3IgPT4gcHJvY2Vzc29yLnR5cGUgPT09IENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JUeXBlcy5BQ1RJT04pLFxuICAgICAgICBzZWxlY3RvcnNPdmVycmlkZTogcHJvY2Vzc29ycz8uZmlsdGVyKHByb2Nlc3NvciA9PiBwcm9jZXNzb3IudHlwZSA9PT0gQ29uZmlndXJhdGlvblByb2Nlc3NvclR5cGVzLlNFTEVDVE9SKSxcbiAgICAgICAgc2VsZWN0b3JzOiB7IC4uLnNlbGVjdG9ycywgLi4ucmVxdWVzdC5zZWxlY3RvcnMgfSxcbiAgICAgICAgYWN0aW9uczogcmVxdWVzdC5hY3Rpb25zLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHsgc3RhdGVJZCwgc2VsZWN0b3JzIH0pID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdG9yc1Jlc3BvbnNlKHNlbGVjdG9ycyk7XG4gICAgICAgICAgdGhpcy5zdGF0ZUlkJC5uZXh0KHN0YXRlSWQpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRCdWZmZXJlZFJlcXVlc3QkKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlZnVsUmVxdWVzdFN0cmVhbSQucGlwZShcbiAgICAgIGJ1ZmZlcih0aGlzLnN0YXRlZnVsUmVxdWVzdFN0cmVhbSQucGlwZShkZWJvdW5jZVRpbWUodGhpcy5FWEVDVVRJT05fQlVGRkVSX1RJTUUpKSksXG4gICAgICBzd2l0Y2hNYXAocmVxdWVzdHMgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3RhdGVJZCQudmFsdWUpIHtcbiAgICAgICAgICB0aHJvdyAnU3RhdGVmdWwgc2Vzc2lvbiBpcyBub3QgaW5pdGlhbGl6ZWQnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbWVyZ2UgYnVmZmVyZWQgcmVxdWVzdHNcbiAgICAgICAgY29uc3QgcmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyA9IHtcbiAgICAgICAgICBhY3Rpb25zOiByZXF1ZXN0cy5mbGF0TWFwKCh7IGFjdGlvbnMgfSkgPT4gYWN0aW9ucykuZmlsdGVyKGlzRGVmaW5lZCksXG4gICAgICAgICAgc2VsZWN0b3JzOiByZXF1ZXN0c1xuICAgICAgICAgICAgLm1hcCgoeyBzZWxlY3RvcnMgfSkgPT4gc2VsZWN0b3JzKVxuICAgICAgICAgICAgLmZpbHRlcihpc0RlZmluZWQpXG4gICAgICAgICAgICAucmVkdWNlKChhY2MsIHNlbGVjdG9yc01hcCkgPT4gT2JqZWN0LmFzc2lnbihhY2MsIHNlbGVjdG9yc01hcCksIHt9KSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnN0YXRlZnVsRXhlY3V0aW9uSW5Qcm9ncmVzcyQubmV4dCh0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxvd1N0YXRlQXBpU2VydmljZS5leGVjdXRlKHRoaXMuc3RhdGVJZCQudmFsdWUsIHJlcXVlc3QpO1xuICAgICAgfSksXG4gICAgICB0YXAoKHsgc3RhdGVJZCB9KSA9PiB0aGlzLnN0YXRlSWQkLm5leHQoc3RhdGVJZCkpLFxuICAgICAgc2hhcmUoKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnN0YXRlZnVsRXhlY3V0aW9uSW5Qcm9ncmVzcyQubmV4dChmYWxzZSkpLFxuICAgICAgY2F0Y2hFcnJvcihlID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZWZ1bEV4ZWN1dGlvbkluUHJvZ3Jlc3MkLm5leHQoZmFsc2UpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdGF0ZWZ1bCQocmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyk6IE9ic2VydmFibGU8Rmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVmdWxFeGVjdXRpb25JblByb2dyZXNzJC5waXBlKFxuICAgICAgZmlsdGVyKGluUHJvZ3Jlc3MgPT4gIWluUHJvZ3Jlc3MpLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAvLyBtYWtlIHN1cmUgc3RyZWFtIHN3aXRjaGVzIHRvIHN0YXRlZnVsRXhlY3V0aW9uUmVxdWVzdCQgYmVmb3JlIHB1c2hpbmcgYW4gZXhlY3V0aW9uIHJlcXVlc3RcbiAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgdGhpcy5zdGF0ZWZ1bEV4ZWN1dGlvblJlcXVlc3QkLFxuICAgICAgICAgIG9mKHVuZGVmaW5lZCkucGlwZSh0YXAoKCkgPT4gdGhpcy5zdGF0ZWZ1bFJlcXVlc3RTdHJlYW0kLm5leHQocmVxdWVzdCkpKSxcbiAgICAgICAgXSksXG4gICAgICApLFxuICAgICAgbWFwKChbcmVzcG9uc2VdKSA9PiByZXNwb25zZSksXG4gICAgICB0YWtlKDEpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdGF0ZWxlc3MkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHsgaGVhZGVySWQgfSA9IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpO1xuICAgIHJldHVybiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmluaXQoaGVhZGVySWQsIHRoaXMuZmxvd0luZm9TZXJ2aWNlLnBhcmFtcyA/PyB7fSkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFzc2V0cyA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuYXNzZXRzU3RhdGU7XG4gICAgICAgIGlmIChhc3NldHMpIHtcbiAgICAgICAgICB0aGlzLmZsb3dTdG9yZSA9IHsgLi4udGhpcy5mbG93U3RvcmUsIGFzc2V0cyB9O1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmV4ZWN1dGVSZXF1ZXN0JCh0aGlzLmdldERlZmF1bHRFeGVjdXRpb25SZXF1ZXN0RFRPKCkpKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNhbGN1bGF0ZSQoKSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5maW5hbGl6ZUluaXQoKSksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBmbG93U3RhdGUgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgaWYgKCFmbG93U3RhdGUpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICBEb24ndCBleGVjdXRlIHByb2NlZHVyZXMgd2hlbjpcbiAgICAgICAgKiBJbml0aWFsaXppbmcgYSBzdGFuZGFsb25lIHByb2R1Y3QgY29uZmlndXJhdGlvbiBVSSwgYXMgcHJvY2VkdXJlIGlzIGV4ZWN1dGUgaW4gL3ByaWNlIGNhbGxcbiAgICAgICAgKiBJbml0aWFsaXppbmcgYW4gZW1wdHkgYWNjb3VudCAoYWNjb3VudCB3aXRoIG5vIGFzc2V0cylcbiAgICAqL1xuICAgIGNvbnN0IGlzRW1wdHlBY2NvdW50TW9kZSA9XG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UICYmXG4gICAgICAhdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNQcm9kdWN0cyAmJlxuICAgICAgIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaGFzQXNzZXRzICYmXG4gICAgICAhdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5pbml0aWFsU3RhdGUubGVuZ3RoO1xuXG4gICAgaWYgKHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNTdGFuZGFsb25lIHx8IGlzRW1wdHlBY2NvdW50TW9kZSkge1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvd0NvbmZpZ3VyYXRpb24uY2FsY3VsYXRlJChmbG93U3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU3RhdGVsZXNzJChyZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMuZXhlY3V0ZVN0YXRlbGVzc0FjdGlvbnMocmVxdWVzdCkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgLypcbiAgICAgICAgICBTa2lwIHByaWNlIGNhbGN1bGF0aW9uIGluIGNhc2VcbiAgICAgICAgICAxLiBObyBhY3Rpb25zIGluIHRoZSByZXF1ZXN0XG4gICAgICAgICAgMi4gSW5pdGlhbGl6YXRpb24gcHJvY2VzcyBleGVjdXRpb24gKHN0YXRlIG5vdCBpbml0aWFsaXplZCB5ZXQpXG4gICAgICAgICovXG4gICAgICAgIGlmICghcmVxdWVzdC5hY3Rpb25zPy5sZW5ndGggfHwgIXRoaXMuaXNJbml0aWFsaXplZCgpKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlJCgpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmV4ZWN1dGVTdGF0ZWxlc3NTZWxlY3RvcnMocmVxdWVzdCkpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdGF0ZWxlc3NBY3Rpb25zKHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCB8fCAhcmVxdWVzdC5hY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZmxvd1N0YXRlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuICAgIHJlcXVlc3QuYWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBmbG93U3RhdGUgPSB0aGlzLmV4ZWN1dGVBY3Rpb25TY3JpcHQoZmxvd1N0YXRlLCBhY3Rpb24pID8/IGZsb3dTdGF0ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6IFRvYXN0VHlwZS5lcnJvciwgc3VtbWFyeTogU3RyaW5nKGUpIH0pO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS51cGRhdGVRdW90ZURyYWZ0KGZsb3dTdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdGF0ZWxlc3NTZWxlY3RvcnMocmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyk6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdCB7XG4gICAgaWYgKCF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQpIHtcbiAgICAgIHRocm93ICdRdW90ZURyYWZ0IGlzIG5vdCBpbml0aWFsaXplZCc7XG4gICAgfVxuXG4gICAgY29uc3QgZmxvd1N0YXRlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuICAgIHJldHVybiBFbnRpdHlVdGlsLmVudHJpZXMocmVxdWVzdC5zZWxlY3RvcnMgPz8ge30pLnJlZHVjZShcbiAgICAgIChyZXN1bHQ6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdCwgW2tleSwgc2VsZWN0b3JdKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzdWx0LnNlbGVjdG9yc1trZXldID0ge1xuICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgIHJlc3VsdDogdGhpcy5leGVjdXRlU2VsZWN0b3JTY3JpcHQoZmxvd1N0YXRlLCBzZWxlY3RvciksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgcmVzdWx0LnNlbGVjdG9yc1trZXldID0ge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IFN0cmluZyhlKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sXG4gICAgICB7IHN0YXRlSWQ6ICcnLCBzZWxlY3RvcnM6IHt9IH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rmxvd1NhZmUoKTogRmxvdyB7XG4gICAgaWYgKCF0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93KSB7XG4gICAgICB0aHJvdyAnRmxvdyBpcyBub3QgZGVmaW5lZCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3c7XG4gIH1cblxuICBwcml2YXRlIGluaXRQcm9jZXNzb3JzJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBoYXNPdmVycmlkZXMgPSBCb29sZWFuKHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2U/LmdldFRlbXBsYXRlQ29uZmlndXJhdGlvblByb2Nlc3NvcnMpO1xuICAgIGNvbnN0IGZsb3cgPSB0aGlzLmdldEZsb3dTYWZlKCk7XG5cbiAgICBpZiAoZmxvdy5wcm9wZXJ0aWVzLnN0YXRlZnVsICYmICFoYXNPdmVycmlkZXMpIHtcbiAgICAgIC8vIFNraXAgaW5pdGlhbGl6YXRpb24gYXMgYmFja2VuZCB3aWxsIHRha2UgcHJvY2Vzc29ycyBmcm9tIFNGXG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBjb25zdCBvd25lcnMkID0gT2JqZWN0LnZhbHVlcyh0aGlzLmZsb3dJbmZvU2VydmljZS50ZW1wbGF0ZXMpXG4gICAgICAubWFwKHRlbXBsYXRlID0+IHtcbiAgICAgICAgaWYgKCF0ZW1wbGF0ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxvY2FsUHJvY2Vzc29ycyQgPVxuICAgICAgICAgIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2U/LmdldFRlbXBsYXRlQ29uZmlndXJhdGlvblByb2Nlc3NvcnM/Lih0ZW1wbGF0ZS5uYW1lKSA/PyBvZihudWxsKTtcblxuICAgICAgICByZXR1cm4gbG9jYWxQcm9jZXNzb3JzJC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcChwcm9jZXNzb3JzID0+XG4gICAgICAgICAgICBwcm9jZXNzb3JzID8gb2YocHJvY2Vzc29ycykgOiB0aGlzLnByb2Nlc3NvcnNBcGlTZXJ2aWNlLmZldGNoQ29uZmlndXJhdGlvblByb2Nlc3NvcnMkKHRlbXBsYXRlLmlkKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIHRhcChwcm9jZXNzb3JzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NvcnNNYXAgPSBwcm9jZXNzb3JzLnJlZHVjZSgoYWNjOiBSZWNvcmQ8c3RyaW5nLCBDb25maWd1cmF0aW9uUHJvY2Vzc29yPiwgcCkgPT4ge1xuICAgICAgICAgICAgICBhY2NbcC5hcGlOYW1lXSA9IHA7XG4gICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc29yc1t0ZW1wbGF0ZS5pZF0gPSBwcm9jZXNzb3JzTWFwO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoaXNEZWZpbmVkKTtcblxuICAgIGlmICghb3duZXJzJC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JrSm9pbihvd25lcnMkKS5waXBlKG1hcChub29wKSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVBY3Rpb25TY3JpcHQocmVxdWVzdDogRmxvd1N0YXRlLCBleGVjdXRhYmxlOiBGbG93U3RhdGVFeGVjdXRhYmxlRFRPKTogRmxvd1N0YXRlIHwgbnVsbCB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvblByb2Nlc3NvciA9IHRoaXMucHJvY2Vzc29yc1tleGVjdXRhYmxlLm93bmVySWRdPy5bZXhlY3V0YWJsZS5hcGlOYW1lXTtcblxuICAgIGlmICghY29uZmlndXJhdGlvblByb2Nlc3Nvcj8uc2NyaXB0KSB7XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuZ2V0U2NvcGVCeU93bmVySWQoZXhlY3V0YWJsZS5vd25lcklkKTtcbiAgICAgIGNvbnN0IHNjb3BlVGV4dCA9IHNjb3BlID8gYCBpbiAke3Njb3BlfWAgOiAnJztcbiAgICAgIHRocm93IGBDb25maWd1cmF0aW9uUHJvY2Vzc29yICR7ZXhlY3V0YWJsZS5hcGlOYW1lfSR7c2NvcGVUZXh0fSBub3QgZm91bmRgO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVQcm9jZXNzb3JTY3JpcHQocmVxdWVzdCwgY29uZmlndXJhdGlvblByb2Nlc3NvciwgZXhlY3V0YWJsZS5pbnB1dERhdGEpIGFzIEZsb3dTdGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZVNlbGVjdG9yU2NyaXB0KHJlcXVlc3Q6IEZsb3dTdGF0ZSwgZXhlY3V0YWJsZTogRmxvd1N0YXRlRXhlY3V0YWJsZURUTyk6IHVua25vd24ge1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25Qcm9jZXNzb3IgPSB0aGlzLnByb2Nlc3NvcnNbZXhlY3V0YWJsZS5vd25lcklkXT8uW2V4ZWN1dGFibGUuYXBpTmFtZV07XG5cbiAgICBpZiAoIWNvbmZpZ3VyYXRpb25Qcm9jZXNzb3I/LnNjcmlwdCkge1xuICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLmdldFNjb3BlQnlPd25lcklkKGV4ZWN1dGFibGUub3duZXJJZCk7XG4gICAgICBjb25zdCBzY29wZVRleHQgPSBzY29wZSA/IGAgaW4gJHtzY29wZX1gIDogJyc7XG4gICAgICB0aHJvdyBgQ29uZmlndXJhdGlvblByb2Nlc3NvciAke2V4ZWN1dGFibGUuYXBpTmFtZX0ke3Njb3BlVGV4dH0gbm90IGZvdW5kYDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUHJvY2Vzc29yU2NyaXB0KHJlcXVlc3QsIGNvbmZpZ3VyYXRpb25Qcm9jZXNzb3IsIGV4ZWN1dGFibGUuaW5wdXREYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZVByb2Nlc3NvclNjcmlwdChcbiAgICByZXF1ZXN0OiBGbG93U3RhdGUsXG4gICAgY29uZmlndXJhdGlvblByb2Nlc3NvcjogQ29uZmlndXJhdGlvblByb2Nlc3NvcixcbiAgICBpbnB1dERhdGE6IHVua25vd24sXG4gICk6IHVua25vd24ge1xuICAgIGNvbnN0IHNjb3BlID0gdGhpcy5nZXRTY29wZUJ5T3duZXJJZChjb25maWd1cmF0aW9uUHJvY2Vzc29yLm93bmVySWQgPz8gJycpO1xuICAgIGxldCBmdW5jdGlvblRvRXhlY3V0ZSA9IHRoaXMuZXhlY3V0ZWRGdW5jdGlvbnNbc2NvcGUgKyBjb25maWd1cmF0aW9uUHJvY2Vzc29yLmFwaU5hbWVdO1xuXG4gICAgaWYgKCFmdW5jdGlvblRvRXhlY3V0ZSkge1xuICAgICAgY29uc3Qgc2NyaXB0ID0gYCR7Y29uZmlndXJhdGlvblByb2Nlc3Nvci5zY3JpcHR9XFxucmV0dXJuIHRyYW5zZm9ybTtgO1xuICAgICAgY29uc3Qgc291cmNlTWFwID0gYFxcbi8vIyBzb3VyY2VVUkw9JHtzY29wZSA/IHNjb3BlICsgJy8nIDogJyd9JHtjb25maWd1cmF0aW9uUHJvY2Vzc29yLmFwaU5hbWV9LmpzYDtcbiAgICAgIGZ1bmN0aW9uVG9FeGVjdXRlID0gbmV3IEZ1bmN0aW9uKHNjcmlwdCArIHNvdXJjZU1hcCkoKSBhcyBDb25maWd1cmF0aW9uUHJvY2Vzc29yU2NyaXB0Rm47XG4gICAgICB0aGlzLmV4ZWN1dGVkRnVuY3Rpb25zW3Njb3BlICsgY29uZmlndXJhdGlvblByb2Nlc3Nvci5hcGlOYW1lXSA9IGZ1bmN0aW9uVG9FeGVjdXRlO1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvblRvRXhlY3V0ZSh7XG4gICAgICByZXF1ZXN0LFxuICAgICAgaW5wdXREYXRhLFxuICAgICAgZmxvd1N0b3JlOiB0aGlzLmZsb3dTdG9yZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVSZXF1ZXN0SWQoc2NvcGU6IFVJVGVtcGxhdGVUeXBlLCBzZWxlY3Rvck5hbWU6IHN0cmluZywgaW5wdXREYXRhPzogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgaW5wdXREYXRhSGFzaCA9IFVVSUQuaGV4KEpTT04uc3RyaW5naWZ5KGlucHV0RGF0YSkgfHwgJycpLnNsaWNlKDAsIDgpO1xuICAgIHJldHVybiBgJHtzY29wZX0vJHtzZWxlY3Rvck5hbWV9LyR7aW5wdXREYXRhSGFzaH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0RXhlY3V0aW9uUmVxdWVzdERUTygpOiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPIHtcbiAgICBjb25zdCByZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPID0ge1xuICAgICAgYWN0aW9uczogW10sXG4gICAgICBzZWxlY3RvcnM6IHt9LFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5nZXRGbG93U2FmZSgpLnByb3BlcnRpZXMuc3RhbmRhbG9uZSkge1xuICAgICAgcmV0dXJuIHJlcXVlc3Q7XG4gICAgfVxuXG4gICAgY29uc3QgZmxvd0VuZ2luZVRlbXBsYXRlSWQgPSB0aGlzLmdldE93bmVySWRCeVNjb3BlKFVJVGVtcGxhdGVUeXBlLkZMT1dfRU5HSU5FKTtcblxuICAgIHJlcXVlc3QuYWN0aW9ucz8ucHVzaCh7XG4gICAgICBhcGlOYW1lOiAnVVBEQVRFX0NPTlRFWFRfUFJPUEVSVElFUycsXG4gICAgICBvd25lcklkOiBmbG93RW5naW5lVGVtcGxhdGVJZCxcbiAgICAgIGlucHV0RGF0YTogdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCkucHJvcGVydGllcyxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXF1ZXN0O1xuICB9XG59XG4iXX0=
|
521
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9zZXJ2aWNlcy9mbG93LXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFJTCx3QkFBd0IsRUFHeEIsMkJBQTJCLEVBQzNCLFVBQVUsRUFRVixTQUFTLEVBRVQsY0FBYyxFQUNkLElBQUksR0FDTCxNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLE1BQU0sRUFDTixVQUFVLEVBQ1YsYUFBYSxFQUNiLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLFFBQVEsRUFDUixHQUFHLEVBQ0gsSUFBSSxFQUVKLEVBQUUsRUFDRixLQUFLLEVBQ0wsV0FBVyxFQUNYLE9BQU8sRUFDUCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEVBQ0gsVUFBVSxHQUNYLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RELE9BQU8sRUFBcUIsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUxRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RE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QyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RSxPQUFPLEdBQUcsS0FBSyxJQUFJLFlBQVksSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRU8sNkJBQTZCO1FBQ25DLE1BQU0sT0FBTyxHQUFpQztZQUM1QyxPQUFPLEVBQUUsRUFBRTtZQUNYLFNBQVMsRUFBRSxFQUFFO1NBQ2QsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDNUMsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFFRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFaEYsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7WUFDcEIsT0FBTyxFQUFFLDJCQUEyQjtZQUNwQyxPQUFPLEVBQUUsb0JBQW9CO1lBQzdCLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVU7U0FDcEQsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7NkdBNXFCVSxnQkFBZ0IsdVNBK0JMLGtCQUFrQjtpSEEvQjdCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVOzswQkFnQ04sUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uUHJvY2Vzc29yc0FwaVNlcnZpY2UsIEZsb3dTdGF0ZUFwaVNlcnZpY2UsIFF1b3RlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UsIFRvYXN0VHlwZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQ2hhcmdlLFxuICBDb21waWxlZFByaWNlUGxhbixcbiAgQ29uZmlndXJhdGlvbkNvbnRleHQsXG4gIENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZSxcbiAgQ29uZmlndXJhdGlvblByb2Nlc3NvcixcbiAgQ29uZmlndXJhdGlvblByb2Nlc3NvclNjcmlwdEZuLFxuICBDb25maWd1cmF0aW9uUHJvY2Vzc29yVHlwZXMsXG4gIEVudGl0eVV0aWwsXG4gIEZsb3csXG4gIEZsb3dTdGF0ZSxcbiAgRmxvd1N0YXRlRXhlY3V0YWJsZURUTyxcbiAgRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdCxcbiAgRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyxcbiAgRmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0LFxuICBGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlLFxuICBpc0RlZmluZWQsXG4gIE1ldHJpY1J1bGUsXG4gIFVJVGVtcGxhdGVUeXBlLFxuICBVVUlELFxufSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IGFzc2lnbiwgY2xvbmVEZWVwLCBEaWN0aW9uYXJ5LCBmbGF0dGVuIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgYnVmZmVyLFxuICBjYXRjaEVycm9yLFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGZpbHRlcixcbiAgZmluYWxpemUsXG4gIGZvcmtKb2luLFxuICBtYXAsXG4gIG5vb3AsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBzaGFyZSxcbiAgc2hhcmVSZXBsYXksXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG4gIHRocm93RXJyb3IsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbW9kdWxlcyc7XG5pbXBvcnQgeyBGbG93Q3VzdG9taXphdGlvbiwgRkxPV19DVVNUT01JWkFUSU9OIH0gZnJvbSAnLi4vdHlwZXMvZmxvdy1jdXN0b21pemF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEZsb3dTdGF0ZVN1YnNjcmlwdGlvbk9wdGlvbnMsIEZsb3dTdG9yZSB9IGZyb20gJy4uL3R5cGVzL2Zsb3ctc3RhdGUudHlwZXMnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93SW5mb1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctaW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFF1b3RlRHJhZnRTZXJ2aWNlIH0gZnJvbSAnLi9xdW90ZS1kcmFmdC5zZXJ2aWNlJztcblxudHlwZSBQcm9jZXNzb3JzTWFwID0gUGFydGlhbDx7XG4gIFtvd25lcklkOiBzdHJpbmddOiB7XG4gICAgW2FwaU5hbWU6IHN0cmluZ106IENvbmZpZ3VyYXRpb25Qcm9jZXNzb3I7XG4gIH07XG59PjtcblxudHlwZSBTdWJzY3JpcHRpb24gPSB7XG4gIHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE87XG4gIGRhdGEkOiBCZWhhdmlvclN1YmplY3Q8dW5rbm93bj47XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvd1N0YXRlU2VydmljZSB7XG4gIHB1YmxpYyBjaGFyZ2VzJDogT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PENoYXJnZT4+O1xuICBwdWJsaWMgcHJpY2VQbGFucyQ6IE9ic2VydmFibGU8RGljdGlvbmFyeTxDb21waWxlZFByaWNlUGxhbj4+O1xuICBwdWJsaWMgYWN0aXZlTWV0cmljcyQ6IE9ic2VydmFibGU8TWV0cmljUnVsZVtdPjtcbiAgcHVibGljIGlzUHJpY2VMaXN0TG9ja2VkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IE5PVF9JTklUSUFMSVpFRCA9IFN5bWJvbCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IEVYRUNVVElPTl9CVUZGRVJfVElNRSA9IDEwMDtcblxuICBwcml2YXRlIGV4ZWN1dGVkRnVuY3Rpb25zOiBEaWN0aW9uYXJ5PENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JTY3JpcHRGbj4gPSB7fTtcbiAgcHJpdmF0ZSBzdGF0ZUlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgX2hhc1N0YXRlZnVsVW5zYXZlZENoYW5nZXMgPSB0cnVlO1xuICBwcml2YXRlIHByb2Nlc3NvcnM6IFByb2Nlc3NvcnNNYXAgPSB7fTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBTdWJzY3JpcHRpb24+ID0ge307XG4gIHByaXZhdGUgZmxvd1N0b3JlOiBGbG93U3RvcmUgPSB7fTtcblxuICBwcml2YXRlIGV4ZWN1dGlvbkluUHJvZ3Jlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgc3RhdGVmdWxSZXF1ZXN0U3RyZWFtJCA9IG5ldyBTdWJqZWN0PEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8+KCk7XG4gIHByaXZhdGUgc3RhdGVmdWxFeGVjdXRpb25SZXF1ZXN0JDogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+O1xuXG4gIHByaXZhdGUgY2xlYW51cCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93Q29uZmlndXJhdGlvbjogRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvY2Vzc29yc0FwaVNlcnZpY2U6IENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dTdGF0ZUFwaVNlcnZpY2U6IEZsb3dTdGF0ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZUFwaVNlcnZpY2U6IFF1b3RlQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkxPV19DVVNUT01JWkFUSU9OKSBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlPzogRmxvd0N1c3RvbWl6YXRpb24sXG4gICkge1xuICAgIHRoaXMuc3RhdGVmdWxFeGVjdXRpb25SZXF1ZXN0JCA9IHRoaXMuaW5pdEJ1ZmZlcmVkUmVxdWVzdCQoKTtcblxuICAgIC8qXG4gICAgICBJbiBzdGF0ZWxlc3MgbW9kZSB3YXRjaCBRdW90ZURyYWZ0IGNoYW5nZXMgYW5kIGNhbGwgZXhlY3V0ZVJlcXVlc3Qgc28gdGhhdFxuICAgICAgYWxsIHN1YnNjcmlwdGlvbnMgZ2V0IHRoZWlyIHVwZGF0ZXMgYWNjb3JkaW5nIHRvIHVwZGF0ZWQgUXVvdGVEcmFmdFxuICAgICovXG4gICAgdGhpcy5pc0luaXRpYWxpemVkJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMuZ2V0Rmxvd1NhZmUoKS5wcm9wZXJ0aWVzLnN0YXRlZnVsKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZmxvd0NvbmZpZ3VyYXRpb24udXBkYXRlZCQpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5leGVjdXRlUmVxdWVzdCQoe30sIHRydWUpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuY2hhcmdlcyQgPSB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93JC5waXBlKFxuICAgICAgZmlsdGVyKGlzRGVmaW5lZCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5mbG93SW5mb1NlcnZpY2UuaXNMZWdhY3kpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JC5waXBlKG1hcChxdW90ZURyYWZ0ID0+IHF1b3RlRHJhZnQuY2hhcmdlcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnN1YnNjcmliZSQ8RGljdGlvbmFyeTxDaGFyZ2U+PihVSVRlbXBsYXRlVHlwZS5GTE9XX0VOR0lORSwgJ0NIQVJHRVMnLCBudWxsLCB7XG4gICAgICAgICAgICBjb2xkOiB0cnVlLFxuICAgICAgICAgIH0pLnBpcGUobWFwKHJlc3BvbnNlID0+IChyZXNwb25zZS5zdWNjZXNzID8gcmVzcG9uc2UucmVzdWx0IDoge30pKSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgKTtcbiAgICB0aGlzLmNoYXJnZXMkLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5wcmljZVBsYW5zJCA9IHRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3ckLnBpcGUoXG4gICAgICBmaWx0ZXIoaXNEZWZpbmVkKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZsb3dJbmZvU2VydmljZS5pc0xlZ2FjeSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQkLnBpcGUobWFwKHF1b3RlRHJhZnQgPT4gcXVvdGVEcmFmdC5wcmljZVBsYW5zKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc3Vic2NyaWJlJDxEaWN0aW9uYXJ5PENvbXBpbGVkUHJpY2VQbGFuPj4oVUlUZW1wbGF0ZVR5cGUuRkxPV19FTkdJTkUsICdQUklDRV9QTEFOUycsIG51bGwsIHtcbiAgICAgICAgICAgIGNvbGQ6IHRydWUsXG4gICAgICAgICAgfSkucGlwZShtYXAocmVzcG9uc2UgPT4gKHJlc3BvbnNlLnN1Y2Nlc3MgPyByZXNwb25zZS5yZXN1bHQgOiB7fSkpKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuICAgIHRoaXMucHJpY2VQbGFucyQuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmFjdGl2ZU1ldHJpY3MkID0gdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdyQucGlwZShcbiAgICAgIGZpbHRlcihpc0RlZmluZWQpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZmxvd0luZm9TZXJ2aWNlLmlzTGVnYWN5KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCQucGlwZShtYXAocXVvdGVEcmFmdCA9PiBxdW90ZURyYWZ0LmFjdGl2ZU1ldHJpY3MpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zdWJzY3JpYmUkPE1ldHJpY1J1bGVbXT4oVUlUZW1wbGF0ZVR5cGUuRkxPV19FTkdJTkUsICdBQ1RJVkVfTUVUUklDUycsIG51bGwsIHtcbiAgICAgICAgICAgIGNvbGQ6IHRydWUsXG4gICAgICAgICAgfSkucGlwZShtYXAocmVzcG9uc2UgPT4gKHJlc3BvbnNlLnN1Y2Nlc3MgPyByZXNwb25zZS5yZXN1bHQgOiBbXSkpKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuICAgIHRoaXMuYWN0aXZlTWV0cmljcyQuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmlzUHJpY2VMaXN0TG9ja2VkJCA9IHRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3ckLnBpcGUoXG4gICAgICBmaWx0ZXIoaXNEZWZpbmVkKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZsb3dJbmZvU2VydmljZS5pc0xlZ2FjeSkge1xuICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc3Vic2NyaWJlJDxib29sZWFuPihVSVRlbXBsYXRlVHlwZS5GTE9XX0VOR0lORSwgJ0lTX1BSSUNFX0xJU1RfTE9DS0VEJywgbnVsbCwge1xuICAgICAgICAgICAgY29sZDogdHJ1ZSxcbiAgICAgICAgICB9KS5waXBlKG1hcChyZXNwb25zZSA9PiAocmVzcG9uc2Uuc3VjY2VzcyA/IHJlc3BvbnNlLnJlc3VsdCA6IGZhbHNlKSkpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICk7XG4gICAgdGhpcy5pc1ByaWNlTGlzdExvY2tlZCQuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdFByb2Nlc3NvcnMkKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGF0ZWZ1bCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmluaXRTdGF0ZWZ1bCQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0U3RhdGVsZXNzJCgpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNsZWFudXAoKTogdm9pZCB7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLnN1YnNjcmlwdGlvbnMpLmZvckVhY2goKHsgZGF0YSQgfSkgPT4gZGF0YSQuY29tcGxldGUoKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0ge307XG5cbiAgICBpZiAodGhpcy5zdGF0ZUlkJC52YWx1ZSkge1xuICAgICAgdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLmNhbmNlbCh0aGlzLnN0YXRlSWQkLnZhbHVlKS5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuc3RhdGVJZCQubmV4dChudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLnByb2Nlc3NvcnMgPSB7fTtcbiAgICB0aGlzLmZsb3dTdG9yZSA9IHt9O1xuICAgIHRoaXMuY2xlYW51cCQubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNVbnNhdmVkQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGbG93U2FmZSgpLnByb3BlcnRpZXMuc3RhdGVmdWxcbiAgICAgID8gdGhpcy5faGFzU3RhdGVmdWxVbnNhdmVkQ2hhbmdlc1xuICAgICAgOiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc1Vuc2F2ZWRDaGFuZ2VzO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZUlkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnN0YXRlSWQkLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0V4ZWN1dGlvbkluUHJvZ3Jlc3MkKCkge1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGlvbkluUHJvZ3Jlc3MkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGlzSW5pdGlhbGl6ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLnN0YXRlSWQkLCB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQkXSkucGlwZShcbiAgICAgIG1hcCh2YWx1ZXMgPT4gdmFsdWVzLnNvbWUoQm9vbGVhbikpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgaXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnN0YXRlSWQkLnZhbHVlKSB8fCB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBwdWJsaWMgZXhlY3V0ZSQoXG4gICAgc2NvcGU6IFVJVGVtcGxhdGVUeXBlLFxuICAgIGV4ZWM6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3QsXG4gICk6IE9ic2VydmFibGU8Rmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0WydzZWxlY3RvcnMnXT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmV4ZWNUb1JlcXVlc3Qoc2NvcGUsIGV4ZWMpO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3QkKHJlcXVlc3QpLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgLy8gS2VlcCBvbmx5IHJlcXVlc3RlZCByZXN1bHRzXG4gICAgICAgIGNvbnN0IGFjdHVhbFNlbGVjdG9ycyA9IE9iamVjdC5lbnRyaWVzKHJlc3VsdC5zZWxlY3RvcnMpLnJlZHVjZShcbiAgICAgICAgICAodHJ1bms6IFJlY29yZDxzdHJpbmcsIEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U+LCBbcmVxdWVzdElkLCByZXN1bHRdKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXhlYy5zZWxlY3RvcnM/LltyZXF1ZXN0SWRdKSB7XG4gICAgICAgICAgICAgIHRydW5rW3JlcXVlc3RJZF0gPSByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1bms7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7fSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gYWN0dWFsU2VsZWN0b3JzO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwYXRjaCQoc2NvcGU6IFVJVGVtcGxhdGVUeXBlLCBhY3Rpb246IHN0cmluZywgaW5wdXREYXRhPzogdW5rbm93bik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGV4ZWM6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3QgPSB7XG4gICAgICBhY3Rpb25zOiBbeyBuYW1lOiBhY3Rpb24sIGlucHV0RGF0YSB9XSxcbiAgICB9O1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmV4ZWNUb1JlcXVlc3Qoc2NvcGUsIGV4ZWMpO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3QkKHJlcXVlc3QpLnBpcGUobWFwKG5vb3ApKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3QkPFJlc3BvbnNlID0gdW5rbm93bj4oXG4gICAgc2NvcGU6IFVJVGVtcGxhdGVUeXBlLFxuICAgIHNlbGVjdG9yTmFtZTogc3RyaW5nLFxuICAgIGlucHV0RGF0YT86IHVua25vd24sXG4gICk6IE9ic2VydmFibGU8Rmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZTxSZXNwb25zZT4+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSB0aGlzLmdlbmVyYXRlUmVxdWVzdElkKHNjb3BlLCBzZWxlY3Rvck5hbWUsIGlucHV0RGF0YSk7XG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuZXhlY1RvUmVxdWVzdChzY29wZSwge1xuICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgIFtyZXF1ZXN0SWRdOiB7XG4gICAgICAgICAgbmFtZTogc2VsZWN0b3JOYW1lLFxuICAgICAgICAgIGlucHV0RGF0YSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUmVxdWVzdCQocmVxdWVzdCkucGlwZShcbiAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZS5zZWxlY3RvcnNbcmVxdWVzdElkXSBhcyBGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlPFJlc3BvbnNlPiksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJzY3JpYmUkPFJlc3BvbnNlID0gdW5rbm93bj4oXG4gICAgc2NvcGU6IFVJVGVtcGxhdGVUeXBlLFxuICAgIHNlbGVjdG9yTmFtZTogc3RyaW5nLFxuICAgIGlucHV0RGF0YT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IEZsb3dTdGF0ZVN1YnNjcmlwdGlvbk9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8Rmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZTxSZXNwb25zZT4+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSB0aGlzLmdlbmVyYXRlUmVxdWVzdElkKHNjb3BlLCBzZWxlY3Rvck5hbWUsIGlucHV0RGF0YSk7XG5cbiAgICBsZXQgc3Vic2NyaXB0aW9uID0gdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF07XG5cbiAgICBpZiAoIXN1YnNjcmlwdGlvbikge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuZXhlY1RvUmVxdWVzdChzY29wZSwge1xuICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICBbcmVxdWVzdElkXToge1xuICAgICAgICAgICAgbmFtZTogc2VsZWN0b3JOYW1lLFxuICAgICAgICAgICAgaW5wdXREYXRhLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgc3Vic2NyaXB0aW9uID0ge1xuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBkYXRhJDogbmV3IEJlaGF2aW9yU3ViamVjdDx1bmtub3duPih0aGlzLk5PVF9JTklUSUFMSVpFRCksXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnNbcmVxdWVzdElkXSA9IHN1YnNjcmlwdGlvbjtcblxuICAgICAgaWYgKCFvcHRpb25zPy5jb2xkKSB7XG4gICAgICAgIHRoaXMuZXhlY3V0ZVJlcXVlc3QkKHJlcXVlc3QpLnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdWJzY3JpcHRpb24uZGF0YSQucGlwZShcbiAgICAgIGZpbHRlcihkYXRhID0+IGRhdGEgIT0gdGhpcy5OT1RfSU5JVElBTElaRUQpLFxuICAgICAgbWFwKGRhdGEgPT4gZGF0YSBhcyBGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlPFJlc3BvbnNlPiksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF0/LmRhdGEkLm9ic2VydmVkKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNhdmUkKCk6IE9ic2VydmFibGU8eyBxdW90ZUlkOiBzdHJpbmcgfT4ge1xuICAgIGlmICh0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGF0ZWZ1bCkge1xuICAgICAgaWYgKHRoaXMuc3RhdGVJZCQudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxvd1N0YXRlQXBpU2VydmljZS5zYXZlKHRoaXMuc3RhdGVJZCQudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuICAgICAgaWYgKHF1b3RlRHJhZnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVvdGVBcGlTZXJ2aWNlLnVwc2VydFF1b3RlKHF1b3RlRHJhZnQpLnBpcGUoXG4gICAgICAgICAgdGFwKCh7IGNvbmZpZ3VyYXRpb25JZCB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZSh7IHByb3BlcnRpZXM6IHsgQ29uZmlndXJhdGlvbklkOiBjb25maWd1cmF0aW9uSWQgfSB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb2YoeyBxdW90ZUlkOiAnJyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQkKCk6IE9ic2VydmFibGU8eyBxdW90ZUlkOiBzdHJpbmcgfT4ge1xuICAgIGlmICh0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGF0ZWZ1bCkge1xuICAgICAgaWYgKHRoaXMuc3RhdGVJZCQudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxvd1N0YXRlQXBpU2VydmljZS5zdWJtaXQodGhpcy5zdGF0ZUlkJC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgICBpZiAocXVvdGVEcmFmdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5xdW90ZUFwaVNlcnZpY2Uuc3VibWl0UXVvdGUocXVvdGVEcmFmdCkucGlwZShcbiAgICAgICAgICB0YXAoKHsgY29uZmlndXJhdGlvbklkIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UudXBkYXRlKHsgcHJvcGVydGllczogeyBDb25maWd1cmF0aW9uSWQ6IGNvbmZpZ3VyYXRpb25JZCB9IH0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvZih7IHF1b3RlSWQ6ICcnIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEZsb3dTdG9yZSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuZmxvd1N0b3JlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPd25lcklkQnlTY29wZShzY29wZTogVUlUZW1wbGF0ZVR5cGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IG93bmVySWQgPSB0aGlzLmZsb3dJbmZvU2VydmljZS50ZW1wbGF0ZXNbc2NvcGVdPy5pZDtcbiAgICBpZiAoIW93bmVySWQpIHtcbiAgICAgIHRocm93IGBPd25lcklkIGlzIG5vdCBmb3VuZCBmb3Igc2NvcGUgJHtzY29wZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBvd25lcklkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTY29wZUJ5T3duZXJJZChpZDogc3RyaW5nKTogVUlUZW1wbGF0ZVR5cGUgfCB1bmRlZmluZWQge1xuICAgIGZvciAoY29uc3QgdGVtcGxhdGUgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLmZsb3dJbmZvU2VydmljZS50ZW1wbGF0ZXMpKSB7XG4gICAgICBpZiAodGVtcGxhdGUuaWQgPT09IGlkKSB7XG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZS50eXBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY1RvUmVxdWVzdChzY29wZTogVUlUZW1wbGF0ZVR5cGUsIGV4ZWM6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3QpOiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPIHtcbiAgICBjb25zdCBvd25lcklkID0gdGhpcy5nZXRPd25lcklkQnlTY29wZShzY29wZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uczogZXhlYy5hY3Rpb25zPy5tYXAoYWN0aW9uID0+ICh7IGFwaU5hbWU6IGFjdGlvbi5uYW1lLCBvd25lcklkLCBpbnB1dERhdGE6IGFjdGlvbi5pbnB1dERhdGEgPz8ge30gfSkpLFxuICAgICAgc2VsZWN0b3JzOlxuICAgICAgICBleGVjLnNlbGVjdG9ycyAmJlxuICAgICAgICBPYmplY3QuZW50cmllcyhleGVjLnNlbGVjdG9ycykucmVkdWNlKFxuICAgICAgICAgICh0cnVuazogUmVjb3JkPHN0cmluZywgRmxvd1N0YXRlRXhlY3V0YWJsZURUTz4sIFtrZXksIHNlbGVjdG9yXSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnRydW5rLFxuICAgICAgICAgICAgW2tleV06IHsgYXBpTmFtZTogc2VsZWN0b3IubmFtZSwgb3duZXJJZCwgaW5wdXREYXRhOiBzZWxlY3Rvci5pbnB1dERhdGEgPz8ge30gfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGV4ZWN1dGVSZXF1ZXN0JChcbiAgICByZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPLFxuICAgIGZvcmNlU3Vic2NyaXB0aW9uczogYm9vbGVhbiA9IGZhbHNlLFxuICApOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdD4ge1xuICAgIGNvbnN0IGZ1bGxSZXF1ZXN0ID0gY2xvbmVEZWVwKHJlcXVlc3QpO1xuICAgIGlmIChmdWxsUmVxdWVzdC5hY3Rpb25zPy5sZW5ndGggfHwgZm9yY2VTdWJzY3JpcHRpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiBPYmplY3QudmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9ucykpIHtcbiAgICAgICAgZnVsbFJlcXVlc3Quc2VsZWN0b3JzID0gYXNzaWduKGZ1bGxSZXF1ZXN0LnNlbGVjdG9ycywgc3Vic2NyaXB0aW9uLnJlcXVlc3Quc2VsZWN0b3JzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBleGVjdXRpb24kID0gdGhpcy5nZXRGbG93U2FmZSgpLnByb3BlcnRpZXMuc3RhdGVmdWxcbiAgICAgID8gdGhpcy5leGVjdXRlU3RhdGVmdWwkKGZ1bGxSZXF1ZXN0KVxuICAgICAgOiB0aGlzLmV4ZWN1dGVTdGF0ZWxlc3MkKGZ1bGxSZXF1ZXN0KTtcblxuICAgIHJldHVybiBleGVjdXRpb24kLnBpcGUodGFwKHJlc3VsdCA9PiB0aGlzLmhhbmRsZVNlbGVjdG9yc1Jlc3BvbnNlKHJlc3VsdC5zZWxlY3RvcnMpKSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNlbGVjdG9yc1Jlc3BvbnNlKHNlbGVjdG9yczogUmVjb3JkPHN0cmluZywgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZTx1bmtub3duPj4pOiB2b2lkIHtcbiAgICBPYmplY3QuZW50cmllcyhzZWxlY3RvcnMpLmZvckVhY2goKFtyZXF1ZXN0SWQsIHNlbGVjdG9yUmVzdWx0XSkgPT4ge1xuICAgICAgaWYgKCFzZWxlY3RvclJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiBUb2FzdFR5cGUuZXJyb3IsIHN1bW1hcnk6IHNlbGVjdG9yUmVzdWx0LmVycm9yTWVzc2FnZSB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uJCA9IHRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdPy5kYXRhJDtcbiAgICAgIGlmIChzdWJzY3JpcHRpb24kICYmIHN1YnNjcmlwdGlvbiQudmFsdWUgIT09IHNlbGVjdG9yUmVzdWx0KSB7XG4gICAgICAgIHN1YnNjcmlwdGlvbiQubmV4dChzZWxlY3RvclJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdGF0ZWZ1bCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgLy8gU3Vic2NyaXB0aW9uc1xuICAgIHRoaXMuc3Vic2NyaWJlJDxDb25maWd1cmF0aW9uQ29udGV4dD4oVUlUZW1wbGF0ZVR5cGUuRkxPV19FTkdJTkUsICdDT05URVhUJywgbnVsbCwgeyBjb2xkOiB0cnVlIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUocmVzcG9uc2UucmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5jbGVhbnVwJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBjb25zdCBwcm9jZXNzb3JzTGlzdCA9IGZsYXR0ZW4oT2JqZWN0LnZhbHVlcyh0aGlzLnByb2Nlc3NvcnMpLm1hcChvd25lck1hcCA9PiBPYmplY3QudmFsdWVzKG93bmVyTWFwID8/IHt9KSkpO1xuICAgIGNvbnN0IHByb2Nlc3NvcnMgPSBwcm9jZXNzb3JzTGlzdC5sZW5ndGggPyBwcm9jZXNzb3JzTGlzdCA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzZWxlY3RvcnMgPSBPYmplY3QudmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9ucylcbiAgICAgIC5tYXAoKHsgcmVxdWVzdCB9KSA9PiByZXF1ZXN0LnNlbGVjdG9ycylcbiAgICAgIC5maWx0ZXIoaXNEZWZpbmVkKVxuICAgICAgLnJlZHVjZSgodHJ1bmssIHNlbGVjdG9ycykgPT4gKHsgLi4udHJ1bmssIC4uLnNlbGVjdG9ycyB9KSwge30pO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmdldERlZmF1bHRFeGVjdXRpb25SZXF1ZXN0RFRPKCk7XG5cbiAgICByZXR1cm4gdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlXG4gICAgICAuaW5pdCh7XG4gICAgICAgIHF1b3RlSWQ6IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpLmhlYWRlcklkLFxuICAgICAgICBwYXJhbXM6IHRoaXMuZmxvd0luZm9TZXJ2aWNlLnBhcmFtcyA/PyB7fSxcbiAgICAgICAgYWN0aW9uc092ZXJyaWRlOiBwcm9jZXNzb3JzPy5maWx0ZXIocHJvY2Vzc29yID0+IHByb2Nlc3Nvci50eXBlID09PSBDb25maWd1cmF0aW9uUHJvY2Vzc29yVHlwZXMuQUNUSU9OKSxcbiAgICAgICAgc2VsZWN0b3JzT3ZlcnJpZGU6IHByb2Nlc3NvcnM/LmZpbHRlcihwcm9jZXNzb3IgPT4gcHJvY2Vzc29yLnR5cGUgPT09IENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JUeXBlcy5TRUxFQ1RPUiksXG4gICAgICAgIHNlbGVjdG9yczogeyAuLi5zZWxlY3RvcnMsIC4uLnJlcXVlc3Quc2VsZWN0b3JzIH0sXG4gICAgICAgIGFjdGlvbnM6IHJlcXVlc3QuYWN0aW9ucyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh7IHN0YXRlSWQsIHNlbGVjdG9ycyB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVTZWxlY3RvcnNSZXNwb25zZShzZWxlY3RvcnMpO1xuICAgICAgICAgIHRoaXMuc3RhdGVJZCQubmV4dChzdGF0ZUlkKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0QnVmZmVyZWRSZXF1ZXN0JCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZWZ1bFJlcXVlc3RTdHJlYW0kLnBpcGUoXG4gICAgICBidWZmZXIodGhpcy5zdGF0ZWZ1bFJlcXVlc3RTdHJlYW0kLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuRVhFQ1VUSU9OX0JVRkZFUl9USU1FKSkpLFxuICAgICAgc3dpdGNoTWFwKHJlcXVlc3RzID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlSWQkLnZhbHVlKSB7XG4gICAgICAgICAgdGhyb3cgJ1N0YXRlZnVsIHNlc3Npb24gaXMgbm90IGluaXRpYWxpemVkJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG1lcmdlIGJ1ZmZlcmVkIHJlcXVlc3RzXG4gICAgICAgIGNvbnN0IHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8gPSB7XG4gICAgICAgICAgYWN0aW9uczogcmVxdWVzdHMuZmxhdE1hcCgoeyBhY3Rpb25zIH0pID0+IGFjdGlvbnMpLmZpbHRlcihpc0RlZmluZWQpLFxuICAgICAgICAgIHNlbGVjdG9yczogcmVxdWVzdHNcbiAgICAgICAgICAgIC5tYXAoKHsgc2VsZWN0b3JzIH0pID0+IHNlbGVjdG9ycylcbiAgICAgICAgICAgIC5maWx0ZXIoaXNEZWZpbmVkKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBzZWxlY3RvcnNNYXApID0+IE9iamVjdC5hc3NpZ24oYWNjLCBzZWxlY3RvcnNNYXApLCB7fSksXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5leGVjdXRpb25JblByb2dyZXNzJC5uZXh0KHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLmV4ZWN1dGUodGhpcy5zdGF0ZUlkJC52YWx1ZSwgcmVxdWVzdCk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoeyBzdGF0ZUlkIH0pID0+IHRoaXMuc3RhdGVJZCQubmV4dChzdGF0ZUlkKSksXG4gICAgICBzaGFyZSgpLFxuICAgICAgdGFwKCgpID0+IHRoaXMuZXhlY3V0aW9uSW5Qcm9ncmVzcyQubmV4dChmYWxzZSkpLFxuICAgICAgY2F0Y2hFcnJvcihlID0+IHtcbiAgICAgICAgdGhpcy5leGVjdXRpb25JblByb2dyZXNzJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU3RhdGVmdWwkKHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8pOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGlvbkluUHJvZ3Jlc3MkLnBpcGUoXG4gICAgICBmaWx0ZXIoaW5Qcm9ncmVzcyA9PiAhaW5Qcm9ncmVzcyksXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgIC8vIG1ha2Ugc3VyZSBzdHJlYW0gc3dpdGNoZXMgdG8gc3RhdGVmdWxFeGVjdXRpb25SZXF1ZXN0JCBiZWZvcmUgcHVzaGluZyBhbiBleGVjdXRpb24gcmVxdWVzdFxuICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICB0aGlzLnN0YXRlZnVsRXhlY3V0aW9uUmVxdWVzdCQsXG4gICAgICAgICAgb2YodW5kZWZpbmVkKS5waXBlKHRhcCgoKSA9PiB0aGlzLnN0YXRlZnVsUmVxdWVzdFN0cmVhbSQubmV4dChyZXF1ZXN0KSkpLFxuICAgICAgICBdKSxcbiAgICAgICksXG4gICAgICBtYXAoKFtyZXNwb25zZV0pID0+IHJlc3BvbnNlKSxcbiAgICAgIHRha2UoMSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN0YXRlbGVzcyQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgeyBoZWFkZXJJZCB9ID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCk7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaW5pdChoZWFkZXJJZCwgdGhpcy5mbG93SW5mb1NlcnZpY2UucGFyYW1zID8/IHt9KS5waXBlKFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgY29uc3QgYXNzZXRzID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5hc3NldHNTdGF0ZTtcbiAgICAgICAgaWYgKGFzc2V0cykge1xuICAgICAgICAgIHRoaXMuZmxvd1N0b3JlID0geyAuLi50aGlzLmZsb3dTdG9yZSwgYXNzZXRzIH07XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZmxvd0luZm9TZXJ2aWNlLmlzTGVnYWN5KSB7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSZXF1ZXN0JCh0aGlzLmdldERlZmF1bHRFeGVjdXRpb25SZXF1ZXN0RFRPKCkpO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jYWxjdWxhdGUkKCkpLFxuICAgICAgdGFwKCgpID0+IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuZmluYWxpemVJbml0KCkpLFxuICAgICAgbWFwKG5vb3ApLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZSQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZmxvd1N0YXRlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuICAgIGlmICghZmxvd1N0YXRlKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAgRG9uJ3QgZXhlY3V0ZSBwcm9jZWR1cmVzIHdoZW46XG4gICAgICAgICogSW5pdGlhbGl6aW5nIGEgc3RhbmRhbG9uZSBwcm9kdWN0IGNvbmZpZ3VyYXRpb24gVUksIGFzIHByb2NlZHVyZSBpcyBleGVjdXRlIGluIC9wcmljZSBjYWxsXG4gICAgICAgICogSW5pdGlhbGl6aW5nIGFuIGVtcHR5IGFjY291bnQgKGFjY291bnQgd2l0aCBubyBhc3NldHMpXG4gICAgKi9cbiAgICBjb25zdCBpc0VtcHR5QWNjb3VudE1vZGUgPVxuICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuQUNDT1VOVCAmJlxuICAgICAgIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaGFzUHJvZHVjdHMgJiZcbiAgICAgICF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc0Fzc2V0cyAmJlxuICAgICAgIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdD8uaW5pdGlhbFN0YXRlLmxlbmd0aDtcblxuICAgIGlmICh0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzU3RhbmRhbG9uZSB8fCBpc0VtcHR5QWNjb3VudE1vZGUpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uLmNhbGN1bGF0ZSQoZmxvd1N0YXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZVN0YXRlbGVzcyQocmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyk6IE9ic2VydmFibGU8Rmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0PiB7XG4gICAgdGhpcy5leGVjdXRpb25JblByb2dyZXNzJC5uZXh0KHRydWUpO1xuXG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmV4ZWN1dGVTdGF0ZWxlc3NBY3Rpb25zKHJlcXVlc3QpKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIC8qXG4gICAgICAgICAgU2tpcCBwcmljZSBjYWxjdWxhdGlvbiBpbiBjYXNlXG4gICAgICAgICAgMS4gTm8gYWN0aW9ucyBpbiB0aGUgcmVxdWVzdFxuICAgICAgICAgIDIuIEluaXRpYWxpemF0aW9uIHByb2Nlc3MgZXhlY3V0aW9uIChzdGF0ZSBub3QgaW5pdGlhbGl6ZWQgeWV0KVxuICAgICAgICAqL1xuICAgICAgICBpZiAoIXJlcXVlc3QuYWN0aW9ucz8ubGVuZ3RoIHx8ICF0aGlzLmlzSW5pdGlhbGl6ZWQoKSkge1xuICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZSQoKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5leGVjdXRlU3RhdGVsZXNzU2VsZWN0b3JzKHJlcXVlc3QpKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmV4ZWN1dGlvbkluUHJvZ3Jlc3MkLm5leHQoZmFsc2UpKSxcbiAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XG4gICAgICAgIHRoaXMuZXhlY3V0aW9uSW5Qcm9ncmVzcyQubmV4dChmYWxzZSk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZVN0YXRlbGVzc0FjdGlvbnMocmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0IHx8ICFyZXF1ZXN0LmFjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBmbG93U3RhdGUgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgcmVxdWVzdC5hY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZsb3dTdGF0ZSA9IHRoaXMuZXhlY3V0ZUFjdGlvblNjcmlwdChmbG93U3RhdGUsIGFjdGlvbikgPz8gZmxvd1N0YXRlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5hZGQoeyBzZXZlcml0eTogVG9hc3RUeXBlLmVycm9yLCBzdW1tYXJ5OiBTdHJpbmcoZSkgfSk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnVwZGF0ZVF1b3RlRHJhZnQoZmxvd1N0YXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZVN0YXRlbGVzc1NlbGVjdG9ycyhyZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPKTogRmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0IHtcbiAgICBpZiAoIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCkge1xuICAgICAgdGhyb3cgJ1F1b3RlRHJhZnQgaXMgbm90IGluaXRpYWxpemVkJztcbiAgICB9XG5cbiAgICBjb25zdCBmbG93U3RhdGUgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgcmV0dXJuIEVudGl0eVV0aWwuZW50cmllcyhyZXF1ZXN0LnNlbGVjdG9ycyA/PyB7fSkucmVkdWNlKFxuICAgICAgKHJlc3VsdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0LCBba2V5LCBzZWxlY3Rvcl0pID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXN1bHQuc2VsZWN0b3JzW2tleV0gPSB7XG4gICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgcmVzdWx0OiB0aGlzLmV4ZWN1dGVTZWxlY3RvclNjcmlwdChmbG93U3RhdGUsIHNlbGVjdG9yKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICByZXN1bHQuc2VsZWN0b3JzW2tleV0gPSB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogU3RyaW5nKGUpLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSxcbiAgICAgIHsgc3RhdGVJZDogJycsIHNlbGVjdG9yczoge30gfSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGbG93U2FmZSgpOiBGbG93IHtcbiAgICBpZiAoIXRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3cpIHtcbiAgICAgIHRocm93ICdGbG93IGlzIG5vdCBkZWZpbmVkJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdztcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFByb2Nlc3NvcnMkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGhhc092ZXJyaWRlcyA9IEJvb2xlYW4odGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VGVtcGxhdGVDb25maWd1cmF0aW9uUHJvY2Vzc29ycyk7XG4gICAgY29uc3QgZmxvdyA9IHRoaXMuZ2V0Rmxvd1NhZmUoKTtcblxuICAgIGlmIChmbG93LnByb3BlcnRpZXMuc3RhdGVmdWwgJiYgIWhhc092ZXJyaWRlcykge1xuICAgICAgLy8gU2tpcCBpbml0aWFsaXphdGlvbiBhcyBiYWNrZW5kIHdpbGwgdGFrZSBwcm9jZXNzb3JzIGZyb20gU0ZcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIGNvbnN0IG93bmVycyQgPSBPYmplY3QudmFsdWVzKHRoaXMuZmxvd0luZm9TZXJ2aWNlLnRlbXBsYXRlcylcbiAgICAgIC5tYXAodGVtcGxhdGUgPT4ge1xuICAgICAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbG9jYWxQcm9jZXNzb3JzJCA9XG4gICAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VGVtcGxhdGVDb25maWd1cmF0aW9uUHJvY2Vzc29ycz8uKHRlbXBsYXRlLm5hbWUpID8/IG9mKG51bGwpO1xuXG4gICAgICAgIHJldHVybiBsb2NhbFByb2Nlc3NvcnMkLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKHByb2Nlc3NvcnMgPT5cbiAgICAgICAgICAgIHByb2Nlc3NvcnMgPyBvZihwcm9jZXNzb3JzKSA6IHRoaXMucHJvY2Vzc29yc0FwaVNlcnZpY2UuZmV0Y2hDb25maWd1cmF0aW9uUHJvY2Vzc29ycyQodGVtcGxhdGUuaWQpLFxuICAgICAgICAgICksXG4gICAgICAgICAgdGFwKHByb2Nlc3NvcnMgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc29yc01hcCA9IHByb2Nlc3NvcnMucmVkdWNlKChhY2M6IFJlY29yZDxzdHJpbmcsIENvbmZpZ3VyYXRpb25Qcm9jZXNzb3I+LCBwKSA9PiB7XG4gICAgICAgICAgICAgIGFjY1twLmFwaU5hbWVdID0gcDtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzb3JzW3RlbXBsYXRlLmlkXSA9IHByb2Nlc3NvcnNNYXA7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihpc0RlZmluZWQpO1xuXG4gICAgaWYgKCFvd25lcnMkLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcmtKb2luKG93bmVycyQpLnBpcGUobWFwKG5vb3ApKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZUFjdGlvblNjcmlwdChyZXF1ZXN0OiBGbG93U3RhdGUsIGV4ZWN1dGFibGU6IEZsb3dTdGF0ZUV4ZWN1dGFibGVEVE8pOiBGbG93U3RhdGUgfCBudWxsIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uUHJvY2Vzc29yID0gdGhpcy5wcm9jZXNzb3JzW2V4ZWN1dGFibGUub3duZXJJZF0/LltleGVjdXRhYmxlLmFwaU5hbWVdO1xuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uUHJvY2Vzc29yPy5zY3JpcHQpIHtcbiAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5nZXRTY29wZUJ5T3duZXJJZChleGVjdXRhYmxlLm93bmVySWQpO1xuICAgICAgY29uc3Qgc2NvcGVUZXh0ID0gc2NvcGUgPyBgIGluICR7c2NvcGV9YCA6ICcnO1xuICAgICAgdGhyb3cgYENvbmZpZ3VyYXRpb25Qcm9jZXNzb3IgJHtleGVjdXRhYmxlLmFwaU5hbWV9JHtzY29wZVRleHR9IG5vdCBmb3VuZGA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVByb2Nlc3NvclNjcmlwdChyZXF1ZXN0LCBjb25maWd1cmF0aW9uUHJvY2Vzc29yLCBleGVjdXRhYmxlLmlucHV0RGF0YSkgYXMgRmxvd1N0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU2VsZWN0b3JTY3JpcHQocmVxdWVzdDogRmxvd1N0YXRlLCBleGVjdXRhYmxlOiBGbG93U3RhdGVFeGVjdXRhYmxlRFRPKTogdW5rbm93biB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvblByb2Nlc3NvciA9IHRoaXMucHJvY2Vzc29yc1tleGVjdXRhYmxlLm93bmVySWRdPy5bZXhlY3V0YWJsZS5hcGlOYW1lXTtcblxuICAgIGlmICghY29uZmlndXJhdGlvblByb2Nlc3Nvcj8uc2NyaXB0KSB7XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuZ2V0U2NvcGVCeU93bmVySWQoZXhlY3V0YWJsZS5vd25lcklkKTtcbiAgICAgIGNvbnN0IHNjb3BlVGV4dCA9IHNjb3BlID8gYCBpbiAke3Njb3BlfWAgOiAnJztcbiAgICAgIHRocm93IGBDb25maWd1cmF0aW9uUHJvY2Vzc29yICR7ZXhlY3V0YWJsZS5hcGlOYW1lfSR7c2NvcGVUZXh0fSBub3QgZm91bmRgO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVQcm9jZXNzb3JTY3JpcHQocmVxdWVzdCwgY29uZmlndXJhdGlvblByb2Nlc3NvciwgZXhlY3V0YWJsZS5pbnB1dERhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlUHJvY2Vzc29yU2NyaXB0KFxuICAgIHJlcXVlc3Q6IEZsb3dTdGF0ZSxcbiAgICBjb25maWd1cmF0aW9uUHJvY2Vzc29yOiBDb25maWd1cmF0aW9uUHJvY2Vzc29yLFxuICAgIGlucHV0RGF0YTogdW5rbm93bixcbiAgKTogdW5rbm93biB7XG4gICAgY29uc3Qgc2NvcGUgPSB0aGlzLmdldFNjb3BlQnlPd25lcklkKGNvbmZpZ3VyYXRpb25Qcm9jZXNzb3Iub3duZXJJZCA/PyAnJyk7XG4gICAgbGV0IGZ1bmN0aW9uVG9FeGVjdXRlID0gdGhpcy5leGVjdXRlZEZ1bmN0aW9uc1tzY29wZSArIGNvbmZpZ3VyYXRpb25Qcm9jZXNzb3IuYXBpTmFtZV07XG5cbiAgICBpZiAoIWZ1bmN0aW9uVG9FeGVjdXRlKSB7XG4gICAgICBjb25zdCBzY3JpcHQgPSBgJHtjb25maWd1cmF0aW9uUHJvY2Vzc29yLnNjcmlwdH1cXG5yZXR1cm4gdHJhbnNmb3JtO2A7XG4gICAgICBjb25zdCBzb3VyY2VNYXAgPSBgXFxuLy8jIHNvdXJjZVVSTD0ke3Njb3BlID8gc2NvcGUgKyAnLycgOiAnJ30ke2NvbmZpZ3VyYXRpb25Qcm9jZXNzb3IuYXBpTmFtZX0uanNgO1xuICAgICAgZnVuY3Rpb25Ub0V4ZWN1dGUgPSBuZXcgRnVuY3Rpb24oc2NyaXB0ICsgc291cmNlTWFwKSgpIGFzIENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JTY3JpcHRGbjtcbiAgICAgIHRoaXMuZXhlY3V0ZWRGdW5jdGlvbnNbc2NvcGUgKyBjb25maWd1cmF0aW9uUHJvY2Vzc29yLmFwaU5hbWVdID0gZnVuY3Rpb25Ub0V4ZWN1dGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uVG9FeGVjdXRlKHtcbiAgICAgIHJlcXVlc3QsXG4gICAgICBpbnB1dERhdGEsXG4gICAgICBmbG93U3RvcmU6IHRoaXMuZmxvd1N0b3JlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVJlcXVlc3RJZChzY29wZTogVUlUZW1wbGF0ZVR5cGUsIHNlbGVjdG9yTmFtZTogc3RyaW5nLCBpbnB1dERhdGE/OiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBpbnB1dERhdGFIYXNoID0gVVVJRC5oZXgoSlNPTi5zdHJpbmdpZnkoaW5wdXREYXRhKSB8fCAnJykuc2xpY2UoMCwgOCk7XG4gICAgcmV0dXJuIGAke3Njb3BlfS8ke3NlbGVjdG9yTmFtZX0vJHtpbnB1dERhdGFIYXNofWA7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRFeGVjdXRpb25SZXF1ZXN0RFRPKCk6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8gPSB7XG4gICAgICBhY3Rpb25zOiBbXSxcbiAgICAgIHNlbGVjdG9yczoge30sXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGFuZGFsb25lKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdDtcbiAgICB9XG5cbiAgICBjb25zdCBmbG93RW5naW5lVGVtcGxhdGVJZCA9IHRoaXMuZ2V0T3duZXJJZEJ5U2NvcGUoVUlUZW1wbGF0ZVR5cGUuRkxPV19FTkdJTkUpO1xuXG4gICAgcmVxdWVzdC5hY3Rpb25zPy5wdXNoKHtcbiAgICAgIGFwaU5hbWU6ICdVUERBVEVfQ09OVEVYVF9QUk9QRVJUSUVTJyxcbiAgICAgIG93bmVySWQ6IGZsb3dFbmdpbmVUZW1wbGF0ZUlkLFxuICAgICAgaW5wdXREYXRhOiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKS5wcm9wZXJ0aWVzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Injectable } from '@angular/core';
|
2
2
|
import { AccountApiService, QuoteApiService } from '@veloceapps/api';
|
3
|
-
import { ConfigurationContextMode } from '@veloceapps/core';
|
3
|
+
import { ConfigurationContextMode, QuoteDraft } from '@veloceapps/core';
|
4
4
|
import { isEqual } from 'lodash';
|
5
5
|
import { BehaviorSubject, combineLatest, noop, of, zip } from 'rxjs';
|
6
6
|
import { filter, map, shareReplay, skip, switchMap, take, tap } from 'rxjs/operators';
|
@@ -68,13 +68,19 @@ export class QuoteDraftService {
|
|
68
68
|
}
|
69
69
|
init(headerId, params) {
|
70
70
|
const ctx = this.context.resolve();
|
71
|
-
const
|
72
|
-
|
71
|
+
const isAccountMode = this.context.mode === ConfigurationContextMode.ACCOUNT;
|
72
|
+
const accountId = isAccountMode ? headerId : ctx.properties.AccountId;
|
73
|
+
return zip(accountId ? this.accountApiService.getAssetsState(accountId, params) : of(null), isAccountMode ? of(QuoteDraft.emptyQuote(ConfigurationContextMode.ACCOUNT)) : this.quoteApiService.getQuoteState(headerId, params)).pipe(tap(([assets, quote]) => {
|
73
74
|
if (assets) {
|
74
75
|
this.assetsSubj$.next(assets);
|
75
76
|
}
|
76
77
|
this.quoteSubj$.next(quote);
|
77
|
-
|
78
|
+
if (assets && isAccountMode) {
|
79
|
+
this.context.update(assets.context);
|
80
|
+
}
|
81
|
+
else {
|
82
|
+
this.context.update(quote.context);
|
83
|
+
}
|
78
84
|
}), map(() => noop()), take(1));
|
79
85
|
}
|
80
86
|
finalizeInit() {
|
@@ -178,4 +184,4 @@ QuoteDraftService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", ve
|
|
178
184
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuoteDraftService, decorators: [{
|
179
185
|
type: Injectable
|
180
186
|
}], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i2.AccountApiService }, { type: i2.QuoteApiService }]; } });
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUtZHJhZnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvc2VydmljZXMvcXVvdGUtZHJhZnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRSxPQUFPLEVBQXNCLHdCQUF3QixFQUFzQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3BILE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakYsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUduRCxNQUFNLE9BQU8saUJBQWlCO0lBUTVCLElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFXLGFBQWEsQ0FBQyxLQUFjO1FBQ3JDLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7SUFFRCxJQUFXLGlCQUFpQjtR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O1NBQ2xGO0lBQ0gsQ0FBQzs7OEdBM05VLGlCQUFpQjtrSEFBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY2NvdW50QXBpU2VydmljZSwgUXVvdGVBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7IEFjY291bnRBc3NldHNTdGF0ZSwgQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLCBMaW5lSXRlbSwgUHJpY2VTdW1tYXJ5LCBRdW90ZURyYWZ0IH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5LCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbm9vcCwgT2JzZXJ2YWJsZSwgb2YsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBza2lwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUXVvdGVEcmFmdFNlcnZpY2Uge1xuICBwcml2YXRlIHF1b3RlU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFF1b3RlRHJhZnQgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBhc3NldHNTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QWNjb3VudEFzc2V0c1N0YXRlIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVzZXRTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgaXNJbml0aWFsaXplZFN1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgaW5pdGlhbEN1cnJlbnRTdGF0ZTogTGluZUl0ZW1bXSA9IFtdO1xuICBwcml2YXRlIF9oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgaXNJbml0aWFsaXplZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbml0aWFsaXplZFN1YmokLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIHB1YmxpYyBnZXQgaXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0luaXRpYWxpemVkU3ViaiQuZ2V0VmFsdWUoKTtcbiAgfVxuICBwdWJsaWMgc2V0IGlzSW5pdGlhbGl6ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5pc0luaXRpYWxpemVkU3ViaiQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBoYXNVbnNhdmVkQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGFzVW5zYXZlZENoYW5nZXM7XG4gIH1cbiAgcHVibGljIHNldCBoYXNVbnNhdmVkQ2hhbmdlcyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2hhc1Vuc2F2ZWRDaGFuZ2VzID0gdmFsdWU7XG5cbiAgICBpZiAoIXRoaXMuX2hhc1Vuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluaXRpYWxDdXJyZW50U3RhdGUgPSB0aGlzLnF1b3RlRHJhZnQ/LmN1cnJlbnRTdGF0ZSA/PyBbXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1Byb2R1Y3RzJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZVN1YmokLnBpcGUobWFwKCgpID0+IHRoaXMuaGFzUHJvZHVjdHMpKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGhhc1Byb2R1Y3RzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMucXVvdGVTdWJqJC52YWx1ZT8uY3VycmVudFN0YXRlLmxlbmd0aCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0Fzc2V0cyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXRzU3ViaiQucGlwZShtYXAoKCkgPT4gdGhpcy5oYXNBc3NldHMpKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGhhc0Fzc2V0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLmFzc2V0c1N1YmokLnZhbHVlPy5jdXJyZW50U3RhdGUubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXNzZXRzU3RhdGUoKTogQWNjb3VudEFzc2V0c1N0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXRzU3ViaiQudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQkID0gdGhpcy5yZXNldFN1YmokLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dDogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY2NvdW50QXBpU2VydmljZTogQWNjb3VudEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZUFwaVNlcnZpY2U6IFF1b3RlQXBpU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkU3ViaiRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoaXNJbml0aWFsaXplZCA9PiBpc0luaXRpYWxpemVkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucXVvdGVTdWJqJC5hc09ic2VydmFibGUoKSksXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIHRhcChxdW90ZSA9PiB0aGlzLm1hcmtBc1VwZGF0ZWQocXVvdGUpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0U3ViaiQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnF1b3RlU3ViaiQubmV4dChudWxsKTtcbiAgICB0aGlzLmFzc2V0c1N1YmokLm5leHQobnVsbCk7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGluaXQoaGVhZGVySWQ6IHN0cmluZywgcGFyYW1zOiBEaWN0aW9uYXJ5PHN0cmluZz4pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBjdHggPSB0aGlzLmNvbnRleHQucmVzb2x2ZSgpO1xuICAgIGNvbnN0IGFjY291bnRJZCA9IHRoaXMuY29udGV4dC5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuQUNDT1VOVCA/IGhlYWRlcklkIDogY3R4LnByb3BlcnRpZXMuQWNjb3VudElkO1xuXG4gICAgcmV0dXJuIHppcChcbiAgICAgIGFjY291bnRJZCA/IHRoaXMuYWNjb3VudEFwaVNlcnZpY2UuZ2V0QXNzZXRzU3RhdGUoYWNjb3VudElkLCBwYXJhbXMpIDogb2YobnVsbCksXG4gICAgICB0aGlzLnF1b3RlQXBpU2VydmljZS5nZXRRdW90ZVN0YXRlKGhlYWRlcklkLCBwYXJhbXMpLFxuICAgICkucGlwZShcbiAgICAgIHRhcCgoW2Fzc2V0cywgcXVvdGVdKSA9PiB7XG4gICAgICAgIGlmIChhc3NldHMpIHtcbiAgICAgICAgICB0aGlzLmFzc2V0c1N1YmokLm5leHQoYXNzZXRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucXVvdGVTdWJqJC5uZXh0KHF1b3RlKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVwZGF0ZShxdW90ZS5jb250ZXh0KTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IG5vb3AoKSksXG4gICAgICB0YWtlKDEpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZmluYWxpemVJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNldEN1cnJlbnRMaW5lSXRlbVN0YXRlKGxpbmVJdGVtczogTGluZUl0ZW1bXSk6IHZvaWQge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlU3ViaiQudmFsdWU7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnF1b3RlU3ViaiQubmV4dCh7XG4gICAgICAuLi5xdW90ZURyYWZ0LFxuICAgICAgY3VycmVudFN0YXRlOiBsaW5lSXRlbXMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUXVvdGVEcmFmdCh1cGRhdGU6IFBhcnRpYWw8UXVvdGVEcmFmdD4pOiB2b2lkIHtcbiAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZVN1YmokLnZhbHVlO1xuXG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZS5jb250ZXh0KSB7XG4gICAgICB0aGlzLmNvbnRleHQuc2V0KHVwZGF0ZS5jb250ZXh0KTtcbiAgICB9XG5cbiAgICB0aGlzLnF1b3RlU3ViaiQubmV4dCh7XG4gICAgICAuLi5xdW90ZURyYWZ0LFxuICAgICAgLi4udXBkYXRlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUJ5UHJpY2VTdW1tYXJ5KHByaWNlU3VtbWFyeTogUHJpY2VTdW1tYXJ5KTogdm9pZCB7XG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVTdWJqJC52YWx1ZTtcblxuICAgIGlmICghcXVvdGVEcmFmdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWRDdXJyZW50U3RhdGUgPSB0aGlzLmN1cnJlbnRTdGF0ZS5tYXAobGluZUl0ZW0gPT4ge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHByaWNlU3VtbWFyeS5saW5lSXRlbXMuZmluZChsaSA9PiBsaS5pZCA9PT0gbGluZUl0ZW0uaWQpO1xuICAgICAgcmV0dXJuIHVwZGF0ZWQgPz8gbGluZUl0ZW07XG4gICAgfSk7XG5cbiAgICB0aGlzLnF1b3RlU3ViaiQubmV4dCh7XG4gICAgICAuLi5xdW90ZURyYWZ0LFxuICAgICAgY3VycmVudFN0YXRlOiB1cGRhdGVkQ3VycmVudFN0YXRlLFxuICAgICAgdG90YWxQcmljZXM6IHByaWNlU3VtbWFyeS50b3RhbFByaWNlcyxcbiAgICAgIGFwcHJvdmFsSXRlbXM6IHByaWNlU3VtbWFyeS5hcHByb3ZhbEl0ZW1zLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldEFzc2V0c1N0YXRlKGFzc2V0c1N0YXRlOiBBY2NvdW50QXNzZXRzU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmFzc2V0c1N1YmokLm5leHQoYXNzZXRzU3RhdGUpO1xuICB9XG5cbiAgcHVibGljIGdldCBxdW90ZURyYWZ0JCgpOiBPYnNlcnZhYmxlPFF1b3RlRHJhZnQ+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5xdW90ZVN1YmokLCB0aGlzLmNvbnRleHQucmVzb2x2ZSQoKV0pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0KSxcbiAgICAgIGZpbHRlcigocXVvdGUpOiBxdW90ZSBpcyBRdW90ZURyYWZ0ID0+IEJvb2xlYW4ocXVvdGUpKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcXVvdGVEcmFmdCgpOiBRdW90ZURyYWZ0IHwgbnVsbCB7XG4gICAgY29uc3QgcXVvdGUgPSB0aGlzLnF1b3RlU3ViaiQudmFsdWU7XG5cbiAgICBpZiAoIXF1b3RlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucXVvdGUsXG4gICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHQucmVzb2x2ZSgpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRTdGF0ZSQoKTogT2JzZXJ2YWJsZTxMaW5lSXRlbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdCQucGlwZShtYXAocXVvdGUgPT4gcXVvdGUuY3VycmVudFN0YXRlKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRTdGF0ZSgpOiBMaW5lSXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0Py5jdXJyZW50U3RhdGUgPz8gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU3RhbmRhbG9uZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LnJlc29sdmUoKS5wcm9wZXJ0aWVzLnN0YW5kYWxvbmUgPT09ICd0cnVlJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNTdGFuZGFsb25lJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LnJlc29sdmUkKCkucGlwZShtYXAoKCkgPT4gdGhpcy5pc1N0YW5kYWxvbmUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJbml0aWFsQ3VycmVudFN0YXRlKCk6IExpbmVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxDdXJyZW50U3RhdGU7XG4gIH1cblxuICBwdWJsaWMgaXNFZGl0TW9kZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5yZXNvbHZlJCgpLnBpcGUobWFwKCgpID0+IHRoaXMuaXNFZGl0TW9kZSgpKSk7XG4gIH1cblxuICBwdWJsaWMgaXNFZGl0TW9kZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0LnJlc29sdmUoKTtcblxuICAgIGlmIChjb250ZXh0Lm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dC5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuUVVPVEUpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LnByb3BlcnRpZXMuU3RhdHVzID09PSAnRHJhZnQnO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0FzVXBkYXRlZChxdW90ZTogUXVvdGVEcmFmdCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAocXVvdGU/LmNvbnRleHQucHJvcGVydGllc1snI21vZGUnXSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQpIHtcbiAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSAhIXF1b3RlICYmICFxdW90ZS5jdXJyZW50U3RhdGUuZXZlcnkobGkgPT4gbGkuYWN0aW9uQ29kZSA9PT0gJ0VYSVNUJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSAhaXNFcXVhbCh0aGlzLmluaXRpYWxDdXJyZW50U3RhdGUsIHF1b3RlPy5jdXJyZW50U3RhdGUpO1xuICAgIH1cbiAgfVxufVxuIl19
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUtZHJhZnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvc2VydmljZXMvcXVvdGUtZHJhZnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRSxPQUFPLEVBQXNCLHdCQUF3QixFQUEwQixVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwSCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFHbkQsTUFBTSxPQUFPLGlCQUFpQjtJQVE1QixJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUNELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsSUFBVyxhQUFhLENBQUMsS0FBYztRQUNyQyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssS0FBSyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRUQsSUFB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LEVBQUU7WUFDM0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEtBQUssT0FBTyxDQUFDLENBQUM7U0FDaEc7YUFBTTtZQUNMLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ2xGO0lBQ0gsQ0FBQzs7OEdBaE9VLGlCQUFpQjtrSEFBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY2NvdW50QXBpU2VydmljZSwgUXVvdGVBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7IEFjY291bnRBc3NldHNTdGF0ZSwgQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLCBMaW5lSXRlbSwgUHJpY2VTdW1tYXJ5LCBRdW90ZURyYWZ0IH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5LCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbm9vcCwgT2JzZXJ2YWJsZSwgb2YsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBza2lwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUXVvdGVEcmFmdFNlcnZpY2Uge1xuICBwcml2YXRlIHF1b3RlU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFF1b3RlRHJhZnQgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBhc3NldHNTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QWNjb3VudEFzc2V0c1N0YXRlIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVzZXRTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgaXNJbml0aWFsaXplZFN1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgaW5pdGlhbEN1cnJlbnRTdGF0ZTogTGluZUl0ZW1bXSA9IFtdO1xuICBwcml2YXRlIF9oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgaXNJbml0aWFsaXplZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbml0aWFsaXplZFN1YmokLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIHB1YmxpYyBnZXQgaXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0luaXRpYWxpemVkU3ViaiQuZ2V0VmFsdWUoKTtcbiAgfVxuICBwdWJsaWMgc2V0IGlzSW5pdGlhbGl6ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5pc0luaXRpYWxpemVkU3ViaiQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBoYXNVbnNhdmVkQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGFzVW5zYXZlZENoYW5nZXM7XG4gIH1cbiAgcHVibGljIHNldCBoYXNVbnNhdmVkQ2hhbmdlcyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2hhc1Vuc2F2ZWRDaGFuZ2VzID0gdmFsdWU7XG5cbiAgICBpZiAoIXRoaXMuX2hhc1Vuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluaXRpYWxDdXJyZW50U3RhdGUgPSB0aGlzLnF1b3RlRHJhZnQ/LmN1cnJlbnRTdGF0ZSA/PyBbXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1Byb2R1Y3RzJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZVN1YmokLnBpcGUobWFwKCgpID0+IHRoaXMuaGFzUHJvZHVjdHMpKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGhhc1Byb2R1Y3RzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMucXVvdGVTdWJqJC52YWx1ZT8uY3VycmVudFN0YXRlLmxlbmd0aCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0Fzc2V0cyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXRzU3ViaiQucGlwZShtYXAoKCkgPT4gdGhpcy5oYXNBc3NldHMpKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGhhc0Fzc2V0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLmFzc2V0c1N1YmokLnZhbHVlPy5jdXJyZW50U3RhdGUubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXNzZXRzU3RhdGUoKTogQWNjb3VudEFzc2V0c1N0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXRzU3ViaiQudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQkID0gdGhpcy5yZXNldFN1YmokLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dDogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY2NvdW50QXBpU2VydmljZTogQWNjb3VudEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZUFwaVNlcnZpY2U6IFF1b3RlQXBpU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkU3ViaiRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoaXNJbml0aWFsaXplZCA9PiBpc0luaXRpYWxpemVkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucXVvdGVTdWJqJC5hc09ic2VydmFibGUoKSksXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIHRhcChxdW90ZSA9PiB0aGlzLm1hcmtBc1VwZGF0ZWQocXVvdGUpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0U3ViaiQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnF1b3RlU3ViaiQubmV4dChudWxsKTtcbiAgICB0aGlzLmFzc2V0c1N1YmokLm5leHQobnVsbCk7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGluaXQoaGVhZGVySWQ6IHN0cmluZywgcGFyYW1zOiBEaWN0aW9uYXJ5PHN0cmluZz4pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBjdHggPSB0aGlzLmNvbnRleHQucmVzb2x2ZSgpO1xuICAgIGNvbnN0IGlzQWNjb3VudE1vZGUgPSB0aGlzLmNvbnRleHQubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQ7XG4gICAgY29uc3QgYWNjb3VudElkID0gaXNBY2NvdW50TW9kZSA/IGhlYWRlcklkIDogY3R4LnByb3BlcnRpZXMuQWNjb3VudElkO1xuXG4gICAgcmV0dXJuIHppcChcbiAgICAgIGFjY291bnRJZCA/IHRoaXMuYWNjb3VudEFwaVNlcnZpY2UuZ2V0QXNzZXRzU3RhdGUoYWNjb3VudElkLCBwYXJhbXMpIDogb2YobnVsbCksXG4gICAgICBpc0FjY291bnRNb2RlID8gb2YoUXVvdGVEcmFmdC5lbXB0eVF1b3RlKENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSkgOiB0aGlzLnF1b3RlQXBpU2VydmljZS5nZXRRdW90ZVN0YXRlKGhlYWRlcklkLCBwYXJhbXMpLFxuICAgICkucGlwZShcbiAgICAgIHRhcCgoW2Fzc2V0cywgcXVvdGVdKSA9PiB7XG4gICAgICAgIGlmIChhc3NldHMpIHtcbiAgICAgICAgICB0aGlzLmFzc2V0c1N1YmokLm5leHQoYXNzZXRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucXVvdGVTdWJqJC5uZXh0KHF1b3RlKTtcbiAgICAgICAgaWYgKGFzc2V0cyAmJiBpc0FjY291bnRNb2RlKSB7XG4gICAgICAgICAgdGhpcy5jb250ZXh0LnVwZGF0ZShhc3NldHMuY29udGV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jb250ZXh0LnVwZGF0ZShxdW90ZS5jb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBtYXAoKCkgPT4gbm9vcCgpKSxcbiAgICAgIHRha2UoMSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5hbGl6ZUluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc2V0Q3VycmVudExpbmVJdGVtU3RhdGUobGluZUl0ZW1zOiBMaW5lSXRlbVtdKTogdm9pZCB7XG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVTdWJqJC52YWx1ZTtcblxuICAgIGlmICghcXVvdGVEcmFmdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucXVvdGVTdWJqJC5uZXh0KHtcbiAgICAgIC4uLnF1b3RlRHJhZnQsXG4gICAgICBjdXJyZW50U3RhdGU6IGxpbmVJdGVtcyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVRdW90ZURyYWZ0KHVwZGF0ZTogUGFydGlhbDxRdW90ZURyYWZ0Pik6IHZvaWQge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlU3ViaiQudmFsdWU7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlLmNvbnRleHQpIHtcbiAgICAgIHRoaXMuY29udGV4dC5zZXQodXBkYXRlLmNvbnRleHQpO1xuICAgIH1cblxuICAgIHRoaXMucXVvdGVTdWJqJC5uZXh0KHtcbiAgICAgIC4uLnF1b3RlRHJhZnQsXG4gICAgICAuLi51cGRhdGUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQnlQcmljZVN1bW1hcnkocHJpY2VTdW1tYXJ5OiBQcmljZVN1bW1hcnkpOiB2b2lkIHtcbiAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZVN1YmokLnZhbHVlO1xuXG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlZEN1cnJlbnRTdGF0ZSA9IHRoaXMuY3VycmVudFN0YXRlLm1hcChsaW5lSXRlbSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gcHJpY2VTdW1tYXJ5LmxpbmVJdGVtcy5maW5kKGxpID0+IGxpLmlkID09PSBsaW5lSXRlbS5pZCk7XG4gICAgICByZXR1cm4gdXBkYXRlZCA/PyBsaW5lSXRlbTtcbiAgICB9KTtcblxuICAgIHRoaXMucXVvdGVTdWJqJC5uZXh0KHtcbiAgICAgIC4uLnF1b3RlRHJhZnQsXG4gICAgICBjdXJyZW50U3RhdGU6IHVwZGF0ZWRDdXJyZW50U3RhdGUsXG4gICAgICB0b3RhbFByaWNlczogcHJpY2VTdW1tYXJ5LnRvdGFsUHJpY2VzLFxuICAgICAgYXBwcm92YWxJdGVtczogcHJpY2VTdW1tYXJ5LmFwcHJvdmFsSXRlbXMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0QXNzZXRzU3RhdGUoYXNzZXRzU3RhdGU6IEFjY291bnRBc3NldHNTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuYXNzZXRzU3ViaiQubmV4dChhc3NldHNTdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1b3RlRHJhZnQkKCk6IE9ic2VydmFibGU8UXVvdGVEcmFmdD4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLnF1b3RlU3ViaiQsIHRoaXMuY29udGV4dC5yZXNvbHZlJCgpXSkucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0aGlzLnF1b3RlRHJhZnQpLFxuICAgICAgZmlsdGVyKChxdW90ZSk6IHF1b3RlIGlzIFF1b3RlRHJhZnQgPT4gQm9vbGVhbihxdW90ZSkpLFxuICAgICAgc2hhcmVSZXBsYXkoKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBxdW90ZURyYWZ0KCk6IFF1b3RlRHJhZnQgfCBudWxsIHtcbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGVTdWJqJC52YWx1ZTtcblxuICAgIGlmICghcXVvdGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5xdW90ZSxcbiAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dC5yZXNvbHZlKCksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudFN0YXRlJCgpOiBPYnNlcnZhYmxlPExpbmVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0JC5waXBlKG1hcChxdW90ZSA9PiBxdW90ZS5jdXJyZW50U3RhdGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudFN0YXRlKCk6IExpbmVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLnF1b3RlRHJhZnQ/LmN1cnJlbnRTdGF0ZSA/PyBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNTdGFuZGFsb25lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucmVzb2x2ZSgpLnByb3BlcnRpZXMuc3RhbmRhbG9uZSA9PT0gJ3RydWUnO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1N0YW5kYWxvbmUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucmVzb2x2ZSQoKS5waXBlKG1hcCgoKSA9PiB0aGlzLmlzU3RhbmRhbG9uZSkpO1xuICB9XG5cbiAgcHVibGljIGdldEluaXRpYWxDdXJyZW50U3RhdGUoKTogTGluZUl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbEN1cnJlbnRTdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0VkaXRNb2RlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LnJlc29sdmUkKCkucGlwZShtYXAoKCkgPT4gdGhpcy5pc0VkaXRNb2RlKCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0VkaXRNb2RlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQucmVzb2x2ZSgpO1xuXG4gICAgaWYgKGNvbnRleHQubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0Lm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5RVU9URSkge1xuICAgICAgcmV0dXJuIGNvbnRleHQucHJvcGVydGllcy5TdGF0dXMgPT09ICdEcmFmdCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrQXNVcGRhdGVkKHF1b3RlOiBRdW90ZURyYWZ0IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChxdW90ZT8uY29udGV4dC5wcm9wZXJ0aWVzWycjbW9kZSddID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuQUNDT1VOVCkge1xuICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9ICEhcXVvdGUgJiYgIXF1b3RlLmN1cnJlbnRTdGF0ZS5ldmVyeShsaSA9PiBsaS5hY3Rpb25Db2RlID09PSAnRVhJU1QnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9ICFpc0VxdWFsKHRoaXMuaW5pdGlhbEN1cnJlbnRTdGF0ZSwgcXVvdGU/LmN1cnJlbnRTdGF0ZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
@@ -33,6 +33,9 @@ export class DocGenComponent {
|
|
33
33
|
}
|
34
34
|
initialize() {
|
35
35
|
this.templateApiName = this.flowInfo.flow?.properties.templates?.docGen ?? '';
|
36
|
+
if (this.flowInfo.isLegacy && !this.templateApiName) {
|
37
|
+
return;
|
38
|
+
}
|
36
39
|
this.generateUIDefinition$()
|
37
40
|
.pipe(tap(uiDef => {
|
38
41
|
if (!uiDef) {
|
@@ -123,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
123
126
|
type: Inject,
|
124
127
|
args: [FLOW_CUSTOMIZATION]
|
125
128
|
}] }]; } });
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLWdlbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvY29tcG9uZW50cy9kb2MtZ2VuL2RvYy1nZW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvZG9jLWdlbi9kb2MtZ2VuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RixPQUFPLEVBQ0wsY0FBYyxFQUVkLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsa0JBQWtCLEdBQ25CLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxHQUFHLEVBRUgsRUFBRSxFQUNGLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVFkLE1BQU0sT0FBTyxlQUFlO0lBTTFCLFlBQ1UsWUFBbUMsRUFDbkMsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQ2Msb0JBQXdDO1FBTGhGLGlCQUFZLEdBQVosWUFBWSxDQUF1QjtRQUNuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUNjLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBb0I7UUFYbkYsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBc0IsSUFBSSxDQUFDLENBQUM7UUFFOUQsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFVckMsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0I7YUFDbEIsY0FBYyxFQUFFO2FBQ2hCLElBQUksQ0FDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQ2YsS0FBSyxFQUFFLEVBQ1AsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUM1QixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUN6QjthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUU5RSxJQUFJLENBQUMscUJBQXFCLEVBQUU7YUFDekIsSUFBSSxDQUNILEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLGVBQWUsY0FBYyxDQUFDLENBQUM7YUFDN0U7WUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDZixNQUFNLE9BQU8sR0FBRyxzQ0FBc0MsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3JGLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUN6QjthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUU7WUFDckQsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdEI7UUFFRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUNoRixHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDZixJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNmLE9BQU87YUFDUjtZQUVELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBdUIsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7Z0JBQ3BCLEdBQUcsRUFBRSxTQUFTLENBQUMsR0FBRztnQkFDbEIsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFO2dCQUNoQixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7YUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLFdBQVc7UUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN0QjtRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO2FBQzNEO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUNyQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUNyRSxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLE9BQU87YUFDUjtZQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUM7WUFDckUsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUU7b0JBQ2pCLE9BQU8sU0FBUyxDQUFDO2lCQUNsQjtnQkFFRCxNQUFNLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RELE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUU7b0JBQ2pELE1BQU0sRUFBRTt3QkFDTixHQUFHLFFBQVEsQ0FBQyxNQUFNO3dCQUNsQixFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJO3FCQUN0QztpQkFDRixDQUFDLENBQUM7Z0JBRUgsT0FBTztvQkFDTCxHQUFHLFNBQVM7b0JBQ1osRUFBRSxFQUFFLE1BQU07aUJBQ1gsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxLQUFLLEdBQWlCO2dCQUMxQixJQUFJLEVBQUUsRUFBRTtnQkFDUixnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUUsU0FBUztnQkFDZixPQUFPLEVBQUUsQ0FBQztnQkFDVixRQUFRLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3RDLFFBQVEsRUFBRSxFQUFFO29CQUNaLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUM1QyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ3pDLENBQUMsQ0FBQzthQUNKLENBQUM7WUFFRixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs0R0F0SVUsZUFBZSxnTEFZSixrQkFBa0I7Z0dBWjdCLGVBQWUsdURDaEM1Qix3SkFHQTsyRkQ2QmEsZUFBZTtrQkFOM0IsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTs7MEJBYzVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVSVRlbXBsYXRlc0FwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlLCBUb2FzdFR5cGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb21wb25lbnRzJztcbmltcG9ydCB7IENvbXBvbmVudEF0dGFjaG1lbnRzLCBVSURlZmluaXRpb24gfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IGJ0b2FTYWZlLCBleHRlbmRFbGVtZW50TWV0YWRhdGEsIGV4dHJhY3RFbGVtZW50TWV0YWRhdGEgfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY21zJztcbmltcG9ydCB7XG4gIENvbnRleHRTZXJ2aWNlLFxuICBGbG93Q3VzdG9taXphdGlvbixcbiAgRmxvd0luZm9TZXJ2aWNlLFxuICBGbG93U3RhdGVTZXJ2aWNlLFxuICBGTE9XX0NVU1RPTUlaQVRJT04sXG59IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgZmlsdGVyLFxuICBmaXJzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWZsb3ctZG9jLWdlbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2MtZ2VuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9jLWdlbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRG9jR2VuQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIHVpRGVmaW5pdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVJRGVmaW5pdGlvbiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgdGVtcGxhdGVBcGlOYW1lID0gJyc7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVtcGxhdGVzQXBpOiBVSVRlbXBsYXRlc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0luZm86IEZsb3dJbmZvU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkxPV19DVVNUT01JWkFUSU9OKSBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlPzogRmxvd0N1c3RvbWl6YXRpb24sXG4gICkge1xuICAgIC8vIHdhaXQgdW50aWwgZmxvdyBpcyBpbml0aWFsaXplZFxuICAgIHRoaXMuZmxvd1N0YXRlU2VydmljZVxuICAgICAgLmlzSW5pdGlhbGl6ZWQkKClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmluaXRpYWxpemUoKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZUFwaU5hbWUgPSB0aGlzLmZsb3dJbmZvLmZsb3c/LnByb3BlcnRpZXMudGVtcGxhdGVzPy5kb2NHZW4gPz8gJyc7XG5cbiAgICB0aGlzLmdlbmVyYXRlVUlEZWZpbml0aW9uJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHVpRGVmID0+IHtcbiAgICAgICAgICBpZiAoIXVpRGVmKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB3aXRoIG5hbWUgJyR7dGhpcy50ZW1wbGF0ZUFwaU5hbWV9JyBub3QgZm91bmQuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy51aURlZmluaXRpb24kLm5leHQodWlEZWYpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnRmFpbGVkIHRvIHJlc29sdmUgRG9jR2VuIGNvbXBvbmVudC4gJyArIChlcnIubWVzc2FnZSA/PyAnJyk7XG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6IFRvYXN0VHlwZS5lcnJvciwgc3VtbWFyeTogbWVzc2FnZSwgc3RpY2t5OiB0cnVlIH0pO1xuICAgICAgICAgIHJldHVybiBvZigpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbE1ldGEkKCk6IE9ic2VydmFibGU8Q29tcG9uZW50QXR0YWNobWVudHNbXSB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VGVtcGxhdGVDb21wb25lbnRzKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VGVtcGxhdGVDb21wb25lbnRzKHRoaXMudGVtcGxhdGVBcGlOYW1lKS5waXBlKFxuICAgICAgbWFwKGNvbXBvbmVudHMgPT4ge1xuICAgICAgICBpZiAoIWNvbXBvbmVudHMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tcG9uZW50cy5tYXA8Q29tcG9uZW50QXR0YWNobWVudHM+KGNvbXBvbmVudCA9PiAoe1xuICAgICAgICAgIGh0bWw6IGNvbXBvbmVudC5odG1sLFxuICAgICAgICAgIGNzczogY29tcG9uZW50LmNzcyxcbiAgICAgICAgICBqczogY29tcG9uZW50LmpzLFxuICAgICAgICAgIGpzb246IGNvbXBvbmVudC5qc29uLFxuICAgICAgICB9KSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcmdNZXRhJCgpOiBPYnNlcnZhYmxlPENvbXBvbmVudEF0dGFjaG1lbnRzW10gfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuZmxvd0luZm8udGVtcGxhdGVzLkRPQ0dFTjtcbiAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZXNBcGkuZmV0Y2hDb21wb25lbnRzQXR0YWNobWVudHMkKHRlbXBsYXRlLmlkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVVSURlZmluaXRpb24kKCk6IE9ic2VydmFibGU8VUlEZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy50ZW1wbGF0ZUFwaU5hbWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGbG93ICdkb2NHZW4nIHRlbXBsYXRlIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5nZXRMb2NhbE1ldGEkKCkpLFxuICAgICAgc3dpdGNoTWFwKG1ldGFMaXN0ID0+IChtZXRhTGlzdCA/IG9mKG1ldGFMaXN0KSA6IHRoaXMuZ2V0T3JnTWV0YSQoKSkpLFxuICAgICAgbWFwKG1ldGFMaXN0ID0+IHtcbiAgICAgICAgaWYgKCFtZXRhTGlzdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhlYWRlcklkID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCkucHJvcGVydGllcy5JZCA/PyBudWxsO1xuICAgICAgICBjb25zdCBwYXRjaGVkTWV0YUxpc3QgPSBtZXRhTGlzdC5tYXAoY29tcG9uZW50ID0+IHtcbiAgICAgICAgICBpZiAoIWNvbXBvbmVudC5qcykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IGV4dHJhY3RFbGVtZW50TWV0YWRhdGEoY29tcG9uZW50LmpzKTtcbiAgICAgICAgICBjb25zdCBzY3JpcHQgPSBleHRlbmRFbGVtZW50TWV0YWRhdGEoY29tcG9uZW50LmpzLCB7XG4gICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgLi4ubWV0YWRhdGEuaW5wdXRzLFxuICAgICAgICAgICAgICBJZDogaGVhZGVySWQgPyBgXCIke2hlYWRlcklkfVwiYCA6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmNvbXBvbmVudCxcbiAgICAgICAgICAgIGpzOiBzY3JpcHQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdWlEZWY6IFVJRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgICBjcmVhdGVkVGltZXN0YW1wOiAwLFxuICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ0RFRkFVTFQnLFxuICAgICAgICAgIHZlcnNpb246IDIsXG4gICAgICAgICAgY2hpbGRyZW46IHBhdGNoZWRNZXRhTGlzdC5tYXAoY2hpbGQgPT4gKHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgIHRlbXBsYXRlOiBjaGlsZC5odG1sICYmIGJ0b2FTYWZlKGNoaWxkLmh0bWwpLFxuICAgICAgICAgICAgc2NyaXB0OiBjaGlsZC5qcyAmJiBidG9hU2FmZShjaGlsZC5qcyksXG4gICAgICAgICAgICBzdHlsZXM6IGNoaWxkLmNzcyAmJiBidG9hU2FmZShjaGlsZC5jc3MpLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdWlEZWY7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidWlEZWZpbml0aW9uJCB8IGFzeW5jIGFzIHVpRGVmaW5pdGlvblwiPlxuICA8dmwtY21zLXByZXZpZXcgW3VpRGVmaW5pdGlvbl09XCJ1aURlZmluaXRpb25cIj48L3ZsLWNtcy1wcmV2aWV3PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLWdlbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvY29tcG9uZW50cy9kb2MtZ2VuL2RvYy1nZW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvZG9jLWdlbi9kb2MtZ2VuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RixPQUFPLEVBQ0wsY0FBYyxFQUVkLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsa0JBQWtCLEdBQ25CLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxHQUFHLEVBRUgsRUFBRSxFQUNGLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVFkLE1BQU0sT0FBTyxlQUFlO0lBTTFCLFlBQ1UsWUFBbUMsRUFDbkMsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQ2Msb0JBQXdDO1FBTGhGLGlCQUFZLEdBQVosWUFBWSxDQUF1QjtRQUNuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdB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bnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVSVRlbXBsYXRlc0FwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlLCBUb2FzdFR5cGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb21wb25lbnRzJztcbmltcG9ydCB7IENvbXBvbmVudEF0dGFjaG1lbnRzLCBVSURlZmluaXRpb24gfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IGJ0b2FTYWZlLCBleHRlbmRFbGVtZW50TWV0YWRhdGEsIGV4dHJhY3RFbGVtZW50TWV0YWRhdGEgfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY21zJztcbmltcG9ydCB7XG4gIENvbnRleHRTZXJ2aWNlLFxuICBGbG93Q3VzdG9taXphdGlvbixcbiAgRmxvd0luZm9TZXJ2aWNlLFxuICBGbG93U3RhdGVTZXJ2aWNlLFxuICBGTE9XX0NVU1RPTUlaQVRJT04sXG59IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgZmlsdGVyLFxuICBmaXJzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWZsb3ctZG9jLWdlbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2MtZ2VuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9jLWdlbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRG9jR2VuQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIHVpRGVmaW5pdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVJRGVmaW5pdGlvbiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgdGVtcGxhdGVBcGlOYW1lID0gJyc7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVtcGxhdGVzQXBpOiBVSVRlbXBsYXRlc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0luZm86IEZsb3dJbmZvU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkxPV19DVVNUT01JWkFUSU9OKSBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlPzogRmxvd0N1c3RvbWl6YXRpb24sXG4gICkge1xuICAgIC8vIHdhaXQgdW50aWwgZmxvdyBpcyBpbml0aWFsaXplZFxuICAgIHRoaXMuZmxvd1N0YXRlU2VydmljZVxuICAgICAgLmlzSW5pdGlhbGl6ZWQkKClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmluaXRpYWxpemUoKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZUFwaU5hbWUgPSB0aGlzLmZsb3dJbmZvLmZsb3c/LnByb3BlcnRpZXMudGVtcGxhdGVzPy5kb2NHZW4gPz8gJyc7XG5cbiAgICBpZiAodGhpcy5mbG93SW5mby5pc0xlZ2FjeSAmJiAhdGhpcy50ZW1wbGF0ZUFwaU5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmdlbmVyYXRlVUlEZWZpbml0aW9uJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHVpRGVmID0+IHtcbiAgICAgICAgICBpZiAoIXVpRGVmKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB3aXRoIG5hbWUgJyR7dGhpcy50ZW1wbGF0ZUFwaU5hbWV9JyBub3QgZm91bmQuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy51aURlZmluaXRpb24kLm5leHQodWlEZWYpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnRmFpbGVkIHRvIHJlc29sdmUgRG9jR2VuIGNvbXBvbmVudC4gJyArIChlcnIubWVzc2FnZSA/PyAnJyk7XG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6IFRvYXN0VHlwZS5lcnJvciwgc3VtbWFyeTogbWVzc2FnZSwgc3RpY2t5OiB0cnVlIH0pO1xuICAgICAgICAgIHJldHVybiBvZigpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbE1ldGEkKCk6IE9ic2VydmFibGU8Q29tcG9uZW50QXR0YWNobWVudHNbXSB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VGVtcGxhdGVDb21wb25lbnRzKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VGVtcGxhdGVDb21wb25lbnRzKHRoaXMudGVtcGxhdGVBcGlOYW1lKS5waXBlKFxuICAgICAgbWFwKGNvbXBvbmVudHMgPT4ge1xuICAgICAgICBpZiAoIWNvbXBvbmVudHMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tcG9uZW50cy5tYXA8Q29tcG9uZW50QXR0YWNobWVudHM+KGNvbXBvbmVudCA9PiAoe1xuICAgICAgICAgIGh0bWw6IGNvbXBvbmVudC5odG1sLFxuICAgICAgICAgIGNzczogY29tcG9uZW50LmNzcyxcbiAgICAgICAgICBqczogY29tcG9uZW50LmpzLFxuICAgICAgICAgIGpzb246IGNvbXBvbmVudC5qc29uLFxuICAgICAgICB9KSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcmdNZXRhJCgpOiBPYnNlcnZhYmxlPENvbXBvbmVudEF0dGFjaG1lbnRzW10gfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuZmxvd0luZm8udGVtcGxhdGVzLkRPQ0dFTjtcbiAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZXNBcGkuZmV0Y2hDb21wb25lbnRzQXR0YWNobWVudHMkKHRlbXBsYXRlLmlkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVVSURlZmluaXRpb24kKCk6IE9ic2VydmFibGU8VUlEZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy50ZW1wbGF0ZUFwaU5hbWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGbG93ICdkb2NHZW4nIHRlbXBsYXRlIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5nZXRMb2NhbE1ldGEkKCkpLFxuICAgICAgc3dpdGNoTWFwKG1ldGFMaXN0ID0+IChtZXRhTGlzdCA/IG9mKG1ldGFMaXN0KSA6IHRoaXMuZ2V0T3JnTWV0YSQoKSkpLFxuICAgICAgbWFwKG1ldGFMaXN0ID0+IHtcbiAgICAgICAgaWYgKCFtZXRhTGlzdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhlYWRlcklkID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCkucHJvcGVydGllcy5JZCA/PyBudWxsO1xuICAgICAgICBjb25zdCBwYXRjaGVkTWV0YUxpc3QgPSBtZXRhTGlzdC5tYXAoY29tcG9uZW50ID0+IHtcbiAgICAgICAgICBpZiAoIWNvbXBvbmVudC5qcykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IGV4dHJhY3RFbGVtZW50TWV0YWRhdGEoY29tcG9uZW50LmpzKTtcbiAgICAgICAgICBjb25zdCBzY3JpcHQgPSBleHRlbmRFbGVtZW50TWV0YWRhdGEoY29tcG9uZW50LmpzLCB7XG4gICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgLi4ubWV0YWRhdGEuaW5wdXRzLFxuICAgICAgICAgICAgICBJZDogaGVhZGVySWQgPyBgXCIke2hlYWRlcklkfVwiYCA6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmNvbXBvbmVudCxcbiAgICAgICAgICAgIGpzOiBzY3JpcHQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdWlEZWY6IFVJRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgICBjcmVhdGVkVGltZXN0YW1wOiAwLFxuICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ0RFRkFVTFQnLFxuICAgICAgICAgIHZlcnNpb246IDIsXG4gICAgICAgICAgY2hpbGRyZW46IHBhdGNoZWRNZXRhTGlzdC5tYXAoY2hpbGQgPT4gKHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgIHRlbXBsYXRlOiBjaGlsZC5odG1sICYmIGJ0b2FTYWZlKGNoaWxkLmh0bWwpLFxuICAgICAgICAgICAgc2NyaXB0OiBjaGlsZC5qcyAmJiBidG9hU2FmZShjaGlsZC5qcyksXG4gICAgICAgICAgICBzdHlsZXM6IGNoaWxkLmNzcyAmJiBidG9hU2FmZShjaGlsZC5jc3MpLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdWlEZWY7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidWlEZWZpbml0aW9uJCB8IGFzeW5jIGFzIHVpRGVmaW5pdGlvblwiPlxuICA8dmwtY21zLXByZXZpZXcgW3VpRGVmaW5pdGlvbl09XCJ1aURlZmluaXRpb25cIj48L3ZsLWNtcy1wcmV2aWV3PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|