@sd-angular/core 0.0.903 → 0.0.907
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/sd-angular-core-grid-material.umd.js +196 -27
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +2 -2
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-tab-router.umd.js +33 -18
- package/bundles/sd-angular-core-tab-router.umd.js.map +1 -1
- package/bundles/sd-angular-core-tab-router.umd.min.js +2 -2
- package/bundles/sd-angular-core-tab-router.umd.min.js.map +1 -1
- package/esm2015/grid-material/sd-angular-core-grid-material.js +20 -18
- package/esm2015/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +2 -2
- package/esm2015/grid-material/src/lib/components/dynamic-column/dynamic-column.component.js +98 -0
- package/esm2015/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.js +23 -5
- package/esm2015/grid-material/src/lib/grid-material.component.js +1 -2
- package/esm2015/grid-material/src/lib/grid-material.module.js +8 -2
- package/esm2015/grid-material/src/lib/models/grid-config.model.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-badge.pipe.js +4 -1
- package/esm2015/grid-material/src/lib/pipes/column-transform.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/services/generated-column/generated-column.model.js +2 -0
- package/esm2015/grid-material/src/lib/services/generated-column/generated-column.service.js +57 -0
- package/esm2015/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.js +30 -24
- package/fesm2015/sd-angular-core-grid-material.js +172 -8
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-tab-router.js +20 -14
- package/fesm2015/sd-angular-core-tab-router.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.d.ts +19 -17
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/grid-material/src/lib/components/dynamic-column/dynamic-column.component.d.ts +32 -0
- package/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.d.ts +9 -0
- package/grid-material/src/lib/models/grid-config.model.d.ts +11 -0
- package/grid-material/src/lib/services/generated-column/generated-column.model.d.ts +8 -0
- package/grid-material/src/lib/services/generated-column/generated-column.service.d.ts +10 -0
- package/package.json +1 -1
- package/{sd-angular-core-0.0.903.tgz → sd-angular-core-0.0.907.tgz} +0 -0
- package/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.d.ts +7 -7
|
@@ -5,6 +5,9 @@ export class SdColumnBadgePipe {
|
|
|
5
5
|
if (column.type === 'string' && (column === null || column === void 0 ? void 0 : column.badge)) {
|
|
6
6
|
return column.badge(value, rowData);
|
|
7
7
|
}
|
|
8
|
+
if (column.type === 'bool' && (column === null || column === void 0 ? void 0 : column.badge)) {
|
|
9
|
+
return column.badge(value, rowData);
|
|
10
|
+
}
|
|
8
11
|
return null;
|
|
9
12
|
}
|
|
10
13
|
}
|
|
@@ -14,4 +17,4 @@ SdColumnBadgePipe.decorators = [
|
|
|
14
17
|
},] }
|
|
15
18
|
];
|
|
16
19
|
SdColumnBadgePipe.ctorParameters = () => [];
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWJhZGdlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvdXNlci9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLW1hdGVyaWFsLyIsInNvdXJjZXMiOlsic3JjL2xpYi9waXBlcy9jb2x1bW4tYmFkZ2UucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUtwRCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLGdCQUFnQixDQUFDO0lBQ2pCLFNBQVMsQ0FBQyxLQUFVLEVBQUUsT0FBWSxFQUFFLE1BQTRCO1FBQzlELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEtBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQSxFQUFFO1lBQzdDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDckM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxLQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxLQUFLLENBQUEsRUFBRTtZQUMzQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7WUFiRixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLGFBQWE7YUFDcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkR3JpZE1hdGVyaWFsQ29sdW1uIH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQtY29sdW1uLm1vZGVsJztcclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdjb2x1bW5CYWRnZSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkQ29sdW1uQmFkZ2VQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgcm93RGF0YTogYW55LCBjb2x1bW46IFNkR3JpZE1hdGVyaWFsQ29sdW1uKTogc3RyaW5nIHtcclxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ3N0cmluZycgJiYgY29sdW1uPy5iYWRnZSkge1xyXG4gICAgICByZXR1cm4gY29sdW1uLmJhZGdlKHZhbHVlLCByb3dEYXRhKTtcclxuICAgIH1cclxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnICYmIGNvbHVtbj8uYmFkZ2UpIHtcclxuICAgICAgcmV0dXJuIGNvbHVtbi5iYWRnZSh2YWx1ZSwgcm93RGF0YSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -26,4 +26,4 @@ SdColumnTransformPipe.decorators = [
|
|
|
26
26
|
SdColumnTransformPipe.ctorParameters = () => [
|
|
27
27
|
{ type: DecimalPipe }
|
|
28
28
|
];
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXRyYW5zZm9ybS5waXBlLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvcGlwZXMvY29sdW1uLXRyYW5zZm9ybS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUtwRCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUksQ0FBQztJQUNqRCxTQUFTLENBQUMsS0FBVSxFQUFFLE9BQVksRUFBRSxNQUE0Qjs7UUFDOUQsSUFBSSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsU0FBUyxFQUFFO1lBQ3JCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDekM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEQsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsOENBQThDO1NBQ2xGO1FBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUMxQixPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBQSxNQUFNLENBQUMsTUFBTSwwQ0FBRSxhQUFhLEtBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBQSxNQUFNLENBQUMsTUFBTSwwQ0FBRSxhQUFhLEtBQUksT0FBTyxDQUFDLENBQUM7U0FDOUc7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OztZQWhCRixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLGlCQUFpQjthQUN4Qjs7O1lBTFEsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbENvbHVtbiB9IGZyb20gJy4uL21vZGVscy9ncmlkLWNvbHVtbi5tb2RlbCc7XHJcbkBQaXBlKHtcclxuICBuYW1lOiAnY29sdW1uVHJhbnNmb3JtJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RDb2x1bW5UcmFuc2Zvcm1QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUpIHsgfVxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCByb3dEYXRhOiBhbnksIGNvbHVtbjogU2RHcmlkTWF0ZXJpYWxDb2x1bW4pOiBzdHJpbmcge1xyXG4gICAgaWYgKGNvbHVtbj8udHJhbnNmb3JtKSB7XHJcbiAgICAgIHJldHVybiBjb2x1bW4udHJhbnNmb3JtKHZhbHVlLCByb3dEYXRhKTtcclxuICAgIH1cclxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzTnVtYmVyKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gTnVtYmVyLnRvVk5DdXJyZW5jeSh2YWx1ZSk7IC8vIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHZhbHVlLCAnMS4wLTInKTtcclxuICAgIH1cclxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSA/IChjb2x1bW4ub3B0aW9uPy5kaXNwbGF5T25UcnVlIHx8ICdUcnVlJykgOiAoY29sdW1uLm9wdGlvbj8uZGlzcGxheU9uVHJ1ZSB8fCAnRmFsc2UnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVkLWNvbHVtbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy91c2VyL0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2dyaWQtbWF0ZXJpYWwvIiwic291cmNlcyI6WyJzcmMvbGliL3NlcnZpY2VzL2dlbmVyYXRlZC1jb2x1bW4vZ2VuZXJhdGVkLWNvbHVtbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1jb2x1bW4ubW9kZWwnO1xyXG5cclxuLy8gZXhwb3J0IGNsYXNzIFNkR2VuZXJhdGVkQ29sdW1uPFQgPSBhbnk+IGV4dGVuZHMgU2RHcmlkTWF0ZXJpYWxDb2x1bW48VD4ge1xyXG4vLyAgIHRpdGxlPzogc3RyaW5nO1xyXG4vLyAgIHdpZHRoPzogc3RyaW5nO1xyXG4vLyAgIHR5cGU/OiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2Jvb2wnIHwgJ2RhdGUnIHwgJ2RhdGV0aW1lJyB8ICdpbWFnZScgfCAnJ1xyXG4vLyAgIGludmlzaWJsZT86IHN0cmluZztcclxuLy8gICBmaXhlZD86IHN0cmluZztcclxuLy8gICBodG1sVGVtcGxhdGU/OiBzdHJpbmc7XHJcbi8vICAgZmllbGRzPzogc3RyaW5nW107XHJcbi8vIH1cclxuXHJcbmV4cG9ydCB0eXBlIFNkR2VuZXJhdGVkQ29sdW1uPFQgPSBhbnk+ID0gU2RHcmlkTWF0ZXJpYWxDb2x1bW48VD4gJiB7XHJcbiAgaWQ/OiBzdHJpbmc7XHJcbiAgaXNTeXN0ZW0/OiBib29sZWFuO1xyXG4gIHVzZVRlbXBsYXRlPzogYm9vbGVhbjtcclxuICB0ZW1wbGF0ZT86IHN0cmluZztcclxuICBmaWVsZHM/OiBzdHJpbmdbXTtcclxufTtcclxuIl19
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
var _cache;
|
|
2
|
+
import { __classPrivateFieldGet } from "tslib";
|
|
3
|
+
import { Injectable } from '@angular/core';
|
|
4
|
+
import hash from 'object-hash';
|
|
5
|
+
import { SdSettingService } from '@sd-angular/core/setting';
|
|
6
|
+
export class SdGeneratedColumnService {
|
|
7
|
+
constructor(settingService) {
|
|
8
|
+
this.settingService = settingService;
|
|
9
|
+
_cache.set(this, {});
|
|
10
|
+
this.load = (configuration) => {
|
|
11
|
+
if (!(configuration === null || configuration === void 0 ? void 0 : configuration.key)) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const key = hash({
|
|
15
|
+
prefix: '260f5e94-5865-4425-8ced-b9c083c390dd',
|
|
16
|
+
key: configuration.key
|
|
17
|
+
});
|
|
18
|
+
if (!__classPrivateFieldGet(this, _cache)[key]) {
|
|
19
|
+
__classPrivateFieldGet(this, _cache)[key] = this.settingService.create(key, {
|
|
20
|
+
type: configuration === null || configuration === void 0 ? void 0 : configuration.storage,
|
|
21
|
+
args: configuration === null || configuration === void 0 ? void 0 : configuration.args,
|
|
22
|
+
default: []
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return __classPrivateFieldGet(this, _cache)[key];
|
|
26
|
+
};
|
|
27
|
+
this.loadSystem = (configuration) => {
|
|
28
|
+
var _a;
|
|
29
|
+
if (!(configuration === null || configuration === void 0 ? void 0 : configuration.key)) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
if (!(configuration === null || configuration === void 0 ? void 0 : configuration.systemColumn)) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const key = hash({
|
|
36
|
+
prefix: '8b8050ca-1f44-4860-bad3-20e646c0d68f',
|
|
37
|
+
key: configuration.key
|
|
38
|
+
});
|
|
39
|
+
if (!__classPrivateFieldGet(this, _cache)[key]) {
|
|
40
|
+
__classPrivateFieldGet(this, _cache)[key] = this.settingService.create(key, {
|
|
41
|
+
type: 'server',
|
|
42
|
+
args: (_a = configuration === null || configuration === void 0 ? void 0 : configuration.systemColumn) === null || _a === void 0 ? void 0 : _a.args,
|
|
43
|
+
default: []
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return __classPrivateFieldGet(this, _cache)[key];
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
_cache = new WeakMap();
|
|
51
|
+
SdGeneratedColumnService.decorators = [
|
|
52
|
+
{ type: Injectable }
|
|
53
|
+
];
|
|
54
|
+
SdGeneratedColumnService.ctorParameters = () => [
|
|
55
|
+
{ type: SdSettingService }
|
|
56
|
+
];
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVkLWNvbHVtbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvc2VydmljZXMvZ2VuZXJhdGVkLWNvbHVtbi9nZW5lcmF0ZWQtY29sdW1uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQVUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUMvQixPQUFPLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUt2RSxNQUFNLE9BQU8sd0JBQXdCO0lBSW5DLFlBQ1UsY0FBZ0M7UUFBaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBSjFDLGlCQUVJLEVBQUUsRUFBQztRQUtQLFNBQUksR0FBRyxDQUFDLGFBQXlDLEVBQUUsRUFBRTtZQUNuRCxJQUFJLEVBQUMsYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLEdBQUcsQ0FBQSxFQUFFO2dCQUN2QixPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDO2dCQUNmLE1BQU0sRUFBRSxzQ0FBc0M7Z0JBQzlDLEdBQUcsRUFBRSxhQUFhLENBQUMsR0FBRzthQUN2QixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMscUNBQVksR0FBRyxDQUFDLEVBQUU7Z0JBQ3JCLHFDQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFzQixHQUFHLEVBQUU7b0JBQ3RFLElBQUksRUFBRSxhQUFhLGFBQWIsYUFBYSx1QkFBYixhQUFhLENBQUUsT0FBTztvQkFDNUIsSUFBSSxFQUFFLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxJQUFJO29CQUN6QixPQUFPLEVBQUUsRUFBRTtpQkFDWixDQUFDLENBQUM7YUFDSjtZQUNELE9BQU8scUNBQVksR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFBO1FBRUQsZUFBVSxHQUFHLENBQUMsYUFBeUMsRUFBRSxFQUFFOztZQUN6RCxJQUFJLEVBQUMsYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLEdBQUcsQ0FBQSxFQUFFO2dCQUN2QixPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsSUFBSSxFQUFDLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxZQUFZLENBQUEsRUFBRTtnQkFDaEMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQztnQkFDZixNQUFNLEVBQUUsc0NBQXNDO2dCQUM5QyxHQUFHLEVBQUUsYUFBYSxDQUFDLEdBQUc7YUFDdkIsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLHFDQUFZLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQixxQ0FBWSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBc0IsR0FBRyxFQUFFO29CQUN0RSxJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLFFBQUUsYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLFlBQVksMENBQUUsSUFBSTtvQkFDdkMsT0FBTyxFQUFFLEVBQUU7aUJBQ1osQ0FBQyxDQUFDO2FBQ0o7WUFDRCxPQUFPLHFDQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQTtJQXpDRCxDQUFDOzs7O1lBUEYsVUFBVTs7O1lBSlMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgaGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XHJcbmltcG9ydCB7IFNkU2V0dGluZywgU2RTZXR0aW5nU2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvc2V0dGluZyc7XHJcbmltcG9ydCB7IFNkR3JpZE1hdGVyaWFsQ29uZmlnT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgU2RHZW5lcmF0ZWRDb2x1bW4gfSBmcm9tICcuL2dlbmVyYXRlZC1jb2x1bW4ubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2RHZW5lcmF0ZWRDb2x1bW5TZXJ2aWNlIHtcclxuICAjY2FjaGU6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IFNkU2V0dGluZzxTZEdlbmVyYXRlZENvbHVtbltdPlxyXG4gIH0gPSB7fTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2V0dGluZ1NlcnZpY2U6IFNkU2V0dGluZ1NlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGxvYWQgPSAoY29uZmlndXJhdGlvbjogU2RHcmlkTWF0ZXJpYWxDb25maWdPcHRpb24pID0+IHtcclxuICAgIGlmICghY29uZmlndXJhdGlvbj8ua2V5KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3Qga2V5ID0gaGFzaCh7XHJcbiAgICAgIHByZWZpeDogJzI2MGY1ZTk0LTU4NjUtNDQyNS04Y2VkLWI5YzA4M2MzOTBkZCcsXHJcbiAgICAgIGtleTogY29uZmlndXJhdGlvbi5rZXlcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGhpcy4jY2FjaGVba2V5XSkge1xyXG4gICAgICB0aGlzLiNjYWNoZVtrZXldID0gdGhpcy5zZXR0aW5nU2VydmljZS5jcmVhdGU8U2RHZW5lcmF0ZWRDb2x1bW5bXT4oa2V5LCB7XHJcbiAgICAgICAgdHlwZTogY29uZmlndXJhdGlvbj8uc3RvcmFnZSxcclxuICAgICAgICBhcmdzOiBjb25maWd1cmF0aW9uPy5hcmdzLFxyXG4gICAgICAgIGRlZmF1bHQ6IFtdXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuI2NhY2hlW2tleV07XHJcbiAgfVxyXG5cclxuICBsb2FkU3lzdGVtID0gKGNvbmZpZ3VyYXRpb246IFNkR3JpZE1hdGVyaWFsQ29uZmlnT3B0aW9uKSA9PiB7XHJcbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24/LmtleSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICghY29uZmlndXJhdGlvbj8uc3lzdGVtQ29sdW1uKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3Qga2V5ID0gaGFzaCh7XHJcbiAgICAgIHByZWZpeDogJzhiODA1MGNhLTFmNDQtNDg2MC1iYWQzLTIwZTY0NmMwZDY4ZicsXHJcbiAgICAgIGtleTogY29uZmlndXJhdGlvbi5rZXlcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGhpcy4jY2FjaGVba2V5XSkge1xyXG4gICAgICB0aGlzLiNjYWNoZVtrZXldID0gdGhpcy5zZXR0aW5nU2VydmljZS5jcmVhdGU8U2RHZW5lcmF0ZWRDb2x1bW5bXT4oa2V5LCB7XHJcbiAgICAgICAgdHlwZTogJ3NlcnZlcicsXHJcbiAgICAgICAgYXJnczogY29uZmlndXJhdGlvbj8uc3lzdGVtQ29sdW1uPy5hcmdzLFxyXG4gICAgICAgIGRlZmF1bHQ6IFtdXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuI2NhY2hlW2tleV07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
package/esm2015/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
var _rootRoute, _subscription, _firstLoad, _closeTab, _activeRoute, _getActivatedRouteSnapshot, _getActivatedRoute;
|
|
2
2
|
import { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
-
import { ChangeDetectorRef, Compiler, Component, Injector, ViewChild, } from
|
|
4
|
-
import { ActivatedRoute, NavigationEnd, Router, RoutesRecognized, } from
|
|
5
|
-
import { SdNotifyService } from
|
|
6
|
-
import { SdTabActivated, SdTabDeactivated, } from
|
|
7
|
-
import { SdTabRouterService } from
|
|
8
|
-
import { Subscription } from
|
|
9
|
-
import { SdTabDecoratorService } from
|
|
10
|
-
import { filter } from
|
|
11
|
-
import * as hash from
|
|
3
|
+
import { ChangeDetectorRef, Compiler, Component, Injector, ViewChild, } from '@angular/core';
|
|
4
|
+
import { ActivatedRoute, NavigationEnd, Router, RoutesRecognized, } from '@angular/router';
|
|
5
|
+
import { SdNotifyService } from '@sd-angular/core/notify';
|
|
6
|
+
import { SdTabActivated, SdTabDeactivated, } from '../../events/tab-router.event';
|
|
7
|
+
import { SdTabRouterService } from '../../services/tab-router.service';
|
|
8
|
+
import { Subscription } from 'rxjs';
|
|
9
|
+
import { SdTabDecoratorService } from '../../services/tab-decorator.service';
|
|
10
|
+
import { filter } from 'rxjs/operators';
|
|
11
|
+
import * as hash from 'object-hash';
|
|
12
12
|
export class SdTabRouterOutletComponent {
|
|
13
13
|
constructor(router, activatedRoute, cd, injector, compiler, tabDecoratorService, tabRouterService, sdNotifyService) {
|
|
14
14
|
this.router = router;
|
|
@@ -25,19 +25,24 @@ export class SdTabRouterOutletComponent {
|
|
|
25
25
|
_firstLoad.set(this, true);
|
|
26
26
|
_closeTab.set(this, (tab) => {
|
|
27
27
|
var _a;
|
|
28
|
-
|
|
29
|
-
if (
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
const { isActive, key: activeKey } = tab;
|
|
29
|
+
if (isActive) {
|
|
30
|
+
const activeIndex = this.tabs.findIndex(({ key }) => key === activeKey);
|
|
31
|
+
const nextTab = this.tabs[activeIndex + 1] || this.tabs[activeIndex - 1];
|
|
32
|
+
if (nextTab) {
|
|
33
|
+
const { url: nextUrl } = nextTab;
|
|
34
|
+
const nextQueryParams = Object.assign({}, (nextTab.queryParams || {}));
|
|
35
|
+
this.tabs = this.tabs.filter(({ key }) => key !== activeKey);
|
|
36
|
+
this.router.navigate([nextUrl], {
|
|
37
|
+
queryParams: nextQueryParams,
|
|
34
38
|
state: {
|
|
35
39
|
switchTab: true,
|
|
36
40
|
},
|
|
37
41
|
});
|
|
38
42
|
}
|
|
39
43
|
else {
|
|
40
|
-
this.
|
|
44
|
+
this.tabs = this.tabs.filter(({ key }) => key !== activeKey);
|
|
45
|
+
this.router.navigateByUrl('/', {
|
|
41
46
|
state: {
|
|
42
47
|
switchTab: true,
|
|
43
48
|
},
|
|
@@ -45,6 +50,7 @@ export class SdTabRouterOutletComponent {
|
|
|
45
50
|
}
|
|
46
51
|
}
|
|
47
52
|
else {
|
|
53
|
+
this.tabs = this.tabs.filter(({ key }) => key !== tab.key);
|
|
48
54
|
(_a = this.tabRouterNav) === null || _a === void 0 ? void 0 : _a.checkUI();
|
|
49
55
|
this.cd.markForCheck();
|
|
50
56
|
}
|
|
@@ -57,8 +63,8 @@ export class SdTabRouterOutletComponent {
|
|
|
57
63
|
const component = route.component;
|
|
58
64
|
const queryParams = Object.assign({}, (route.queryParams || {}));
|
|
59
65
|
const params = Object.assign({}, (route.params || {}));
|
|
60
|
-
const
|
|
61
|
-
const
|
|
66
|
+
const [url] = fullUrl.split('?');
|
|
67
|
+
const key = hash({ url, queryParams });
|
|
62
68
|
let existedIndex = -1;
|
|
63
69
|
this.tabs.forEach((tab, index) => {
|
|
64
70
|
if (tab.key === key) {
|
|
@@ -79,7 +85,7 @@ export class SdTabRouterOutletComponent {
|
|
|
79
85
|
this.tabRouterService.pushEvent(existedTab, SdTabActivated);
|
|
80
86
|
}
|
|
81
87
|
else {
|
|
82
|
-
if (typeof ((_d = (_c = route === null || route === void 0 ? void 0 : route.parent) === null || _c === void 0 ? void 0 : _c.routeConfig) === null || _d === void 0 ? void 0 : _d.loadChildren) ===
|
|
88
|
+
if (typeof ((_d = (_c = route === null || route === void 0 ? void 0 : route.parent) === null || _c === void 0 ? void 0 : _c.routeConfig) === null || _d === void 0 ? void 0 : _d.loadChildren) === 'function') {
|
|
83
89
|
const module = yield route.parent.routeConfig.loadChildren();
|
|
84
90
|
const factory = yield this.compiler.compileModuleAsync(module);
|
|
85
91
|
const injector = factory.create(this.injector);
|
|
@@ -104,7 +110,7 @@ export class SdTabRouterOutletComponent {
|
|
|
104
110
|
}
|
|
105
111
|
(_g = this.tabRouterNav) === null || _g === void 0 ? void 0 : _g.checkUI();
|
|
106
112
|
if (this.tabs.length > 10) {
|
|
107
|
-
this.sdNotifyService.notify.warning(
|
|
113
|
+
this.sdNotifyService.notify.warning('Bạn đã mở quá nhiều tab. Vui lòng tắt các tab không dùng để hệ thống hoạt động tốt hơn.');
|
|
108
114
|
}
|
|
109
115
|
if (this.tabs.length > 12) {
|
|
110
116
|
this.tabs.splice(0, this.tabs.length - 10);
|
|
@@ -154,7 +160,7 @@ export class SdTabRouterOutletComponent {
|
|
|
154
160
|
}
|
|
155
161
|
})));
|
|
156
162
|
__classPrivateFieldGet(this, _subscription).add(tabRouterService.actions.subscribe((event) => {
|
|
157
|
-
if (event && event.type ===
|
|
163
|
+
if (event && event.type === 'close') {
|
|
158
164
|
__classPrivateFieldGet(this, _closeTab).call(this, event.tab);
|
|
159
165
|
}
|
|
160
166
|
}));
|
|
@@ -166,7 +172,7 @@ export class SdTabRouterOutletComponent {
|
|
|
166
172
|
_rootRoute = new WeakMap(), _subscription = new WeakMap(), _firstLoad = new WeakMap(), _closeTab = new WeakMap(), _activeRoute = new WeakMap(), _getActivatedRouteSnapshot = new WeakMap(), _getActivatedRoute = new WeakMap();
|
|
167
173
|
SdTabRouterOutletComponent.decorators = [
|
|
168
174
|
{ type: Component, args: [{
|
|
169
|
-
selector:
|
|
175
|
+
selector: 'sd-tab-router-outlet',
|
|
170
176
|
template: "<sd-tab-router-nav [tabs]=\"tabs\" #tabRouterNav></sd-tab-router-nav>\r\n\r\n<div class=\"tab-router__list\">\r\n <ng-container *ngFor=\"let tab of tabs\">\r\n <div class=\"tab-router__pane\" [class.active]=\"tab.isActive\" [id]=\"tab.key\">\r\n <div class=\"tab-router__content\">\r\n <ng-container\r\n *ngComponentOutlet=\"tab.component; injector: tab.injector\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n",
|
|
171
177
|
styles: [":host{display:flex;flex-direction:column;height:calc(100vh - 64px);width:100%}::ng-deep page-layout{height:100%!important}.tab-router__list{flex:1}.tab-router__pane{display:none;height:100%;position:relative;width:100%}.tab-router__pane.active{display:block}.tab-router__content{bottom:0;height:100%;left:0;overflow:auto;position:absolute;right:0;top:0;width:100%}"]
|
|
172
178
|
},] }
|
|
@@ -182,7 +188,7 @@ SdTabRouterOutletComponent.ctorParameters = () => [
|
|
|
182
188
|
{ type: SdNotifyService }
|
|
183
189
|
];
|
|
184
190
|
SdTabRouterOutletComponent.propDecorators = {
|
|
185
|
-
tabRouterNav: [{ type: ViewChild, args: [
|
|
191
|
+
tabRouterNav: [{ type: ViewChild, args: ['tabRouterNav',] }]
|
|
186
192
|
};
|
|
187
193
|
class SdOutletInjector {
|
|
188
194
|
constructor(route,
|
|
@@ -201,4 +207,4 @@ class SdOutletInjector {
|
|
|
201
207
|
return this.parent.get(token, notFoundValue);
|
|
202
208
|
}
|
|
203
209
|
}
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFiLXJvdXRlci8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy90YWItcm91dGVyLW91dGxldC90YWItcm91dGVyLW91dGxldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixTQUFTLEVBQ1QsUUFBUSxFQUtSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsY0FBYyxFQUtkLGFBQWEsRUFFYixNQUFNLEVBQ04sZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEdBQ2pCLE1BQU0sK0JBQStCLENBQUM7QUFJdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUM7QUFRcEMsTUFBTSxPQUFPLDBCQUEwQjtJQU9yQyxZQUNVLE1BQWMsRUFDZCxjQUE4QixFQUM5QixFQUFxQixFQUNyQixRQUFrQixFQUNsQixRQUFrQixFQUNsQixtQkFBMEMsRUFDMUMsZ0JBQW9DLEVBQ3BDLGVBQWdDO1FBUGhDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsT0FBRSxHQUFG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QUM7U0FDbkI7UUFFRCwwQ0FBMEM7UUFDMUMsK0JBQStCO1FBQy9CLElBQUk7UUFFSixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBpbGVyLFxyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3RvcixcclxuICBOZ01vZHVsZVJlZixcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFR5cGUsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGUsXHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBDaGlsZHJlbk91dGxldENvbnRleHRzLFxyXG4gIC8vIENoaWxkcmVuT3V0bGV0Q29udGV4dHMsXHJcbiAgRXZlbnQsXHJcbiAgTmF2aWdhdGlvbkVuZCxcclxuICBQUklNQVJZX09VVExFVCxcclxuICBSb3V0ZXIsXHJcbiAgUm91dGVzUmVjb2duaXplZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IFNkTm90aWZ5U2VydmljZSB9IGZyb20gXCJAc2QtYW5ndWxhci9jb3JlL25vdGlmeVwiO1xyXG5pbXBvcnQge1xyXG4gIFNkVGFiQWN0aXZhdGVkLFxyXG4gIFNkVGFiRGVhY3RpdmF0ZWQsXHJcbn0gZnJvbSBcIi4uLy4uL2V2ZW50cy90YWItcm91dGVyLmV2ZW50XCI7XHJcblxyXG5pbXBvcnQgeyBTZFRhYiB9IGZyb20gXCIuLi8uLi9tb2RlbHMvdGFiLXJvdXRlci5tb2RlbFwiO1xyXG5pbXBvcnQgeyBTZFRhYkFjdGlvbiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zL3RhYi1yb3V0ZXIuYWN0aW9uXCI7XHJcbmltcG9ydCB7IFNkVGFiUm91dGVyU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90YWItcm91dGVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2RUYWJSb3V0ZXJOYXZDb21wb25lbnQgfSBmcm9tIFwiLi4vdGFiLXJvdXRlci1uYXYvdGFiLXJvdXRlci1uYXYuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFNkVGFiRGVjb3JhdG9yU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90YWItZGVjb3JhdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCAqIGFzIGhhc2ggZnJvbSBcIm9iamVjdC1oYXNoXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJzZC10YWItcm91dGVyLW91dGxldFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGFiLXJvdXRlci1vdXRsZXQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vdGFiLXJvdXRlci1vdXRsZXQuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgLy8gY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFRhYlJvdXRlck91dGxldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZChcInRhYlJvdXRlck5hdlwiKSB0YWJSb3V0ZXJOYXY6IFNkVGFiUm91dGVyTmF2Q29tcG9uZW50O1xyXG4gIHRhYnM6IFNkVGFiW10gPSBbXTtcclxuXHJcbiAgI3Jvb3RSb3V0ZTogQWN0aXZhdGVkUm91dGU7XHJcbiAgI3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAjZmlyc3RMb2FkID0gdHJ1ZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIGNvbXBpbGVyOiBDb21waWxlcixcclxuICAgIHByaXZhdGUgdGFiRGVjb3JhdG9yU2VydmljZTogU2RUYWJEZWNvcmF0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0YWJSb3V0ZXJTZXJ2aWNlOiBTZFRhYlJvdXRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNkTm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICByb3V0ZXIuZXZlbnRzXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICAgIChldmVudCkgPT5cclxuICAgICAgICAgICAgICBldmVudCBpbnN0YW5jZW9mIFJvdXRlc1JlY29nbml6ZWQgfHxcclxuICAgICAgICAgICAgICBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmRcclxuICAgICAgICAgIClcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZShhc3luYyAoZXZlbnQ6IFJvdXRlc1JlY29nbml6ZWQgfCBOYXZpZ2F0aW9uRW5kKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy4jZmlyc3RMb2FkICYmIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICB0aGlzLiNmaXJzdExvYWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLiNnZXRBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KFxyXG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3RcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy4jcm9vdFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUucm9vdDtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy4jYWN0aXZlUm91dGUoXHJcbiAgICAgICAgICAgICAgZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMgfHwgZXZlbnQudXJsLFxyXG4gICAgICAgICAgICAgIHJvdXRlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghdGhpcy4jZmlyc3RMb2FkICYmIGV2ZW50IGluc3RhbmNlb2YgUm91dGVzUmVjb2duaXplZCkge1xyXG4gICAgICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMuI2dldEFjdGl2YXRlZFJvdXRlU25hcHNob3QoZXZlbnQuc3RhdGUucm9vdCk7XHJcbiAgICAgICAgICAgIHRoaXMuI3Jvb3RSb3V0ZSA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnJvb3Q7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuI2FjdGl2ZVJvdXRlKFxyXG4gICAgICAgICAgICAgIGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzIHx8IGV2ZW50LnVybCxcclxuICAgICAgICAgICAgICByb3V0ZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRhYlJvdXRlclNlcnZpY2UuYWN0aW9ucy5zdWJzY3JpYmUoKGV2ZW50OiBTZFRhYkFjdGlvbiB8IG51bGwpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudHlwZSA9PT0gXCJjbG9zZVwiKSB7XHJcbiAgICAgICAgICB0aGlzLiNjbG9zZVRhYihldmVudC50YWIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgI2Nsb3NlVGFiID0gKHRhYjogU2RUYWIpID0+IHtcclxuICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIoKHsga2V5IH0pID0+IGtleSAhPT0gdGFiLmtleSk7XHJcbiAgICBpZiAodGFiLmlzQWN0aXZlKSB7XHJcbiAgICAgIGNvbnN0IGxhc3RUYWIgPSB0aGlzLnRhYnNbdGhpcy50YWJzLmxlbmd0aCAtIDFdO1xyXG4gICAgICBpZiAobGFzdFRhYikge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobGFzdFRhYi51cmwsIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBsYXN0VGFiLnF1ZXJ5UGFyYW1zIHx8IHt9LFxyXG4gICAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgICAgc3dpdGNoVGFiOiB0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiL1wiLCB7XHJcbiAgICAgICAgICBzdGF0ZToge1xyXG4gICAgICAgICAgICBzd2l0Y2hUYWI6IHRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRhYlJvdXRlck5hdj8uY2hlY2tVSSgpO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNhY3RpdmVSb3V0ZSA9IGFzeW5jIChcclxuICAgIGZ1bGxVcmw6IHN0cmluZyxcclxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbFxyXG4gICkgPT4ge1xyXG4gICAgaWYgKCFyb3V0ZT8uY29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHJvdXRlLmNvbXBvbmVudCBhcyBUeXBlPGFueT47XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHtcclxuICAgICAgLi4uKHJvdXRlLnF1ZXJ5UGFyYW1zIHx8IHt9KSxcclxuICAgIH07XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIC4uLihyb3V0ZS5wYXJhbXMgfHwge30pLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGtleSA9IGhhc2goeyB1cmw6IGZ1bGxVcmwgfSk7XHJcbiAgICBjb25zdCBbdXJsXSA9IGZ1bGxVcmwuc3BsaXQoXCI/XCIpO1xyXG5cclxuICAgIGxldCBleGlzdGVkSW5kZXggPSAtMTtcclxuICAgIHRoaXMudGFicy5mb3JFYWNoKCh0YWI6IFNkVGFiLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmICh0YWIua2V5ID09PSBrZXkpIHtcclxuICAgICAgICB0YWIuaXNBY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGV4aXN0ZWRJbmRleCA9IGluZGV4O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0YWIuaXNBY3RpdmUpIHtcclxuICAgICAgICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5wdXNoRXZlbnQodGFiLCBTZFRhYkRlYWN0aXZhdGVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGFiLmlzQWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnROYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcclxuICAgIGlmIChleGlzdGVkSW5kZXggPj0gMCAmJiBjdXJyZW50TmF2aWdhdGlvbj8uZXh0cmFzPy5zdGF0ZT8uc3dpdGNoVGFiKSB7XHJcbiAgICAgIGNvbnN0IGV4aXN0ZWRUYWIgPSB0aGlzLnRhYnNbZXhpc3RlZEluZGV4XTtcclxuICAgICAgdGhpcy50YWJSb3V0ZXJTZXJ2aWNlLnNldEN1cnJlbnRUYWIoZXhpc3RlZFRhYik7XHJcbiAgICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5wdXNoRXZlbnQoZXhpc3RlZFRhYiwgU2RUYWJBY3RpdmF0ZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHR5cGVvZiByb3V0ZT8ucGFyZW50Py5yb3V0ZUNvbmZpZz8ubG9hZENoaWxkcmVuID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBjb25zdCBtb2R1bGUgPSBhd2FpdCByb3V0ZS5wYXJlbnQucm91dGVDb25maWcubG9hZENoaWxkcmVuKCk7XHJcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IGF3YWl0IHRoaXMuY29tcGlsZXIuY29tcGlsZU1vZHVsZUFzeW5jKG1vZHVsZSk7XHJcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBmYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcclxuICAgICAgICBjb25zdCBhY3RpdmF0ZWRSb3V0ZSA9IHRoaXMuI2dldEFjdGl2YXRlZFJvdXRlKFxyXG4gICAgICAgICAgdGhpcy4jcm9vdFJvdXRlLFxyXG4gICAgICAgICAgY29tcG9uZW50XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgY29uc3QgdGFiID0ge1xyXG4gICAgICAgICAga2V5LFxyXG4gICAgICAgICAgY29tcG9uZW50LFxyXG4gICAgICAgICAgaW5qZWN0b3I6IG5ldyBTZE91dGxldEluamVjdG9yKGFjdGl2YXRlZFJvdXRlLCBpbmplY3RvciksXHJcbiAgICAgICAgICBpc0FjdGl2ZTogdHJ1ZSxcclxuICAgICAgICAgIG5hbWU6IHVybCxcclxuICAgICAgICAgIHVybCxcclxuICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5zZXRDdXJyZW50VGFiKHRhYik7XHJcbiAgICAgICAgaWYgKGV4aXN0ZWRJbmRleCA+PSAwICYmICFjdXJyZW50TmF2aWdhdGlvbj8uZXh0cmFzPy5zdGF0ZT8uc3dpdGNoVGFiKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYnNbZXhpc3RlZEluZGV4XSA9IHRhYjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50YWJzLnB1c2godGFiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudGFiUm91dGVyTmF2Py5jaGVja1VJKCk7XHJcbiAgICAgIGlmICh0aGlzLnRhYnMubGVuZ3RoID4gMTApIHtcclxuICAgICAgICB0aGlzLnNkTm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyhcclxuICAgICAgICAgIFwiQuG6oW4gxJHDoyBt4bufIHF1w6Egbmhp4buBdSB0YWIuIFZ1aSBsw7JuZyB04bqvdCBjw6FjIHRhYiBraMO0bmcgZMO5bmcgxJHhu4MgaOG7hyB0aOG7kW5nIGhv4bqhdCDEkeG7mW5nIHThu5F0IGjGoW4uXCJcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnRhYnMubGVuZ3RoID4gMTIpIHtcclxuICAgICAgICB0aGlzLnRhYnMuc3BsaWNlKDAsIHRoaXMudGFicy5sZW5ndGggLSAxMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfTtcclxuXHJcbiAgI2dldEFjdGl2YXRlZFJvdXRlU25hcHNob3QgPSAoXHJcbiAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XHJcbiAgKTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwgPT4ge1xyXG4gICAgaWYgKCFhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCkge1xyXG4gICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0gYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q7XHJcbiAgfTtcclxuXHJcbiAgI2dldEFjdGl2YXRlZFJvdXRlID0gKFxyXG4gICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgY29tcG9uZW50OiBhbnlcclxuICApOiBBY3RpdmF0ZWRSb3V0ZSB8IG51bGwgPT4ge1xyXG4gICAgaWYgKCFhY3RpdmF0ZWRSb3V0ZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWN0aXZhdGVkUm91dGUuY29tcG9uZW50ICYmIGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZTtcclxuICAgIH1cclxuICAgIHdoaWxlIChhY3RpdmF0ZWRSb3V0ZS5maXJzdENoaWxkKSB7XHJcbiAgICAgIGFjdGl2YXRlZFJvdXRlID0gYWN0aXZhdGVkUm91dGUuZmlyc3RDaGlsZDtcclxuICAgICAgaWYgKGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCAmJiBhY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xyXG4gICAgICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfTtcclxufVxyXG5cclxuY2xhc3MgU2RPdXRsZXRJbmplY3RvciBpbXBsZW1lbnRzIEluamVjdG9yIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlIHwgbnVsbCxcclxuICAgIC8vIHByaXZhdGUgY2hpbGRDb250ZXh0czogQ2hpbGRyZW5PdXRsZXRDb250ZXh0cyxcclxuICAgIHByaXZhdGUgcGFyZW50OiBhbnlcclxuICApIHt9XHJcblxyXG4gIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55KTogYW55IHtcclxuICAgIGlmICh0b2tlbiA9PT0gQWN0aXZhdGVkUm91dGUgJiYgdGhpcy5yb3V0ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3V0ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodG9rZW4gPT09IENoaWxkcmVuT3V0bGV0Q29udGV4dHMpIHtcclxuICAgIC8vICAgcmV0dXJuIHRoaXMuY2hpbGRDb250ZXh0cztcclxuICAgIC8vIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0KHRva2VuLCBub3RGb3VuZFZhbHVlKTtcclxuICB9XHJcbn1cclxuIl19
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFiLXJvdXRlci8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy90YWItcm91dGVyLW91dGxldC90YWItcm91dGVyLW91dGxldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixTQUFTLEVBQ1QsUUFBUSxFQUtSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsY0FBYyxFQUtkLGFBQWEsRUFFYixNQUFNLEVBQ04sZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEdBQ2pCLE1BQU0sK0JBQStCLENBQUM7QUFJdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUM7QUFRcEMsTUFBTSxPQUFPLDBCQUEwQjtJQU9yQyxZQUNVLE1BQWMsRUFDZCxjQUE4QixFQUM5QixFQUFxQixFQUNyQixRQUFrQixFQUNsQixRQUFrQixFQUNsQixtQkFBMEMsRUFDMUMsZ0JBQW9DLEVBQ3BDLGVBQWdDO1FBUGhDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsT0FBRSxHQUFG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QUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzNCO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsNENBQW1CLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7Ozs7WUFuRUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLDhlQUFpRDs7YUFHbEQ7OztZQXZCQyxNQUFNO1lBUE4sY0FBYztZQVhkLGlCQUFpQjtZQUdqQixRQUFRO1lBRlIsUUFBUTtZQStCRCxxQkFBcUI7WUFIckIsa0JBQWtCO1lBUmxCLGVBQWU7OzsyQkFzQnJCLFNBQVMsU0FBQyxjQUFjOztBQStNM0IsTUFBTSxnQkFBZ0I7SUFDcEIsWUFDVSxLQUE0QjtJQUNwQyxpREFBaUQ7SUFDekMsTUFBVztRQUZYLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBRTVCLFdBQU0sR0FBTixNQUFNLENBQUs7SUFDbEIsQ0FBQztJQUVKLEdBQUcsQ0FBQyxLQUFVLEVBQUUsYUFBbUI7UUFDakMsSUFBSSxLQUFLLEtBQUssY0FBYyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDMUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ25CO1FBRUQsMENBQTBDO1FBQzFDLCtCQUErQjtRQUMvQixJQUFJO1FBRUosT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21waWxlcixcclxuICBDb21wb25lbnQsXHJcbiAgSW5qZWN0b3IsXHJcbiAgTmdNb2R1bGVSZWYsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBUeXBlLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBY3RpdmF0ZWRSb3V0ZSxcclxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gIENoaWxkcmVuT3V0bGV0Q29udGV4dHMsXHJcbiAgLy8gQ2hpbGRyZW5PdXRsZXRDb250ZXh0cyxcclxuICBFdmVudCxcclxuICBOYXZpZ2F0aW9uRW5kLFxyXG4gIFBSSU1BUllfT1VUTEVULFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXNSZWNvZ25pemVkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFNkTm90aWZ5U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbm90aWZ5JztcclxuaW1wb3J0IHtcclxuICBTZFRhYkFjdGl2YXRlZCxcclxuICBTZFRhYkRlYWN0aXZhdGVkLFxyXG59IGZyb20gJy4uLy4uL2V2ZW50cy90YWItcm91dGVyLmV2ZW50JztcclxuXHJcbmltcG9ydCB7IFNkVGFiIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYi1yb3V0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTZFRhYkFjdGlvbiB9IGZyb20gJy4uLy4uL2FjdGlvbnMvdGFiLXJvdXRlci5hY3Rpb24nO1xyXG5pbXBvcnQgeyBTZFRhYlJvdXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWItcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZFRhYlJvdXRlck5hdkNvbXBvbmVudCB9IGZyb20gJy4uL3RhYi1yb3V0ZXItbmF2L3RhYi1yb3V0ZXItbmF2LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTZFRhYkRlY29yYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWItZGVjb3JhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCAqIGFzIGhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC10YWItcm91dGVyLW91dGxldCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYi1yb3V0ZXItb3V0bGV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWItcm91dGVyLW91dGxldC5jb21wb25lbnQuc2NzcyddLFxyXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RUYWJSb3V0ZXJPdXRsZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYlJvdXRlck5hdicpIHRhYlJvdXRlck5hdjogU2RUYWJSb3V0ZXJOYXZDb21wb25lbnQ7XHJcbiAgdGFiczogU2RUYWJbXSA9IFtdO1xyXG5cclxuICAjcm9vdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICNmaXJzdExvYWQgPSB0cnVlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgY29tcGlsZXI6IENvbXBpbGVyLFxyXG4gICAgcHJpdmF0ZSB0YWJEZWNvcmF0b3JTZXJ2aWNlOiBTZFRhYkRlY29yYXRvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRhYlJvdXRlclNlcnZpY2U6IFNkVGFiUm91dGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgc2ROb3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHJvdXRlci5ldmVudHNcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGZpbHRlcihcclxuICAgICAgICAgICAgKGV2ZW50KSA9PlxyXG4gICAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgUm91dGVzUmVjb2duaXplZCB8fFxyXG4gICAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKGFzeW5jIChldmVudDogUm91dGVzUmVjb2duaXplZCB8IE5hdmlnYXRpb25FbmQpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLiNmaXJzdExvYWQgJiYgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMuI2ZpcnN0TG9hZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMuI2dldEFjdGl2YXRlZFJvdXRlU25hcHNob3QoXHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLiNyb290Um91dGUgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5yb290O1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLiNhY3RpdmVSb3V0ZShcclxuICAgICAgICAgICAgICBldmVudC51cmxBZnRlclJlZGlyZWN0cyB8fCBldmVudC51cmwsXHJcbiAgICAgICAgICAgICAgcm91dGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCF0aGlzLiNmaXJzdExvYWQgJiYgZXZlbnQgaW5zdGFuY2VvZiBSb3V0ZXNSZWNvZ25pemVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy4jZ2V0QWN0aXZhdGVkUm91dGVTbmFwc2hvdChldmVudC5zdGF0ZS5yb290KTtcclxuICAgICAgICAgICAgdGhpcy4jcm9vdFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUucm9vdDtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy4jYWN0aXZlUm91dGUoXHJcbiAgICAgICAgICAgICAgZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMgfHwgZXZlbnQudXJsLFxyXG4gICAgICAgICAgICAgIHJvdXRlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGFiUm91dGVyU2VydmljZS5hY3Rpb25zLnN1YnNjcmliZSgoZXZlbnQ6IFNkVGFiQWN0aW9uIHwgbnVsbCkgPT4ge1xyXG4gICAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnY2xvc2UnKSB7XHJcbiAgICAgICAgICB0aGlzLiNjbG9zZVRhYihldmVudC50YWIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgI2Nsb3NlVGFiID0gKHRhYjogU2RUYWIpID0+IHtcclxuICAgIGNvbnN0IHsgaXNBY3RpdmUsIGtleTogYWN0aXZlS2V5IH0gPSB0YWI7XHJcblxyXG4gICAgaWYgKGlzQWN0aXZlKSB7XHJcbiAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy50YWJzLmZpbmRJbmRleCgoeyBrZXkgfSkgPT4ga2V5ID09PSBhY3RpdmVLZXkpO1xyXG4gICAgICBjb25zdCBuZXh0VGFiID0gdGhpcy50YWJzW2FjdGl2ZUluZGV4ICsgMV0gfHwgdGhpcy50YWJzW2FjdGl2ZUluZGV4IC0gMV07XHJcbiAgICAgIGlmIChuZXh0VGFiKSB7XHJcbiAgICAgICAgY29uc3QgeyB1cmw6IG5leHRVcmwgfSA9IG5leHRUYWI7XHJcbiAgICAgICAgY29uc3QgbmV4dFF1ZXJ5UGFyYW1zID0ge1xyXG4gICAgICAgICAgLi4uKG5leHRUYWIucXVlcnlQYXJhbXMgfHwge30pLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIoKHsga2V5IH0pID0+IGtleSAhPT0gYWN0aXZlS2V5KTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbmV4dFVybF0sIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBuZXh0UXVlcnlQYXJhbXMsXHJcbiAgICAgICAgICBzdGF0ZToge1xyXG4gICAgICAgICAgICBzd2l0Y2hUYWI6IHRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIoKHsga2V5IH0pID0+IGtleSAhPT0gYWN0aXZlS2V5KTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJywge1xyXG4gICAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgICAgc3dpdGNoVGFiOiB0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJzLmZpbHRlcigoeyBrZXkgfSkgPT4ga2V5ICE9PSB0YWIua2V5KTtcclxuICAgICAgdGhpcy50YWJSb3V0ZXJOYXY/LmNoZWNrVUkoKTtcclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjYWN0aXZlUm91dGUgPSBhc3luYyAoXHJcbiAgICBmdWxsVXJsOiBzdHJpbmcsXHJcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGxcclxuICApID0+IHtcclxuICAgIGlmICghcm91dGU/LmNvbXBvbmVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb21wb25lbnQgPSByb3V0ZS5jb21wb25lbnQgYXMgVHlwZTxhbnk+O1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgIC4uLihyb3V0ZS5xdWVyeVBhcmFtcyB8fCB7fSksXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICAuLi4ocm91dGUucGFyYW1zIHx8IHt9KSxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgW3VybF0gPSBmdWxsVXJsLnNwbGl0KCc/Jyk7XHJcbiAgICBjb25zdCBrZXkgPSBoYXNoKHsgdXJsLCBxdWVyeVBhcmFtcyB9KTtcclxuXHJcbiAgICBsZXQgZXhpc3RlZEluZGV4ID0gLTE7XHJcbiAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiOiBTZFRhYiwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBpZiAodGFiLmtleSA9PT0ga2V5KSB7XHJcbiAgICAgICAgdGFiLmlzQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBleGlzdGVkSW5kZXggPSBpbmRleDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGFiLmlzQWN0aXZlKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYlJvdXRlclNlcnZpY2UucHVzaEV2ZW50KHRhYiwgU2RUYWJEZWFjdGl2YXRlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRhYi5pc0FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbiA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk7XHJcbiAgICBpZiAoZXhpc3RlZEluZGV4ID49IDAgJiYgY3VycmVudE5hdmlnYXRpb24/LmV4dHJhcz8uc3RhdGU/LnN3aXRjaFRhYikge1xyXG4gICAgICBjb25zdCBleGlzdGVkVGFiID0gdGhpcy50YWJzW2V4aXN0ZWRJbmRleF07XHJcbiAgICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5zZXRDdXJyZW50VGFiKGV4aXN0ZWRUYWIpO1xyXG4gICAgICB0aGlzLnRhYlJvdXRlclNlcnZpY2UucHVzaEV2ZW50KGV4aXN0ZWRUYWIsIFNkVGFiQWN0aXZhdGVkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0eXBlb2Ygcm91dGU/LnBhcmVudD8ucm91dGVDb25maWc/LmxvYWRDaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IGF3YWl0IHJvdXRlLnBhcmVudC5yb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4oKTtcclxuICAgICAgICBjb25zdCBmYWN0b3J5ID0gYXdhaXQgdGhpcy5jb21waWxlci5jb21waWxlTW9kdWxlQXN5bmMobW9kdWxlKTtcclxuICAgICAgICBjb25zdCBpbmplY3RvciA9IGZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICAgIGNvbnN0IGFjdGl2YXRlZFJvdXRlID0gdGhpcy4jZ2V0QWN0aXZhdGVkUm91dGUoXHJcbiAgICAgICAgICB0aGlzLiNyb290Um91dGUsXHJcbiAgICAgICAgICBjb21wb25lbnRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBjb25zdCB0YWIgPSB7XHJcbiAgICAgICAgICBrZXksXHJcbiAgICAgICAgICBjb21wb25lbnQsXHJcbiAgICAgICAgICBpbmplY3RvcjogbmV3IFNkT3V0bGV0SW5qZWN0b3IoYWN0aXZhdGVkUm91dGUsIGluamVjdG9yKSxcclxuICAgICAgICAgIGlzQWN0aXZlOiB0cnVlLFxyXG4gICAgICAgICAgbmFtZTogdXJsLFxyXG4gICAgICAgICAgdXJsLFxyXG4gICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAgcXVlcnlQYXJhbXMsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy50YWJSb3V0ZXJTZXJ2aWNlLnNldEN1cnJlbnRUYWIodGFiKTtcclxuICAgICAgICBpZiAoZXhpc3RlZEluZGV4ID49IDAgJiYgIWN1cnJlbnROYXZpZ2F0aW9uPy5leHRyYXM/LnN0YXRlPy5zd2l0Y2hUYWIpIHtcclxuICAgICAgICAgIHRoaXMudGFic1tleGlzdGVkSW5kZXhdID0gdGFiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRhYnMucHVzaCh0YWIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy50YWJSb3V0ZXJOYXY/LmNoZWNrVUkoKTtcclxuICAgICAgaWYgKHRoaXMudGFicy5sZW5ndGggPiAxMCkge1xyXG4gICAgICAgIHRoaXMuc2ROb3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKFxyXG4gICAgICAgICAgJ0LhuqFuIMSRw6MgbeG7nyBxdcOhIG5oaeG7gXUgdGFiLiBWdWkgbMOybmcgdOG6r3QgY8OhYyB0YWIga2jDtG5nIGTDuW5nIMSR4buDIGjhu4cgdGjhu5FuZyBob+G6oXQgxJHhu5luZyB04buRdCBoxqFuLidcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnRhYnMubGVuZ3RoID4gMTIpIHtcclxuICAgICAgICB0aGlzLnRhYnMuc3BsaWNlKDAsIHRoaXMudGFicy5sZW5ndGggLSAxMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfTtcclxuXHJcbiAgI2dldEFjdGl2YXRlZFJvdXRlU25hcHNob3QgPSAoXHJcbiAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XHJcbiAgKTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwgPT4ge1xyXG4gICAgaWYgKCFhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCkge1xyXG4gICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0gYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q7XHJcbiAgfTtcclxuXHJcbiAgI2dldEFjdGl2YXRlZFJvdXRlID0gKFxyXG4gICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgY29tcG9uZW50OiBhbnlcclxuICApOiBBY3RpdmF0ZWRSb3V0ZSB8IG51bGwgPT4ge1xyXG4gICAgaWYgKCFhY3RpdmF0ZWRSb3V0ZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWN0aXZhdGVkUm91dGUuY29tcG9uZW50ICYmIGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZTtcclxuICAgIH1cclxuICAgIHdoaWxlIChhY3RpdmF0ZWRSb3V0ZS5maXJzdENoaWxkKSB7XHJcbiAgICAgIGFjdGl2YXRlZFJvdXRlID0gYWN0aXZhdGVkUm91dGUuZmlyc3RDaGlsZDtcclxuICAgICAgaWYgKGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCAmJiBhY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xyXG4gICAgICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfTtcclxufVxyXG5cclxuY2xhc3MgU2RPdXRsZXRJbmplY3RvciBpbXBsZW1lbnRzIEluamVjdG9yIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlIHwgbnVsbCxcclxuICAgIC8vIHByaXZhdGUgY2hpbGRDb250ZXh0czogQ2hpbGRyZW5PdXRsZXRDb250ZXh0cyxcclxuICAgIHByaXZhdGUgcGFyZW50OiBhbnlcclxuICApIHt9XHJcblxyXG4gIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55KTogYW55IHtcclxuICAgIGlmICh0b2tlbiA9PT0gQWN0aXZhdGVkUm91dGUgJiYgdGhpcy5yb3V0ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3V0ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodG9rZW4gPT09IENoaWxkcmVuT3V0bGV0Q29udGV4dHMpIHtcclxuICAgIC8vICAgcmV0dXJuIHRoaXMuY2hpbGRDb250ZXh0cztcclxuICAgIC8vIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0KHRva2VuLCBub3RGb3VuZFZhbHVlKTtcclxuICB9XHJcbn1cclxuIl19
|