@ohioepa/oepa-ui-lib 1.2.10 → 1.2.12
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/oepa-user-account/oepa-user-account.service.mjs +21 -13
- package/esm2022/lib/table/table.component.mjs +14 -4
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ohioepa-oepa-ui-lib.mjs +34 -16
- package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -1
- package/lib/oepa-user-account/oepa-user-account.service.d.ts +8 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/ohioepa-oepa-ui-lib-1.2.10.tgz +0 -0
|
@@ -11,13 +11,14 @@ export class OepaUserAccountService {
|
|
|
11
11
|
http;
|
|
12
12
|
ebizRootURL;
|
|
13
13
|
hostUrl = '/ebiz';
|
|
14
|
-
accountsUrl = '/api/v1/
|
|
14
|
+
accountsUrl = '/api/v1/user-accounts';
|
|
15
15
|
ebizAccountsUrl = '/api/v1/accounts';
|
|
16
16
|
ebizSessionUrl = '/api/v1/session';
|
|
17
17
|
account;
|
|
18
18
|
personID = '';
|
|
19
19
|
sessionID = '';
|
|
20
20
|
webappsRootURL = '';
|
|
21
|
+
ebizVersion = '';
|
|
21
22
|
logoutPath = '';
|
|
22
23
|
idleTimerRunning = false;
|
|
23
24
|
idleTime = 0;
|
|
@@ -29,7 +30,7 @@ export class OepaUserAccountService {
|
|
|
29
30
|
constructor(http, ebizRootURL) {
|
|
30
31
|
this.http = http;
|
|
31
32
|
this.ebizRootURL = ebizRootURL;
|
|
32
|
-
this.hostUrl = ebizRootURL + this.hostUrl;
|
|
33
|
+
this.hostUrl = this.ebizRootURL + this.hostUrl;
|
|
33
34
|
this.logoutPath = '/jsp/logout.jsp';
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
@@ -41,18 +42,19 @@ export class OepaUserAccountService {
|
|
|
41
42
|
}
|
|
42
43
|
retrieveAccountByOHID(ohid, app) {
|
|
43
44
|
console.log('retrieve account for: ' + ohid);
|
|
44
|
-
const url = this.hostUrl + '/
|
|
45
|
+
const url = this.hostUrl + this.accountsUrl + '/ohid/' + ohid;
|
|
45
46
|
return this.http.get(url, { params: { 'app': app } }).pipe(map((userAccount) => {
|
|
46
47
|
this.userAccount$.next(userAccount);
|
|
47
48
|
return userAccount;
|
|
48
49
|
}));
|
|
49
50
|
}
|
|
50
51
|
/**
|
|
52
|
+
* @deprecated Should not use session user ID for Amplify apps
|
|
51
53
|
* Retrieve the user account for the currently logged in user.
|
|
52
54
|
* @returns Observable<OepaUserAccount>
|
|
53
55
|
*/
|
|
54
56
|
retrieveAccountForCurrentUser() {
|
|
55
|
-
return this.http.get(this.hostUrl +
|
|
57
|
+
return this.http.get(this.hostUrl + '/api/v1/userAccounts/login').pipe(map((account) => {
|
|
56
58
|
if (!account) {
|
|
57
59
|
if (this.personID && this.sessionID) {
|
|
58
60
|
this.retrieveAccountForInternalSession(this.personID, this.sessionID).subscribe({
|
|
@@ -96,12 +98,13 @@ export class OepaUserAccountService {
|
|
|
96
98
|
}
|
|
97
99
|
/**
|
|
98
100
|
* Retrieve the user account for the currently logged in user.
|
|
101
|
+
* @deprecated should retrieve account by OHID instead
|
|
99
102
|
* @param sessionID person ID for internal user
|
|
100
103
|
* @returns Observable<OepaUserAccount>
|
|
101
104
|
*/
|
|
102
105
|
retrieveAccountForInternalSession(personID, sessionID) {
|
|
103
106
|
this.account = {};
|
|
104
|
-
const url = this.hostUrl +
|
|
107
|
+
const url = this.hostUrl + '/api/v1/userAccounts/internal/personID/' + personID + '/sessionID/' + sessionID;
|
|
105
108
|
console.log('retrieveAccountForInternalSession: ' + url);
|
|
106
109
|
return this.http.get(url).pipe(map((account) => {
|
|
107
110
|
this.account = account;
|
|
@@ -197,16 +200,16 @@ export class OepaUserAccountService {
|
|
|
197
200
|
}
|
|
198
201
|
}
|
|
199
202
|
getEBizVersion() {
|
|
200
|
-
if (this.
|
|
201
|
-
return of(this.
|
|
203
|
+
if (this.ebizVersion) {
|
|
204
|
+
return of(this.ebizVersion);
|
|
202
205
|
}
|
|
203
206
|
else {
|
|
204
207
|
const url = this.hostUrl + '/api/v1/gateway/gatewayConfig';
|
|
205
208
|
return this.http.get(url).pipe(map((gatewayConfig) => {
|
|
206
209
|
if (gatewayConfig) {
|
|
207
|
-
this.
|
|
210
|
+
this.ebizVersion = gatewayConfig.versionNumber;
|
|
208
211
|
}
|
|
209
|
-
return this.
|
|
212
|
+
return this.ebizVersion;
|
|
210
213
|
}));
|
|
211
214
|
}
|
|
212
215
|
}
|
|
@@ -315,20 +318,25 @@ export class OepaUserAccountService {
|
|
|
315
318
|
getIdleTimeout() {
|
|
316
319
|
return this.idleSubject.asObservable();
|
|
317
320
|
}
|
|
321
|
+
/**
|
|
322
|
+
* @deprecated We probably don't want to support this going forward
|
|
323
|
+
* @param message
|
|
324
|
+
* @returns
|
|
325
|
+
*/
|
|
318
326
|
logMessageOnServer(message) {
|
|
319
327
|
const messageResponse = {
|
|
320
328
|
response: message
|
|
321
329
|
};
|
|
322
|
-
const url = this.hostUrl +
|
|
330
|
+
const url = this.hostUrl + '/api/v1/userAccounts/logs/message';
|
|
323
331
|
return this.http.post(url, messageResponse);
|
|
324
332
|
}
|
|
325
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, deps: [{ token: i1.HttpClient }, { token: '
|
|
333
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
326
334
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService });
|
|
327
335
|
}
|
|
328
336
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, decorators: [{
|
|
329
337
|
type: Injectable
|
|
330
338
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
331
339
|
type: Inject,
|
|
332
|
-
args: ['
|
|
340
|
+
args: ['ebizRootURL']
|
|
333
341
|
}] }] });
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS11c2VyLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvb2VwYS11c2VyLWFjY291bnQvb2VwYS11c2VyLWFjY291bnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLMUI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBa0JiO0lBQXlDO0lBakJyRCxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ2xCLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQztJQUNyQyxlQUFlLEdBQUcsa0JBQWtCLENBQUM7SUFDckMsY0FBYyxHQUFHLGlCQUFpQixDQUFDO0lBQ25DLE9BQU8sQ0FBbUI7SUFDMUIsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUN0QixTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3ZCLGNBQWMsR0FBVyxFQUFFLENBQUM7SUFDNUIsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDekIsUUFBUSxHQUFVLENBQUMsQ0FBQztJQUNwQixhQUFhLEdBQUcsQ0FBQyxFQUFFLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5Q0FBeUM7SUFDbEUsV0FBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUFDcEMsU0FBUyxDQUFNO0lBQ2hCLFlBQVksR0FBNkIsSUFBSSxPQUFPLEVBQW1CLENBQUM7SUFDdkUsU0FBUyxHQUFXLEVBQUUsQ0FBQztJQUUvQixZQUFvQixJQUFnQixFQUF5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Q0FBQztnQkFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsT0FBZ0I7UUFDeEMsTUFBTSxlQUFlLEdBQVE7WUFDM0IsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQTtRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTSxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbkQsQ0FBQzt3R0FqVlEsc0JBQXNCLDRDQWtCYSxLQUFLOzRHQWxCeEMsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVOzswQkFtQjhCLE1BQU07MkJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9lcGFVc2VyQWNjb3VudCwgUHJvZ3JhbVByaXZpbGVnZSwgUHJvZ3JhbVByaXZpbGVnZVJlcXVlc3QsIERlbGVnYXRpb24sIE9FUEFSb2xlLCBPZXBhUHJpdmlsZWdlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcblxuLyoqXG4gKiBPZXBhVXNlckFjY291bnRTZXJ2aWNlIC0gQSBjb2xsZWN0aW9uIG9mIG1ldGhvZHMgZm9yIGFjY2Vzc2luZyBhbmQgbWFuaXB1bGF0aW5nIHVzZXIgYWNjb3VudHMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPZXBhVXNlckFjY291bnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBob3N0VXJsID0gJy9lYml6JztcbiAgcHJpdmF0ZSBhY2NvdW50c1VybCA9ICcvYXBpL3YxL3VzZXJBY2NvdW50cyc7XG4gIHByaXZhdGUgZWJpekFjY291bnRzVXJsID0gJy9hcGkvdjEvYWNjb3VudHMnO1xuICBwcml2YXRlIGViaXpTZXNzaW9uVXJsID0gJy9hcGkvdjEvc2Vzc2lvbic7XG4gIHByaXZhdGUgYWNjb3VudCE6IE9lcGFVc2VyQWNjb3VudDtcbiAgcHJpdmF0ZSBwZXJzb25JRDogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgc2Vzc2lvbklEOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSB3ZWJhcHBzUm9vdFVSTDogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgbG9nb3V0UGF0aDogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgaWRsZVRpbWVyUnVubmluZyA9IGZhbHNlO1xuICBwcml2YXRlIGlkbGVUaW1lOm51bWJlciA9IDA7XG4gIHByaXZhdGUgaWRsZVRocmVzaG9sZCA9ICgyOSo2MCk7IC8vIDI5IG1pbnV0ZSB0aW1lb3V0IHRocmVzaG9sZCBieSBkZWZhdWx0XG4gIHByaXZhdGUgaWRsZVN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIHByaXZhdGUgdGltZW91dElEOiBhbnk7XG4gIHB1YmxpYyB1c2VyQWNjb3VudCQ6IFN1YmplY3Q8T2VwYVVzZXJBY2NvdW50PiA9IG5ldyBTdWJqZWN0PE9lcGFVc2VyQWNjb3VudD4oKTtcbiAgcHJpdmF0ZSBhdXRoVG9rZW46IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgQEluamVjdCgnZW52JykgcHJpdmF0ZSBlYml6Um9vdFVSTDogc3RyaW5nKSB7XG4gICAgdGhpcy5ob3N0VXJsID0gZWJpelJvb3RVUkwgKyB0aGlzLmhvc3RVcmw7XG4gICAgdGhpcy5sb2dvdXRQYXRoID0gJy9qc3AvbG9nb3V0LmpzcCc7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIFVzZXIgQWNjb3VudCBmb3IgdGhlIHVzZXIgdXNlcmlkLlxuICAgKiBAcGFyYW0gdXNlcmlkXG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmVBY2NvdW50Rm9yVXNlcih1c2VyaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy8nICsgdXNlcmlkKTtcbiAgfVxuXG4gIHB1YmxpYyByZXRyaWV2ZUFjY291bnRCeU9ISUQob2hpZDogc3RyaW5nLCBhcHA6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgY29uc29sZS5sb2coJ3JldHJpZXZlIGFjY291bnQgZm9yOiAnICsgb2hpZCk7XG4gICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgJy9hcGkvdjEvdXNlckFjY291bnRzL29oaWQvJyArIG9oaWQgO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFVc2VyQWNjb3VudD4odXJsLCB7IHBhcmFtczogeyAnYXBwJzogYXBwIH0gfSkucGlwZShcbiAgICAgIG1hcCgodXNlckFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCkgPT4ge1xuICAgICAgICB0aGlzLnVzZXJBY2NvdW50JC5uZXh0KHVzZXJBY2NvdW50KTtcbiAgICAgICAgcmV0dXJuIHVzZXJBY2NvdW50O1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSB1c2VyIGFjY291bnQgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PlxuICAgKi9cbiAgcHVibGljIHJldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyKCk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9sb2dpbicpLnBpcGUobWFwKChhY2NvdW50OiBPZXBhVXNlckFjY291bnQpID0+IHtcbiAgICAgIGlmICghYWNjb3VudCkge1xuICAgICAgICBpZiAodGhpcy5wZXJzb25JRCAmJiB0aGlzLnNlc3Npb25JRCkge1xuICAgICAgICAgIHRoaXMucmV0cmlldmVBY2NvdW50Rm9ySW50ZXJuYWxTZXNzaW9uKHRoaXMucGVyc29uSUQsIHRoaXMuc2Vzc2lvbklEKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogaW50ZXJuYWxBY2NvdW50ID0+IHtcbiAgICAgICAgICAgIGlmIChpbnRlcm5hbEFjY291bnQpIHtcbiAgICAgICAgICAgICAgdGhpcy5hY2NvdW50ID0gaW50ZXJuYWxBY2NvdW50XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmxvZ01lc3NhZ2VPblNlcnZlcigncmV0cmlldmVBY2NvdW50Rm9yQ3VycmVudFVzZXIgLSBubyBhY2NvdW50LCByZWRpcmVjdGluZyB0byBsb2dvdXQnKTtcbiAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvTG9nb3V0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ01lc3NhZ2VPblNlcnZlcignRmFpbGVkIHJldHJpZXZpbmcgaW50ZXJuYWwgYWNjb3VudDogJyArIGVycik7XG4gICAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9Mb2dvdXQoKTtcbiAgICAgICAgICB9fSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2dNZXNzYWdlT25TZXJ2ZXIoJ3JldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyIC0gbm8gYWNjb3VudCwgcmVkaXJlY3RpbmcgdG8gbG9nb3V0Jyk7XG4gICAgICAgICAgdGhpcy5yZWRpcmVjdFRvTG9nb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWNjb3VudCA9IGFjY291bnQ7XG4gICAgICAgIGNvbnNvbGUubG9nKCdyZXRyaWV2ZUFjY291bnRGb3JDdXJyZW50VXNlcjogJyArIHRoaXMuYWNjb3VudD8ubG9naW5OYW1lIHx8ICc8dW5rbm93bj4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmFjY291bnQ7XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZGlyZWN0IHRvIGxvZ291dCBzY3JlZW4gaWYgdXNlciBpcyBub3QgZm91bmRcbiAgICovXG4gIHB1YmxpYyByZWRpcmVjdFRvTG9nb3V0KG1zZyA/OiBzdHJpbmcpIHtcbiAgICBsZXQgbG9nb3V0VXJsID0gdGhpcy5sb2dvdXRQYXRoO1xuICAgIGlmICh0aGlzLndlYmFwcHNSb290VVJMKSB7XG4gICAgICBsb2dvdXRVcmwgPSB0aGlzLndlYmFwcHNSb290VVJMICsgKHRoaXMubG9nb3V0UGF0aCB8fCAnJyk7XG4gICAgfVxuICAgIGFsZXJ0KG1zZyB8fCAnQ29ubmVjdGlvbiBsb3N0LiBZb3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBsb2dpbiBwYWdlLicpO1xuICAgIGNvbnNvbGUubG9nKCdyZWRpcmVjdGluZyB0byBsb2dvdXRVcmw6JyArIGxvZ291dFVybCk7XG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBsb2dvdXRVcmw7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIHVzZXIgYWNjb3VudCBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlci5cbiAgICogQHBhcmFtIHNlc3Npb25JRCBwZXJzb24gSUQgZm9yIGludGVybmFsIHVzZXJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+XG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmVBY2NvdW50Rm9ySW50ZXJuYWxTZXNzaW9uKHBlcnNvbklEOiBzdHJpbmcsIHNlc3Npb25JRDogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+IHtcbiAgICB0aGlzLmFjY291bnQgPSB7fTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9pbnRlcm5hbC9wZXJzb25JRC8nICsgcGVyc29uSUQgKyAnL3Nlc3Npb25JRC8nICsgc2Vzc2lvbklEO1xuICAgIGNvbnNvbGUubG9nKCdyZXRyaWV2ZUFjY291bnRGb3JJbnRlcm5hbFNlc3Npb246ICcgKyB1cmwpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFVc2VyQWNjb3VudD4odXJsKS5waXBlKG1hcCgoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KSA9PiB7XG4gICAgICB0aGlzLmFjY291bnQgPSBhY2NvdW50O1xuICAgICAgdGhpcy5wZXJzb25JRCA9IHBlcnNvbklEO1xuICAgICAgdGhpcy5zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7XG4gICAgICBjb25zb2xlLmxvZygncmV0cmlldmVBY2NvdW50Rm9ySW50ZXJuYWxTZXNzaW9uOiAnICsgdGhpcy5hY2NvdW50Py5sb2dpbk5hbWUgfHwgJzx1bmtub3duPicpO1xuICAgICAgcmV0dXJuIGFjY291bnQ7XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIGFjY291bnQgaGFzIHRoZSByb2xlIHJvbGVOYW1lLlxuICAgKiBAcGFyYW0gYWNjb3VudFxuICAgKiBAcGFyYW0gcm9sZU5hbWVcbiAgICovXG4gIHB1YmxpYyBhY2NvdW50SGFzUm9sZShhY2NvdW50OiBPZXBhVXNlckFjY291bnQsIHJvbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzUm9sZSA9IGZhbHNlO1xuICAgIGNvbnN0IHJvbGVMaXN0ID0gdGhpcy5nZXRSb2xlTGlzdChhY2NvdW50KTtcbiAgICBpZiAocm9sZUxpc3QgJiYgcm9sZUxpc3QubGVuZ3RoKSB7XG4gICAgICBoYXNSb2xlID0gKHJvbGVMaXN0LmluZGV4T2Yocm9sZU5hbWUpID4gLTEpO1xuICAgIH1cbiAgICByZXR1cm4gaGFzUm9sZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um9sZUxpc3QoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KTogQXJyYXk8c3RyaW5nPiB7XG4gICAgY29uc3Qgcm9sZUxpc3Q6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBpZiAoYWNjb3VudC5yb2xlTGlzdCAmJiBhY2NvdW50LnJvbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGFjY291bnQucm9sZUxpc3QuZm9yRWFjaCgocm9sZTogT0VQQVJvbGUpID0+IHtcbiAgICAgICAgcm9sZUxpc3QucHVzaChyb2xlLm5hbWUgfHwgJycpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByb2xlTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBhY2NvdW50IGhhcyB0aGUgcHJpdmlsZWdlIHByaXZpbGVnZVR5cGUuXG4gICAqIEBwYXJhbSBhY2NvdW50XG4gICAqIEBwYXJhbSBwcml2aWxlZ2VUeXBlXG4gICAqL1xuICBwdWJsaWMgYWNjb3VudEhhc1ByaXZpbGVnZShhY2NvdW50OiBPZXBhVXNlckFjY291bnQsIHByaXZpbGVnZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNQcml2aWxlZ2UgPSBmYWxzZTtcbiAgICBjb25zdCBwcml2aWxlZ2VMaXN0ID0gdGhpcy5nZXRQcml2aWxlZ2VMaXN0KGFjY291bnQpO1xuICAgIGlmIChwcml2aWxlZ2VMaXN0ICYmIHByaXZpbGVnZUxpc3QubGVuZ3RoKSB7XG4gICAgICBoYXNQcml2aWxlZ2UgPSAocHJpdmlsZWdlTGlzdC5pbmRleE9mKHByaXZpbGVnZVR5cGUpID4gLTEpO1xuICAgIH1cbiAgICByZXR1cm4gaGFzUHJpdmlsZWdlO1xuICB9XG5cbiAgcHVibGljIGdldFByaXZpbGVnZUxpc3QoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KTogQXJyYXk8c3RyaW5nPiB7XG4gICAgY29uc3QgcHJpdmlsZWdlTGlzdDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGlmIChhY2NvdW50LnJvbGVMaXN0ICYmIGFjY291bnQucm9sZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgYWNjb3VudC5yb2xlTGlzdC5mb3JFYWNoKChyb2xlOiBPRVBBUm9sZSkgPT4ge1xuICAgICAgICBpZiAocm9sZS5wcml2aWxlZ2VMaXN0ICYmIHJvbGUucHJpdmlsZWdlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcm9sZS5wcml2aWxlZ2VMaXN0LmZvckVhY2goKHByaXZpbGVnZTogT2VwYVByaXZpbGVnZSkgPT4ge1xuICAgICAgICAgICAgcHJpdmlsZWdlTGlzdC5wdXNoKHByaXZpbGVnZS50eXBlIHx8ICcnKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBwcml2aWxlZ2VMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSB1c2VyQWNjb3VudCBvZiB0aGUgY3VycmVudCB1c2VyLiBUaGUgcmV0cmlldmVBY2NvdW50Rm9yQ3VycmVudFVzZXIgbWV0aG9kXG4gICAqIG11c3QgYmUgaW52b2tlZCBwcmlvciB0byBpbnZva2luZyB0aGlzIG1ldGhvZC5cbiAgICovXG4gIHB1YmxpYyBnZXRDdXJyZW50VXNlckFjY291bnQoKTogT2VwYVVzZXJBY2NvdW50IHtcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50O1xuICB9XG5cbiAgcHVibGljIHNldEN1cnJlbnRVc2VyQWNjb3VudChhY2NvdW50OiBPZXBhVXNlckFjY291bnQpIHtcbiAgICB0aGlzLmFjY291bnQgPSBhY2NvdW50O1xuICAgIHRoaXMudXNlckFjY291bnQkLm5leHQodGhpcy5hY2NvdW50KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBdXRoVG9rZW4oKSA6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFRva2VuO1xuICB9XG5cbiAgcHVibGljIHNldEF1dGhUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgdGhpcy5hdXRoVG9rZW4gPSB0b2tlbjtcbiAgfVxuIFxuICAvKipcbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAqIEVCSVogTUVUSE9EUzpcbiAgICogVGhlIG1ldGhvZHMgYmVsb3cgY3VycmVudGx5IGFwcGx5IG9ubHkgdG8gZUJpei5cbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAqL1xuXG4gIHB1YmxpYyBnZXRXZWJhcHBzUm9vdFVSTCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLndlYmFwcHNSb290VVJMKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy53ZWJhcHBzUm9vdFVSTCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArICcvYXBpL3YxL2dhdGV3YXkvZ2F0ZXdheUNvbmZpZyc7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCkucGlwZShtYXAoKGdhdGV3YXlDb25maWc6YW55KSA9PiB7XG4gICAgICAgIGlmIChnYXRld2F5Q29uZmlnKSB7XG4gICAgICAgICAgdGhpcy53ZWJhcHBzUm9vdFVSTCA9IGdhdGV3YXlDb25maWcud2ViYXBwc1Jvb3RVUkw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMud2ViYXBwc1Jvb3RVUkw7XG4gICAgICB9KSk7XG4gICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFQml6VmVyc2lvbigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgaWYgKHRoaXMud2ViYXBwc1Jvb3RVUkwpIHtcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMud2ViYXBwc1Jvb3RVUkwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgJy9hcGkvdjEvZ2F0ZXdheS9nYXRld2F5Q29uZmlnJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwpLnBpcGUobWFwKChnYXRld2F5Q29uZmlnOmFueSkgPT4ge1xuICAgICAgICAgIGlmIChnYXRld2F5Q29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLndlYmFwcHNSb290VVJMID0gZ2F0ZXdheUNvbmZpZy52ZXJzaW9uTnVtYmVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWJhcHBzUm9vdFVSTDtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgICAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYXJyYXkgb2YgUHJvZ3JhbVByaXZpbGVnZXMgbWF0Y2hpbmcgcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3QuXG4gICAqIEBwYXJhbSBwcm9ncmFtUHJpdmlsZWdlUmVxdWVzdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEFycmF5PFByb2dyYW1Qcml2aWxlZ2U+PlxuICAgKi9cbiAgcHVibGljIHNlYXJjaFByaXZpbGVnZXMocHJvZ3JhbVByaXZpbGVnZVJlcXVlc3Q6IFByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LCBhbHRVc2VySUQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PFByb2dyYW1Qcml2aWxlZ2U+PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgdGhpcy5lYml6QWNjb3VudHNVcmwgKyAnL3Byb2dyYW1Qcml2aWxlZ2VzL3NlYXJjaCcgKyAoYWx0VXNlcklEID8gJz91c2VyaWQ9JyArIGFsdFVzZXJJRCA6ICcnKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXJyYXk8UHJvZ3JhbVByaXZpbGVnZT4+KHVybCwgcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBQcm9ncmFtUHJpdmlsZWdlIGJhc2VkIG9uIGNvbnRlbnRzIG9mIFByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LlxuICAgKiBAcGFyYW0gcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxQcm9ncmFtUHJpdmlsZWdlP1xuICAgKi9cbiAgcHVibGljIGNyZWF0ZVByb2dyYW1Qcml2aWxlZ2UocHJvZ3JhbVByaXZpbGVnZVJlcXVlc3Q6IFByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LCBhbHRVc2VySUQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb2dyYW1Qcml2aWxlZ2U+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UHJvZ3JhbVByaXZpbGVnZT4odGhpcy5ob3N0VXJsICsgdGhpcy5lYml6QWNjb3VudHNVcmwgKyAnL3Byb2dyYW1Qcml2aWxlZ2VzJysgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyksIFxuICAgIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIFByb2dyYW1Qcml2aWxlZ2UgaWRlbnRpZmllZCBieSBwcm9ncmFtUHJpdmlsZWdlSUQuXG4gICAqIEBwYXJhbSBwcm9ncmFtUHJpdmlsZWdlSURcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx2b2lkPlxuICAgKi9cbiAgcHVibGljIGRlbGV0ZVByb2dyYW1Qcml2aWxlZ2UocHJvZ3JhbVByaXZpbGVnZUlEOiBzdHJpbmcsIGFsdFVzZXJJRD86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodGhpcy5ob3N0VXJsICsgdGhpcy5lYml6QWNjb3VudHNVcmwgKyAnL3Byb2dyYW1Qcml2aWxlZ2VzLycgKyBwcm9ncmFtUHJpdmlsZWdlSUQgKyAoYWx0VXNlcklEID8gJz91c2VyaWQ9JyArIGFsdFVzZXJJRCA6ICcnKSwgXG4gICAgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxlZ2F0ZSBhIHByb2dyYW0gcHJpdmlsZWdlIGJhc2VkIG9uIGluZm9ybWF0aW9uIGluIGRlbGVnYXRpb24uXG4gICAqIEBwYXJhbSBkZWxlZ2F0aW9uXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dm9pZD5cbiAgICovXG4gIHB1YmxpYyBkZWxlZ2F0ZVByb2dyYW1Qcml2aWxlZ2UoZGVsZWdhdGlvbjogRGVsZWdhdGlvbiwgYWx0VXNlcklEPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5ob3N0VXJsICsgdGhpcy5lYml6QWNjb3VudHNVcmwgKyAnL3Byb2dyYW1Qcml2aWxlZ2VzL2RlbGVnYXRpb24nICsgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyksXG4gICAgZGVsZWdhdGlvbiwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KTtcbiAgfVxuXG4gLyoqXG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKiBIZWxwZXIgTUVUSE9EUzpcbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAqL1xuXG4gICAvKipcbiAgICAqIFNldCB0aGUgdXNlciBhY2NvdW50IHRvIGJlIHVzZWQgZm9yIFwibGl2ZSByZWxvYWQgbW9kZVwiXG4gICAgKiBAcGFyYW0gdXNlckFjY291bnQgXG4gICAgKi9cbiAgICBwdWJsaWMgc2V0TGl2ZVJlbG9hZFVzZXIodXNlckFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgICB0aGlzLmFjY291bnQgPSB1c2VyQWNjb3VudDtcbiAgICAgIGNvbnNvbGUubG9nKCdzZXRMaXZlUmVsb2FkVXNlcjogJyArIHRoaXMuYWNjb3VudD8ubG9naW5OYW1lIHx8ICc8dW5rbm93bj4nKTtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxPZXBhVXNlckFjY291bnQ+KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9saXZlUmVsb2FkJywgdXNlckFjY291bnQpO1xuICAgIH1cblxuICAgLyoqXG4gICAgKiBTdG9yZXMgdGhlIGdpdmVuIHVzZXIgaW4gdGhlIGVCaXogc2Vzc2lvbi5cbiAgICAqIEBwYXJhbSBhY2NvdW50VXNlcklEIFxuICAgICovXG4gICBwdWJsaWMgc3RvcmVVc2VySW5TZXNzaW9uKGFjY291bnRVc2VySUQ6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgIGxldCBhY2N0ID0ge30gYXMgT2VwYVVzZXJBY2NvdW50O1xuICAgICBhY2N0LmFjY291bnRJRCA9IGFjY291bnRVc2VySUQ7XG4gICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxPZXBhVXNlckFjY291bnQ+KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpelNlc3Npb25VcmwgKyAnL3N0b3JlVXNlci8nICsgYWNjb3VudFVzZXJJRCwgbnVsbCk7XG4gICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWUgaWYgdGhlIGN1cnJlbnQgdXNlciBzaG91bGQgYmUgYWxsb3dlZCB0byBzZWUgXCJkZW1vXCIgY2FwYWJpbGl0aWVzXG4gICAgICovXG4gICAgcHVibGljIGRlbW9DYXBhYmlsaXRpZXNBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgICAgbGV0IGRlbW9BbGxvd2VkID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5hY2NvdW50ICYmIHRoaXMuYWNjb3VudC5yb2xlTGlzdCkge1xuICAgICAgICB0aGlzLmFjY291bnQucm9sZUxpc3QuZm9yRWFjaChyb2xlID0+IHtcbiAgICAgICAgICBpZiAocm9sZS5uYW1lID09PSAnQWxsb3dEZW1vJykge1xuICAgICAgICAgICAgZGVtb0FsbG93ZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGVtb0FsbG93ZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXJ0SWRsZVRpbWVyKHRocmVzaG9sZD86IG51bWJlcikge1xuICAgICAgaWYgKHRoaXMudGltZW91dElEKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJRCk7XG4gICAgICB9XG4gICAgICB0aGlzLmlkbGVUaHJlc2hvbGQgPSB0aHJlc2hvbGQgfHwgdGhpcy5pZGxlVGhyZXNob2xkO1xuICAgICAgaWYgKCF0aGlzLmlkbGVUaW1lclJ1bm5pbmcpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1RoZSBpZGxlIHRpbWVvdXQgc3RhcnRlZCB3aXRoIHRocmVzaG9sZDogJyArIHRoaXMuaWRsZVRocmVzaG9sZCk7XG4gICAgICAgIHRoaXMuaWRsZVRpbWVyUnVubmluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuY2hlY2tUaW1lb3V0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0SWRsZVRpbWUoKSB7XG4gICAgICBjb25zb2xlLmxvZygnaWRsZSB0aW1lciByZXNldCcpO1xuICAgICAgdGhpcy5pZGxlVGltZSA9IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1RpbWVvdXQoKSB7XG4gICAgICB0aGlzLnRpbWVvdXRJRCA9IHNldFRpbWVvdXQoKCk9PiB7XG4gICAgICAgIHRoaXMuaWRsZVRpbWUgKz0gNjA7XG4gICAgICAgIGNvbnNvbGUubG9nKCdpZGxlIHRpbWUgPSAnICsgdGhpcy5pZGxlVGltZSArIFwiLCB0aHJlc2hvbGQgPSBcIiArIHRoaXMuaWRsZVRocmVzaG9sZCk7XG4gICAgICAgIGlmICh0aGlzLmlkbGVUaW1lID49IHRoaXMuaWRsZVRocmVzaG9sZCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdmaXJpbmcgbmV4dCBpZGxlU3ViamVjdC4uLicpO1xuICAgICAgICAgIHRoaXMuaWRsZVRpbWVyUnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaWRsZVN1YmplY3QubmV4dCh0aGlzLmlkbGVUaW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy50aW1lb3V0SUQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJRCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY2hlY2tUaW1lb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDYwMDAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWRsZVRpbWVvdXQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgIHJldHVybiB0aGlzLmlkbGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgbG9nTWVzc2FnZU9uU2VydmVyKG1lc3NhZ2U/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgY29uc3QgbWVzc2FnZVJlc3BvbnNlOiBhbnkgPSB7XG4gICAgICAgIHJlc3BvbnNlOiBtZXNzYWdlXG4gICAgICB9XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9sb2dzL21lc3NhZ2UnO1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odXJsLCBtZXNzYWdlUmVzcG9uc2UpO1xuICAgIH1cbn1cbiJdfQ==
|
|
342
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS11c2VyLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvb2VwYS11c2VyLWFjY291bnQvb2VwYS11c2VyLWFjY291bnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLMUI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBbUJiO0lBQWlEO0lBbEI3RCxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ2xCLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQztJQUN0QyxlQUFlLEdBQUcsa0JBQWtCLENBQUM7SUFDckMsY0FBYyxHQUFHLGlCQUFpQixDQUFDO0lBQ25DLE9BQU8sQ0FBbUI7SUFDMUIsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUN0QixTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3ZCLGNBQWMsR0FBVyxFQUFFLENBQUM7SUFDNUIsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQ3hCLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixRQUFRLEdBQVUsQ0FBQyxDQUFDO0lBQ3BCLGFBQWEsR0FBRyxDQUFDLEVBQUUsR0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztJQUNsRSxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUNwQyxTQUFTLENBQU07SUFDaEIsWUFBWSxHQUE2QixJQUFJLE9BQU8sRUFBbUIsQ0FBQztJQUN2RSxTQUFTLEdBQVcsRUFBRSxD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LENBQUMsQ0FBQztnQkFDL0IsQ0FBQztnQkFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGtCQUFrQixDQUFDLE9BQWdCO1FBQ3hDLE1BQU0sZUFBZSxHQUFRO1lBQzNCLFFBQVEsRUFBRSxPQUFPO1NBQ2xCLENBQUE7UUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLG1DQUFtQyxDQUFDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7d0dBelZRLHNCQUFzQiw0Q0FtQmEsYUFBYTs0R0FuQmhELHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVTs7MEJBb0I4QixNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPZXBhVXNlckFjY291bnQsIFByb2dyYW1Qcml2aWxlZ2UsIFByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LCBEZWxlZ2F0aW9uLCBPRVBBUm9sZSwgT2VwYVByaXZpbGVnZSB9IGZyb20gJ0BvaGlvZXBhL29lcGEtY29tbW9uLWxpYic7XG5cbi8qKlxuICogT2VwYVVzZXJBY2NvdW50U2VydmljZSAtIEEgY29sbGVjdGlvbiBvZiBtZXRob2RzIGZvciBhY2Nlc3NpbmcgYW5kIG1hbmlwdWxhdGluZyB1c2VyIGFjY291bnRzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT2VwYVVzZXJBY2NvdW50U2VydmljZSB7XG4gIHByaXZhdGUgaG9zdFVybCA9ICcvZWJpeic7XG4gIHByaXZhdGUgYWNjb3VudHNVcmwgPSAnL2FwaS92MS91c2VyLWFjY291bnRzJztcbiAgcHJpdmF0ZSBlYml6QWNjb3VudHNVcmwgPSAnL2FwaS92MS9hY2NvdW50cyc7XG4gIHByaXZhdGUgZWJpelNlc3Npb25VcmwgPSAnL2FwaS92MS9zZXNzaW9uJztcbiAgcHJpdmF0ZSBhY2NvdW50ITogT2VwYVVzZXJBY2NvdW50O1xuICBwcml2YXRlIHBlcnNvbklEOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBzZXNzaW9uSUQ6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHdlYmFwcHNSb290VVJMOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBlYml6VmVyc2lvbjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgbG9nb3V0UGF0aDogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgaWRsZVRpbWVyUnVubmluZyA9IGZhbHNlO1xuICBwcml2YXRlIGlkbGVUaW1lOm51bWJlciA9IDA7XG4gIHByaXZhdGUgaWRsZVRocmVzaG9sZCA9ICgyOSo2MCk7IC8vIDI5IG1pbnV0ZSB0aW1lb3V0IHRocmVzaG9sZCBieSBkZWZhdWx0XG4gIHByaXZhdGUgaWRsZVN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIHByaXZhdGUgdGltZW91dElEOiBhbnk7XG4gIHB1YmxpYyB1c2VyQWNjb3VudCQ6IFN1YmplY3Q8T2VwYVVzZXJBY2NvdW50PiA9IG5ldyBTdWJqZWN0PE9lcGFVc2VyQWNjb3VudD4oKTtcbiAgcHJpdmF0ZSBhdXRoVG9rZW46IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgQEluamVjdCgnZWJpelJvb3RVUkwnKSBwcml2YXRlIGViaXpSb290VVJMOiBzdHJpbmcpIHtcbiAgICB0aGlzLmhvc3RVcmwgPSB0aGlzLmViaXpSb290VVJMICsgdGhpcy5ob3N0VXJsO1xuICAgIHRoaXMubG9nb3V0UGF0aCA9ICcvanNwL2xvZ291dC5qc3AnO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBVc2VyIEFjY291bnQgZm9yIHRoZSB1c2VyIHVzZXJpZC5cbiAgICogQHBhcmFtIHVzZXJpZFxuICAgKi9cbiAgcHVibGljIHJldHJpZXZlQWNjb3VudEZvclVzZXIodXNlcmlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFVc2VyQWNjb3VudD4odGhpcy5ob3N0VXJsICsgdGhpcy5hY2NvdW50c1VybCArICcvJyArIHVzZXJpZCk7XG4gIH1cblxuICBwdWJsaWMgcmV0cmlldmVBY2NvdW50QnlPSElEKG9oaWQ6IHN0cmluZywgYXBwOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgIGNvbnNvbGUubG9nKCdyZXRyaWV2ZSBhY2NvdW50IGZvcjogJyArIG9oaWQpO1xuICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArIHRoaXMuYWNjb3VudHNVcmwgKyAnL29oaWQvJyArIG9oaWQgO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFVc2VyQWNjb3VudD4odXJsLCB7IHBhcmFtczogeyAnYXBwJzogYXBwIH0gfSkucGlwZShcbiAgICAgIG1hcCgodXNlckFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCkgPT4ge1xuICAgICAgICB0aGlzLnVzZXJBY2NvdW50JC5uZXh0KHVzZXJBY2NvdW50KTtcbiAgICAgICAgcmV0dXJuIHVzZXJBY2NvdW50O1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNob3VsZCBub3QgdXNlIHNlc3Npb24gdXNlciBJRCBmb3IgQW1wbGlmeSBhcHBzXG4gICAqIFJldHJpZXZlIHRoZSB1c2VyIGFjY291bnQgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PlxuICAgKi9cbiAgcHVibGljIHJldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyKCk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyAnL2FwaS92MS91c2VyQWNjb3VudHMvbG9naW4nKS5waXBlKG1hcCgoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KSA9PiB7XG4gICAgICBpZiAoIWFjY291bnQpIHtcbiAgICAgICAgaWYgKHRoaXMucGVyc29uSUQgJiYgdGhpcy5zZXNzaW9uSUQpIHtcbiAgICAgICAgICB0aGlzLnJldHJpZXZlQWNjb3VudEZvckludGVybmFsU2Vzc2lvbih0aGlzLnBlcnNvbklELCB0aGlzLnNlc3Npb25JRCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IGludGVybmFsQWNjb3VudCA9PiB7XG4gICAgICAgICAgICBpZiAoaW50ZXJuYWxBY2NvdW50KSB7XG4gICAgICAgICAgICAgIHRoaXMuYWNjb3VudCA9IGludGVybmFsQWNjb3VudFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5sb2dNZXNzYWdlT25TZXJ2ZXIoJ3JldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyIC0gbm8gYWNjb3VudCwgcmVkaXJlY3RpbmcgdG8gbG9nb3V0Jyk7XG4gICAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb0xvZ291dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dNZXNzYWdlT25TZXJ2ZXIoJ0ZhaWxlZCByZXRyaWV2aW5nIGludGVybmFsIGFjY291bnQ6ICcgKyBlcnIpO1xuICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvTG9nb3V0KCk7XG4gICAgICAgICAgfX0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nTWVzc2FnZU9uU2VydmVyKCdyZXRyaWV2ZUFjY291bnRGb3JDdXJyZW50VXNlciAtIG5vIGFjY291bnQsIHJlZGlyZWN0aW5nIHRvIGxvZ291dCcpO1xuICAgICAgICAgIHRoaXMucmVkaXJlY3RUb0xvZ291dCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFjY291bnQgPSBhY2NvdW50O1xuICAgICAgICBjb25zb2xlLmxvZygncmV0cmlldmVBY2NvdW50Rm9yQ3VycmVudFVzZXI6ICcgKyB0aGlzLmFjY291bnQ/LmxvZ2luTmFtZSB8fCAnPHVua25vd24+Jyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5hY2NvdW50O1xuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWRpcmVjdCB0byBsb2dvdXQgc2NyZWVuIGlmIHVzZXIgaXMgbm90IGZvdW5kXG4gICAqL1xuICBwdWJsaWMgcmVkaXJlY3RUb0xvZ291dChtc2cgPzogc3RyaW5nKSB7XG4gICAgbGV0IGxvZ291dFVybCA9IHRoaXMubG9nb3V0UGF0aDtcbiAgICBpZiAodGhpcy53ZWJhcHBzUm9vdFVSTCkge1xuICAgICAgbG9nb3V0VXJsID0gdGhpcy53ZWJhcHBzUm9vdFVSTCArICh0aGlzLmxvZ291dFBhdGggfHwgJycpO1xuICAgIH1cbiAgICBhbGVydChtc2cgfHwgJ0Nvbm5lY3Rpb24gbG9zdC4gWW91IHdpbGwgYmUgcmVkaXJlY3RlZCB0byB0aGUgbG9naW4gcGFnZS4nKTtcbiAgICBjb25zb2xlLmxvZygncmVkaXJlY3RpbmcgdG8gbG9nb3V0VXJsOicgKyBsb2dvdXRVcmwpO1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbG9nb3V0VXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSB1c2VyIGFjY291bnQgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCByZXRyaWV2ZSBhY2NvdW50IGJ5IE9ISUQgaW5zdGVhZFxuICAgKiBAcGFyYW0gc2Vzc2lvbklEIHBlcnNvbiBJRCBmb3IgaW50ZXJuYWwgdXNlclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD5cbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZUFjY291bnRGb3JJbnRlcm5hbFNlc3Npb24ocGVyc29uSUQ6IHN0cmluZywgc2Vzc2lvbklEOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgIHRoaXMuYWNjb3VudCA9IHt9O1xuICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArICcvYXBpL3YxL3VzZXJBY2NvdW50cy9pbnRlcm5hbC9wZXJzb25JRC8nICsgcGVyc29uSUQgKyAnL3Nlc3Npb25JRC8nICsgc2Vzc2lvbklEO1xuICAgIGNvbnNvbGUubG9nKCdyZXRyaWV2ZUFjY291bnRGb3JJbnRlcm5hbFNlc3Npb246ICcgKyB1cmwpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFVc2VyQWNjb3VudD4odXJsKS5waXBlKG1hcCgoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KSA9PiB7XG4gICAgICB0aGlzLmFjY291bnQgPSBhY2NvdW50O1xuICAgICAgdGhpcy5wZXJzb25JRCA9IHBlcnNvbklEO1xuICAgICAgdGhpcy5zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7XG4gICAgICBjb25zb2xlLmxvZygncmV0cmlldmVBY2NvdW50Rm9ySW50ZXJuYWxTZXNzaW9uOiAnICsgdGhpcy5hY2NvdW50Py5sb2dpbk5hbWUgfHwgJzx1bmtub3duPicpO1xuICAgICAgcmV0dXJuIGFjY291bnQ7XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIGFjY291bnQgaGFzIHRoZSByb2xlIHJvbGVOYW1lLlxuICAgKiBAcGFyYW0gYWNjb3VudFxuICAgKiBAcGFyYW0gcm9sZU5hbWVcbiAgICovXG4gIHB1YmxpYyBhY2NvdW50SGFzUm9sZShhY2NvdW50OiBPZXBhVXNlckFjY291bnQsIHJvbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzUm9sZSA9IGZhbHNlO1xuICAgIGNvbnN0IHJvbGVMaXN0ID0gdGhpcy5nZXRSb2xlTGlzdChhY2NvdW50KTtcbiAgICBpZiAocm9sZUxpc3QgJiYgcm9sZUxpc3QubGVuZ3RoKSB7XG4gICAgICBoYXNSb2xlID0gKHJvbGVMaXN0LmluZGV4T2Yocm9sZU5hbWUpID4gLTEpO1xuICAgIH1cbiAgICByZXR1cm4gaGFzUm9sZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um9sZUxpc3QoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KTogQXJyYXk8c3RyaW5nPiB7XG4gICAgY29uc3Qgcm9sZUxpc3Q6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBpZiAoYWNjb3VudC5yb2xlTGlzdCAmJiBhY2NvdW50LnJvbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGFjY291bnQucm9sZUxpc3QuZm9yRWFjaCgocm9sZTogT0VQQVJvbGUpID0+IHtcbiAgICAgICAgcm9sZUxpc3QucHVzaChyb2xlLm5hbWUgfHwgJycpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByb2xlTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBhY2NvdW50IGhhcyB0aGUgcHJpdmlsZWdlIHByaXZpbGVnZVR5cGUuXG4gICAqIEBwYXJhbSBhY2NvdW50XG4gICAqIEBwYXJhbSBwcml2aWxlZ2VUeXBlXG4gICAqL1xuICBwdWJsaWMgYWNjb3VudEhhc1ByaXZpbGVnZShhY2NvdW50OiBPZXBhVXNlckFjY291bnQsIHByaXZpbGVnZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNQcml2aWxlZ2UgPSBmYWxzZTtcbiAgICBjb25zdCBwcml2aWxlZ2VMaXN0ID0gdGhpcy5nZXRQcml2aWxlZ2VMaXN0KGFjY291bnQpO1xuICAgIGlmIChwcml2aWxlZ2VMaXN0ICYmIHByaXZpbGVnZUxpc3QubGVuZ3RoKSB7XG4gICAgICBoYXNQcml2aWxlZ2UgPSAocHJpdmlsZWdlTGlzdC5pbmRleE9mKHByaXZpbGVnZVR5cGUpID4gLTEpO1xuICAgIH1cbiAgICByZXR1cm4gaGFzUHJpdmlsZWdlO1xuICB9XG5cbiAgcHVibGljIGdldFByaXZpbGVnZUxpc3QoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KTogQXJyYXk8c3RyaW5nPiB7XG4gICAgY29uc3QgcHJpdmlsZWdlTGlzdDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGlmIChhY2NvdW50LnJvbGVMaXN0ICYmIGFjY291bnQucm9sZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgYWNjb3VudC5yb2xlTGlzdC5mb3JFYWNoKChyb2xlOiBPRVBBUm9sZSkgPT4ge1xuICAgICAgICBpZiAocm9sZS5wcml2aWxlZ2VMaXN0ICYmIHJvbGUucHJpdmlsZWdlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcm9sZS5wcml2aWxlZ2VMaXN0LmZvckVhY2goKHByaXZpbGVnZTogT2VwYVByaXZpbGVnZSkgPT4ge1xuICAgICAgICAgICAgcHJpdmlsZWdlTGlzdC5wdXNoKHByaXZpbGVnZS50eXBlIHx8ICcnKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBwcml2aWxlZ2VMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSB1c2VyQWNjb3VudCBvZiB0aGUgY3VycmVudCB1c2VyLiBUaGUgcmV0cmlldmVBY2NvdW50Rm9yQ3VycmVudFVzZXIgbWV0aG9kXG4gICAqIG11c3QgYmUgaW52b2tlZCBwcmlvciB0byBpbnZva2luZyB0aGlzIG1ldGhvZC5cbiAgICovXG4gIHB1YmxpYyBnZXRDdXJyZW50VXNlckFjY291bnQoKTogT2VwYVVzZXJBY2NvdW50IHtcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50O1xuICB9XG5cbiAgcHVibGljIHNldEN1cnJlbnRVc2VyQWNjb3VudChhY2NvdW50OiBPZXBhVXNlckFjY291bnQpIHtcbiAgICB0aGlzLmFjY291bnQgPSBhY2NvdW50O1xuICAgIHRoaXMudXNlckFjY291bnQkLm5leHQodGhpcy5hY2NvdW50KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBdXRoVG9rZW4oKSA6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFRva2VuO1xuICB9XG5cbiAgcHVibGljIHNldEF1dGhUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgdGhpcy5hdXRoVG9rZW4gPSB0b2tlbjtcbiAgfVxuIFxuICAvKipcbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAqIEVCSVogTUVUSE9EUzpcbiAgICogVGhlIG1ldGhvZHMgYmVsb3cgY3VycmVudGx5IGFwcGx5IG9ubHkgdG8gZUJpei5cbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAqL1xuXG4gIHB1YmxpYyBnZXRXZWJhcHBzUm9vdFVSTCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLndlYmFwcHNSb290VVJMKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy53ZWJhcHBzUm9vdFVSTCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArICcvYXBpL3YxL2dhdGV3YXkvZ2F0ZXdheUNvbmZpZyc7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCkucGlwZShtYXAoKGdhdGV3YXlDb25maWc6YW55KSA9PiB7XG4gICAgICAgIGlmIChnYXRld2F5Q29uZmlnKSB7XG4gICAgICAgICAgdGhpcy53ZWJhcHBzUm9vdFVSTCA9IGdhdGV3YXlDb25maWcud2ViYXBwc1Jvb3RVUkw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMud2ViYXBwc1Jvb3RVUkw7XG4gICAgICB9KSk7XG4gICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFQml6VmVyc2lvbigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgaWYgKHRoaXMuZWJpelZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuZWJpelZlcnNpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgJy9hcGkvdjEvZ2F0ZXdheS9nYXRld2F5Q29uZmlnJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwpLnBpcGUobWFwKChnYXRld2F5Q29uZmlnOmFueSkgPT4ge1xuICAgICAgICAgIGlmIChnYXRld2F5Q29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLmViaXpWZXJzaW9uID0gZ2F0ZXdheUNvbmZpZy52ZXJzaW9uTnVtYmVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5lYml6VmVyc2lvbjtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgICAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYXJyYXkgb2YgUHJvZ3JhbVByaXZpbGVnZXMgbWF0Y2hpbmcgcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3QuXG4gICAqIEBwYXJhbSBwcm9ncmFtUHJpdmlsZWdlUmVxdWVzdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEFycmF5PFByb2dyYW1Qcml2aWxlZ2U+PlxuICAgKi9cbiAgcHVibGljIHNlYXJjaFByaXZpbGVnZXMocHJvZ3JhbVByaXZpbGVnZVJlcXVlc3Q6IFByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LCBhbHRVc2VySUQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PFByb2dyYW1Qcml2aWxlZ2U+PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgdGhpcy5lYml6QWNjb3VudHNVcmwgKyAnL3Byb2dyYW1Qcml2aWxlZ2VzL3NlYXJjaCcgKyAoYWx0VXNlcklEID8gJz91c2VyaWQ9JyArIGFsdFVzZXJJRCA6ICcnKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXJyYXk8UHJvZ3JhbVByaXZpbGVnZT4+KHVybCwgcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBQcm9ncmFtUHJpdmlsZWdlIGJhc2VkIG9uIGNvbnRlbnRzIG9mIFByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LlxuICAgKiBAcGFyYW0gcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxQcm9ncmFtUHJpdmlsZWdlP1xuICAgKi9cbiAgcHVibGljIGNyZWF0ZVByb2dyYW1Qcml2aWxlZ2UocHJvZ3JhbVByaXZpbGVnZVJlcXVlc3Q6IFByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LCBhbHRVc2VySUQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb2dyYW1Qcml2aWxlZ2U+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UHJvZ3JhbVByaXZpbGVnZT4odGhpcy5ob3N0VXJsICsgdGhpcy5lYml6QWNjb3VudHNVcmwgKyAnL3Byb2dyYW1Qcml2aWxlZ2VzJysgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyksIFxuICAgIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIFByb2dyYW1Qcml2aWxlZ2UgaWRlbnRpZmllZCBieSBwcm9ncmFtUHJpdmlsZWdlSUQuXG4gICAqIEBwYXJhbSBwcm9ncmFtUHJpdmlsZWdlSURcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx2b2lkPlxuICAgKi9cbiAgcHVibGljIGRlbGV0ZVByb2dyYW1Qcml2aWxlZ2UocHJvZ3JhbVByaXZpbGVnZUlEOiBzdHJpbmcsIGFsdFVzZXJJRD86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodGhpcy5ob3N0VXJsICsgdGhpcy5lYml6QWNjb3VudHNVcmwgKyAnL3Byb2dyYW1Qcml2aWxlZ2VzLycgKyBwcm9ncmFtUHJpdmlsZWdlSUQgKyAoYWx0VXNlcklEID8gJz91c2VyaWQ9JyArIGFsdFVzZXJJRCA6ICcnKSwgXG4gICAgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxlZ2F0ZSBhIHByb2dyYW0gcHJpdmlsZWdlIGJhc2VkIG9uIGluZm9ybWF0aW9uIGluIGRlbGVnYXRpb24uXG4gICAqIEBwYXJhbSBkZWxlZ2F0aW9uXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dm9pZD5cbiAgICovXG4gIHB1YmxpYyBkZWxlZ2F0ZVByb2dyYW1Qcml2aWxlZ2UoZGVsZWdhdGlvbjogRGVsZWdhdGlvbiwgYWx0VXNlcklEPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5ob3N0VXJsICsgdGhpcy5lYml6QWNjb3VudHNVcmwgKyAnL3Byb2dyYW1Qcml2aWxlZ2VzL2RlbGVnYXRpb24nICsgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyksXG4gICAgZGVsZWdhdGlvbiwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KTtcbiAgfVxuXG4gLyoqXG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKiBIZWxwZXIgTUVUSE9EUzpcbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAqL1xuXG4gICAvKipcbiAgICAqIFNldCB0aGUgdXNlciBhY2NvdW50IHRvIGJlIHVzZWQgZm9yIFwibGl2ZSByZWxvYWQgbW9kZVwiXG4gICAgKiBAcGFyYW0gdXNlckFjY291bnQgXG4gICAgKi9cbiAgICBwdWJsaWMgc2V0TGl2ZVJlbG9hZFVzZXIodXNlckFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgICB0aGlzLmFjY291bnQgPSB1c2VyQWNjb3VudDtcbiAgICAgIGNvbnNvbGUubG9nKCdzZXRMaXZlUmVsb2FkVXNlcjogJyArIHRoaXMuYWNjb3VudD8ubG9naW5OYW1lIHx8ICc8dW5rbm93bj4nKTtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxPZXBhVXNlckFjY291bnQ+KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9saXZlUmVsb2FkJywgdXNlckFjY291bnQpO1xuICAgIH1cblxuICAgLyoqXG4gICAgKiBTdG9yZXMgdGhlIGdpdmVuIHVzZXIgaW4gdGhlIGVCaXogc2Vzc2lvbi5cbiAgICAqIEBwYXJhbSBhY2NvdW50VXNlcklEIFxuICAgICovXG4gICBwdWJsaWMgc3RvcmVVc2VySW5TZXNzaW9uKGFjY291bnRVc2VySUQ6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgIGxldCBhY2N0ID0ge30gYXMgT2VwYVVzZXJBY2NvdW50O1xuICAgICBhY2N0LmFjY291bnRJRCA9IGFjY291bnRVc2VySUQ7XG4gICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxPZXBhVXNlckFjY291bnQ+KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpelNlc3Npb25VcmwgKyAnL3N0b3JlVXNlci8nICsgYWNjb3VudFVzZXJJRCwgbnVsbCk7XG4gICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWUgaWYgdGhlIGN1cnJlbnQgdXNlciBzaG91bGQgYmUgYWxsb3dlZCB0byBzZWUgXCJkZW1vXCIgY2FwYWJpbGl0aWVzXG4gICAgICovXG4gICAgcHVibGljIGRlbW9DYXBhYmlsaXRpZXNBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgICAgbGV0IGRlbW9BbGxvd2VkID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5hY2NvdW50ICYmIHRoaXMuYWNjb3VudC5yb2xlTGlzdCkge1xuICAgICAgICB0aGlzLmFjY291bnQucm9sZUxpc3QuZm9yRWFjaChyb2xlID0+IHtcbiAgICAgICAgICBpZiAocm9sZS5uYW1lID09PSAnQWxsb3dEZW1vJykge1xuICAgICAgICAgICAgZGVtb0FsbG93ZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGVtb0FsbG93ZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXJ0SWRsZVRpbWVyKHRocmVzaG9sZD86IG51bWJlcikge1xuICAgICAgaWYgKHRoaXMudGltZW91dElEKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJRCk7XG4gICAgICB9XG4gICAgICB0aGlzLmlkbGVUaHJlc2hvbGQgPSB0aHJlc2hvbGQgfHwgdGhpcy5pZGxlVGhyZXNob2xkO1xuICAgICAgaWYgKCF0aGlzLmlkbGVUaW1lclJ1bm5pbmcpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1RoZSBpZGxlIHRpbWVvdXQgc3RhcnRlZCB3aXRoIHRocmVzaG9sZDogJyArIHRoaXMuaWRsZVRocmVzaG9sZCk7XG4gICAgICAgIHRoaXMuaWRsZVRpbWVyUnVubmluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuY2hlY2tUaW1lb3V0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0SWRsZVRpbWUoKSB7XG4gICAgICBjb25zb2xlLmxvZygnaWRsZSB0aW1lciByZXNldCcpO1xuICAgICAgdGhpcy5pZGxlVGltZSA9IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1RpbWVvdXQoKSB7XG4gICAgICB0aGlzLnRpbWVvdXRJRCA9IHNldFRpbWVvdXQoKCk9PiB7XG4gICAgICAgIHRoaXMuaWRsZVRpbWUgKz0gNjA7XG4gICAgICAgIGNvbnNvbGUubG9nKCdpZGxlIHRpbWUgPSAnICsgdGhpcy5pZGxlVGltZSArIFwiLCB0aHJlc2hvbGQgPSBcIiArIHRoaXMuaWRsZVRocmVzaG9sZCk7XG4gICAgICAgIGlmICh0aGlzLmlkbGVUaW1lID49IHRoaXMuaWRsZVRocmVzaG9sZCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdmaXJpbmcgbmV4dCBpZGxlU3ViamVjdC4uLicpO1xuICAgICAgICAgIHRoaXMuaWRsZVRpbWVyUnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaWRsZVN1YmplY3QubmV4dCh0aGlzLmlkbGVUaW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy50aW1lb3V0SUQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJRCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY2hlY2tUaW1lb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDYwMDAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWRsZVRpbWVvdXQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgIHJldHVybiB0aGlzLmlkbGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBXZSBwcm9iYWJseSBkb24ndCB3YW50IHRvIHN1cHBvcnQgdGhpcyBnb2luZyBmb3J3YXJkXG4gICAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9nTWVzc2FnZU9uU2VydmVyKG1lc3NhZ2U/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgY29uc3QgbWVzc2FnZVJlc3BvbnNlOiBhbnkgPSB7XG4gICAgICAgIHJlc3BvbnNlOiBtZXNzYWdlXG4gICAgICB9XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyAnL2FwaS92MS91c2VyQWNjb3VudHMvbG9ncy9tZXNzYWdlJztcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHVybCwgbWVzc2FnZVJlc3BvbnNlKTtcbiAgICB9XG59XG4iXX0=
|