ssi-security-commons 0.16.0 → 0.16.2
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/alert/alert.component.mjs +7 -8
- package/esm2022/lib/services/auth-interceptor.service.mjs +37 -37
- package/esm2022/lib/services/crypto.service.mjs +7 -1
- package/esm2022/lib/services/jwt.service.mjs +29 -0
- package/esm2022/lib/services/messages.service.mjs +1 -1
- package/esm2022/lib/services/session.service.mjs +111 -51
- package/esm2022/lib/shared/constants.mjs +5 -0
- package/esm2022/lib/ssi-security-commons.module.mjs +6 -3
- package/esm2022/lib/user.model.mjs +1 -1
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ssi-security-commons.mjs +193 -99
- package/fesm2022/ssi-security-commons.mjs.map +1 -1
- package/lib/alert/alert.component.d.ts +1 -1
- package/lib/services/auth-interceptor.service.d.ts +2 -1
- package/lib/services/jwt.service.d.ts +6 -0
- package/lib/services/session.service.d.ts +14 -6
- package/lib/shared/constants.d.ts +4 -0
- package/lib/user.model.d.ts +13 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Component, Inject } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/material/
|
|
5
|
-
import * as i2 from "@angular/material/
|
|
6
|
-
import * as i3 from "@angular/material/button";
|
|
4
|
+
import * as i1 from "@angular/material/dialog";
|
|
5
|
+
import * as i2 from "@angular/material/button";
|
|
7
6
|
export class AlertComponent {
|
|
8
7
|
constructor(dialogRef, data) {
|
|
9
8
|
this.dialogRef = dialogRef;
|
|
@@ -15,14 +14,14 @@ export class AlertComponent {
|
|
|
15
14
|
onCancel() {
|
|
16
15
|
this.dialogRef.close(null);
|
|
17
16
|
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AlertComponent, deps: [{ token: i1.
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: AlertComponent, selector: "lib-app-alert", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button *ngIf=\"data?.cancelText\" mat-button (click)=\"onCancel()\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n <button mat-button color=\"primary\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type:
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AlertComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: AlertComponent, selector: "lib-app-alert", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button *ngIf=\"data?.cancelText\" mat-button (click)=\"onCancel()\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n <button mat-button color=\"primary\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] }); }
|
|
20
19
|
}
|
|
21
20
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AlertComponent, decorators: [{
|
|
22
21
|
type: Component,
|
|
23
22
|
args: [{ selector: 'lib-app-alert', template: "<h1 mat-dialog-title>{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button *ngIf=\"data?.cancelText\" mat-button (click)=\"onCancel()\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n <button mat-button color=\"primary\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n</div>\n" }]
|
|
24
|
-
}], ctorParameters: function () { return [{ type: i1.
|
|
23
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
25
24
|
type: Inject,
|
|
26
25
|
args: [MAT_DIALOG_DATA]
|
|
27
26
|
}] }]; } });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9hbGVydC9hbGVydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zc2ktc2VjdXJpdHktY29tbW9ucy9zcmMvbGliL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFnQnpFLE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQ1MsU0FBdUMsRUFDZCxJQUFnQjtRQUR6QyxjQUFTLEdBQVQsU0FBUyxDQUE4QjtRQUNkLFNBQUksR0FBSixJQUFJLENBQVk7SUFDOUMsQ0FBQztJQUVMLFNBQVM7UUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7OEdBYlUsY0FBYyw4Q0FJZixlQUFlO2tHQUpkLGNBQWMscURDakIzQixnZEFVQTs7MkZET2EsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxlQUFlOzswQkFRdEIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dEYXRhIHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIG9rVGV4dD86IHN0cmluZztcbiAgY2FuY2VsVGV4dD86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFwcC1hbGVydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGVydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FsZXJ0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWxlcnRDb21wb25lbnQgIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8QWxlcnRDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogRGlhbG9nRGF0YVxuICApIHsgfVxuXG4gIG9uQ29uZmlybSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xuICB9XG59XG4iLCI8aDEgbWF0LWRpYWxvZy10aXRsZT57e2RhdGEudGl0bGU/ZGF0YS50aXRsZTonQWxlcnQnfX08L2gxPlxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJhbGVydC1taW4td2lkdGhcIj5cbiAgICA8ZGl2PlxuICAgICAgICB7e2RhdGEubWVzc2FnZX19XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zIGFsaWduPVwiZW5kXCI+XG4gICAgPGJ1dHRvbiAqbmdJZj1cImRhdGE/LmNhbmNlbFRleHRcIiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkNhbmNlbCgpXCI+e3tkYXRhLmNhbmNlbFRleHQgPyBkYXRhLmNhbmNlbFRleHQgOiAnQ2FuY2VsJ319PC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvbkNvbmZpcm0oKVwiPnt7ZGF0YS5va1RleHQgPyBkYXRhLm9rVGV4dCA6ICdPSyd9fTwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,23 +1,32 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
3
|
import { HttpErrorResponse, HttpResponse } from '@angular/common/http';
|
|
4
4
|
import { BehaviorSubject, throwError } from 'rxjs';
|
|
5
5
|
import { catchError, filter, map, switchMap, take } from 'rxjs/operators';
|
|
6
6
|
import { MessagesService } from './messages.service';
|
|
7
|
+
import { LANG, TOKEN } from '../shared/constants';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "./crypto.service";
|
|
9
10
|
import * as i2 from "@angular/router";
|
|
10
11
|
import * as i3 from "./session.service";
|
|
11
12
|
export class AuthInterceptor {
|
|
12
|
-
constructor(cryptoService) {
|
|
13
|
+
constructor(cryptoService, environment) {
|
|
13
14
|
this.cryptoService = cryptoService;
|
|
14
15
|
console.log('AuthInterceptor constructor');
|
|
16
|
+
this.environment = environment;
|
|
15
17
|
}
|
|
16
18
|
intercept(request, next) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
let token;
|
|
20
|
+
if (this.environment.production) {
|
|
21
|
+
const t = this.cryptoService.encrypt(TOKEN);
|
|
22
|
+
const to = window.localStorage.getItem(t);
|
|
23
|
+
if (to) {
|
|
24
|
+
token = this.cryptoService.decrypt(to);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
token = window.localStorage.getItem(TOKEN);
|
|
29
|
+
}
|
|
21
30
|
let encrypt = request.headers.get('encrypted');
|
|
22
31
|
if (encrypt && encrypt === 'true') {
|
|
23
32
|
let body = request.body;
|
|
@@ -36,14 +45,23 @@ export class AuthInterceptor {
|
|
|
36
45
|
}
|
|
37
46
|
});
|
|
38
47
|
}
|
|
48
|
+
const l = window.localStorage.getItem(LANG);
|
|
49
|
+
if (l && request.url.indexOf(this.environment.authEndPoint) < 0) {
|
|
50
|
+
request = request.clone({
|
|
51
|
+
headers: request.headers.append('Language', l)
|
|
52
|
+
});
|
|
53
|
+
}
|
|
39
54
|
return next.handle(request);
|
|
40
55
|
}
|
|
41
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AuthInterceptor, deps: [{ token: i1.CryptoService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
56
|
+
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 }); }
|
|
42
57
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AuthInterceptor }); }
|
|
43
58
|
}
|
|
44
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AuthInterceptor, decorators: [{
|
|
45
60
|
type: Injectable
|
|
46
|
-
}], ctorParameters: function () { return [{ type: i1.CryptoService }
|
|
61
|
+
}], ctorParameters: function () { return [{ type: i1.CryptoService }, { type: undefined, decorators: [{
|
|
62
|
+
type: Inject,
|
|
63
|
+
args: ['environment']
|
|
64
|
+
}] }]; } });
|
|
47
65
|
export class ResponseInterceptor {
|
|
48
66
|
constructor(injector, router, cryptoService, sessionService) {
|
|
49
67
|
this.injector = injector;
|
|
@@ -52,7 +70,6 @@ export class ResponseInterceptor {
|
|
|
52
70
|
this.sessionService = sessionService;
|
|
53
71
|
this.isRefreshing = false;
|
|
54
72
|
this.refreshTokenSubject = new BehaviorSubject(null);
|
|
55
|
-
//console.log('ResponseInterceptor constructor');
|
|
56
73
|
setTimeout(() => {
|
|
57
74
|
this.messages = this.injector.get(MessagesService);
|
|
58
75
|
});
|
|
@@ -60,7 +77,6 @@ export class ResponseInterceptor {
|
|
|
60
77
|
intercept(request, next) {
|
|
61
78
|
return next.handle(request).pipe(map((event) => {
|
|
62
79
|
if (event instanceof HttpResponse) {
|
|
63
|
-
//console.log(request.headers.get('encrypted'));
|
|
64
80
|
let encrypt = request.headers.get('encrypted');
|
|
65
81
|
if (encrypt && encrypt === 'true' && event.body.encrypted) {
|
|
66
82
|
event = event.clone({ body: this.decryptBody(event.body) });
|
|
@@ -71,34 +87,22 @@ export class ResponseInterceptor {
|
|
|
71
87
|
if (error instanceof HttpErrorResponse) {
|
|
72
88
|
console.error(error);
|
|
73
89
|
let nerror = error;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
nerror = new HttpErrorResponse({
|
|
77
|
-
error: this.decryptBody(error.error),
|
|
78
|
-
headers: error.headers,
|
|
79
|
-
status: error.status,
|
|
80
|
-
statusText: error.statusText,
|
|
81
|
-
url: error.url || request.urlWithParams || undefined,
|
|
82
|
-
});
|
|
83
|
-
}*/
|
|
84
|
-
if (nerror.status === 401) {
|
|
85
|
-
console.log(this.router.url);
|
|
86
|
-
if (this.router.url != '/login' && this.router.url.indexOf('/login') < 0) {
|
|
87
|
-
console.log('401--->' + request.url);
|
|
90
|
+
if (this.router.url != '/login' && this.router.url.indexOf('/login') < 0) {
|
|
91
|
+
if (nerror.status === 401) {
|
|
88
92
|
return this.handle401Error(request, next);
|
|
89
93
|
}
|
|
90
94
|
else {
|
|
91
|
-
|
|
95
|
+
let skipError = request.headers.get('skipError');
|
|
96
|
+
if (skipError && skipError === 'true') {
|
|
97
|
+
return throwError(nerror);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.messages?.showErrorMessage(nerror, request);
|
|
101
|
+
}
|
|
92
102
|
}
|
|
93
103
|
}
|
|
94
104
|
else {
|
|
95
|
-
|
|
96
|
-
if (skipError && skipError === 'true') {
|
|
97
|
-
return throwError(nerror);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
this.messages?.showErrorMessage(nerror, request);
|
|
101
|
-
}
|
|
105
|
+
return throwError(nerror);
|
|
102
106
|
}
|
|
103
107
|
}
|
|
104
108
|
}));
|
|
@@ -109,13 +113,10 @@ export class ResponseInterceptor {
|
|
|
109
113
|
return JSON.parse(strJson);
|
|
110
114
|
}
|
|
111
115
|
handle401Error(request, next) {
|
|
112
|
-
//console.log('handle401Error');
|
|
113
|
-
//console.log(this.isRefreshing);
|
|
114
116
|
if (!this.isRefreshing) {
|
|
115
117
|
this.isRefreshing = true;
|
|
116
118
|
this.refreshTokenSubject.next(null);
|
|
117
119
|
const refreshToken = this.sessionService.getRefreshToken();
|
|
118
|
-
//console.log(refreshToken);
|
|
119
120
|
if (refreshToken) {
|
|
120
121
|
return this.sessionService.getNewToken(refreshToken).pipe(switchMap((res) => {
|
|
121
122
|
console.log('refresh token response');
|
|
@@ -128,7 +129,6 @@ export class ResponseInterceptor {
|
|
|
128
129
|
}), catchError((err) => {
|
|
129
130
|
this.isRefreshing = false;
|
|
130
131
|
this.sessionService.logout();
|
|
131
|
-
//this.router.navigate(['/login']);
|
|
132
132
|
this.goToLogin();
|
|
133
133
|
return throwError(err);
|
|
134
134
|
}));
|
|
@@ -159,4 +159,4 @@ export class ResponseInterceptor {
|
|
|
159
159
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ResponseInterceptor, decorators: [{
|
|
160
160
|
type: Injectable
|
|
161
161
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i2.Router }, { type: i1.CryptoService }, { type: i3.SessionService }]; } });
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoLWludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUtMLGlCQUFpQixFQUNqQixZQUFZLEVBQ2IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBTyxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFPckQsTUFBTSxPQUFPLGVBQWU7SUFFMUIsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUVwRCwyQkFBMkI7UUFFM0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkQscUJBQXFCO1FBQ3JCLHVCQUF1QjtRQUV2QixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxJQUFHLE9BQU8sSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFDO1lBQy9CLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDeEIsSUFBSSxP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LEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDekUsQ0FBQztTQUNMO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUF5QixFQUFFLEtBQWE7UUFDN0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxTQUFTLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQzFCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBQyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsR0FBRyxZQUFZLEdBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEU7UUFDSCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTFIVSxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwRXZlbnQsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cEVycm9yUmVzcG9uc2UsXG4gIEh0dHBSZXNwb25zZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VzU2VydmljZSB9IGZyb20gJy4vbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDcnlwdG9TZXJ2aWNlIH0gZnJvbSAnLi9jcnlwdG8uc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjcnlwdG9TZXJ2aWNlOiBDcnlwdG9TZXJ2aWNlKSB7XG4gICAgY29uc29sZS5sb2coJ0F1dGhJbnRlcmNlcHRvciBjb25zdHJ1Y3RvcicpO1xuICB9XG5cbiAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuXG4gICAgLy9jb25zb2xlLmxvZygnaW50ZXJjZXB0Jyk7XG5cbiAgICBjb25zdCB0b2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnVE9LRU4nKTtcblxuICAgIC8vY29uc29sZS5sb2codG9rZW4pO1xuICAgIC8vY29uc29sZS5sb2cocmVxdWVzdCk7XG5cbiAgICBsZXQgZW5jcnlwdCA9IHJlcXVlc3QuaGVhZGVycy5nZXQoJ2VuY3J5cHRlZCcpO1xuICAgIGlmKGVuY3J5cHQgJiYgZW5jcnlwdCA9PT0gJ3RydWUnKXtcbiAgICAgIGxldCBib2R5ID0gcmVxdWVzdC5ib2R5O1xuICAgICAgbGV0IGJvZHlTdHIgPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgICAgIHZhciBuZXdCb2R5ID0ge1xuICAgICAgICBlbmNyeXB0ZWQ6IHRoaXMuY3J5cHRvU2VydmljZS5lbmNyeXB0KGJvZHlTdHIpXG4gICAgICB9XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5jbG9uZSh7XG4gICAgICAgIGJvZHk6IG5ld0JvZHlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0b2tlbikge1xuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgdG9rZW4sXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCk7XG4gIH1cbn1cblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVzcG9uc2VJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgcHJpdmF0ZSBtZXNzYWdlczogTWVzc2FnZXNTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICBwcml2YXRlIHJlZnJlc2hUb2tlblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjcnlwdG9TZXJ2aWNlOiBDcnlwdG9TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2U6IFNlc3Npb25TZXJ2aWNlKSB7XG4gICAgLy9jb25zb2xlLmxvZygnUmVzcG9uc2VJbnRlcmNlcHRvciBjb25zdHJ1Y3RvcicpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMuaW5qZWN0b3IuZ2V0KE1lc3NhZ2VzU2VydmljZSk7XG4gICAgfSlcbiAgfVxuXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcblxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKFxuICAgICAgbWFwKChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2cocmVxdWVzdC5oZWFkZXJzLmdldCgnZW5jcnlwdGVkJykpO1xuICAgICAgICAgICAgbGV0IGVuY3J5cHQgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdlbmNyeXB0ZWQnKTtcbiAgICAgICAgICAgIGlmKGVuY3J5cHQgJiYgZW5jcnlwdCA9PT0gJ3RydWUnICYmIGV2ZW50LmJvZHkuZW5jcnlwdGVkKXtcbiAgICAgICAgICAgICAgZXZlbnQgPSBldmVudC5jbG9uZSh7Ym9keTogdGhpcy5kZWNyeXB0Qm9keShldmVudC5ib2R5KX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICBsZXQgbmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgICAvKmxldCBlbmNyeXB0ID0gcmVxdWVzdC5oZWFkZXJzLmdldCgnZW5jcnlwdGVkJyk7XG4gICAgICAgICAgICBpZihlbmNyeXB0ICYmIGVuY3J5cHQgPT09ICd0cnVlJyl7XG4gICAgICAgICAgICAgIG5lcnJvciA9IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7XG4gICAgICAgICAgICAgICAgZXJyb3I6IHRoaXMuZGVjcnlwdEJvZHkoZXJyb3IuZXJyb3IpLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGVycm9yLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBlcnJvci5zdGF0dXMsXG4gICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogZXJyb3Iuc3RhdHVzVGV4dCxcbiAgICAgICAgICAgICAgICB1cmw6IGVycm9yLnVybCB8fCByZXF1ZXN0LnVybFdpdGhQYXJhbXMgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0qL1xuICAgICAgICAgICAgaWYgKG5lcnJvci5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnJvdXRlci51cmwpO1xuICAgICAgICAgICAgICBpZiAodGhpcy5yb3V0ZXIudXJsICE9ICcvbG9naW4nICYmIHRoaXMucm91dGVyLnVybC5pbmRleE9mKCcvbG9naW4nKTwwKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnNDAxLS0tPicrIHJlcXVlc3QudXJsKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZTQwMUVycm9yKHJlcXVlc3QsIG5leHQpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKG5lcnJvcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGxldCBza2lwRXJyb3IgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdza2lwRXJyb3InKTtcbiAgICAgICAgICAgICAgaWYoc2tpcEVycm9yICYmIHNraXBFcnJvcj09PSd0cnVlJyl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobmVycm9yKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzPy5zaG93RXJyb3JNZXNzYWdlKG5lcnJvciwgcmVxdWVzdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpIGFzIE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+O1xuICB9XG5cbiAgZGVjcnlwdEJvZHkoYm9keTogYW55KTogYW55IHtcbiAgICBsZXQgZW5jcnlwdGVkID0gYm9keS5lbmNyeXB0ZWQ7XG4gICAgbGV0IHN0ckpzb24gPSB0aGlzLmNyeXB0b1NlcnZpY2UuZGVjcnlwdChlbmNyeXB0ZWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKHN0ckpzb24pO1xuICB9XG5cblxuICBwcml2YXRlIGhhbmRsZTQwMUVycm9yKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgLy9jb25zb2xlLmxvZygnaGFuZGxlNDAxRXJyb3InKTtcbiAgICAvL2NvbnNvbGUubG9nKHRoaXMuaXNSZWZyZXNoaW5nKTtcbiAgICBpZiAoIXRoaXMuaXNSZWZyZXNoaW5nKSB7XG4gICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0UmVmcmVzaFRva2VuKCk7XG4gICAgICAgIC8vY29uc29sZS5sb2cocmVmcmVzaFRva2VuKTtcbiAgICAgICAgaWYgKHJlZnJlc2hUb2tlbil7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uU2VydmljZS5nZXROZXdUb2tlbihyZWZyZXNoVG9rZW4pLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygncmVmcmVzaCB0b2tlbiByZXNwb25zZScpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldFRva2VuKHJlcy5kYXRhLmFjY2Vzc1Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRSZWZyZXNoVG9rZW4ocmVzLmRhdGEucmVmcmVzaFRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQocmVzLmRhdGEuYWNjZXNzVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUodGhpcy5hZGRUb2tlbkhlYWRlcihyZXF1ZXN0LCByZXMuZGF0YS5hY2Nlc3NUb2tlbikpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICAgICAgICAgICAgICAvL3RoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdvVG9Mb2dpbigpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHRva2VuID0+IHRva2VuICE9PSBudWxsKSxcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHRva2VuKSA9PiBuZXh0LmhhbmRsZSh0aGlzLmFkZFRva2VuSGVhZGVyKHJlcXVlc3QsIHRva2VuKSkpXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRUb2tlbkhlYWRlcihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCB0b2tlbjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlcXVlc3QuY2xvbmUoeyBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgJ0JlYXJlciAnICsgdG9rZW4pIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnb1RvTG9naW4oKTogdm9pZCB7XG4gICAgdGhpcy5zZXNzaW9uU2VydmljZS5nZXRMb2dpblVybCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgIGNvbnN0IGxvZ2luVXJsID0gcmVzLmRhdGE7XG4gICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgIGlmICh1cmwuaW5kZXhPZihsb2dpblVybCk8MCkge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ2luVXJsICsgJz9jb250aW51ZT0nK2VuY29kZVVSSUNvbXBvbmVudCh1cmwpO1xuICAgICAgfVxuICAgIH0sIChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9KTtcbiAgfVxuXG59XG5cblxuXG5cbiJdfQ==
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoLWludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFLTCxpQkFBaUIsRUFDakIsWUFBWSxFQUNiLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJckQsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFJbEQsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFBb0IsYUFBNEIsRUFBeUIsV0FBZ0I7UUFBckUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUVwRCxJQUFJLEtBQUssQ0FBQztRQUNWLElBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7WUFDOUIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxD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T0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFDLENBQUMsRUFBRTtnQkFDM0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxHQUFHLFlBQVksR0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN4RTtRQUNILENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBeEdVLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEh0dHBSZXF1ZXN0LFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cEV2ZW50LFxuICBIdHRwSW50ZXJjZXB0b3IsXG4gIEh0dHBFcnJvclJlc3BvbnNlLFxuICBIdHRwUmVzcG9uc2Vcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuL21lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3J5cHRvU2VydmljZSB9IGZyb20gJy4vY3J5cHRvLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTEFORywgVE9LRU4gfSBmcm9tICcuLi9zaGFyZWQvY29uc3RhbnRzJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBwcml2YXRlIGVudmlyb25tZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3J5cHRvU2VydmljZTogQ3J5cHRvU2VydmljZSwgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55KSB7XG4gICAgY29uc29sZS5sb2coJ0F1dGhJbnRlcmNlcHRvciBjb25zdHJ1Y3RvcicpO1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcblxuICAgIGxldCB0b2tlbjtcbiAgICBpZih0aGlzLmVudmlyb25tZW50LnByb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnN0IHQgPSB0aGlzLmNyeXB0b1NlcnZpY2UuZW5jcnlwdChUT0tFTik7XG4gICAgICBjb25zdCB0byA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0KTtcbiAgICAgIGlmICh0bykge1xuICAgICAgICB0b2tlbiA9IHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KHRvKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oVE9LRU4pO1xuICAgIH1cblxuICAgIGxldCBlbmNyeXB0ID0gcmVxdWVzdC5oZWFkZXJzLmdldCgnZW5jcnlwdGVkJyk7XG4gICAgaWYoZW5jcnlwdCAmJiBlbmNyeXB0ID09PSAndHJ1ZScpe1xuICAgICAgbGV0IGJvZHkgPSByZXF1ZXN0LmJvZHk7XG4gICAgICBsZXQgYm9keVN0ciA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgICAgdmFyIG5ld0JvZHkgPSB7XG4gICAgICAgIGVuY3J5cHRlZDogdGhpcy5jcnlwdG9TZXJ2aWNlLmVuY3J5cHQoYm9keVN0cilcbiAgICAgIH1cbiAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcbiAgICAgICAgYm9keTogbmV3Qm9keVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0b2tlbikge1xuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgdG9rZW4sXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGwgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oTEFORyk7XG4gICAgaWYgKGwgJiYgcmVxdWVzdC51cmwuaW5kZXhPZih0aGlzLmVudmlyb25tZW50LmF1dGhFbmRQb2ludCk8MCkge1xuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMuYXBwZW5kKCdMYW5ndWFnZScsIGwpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xuICB9XG59XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlc3BvbnNlSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIHByaXZhdGUgbWVzc2FnZXM6IE1lc3NhZ2VzU2VydmljZSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpc1JlZnJlc2hpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW5TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY3J5cHRvU2VydmljZTogQ3J5cHRvU2VydmljZSxcbiAgICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlOiBTZXNzaW9uU2VydmljZSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMuaW5qZWN0b3IuZ2V0KE1lc3NhZ2VzU2VydmljZSk7XG4gICAgfSlcbiAgfVxuXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcblxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKFxuICAgICAgbWFwKChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGxldCBlbmNyeXB0ID0gcmVxdWVzdC5oZWFkZXJzLmdldCgnZW5jcnlwdGVkJyk7XG4gICAgICAgICAgICBpZihlbmNyeXB0ICYmIGVuY3J5cHQgPT09ICd0cnVlJyAmJiBldmVudC5ib2R5LmVuY3J5cHRlZCl7XG4gICAgICAgICAgICAgIGV2ZW50ID0gZXZlbnQuY2xvbmUoe2JvZHk6IHRoaXMuZGVjcnlwdEJvZHkoZXZlbnQuYm9keSl9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgbGV0IG5lcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgaWYgKHRoaXMucm91dGVyLnVybCAhPSAnL2xvZ2luJyAmJiB0aGlzLnJvdXRlci51cmwuaW5kZXhPZignL2xvZ2luJyk8MCkge1xuICAgICAgICAgICAgICBpZiAobmVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlNDAxRXJyb3IocmVxdWVzdCwgbmV4dCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHNraXBFcnJvciA9IHJlcXVlc3QuaGVhZGVycy5nZXQoJ3NraXBFcnJvcicpO1xuICAgICAgICAgICAgICAgIGlmKHNraXBFcnJvciAmJiBza2lwRXJyb3I9PT0ndHJ1ZScpe1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobmVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcz8uc2hvd0Vycm9yTWVzc2FnZShuZXJyb3IsIHJlcXVlc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobmVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpIGFzIE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+O1xuICB9XG5cbiAgZGVjcnlwdEJvZHkoYm9keTogYW55KTogYW55IHtcbiAgICBsZXQgZW5jcnlwdGVkID0gYm9keS5lbmNyeXB0ZWQ7XG4gICAgbGV0IHN0ckpzb24gPSB0aGlzLmNyeXB0b1NlcnZpY2UuZGVjcnlwdChlbmNyeXB0ZWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKHN0ckpzb24pO1xuICB9XG5cblxuICBwcml2YXRlIGhhbmRsZTQwMUVycm9yKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzUmVmcmVzaGluZykge1xuICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldFJlZnJlc2hUb2tlbigpO1xuICAgICAgICBpZiAocmVmcmVzaFRva2VuKXtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldE5ld1Rva2VuKHJlZnJlc2hUb2tlbikucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZWZyZXNoIHRva2VuIHJlc3BvbnNlJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0VG9rZW4ocmVzLmRhdGEuYWNjZXNzVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldFJlZnJlc2hUb2tlbihyZXMuZGF0YS5yZWZyZXNoVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dChyZXMuZGF0YS5hY2Nlc3NUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLmFkZFRva2VuSGVhZGVyKHJlcXVlc3QsIHJlcy5kYXRhLmFjY2Vzc1Rva2VuKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UubG9nb3V0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub0xvZ2luKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0LnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIodG9rZW4gPT4gdG9rZW4gIT09IG51bGwpLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodG9rZW4pID0+IG5leHQuaGFuZGxlKHRoaXMuYWRkVG9rZW5IZWFkZXIocmVxdWVzdCwgdG9rZW4pKSlcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFRva2VuSGVhZGVyKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIHRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7IGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyB0b2tlbikgfSk7XG4gIH1cblxuICBwcml2YXRlIGdvVG9Mb2dpbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldExvZ2luVXJsKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgY29uc3QgbG9naW5VcmwgPSByZXMuZGF0YTtcbiAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgaWYgKHVybC5pbmRleE9mKGxvZ2luVXJsKTwwKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbG9naW5VcmwgKyAnP2NvbnRpbnVlPScrZW5jb2RlVVJJQ29tcG9uZW50KHVybCk7XG4gICAgICB9XG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH0pO1xuICB9XG5cbn1cblxuXG5cblxuIl19
|
|
@@ -11,9 +11,15 @@ export class CryptoService {
|
|
|
11
11
|
this.key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));
|
|
12
12
|
}
|
|
13
13
|
encrypt(text) {
|
|
14
|
+
if (!text) {
|
|
15
|
+
return '';
|
|
16
|
+
}
|
|
14
17
|
return CryptoJS.AES.encrypt(text, this.key, this.configuration).toString();
|
|
15
18
|
}
|
|
16
19
|
decrypt(text) {
|
|
20
|
+
if (!text) {
|
|
21
|
+
return '';
|
|
22
|
+
}
|
|
17
23
|
return CryptoJS.AES.decrypt(text, this.key, this.configuration).toString(CryptoJS.enc.Utf8);
|
|
18
24
|
}
|
|
19
25
|
encryptWithSecret(text, secret) {
|
|
@@ -32,4 +38,4 @@ export class CryptoService {
|
|
|
32
38
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: CryptoService, decorators: [{
|
|
33
39
|
type: Injectable
|
|
34
40
|
}], ctorParameters: function () { return []; } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zc2ktc2VjdXJpdHktY29tbW9ucy9zcmMvbGliL3NlcnZpY2VzL2NyeXB0by5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7O0FBR3RDLE1BQU0sT0FBTyxhQUFhO0lBTXhCO1FBRlEsV0FBTSxHQUFHLGtCQUFrQixDQUFDO1FBR2xDLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRztTQUN4QixDQUFDO1FBQ0YsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQUMsT0FBTyxFQUFFLENBQUM7U0FBQztRQUN2QixPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3RSxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVk7UUFDbEIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUFDLE9BQU8sRUFBRSxDQUFDO1NBQUM7UUFDdkIsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQVksRUFBRSxNQUFjO1FBQzVDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RSxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFZLEVBQUUsTUFBYztRQUM1QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RixDQUFDOzhHQWxDVSxhQUFhO2tIQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBDcnlwdG9KUyBmcm9tICdjcnlwdG8tanMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ3J5cHRvU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uOiBhbnk7XG4gIHByaXZhdGUga2V5OiBhbnk7XG4gIHByaXZhdGUgc2VjcmV0ID0gJyZFKUhATWNRZlRoV21acTQnO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHtcbiAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuRUNCXG4gICAgfTtcbiAgICBjb25zdCBoYXNoID0gQ3J5cHRvSlMuU0hBMSh0aGlzLnNlY3JldCk7XG4gICAgdGhpcy5rZXkgPSBDcnlwdG9KUy5saWIuV29yZEFycmF5LmNyZWF0ZShoYXNoLndvcmRzLnNsaWNlKDAsIDE2IC8gNCkpO1xuICB9XG5cbiAgZW5jcnlwdCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGV4dCkge3JldHVybiAnJzt9XG4gICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KHRleHQsIHRoaXMua2V5LCB0aGlzLmNvbmZpZ3VyYXRpb24pLnRvU3RyaW5nKCk7XG4gIH1cblxuICBkZWNyeXB0KHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0ZXh0KSB7cmV0dXJuICcnO31cbiAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmRlY3J5cHQodGV4dCwgdGhpcy5rZXksIHRoaXMuY29uZmlndXJhdGlvbikudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xuICB9XG5cbiAgZW5jcnlwdFdpdGhTZWNyZXQodGV4dDogc3RyaW5nLCBzZWNyZXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgaGFzaCA9IENyeXB0b0pTLlNIQTEoc2VjcmV0KTtcbiAgICBjb25zdCBrZXkgPSBDcnlwdG9KUy5saWIuV29yZEFycmF5LmNyZWF0ZShoYXNoLndvcmRzLnNsaWNlKDAsIDE2IC8gNCkpO1xuICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZW5jcnlwdCh0ZXh0LCBrZXksIHRoaXMuY29uZmlndXJhdGlvbikudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGRlY3J5cHRXaXRoU2VjcmV0KHRleHQ6IHN0cmluZywgc2VjcmV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhhc2ggPSBDcnlwdG9KUy5TSEExKHNlY3JldCk7XG4gICAgY29uc3Qga2V5ID0gQ3J5cHRvSlMubGliLldvcmRBcnJheS5jcmVhdGUoaGFzaC53b3Jkcy5zbGljZSgwLCAxNiAvIDQpKTtcbiAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmRlY3J5cHQodGV4dCwga2V5LCB0aGlzLmNvbmZpZ3VyYXRpb24pLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class JwtService {
|
|
5
|
+
decodeToken(token) {
|
|
6
|
+
const _decodeToken = (token) => {
|
|
7
|
+
try {
|
|
8
|
+
return JSON.parse(atob(token));
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
return token
|
|
15
|
+
.split('.')
|
|
16
|
+
.map(token => _decodeToken(token))
|
|
17
|
+
.reduce((acc, curr) => {
|
|
18
|
+
if (!!curr)
|
|
19
|
+
acc = { ...acc, ...curr };
|
|
20
|
+
return acc;
|
|
21
|
+
}, Object.create(null));
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: JwtService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: JwtService }); }
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: JwtService, decorators: [{
|
|
27
|
+
type: Injectable
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zc2ktc2VjdXJpdHktY29tbW9ucy9zcmMvbGliL3NlcnZpY2VzL2p3dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sVUFBVTtJQUVkLFdBQVcsQ0FBQyxLQUFhO1FBQzlCLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDckMsSUFBSTtnQkFDRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDaEM7WUFBQyxNQUFNO2dCQUNOLE9BQU87YUFDUjtRQUNILENBQUMsQ0FBQztRQUNGLE9BQU8sS0FBSzthQUNULEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxDQUFDLElBQUk7Z0JBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUN0QyxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs4R0FqQlUsVUFBVTtrSEFBVixVQUFVOzsyRkFBVixVQUFVO2tCQUR0QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEp3dFNlcnZpY2Uge1xuXG4gIHB1YmxpYyBkZWNvZGVUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgY29uc3QgX2RlY29kZVRva2VuID0gKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGF0b2IodG9rZW4pKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gdG9rZW5cbiAgICAgIC5zcGxpdCgnLicpXG4gICAgICAubWFwKHRva2VuID0+IF9kZWNvZGVUb2tlbih0b2tlbikpXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgaWYgKCEhY3VycikgYWNjID0geyAuLi5hY2MsIC4uLmN1cnIgfTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -206,4 +206,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImpor
|
|
|
206
206
|
type: Inject,
|
|
207
207
|
args: ['environment']
|
|
208
208
|
}] }]; } });
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NzaS1zZWN1cml0eS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvbWVzc2FnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCw0Q0FBNEM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQU0xRCxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNTLElBQW9CO0lBQzNCLDBCQUEwQjtJQUNsQixRQUFxQixFQUN0QixNQUFpQixFQUNELFdBQWdCO1FBSmhDLFNBQUksR0FBSixJQUFJLENBQWdCO1FBRW5CLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUd4QixJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDakQsQ0FBQztJQUdELGtEQUFrRDtJQUNsRCxnQkFBZ0IsQ0FBQyxLQUF3QixFQUFFLE9BQXlCO1FBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hELFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNwQixLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsTUFBTTthQUNQO1lBQ0QsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDUixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxh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QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxpbmVzLXBlci1mdW5jdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbmFtaW5nLWNvbnZlbnRpb25uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBxdW90ZS1wcm9wcyAqL1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuLy8gaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFsZXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuY29tcG9uZW50JztcbmltcG9ydCB7IEZyb250RW5kRXhjZXB0aW9uIH0gZnJvbSAnLi4vdXNlci5tb2RlbCc7XG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWVzc2FnZXNTZXJ2aWNlIHtcblxuICBwcml2YXRlIGludGVyY2VwdG9yTWVzc2FnZXM6IGFueTtcbiAgYXBwbGljYXRpb25JZDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBhdXRoOiBTZXNzaW9uU2VydmljZSxcbiAgICAvLyBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIGVudmlyb25tZW50OiBhbnlcbiAgKSB7XG4gICAgdGhpcy5hcHBsaWNhdGlvbklkID0gZW52aXJvbm1lbnQuYXBwbGljYXRpb25JZDtcbiAgfVxuXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1saW5lcy1wZXItZnVuY3Rpb25cbiAgc2hvd0Vycm9yTWVzc2FnZShlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnZXJyb3I6ICcsIGVycm9yKTtcbiAgICB0aGlzLnJlZ2lzdGVyTG9nKGVycm9yLCByZXF1ZXN0KTtcbiAgICBjb25zdCBtc2dzOiBhbnkgPSB0aGlzLmdldEludGVyY2VwdG9yTWVzc2FnZXMoKTtcbiAgICBzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xuICAgICAgY2FzZSAzMDI6IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlU25hY2tFcnJvcihlcnJvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MDA6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihlcnJvci5tZXNzYWdlLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNDAzOiB7XG4gICAgICAgIHRoaXMuZ29OYXZpZ2F0ZUxvZ2luKG1zZ3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNDA0OiB7XG4gICAgICAgIHRoaXMuc2hvd1NuYWNrRXJyb3IobXNncy5hdXRoX2ludGVyY2VwdG9yLm5vdF9mb3VuZCwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQwOToge1xuICAgICAgICB0aGlzLm1lc3NhZ2VBbGVydERpYWxvZyhlcnJvciwgbXNncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MTI6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UsIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MjI6IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlQWxlcnREaWFsb2coZXJyb3IsIG1zZ3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNDI4OiB7XG4gICAgICAgIHRoaXMuc2hvd1NuYWNrRXJyb3IoZXJyb3IuZXJyb3IucmVzcG9uc2VNZXNzYWdlLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNTAwOiB7XG4gICAgICAgIHRoaXMubWVzc2FnZUFsZXJ0RGlhbG9nKGVycm9yLCBtc2dzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDUwMzoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKG1zZ3MuYXV0aF9pbnRlcmNlcHRvci51bmF2YWlsYWJsZSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIC0xOiB7XG4gICAgICAgIHRoaXMuc2hvd1NuYWNrRXJyb3IobXNncy5hdXRoX2ludGVyY2VwdG9yLmNvbm5lY3Rpb25fZXJyb3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMDoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5jb25uZWN0aW9uX2Vycm9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbWVzc2FnZVNuYWNrRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yLmVycm9yICYmIGVycm9yLmVycm9yLnJlc3BvbnNlTWVzc2FnZSA/IGVycm9yLmVycm9yLnJlc3BvbnNlTWVzc2FnZSA6XG4gICAgICBlcnJvci5lcnJvci5tZXNzYWdlID8gZXJyb3IuZXJyb3IubWVzc2FnZSA6IGVycm9yLm1lc3NhZ2U7XG4gICAgdGhpcy5zaG93U25hY2tFcnJvcihlcnJvck1lc3NhZ2UsIFsnc25hY2stZXJyb3InXSk7XG4gIH1cblxuICBnb05hdmlnYXRlTG9naW4obXNnczogYW55KTogdm9pZCB7XG4gICAgLy8gaWYgKHRoaXMucm91dGVyLnVybCAhPT0gJy9sb2dpbicpIHtcbiAgICB0aGlzLnNob3dTbmFja0Vycm9yKG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5zZXNzaW9uX2xvc3QsIFsnc25hY2stZXJyb3InXSk7XG4gICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSk7XG4gICAgdGhpcy5hdXRoLmRlc3Ryb3lDcmVkZW50aWFscygpO1xuICAgIHRoaXMuYXV0aC5nZXRMb2dpblVybCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgIGNvbnN0IGxvZ2luVXJsID0gcmVzLmRhdGE7XG4gICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgIGlmICh1cmwuaW5kZXhPZihsb2dpblVybCk8MCkge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ2luVXJsICsgJz9jb250aW51ZT0nK2VuY29kZVVSSUNvbXBvbmVudCh1cmwpO1xuICAgICAgfVxuICAgIH0sIChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9KTtcbiAgICAvLyB9XG4gIH1cblxuICBtZXNzYWdlQWxlcnREaWFsb2coZXJyb3I6IGFueSwgbXNnczogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIGxldCBtZXNzYWdlID0gJyc7XG4gICAgaWYgKGVycm9yLmVycm9yLmRlc2NyaXB0aW9uKSB7XG4gICAgICBtZXNzYWdlID0gZXJyb3IuZXJyb3IuZGVzY3JpcHRpb247XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uKVxuICAgICAge21lc3NhZ2UgPSBtZXNzYWdlICsgJ1xcblxcbicrbXNncy5hdXRoX2ludGVyY2VwdG9yLmNvZGUrJzogJyArIGVycm9yLmVycm9yLmV4Y2VwdGlvbjt9XG4gICAgfSBlbHNlIGlmIChlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQpXG4gICAgICB7bWVzc2FnZSA9IG1lc3NhZ2UgKyAnXFxuXFxuJyttc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29kZSsnOiAnICsgZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQ7fVxuICAgIH0gZWxzZSBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZSkge1xuICAgICAgbWVzc2FnZSA9IGVycm9yLmVycm9yLm1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQpXG4gICAgICB7bWVzc2FnZSA9IG1lc3NhZ2UgKyAnXFxuXFxuJyttc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29kZSsnOiAnICsgZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQ7fVxuICAgIH0gIGVsc2UgaWYgKGVycm9yLm1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgaWYgKGVycm9yLmVycm9yLmV4Y2VwdGlvbklkKVxuICAgICAge21lc3NhZ2UgPSBtZXNzYWdlICsgJ1xcblxcbicrbXNncy5hdXRoX2ludGVyY2VwdG9yLmNvZGUrJzogJyArIGVycm9yLmVycm9yLmV4Y2VwdGlvbklkO31cbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSA9IG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5tZXNzYWdlO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZy5vcGVuKEFsZXJ0Q29tcG9uZW50LCB7XG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBkYXRhOiB7IHRpdGxlOiBtc2dzLmF1dGhfaW50ZXJjZXB0b3IudGl0bGUsIG1lc3NhZ2UgfVxuICAgIH0pO1xuICB9XG5cbiAgc2hvd1NuYWNrRXJyb3IobWVzc2FnZTogYW55LCBwYW5lbENsYXNzOiBhbnlbXSA9IFtdKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2cobWVzc2FnZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgdW5kZWZpbmVkLCB7XG4gICAgICAgIGR1cmF0aW9uOiA1MDAwLFxuICAgICAgICBwYW5lbENsYXNzLFxuICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiAndG9wJ1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRJbnRlcmNlcHRvck1lc3NhZ2VzKG1lc3NhZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcyA9IG1lc3NhZ2U7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuICBnZXRJbnRlcmNlcHRvck1lc3NhZ2VzKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmludGVyY2VwdG9yTWVzc2FnZXMpIHtcbiAgICAgIGNvbnN0IGxhbmcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0xBTkcnKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VzRW4gPSB7XG4gICAgICAgIGF1dGhfaW50ZXJjZXB0b3IgOiB7XG4gICAgICAgICAgc2Vzc2lvbl9sb3N0IDonU2Vzc2lvbiBsb3N0LCB5b3UgaGF2ZSB0byBsb2dpbiBhZ2Fpbi4nLFxuICAgICAgICAgIG5vdF9mb3VuZDogJ1Jlc291cmNlIG5vdCBmb3VuZCcsXG4gICAgICAgICAgdGl0bGU6ICdXZSBhcmUgc29ycnkhJyxcbiAgICAgICAgICBtZXNzYWdlOiAnV2UgaGFkIGEgcHJvYmxlbSB0cnlpbmcgdG8gcHJvY2VzcyB5b3VyIHJlcXVlc3QuJyxcbiAgICAgICAgICBjb2RlOidDb2RlJyxcbiAgICAgICAgICB1bmF2YWlsYWJsZTonU2VydmljZSB1bmF2YWlsYWJsZSwgcGxlYXNlIHRyeSBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLicsXG4gICAgICAgICAgY29ubmVjdGlvbl9lcnJvcjonQ291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyLCBwbGVhc2UgY2hlY2sgeW91ciBuZXR3b3JrIGNvbm5lY3Rpb24uJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgbWVzc2FnZXNFcyA9IHtcbiAgICAgICAgYXV0aF9pbnRlcmNlcHRvcjoge1xuICAgICAgICAgIHNlc3Npb25fbG9zdDogJ1N1IHNlc2nDs24gZXhwaXLDsywgZGViZSBpbmljaWFyIHNlc2nDs24gbnVldmFtZW50ZS4nLFxuICAgICAgICAgIG5vdF9mb3VuZDogJ1JlY3Vyc28gbm8gZW5jb250cmFkbycsXG4gICAgICAgICAgdGl0bGU6ICfCoUxvIHNlbnRpbW9zIScsXG4gICAgICAgICAgbWVzc2FnZTogJ1R1dmltb3MgdW4gcHJvYmxlbWEgYWwgdHJhdGFyIGRlIHByb2Nlc2FyIHN1IHNvbGljaXR1ZC4nLFxuICAgICAgICAgIGNvZGU6ICdDw7NkaWdvJyxcbiAgICAgICAgICB1bmF2YWlsYWJsZTogJ1NlcnZpY2lvIG5vIGRpc3BvbmlibGUsIGludMOpbnRlbG8gZGUgbnVldm8gZW4gdW5vcyBtaW51dG9zLicsXG4gICAgICAgICAgY29ubmVjdGlvbl9lcnJvcjogJ05vIHNlIHB1ZG8gY29uZWN0YXIgYWwgc2Vydmlkb3IsIHZlcmlmaXF1ZSBzdSBjb25leGnDs24gZGUgcmVkLidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChsYW5nICYmIGxhbmc9PT0nZW4nKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcyA9IG1lc3NhZ2VzRW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVyY2VwdG9yTWVzc2FnZXMgPSBtZXNzYWdlc0VzO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbnRlcmNlcHRvck1lc3NhZ2VzO1xuICB9XG5cblxuICByZWdpc3RlckxvZyhlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiB2b2lkIHtcbiAgICBjb25zdCB1ID0gdGhpcy5hdXRoLmdldFVzZXJkYXRhKCk7XG4gICAgY29uc3QgcGFyYW06IEZyb250RW5kRXhjZXB0aW9uID0ge1xuICAgICAgaHR0cFN0YXR1czogZXJyb3Iuc3RhdHVzLFxuICAgICAgaHR0cFN0YXR1c1RleHQ6IGVycm9yLnN0YXR1c1RleHQsXG4gICAgICBlcnJvck1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICBjdXJyZW50VXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgIHJlcXVlc3RVcmw6IHJlcXVlc3QudXJsV2l0aFBhcmFtcz9yZXF1ZXN0LnVybFdpdGhQYXJhbXM6IHVuZGVmaW5lZCxcbiAgICAgIHJlcXVlc3RCb2R5OiByZXF1ZXN0LmJvZHk/SlNPTi5zdHJpbmdpZnkocmVxdWVzdC5ib2R5KTp1bmRlZmluZWQsXG4gICAgICB1c2VySWQ6IHU/dS51c2VySWQ6IHVuZGVmaW5lZCxcbiAgICAgIGFwcGxpY2F0aW9uSWQ6IHRoaXMuYXBwbGljYXRpb25JZCxcbiAgICAgIHJlcXVlc3REYXRlOiBuZXcgRGF0ZSgpXG4gICAgfTtcbiAgICB0aGlzLmF1dGgucmVnaXN0ZXJFeGNlcHRpb24ocGFyYW0pLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ3JlZ2lzdGVyRXhjZXB0aW9uJywgcmVzcG9uc2UpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcigncmVnaXN0ZXJFeGNlcHRpb24nLCBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NzaS1zZWN1cml0eS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvbWVzc2FnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCw0Q0FBNEM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQU0xRCxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNTLElBQW9CO0lBQzNCLDBCQUEwQjtJQUNsQixRQUFxQixFQUN0QixNQUFpQixFQUNELFdBQWdCO1FBSmhDLFNBQUksR0FBSixJQUFJLENBQWdCO1FBRW5CLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUd4QixJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDakQsQ0FBQztJQUdELGtEQUFrRDtJQUNsRCxnQkFBZ0IsQ0FBQyxLQUF3QixFQUFFLE9BQXlCO1FBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hELFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNwQixLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsTUFBTTthQUNQO1lBQ0QsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDUixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxh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QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGluZXMtcGVyLWZ1bmN0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBxdW90ZS1wcm9wcyAqL1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuLy8gaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFsZXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuY29tcG9uZW50JztcbmltcG9ydCB7IEZyb250RW5kRXhjZXB0aW9uIH0gZnJvbSAnLi4vdXNlci5tb2RlbCc7XG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWVzc2FnZXNTZXJ2aWNlIHtcblxuICBwcml2YXRlIGludGVyY2VwdG9yTWVzc2FnZXM6IGFueTtcbiAgYXBwbGljYXRpb25JZDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBhdXRoOiBTZXNzaW9uU2VydmljZSxcbiAgICAvLyBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIGVudmlyb25tZW50OiBhbnlcbiAgKSB7XG4gICAgdGhpcy5hcHBsaWNhdGlvbklkID0gZW52aXJvbm1lbnQuYXBwbGljYXRpb25JZDtcbiAgfVxuXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1saW5lcy1wZXItZnVuY3Rpb25cbiAgc2hvd0Vycm9yTWVzc2FnZShlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnZXJyb3I6ICcsIGVycm9yKTtcbiAgICB0aGlzLnJlZ2lzdGVyTG9nKGVycm9yLCByZXF1ZXN0KTtcbiAgICBjb25zdCBtc2dzOiBhbnkgPSB0aGlzLmdldEludGVyY2VwdG9yTWVzc2FnZXMoKTtcbiAgICBzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xuICAgICAgY2FzZSAzMDI6IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlU25hY2tFcnJvcihlcnJvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MDA6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihlcnJvci5tZXNzYWdlLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNDAzOiB7XG4gICAgICAgIHRoaXMuZ29OYXZpZ2F0ZUxvZ2luKG1zZ3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNDA0OiB7XG4gICAgICAgIHRoaXMuc2hvd1NuYWNrRXJyb3IobXNncy5hdXRoX2ludGVyY2VwdG9yLm5vdF9mb3VuZCwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQwOToge1xuICAgICAgICB0aGlzLm1lc3NhZ2VBbGVydERpYWxvZyhlcnJvciwgbXNncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MTI6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UsIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MjI6IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlQWxlcnREaWFsb2coZXJyb3IsIG1zZ3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNDI4OiB7XG4gICAgICAgIHRoaXMuc2hvd1NuYWNrRXJyb3IoZXJyb3IuZXJyb3IucmVzcG9uc2VNZXNzYWdlLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNTAwOiB7XG4gICAgICAgIHRoaXMubWVzc2FnZUFsZXJ0RGlhbG9nKGVycm9yLCBtc2dzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDUwMzoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKG1zZ3MuYXV0aF9pbnRlcmNlcHRvci51bmF2YWlsYWJsZSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIC0xOiB7XG4gICAgICAgIHRoaXMuc2hvd1NuYWNrRXJyb3IobXNncy5hdXRoX2ludGVyY2VwdG9yLmNvbm5lY3Rpb25fZXJyb3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMDoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5jb25uZWN0aW9uX2Vycm9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbWVzc2FnZVNuYWNrRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yLmVycm9yICYmIGVycm9yLmVycm9yLnJlc3BvbnNlTWVzc2FnZSA/IGVycm9yLmVycm9yLnJlc3BvbnNlTWVzc2FnZSA6XG4gICAgICBlcnJvci5lcnJvci5tZXNzYWdlID8gZXJyb3IuZXJyb3IubWVzc2FnZSA6IGVycm9yLm1lc3NhZ2U7XG4gICAgdGhpcy5zaG93U25hY2tFcnJvcihlcnJvck1lc3NhZ2UsIFsnc25hY2stZXJyb3InXSk7XG4gIH1cblxuICBnb05hdmlnYXRlTG9naW4obXNnczogYW55KTogdm9pZCB7XG4gICAgLy8gaWYgKHRoaXMucm91dGVyLnVybCAhPT0gJy9sb2dpbicpIHtcbiAgICB0aGlzLnNob3dTbmFja0Vycm9yKG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5zZXNzaW9uX2xvc3QsIFsnc25hY2stZXJyb3InXSk7XG4gICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSk7XG4gICAgdGhpcy5hdXRoLmRlc3Ryb3lDcmVkZW50aWFscygpO1xuICAgIHRoaXMuYXV0aC5nZXRMb2dpblVybCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgIGNvbnN0IGxvZ2luVXJsID0gcmVzLmRhdGE7XG4gICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgIGlmICh1cmwuaW5kZXhPZihsb2dpblVybCk8MCkge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ2luVXJsICsgJz9jb250aW51ZT0nK2VuY29kZVVSSUNvbXBvbmVudCh1cmwpO1xuICAgICAgfVxuICAgIH0sIChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9KTtcbiAgICAvLyB9XG4gIH1cblxuICBtZXNzYWdlQWxlcnREaWFsb2coZXJyb3I6IGFueSwgbXNnczogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIGxldCBtZXNzYWdlID0gJyc7XG4gICAgaWYgKGVycm9yLmVycm9yLmRlc2NyaXB0aW9uKSB7XG4gICAgICBtZXNzYWdlID0gZXJyb3IuZXJyb3IuZGVzY3JpcHRpb247XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uKVxuICAgICAge21lc3NhZ2UgPSBtZXNzYWdlICsgJ1xcblxcbicrbXNncy5hdXRoX2ludGVyY2VwdG9yLmNvZGUrJzogJyArIGVycm9yLmVycm9yLmV4Y2VwdGlvbjt9XG4gICAgfSBlbHNlIGlmIChlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQpXG4gICAgICB7bWVzc2FnZSA9IG1lc3NhZ2UgKyAnXFxuXFxuJyttc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29kZSsnOiAnICsgZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQ7fVxuICAgIH0gZWxzZSBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZSkge1xuICAgICAgbWVzc2FnZSA9IGVycm9yLmVycm9yLm1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQpXG4gICAgICB7bWVzc2FnZSA9IG1lc3NhZ2UgKyAnXFxuXFxuJyttc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29kZSsnOiAnICsgZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQ7fVxuICAgIH0gIGVsc2UgaWYgKGVycm9yLm1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgaWYgKGVycm9yLmVycm9yLmV4Y2VwdGlvbklkKVxuICAgICAge21lc3NhZ2UgPSBtZXNzYWdlICsgJ1xcblxcbicrbXNncy5hdXRoX2ludGVyY2VwdG9yLmNvZGUrJzogJyArIGVycm9yLmVycm9yLmV4Y2VwdGlvbklkO31cbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSA9IG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5tZXNzYWdlO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZy5vcGVuKEFsZXJ0Q29tcG9uZW50LCB7XG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBkYXRhOiB7IHRpdGxlOiBtc2dzLmF1dGhfaW50ZXJjZXB0b3IudGl0bGUsIG1lc3NhZ2UgfVxuICAgIH0pO1xuICB9XG5cbiAgc2hvd1NuYWNrRXJyb3IobWVzc2FnZTogYW55LCBwYW5lbENsYXNzOiBhbnlbXSA9IFtdKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2cobWVzc2FnZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgdW5kZWZpbmVkLCB7XG4gICAgICAgIGR1cmF0aW9uOiA1MDAwLFxuICAgICAgICBwYW5lbENsYXNzLFxuICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiAndG9wJ1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRJbnRlcmNlcHRvck1lc3NhZ2VzKG1lc3NhZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcyA9IG1lc3NhZ2U7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuICBnZXRJbnRlcmNlcHRvck1lc3NhZ2VzKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmludGVyY2VwdG9yTWVzc2FnZXMpIHtcbiAgICAgIGNvbnN0IGxhbmcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0xBTkcnKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VzRW4gPSB7XG4gICAgICAgIGF1dGhfaW50ZXJjZXB0b3IgOiB7XG4gICAgICAgICAgc2Vzc2lvbl9sb3N0IDonU2Vzc2lvbiBsb3N0LCB5b3UgaGF2ZSB0byBsb2dpbiBhZ2Fpbi4nLFxuICAgICAgICAgIG5vdF9mb3VuZDogJ1Jlc291cmNlIG5vdCBmb3VuZCcsXG4gICAgICAgICAgdGl0bGU6ICdXZSBhcmUgc29ycnkhJyxcbiAgICAgICAgICBtZXNzYWdlOiAnV2UgaGFkIGEgcHJvYmxlbSB0cnlpbmcgdG8gcHJvY2VzcyB5b3VyIHJlcXVlc3QuJyxcbiAgICAgICAgICBjb2RlOidDb2RlJyxcbiAgICAgICAgICB1bmF2YWlsYWJsZTonU2VydmljZSB1bmF2YWlsYWJsZSwgcGxlYXNlIHRyeSBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLicsXG4gICAgICAgICAgY29ubmVjdGlvbl9lcnJvcjonQ291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyLCBwbGVhc2UgY2hlY2sgeW91ciBuZXR3b3JrIGNvbm5lY3Rpb24uJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgbWVzc2FnZXNFcyA9IHtcbiAgICAgICAgYXV0aF9pbnRlcmNlcHRvcjoge1xuICAgICAgICAgIHNlc3Npb25fbG9zdDogJ1N1IHNlc2nDs24gZXhwaXLDsywgZGViZSBpbmljaWFyIHNlc2nDs24gbnVldmFtZW50ZS4nLFxuICAgICAgICAgIG5vdF9mb3VuZDogJ1JlY3Vyc28gbm8gZW5jb250cmFkbycsXG4gICAgICAgICAgdGl0bGU6ICfCoUxvIHNlbnRpbW9zIScsXG4gICAgICAgICAgbWVzc2FnZTogJ1R1dmltb3MgdW4gcHJvYmxlbWEgYWwgdHJhdGFyIGRlIHByb2Nlc2FyIHN1IHNvbGljaXR1ZC4nLFxuICAgICAgICAgIGNvZGU6ICdDw7NkaWdvJyxcbiAgICAgICAgICB1bmF2YWlsYWJsZTogJ1NlcnZpY2lvIG5vIGRpc3BvbmlibGUsIGludMOpbnRlbG8gZGUgbnVldm8gZW4gdW5vcyBtaW51dG9zLicsXG4gICAgICAgICAgY29ubmVjdGlvbl9lcnJvcjogJ05vIHNlIHB1ZG8gY29uZWN0YXIgYWwgc2Vydmlkb3IsIHZlcmlmaXF1ZSBzdSBjb25leGnDs24gZGUgcmVkLidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChsYW5nICYmIGxhbmc9PT0nZW4nKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcyA9IG1lc3NhZ2VzRW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVyY2VwdG9yTWVzc2FnZXMgPSBtZXNzYWdlc0VzO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbnRlcmNlcHRvck1lc3NhZ2VzO1xuICB9XG5cblxuICByZWdpc3RlckxvZyhlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiB2b2lkIHtcbiAgICBjb25zdCB1ID0gdGhpcy5hdXRoLmdldFVzZXJkYXRhKCk7XG4gICAgY29uc3QgcGFyYW06IEZyb250RW5kRXhjZXB0aW9uID0ge1xuICAgICAgaHR0cFN0YXR1czogZXJyb3Iuc3RhdHVzLFxuICAgICAgaHR0cFN0YXR1c1RleHQ6IGVycm9yLnN0YXR1c1RleHQsXG4gICAgICBlcnJvck1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICBjdXJyZW50VXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgIHJlcXVlc3RVcmw6IHJlcXVlc3QudXJsV2l0aFBhcmFtcz9yZXF1ZXN0LnVybFdpdGhQYXJhbXM6IHVuZGVmaW5lZCxcbiAgICAgIHJlcXVlc3RCb2R5OiByZXF1ZXN0LmJvZHk/SlNPTi5zdHJpbmdpZnkocmVxdWVzdC5ib2R5KTp1bmRlZmluZWQsXG4gICAgICB1c2VySWQ6IHU/dS51c2VySWQ6IHVuZGVmaW5lZCxcbiAgICAgIGFwcGxpY2F0aW9uSWQ6IHRoaXMuYXBwbGljYXRpb25JZCxcbiAgICAgIHJlcXVlc3REYXRlOiBuZXcgRGF0ZSgpXG4gICAgfTtcbiAgICB0aGlzLmF1dGgucmVnaXN0ZXJFeGNlcHRpb24ocGFyYW0pLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ3JlZ2lzdGVyRXhjZXB0aW9uJywgcmVzcG9uc2UpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcigncmVnaXN0ZXJFeGNlcHRpb24nLCBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
|