@sd-angular/core 1.3.105 → 1.3.107
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 +97 -103
- 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/esm2015/grid-material/src/lib/components/grid-filter/grid-filter.component.js +27 -22
- package/esm2015/grid-material/src/lib/components/popup-filter/popup-filter.component.js +17 -26
- package/esm2015/grid-material/src/lib/grid-material.component.js +21 -19
- package/esm2015/grid-material/src/lib/services/grid-filter/grid-filter.service.js +23 -25
- package/fesm2015/sd-angular-core-grid-material.js +96 -100
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/grid-material/src/lib/components/grid-filter/grid-filter.component.d.ts +7 -7
- package/grid-material/src/lib/components/popup-filter/popup-filter.component.d.ts +6 -12
- package/grid-material/src/lib/services/grid-filter/grid-filter.service.d.ts +4 -4
- package/package.json +1 -1
- package/{sd-angular-core-1.3.105.tgz → sd-angular-core-1.3.107.tgz} +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
var _filterConfiguration, _filterValue, _cache, _defaultConfiguration, _defaultValue, _initConfiguration, _initValue;
|
|
2
2
|
import { __classPrivateFieldGet } from "tslib";
|
|
3
|
-
import { Injectable } from
|
|
4
|
-
import hash from
|
|
5
|
-
import { SdSettingService } from
|
|
6
|
-
import { startWith } from
|
|
3
|
+
import { Injectable } from '@angular/core';
|
|
4
|
+
import hash from 'object-hash';
|
|
5
|
+
import { SdSettingService } from '@sd-angular/core/setting';
|
|
6
|
+
import { debounceTime, map, startWith } from 'rxjs/operators';
|
|
7
7
|
export class SdGridFilterService {
|
|
8
8
|
constructor(settingService) {
|
|
9
9
|
this.settingService = settingService;
|
|
10
|
-
_filterConfiguration.set(this,
|
|
11
|
-
_filterValue.set(this,
|
|
10
|
+
_filterConfiguration.set(this, 'GRID-FILTER-CONFIGURATION');
|
|
11
|
+
_filterValue.set(this, 'GRID-FILTER-VALUE');
|
|
12
12
|
_cache.set(this, {});
|
|
13
13
|
this.register = (key, args) => {
|
|
14
14
|
let cacheSession = false;
|
|
@@ -27,7 +27,7 @@ export class SdGridFilterService {
|
|
|
27
27
|
key,
|
|
28
28
|
}, {
|
|
29
29
|
default: __classPrivateFieldGet(this, _defaultConfiguration).call(this, args),
|
|
30
|
-
type: cacheSession ?
|
|
30
|
+
type: cacheSession ? 'session' : undefined,
|
|
31
31
|
});
|
|
32
32
|
// Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi
|
|
33
33
|
filterConfiguration.set(__classPrivateFieldGet(this, _initConfiguration).call(this, args, filterConfiguration.get()));
|
|
@@ -37,7 +37,7 @@ export class SdGridFilterService {
|
|
|
37
37
|
key,
|
|
38
38
|
}, {
|
|
39
39
|
default: __classPrivateFieldGet(this, _defaultValue).call(this, args),
|
|
40
|
-
type: cacheSession ?
|
|
40
|
+
type: cacheSession ? 'session' : undefined,
|
|
41
41
|
});
|
|
42
42
|
// Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi
|
|
43
43
|
filterValue.set(__classPrivateFieldGet(this, _initValue).call(this, args, filterValue.get()));
|
|
@@ -60,39 +60,37 @@ export class SdGridFilterService {
|
|
|
60
60
|
};
|
|
61
61
|
},
|
|
62
62
|
remove: () => {
|
|
63
|
-
filterConfiguration.
|
|
63
|
+
filterConfiguration.set(__classPrivateFieldGet(this, _defaultConfiguration).call(this, args));
|
|
64
64
|
},
|
|
65
|
-
observer: filterConfiguration.observer.pipe(startWith(filterConfiguration.get())
|
|
65
|
+
observer: filterConfiguration.observer.pipe(startWith(filterConfiguration.get()),
|
|
66
|
+
// Sử dụng mặc định nếu bị reset
|
|
67
|
+
map(configuration => configuration || __classPrivateFieldGet(this, _defaultConfiguration).call(this, args))),
|
|
66
68
|
},
|
|
67
69
|
value: {
|
|
68
70
|
get: () => {
|
|
69
71
|
return filterValue.get();
|
|
70
72
|
},
|
|
71
|
-
set: (
|
|
72
|
-
const keys = Object.keys(
|
|
73
|
+
set: (value) => {
|
|
74
|
+
const keys = Object.keys(value || {});
|
|
73
75
|
const current = filterValue.get();
|
|
74
76
|
const { columnFilter, externalFilter, filterDef } = current;
|
|
75
77
|
const updatedConfiguration = {
|
|
76
78
|
// Filter column
|
|
77
|
-
columnFilter: keys.includes(
|
|
78
|
-
? (configuration === null || configuration === void 0 ? void 0 : configuration.columnFilter) || {}
|
|
79
|
-
: columnFilter,
|
|
79
|
+
columnFilter: keys.includes('columnFilter') ? (value === null || value === void 0 ? void 0 : value.columnFilter) || {} : columnFilter,
|
|
80
80
|
// Filter external
|
|
81
|
-
externalFilter: keys.includes(
|
|
82
|
-
? (configuration === null || configuration === void 0 ? void 0 : configuration.externalFilter) || {}
|
|
83
|
-
: externalFilter,
|
|
81
|
+
externalFilter: keys.includes('externalFilter') ? (value === null || value === void 0 ? void 0 : value.externalFilter) || {} : externalFilter,
|
|
84
82
|
// Filter def
|
|
85
|
-
filterDef: keys.includes(
|
|
86
|
-
? (configuration === null || configuration === void 0 ? void 0 : configuration.filterDef) || {}
|
|
87
|
-
: filterDef,
|
|
83
|
+
filterDef: keys.includes('filterDef') ? (value === null || value === void 0 ? void 0 : value.filterDef) || {} : filterDef,
|
|
88
84
|
};
|
|
89
85
|
filterValue.set(updatedConfiguration);
|
|
90
86
|
return updatedConfiguration;
|
|
91
87
|
},
|
|
92
88
|
remove: () => {
|
|
93
|
-
filterValue.
|
|
89
|
+
filterValue.set(__classPrivateFieldGet(this, _defaultValue).call(this, args));
|
|
94
90
|
},
|
|
95
|
-
observer: filterValue.observer.pipe(startWith(filterValue.get())
|
|
91
|
+
observer: filterValue.observer.pipe(debounceTime(200), startWith(filterValue.get()),
|
|
92
|
+
// Sử dụng mặc định nếu bị reset
|
|
93
|
+
map(value => value || __classPrivateFieldGet(this, _defaultValue).call(this, args))),
|
|
96
94
|
},
|
|
97
95
|
};
|
|
98
96
|
}
|
|
@@ -191,7 +189,7 @@ export class SdGridFilterService {
|
|
|
191
189
|
}
|
|
192
190
|
// Filter external
|
|
193
191
|
for (const item of externalFilters || []) {
|
|
194
|
-
if (item.type ===
|
|
192
|
+
if (item.type === 'daterange') {
|
|
195
193
|
externalFilter[item.field] = {
|
|
196
194
|
from: (_f = (_e = (_d = value === null || value === void 0 ? void 0 : value.externalFilter) === null || _d === void 0 ? void 0 : _d[item.field]) === null || _e === void 0 ? void 0 : _e.from) !== null && _f !== void 0 ? _f : (_g = item.default) === null || _g === void 0 ? void 0 : _g.from,
|
|
197
195
|
to: (_k = (_j = (_h = value === null || value === void 0 ? void 0 : value.externalFilter) === null || _h === void 0 ? void 0 : _h[item.field]) === null || _j === void 0 ? void 0 : _j.to) !== null && _k !== void 0 ? _k : (_l = item.default) === null || _l === void 0 ? void 0 : _l.to,
|
|
@@ -223,4 +221,4 @@ SdGridFilterService.decorators = [
|
|
|
223
221
|
SdGridFilterService.ctorParameters = () => [
|
|
224
222
|
{ type: SdSettingService }
|
|
225
223
|
];
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1maWx0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvc2VydmljZXMvZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBUzVELE9BQU8sRUFBTyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRCxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQW9CLGNBQWdDO1FBQWhDLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUhwRCwrQkFBdUIsMkJBQTJCLEVBQUM7UUFDbkQsdUJBQWUsbUJBQW1CLEVBQUM7UUFDbkMsaUJBQXVELEVBQUUsRUFBQztRQUUxRCxhQUFRLEdBQUcsQ0FDVCxHQUFXLEVBQ1gsSUFJQyxFQUNELEVBQUU7WUFDRixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDUixNQUFNLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDMUMsR0FBRyxHQUFHLElBQUksQ0FBQztvQkFDVCxPQUFPO29CQUNQLGVBQWU7aUJBQ2hCLENBQUMsQ0FBQztnQkFDSCxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsNENBQTRDO2FBQ2xFO1lBQ0QsSUFBSSxDQUFDLHFDQUFZLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQixtQ0FBbUM7Z0JBQ25DLE1BQU0sbUJBQW1CLEdBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUN4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QUFjLDBDQUFHLElBQUksQ0FBQyxLQUFLLDJDQUFHLEVBQUUseUNBQUksSUFBSSxDQUFDLE9BQU8sMENBQUUsRUFBRTtxQkFDaEUsQ0FBQztpQkFDSDtxQkFBTTtvQkFDTCxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUN4QixLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsY0FBYywwQ0FBRyxJQUFJLENBQUMsS0FBSyxvQ0FBSyxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsT0FBTyxDQUFDO2lCQUN4RDthQUNGO1lBQ0QsYUFBYTtZQUNiLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxJQUFJLEVBQUUsRUFBRTtnQkFDbkMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUNqQyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsU0FBUywwQ0FBRyxJQUFJLENBQUMsbUJBQW1CLG9DQUFLLFNBQVMsQ0FBQzthQUM3RDtZQUNELE9BQU87Z0JBQ0wsZ0JBQWdCO2dCQUNoQixZQUFZO2dCQUNaLGtCQUFrQjtnQkFDbEIsY0FBYztnQkFDZCxhQUFhO2dCQUNiLFNBQVM7YUFDVixDQUFDO1FBQ0osQ0FBQyxFQUFDO0lBNVBxRCxDQUFDOzs7O1lBTHpELFVBQVU7OztZQVhGLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgaGFzaCBmcm9tIFwib2JqZWN0LWhhc2hcIjtcclxuaW1wb3J0IHsgU2RTZXR0aW5nU2VydmljZSB9IGZyb20gXCJAc2QtYW5ndWxhci9jb3JlL3NldHRpbmdcIjtcclxuaW1wb3J0IHtcclxuICBTZEdyaWRNYXRlcmlhbEV4dGVybmFsRmlsdGVyLFxyXG4gIFNkR3JpZE1hdGVyaWFsRmlsdGVyQ29uZmlndXJhdGlvbixcclxuICBTZEdyaWRNYXRlcmlhbEZpbHRlclJlZ2lzdGVyLFxyXG4gIFNkR3JpZE1hdGVyaWFsRmlsdGVyVmFsdWUsXHJcbn0gZnJvbSBcIi4vZ3JpZC1maWx0ZXIubW9kZWxcIjtcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2dyaWQtY29sdW1uLm1vZGVsXCI7XHJcbmltcG9ydCB7IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9zZC1tYXRlcmlhbC1maWx0ZXItZGVmLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2RHcmlkRmlsdGVyU2VydmljZSB7XHJcbiAgI2ZpbHRlckNvbmZpZ3VyYXRpb24gPSBcIkdSSUQtRklMVEVSLUNPTkZJR1VSQVRJT05cIjtcclxuICAjZmlsdGVyVmFsdWUgPSBcIkdSSUQtRklMVEVSLVZBTFVFXCI7XHJcbiAgI2NhY2hlOiBSZWNvcmQ8c3RyaW5nLCBTZEdyaWRNYXRlcmlhbEZpbHRlclJlZ2lzdGVyPiA9IHt9O1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2V0dGluZ1NlcnZpY2U6IFNkU2V0dGluZ1NlcnZpY2UpIHt9XHJcbiAgcmVnaXN0ZXIgPSAoXHJcbiAgICBrZXk6IHN0cmluZyxcclxuICAgIGFyZ3M6IHtcclxuICAgICAgY29sdW1uczogU2RHcmlkTWF0ZXJpYWxDb2x1bW5bXTtcclxuICAgICAgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRNYXRlcmlhbEV4dGVybmFsRmlsdGVyW107XHJcbiAgICAgIGZpbHRlckRlZnM6IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmVbXTtcclxuICAgIH1cclxuICApID0+IHtcclxuICAgIGxldCBjYWNoZVNlc3Npb24gPSBmYWxzZTtcclxuICAgIGlmICgha2V5KSB7XHJcbiAgICAgIGNvbnN0IHsgY29sdW1ucywgZXh0ZXJuYWxGaWx0ZXJzIH0gPSBhcmdzO1xyXG4gICAgICBrZXkgPSBoYXNoKHtcclxuICAgICAgICBjb2x1bW5zLFxyXG4gICAgICAgIGV4dGVybmFsRmlsdGVycyxcclxuICAgICAgfSk7XHJcbiAgICAgIGNhY2hlU2Vzc2lvbiA9IHRydWU7IC8vIE7hur91IGtow7RuZyBjw7Mga2V5IHRow6wgY2jhu4kgbMawdSB0aGVvIHNlc3Npb25cclxuICAgIH1cclxuICAgIGlmICghdGhpcy4jY2FjaGVba2V5XSkge1xyXG4gICAgICAvLyBTZXR0aW5nIGPhu6dhIGZpbHRlciBjb25maWd1cmF0aW9uXHJcbiAgICAgIGNvbnN0IGZpbHRlckNvbmZpZ3VyYXRpb24gPVxyXG4gICAgICAgIHRoaXMuc2V0dGluZ1NlcnZpY2UuY3JlYXRlPFNkR3JpZE1hdGVyaWFsRmlsdGVyQ29uZmlndXJhdGlvbj4oXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHByZWZpeDogdGhpcy4jZmlsdGVyQ29uZmlndXJhdGlvbixcclxuICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgZGVmYXVsdDogdGhpcy4jZGVmYXVsdENvbmZpZ3VyYXRpb24oYXJncyksXHJcbiAgICAgICAgICAgIHR5cGU6IGNhY2hlU2Vzc2lvbiA/IFwic2Vzc2lvblwiIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIC8vIEzhuqV5IGdpw6EgdHLhu4sgY29uZmlndXJhdGlvbiBtZXJnZSB24bubaSBnacOhIHRy4buLIGRlZmF1bHRTaG93aW5nIGPhu6dhIGFyZ3MgbuG6v3UgbmjGsCBhcmdzIGPDsyB0aGF5IMSR4buVaVxyXG4gICAgICBmaWx0ZXJDb25maWd1cmF0aW9uLnNldCh0aGlzLiNpbml0Q29uZmlndXJhdGlvbihhcmdzLCBmaWx0ZXJDb25maWd1cmF0aW9uLmdldCgpKSk7XHJcbiAgICAgIC8vIFNldHRpbmcgY+G7p2EgZmlsdGVyIHZhbHVlXHJcbiAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdGhpcy5zZXR0aW5nU2VydmljZS5jcmVhdGU8U2RHcmlkTWF0ZXJpYWxGaWx0ZXJWYWx1ZT4oXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJlZml4OiB0aGlzLiNmaWx0ZXJWYWx1ZSxcclxuICAgICAgICAgIGtleSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGRlZmF1bHQ6IHRoaXMuI2RlZmF1bHRWYWx1ZShhcmdzKSxcclxuICAgICAgICAgIHR5cGU6IGNhY2hlU2Vzc2lvbiA/IFwic2Vzc2lvblwiIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgICAgLy8gTOG6pXkgZ2nDoSB0cuG7iyB2YWx1ZSBtZXJnZSB24bubaSBnacOhIHRy4buLIGRlZmF1bHQgY+G7p2EgYXJncyBu4bq/dSBuaMawIGFyZ3MgY8OzIHRoYXkgxJHhu5VpXHJcbiAgICAgIGZpbHRlclZhbHVlLnNldCh0aGlzLiNpbml0VmFsdWUoYXJncywgZmlsdGVyVmFsdWUuZ2V0KCkpKTtcclxuICAgICAgdGhpcy4jY2FjaGVba2V5XSA9IHtcclxuICAgICAgICBjb25maWd1cmF0aW9uOiB7XHJcbiAgICAgICAgICBnZXQ6ICgpOiBTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb24gPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyQ29uZmlndXJhdGlvbi5nZXQoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzZXQ6IChcclxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogUGFydGlhbDxTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb24+XHJcbiAgICAgICAgICApOiBTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb24gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IGlubGluZUNvbHVtbiwgaW5saW5lRXh0ZXJuYWwsIGlubGluZUZpbHRlckRlZiB9ID1cclxuICAgICAgICAgICAgICBjb25maWd1cmF0aW9uO1xyXG4gICAgICAgICAgICBmaWx0ZXJDb25maWd1cmF0aW9uLnNldCh7XHJcbiAgICAgICAgICAgICAgaW5saW5lQ29sdW1uLFxyXG4gICAgICAgICAgICAgIGlubGluZUV4dGVybmFsLFxyXG4gICAgICAgICAgICAgIGlubGluZUZpbHRlckRlZixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgaW5saW5lQ29sdW1uLFxyXG4gICAgICAgICAgICAgIGlubGluZUV4dGVybmFsLFxyXG4gICAgICAgICAgICAgIGlubGluZUZpbHRlckRlZixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICByZW1vdmU6ICgpID0+IHtcclxuICAgICAgICAgICAgZmlsdGVyQ29uZmlndXJhdGlvbi5yZW1vdmUoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvYnNlcnZlcjogZmlsdGVyQ29uZmlndXJhdGlvbi5vYnNlcnZlci5waXBlKHN0YXJ0V2l0aChmaWx0ZXJDb25maWd1cmF0aW9uLmdldCgpKSksXHJcbiAgICAgICAgfSxcclxuICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgZ2V0OiAoKTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJWYWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJWYWx1ZS5nZXQoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzZXQ6IChcclxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogUGFydGlhbDxTZEdyaWRNYXRlcmlhbEZpbHRlclZhbHVlPlxyXG4gICAgICAgICAgKTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJWYWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjb25maWd1cmF0aW9uIHx8IHt9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IGZpbHRlclZhbHVlLmdldCgpO1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvbHVtbkZpbHRlciwgZXh0ZXJuYWxGaWx0ZXIsIGZpbHRlckRlZiB9ID0gY3VycmVudDtcclxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZENvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgLy8gRmlsdGVyIGNvbHVtblxyXG4gICAgICAgICAgICAgIGNvbHVtbkZpbHRlcjoga2V5cy5pbmNsdWRlcyhcImNvbHVtbkZpbHRlclwiKVxyXG4gICAgICAgICAgICAgICAgPyBjb25maWd1cmF0aW9uPy5jb2x1bW5GaWx0ZXIgfHwge31cclxuICAgICAgICAgICAgICAgIDogY29sdW1uRmlsdGVyLFxyXG4gICAgICAgICAgICAgIC8vIEZpbHRlciBleHRlcm5hbFxyXG4gICAgICAgICAgICAgIGV4dGVybmFsRmlsdGVyOiBrZXlzLmluY2x1ZGVzKFwiZXh0ZXJuYWxGaWx0ZXJcIilcclxuICAgICAgICAgICAgICAgID8gY29uZmlndXJhdGlvbj8uZXh0ZXJuYWxGaWx0ZXIgfHwge31cclxuICAgICAgICAgICAgICAgIDogZXh0ZXJuYWxGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgLy8gRmlsdGVyIGRlZlxyXG4gICAgICAgICAgICAgIGZpbHRlckRlZjoga2V5cy5pbmNsdWRlcyhcImZpbHRlckRlZlwiKVxyXG4gICAgICAgICAgICAgICAgPyBjb25maWd1cmF0aW9uPy5maWx0ZXJEZWYgfHwge31cclxuICAgICAgICAgICAgICAgIDogZmlsdGVyRGVmLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBmaWx0ZXJWYWx1ZS5zZXQodXBkYXRlZENvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZENvbmZpZ3VyYXRpb247XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgcmVtb3ZlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZpbHRlclZhbHVlLnJlbW92ZSgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9ic2VydmVyOiBmaWx0ZXJWYWx1ZS5vYnNlcnZlci5waXBlKHN0YXJ0V2l0aChmaWx0ZXJWYWx1ZS5nZXQoKSkpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy4jY2FjaGVba2V5XTtcclxuICB9O1xyXG5cclxuICAjZGVmYXVsdENvbmZpZ3VyYXRpb24gPSAoYXJnczoge1xyXG4gICAgY29sdW1uczogU2RHcmlkTWF0ZXJpYWxDb2x1bW5bXTtcclxuICAgIGV4dGVybmFsRmlsdGVyczogU2RHcmlkTWF0ZXJpYWxFeHRlcm5hbEZpbHRlcltdO1xyXG4gICAgZmlsdGVyRGVmczogU2RNYXRlcmlhbEZpbHRlckRlZkRpcmVjdGl2ZVtdO1xyXG4gIH0pOiBTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb24gPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBleHRlcm5hbEZpbHRlcnMsIGZpbHRlckRlZnMgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCBpbmxpbmVDb2x1bW46IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgICBjb25zdCBpbmxpbmVFeHRlcm5hbDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuICAgIGNvbnN0IGlubGluZUZpbHRlckRlZjogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuICAgIC8vIEZpbHRlciBjb2x1bW5cclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb2x1bW5zIHx8IFtdKSB7XHJcbiAgICAgIGlubGluZUNvbHVtbltpdGVtLmZpZWxkXSA9IGl0ZW0/LmZpbHRlcj8uZGVmYXVsdFNob3dpbmc7XHJcbiAgICB9XHJcbiAgICAvLyBGaWx0ZXIgZXh0ZXJuYWxcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHRlcm5hbEZpbHRlcnMgfHwgW10pIHtcclxuICAgICAgaW5saW5lRXh0ZXJuYWxbaXRlbS5maWVsZF0gPSBpdGVtPy5kZWZhdWx0U2hvd2luZztcclxuICAgIH1cclxuICAgIC8vIEZpbHRlciBkZWZcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBmaWx0ZXJEZWZzIHx8IFtdKSB7XHJcbiAgICAgIGlubGluZUZpbHRlckRlZltpdGVtLnNkTWF0ZXJpYWxGaWx0ZXJEZWZdID0gaXRlbT8uZGVmYXVsdFNob3dpbmc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAvLyBGaWx0ZXIgY29sdW1uXHJcbiAgICAgIGlubGluZUNvbHVtbixcclxuICAgICAgLy8gRmlsdGVyIGV4dGVybmFsXHJcbiAgICAgIGlubGluZUV4dGVybmFsLFxyXG4gICAgICAvLyBGaWx0ZXIgZGVmXHJcbiAgICAgIGlubGluZUZpbHRlckRlZixcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgI2RlZmF1bHRWYWx1ZSA9IChhcmdzOiB7XHJcbiAgICBjb2x1bW5zOiBTZEdyaWRNYXRlcmlhbENvbHVtbltdO1xyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRNYXRlcmlhbEV4dGVybmFsRmlsdGVyW107XHJcbiAgICBmaWx0ZXJEZWZzOiBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlW107XHJcbiAgfSk6IFNkR3JpZE1hdGVyaWFsRmlsdGVyVmFsdWUgPT4ge1xyXG4gICAgY29uc3QgY29sdW1uRmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgICBjb25zdCBleHRlcm5hbEZpbHRlcjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgY29uc3QgZmlsdGVyRGVmOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIGV4dGVybmFsRmlsdGVycywgZmlsdGVyRGVmcyB9ID0gYXJncztcclxuICAgIC8vIEZpbHRlciBjb2x1bW5cclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb2x1bW5zIHx8IFtdKSB7XHJcbiAgICAgIGNvbHVtbkZpbHRlcltpdGVtLmZpZWxkXSA9IGl0ZW0/LmZpbHRlcj8uZGVmYXVsdDtcclxuICAgIH1cclxuICAgIC8vIEZpbHRlciBleHRlcm5hbFxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGV4dGVybmFsRmlsdGVycyB8fCBbXSkge1xyXG4gICAgICBleHRlcm5hbEZpbHRlcltpdGVtLmZpZWxkXSA9IGl0ZW0/LmRlZmF1bHQ7XHJcbiAgICB9XHJcbiAgICAvLyBGaWx0ZXIgZGVmXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZmlsdGVyRGVmcyB8fCBbXSkge1xyXG4gICAgICBmaWx0ZXJEZWZbaXRlbS5zZE1hdGVyaWFsRmlsdGVyRGVmXSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC8vIEZpbHRlciBjb2x1bW5cclxuICAgICAgY29sdW1uRmlsdGVyLFxyXG4gICAgICAvLyBGaWx0ZXIgZXh0ZXJuYWxcclxuICAgICAgZXh0ZXJuYWxGaWx0ZXIsXHJcbiAgICAgIC8vIEZpbHRlciBkZWZcclxuICAgICAgZmlsdGVyRGVmLFxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICAjaW5pdENvbmZpZ3VyYXRpb24gPSAoXHJcbiAgICBhcmdzOiB7XHJcbiAgICAgIGNvbHVtbnM6IFNkR3JpZE1hdGVyaWFsQ29sdW1uW107XHJcbiAgICAgIGV4dGVybmFsRmlsdGVyczogU2RHcmlkTWF0ZXJpYWxFeHRlcm5hbEZpbHRlcltdO1xyXG4gICAgICBmaWx0ZXJEZWZzOiBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlW107XHJcbiAgICB9LFxyXG4gICAgY29uZmlndXJhdGlvbjogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uXHJcbiAgKTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1ucywgZXh0ZXJuYWxGaWx0ZXJzLCBmaWx0ZXJEZWZzIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgaW5saW5lQ29sdW1uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG4gICAgY29uc3QgaW5saW5lRXh0ZXJuYWw6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgICBjb25zdCBpbmxpbmVGaWx0ZXJEZWY6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgICAvLyBGaWx0ZXIgY29sdW1uXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sdW1ucyB8fCBbXSkge1xyXG4gICAgICBpbmxpbmVDb2x1bW5baXRlbS5maWVsZF0gPVxyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24/LmlubGluZUNvbHVtbj8uW2l0ZW0uZmllbGRdID8/XHJcbiAgICAgICAgaXRlbT8uZmlsdGVyPy5kZWZhdWx0U2hvd2luZztcclxuICAgIH1cclxuICAgIC8vIEZpbHRlciBleHRlcm5hbFxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGV4dGVybmFsRmlsdGVycyB8fCBbXSkge1xyXG4gICAgICBpbmxpbmVFeHRlcm5hbFtpdGVtLmZpZWxkXSA9XHJcbiAgICAgICAgY29uZmlndXJhdGlvbj8uaW5saW5lRXh0ZXJuYWw/LltpdGVtLmZpZWxkXSA/PyBpdGVtPy5kZWZhdWx0U2hvd2luZztcclxuICAgIH1cclxuICAgIC8vIEZpbHRlciBkZWZcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBmaWx0ZXJEZWZzIHx8IFtdKSB7XHJcbiAgICAgIGlubGluZUZpbHRlckRlZltpdGVtLnNkTWF0ZXJpYWxGaWx0ZXJEZWZdID1cclxuICAgICAgICBjb25maWd1cmF0aW9uPy5pbmxpbmVGaWx0ZXJEZWY/LltpdGVtLnNkTWF0ZXJpYWxGaWx0ZXJEZWZdID8/XHJcbiAgICAgICAgaXRlbT8uZGVmYXVsdFNob3dpbmc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAvLyBGaWx0ZXIgY29sdW1uXHJcbiAgICAgIGlubGluZUNvbHVtbixcclxuICAgICAgLy8gRmlsdGVyIGV4dGVybmFsXHJcbiAgICAgIGlubGluZUV4dGVybmFsLFxyXG4gICAgICAvLyBGaWx0ZXIgZGVmXHJcbiAgICAgIGlubGluZUZpbHRlckRlZixcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgI2luaXRWYWx1ZSA9IChcclxuICAgIGFyZ3M6IHtcclxuICAgICAgY29sdW1uczogU2RHcmlkTWF0ZXJpYWxDb2x1bW5bXTtcclxuICAgICAgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRNYXRlcmlhbEV4dGVybmFsRmlsdGVyW107XHJcbiAgICAgIGZpbHRlckRlZnM6IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmVbXTtcclxuICAgIH0sXHJcbiAgICB2YWx1ZTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJWYWx1ZVxyXG4gICk6IFNkR3JpZE1hdGVyaWFsRmlsdGVyVmFsdWUgPT4ge1xyXG4gICAgY29uc3QgY29sdW1uRmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgICBjb25zdCBleHRlcm5hbEZpbHRlcjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgY29uc3QgZmlsdGVyRGVmOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIGV4dGVybmFsRmlsdGVycywgZmlsdGVyRGVmcyB9ID0gYXJncztcclxuICAgIC8vIEZpbHRlciBjb2x1bW5cclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb2x1bW5zIHx8IFtdKSB7XHJcbiAgICAgIGNvbHVtbkZpbHRlcltpdGVtLmZpZWxkXSA9XHJcbiAgICAgICAgdmFsdWU/LmNvbHVtbkZpbHRlcj8uW2l0ZW0uZmllbGRdID8/IGl0ZW0/LmZpbHRlcj8uZGVmYXVsdDtcclxuICAgIH1cclxuICAgIC8vIEZpbHRlciBleHRlcm5hbFxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGV4dGVybmFsRmlsdGVycyB8fCBbXSkge1xyXG4gICAgICBpZiAoaXRlbS50eXBlID09PSBcImRhdGVyYW5nZVwiKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbaXRlbS5maWVsZF0gPSB7XHJcbiAgICAgICAgICBmcm9tOiB2YWx1ZT8uZXh0ZXJuYWxGaWx0ZXI/LltpdGVtLmZpZWxkXT8uZnJvbSA/PyBpdGVtLmRlZmF1bHQ/LmZyb20sXHJcbiAgICAgICAgICB0bzogdmFsdWU/LmV4dGVybmFsRmlsdGVyPy5baXRlbS5maWVsZF0/LnRvID8/IGl0ZW0uZGVmYXVsdD8udG8sXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltpdGVtLmZpZWxkXSA9XHJcbiAgICAgICAgICB2YWx1ZT8uZXh0ZXJuYWxGaWx0ZXI/LltpdGVtLmZpZWxkXSA/PyBpdGVtPy5kZWZhdWx0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBGaWx0ZXIgZGVmXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZmlsdGVyRGVmcyB8fCBbXSkge1xyXG4gICAgICBmaWx0ZXJEZWZbaXRlbS5zZE1hdGVyaWFsRmlsdGVyRGVmXSA9XHJcbiAgICAgICAgdmFsdWU/LmZpbHRlckRlZj8uW2l0ZW0uc2RNYXRlcmlhbEZpbHRlckRlZl0gPz8gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLy8gRmlsdGVyIGNvbHVtblxyXG4gICAgICBjb2x1bW5GaWx0ZXIsXHJcbiAgICAgIC8vIEZpbHRlciBleHRlcm5hbFxyXG4gICAgICBleHRlcm5hbEZpbHRlcixcclxuICAgICAgLy8gRmlsdGVyIGRlZlxyXG4gICAgICBmaWx0ZXJEZWYsXHJcbiAgICB9O1xyXG4gIH07XHJcbn1cclxuIl19
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1maWx0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvc2VydmljZXMvZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBUzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlELE1BQU0sT0FBTyxtQkFBbUI7SUFJOUIsWUFBb0IsY0FBZ0M7UUFBaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBSHBELCtCQUF1QiwyQkFBMkIsRUFBQztRQUNuRCx1QkFBZSxtQkFBbUIsRUFBQztRQUNuQyxpQkFBdUQsRUFBRSxFQUFDO1FBRTFELGFBQVEsR0FBRyxDQUNULEdBQVcsRUFDWCxJQUlDLEVBQ0QsRUFBRTtZQUNGLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNSLE1BQU0sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUMxQyxHQUFHLEdBQUcsSUFBSSxDQUFDO29CQUNULE9BQU87b0JBQ1AsZUFBZTtpQkFDaEIsQ0FBQyxDQUFDO2dCQUNILFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQyw0Q0FBNEM7YUFDbEU7WUFDRCxJQUFJLENBQUMscUNBQVksR0FBRyxDQUFDLEVBQUU7Z0JBQ3JCLG1DQUFtQztnQkFDbkMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMs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J0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgaGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XHJcbmltcG9ydCB7IFNkU2V0dGluZ1NlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3NldHRpbmcnO1xyXG5pbXBvcnQge1xyXG4gIFNkR3JpZE1hdGVyaWFsRXh0ZXJuYWxGaWx0ZXIsXHJcbiAgU2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uLFxyXG4gIFNkR3JpZE1hdGVyaWFsRmlsdGVyUmVnaXN0ZXIsXHJcbiAgU2RHcmlkTWF0ZXJpYWxGaWx0ZXJWYWx1ZSxcclxufSBmcm9tICcuL2dyaWQtZmlsdGVyLm1vZGVsJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9zZC1tYXRlcmlhbC1maWx0ZXItZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTZEdyaWRGaWx0ZXJTZXJ2aWNlIHtcclxuICAjZmlsdGVyQ29uZmlndXJhdGlvbiA9ICdHUklELUZJTFRFUi1DT05GSUdVUkFUSU9OJztcclxuICAjZmlsdGVyVmFsdWUgPSAnR1JJRC1GSUxURVItVkFMVUUnO1xyXG4gICNjYWNoZTogUmVjb3JkPHN0cmluZywgU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZWdpc3Rlcj4gPSB7fTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNldHRpbmdTZXJ2aWNlOiBTZFNldHRpbmdTZXJ2aWNlKSB7fVxyXG4gIHJlZ2lzdGVyID0gKFxyXG4gICAga2V5OiBzdHJpbmcsXHJcbiAgICBhcmdzOiB7XHJcbiAgICAgIGNvbHVtbnM6IFNkR3JpZE1hdGVyaWFsQ29sdW1uW107XHJcbiAgICAgIGV4dGVybmFsRmlsdGVyczogU2RHcmlkTWF0ZXJpYWxFeHRlcm5hbEZpbHRlcltdO1xyXG4gICAgICBmaWx0ZXJEZWZzOiBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlW107XHJcbiAgICB9XHJcbiAgKSA9PiB7XHJcbiAgICBsZXQgY2FjaGVTZXNzaW9uID0gZmFsc2U7XHJcbiAgICBpZiAoIWtleSkge1xyXG4gICAgICBjb25zdCB7IGNvbHVtbnMsIGV4dGVybmFsRmlsdGVycyB9ID0gYXJncztcclxuICAgICAga2V5ID0gaGFzaCh7XHJcbiAgICAgICAgY29sdW1ucyxcclxuICAgICAgICBleHRlcm5hbEZpbHRlcnMsXHJcbiAgICAgIH0pO1xyXG4gICAgICBjYWNoZVNlc3Npb24gPSB0cnVlOyAvLyBO4bq/dSBraMO0bmcgY8OzIGtleSB0aMOsIGNo4buJIGzGsHUgdGhlbyBzZXNzaW9uXHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuI2NhY2hlW2tleV0pIHtcclxuICAgICAgLy8gU2V0dGluZyBj4bunYSBmaWx0ZXIgY29uZmlndXJhdGlvblxyXG4gICAgICBjb25zdCBmaWx0ZXJDb25maWd1cmF0aW9uID0gdGhpcy5zZXR0aW5nU2VydmljZS5jcmVhdGU8U2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uPihcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcmVmaXg6IHRoaXMuI2ZpbHRlckNvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgICBrZXksXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBkZWZhdWx0OiB0aGlzLiNkZWZhdWx0Q29uZmlndXJhdGlvbihhcmdzKSxcclxuICAgICAgICAgIHR5cGU6IGNhY2hlU2Vzc2lvbiA/ICdzZXNzaW9uJyA6IHVuZGVmaW5lZCxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIC8vIEzhuqV5IGdpw6EgdHLhu4sgY29uZmlndXJhdGlvbiBtZXJnZSB24bubaSBnacOhIHRy4buLIGRlZmF1bHRTaG93aW5nIGPhu6dhIGFyZ3MgbuG6v3UgbmjGsCBhcmdzIGPDsyB0aGF5IMSR4buVaVxyXG4gICAgICBmaWx0ZXJDb25maWd1cmF0aW9uLnNldCh0aGlzLiNpbml0Q29uZmlndXJhdGlvbihhcmdzLCBmaWx0ZXJDb25maWd1cmF0aW9uLmdldCgpKSk7XHJcbiAgICAgIC8vIFNldHRpbmcgY+G7p2EgZmlsdGVyIHZhbHVlXHJcbiAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdGhpcy5zZXR0aW5nU2VydmljZS5jcmVhdGU8U2RHcmlkTWF0ZXJpYWxGaWx0ZXJWYWx1ZT4oXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJlZml4OiB0aGlzLiNmaWx0ZXJWYWx1ZSxcclxuICAgICAgICAgIGtleSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGRlZmF1bHQ6IHRoaXMuI2RlZmF1bHRWYWx1ZShhcmdzKSxcclxuICAgICAgICAgIHR5cGU6IGNhY2hlU2Vzc2lvbiA/ICdzZXNzaW9uJyA6IHVuZGVmaW5lZCxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIC8vIEzhuqV5IGdpw6EgdHLhu4sgdmFsdWUgbWVyZ2UgduG7m2kgZ2nDoSB0cuG7iyBkZWZhdWx0IGPhu6dhIGFyZ3MgbuG6v3UgbmjGsCBhcmdzIGPDsyB0aGF5IMSR4buVaVxyXG4gICAgICBmaWx0ZXJWYWx1ZS5zZXQodGhpcy4jaW5pdFZhbHVlKGFyZ3MsIGZpbHRlclZhbHVlLmdldCgpKSk7XHJcbiAgICAgIHRoaXMuI2NhY2hlW2tleV0gPSB7XHJcbiAgICAgICAgY29uZmlndXJhdGlvbjoge1xyXG4gICAgICAgICAgZ2V0OiAoKTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlckNvbmZpZ3VyYXRpb24uZ2V0KCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2V0OiAoY29uZmlndXJhdGlvbjogUGFydGlhbDxTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb24+KTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBpbmxpbmVDb2x1bW4sIGlubGluZUV4dGVybmFsLCBpbmxpbmVGaWx0ZXJEZWYgfSA9IGNvbmZpZ3VyYXRpb247XHJcbiAgICAgICAgICAgIGZpbHRlckNvbmZpZ3VyYXRpb24uc2V0KHtcclxuICAgICAgICAgICAgICBpbmxpbmVDb2x1bW4sXHJcbiAgICAgICAgICAgICAgaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgICAgICAgICAgaW5saW5lRmlsdGVyRGVmLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBpbmxpbmVDb2x1bW4sXHJcbiAgICAgICAgICAgICAgaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgICAgICAgICAgaW5saW5lRmlsdGVyRGVmLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHJlbW92ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICBmaWx0ZXJDb25maWd1cmF0aW9uLnNldCh0aGlzLiNkZWZhdWx0Q29uZmlndXJhdGlvbihhcmdzKSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb2JzZXJ2ZXI6IGZpbHRlckNvbmZpZ3VyYXRpb24ub2JzZXJ2ZXIucGlwZShcclxuICAgICAgICAgICAgc3RhcnRXaXRoKGZpbHRlckNvbmZpZ3VyYXRpb24uZ2V0KCkpLFxyXG4gICAgICAgICAgICAvLyBT4butIGThu6VuZyBt4bq3YyDEkeG7i25oIG7hur91IGLhu4sgcmVzZXRcclxuICAgICAgICAgICAgbWFwKGNvbmZpZ3VyYXRpb24gPT4gY29uZmlndXJhdGlvbiB8fCB0aGlzLiNkZWZhdWx0Q29uZmlndXJhdGlvbihhcmdzKSlcclxuICAgICAgICAgICksXHJcbiAgICAgICAgfSxcclxuICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgZ2V0OiAoKTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJWYWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJWYWx1ZS5nZXQoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzZXQ6ICh2YWx1ZTogUGFydGlhbDxTZEdyaWRNYXRlcmlhbEZpbHRlclZhbHVlPik6IFNkR3JpZE1hdGVyaWFsRmlsdGVyVmFsdWUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUgfHwge30pO1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gZmlsdGVyVmFsdWUuZ2V0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29sdW1uRmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZmlsdGVyRGVmIH0gPSBjdXJyZW50O1xyXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkQ29uZmlndXJhdGlvbiA9IHtcclxuICAgICAgICAgICAgICAvLyBGaWx0ZXIgY29sdW1uXHJcbiAgICAgICAgICAgICAgY29sdW1uRmlsdGVyOiBrZXlzLmluY2x1ZGVzKCdjb2x1bW5GaWx0ZXInKSA/IHZhbHVlPy5jb2x1bW5GaWx0ZXIgfHwge30gOiBjb2x1bW5GaWx0ZXIsXHJcbiAgICAgICAgICAgICAgLy8gRmlsdGVyIGV4dGVybmFsXHJcbiAgICAgICAgICAgICAgZXh0ZXJuYWxGaWx0ZXI6IGtleXMuaW5jbHVkZXMoJ2V4dGVybmFsRmlsdGVyJykgPyB2YWx1ZT8uZXh0ZXJuYWxGaWx0ZXIgfHwge30gOiBleHRlcm5hbEZpbHRlcixcclxuICAgICAgICAgICAgICAvLyBGaWx0ZXIgZGVmXHJcbiAgICAgICAgICAgICAgZmlsdGVyRGVmOiBrZXlzLmluY2x1ZGVzKCdmaWx0ZXJEZWYnKSA/IHZhbHVlPy5maWx0ZXJEZWYgfHwge30gOiBmaWx0ZXJEZWYsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGZpbHRlclZhbHVlLnNldCh1cGRhdGVkQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgICAgIHJldHVybiB1cGRhdGVkQ29uZmlndXJhdGlvbjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICByZW1vdmU6ICgpID0+IHtcclxuICAgICAgICAgICAgZmlsdGVyVmFsdWUuc2V0KHRoaXMuI2RlZmF1bHRWYWx1ZShhcmdzKSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb2JzZXJ2ZXI6IGZpbHRlclZhbHVlLm9ic2VydmVyLnBpcGUoXHJcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgICAgICBzdGFydFdpdGgoZmlsdGVyVmFsdWUuZ2V0KCkpLFxyXG4gICAgICAgICAgICAvLyBT4butIGThu6VuZyBt4bq3YyDEkeG7i25oIG7hur91IGLhu4sgcmVzZXRcclxuICAgICAgICAgICAgbWFwKHZhbHVlID0+IHZhbHVlIHx8IHRoaXMuI2RlZmF1bHRWYWx1ZShhcmdzKSlcclxuICAgICAgICAgICksXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLiNjYWNoZVtrZXldO1xyXG4gIH07XHJcblxyXG4gICNkZWZhdWx0Q29uZmlndXJhdGlvbiA9IChhcmdzOiB7XHJcbiAgICBjb2x1bW5zOiBTZEdyaWRNYXRlcmlhbENvbHVtbltdO1xyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRNYXRlcmlhbEV4dGVybmFsRmlsdGVyW107XHJcbiAgICBmaWx0ZXJEZWZzOiBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlW107XHJcbiAgfSk6IFNkR3JpZE1hdGVyaWFsRmlsdGVyQ29uZmlndXJhdGlvbiA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIGV4dGVybmFsRmlsdGVycywgZmlsdGVyRGVmcyB9ID0gYXJncztcclxuICAgIGNvbnN0IGlubGluZUNvbHVtbjogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuICAgIGNvbnN0IGlubGluZUV4dGVybmFsOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG4gICAgY29uc3QgaW5saW5lRmlsdGVyRGVmOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG4gICAgLy8gRmlsdGVyIGNvbHVtblxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbHVtbnMgfHwgW10pIHtcclxuICAgICAgaW5saW5lQ29sdW1uW2l0ZW0uZmllbGRdID0gaXRlbT8uZmlsdGVyPy5kZWZhdWx0U2hvd2luZztcclxuICAgIH1cclxuICAgIC8vIEZpbHRlciBleHRlcm5hbFxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGV4dGVybmFsRmlsdGVycyB8fCBbXSkge1xyXG4gICAgICBpbmxpbmVFeHRlcm5hbFtpdGVtLmZpZWxkXSA9IGl0ZW0/LmRlZmF1bHRTaG93aW5nO1xyXG4gICAgfVxyXG4gICAgLy8gRmlsdGVyIGRlZlxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGZpbHRlckRlZnMgfHwgW10pIHtcclxuICAgICAgaW5saW5lRmlsdGVyRGVmW2l0ZW0uc2RNYXRlcmlhbEZpbHRlckRlZl0gPSBpdGVtPy5kZWZhdWx0U2hvd2luZztcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC8vIEZpbHRlciBjb2x1bW5cclxuICAgICAgaW5saW5lQ29sdW1uLFxyXG4gICAgICAvLyBGaWx0ZXIgZXh0ZXJuYWxcclxuICAgICAgaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgIC8vIEZpbHRlciBkZWZcclxuICAgICAgaW5saW5lRmlsdGVyRGVmLFxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICAjZGVmYXVsdFZhbHVlID0gKGFyZ3M6IHtcclxuICAgIGNvbHVtbnM6IFNkR3JpZE1hdGVyaWFsQ29sdW1uW107XHJcbiAgICBleHRlcm5hbEZpbHRlcnM6IFNkR3JpZE1hdGVyaWFsRXh0ZXJuYWxGaWx0ZXJbXTtcclxuICAgIGZpbHRlckRlZnM6IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmVbXTtcclxuICB9KTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJWYWx1ZSA9PiB7XHJcbiAgICBjb25zdCBjb2x1bW5GaWx0ZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAgIGNvbnN0IGV4dGVybmFsRmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgICBjb25zdCBmaWx0ZXJEZWY6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAgIGNvbnN0IHsgY29sdW1ucywgZXh0ZXJuYWxGaWx0ZXJzLCBmaWx0ZXJEZWZzIH0gPSBhcmdzO1xyXG4gICAgLy8gRmlsdGVyIGNvbHVtblxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbHVtbnMgfHwgW10pIHtcclxuICAgICAgY29sdW1uRmlsdGVyW2l0ZW0uZmllbGRdID0gaXRlbT8uZmlsdGVyPy5kZWZhdWx0O1xyXG4gICAgfVxyXG4gICAgLy8gRmlsdGVyIGV4dGVybmFsXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZXh0ZXJuYWxGaWx0ZXJzIHx8IFtdKSB7XHJcbiAgICAgIGV4dGVybmFsRmlsdGVyW2l0ZW0uZmllbGRdID0gaXRlbT8uZGVmYXVsdDtcclxuICAgIH1cclxuICAgIC8vIEZpbHRlciBkZWZcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBmaWx0ZXJEZWZzIHx8IFtdKSB7XHJcbiAgICAgIGZpbHRlckRlZltpdGVtLnNkTWF0ZXJpYWxGaWx0ZXJEZWZdID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLy8gRmlsdGVyIGNvbHVtblxyXG4gICAgICBjb2x1bW5GaWx0ZXIsXHJcbiAgICAgIC8vIEZpbHRlciBleHRlcm5hbFxyXG4gICAgICBleHRlcm5hbEZpbHRlcixcclxuICAgICAgLy8gRmlsdGVyIGRlZlxyXG4gICAgICBmaWx0ZXJEZWYsXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gICNpbml0Q29uZmlndXJhdGlvbiA9IChcclxuICAgIGFyZ3M6IHtcclxuICAgICAgY29sdW1uczogU2RHcmlkTWF0ZXJpYWxDb2x1bW5bXTtcclxuICAgICAgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRNYXRlcmlhbEV4dGVybmFsRmlsdGVyW107XHJcbiAgICAgIGZpbHRlckRlZnM6IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmVbXTtcclxuICAgIH0sXHJcbiAgICBjb25maWd1cmF0aW9uOiBTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb25cclxuICApOiBTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb24gPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBleHRlcm5hbEZpbHRlcnMsIGZpbHRlckRlZnMgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCBpbmxpbmVDb2x1bW46IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgICBjb25zdCBpbmxpbmVFeHRlcm5hbDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuICAgIGNvbnN0IGlubGluZUZpbHRlckRlZjogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuICAgIC8vIEZpbHRlciBjb2x1bW5cclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb2x1bW5zIHx8IFtdKSB7XHJcbiAgICAgIGlubGluZUNvbHVtbltpdGVtLmZpZWxkXSA9IGNvbmZpZ3VyYXRpb24/LmlubGluZUNvbHVtbj8uW2l0ZW0uZmllbGRdID8/IGl0ZW0/LmZpbHRlcj8uZGVmYXVsdFNob3dpbmc7XHJcbiAgICB9XHJcbiAgICAvLyBGaWx0ZXIgZXh0ZXJuYWxcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHRlcm5hbEZpbHRlcnMgfHwgW10pIHtcclxuICAgICAgaW5saW5lRXh0ZXJuYWxbaXRlbS5maWVsZF0gPSBjb25maWd1cmF0aW9uPy5pbmxpbmVFeHRlcm5hbD8uW2l0ZW0uZmllbGRdID8/IGl0ZW0/LmRlZmF1bHRTaG93aW5nO1xyXG4gICAgfVxyXG4gICAgLy8gRmlsdGVyIGRlZlxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGZpbHRlckRlZnMgfHwgW10pIHtcclxuICAgICAgaW5saW5lRmlsdGVyRGVmW2l0ZW0uc2RNYXRlcmlhbEZpbHRlckRlZl0gPSBjb25maWd1cmF0aW9uPy5pbmxpbmVGaWx0ZXJEZWY/LltpdGVtLnNkTWF0ZXJpYWxGaWx0ZXJEZWZdID8/IGl0ZW0/LmRlZmF1bHRTaG93aW5nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLy8gRmlsdGVyIGNvbHVtblxyXG4gICAgICBpbmxpbmVDb2x1bW4sXHJcbiAgICAgIC8vIEZpbHRlciBleHRlcm5hbFxyXG4gICAgICBpbmxpbmVFeHRlcm5hbCxcclxuICAgICAgLy8gRmlsdGVyIGRlZlxyXG4gICAgICBpbmxpbmVGaWx0ZXJEZWYsXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gICNpbml0VmFsdWUgPSAoXHJcbiAgICBhcmdzOiB7XHJcbiAgICAgIGNvbHVtbnM6IFNkR3JpZE1hdGVyaWFsQ29sdW1uW107XHJcbiAgICAgIGV4dGVybmFsRmlsdGVyczogU2RHcmlkTWF0ZXJpYWxFeHRlcm5hbEZpbHRlcltdO1xyXG4gICAgICBmaWx0ZXJEZWZzOiBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlW107XHJcbiAgICB9LFxyXG4gICAgdmFsdWU6IFNkR3JpZE1hdGVyaWFsRmlsdGVyVmFsdWVcclxuICApOiBTZEdyaWRNYXRlcmlhbEZpbHRlclZhbHVlID0+IHtcclxuICAgIGNvbnN0IGNvbHVtbkZpbHRlcjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgY29uc3QgZXh0ZXJuYWxGaWx0ZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAgIGNvbnN0IGZpbHRlckRlZjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBleHRlcm5hbEZpbHRlcnMsIGZpbHRlckRlZnMgfSA9IGFyZ3M7XHJcbiAgICAvLyBGaWx0ZXIgY29sdW1uXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sdW1ucyB8fCBbXSkge1xyXG4gICAgICBjb2x1bW5GaWx0ZXJbaXRlbS5maWVsZF0gPSB2YWx1ZT8uY29sdW1uRmlsdGVyPy5baXRlbS5maWVsZF0gPz8gaXRlbT8uZmlsdGVyPy5kZWZhdWx0O1xyXG4gICAgfVxyXG4gICAgLy8gRmlsdGVyIGV4dGVybmFsXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZXh0ZXJuYWxGaWx0ZXJzIHx8IFtdKSB7XHJcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdkYXRlcmFuZ2UnKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbaXRlbS5maWVsZF0gPSB7XHJcbiAgICAgICAgICBmcm9tOiB2YWx1ZT8uZXh0ZXJuYWxGaWx0ZXI/LltpdGVtLmZpZWxkXT8uZnJvbSA/PyBpdGVtLmRlZmF1bHQ/LmZyb20sXHJcbiAgICAgICAgICB0bzogdmFsdWU/LmV4dGVybmFsRmlsdGVyPy5baXRlbS5maWVsZF0/LnRvID8/IGl0ZW0uZGVmYXVsdD8udG8sXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltpdGVtLmZpZWxkXSA9IHZhbHVlPy5leHRlcm5hbEZpbHRlcj8uW2l0ZW0uZmllbGRdID8/IGl0ZW0/LmRlZmF1bHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIEZpbHRlciBkZWZcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBmaWx0ZXJEZWZzIHx8IFtdKSB7XHJcbiAgICAgIGZpbHRlckRlZltpdGVtLnNkTWF0ZXJpYWxGaWx0ZXJEZWZdID0gdmFsdWU/LmZpbHRlckRlZj8uW2l0ZW0uc2RNYXRlcmlhbEZpbHRlckRlZl0gPz8gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLy8gRmlsdGVyIGNvbHVtblxyXG4gICAgICBjb2x1bW5GaWx0ZXIsXHJcbiAgICAgIC8vIEZpbHRlciBleHRlcm5hbFxyXG4gICAgICBleHRlcm5hbEZpbHRlcixcclxuICAgICAgLy8gRmlsdGVyIGRlZlxyXG4gICAgICBmaWx0ZXJEZWYsXHJcbiAgICB9O1xyXG4gIH07XHJcbn1cclxuIl19
|