nuxeo-development-framework 6.1.1 → 6.1.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/bundles/nuxeo-development-framework.umd.js +793 -638
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +32 -16
- package/esm2015/lib/components/reports/ndf-reports/models/common.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/dynamic-line.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/ndf-reports.config.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/pipes/check-condition.pipe.js +4 -4
- package/esm2015/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.js +26 -31
- package/esm2015/lib/components/reports/ndf-reports/services/ndf-reports.service.js +16 -21
- package/esm2015/lib/components/reports/ndf-reports/services/reports-hooks.service.js +34 -1
- package/esm2015/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.js +116 -102
- package/esm2015/lib/components/tables/dynamic-table/public-api.js +3 -2
- package/esm2015/lib/components/tables/dynamic-table/services/table-hooks.service.js +56 -0
- package/esm2015/lib/shared/services/base/base.service.js +9 -10
- package/fesm2015/nuxeo-development-framework.js +519 -415
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.d.ts +1 -1
- package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +9 -3
- package/lib/components/reports/ndf-reports/models/common.d.ts +9 -1
- package/lib/components/reports/ndf-reports/models/dynamic-line.d.ts +4 -5
- package/lib/components/reports/ndf-reports/models/ndf-reports.config.d.ts +1 -0
- package/lib/components/reports/ndf-reports/pipes/check-condition.pipe.d.ts +2 -2
- package/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.d.ts +4 -2
- package/lib/components/reports/ndf-reports/services/ndf-reports.service.d.ts +6 -6
- package/lib/components/reports/ndf-reports/services/reports-hooks.service.d.ts +15 -3
- package/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.d.ts +23 -9
- package/lib/components/tables/dynamic-table/public-api.d.ts +2 -1
- package/lib/components/tables/dynamic-table/services/table-hooks.service.d.ts +13 -0
- package/lib/shared/services/base/base.service.d.ts +4 -2
- package/package.json +1 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { Evaluator } from '../../../../shared';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class TableHooksService {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.beforeSubmitHooks = [];
|
|
8
|
+
}
|
|
9
|
+
registerBeforeSubmit(handler) {
|
|
10
|
+
this.beforeSubmitHooks.push(handler);
|
|
11
|
+
}
|
|
12
|
+
unregisterBeforeSubmit(handler) {
|
|
13
|
+
const index = this.beforeSubmitHooks.indexOf(handler);
|
|
14
|
+
if (index > -1) {
|
|
15
|
+
this.beforeSubmitHooks.splice(index, 1);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
clearBeforeSubmitHooks() {
|
|
19
|
+
this.beforeSubmitHooks = [];
|
|
20
|
+
}
|
|
21
|
+
executeBeforeSubmit(payload) {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
let modifiedPayload = Object.assign({}, payload);
|
|
24
|
+
for (const handler of this.beforeSubmitHooks) {
|
|
25
|
+
try {
|
|
26
|
+
const result = yield Promise.resolve(handler(modifiedPayload));
|
|
27
|
+
modifiedPayload = result !== null && result !== void 0 ? result : modifiedPayload;
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
console.error('Error executing beforeSubmit handler:', err);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return modifiedPayload;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
evaluate(expr, payload) {
|
|
37
|
+
try {
|
|
38
|
+
const context = { criteria: payload };
|
|
39
|
+
const result = Evaluator.evaluate(expr, context, 'payload');
|
|
40
|
+
return result !== null && result !== void 0 ? result : payload;
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
console.error('Error evaluating beforeSubmit string:', e);
|
|
44
|
+
return payload;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
TableHooksService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TableHooksService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
49
|
+
TableHooksService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TableHooksService, providedIn: 'root' });
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TableHooksService, decorators: [{
|
|
51
|
+
type: Injectable,
|
|
52
|
+
args: [{
|
|
53
|
+
providedIn: 'root'
|
|
54
|
+
}]
|
|
55
|
+
}] });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaG9va3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL2R5bmFtaWMtdGFibGUvc2VydmljZXMvdGFibGUtaG9va3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBUS9DLE1BQU0sT0FBTyxpQkFBaUI7SUFIOUI7UUFJUyxzQkFBaUIsR0FBaUMsRUFBRSxDQUFDO0tBMEM3RDtJQXhDQyxvQkFBb0IsQ0FBZ0QsT0FBaUM7UUFDckcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsc0JBQXNCLENBQUksT0FBaUM7UUFDMUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNmLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0YsQ0FBQztJQUVELHNCQUFzQjtRQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFSyxtQkFBbUIsQ0FBZ0MsT0FBVTs7WUFDbEUsSUFBSSxlQUFlLHFCQUFRLE9BQU8sQ0FBRSxDQUFDO1lBRXJDLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUM3QyxJQUFJO29CQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztvQkFDL0QsZUFBZSxHQUFHLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFJLGVBQWUsQ0FBQztpQkFDNUM7Z0JBQUMsT0FBTyxHQUFHLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLENBQUMsQ0FBQztpQkFDNUQ7YUFDRDtZQUVELE9BQU8sZUFBZSxDQUFDO1FBQ3hCLENBQUM7S0FBQTtJQUVELFFBQVEsQ0FBZ0MsSUFBWSxFQUFFLE9BQVU7UUFDL0QsSUFBSTtZQUNILE1BQU0sT0FBTyxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3RDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM1RCxPQUFPLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFJLE9BQU8sQ0FBQztTQUN6QjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRCxPQUFPLE9BQU8sQ0FBQztTQUNmO0lBQ0YsQ0FBQzs7K0dBMUNXLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmpCLE1BQU07NEZBRU4saUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRXZhbHVhdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkJztcclxuaW1wb3J0IHsgVGFibGVDdXN0b21SZXF1ZXN0LCBUYWJsZVByb3ZpZGVyUmVxdWVzdCB9IGZyb20gJy4uL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVCZWZvcmVTdWJtaXRIb29rPFQ+ID0gKHBheWxvYWQ6IFQpID0+IFQgfCBQcm9taXNlPFQ+O1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVIb29rc1NlcnZpY2Uge1xyXG5cdHByaXZhdGUgYmVmb3JlU3VibWl0SG9va3M6IFRhYmxlQmVmb3JlU3VibWl0SG9vazxhbnk+W10gPSBbXTtcclxuXHJcbiAgcmVnaXN0ZXJCZWZvcmVTdWJtaXQ8VCA9IFRhYmxlUHJvdmlkZXJSZXF1ZXN0IHwgVGFibGVDdXN0b21SZXF1ZXN0PihoYW5kbGVyOiBUYWJsZUJlZm9yZVN1Ym1pdEhvb2s8VD4pOiB2b2lkIHtcclxuXHRcdHRoaXMuYmVmb3JlU3VibWl0SG9va3MucHVzaChoYW5kbGVyKTtcclxuXHR9XHJcblxyXG5cdHVucmVnaXN0ZXJCZWZvcmVTdWJtaXQ8VD4oaGFuZGxlcjogVGFibGVCZWZvcmVTdWJtaXRIb29rPFQ+KTogdm9pZCB7XHJcblx0XHRjb25zdCBpbmRleCA9IHRoaXMuYmVmb3JlU3VibWl0SG9va3MuaW5kZXhPZihoYW5kbGVyKTtcclxuXHRcdGlmIChpbmRleCA+IC0xKSB7XHJcblx0XHRcdHRoaXMuYmVmb3JlU3VibWl0SG9va3Muc3BsaWNlKGluZGV4LCAxKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGNsZWFyQmVmb3JlU3VibWl0SG9va3MoKTogdm9pZCB7XHJcblx0XHR0aGlzLmJlZm9yZVN1Ym1pdEhvb2tzID0gW107XHJcblx0fVxyXG5cclxuXHRhc3luYyBleGVjdXRlQmVmb3JlU3VibWl0PFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PihwYXlsb2FkOiBUKTogUHJvbWlzZTxUPiB7XHJcblx0XHRsZXQgbW9kaWZpZWRQYXlsb2FkID0geyAuLi5wYXlsb2FkIH07XHJcblxyXG5cdFx0Zm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuYmVmb3JlU3VibWl0SG9va3MpIHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLnJlc29sdmUoaGFuZGxlcihtb2RpZmllZFBheWxvYWQpKTtcclxuXHRcdFx0XHRtb2RpZmllZFBheWxvYWQgPSByZXN1bHQgPz8gbW9kaWZpZWRQYXlsb2FkO1xyXG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBleGVjdXRpbmcgYmVmb3JlU3VibWl0IGhhbmRsZXI6JywgZXJyKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBtb2RpZmllZFBheWxvYWQ7XHJcblx0fVxyXG5cclxuXHRldmFsdWF0ZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4oZXhwcjogc3RyaW5nLCBwYXlsb2FkOiBUKTogVCB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRjb25zdCBjb250ZXh0ID0geyBjcml0ZXJpYTogcGF5bG9hZCB9O1xyXG5cdFx0XHRjb25zdCByZXN1bHQgPSBFdmFsdWF0b3IuZXZhbHVhdGUoZXhwciwgY29udGV4dCwgJ3BheWxvYWQnKTtcclxuXHRcdFx0cmV0dXJuIHJlc3VsdCA/PyBwYXlsb2FkO1xyXG5cdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGJlZm9yZVN1Ym1pdCBzdHJpbmc6JywgZSk7XHJcblx0XHRcdHJldHVybiBwYXlsb2FkO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
|
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
var _BaseService_nuxeoService,
|
|
1
|
+
var _BaseService_nuxeoService, _BaseService_cacheBaseService, _BaseService_apisErrorsService;
|
|
2
2
|
import { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
3
|
import { Injectable } from '@angular/core';
|
|
4
4
|
import { TranslateService } from '@ngx-translate/core';
|
|
5
5
|
import { from } from 'rxjs';
|
|
6
6
|
import { map } from 'rxjs/operators';
|
|
7
|
-
import { HttpBaseService } from './http-base.service';
|
|
8
|
-
import { CacheBaseService } from './cache-base.service';
|
|
9
|
-
import { NuxeoService } from '../../../core/services/nuxeo/nuxeo.service';
|
|
10
|
-
import { CallApiService } from '../../../core/services/callApi/call-api.service';
|
|
11
7
|
import { AdapterService } from '../../../core/adapters/adapter.service';
|
|
8
|
+
import { CallApiService } from '../../../core/services/callApi/call-api.service';
|
|
9
|
+
import { NuxeoService } from '../../../core/services/nuxeo/nuxeo.service';
|
|
12
10
|
import { ApisErrorsMessagesService } from '../../../shared-services/apis-errors-messages.service';
|
|
11
|
+
import { CacheBaseService } from './cache-base.service';
|
|
12
|
+
import { HttpBaseService } from './http-base.service';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
export class BaseService extends HttpBaseService {
|
|
15
15
|
constructor(injector) {
|
|
16
16
|
super(injector);
|
|
17
17
|
_BaseService_nuxeoService.set(this, void 0);
|
|
18
|
-
_BaseService_callApiService.set(this, void 0);
|
|
19
18
|
_BaseService_cacheBaseService.set(this, void 0);
|
|
20
19
|
_BaseService_apisErrorsService.set(this, void 0);
|
|
21
20
|
__classPrivateFieldSet(this, _BaseService_nuxeoService, injector.get(NuxeoService), "f");
|
|
22
|
-
|
|
21
|
+
this._callApiService = injector.get(CallApiService);
|
|
23
22
|
__classPrivateFieldSet(this, _BaseService_cacheBaseService, injector.get(CacheBaseService), "f");
|
|
24
23
|
__classPrivateFieldSet(this, _BaseService_apisErrorsService, injector.get(ApisErrorsMessagesService), "f");
|
|
25
24
|
this.adapterService = injector.get(AdapterService);
|
|
@@ -99,7 +98,7 @@ export class BaseService extends HttpBaseService {
|
|
|
99
98
|
params = (_a = options.params) !== null && _a !== void 0 ? _a : undefined;
|
|
100
99
|
headers = (_b = options.headers) !== null && _b !== void 0 ? _b : undefined;
|
|
101
100
|
}
|
|
102
|
-
return
|
|
101
|
+
return this._callApiService
|
|
103
102
|
.query(Object.assign({ pageProvider }, (params ? params : {})), {
|
|
104
103
|
headers: headers ? Object.assign({}, headers) : undefined
|
|
105
104
|
})
|
|
@@ -153,11 +152,11 @@ export class BaseService extends HttpBaseService {
|
|
|
153
152
|
return __classPrivateFieldGet(this, _BaseService_nuxeoService, "f").getDuplicates(params, body);
|
|
154
153
|
}
|
|
155
154
|
}
|
|
156
|
-
_BaseService_nuxeoService = new WeakMap(),
|
|
155
|
+
_BaseService_nuxeoService = new WeakMap(), _BaseService_cacheBaseService = new WeakMap(), _BaseService_apisErrorsService = new WeakMap();
|
|
157
156
|
BaseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
158
157
|
BaseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseService, providedIn: 'root' });
|
|
159
158
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseService, decorators: [{
|
|
160
159
|
type: Injectable,
|
|
161
160
|
args: [{ providedIn: 'root' }]
|
|
162
161
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Jhc2UvYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVdyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdURBQXVELENBQUM7O0FBS2xHLE1BQU0sT0FBZ0IsV0FBWSxTQUFRLGVBQWU7SUFnQnhELFlBQVksUUFBa0I7UUFDN0IsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBaEJqQiw0Q0FBNEI7UUFDNUIsOENBQWdDO1FBQ2hDLGdEQUFvQztRQUNwQyxpREFBOEM7UUFjN0MsdUJBQUEsSUFBSSw2QkFBaUIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBQSxDQUFDO1FBQ2hELHVCQUFBLElBQUksK0JBQW1CLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE1BQUEsQ0FBQztRQUNwRCx1QkFB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LElBQVM7UUFDbkMsT0FBTyx1QkFBQSxJQUFJLGlDQUFjLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDOzs7eUdBck5vQixXQUFXOzZHQUFYLFdBQVcsY0FEUCxNQUFNOzRGQUNWLFdBQVc7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuXHRCYXNlQ2FjaGVPcHRpb25zLFxyXG5cdENhY2hlZEZ1bGxIdHRwT3B0aW9ucyxcclxuXHRDYWNoZWRGdWxsUXVlcnlPcHRpb25zLFxyXG5cdENhY2hlZEh0dHBPcHRpb25zLFxyXG5cdENhY2hlZFF1ZXJ5T3B0aW9ucyxcclxuXHRPcGVyYXRpb25PcHRpb25zLFxyXG5cdFF1ZXJ5T3B0aW9ucyxcclxuXHRSZXF1ZXN0T3B0aW9uc1xyXG59IGZyb20gJy4vbW9kZWxzJztcclxuaW1wb3J0IHsgSHR0cEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9odHRwLWJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENhY2hlQmFzZVNlcnZpY2UgfSBmcm9tICcuL2NhY2hlLWJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE51eGVvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbnV4ZW8vbnV4ZW8uc2VydmljZSc7XHJcbmltcG9ydCB7IENhbGxBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9jYWxsQXBpL2NhbGwtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvYWRhcHRlcnMvYWRhcHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBpc0Vycm9yc01lc3NhZ2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy9hcGlzLWVycm9ycy1tZXNzYWdlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE92ZXJyaWRlVG9rZW5TZXJ2aWNlIH0gZnJvbSAnLi9vdmVycmlkZS10b2tlbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU2VydmljZSBleHRlbmRzIEh0dHBCYXNlU2VydmljZSB7XHJcblx0I251eGVvU2VydmljZTogTnV4ZW9TZXJ2aWNlO1xyXG5cdCNjYWxsQXBpU2VydmljZTogQ2FsbEFwaVNlcnZpY2U7XHJcblx0I2NhY2hlQmFzZVNlcnZpY2U6IENhY2hlQmFzZVNlcnZpY2U7XHJcblx0I2FwaXNFcnJvcnNTZXJ2aWNlOiBBcGlzRXJyb3JzTWVzc2FnZXNTZXJ2aWNlO1xyXG5cdHByb3RlY3RlZCBhZGFwdGVyU2VydmljZTogQWRhcHRlclNlcnZpY2U7XHJcblx0cHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2U7XHJcblxyXG5cdGdldCB1c2VyKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuI251eGVvU2VydmljZS5udXhlb0NsaWVudD8udXNlcjtcclxuXHR9XHJcblxyXG5cdGdldCB1c2VyTmFtZSgpIHtcclxuXHRcdHJldHVybiB0aGlzLiNudXhlb1NlcnZpY2UubnV4ZW9DbGllbnQ/LnVzZXI/LnByb3BlcnRpZXM/LnVzZXJuYW1lO1xyXG5cdH1cclxuXHJcblx0Y29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcblx0XHRzdXBlcihpbmplY3Rvcik7XHJcblx0XHR0aGlzLiNudXhlb1NlcnZpY2UgPSBpbmplY3Rvci5nZXQoTnV4ZW9TZXJ2aWNlKTtcclxuXHRcdHRoaXMuI2NhbGxBcGlTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KENhbGxBcGlTZXJ2aWNlKTtcclxuXHRcdHRoaXMuI2NhY2hlQmFzZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQ2FjaGVCYXNlU2VydmljZSk7XHJcblx0XHR0aGlzLiNhcGlzRXJyb3JzU2VydmljZSA9IGluamVjdG9yLmdldChBcGlzRXJyb3JzTWVzc2FnZXNTZXJ2aWNlKTtcclxuXHRcdHRoaXMuYWRhcHRlclNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQWRhcHRlclNlcnZpY2UpO1xyXG5cdFx0dGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG5cdFx0dGhpcy4jY2FjaGVCYXNlU2VydmljZS52YWxpZGF0ZVRUTCh0aGlzLnVzZXJOYW1lKTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBhdXRvbWF0aW9uPFRSZXNwb25zZSA9IHVua25vd24+KFxyXG5cdFx0b3BlcmF0aW9uT3JPcHRpb25zOiBzdHJpbmcgfCBPcGVyYXRpb25PcHRpb25zLFxyXG5cdFx0aW5wdXQ6IHN0cmluZyA9IHVuZGVmaW5lZCxcclxuXHRcdHBhcmFtcyA9IHVuZGVmaW5lZCxcclxuXHRcdGNvbnRleHQgPSB1bmRlZmluZWQsXHJcblx0XHRoZWFkZXJzID0gdW5kZWZpbmVkLFxyXG5cdFx0aXNDdXN0b21BdXRvbWF0aW9uID0gZmFsc2VcclxuXHQpOiBPYnNlcnZhYmxlPFRSZXNwb25zZT4ge1xyXG5cdFx0bGV0IG9wZXJhdGlvbjogc3RyaW5nO1xyXG5cclxuXHRcdGlmICh0eXBlb2Ygb3BlcmF0aW9uT3JPcHRpb25zID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRvcGVyYXRpb24gPSBvcGVyYXRpb25Pck9wdGlvbnM7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjb25zdCBvcHRpb25zID0gb3BlcmF0aW9uT3JPcHRpb25zIGFzIE9wZXJhdGlvbk9wdGlvbnM7XHJcblx0XHRcdG9wZXJhdGlvbiA9IG9wdGlvbnMub3BlcmF0aW9uO1xyXG5cdFx0XHRpc0N1c3RvbUF1dG9tYXRpb24gPSBvcHRpb25zLmlzQ3VzdG9tQXV0b21hdGlvbjtcclxuXHRcdFx0aW5wdXQgPSBvcHRpb25zLmlucHV0ID8/IHVuZGVmaW5lZDtcclxuXHRcdFx0cGFyYW1zID0gb3B0aW9ucy5wYXJhbXMgPz8gdW5kZWZpbmVkO1xyXG5cdFx0XHRjb250ZXh0ID0gb3B0aW9ucy5jb250ZXh0ID8/IHVuZGVmaW5lZDtcclxuXHRcdFx0aGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyA/PyB1bmRlZmluZWQ7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZyb20oXHJcblx0XHRcdHRoaXMuI251eGVvU2VydmljZS5udXhlb0NsaWVudFxyXG5cdFx0XHRcdC5vcGVyYXRpb24ob3BlcmF0aW9uLCB7XHJcblx0XHRcdFx0XHQuLi4oaXNDdXN0b21BdXRvbWF0aW9uXHJcblx0XHRcdFx0XHRcdD8ge1xyXG5cdFx0XHRcdFx0XHRcdHVybDogYCR7dGhpcy5lbnZpcm9ubWVudC5udXhlb30ke3RoaXMuZW52aXJvbm1lbnQuY3VzdG9tQXV0b21hdGlvbn1gXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0OiB7fSlcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRcdC5pbnB1dChpbnB1dCA/IGlucHV0IDogdW5kZWZpbmVkKVxyXG5cdFx0XHRcdC5wYXJhbXMocGFyYW1zID8geyAuLi5wYXJhbXMgfSA6IHVuZGVmaW5lZClcclxuXHRcdFx0XHQuY29udGV4dChjb250ZXh0ID8geyAuLi5jb250ZXh0IH0gOiB1bmRlZmluZWQpXHJcblx0XHRcdFx0LmV4ZWN1dGUoeyBoZWFkZXJzOiBoZWFkZXJzID8geyAuLi5oZWFkZXJzIH0gOiB1bmRlZmluZWQgfSlcclxuXHRcdCkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZSBhcyBUUmVzcG9uc2UpLFxyXG5cdFx0XHR0aGlzLiNhcGlzRXJyb3JzU2VydmljZS5oYW5kbGVFcnJvck1lc3NhZ2UoKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBjdXN0b21BdXRvbWF0aW9uPFRSZXNwb25zZSA9IHVua25vd24+KFxyXG5cdFx0b3BlcmF0aW9uT3JPcHRpb25zOiBzdHJpbmcgfCBPcGVyYXRpb25PcHRpb25zLFxyXG5cdFx0aW5wdXQ6IHN0cmluZyA9IHVuZGVmaW5lZCxcclxuXHRcdHBhcmFtcyA9IHVuZGVmaW5lZCxcclxuXHRcdGNvbnRleHQgPSB1bmRlZmluZWQsXHJcblx0XHRoZWFkZXJzID0gdW5kZWZpbmVkXHJcblx0KTogT2JzZXJ2YWJsZTxUUmVzcG9uc2U+IHtcclxuXHRcdGlmICh0eXBlb2Ygb3BlcmF0aW9uT3JPcHRpb25zID09ICdvYmplY3QnKSB7XHJcblx0XHRcdG9wZXJhdGlvbk9yT3B0aW9ucy5pc0N1c3RvbUF1dG9tYXRpb24gPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMuYXV0b21hdGlvbihvcGVyYXRpb25Pck9wdGlvbnMsIGlucHV0LCBwYXJhbXMsIGNvbnRleHQsIGhlYWRlcnMsIHRydWUpO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIHJlcXVlc3Q8VFJlc3BvbnNlPihcclxuXHRcdGVuZHBvaW50T3JPcHRpb25zOiBzdHJpbmcgfCBSZXF1ZXN0T3B0aW9ucyxcclxuXHRcdHF1ZXJ5UGFyYW1zID0gdW5kZWZpbmVkLFxyXG5cdFx0aGVhZGVycyA9IHVuZGVmaW5lZCxcclxuXHRcdHBheWxvYWQgPSB1bmRlZmluZWQsXHJcblx0XHR0eXBlID0gJ2dldCdcclxuXHQpOiBPYnNlcnZhYmxlPFRSZXNwb25zZT4ge1xyXG5cdFx0bGV0IGVuZHBvaW50OiBzdHJpbmc7XHJcblxyXG5cdFx0aWYgKHR5cGVvZiBlbmRwb2ludE9yT3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0ZW5kcG9pbnQgPSBlbmRwb2ludE9yT3B0aW9ucztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IG9wdGlvbnMgPSBlbmRwb2ludE9yT3B0aW9ucyBhcyBSZXF1ZXN0T3B0aW9ucztcclxuXHRcdFx0ZW5kcG9pbnQgPSBvcHRpb25zLmVuZHBvaW50O1xyXG5cdFx0XHRxdWVyeVBhcmFtcyA9IG9wdGlvbnMucXVlcnlQYXJhbXMgPz8gdW5kZWZpbmVkO1xyXG5cdFx0XHR0eXBlID0gb3B0aW9ucy50eXBlID8/ICdnZXQnO1xyXG5cdFx0XHRoZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzID8/IHVuZGVmaW5lZDtcclxuXHRcdFx0cGF5bG9hZCA9IG9wdGlvbnMucGF5bG9hZCA/PyB1bmRlZmluZWQ7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZyb20oXHJcblx0XHRcdHRoaXMuI251eGVvU2VydmljZS5udXhlb0NsaWVudFxyXG5cdFx0XHRcdC5yZXF1ZXN0KGVuZHBvaW50KVxyXG5cdFx0XHRcdC5xdWVyeVBhcmFtcyhxdWVyeVBhcmFtcyA/IHsgLi4ucXVlcnlQYXJhbXMgfSA6IHVuZGVmaW5lZClcclxuXHRcdFx0W3R5cGVdKHtcclxuXHRcdFx0XHRoZWFkZXJzOiBoZWFkZXJzID8geyAuLi5oZWFkZXJzIH0gOiB1bmRlZmluZWQsXHJcblx0XHRcdFx0Ym9keTogcGF5bG9hZCA/IHsgLi4ucGF5bG9hZCB9IDogdW5kZWZpbmVkXHJcblx0XHRcdH0pXHJcblx0XHQpLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UgYXMgVFJlc3BvbnNlKSxcclxuXHRcdFx0dGhpcy5jYXRjaEVycm9ycygpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIHF1ZXJ5PFRSZXNwb25zZT4oXHJcblx0XHRwYWdlUHJvdmlkZXJPck9wdGlvbnM6IHN0cmluZyB8IFF1ZXJ5T3B0aW9ucyxcclxuXHRcdHBhcmFtcyA9IHVuZGVmaW5lZCxcclxuXHRcdGhlYWRlcnMgPSB1bmRlZmluZWRcclxuXHQpOiBPYnNlcnZhYmxlPFRSZXNwb25zZT4ge1xyXG5cdFx0bGV0IHBhZ2VQcm92aWRlcjogc3RyaW5nO1xyXG5cdFx0aWYgKHR5cGVvZiBwYWdlUHJvdmlkZXJPck9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdHBhZ2VQcm92aWRlciA9IHBhZ2VQcm92aWRlck9yT3B0aW9ucztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IG9wdGlvbnMgPSBwYWdlUHJvdmlkZXJPck9wdGlvbnMgYXMgUXVlcnlPcHRpb25zO1xyXG5cdFx0XHRwYWdlUHJvdmlkZXIgPSBvcHRpb25zLnBhZ2VQcm92aWRlcjtcclxuXHRcdFx0cGFyYW1zID0gb3B0aW9ucy5wYXJhbXMgPz8gdW5kZWZpbmVkO1xyXG5cdFx0XHRoZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzID8/IHVuZGVmaW5lZDtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy4jY2FsbEFwaVNlcnZpY2VcclxuXHRcdFx0LnF1ZXJ5KFxyXG5cdFx0XHRcdHtcclxuXHRcdFx0XHRcdHBhZ2VQcm92aWRlcixcclxuXHRcdFx0XHRcdC4uLihwYXJhbXMgPyBwYXJhbXMgOiB7fSlcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHtcclxuXHRcdFx0XHRcdGhlYWRlcnM6IGhlYWRlcnMgPyB7IC4uLmhlYWRlcnMgfSA6IHVuZGVmaW5lZFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0KVxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlIGFzIFRSZXNwb25zZSksXHJcblx0XHRcdFx0dGhpcy5jYXRjaEVycm9ycygpXHJcblx0XHRcdCk7XHJcblx0fVxyXG5cdHByb3RlY3RlZCBoYXNJdGVtSW5DYWNoZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuI2NhY2hlQmFzZVNlcnZpY2UuaGFzSXRlbShrZXkpO1xyXG5cdH1cclxuXHRwcm90ZWN0ZWQgdmFsaWRhdGVUVExGb3JLZXkoZmlyc3RGZXRjaGluZ0RhdGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuI2NhY2hlQmFzZVNlcnZpY2UudmFsaWRhdGVUVExGb3JLZXkoZmlyc3RGZXRjaGluZ0RhdGUpO1xyXG5cdH1cclxuXHRwcm90ZWN0ZWQgY2FjaGVkUXVlcnk8VFJlc3BvbnNlPihvcHRpb25zOiBDYWNoZWRRdWVyeU9wdGlvbnMgfCBDYWNoZWRGdWxsUXVlcnlPcHRpb25zKTogT2JzZXJ2YWJsZTxUUmVzcG9uc2U+IHtcclxuXHRcdGNvbnN0IHJlcXVlc3QgPSAocGFyYW1zKSA9PiB7XHJcblx0XHRcdHJldHVybiB0aGlzLnF1ZXJ5KHtcclxuXHRcdFx0XHRwYWdlUHJvdmlkZXI6IG9wdGlvbnMucGFnZVByb3ZpZGVyLFxyXG5cdFx0XHRcdHBhcmFtczoge1xyXG5cdFx0XHRcdFx0Li4uKG9wdGlvbnMucGFyYW1zID8gb3B0aW9ucy5wYXJhbXMgOiB7fSksXHJcblx0XHRcdFx0XHQuLi4ocGFyYW1zID8gcGFyYW1zIDoge30pXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnNcclxuXHRcdFx0fSk7XHJcblx0XHR9O1xyXG5cclxuXHRcdHJldHVybiB0aGlzLiNjYWNoZUJhc2VTZXJ2aWNlLnN0YXJ0RmV0Y2hpbmdJdGVtcyh7XHJcblx0XHRcdC4uLm9wdGlvbnMsXHJcblx0XHRcdHVzZXJOYW1lOiB0aGlzLnVzZXJOYW1lLFxyXG5cdFx0XHRyZXF1ZXN0OiByZXF1ZXN0XHJcblx0XHR9KTtcclxuXHR9XHJcblx0cHJvdGVjdGVkIGNhY2hlZEdldDxUUmVzcG9uc2U+KG9wdGlvbnM6IENhY2hlZEh0dHBPcHRpb25zIHwgQ2FjaGVkRnVsbEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxUUmVzcG9uc2U+IHtcclxuXHRcdGNvbnN0IHJlcXVlc3QgPSAocGFyYW1zKSA9PiB7XHJcblx0XHRcdHJldHVybiB0aGlzLmdldCh7XHJcblx0XHRcdFx0ZW5kcG9pbnQ6IG9wdGlvbnMuZW5kcG9pbnQsXHJcblx0XHRcdFx0cGF5bG9hZDogb3B0aW9ucy5wYXlsb2FkLFxyXG5cdFx0XHRcdHBhcmFtczoge1xyXG5cdFx0XHRcdFx0Li4uKG9wdGlvbnMucGFyYW1zID8gb3B0aW9ucy5wYXJhbXMgOiB7fSksXHJcblx0XHRcdFx0XHQuLi4ocGFyYW1zID8gcGFyYW1zIDoge30pXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMsXHJcblx0XHRcdFx0cmVzcG9uc2VUeXBlOiBvcHRpb25zLnJlc3BvbnNlVHlwZVxyXG5cdFx0XHR9KTtcclxuXHRcdH07XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMuI2NhY2hlQmFzZVNlcnZpY2Uuc3RhcnRGZXRjaGluZ0l0ZW1zKHtcclxuXHRcdFx0Li4ub3B0aW9ucyxcclxuXHRcdFx0dXNlck5hbWU6IHRoaXMudXNlck5hbWUsXHJcblx0XHRcdHJlcXVlc3Q6IHJlcXVlc3RcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIGZldGNoPFRSZXNwb25zZT4ocGF0aDogc3RyaW5nLCBoZWFkZXJzID0gdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxUUmVzcG9uc2U+IHtcclxuXHRcdGNvbnN0IHJlcG9zaXRvcnkgPSB0aGlzLiNudXhlb1NlcnZpY2UubnV4ZW9DbGllbnQucmVwb3NpdG9yeSgpO1xyXG5cdFx0cmV0dXJuIGZyb20oKGhlYWRlcnMgPyByZXBvc2l0b3J5LmhlYWRlcnMoaGVhZGVycykgOiByZXBvc2l0b3J5KS5mZXRjaChwYXRoKSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZSBhcyBUUmVzcG9uc2UpLFxyXG5cdFx0XHR0aGlzLmNhdGNoRXJyb3JzKClcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRhc3luYyB0b2tlbigpIHtcclxuXHRcdHJldHVybiBhd2FpdCB0aGlzLiNudXhlb1NlcnZpY2UuZ2V0VG9rZW4oKTtcclxuXHR9XHJcblxyXG5cdGlzVXNlckluUm9sZShyb2xlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuI251eGVvU2VydmljZS5pc1VzZXJJblJvbGUocm9sZSk7XHJcblx0fVxyXG5cclxuXHRkb0xvZ291dCgpIHtcclxuXHRcdHRoaXMuI2NhY2hlQmFzZVNlcnZpY2UuY2xlYXJBbGwodGhpcy51c2VyTmFtZSk7XHJcblx0XHR0aGlzLiNudXhlb1NlcnZpY2UuZG9Mb2dvdXQoKTtcclxuXHR9XHJcblxyXG5cdGdldER1cGxpY2F0ZXMocGFyYW1zPzoge30sIGJvZHk/OiB7fSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy4jbnV4ZW9TZXJ2aWNlLmdldER1cGxpY2F0ZXMocGFyYW1zLCBib2R5KTtcclxuXHR9XHJcbn1cclxuIl19
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Jhc2UvYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBWXRELE1BQU0sT0FBZ0IsV0FBWSxTQUFRLGVBQWU7SUFnQnhELFlBQVksUUFBa0I7UUFDN0IsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBaEJqQiw0Q0FBNEI7UUFFNUIsZ0RBQW9DO1FBQ3BDLGlEQUE4QztRQWM3Qyx1QkFBQSxJQUFJLDZCQUFpQixRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFBLENBQUM7UUFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELHVCQUFBLElBQUksaUNBQXFCLFFB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QUFBLElBQUksaUNBQWMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Ozt5R0FyTm9CLFdBQVc7NkdBQVgsV0FBVyxjQURQLE1BQU07NEZBQ1YsV0FBVztrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvYWRhcHRlcnMvYWRhcHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FsbEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2NhbGxBcGkvY2FsbC1hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IE51eGVvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbnV4ZW8vbnV4ZW8uc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaXNFcnJvcnNNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvYXBpcy1lcnJvcnMtbWVzc2FnZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IENhY2hlQmFzZVNlcnZpY2UgfSBmcm9tICcuL2NhY2hlLWJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBCYXNlU2VydmljZSB9IGZyb20gJy4vaHR0cC1iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG5cdENhY2hlZEZ1bGxIdHRwT3B0aW9ucyxcclxuXHRDYWNoZWRGdWxsUXVlcnlPcHRpb25zLFxyXG5cdENhY2hlZEh0dHBPcHRpb25zLFxyXG5cdENhY2hlZFF1ZXJ5T3B0aW9ucyxcclxuXHRPcGVyYXRpb25PcHRpb25zLFxyXG5cdFF1ZXJ5T3B0aW9ucyxcclxuXHRSZXF1ZXN0T3B0aW9uc1xyXG59IGZyb20gJy4vbW9kZWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU2VydmljZSBleHRlbmRzIEh0dHBCYXNlU2VydmljZSB7XHJcblx0I251eGVvU2VydmljZTogTnV4ZW9TZXJ2aWNlO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBfY2FsbEFwaVNlcnZpY2U6IENhbGxBcGlTZXJ2aWNlO1xyXG5cdCNjYWNoZUJhc2VTZXJ2aWNlOiBDYWNoZUJhc2VTZXJ2aWNlO1xyXG5cdCNhcGlzRXJyb3JzU2VydmljZTogQXBpc0Vycm9yc01lc3NhZ2VzU2VydmljZTtcclxuXHRwcm90ZWN0ZWQgYWRhcHRlclNlcnZpY2U6IEFkYXB0ZXJTZXJ2aWNlO1xyXG5cdHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlO1xyXG5cclxuXHRnZXQgdXNlcigpIHtcclxuXHRcdHJldHVybiB0aGlzLiNudXhlb1NlcnZpY2UubnV4ZW9DbGllbnQ/LnVzZXI7XHJcblx0fVxyXG5cclxuXHRnZXQgdXNlck5hbWUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy4jbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50Py51c2VyPy5wcm9wZXJ0aWVzPy51c2VybmFtZTtcclxuXHR9XHJcblxyXG5cdGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG5cdFx0c3VwZXIoaW5qZWN0b3IpO1xyXG5cdFx0dGhpcy4jbnV4ZW9TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE51eGVvU2VydmljZSk7XHJcblx0XHR0aGlzLl9jYWxsQXBpU2VydmljZSA9IGluamVjdG9yLmdldChDYWxsQXBpU2VydmljZSk7XHJcblx0XHR0aGlzLiNjYWNoZUJhc2VTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KENhY2hlQmFzZVNlcnZpY2UpO1xyXG5cdFx0dGhpcy4jYXBpc0Vycm9yc1NlcnZpY2UgPSBpbmplY3Rvci5nZXQoQXBpc0Vycm9yc01lc3NhZ2VzU2VydmljZSk7XHJcblx0XHR0aGlzLmFkYXB0ZXJTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEFkYXB0ZXJTZXJ2aWNlKTtcclxuXHRcdHRoaXMudHJhbnNsYXRlU2VydmljZSA9IGluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuXHRcdHRoaXMuI2NhY2hlQmFzZVNlcnZpY2UudmFsaWRhdGVUVEwodGhpcy51c2VyTmFtZSk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgYXV0b21hdGlvbjxUUmVzcG9uc2UgPSB1bmtub3duPihcclxuXHRcdG9wZXJhdGlvbk9yT3B0aW9uczogc3RyaW5nIHwgT3BlcmF0aW9uT3B0aW9ucyxcclxuXHRcdGlucHV0OiBzdHJpbmcgPSB1bmRlZmluZWQsXHJcblx0XHRwYXJhbXMgPSB1bmRlZmluZWQsXHJcblx0XHRjb250ZXh0ID0gdW5kZWZpbmVkLFxyXG5cdFx0aGVhZGVycyA9IHVuZGVmaW5lZCxcclxuXHRcdGlzQ3VzdG9tQXV0b21hdGlvbiA9IGZhbHNlXHJcblx0KTogT2JzZXJ2YWJsZTxUUmVzcG9uc2U+IHtcclxuXHRcdGxldCBvcGVyYXRpb246IHN0cmluZztcclxuXHJcblx0XHRpZiAodHlwZW9mIG9wZXJhdGlvbk9yT3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0b3BlcmF0aW9uID0gb3BlcmF0aW9uT3JPcHRpb25zO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y29uc3Qgb3B0aW9ucyA9IG9wZXJhdGlvbk9yT3B0aW9ucyBhcyBPcGVyYXRpb25PcHRpb25zO1xyXG5cdFx0XHRvcGVyYXRpb24gPSBvcHRpb25zLm9wZXJhdGlvbjtcclxuXHRcdFx0aXNDdXN0b21BdXRvbWF0aW9uID0gb3B0aW9ucy5pc0N1c3RvbUF1dG9tYXRpb247XHJcblx0XHRcdGlucHV0ID0gb3B0aW9ucy5pbnB1dCA/PyB1bmRlZmluZWQ7XHJcblx0XHRcdHBhcmFtcyA9IG9wdGlvbnMucGFyYW1zID8/IHVuZGVmaW5lZDtcclxuXHRcdFx0Y29udGV4dCA9IG9wdGlvbnMuY29udGV4dCA/PyB1bmRlZmluZWQ7XHJcblx0XHRcdGhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgPz8gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBmcm9tKFxyXG5cdFx0XHR0aGlzLiNudXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuXHRcdFx0XHQub3BlcmF0aW9uKG9wZXJhdGlvbiwge1xyXG5cdFx0XHRcdFx0Li4uKGlzQ3VzdG9tQXV0b21hdGlvblxyXG5cdFx0XHRcdFx0XHQ/IHtcclxuXHRcdFx0XHRcdFx0XHR1cmw6IGAke3RoaXMuZW52aXJvbm1lbnQubnV4ZW99JHt0aGlzLmVudmlyb25tZW50LmN1c3RvbUF1dG9tYXRpb259YFxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDoge30pXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHQuaW5wdXQoaW5wdXQgPyBpbnB1dCA6IHVuZGVmaW5lZClcclxuXHRcdFx0XHQucGFyYW1zKHBhcmFtcyA/IHsgLi4ucGFyYW1zIH0gOiB1bmRlZmluZWQpXHJcblx0XHRcdFx0LmNvbnRleHQoY29udGV4dCA/IHsgLi4uY29udGV4dCB9IDogdW5kZWZpbmVkKVxyXG5cdFx0XHRcdC5leGVjdXRlKHsgaGVhZGVyczogaGVhZGVycyA/IHsgLi4uaGVhZGVycyB9IDogdW5kZWZpbmVkIH0pXHJcblx0XHQpLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UgYXMgVFJlc3BvbnNlKSxcclxuXHRcdFx0dGhpcy4jYXBpc0Vycm9yc1NlcnZpY2UuaGFuZGxlRXJyb3JNZXNzYWdlKClcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgY3VzdG9tQXV0b21hdGlvbjxUUmVzcG9uc2UgPSB1bmtub3duPihcclxuXHRcdG9wZXJhdGlvbk9yT3B0aW9uczogc3RyaW5nIHwgT3BlcmF0aW9uT3B0aW9ucyxcclxuXHRcdGlucHV0OiBzdHJpbmcgPSB1bmRlZmluZWQsXHJcblx0XHRwYXJhbXMgPSB1bmRlZmluZWQsXHJcblx0XHRjb250ZXh0ID0gdW5kZWZpbmVkLFxyXG5cdFx0aGVhZGVycyA9IHVuZGVmaW5lZFxyXG5cdCk6IE9ic2VydmFibGU8VFJlc3BvbnNlPiB7XHJcblx0XHRpZiAodHlwZW9mIG9wZXJhdGlvbk9yT3B0aW9ucyA9PSAnb2JqZWN0Jykge1xyXG5cdFx0XHRvcGVyYXRpb25Pck9wdGlvbnMuaXNDdXN0b21BdXRvbWF0aW9uID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLmF1dG9tYXRpb24ob3BlcmF0aW9uT3JPcHRpb25zLCBpbnB1dCwgcGFyYW1zLCBjb250ZXh0LCBoZWFkZXJzLCB0cnVlKTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCByZXF1ZXN0PFRSZXNwb25zZT4oXHJcblx0XHRlbmRwb2ludE9yT3B0aW9uczogc3RyaW5nIHwgUmVxdWVzdE9wdGlvbnMsXHJcblx0XHRxdWVyeVBhcmFtcyA9IHVuZGVmaW5lZCxcclxuXHRcdGhlYWRlcnMgPSB1bmRlZmluZWQsXHJcblx0XHRwYXlsb2FkID0gdW5kZWZpbmVkLFxyXG5cdFx0dHlwZSA9ICdnZXQnXHJcblx0KTogT2JzZXJ2YWJsZTxUUmVzcG9uc2U+IHtcclxuXHRcdGxldCBlbmRwb2ludDogc3RyaW5nO1xyXG5cclxuXHRcdGlmICh0eXBlb2YgZW5kcG9pbnRPck9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdGVuZHBvaW50ID0gZW5kcG9pbnRPck9wdGlvbnM7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjb25zdCBvcHRpb25zID0gZW5kcG9pbnRPck9wdGlvbnMgYXMgUmVxdWVzdE9wdGlvbnM7XHJcblx0XHRcdGVuZHBvaW50ID0gb3B0aW9ucy5lbmRwb2ludDtcclxuXHRcdFx0cXVlcnlQYXJhbXMgPSBvcHRpb25zLnF1ZXJ5UGFyYW1zID8/IHVuZGVmaW5lZDtcclxuXHRcdFx0dHlwZSA9IG9wdGlvbnMudHlwZSA/PyAnZ2V0JztcclxuXHRcdFx0aGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyA/PyB1bmRlZmluZWQ7XHJcblx0XHRcdHBheWxvYWQgPSBvcHRpb25zLnBheWxvYWQgPz8gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBmcm9tKFxyXG5cdFx0XHR0aGlzLiNudXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuXHRcdFx0XHQucmVxdWVzdChlbmRwb2ludClcclxuXHRcdFx0XHQucXVlcnlQYXJhbXMocXVlcnlQYXJhbXMgPyB7IC4uLnF1ZXJ5UGFyYW1zIH0gOiB1bmRlZmluZWQpXHJcblx0XHRcdFt0eXBlXSh7XHJcblx0XHRcdFx0aGVhZGVyczogaGVhZGVycyA/IHsgLi4uaGVhZGVycyB9IDogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdGJvZHk6IHBheWxvYWQgPyB7IC4uLnBheWxvYWQgfSA6IHVuZGVmaW5lZFxyXG5cdFx0XHR9KVxyXG5cdFx0KS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlIGFzIFRSZXNwb25zZSksXHJcblx0XHRcdHRoaXMuY2F0Y2hFcnJvcnMoKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBxdWVyeTxUUmVzcG9uc2U+KFxyXG5cdFx0cGFnZVByb3ZpZGVyT3JPcHRpb25zOiBzdHJpbmcgfCBRdWVyeU9wdGlvbnMsXHJcblx0XHRwYXJhbXMgPSB1bmRlZmluZWQsXHJcblx0XHRoZWFkZXJzID0gdW5kZWZpbmVkXHJcblx0KTogT2JzZXJ2YWJsZTxUUmVzcG9uc2U+IHtcclxuXHRcdGxldCBwYWdlUHJvdmlkZXI6IHN0cmluZztcclxuXHRcdGlmICh0eXBlb2YgcGFnZVByb3ZpZGVyT3JPcHRpb25zID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRwYWdlUHJvdmlkZXIgPSBwYWdlUHJvdmlkZXJPck9wdGlvbnM7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjb25zdCBvcHRpb25zID0gcGFnZVByb3ZpZGVyT3JPcHRpb25zIGFzIFF1ZXJ5T3B0aW9ucztcclxuXHRcdFx0cGFnZVByb3ZpZGVyID0gb3B0aW9ucy5wYWdlUHJvdmlkZXI7XHJcblx0XHRcdHBhcmFtcyA9IG9wdGlvbnMucGFyYW1zID8/IHVuZGVmaW5lZDtcclxuXHRcdFx0aGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyA/PyB1bmRlZmluZWQ7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMuX2NhbGxBcGlTZXJ2aWNlXHJcblx0XHRcdC5xdWVyeShcclxuXHRcdFx0XHR7XHJcblx0XHRcdFx0XHRwYWdlUHJvdmlkZXIsXHJcblx0XHRcdFx0XHQuLi4ocGFyYW1zID8gcGFyYW1zIDoge30pXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHR7XHJcblx0XHRcdFx0XHRoZWFkZXJzOiBoZWFkZXJzID8geyAuLi5oZWFkZXJzIH0gOiB1bmRlZmluZWRcclxuXHRcdFx0XHR9XHJcblx0XHRcdClcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZSBhcyBUUmVzcG9uc2UpLFxyXG5cdFx0XHRcdHRoaXMuY2F0Y2hFcnJvcnMoKVxyXG5cdFx0XHQpO1xyXG5cdH1cclxuXHRwcm90ZWN0ZWQgaGFzSXRlbUluQ2FjaGUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLiNjYWNoZUJhc2VTZXJ2aWNlLmhhc0l0ZW0oa2V5KTtcclxuXHR9XHJcblx0cHJvdGVjdGVkIHZhbGlkYXRlVFRMRm9yS2V5KGZpcnN0RmV0Y2hpbmdEYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLiNjYWNoZUJhc2VTZXJ2aWNlLnZhbGlkYXRlVFRMRm9yS2V5KGZpcnN0RmV0Y2hpbmdEYXRlKTtcclxuXHR9XHJcblx0cHJvdGVjdGVkIGNhY2hlZFF1ZXJ5PFRSZXNwb25zZT4ob3B0aW9uczogQ2FjaGVkUXVlcnlPcHRpb25zIHwgQ2FjaGVkRnVsbFF1ZXJ5T3B0aW9ucyk6IE9ic2VydmFibGU8VFJlc3BvbnNlPiB7XHJcblx0XHRjb25zdCByZXF1ZXN0ID0gKHBhcmFtcykgPT4ge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5xdWVyeSh7XHJcblx0XHRcdFx0cGFnZVByb3ZpZGVyOiBvcHRpb25zLnBhZ2VQcm92aWRlcixcclxuXHRcdFx0XHRwYXJhbXM6IHtcclxuXHRcdFx0XHRcdC4uLihvcHRpb25zLnBhcmFtcyA/IG9wdGlvbnMucGFyYW1zIDoge30pLFxyXG5cdFx0XHRcdFx0Li4uKHBhcmFtcyA/IHBhcmFtcyA6IHt9KVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0aGVhZGVyczogb3B0aW9ucy5oZWFkZXJzXHJcblx0XHRcdH0pO1xyXG5cdFx0fTtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy4jY2FjaGVCYXNlU2VydmljZS5zdGFydEZldGNoaW5nSXRlbXMoe1xyXG5cdFx0XHQuLi5vcHRpb25zLFxyXG5cdFx0XHR1c2VyTmFtZTogdGhpcy51c2VyTmFtZSxcclxuXHRcdFx0cmVxdWVzdDogcmVxdWVzdFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cdHByb3RlY3RlZCBjYWNoZWRHZXQ8VFJlc3BvbnNlPihvcHRpb25zOiBDYWNoZWRIdHRwT3B0aW9ucyB8IENhY2hlZEZ1bGxIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8VFJlc3BvbnNlPiB7XHJcblx0XHRjb25zdCByZXF1ZXN0ID0gKHBhcmFtcykgPT4ge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5nZXQoe1xyXG5cdFx0XHRcdGVuZHBvaW50OiBvcHRpb25zLmVuZHBvaW50LFxyXG5cdFx0XHRcdHBheWxvYWQ6IG9wdGlvbnMucGF5bG9hZCxcclxuXHRcdFx0XHRwYXJhbXM6IHtcclxuXHRcdFx0XHRcdC4uLihvcHRpb25zLnBhcmFtcyA/IG9wdGlvbnMucGFyYW1zIDoge30pLFxyXG5cdFx0XHRcdFx0Li4uKHBhcmFtcyA/IHBhcmFtcyA6IHt9KVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0aGVhZGVyczogb3B0aW9ucy5oZWFkZXJzLFxyXG5cdFx0XHRcdHJlc3BvbnNlVHlwZTogb3B0aW9ucy5yZXNwb25zZVR5cGVcclxuXHRcdFx0fSk7XHJcblx0XHR9O1xyXG5cclxuXHRcdHJldHVybiB0aGlzLiNjYWNoZUJhc2VTZXJ2aWNlLnN0YXJ0RmV0Y2hpbmdJdGVtcyh7XHJcblx0XHRcdC4uLm9wdGlvbnMsXHJcblx0XHRcdHVzZXJOYW1lOiB0aGlzLnVzZXJOYW1lLFxyXG5cdFx0XHRyZXF1ZXN0OiByZXF1ZXN0XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBmZXRjaDxUUmVzcG9uc2U+KHBhdGg6IHN0cmluZywgaGVhZGVycyA9IHVuZGVmaW5lZCk6IE9ic2VydmFibGU8VFJlc3BvbnNlPiB7XHJcblx0XHRjb25zdCByZXBvc2l0b3J5ID0gdGhpcy4jbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnJlcG9zaXRvcnkoKTtcclxuXHRcdHJldHVybiBmcm9tKChoZWFkZXJzID8gcmVwb3NpdG9yeS5oZWFkZXJzKGhlYWRlcnMpIDogcmVwb3NpdG9yeSkuZmV0Y2gocGF0aCkpLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UgYXMgVFJlc3BvbnNlKSxcclxuXHRcdFx0dGhpcy5jYXRjaEVycm9ycygpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgdG9rZW4oKSB7XHJcblx0XHRyZXR1cm4gYXdhaXQgdGhpcy4jbnV4ZW9TZXJ2aWNlLmdldFRva2VuKCk7XHJcblx0fVxyXG5cclxuXHRpc1VzZXJJblJvbGUocm9sZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLiNudXhlb1NlcnZpY2UuaXNVc2VySW5Sb2xlKHJvbGUpO1xyXG5cdH1cclxuXHJcblx0ZG9Mb2dvdXQoKSB7XHJcblx0XHR0aGlzLiNjYWNoZUJhc2VTZXJ2aWNlLmNsZWFyQWxsKHRoaXMudXNlck5hbWUpO1xyXG5cdFx0dGhpcy4jbnV4ZW9TZXJ2aWNlLmRvTG9nb3V0KCk7XHJcblx0fVxyXG5cclxuXHRnZXREdXBsaWNhdGVzKHBhcmFtcz86IHt9LCBib2R5Pzoge30pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuI251eGVvU2VydmljZS5nZXREdXBsaWNhdGVzKHBhcmFtcywgYm9keSk7XHJcblx0fVxyXG5cclxuXHJcbn1cclxuIl19
|