@smartbit4all/ng-client 4.5.25 → 4.5.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/session/smart-backend-bootstrap.service.mjs +31 -4
- package/esm2022/lib/smart-client/smart-component-api-client.mjs +10 -2
- package/esm2022/lib/view-context/smart-view-context.service.mjs +9 -1
- package/fesm2022/smartbit4all-ng-client.mjs +47 -4
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/session/smart-backend-bootstrap.service.d.ts +11 -0
- package/lib/view-context/smart-view-context.service.d.ts +2 -0
- package/package.json +1 -1
- package/smartbit4all-ng-client-4.5.26.tgz +0 -0
- package/smartbit4all-ng-client-4.5.25.tgz +0 -0
|
@@ -2,6 +2,20 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "./smart-session.service";
|
|
4
4
|
import * as i2 from "../view-context/smart-view-context.service";
|
|
5
|
+
/**
|
|
6
|
+
* Thrown by `whenReady()` when the viewcontext was rebuilt between the
|
|
7
|
+
* caller's entry into `whenReady()` and the gate releasing. Any uuid the
|
|
8
|
+
* caller resolved before entering is now stale; `SmartComponentApiClient.run()`
|
|
9
|
+
* catches this and skips the load — the component is expected to receive a
|
|
10
|
+
* fresh uuid through `uuidOfPageHasBeenChanged` (NORMAL views) or to be
|
|
11
|
+
* recreated by `openView` (EMBEDDED/DIALOG views).
|
|
12
|
+
*/
|
|
13
|
+
export class ViewContextRebuiltError extends Error {
|
|
14
|
+
constructor() {
|
|
15
|
+
super('ViewContextRebuilt');
|
|
16
|
+
this.name = 'ViewContextRebuiltError';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
5
19
|
export class SmartBackendBootstrapService {
|
|
6
20
|
constructor(session, viewContext) {
|
|
7
21
|
this.session = session;
|
|
@@ -65,11 +79,24 @@ export class SmartBackendBootstrapService {
|
|
|
65
79
|
this.runningInit = this.runBootstrapWith(creds);
|
|
66
80
|
return this.runningInit;
|
|
67
81
|
}
|
|
68
|
-
whenReady() {
|
|
82
|
+
async whenReady() {
|
|
69
83
|
if (!this.runningInit) {
|
|
70
|
-
|
|
84
|
+
throw new Error('BootstrapNotStarted');
|
|
85
|
+
}
|
|
86
|
+
await this.runningInit;
|
|
87
|
+
const generationBefore = this.viewContext.getGeneration();
|
|
88
|
+
// Gate on any in-flight session/viewcontext recovery so a component's
|
|
89
|
+
// BFF call cannot race against the session being torn down and rebuilt.
|
|
90
|
+
// The loop handles cascading recoveries (e.g. vc-lost surfaces during
|
|
91
|
+
// a session restart): each settle clears its own latch in finally, and
|
|
92
|
+
// the next iteration picks up whatever started in the meantime.
|
|
93
|
+
while (this.runningViewContextLost || this.runningSessionError) {
|
|
94
|
+
await this.runningViewContextLost;
|
|
95
|
+
await this.runningSessionError;
|
|
96
|
+
}
|
|
97
|
+
if (this.viewContext.getGeneration() !== generationBefore) {
|
|
98
|
+
throw new ViewContextRebuiltError();
|
|
71
99
|
}
|
|
72
|
-
return this.runningInit;
|
|
73
100
|
}
|
|
74
101
|
async reset() {
|
|
75
102
|
this.runningInit = undefined;
|
|
@@ -184,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
184
211
|
type: Injectable,
|
|
185
212
|
args: [{ providedIn: 'root' }]
|
|
186
213
|
}], ctorParameters: () => [{ type: i1.SmartSessionService }, { type: i2.SmartViewContextService }] });
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYmFja2VuZC1ib290c3RyYXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3Nlc3Npb24vc21hcnQtYmFja2VuZC1ib290c3RyYXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBWTNDLE1BQU0sT0FBTyw0QkFBNEI7SUFRdkMsWUFDVSxPQUE0QixFQUM1QixXQUFvQztRQURwQyxZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFQdEMsbUJBQWMsR0FBRyxLQUFLLENBQUM7SUFRNUIsQ0FBQztJQUVKLFNBQVMsQ0FBQyxNQUFtQztRQUMzQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLHVGQUF1RixDQUFDLENBQUM7WUFDdEcsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLGlCQUFpQixJQUFJLGdCQUFnQixDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFN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QzsrR0ExTVUsNEJBQTRCO21IQUE1Qiw0QkFBNEIsY0FEZixNQUFNOzs0RkFDbkIsNEJBQTRCO2tCQUR4QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU21hcnRTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc21hcnQtc2Vzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vdmlldy1jb250ZXh0L3NtYXJ0LXZpZXctY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25FcnJvciwgU21hcnRTZXNzaW9uSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LXNlc3Npb24taGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFNtYXJ0QmFja2VuZEJvb3RzdHJhcENvbmZpZyxcbiAgU21hcnRCYWNrZW5kQm9vdHN0cmFwQ3JlZGVudGlhbHMsXG59IGZyb20gJy4vc21hcnQtYmFja2VuZC1ib290c3RyYXAuY29uZmlnJztcblxudHlwZSBCb290c3RyYXBNb2RlID0gJ3N0YXJ0JyB8ICdib290c3RyYXBXaXRoJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlIGltcGxlbWVudHMgU21hcnRTZXNzaW9uSGFuZGxlclNlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZz86IFNtYXJ0QmFja2VuZEJvb3RzdHJhcENvbmZpZztcbiAgcHJpdmF0ZSBydW5uaW5nSW5pdD86IFByb21pc2U8dm9pZD47XG4gIHByaXZhdGUgbGFzdEluaXRGYWlsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtb2RlPzogQm9vdHN0cmFwTW9kZTtcbiAgcHJpdmF0ZSBydW5uaW5nVmlld0NvbnRleHRMb3N0PzogUHJvbWlzZTx2b2lkPjtcbiAgcHJpdmF0ZSBydW5uaW5nU2Vzc2lvbkVycm9yPzogUHJvbWlzZTx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlc3Npb246IFNtYXJ0U2Vzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB2aWV3Q29udGV4dDogU21hcnRWaWV3Q29udGV4dFNlcnZpY2UsXG4gICkge31cblxuICBjb25maWd1cmUoY29uZmlnOiBTbWFydEJhY2tlbmRCb290c3RyYXBDb25maWcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgIGNvbnNvbGUud2FybignU21hcnRCYWNrZW5kQm9vdHN0cmFwU2VydmljZSBhbHJlYWR5IGNvbmZpZ3VyZWQ7IGlnbm9yaW5nIGR1cGxpY2F0ZSBjb25maWd1cmUoKSBjYWxsLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICAgIHRoaXMuc2Vzc2lvbi5zZXRVcmwoY29uZmlnLnVybCk7XG4gICAgdGhpcy5zZXNzaW9uLnNldENvb2tpZU5hbWUoY29uZmlnLmNvb2tpZU5hbWUpO1xuICAgIHRoaXMuc2Vzc2lvbi5zZXRTZXNzaW9uSGFuZGxlclNlcnZpY2UodGhpcyk7XG5cbiAgICB0aGlzLnZpZXdDb250ZXh0LnNldFZpZXdIYW5kbGVycyhjb25maWcudmlld0hhbmRsZXJzKTtcbiAgICB0aGlzLnZpZXdDb250ZXh0LnNldE1lc3NhZ2VEaWFsb2dOYW1lKGNvbmZpZy5tZXNzYWdlRGlhbG9nTmFtZSA/PyAnbWVzc2FnZS1kaWFsb2cnKTtcbiAgICB0aGlzLnZpZXdDb250ZXh0LnNldEFjdGlvbkRlc2NyaXB0b3JzKGNvbmZpZy5hY3Rpb25EZXNjcmlwdG9ycyk7XG5cbiAgICB0aGlzLnZpZXdDb250ZXh0Lm9wZW5TbWFydExpbmsuc3Vic2NyaWJlKChjaGFubmVsOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlU21hcnRMaW5rKGNoYW5uZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTbWFydExpbmsoY2hhbm5lbDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuY29uZmlnPy5vblNtYXJ0TGluaykge1xuICAgICAgYXdhaXQgdGhpcy5jb25maWcub25TbWFydExpbmsoY2hhbm5lbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIERlZmF1bHQ6IHNpbXBseSB1bmJsb2NrIHNob3dQdWJsaXNoZWRWaWV3J3MgYGF3YWl0IG9wZW5TbWFydExpbmsudG9Qcm9taXNlKClgLlxuICAgIC8vIFRoZSB2aWV3Q29udGV4dCBpcyBhbHJlYWR5IGluaXRpYWxpemVkIGJ5IHN0YXJ0KCkvYm9vdHN0cmFwV2l0aCgpIOKAlCBjYWxsaW5nXG4gICAgLy8gaW5pdGlhbGl6ZSgpIGhlcmUgd2l0aG91dCBhIHV1aWQgd291bGQgYWx3YXlzIHRyaWdnZXIgc3RhcnRWaWV3Q29udGV4dCgpLFxuICAgIC8vIGNyZWF0aW5nIGEgc2Vjb25kIHZpZXdjb250ZXh0IGFuZCBwcm9kdWNpbmcgZHVwbGljYXRlIFVJIChlLmcuIHR3byBsb2dpbiBwYWdlcykuXG4gICAgdGhpcy52aWV3Q29udGV4dC5vcGVuU21hcnRMaW5rLmNvbXBsZXRlKCk7XG4gIH1cblxuICBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlLmNvbmZpZ3VyZSgpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBzdGFydCgpLicpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2Jvb3RzdHJhcFdpdGgnICYmICF0aGlzLmxhc3RJbml0RmFpbGVkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFxuICAgICAgICAnU21hcnRCYWNrZW5kQm9vdHN0cmFwU2VydmljZS5ib290c3RyYXBXaXRoKCkgd2FzIGFscmVhZHkgY2FsbGVkOyBzdGFydCgpIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGl0LiBDYWxsIHJlc2V0KCkgZmlyc3QgdG8gc3dpdGNoIGVudHJ5IHBvaW50cy4nLFxuICAgICAgKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJ1bm5pbmdJbml0ICYmICF0aGlzLmxhc3RJbml0RmFpbGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5ydW5uaW5nSW5pdDtcbiAgICB9XG4gICAgdGhpcy5tb2RlID0gJ3N0YXJ0JztcbiAgICB0aGlzLmxhc3RJbml0RmFpbGVkID0gZmFsc2U7XG4gICAgdGhpcy5ydW5uaW5nSW5pdCA9IHRoaXMucnVuSW5pdCgpO1xuICAgIHJldHVybiB0aGlzLnJ1bm5pbmdJbml0O1xuICB9XG5cbiAgYm9vdHN0cmFwV2l0aChjcmVkczogU21hcnRCYWNrZW5kQm9vdHN0cmFwQ3JlZGVudGlhbHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlLmNvbmZpZ3VyZSgpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBib290c3RyYXBXaXRoKCkuJykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2RlID09PSAnc3RhcnQnICYmICF0aGlzLmxhc3RJbml0RmFpbGVkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFxuICAgICAgICAnU21hcnRCYWNrZW5kQm9vdHN0cmFwU2VydmljZS5zdGFydCgpIHdhcyBhbHJlYWR5IGNhbGxlZDsgYm9vdHN0cmFwV2l0aCgpIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGl0LiBDYWxsIHJlc2V0KCkgZmlyc3QgdG8gc3dpdGNoIGVudHJ5IHBvaW50cy4nLFxuICAgICAgKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJ1bm5pbmdJbml0ICYmICF0aGlzLmxhc3RJbml0RmFpbGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5ydW5uaW5nSW5pdDtcbiAgICB9XG4gICAgdGhpcy5tb2RlID0gJ2Jvb3RzdHJhcFdpdGgnO1xuICAgIHRoaXMubGFzdEluaXRGYWlsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJ1bm5pbmdJbml0ID0gdGhpcy5ydW5Cb290c3RyYXBXaXRoKGNyZWRzKTtcbiAgICByZXR1cm4gdGhpcy5ydW5uaW5nSW5pdDtcbiAgfVxuXG4gIHdoZW5SZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMucnVubmluZ0luaXQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0Jvb3RzdHJhcE5vdFN0YXJ0ZWQnKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJ1bm5pbmdJbml0O1xuICB9XG5cbiAgYXN5bmMgcmVzZXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5ydW5uaW5nSW5pdCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmxhc3RJbml0RmFpbGVkID0gZmFsc2U7XG4gICAgdGhpcy5tb2RlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucnVubmluZ1ZpZXdDb250ZXh0TG9zdCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJ1bm5pbmdTZXNzaW9uRXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgYFNtYXJ0RXJyb3JDYXRjaGluZ0ludGVyY2VwdG9yYCB3aGVuIHRoZSBiYWNrZW5kIHJlcG9ydHNcbiAgICogYHNlc3Npb24udmlld2NvbnRleHQubWlzc2luZ2AuIElkZW1wb3RlbnQgYWNyb3NzIGNvbmN1cnJlbnQgYW5kXG4gICAqIHNlcXVlbnRpYWwgY2FsbHMgdW50aWwgdGhlIG5leHQgYHJlc2V0KClgIOKAlCBtdWx0aXBsZSByYWNpbmcgQkZGXG4gICAqIGZhaWx1cmVzIGNvbGxhcHNlIGludG8gYSBzaW5nbGUgcmVjb3ZlcnkgYXR0ZW1wdC5cbiAgICovXG4gIGhhbmRsZVZpZXdDb250ZXh0TG9zdChlcnI6IFNlc3Npb25FcnJvcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXG4gICAgICAgICdTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlLmNvbmZpZ3VyZSgpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBoYW5kbGVWaWV3Q29udGV4dExvc3QoKS4nLFxuICAgICAgKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJ1bm5pbmdWaWV3Q29udGV4dExvc3QpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ1bm5pbmdWaWV3Q29udGV4dExvc3Q7XG4gICAgfVxuICAgIHRoaXMucnVubmluZ1ZpZXdDb250ZXh0TG9zdCA9IHRoaXMucnVuVmlld0NvbnRleHRMb3N0KGVycik7XG4gICAgcmV0dXJuIHRoaXMucnVubmluZ1ZpZXdDb250ZXh0TG9zdDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcnVuVmlld0NvbnRleHRMb3N0KGVycjogU2Vzc2lvbkVycm9yKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZz8ub25WaWV3Q29udGV4dExvc3QpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb25maWcub25WaWV3Q29udGV4dExvc3QoZXJyKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5pbml0TmV3Vmlld0NvbnRleHQoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5ydW5uaW5nVmlld0NvbnRleHRMb3N0ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgYFNtYXJ0RXJyb3JDYXRjaGluZ0ludGVyY2VwdG9yYCBmb3IgdHJhbnNwb3J0LWxldmVsIGZhaWx1cmVzXG4gICAqIChzdGF0dXMgMCwgNXh4KS4gRmlyZS1hbmQtZm9yZ2V0OyB0aGUgcmVxdWVzdCBzdGlsbCByZWplY3RzIHdpdGggdGhlXG4gICAqIG9yaWdpbmFsIGVycm9yIHNvIGNhbGxlcnMgY2FuIGRvIHBlci1jYWxsIGhhbmRsaW5nLlxuICAgKi9cbiAgYXN5bmMgaGFuZGxlVHJhbnNwb3J0RXJyb3IoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXG4gICAgICAgICdTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlLmNvbmZpZ3VyZSgpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBoYW5kbGVUcmFuc3BvcnRFcnJvcigpLicsXG4gICAgICApKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnLm9uVHJhbnNwb3J0RXJyb3IpIHtcbiAgICAgIGF3YWl0IHRoaXMuY29uZmlnLm9uVHJhbnNwb3J0RXJyb3IoZXJyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS53YXJuKCdUcmFuc3BvcnQgZXJyb3Ig4oCUIHNlcnZlciB1bnJlYWNoYWJsZSBvciA1eHgnLCBlcnIpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydW5Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnNlc3Npb24uaW5pdGlhbGl6ZSgpO1xuICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5pbml0Vmlld0NvbnRleHQoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlSW5pdEZhaWx1cmUoZXJyKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1bkJvb3RzdHJhcFdpdGgoY3JlZHM6IFNtYXJ0QmFja2VuZEJvb3RzdHJhcENyZWRlbnRpYWxzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2Vzc2lvbi5zZXRTZXNzaW9uVG9rZW4oY3JlZHMuc2Vzc2lvblRva2VuLCBjcmVkcy5yZWZyZXNoVG9rZW4pO1xuICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5pbml0RnJvbUV4aXN0aW5nVmlld0NvbnRleHQoY3JlZHMudmlld0NvbnRleHRVdWlkKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlSW5pdEZhaWx1cmUoZXJyKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZUluaXRGYWlsdXJlKGVycjogdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubGFzdEluaXRGYWlsZWQgPSB0cnVlO1xuICAgIGlmICh0aGlzLmNvbmZpZz8ub25TdGFydEVycm9yKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmNvbmZpZy5vblN0YXJ0RXJyb3IoZXJyKTtcbiAgICAgIH0gY2F0Y2ggKGNhbGxiYWNrRXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NtYXJ0QmFja2VuZEJvb3RzdHJhcFNlcnZpY2Uub25TdGFydEVycm9yIGNhbGxiYWNrIHRocmV3JywgY2FsbGJhY2tFcnIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVNlc3Npb25FcnJvcihlcnI6IFNlc3Npb25FcnJvcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXG4gICAgICAgICdTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlLmNvbmZpZ3VyZSgpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBoYW5kbGVTZXNzaW9uRXJyb3IoKS4nLFxuICAgICAgKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJ1bm5pbmdTZXNzaW9uRXJyb3IpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ1bm5pbmdTZXNzaW9uRXJyb3I7XG4gICAgfVxuICAgIHRoaXMucnVubmluZ1Nlc3Npb25FcnJvciA9IHRoaXMucnVuU2Vzc2lvbkVycm9yKGVycik7XG4gICAgcmV0dXJuIHRoaXMucnVubmluZ1Nlc3Npb25FcnJvcjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcnVuU2Vzc2lvbkVycm9yKGVycjogU2Vzc2lvbkVycm9yKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZz8ub25TZXNzaW9uRXJyb3IpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb25maWcub25TZXNzaW9uRXJyb3IoZXJyKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gRGVmYXVsdDogY2xlYXIgdGhlIHNlc3Npb24gYW5kIGxldCB0aGUgYmFja2VuZCByZWJ1aWxkIHZpYSBSRVNUQVJUX1ZJRVdDT05URVhULlxuICAgICAgLy8gTm8gcm91dGVyIG5hdmlnYXRpb24gaGVyZSDigJQgdGhlIG5ldyB2aWV3Y29udGV4dCBkcml2ZXMgbmF2aWdhdGlvbiBzZXJ2ZXItc2lkZS5cbiAgICAgIGF3YWl0IHRoaXMuc2Vzc2lvbi5jbGVhckFuZFN0YXJ0TmV3U2Vzc2lvbigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnJ1bm5pbmdTZXNzaW9uRXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYmFja2VuZC1ib290c3RyYXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3Nlc3Npb24vc21hcnQtYmFja2VuZC1ib290c3RyYXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBVzNDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsS0FBSztJQUNoRDtRQUNFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcseUJBQXlCLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBR0QsTUFBTSxPQUFPLDRCQUE0QjtJQVF2QyxZQUNVLE9BQTRCLEVBQzVCLFdBQW9DO1FBRHBDLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQVB0QyxtQkFBYyxHQUFHLEtBQUssQ0FBQztJQVE1QixDQUFDO0lBRUosU0FBUyxDQUFDLE1BQW1DO1FBQzNDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUZBQXVGLENBQUMsQ0FBQztZQUN0RyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXJCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFN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LG1CQUFtQixFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDbEMsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQWlCO1FBQzdDLElBQUksQ0FBQztZQUNILElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEMsT0FBTztZQUNULENBQUM7WUFDRCxrRkFBa0Y7WUFDbEYsaUZBQWlGO1lBQ2pGLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9DLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7K0dBdk5VLDRCQUE0QjttSEFBNUIsNEJBQTRCLGNBRGYsTUFBTTs7NEZBQ25CLDRCQUE0QjtrQkFEeEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LXNlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBTbWFydFZpZXdDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3ZpZXctY29udGV4dC9zbWFydC12aWV3LWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uRXJyb3IsIFNtYXJ0U2Vzc2lvbkhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9zbWFydC1zZXNzaW9uLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQge1xuICBTbWFydEJhY2tlbmRCb290c3RyYXBDb25maWcsXG4gIFNtYXJ0QmFja2VuZEJvb3RzdHJhcENyZWRlbnRpYWxzLFxufSBmcm9tICcuL3NtYXJ0LWJhY2tlbmQtYm9vdHN0cmFwLmNvbmZpZyc7XG5cbnR5cGUgQm9vdHN0cmFwTW9kZSA9ICdzdGFydCcgfCAnYm9vdHN0cmFwV2l0aCc7XG5cbi8qKlxuICogVGhyb3duIGJ5IGB3aGVuUmVhZHkoKWAgd2hlbiB0aGUgdmlld2NvbnRleHQgd2FzIHJlYnVpbHQgYmV0d2VlbiB0aGVcbiAqIGNhbGxlcidzIGVudHJ5IGludG8gYHdoZW5SZWFkeSgpYCBhbmQgdGhlIGdhdGUgcmVsZWFzaW5nLiBBbnkgdXVpZCB0aGVcbiAqIGNhbGxlciByZXNvbHZlZCBiZWZvcmUgZW50ZXJpbmcgaXMgbm93IHN0YWxlOyBgU21hcnRDb21wb25lbnRBcGlDbGllbnQucnVuKClgXG4gKiBjYXRjaGVzIHRoaXMgYW5kIHNraXBzIHRoZSBsb2FkIOKAlCB0aGUgY29tcG9uZW50IGlzIGV4cGVjdGVkIHRvIHJlY2VpdmUgYVxuICogZnJlc2ggdXVpZCB0aHJvdWdoIGB1dWlkT2ZQYWdlSGFzQmVlbkNoYW5nZWRgIChOT1JNQUwgdmlld3MpIG9yIHRvIGJlXG4gKiByZWNyZWF0ZWQgYnkgYG9wZW5WaWV3YCAoRU1CRURERUQvRElBTE9HIHZpZXdzKS5cbiAqL1xuZXhwb3J0IGNsYXNzIFZpZXdDb250ZXh0UmVidWlsdEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignVmlld0NvbnRleHRSZWJ1aWx0Jyk7XG4gICAgdGhpcy5uYW1lID0gJ1ZpZXdDb250ZXh0UmVidWlsdEVycm9yJztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFNtYXJ0QmFja2VuZEJvb3RzdHJhcFNlcnZpY2UgaW1wbGVtZW50cyBTbWFydFNlc3Npb25IYW5kbGVyU2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlnPzogU21hcnRCYWNrZW5kQm9vdHN0cmFwQ29uZmlnO1xuICBwcml2YXRlIHJ1bm5pbmdJbml0PzogUHJvbWlzZTx2b2lkPjtcbiAgcHJpdmF0ZSBsYXN0SW5pdEZhaWxlZCA9IGZhbHNlO1xuICBwcml2YXRlIG1vZGU/OiBCb290c3RyYXBNb2RlO1xuICBwcml2YXRlIHJ1bm5pbmdWaWV3Q29udGV4dExvc3Q/OiBQcm9taXNlPHZvaWQ+O1xuICBwcml2YXRlIHJ1bm5pbmdTZXNzaW9uRXJyb3I/OiBQcm9taXNlPHZvaWQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2Vzc2lvbjogU21hcnRTZXNzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIHZpZXdDb250ZXh0OiBTbWFydFZpZXdDb250ZXh0U2VydmljZSxcbiAgKSB7fVxuXG4gIGNvbmZpZ3VyZShjb25maWc6IFNtYXJ0QmFja2VuZEJvb3RzdHJhcENvbmZpZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgY29uc29sZS53YXJuKCdTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlIGFscmVhZHkgY29uZmlndXJlZDsgaWdub3JpbmcgZHVwbGljYXRlIGNvbmZpZ3VyZSgpIGNhbGwuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuXG4gICAgdGhpcy5zZXNzaW9uLnNldFVybChjb25maWcudXJsKTtcbiAgICB0aGlzLnNlc3Npb24uc2V0Q29va2llTmFtZShjb25maWcuY29va2llTmFtZSk7XG4gICAgdGhpcy5zZXNzaW9uLnNldFNlc3Npb25IYW5kbGVyU2VydmljZSh0aGlzKTtcblxuICAgIHRoaXMudmlld0NvbnRleHQuc2V0Vmlld0hhbmRsZXJzKGNvbmZpZy52aWV3SGFuZGxlcnMpO1xuICAgIHRoaXMudmlld0NvbnRleHQuc2V0TWVzc2FnZURpYWxvZ05hbWUoY29uZmlnLm1lc3NhZ2VEaWFsb2dOYW1lID8/ICdtZXNzYWdlLWRpYWxvZycpO1xuICAgIHRoaXMudmlld0NvbnRleHQuc2V0QWN0aW9uRGVzY3JpcHRvcnMoY29uZmlnLmFjdGlvbkRlc2NyaXB0b3JzKTtcblxuICAgIHRoaXMudmlld0NvbnRleHQub3BlblNtYXJ0TGluay5zdWJzY3JpYmUoKGNoYW5uZWw6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVTbWFydExpbmsoY2hhbm5lbCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVNtYXJ0TGluayhjaGFubmVsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5jb25maWc/Lm9uU21hcnRMaW5rKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZy5vblNtYXJ0TGluayhjaGFubmVsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gRGVmYXVsdDogc2ltcGx5IHVuYmxvY2sgc2hvd1B1Ymxpc2hlZFZpZXcncyBgYXdhaXQgb3BlblNtYXJ0TGluay50b1Byb21pc2UoKWAuXG4gICAgLy8gVGhlIHZpZXdDb250ZXh0IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQgYnkgc3RhcnQoKS9ib290c3RyYXBXaXRoKCkg4oCUIGNhbGxpbmdcbiAgICAvLyBpbml0aWFsaXplKCkgaGVyZSB3aXRob3V0IGEgdXVpZCB3b3VsZCBhbHdheXMgdHJpZ2dlciBzdGFydFZpZXdDb250ZXh0KCksXG4gICAgLy8gY3JlYXRpbmcgYSBzZWNvbmQgdmlld2NvbnRleHQgYW5kIHByb2R1Y2luZyBkdXBsaWNhdGUgVUkgKGUuZy4gdHdvIGxvZ2luIHBhZ2VzKS5cbiAgICB0aGlzLnZpZXdDb250ZXh0Lm9wZW5TbWFydExpbmsuY29tcGxldGUoKTtcbiAgfVxuXG4gIHN0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ1NtYXJ0QmFja2VuZEJvb3RzdHJhcFNlcnZpY2UuY29uZmlndXJlKCkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIHN0YXJ0KCkuJykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2RlID09PSAnYm9vdHN0cmFwV2l0aCcgJiYgIXRoaXMubGFzdEluaXRGYWlsZWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXG4gICAgICAgICdTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlLmJvb3RzdHJhcFdpdGgoKSB3YXMgYWxyZWFkeSBjYWxsZWQ7IHN0YXJ0KCkgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggaXQuIENhbGwgcmVzZXQoKSBmaXJzdCB0byBzd2l0Y2ggZW50cnkgcG9pbnRzLicsXG4gICAgICApKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucnVubmluZ0luaXQgJiYgIXRoaXMubGFzdEluaXRGYWlsZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ1bm5pbmdJbml0O1xuICAgIH1cbiAgICB0aGlzLm1vZGUgPSAnc3RhcnQnO1xuICAgIHRoaXMubGFzdEluaXRGYWlsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJ1bm5pbmdJbml0ID0gdGhpcy5ydW5Jbml0KCk7XG4gICAgcmV0dXJuIHRoaXMucnVubmluZ0luaXQ7XG4gIH1cblxuICBib290c3RyYXBXaXRoKGNyZWRzOiBTbWFydEJhY2tlbmRCb290c3RyYXBDcmVkZW50aWFscyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ1NtYXJ0QmFja2VuZEJvb3RzdHJhcFNlcnZpY2UuY29uZmlndXJlKCkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGJvb3RzdHJhcFdpdGgoKS4nKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdzdGFydCcgJiYgIXRoaXMubGFzdEluaXRGYWlsZWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXG4gICAgICAgICdTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlLnN0YXJ0KCkgd2FzIGFscmVhZHkgY2FsbGVkOyBib290c3RyYXBXaXRoKCkgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggaXQuIENhbGwgcmVzZXQoKSBmaXJzdCB0byBzd2l0Y2ggZW50cnkgcG9pbnRzLicsXG4gICAgICApKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucnVubmluZ0luaXQgJiYgIXRoaXMubGFzdEluaXRGYWlsZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ1bm5pbmdJbml0O1xuICAgIH1cbiAgICB0aGlzLm1vZGUgPSAnYm9vdHN0cmFwV2l0aCc7XG4gICAgdGhpcy5sYXN0SW5pdEZhaWxlZCA9IGZhbHNlO1xuICAgIHRoaXMucnVubmluZ0luaXQgPSB0aGlzLnJ1bkJvb3RzdHJhcFdpdGgoY3JlZHMpO1xuICAgIHJldHVybiB0aGlzLnJ1bm5pbmdJbml0O1xuICB9XG5cbiAgYXN5bmMgd2hlblJlYWR5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5ydW5uaW5nSW5pdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdCb290c3RyYXBOb3RTdGFydGVkJyk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucnVubmluZ0luaXQ7XG4gICAgY29uc3QgZ2VuZXJhdGlvbkJlZm9yZSA9IHRoaXMudmlld0NvbnRleHQuZ2V0R2VuZXJhdGlvbigpO1xuICAgIC8vIEdhdGUgb24gYW55IGluLWZsaWdodCBzZXNzaW9uL3ZpZXdjb250ZXh0IHJlY292ZXJ5IHNvIGEgY29tcG9uZW50J3NcbiAgICAvLyBCRkYgY2FsbCBjYW5ub3QgcmFjZSBhZ2FpbnN0IHRoZSBzZXNzaW9uIGJlaW5nIHRvcm4gZG93biBhbmQgcmVidWlsdC5cbiAgICAvLyBUaGUgbG9vcCBoYW5kbGVzIGNhc2NhZGluZyByZWNvdmVyaWVzIChlLmcuIHZjLWxvc3Qgc3VyZmFjZXMgZHVyaW5nXG4gICAgLy8gYSBzZXNzaW9uIHJlc3RhcnQpOiBlYWNoIHNldHRsZSBjbGVhcnMgaXRzIG93biBsYXRjaCBpbiBmaW5hbGx5LCBhbmRcbiAgICAvLyB0aGUgbmV4dCBpdGVyYXRpb24gcGlja3MgdXAgd2hhdGV2ZXIgc3RhcnRlZCBpbiB0aGUgbWVhbnRpbWUuXG4gICAgd2hpbGUgKHRoaXMucnVubmluZ1ZpZXdDb250ZXh0TG9zdCB8fCB0aGlzLnJ1bm5pbmdTZXNzaW9uRXJyb3IpIHtcbiAgICAgIGF3YWl0IHRoaXMucnVubmluZ1ZpZXdDb250ZXh0TG9zdDtcbiAgICAgIGF3YWl0IHRoaXMucnVubmluZ1Nlc3Npb25FcnJvcjtcbiAgICB9XG4gICAgaWYgKHRoaXMudmlld0NvbnRleHQuZ2V0R2VuZXJhdGlvbigpICE9PSBnZW5lcmF0aW9uQmVmb3JlKSB7XG4gICAgICB0aHJvdyBuZXcgVmlld0NvbnRleHRSZWJ1aWx0RXJyb3IoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZXNldCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnJ1bm5pbmdJbml0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubGFzdEluaXRGYWlsZWQgPSBmYWxzZTtcbiAgICB0aGlzLm1vZGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5ydW5uaW5nVmlld0NvbnRleHRMb3N0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucnVubmluZ1Nlc3Npb25FcnJvciA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSBgU21hcnRFcnJvckNhdGNoaW5nSW50ZXJjZXB0b3JgIHdoZW4gdGhlIGJhY2tlbmQgcmVwb3J0c1xuICAgKiBgc2Vzc2lvbi52aWV3Y29udGV4dC5taXNzaW5nYC4gSWRlbXBvdGVudCBhY3Jvc3MgY29uY3VycmVudCBhbmRcbiAgICogc2VxdWVudGlhbCBjYWxscyB1bnRpbCB0aGUgbmV4dCBgcmVzZXQoKWAg4oCUIG11bHRpcGxlIHJhY2luZyBCRkZcbiAgICogZmFpbHVyZXMgY29sbGFwc2UgaW50byBhIHNpbmdsZSByZWNvdmVyeSBhdHRlbXB0LlxuICAgKi9cbiAgaGFuZGxlVmlld0NvbnRleHRMb3N0KGVycjogU2Vzc2lvbkVycm9yKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcbiAgICAgICAgJ1NtYXJ0QmFja2VuZEJvb3RzdHJhcFNlcnZpY2UuY29uZmlndXJlKCkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGhhbmRsZVZpZXdDb250ZXh0TG9zdCgpLicsXG4gICAgICApKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucnVubmluZ1ZpZXdDb250ZXh0TG9zdCkge1xuICAgICAgcmV0dXJuIHRoaXMucnVubmluZ1ZpZXdDb250ZXh0TG9zdDtcbiAgICB9XG4gICAgdGhpcy5ydW5uaW5nVmlld0NvbnRleHRMb3N0ID0gdGhpcy5ydW5WaWV3Q29udGV4dExvc3QoZXJyKTtcbiAgICByZXR1cm4gdGhpcy5ydW5uaW5nVmlld0NvbnRleHRMb3N0O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydW5WaWV3Q29udGV4dExvc3QoZXJyOiBTZXNzaW9uRXJyb3IpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuY29uZmlnPy5vblZpZXdDb250ZXh0TG9zdCkge1xuICAgICAgICBhd2FpdCB0aGlzLmNvbmZpZy5vblZpZXdDb250ZXh0TG9zdChlcnIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmluaXROZXdWaWV3Q29udGV4dCgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnJ1bm5pbmdWaWV3Q29udGV4dExvc3QgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSBgU21hcnRFcnJvckNhdGNoaW5nSW50ZXJjZXB0b3JgIGZvciB0cmFuc3BvcnQtbGV2ZWwgZmFpbHVyZXNcbiAgICogKHN0YXR1cyAwLCA1eHgpLiBGaXJlLWFuZC1mb3JnZXQ7IHRoZSByZXF1ZXN0IHN0aWxsIHJlamVjdHMgd2l0aCB0aGVcbiAgICogb3JpZ2luYWwgZXJyb3Igc28gY2FsbGVycyBjYW4gZG8gcGVyLWNhbGwgaGFuZGxpbmcuXG4gICAqL1xuICBhc3luYyBoYW5kbGVUcmFuc3BvcnRFcnJvcihlcnI6IEh0dHBFcnJvclJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcbiAgICAgICAgJ1NtYXJ0QmFja2VuZEJvb3RzdHJhcFNlcnZpY2UuY29uZmlndXJlKCkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGhhbmRsZVRyYW5zcG9ydEVycm9yKCkuJyxcbiAgICAgICkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWcub25UcmFuc3BvcnRFcnJvcikge1xuICAgICAgYXdhaXQgdGhpcy5jb25maWcub25UcmFuc3BvcnRFcnJvcihlcnIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLndhcm4oJ1RyYW5zcG9ydCBlcnJvciDigJQgc2VydmVyIHVucmVhY2hhYmxlIG9yIDV4eCcsIGVycik7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1bkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuc2Vzc2lvbi5pbml0aWFsaXplKCk7XG4gICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmluaXRWaWV3Q29udGV4dCgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgYXdhaXQgdGhpcy5oYW5kbGVJbml0RmFpbHVyZShlcnIpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcnVuQm9vdHN0cmFwV2l0aChjcmVkczogU21hcnRCYWNrZW5kQm9vdHN0cmFwQ3JlZGVudGlhbHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zZXNzaW9uLnNldFNlc3Npb25Ub2tlbihjcmVkcy5zZXNzaW9uVG9rZW4sIGNyZWRzLnJlZnJlc2hUb2tlbik7XG4gICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmluaXRGcm9tRXhpc3RpbmdWaWV3Q29udGV4dChjcmVkcy52aWV3Q29udGV4dFV1aWQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgYXdhaXQgdGhpcy5oYW5kbGVJbml0RmFpbHVyZShlcnIpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlSW5pdEZhaWx1cmUoZXJyOiB1bmtub3duKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5sYXN0SW5pdEZhaWxlZCA9IHRydWU7XG4gICAgaWYgKHRoaXMuY29uZmlnPy5vblN0YXJ0RXJyb3IpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY29uZmlnLm9uU3RhcnRFcnJvcihlcnIpO1xuICAgICAgfSBjYXRjaCAoY2FsbGJhY2tFcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignU21hcnRCYWNrZW5kQm9vdHN0cmFwU2VydmljZS5vblN0YXJ0RXJyb3IgY2FsbGJhY2sgdGhyZXcnLCBjYWxsYmFja0Vycik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU2Vzc2lvbkVycm9yKGVycjogU2Vzc2lvbkVycm9yKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcbiAgICAgICAgJ1NtYXJ0QmFja2VuZEJvb3RzdHJhcFNlcnZpY2UuY29uZmlndXJlKCkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGhhbmRsZVNlc3Npb25FcnJvcigpLicsXG4gICAgICApKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucnVubmluZ1Nlc3Npb25FcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMucnVubmluZ1Nlc3Npb25FcnJvcjtcbiAgICB9XG4gICAgdGhpcy5ydW5uaW5nU2Vzc2lvbkVycm9yID0gdGhpcy5ydW5TZXNzaW9uRXJyb3IoZXJyKTtcbiAgICByZXR1cm4gdGhpcy5ydW5uaW5nU2Vzc2lvbkVycm9yO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydW5TZXNzaW9uRXJyb3IoZXJyOiBTZXNzaW9uRXJyb3IpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuY29uZmlnPy5vblNlc3Npb25FcnJvcikge1xuICAgICAgICBhd2FpdCB0aGlzLmNvbmZpZy5vblNlc3Npb25FcnJvcihlcnIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBEZWZhdWx0OiBjbGVhciB0aGUgc2Vzc2lvbiBhbmQgbGV0IHRoZSBiYWNrZW5kIHJlYnVpbGQgdmlhIFJFU1RBUlRfVklFV0NPTlRFWFQuXG4gICAgICAvLyBObyByb3V0ZXIgbmF2aWdhdGlvbiBoZXJlIOKAlCB0aGUgbmV3IHZpZXdjb250ZXh0IGRyaXZlcyBuYXZpZ2F0aW9uIHNlcnZlci1zaWRlLlxuICAgICAgYXdhaXQgdGhpcy5zZXNzaW9uLmNsZWFyQW5kU3RhcnROZXdTZXNzaW9uKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMucnVubmluZ1Nlc3Npb25FcnJvciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|