ssi-security-commons 0.16.27 → 0.16.29
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/services/auth-interceptor.service.mjs +21 -10
- package/esm2022/lib/services/hybrid-encryption.service.mjs +70 -0
- package/esm2022/lib/services/session.service.mjs +3 -2
- package/esm2022/lib/services/web-authn.service.mjs +17 -2
- package/esm2022/lib/user.model.mjs +1 -1
- package/fesm2022/ssi-security-commons.mjs +104 -10
- package/fesm2022/ssi-security-commons.mjs.map +1 -1
- package/lib/services/auth-interceptor.service.d.ts +3 -1
- package/lib/services/hybrid-encryption.service.d.ts +20 -0
- package/lib/services/web-authn.service.d.ts +1 -0
- package/lib/user.model.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
import { Inject, Injectable } from '@angular/core';
|
|
3
3
|
import { HttpErrorResponse, HttpResponse } from '@angular/common/http';
|
|
4
|
-
import { BehaviorSubject, throwError } from 'rxjs';
|
|
4
|
+
import { BehaviorSubject, from, throwError } from 'rxjs';
|
|
5
5
|
import { catchError, filter, map, switchMap, take } from 'rxjs/operators';
|
|
6
6
|
import { MessagesService } from './messages.service';
|
|
7
7
|
import { LANG, TOKEN } from '../shared/constants';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "./crypto.service";
|
|
10
|
-
import * as i2 from "
|
|
11
|
-
import * as i3 from "
|
|
12
|
-
import * as i4 from "./
|
|
10
|
+
import * as i2 from "./hybrid-encryption.service";
|
|
11
|
+
import * as i3 from "@angular/router";
|
|
12
|
+
import * as i4 from "./jwt.service";
|
|
13
|
+
import * as i5 from "./session.service";
|
|
13
14
|
export class AuthInterceptor {
|
|
14
|
-
constructor(cryptoService, environment) {
|
|
15
|
+
constructor(cryptoService, hybridEncryptionService, environment) {
|
|
15
16
|
this.cryptoService = cryptoService;
|
|
17
|
+
this.hybridEncryptionService = hybridEncryptionService;
|
|
16
18
|
console.log('AuthInterceptor constructor');
|
|
17
19
|
this.environment = environment;
|
|
18
20
|
}
|
|
@@ -52,14 +54,23 @@ export class AuthInterceptor {
|
|
|
52
54
|
headers: request.headers.append('Language', l)
|
|
53
55
|
});
|
|
54
56
|
}
|
|
57
|
+
const isEncrypted = request.headers.get('X-Encrypted');
|
|
58
|
+
if (isEncrypted === 'true' && request.body) {
|
|
59
|
+
return from(this.hybridEncryptionService.encrypt(request.body)).pipe(switchMap(encryptedPayload => {
|
|
60
|
+
const newReq = request.clone({
|
|
61
|
+
body: encryptedPayload
|
|
62
|
+
});
|
|
63
|
+
return next.handle(newReq);
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
55
66
|
return next.handle(request);
|
|
56
67
|
}
|
|
57
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AuthInterceptor, deps: [{ token: i1.CryptoService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
68
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AuthInterceptor, deps: [{ token: i1.CryptoService }, { token: i2.HybridEncryptionService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
58
69
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AuthInterceptor }); }
|
|
59
70
|
}
|
|
60
71
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AuthInterceptor, decorators: [{
|
|
61
72
|
type: Injectable
|
|
62
|
-
}], ctorParameters: function () { return [{ type: i1.CryptoService }, { type: undefined, decorators: [{
|
|
73
|
+
}], ctorParameters: function () { return [{ type: i1.CryptoService }, { type: i2.HybridEncryptionService }, { type: undefined, decorators: [{
|
|
63
74
|
type: Inject,
|
|
64
75
|
args: ['environment']
|
|
65
76
|
}] }]; } });
|
|
@@ -156,10 +167,10 @@ export class ResponseInterceptor {
|
|
|
156
167
|
console.error(err);
|
|
157
168
|
});
|
|
158
169
|
}
|
|
159
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ResponseInterceptor, deps: [{ token: i0.Injector }, { token:
|
|
170
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ResponseInterceptor, deps: [{ token: i0.Injector }, { token: i3.Router }, { token: i1.CryptoService }, { token: i4.JwtService }, { token: i5.SessionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
160
171
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ResponseInterceptor }); }
|
|
161
172
|
}
|
|
162
173
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ResponseInterceptor, decorators: [{
|
|
163
174
|
type: Injectable
|
|
164
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type:
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoLWludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFLTCxpQkFBaUIsRUFDakIsWUFBWSxFQUNiLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJckQsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBS2xELE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQW9CLGFBQTRCLEVBQXlCLFdBQWdCO1FBQXJFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFFcEQsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVDLE1BQU0sRUFBRSxHQUFHLE1BQU0s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LENBQUMsSUFBSSxDQUFDO1lBQzFCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBQyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsR0FBRyxZQUFZLEdBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEU7UUFDSCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTFHVSxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwUmVxdWVzdCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cFJlc3BvbnNlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi9tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IENyeXB0b1NlcnZpY2UgfSBmcm9tICcuL2NyeXB0by5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IExBTkcsIFRPS0VOIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBKd3RTZXJ2aWNlIH0gZnJvbSAnLi9qd3Quc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgcHJpdmF0ZSBlbnZpcm9ubWVudDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNyeXB0b1NlcnZpY2U6IENyeXB0b1NlcnZpY2UsIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQ6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdBdXRoSW50ZXJjZXB0b3IgY29uc3RydWN0b3InKTtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG5cbiAgICBsZXQgdG9rZW47XG4gICAgaWYodGhpcy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uKSB7XG4gICAgICBjb25zdCB0ID0gdGhpcy5jcnlwdG9TZXJ2aWNlLmVuY3J5cHQoVE9LRU4pO1xuICAgICAgY29uc3QgdG8gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0odCk7XG4gICAgICBpZiAodG8pIHtcbiAgICAgICAgdG9rZW4gPSB0aGlzLmNyeXB0b1NlcnZpY2UuZGVjcnlwdCh0byk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRva2VuID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFRPS0VOKTtcbiAgICB9XG5cbiAgICBsZXQgZW5jcnlwdCA9IHJlcXVlc3QuaGVhZGVycy5nZXQoJ2VuY3J5cHRlZCcpO1xuICAgIGlmKGVuY3J5cHQgJiYgZW5jcnlwdCA9PT0gJ3RydWUnKXtcbiAgICAgIGxldCBib2R5ID0gcmVxdWVzdC5ib2R5O1xuICAgICAgbGV0IGJvZHlTdHIgPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgICAgIHZhciBuZXdCb2R5ID0ge1xuICAgICAgICBlbmNyeXB0ZWQ6IHRoaXMuY3J5cHRvU2VydmljZS5lbmNyeXB0KGJvZHlTdHIpXG4gICAgICB9XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5jbG9uZSh7XG4gICAgICAgIGJvZHk6IG5ld0JvZHlcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcbiAgICAgICAgc2V0SGVhZGVyczoge1xuICAgICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIHRva2VuLFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBsID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKExBTkcpO1xuICAgIGlmIChsICYmIHJlcXVlc3QudXJsLmluZGV4T2YodGhpcy5lbnZpcm9ubWVudC5hdXRoRW5kUG9pbnQpPDApIHtcbiAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcbiAgICAgICAgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzLmFwcGVuZCgnTGFuZ3VhZ2UnLCBsKVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KTtcbiAgfVxufVxuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZXNwb25zZUludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBwcml2YXRlIG1lc3NhZ2VzOiBNZXNzYWdlc1NlcnZpY2UgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcmVmcmVzaFRva2VuU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGNyeXB0b1NlcnZpY2U6IENyeXB0b1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBqd3RTZXJ2aWNlOiBKd3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2U6IFNlc3Npb25TZXJ2aWNlKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5pbmplY3Rvci5nZXQoTWVzc2FnZXNTZXJ2aWNlKTtcbiAgICB9KVxuICB9XG5cbiAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUoXG4gICAgICBtYXAoKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4ge1xuICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgbGV0IGVuY3J5cHQgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdlbmNyeXB0ZWQnKTtcbiAgICAgICAgICAgIGlmKGVuY3J5cHQgJiYgZW5jcnlwdCA9PT0gJ3RydWUnICYmIGV2ZW50LmJvZHkuZW5jcnlwdGVkKXtcbiAgICAgICAgICAgICAgZXZlbnQgPSBldmVudC5jbG9uZSh7Ym9keTogdGhpcy5kZWNyeXB0Qm9keShldmVudC5ib2R5KX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICBsZXQgbmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgICBpZiAodGhpcy5yb3V0ZXIudXJsICE9ICcvbG9naW4nICYmIHRoaXMucm91dGVyLnVybC5pbmRleE9mKCcvbG9naW4nKTwwKSB7XG4gICAgICAgICAgICAgIGlmIChuZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGU0MDFFcnJvcihyZXF1ZXN0LCBuZXh0KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgc2tpcEVycm9yID0gcmVxdWVzdC5oZWFkZXJzLmdldCgnc2tpcEVycm9yJyk7XG4gICAgICAgICAgICAgICAgaWYoc2tpcEVycm9yICYmIHNraXBFcnJvcj09PSd0cnVlJyl7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihuZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzPy5zaG93RXJyb3JNZXNzYWdlKG5lcnJvciwgcmVxdWVzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihuZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSkgYXMgT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj47XG4gIH1cblxuICBkZWNyeXB0Qm9keShib2R5OiBhbnkpOiBhbnkge1xuICAgIGxldCBlbmNyeXB0ZWQgPSBib2R5LmVuY3J5cHRlZDtcbiAgICBsZXQgc3RySnNvbiA9IHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KGVuY3J5cHRlZCk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RySnNvbik7XG4gIH1cblxuXG4gIHByaXZhdGUgaGFuZGxlNDAxRXJyb3IocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcbiAgICBpZiAoIXRoaXMuaXNSZWZyZXNoaW5nKSB7XG4gICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0UmVmcmVzaFRva2VuKCk7XG4gICAgICAgIGlmIChyZWZyZXNoVG9rZW4pe1xuICAgICAgICAgICAgY29uc3QgZGVjb2RlZCA9IHRoaXMuand0U2VydmljZS5kZWNvZGVUb2tlbihyZWZyZXNoVG9rZW4pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0TmV3VG9rZW5DbGllbnQocmVmcmVzaFRva2VuLCBkZWNvZGVkLmF6cCkucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZWZyZXNoIHRva2VuIHJlc3BvbnNlJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0VG9rZW4ocmVzLmFjY2Vzc190b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0UmVmcmVzaFRva2VuKHJlcy5yZWZyZXNoX3Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQocmVzLmFjY2Vzc190b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLmFkZFRva2VuSGVhZGVyKHJlcXVlc3QsIHJlcy5hY2Nlc3NfdG9rZW4pKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1JlZnJlc2hpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5sb2dvdXQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nb1RvTG9naW4oKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QucGlwZShcbiAgICAgICAgICAgIGZpbHRlcih0b2tlbiA9PiB0b2tlbiAhPT0gbnVsbCksXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCh0b2tlbikgPT4gbmV4dC5oYW5kbGUodGhpcy5hZGRUb2tlbkhlYWRlcihyZXF1ZXN0LCB0b2tlbikpKVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkVG9rZW5IZWFkZXIocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgdG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiByZXF1ZXN0LmNsb25lKHsgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIHRva2VuKSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ29Ub0xvZ2luKCk6IHZvaWQge1xuICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0TG9naW5VcmwoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICBjb25zdCBsb2dpblVybCA9IHJlcy5kYXRhO1xuICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICBpZiAodXJsLmluZGV4T2YobG9naW5VcmwpPDApIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBsb2dpblVybCArICc/Y29udGludWU9JytlbmNvZGVVUklDb21wb25lbnQodXJsKTtcbiAgICAgIH1cbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfSk7XG4gIH1cblxufVxuXG5cblxuXG4iXX0=
|
|
175
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i3.Router }, { type: i1.CryptoService }, { type: i4.JwtService }, { type: i5.SessionService }]; } });
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoLWludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFLTCxpQkFBaUIsRUFDakIsWUFBWSxFQUNiLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXJELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFNbEQsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFBb0IsYUFBNEIsRUFBVSx1QkFBZ0QsRUFBeUIsV0FBZ0I7UUFBL0gsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ3hHLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFFcEQsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENB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LENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ3pFLENBQUM7U0FDTDtJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsT0FBeUIsRUFBRSxLQUFhO1FBQzdELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsU0FBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztZQUMxQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNqQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUMsQ0FBQyxFQUFFO2dCQUMzQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLEdBQUcsWUFBWSxHQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3hFO1FBQ0gsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0ExR1UsbUJBQW1CO2tIQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwRXZlbnQsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cEVycm9yUmVzcG9uc2UsXG4gIEh0dHBSZXNwb25zZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VzU2VydmljZSB9IGZyb20gJy4vbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDcnlwdG9TZXJ2aWNlIH0gZnJvbSAnLi9jcnlwdG8uc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBMQU5HLCBUT0tFTiB9IGZyb20gJy4uL3NoYXJlZC9jb25zdGFudHMnO1xuaW1wb3J0IHsgSnd0U2VydmljZSB9IGZyb20gJy4vand0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSHlicmlkRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuL2h5YnJpZC1lbmNyeXB0aW9uLnNlcnZpY2UnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIHByaXZhdGUgZW52aXJvbm1lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjcnlwdG9TZXJ2aWNlOiBDcnlwdG9TZXJ2aWNlLCBwcml2YXRlIGh5YnJpZEVuY3J5cHRpb25TZXJ2aWNlOiBIeWJyaWRFbmNyeXB0aW9uU2VydmljZSwgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55KSB7XG4gICAgY29uc29sZS5sb2coJ0F1dGhJbnRlcmNlcHRvciBjb25zdHJ1Y3RvcicpO1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcblxuICAgIGxldCB0b2tlbjtcbiAgICBpZih0aGlzLmVudmlyb25tZW50LnByb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnN0IHQgPSB0aGlzLmNyeXB0b1NlcnZpY2UuZW5jcnlwdChUT0tFTik7XG4gICAgICBjb25zdCB0byA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0KTtcbiAgICAgIGlmICh0bykge1xuICAgICAgICB0b2tlbiA9IHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KHRvKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oVE9LRU4pO1xuICAgIH1cblxuICAgIGxldCBlbmNyeXB0ID0gcmVxdWVzdC5oZWFkZXJzLmdldCgnZW5jcnlwdGVkJyk7XG4gICAgaWYoZW5jcnlwdCAmJiBlbmNyeXB0ID09PSAndHJ1ZScpe1xuICAgICAgbGV0IGJvZHkgPSByZXF1ZXN0LmJvZHk7XG4gICAgICBsZXQgYm9keVN0ciA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgICAgdmFyIG5ld0JvZHkgPSB7XG4gICAgICAgIGVuY3J5cHRlZDogdGhpcy5jcnlwdG9TZXJ2aWNlLmVuY3J5cHQoYm9keVN0cilcbiAgICAgIH1cbiAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcbiAgICAgICAgYm9keTogbmV3Qm9keVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0b2tlbikge1xuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgdG9rZW4sXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGwgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oTEFORyk7XG4gICAgaWYgKGwgJiYgcmVxdWVzdC51cmwuaW5kZXhPZih0aGlzLmVudmlyb25tZW50LmF1dGhFbmRQb2ludCk8MCkge1xuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMuYXBwZW5kKCdMYW5ndWFnZScsIGwpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0VuY3J5cHRlZCA9IHJlcXVlc3QuaGVhZGVycy5nZXQoJ1gtRW5jcnlwdGVkJyk7XG4gICAgaWYgKGlzRW5jcnlwdGVkID09PSAndHJ1ZScgJiYgcmVxdWVzdC5ib2R5KSB7XG4gICAgICByZXR1cm4gZnJvbSh0aGlzLmh5YnJpZEVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQocmVxdWVzdC5ib2R5KSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGVuY3J5cHRlZFBheWxvYWQgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1JlcSA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICAgICAgYm9keTogZW5jcnlwdGVkUGF5bG9hZFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShuZXdSZXEpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCk7XG4gIH1cbn1cblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVzcG9uc2VJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgcHJpdmF0ZSBtZXNzYWdlczogTWVzc2FnZXNTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICBwcml2YXRlIHJlZnJlc2hUb2tlblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjcnlwdG9TZXJ2aWNlOiBDcnlwdG9TZXJ2aWNlLFxuICAgIHByaXZhdGUgand0U2VydmljZTogSnd0U2VydmljZSxcbiAgICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlOiBTZXNzaW9uU2VydmljZSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMuaW5qZWN0b3IuZ2V0KE1lc3NhZ2VzU2VydmljZSk7XG4gICAgfSlcbiAgfVxuXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcblxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKFxuICAgICAgbWFwKChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGxldCBlbmNyeXB0ID0gcmVxdWVzdC5oZWFkZXJzLmdldCgnZW5jcnlwdGVkJyk7XG4gICAgICAgICAgICBpZihlbmNyeXB0ICYmIGVuY3J5cHQgPT09ICd0cnVlJyAmJiBldmVudC5ib2R5LmVuY3J5cHRlZCl7XG4gICAgICAgICAgICAgIGV2ZW50ID0gZXZlbnQuY2xvbmUoe2JvZHk6IHRoaXMuZGVjcnlwdEJvZHkoZXZlbnQuYm9keSl9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgbGV0IG5lcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgaWYgKHRoaXMucm91dGVyLnVybCAhPSAnL2xvZ2luJyAmJiB0aGlzLnJvdXRlci51cmwuaW5kZXhPZignL2xvZ2luJyk8MCkge1xuICAgICAgICAgICAgICBpZiAobmVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlNDAxRXJyb3IocmVxdWVzdCwgbmV4dCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHNraXBFcnJvciA9IHJlcXVlc3QuaGVhZGVycy5nZXQoJ3NraXBFcnJvcicpO1xuICAgICAgICAgICAgICAgIGlmKHNraXBFcnJvciAmJiBza2lwRXJyb3I9PT0ndHJ1ZScpe1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobmVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcz8uc2hvd0Vycm9yTWVzc2FnZShuZXJyb3IsIHJlcXVlc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobmVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpIGFzIE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+O1xuICB9XG5cbiAgZGVjcnlwdEJvZHkoYm9keTogYW55KTogYW55IHtcbiAgICBsZXQgZW5jcnlwdGVkID0gYm9keS5lbmNyeXB0ZWQ7XG4gICAgbGV0IHN0ckpzb24gPSB0aGlzLmNyeXB0b1NlcnZpY2UuZGVjcnlwdChlbmNyeXB0ZWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKHN0ckpzb24pO1xuICB9XG5cblxuICBwcml2YXRlIGhhbmRsZTQwMUVycm9yKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzUmVmcmVzaGluZykge1xuICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldFJlZnJlc2hUb2tlbigpO1xuICAgICAgICBpZiAocmVmcmVzaFRva2VuKXtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWQgPSB0aGlzLmp3dFNlcnZpY2UuZGVjb2RlVG9rZW4ocmVmcmVzaFRva2VuKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldE5ld1Rva2VuQ2xpZW50KHJlZnJlc2hUb2tlbiwgZGVjb2RlZC5henApLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygncmVmcmVzaCB0b2tlbiByZXNwb25zZScpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldFRva2VuKHJlcy5hY2Nlc3NfdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldFJlZnJlc2hUb2tlbihyZXMucmVmcmVzaF90b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5uZXh0KHJlcy5hY2Nlc3NfdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUodGhpcy5hZGRUb2tlbkhlYWRlcihyZXF1ZXN0LCByZXMuYWNjZXNzX3Rva2VuKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UubG9nb3V0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub0xvZ2luKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0LnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIodG9rZW4gPT4gdG9rZW4gIT09IG51bGwpLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodG9rZW4pID0+IG5leHQuaGFuZGxlKHRoaXMuYWRkVG9rZW5IZWFkZXIocmVxdWVzdCwgdG9rZW4pKSlcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFRva2VuSGVhZGVyKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIHRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7IGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyB0b2tlbikgfSk7XG4gIH1cblxuICBwcml2YXRlIGdvVG9Mb2dpbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldExvZ2luVXJsKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgY29uc3QgbG9naW5VcmwgPSByZXMuZGF0YTtcbiAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgaWYgKHVybC5pbmRleE9mKGxvZ2luVXJsKTwwKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbG9naW5VcmwgKyAnP2NvbnRpbnVlPScrZW5jb2RlVVJJQ29tcG9uZW50KHVybCk7XG4gICAgICB9XG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH0pO1xuICB9XG5cbn1cblxuXG5cblxuIl19
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class HybridEncryptionService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.publicKeyPem = `-----BEGIN PUBLIC KEY-----
|
|
6
|
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAydjMaPDQvcNCPsB3zmuA
|
|
7
|
+
RyDw/eVPjH8eITcWq+TnmqW4FCxwTxAQQy8bEnO7HC8eUVaD8tlNaLVjiRRCo0+o
|
|
8
|
+
JMDZC5S9aUGpz/Ueghp5aziu0abk7pZ+x/BrfpAN+7VteZh00d/YAtZlbQ6kHM44
|
|
9
|
+
oz2d7Fj1MPzB22ZoEnmcFqBlvsW8yblM38HEAKRXj9733XiayDoq6ivP046IFBpP
|
|
10
|
+
Cgg7kOLfOYMt7ZNkaKzDeYBfQAvhW+Nd6EN+8CCrI8//fnwRbrItzgR5KXwJ0F5T
|
|
11
|
+
w6/YhIkJi7Ce6kR8D7aYdXNoRKzX5m+GxSkLtiMImHOnVWg+wo/lvCbLRWS+QQ14
|
|
12
|
+
pQIDAQAB
|
|
13
|
+
-----END PUBLIC KEY-----`;
|
|
14
|
+
this.loadPublicKey();
|
|
15
|
+
}
|
|
16
|
+
/** Import RSA public key */
|
|
17
|
+
async loadPublicKey() {
|
|
18
|
+
const pemHeader = '-----BEGIN PUBLIC KEY-----';
|
|
19
|
+
const pemFooter = '-----END PUBLIC KEY-----';
|
|
20
|
+
const pemContents = this.publicKeyPem
|
|
21
|
+
.replace(pemHeader, '')
|
|
22
|
+
.replace(pemFooter, '')
|
|
23
|
+
.replace(/\s/g, '');
|
|
24
|
+
const binaryDer = Uint8Array.from(atob(pemContents), c => c.charCodeAt(0));
|
|
25
|
+
this.publicKey = await crypto.subtle.importKey('spki', binaryDer.buffer, {
|
|
26
|
+
name: 'RSA-OAEP',
|
|
27
|
+
hash: 'SHA-256'
|
|
28
|
+
}, true, ['encrypt']);
|
|
29
|
+
}
|
|
30
|
+
/** Generate a random AES key */
|
|
31
|
+
async generateAesKey() {
|
|
32
|
+
return crypto.subtle.generateKey({ name: 'AES-GCM', length: 256 }, true, ['encrypt', 'decrypt']);
|
|
33
|
+
}
|
|
34
|
+
/** Encrypt large data with AES and AES key with RSA */
|
|
35
|
+
async encrypt(data) {
|
|
36
|
+
if (!this.publicKey) {
|
|
37
|
+
await this.loadPublicKey();
|
|
38
|
+
}
|
|
39
|
+
// Convert payload to JSON + Uint8Array
|
|
40
|
+
const encoder = new TextEncoder();
|
|
41
|
+
const plainBytes = encoder.encode(JSON.stringify(data));
|
|
42
|
+
// Generate AES key + IV
|
|
43
|
+
const aesKey = await this.generateAesKey();
|
|
44
|
+
const iv = crypto.getRandomValues(new Uint8Array(12)); // AES-GCM nonce
|
|
45
|
+
// Encrypt data with AES
|
|
46
|
+
const encryptedDataBuffer = await crypto.subtle.encrypt({ name: 'AES-GCM', iv }, aesKey, plainBytes);
|
|
47
|
+
// Export AES key
|
|
48
|
+
const rawAesKey = await crypto.subtle.exportKey('raw', aesKey);
|
|
49
|
+
// Encrypt AES key with RSA
|
|
50
|
+
const encryptedKeyBuffer = await crypto.subtle.encrypt({ name: 'RSA-OAEP' }, this.publicKey, rawAesKey);
|
|
51
|
+
return {
|
|
52
|
+
encryptedKey: this.arrayBufferToBase64(encryptedKeyBuffer),
|
|
53
|
+
encryptedData: this.arrayBufferToBase64(encryptedDataBuffer),
|
|
54
|
+
iv: this.arrayBufferToBase64(iv.buffer)
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/** Convert ArrayBuffer → Base64 */
|
|
58
|
+
arrayBufferToBase64(buffer) {
|
|
59
|
+
return btoa(String.fromCharCode(...new Uint8Array(buffer)));
|
|
60
|
+
}
|
|
61
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: HybridEncryptionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
62
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: HybridEncryptionService, providedIn: 'root' }); }
|
|
63
|
+
}
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: HybridEncryptionService, decorators: [{
|
|
65
|
+
type: Injectable,
|
|
66
|
+
args: [{
|
|
67
|
+
providedIn: 'root'
|
|
68
|
+
}]
|
|
69
|
+
}], ctorParameters: function () { return []; } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlicmlkLWVuY3J5cHRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NzaS1zZWN1cml0eS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvaHlicmlkLWVuY3J5cHRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sdUJBQXVCO0lBWWxDO1FBWFEsaUJBQVksR0FBRzs7Ozs7Ozs7eUJBUUEsQ0FBQztRQUl0QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELDRCQUE0QjtJQUNwQixLQUFLLENBQUMsYUFBYTtRQUN6QixNQUFNLFNBQVMsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxNQUFNLFNBQVMsR0FBRywwQkFBMEIsQ0FBQztRQUM3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWTthQUNsQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQzthQUN0QixPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQzthQUN0QixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXRCLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTNFLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDNUMsTUFBTSxFQUNOLFNBQVMsQ0FBQyxNQUFNLEVBQ2hCO1lBQ0UsSUFBSSxFQUFFLFVBQVU7WUFDaEIsSUFBSSxFQUFFLFNBQVM7U0FDaEIsRUFDRCxJQUFJLEVBQ0osQ0FBQyxTQUFTLENBQUMsQ0FDWixDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUN4QixLQUFLLENBQUMsY0FBYztRQUMxQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUM5QixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUNoQyxJQUFJLEVBQ0osQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQ3ZCLENBQUM7SUFDSixDQUFDO0lBRUQsdURBQXVEO0lBQ3ZELEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBUztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUM1QjtRQUVELHVDQUF1QztRQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXhELHdCQUF3QjtRQUN4QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7UUFFdkUsd0JBQXdCO1FBQ3hCLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FDckQsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUN2QixNQUFNLEVBQ04sVUFBVSxDQUNYLENBQUM7UUFFRixpQkFBaUI7UUFDakIsTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFL0QsMkJBQTJCO1FBQzNCLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FDcEQsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQ2QsU0FBUyxDQUNWLENBQUM7UUFFRixPQUFPO1lBQ0wsWUFBWSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQztZQUMxRCxhQUFhLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDO1lBQzVELEVBQUUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQztTQUN4QyxDQUFDO0lBQ0osQ0FBQztJQUVELG1DQUFtQztJQUMzQixtQkFBbUIsQ0FBQyxNQUFtQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7OEdBekZVLHVCQUF1QjtrSEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEh5YnJpZEVuY3J5cHRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwdWJsaWNLZXlQZW0gPSBgLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeWRqTWFQRFF2Y05DUHNCM3ptdUFcblJ5RHcvZVZQakg4ZUlUY1dxK1RubXFXNEZDeHdUeEFRUXk4YkVuTzdIQzhlVVZhRDh0bE5hTFZqaVJSQ28wK29cbkpNRFpDNVM5YVVHcHovVWVnaHA1YXppdTBhYms3cForeC9CcmZwQU4rN1Z0ZVpoMDBkL1lBdFpsYlE2a0hNNDRcbm96MmQ3RmoxTVB6QjIyWm9Fbm1jRnFCbHZzVzh5YmxNMzhIRUFLUlhqOTczM1hpYXlEb3E2aXZQMDQ2SUZCcFBcbkNnZzdrT0xmT1lNdDdaTmthS3pEZVlCZlFBdmhXK05kNkVOKzhDQ3JJOC8vZm53UmJySXR6Z1I1S1h3SjBGNVRcbnc2L1loSWtKaTdDZTZrUjhEN2FZZFhOb1JLelg1bStHeFNrTHRpTUltSE9uVldnK3dvL2x2Q2JMUldTK1FRMTRcbnBRSURBUUFCXG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1gO1xuICBwcml2YXRlIHB1YmxpY0tleSE6IENyeXB0b0tleTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmxvYWRQdWJsaWNLZXkoKTtcbiAgfVxuXG4gIC8qKiBJbXBvcnQgUlNBIHB1YmxpYyBrZXkgKi9cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUHVibGljS2V5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBlbUhlYWRlciA9ICctLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLSc7XG4gICAgY29uc3QgcGVtRm9vdGVyID0gJy0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLSc7XG4gICAgY29uc3QgcGVtQ29udGVudHMgPSB0aGlzLnB1YmxpY0tleVBlbVxuICAgICAgLnJlcGxhY2UocGVtSGVhZGVyLCAnJylcbiAgICAgIC5yZXBsYWNlKHBlbUZvb3RlciwgJycpXG4gICAgICAucmVwbGFjZSgvXFxzL2csICcnKTtcblxuICAgIGNvbnN0IGJpbmFyeURlciA9IFVpbnQ4QXJyYXkuZnJvbShhdG9iKHBlbUNvbnRlbnRzKSwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpO1xuXG4gICAgdGhpcy5wdWJsaWNLZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleShcbiAgICAgICdzcGtpJyxcbiAgICAgIGJpbmFyeURlci5idWZmZXIsXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdSU0EtT0FFUCcsXG4gICAgICAgIGhhc2g6ICdTSEEtMjU2J1xuICAgICAgfSxcbiAgICAgIHRydWUsXG4gICAgICBbJ2VuY3J5cHQnXVxuICAgICk7XG4gIH1cblxuICAvKiogR2VuZXJhdGUgYSByYW5kb20gQUVTIGtleSAqL1xuICBwcml2YXRlIGFzeW5jIGdlbmVyYXRlQWVzS2V5KCk6IFByb21pc2U8Q3J5cHRvS2V5PiB7XG4gICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoXG4gICAgICB7IG5hbWU6ICdBRVMtR0NNJywgbGVuZ3RoOiAyNTYgfSxcbiAgICAgIHRydWUsXG4gICAgICBbJ2VuY3J5cHQnLCAnZGVjcnlwdCddXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBFbmNyeXB0IGxhcmdlIGRhdGEgd2l0aCBBRVMgYW5kIEFFUyBrZXkgd2l0aCBSU0EgKi9cbiAgYXN5bmMgZW5jcnlwdChkYXRhOiBhbnkpOiBQcm9taXNlPHsgZW5jcnlwdGVkS2V5OiBzdHJpbmc7IGVuY3J5cHRlZERhdGE6IHN0cmluZzsgaXY6IHN0cmluZyB9PiB7XG4gICAgaWYgKCF0aGlzLnB1YmxpY0tleSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkUHVibGljS2V5KCk7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCBwYXlsb2FkIHRvIEpTT04gKyBVaW50OEFycmF5XG4gICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgIGNvbnN0IHBsYWluQnl0ZXMgPSBlbmNvZGVyLmVuY29kZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG5cbiAgICAvLyBHZW5lcmF0ZSBBRVMga2V5ICsgSVZcbiAgICBjb25zdCBhZXNLZXkgPSBhd2FpdCB0aGlzLmdlbmVyYXRlQWVzS2V5KCk7XG4gICAgY29uc3QgaXYgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDEyKSk7IC8vIEFFUy1HQ00gbm9uY2VcblxuICAgIC8vIEVuY3J5cHQgZGF0YSB3aXRoIEFFU1xuICAgIGNvbnN0IGVuY3J5cHRlZERhdGFCdWZmZXIgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmVuY3J5cHQoXG4gICAgICB7IG5hbWU6ICdBRVMtR0NNJywgaXYgfSxcbiAgICAgIGFlc0tleSxcbiAgICAgIHBsYWluQnl0ZXNcbiAgICApO1xuXG4gICAgLy8gRXhwb3J0IEFFUyBrZXlcbiAgICBjb25zdCByYXdBZXNLZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmV4cG9ydEtleSgncmF3JywgYWVzS2V5KTtcblxuICAgIC8vIEVuY3J5cHQgQUVTIGtleSB3aXRoIFJTQVxuICAgIGNvbnN0IGVuY3J5cHRlZEtleUJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZW5jcnlwdChcbiAgICAgIHsgbmFtZTogJ1JTQS1PQUVQJyB9LFxuICAgICAgdGhpcy5wdWJsaWNLZXksXG4gICAgICByYXdBZXNLZXlcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVuY3J5cHRlZEtleTogdGhpcy5hcnJheUJ1ZmZlclRvQmFzZTY0KGVuY3J5cHRlZEtleUJ1ZmZlciksXG4gICAgICBlbmNyeXB0ZWREYXRhOiB0aGlzLmFycmF5QnVmZmVyVG9CYXNlNjQoZW5jcnlwdGVkRGF0YUJ1ZmZlciksXG4gICAgICBpdjogdGhpcy5hcnJheUJ1ZmZlclRvQmFzZTY0KGl2LmJ1ZmZlcilcbiAgICB9O1xuICB9XG5cbiAgLyoqIENvbnZlcnQgQXJyYXlCdWZmZXIg4oaSIEJhc2U2NCAqL1xuICBwcml2YXRlIGFycmF5QnVmZmVyVG9CYXNlNjQoYnVmZmVyOiBBcnJheUJ1ZmZlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5uZXcgVWludDhBcnJheShidWZmZXIpKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -30,7 +30,8 @@ export class SessionService {
|
|
|
30
30
|
username: tokenData.preferred_username,
|
|
31
31
|
email: tokenData.email,
|
|
32
32
|
emailVerified: tokenData.email_verified,
|
|
33
|
-
countryCode: tokenData.country_code
|
|
33
|
+
countryCode: tokenData.country_code,
|
|
34
|
+
partyId: tokenData.party_id
|
|
34
35
|
};
|
|
35
36
|
return userData;
|
|
36
37
|
}
|
|
@@ -438,4 +439,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImpor
|
|
|
438
439
|
type: Inject,
|
|
439
440
|
args: ['environment']
|
|
440
441
|
}] }, { type: i2.CryptoService }, { type: i3.JwtService }]; } });
|
|
441
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLHFDQUFxQztBQUNyQyx5REFBeUQ7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFJckUsTUFBTSxPQUFPLGNBQWM7SUFVekIsWUFBb0IsSUFBZ0IsRUFDWCxXQUFnQixFQUNyQixhQUE0QixFQUM1QixVQUFzQjtRQUh0QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBRWhCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFQMUMsYUFBUSxHQUFHLDZCQUE2QixDQUFDO1FBUXZDLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztRQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVNLHNCQUFzQixDQUFDLEtBQWE7UUFDekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsTUFBTSxRQUFRLEdBQWE7WUFDekIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxVQUFVO1lBQy9CLFVBQVUsRUFBRSxTQUFTLENB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QWUsRUFBRSxDQUFDO1lBQzVDLElBQUksWUFBWSxFQUFFO2dCQUNoQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUMxRCxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTt3QkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUMxRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hCLENBQUM7b0JBQ0QsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7d0JBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDZCxDQUFDO2lCQUNGLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNmO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzhHQTNkVSxjQUFjLDRDQVdmLGFBQWE7a0hBWFosY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBWU4sTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxpbmVzLXBlci1mdW5jdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgYXJyb3ctYm9keS1zdHlsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRnJvbnRFbmRFeGNlcHRpb24sIFVzZXJEYXRhIH0gZnJvbSAnLi4vdXNlci5tb2RlbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBKd3RTZXJ2aWNlIH0gZnJvbSAnLi9qd3Quc2VydmljZSc7XG5pbXBvcnQgeyBDcnlwdG9TZXJ2aWNlIH0gZnJvbSAnLi9jcnlwdG8uc2VydmljZSc7XG5pbXBvcnQgeyBSRUZSRVNIX1RPS0VOLCBUT0tFTiwgVVNFUkRBVEEgfSBmcm9tICcuLi9zaGFyZWQvY29uc3RhbnRzJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2Vzc2lvblNlcnZpY2Uge1xuXG4gIHVzZXJkYXRhOiBVc2VyRGF0YSB8IHVuZGVmaW5lZDtcbiAgdG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGVuZFBvaW50OiBzdHJpbmc7XG4gIGxvZ2luVXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMC9sb2dpbic7XG4gIGFwcGxpY2F0aW9uSWQ6IGFueTtcbiAgZW52aXJvbm1lbnQ6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55LFxuICAgICAgICAgICAgICBwcml2YXRlIGNyeXB0b1NlcnZpY2U6IENyeXB0b1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgand0U2VydmljZTogSnd0U2VydmljZSkge1xuICAgIHRoaXMuZW5kUG9pbnQgPSBlbnZpcm9ubWVudC5lbmRQb2ludENvcmU7XG4gICAgdGhpcy5hcHBsaWNhdGlvbklkID0gZW52aXJvbm1lbnQuYXBwbGljYXRpb25JZDtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRVc2VyZGF0YUZyb21Ub2tlbih0b2tlbjogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCB0b2tlbkRhdGEgPSB0aGlzLmp3dFNlcnZpY2UuZGVjb2RlVG9rZW4odG9rZW4pO1xuICAgIGNvbnN0IHVzZXJEYXRhOiBVc2VyRGF0YSA9IHtcbiAgICAgIGdpdmVuTmFtZTogdG9rZW5EYXRhLmdpdmVuX25hbWUsXG4gICAgICBmYW1pbHlOYW1lOiB0b2tlbkRhdGEuZmFtaWx5X25hbWUsXG4gICAgICBuYW1lOiB0b2tlbkRhdGEubmFtZSxcbiAgICAgIHJvbGVzOiB0b2tlbkRhdGEucmVhbG1fYWNjZXNzLnJvbGVzLFxuICAgICAgdXNlcklkOiB0b2tlbkRhdGEuc3ViLFxuICAgICAgdXNlcm5hbWU6IHRva2VuRGF0YS5wcmVmZXJyZWRfdXNlcm5hbWUsXG4gICAgICBlbWFpbDogdG9rZW5EYXRhLmVtYWlsLFxuICAgICAgZW1haWxWZXJpZmllZDogdG9rZW5EYXRhLmVtYWlsX3ZlcmlmaWVkLFxuICAgICAgY291bnRyeUNvZGU6IHRva2VuRGF0YS5jb3VudHJ5X2NvZGVcbiAgICB9O1xuICAgIHJldHVybiB1c2VyRGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXZpZXdTZXNzaW9uRGF0YSgpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5jaGVja1Nlc3Npb25EYXRhKCkgYXMgYW55O1xuICAgIGNvbnNvbGUubG9nKGBhc3luYyByZXN1bHQ6ICR7dmFsdWV9YCk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHVibGljIHNldFVzZXJkYXRhKHVzZXJkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJkYXRhID0gdXNlcmRhdGE7XG4gIH1cblxuICBwdWJsaWMgc2V0VG9rZW5zKHRva2VuOiBhbnksIHJlZnJlc2hUb2tlbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgIHRoaXMucmVmcmVzaFRva2VuID0gcmVmcmVzaFRva2VuO1xuICB9XG5cbiAgcHVibGljIGdldFVzZXJkYXRhKCk6IFVzZXJEYXRhIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy51c2VyZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSZWZyZXNoVG9rZW4ocmVmcmVzaFRva2VuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlbjtcbiAgICB0aGlzLnNhdmVTdG9yYWdlRGF0YShSRUZSRVNIX1RPS0VOLCByZWZyZXNoVG9rZW4pO1xuICB9XG5cbiAgcHVibGljIGdldFJlZnJlc2hUb2tlbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXRUb2tlbih0b2tlbjogYW55KTogYW55IHtcbiAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgdGhpcy5zYXZlU3RvcmFnZURhdGEoVE9LRU4sIHRva2VuKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUb2tlbigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnRva2VuO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3lDcmVkZW50aWFscygpOiB2b2lkIHtcbiAgICB0aGlzLnRva2VuID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVmcmVzaFRva2VuID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGVsZXRlU3RvcmFnZURhdGEoVE9LRU4pO1xuICAgIHRoaXMuZGVsZXRlU3RvcmFnZURhdGEoUkVGUkVTSF9UT0tFTik7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveVVzZXJEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMudXNlcmRhdGEgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5kZWxldGVTdG9yYWdlRGF0YShVU0VSREFUQSk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUNyZWRlbnRpYWxzKHRva2VuOiBhbnksIHJlZnJlc2hUb2tlbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgIHRoaXMucmVmcmVzaFRva2VuID0gcmVmcmVzaFRva2VuO1xuICAgIHRoaXMuc2F2ZVN0b3JhZ2VEYXRhKFRPS0VOLCB0b2tlbik7XG4gICAgdGhpcy5zYXZlU3RvcmFnZURhdGEoUkVGUkVTSF9UT0tFTiwgcmVmcmVzaFRva2VuKTtcbiAgICB0aGlzLnNhdmVVc2VyRGF0YSh0aGlzLmJ1aWxkVXNlcmRhdGFGcm9tVG9rZW4odG9rZW4pKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlVXNlckRhdGEodXNlckRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXNlcmRhdGEgPSB1c2VyRGF0YTtcbiAgICB0aGlzLnNhdmVTdG9yYWdlRGF0YShVU0VSREFUQSwgSlNPTi5zdHJpbmdpZnkodXNlckRhdGEpKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0xvZ2dlZEluKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudXNlcmRhdGE7XG4gIH1cblxuICBsb2dvdXQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBsZXQgY2xpZW50SWQgPSB0aGlzLmVudmlyb25tZW50LmF1dGhDbGllbnQ7XG4gICAgaWYgKHRoaXMucmVmcmVzaFRva2VuKSB7XG4gICAgICBjb25zdCBkZWNvZGVkID0gdGhpcy5qd3RTZXJ2aWNlLmRlY29kZVRva2VuKHRoaXMucmVmcmVzaFRva2VuKTtcbiAgICAgIGNsaWVudElkID0gZGVjb2RlZC5henA7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmxvZ291dEFwaUNsaWVudChjbGllbnRJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgIHRoaXMuZGVzdHJveUNyZWRlbnRpYWxzKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveVVzZXJEYXRhKCk7XG4gICAgICAgIHRoaXMuZ29Ub0xvZ2luKCk7XG4gICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuZGVzdHJveUNyZWRlbnRpYWxzKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveVVzZXJEYXRhKCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldE5ld1Rva2VuKHJlZnJlc2hUb2tlbjogc3RyaW5nKTogYW55IHtcbiAgICBjb25zb2xlLmxvZygnZ2V0TmV3VG9rZW4nKTtcbiAgICBjb25zdCBib2R5ID0gJ2dyYW50X3R5cGU9cmVmcmVzaF90b2tlbicgKyAnJnJlZnJlc2hfdG9rZW49JyArIHJlZnJlc2hUb2tlbiArICcmY2xpZW50X2lkPScgKyB0aGlzLmVudmlyb25tZW50LmF1dGhDbGllbnQ7XG5cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5lbnZpcm9ubWVudC5hdXRoRW5kUG9pbnR9L3JlYWxtcy8ke3RoaXMuZW52aXJvbm1lbnQuYXV0aFJlYWxtfS9wcm90b2NvbC9vcGVuaWQtY29ubmVjdC90b2tlbmAsXG4gICAgICBib2R5LCB7aGVhZGVyc30pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGdldE5ld1Rva2VuQ2xpZW50KHJlZnJlc2hUb2tlbjogc3RyaW5nLCBjbGllbnRJZDogc3RyaW5nKTogYW55IHtcbiAgICBjb25zb2xlLmxvZygnZ2V0TmV3VG9rZW4nKTtcbiAgICBjb25zdCBib2R5ID0gJ2dyYW50X3R5cGU9cmVmcmVzaF90b2tlbicgKyAnJnJlZnJlc2hfdG9rZW49JyArIHJlZnJlc2hUb2tlbiArICcmY2xpZW50X2lkPScgKyBjbGllbnRJZDtcblxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmVudmlyb25tZW50LmF1dGhFbmRQb2ludH0vcmVhbG1zLyR7dGhpcy5lbnZpcm9ubWVudC5hdXRoUmVhbG19L3Byb3RvY29sL29wZW5pZC1jb25uZWN0L3Rva2VuYCxcbiAgICAgIGJvZHksIHtoZWFkZXJzfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcykpO1xuICB9XG5cbiAgZ2V0VG9rZW5DbGllbnRDb2RlKHJlZnJlc2hUb2tlbjogc3RyaW5nLCBjbGllbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zb2xlLmxvZygnZ2V0TmV3VG9rZW4nKTtcbiAgICBjb25zdCBib2R5ID0gJ2dyYW50X3R5cGU9cmVmcmVzaF90b2tlbicgKyAnJnJlZnJlc2hfdG9rZW49JyArIHJlZnJlc2hUb2tlbiArICcmY2xpZW50X2lkPScgKyBjbGllbnRJZDtcblxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmVudmlyb25tZW50LmF1dGhFbmRQb2ludH0vcmVhbG1zLyR7dGhpcy5lbnZpcm9ubWVudC5hdXRoUmVhbG19L3Byb3RvY29sL29wZW5pZC1jb25uZWN0L3Rva2VuYCxcbiAgICAgIGJvZHksIHtoZWFkZXJzfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcykpO1xuICB9XG5cblxuICBnZXRMb2dpblVybCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odGhpcy5lbmRQb2ludCArICcvYXV0aC9sb2dpbi91cmwvJyt0aGlzLmVudmlyb25tZW50LmF1dGhDbGllbnQpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGdldEhvbWVVcmwoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHRoaXMuZW5kUG9pbnQgKyAnL2F1dGgvaG9tZS91cmwvJyt0aGlzLmVudmlyb25tZW50LmF1dGhDbGllbnQpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGxvZ291dEFwaSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGJvZHkgPSAncmVmcmVzaF90b2tlbj0nICsgdGhpcy5yZWZyZXNoVG9rZW4gKyAnJmNsaWVudF9pZD0nICsgdGhpcy5lbnZpcm9ubWVudC5hdXRoQ2xpZW50O1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmVudmlyb25tZW50LmF1dGhFbmRQb2ludH0vcmVhbG1zLyR7dGhpcy5lbnZpcm9ubWVudC5hdXRoUmVhbG19L3Byb3RvY29sL29wZW5pZC1jb25uZWN0L2xvZ291dGAsXG4gICAgICBib2R5LCB7aGVhZGVyc30pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGxvZ291dEFwaUNsaWVudChjbGllbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBib2R5ID0gJ3JlZnJlc2hfdG9rZW49JyArIHRoaXMucmVmcmVzaFRva2VuICsgJyZjbGllbnRfaWQ9JyArIGNsaWVudElkO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmVudmlyb25tZW50LmF1dGhFbmRQb2ludH0vcmVhbG1zLyR7dGhpcy5lbnZpcm9ubWVudC5hdXRoUmVhbG19L3Byb3RvY29sL29wZW5pZC1jb25uZWN0L2xvZ291dGAsXG4gICAgICBib2R5LCB7aGVhZGVyc30pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGdvVG9Mb2dpbigpOiB2b2lkIHtcbiAgICB0aGlzLmdldExvZ2luVXJsKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgY29uc3QgbG9naW5VcmwgPSByZXMuZGF0YTtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbG9naW5Vcmw7XG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGxvYWRTZXNzaW9uRGF0YSgpOiB2b2lkIHtcbiAgICBsZXQgZGF0YTtcbiAgICBsZXQgdG9rZW47XG4gICAgbGV0IHJlZnJlc2hUb2tlbjtcbiAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uKSB7XG4gICAgICBjb25zdCB1ID0gdGhpcy5jcnlwdG9TZXJ2aWNlLmVuY3J5cHQoVVNFUkRBVEEpO1xuICAgICAgY29uc3QgdCA9IHRoaXMuY3J5cHRvU2VydmljZS5lbmNyeXB0KFRPS0VOKTtcbiAgICAgIGNvbnN0IHIgPSB0aGlzLmNyeXB0b1NlcnZpY2UuZW5jcnlwdChSRUZSRVNIX1RPS0VOKTtcbiAgICAgIGRhdGEgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0odSk7XG4gICAgICB0b2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0KTtcbiAgICAgIHJlZnJlc2hUb2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShyKTtcbiAgICAgIGlmIChkYXRhICYmIHRva2VuICYmIHJlZnJlc2hUb2tlbikge1xuICAgICAgICBkYXRhID0gdGhpcy5jcnlwdG9TZXJ2aWNlLmRlY3J5cHQoZGF0YSk7XG4gICAgICAgIHRva2VuID0gdGhpcy5jcnlwdG9TZXJ2aWNlLmRlY3J5cHQodG9rZW4pO1xuICAgICAgICByZWZyZXNoVG9rZW4gPSB0aGlzLmNyeXB0b1NlcnZpY2UuZGVjcnlwdChyZWZyZXNoVG9rZW4pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFVTRVJEQVRBKTtcbiAgICAgIHRva2VuID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFRPS0VOKTtcbiAgICAgIHJlZnJlc2hUb2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShSRUZSRVNIX1RPS0VOKTtcbiAgICB9XG4gICAgaWYgKGRhdGEgJiYgdG9rZW4gJiYgcmVmcmVzaFRva2VuKSB7XG4gICAgICBjb25zdCB1c2VyID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgIHRoaXMuc2V0VG9rZW5zKHRva2VuLCByZWZyZXNoVG9rZW4pO1xuICAgICAgdGhpcy5zZXRVc2VyZGF0YSh1c2VyKTtcbiAgICB9XG4gIH1cblxuICB1c2VySGFzT3B0aW9uc0luQXBwKHVzZXJJZDogYW55LCBhcHBsaWNhdGlvbklkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odGhpcy5lbmRQb2ludCArIGAvc2VjdXJpdHkvb3B0aW9uLyR7YXBwbGljYXRpb25JZH0vJHt1c2VySWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcykpO1xuICB9XG5cbiAgY2hlY2tBcHBQZXJtaXNzaW9ucygpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnVzZXJkYXRhPy51c2VySWQsIHRoaXMuYXBwbGljYXRpb25JZCk7XG4gICAgICBpZiAodGhpcy5hcHBsaWNhdGlvbklkKSB7XG4gICAgICAgIHRoaXMudXNlckhhc09wdGlvbnNJbkFwcCh0aGlzLnVzZXJkYXRhPy51c2VySWQsIHRoaXMuYXBwbGljYXRpb25JZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgICAgICBpZiAocmVzLmRhdGEpIHtcbiAgICAgICAgICAgIHJlc29sdmUoJ29rJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0SG9tZVVybCgpLnN1YnNjcmliZShyZXMxID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzMSk7XG4gICAgICAgICAgICAgIGNvbnN0IGhvbWVVcmwgPSByZXMxLmRhdGE7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaG9tZVVybDtcbiAgICAgICAgICAgICAgcmVqZWN0KCdub2snKTtcbiAgICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICByZWplY3QoJ25vaycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIHJlamVjdCgnbm9rJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSgnb2snKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgcHVibGljIGdldE9wdGlvbnNVc2VyKGFwcGxpY2F0aW9uSWQ6IG51bWJlciB8IG51bGwsIHR5cGU6IHN0cmluZyB8IG51bGwsIGxhbmd1YWdlOiBzdHJpbmcgfCBudWxsLCBlbnRpdHlDb2RlOiBzdHJpbmcgfCBudWxsLCBwYXJlbnRPcHRpb25JZDogbnVtYmVyIHwgbnVsbCwgaW5jbHVkZURhdGE6IGJvb2xlYW4gfCBudWxsKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBwYXJhbSA9IHtcbiAgICAgIHVzZXJJZDogdGhpcy51c2VyZGF0YT8udXNlcklkLFxuICAgICAgYXBwbGljYXRpb25JZCxcbiAgICAgIHR5cGUsXG4gICAgICBsYW5ndWFnZSxcbiAgICAgIGVudGl0eUNvZGUsXG4gICAgICBwYXJlbnRPcHRpb25JZCxcbiAgICAgIGluY2x1ZGVEYXRhXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih0aGlzLmVuZFBvaW50ICsgJy9zZWN1cml0eS9vcHRpb24vdXNlcicsIHBhcmFtKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzKSk7XG4gIH1cblxuICByZWdpc3RlckV4Y2VwdGlvbihwYXJhbTogRnJvbnRFbmRFeGNlcHRpb24pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ3NraXBFcnJvcicsICd0cnVlJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odGhpcy5lbmRQb2ludCArICcvYXV0aC9leGNlcHRpb24vbG9nJywgcGFyYW0sIHtoZWFkZXJzfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcykpO1xuICB9XG5cbiAgc2F2ZVN0b3JhZ2VEYXRhKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnQucHJvZHVjdGlvbikge1xuICAgICAgY29uc3QgayA9IHRoaXMuY3J5cHRvU2VydmljZS5lbmNyeXB0KGtleSk7XG4gICAgICBjb25zdCB2ID0gdGhpcy5jcnlwdG9TZXJ2aWNlLmVuY3J5cHQodmFsdWUpO1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGssIHYpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlU3RvcmFnZURhdGEoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uKSB7XG4gICAgICBjb25zdCBrID0gdGhpcy5jcnlwdG9TZXJ2aWNlLmVuY3J5cHQoa2V5KTtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RvcmFnZURhdGEoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBsZXQgcmVzOiBzdHJpbmcgfCBudWxsO1xuICAgIGlmICh0aGlzLmVudmlyb25tZW50LnByb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnN0IGsgPSB0aGlzLmNyeXB0b1NlcnZpY2UuZW5jcnlwdChrZXkpO1xuICAgICAgY29uc3QgdiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrKTtcbiAgICAgIGlmICh2KSB7XG4gICAgICAgIHJlcyA9IHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KHYpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuXG4gIHB1YmxpYyByZW1vdmVVcmxEYXRhKCk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdXJsLnNlYXJjaFBhcmFtcztcbiAgICBxdWVyeVBhcmFtcy5kZWxldGUoJ2NvZGUnKTtcbiAgICBxdWVyeVBhcmFtcy5kZWxldGUoJ2NsaWVudElkJyk7XG4gICAgY29uc3QgbmV3VXJsID0gdXJsLm9yaWdpbiArIHVybC5wYXRobmFtZSArICc/JyArIHF1ZXJ5UGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwgbmV3VXJsKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1Nlc3Npb25EYXRhKCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCBkYXRhO1xuICAgICAgbGV0IHRva2VuO1xuICAgICAgbGV0IHJlZnJlc2hUb2tlbjtcblxuICAgICAgY29uc3QgY3VycmVudFVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgICAgY29uc3QgY29kZSA9IGN1cnJlbnRVcmwuc2VhcmNoUGFyYW1zLmdldCgnY29kZScpO1xuICAgICAgY29uc29sZS5sb2coJ2NvZGUnLCBjb2RlKTtcbiAgICAgIGlmIChjb2RlKSB7XG4gICAgICAgIGNvbnN0IGNvZGVEZWNvZGVkID0gdGhpcy5nZXREZWNvZGVkQXV0aENvZGUoY29kZSk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdjb2RlJywgY29kZURlY29kZWQpO1xuICAgICAgICBjb25zdCBjbGllbnRJZCA9IGN1cnJlbnRVcmwuc2VhcmNoUGFyYW1zLmdldCgnY2xpZW50SWQnKTtcbiAgICAgICAgY29uc29sZS5sb2coJ2NsaWVudElkJywgY2xpZW50SWQpO1xuICAgICAgICBjb25zdCBkZWNvZGVkID0gdGhpcy5qd3RTZXJ2aWNlLmRlY29kZVRva2VuKGNvZGVEZWNvZGVkKTtcbiAgICAgICAgdGhpcy5nZXRUb2tlbkNsaWVudENvZGUoY29kZURlY29kZWQsIGNsaWVudElkP2NsaWVudElkOmRlY29kZWQuYXpwKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgICB0b2tlbiA9IHJlcy5hY2Nlc3NfdG9rZW47XG4gICAgICAgICAgICByZWZyZXNoVG9rZW4gPSByZXMucmVmcmVzaF90b2tlbjtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUNyZWRlbnRpYWxzKHRva2VuLCByZWZyZXNoVG9rZW4pO1xuICAgICAgICAgICAgdGhpcy5jaGVja0FwcFBlcm1pc3Npb25zKCkudGhlbigocmVzMSkgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMxKTtcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVVcmxEYXRhKCk7XG4gICAgICAgICAgICAgIHJlc29sdmUoJ09LJyk7XG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YSA9IHRoaXMuZ2V0U3RvcmFnZURhdGEoVVNFUkRBVEEpO1xuICAgICAgICB0b2tlbiA9IHRoaXMuZ2V0U3RvcmFnZURhdGEoVE9LRU4pO1xuICAgICAgICByZWZyZXNoVG9rZW4gPSB0aGlzLmdldFN0b3JhZ2VEYXRhKFJFRlJFU0hfVE9LRU4pO1xuICAgICAgICBpZiAoZGF0YSAmJiB0b2tlbiAmJiByZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgICB0aGlzLnNhdmVDcmVkZW50aWFscyh0b2tlbiwgcmVmcmVzaFRva2VuKTtcbiAgICAgICAgICB0aGlzLmNoZWNrQXBwUGVybWlzc2lvbnMoKS50aGVuKChyZXMxKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMxKTtcbiAgICAgICAgICAgIHJlc29sdmUoJ09LJyk7XG4gICAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgICAgaWYgKHVybC5pbmRleE9mKCcvcmVkaXJlY3QnKT4tMSkge1xuICAgICAgICAgICAgcmVzb2x2ZSgnT0snKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95Q3JlZGVudGlhbHMoKTtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveVVzZXJEYXRhKCk7XG4gICAgICAgICAgICB0aGlzLmdldExvZ2luVXJsKCkuc3Vic2NyaWJlKHJlczEgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMxKTtcbiAgICAgICAgICAgICAgdGhpcy5sb2dpblVybCA9IHJlczEuZGF0YTtcbiAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCcvbG9naW4nKTwwICYmIHVybC5pbmRleE9mKCcvZm9yZ290Jyk8MCAmJlxuICAgICAgICAgICAgICAgICAgdXJsLmluZGV4T2YoJy9yZXNldCcpPDAgJiYgdXJsLmluZGV4T2YoJy92ZXJpZnknKTwwICYmXG4gICAgICAgICAgICAgICAgICB1cmwuaW5kZXhPZignL3NpZ25fdXAnKTwwKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmxvZ2luVXJsICsgJz9jb250aW51ZT0nK2VuY29kZVVSSUNvbXBvbmVudCh1cmwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlc29sdmUoJ05PSycpO1xuICAgICAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuXG5cbiAgcHVibGljIGNoZWNrU2Vzc2lvbkRhdGFNaWNyb2Zyb250KCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCBkYXRhO1xuICAgICAgbGV0IHRva2VuO1xuICAgICAgbGV0IHJlZnJlc2hUb2tlbjtcbiAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LnByb2R1Y3Rpb24pIHtcbiAgICAgICAgY29uc3QgdSA9IHRoaXMuY3J5cHRvU2VydmljZS5lbmNyeXB0KFVTRVJEQVRBKTtcbiAgICAgICAgY29uc3QgdCA9IHRoaXMuY3J5cHRvU2VydmljZS5lbmNyeXB0KFRPS0VOKTtcbiAgICAgICAgY29uc3QgciA9IHRoaXMuY3J5cHRvU2VydmljZS5lbmNyeXB0KFJFRlJFU0hfVE9LRU4pO1xuICAgICAgICBjb25zdCBkMSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh1KTtcbiAgICAgICAgY29uc3QgZDIgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0odCk7XG4gICAgICAgIGNvbnN0IGQzID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKHIpO1xuICAgICAgICBpZiAoZDEgJiYgZDIgJiYgZDMpIHtcbiAgICAgICAgICBkYXRhID0gdGhpcy5jcnlwdG9TZXJ2aWNlLmRlY3J5cHQoZDEpO1xuICAgICAgICAgIHRva2VuID0gdGhpcy5jcnlwdG9TZXJ2aWNlLmRlY3J5cHQoZDIpO1xuICAgICAgICAgIHJlZnJlc2hUb2tlbiA9IHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KGQzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShVU0VSREFUQSk7XG4gICAgICAgIHRva2VuID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFRPS0VOKTtcbiAgICAgICAgcmVmcmVzaFRva2VuID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFJFRlJFU0hfVE9LRU4pO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGEgJiYgdG9rZW4gJiYgcmVmcmVzaFRva2VuKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdsb2NhbCBzZXNzaW9uIG9rJyk7XG4gICAgICAgIHRoaXMuc2F2ZUNyZWRlbnRpYWxzKHRva2VuLCByZWZyZXNoVG9rZW4pO1xuICAgICAgICByZXNvbHZlKCdPSycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignbG9jYWwgc2Vzc2lvbiBub2snKTtcbiAgICAgICAgcmVqZWN0KCdOT0snKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBdXRoQ29kZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVuYyA9IHRoaXMuY3J5cHRvU2VydmljZS5lbmNyeXB0KHRoaXMucmVmcmVzaFRva2VuP3RoaXMucmVmcmVzaFRva2VuOicnKTtcbiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGVuYyk7XG4gIH1cblxuICBwcml2YXRlIGdldERlY29kZWRBdXRoQ29kZShjb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRlYyA9IGRlY29kZVVSSUNvbXBvbmVudChjb2RlKTtcbiAgICByZXR1cm4gdGhpcy5jcnlwdG9TZXJ2aWNlLmRlY3J5cHQoZGVjKTtcbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoU2Vzc2lvbigpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSB0aGlzLmdldFJlZnJlc2hUb2tlbigpO1xuICAgICAgaWYgKHJlZnJlc2hUb2tlbikge1xuICAgICAgICBjb25zdCBkZWNvZGVkID0gdGhpcy5qd3RTZXJ2aWNlLmRlY29kZVRva2VuKHJlZnJlc2hUb2tlbik7XG4gICAgICAgIHRoaXMuZ2V0TmV3VG9rZW5DbGllbnQocmVmcmVzaFRva2VuLCBkZWNvZGVkLmF6cCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgICB0aGlzLnNldFRva2VuKHJlcy5hY2Nlc3NfdG9rZW4pO1xuICAgICAgICAgICAgdGhpcy5zZXRSZWZyZXNoVG9rZW4ocmVzLnJlZnJlc2hfdG9rZW4pO1xuICAgICAgICAgICAgdGhpcy5zYXZlQ3JlZGVudGlhbHMocmVzLmFjY2Vzc190b2tlbiwgcmVzLnJlZnJlc2hfdG9rZW4pO1xuICAgICAgICAgICAgcmVzb2x2ZSgnT0snKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QoJ05PSycpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbn1cblxuIl19
|
|
442
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLHFDQUFxQztBQUNyQyx5REFBeUQ7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFJckUsTUFBTSxPQUFPLGNBQWM7SUFVekIsWUFBb0IsSUFBZ0IsRUFDWCxXQUFnQixFQUNyQixhQUE0QixFQUM1QixVQUFzQjtRQUh0QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBRWhCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFQMUMsYUFBUSxHQUFHLDZCQUE2QixDQUFDO1FBUXZDLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztRQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVNLHNCQUFzQixDQUFDLEtBQWE7UUFDekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsTUFBTSxRQUFRLEdBQWE7WUFDekIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxVQUFVO1lBQy9CLFVBQVUsRUFBRSxTQUFTLENB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QzlDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QyxJQUFJLFlBQVksRUFBRTtnQkFDaEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQkFDMUQsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7d0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDMUQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQixDQUFDO29CQUNELEtBQUssRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO3dCQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNuQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2QsQ0FBQztpQkFDRixDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDZjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs4R0E1ZFUsY0FBYyw0Q0FXZixhQUFhO2tIQVhaLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7OzBCQVlOLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1saW5lcy1wZXItZnVuY3Rpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIGFycm93LWJvZHktc3R5bGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEZyb250RW5kRXhjZXB0aW9uLCBVc2VyRGF0YSB9IGZyb20gJy4uL3VzZXIubW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSnd0U2VydmljZSB9IGZyb20gJy4vand0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3J5cHRvU2VydmljZSB9IGZyb20gJy4vY3J5cHRvLnNlcnZpY2UnO1xuaW1wb3J0IHsgUkVGUkVTSF9UT0tFTiwgVE9LRU4sIFVTRVJEQVRBIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnN0YW50cyc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlc3Npb25TZXJ2aWNlIHtcblxuICB1c2VyZGF0YTogVXNlckRhdGEgfCB1bmRlZmluZWQ7XG4gIHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBlbmRQb2ludDogc3RyaW5nO1xuICBsb2dpblVybCA9ICdodHRwOi8vbG9jYWxob3N0OjQyMDAvbG9naW4nO1xuICBhcHBsaWNhdGlvbklkOiBhbnk7XG4gIGVudmlyb25tZW50OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQ6IGFueSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjcnlwdG9TZXJ2aWNlOiBDcnlwdG9TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGp3dFNlcnZpY2U6IEp3dFNlcnZpY2UpIHtcbiAgICB0aGlzLmVuZFBvaW50ID0gZW52aXJvbm1lbnQuZW5kUG9pbnRDb3JlO1xuICAgIHRoaXMuYXBwbGljYXRpb25JZCA9IGVudmlyb25tZW50LmFwcGxpY2F0aW9uSWQ7XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgcHVibGljIGJ1aWxkVXNlcmRhdGFGcm9tVG9rZW4odG9rZW46IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgdG9rZW5EYXRhID0gdGhpcy5qd3RTZXJ2aWNlLmRlY29kZVRva2VuKHRva2VuKTtcbiAgICBjb25zdCB1c2VyRGF0YTogVXNlckRhdGEgPSB7XG4gICAgICBnaXZlbk5hbWU6IHRva2VuRGF0YS5naXZlbl9uYW1lLFxuICAgICAgZmFtaWx5TmFtZTogdG9rZW5EYXRhLmZhbWlseV9uYW1lLFxuICAgICAgbmFtZTogdG9rZW5EYXRhLm5hbWUsXG4gICAgICByb2xlczogdG9rZW5EYXRhLnJlYWxtX2FjY2Vzcy5yb2xlcyxcbiAgICAgIHVzZXJJZDogdG9rZW5EYXRhLnN1YixcbiAgICAgIHVzZXJuYW1lOiB0b2tlbkRhdGEucHJlZmVycmVkX3VzZXJuYW1lLFxuICAgICAgZW1haWw6IHRva2VuRGF0YS5lbWFpbCxcbiAgICAgIGVtYWlsVmVyaWZpZWQ6IHRva2VuRGF0YS5lbWFpbF92ZXJpZmllZCxcbiAgICAgIGNvdW50cnlDb2RlOiB0b2tlbkRhdGEuY291bnRyeV9jb2RlLFxuICAgICAgcGFydHlJZDogdG9rZW5EYXRhLnBhcnR5X2lkXG4gICAgfTtcbiAgICByZXR1cm4gdXNlckRhdGE7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmV2aWV3U2Vzc2lvbkRhdGEoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuY2hlY2tTZXNzaW9uRGF0YSgpIGFzIGFueTtcbiAgICBjb25zb2xlLmxvZyhgYXN5bmMgcmVzdWx0OiAke3ZhbHVlfWApO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVc2VyZGF0YSh1c2VyZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy51c2VyZGF0YSA9IHVzZXJkYXRhO1xuICB9XG5cbiAgcHVibGljIHNldFRva2Vucyh0b2tlbjogYW55LCByZWZyZXNoVG9rZW46IGFueSk6IHZvaWQge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLnJlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVc2VyZGF0YSgpOiBVc2VyRGF0YSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudXNlcmRhdGE7XG4gIH1cblxuICBwdWJsaWMgc2V0UmVmcmVzaFRva2VuKHJlZnJlc2hUb2tlbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoVG9rZW4gPSByZWZyZXNoVG9rZW47XG4gICAgdGhpcy5zYXZlU3RvcmFnZURhdGEoUkVGUkVTSF9UT0tFTiwgcmVmcmVzaFRva2VuKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZWZyZXNoVG9rZW4oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW47XG4gIH1cblxuICBwdWJsaWMgc2V0VG9rZW4odG9rZW46IGFueSk6IGFueSB7XG4gICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgIHRoaXMuc2F2ZVN0b3JhZ2VEYXRhKFRPS0VOLCB0b2tlbik7XG4gIH1cblxuICBwdWJsaWMgZ2V0VG9rZW4oKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy50b2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95Q3JlZGVudGlhbHMoKTogdm9pZCB7XG4gICAgdGhpcy50b2tlbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlZnJlc2hUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRlbGV0ZVN0b3JhZ2VEYXRhKFRPS0VOKTtcbiAgICB0aGlzLmRlbGV0ZVN0b3JhZ2VEYXRhKFJFRlJFU0hfVE9LRU4pO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3lVc2VyRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJkYXRhID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGVsZXRlU3RvcmFnZURhdGEoVVNFUkRBVEEpO1xuICB9XG5cbiAgcHVibGljIHNhdmVDcmVkZW50aWFscyh0b2tlbjogYW55LCByZWZyZXNoVG9rZW46IGFueSk6IHZvaWQge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLnJlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlbjtcbiAgICB0aGlzLnNhdmVTdG9yYWdlRGF0YShUT0tFTiwgdG9rZW4pO1xuICAgIHRoaXMuc2F2ZVN0b3JhZ2VEYXRhKFJFRlJFU0hfVE9LRU4sIHJlZnJlc2hUb2tlbik7XG4gICAgdGhpcy5zYXZlVXNlckRhdGEodGhpcy5idWlsZFVzZXJkYXRhRnJvbVRva2VuKHRva2VuKSk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVVzZXJEYXRhKHVzZXJEYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJkYXRhID0gdXNlckRhdGE7XG4gICAgdGhpcy5zYXZlU3RvcmFnZURhdGEoVVNFUkRBVEEsIEpTT04uc3RyaW5naWZ5KHVzZXJEYXRhKSk7XG4gIH1cblxuICBwdWJsaWMgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnVzZXJkYXRhO1xuICB9XG5cbiAgbG9nb3V0KCk6IFByb21pc2U8YW55PiB7XG4gICAgbGV0IGNsaWVudElkID0gdGhpcy5lbnZpcm9ubWVudC5hdXRoQ2xpZW50O1xuICAgIGlmICh0aGlzLnJlZnJlc2hUb2tlbikge1xuICAgICAgY29uc3QgZGVjb2RlZCA9IHRoaXMuand0U2VydmljZS5kZWNvZGVUb2tlbih0aGlzLnJlZnJlc2hUb2tlbik7XG4gICAgICBjbGllbnRJZCA9IGRlY29kZWQuYXpwO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5sb2dvdXRBcGlDbGllbnQoY2xpZW50SWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgICB0aGlzLmRlc3Ryb3lDcmVkZW50aWFscygpO1xuICAgICAgICB0aGlzLmRlc3Ryb3lVc2VyRGF0YSgpO1xuICAgICAgICB0aGlzLmdvVG9Mb2dpbigpO1xuICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICB0aGlzLmRlc3Ryb3lDcmVkZW50aWFscygpO1xuICAgICAgICB0aGlzLmRlc3Ryb3lVc2VyRGF0YSgpO1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXROZXdUb2tlbihyZWZyZXNoVG9rZW46IHN0cmluZyk6IGFueSB7XG4gICAgY29uc29sZS5sb2coJ2dldE5ld1Rva2VuJyk7XG4gICAgY29uc3QgYm9keSA9ICdncmFudF90eXBlPXJlZnJlc2hfdG9rZW4nICsgJyZyZWZyZXNoX3Rva2VuPScgKyByZWZyZXNoVG9rZW4gKyAnJmNsaWVudF9pZD0nICsgdGhpcy5lbnZpcm9ubWVudC5hdXRoQ2xpZW50O1xuXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuZW52aXJvbm1lbnQuYXV0aEVuZFBvaW50fS9yZWFsbXMvJHt0aGlzLmVudmlyb25tZW50LmF1dGhSZWFsbX0vcHJvdG9jb2wvb3BlbmlkLWNvbm5lY3QvdG9rZW5gLFxuICAgICAgYm9keSwge2hlYWRlcnN9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzKSk7XG4gIH1cblxuICBnZXROZXdUb2tlbkNsaWVudChyZWZyZXNoVG9rZW46IHN0cmluZywgY2xpZW50SWQ6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc29sZS5sb2coJ2dldE5ld1Rva2VuJyk7XG4gICAgY29uc3QgYm9keSA9ICdncmFudF90eXBlPXJlZnJlc2hfdG9rZW4nICsgJyZyZWZyZXNoX3Rva2VuPScgKyByZWZyZXNoVG9rZW4gKyAnJmNsaWVudF9pZD0nICsgY2xpZW50SWQ7XG5cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5lbnZpcm9ubWVudC5hdXRoRW5kUG9pbnR9L3JlYWxtcy8ke3RoaXMuZW52aXJvbm1lbnQuYXV0aFJlYWxtfS9wcm90b2NvbC9vcGVuaWQtY29ubmVjdC90b2tlbmAsXG4gICAgICBib2R5LCB7aGVhZGVyc30pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGdldFRva2VuQ2xpZW50Q29kZShyZWZyZXNoVG9rZW46IHN0cmluZywgY2xpZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc29sZS5sb2coJ2dldE5ld1Rva2VuJyk7XG4gICAgY29uc3QgYm9keSA9ICdncmFudF90eXBlPXJlZnJlc2hfdG9rZW4nICsgJyZyZWZyZXNoX3Rva2VuPScgKyByZWZyZXNoVG9rZW4gKyAnJmNsaWVudF9pZD0nICsgY2xpZW50SWQ7XG5cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5lbnZpcm9ubWVudC5hdXRoRW5kUG9pbnR9L3JlYWxtcy8ke3RoaXMuZW52aXJvbm1lbnQuYXV0aFJlYWxtfS9wcm90b2NvbC9vcGVuaWQtY29ubmVjdC90b2tlbmAsXG4gICAgICBib2R5LCB7aGVhZGVyc30pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG5cbiAgZ2V0TG9naW5VcmwoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHRoaXMuZW5kUG9pbnQgKyAnL2F1dGgvbG9naW4vdXJsLycrdGhpcy5lbnZpcm9ubWVudC5hdXRoQ2xpZW50KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzKSk7XG4gIH1cblxuICBnZXRIb21lVXJsKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih0aGlzLmVuZFBvaW50ICsgJy9hdXRoL2hvbWUvdXJsLycrdGhpcy5lbnZpcm9ubWVudC5hdXRoQ2xpZW50KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzKSk7XG4gIH1cblxuICBsb2dvdXRBcGkoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBib2R5ID0gJ3JlZnJlc2hfdG9rZW49JyArIHRoaXMucmVmcmVzaFRva2VuICsgJyZjbGllbnRfaWQ9JyArIHRoaXMuZW52aXJvbm1lbnQuYXV0aENsaWVudDtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5lbnZpcm9ubWVudC5hdXRoRW5kUG9pbnR9L3JlYWxtcy8ke3RoaXMuZW52aXJvbm1lbnQuYXV0aFJlYWxtfS9wcm90b2NvbC9vcGVuaWQtY29ubmVjdC9sb2dvdXRgLFxuICAgICAgYm9keSwge2hlYWRlcnN9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzKSk7XG4gIH1cblxuICBsb2dvdXRBcGlDbGllbnQoY2xpZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYm9keSA9ICdyZWZyZXNoX3Rva2VuPScgKyB0aGlzLnJlZnJlc2hUb2tlbiArICcmY2xpZW50X2lkPScgKyBjbGllbnRJZDtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5lbnZpcm9ubWVudC5hdXRoRW5kUG9pbnR9L3JlYWxtcy8ke3RoaXMuZW52aXJvbm1lbnQuYXV0aFJlYWxtfS9wcm90b2NvbC9vcGVuaWQtY29ubmVjdC9sb2dvdXRgLFxuICAgICAgYm9keSwge2hlYWRlcnN9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzKSk7XG4gIH1cblxuICBnb1RvTG9naW4oKTogdm9pZCB7XG4gICAgdGhpcy5nZXRMb2dpblVybCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgIGNvbnN0IGxvZ2luVXJsID0gcmVzLmRhdGE7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ2luVXJsO1xuICAgIH0sIChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkU2Vzc2lvbkRhdGEoKTogdm9pZCB7XG4gICAgbGV0IGRhdGE7XG4gICAgbGV0IHRva2VuO1xuICAgIGxldCByZWZyZXNoVG9rZW47XG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnQucHJvZHVjdGlvbikge1xuICAgICAgY29uc3QgdSA9IHRoaXMuY3J5cHRvU2VydmljZS5lbmNyeXB0KFVTRVJEQVRBKTtcbiAgICAgIGNvbnN0IHQgPSB0aGlzLmNyeXB0b1NlcnZpY2UuZW5jcnlwdChUT0tFTik7XG4gICAgICBjb25zdCByID0gdGhpcy5jcnlwdG9TZXJ2aWNlLmVuY3J5cHQoUkVGUkVTSF9UT0tFTik7XG4gICAgICBkYXRhID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKHUpO1xuICAgICAgdG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0odCk7XG4gICAgICByZWZyZXNoVG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0ocik7XG4gICAgICBpZiAoZGF0YSAmJiB0b2tlbiAmJiByZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgZGF0YSA9IHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KGRhdGEpO1xuICAgICAgICB0b2tlbiA9IHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KHRva2VuKTtcbiAgICAgICAgcmVmcmVzaFRva2VuID0gdGhpcy5jcnlwdG9TZXJ2aWNlLmRlY3J5cHQocmVmcmVzaFRva2VuKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShVU0VSREFUQSk7XG4gICAgICB0b2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShUT0tFTik7XG4gICAgICByZWZyZXNoVG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oUkVGUkVTSF9UT0tFTik7XG4gICAgfVxuICAgIGlmIChkYXRhICYmIHRva2VuICYmIHJlZnJlc2hUb2tlbikge1xuICAgICAgY29uc3QgdXNlciA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICB0aGlzLnNldFRva2Vucyh0b2tlbiwgcmVmcmVzaFRva2VuKTtcbiAgICAgIHRoaXMuc2V0VXNlcmRhdGEodXNlcik7XG4gICAgfVxuICB9XG5cbiAgdXNlckhhc09wdGlvbnNJbkFwcCh1c2VySWQ6IGFueSwgYXBwbGljYXRpb25JZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHRoaXMuZW5kUG9pbnQgKyBgL3NlY3VyaXR5L29wdGlvbi8ke2FwcGxpY2F0aW9uSWR9LyR7dXNlcklkfWApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGNoZWNrQXBwUGVybWlzc2lvbnMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc29sZS5sb2codGhpcy51c2VyZGF0YT8udXNlcklkLCB0aGlzLmFwcGxpY2F0aW9uSWQpO1xuICAgICAgaWYgKHRoaXMuYXBwbGljYXRpb25JZCkge1xuICAgICAgICB0aGlzLnVzZXJIYXNPcHRpb25zSW5BcHAodGhpcy51c2VyZGF0YT8udXNlcklkLCB0aGlzLmFwcGxpY2F0aW9uSWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgaWYgKHJlcy5kYXRhKSB7XG4gICAgICAgICAgICByZXNvbHZlKCdvaycpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdldEhvbWVVcmwoKS5zdWJzY3JpYmUocmVzMSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlczEpO1xuICAgICAgICAgICAgICBjb25zdCBob21lVXJsID0gcmVzMS5kYXRhO1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGhvbWVVcmw7XG4gICAgICAgICAgICAgIHJlamVjdCgnbm9rJyk7XG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgcmVqZWN0KCdub2snKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICByZWplY3QoJ25vaycpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoJ29rJyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gIHB1YmxpYyBnZXRPcHRpb25zVXNlcihhcHBsaWNhdGlvbklkOiBudW1iZXIgfCBudWxsLCB0eXBlOiBzdHJpbmcgfCBudWxsLCBsYW5ndWFnZTogc3RyaW5nIHwgbnVsbCwgZW50aXR5Q29kZTogc3RyaW5nIHwgbnVsbCwgcGFyZW50T3B0aW9uSWQ6IG51bWJlciB8IG51bGwsIGluY2x1ZGVEYXRhOiBib29sZWFuIHwgbnVsbCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgcGFyYW0gPSB7XG4gICAgICB1c2VySWQ6IHRoaXMudXNlcmRhdGE/LnVzZXJJZCxcbiAgICAgIGFwcGxpY2F0aW9uSWQsXG4gICAgICB0eXBlLFxuICAgICAgbGFuZ3VhZ2UsXG4gICAgICBlbnRpdHlDb2RlLFxuICAgICAgcGFyZW50T3B0aW9uSWQsXG4gICAgICBpbmNsdWRlRGF0YVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odGhpcy5lbmRQb2ludCArICcvc2VjdXJpdHkvb3B0aW9uL3VzZXInLCBwYXJhbSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcykpO1xuICB9XG5cbiAgcmVnaXN0ZXJFeGNlcHRpb24ocGFyYW06IEZyb250RW5kRXhjZXB0aW9uKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdza2lwRXJyb3InLCAndHJ1ZScpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHRoaXMuZW5kUG9pbnQgKyAnL2F1dGgvZXhjZXB0aW9uL2xvZycsIHBhcmFtLCB7aGVhZGVyc30pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIHNhdmVTdG9yYWdlRGF0YShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVudmlyb25tZW50LnByb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnN0IGsgPSB0aGlzLmNyeXB0b1NlcnZpY2UuZW5jcnlwdChrZXkpO1xuICAgICAgY29uc3QgdiA9IHRoaXMuY3J5cHRvU2VydmljZS5lbmNyeXB0KHZhbHVlKTtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShrLCB2KTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZVN0b3JhZ2VEYXRhKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnQucHJvZHVjdGlvbikge1xuICAgICAgY29uc3QgayA9IHRoaXMuY3J5cHRvU2VydmljZS5lbmNyeXB0KGtleSk7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgIH1cbiAgfVxuXG4gIGdldFN0b3JhZ2VEYXRhKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgbGV0IHJlczogc3RyaW5nIHwgbnVsbDtcbiAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uKSB7XG4gICAgICBjb25zdCBrID0gdGhpcy5jcnlwdG9TZXJ2aWNlLmVuY3J5cHQoa2V5KTtcbiAgICAgIGNvbnN0IHYgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oayk7XG4gICAgICBpZiAodikge1xuICAgICAgICByZXMgPSB0aGlzLmNyeXB0b1NlcnZpY2UuZGVjcnlwdCh2KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcyA9IG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cblxuICBwdWJsaWMgcmVtb3ZlVXJsRGF0YSgpOiB2b2lkIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHVybC5zZWFyY2hQYXJhbXM7XG4gICAgcXVlcnlQYXJhbXMuZGVsZXRlKCdjb2RlJyk7XG4gICAgcXVlcnlQYXJhbXMuZGVsZXRlKCdjbGllbnRJZCcpO1xuICAgIGNvbnN0IG5ld1VybCA9IHVybC5vcmlnaW4gKyB1cmwucGF0aG5hbWUgKyAnPycgKyBxdWVyeVBhcmFtcy50b1N0cmluZygpO1xuICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgZG9jdW1lbnQudGl0bGUsIG5ld1VybCk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tTZXNzaW9uRGF0YSgpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsZXQgZGF0YTtcbiAgICAgIGxldCB0b2tlbjtcbiAgICAgIGxldCByZWZyZXNoVG9rZW47XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRVcmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgIGNvbnN0IGNvZGUgPSBjdXJyZW50VXJsLnNlYXJjaFBhcmFtcy5nZXQoJ2NvZGUnKTtcbiAgICAgIGNvbnNvbGUubG9nKCdjb2RlJywgY29kZSk7XG4gICAgICBpZiAoY29kZSkge1xuICAgICAgICBjb25zdCBjb2RlRGVjb2RlZCA9IHRoaXMuZ2V0RGVjb2RlZEF1dGhDb2RlKGNvZGUpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnY29kZScsIGNvZGVEZWNvZGVkKTtcbiAgICAgICAgY29uc3QgY2xpZW50SWQgPSBjdXJyZW50VXJsLnNlYXJjaFBhcmFtcy5nZXQoJ2NsaWVudElkJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdjbGllbnRJZCcsIGNsaWVudElkKTtcbiAgICAgICAgY29uc3QgZGVjb2RlZCA9IHRoaXMuand0U2VydmljZS5kZWNvZGVUb2tlbihjb2RlRGVjb2RlZCk7XG4gICAgICAgIHRoaXMuZ2V0VG9rZW5DbGllbnRDb2RlKGNvZGVEZWNvZGVkLCBjbGllbnRJZD9jbGllbnRJZDpkZWNvZGVkLmF6cCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgICAgICAgdG9rZW4gPSByZXMuYWNjZXNzX3Rva2VuO1xuICAgICAgICAgICAgcmVmcmVzaFRva2VuID0gcmVzLnJlZnJlc2hfdG9rZW47XG4gICAgICAgICAgICB0aGlzLnNhdmVDcmVkZW50aWFscyh0b2tlbiwgcmVmcmVzaFRva2VuKTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tBcHBQZXJtaXNzaW9ucygpLnRoZW4oKHJlczEpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzMSk7XG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlVXJsRGF0YSgpO1xuICAgICAgICAgICAgICByZXNvbHZlKCdPSycpO1xuICAgICAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGEgPSB0aGlzLmdldFN0b3JhZ2VEYXRhKFVTRVJEQVRBKTtcbiAgICAgICAgdG9rZW4gPSB0aGlzLmdldFN0b3JhZ2VEYXRhKFRPS0VOKTtcbiAgICAgICAgcmVmcmVzaFRva2VuID0gdGhpcy5nZXRTdG9yYWdlRGF0YShSRUZSRVNIX1RPS0VOKTtcbiAgICAgICAgaWYgKGRhdGEgJiYgdG9rZW4gJiYgcmVmcmVzaFRva2VuKSB7XG4gICAgICAgICAgdGhpcy5zYXZlQ3JlZGVudGlhbHModG9rZW4sIHJlZnJlc2hUb2tlbik7XG4gICAgICAgICAgdGhpcy5jaGVja0FwcFBlcm1pc3Npb25zKCkudGhlbigocmVzMSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2cocmVzMSk7XG4gICAgICAgICAgICByZXNvbHZlKCdPSycpO1xuICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICAgIGlmICh1cmwuaW5kZXhPZignL3JlZGlyZWN0Jyk+LTEpIHtcbiAgICAgICAgICAgIHJlc29sdmUoJ09LJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveUNyZWRlbnRpYWxzKCk7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3lVc2VyRGF0YSgpO1xuICAgICAgICAgICAgdGhpcy5nZXRMb2dpblVybCgpLnN1YnNjcmliZShyZXMxID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzMSk7XG4gICAgICAgICAgICAgIHRoaXMubG9naW5VcmwgPSByZXMxLmRhdGE7XG4gICAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZignL2xvZ2luJyk8MCAmJiB1cmwuaW5kZXhPZignL2ZvcmdvdCcpPDAgJiZcbiAgICAgICAgICAgICAgICAgIHVybC5pbmRleE9mKCcvcmVzZXQnKTwwICYmIHVybC5pbmRleE9mKCcvdmVyaWZ5Jyk8MCAmJlxuICAgICAgICAgICAgICAgICAgdXJsLmluZGV4T2YoJy9zaWduX3VwJyk8MCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5sb2dpblVybCArICc/Y29udGludWU9JytlbmNvZGVVUklDb21wb25lbnQodXJsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXNvbHZlKCdOT0snKTtcbiAgICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cblxuXG4gIHB1YmxpYyBjaGVja1Nlc3Npb25EYXRhTWljcm9mcm9udCgpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsZXQgZGF0YTtcbiAgICAgIGxldCB0b2tlbjtcbiAgICAgIGxldCByZWZyZXNoVG9rZW47XG4gICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHUgPSB0aGlzLmNyeXB0b1NlcnZpY2UuZW5jcnlwdChVU0VSREFUQSk7XG4gICAgICAgIGNvbnN0IHQgPSB0aGlzLmNyeXB0b1NlcnZpY2UuZW5jcnlwdChUT0tFTik7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmNyeXB0b1NlcnZpY2UuZW5jcnlwdChSRUZSRVNIX1RPS0VOKTtcbiAgICAgICAgY29uc3QgZDEgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0odSk7XG4gICAgICAgIGNvbnN0IGQyID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKHQpO1xuICAgICAgICBjb25zdCBkMyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShyKTtcbiAgICAgICAgaWYgKGQxICYmIGQyICYmIGQzKSB7XG4gICAgICAgICAgZGF0YSA9IHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KGQxKTtcbiAgICAgICAgICB0b2tlbiA9IHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KGQyKTtcbiAgICAgICAgICByZWZyZXNoVG9rZW4gPSB0aGlzLmNyeXB0b1NlcnZpY2UuZGVjcnlwdChkMyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGEgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oVVNFUkRBVEEpO1xuICAgICAgICB0b2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShUT0tFTik7XG4gICAgICAgIHJlZnJlc2hUb2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShSRUZSRVNIX1RPS0VOKTtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhICYmIHRva2VuICYmIHJlZnJlc2hUb2tlbikge1xuICAgICAgICBjb25zb2xlLmxvZygnbG9jYWwgc2Vzc2lvbiBvaycpO1xuICAgICAgICB0aGlzLnNhdmVDcmVkZW50aWFscyh0b2tlbiwgcmVmcmVzaFRva2VuKTtcbiAgICAgICAgcmVzb2x2ZSgnT0snKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2xvY2FsIHNlc3Npb24gbm9rJyk7XG4gICAgICAgIHJlamVjdCgnTk9LJyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXV0aENvZGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBlbmMgPSB0aGlzLmNyeXB0b1NlcnZpY2UuZW5jcnlwdCh0aGlzLnJlZnJlc2hUb2tlbj90aGlzLnJlZnJlc2hUb2tlbjonJyk7XG4gICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlbmMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWNvZGVkQXV0aENvZGUoY29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkZWMgPSBkZWNvZGVVUklDb21wb25lbnQoY29kZSk7XG4gICAgcmV0dXJuIHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KGRlYyk7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaFNlc3Npb24oKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVmcmVzaFRva2VuID0gdGhpcy5nZXRSZWZyZXNoVG9rZW4oKTtcbiAgICAgIGlmIChyZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgY29uc3QgZGVjb2RlZCA9IHRoaXMuand0U2VydmljZS5kZWNvZGVUb2tlbihyZWZyZXNoVG9rZW4pO1xuICAgICAgICB0aGlzLmdldE5ld1Rva2VuQ2xpZW50KHJlZnJlc2hUb2tlbiwgZGVjb2RlZC5henApLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgICAgICAgdGhpcy5zZXRUb2tlbihyZXMuYWNjZXNzX3Rva2VuKTtcbiAgICAgICAgICAgIHRoaXMuc2V0UmVmcmVzaFRva2VuKHJlcy5yZWZyZXNoX3Rva2VuKTtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUNyZWRlbnRpYWxzKHJlcy5hY2Nlc3NfdG9rZW4sIHJlcy5yZWZyZXNoX3Rva2VuKTtcbiAgICAgICAgICAgIHJlc29sdmUoJ09LJyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVqZWN0KCdOT0snKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG59XG5cbiJdfQ==
|
|
@@ -58,9 +58,24 @@ export class WebAuthnService {
|
|
|
58
58
|
};
|
|
59
59
|
return navigator.credentials.get({ publicKey: publicKeyCredentials });
|
|
60
60
|
}
|
|
61
|
-
|
|
61
|
+
getChallengeOld() {
|
|
62
62
|
return Uint8Array.from('jEfcn1CsGFxBiXYtJMSGDycPqPoyFJ3Z', c => c.charCodeAt(0));
|
|
63
63
|
}
|
|
64
|
+
getChallenge() {
|
|
65
|
+
let base64 = 'jEfcn1CsGFxBiXYtJMSGDycPqPoyFJ3Z'
|
|
66
|
+
.replace(/-/g, '+')
|
|
67
|
+
.replace(/_/g, '/');
|
|
68
|
+
while (base64.length % 4) {
|
|
69
|
+
base64 += '=';
|
|
70
|
+
}
|
|
71
|
+
const binaryString = atob(base64);
|
|
72
|
+
const len = binaryString.length;
|
|
73
|
+
const bytes = new Uint8Array(len);
|
|
74
|
+
for (let i = 0; i < len; i++) {
|
|
75
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
76
|
+
}
|
|
77
|
+
return bytes;
|
|
78
|
+
}
|
|
64
79
|
register(user, newCredentialInfo) {
|
|
65
80
|
const promise = new Promise((resolve, reject) => {
|
|
66
81
|
let enc = new TextDecoder('utf-8');
|
|
@@ -246,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImpor
|
|
|
246
261
|
type: Inject,
|
|
247
262
|
args: ['environment']
|
|
248
263
|
}] }]; } });
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWF1dGhuLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zc2ktc2VjdXJpdHktY29tbW9ucy9zcmMvbGliL3NlcnZpY2VzL3dlYi1hdXRobi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRdkMsTUFBTSxPQUFPLGVBQWU7SUFLMUIsWUFDVSxjQUE4QixFQUM5QixJQUFnQixFQUNoQixRQUFxQixFQUNOLFdBQWdCO1FBSC9CLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFOL0Isc0JBQWlCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBUzVFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBa0I7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sa0NBQWtDLEdBQXVDO1lBQzdFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzlCLEVBQUUsRUFBRTtnQkFDRixJQUFJLEVBQUUsVUFBVTthQUNqQjtZQUNELElBQUksRUFBRTtnQkFDSixFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxFQUFFLElB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QUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOzhHQTlQVSxlQUFlLHFHQVNoQixhQUFhO2tIQVRaLGVBQWUsY0FGZCxNQUFNOzsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBVUksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxpbmVzLXBlci1mdW5jdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWNvbnN0ICovXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVzZXJXZWJhdXRobiB9IGZyb20gJy4uL3VzZXIubW9kZWwnO1xuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBXZWJBdXRoblNlcnZpY2Uge1xuXG4gIHdlYkF1dGhuQXZhaWxhYmxlID0gISFuYXZpZ2F0b3IuY3JlZGVudGlhbHMgJiYgISFuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlO1xuICBlbnZpcm9ubWVudDogYW55O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlOiBTZXNzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIHdlYkF1dGhuU2lnbnVwKHVzZXI6IFVzZXJXZWJhdXRobik6IFByb21pc2U8YW55PiB7XG4gICAgY29uc29sZS5sb2coJ1t3ZWJBdXRoblNpZ251cF0nKTtcbiAgICBjb25zdCBwdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zID0ge1xuICAgICAgY2hhbGxlbmdlOiB0aGlzLmdldENoYWxsZW5nZSgpLFxuICAgICAgcnA6IHtcbiAgICAgICAgbmFtZTogJ1dlYkF1dGhuJyxcbiAgICAgIH0sXG4gICAgICB1c2VyOiB7XG4gICAgICAgIGlkOiBVaW50OEFycmF5LmZyb20odXNlci5pZCwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpLFxuICAgICAgICBuYW1lOiB1c2VyLmVtYWlsLFxuICAgICAgICBkaXNwbGF5TmFtZTogdXNlci5lbWFpbCxcbiAgICAgIH0sXG4gICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyBhbGc6IC03LCB0eXBlOiAncHVibGljLWtleScgfV0sXG4gICAgICBhdXRoZW50aWNhdG9yU2VsZWN0aW9uOiB7XG4gICAgICAgIGF1dGhlbnRpY2F0b3JBdHRhY2htZW50OiAncGxhdGZvcm0nLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IDYwMDAwLFxuICAgICAgYXR0ZXN0YXRpb246ICdkaXJlY3QnXG4gICAgfTtcblxuICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKHtcbiAgICAgIHB1YmxpY0tleTogcHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyxcbiAgICB9KTtcblxuICB9XG5cbiAgd2ViQXV0aG5TaWduaW4odXNlcjogVXNlcldlYmF1dGhuKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zb2xlLmxvZyh1c2VyKTtcbiAgICAvKiB7XG4gICAgICAgIFwiaWRcIjogXCJiMThlZTA3Ny1mODk2LTQ0ZjQtYTJkNC0zYWM4MzFlYjFjOTBcIixcbiAgICAgICAgXCJlbWFpbFwiOiBcInRlc3QudXNlckBlbWFpbC5jb21cIixcbiAgICAgICAgXCJwYXNzd29yZFwiOiBcIlwiLFxuICAgICAgICBcImNyZWRlbnRpYWxzXCI6IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjoge30sXG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInB1YmxpYy1rZXlcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgXVxuICAgIH0gKi9cbiAgICBsZXQgcHVibGljS2V5Q3JlZGVudGlhbHMgPSB7XG4gICAgICBjaGFsbGVuZ2U6IHRoaXMuZ2V0Q2hhbGxlbmdlKCksXG4gICAgICBhbGxvd0NyZWRlbnRpYWxzOiB1c2VyLmNyZWRlbnRpYWxzWzBdXG4gICAgfTtcbiAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCh7IHB1YmxpY0tleTogcHVibGljS2V5Q3JlZGVudGlhbHMgfSk7XG4gIH1cblxuXG4gIGdldENoYWxsZW5nZSgpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gVWludDhBcnJheS5mcm9tKCdqRWZjbjFDc0dGeEJpWFl0Sk1TR0R5Y1BxUG95RkozWicsIGMgPT4gYy5jaGFyQ29kZUF0KDApKTtcbiAgfVxuXG4gIHJlZ2lzdGVyKHVzZXI6IFVzZXJXZWJhdXRobiwgbmV3Q3JlZGVudGlhbEluZm86IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCBlbmMgPSBuZXcgVGV4dERlY29kZXIoJ3V0Zi04Jyk7XG4gICAgICBsZXQgY2xpZW50RGF0YUpTT04gPSBlbmMuZGVjb2RlKG5ld0NyZWRlbnRpYWxJbmZvLnJlc3BvbnNlLmNsaWVudERhdGFKU09OKTtcbiAgICAgIGNvbnNvbGUubG9nKGNsaWVudERhdGFKU09OKTtcbiAgICAgIGxldCBjbGllbnREYXRhID0gSlNPTi5wYXJzZShjbGllbnREYXRhSlNPTik7XG4gICAgICBjb25zb2xlLmxvZyhjbGllbnREYXRhKTtcbiAgICAgIGNvbnN0IHB1YmxpY0tleSA9ICB0aGlzLmFycmF5QnVmZmVyVG9CYXNlNjRVcmwobmV3Q3JlZGVudGlhbEluZm8ucmF3SWQpO1xuICAgICAgbGV0IGlkTGlzdCA9IFt7XG4gICAgICAgIC8vIGlkOiBuZXdDcmVkZW50aWFsSW5mby5yYXdJZCxcbiAgICAgICAgaWQ6IHB1YmxpY0tleSxcbiAgICAgICAgdHlwZTogJ3B1YmxpYy1rZXknXG4gICAgICB9XTtcbiAgICAgIHVzZXIuY3JlZGVudGlhbHMucHVzaChpZExpc3QpO1xuICAgICAgY29uc29sZS5sb2codXNlcik7XG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZVVzZXIodXNlci5pZCwgJ3dlYmF1dGhuX2tleScsIHB1YmxpY0tleSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuXG4gIGJhc2U2NFVybFRvQXJyYXlCdWZmZXIoYmFzZTY0VXJsU3RyaW5nOiBzdHJpbmcpOiBBcnJheUJ1ZmZlciB7XG4gICAgY29uc3QgYmFzZTY0U3RyaW5nID0gYmFzZTY0VXJsU3RyaW5nLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJyk7XG4gICAgY29uc3QgcGFkZGVkQmFzZTY0U3RyaW5nID0gYmFzZTY0U3RyaW5nLnBhZEVuZChNYXRoLmNlaWwoYmFzZTY0U3RyaW5nLmxlbmd0aCAvIDQpICogNCwgJz0nKTtcbiAgICBjb25zdCB1aW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoXG4gICAgICBhdG9iKHBhZGRlZEJhc2U2NFN0cmluZylcbiAgICAgICAgLnNwbGl0KCcnKVxuICAgICAgICAubWFwKChjaGFyKSA9PiBjaGFyLmNoYXJDb2RlQXQoMCkpXG4gICAgKTtcbiAgICByZXR1cm4gdWludDhBcnJheS5idWZmZXI7XG4gIH1cblxuICBhcnJheUJ1ZmZlclRvQmFzZTY0VXJsKGFycmF5QnVmZmVyOiBBcnJheUJ1ZmZlcik6IHN0cmluZyB7XG4gICAgY29uc3QgdWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKTtcbiAgICBsZXQgYmFzZTY0U3RyaW5nID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIEFycmF5LmZyb20odWludDhBcnJheSkpKTtcbiAgICBiYXNlNjRTdHJpbmcgPSBiYXNlNjRTdHJpbmcucmVwbGFjZSgvXFwrL2csICctJykucmVwbGFjZSgvXFwvL2csICdfJykucmVwbGFjZSgvPSskLywgJycpO1xuICAgIHJldHVybiBiYXNlNjRTdHJpbmc7XG4gIH1cblxuXG4gIHNpZ25VcCgpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy53ZWJBdXRobkF2YWlsYWJsZSkge1xuICAgICAgICBjb25zdCB1c2VyRGF0YSA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0VXNlcmRhdGEoKTtcbiAgICAgICAgaWYgKHVzZXJEYXRhKSB7XG4gICAgICAgICAgbGV0IHVzZXIgPSB7XG4gICAgICAgICAgICBpZDogdXNlckRhdGE/LnVzZXJJZCxcbiAgICAgICAgICAgIGVtYWlsOiB1c2VyRGF0YT8uZW1haWwsXG4gICAgICAgICAgICBjcmVkZW50aWFsczogW11cbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMud2ViQXV0aG5TaWdudXAodXNlcilcbiAgICAgICAgICAgIC50aGVuKChjcmVkZW50aWFsOiBQdWJsaWNLZXlDcmVkZW50aWFsKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjcmVkZW50aWFscy5jcmVhdGUgUkVTUE9OU0UnLCBjcmVkZW50aWFsKTtcbiAgICAgICAgICAgICAgdGhpcy5yZWdpc3Rlcih1c2VyLCBjcmVkZW50aWFsKS50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93U25hY2tCYXIodGhpcy5nZXRNZXNzYWdlKCdzaWduVXBPaycpLCBbJ3NuYWNrLXN1Y2Nlc3MnXSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLmdldE1lc3NhZ2UoJ3NpZ25VcE9rJykpO1xuICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1NuYWNrQmFyKHRoaXMuZ2V0TWVzc2FnZSgnc2lnblVwTm9rJyksIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgICAgICAgICAgcmVqZWN0KHRoaXMuZ2V0TWVzc2FnZSgnc2lnblVwTm9rJykpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdjcmVkZW50aWFscy5jcmVhdGUgRVJST1InLCBlcnJvcik7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd1NuYWNrQmFyKHRoaXMuZ2V0TWVzc2FnZSgnc2lnblVwTm9rJyksIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgICAgICAgIHJlamVjdCh0aGlzLmdldE1lc3NhZ2UoJ3NpZ25VcE5vaycpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Jhcih0aGlzLmdldE1lc3NhZ2UoJ2Jyb3dzZXJOb2snKSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgcmVqZWN0KHRoaXMuZ2V0TWVzc2FnZSgnYnJvd3Nlck5vaycpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG5cbiAgc2lnbkluKCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLndlYkF1dGhuQXZhaWxhYmxlKSB7XG4gICAgICAgIGNvbnN0IHVzZXJEYXRhID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRVc2VyZGF0YSgpO1xuICAgICAgICBpZiAodXNlckRhdGEpIHtcbiAgICAgICAgICBsZXQgdXNlciA9IHtcbiAgICAgICAgICAgIGlkOiB1c2VyRGF0YT8udXNlcklkLFxuICAgICAgICAgICAgZW1haWw6IHVzZXJEYXRhPy5lbWFpbCxcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzOiBbe31dXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHRoaXMuZ2V0QXR0cmlidXRlVXNlcih1c2VyLmlkLCAnd2ViYXV0aG5fa2V5Jykuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhLndlYmF1dGhuX2tleSAmJiByZXMuZGF0YS53ZWJhdXRobl9rZXkubGVuZ3RoID4gMCkge1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY3JlZCA9IHtcbiAgICAgICAgICAgICAgICAgIGlkOiAgdGhpcy5iYXNlNjRVcmxUb0FycmF5QnVmZmVyKHJlcy5kYXRhLndlYmF1dGhuX2tleVswXSksXG4gICAgICAgICAgICAgICAgICB0eXBlOiAncHVibGljLWtleSdcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHVzZXIuY3JlZGVudGlhbHMuc3BsaWNlKDAsMSk7XG4gICAgICAgICAgICAgICAgdXNlci5jcmVkZW50aWFscy5wdXNoKFtjcmVkXSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLndlYkF1dGhuU2lnbmluKHVzZXIpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU1VDQ0VTU0ZVTExZIEdPVCBBTiBBU1NFUlRJT04hJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgnb2snKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGQUlMJywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dTbmFja0Jhcih0aGlzLmdldE1lc3NhZ2UoJ2ludmFsaWRDcmVkZW50aWFscycpLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QodGhpcy5nZXRNZXNzYWdlKCdpbnZhbGlkQ3JlZGVudGlhbHMnKSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dTbmFja0Jhcih0aGlzLmdldE1lc3NhZ2UoJ25vQ3JlZGVudGlhbHMnKSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgICAgICAgICByZWplY3QodGhpcy5nZXRNZXNzYWdlKCdub0NyZWRlbnRpYWxzJykpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICB0aGlzLnNob3dTbmFja0Jhcih0aGlzLmdldE1lc3NhZ2UoJ2Vycm9yUmV0cmlldmluZ0NyZWRlbnRpYWxzJyksIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgICAgICAgIHJlamVjdCh0aGlzLmdldE1lc3NhZ2UoJ2Vycm9yUmV0cmlldmluZ0NyZWRlbnRpYWxzJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Jhcih0aGlzLmdldE1lc3NhZ2UoJ2Jyb3dzZXJOb2snKSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgcmVqZWN0KHRoaXMuZ2V0TWVzc2FnZSgnYnJvd3Nlck5vaycpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG5cbiAgYWRkQXR0cmlidXRlVXNlcih1c2VySWQ6IGFueSwgY29kZTogYW55LCB2YWx1ZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih0aGlzLmVudmlyb25tZW50LmVuZFBvaW50ICsgYC91c2VyL2F0dHJpYnV0ZS92YWx1ZS8ke3VzZXJJZH0vJHtjb2RlfS8ke3ZhbHVlfWAse30pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGdldEF0dHJpYnV0ZVVzZXIodXNlcklkOiBhbnksIGNvZGU6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih0aGlzLmVudmlyb25tZW50LmVuZFBvaW50ICsgYC91c2VyL2F0dHJpYnV0ZS92YWx1ZS8ke3VzZXJJZH0vJHtjb2RlfWApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIHNob3dTbmFja0JhcihtZXNzYWdlOiBhbnksIHBhbmVsQ2xhc3M6IGFueVtdID0gW10pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCB1bmRlZmluZWQsIHtcbiAgICAgICAgZHVyYXRpb246IDUwMDAsXG4gICAgICAgIHBhbmVsQ2xhc3MsXG4gICAgICAgIHZlcnRpY2FsUG9zaXRpb246ICd0b3AnXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldE1lc3NhZ2UoY29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgbXNnID0gJyc7XG4gICAgY29uc3QgbGFuZyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnTEFORycpO1xuICAgIGNvbnN0IG1lc3NhZ2VzRW46IGFueSA9IHtcbiAgICAgIHNpZ25VcE9rOiAnQ3JlZGVudGlhbHMgcmVnaXN0ZXJlZCBzdWNjZXNzZnVsbHknLFxuICAgICAgc2lnblVwTm9rOiAnQSBwcm9ibGVtIG9jY3VycmVkIHdoaWxlIHJlZ2lzdGVyaW5nIGNyZWRlbnRpYWxzJyxcbiAgICAgIGJyb3dzZXJOb2s6ICdUaGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgZnVuY3Rpb25hbGl0eScsXG4gICAgICBub0NyZWRlbnRpYWxzOiAnVGhlIHVzZXIgaGFzIG5vIHN0b3JlZCBjcmVkZW50aWFscycsXG4gICAgICBpbnZhbGlkQ3JlZGVudGlhbHM6ICdUaGUgY3JlZGVudGlhbHMgYXJlIGludmFsaWQnLFxuICAgICAgZXJyb3JSZXRyaWV2aW5nQ3JlZGVudGlhbHM6ICdUaGVyZSB3YXMgYSBwcm9ibGVtIHJldHJpZXZpbmcgY3JlZGVudGlhbHMnLFxuICAgIH07XG4gICAgY29uc3QgbWVzc2FnZXNFczogYW55ID0ge1xuICAgICAgc2lnblVwT2s6ICdDcmVkZW5jaWFsZXMgcmVnaXN0cmFkYXMgZXhpdG9zYW1lbnRlJyxcbiAgICAgIHNpZ25VcE5vazogJ1NlIHByb2R1am8gdW4gcHJvYmxlbWEgYWwgcmVnaXN0cmFyIGxhcyBjcmVkZW5jaWFsZXMnLFxuICAgICAgYnJvd3Nlck5vazogJ0VsIG5hdmVnYWRvciBubyBzb3BvcnRhIGVzdGEgZnVuY2lvbmFsaWRhZCcsXG4gICAgICBub0NyZWRlbnRpYWxzOiAnRWwgdXN1YXJpbyBubyB0aWVuZSBjcmVkZW5jaWFsZXMgYWxtYWNlbmFkYXMnLFxuICAgICAgaW52YWxpZENyZWRlbnRpYWxzOiAnTGFzIGNyZWRlbmNpYWxlcyBubyBzb24gdsOhbGlkYXMnLFxuICAgICAgZXJyb3JSZXRyaWV2aW5nQ3JlZGVudGlhbHM6ICdTZSBwcm9kdWpvIHVuIHByb2JsZW1hIGFsIHJlY3VwZXJhciBsYXMgY3JlZGVuY2lhbGVzJyxcbiAgICB9O1xuICAgIGlmIChsYW5nICYmIGxhbmc9PT0nZW4nKSB7XG4gICAgICBtc2cgPSBtZXNzYWdlc0VuW2NvZGVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBtc2cgPSBtZXNzYWdlc0VzW2NvZGVdO1xuICAgIH1cbiAgICByZXR1cm4gbXNnO1xuICB9XG5cbn1cbiJdfQ==
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWF1dGhuLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zc2ktc2VjdXJpdHktY29tbW9ucy9zcmMvbGliL3NlcnZpY2VzL3dlYi1hdXRobi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRdkMsTUFBTSxPQUFPLGVBQWU7SUFLMUIsWUFDVSxjQUE4QixFQUM5QixJQUFnQixFQUNoQixRQUFxQixFQUNOLFdBQWdCO1FBSC9CLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFOL0Isc0JBQWlCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBUzVFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBa0I7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sa0NBQWtDLEdBQXVDO1lBQzdFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzlCLEVBQUUsRUFBRTtnQkFDRixJQUFJLEVBQUUsVUFBVTthQUNqQjtZQUNELElBQUksRUFBRTtnQkFDSixFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxFQUFFLElB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TUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsTUFBTSxVQUFVLEdBQVE7WUFDdEIsUUFBUSxFQUFFLHFDQUFxQztZQUMvQyxTQUFTLEVBQUUsa0RBQWtEO1lBQzdELFVBQVUsRUFBRSxpREFBaUQ7WUFDN0QsYUFBYSxFQUFFLG9DQUFvQztZQUNuRCxrQkFBa0IsRUFBRSw2QkFBNkI7WUFDakQsMEJBQTBCLEVBQUUsNENBQTRDO1NBQ3pFLENBQUM7UUFDRixNQUFNLFVBQVUsR0FBUTtZQUN0QixRQUFRLEVBQUUsdUNBQXVDO1lBQ2pELFNBQVMsRUFBRSxzREFBc0Q7WUFDakUsVUFBVSxFQUFFLDRDQUE0QztZQUN4RCxhQUFhLEVBQUUsOENBQThDO1lBQzdELGtCQUFrQixFQUFFLGlDQUFpQztZQUNyRCwwQkFBMEIsRUFBRSxzREFBc0Q7U0FDbkYsQ0FBQztRQUNGLElBQUksSUFBSSxJQUFJLElBQUksS0FBRyxJQUFJLEVBQUU7WUFDdkIsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjthQUFNO1lBQ0wsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs4R0E5UVUsZUFBZSxxR0FTaEIsYUFBYTtrSEFUWixlQUFlLGNBRmQsTUFBTTs7MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVVJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1saW5lcy1wZXItZnVuY3Rpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1jb25zdCAqL1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVc2VyV2ViYXV0aG4gfSBmcm9tICcuLi91c2VyLm1vZGVsJztcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgV2ViQXV0aG5TZXJ2aWNlIHtcblxuICB3ZWJBdXRobkF2YWlsYWJsZSA9ICEhbmF2aWdhdG9yLmNyZWRlbnRpYWxzICYmICEhbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZTtcbiAgZW52aXJvbm1lbnQ6IGFueTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZTogU2Vzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICB3ZWJBdXRoblNpZ251cCh1c2VyOiBVc2VyV2ViYXV0aG4pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnNvbGUubG9nKCdbd2ViQXV0aG5TaWdudXBdJyk7XG4gICAgY29uc3QgcHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczogUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyA9IHtcbiAgICAgIGNoYWxsZW5nZTogdGhpcy5nZXRDaGFsbGVuZ2UoKSxcbiAgICAgIHJwOiB7XG4gICAgICAgIG5hbWU6ICdXZWJBdXRobicsXG4gICAgICB9LFxuICAgICAgdXNlcjoge1xuICAgICAgICBpZDogVWludDhBcnJheS5mcm9tKHVzZXIuaWQsIGMgPT4gYy5jaGFyQ29kZUF0KDApKSxcbiAgICAgICAgbmFtZTogdXNlci5lbWFpbCxcbiAgICAgICAgZGlzcGxheU5hbWU6IHVzZXIuZW1haWwsXG4gICAgICB9LFxuICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgYWxnOiAtNywgdHlwZTogJ3B1YmxpYy1rZXknIH1dLFxuICAgICAgYXV0aGVudGljYXRvclNlbGVjdGlvbjoge1xuICAgICAgICBhdXRoZW50aWNhdG9yQXR0YWNobWVudDogJ3BsYXRmb3JtJyxcbiAgICAgIH0sXG4gICAgICB0aW1lb3V0OiA2MDAwMCxcbiAgICAgIGF0dGVzdGF0aW9uOiAnZGlyZWN0J1xuICAgIH07XG5cbiAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZSh7XG4gICAgICBwdWJsaWNLZXk6IHB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMsXG4gICAgfSk7XG5cbiAgfVxuXG4gIHdlYkF1dGhuU2lnbmluKHVzZXI6IFVzZXJXZWJhdXRobik6IFByb21pc2U8YW55PiB7XG4gICAgY29uc29sZS5sb2codXNlcik7XG4gICAgLyoge1xuICAgICAgICBcImlkXCI6IFwiYjE4ZWUwNzctZjg5Ni00NGY0LWEyZDQtM2FjODMxZWIxYzkwXCIsXG4gICAgICAgIFwiZW1haWxcIjogXCJ0ZXN0LnVzZXJAZW1haWwuY29tXCIsXG4gICAgICAgIFwicGFzc3dvcmRcIjogXCJcIixcbiAgICAgICAgXCJjcmVkZW50aWFsc1wiOiBbXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcImlkXCI6IHt9LFxuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJwdWJsaWMta2V5XCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIF1cbiAgICB9ICovXG4gICAgbGV0IHB1YmxpY0tleUNyZWRlbnRpYWxzID0ge1xuICAgICAgY2hhbGxlbmdlOiB0aGlzLmdldENoYWxsZW5nZSgpLFxuICAgICAgYWxsb3dDcmVkZW50aWFsczogdXNlci5jcmVkZW50aWFsc1swXVxuICAgIH07XG4gICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQoeyBwdWJsaWNLZXk6IHB1YmxpY0tleUNyZWRlbnRpYWxzIH0pO1xuICB9XG5cblxuICBnZXRDaGFsbGVuZ2VPbGQoKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbSgnakVmY24xQ3NHRnhCaVhZdEpNU0dEeWNQcVBveUZKM1onLCBjID0+IGMuY2hhckNvZGVBdCgwKSk7XG4gIH1cblxuICBnZXRDaGFsbGVuZ2UoKTogVWludDhBcnJheSB7XG4gICAgbGV0IGJhc2U2NDogc3RyaW5nID0gJ2pFZmNuMUNzR0Z4QmlYWXRKTVNHRHljUHFQb3lGSjNaJ1xuICAgICAgLnJlcGxhY2UoLy0vZywgJysnKVxuICAgICAgLnJlcGxhY2UoL18vZywgJy8nKTtcbiAgICB3aGlsZSAoYmFzZTY0Lmxlbmd0aCAlIDQpIHtcbiAgICAgIGJhc2U2NCArPSAnPSc7XG4gICAgfVxuICAgIGNvbnN0IGJpbmFyeVN0cmluZzogc3RyaW5nID0gYXRvYihiYXNlNjQpO1xuICAgIGNvbnN0IGxlbjogbnVtYmVyID0gYmluYXJ5U3RyaW5nLmxlbmd0aDtcbiAgICBjb25zdCBieXRlczogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgYnl0ZXNbaV0gPSBiaW5hcnlTdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ5dGVzO1xuICB9XG5cbiAgcmVnaXN0ZXIodXNlcjogVXNlcldlYmF1dGhuLCBuZXdDcmVkZW50aWFsSW5mbzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IGVuYyA9IG5ldyBUZXh0RGVjb2RlcigndXRmLTgnKTtcbiAgICAgIGxldCBjbGllbnREYXRhSlNPTiA9IGVuYy5kZWNvZGUobmV3Q3JlZGVudGlhbEluZm8ucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pO1xuICAgICAgY29uc29sZS5sb2coY2xpZW50RGF0YUpTT04pO1xuICAgICAgbGV0IGNsaWVudERhdGEgPSBKU09OLnBhcnNlKGNsaWVudERhdGFKU09OKTtcbiAgICAgIGNvbnNvbGUubG9nKGNsaWVudERhdGEpO1xuICAgICAgY29uc3QgcHVibGljS2V5ID0gIHRoaXMuYXJyYXlCdWZmZXJUb0Jhc2U2NFVybChuZXdDcmVkZW50aWFsSW5mby5yYXdJZCk7XG4gICAgICBsZXQgaWRMaXN0ID0gW3tcbiAgICAgICAgLy8gaWQ6IG5ld0NyZWRlbnRpYWxJbmZvLnJhd0lkLFxuICAgICAgICBpZDogcHVibGljS2V5LFxuICAgICAgICB0eXBlOiAncHVibGljLWtleSdcbiAgICAgIH1dO1xuICAgICAgdXNlci5jcmVkZW50aWFscy5wdXNoKGlkTGlzdCk7XG4gICAgICBjb25zb2xlLmxvZyh1c2VyKTtcbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlVXNlcih1c2VyLmlkLCAnd2ViYXV0aG5fa2V5JywgcHVibGljS2V5KS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG5cbiAgYmFzZTY0VXJsVG9BcnJheUJ1ZmZlcihiYXNlNjRVcmxTdHJpbmc6IHN0cmluZyk6IEFycmF5QnVmZmVyIHtcbiAgICBjb25zdCBiYXNlNjRTdHJpbmcgPSBiYXNlNjRVcmxTdHJpbmcucmVwbGFjZSgvLS9nLCAnKycpLnJlcGxhY2UoL18vZywgJy8nKTtcbiAgICBjb25zdCBwYWRkZWRCYXNlNjRTdHJpbmcgPSBiYXNlNjRTdHJpbmcucGFkRW5kKE1hdGguY2VpbChiYXNlNjRTdHJpbmcubGVuZ3RoIC8gNCkgKiA0LCAnPScpO1xuICAgIGNvbnN0IHVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShcbiAgICAgIGF0b2IocGFkZGVkQmFzZTY0U3RyaW5nKVxuICAgICAgICAuc3BsaXQoJycpXG4gICAgICAgIC5tYXAoKGNoYXIpID0+IGNoYXIuY2hhckNvZGVBdCgwKSlcbiAgICApO1xuICAgIHJldHVybiB1aW50OEFycmF5LmJ1ZmZlcjtcbiAgfVxuXG4gIGFycmF5QnVmZmVyVG9CYXNlNjRVcmwoYXJyYXlCdWZmZXI6IEFycmF5QnVmZmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB1aW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpO1xuICAgIGxldCBiYXNlNjRTdHJpbmcgPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgQXJyYXkuZnJvbSh1aW50OEFycmF5KSkpO1xuICAgIGJhc2U2NFN0cmluZyA9IGJhc2U2NFN0cmluZy5yZXBsYWNlKC9cXCsvZywgJy0nKS5yZXBsYWNlKC9cXC8vZywgJ18nKS5yZXBsYWNlKC89KyQvLCAnJyk7XG4gICAgcmV0dXJuIGJhc2U2NFN0cmluZztcbiAgfVxuXG5cbiAgc2lnblVwKCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLndlYkF1dGhuQXZhaWxhYmxlKSB7XG4gICAgICAgIGNvbnN0IHVzZXJEYXRhID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRVc2VyZGF0YSgpO1xuICAgICAgICBpZiAodXNlckRhdGEpIHtcbiAgICAgICAgICBsZXQgdXNlciA9IHtcbiAgICAgICAgICAgIGlkOiB1c2VyRGF0YT8udXNlcklkLFxuICAgICAgICAgICAgZW1haWw6IHVzZXJEYXRhPy5lbWFpbCxcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzOiBbXVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy53ZWJBdXRoblNpZ251cCh1c2VyKVxuICAgICAgICAgICAgLnRoZW4oKGNyZWRlbnRpYWw6IFB1YmxpY0tleUNyZWRlbnRpYWwpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2NyZWRlbnRpYWxzLmNyZWF0ZSBSRVNQT05TRScsIGNyZWRlbnRpYWwpO1xuICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyKHVzZXIsIGNyZWRlbnRpYWwpLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dTbmFja0Jhcih0aGlzLmdldE1lc3NhZ2UoJ3NpZ25VcE9rJyksIFsnc25hY2stc3VjY2VzcyddKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuZ2V0TWVzc2FnZSgnc2lnblVwT2snKSk7XG4gICAgICAgICAgICAgIH0pLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93U25hY2tCYXIodGhpcy5nZXRNZXNzYWdlKCdzaWduVXBOb2snKSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgICAgICAgICByZWplY3QodGhpcy5nZXRNZXNzYWdlKCdzaWduVXBOb2snKSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2NyZWRlbnRpYWxzLmNyZWF0ZSBFUlJPUicsIGVycm9yKTtcbiAgICAgICAgICAgICAgdGhpcy5zaG93U25hY2tCYXIodGhpcy5nZXRNZXNzYWdlKCdzaWduVXBOb2snKSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgICAgICAgcmVqZWN0KHRoaXMuZ2V0TWVzc2FnZSgnc2lnblVwTm9rJykpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd1NuYWNrQmFyKHRoaXMuZ2V0TWVzc2FnZSgnYnJvd3Nlck5vaycpLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICByZWplY3QodGhpcy5nZXRNZXNzYWdlKCdicm93c2VyTm9rJykpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cblxuICBzaWduSW4oKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHRoaXMud2ViQXV0aG5BdmFpbGFibGUpIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGEgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldFVzZXJkYXRhKCk7XG4gICAgICAgIGlmICh1c2VyRGF0YSkge1xuICAgICAgICAgIGxldCB1c2VyID0ge1xuICAgICAgICAgICAgaWQ6IHVzZXJEYXRhPy51c2VySWQsXG4gICAgICAgICAgICBlbWFpbDogdXNlckRhdGE/LmVtYWlsLFxuICAgICAgICAgICAgY3JlZGVudGlhbHM6IFt7fV1cbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgdGhpcy5nZXRBdHRyaWJ1dGVVc2VyKHVzZXIuaWQsICd3ZWJhdXRobl9rZXknKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgICAgICAgICBpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEud2ViYXV0aG5fa2V5ICYmIHJlcy5kYXRhLndlYmF1dGhuX2tleS5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjcmVkID0ge1xuICAgICAgICAgICAgICAgICAgaWQ6ICB0aGlzLmJhc2U2NFVybFRvQXJyYXlCdWZmZXIocmVzLmRhdGEud2ViYXV0aG5fa2V5WzBdKSxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdwdWJsaWMta2V5J1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdXNlci5jcmVkZW50aWFscy5zcGxpY2UoMCwxKTtcbiAgICAgICAgICAgICAgICB1c2VyLmNyZWRlbnRpYWxzLnB1c2goW2NyZWRdKTtcblxuICAgICAgICAgICAgICAgIHRoaXMud2ViQXV0aG5TaWduaW4odXNlcikudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTVUNDRVNTRlVMTFkgR09UIEFOIEFTU0VSVElPTiEnLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKCdvaycpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZBSUwnLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1NuYWNrQmFyKHRoaXMuZ2V0TWVzc2FnZSgnaW52YWxpZENyZWRlbnRpYWxzJyksIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdCh0aGlzLmdldE1lc3NhZ2UoJ2ludmFsaWRDcmVkZW50aWFscycpKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1NuYWNrQmFyKHRoaXMuZ2V0TWVzc2FnZSgnbm9DcmVkZW50aWFscycpLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICAgICAgICAgIHJlamVjdCh0aGlzLmdldE1lc3NhZ2UoJ25vQ3JlZGVudGlhbHMnKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd1NuYWNrQmFyKHRoaXMuZ2V0TWVzc2FnZSgnZXJyb3JSZXRyaWV2aW5nQ3JlZGVudGlhbHMnKSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgICAgICAgcmVqZWN0KHRoaXMuZ2V0TWVzc2FnZSgnZXJyb3JSZXRyaWV2aW5nQ3JlZGVudGlhbHMnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd1NuYWNrQmFyKHRoaXMuZ2V0TWVzc2FnZSgnYnJvd3Nlck5vaycpLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICByZWplY3QodGhpcy5nZXRNZXNzYWdlKCdicm93c2VyTm9rJykpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cblxuICBhZGRBdHRyaWJ1dGVVc2VyKHVzZXJJZDogYW55LCBjb2RlOiBhbnksIHZhbHVlOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHRoaXMuZW52aXJvbm1lbnQuZW5kUG9pbnQgKyBgL3VzZXIvYXR0cmlidXRlL3ZhbHVlLyR7dXNlcklkfS8ke2NvZGV9LyR7dmFsdWV9YCx7fSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcykpO1xuICB9XG5cbiAgZ2V0QXR0cmlidXRlVXNlcih1c2VySWQ6IGFueSwgY29kZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHRoaXMuZW52aXJvbm1lbnQuZW5kUG9pbnQgKyBgL3VzZXIvYXR0cmlidXRlL3ZhbHVlLyR7dXNlcklkfS8ke2NvZGV9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcykpO1xuICB9XG5cbiAgc2hvd1NuYWNrQmFyKG1lc3NhZ2U6IGFueSwgcGFuZWxDbGFzczogYW55W10gPSBbXSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKG1lc3NhZ2UsIHVuZGVmaW5lZCwge1xuICAgICAgICBkdXJhdGlvbjogNTAwMCxcbiAgICAgICAgcGFuZWxDbGFzcyxcbiAgICAgICAgdmVydGljYWxQb3NpdGlvbjogJ3RvcCdcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWVzc2FnZShjb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBtc2cgPSAnJztcbiAgICBjb25zdCBsYW5nID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdMQU5HJyk7XG4gICAgY29uc3QgbWVzc2FnZXNFbjogYW55ID0ge1xuICAgICAgc2lnblVwT2s6ICdDcmVkZW50aWFscyByZWdpc3RlcmVkIHN1Y2Nlc3NmdWxseScsXG4gICAgICBzaWduVXBOb2s6ICdBIHByb2JsZW0gb2NjdXJyZWQgd2hpbGUgcmVnaXN0ZXJpbmcgY3JlZGVudGlhbHMnLFxuICAgICAgYnJvd3Nlck5vazogJ1RoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBmdW5jdGlvbmFsaXR5JyxcbiAgICAgIG5vQ3JlZGVudGlhbHM6ICdUaGUgdXNlciBoYXMgbm8gc3RvcmVkIGNyZWRlbnRpYWxzJyxcbiAgICAgIGludmFsaWRDcmVkZW50aWFsczogJ1RoZSBjcmVkZW50aWFscyBhcmUgaW52YWxpZCcsXG4gICAgICBlcnJvclJldHJpZXZpbmdDcmVkZW50aWFsczogJ1RoZXJlIHdhcyBhIHByb2JsZW0gcmV0cmlldmluZyBjcmVkZW50aWFscycsXG4gICAgfTtcbiAgICBjb25zdCBtZXNzYWdlc0VzOiBhbnkgPSB7XG4gICAgICBzaWduVXBPazogJ0NyZWRlbmNpYWxlcyByZWdpc3RyYWRhcyBleGl0b3NhbWVudGUnLFxuICAgICAgc2lnblVwTm9rOiAnU2UgcHJvZHVqbyB1biBwcm9ibGVtYSBhbCByZWdpc3RyYXIgbGFzIGNyZWRlbmNpYWxlcycsXG4gICAgICBicm93c2VyTm9rOiAnRWwgbmF2ZWdhZG9yIG5vIHNvcG9ydGEgZXN0YSBmdW5jaW9uYWxpZGFkJyxcbiAgICAgIG5vQ3JlZGVudGlhbHM6ICdFbCB1c3VhcmlvIG5vIHRpZW5lIGNyZWRlbmNpYWxlcyBhbG1hY2VuYWRhcycsXG4gICAgICBpbnZhbGlkQ3JlZGVudGlhbHM6ICdMYXMgY3JlZGVuY2lhbGVzIG5vIHNvbiB2w6FsaWRhcycsXG4gICAgICBlcnJvclJldHJpZXZpbmdDcmVkZW50aWFsczogJ1NlIHByb2R1am8gdW4gcHJvYmxlbWEgYWwgcmVjdXBlcmFyIGxhcyBjcmVkZW5jaWFsZXMnLFxuICAgIH07XG4gICAgaWYgKGxhbmcgJiYgbGFuZz09PSdlbicpIHtcbiAgICAgIG1zZyA9IG1lc3NhZ2VzRW5bY29kZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG1zZyA9IG1lc3NhZ2VzRXNbY29kZV07XG4gICAgfVxuICAgIHJldHVybiBtc2c7XG4gIH1cblxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NzaS1zZWN1cml0eS1jb21tb25zL3NyYy9saWIvdXNlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgZnVsbG5hbWU6IHN0cmluZztcbiAgbGFuZ3VhZ2U6IHN0cmluZztcbiAgcGVyc29uSWQ6IG51bWJlcjtcbiAgcm9sZXM6IHN0cmluZ1tdO1xuICB1c2VySWQ6IG51bWJlcjtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgd29ya1BsYWNlOiBXb3JrUGxhY2U7XG4gIGNoYW5uZWw6IENoYW5uZWw7XG4gIHVzZXJUeXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYW5uZWwge1xuICBjaGFubmVsQ29kZTogc3RyaW5nO1xuICBjaGFubmVsRGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3JrUGxhY2Uge1xuICB3b3JrUGxhY2VDb2RlOiBzdHJpbmc7XG4gIHdvcmtQbGFjZURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGNpdHlDb2RlOiBzdHJpbmc7XG4gIGNpdHlEZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZyb250RW5kRXhjZXB0aW9uIHtcbiAgaHR0cFN0YXR1cz86IG51bWJlcjtcbiAgaHR0cFN0YXR1c1RleHQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgcmVxdWVzdEJvZHk/OiBzdHJpbmc7XG4gIHJlc3BvbnNlQm9keT86IHN0cmluZztcbiAgdXNlcklkPzogc3RyaW5nO1xuICByZXF1ZXN0RGF0ZT86IERhdGU7XG4gIGFwcGxpY2F0aW9uTmFtZT86IHN0cmluZztcbiAgYXBwbGljYXRpb25JZD86IG51bWJlcjtcbiAgcmVxdWVzdFVybD86IHN0cmluZztcbiAgY3VycmVudFVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyRGF0YSB7XG4gIGdpdmVuTmFtZTogc3RyaW5nO1xuICBmYW1pbHlOYW1lOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcm9sZXM6IHN0cmluZ1tdO1xuICB1c2VySWQ6IHN0cmluZztcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgZW1haWxWZXJpZmllZDogYm9vbGVhbjtcbiAgd29ya1BsYWNlPzogV29ya1BsYWNlO1xuICBjaGFubmVsPzogQ2hhbm5lbDtcbiAgY291bnRyeUNvZGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlcldlYmF1dGhuIHtcbiAgaWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgY3JlZGVudGlhbHM6IGFueVtdO1xufVxuIl19
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NzaS1zZWN1cml0eS1jb21tb25zL3NyYy9saWIvdXNlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgZnVsbG5hbWU6IHN0cmluZztcbiAgbGFuZ3VhZ2U6IHN0cmluZztcbiAgcGVyc29uSWQ6IG51bWJlcjtcbiAgcm9sZXM6IHN0cmluZ1tdO1xuICB1c2VySWQ6IG51bWJlcjtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgd29ya1BsYWNlOiBXb3JrUGxhY2U7XG4gIGNoYW5uZWw6IENoYW5uZWw7XG4gIHVzZXJUeXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYW5uZWwge1xuICBjaGFubmVsQ29kZTogc3RyaW5nO1xuICBjaGFubmVsRGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3JrUGxhY2Uge1xuICB3b3JrUGxhY2VDb2RlOiBzdHJpbmc7XG4gIHdvcmtQbGFjZURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGNpdHlDb2RlOiBzdHJpbmc7XG4gIGNpdHlEZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZyb250RW5kRXhjZXB0aW9uIHtcbiAgaHR0cFN0YXR1cz86IG51bWJlcjtcbiAgaHR0cFN0YXR1c1RleHQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgcmVxdWVzdEJvZHk/OiBzdHJpbmc7XG4gIHJlc3BvbnNlQm9keT86IHN0cmluZztcbiAgdXNlcklkPzogc3RyaW5nO1xuICByZXF1ZXN0RGF0ZT86IERhdGU7XG4gIGFwcGxpY2F0aW9uTmFtZT86IHN0cmluZztcbiAgYXBwbGljYXRpb25JZD86IG51bWJlcjtcbiAgcmVxdWVzdFVybD86IHN0cmluZztcbiAgY3VycmVudFVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyRGF0YSB7XG4gIGdpdmVuTmFtZTogc3RyaW5nO1xuICBmYW1pbHlOYW1lOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcm9sZXM6IHN0cmluZ1tdO1xuICB1c2VySWQ6IHN0cmluZztcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgZW1haWxWZXJpZmllZDogYm9vbGVhbjtcbiAgd29ya1BsYWNlPzogV29ya1BsYWNlO1xuICBjaGFubmVsPzogQ2hhbm5lbDtcbiAgY291bnRyeUNvZGU/OiBzdHJpbmc7XG4gIHBhcnR5SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlcldlYmF1dGhuIHtcbiAgaWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgY3JlZGVudGlhbHM6IGFueVtdO1xufVxuIl19
|