@theseam/ui-common 0.2.7 → 0.2.11
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/breadcrumbs/theseam-ui-common-breadcrumbs.metadata.json +1 -1
- package/bundles/theseam-ui-common-breadcrumbs.umd.js +10 -32
- package/bundles/theseam-ui-common-breadcrumbs.umd.js.map +1 -1
- package/bundles/theseam-ui-common-data-exporter.umd.js.map +1 -1
- package/bundles/theseam-ui-common-datatable.umd.js +54 -4
- package/bundles/theseam-ui-common-datatable.umd.js.map +1 -1
- package/bundles/theseam-ui-common-framework.umd.js +2 -2
- package/bundles/theseam-ui-common-framework.umd.js.map +1 -1
- package/bundles/theseam-ui-common-unsaved-changes-dialog.umd.js +1 -0
- package/bundles/theseam-ui-common-unsaved-changes-dialog.umd.js.map +1 -1
- package/bundles/theseam-ui-common-utils.umd.js +5 -0
- package/bundles/theseam-ui-common-utils.umd.js.map +1 -1
- package/data-exporter/data-exporter.d.ts +4 -0
- package/data-exporter/theseam-ui-common-data-exporter.metadata.json +1 -1
- package/datatable/datatable/datatable.component.d.ts +2 -0
- package/datatable/datatable-footer/datatable-footer-tpl.directive.d.ts +5 -0
- package/datatable/datatable-footer/datatable-footer.directive.d.ts +6 -0
- package/datatable/public-api.d.ts +2 -0
- package/datatable/theseam-ui-common-datatable.metadata.json +1 -1
- package/esm2015/breadcrumbs/breadcrumbs.service.js +11 -33
- package/esm2015/data-exporter/data-exporter.js +1 -1
- package/esm2015/datatable/datatable/datatable.component.js +5 -3
- package/esm2015/datatable/datatable-export-button/datatable-export-button.component.js +8 -3
- package/esm2015/datatable/datatable-footer/datatable-footer-tpl.directive.js +15 -0
- package/esm2015/datatable/datatable-footer/datatable-footer.directive.js +18 -0
- package/esm2015/datatable/datatable.module.js +7 -1
- package/esm2015/datatable/public-api.js +3 -1
- package/esm2015/framework/side-nav/side-nav-item/side-nav-item.component.js +3 -3
- package/esm2015/unsaved-changes-dialog/unsaved-changes-can-deactivate.js +3 -2
- package/esm2015/utils/router/index.js +2 -1
- package/esm2015/utils/router/is-empty-url-route.js +4 -0
- package/fesm2015/theseam-ui-common-breadcrumbs.js +11 -33
- package/fesm2015/theseam-ui-common-breadcrumbs.js.map +1 -1
- package/fesm2015/theseam-ui-common-data-exporter.js.map +1 -1
- package/fesm2015/theseam-ui-common-datatable.js +45 -5
- package/fesm2015/theseam-ui-common-datatable.js.map +1 -1
- package/fesm2015/theseam-ui-common-framework.js +2 -2
- package/fesm2015/theseam-ui-common-framework.js.map +1 -1
- package/fesm2015/theseam-ui-common-unsaved-changes-dialog.js +1 -0
- package/fesm2015/theseam-ui-common-unsaved-changes-dialog.js.map +1 -1
- package/fesm2015/theseam-ui-common-utils.js +5 -1
- package/fesm2015/theseam-ui-common-utils.js.map +1 -1
- package/framework/side-nav/side-nav-item/side-nav-item.component.scss +36 -9
- package/framework/theseam-ui-common-framework.metadata.json +1 -1
- package/package.json +1 -1
- package/styles/common/_table.scss +0 -5
- package/styles/vendor/ngx-datatable/_ngx-datatable.scss +478 -87
- package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +174 -0
- package/styles/vendor/ngx-datatable/_themes/dark/_variables.scss +166 -0
- package/styles/vendor/ngx-datatable/_themes/material/_variables.scss +165 -0
- package/styles/vendor/ngx-datatable/_variables.scss +3 -0
- package/unsaved-changes-dialog/theseam-ui-common-unsaved-changes-dialog.metadata.json +1 -1
- package/utils/router/index.d.ts +1 -0
- package/utils/router/is-empty-url-route.d.ts +2 -0
- package/utils/theseam-ui-common-utils.metadata.json +1 -1
|
@@ -17,13 +17,9 @@ export class TheSeamBreadcrumbsService {
|
|
|
17
17
|
this._router = _router;
|
|
18
18
|
this._activatedRoute = _activatedRoute;
|
|
19
19
|
// public readonly breadcrumbDataKey = 'breadcrumb'
|
|
20
|
-
// public readonly breadcrumbAppendPrevDataKey = 'breadcrumbAppendPrev'
|
|
21
|
-
// public readonly breadcrumbAppendNextDataKey = 'breadcrumbAppendNext'
|
|
22
20
|
this.dataProps = [
|
|
23
21
|
'breadcrumb',
|
|
24
22
|
'breadcrumbExtras',
|
|
25
|
-
// 'breadcrumbAppendPrev',
|
|
26
|
-
// 'breadcrumbAppendNext',
|
|
27
23
|
];
|
|
28
24
|
this.crumbs$ = this._crumbsFromRoute();
|
|
29
25
|
}
|
|
@@ -45,30 +41,22 @@ export class TheSeamBreadcrumbsService {
|
|
|
45
41
|
};
|
|
46
42
|
let found = false;
|
|
47
43
|
for (const prop of this.dataProps) {
|
|
44
|
+
if (prop === 'breadcrumb' && !willHaveDataProp(activatedRoute, prop)) {
|
|
45
|
+
// Need to skip if the 'breadcrumb' data prop is not in the config,
|
|
46
|
+
// because we will get duplicates if the data 'breadcrumb' prop is
|
|
47
|
+
// inheritted from a parent route.
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
48
50
|
if (hasProperty(data, prop)) {
|
|
49
51
|
bcData[prop] = data[prop];
|
|
50
52
|
found = true;
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
// }
|
|
57
|
-
// if (hasProperty(data, 'breadcrumbExtras')) {
|
|
58
|
-
// const extras: BreadcrumbDataExtras = data['breadcrumbExtras']
|
|
59
|
-
// bcData.breadcrumbExtras = extras
|
|
60
|
-
// if (hasProperty(extras, 'dataProps')) {
|
|
61
|
-
// const s = extras.dataProps.map(p => `(${data[p]})`).join(' ')
|
|
62
|
-
// if (hasProperty(bcData, 'breadcrumb')) {
|
|
63
|
-
// bcData.breadcrumb += ' ' + s
|
|
64
|
-
// } else {
|
|
65
|
-
// bcData.breadcrumb = s
|
|
66
|
-
// }
|
|
67
|
-
// }
|
|
68
|
-
// found = true
|
|
69
|
-
// }
|
|
55
|
+
if (!found) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
70
58
|
bcData.extrasPropRefs = this._getBreadcrumbExtrasDataProps(bcData);
|
|
71
|
-
return
|
|
59
|
+
return bcData;
|
|
72
60
|
}));
|
|
73
61
|
}
|
|
74
62
|
_applyBreadcrumbExtras(datas) {
|
|
@@ -80,16 +68,6 @@ export class TheSeamBreadcrumbsService {
|
|
|
80
68
|
continue;
|
|
81
69
|
}
|
|
82
70
|
newDatas.push(data);
|
|
83
|
-
// if (hasProperty(data, 'breadcrumbExtras')) {
|
|
84
|
-
// const extras: BreadcrumbDataExtras = data['breadcrumbExtras']
|
|
85
|
-
// data.breadcrumbExtras = extras
|
|
86
|
-
// if (hasProperty(extras, 'dataProps')) {
|
|
87
|
-
// const s = extras.dataProps.map(p => `(${data[p]})`).join(' ')
|
|
88
|
-
// if (hasProperty(data, 'breadcrumb')) {
|
|
89
|
-
// data.breadcrumb += ' ' + s
|
|
90
|
-
// }
|
|
91
|
-
// }
|
|
92
|
-
// }
|
|
93
71
|
pending = [];
|
|
94
72
|
}
|
|
95
73
|
if (newDatas.length === 0) {
|
|
@@ -177,4 +155,4 @@ TheSeamBreadcrumbsService.ctorParameters = () => [
|
|
|
177
155
|
{ type: Router },
|
|
178
156
|
{ type: ActivatedRoute }
|
|
179
157
|
];
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9icmVhZGNydW1icy9icmVhZGNydW1icy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUE7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWxFLE9BQU8sRUFFTCxXQUFXLEVBRVgsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2pCLE1BQU0sMEJBQTBCLENBQUE7OztBQTRCakMsTUFBTSxPQUFPLHlCQUF5QjtJQWVwQyxZQUNtQixPQUFlLEVBQ2YsZUFBK0I7UUFFaEQsMkNBQTJDO1FBQzNDLHFEQUFxRDtRQUNyRCxvQ0FBb0M7UUFDcEMscUNBQXFDO1FBQ3JDLG1FQUFtRTtRQUNuRSwwRkFBMEY7UUFDMUYsSUFBSTtRQVRhLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFmbEQsbURBQW1EO1FBQ25ELHVFQUF1RTtRQUN2RSx1RUFBdUU7UUFFdEQsY0FBUyxHQUFxRDtZQUM3RSxZQUFZO1lBQ1osa0JBQWtCO1lBQ2xCLDBCQUEwQjtZQUMxQiwwQkFBMEI7U0FDM0IsQ0FBQTtRQWdCQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO0lBQ3hDLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFD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QVksQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLFVBQVUsR0FBc0I7b0JBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDdEIsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUN6RCxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWM7aUJBQzNCLENBQUE7Z0JBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTthQUM3QjtTQUNGO1FBRUQsT0FBTyxXQUFXLENBQUE7SUFDcEIsQ0FBQzs7OztZQXpORixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXZDdUMsTUFBTTtZQUFyQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHtcbiAgYWN0aXZhdGVkUm91dGVzV2l0aERhdGFQcm9wZXJ0eSxcbiAgaGFzUHJvcGVydHksXG4gIElBY3RpdmF0ZWRSb3V0ZVdpdGhEYXRhLFxuICBsZWFmQ2hpbGRSb3V0ZSxcbiAgbm90TnVsbE9yVW5kZWZpbmVkLFxuICByb3V0ZVNuYXBzaG90UGF0aEZ1bGwsXG4gIHdpbGxIYXZlRGF0YVByb3Bcbn0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xuXG5pbXBvcnQgeyBUaGVTZWFtQnJlYWRjcnVtYiB9IGZyb20gJy4vYnJlYWRjcnVtYidcblxuaW50ZXJmYWNlIEJyZWFkY3J1bWJEYXRhRXh0cmFzIHtcbiAgZGF0YVByb3BzPzogc3RyaW5nW11cbn1cblxuaW50ZXJmYWNlIEV4dHJhc1Byb3BSZWYge1xuICBwcm9wOiBzdHJpbmdcbiAgdmFsdWU6IE9ic2VydmFibGU8c3RyaW5nPlxufVxuXG5pbnRlcmZhY2UgQnJlYWRjcnVtYkRhdGEge1xuICBicmVhZGNydW1iPzogc3RyaW5nXG4gIGJyZWFkY3J1bWJFeHRyYXM/OiBCcmVhZGNydW1iRGF0YUV4dHJhc1xuICAvLyBicmVhZGNydW1iQXBwZW5kUHJldj86IHN0cmluZ1xuICAvLyBicmVhZGNydW1iQXBwZW5kTmV4dD86IHN0cmluZ1xuXG4gIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICBleHRyYXNQcm9wUmVmczogRXh0cmFzUHJvcFJlZltdXG59XG5cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUaGVTZWFtQnJlYWRjcnVtYnNTZXJ2aWNlIHtcblxuICAvLyBwdWJsaWMgcmVhZG9ubHkgYnJlYWRjcnVtYkRhdGFLZXkgPSAnYnJlYWRjcnVtYidcbiAgLy8gcHVibGljIHJlYWRvbmx5IGJyZWFkY3J1bWJBcHBlbmRQcmV2RGF0YUtleSA9ICdicmVhZGNydW1iQXBwZW5kUHJldidcbiAgLy8gcHVibGljIHJlYWRvbmx5IGJyZWFkY3J1bWJBcHBlbmROZXh0RGF0YUtleSA9ICdicmVhZGNydW1iQXBwZW5kTmV4dCdcblxuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFQcm9wczogKGtleW9mIE9taXQ8QnJlYWRjcnVtYkRhdGEsICdhY3RpdmF0ZWRSb3V0ZSc+KVtdID0gW1xuICAgICdicmVhZGNydW1iJyxcbiAgICAnYnJlYWRjcnVtYkV4dHJhcycsXG4gICAgLy8gJ2JyZWFkY3J1bWJBcHBlbmRQcmV2JyxcbiAgICAvLyAnYnJlYWRjcnVtYkFwcGVuZE5leHQnLFxuICBdXG5cbiAgcHVibGljIHJlYWRvbmx5IGNydW1icyQ6IE9ic2VydmFibGU8VGhlU2VhbUJyZWFkY3J1bWJbXT5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgLy8gdGhpcy5jcnVtYnMkID0gdGhpcy5fcm91dGVyLmV2ZW50cy5waXBlKFxuICAgIC8vICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgLy8gICBtYXAoXyA9PiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZSksXG4gICAgLy8gICBzdGFydFdpdGgodGhpcy5fYWN0aXZhdGVkUm91dGUpLFxuICAgIC8vICAgYWN0aXZhdGVkUm91dGVzV2l0aERhdGFQcm9wZXJ0eSh0aGlzLmJyZWFkY3J1bWJEYXRhS2V5LCB0cnVlKSxcbiAgICAvLyAgIHN3aXRjaE1hcChyd2RBcnIgPT4gY29tYmluZUxhdGVzdChyd2RBcnIubWFwKHJ3ZCA9PiB0aGlzLl9wYXJzZUJyZWFkY3J1bWJEYXRhKHJ3ZCkpKSlcbiAgICAvLyApXG5cbiAgICB0aGlzLmNydW1icyQgPSB0aGlzLl9jcnVtYnNGcm9tUm91dGUoKVxuICB9XG5cbiAgcHJpdmF0ZSBfY3J1bWJzRnJvbVJvdXRlKCk6IE9ic2VydmFibGU8VGhlU2VhbUJyZWFkY3J1bWJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICBmaWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgTmF2aWdhdGlvbkVuZCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgbWFwKCgpID0+IHRoaXMuX2FjdGl2YXRlZFJvdXRlKSxcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLl9hY3RpdmF0ZWRSb3V0ZSksXG4gICAgICBzd2l0Y2hNYXAoYWN0aXZhdGVkUm91dGUgPT4gdGhpcy5fY3J1bWJzRnJvbUFjdGl2YXRlZFJvdXRlKGFjdGl2YXRlZFJvdXRlKSlcbiAgICApXG4gIH1cblxuICBwcml2YXRlIF9jcnVtYnNGcm9tQWN0aXZhdGVkUm91dGUoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKTogT2JzZXJ2YWJsZTxUaGVTZWFtQnJlYWRjcnVtYltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2JyZWFkY3J1bWJEYXRhc0Zyb21Sb290KGFjdGl2YXRlZFJvdXRlKS5waXBlKFxuICAgICAgbWFwKGJjRGF0YXMgPT4gdGhpcy5fYnJlYWRjcnVtYnNGcm9tRGF0YShiY0RhdGFzKSlcbiAgICApXG4gIH1cblxuICBwcml2YXRlIF9icmVhZGNydW1iRGF0YXNGcm9tUm9vdChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBPYnNlcnZhYmxlPEJyZWFkY3J1bWJEYXRhW10+IHtcbiAgICBjb25zdCBiY0RhdGFPYnMgPSBsZWFmQ2hpbGRSb3V0ZShhY3RpdmF0ZWRSb3V0ZSkucGF0aEZyb21Sb290Lm1hcChyID0+IHRoaXMuX2JyZWFkY3J1bWJEYXRhKHIpKVxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGJjRGF0YU9icykucGlwZShcbiAgICAgIG1hcCh2ID0+IHYuZmlsdGVyKG5vdE51bGxPclVuZGVmaW5lZCkpLFxuICAgICAgc3dpdGNoTWFwKHYgPT4gdGhpcy5fYXBwbHlCcmVhZGNydW1iRXh0cmFzKHYpKSxcbiAgICApXG4gIH1cblxuICBwcml2YXRlIF9icmVhZGNydW1iRGF0YShhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBPYnNlcnZhYmxlPEJyZWFkY3J1bWJEYXRhIHwgbnVsbD4ge1xuICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZS5kYXRhLnBpcGUoXG4gICAgICBtYXAoZGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IGJjRGF0YTogQnJlYWRjcnVtYkRhdGEgPSB7XG4gICAgICAgICAgYWN0aXZhdGVkUm91dGU6IGFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgIGV4dHJhc1Byb3BSZWZzOiBbXVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZvdW5kID0gZmFsc2VcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMuZGF0YVByb3BzKSB7XG4gICAgICAgICAgaWYgKGhhc1Byb3BlcnR5KGRhdGEsIHByb3ApKSB7XG4gICAgICAgICAgICBiY0RhdGFbcHJvcF0gPSBkYXRhW3Byb3BdXG4gICAgICAgICAgICBmb3VuZCA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiAoaGFzUHJvcGVydHkoZGF0YSwgJ2JyZWFkY3J1bWInKSkge1xuICAgICAgICAvLyAgIGJjRGF0YS5icmVhZGNydW1iID0gZGF0YVsnYnJlYWRjcnVtYiddXG4gICAgICAgIC8vICAgZm91bmQgPSB0cnVlXG4gICAgICAgIC8vIH1cblxuICAgICAgICAvLyBpZiAoaGFzUHJvcGVydHkoZGF0YSwgJ2JyZWFkY3J1bWJFeHRyYXMnKSkge1xuICAgICAgICAvLyAgIGNvbnN0IGV4dHJhczogQnJlYWRjcnVtYkRhdGFFeHRyYXMgPSBkYXRhWydicmVhZGNydW1iRXh0cmFzJ11cbiAgICAgICAgLy8gICBiY0RhdGEuYnJlYWRjcnVtYkV4dHJhcyA9IGV4dHJhc1xuICAgICAgICAvLyAgIGlmIChoYXNQcm9wZXJ0eShleHRyYXMsICdkYXRhUHJvcHMnKSkge1xuICAgICAgICAvLyAgICAgY29uc3QgcyA9IGV4dHJhcy5kYXRhUHJvcHMubWFwKHAgPT4gYCgke2RhdGFbcF19KWApLmpvaW4oJyAnKVxuICAgICAgICAvLyAgICAgaWYgKGhhc1Byb3BlcnR5KGJjRGF0YSwgJ2JyZWFkY3J1bWInKSkge1xuICAgICAgICAvLyAgICAgICBiY0RhdGEuYnJlYWRjcnVtYiArPSAnICcgKyBzXG4gICAgICAgIC8vICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICBiY0RhdGEuYnJlYWRjcnVtYiA9IHNcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vICAgZm91bmQgPSB0cnVlXG4gICAgICAgIC8vIH1cblxuICAgICAgICBiY0RhdGEuZXh0cmFzUHJvcFJlZnMgPSB0aGlzLl9nZXRCcmVhZGNydW1iRXh0cmFzRGF0YVByb3BzKGJjRGF0YSlcblxuICAgICAgICByZXR1cm4gZm91bmQgPyBiY0RhdGEgOiBudWxsXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5QnJlYWRjcnVtYkV4dHJhcyhkYXRhczogQnJlYWRjcnVtYkRhdGFbXSk6IE9ic2VydmFibGU8QnJlYWRjcnVtYkRhdGFbXT4ge1xuICAgIGNvbnN0IG5ld0RhdGFzOiBCcmVhZGNydW1iRGF0YVtdID0gW11cblxuICAgIGxldCBwZW5kaW5nOiBCcmVhZGNydW1iRGF0YVtdID0gW11cbiAgICBmb3IgKGNvbnN0IGRhdGEgb2YgZGF0YXMpIHtcbiAgICAgIGlmICghaGFzUHJvcGVydHkoZGF0YSwgJ2JyZWFkY3J1bWInKSkge1xuICAgICAgICBwZW5kaW5nLnB1c2goZGF0YSlcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgbmV3RGF0YXMucHVzaChkYXRhKVxuXG4gICAgICAvLyBpZiAoaGFzUHJvcGVydHkoZGF0YSwgJ2JyZWFkY3J1bWJFeHRyYXMnKSkge1xuICAgICAgLy8gICBjb25zdCBleHRyYXM6IEJyZWFkY3J1bWJEYXRhRXh0cmFzID0gZGF0YVsnYnJlYWRjcnVtYkV4dHJhcyddXG4gICAgICAvLyAgIGRhdGEuYnJlYWRjcnVtYkV4dHJhcyA9IGV4dHJhc1xuICAgICAgLy8gICBpZiAoaGFzUHJvcGVydHkoZXh0cmFzLCAnZGF0YVByb3BzJykpIHtcbiAgICAgIC8vICAgICBjb25zdCBzID0gZXh0cmFzLmRhdGFQcm9wcy5tYXAocCA9PiBgKCR7ZGF0YVtwXX0pYCkuam9pbignICcpXG4gICAgICAvLyAgICAgaWYgKGhhc1Byb3BlcnR5KGRhdGEsICdicmVhZGNydW1iJykpIHtcbiAgICAgIC8vICAgICAgIGRhdGEuYnJlYWRjcnVtYiArPSAnICcgKyBzXG4gICAgICAvLyAgICAgfVxuICAgICAgLy8gICB9XG4gICAgICAvLyB9XG5cbiAgICAgIHBlbmRpbmcgPSBbXVxuICAgIH1cblxuICAgIGlmIChuZXdEYXRhcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBvZihbXSlcbiAgICB9XG5cbiAgICBpZiAocGVuZGluZy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBhZGQgZXh0cmFzXG4gICAgICBuZXdEYXRhc1tuZXdEYXRhcy5sZW5ndGggLSAxXS5leHRyYXNQcm9wUmVmcyA9IHRoaXMuX2ZpbHRlckV4dHJhc1Byb3BSZWZzKFtcbiAgICAgICAgLi4ubmV3RGF0YXNbbmV3RGF0YXMubGVuZ3RoIC0gMV0uZXh0cmFzUHJvcFJlZnMsXG4gICAgICAgIC4uLnBlbmRpbmcubWFwKHAgPT4gcC5leHRyYXNQcm9wUmVmcykucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBbIC4uLnByZXYsIC4uLmN1cnIgXSwgW10pXG4gICAgICBdKVxuICAgIH1cblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KG5ld0RhdGFzLm1hcChkYXRhID0+IHtcbiAgICAgIGlmIChkYXRhLmV4dHJhc1Byb3BSZWZzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gb2YoZGF0YSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuX29ic2VydmVFeHRyYXNQcm9wUmVmcyhkYXRhLmV4dHJhc1Byb3BSZWZzKS5waXBlKFxuICAgICAgICBtYXAoZXh0cmFzU3RyID0+IHtcbiAgICAgICAgICBkYXRhLmJyZWFkY3J1bWIgPSBkYXRhLmJyZWFkY3J1bWIgKyAnICcgKyBleHRyYXNTdHJcbiAgICAgICAgICByZXR1cm4gZGF0YVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH0pKVxuICB9XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZUV4dHJhc1Byb3BSZWZzKHByb3BSZWZzOiBFeHRyYXNQcm9wUmVmW10pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHByb3BSZWZzLm1hcChwZiA9PiBwZi52YWx1ZSkpLnBpcGUoXG4gICAgICBtYXAodmFsdWVzID0+IHZhbHVlcy5tYXAodiA9PiBgKCR7dn0pYCkuam9pbignICcpKVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgX2dldEJyZWFkY3J1bWJFeHRyYXNEYXRhUHJvcHMoZGF0YTogQnJlYWRjcnVtYkRhdGEpOiBFeHRyYXNQcm9wUmVmW10ge1xuICAgIGlmICghaGFzUHJvcGVydHkoZGF0YSwgJ2JyZWFkY3J1bWJFeHRyYXMnKSkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgaWYgKCFoYXNQcm9wZXJ0eShkYXRhLmJyZWFkY3J1bWJFeHRyYXMsICdkYXRhUHJvcHMnKSkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgY29uc3QgcHJvcFJlZnMgPSBkYXRhLmJyZWFkY3J1bWJFeHRyYXMuZGF0YVByb3BzLm1hcChwcm9wID0+IHtcbiAgICAgIHJldHVybiB7IHByb3A6IHByb3AsIHZhbHVlOiB0aGlzLl9nZXREYXRhUHJvcChkYXRhLmFjdGl2YXRlZFJvdXRlLCBwcm9wKSB9XG4gICAgfSlcblxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJFeHRyYXNQcm9wUmVmcyhwcm9wUmVmcylcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbHRlckV4dHJhc1Byb3BSZWZzKHByb3BSZWZzOiBFeHRyYXNQcm9wUmVmW10pOiBFeHRyYXNQcm9wUmVmW10ge1xuICAgIGNvbnN0IHNlZW46IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0geyB9XG4gICAgcmV0dXJuIHByb3BSZWZzLmZpbHRlcihwcm9wUmVmID0+IHtcbiAgICAgIGlmIChzZWVuW3Byb3BSZWYucHJvcF0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBzZWVuW3Byb3BSZWYucHJvcF0gPSB0cnVlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIF9nZXREYXRhUHJvcChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByb3A6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKGFjdGl2YXRlZFJvdXRlLnJvdXRlQ29uZmlnICE9PSBudWxsKSB7XG4gICAgICBpZiAod2lsbEhhdmVEYXRhUHJvcChhY3RpdmF0ZWRSb3V0ZSwgcHJvcCkpIHtcbiAgICAgICAgcmV0dXJuIGFjdGl2YXRlZFJvdXRlLmRhdGEucGlwZShtYXAoZCA9PiBkW3Byb3BdKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgciA9IGFjdGl2YXRlZFJvdXRlLnBhcmVudFxuICAgIHdoaWxlIChyICE9PSBudWxsKSB7XG4gICAgICBpZiAod2lsbEhhdmVEYXRhUHJvcChyLCBwcm9wKSkge1xuICAgICAgICByZXR1cm4gci5kYXRhLnBpcGUobWFwKGQgPT4gZFtwcm9wXSkpXG4gICAgICB9XG5cbiAgICAgIHIgPSByLnBhcmVudFxuICAgIH1cblxuICAgIHRocm93IEVycm9yKGBEYXRhUHJvcCAnJHtwcm9wfScgbm90IGZvdW5kLmApXG4gIH1cblxuICBwcml2YXRlIF9icmVhZGNydW1ic0Zyb21EYXRhKGRhdGFzOiBCcmVhZGNydW1iRGF0YVtdKTogVGhlU2VhbUJyZWFkY3J1bWJbXSB7XG4gICAgY29uc3QgYnJlYWRjcnVtYnM6IFRoZVNlYW1CcmVhZGNydW1iW10gPSBbXVxuXG4gICAgZm9yIChjb25zdCBkYXRhIG9mIGRhdGFzKSB7XG4gICAgICBpZiAoaGFzUHJvcGVydHkoZGF0YSwgJ2JyZWFkY3J1bWInKSkge1xuICAgICAgICBjb25zdCBicmVhZGNydW1iOiBUaGVTZWFtQnJlYWRjcnVtYiA9IHtcbiAgICAgICAgICB2YWx1ZTogZGF0YS5icmVhZGNydW1iLFxuICAgICAgICAgIHBhdGg6IHJvdXRlU25hcHNob3RQYXRoRnVsbChkYXRhLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90KSxcbiAgICAgICAgICByb3V0ZTogZGF0YS5hY3RpdmF0ZWRSb3V0ZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFkY3J1bWJzLnB1c2goYnJlYWRjcnVtYilcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYnJlYWRjcnVtYnNcbiAgfVxuXG4gIC8vIHByaXZhdGUgX3BhcnNlQnJlYWRjcnVtYkRhdGEocm91dGVXaXRoRGF0YTogSUFjdGl2YXRlZFJvdXRlV2l0aERhdGEpOiBPYnNlcnZhYmxlPFRoZVNlYW1CcmVhZGNydW1iPiB7XG4gIC8vICAgY29uc3QgY3J1bWJWYWx1ZSA9IHJvdXRlV2l0aERhdGEuZGF0YVt0aGlzLmJyZWFkY3J1bWJEYXRhS2V5XVxuICAvLyAgIGNvbnN0IHJvdXRlID0gcm91dGVXaXRoRGF0YS5yb3V0ZVxuICAvLyAgIGNvbnN0IHBhdGggPSByb3V0ZVNuYXBzaG90UGF0aEZ1bGwocm91dGUuc25hcHNob3QpXG4gIC8vICAgbGV0IHZhbHVlID0gJydcblxuICAvLyAgIGlmICh0eXBlb2YgY3J1bWJWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgLy8gICAgIHZhbHVlID0gY3J1bWJWYWx1ZVxuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgLy8gICAgICAgY29uc29sZS53YXJuKFxuICAvLyAgICAgICAgICdbVGhlU2VhbUJyZWFkY3J1bWJzU2VydmljZV0gT25seSBzdHJpbmcgYnJlYWRjcnVtYnMgYXJlIHN1cHBvcnRlZCBjdXJyZW50bHkuICdcbiAgLy8gICAgICAgICArICdVc2UgYSByZXNvbHZlciBpZiB0aGUgdmFsdWUgbmVlZHMgdG8gYmUgZHluYW1pY2FsbHkgY2FsY3VsYXRlZC4nXG4gIC8vICAgICAgIClcbiAgLy8gICAgIH1cbiAgLy8gICB9XG5cbiAgLy8gICByZXR1cm4gb2YoeyB2YWx1ZSwgcGF0aCwgcm91dGUgfSlcbiAgLy8gfVxuXG59XG4iXX0=
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9icmVhZGNydW1icy9icmVhZGNydW1icy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUE7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWxFLE9BQU8sRUFFTCxXQUFXLEVBR1gsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2pCLE1BQU0sMEJBQTBCLENBQUE7OztBQTBCakMsTUFBTSxPQUFPLHlCQUF5QjtJQVdwQyxZQUNtQixPQUFlLEVBQ2YsZUFBK0I7UUFFaEQsMkNBQTJDO1FBQzNDLHFEQUFxRDtRQUNyRCxvQ0FBb0M7UUFDcEMscUNBQXFDO1FBQ3JDLG1FQUFtRTtRQUNuRSwwRkFBMEY7UUFDMUYsSUFBSTtRQVRhLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFYbEQsbURBQW1EO1FBRWxDLGNBQVMsR0FBcUQ7WUFDN0UsWUFBWTtZQUNaLGtCQUFrQjtTQUNuQixDQUFBO1FBZ0JDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7SUFDeEMsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDN0IsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUEwQixFQUFF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VyxDQUFBO0lBQ3BCLENBQUM7Ozs7WUFsTUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUF0Q3VDLE1BQU07WUFBckMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7XG4gIGFjdGl2YXRlZFJvdXRlc1dpdGhEYXRhUHJvcGVydHksXG4gIGhhc1Byb3BlcnR5LFxuICBJQWN0aXZhdGVkUm91dGVXaXRoRGF0YSxcbiAgaXNFbXB0eVVybFJvdXRlLFxuICBsZWFmQ2hpbGRSb3V0ZSxcbiAgbm90TnVsbE9yVW5kZWZpbmVkLFxuICByb3V0ZVNuYXBzaG90UGF0aEZ1bGwsXG4gIHdpbGxIYXZlRGF0YVByb3Bcbn0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xuXG5pbXBvcnQgeyBUaGVTZWFtQnJlYWRjcnVtYiB9IGZyb20gJy4vYnJlYWRjcnVtYidcblxuaW50ZXJmYWNlIEJyZWFkY3J1bWJEYXRhRXh0cmFzIHtcbiAgZGF0YVByb3BzPzogc3RyaW5nW11cbn1cblxuaW50ZXJmYWNlIEV4dHJhc1Byb3BSZWYge1xuICBwcm9wOiBzdHJpbmdcbiAgdmFsdWU6IE9ic2VydmFibGU8c3RyaW5nPlxufVxuXG5pbnRlcmZhY2UgQnJlYWRjcnVtYkRhdGEge1xuICBicmVhZGNydW1iPzogc3RyaW5nXG4gIGJyZWFkY3J1bWJFeHRyYXM/OiBCcmVhZGNydW1iRGF0YUV4dHJhc1xuXG4gIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICBleHRyYXNQcm9wUmVmczogRXh0cmFzUHJvcFJlZltdXG59XG5cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUaGVTZWFtQnJlYWRjcnVtYnNTZXJ2aWNlIHtcblxuICAvLyBwdWJsaWMgcmVhZG9ubHkgYnJlYWRjcnVtYkRhdGFLZXkgPSAnYnJlYWRjcnVtYidcblxuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFQcm9wczogKGtleW9mIE9taXQ8QnJlYWRjcnVtYkRhdGEsICdhY3RpdmF0ZWRSb3V0ZSc+KVtdID0gW1xuICAgICdicmVhZGNydW1iJyxcbiAgICAnYnJlYWRjcnVtYkV4dHJhcycsXG4gIF1cblxuICBwdWJsaWMgcmVhZG9ubHkgY3J1bWJzJDogT2JzZXJ2YWJsZTxUaGVTZWFtQnJlYWRjcnVtYltdPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHtcbiAgICAvLyB0aGlzLmNydW1icyQgPSB0aGlzLl9yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgLy8gICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAvLyAgIG1hcChfID0+IHRoaXMuX2FjdGl2YXRlZFJvdXRlKSxcbiAgICAvLyAgIHN0YXJ0V2l0aCh0aGlzLl9hY3RpdmF0ZWRSb3V0ZSksXG4gICAgLy8gICBhY3RpdmF0ZWRSb3V0ZXNXaXRoRGF0YVByb3BlcnR5KHRoaXMuYnJlYWRjcnVtYkRhdGFLZXksIHRydWUpLFxuICAgIC8vICAgc3dpdGNoTWFwKHJ3ZEFyciA9PiBjb21iaW5lTGF0ZXN0KHJ3ZEFyci5tYXAocndkID0+IHRoaXMuX3BhcnNlQnJlYWRjcnVtYkRhdGEocndkKSkpKVxuICAgIC8vIClcblxuICAgIHRoaXMuY3J1bWJzJCA9IHRoaXMuX2NydW1ic0Zyb21Sb3V0ZSgpXG4gIH1cblxuICBwcml2YXRlIF9jcnVtYnNGcm9tUm91dGUoKTogT2JzZXJ2YWJsZTxUaGVTZWFtQnJlYWRjcnVtYltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdXRlci5ldmVudHMucGlwZShcbiAgICAgIGZpbHRlcigoZXZlbnQpOiBldmVudCBpcyBOYXZpZ2F0aW9uRW5kID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5fYWN0aXZhdGVkUm91dGUpLFxuICAgICAgc3RhcnRXaXRoKHRoaXMuX2FjdGl2YXRlZFJvdXRlKSxcbiAgICAgIHN3aXRjaE1hcChhY3RpdmF0ZWRSb3V0ZSA9PiB0aGlzLl9jcnVtYnNGcm9tQWN0aXZhdGVkUm91dGUoYWN0aXZhdGVkUm91dGUpKVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgX2NydW1ic0Zyb21BY3RpdmF0ZWRSb3V0ZShhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBPYnNlcnZhYmxlPFRoZVNlYW1CcmVhZGNydW1iW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYkRhdGFzRnJvbVJvb3QoYWN0aXZhdGVkUm91dGUpLnBpcGUoXG4gICAgICBtYXAoYmNEYXRhcyA9PiB0aGlzLl9icmVhZGNydW1ic0Zyb21EYXRhKGJjRGF0YXMpKVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgX2JyZWFkY3J1bWJEYXRhc0Zyb21Sb290KGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IE9ic2VydmFibGU8QnJlYWRjcnVtYkRhdGFbXT4ge1xuICAgIGNvbnN0IGJjRGF0YU9icyA9IGxlYWZDaGlsZFJvdXRlKGFjdGl2YXRlZFJvdXRlKS5wYXRoRnJvbVJvb3QubWFwKHIgPT4gdGhpcy5fYnJlYWRjcnVtYkRhdGEocikpXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoYmNEYXRhT2JzKS5waXBlKFxuICAgICAgbWFwKHYgPT4gdi5maWx0ZXIobm90TnVsbE9yVW5kZWZpbmVkKSksXG4gICAgICBzd2l0Y2hNYXAodiA9PiB0aGlzLl9hcHBseUJyZWFkY3J1bWJFeHRyYXModikpLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgX2JyZWFkY3J1bWJEYXRhKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IE9ic2VydmFibGU8QnJlYWRjcnVtYkRhdGEgfCBudWxsPiB7XG4gICAgcmV0dXJuIGFjdGl2YXRlZFJvdXRlLmRhdGEucGlwZShcbiAgICAgIG1hcChkYXRhID0+IHtcbiAgICAgICAgY29uc3QgYmNEYXRhOiBCcmVhZGNydW1iRGF0YSA9IHtcbiAgICAgICAgICBhY3RpdmF0ZWRSb3V0ZTogYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgZXh0cmFzUHJvcFJlZnM6IFtdXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZm91bmQgPSBmYWxzZVxuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5kYXRhUHJvcHMpIHtcbiAgICAgICAgICBpZiAocHJvcCA9PT0gJ2JyZWFkY3J1bWInICYmICF3aWxsSGF2ZURhdGFQcm9wKGFjdGl2YXRlZFJvdXRlLCBwcm9wKSkge1xuICAgICAgICAgICAgLy8gTmVlZCB0byBza2lwIGlmIHRoZSAnYnJlYWRjcnVtYicgZGF0YSBwcm9wIGlzIG5vdCBpbiB0aGUgY29uZmlnLFxuICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSB3aWxsIGdldCBkdXBsaWNhdGVzIGlmIHRoZSBkYXRhICdicmVhZGNydW1iJyBwcm9wIGlzXG4gICAgICAgICAgICAvLyBpbmhlcml0dGVkIGZyb20gYSBwYXJlbnQgcm91dGUuXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChoYXNQcm9wZXJ0eShkYXRhLCBwcm9wKSkge1xuICAgICAgICAgICAgYmNEYXRhW3Byb3BdID0gZGF0YVtwcm9wXVxuICAgICAgICAgICAgZm91bmQgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cblxuICAgICAgICBiY0RhdGEuZXh0cmFzUHJvcFJlZnMgPSB0aGlzLl9nZXRCcmVhZGNydW1iRXh0cmFzRGF0YVByb3BzKGJjRGF0YSlcblxuICAgICAgICByZXR1cm4gYmNEYXRhXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5QnJlYWRjcnVtYkV4dHJhcyhkYXRhczogQnJlYWRjcnVtYkRhdGFbXSk6IE9ic2VydmFibGU8QnJlYWRjcnVtYkRhdGFbXT4ge1xuICAgIGNvbnN0IG5ld0RhdGFzOiBCcmVhZGNydW1iRGF0YVtdID0gW11cblxuICAgIGxldCBwZW5kaW5nOiBCcmVhZGNydW1iRGF0YVtdID0gW11cbiAgICBmb3IgKGNvbnN0IGRhdGEgb2YgZGF0YXMpIHtcbiAgICAgIGlmICghaGFzUHJvcGVydHkoZGF0YSwgJ2JyZWFkY3J1bWInKSkge1xuICAgICAgICBwZW5kaW5nLnB1c2goZGF0YSlcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgbmV3RGF0YXMucHVzaChkYXRhKVxuXG4gICAgICBwZW5kaW5nID0gW11cbiAgICB9XG5cbiAgICBpZiAobmV3RGF0YXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2YoW10pXG4gICAgfVxuXG4gICAgaWYgKHBlbmRpbmcubGVuZ3RoID4gMCkge1xuICAgICAgLy8gYWRkIGV4dHJhc1xuICAgICAgbmV3RGF0YXNbbmV3RGF0YXMubGVuZ3RoIC0gMV0uZXh0cmFzUHJvcFJlZnMgPSB0aGlzLl9maWx0ZXJFeHRyYXNQcm9wUmVmcyhbXG4gICAgICAgIC4uLm5ld0RhdGFzW25ld0RhdGFzLmxlbmd0aCAtIDFdLmV4dHJhc1Byb3BSZWZzLFxuICAgICAgICAuLi5wZW5kaW5nLm1hcChwID0+IHAuZXh0cmFzUHJvcFJlZnMpLnJlZHVjZSgocHJldiwgY3VycikgPT4gWyAuLi5wcmV2LCAuLi5jdXJyIF0sIFtdKVxuICAgICAgXSlcbiAgICB9XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChuZXdEYXRhcy5tYXAoZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YS5leHRyYXNQcm9wUmVmcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG9mKGRhdGEpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9vYnNlcnZlRXh0cmFzUHJvcFJlZnMoZGF0YS5leHRyYXNQcm9wUmVmcykucGlwZShcbiAgICAgICAgbWFwKGV4dHJhc1N0ciA9PiB7XG4gICAgICAgICAgZGF0YS5icmVhZGNydW1iID0gZGF0YS5icmVhZGNydW1iICsgJyAnICsgZXh0cmFzU3RyXG4gICAgICAgICAgcmV0dXJuIGRhdGFcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9KSlcbiAgfVxuXG4gIHByaXZhdGUgX29ic2VydmVFeHRyYXNQcm9wUmVmcyhwcm9wUmVmczogRXh0cmFzUHJvcFJlZltdKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChwcm9wUmVmcy5tYXAocGYgPT4gcGYudmFsdWUpKS5waXBlKFxuICAgICAgbWFwKHZhbHVlcyA9PiB2YWx1ZXMubWFwKHYgPT4gYCgke3Z9KWApLmpvaW4oJyAnKSlcbiAgICApXG4gIH1cblxuICBwcml2YXRlIF9nZXRCcmVhZGNydW1iRXh0cmFzRGF0YVByb3BzKGRhdGE6IEJyZWFkY3J1bWJEYXRhKTogRXh0cmFzUHJvcFJlZltdIHtcbiAgICBpZiAoIWhhc1Byb3BlcnR5KGRhdGEsICdicmVhZGNydW1iRXh0cmFzJykpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIGlmICghaGFzUHJvcGVydHkoZGF0YS5icmVhZGNydW1iRXh0cmFzLCAnZGF0YVByb3BzJykpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIGNvbnN0IHByb3BSZWZzID0gZGF0YS5icmVhZGNydW1iRXh0cmFzLmRhdGFQcm9wcy5tYXAocHJvcCA9PiB7XG4gICAgICByZXR1cm4geyBwcm9wOiBwcm9wLCB2YWx1ZTogdGhpcy5fZ2V0RGF0YVByb3AoZGF0YS5hY3RpdmF0ZWRSb3V0ZSwgcHJvcCkgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyRXh0cmFzUHJvcFJlZnMocHJvcFJlZnMpXG4gIH1cblxuICBwcml2YXRlIF9maWx0ZXJFeHRyYXNQcm9wUmVmcyhwcm9wUmVmczogRXh0cmFzUHJvcFJlZltdKTogRXh0cmFzUHJvcFJlZltdIHtcbiAgICBjb25zdCBzZWVuOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHsgfVxuICAgIHJldHVybiBwcm9wUmVmcy5maWx0ZXIocHJvcFJlZiA9PiB7XG4gICAgICBpZiAoc2Vlbltwcm9wUmVmLnByb3BdKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgc2Vlbltwcm9wUmVmLnByb3BdID0gdHJ1ZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RGF0YVByb3AoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcm9wOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmIChhY3RpdmF0ZWRSb3V0ZS5yb3V0ZUNvbmZpZyAhPT0gbnVsbCkge1xuICAgICAgaWYgKHdpbGxIYXZlRGF0YVByb3AoYWN0aXZhdGVkUm91dGUsIHByb3ApKSB7XG4gICAgICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZS5kYXRhLnBpcGUobWFwKGQgPT4gZFtwcm9wXSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHIgPSBhY3RpdmF0ZWRSb3V0ZS5wYXJlbnRcbiAgICB3aGlsZSAociAhPT0gbnVsbCkge1xuICAgICAgaWYgKHdpbGxIYXZlRGF0YVByb3AociwgcHJvcCkpIHtcbiAgICAgICAgcmV0dXJuIHIuZGF0YS5waXBlKG1hcChkID0+IGRbcHJvcF0pKVxuICAgICAgfVxuXG4gICAgICByID0gci5wYXJlbnRcbiAgICB9XG5cbiAgICB0aHJvdyBFcnJvcihgRGF0YVByb3AgJyR7cHJvcH0nIG5vdCBmb3VuZC5gKVxuICB9XG5cbiAgcHJpdmF0ZSBfYnJlYWRjcnVtYnNGcm9tRGF0YShkYXRhczogQnJlYWRjcnVtYkRhdGFbXSk6IFRoZVNlYW1CcmVhZGNydW1iW10ge1xuICAgIGNvbnN0IGJyZWFkY3J1bWJzOiBUaGVTZWFtQnJlYWRjcnVtYltdID0gW11cblxuICAgIGZvciAoY29uc3QgZGF0YSBvZiBkYXRhcykge1xuICAgICAgaWYgKGhhc1Byb3BlcnR5KGRhdGEsICdicmVhZGNydW1iJykpIHtcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYjogVGhlU2VhbUJyZWFkY3J1bWIgPSB7XG4gICAgICAgICAgdmFsdWU6IGRhdGEuYnJlYWRjcnVtYixcbiAgICAgICAgICBwYXRoOiByb3V0ZVNuYXBzaG90UGF0aEZ1bGwoZGF0YS5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdCksXG4gICAgICAgICAgcm91dGU6IGRhdGEuYWN0aXZhdGVkUm91dGVcbiAgICAgICAgfVxuICAgICAgICBicmVhZGNydW1icy5wdXNoKGJyZWFkY3J1bWIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJyZWFkY3J1bWJzXG4gIH1cblxuICAvLyBwcml2YXRlIF9wYXJzZUJyZWFkY3J1bWJEYXRhKHJvdXRlV2l0aERhdGE6IElBY3RpdmF0ZWRSb3V0ZVdpdGhEYXRhKTogT2JzZXJ2YWJsZTxUaGVTZWFtQnJlYWRjcnVtYj4ge1xuICAvLyAgIGNvbnN0IGNydW1iVmFsdWUgPSByb3V0ZVdpdGhEYXRhLmRhdGFbdGhpcy5icmVhZGNydW1iRGF0YUtleV1cbiAgLy8gICBjb25zdCByb3V0ZSA9IHJvdXRlV2l0aERhdGEucm91dGVcbiAgLy8gICBjb25zdCBwYXRoID0gcm91dGVTbmFwc2hvdFBhdGhGdWxsKHJvdXRlLnNuYXBzaG90KVxuICAvLyAgIGxldCB2YWx1ZSA9ICcnXG5cbiAgLy8gICBpZiAodHlwZW9mIGNydW1iVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gIC8vICAgICB2YWx1ZSA9IGNydW1iVmFsdWVcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gIC8vICAgICAgIGNvbnNvbGUud2FybihcbiAgLy8gICAgICAgICAnW1RoZVNlYW1CcmVhZGNydW1ic1NlcnZpY2VdIE9ubHkgc3RyaW5nIGJyZWFkY3J1bWJzIGFyZSBzdXBwb3J0ZWQgY3VycmVudGx5LiAnXG4gIC8vICAgICAgICAgKyAnVXNlIGEgcmVzb2x2ZXIgaWYgdGhlIHZhbHVlIG5lZWRzIHRvIGJlIGR5bmFtaWNhbGx5IGNhbGN1bGF0ZWQuJ1xuICAvLyAgICAgICApXG4gIC8vICAgICB9XG4gIC8vICAgfVxuXG4gIC8vICAgcmV0dXJuIG9mKHsgdmFsdWUsIHBhdGgsIHJvdXRlIH0pXG4gIC8vIH1cblxufVxuIl19
|
|
@@ -4,4 +4,4 @@ export const THESEAM_DATA_EXPORTER = new InjectionToken('TheSeamDataExporter');
|
|
|
4
4
|
export function exportOperator(exportFn) {
|
|
5
5
|
return (source$) => source$.pipe(switchMap(exportFn));
|
|
6
6
|
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhLWV4cG9ydGVyL2RhdGEtZXhwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFtQzFDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFnQixxQkFBcUIsQ0FBQyxDQUFBO0FBRTdGLE1BQU0sVUFBVSxjQUFjLENBQUksUUFBK0I7SUFDL0QsT0FBTyxDQUFDLE9BQXdCLEVBQUUsRUFBRSxDQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBJY29uUHJvcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mb250YXdlc29tZS1zdmctY29yZSdcblxuZXhwb3J0IHR5cGUgSURhdGFFeHBvcnRlckZ1bmN0aW9uID0gPFQ+KGRhdGE6IFRbXSkgPT4gT2JzZXJ2YWJsZTxUW10+XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFFeHBvcnRlciB7XG4gIC8qKlxuICAgKiBOYW1lIHRvIGlkZW50aWZ5IHRoZSBleHBvcnRlci5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBMYWJlbCB0byB1c2UgZm9yIGV4cG9ydGVyIGluIHVzZXIgdmlzaWJsZSB0ZXh0LlxuICAgKlxuICAgKiBkZWZhdWx0OiBgbmFtZWBcbiAgICovXG4gIGxhYmVsPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEljb24gdG8gcmVwcmVzZW50IGV4cG9ydGVyLlxuICAgKi9cbiAgaWNvbj86IHN0cmluZyB8IEljb25Qcm9wXG5cbiAgLyoqXG4gICAqIFBhc3MgdGhlIHJvd3MgZGlyZWN0bHkgdG8gdGhlIGV4cG9ydCBmdW5jdGlvbiB3aXRob3V0IGFueSBtYXBwaW5nLlxuICAgKi9cbiAgc2tpcERhdGFNYXBwaW5nPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBFeHBvcnQgdGhlIGRhdGEgYmFzZWQgb24gdGhlIGRhdGEgdG8gc29tZSBmb3JtYXQuXG4gICAqL1xuICBleHBvcnQ8VD4oZGF0YTogVFtdKTogT2JzZXJ2YWJsZTxib29sZWFuPlxufVxuXG5leHBvcnQgY29uc3QgVEhFU0VBTV9EQVRBX0VYUE9SVEVSID0gbmV3IEluamVjdGlvblRva2VuPElEYXRhRXhwb3J0ZXI+KCdUaGVTZWFtRGF0YUV4cG9ydGVyJylcblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydE9wZXJhdG9yPFQ+KGV4cG9ydEZuOiBJRGF0YUV4cG9ydGVyRnVuY3Rpb24pIHtcbiAgcmV0dXJuIChzb3VyY2UkOiBPYnNlcnZhYmxlPFRbXT4pID0+XG4gICAgc291cmNlJC5waXBlKHN3aXRjaE1hcChleHBvcnRGbikpXG59XG4iXX0=
|
|
@@ -14,6 +14,7 @@ import { isDataSource } from '@angular/cdk/collections';
|
|
|
14
14
|
import { isObservable } from 'rxjs';
|
|
15
15
|
import { DatatableActionMenuComponent } from '../datatable-action-menu/datatable-action-menu.component';
|
|
16
16
|
import { DatatableColumnComponent } from '../datatable-column/datatable-column.component';
|
|
17
|
+
import { TheSeamDatatableFooterDirective } from '../datatable-footer/datatable-footer.directive';
|
|
17
18
|
import { DatatableMenuBarComponent } from '../datatable-menu-bar/datatable-menu-bar.component';
|
|
18
19
|
import { TheSeamDatatableRowDetailDirective } from '../datatable-row-detail/datatable-row-detail.directive';
|
|
19
20
|
import { DatatableRowActionItemDirective } from '../directives/datatable-row-action-item.directive';
|
|
@@ -434,7 +435,7 @@ export class DatatableComponent {
|
|
|
434
435
|
DatatableComponent.decorators = [
|
|
435
436
|
{ type: Component, args: [{
|
|
436
437
|
selector: 'seam-datatable',
|
|
437
|
-
template: "<div class=\"datatable-wrapper\">\n <ng-content select=\"seam-datatable-menu-bar\"></ng-content>\n <div class=\"datatable-table-wrapper\">\n <ng-container>\n <ngx-datatable\n
|
|
438
|
+
template: "<div class=\"datatable-wrapper\">\n <ng-content select=\"seam-datatable-menu-bar\"></ng-content>\n <div class=\"datatable-table-wrapper\">\n <ng-container>\n <ngx-datatable\n [columnMode]=\"$any(columnMode)\"\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH\"\n [virtualization]=\"virtualization\"\n [targetMarkerTemplate]=\"targetMarkerTemplate\"\n [groupRowsBy]=\"$any(groupRowsBy)\"\n [groupedRows]=\"$any(groupedRows)\"\n [selected]=\"$any(selected)\"\n [externalPaging]=\"externalPaging\"\n [externalSorting]=\"externalSorting\"\n [limit]=\"$any(limit)\"\n [count]=\"$any(count)\"\n [offset]=\"$any(offset)\"\n [loadingIndicator]=\"loadingIndicator\"\n [selectionType]=\"$any(selectionType)\"\n [reorderable]=\"reorderable\"\n [swapColumns]=\"swapColumns\"\n [sortType]=\"$any(sortType)\"\n [sorts]=\"$any(_sorts)\"\n [cssClasses]=\"cssClasses\"\n [messages]=\"messages\"\n [rowIdentity]=\"$any(rowIdentity)\"\n [rowClass]=\"rowClass\"\n [selectCheck]=\"selectCheck\"\n [displayCheck]=\"$any(displayCheck)\"\n [groupExpansionDefault]=\"groupExpansionDefault\"\n [trackByProp]=\"$any(trackByProp)\"\n [selectAllRowsOnPage]=\"selectAllRowsOnPage\"\n [treeFromRelation]=\"$any(treeFromRelation)\"\n [treeToRelation]=\"$any(treeToRelation)\"\n [summaryRow]=\"summaryRow\"\n [summaryHeight]=\"$any(summaryHeight)\"\n [summaryPosition]=\"$any(summaryPosition)\"\n [rows]=\"rows$ | async\"\n [columns]=\"$any(displayColumns$ | async)\"\n [headerHeight]=\"$any(headerHeight)\"\n [rowHeight]=\"$any(rowHeight)\"\n [footerHeight]=\"$any(footerHeight)\"\n (scroll)=\"scroll.emit($event)\"\n (activate)=\"activate.emit($event)\"\n (select)=\"select.emit($event)\"\n (sort)=\"sort.emit($event)\"\n (page)=\"page.emit($event)\"\n (reorder)=\"reorder.emit($event)\"\n (resize)=\"_onResize($event)\"\n (tableContextmenu)=\"tableContextmenu.emit($event)\"\n (treeAction)=\"treeAction.emit($event)\"\n (seamElemResized)=\"onDatatableResize($event)\"\n (treeAction)=\"_onTreeAction($event)\">\n\n <ngx-datatable-group-header [rowHeight]=\"50\" #myGroupHeader *ngIf=\"groupRowsBy\">\n <ng-template let-group=\"group\" let-expanded=\"expanded\" ngx-datatable-group-header-template>\n <div\n class=\"w-100 bg-light p-1\"\n [class.border-bottom]=\"!expanded\"\n [class.datatable-icon-right]=\"!expanded\"\n [class.datatable-icon-down]=\"expanded\"\n title=\"Expand/Collapse Group\"\n (click)=\"ngxDatatable?.groupHeader?.toggleExpandGroup(group)\">\n <b>Age: {{ group.age }}</b>\n </div>\n </ng-template>\n </ngx-datatable-group-header>\n\n <ngx-datatable-row-detail *ngIf=\"rowDetail && rowDetail.template\"\n [rowHeight]=\"rowDetail.rowHeight || 0\"\n [template]=\"$any(rowDetail.template)\"\n (toggle)=\"rowDetail.toggle.emit($event)\">\n </ngx-datatable-row-detail>\n\n <ngx-datatable-footer *ngIf=\"footer && footer.template\"\n [template]=\"$any(footer.template)\">\n </ngx-datatable-footer>\n </ngx-datatable>\n </ng-container>\n </div>\n</div>\n\n<ng-template #blankHeaderTpl ngx-datatable-header-template></ng-template>\n\n<ng-template #headerTpl ngx-datatable-header-template\n let-column=\"column\" let-sortFn=\"sortFn\">\n <strong *ngIf=\"!column.sortable\" class=\"draggable\">{{column.name}}</strong>\n <strong *ngIf=\"column.sortable\" class=\"datatable-sort-target draggable\" (click)=\"sortFn()\">{{column.name}}</strong>\n <div class=\"datatable-column-header-separator\"></div>\n</ng-template>\n\n<ng-template #cellTypeSelectorTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\" let-column=\"column\">\n <seam-table-cell-type-selector *ngIf=\"row\"\n [type]=\"column.cellType\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"column\">\n </seam-table-cell-type-selector>\n</ng-template>\n\n<ng-template #actionMenuCellTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\">\n\n <ng-container *ngIf=\"row && rowActionItem?.template\">\n <ng-template\n [ngTemplateOutlet]=\"$any(rowActionItem?.template)\"\n [ngTemplateOutletContext]=\"{ $implicit: row, row: row, rowIndex: rowIndex }\">\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #treeToggleTpl ngx-datatable-tree-toggle let-tree=\"cellContext\">\n <button\n class=\"p-0 bg-transparent border-0 btn\"\n [disabled]=\"tree.treeStatus==='disabled'\"\n (click)=\"tree.onTreeAction()\">\n <span *ngIf=\"tree.treeStatus==='loading'\">\n <fa-icon [icon]=\"faSpinner\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='collapsed'\">\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='expanded'\">\n <fa-icon [icon]=\"faChevronDown\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='disabled'\">\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\n </span>\n </button>\n</ng-template>\n",
|
|
438
439
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
439
440
|
animations: [
|
|
440
441
|
trigger('slideDown', [
|
|
@@ -449,7 +450,7 @@ DatatableComponent.decorators = [
|
|
|
449
450
|
])
|
|
450
451
|
],
|
|
451
452
|
providers: [_THESEAM_DATATABLE, DatatableColumnChangesService, _THESEAM_DATATABLE_ACCESSOR],
|
|
452
|
-
styles: [":host{display:flex;flex-grow:1;flex-direction:column}::ng-deep .seam-datatable-action-menu{min-width:auto!important}ngx-datatable{position:absolute;top:0;left:0;right:0;bottom:0}.datatable-wrapper{display:flex;flex-direction:column;flex-grow:1}.datatable-wrapper .datatable-table-wrapper{position:relative;flex:1 1 100%}.datatable-column-header-separator{position:absolute
|
|
453
|
+
styles: [":host{display:flex;flex-grow:1;flex-direction:column}::ng-deep .seam-datatable-action-menu{min-width:auto!important}ngx-datatable{position:absolute!important;top:0;left:0;right:0;bottom:0}.datatable-wrapper{display:flex;flex-direction:column;flex-grow:1}.datatable-wrapper .datatable-table-wrapper{position:relative;flex:1 1 100%}.datatable-column-header-separator{position:absolute}.datatable-sort-target{cursor:pointer}"]
|
|
453
454
|
},] }
|
|
454
455
|
];
|
|
455
456
|
DatatableComponent.ctorParameters = () => [
|
|
@@ -514,6 +515,7 @@ DatatableComponent.propDecorators = {
|
|
|
514
515
|
actionMenu: [{ type: ContentChild, args: [DatatableActionMenuComponent, { static: true },] }],
|
|
515
516
|
rowActionItem: [{ type: ContentChild, args: [DatatableRowActionItemDirective, { static: true },] }],
|
|
516
517
|
rowDetail: [{ type: ContentChild, args: [TheSeamDatatableRowDetailDirective, { static: true },] }],
|
|
518
|
+
footer: [{ type: ContentChild, args: [TheSeamDatatableFooterDirective, { static: true },] }],
|
|
517
519
|
menuBarComponent: [{ type: ContentChild, args: [DatatableMenuBarComponent,] }],
|
|
518
520
|
ngxDatatable: [{ type: ViewChild, args: [NgxDatatableComponent,] }],
|
|
519
521
|
ngxDatatableElement: [{ type: ViewChild, args: [NgxDatatableComponent, { read: ElementRef },] }],
|
|
@@ -581,4 +583,4 @@ __decorate([
|
|
|
581
583
|
__decorate([
|
|
582
584
|
InputBoolean()
|
|
583
585
|
], DatatableComponent.prototype, "scrollbarH", void 0);
|
|
584
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvZGF0YXRhYmxlL2RhdGF0YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN6RSxPQUFPLEVBQWdCLFdBQVcsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQzlFLE9BQU8sRUFDYSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFDbkYsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFDM0QsZUFBZSxFQUFxQixNQUFNLEVBQTBCLFNBQVMsRUFDOUUsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDNUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ2xHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBRXZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQzVGLE9BQU8sRUFDTCxVQUFVLEVBS1Ysa0JBQWtCLElBQUkscUJBQXFCLEVBQzNDLDJCQUEyQixFQUMzQixpQkFBaUIsRUFDakIsUUFBUSxFQUVSLGtCQUFrQixFQUVuQixNQUFNLHVCQUF1QixDQUFBO0FBRzlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0s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OzZEQUFtQztBQUVuQztJQUFkLFdBQVcsRUFBRTtpREFBMEI7QUFDeEI7SUFBZixXQUFXLENBQUMsQ0FBQyxDQUFDO2lEQUFrQjtBQUNqQjtJQUFmLFdBQVcsQ0FBQyxDQUFDLENBQUM7a0RBQW1CO0FBRWxCO0lBQWYsWUFBWSxFQUFFOzREQUFrQztBQUlqQztJQUFmLFlBQVksRUFBRTt1REFBNEI7QUFDM0I7SUFBZixZQUFZLEVBQUU7dURBQTZCO0FBdUM1QjtJQUFmLFlBQVksRUFBRTtpRUFBdUM7QUFJdEM7SUFBZixZQUFZLEVBQUU7K0RBQXFDO0FBSXBDO0lBQWYsWUFBWSxFQUFFO3NEQUE0QjtBQUM1QjtJQUFkLFdBQVcsRUFBRTt5REFBMkI7QUFHekI7SUFBZixZQUFZLEVBQUU7MERBQStCO0FBRS9CO0lBQWQsV0FBVyxFQUFFO3dEQUEwQjtBQUN6QjtJQUFkLFdBQVcsRUFBRTtxREFBdUI7QUFDdEI7SUFBZCxXQUFXLEVBQUU7d0RBQTBCO0FBRXhCO0lBQWYsWUFBWSxFQUFFO3NEQUEyQjtBQUMxQjtJQUFmLFlBQVksRUFBRTtzREFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUFycmF5LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdGlvblRva2VuLCBJbnB1dCwgS2V5VmFsdWVEaWZmZXIsXG4gIEtleVZhbHVlRGlmZmVycywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IERhdGF0YWJsZURhdGFTb3VyY2UgfSBmcm9tICcuLy4uL21vZGVscy9kYXRhdGFibGUtZGF0YS1zb3VyY2UnXG5cbmltcG9ydCB7IGZhQ2hldnJvbkRvd24sIGZhQ2hldnJvblJpZ2h0LCBmYVNwaW5uZXIgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnXG5pbXBvcnQge1xuICBDb2x1bW5Nb2RlLFxuICBDb250ZXh0bWVudVR5cGUsXG4gIERhdGFUYWJsZUNvbHVtbkNlbGxUcmVlVG9nZ2xlLFxuICBEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmUsXG4gIERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZSxcbiAgRGF0YXRhYmxlQ29tcG9uZW50IGFzIE5neERhdGF0YWJsZUNvbXBvbmVudCxcbiAgRGF0YXRhYmxlUm93RGV0YWlsRGlyZWN0aXZlLFxuICBzZXRDb2x1bW5EZWZhdWx0cyxcbiAgU29ydFR5cGUsXG4gIFRhYmxlQ29sdW1uLFxuICB0cmFuc2xhdGVUZW1wbGF0ZXMsXG4gIFRyZWVTdGF0dXNcbn0gZnJvbSAnQG1hcmtsYi9uZ3gtZGF0YXRhYmxlJ1xuaW1wb3J0IHR5cGUgeyBTZWxlY3Rpb25UeXBlIH0gZnJvbSAnQG1hcmtsYi9uZ3gtZGF0YXRhYmxlJ1xuXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5pbXBvcnQgeyBjb21wb3NlRGF0YUZpbHRlcnMsIGNvbXBvc2VEYXRhRmlsdGVyU3RhdGVzLCBEYXRhRmlsdGVyU3RhdGUsIElEYXRhRmlsdGVyIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2RhdGEtZmlsdGVycydcbmltcG9ydCB7IElFbGVtZW50UmVzaXplZEV2ZW50IH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3NoYXJlZCdcbmltcG9ydCB7IGhhc1Byb3BlcnR5LCBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXG5cbmltcG9ydCB7IENvbGxlY3Rpb25WaWV3ZXIsIERhdGFTb3VyY2UsIGlzRGF0YVNvdXJjZSwgTGlzdFJhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJ1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IERhdGF0YWJsZUFjdGlvbk1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9kYXRhdGFibGUtYWN0aW9uLW1lbnUvZGF0YXRhYmxlLWFjdGlvbi1tZW51LmNvbXBvbmVudCdcbmltcG9ydCB7IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGF0YWJsZS1jb2x1bW4vZGF0YXRhYmxlLWNvbHVtbi5jb21wb25lbnQnXG5pbXBvcnQgeyBEYXRhdGFibGVNZW51QmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YXRhYmxlLW1lbnUtYmFyL2RhdGF0YWJsZS1tZW51LWJhci5jb21wb25lbnQnXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlUm93RGV0YWlsRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGF0YXRhYmxlLXJvdy1kZXRhaWwvZGF0YXRhYmxlLXJvdy1kZXRhaWwuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgRGF0YXRhYmxlUm93QWN0aW9uSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZGF0YXRhYmxlLXJvdy1hY3Rpb24taXRlbS5kaXJlY3RpdmUnXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlQWNjZXNzb3IgfSBmcm9tICcuLi9tb2RlbHMvZGF0YXRhYmxlLWFjY2Vzc29yJ1xuaW1wb3J0IHsgVGhlU2VhbVBhZ2VJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL3BhZ2UtaW5mbydcbmltcG9ydCB7IFNvcnRFdmVudCB9IGZyb20gJy4uL21vZGVscy9zb3J0LWV2ZW50J1xuaW1wb3J0IHsgU29ydEl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvc29ydC1pdGVtJ1xuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUNvbHVtbiB9IGZyb20gJy4uL21vZGVscy90YWJsZS1jb2x1bW4nXG5pbXBvcnQgeyBEYXRhdGFibGVDb2x1bW5DaGFuZ2VzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RhdGF0YWJsZS1jb2x1bW4tY2hhbmdlcy5zZXJ2aWNlJ1xuaW1wb3J0IHsgRGF0YXRhYmxlUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGF0YXRhYmxlLXByZWZlcmVuY2VzLnNlcnZpY2UnXG5pbXBvcnQgeyBUSEVTRUFNX0RBVEFUQUJMRV9BQ0NFU1NPUiB9IGZyb20gJy4uL3Rva2Vucy9kYXRhdGFibGUtYWNjZXNzb3InXG5cbmV4cG9ydCBmdW5jdGlvbiBfc2V0Q29sdW1uRGVmYXVsdHMoY29sdW1uczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdKTogdm9pZCB7XG4gIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICBpZiAoIWNvbHVtbi5oYXNPd25Qcm9wZXJ0eSgnaGlkZGVuJykpIHtcbiAgICAgIGNvbHVtbi5oaWRkZW4gPSBmYWxzZVxuICAgIH1cbiAgfVxuICBzZXRDb2x1bW5EZWZhdWx0cyhjb2x1bW5zKVxufVxuXG4vKipcbiAqIE5PVEU6IFRoaXMgaXMgc3RpbGwgYmVpbmcgd29ya2VkIG9uLiBJIGFtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoaXMgbW9kZWxcbiAqIGJlY2F1c2UgYG5neC1kYXRhdGFibGVgIGp1c3QgdXNlcyBhbiB1bnR5cGVkIG9iamVjdCBhbmQgc2V0cyBwcm9wZXJ0aWVzIGluXG4gKiBtdWx0aXBsZSBwbGFjZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNlbGxDb250ZXh0IHtcbiAgYWxsUm93c1NlbGVjdGVkOiBmYWxzZVxuXG4gIHNlbGVjdEZuOiAoKSA9PiBhbnlcbiAgc29ydERpcj86ICdhc2MnIHwgJ2Rlc2MnXG4gIHNvcnRGbjogKCkgPT4gYW55XG5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG5cbiAgb25DaGVja2JveENoYW5nZUZuPzogYW55XG4gIGFjdGl2YXRlRm4/OiBhbnlcbiAgcm93PzogYW55XG4gIGdyb3VwPzogYW55XG4gIHZhbHVlPzogYW55XG4gIGNvbHVtbj86IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5cbiAgcm93SGVpZ2h0PzogbnVtYmVyXG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuXG4gIHJvd0luZGV4PzogbnVtYmVyXG4gIHRyZWVTdGF0dXM/OiBUcmVlU3RhdHVzXG4gIG9uVHJlZUFjdGlvbj86IGFueVxufVxuXG4vKipcbiAqIEludGVuZGVkIGZvciBpbnRlcm5hbCBjbGFzc2VzIGRlY2xhcmVkIGJ5IHRoZSBgVGhlU2VhbURhdGF0YWJsZU1vZHVsZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBUSEVTRUFNX0RBVEFUQUJMRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJRGF0YUZpbHRlcj4oJ0xpYkRhdGF0YWJsZScpXG5cbmV4cG9ydCBjb25zdCBfVEhFU0VBTV9EQVRBVEFCTEU6IGFueSA9IHtcbiAgcHJvdmlkZTogVEhFU0VBTV9EQVRBVEFCTEUsXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11c2UtYmVmb3JlLWRlY2xhcmVcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0YXRhYmxlQ29tcG9uZW50KVxufVxuXG5leHBvcnQgY29uc3QgX1RIRVNFQU1fREFUQVRBQkxFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IFRIRVNFQU1fREFUQVRBQkxFX0FDQ0VTU09SLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tdXNlLWJlZm9yZS1kZWNsYXJlXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGF0YWJsZUNvbXBvbmVudClcbn1cblxuLy8gVE9ETzogUmVkdWNlIHJlbGlhbmNlIG9uIEJlaGF2aW9yU3ViamVjdCBiYXNlZCBvYnNlcnZhYmxlcywgYmVjYXVzZSBpdCBzaG91bGRcbi8vIGJlIGVhc2llciB0byBhdm9pdCBvdmVyIGVtaXR0aW5nIG9ic2VydmFibGVzLlxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS1kYXRhdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignc2xpZGVEb3duJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTIwJSknLCBvcGFjaXR5OiAnMCcgfSksXG4gICAgICAgIGFuaW1hdGUoJzI1MG1zJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJywgb3BhY2l0eTogJzEnIH0pKSxcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLCBvcGFjaXR5OiAnMScgfSksXG4gICAgICAgIGFuaW1hdGUoJzI1MG1zJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0yMCUpJywgb3BhY2l0eTogJzAnIH0pKSxcbiAgICAgIF0pXG4gICAgXSlcbiAgXSxcbiAgcHJvdmlkZXJzOiBbIF9USEVTRUFNX0RBVEFUQUJMRSwgRGF0YXRhYmxlQ29sdW1uQ2hhbmdlc1NlcnZpY2UsIF9USEVTRUFNX0RBVEFUQUJMRV9BQ0NFU1NPUiBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGF0YWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0LCBUaGVTZWFtRGF0YXRhYmxlQWNjZXNzb3IsIENvbGxlY3Rpb25WaWV3ZXIge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZXh0ZXJuYWxQYWdpbmc6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZXh0ZXJuYWxTb3J0aW5nOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4dGVybmFsRmlsdGVyaW5nOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2xvYWRpbmdJbmRpY2F0b3I6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcmVvcmRlcmFibGU6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc3dhcENvbHVtbnM6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZ3JvdXBFeHBhbnNpb25EZWZhdWx0OiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3NlbGVjdEFsbFJvd3NPblBhZ2U6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc3VtbWFyeVJvdzogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV92aXJ0dWFsaXphdGlvbjogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zY3JvbGxiYXJWOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Njcm9sbGJhckg6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbGltaXQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9jb3VudDogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX29mZnNldDogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2hlYWRlckhlaWdodDogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Jvd0hlaWdodDogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Zvb3RlckhlaWdodDogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3N1bW1hcnlIZWlnaHQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9jb2x1bW5zOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10gfCB1bmRlZmluZWQgfCBudWxsXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zb3J0czogU29ydEl0ZW1bXSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBmYUNoZXZyb25Eb3duID0gZmFDaGV2cm9uRG93blxuICBmYUNoZXZyb25SaWdodCA9IGZhQ2hldnJvblJpZ2h0XG4gIGZhU3Bpbm5lciA9IGZhU3Bpbm5lclxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlcnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRGF0YUZpbHRlcltdPihbXSlcbiAgcHJpdmF0ZSByZWFkb25seSBfY29sdW1uc09ic2VydmFibGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGU8VGhlU2VhbURhdGF0YWJsZUNvbHVtbltdPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhU291cmNlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YVNvdXJjZTxhbnk+IHwgYW55W10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyU3RhdGVzOiBPYnNlcnZhYmxlPERhdGFGaWx0ZXJTdGF0ZVtdPlxuXG4gIGdldCBmaWx0ZXJzKCk6IElEYXRhRmlsdGVyW10geyByZXR1cm4gdGhpcy5fZmlsdGVyc1N1YmplY3QudmFsdWUgfVxuXG4gIHB1YmxpYyByZWFkb25seSBmaWx0ZXJzJDogT2JzZXJ2YWJsZTxJRGF0YUZpbHRlcltdPlxuXG4gIEBJbnB1dCgpXG4gIGdldCBwcmVmZXJlbmNlc0tleSgpOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHsgcmV0dXJuIHRoaXMuX3ByZWZlcmVuY2VzS2V5LnZhbHVlIH1cbiAgc2V0IHByZWZlcmVuY2VzS2V5KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7IHRoaXMuX3ByZWZlcmVuY2VzS2V5Lm5leHQodmFsdWUgfHwgdW5kZWZpbmVkKSB9XG4gIHByaXZhdGUgX3ByZWZlcmVuY2VzS2V5ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPih1bmRlZmluZWQpXG5cbiAgQElucHV0KCkgdGFyZ2V0TWFya2VyVGVtcGxhdGU6IGFueVxuXG4gIEBJbnB1dCgpXG4gIGdldCBjb2x1bW5zKCk6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXSB7IHJldHVybiB0aGlzLl9jb2x1bW5zLnZhbHVlIH1cbiAgc2V0IGNvbHVtbnModmFsdWU6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXSkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdjb2x1bW5zIGlucHV0JywgdmFsdWUpXG4gICAgdGhpcy5fY29sdW1ucy5uZXh0KEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbXSlcbiAgfVxuICBwcml2YXRlIF9jb2x1bW5zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10+KFtdKVxuXG4gIEBJbnB1dCgpXG4gIGdldCByb3dzKCk6IGFueVtdIHsgcmV0dXJuIHRoaXMuX3Jvd3MudmFsdWUgfVxuICBzZXQgcm93cyh2YWx1ZTogYW55W10pIHsgdGhpcy5fcm93cy5uZXh0KHZhbHVlIHx8IFtdKSB9XG4gIHByaXZhdGUgX3Jvd3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSlcblxuICBwdWJsaWMgcm93cyQ6IE9ic2VydmFibGU8YW55W10+XG5cbiAgQElucHV0KCkgY29sdW1uTW9kZTogQ29sdW1uTW9kZSB8IHVuZGVmaW5lZCB8IG51bGwgPSBDb2x1bW5Nb2RlLmZvcmNlXG5cbiAgQElucHV0KCkgZ3JvdXBSb3dzQnk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcbiAgQElucHV0KCkgZ3JvdXBlZFJvd3M6IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIHNlbGVjdGVkOiBhbnlbXSB8IHVuZGVmaW5lZCB8IG51bGwgPSBbXVxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBleHRlcm5hbFBhZ2luZzogYm9vbGVhbiA9IGZhbHNlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBleHRlcm5hbFNvcnRpbmc6IGJvb2xlYW4gPSBmYWxzZVxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZXh0ZXJuYWxGaWx0ZXJpbmc6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIGxpbWl0OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKDApIGNvdW50OiBudW1iZXIgPSAwXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigwKSBvZmZzZXQ6IG51bWJlciA9IDBcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbG9hZGluZ0luZGljYXRvcjogYm9vbGVhbiA9IGZhbHNlXG5cbiAgQElucHV0KCkgc2VsZWN0aW9uVHlwZTogU2VsZWN0aW9uVHlwZSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgcmVvcmRlcmFibGU6IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzd2FwQ29sdW1uczogYm9vbGVhbiA9IGZhbHNlXG5cbiAgQElucHV0KCkgc29ydFR5cGU6IFNvcnRUeXBlIHwgdW5kZWZpbmVkIHwgbnVsbCA9IFNvcnRUeXBlLnNpbmdsZVxuXG4gIEBJbnB1dCgpXG4gIGdldCBzb3J0cygpOiBTb3J0SXRlbVtdIHsgcmV0dXJuIHRoaXMubmd4RGF0YXRhYmxlID8gdGhpcy5uZ3hEYXRhdGFibGUuc29ydHMgOiB0aGlzLl9zb3J0cyB9XG4gIHNldCBzb3J0cyh2YWx1ZTogU29ydEl0ZW1bXSkge1xuICAgIHRoaXMuX3NvcnRzID0gbm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSA/IGNvZXJjZUFycmF5KHZhbHVlKSA6IFtdXG4gIH1cbiAgX3NvcnRzOiBTb3J0SXRlbVtdID0gW11cblxuICBASW5wdXQoKSBjc3NDbGFzc2VzOiBhbnkgfCB1bmRlZmluZWQgfCBudWxsID0ge1xuICAgIHNvcnRBc2NlbmRpbmc6ICdkYXRhdGFibGUtaWNvbi11cCcsXG4gICAgc29ydERlc2NlbmRpbmc6ICdkYXRhdGFibGUtaWNvbi1kb3duJyxcbiAgICBwYWdlckxlZnRBcnJvdzogJ2RhdGF0YWJsZS1pY29uLWxlZnQnLFxuICAgIHBhZ2VyUmlnaHRBcnJvdzogJ2RhdGF0YWJsZS1pY29uLXJpZ2h0JyxcbiAgICBwYWdlclByZXZpb3VzOiAnZGF0YXRhYmxlLWljb24tcHJldicsXG4gICAgcGFnZXJOZXh0OiAnZGF0YXRhYmxlLWljb24tc2tpcCdcbiAgfVxuXG4gIEBJbnB1dCgpIG1lc3NhZ2VzOiBhbnkgfCB1bmRlZmluZWQgfCBudWxsID0ge1xuICAgIC8vIE1lc3NhZ2UgdG8gc2hvdyB3aGVuIGFycmF5IGlzIHByZXNlbnRlZFxuICAgIC8vIGJ1dCBjb250YWlucyBubyB2YWx1ZXNcbiAgICBlbXB0eU1lc3NhZ2U6ICdObyByZWNvcmRzIGZvdW5kJyxcblxuICAgIC8vIEZvb3RlciB0b3RhbCBtZXNzYWdlXG4gICAgdG90YWxNZXNzYWdlOiAndG90YWwnLFxuXG4gICAgLy8gRm9vdGVyIHNlbGVjdGVkIG1lc3NhZ2VcbiAgICBzZWxlY3RlZE1lc3NhZ2U6ICdzZWxlY3RlZCdcbiAgfVxuXG4gIEBJbnB1dCgpIHJvd0lkZW50aXR5OiAoKHg6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZCB8IG51bGwgPSAoKHg6IGFueSkgPT4geClcblxuICBASW5wdXQoKSByb3dDbGFzczogYW55IHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIHNlbGVjdENoZWNrOiBhbnkgfCB1bmRlZmluZWQgfCBudWxsXG4gIEBJbnB1dCgpIGRpc3BsYXlDaGVjazogKChyb3c6IGFueSwgY29sdW1uPzogYW55LCB2YWx1ZT86IGFueSkgPT4gYm9vbGVhbikgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGdyb3VwRXhwYW5zaW9uRGVmYXVsdDogYm9vbGVhbiA9IGZhbHNlXG5cbiAgQElucHV0KCkgdHJhY2tCeVByb3A6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgc2VsZWN0QWxsUm93c09uUGFnZTogYm9vbGVhbiA9IGZhbHNlXG5cbiAgQElucHV0KCkgdHJlZUZyb21SZWxhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSB0cmVlVG9SZWxhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgc3VtbWFyeVJvdzogYm9vbGVhbiA9IGZhbHNlXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIHN1bW1hcnlIZWlnaHQ6IG51bWJlciA9IDMwXG4gIEBJbnB1dCgpIHN1bW1hcnlQb3NpdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICd0b3AnXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHZpcnR1YWxpemF0aW9uOiBib29sZWFuID0gdHJ1ZVxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIGhlYWRlckhlaWdodDogbnVtYmVyID0gNTBcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgcm93SGVpZ2h0OiBudW1iZXIgPSA1MFxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSBmb290ZXJIZWlnaHQ6IG51bWJlciA9IDQwXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNjcm9sbGJhclY6IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzY3JvbGxiYXJIOiBib29sZWFuID0gdHJ1ZVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkYXRhU291cmNlKHZhbHVlOiBEYXRhU291cmNlPGFueT4gfCBhbnlbXSB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRhdGFibGVEYXRhU291cmNlKSB7XG4gICAgICB2YWx1ZS5zZXREYXRhdGFibGVBY2Nlc3Nvcih0aGlzKVxuICAgIH1cbiAgICB0aGlzLl9kYXRhU291cmNlU3ViamVjdC5uZXh0KHZhbHVlIHx8IHVuZGVmaW5lZClcbiAgfVxuXG4gIEBPdXRwdXQoKSByZWFkb25seSBzY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgYWN0aXZhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnRFdmVudD4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGhlU2VhbVBhZ2VJbmZvPigpXG4gIEBPdXRwdXQoKSByZWFkb25seSByZW9yZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHJlc2l6ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG4gIEBPdXRwdXQoKSByZWFkb25seSB0YWJsZUNvbnRleHRtZW51ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBNb3VzZUV2ZW50LCB0eXBlOiBDb250ZXh0bWVudVR5cGUsIGNvbnRlbnQ6IGFueSB9PihmYWxzZSlcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHRyZWVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuXG4gIEBPdXRwdXQoKSByZWFkb25seSBhY3Rpb25SZWZyZXNoUmVxdWVzdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgaGlkZGVuQ29sdW1uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KClcblxuICBAQ29udGVudENoaWxkcmVuKERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudCkgY29sdW1uQ29tcG9uZW50cz86IFF1ZXJ5TGlzdDxEYXRhdGFibGVDb2x1bW5Db21wb25lbnQ+XG5cbiAgQENvbnRlbnRDaGlsZChEYXRhdGFibGVBY3Rpb25NZW51Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBhY3Rpb25NZW51PzogRGF0YXRhYmxlQWN0aW9uTWVudUNvbXBvbmVudFxuICBAQ29udGVudENoaWxkKERhdGF0YWJsZVJvd0FjdGlvbkl0ZW1EaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHJvd0FjdGlvbkl0ZW0/OiBEYXRhdGFibGVSb3dBY3Rpb25JdGVtRGlyZWN0aXZlXG4gIEBDb250ZW50Q2hpbGQoVGhlU2VhbURhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcm93RGV0YWlsPzogVGhlU2VhbURhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZVxuXG4gIEBDb250ZW50Q2hpbGQoRGF0YXRhYmxlTWVudUJhckNvbXBvbmVudClcbiAgZ2V0IG1lbnVCYXJDb21wb25lbnQoKTogRGF0YXRhYmxlTWVudUJhckNvbXBvbmVudCB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9tZW51QmFyQ29tcG9uZW50IH1cbiAgc2V0IG1lbnVCYXJDb21wb25lbnQodmFsdWU6IERhdGF0YWJsZU1lbnVCYXJDb21wb25lbnQgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9tZW51QmFyQ29tcG9uZW50ID0gdmFsdWVcblxuICAgIGlmICh0aGlzLl9tZW51QmFyU3ViKSB7IHRoaXMuX21lbnVCYXJTdWIudW5zdWJzY3JpYmUoKSB9XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX3NldE1lbnVCYXJGaWx0ZXJzKHZhbHVlLmZpbHRlcnMoKSlcblxuICAgICAgdGhpcy5fbWVudUJhclN1YiA9IHRoaXMuX21lbnVCYXJDb21wb25lbnQ/LmZpbHRlcnNDaGFuZ2VkXG4gICAgICAgIC5zdWJzY3JpYmUodiA9PiB7IHRoaXMuX3NldE1lbnVCYXJGaWx0ZXJzKHZhbHVlLmZpbHRlcnMoKSkgfSlcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfbWVudUJhckNvbXBvbmVudDogRGF0YXRhYmxlTWVudUJhckNvbXBvbmVudCB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9tZW51QmFyU3ViOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWRcblxuICBAVmlld0NoaWxkKE5neERhdGF0YWJsZUNvbXBvbmVudCkgbmd4RGF0YXRhYmxlPzogTmd4RGF0YXRhYmxlQ29tcG9uZW50XG4gIEBWaWV3Q2hpbGQoTmd4RGF0YXRhYmxlQ29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgbmd4RGF0YXRhYmxlRWxlbWVudD86IEVsZW1lbnRSZWZcbiAgQFZpZXdDaGlsZChEYXRhdGFibGVSb3dEZXRhaWxEaXJlY3RpdmUpIG5neFJvd0RldGFpbD86IERhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZVxuXG4gIEBWaWV3Q2hpbGQoJ2FjdGlvbk1lbnVDZWxsVHBsJywgeyBzdGF0aWM6IHRydWUgfSkgYWN0aW9uTWVudUNlbGxUcGw/OiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+XG4gIEBWaWV3Q2hpbGQoJ3RyZWVUb2dnbGVUcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0cmVlVG9nZ2xlVHBsPzogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGU+XG4gIEBWaWV3Q2hpbGQoJ2hlYWRlclRwbCcsIHsgc3RhdGljOiB0cnVlIH0pIGhlYWRlclRwbD86IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT5cbiAgQFZpZXdDaGlsZCgnYmxhbmtIZWFkZXJUcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBibGFua0hlYWRlclRwbD86IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT5cbiAgQFZpZXdDaGlsZCgnY2VsbFR5cGVTZWxlY3RvclRwbCcsIHsgc3RhdGljOiB0cnVlIH0pIGNlbGxUeXBlU2VsZWN0b3JUcGw/OiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+XG5cbiAgcHVibGljIGNvbHVtbkNvbXBvbmVudHMkPzogT2JzZXJ2YWJsZTxEYXRhdGFibGVDb2x1bW5Db21wb25lbnRbXT5cbiAgcHJpdmF0ZSBfY29sRGlmZmVyc0lucDogeyBbcHJvcE5hbWU6IHN0cmluZ106IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PiB9ID0ge31cbiAgcHJpdmF0ZSBfY29sRGlmZmVyc1RwbDogeyBbcHJvcE5hbWU6IHN0cmluZ106IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PiB9ID0ge31cblxuICBwdWJsaWMgcmVhZG9ubHkgY29sdW1ucyQ6IE9ic2VydmFibGU8VGhlU2VhbURhdGF0YWJsZUNvbHVtbltdPlxuICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheUNvbHVtbnMkOiBPYnNlcnZhYmxlPFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXT5cblxuICB2aWV3Q2hhbmdlOiBPYnNlcnZhYmxlPExpc3RSYW5nZT5cblxuICBwcml2YXRlIF9yb3dEZXRhaWxUb2dnbGVTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFlcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5DaGFuZ2VzU2VydmljZTogRGF0YXRhYmxlQ29sdW1uQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ByZWZlcmVuY2VzOiBEYXRhdGFibGVQcmVmZXJlbmNlc1NlcnZpY2VcbiAgKSB7XG4gICAgLy8gdGhpcy5kaXNwbGF5Q29sdW1ucyQgPSB0aGlzLmhpZGRlbkNvbHVtbnMkLnBpcGUoXG4gICAgLy8gICBzd2l0Y2hNYXAoaGlkZGVuQ29sdW1ucyA9PiB0aGlzLmNvbHVtbnMkLnBpcGUobWFwKGNvbHMgPT4gY29scy5maWx0ZXIoYyA9PiBoaWRkZW5Db2x1bW5zLmZpbmRJbmRleChoYyA9PiBoYyA9PT0gYy5wcm9wKSA9PT0gLTEpKSkpXG4gICAgLy8gKVxuXG4gICAgY29uc3QgYXBwbHlQcmVmcyA9IChjb2xzOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10pID0+IHRoaXMuX3ByZWZlcmVuY2VzS2V5LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobmFtZSA9PiAhIW5hbWVcbiAgICAgICAgLy8gTk9URTogVGhpcyBwZW5kaW5nIGNoZWNrIGlzIHRlbXBvcmFyeSB0byBhdm9pZCB0YWJsZSB1c2luZyBwcmV2aW91c2x5XG4gICAgICAgIC8vIHJldHJpZXZlZCBwcmVmZXJlbmNlIHdoaWxlIHRoZSBuZXcgb25lIGlzIGJlaW5nIHVwZGF0ZWQgb24gdGhlXG4gICAgICAgIC8vIHNlcnZlci5cbiAgICAgICAgPyAhdGhpcy5fcHJlZmVyZW5jZXMucGVuZGluZ1xuICAgICAgICAgID8gdGhpcy5fcHJlZmVyZW5jZXMud2l0aENvbHVtblByZWZlcmVuY2VzKG5hbWUsIGNvbHMpXG4gICAgICAgICAgOiBvZihjb2xzKVxuICAgICAgICA6IG9mKGNvbHMpXG4gICAgICApXG4gICAgKVxuXG4gICAgdGhpcy5jb2x1bW5zJCA9IHRoaXMuX2NvbHVtbnNPYnNlcnZhYmxlLnBpcGUoc3dpdGNoTWFwKGNvbHNPYnMgPT4gY29sc09icyA/PyBvZihbXSkpKVxuXG4gICAgdGhpcy5kaXNwbGF5Q29sdW1ucyQgPSB0aGlzLmNvbHVtbnMkLnBpcGUoXG4gICAgICBtYXAoY29scyA9PiBjb2xzLmZpbHRlcihjID0+ICFjLmhpZGRlbikpLFxuICAgICAgdGFwKHYgPT4gdGhpcy5fcmVtb3ZlVW51c2VkRGlmZnModikpLFxuICAgICAgc3dpdGNoTWFwKGNvbHMgPT4gYXBwbHlQcmVmcyhjb2xzKSksXG4gICAgKVxuXG4gICAgdGhpcy5maWx0ZXJzJCA9IHRoaXMuX2ZpbHRlcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG5cbiAgICB0aGlzLmZpbHRlclN0YXRlcyA9IHRoaXMuX2ZpbHRlcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZmlsdGVycyA9PiBjb21wb3NlRGF0YUZpbHRlclN0YXRlcyhmaWx0ZXJzKSlcbiAgICApXG5cbiAgICAvLyB0aGlzLnJvd3MkID0gdGhpcy5fZmlsdGVyc1N1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgICAvLyAgIC5waXBlKFxuICAgIC8vICAgICBzd2l0Y2hNYXAoZmlsdGVycyA9PiB7XG4gICAgLy8gICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxGaWx0ZXJpbmcpIHtcbiAgICAvLyAgICAgICAgIHJldHVybiB0aGlzLl9yb3dzLmFzT2JzZXJ2YWJsZSgpXG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICAgIHJldHVybiB0aGlzLl9yb3dzLmFzT2JzZXJ2YWJsZSgpLnBpcGUoY29tcG9zZURhdGFGaWx0ZXJzKGZpbHRlcnMpKVxuICAgIC8vICAgICB9KVxuICAgIC8vICAgKVxuXG4gICAgdGhpcy5yb3dzJCA9IHRoaXMuX2RhdGFTb3VyY2VTdWJqZWN0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZGF0YVNvdXJjZSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXRhU291cmNlJywgZGF0YVNvdXJjZSlcbiAgICAgICAgbGV0IGRhdGFTdHJlYW06IE9ic2VydmFibGU8YW55W10+XG5cbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZShkYXRhU291cmNlKSkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd+ZGF0YXNvdXJjZScpXG4gICAgICAgICAgZGF0YVN0cmVhbSA9IGRhdGFTb3VyY2UuY29ubmVjdCh0aGlzKSBhcyBhbnlcbiAgICAgICAgfSBlbHNlIGlmIChpc09ic2VydmFibGUoZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnfm9ic2VydmFibGUnKVxuICAgICAgICAgIGRhdGFTdHJlYW0gPSBkYXRhU291cmNlIGFzIGFueVxuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnfmFycmF5JylcbiAgICAgICAgICBkYXRhU3RyZWFtID0gb2YoZGF0YVNvdXJjZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnfnJvd3MgZmFsbGJhY2snKVxuICAgICAgICAgIGRhdGFTdHJlYW0gPSB0aGlzLl9yb3dzLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAvLyAucGlwZSh0YXAodiA9PiBjb25zb2xlLmxvZygncm93c34nLCB2KSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZXh0ZXJuYWxGaWx0ZXJpbmcpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbm90IHVzaW5nIGV4dGVybmFsRmlsdGVyaW5nJylcbiAgICAgICAgICBkYXRhU3RyZWFtID0gZGF0YVN0cmVhbS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKHJvd3MgPT4gdGhpcy5fZmlsdGVyc1N1YmplY3QucGlwZShcbiAgICAgICAgICAgICAgLy8gdGFwKHYgPT4gY29uc29sZS5sb2coJ2ZpbHRlcnMnLCB2KSksXG4gICAgICAgICAgICAgIGNvbmNhdE1hcChmaWx0ZXJzID0+IG9mKHJvd3MpLnBpcGUoY29tcG9zZURhdGFGaWx0ZXJzKGZpbHRlcnMpKSksXG4gICAgICAgICAgICAgIC8vIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdjb21wb3NlZCBmaWx0ZXJzJywgdikpLFxuICAgICAgICAgICAgKSlcbiAgICAgICAgICApXG5cbiAgICAgICAgICAvLyBkYXRhU3RyZWFtID0gdGhpcy5fZmlsdGVyc1N1YmplY3QucGlwZShcbiAgICAgICAgICAvLyAgIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdmaWx0ZXJzJywgdikpLFxuICAgICAgICAgIC8vICAgY29uY2F0TWFwKGZpbHRlcnMgPT4gZGF0YVN0cmVhbS5waXBlKGNvbXBvc2VEYXRhRmlsdGVycyhmaWx0ZXJzKSkpLFxuICAgICAgICAgIC8vICAgdGFwKHYgPT4gY29uc29sZS5sb2coJ2NvbXBvc2VkIGZpbHRlcnMnLCB2KSksXG4gICAgICAgICAgLy8gKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGFTdHJlYW0ucGlwZShcbiAgICAgICAgICAvLyB0YXAodiA9PiBjb25zb2xlLmxvZygnc3RyZWFtJywgdikpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKVxuICAgICAgICApXG4gICAgICB9KVxuICAgIClcblxuICAgIC8vIHRoaXMuaGlkZGVuQ29sdW1ucyQgPSB0aGlzLl9oaWRkZW5Db2x1bW5zLmFzT2JzZXJ2YWJsZSgpXG5cbiAgICAvLyB0aGlzLl9oaWRkZW5Db2x1bW5zLnBpcGUoXG4gICAgLy8gICBza2lwKDEpLFxuICAgIC8vICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IHtcbiAgICAvLyAgICAgY29uc3QgX2EgPSBBcnJheS5pc0FycmF5KGEpID8gYSA6IFtdXG4gICAgLy8gICAgIGNvbnN0IF9iID0gQXJyYXkuaXNBcnJheShiKSA/IGIgOiBbXVxuICAgIC8vICAgICBpZiAoX2EubGVuZ3RoICE9PSBfYi5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlIH1cbiAgICAvLyAgICAgY29uc3QgX2FzID0gX2Euc29ydCgpXG4gICAgLy8gICAgIGNvbnN0IF9icyA9IF9iLnNvcnQoKVxuICAgIC8vICAgICByZXR1cm4gIV9hcy5zb3J0KCkuZXZlcnkoKHZhbHVlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IF9ic1tpbmRleF0gPT09IHZhbHVlKVxuICAgIC8vICAgfSksXG4gICAgLy8gICB0YXAodiA9PiB0aGlzLmhpZGRlbkNvbHVtbnNDaGFuZ2UuZW1pdCh2KSksXG4gICAgLy8gICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgIC8vICkuc3Vic2NyaWJlKHYgPT4gY29uc29sZS5sb2coJ2hpZGRlbkNvbHVtbnNDaGFuZ2UnLCB2KSlcblxuICAgIC8vIFRPRE86IEltcGxlbWVudCB2aWV3Q2hhbmdlIGZvciBDb2xsZWN0aW9uVmlld2VyLlxuICAgIHRoaXMudmlld0NoYW5nZSA9IHRoaXMucGFnZS5waXBlKG1hcChwID0+ICh7IHN0YXJ0OiAwLCBlbmQ6IHAuY291bnQgfSkpKVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMucm93RGV0YWlsKSB7XG4gICAgICB0aGlzLl9yb3dEZXRhaWxUb2dnbGVTdWJzY3JpcHRpb24gPSB0aGlzLnJvd0RldGFpbC5fdG9nZ2xlLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIGlmICh0aGlzLm5neFJvd0RldGFpbCkge1xuICAgICAgICAgIHRoaXMubmd4Um93RGV0YWlsLnRvZ2dsZS5lbWl0KGV2ZW50KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3Jvd0RldGFpbFRvZ2dsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5jb2x1bW5Db21wb25lbnRzJCA9IHRoaXMuX2NvbHVtbkNoYW5nZXNTZXJ2aWNlLmNvbHVtbklucHV0Q2hhbmdlcyQucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmNvbHVtbkNvbXBvbmVudHM/LnRvQXJyYXkoKSA/PyBbXSksXG4gICAgICBzdGFydFdpdGgodGhpcy5jb2x1bW5Db21wb25lbnRzPy50b0FycmF5KCkgPz8gW10pLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgIClcblxuICAgIGNvbnN0IF9jb2x1bW5zID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNvbHVtbkNvbXBvbmVudHMkLFxuICAgICAgdGhpcy5fY29sdW1uc1xuICAgIF0pLnBpcGUoXG4gICAgICBtYXAodiA9PiB0aGlzLl9nZXRNZXJnZWRUcGxBbmRJbnBDb2x1bW5zKHZbMF0sIHZbMV0gPz8gW10pKSxcbiAgICAgIC8vIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdjb2xzJywgdikpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICApXG4gICAgdGhpcy5fY29sdW1uc09ic2VydmFibGUubmV4dChfY29sdW1ucylcbiAgfVxuXG4gIHByaXZhdGUgX2dldE1lcmdlZFRwbEFuZElucENvbHVtbnMoXG4gICAgdHBsQ29sczogRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50W10sXG4gICAgaW5wQ29sczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdXG4gICk6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXSB7XG4gICAgY29uc3QgY29sczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdID0gW11cblxuICAgIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgIGNvbnN0IGNoZWNrQm94Q29sOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uID0ge1xuICAgICAgICBwcm9wOiAnJCRfX2NoZWNrYm94X18nLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgd2lkdGg6IDQwLFxuICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgIGNhbkF1dG9SZXNpemU6IGZhbHNlLFxuICAgICAgICBkcmFnZ2FibGU6IGZhbHNlLFxuICAgICAgICByZXNpemVhYmxlOiBmYWxzZSxcbiAgICAgICAgaGVhZGVyQ2hlY2tib3hhYmxlOiB0cnVlLFxuICAgICAgICBjaGVja2JveGFibGU6IHRydWVcbiAgICAgIH1cblxuICAgICAgY29scy5wdXNoKGNoZWNrQm94Q29sKVxuICAgIH1cblxuICAgIGNvbnN0IF90cGxDb2xzID0gdHJhbnNsYXRlVGVtcGxhdGVzKDxhbnk+KHRwbENvbHMgfHwgW10pKVxuICAgIGZvciAoY29uc3QgY29sIG9mIGlucENvbHMpIHtcbiAgICAgIGNvbnN0IHRwbENvbCA9IF90cGxDb2xzLmZpbmQodCA9PiB0LnByb3AgPT09IGNvbC5wcm9wKVxuICAgICAgLy8gY29uc29sZS5sb2coeyBjb2w6IHsgLi4uKGNvbCB8fCB7fSkgfSwgdHBsQ29sOiB7IC4uLih0cGxDb2wgfHwge30pIH0gfSlcblxuICAgICAgY29uc3QgZHRDb2x1bW5zID0gKHRoaXMubmd4RGF0YXRhYmxlICYmIHRoaXMubmd4RGF0YXRhYmxlLl9pbnRlcm5hbENvbHVtbnMpIHx8IFtdXG4gICAgICBjb25zdCBwcmV2ID0gZHRDb2x1bW5zLmZpbmQoYyA9PiBjLnByb3AgPT09IGNvbC5wcm9wKVxuXG4gICAgICBjb25zdCBpbnBDb2xEaWZmID0gdGhpcy5fZ2V0Q29sRGlmZihjb2wpXG4gICAgICBjb25zdCBfaW5wQ29sID0gaW5wQ29sRGlmZiA/IHt9IDogdGhpcy5faGFzUHJldkNvbERpZmYoY29sKSA/IHt9IDogY29sXG4gICAgICBpZiAoaW5wQ29sRGlmZikge1xuICAgICAgICBpbnBDb2xEaWZmLmZvckVhY2hSZW1vdmVkSXRlbShyID0+IHtcbiAgICAgICAgICBpZiAocHJldiAmJiBwcmV2Lmhhc093blByb3BlcnR5KHIua2V5KSkge1xuICAgICAgICAgICAgY29uc3QgayA9IHIua2V5IGFzIGtleW9mIFRhYmxlQ29sdW1uXG4gICAgICAgICAgICBkZWxldGUgcHJldltrXVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgaW5wQ29sRGlmZi5mb3JFYWNoQWRkZWRJdGVtKHIgPT4gKF9pbnBDb2wgYXMgYW55KVtyLmtleV0gPSByLmN1cnJlbnRWYWx1ZSlcbiAgICAgICAgaW5wQ29sRGlmZi5mb3JFYWNoQ2hhbmdlZEl0ZW0ociA9PiAoX2lucENvbCBhcyBhbnkpW3Iua2V5XSA9IHIuY3VycmVudFZhbHVlKVxuICAgICAgfVxuXG4gICAgICBsZXQgX3RwbENvbDogVGhlU2VhbURhdGF0YWJsZUNvbHVtbiA9IHt9XG4gICAgICBpZiAodHBsQ29sKSB7XG4gICAgICAgIGNvbnN0IHRwbENvbERpZmYgPSB0cGxDb2wgPyB0aGlzLl9nZXRDb2xEaWZmKHRwbENvbCwgdHJ1ZSkgOiB1bmRlZmluZWRcbiAgICAgICAgX3RwbENvbCA9IHRwbENvbERpZmYgPyB7fSA6IHRoaXMuX2hhc1ByZXZDb2xEaWZmKGNvbCwgdHJ1ZSkgPyB7fSA6IHRwbENvbFxuICAgICAgICBpZiAodHBsQ29sRGlmZikge1xuICAgICAgICAgIHRwbENvbERpZmYuZm9yRWFjaFJlbW92ZWRJdGVtKHIgPT4ge1xuICAgICAgICAgICAgaWYgKHByZXYgJiYgcHJldi5oYXNPd25Qcm9wZXJ0eShyLmtleSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgayA9IHIua2V5IGFzIGtleW9mIFRhYmxlQ29sdW1uXG4gICAgICAgICAgICAgIGRlbGV0ZSBwcmV2W2tdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICB0cGxDb2xEaWZmLmZvckVhY2hBZGRlZEl0ZW0ociA9PiAoX3RwbENvbCBhcyBhbnkpW3Iua2V5XSA9IHIuY3VycmVudFZhbHVlKVxuICAgICAgICAgIHRwbENvbERpZmYuZm9yRWFjaENoYW5nZWRJdGVtKHIgPT4gKF90cGxDb2wgYXMgYW55KVtyLmtleV0gPSByLmN1cnJlbnRWYWx1ZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBfY29sOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uID0ge1xuICAgICAgICAuLi4ocHJldiB8fCB7fSksXG4gICAgICAgIC4uLl9pbnBDb2wsXG4gICAgICAgIC4uLl90cGxDb2xcbiAgICAgIH1cblxuICAgICAgY29scy5wdXNoKF9jb2wpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm93QWN0aW9uSXRlbSkge1xuICAgICAgY29uc3QgYWN0aW9uTWVudUNvbHVtbjogVGhlU2VhbURhdGF0YWJsZUNvbHVtbiA9IHtcbiAgICAgICAgcHJvcDogJyQkX19hY3Rpb25NZW51X18nLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgd2lkdGg6IDUwLFxuICAgICAgICBtaW5XaWR0aDogNTAsXG4gICAgICAgIG1heFdpZHRoOiA1MCxcbiAgICAgICAgcmVzaXplYWJsZTogZmFsc2UsXG4gICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgZHJhZ2dhYmxlOiBmYWxzZSxcbiAgICAgICAgLy8gVE9ETzogRml4IGNvbHVtbiBhdXRvIHNpemluZyB3aXRoIGZpeGVkIGNvbHVtbiBhbmQgY2VsbCBvdmVybGF5IGJlZm9yZSBlbmFibGluZy5cbiAgICAgICAgLy8gZnJvemVuUmlnaHQ6IHRydWUsXG4gICAgICAgIGNlbGxUZW1wbGF0ZTogdGhpcy5hY3Rpb25NZW51Q2VsbFRwbCxcbiAgICAgICAgaGVhZGVyVGVtcGxhdGU6IHRoaXMuYmxhbmtIZWFkZXJUcGxcbiAgICAgIH1cbiAgICAgIGNvbHMucHVzaChhY3Rpb25NZW51Q29sdW1uKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcbiAgICAgIGlmIChjb2wuaXNUcmVlQ29sdW1uICYmIGhhc1Byb3BlcnR5KGNvbCwgJ3RyZWVUb2dnbGVUZW1wbGF0ZScpKSB7XG4gICAgICAgIGNvbC50cmVlVG9nZ2xlVGVtcGxhdGUgPSB0aGlzLnRyZWVUb2dnbGVUcGxcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNQcm9wZXJ0eShjb2wsICdoZWFkZXJUZW1wbGF0ZScpKSB7XG4gICAgICAgIGNvbC5oZWFkZXJUZW1wbGF0ZSA9IHRoaXMuaGVhZGVyVHBsXG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNQcm9wZXJ0eShjb2wsICdjZWxsVHlwZScpKSB7XG4gICAgICAgIGNvbC5jZWxsVGVtcGxhdGUgPSB0aGlzLmNlbGxUeXBlU2VsZWN0b3JUcGxcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzZXRDb2x1bW5EZWZhdWx0cyhjb2xzKVxuICAgIF9zZXRDb2x1bW5EZWZhdWx0cyhjb2xzKVxuXG5cbiAgICAvLyBjb25zb2xlLmxvZyhjb2xzLm1hcChjID0+ICh7IHByb3A6IGMucHJvcCwgY2FuQXV0b1Jlc2l6ZTogYy5jYW5BdXRvUmVzaXplIH0pKSlcblxuICAgIHJldHVybiBjb2xzXG4gIH1cblxuICBwcml2YXRlIF9oYXNQcmV2Q29sRGlmZihjb2w6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4sIGlzVHBsOiBib29sZWFuID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICBpZiAoIWNvbCB8fCAhY29sLnByb3ApIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGNvbnN0IGRpZmZlcnNNYXAgPSBpc1RwbCA/IHRoaXMuX2NvbERpZmZlcnNUcGwgOiB0aGlzLl9jb2xEaWZmZXJzSW5wXG5cbiAgICByZXR1cm4gISFkaWZmZXJzTWFwXG4gIH1cblxuICBwcml2YXRlIF9nZXRDb2xEaWZmKGNvbDogVGhlU2VhbURhdGF0YWJsZUNvbHVtbiwgaXNUcGw6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmICghY29sIHx8ICFjb2wucHJvcCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGlmZmVyc01hcCA9IGlzVHBsID8gdGhpcy5fY29sRGlmZmVyc1RwbCA6IHRoaXMuX2NvbERpZmZlcnNJbnBcblxuICAgIGlmICghZGlmZmVyc01hcFtjb2wucHJvcF0pIHtcbiAgICAgIGRpZmZlcnNNYXBbY29sLnByb3BdID0gdGhpcy5fZGlmZmVycy5maW5kKHt9KS5jcmVhdGUoKVxuICAgIH1cblxuICAgIGNvbnN0IGRpZmZlciA9IGRpZmZlcnNNYXBbY29sLnByb3BdXG5cbiAgICBjb25zdCBkaWZmID0gZGlmZmVyLmRpZmYoY29sKVxuICAgIHJldHVybiBkaWZmXG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVVbnVzZWREaWZmcyhjb2xzOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10pIHtcbiAgICBjb25zdCBpbnBLZXlzID0gT2JqZWN0LmtleXModGhpcy5fY29sRGlmZmVyc0lucClcbiAgICBpbnBLZXlzLmZpbHRlcihrID0+IGNvbHMuZmluZEluZGV4KGMgPT4gYy5wcm9wID09PSBrKSA9PT0gLTEpXG4gICAgICAuZm9yRWFjaChrID0+IHsgZGVsZXRlIHRoaXMuX2NvbERpZmZlcnNJbnBba10gfSlcblxuICAgIGNvbnN0IHRwbEtleXMgPSBPYmplY3Qua2V5cyh0aGlzLl9jb2xEaWZmZXJzVHBsKVxuICAgIHRwbEtleXMuZmlsdGVyKGsgPT4gY29scy5maW5kSW5kZXgoYyA9PiBjLnByb3AgPT09IGspID09PSAtMSlcbiAgICAgIC5mb3JFYWNoKGsgPT4geyBkZWxldGUgdGhpcy5fY29sRGlmZmVyc1RwbFtrXSB9KVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TWVudUJhckZpbHRlcnMoZmlsdGVyczogSURhdGFGaWx0ZXJbXSkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdfc2V0TWVudUJhckZpbHRlcnMnLCBmaWx0ZXJzKVxuICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0Lm5leHQoZmlsdGVycyB8fCBbXSlcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5Db21wb25lbnQocHJvcE5hbWU6IHN0cmluZyk6IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudCB8IG51bGwge1xuICAgIGlmICghdGhpcy5jb2x1bW5Db21wb25lbnRzIHx8IHRoaXMuY29sdW1uQ29tcG9uZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgdHBsID0gdGhpcy5jb2x1bW5Db21wb25lbnRzLmZpbmQodCA9PiB0LnByb3AgPT09IHByb3BOYW1lKVxuICAgIGlmICh0cGwpIHtcbiAgICAgIHJldHVybiB0cGxcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgX2NvbHVtbkRhdGEoY29sOiBhbnkpOiB7IGNvbDogYW55LCBjb21wOiBEYXRhdGFibGVDb2x1bW5Db21wb25lbnQgfCBudWxsIH0ge1xuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmdldENvbHVtbkNvbXBvbmVudChjb2wucHJvcClcbiAgICByZXR1cm4geyBjb2wsIGNvbXAgfVxuICB9XG5cbiAgX2dldFJvd0V4cGFuZGVkKHJvdzogYW55KSB7XG4gICAgaWYgKHRoaXMubmd4RGF0YXRhYmxlICYmIHRoaXMubmd4RGF0YXRhYmxlLmJvZHlDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLm5neERhdGF0YWJsZS5ib2R5Q29tcG9uZW50LmdldFJvd0V4cGFuZGVkKHJvdylcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUZuQ29sdW1uKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHJldHVybiBpdGVtLnByb3BcbiAgfVxuXG4gIHB1YmxpYyBvbkRhdGF0YWJsZVJlc2l6ZShldmVudDogSUVsZW1lbnRSZXNpemVkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5uZ3hEYXRhdGFibGUgJiYgdGhpcy5uZ3hEYXRhdGFibGVFbGVtZW50ICYmIHRoaXMubmd4RGF0YXRhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAvLyBUT0RPOiBDb25zaWRlciBpbnRlZ3JhdGluZyB0aGlzIGludG8gdGhlIG5neC1kYXRhdGFibGUgbGlicmFyeSB0byBhdm9pZFxuICAgICAgLy8gbXVsdGlwbGUgcmVzaXplIGNhbGxzIHdoZW4gdGhlIHRhYmxlIHJlc2l6ZXMgaXRzZWxmLlxuICAgICAgdGhpcy5uZ3hEYXRhdGFibGUucmVjYWxjdWxhdGUoKVxuICAgIH1cbiAgfVxuXG4gIF9vblJlc2l6ZShldmVudDogYW55KSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3Jlc2l6ZScsIGV2ZW50LCBldmVudC5jb2x1bW4ucHJvcClcbiAgICB0aGlzLnJlc2l6ZS5lbWl0KGV2ZW50KVxuXG4gICAgaWYgKGV2ZW50LmlzRG9uZSAmJiB0aGlzLmNvbHVtbnMpIHtcbiAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmNvbHVtbnNcbiAgICAgIGNvbnN0IGNvbCA9IGNvbHVtbnMuZmluZChjID0+IGMucHJvcCA9PT0gZXZlbnQuY29sdW1uLnByb3ApXG4gICAgICBpZiAoY29sKSB7XG4gICAgICAgIGNvbC5jYW5BdXRvUmVzaXplID0gZmFsc2VcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHJlZmVyZW5jZXNLZXkpIHtcbiAgICAgICAgY29uc3QgcHJlZiA9IHsgcHJvcDogZXZlbnQuY29sdW1uLnByb3AsIHdpZHRoOiBldmVudC5jb2x1bW4ud2lkdGgsIGNhbkF1dG9SZXNpemU6IGZhbHNlIH1cbiAgICAgICAgdGhpcy5fcHJlZmVyZW5jZXMuc2V0Q29sdW1uUHJlZmVyZW5jZSh0aGlzLnByZWZlcmVuY2VzS2V5LCBwcmVmKVxuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbHVtbnMgPSBbIC4uLnRoaXMuY29sdW1ucyBdXG4gICAgfVxuICB9XG5cbiAgX29uVHJlZUFjdGlvbihldmVudDogYW55KSB7XG4gICAgY29uc3QgaW5kZXggPSBldmVudC5yb3dJbmRleFxuICAgIGNvbnN0IHJvdyA9IGV2ZW50LnJvd1xuICAgIGlmIChyb3cudHJlZVN0YXR1cyA9PT0gJ2NvbGxhcHNlZCcpIHtcbiAgICAgIHJvdy50cmVlU3RhdHVzID0gJ2V4cGFuZGVkJ1xuICAgIH0gZWxzZSB7XG4gICAgICByb3cudHJlZVN0YXR1cyA9ICdjb2xsYXBzZWQnXG4gICAgfVxuICAgIHRoaXMucm93cyA9IFsgLi4udGhpcy5yb3dzIF1cbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyQWN0aW9uUmVmcmVzaFJlcXVlc3QoKSB7XG4gICAgdGhpcy5hY3Rpb25SZWZyZXNoUmVxdWVzdC5lbWl0KHVuZGVmaW5lZClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFnZUluZm8oKTogVGhlU2VhbVBhZ2VJbmZvIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2Zmc2V0OiB0aGlzLm5neERhdGF0YWJsZT8ub2Zmc2V0ID8/IDAsXG4gICAgICBwYWdlU2l6ZTogdGhpcy5uZ3hEYXRhdGFibGU/LnBhZ2VTaXplID8/IDAsXG4gICAgICBsaW1pdDogdGhpcy5uZ3hEYXRhdGFibGU/LmxpbWl0LFxuICAgICAgY291bnQ6IHRoaXMubmd4RGF0YXRhYmxlPy5jb3VudCA/PyAwXG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
586
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvZGF0YXRhYmxlL2RhdGF0YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN6RSxPQUFPLEVBQWdCLFdBQVcsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQzlFLE9BQU8sRUFDYSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFDbkYsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFDM0QsZUFBZSxFQUFxQixNQUFNLEVBQTBCLFNBQVMsRUFDOUUsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDNUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ2xHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBRXZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQzVGLE9BQU8sRUFDTCxVQUFVLEVBS1Ysa0JBQWtCLElBQUkscUJBQXFCLEVBQzNDLDJCQUEyQixFQUMzQixpQkFBaUIsRUFDakIsUUFBUSxFQUVSLGtCQUFrQixFQUVuQixNQUFNLHVCQUF1QixDQUFBO0FBRzlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0s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LE1BQU0sRUFBRSxJQUFJLEVBQUU7O0FBOUh6QjtJQUFmLFlBQVksRUFBRTswREFBZ0M7QUFDL0I7SUFBZixZQUFZLEVBQUU7MkRBQWlDO0FBQ2hDO0lBQWYsWUFBWSxFQUFFOzZEQUFtQztBQUVuQztJQUFkLFdBQVcsRUFBRTtpREFBMEI7QUFDeEI7SUFBZixXQUFXLENBQUMsQ0FBQyxDQUFDO2lEQUFrQjtBQUNqQjtJQUFmLFdBQVcsQ0FBQyxDQUFDLENBQUM7a0RBQW1CO0FBRWxCO0lBQWYsWUFBWSxFQUFFOzREQUFrQztBQUlqQztJQUFmLFlBQVksRUFBRTt1REFBNEI7QUFDM0I7SUFBZixZQUFZLEVBQUU7dURBQTZCO0FBdUM1QjtJQUFmLFlBQVksRUFBRTtpRUFBdUM7QUFJdEM7SUFBZixZQUFZLEVBQUU7K0RBQXFDO0FBSXBDO0lBQWYsWUFBWSxFQUFFO3NEQUE0QjtBQUM1QjtJQUFkLFdBQVcsRUFBRTt5REFBMkI7QUFHekI7SUFBZixZQUFZLEVBQUU7MERBQStCO0FBRS9CO0lBQWQsV0FBVyxFQUFFO3dEQUEwQjtBQUN6QjtJQUFkLFdBQVcsRUFBRTtxREFBdUI7QUFDdEI7SUFBZCxXQUFXLEVBQUU7d0RBQTBCO0FBRXhCO0lBQWYsWUFBWSxFQUFFO3NEQUEyQjtBQUMxQjtJQUFmLFlBQVksRUFBRTtzREFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUFycmF5LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdGlvblRva2VuLCBJbnB1dCwgS2V5VmFsdWVEaWZmZXIsXG4gIEtleVZhbHVlRGlmZmVycywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IERhdGF0YWJsZURhdGFTb3VyY2UgfSBmcm9tICcuLy4uL21vZGVscy9kYXRhdGFibGUtZGF0YS1zb3VyY2UnXG5cbmltcG9ydCB7IGZhQ2hldnJvbkRvd24sIGZhQ2hldnJvblJpZ2h0LCBmYVNwaW5uZXIgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnXG5pbXBvcnQge1xuICBDb2x1bW5Nb2RlLFxuICBDb250ZXh0bWVudVR5cGUsXG4gIERhdGFUYWJsZUNvbHVtbkNlbGxUcmVlVG9nZ2xlLFxuICBEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmUsXG4gIERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZSxcbiAgRGF0YXRhYmxlQ29tcG9uZW50IGFzIE5neERhdGF0YWJsZUNvbXBvbmVudCxcbiAgRGF0YXRhYmxlUm93RGV0YWlsRGlyZWN0aXZlLFxuICBzZXRDb2x1bW5EZWZhdWx0cyxcbiAgU29ydFR5cGUsXG4gIFRhYmxlQ29sdW1uLFxuICB0cmFuc2xhdGVUZW1wbGF0ZXMsXG4gIFRyZWVTdGF0dXNcbn0gZnJvbSAnQG1hcmtsYi9uZ3gtZGF0YXRhYmxlJ1xuaW1wb3J0IHR5cGUgeyBTZWxlY3Rpb25UeXBlIH0gZnJvbSAnQG1hcmtsYi9uZ3gtZGF0YXRhYmxlJ1xuXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5pbXBvcnQgeyBjb21wb3NlRGF0YUZpbHRlcnMsIGNvbXBvc2VEYXRhRmlsdGVyU3RhdGVzLCBEYXRhRmlsdGVyU3RhdGUsIElEYXRhRmlsdGVyIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2RhdGEtZmlsdGVycydcbmltcG9ydCB7IElFbGVtZW50UmVzaXplZEV2ZW50IH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3NoYXJlZCdcbmltcG9ydCB7IGhhc1Byb3BlcnR5LCBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXG5cbmltcG9ydCB7IENvbGxlY3Rpb25WaWV3ZXIsIERhdGFTb3VyY2UsIGlzRGF0YVNvdXJjZSwgTGlzdFJhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJ1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IERhdGF0YWJsZUFjdGlvbk1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9kYXRhdGFibGUtYWN0aW9uLW1lbnUvZGF0YXRhYmxlLWFjdGlvbi1tZW51LmNvbXBvbmVudCdcbmltcG9ydCB7IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGF0YWJsZS1jb2x1bW4vZGF0YXRhYmxlLWNvbHVtbi5jb21wb25lbnQnXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlRm9vdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGF0YXRhYmxlLWZvb3Rlci9kYXRhdGFibGUtZm9vdGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IERhdGF0YWJsZU1lbnVCYXJDb21wb25lbnQgfSBmcm9tICcuLi9kYXRhdGFibGUtbWVudS1iYXIvZGF0YXRhYmxlLW1lbnUtYmFyLmNvbXBvbmVudCdcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVSb3dEZXRhaWxEaXJlY3RpdmUgfSBmcm9tICcuLi9kYXRhdGFibGUtcm93LWRldGFpbC9kYXRhdGFibGUtcm93LWRldGFpbC5kaXJlY3RpdmUnXG5pbXBvcnQgeyBEYXRhdGFibGVSb3dBY3Rpb25JdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kYXRhdGFibGUtcm93LWFjdGlvbi1pdGVtLmRpcmVjdGl2ZSdcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVBY2Nlc3NvciB9IGZyb20gJy4uL21vZGVscy9kYXRhdGFibGUtYWNjZXNzb3InXG5pbXBvcnQgeyBUaGVTZWFtUGFnZUluZm8gfSBmcm9tICcuLi9tb2RlbHMvcGFnZS1pbmZvJ1xuaW1wb3J0IHsgU29ydEV2ZW50IH0gZnJvbSAnLi4vbW9kZWxzL3NvcnQtZXZlbnQnXG5pbXBvcnQgeyBTb3J0SXRlbSB9IGZyb20gJy4uL21vZGVscy9zb3J0LWl0ZW0nXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vbW9kZWxzL3RhYmxlLWNvbHVtbidcbmltcG9ydCB7IERhdGF0YWJsZUNvbHVtbkNoYW5nZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGF0YXRhYmxlLWNvbHVtbi1jaGFuZ2VzLnNlcnZpY2UnXG5pbXBvcnQgeyBEYXRhdGFibGVQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kYXRhdGFibGUtcHJlZmVyZW5jZXMuc2VydmljZSdcbmltcG9ydCB7IFRIRVNFQU1fREFUQVRBQkxFX0FDQ0VTU09SIH0gZnJvbSAnLi4vdG9rZW5zL2RhdGF0YWJsZS1hY2Nlc3NvcidcblxuZXhwb3J0IGZ1bmN0aW9uIF9zZXRDb2x1bW5EZWZhdWx0cyhjb2x1bW5zOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgIGlmICghY29sdW1uLmhhc093blByb3BlcnR5KCdoaWRkZW4nKSkge1xuICAgICAgY29sdW1uLmhpZGRlbiA9IGZhbHNlXG4gICAgfVxuICB9XG4gIHNldENvbHVtbkRlZmF1bHRzKGNvbHVtbnMpXG59XG5cbi8qKlxuICogTk9URTogVGhpcyBpcyBzdGlsbCBiZWluZyB3b3JrZWQgb24uIEkgYW0gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhpcyBtb2RlbFxuICogYmVjYXVzZSBgbmd4LWRhdGF0YWJsZWAganVzdCB1c2VzIGFuIHVudHlwZWQgb2JqZWN0IGFuZCBzZXRzIHByb3BlcnRpZXMgaW5cbiAqIG11bHRpcGxlIHBsYWNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ2VsbENvbnRleHQge1xuICBhbGxSb3dzU2VsZWN0ZWQ6IGZhbHNlXG5cbiAgc2VsZWN0Rm46ICgpID0+IGFueVxuICBzb3J0RGlyPzogJ2FzYycgfCAnZGVzYydcbiAgc29ydEZuOiAoKSA9PiBhbnlcblxuICBleHBhbmRlZD86IGJvb2xlYW5cblxuICBvbkNoZWNrYm94Q2hhbmdlRm4/OiBhbnlcbiAgYWN0aXZhdGVGbj86IGFueVxuICByb3c/OiBhbnlcbiAgZ3JvdXA/OiBhbnlcbiAgdmFsdWU/OiBhbnlcbiAgY29sdW1uPzogVGhlU2VhbURhdGF0YWJsZUNvbHVtblxuICByb3dIZWlnaHQ/OiBudW1iZXJcbiAgaXNTZWxlY3RlZD86IGJvb2xlYW5cbiAgcm93SW5kZXg/OiBudW1iZXJcbiAgdHJlZVN0YXR1cz86IFRyZWVTdGF0dXNcbiAgb25UcmVlQWN0aW9uPzogYW55XG59XG5cbi8qKlxuICogSW50ZW5kZWQgZm9yIGludGVybmFsIGNsYXNzZXMgZGVjbGFyZWQgYnkgdGhlIGBUaGVTZWFtRGF0YXRhYmxlTW9kdWxlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRIRVNFQU1fREFUQVRBQkxFID0gbmV3IEluamVjdGlvblRva2VuPElEYXRhRmlsdGVyPignTGliRGF0YXRhYmxlJylcblxuZXhwb3J0IGNvbnN0IF9USEVTRUFNX0RBVEFUQUJMRTogYW55ID0ge1xuICBwcm92aWRlOiBUSEVTRUFNX0RBVEFUQUJMRSxcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXVzZS1iZWZvcmUtZGVjbGFyZVxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRhdGFibGVDb21wb25lbnQpXG59XG5cbmV4cG9ydCBjb25zdCBfVEhFU0VBTV9EQVRBVEFCTEVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogVEhFU0VBTV9EQVRBVEFCTEVfQUNDRVNTT1IsXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11c2UtYmVmb3JlLWRlY2xhcmVcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0YXRhYmxlQ29tcG9uZW50KVxufVxuXG4vLyBUT0RPOiBSZWR1Y2UgcmVsaWFuY2Ugb24gQmVoYXZpb3JTdWJqZWN0IGJhc2VkIG9ic2VydmFibGVzLCBiZWNhdXNlIGl0IHNob3VsZFxuLy8gYmUgZWFzaWVyIHRvIGF2b2l0IG92ZXIgZW1pdHRpbmcgb2JzZXJ2YWJsZXMuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLWRhdGF0YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzbGlkZURvd24nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMjAlKScsIG9wYWNpdHk6ICcwJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMjUwbXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLCBvcGFjaXR5OiAnMScgfSkpLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsIG9wYWNpdHk6ICcxJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMjUwbXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTIwJSknLCBvcGFjaXR5OiAnMCcgfSkpLFxuICAgICAgXSlcbiAgICBdKVxuICBdLFxuICBwcm92aWRlcnM6IFsgX1RIRVNFQU1fREFUQVRBQkxFLCBEYXRhdGFibGVDb2x1bW5DaGFuZ2VzU2VydmljZSwgX1RIRVNFQU1fREFUQVRBQkxFX0FDQ0VTU09SIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YXRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQsIFRoZVNlYW1EYXRhdGFibGVBY2Nlc3NvciwgQ29sbGVjdGlvblZpZXdlciB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9leHRlcm5hbFBhZ2luZzogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9leHRlcm5hbFNvcnRpbmc6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZXh0ZXJuYWxGaWx0ZXJpbmc6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbG9hZGluZ0luZGljYXRvcjogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yZW9yZGVyYWJsZTogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zd2FwQ29sdW1uczogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9ncm91cEV4cGFuc2lvbkRlZmF1bHQ6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2VsZWN0QWxsUm93c09uUGFnZTogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zdW1tYXJ5Um93OiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3ZpcnR1YWxpemF0aW9uOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Njcm9sbGJhclY6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2Nyb2xsYmFySDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9saW1pdDogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2NvdW50OiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfb2Zmc2V0OiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaGVhZGVySGVpZ2h0OiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcm93SGVpZ2h0OiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZm9vdGVySGVpZ2h0OiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc3VtbWFyeUhlaWdodDogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2NvbHVtbnM6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXSB8IHVuZGVmaW5lZCB8IG51bGxcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3NvcnRzOiBTb3J0SXRlbVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIGZhQ2hldnJvbkRvd24gPSBmYUNoZXZyb25Eb3duXG4gIGZhQ2hldnJvblJpZ2h0ID0gZmFDaGV2cm9uUmlnaHRcbiAgZmFTcGlubmVyID0gZmFTcGlubmVyXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KClcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElEYXRhRmlsdGVyW10+KFtdKVxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zT2JzZXJ2YWJsZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTxUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGFTb3VyY2VTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhU291cmNlPGFueT4gfCBhbnlbXSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuXG4gIHB1YmxpYyByZWFkb25seSBmaWx0ZXJTdGF0ZXM6IE9ic2VydmFibGU8RGF0YUZpbHRlclN0YXRlW10+XG5cbiAgZ2V0IGZpbHRlcnMoKTogSURhdGFGaWx0ZXJbXSB7IHJldHVybiB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZSB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlcnMkOiBPYnNlcnZhYmxlPElEYXRhRmlsdGVyW10+XG5cbiAgQElucHV0KClcbiAgZ2V0IHByZWZlcmVuY2VzS2V5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwgeyByZXR1cm4gdGhpcy5fcHJlZmVyZW5jZXNLZXkudmFsdWUgfVxuICBzZXQgcHJlZmVyZW5jZXNLZXkodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHsgdGhpcy5fcHJlZmVyZW5jZXNLZXkubmV4dCh2YWx1ZSB8fCB1bmRlZmluZWQpIH1cbiAgcHJpdmF0ZSBfcHJlZmVyZW5jZXNLZXkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+KHVuZGVmaW5lZClcblxuICBASW5wdXQoKSB0YXJnZXRNYXJrZXJUZW1wbGF0ZTogYW55XG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbnMoKTogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdIHsgcmV0dXJuIHRoaXMuX2NvbHVtbnMudmFsdWUgfVxuICBzZXQgY29sdW1ucyh2YWx1ZTogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2NvbHVtbnMgaW5wdXQnLCB2YWx1ZSlcbiAgICB0aGlzLl9jb2x1bW5zLm5leHQoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdKVxuICB9XG4gIHByaXZhdGUgX2NvbHVtbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXT4oW10pXG5cbiAgQElucHV0KClcbiAgZ2V0IHJvd3MoKTogYW55W10geyByZXR1cm4gdGhpcy5fcm93cy52YWx1ZSB9XG4gIHNldCByb3dzKHZhbHVlOiBhbnlbXSkgeyB0aGlzLl9yb3dzLm5leHQodmFsdWUgfHwgW10pIH1cbiAgcHJpdmF0ZSBfcm93cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKVxuXG4gIHB1YmxpYyByb3dzJDogT2JzZXJ2YWJsZTxhbnlbXT5cblxuICBASW5wdXQoKSBjb2x1bW5Nb2RlOiBDb2x1bW5Nb2RlIHwgdW5kZWZpbmVkIHwgbnVsbCA9IENvbHVtbk1vZGUuZm9yY2VcblxuICBASW5wdXQoKSBncm91cFJvd3NCeTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBncm91cGVkUm93czogYW55W10gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgc2VsZWN0ZWQ6IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbCA9IFtdXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGV4dGVybmFsUGFnaW5nOiBib29sZWFuID0gZmFsc2VcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGV4dGVybmFsU29ydGluZzogYm9vbGVhbiA9IGZhbHNlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBleHRlcm5hbEZpbHRlcmluZzogYm9vbGVhbiA9IGZhbHNlXG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgbGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoMCkgY291bnQ6IG51bWJlciA9IDBcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKDApIG9mZnNldDogbnVtYmVyID0gMFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBsb2FkaW5nSW5kaWNhdG9yOiBib29sZWFuID0gZmFsc2VcblxuICBASW5wdXQoKSBzZWxlY3Rpb25UeXBlOiBTZWxlY3Rpb25UeXBlIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSByZW9yZGVyYWJsZTogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHN3YXBDb2x1bW5zOiBib29sZWFuID0gZmFsc2VcblxuICBASW5wdXQoKSBzb3J0VHlwZTogU29ydFR5cGUgfCB1bmRlZmluZWQgfCBudWxsID0gU29ydFR5cGUuc2luZ2xlXG5cbiAgQElucHV0KClcbiAgZ2V0IHNvcnRzKCk6IFNvcnRJdGVtW10geyByZXR1cm4gdGhpcy5uZ3hEYXRhdGFibGUgPyB0aGlzLm5neERhdGF0YWJsZS5zb3J0cyA6IHRoaXMuX3NvcnRzIH1cbiAgc2V0IHNvcnRzKHZhbHVlOiBTb3J0SXRlbVtdKSB7XG4gICAgdGhpcy5fc29ydHMgPSBub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpID8gY29lcmNlQXJyYXkodmFsdWUpIDogW11cbiAgfVxuICBfc29ydHM6IFNvcnRJdGVtW10gPSBbXVxuXG4gIEBJbnB1dCgpIGNzc0NsYXNzZXM6IGFueSB8IHVuZGVmaW5lZCB8IG51bGwgPSB7XG4gICAgc29ydEFzY2VuZGluZzogJ2RhdGF0YWJsZS1pY29uLXVwJyxcbiAgICBzb3J0RGVzY2VuZGluZzogJ2RhdGF0YWJsZS1pY29uLWRvd24nLFxuICAgIHBhZ2VyTGVmdEFycm93OiAnZGF0YXRhYmxlLWljb24tbGVmdCcsXG4gICAgcGFnZXJSaWdodEFycm93OiAnZGF0YXRhYmxlLWljb24tcmlnaHQnLFxuICAgIHBhZ2VyUHJldmlvdXM6ICdkYXRhdGFibGUtaWNvbi1wcmV2JyxcbiAgICBwYWdlck5leHQ6ICdkYXRhdGFibGUtaWNvbi1za2lwJ1xuICB9XG5cbiAgQElucHV0KCkgbWVzc2FnZXM6IGFueSB8IHVuZGVmaW5lZCB8IG51bGwgPSB7XG4gICAgLy8gTWVzc2FnZSB0byBzaG93IHdoZW4gYXJyYXkgaXMgcHJlc2VudGVkXG4gICAgLy8gYnV0IGNvbnRhaW5zIG5vIHZhbHVlc1xuICAgIGVtcHR5TWVzc2FnZTogJ05vIHJlY29yZHMgZm91bmQnLFxuXG4gICAgLy8gRm9vdGVyIHRvdGFsIG1lc3NhZ2VcbiAgICB0b3RhbE1lc3NhZ2U6ICd0b3RhbCcsXG5cbiAgICAvLyBGb290ZXIgc2VsZWN0ZWQgbWVzc2FnZVxuICAgIHNlbGVjdGVkTWVzc2FnZTogJ3NlbGVjdGVkJ1xuICB9XG5cbiAgQElucHV0KCkgcm93SWRlbnRpdHk6ICgoeDogYW55KSA9PiBhbnkpIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICgoeDogYW55KSA9PiB4KVxuXG4gIEBJbnB1dCgpIHJvd0NsYXNzOiBhbnkgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgc2VsZWN0Q2hlY2s6IGFueSB8IHVuZGVmaW5lZCB8IG51bGxcbiAgQElucHV0KCkgZGlzcGxheUNoZWNrOiAoKHJvdzogYW55LCBjb2x1bW4/OiBhbnksIHZhbHVlPzogYW55KSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZ3JvdXBFeHBhbnNpb25EZWZhdWx0OiBib29sZWFuID0gZmFsc2VcblxuICBASW5wdXQoKSB0cmFja0J5UHJvcDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzZWxlY3RBbGxSb3dzT25QYWdlOiBib29sZWFuID0gZmFsc2VcblxuICBASW5wdXQoKSB0cmVlRnJvbVJlbGF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG4gIEBJbnB1dCgpIHRyZWVUb1JlbGF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzdW1tYXJ5Um93OiBib29sZWFuID0gZmFsc2VcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgc3VtbWFyeUhlaWdodDogbnVtYmVyID0gMzBcbiAgQElucHV0KCkgc3VtbWFyeVBvc2l0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsID0gJ3RvcCdcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdmlydHVhbGl6YXRpb246IGJvb2xlYW4gPSB0cnVlXG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgaGVhZGVySGVpZ2h0OiBudW1iZXIgPSA1MFxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSByb3dIZWlnaHQ6IG51bWJlciA9IDUwXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIGZvb3RlckhlaWdodDogbnVtYmVyID0gNDBcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgc2Nyb2xsYmFyVjogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNjcm9sbGJhckg6IGJvb2xlYW4gPSB0cnVlXG5cbiAgQElucHV0KClcbiAgc2V0IGRhdGFTb3VyY2UodmFsdWU6IERhdGFTb3VyY2U8YW55PiB8IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGF0YWJsZURhdGFTb3VyY2UpIHtcbiAgICAgIHZhbHVlLnNldERhdGF0YWJsZUFjY2Vzc29yKHRoaXMpXG4gICAgfVxuICAgIHRoaXMuX2RhdGFTb3VyY2VTdWJqZWN0Lm5leHQodmFsdWUgfHwgdW5kZWZpbmVkKVxuICB9XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNjcm9sbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG4gIEBPdXRwdXQoKSByZWFkb25seSBhY3RpdmF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG4gIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc29ydCA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydEV2ZW50PigpXG4gIEBPdXRwdXQoKSByZWFkb25seSBwYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaGVTZWFtUGFnZUluZm8+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHJlb3JkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgcmVzaXplID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHRhYmxlQ29udGV4dG1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IE1vdXNlRXZlbnQsIHR5cGU6IENvbnRleHRtZW51VHlwZSwgY29udGVudDogYW55IH0+KGZhbHNlKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdHJlZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGFjdGlvblJlZnJlc2hSZXF1ZXN0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG4gIEBPdXRwdXQoKSByZWFkb25seSBoaWRkZW5Db2x1bW5zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50KSBjb2x1bW5Db21wb25lbnRzPzogUXVlcnlMaXN0PERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudD5cblxuICBAQ29udGVudENoaWxkKERhdGF0YWJsZUFjdGlvbk1lbnVDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGFjdGlvbk1lbnU/OiBEYXRhdGFibGVBY3Rpb25NZW51Q29tcG9uZW50XG4gIEBDb250ZW50Q2hpbGQoRGF0YXRhYmxlUm93QWN0aW9uSXRlbURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcm93QWN0aW9uSXRlbT86IERhdGF0YWJsZVJvd0FjdGlvbkl0ZW1EaXJlY3RpdmVcbiAgQENvbnRlbnRDaGlsZChUaGVTZWFtRGF0YXRhYmxlUm93RGV0YWlsRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSByb3dEZXRhaWw/OiBUaGVTZWFtRGF0YXRhYmxlUm93RGV0YWlsRGlyZWN0aXZlXG4gIEBDb250ZW50Q2hpbGQoVGhlU2VhbURhdGF0YWJsZUZvb3RlckRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgZm9vdGVyPzogVGhlU2VhbURhdGF0YWJsZUZvb3RlckRpcmVjdGl2ZVxuXG4gIEBDb250ZW50Q2hpbGQoRGF0YXRhYmxlTWVudUJhckNvbXBvbmVudClcbiAgZ2V0IG1lbnVCYXJDb21wb25lbnQoKTogRGF0YXRhYmxlTWVudUJhckNvbXBvbmVudCB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9tZW51QmFyQ29tcG9uZW50IH1cbiAgc2V0IG1lbnVCYXJDb21wb25lbnQodmFsdWU6IERhdGF0YWJsZU1lbnVCYXJDb21wb25lbnQgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9tZW51QmFyQ29tcG9uZW50ID0gdmFsdWVcblxuICAgIGlmICh0aGlzLl9tZW51QmFyU3ViKSB7IHRoaXMuX21lbnVCYXJTdWIudW5zdWJzY3JpYmUoKSB9XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX3NldE1lbnVCYXJGaWx0ZXJzKHZhbHVlLmZpbHRlcnMoKSlcblxuICAgICAgdGhpcy5fbWVudUJhclN1YiA9IHRoaXMuX21lbnVCYXJDb21wb25lbnQ/LmZpbHRlcnNDaGFuZ2VkXG4gICAgICAgIC5zdWJzY3JpYmUodiA9PiB7IHRoaXMuX3NldE1lbnVCYXJGaWx0ZXJzKHZhbHVlLmZpbHRlcnMoKSkgfSlcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfbWVudUJhckNvbXBvbmVudDogRGF0YXRhYmxlTWVudUJhckNvbXBvbmVudCB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9tZW51QmFyU3ViOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWRcblxuICBAVmlld0NoaWxkKE5neERhdGF0YWJsZUNvbXBvbmVudCkgbmd4RGF0YXRhYmxlPzogTmd4RGF0YXRhYmxlQ29tcG9uZW50XG4gIEBWaWV3Q2hpbGQoTmd4RGF0YXRhYmxlQ29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgbmd4RGF0YXRhYmxlRWxlbWVudD86IEVsZW1lbnRSZWZcbiAgQFZpZXdDaGlsZChEYXRhdGFibGVSb3dEZXRhaWxEaXJlY3RpdmUpIG5neFJvd0RldGFpbD86IERhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZVxuXG4gIEBWaWV3Q2hpbGQoJ2FjdGlvbk1lbnVDZWxsVHBsJywgeyBzdGF0aWM6IHRydWUgfSkgYWN0aW9uTWVudUNlbGxUcGw/OiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+XG4gIEBWaWV3Q2hpbGQoJ3RyZWVUb2dnbGVUcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0cmVlVG9nZ2xlVHBsPzogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGU+XG4gIEBWaWV3Q2hpbGQoJ2hlYWRlclRwbCcsIHsgc3RhdGljOiB0cnVlIH0pIGhlYWRlclRwbD86IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT5cbiAgQFZpZXdDaGlsZCgnYmxhbmtIZWFkZXJUcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBibGFua0hlYWRlclRwbD86IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT5cbiAgQFZpZXdDaGlsZCgnY2VsbFR5cGVTZWxlY3RvclRwbCcsIHsgc3RhdGljOiB0cnVlIH0pIGNlbGxUeXBlU2VsZWN0b3JUcGw/OiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+XG5cbiAgcHVibGljIGNvbHVtbkNvbXBvbmVudHMkPzogT2JzZXJ2YWJsZTxEYXRhdGFibGVDb2x1bW5Db21wb25lbnRbXT5cbiAgcHJpdmF0ZSBfY29sRGlmZmVyc0lucDogeyBbcHJvcE5hbWU6IHN0cmluZ106IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PiB9ID0ge31cbiAgcHJpdmF0ZSBfY29sRGlmZmVyc1RwbDogeyBbcHJvcE5hbWU6IHN0cmluZ106IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PiB9ID0ge31cblxuICBwdWJsaWMgcmVhZG9ubHkgY29sdW1ucyQ6IE9ic2VydmFibGU8VGhlU2VhbURhdGF0YWJsZUNvbHVtbltdPlxuICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheUNvbHVtbnMkOiBPYnNlcnZhYmxlPFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXT5cblxuICB2aWV3Q2hhbmdlOiBPYnNlcnZhYmxlPExpc3RSYW5nZT5cblxuICBwcml2YXRlIF9yb3dEZXRhaWxUb2dnbGVTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFlcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5DaGFuZ2VzU2VydmljZTogRGF0YXRhYmxlQ29sdW1uQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ByZWZlcmVuY2VzOiBEYXRhdGFibGVQcmVmZXJlbmNlc1NlcnZpY2VcbiAgKSB7XG4gICAgLy8gdGhpcy5kaXNwbGF5Q29sdW1ucyQgPSB0aGlzLmhpZGRlbkNvbHVtbnMkLnBpcGUoXG4gICAgLy8gICBzd2l0Y2hNYXAoaGlkZGVuQ29sdW1ucyA9PiB0aGlzLmNvbHVtbnMkLnBpcGUobWFwKGNvbHMgPT4gY29scy5maWx0ZXIoYyA9PiBoaWRkZW5Db2x1bW5zLmZpbmRJbmRleChoYyA9PiBoYyA9PT0gYy5wcm9wKSA9PT0gLTEpKSkpXG4gICAgLy8gKVxuXG4gICAgY29uc3QgYXBwbHlQcmVmcyA9IChjb2xzOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10pID0+IHRoaXMuX3ByZWZlcmVuY2VzS2V5LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobmFtZSA9PiAhIW5hbWVcbiAgICAgICAgLy8gTk9URTogVGhpcyBwZW5kaW5nIGNoZWNrIGlzIHRlbXBvcmFyeSB0byBhdm9pZCB0YWJsZSB1c2luZyBwcmV2aW91c2x5XG4gICAgICAgIC8vIHJldHJpZXZlZCBwcmVmZXJlbmNlIHdoaWxlIHRoZSBuZXcgb25lIGlzIGJlaW5nIHVwZGF0ZWQgb24gdGhlXG4gICAgICAgIC8vIHNlcnZlci5cbiAgICAgICAgPyAhdGhpcy5fcHJlZmVyZW5jZXMucGVuZGluZ1xuICAgICAgICAgID8gdGhpcy5fcHJlZmVyZW5jZXMud2l0aENvbHVtblByZWZlcmVuY2VzKG5hbWUsIGNvbHMpXG4gICAgICAgICAgOiBvZihjb2xzKVxuICAgICAgICA6IG9mKGNvbHMpXG4gICAgICApXG4gICAgKVxuXG4gICAgdGhpcy5jb2x1bW5zJCA9IHRoaXMuX2NvbHVtbnNPYnNlcnZhYmxlLnBpcGUoc3dpdGNoTWFwKGNvbHNPYnMgPT4gY29sc09icyA/PyBvZihbXSkpKVxuXG4gICAgdGhpcy5kaXNwbGF5Q29sdW1ucyQgPSB0aGlzLmNvbHVtbnMkLnBpcGUoXG4gICAgICBtYXAoY29scyA9PiBjb2xzLmZpbHRlcihjID0+ICFjLmhpZGRlbikpLFxuICAgICAgdGFwKHYgPT4gdGhpcy5fcmVtb3ZlVW51c2VkRGlmZnModikpLFxuICAgICAgc3dpdGNoTWFwKGNvbHMgPT4gYXBwbHlQcmVmcyhjb2xzKSksXG4gICAgKVxuXG4gICAgdGhpcy5maWx0ZXJzJCA9IHRoaXMuX2ZpbHRlcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG5cbiAgICB0aGlzLmZpbHRlclN0YXRlcyA9IHRoaXMuX2ZpbHRlcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZmlsdGVycyA9PiBjb21wb3NlRGF0YUZpbHRlclN0YXRlcyhmaWx0ZXJzKSlcbiAgICApXG5cbiAgICAvLyB0aGlzLnJvd3MkID0gdGhpcy5fZmlsdGVyc1N1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgICAvLyAgIC5waXBlKFxuICAgIC8vICAgICBzd2l0Y2hNYXAoZmlsdGVycyA9PiB7XG4gICAgLy8gICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxGaWx0ZXJpbmcpIHtcbiAgICAvLyAgICAgICAgIHJldHVybiB0aGlzLl9yb3dzLmFzT2JzZXJ2YWJsZSgpXG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICAgIHJldHVybiB0aGlzLl9yb3dzLmFzT2JzZXJ2YWJsZSgpLnBpcGUoY29tcG9zZURhdGFGaWx0ZXJzKGZpbHRlcnMpKVxuICAgIC8vICAgICB9KVxuICAgIC8vICAgKVxuXG4gICAgdGhpcy5yb3dzJCA9IHRoaXMuX2RhdGFTb3VyY2VTdWJqZWN0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZGF0YVNvdXJjZSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXRhU291cmNlJywgZGF0YVNvdXJjZSlcbiAgICAgICAgbGV0IGRhdGFTdHJlYW06IE9ic2VydmFibGU8YW55W10+XG5cbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZShkYXRhU291cmNlKSkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd+ZGF0YXNvdXJjZScpXG4gICAgICAgICAgZGF0YVN0cmVhbSA9IGRhdGFTb3VyY2UuY29ubmVjdCh0aGlzKSBhcyBhbnlcbiAgICAgICAgfSBlbHNlIGlmIChpc09ic2VydmFibGUoZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnfm9ic2VydmFibGUnKVxuICAgICAgICAgIGRhdGFTdHJlYW0gPSBkYXRhU291cmNlIGFzIGFueVxuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnfmFycmF5JylcbiAgICAgICAgICBkYXRhU3RyZWFtID0gb2YoZGF0YVNvdXJjZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnfnJvd3MgZmFsbGJhY2snKVxuICAgICAgICAgIGRhdGFTdHJlYW0gPSB0aGlzLl9yb3dzLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAvLyAucGlwZSh0YXAodiA9PiBjb25zb2xlLmxvZygncm93c34nLCB2KSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZXh0ZXJuYWxGaWx0ZXJpbmcpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbm90IHVzaW5nIGV4dGVybmFsRmlsdGVyaW5nJylcbiAgICAgICAgICBkYXRhU3RyZWFtID0gZGF0YVN0cmVhbS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKHJvd3MgPT4gdGhpcy5fZmlsdGVyc1N1YmplY3QucGlwZShcbiAgICAgICAgICAgICAgLy8gdGFwKHYgPT4gY29uc29sZS5sb2coJ2ZpbHRlcnMnLCB2KSksXG4gICAgICAgICAgICAgIGNvbmNhdE1hcChmaWx0ZXJzID0+IG9mKHJvd3MpLnBpcGUoY29tcG9zZURhdGFGaWx0ZXJzKGZpbHRlcnMpKSksXG4gICAgICAgICAgICAgIC8vIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdjb21wb3NlZCBmaWx0ZXJzJywgdikpLFxuICAgICAgICAgICAgKSlcbiAgICAgICAgICApXG5cbiAgICAgICAgICAvLyBkYXRhU3RyZWFtID0gdGhpcy5fZmlsdGVyc1N1YmplY3QucGlwZShcbiAgICAgICAgICAvLyAgIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdmaWx0ZXJzJywgdikpLFxuICAgICAgICAgIC8vICAgY29uY2F0TWFwKGZpbHRlcnMgPT4gZGF0YVN0cmVhbS5waXBlKGNvbXBvc2VEYXRhRmlsdGVycyhmaWx0ZXJzKSkpLFxuICAgICAgICAgIC8vICAgdGFwKHYgPT4gY29uc29sZS5sb2coJ2NvbXBvc2VkIGZpbHRlcnMnLCB2KSksXG4gICAgICAgICAgLy8gKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGFTdHJlYW0ucGlwZShcbiAgICAgICAgICAvLyB0YXAodiA9PiBjb25zb2xlLmxvZygnc3RyZWFtJywgdikpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKVxuICAgICAgICApXG4gICAgICB9KVxuICAgIClcblxuICAgIC8vIHRoaXMuaGlkZGVuQ29sdW1ucyQgPSB0aGlzLl9oaWRkZW5Db2x1bW5zLmFzT2JzZXJ2YWJsZSgpXG5cbiAgICAvLyB0aGlzLl9oaWRkZW5Db2x1bW5zLnBpcGUoXG4gICAgLy8gICBza2lwKDEpLFxuICAgIC8vICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IHtcbiAgICAvLyAgICAgY29uc3QgX2EgPSBBcnJheS5pc0FycmF5KGEpID8gYSA6IFtdXG4gICAgLy8gICAgIGNvbnN0IF9iID0gQXJyYXkuaXNBcnJheShiKSA/IGIgOiBbXVxuICAgIC8vICAgICBpZiAoX2EubGVuZ3RoICE9PSBfYi5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlIH1cbiAgICAvLyAgICAgY29uc3QgX2FzID0gX2Euc29ydCgpXG4gICAgLy8gICAgIGNvbnN0IF9icyA9IF9iLnNvcnQoKVxuICAgIC8vICAgICByZXR1cm4gIV9hcy5zb3J0KCkuZXZlcnkoKHZhbHVlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IF9ic1tpbmRleF0gPT09IHZhbHVlKVxuICAgIC8vICAgfSksXG4gICAgLy8gICB0YXAodiA9PiB0aGlzLmhpZGRlbkNvbHVtbnNDaGFuZ2UuZW1pdCh2KSksXG4gICAgLy8gICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgIC8vICkuc3Vic2NyaWJlKHYgPT4gY29uc29sZS5sb2coJ2hpZGRlbkNvbHVtbnNDaGFuZ2UnLCB2KSlcblxuICAgIC8vIFRPRE86IEltcGxlbWVudCB2aWV3Q2hhbmdlIGZvciBDb2xsZWN0aW9uVmlld2VyLlxuICAgIHRoaXMudmlld0NoYW5nZSA9IHRoaXMucGFnZS5waXBlKG1hcChwID0+ICh7IHN0YXJ0OiAwLCBlbmQ6IHAuY291bnQgfSkpKVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMucm93RGV0YWlsKSB7XG4gICAgICB0aGlzLl9yb3dEZXRhaWxUb2dnbGVTdWJzY3JpcHRpb24gPSB0aGlzLnJvd0RldGFpbC5fdG9nZ2xlLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIGlmICh0aGlzLm5neFJvd0RldGFpbCkge1xuICAgICAgICAgIHRoaXMubmd4Um93RGV0YWlsLnRvZ2dsZS5lbWl0KGV2ZW50KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3Jvd0RldGFpbFRvZ2dsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5jb2x1bW5Db21wb25lbnRzJCA9IHRoaXMuX2NvbHVtbkNoYW5nZXNTZXJ2aWNlLmNvbHVtbklucHV0Q2hhbmdlcyQucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmNvbHVtbkNvbXBvbmVudHM/LnRvQXJyYXkoKSA/PyBbXSksXG4gICAgICBzdGFydFdpdGgodGhpcy5jb2x1bW5Db21wb25lbnRzPy50b0FycmF5KCkgPz8gW10pLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgIClcblxuICAgIGNvbnN0IF9jb2x1bW5zID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNvbHVtbkNvbXBvbmVudHMkLFxuICAgICAgdGhpcy5fY29sdW1uc1xuICAgIF0pLnBpcGUoXG4gICAgICBtYXAodiA9PiB0aGlzLl9nZXRNZXJnZWRUcGxBbmRJbnBDb2x1bW5zKHZbMF0sIHZbMV0gPz8gW10pKSxcbiAgICAgIC8vIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdjb2xzJywgdikpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICApXG4gICAgdGhpcy5fY29sdW1uc09ic2VydmFibGUubmV4dChfY29sdW1ucylcbiAgfVxuXG4gIHByaXZhdGUgX2dldE1lcmdlZFRwbEFuZElucENvbHVtbnMoXG4gICAgdHBsQ29sczogRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50W10sXG4gICAgaW5wQ29sczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdXG4gICk6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXSB7XG4gICAgY29uc3QgY29sczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdID0gW11cblxuICAgIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgIGNvbnN0IGNoZWNrQm94Q29sOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uID0ge1xuICAgICAgICBwcm9wOiAnJCRfX2NoZWNrYm94X18nLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgd2lkdGg6IDQwLFxuICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgIGNhbkF1dG9SZXNpemU6IGZhbHNlLFxuICAgICAgICBkcmFnZ2FibGU6IGZhbHNlLFxuICAgICAgICByZXNpemVhYmxlOiBmYWxzZSxcbiAgICAgICAgaGVhZGVyQ2hlY2tib3hhYmxlOiB0cnVlLFxuICAgICAgICBjaGVja2JveGFibGU6IHRydWVcbiAgICAgIH1cblxuICAgICAgY29scy5wdXNoKGNoZWNrQm94Q29sKVxuICAgIH1cblxuICAgIGNvbnN0IF90cGxDb2xzID0gdHJhbnNsYXRlVGVtcGxhdGVzKDxhbnk+KHRwbENvbHMgfHwgW10pKVxuICAgIGZvciAoY29uc3QgY29sIG9mIGlucENvbHMpIHtcbiAgICAgIGNvbnN0IHRwbENvbCA9IF90cGxDb2xzLmZpbmQodCA9PiB0LnByb3AgPT09IGNvbC5wcm9wKVxuICAgICAgLy8gY29uc29sZS5sb2coeyBjb2w6IHsgLi4uKGNvbCB8fCB7fSkgfSwgdHBsQ29sOiB7IC4uLih0cGxDb2wgfHwge30pIH0gfSlcblxuICAgICAgY29uc3QgZHRDb2x1bW5zID0gKHRoaXMubmd4RGF0YXRhYmxlICYmIHRoaXMubmd4RGF0YXRhYmxlLl9pbnRlcm5hbENvbHVtbnMpIHx8IFtdXG4gICAgICBjb25zdCBwcmV2ID0gZHRDb2x1bW5zLmZpbmQoYyA9PiBjLnByb3AgPT09IGNvbC5wcm9wKVxuXG4gICAgICBjb25zdCBpbnBDb2xEaWZmID0gdGhpcy5fZ2V0Q29sRGlmZihjb2wpXG4gICAgICBjb25zdCBfaW5wQ29sID0gaW5wQ29sRGlmZiA/IHt9IDogdGhpcy5faGFzUHJldkNvbERpZmYoY29sKSA/IHt9IDogY29sXG4gICAgICBpZiAoaW5wQ29sRGlmZikge1xuICAgICAgICBpbnBDb2xEaWZmLmZvckVhY2hSZW1vdmVkSXRlbShyID0+IHtcbiAgICAgICAgICBpZiAocHJldiAmJiBwcmV2Lmhhc093blByb3BlcnR5KHIua2V5KSkge1xuICAgICAgICAgICAgY29uc3QgayA9IHIua2V5IGFzIGtleW9mIFRhYmxlQ29sdW1uXG4gICAgICAgICAgICBkZWxldGUgcHJldltrXVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgaW5wQ29sRGlmZi5mb3JFYWNoQWRkZWRJdGVtKHIgPT4gKF9pbnBDb2wgYXMgYW55KVtyLmtleV0gPSByLmN1cnJlbnRWYWx1ZSlcbiAgICAgICAgaW5wQ29sRGlmZi5mb3JFYWNoQ2hhbmdlZEl0ZW0ociA9PiAoX2lucENvbCBhcyBhbnkpW3Iua2V5XSA9IHIuY3VycmVudFZhbHVlKVxuICAgICAgfVxuXG4gICAgICBsZXQgX3RwbENvbDogVGhlU2VhbURhdGF0YWJsZUNvbHVtbiA9IHt9XG4gICAgICBpZiAodHBsQ29sKSB7XG4gICAgICAgIGNvbnN0IHRwbENvbERpZmYgPSB0cGxDb2wgPyB0aGlzLl9nZXRDb2xEaWZmKHRwbENvbCwgdHJ1ZSkgOiB1bmRlZmluZWRcbiAgICAgICAgX3RwbENvbCA9IHRwbENvbERpZmYgPyB7fSA6IHRoaXMuX2hhc1ByZXZDb2xEaWZmKGNvbCwgdHJ1ZSkgPyB7fSA6IHRwbENvbFxuICAgICAgICBpZiAodHBsQ29sRGlmZikge1xuICAgICAgICAgIHRwbENvbERpZmYuZm9yRWFjaFJlbW92ZWRJdGVtKHIgPT4ge1xuICAgICAgICAgICAgaWYgKHByZXYgJiYgcHJldi5oYXNPd25Qcm9wZXJ0eShyLmtleSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgayA9IHIua2V5IGFzIGtleW9mIFRhYmxlQ29sdW1uXG4gICAgICAgICAgICAgIGRlbGV0ZSBwcmV2W2tdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICB0cGxDb2xEaWZmLmZvckVhY2hBZGRlZEl0ZW0ociA9PiAoX3RwbENvbCBhcyBhbnkpW3Iua2V5XSA9IHIuY3VycmVudFZhbHVlKVxuICAgICAgICAgIHRwbENvbERpZmYuZm9yRWFjaENoYW5nZWRJdGVtKHIgPT4gKF90cGxDb2wgYXMgYW55KVtyLmtleV0gPSByLmN1cnJlbnRWYWx1ZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBfY29sOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uID0ge1xuICAgICAgICAuLi4ocHJldiB8fCB7fSksXG4gICAgICAgIC4uLl9pbnBDb2wsXG4gICAgICAgIC4uLl90cGxDb2xcbiAgICAgIH1cblxuICAgICAgY29scy5wdXNoKF9jb2wpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm93QWN0aW9uSXRlbSkge1xuICAgICAgY29uc3QgYWN0aW9uTWVudUNvbHVtbjogVGhlU2VhbURhdGF0YWJsZUNvbHVtbiA9IHtcbiAgICAgICAgcHJvcDogJyQkX19hY3Rpb25NZW51X18nLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgd2lkdGg6IDUwLFxuICAgICAgICBtaW5XaWR0aDogNTAsXG4gICAgICAgIG1heFdpZHRoOiA1MCxcbiAgICAgICAgcmVzaXplYWJsZTogZmFsc2UsXG4gICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgZHJhZ2dhYmxlOiBmYWxzZSxcbiAgICAgICAgLy8gVE9ETzogRml4IGNvbHVtbiBhdXRvIHNpemluZyB3aXRoIGZpeGVkIGNvbHVtbiBhbmQgY2VsbCBvdmVybGF5IGJlZm9yZSBlbmFibGluZy5cbiAgICAgICAgLy8gZnJvemVuUmlnaHQ6IHRydWUsXG4gICAgICAgIGNlbGxUZW1wbGF0ZTogdGhpcy5hY3Rpb25NZW51Q2VsbFRwbCxcbiAgICAgICAgaGVhZGVyVGVtcGxhdGU6IHRoaXMuYmxhbmtIZWFkZXJUcGxcbiAgICAgIH1cbiAgICAgIGNvbHMucHVzaChhY3Rpb25NZW51Q29sdW1uKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcbiAgICAgIGlmIChjb2wuaXNUcmVlQ29sdW1uICYmIGhhc1Byb3BlcnR5KGNvbCwgJ3RyZWVUb2dnbGVUZW1wbGF0ZScpKSB7XG4gICAgICAgIGNvbC50cmVlVG9nZ2xlVGVtcGxhdGUgPSB0aGlzLnRyZWVUb2dnbGVUcGxcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNQcm9wZXJ0eShjb2wsICdoZWFkZXJUZW1wbGF0ZScpKSB7XG4gICAgICAgIGNvbC5oZWFkZXJUZW1wbGF0ZSA9IHRoaXMuaGVhZGVyVHBsXG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNQcm9wZXJ0eShjb2wsICdjZWxsVHlwZScpKSB7XG4gICAgICAgIGNvbC5jZWxsVGVtcGxhdGUgPSB0aGlzLmNlbGxUeXBlU2VsZWN0b3JUcGxcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzZXRDb2x1bW5EZWZhdWx0cyhjb2xzKVxuICAgIF9zZXRDb2x1bW5EZWZhdWx0cyhjb2xzKVxuXG5cbiAgICAvLyBjb25zb2xlLmxvZyhjb2xzLm1hcChjID0+ICh7IHByb3A6IGMucHJvcCwgY2FuQXV0b1Jlc2l6ZTogYy5jYW5BdXRvUmVzaXplIH0pKSlcblxuICAgIHJldHVybiBjb2xzXG4gIH1cblxuICBwcml2YXRlIF9oYXNQcmV2Q29sRGlmZihjb2w6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4sIGlzVHBsOiBib29sZWFuID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICBpZiAoIWNvbCB8fCAhY29sLnByb3ApIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGNvbnN0IGRpZmZlcnNNYXAgPSBpc1RwbCA/IHRoaXMuX2NvbERpZmZlcnNUcGwgOiB0aGlzLl9jb2xEaWZmZXJzSW5wXG5cbiAgICByZXR1cm4gISFkaWZmZXJzTWFwXG4gIH1cblxuICBwcml2YXRlIF9nZXRDb2xEaWZmKGNvbDogVGhlU2VhbURhdGF0YWJsZUNvbHVtbiwgaXNUcGw6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmICghY29sIHx8ICFjb2wucHJvcCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGlmZmVyc01hcCA9IGlzVHBsID8gdGhpcy5fY29sRGlmZmVyc1RwbCA6IHRoaXMuX2NvbERpZmZlcnNJbnBcblxuICAgIGlmICghZGlmZmVyc01hcFtjb2wucHJvcF0pIHtcbiAgICAgIGRpZmZlcnNNYXBbY29sLnByb3BdID0gdGhpcy5fZGlmZmVycy5maW5kKHt9KS5jcmVhdGUoKVxuICAgIH1cblxuICAgIGNvbnN0IGRpZmZlciA9IGRpZmZlcnNNYXBbY29sLnByb3BdXG5cbiAgICBjb25zdCBkaWZmID0gZGlmZmVyLmRpZmYoY29sKVxuICAgIHJldHVybiBkaWZmXG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVVbnVzZWREaWZmcyhjb2xzOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10pIHtcbiAgICBjb25zdCBpbnBLZXlzID0gT2JqZWN0LmtleXModGhpcy5fY29sRGlmZmVyc0lucClcbiAgICBpbnBLZXlzLmZpbHRlcihrID0+IGNvbHMuZmluZEluZGV4KGMgPT4gYy5wcm9wID09PSBrKSA9PT0gLTEpXG4gICAgICAuZm9yRWFjaChrID0+IHsgZGVsZXRlIHRoaXMuX2NvbERpZmZlcnNJbnBba10gfSlcblxuICAgIGNvbnN0IHRwbEtleXMgPSBPYmplY3Qua2V5cyh0aGlzLl9jb2xEaWZmZXJzVHBsKVxuICAgIHRwbEtleXMuZmlsdGVyKGsgPT4gY29scy5maW5kSW5kZXgoYyA9PiBjLnByb3AgPT09IGspID09PSAtMSlcbiAgICAgIC5mb3JFYWNoKGsgPT4geyBkZWxldGUgdGhpcy5fY29sRGlmZmVyc1RwbFtrXSB9KVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TWVudUJhckZpbHRlcnMoZmlsdGVyczogSURhdGFGaWx0ZXJbXSkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdfc2V0TWVudUJhckZpbHRlcnMnLCBmaWx0ZXJzKVxuICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0Lm5leHQoZmlsdGVycyB8fCBbXSlcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5Db21wb25lbnQocHJvcE5hbWU6IHN0cmluZyk6IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudCB8IG51bGwge1xuICAgIGlmICghdGhpcy5jb2x1bW5Db21wb25lbnRzIHx8IHRoaXMuY29sdW1uQ29tcG9uZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgdHBsID0gdGhpcy5jb2x1bW5Db21wb25lbnRzLmZpbmQodCA9PiB0LnByb3AgPT09IHByb3BOYW1lKVxuICAgIGlmICh0cGwpIHtcbiAgICAgIHJldHVybiB0cGxcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgX2NvbHVtbkRhdGEoY29sOiBhbnkpOiB7IGNvbDogYW55LCBjb21wOiBEYXRhdGFibGVDb2x1bW5Db21wb25lbnQgfCBudWxsIH0ge1xuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmdldENvbHVtbkNvbXBvbmVudChjb2wucHJvcClcbiAgICByZXR1cm4geyBjb2wsIGNvbXAgfVxuICB9XG5cbiAgX2dldFJvd0V4cGFuZGVkKHJvdzogYW55KSB7XG4gICAgaWYgKHRoaXMubmd4RGF0YXRhYmxlICYmIHRoaXMubmd4RGF0YXRhYmxlLmJvZHlDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLm5neERhdGF0YWJsZS5ib2R5Q29tcG9uZW50LmdldFJvd0V4cGFuZGVkKHJvdylcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUZuQ29sdW1uKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHJldHVybiBpdGVtLnByb3BcbiAgfVxuXG4gIHB1YmxpYyBvbkRhdGF0YWJsZVJlc2l6ZShldmVudDogSUVsZW1lbnRSZXNpemVkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5uZ3hEYXRhdGFibGUgJiYgdGhpcy5uZ3hEYXRhdGFibGVFbGVtZW50ICYmIHRoaXMubmd4RGF0YXRhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAvLyBUT0RPOiBDb25zaWRlciBpbnRlZ3JhdGluZyB0aGlzIGludG8gdGhlIG5neC1kYXRhdGFibGUgbGlicmFyeSB0byBhdm9pZFxuICAgICAgLy8gbXVsdGlwbGUgcmVzaXplIGNhbGxzIHdoZW4gdGhlIHRhYmxlIHJlc2l6ZXMgaXRzZWxmLlxuICAgICAgdGhpcy5uZ3hEYXRhdGFibGUucmVjYWxjdWxhdGUoKVxuICAgIH1cbiAgfVxuXG4gIF9vblJlc2l6ZShldmVudDogYW55KSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3Jlc2l6ZScsIGV2ZW50LCBldmVudC5jb2x1bW4ucHJvcClcbiAgICB0aGlzLnJlc2l6ZS5lbWl0KGV2ZW50KVxuXG4gICAgaWYgKGV2ZW50LmlzRG9uZSAmJiB0aGlzLmNvbHVtbnMpIHtcbiAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmNvbHVtbnNcbiAgICAgIGNvbnN0IGNvbCA9IGNvbHVtbnMuZmluZChjID0+IGMucHJvcCA9PT0gZXZlbnQuY29sdW1uLnByb3ApXG4gICAgICBpZiAoY29sKSB7XG4gICAgICAgIGNvbC5jYW5BdXRvUmVzaXplID0gZmFsc2VcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHJlZmVyZW5jZXNLZXkpIHtcbiAgICAgICAgY29uc3QgcHJlZiA9IHsgcHJvcDogZXZlbnQuY29sdW1uLnByb3AsIHdpZHRoOiBldmVudC5jb2x1bW4ud2lkdGgsIGNhbkF1dG9SZXNpemU6IGZhbHNlIH1cbiAgICAgICAgdGhpcy5fcHJlZmVyZW5jZXMuc2V0Q29sdW1uUHJlZmVyZW5jZSh0aGlzLnByZWZlcmVuY2VzS2V5LCBwcmVmKVxuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbHVtbnMgPSBbIC4uLnRoaXMuY29sdW1ucyBdXG4gICAgfVxuICB9XG5cbiAgX29uVHJlZUFjdGlvbihldmVudDogYW55KSB7XG4gICAgY29uc3QgaW5kZXggPSBldmVudC5yb3dJbmRleFxuICAgIGNvbnN0IHJvdyA9IGV2ZW50LnJvd1xuICAgIGlmIChyb3cudHJlZVN0YXR1cyA9PT0gJ2NvbGxhcHNlZCcpIHtcbiAgICAgIHJvdy50cmVlU3RhdHVzID0gJ2V4cGFuZGVkJ1xuICAgIH0gZWxzZSB7XG4gICAgICByb3cudHJlZVN0YXR1cyA9ICdjb2xsYXBzZWQnXG4gICAgfVxuICAgIHRoaXMucm93cyA9IFsgLi4udGhpcy5yb3dzIF1cbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyQWN0aW9uUmVmcmVzaFJlcXVlc3QoKSB7XG4gICAgdGhpcy5hY3Rpb25SZWZyZXNoUmVxdWVzdC5lbWl0KHVuZGVmaW5lZClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFnZUluZm8oKTogVGhlU2VhbVBhZ2VJbmZvIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2Zmc2V0OiB0aGlzLm5neERhdGF0YWJsZT8ub2Zmc2V0ID8/IDAsXG4gICAgICBwYWdlU2l6ZTogdGhpcy5uZ3hEYXRhdGFibGU/LnBhZ2VTaXplID8/IDAsXG4gICAgICBsaW1pdDogdGhpcy5uZ3hEYXRhdGFibGU/LmxpbWl0LFxuICAgICAgY291bnQ6IHRoaXMubmd4RGF0YXRhYmxlPy5jb3VudCA/PyAwXG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -31,7 +31,12 @@ export class DatatableExportButtonComponent {
|
|
|
31
31
|
this._toastr.error(msg, 'Data Export');
|
|
32
32
|
}
|
|
33
33
|
const export$ = this._datatable.rows$
|
|
34
|
-
.pipe(take(1), map(rows =>
|
|
34
|
+
.pipe(take(1), map(rows => {
|
|
35
|
+
if (exporter.skipDataMapping) {
|
|
36
|
+
return rows;
|
|
37
|
+
}
|
|
38
|
+
return this._mapExportData(this._datatable.columns || [], rows);
|
|
39
|
+
}), concatMap(data => exporter.export(data)), catchError(err => {
|
|
35
40
|
console.error(err);
|
|
36
41
|
return of(false);
|
|
37
42
|
}), tap(success => {
|
|
@@ -39,7 +44,7 @@ export class DatatableExportButtonComponent {
|
|
|
39
44
|
this._toastr.success(`${exporter.label} export complete.`, 'Data Export');
|
|
40
45
|
}
|
|
41
46
|
else {
|
|
42
|
-
this._toastr.
|
|
47
|
+
this._toastr.error(`${exporter.label} export failed.`, 'Data Export');
|
|
43
48
|
}
|
|
44
49
|
}));
|
|
45
50
|
this._loading.while(export$).subscribe();
|
|
@@ -90,4 +95,4 @@ DatatableExportButtonComponent.ctorParameters = () => [
|
|
|
90
95
|
DatatableExportButtonComponent.propDecorators = {
|
|
91
96
|
exporters: [{ type: Input }]
|
|
92
97
|
};
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLWV4cG9ydC1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9kYXRhdGFibGUtZXhwb3J0LWJ1dHRvbi9kYXRhdGFibGUtZXhwb3J0LWJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDOUcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN6QixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXRFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRzFDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzVGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUV0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQWF4RixNQUFNLE9BQU8sOEJBQThCO0lBVXpDLFlBQzhDLFVBQThCLEVBQ3pELE9BQXNCLEVBQ3RCLFFBQXNDLEVBQ3RDLFlBQXVDLEVBQ0csS0FBa0M7UUFKakQsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFDekQsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUE4QjtRQUN0QyxpQkFBWSxH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QUMsTUFBTSxDQUFDLENBQUE7U0FDbEI7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFTyxTQUFTLENBQUMsTUFBOEIsRUFBRSxHQUFRO1FBQ3hELElBQUksV0FBVyxDQUFDLE1BQWEsRUFBRSxhQUFhLENBQUMsRUFBRTtZQUM3QyxNQUFNLE9BQU8sR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUE7WUFDMUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBRSxNQUFjLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQ3hFO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQTtRQUMzQixJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQ3BCO1FBQ0QsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQzs7O1lBaEdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsOEJBQThCO2dCQUN4QyxzZkFBdUQ7Z0JBRXZELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O1lBWlEsa0JBQWtCLHVCQXdCdEIsTUFBTSxTQUFDLGlCQUFpQjtZQS9CcEIsYUFBYTtZQUliLDRCQUE0QjtZQUQ1Qix5QkFBeUI7NENBZ0M3QixRQUFRLFlBQUksTUFBTSxTQUFDLG9CQUFvQjs7O3dCQVh6QyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgaXNEZXZNb2RlLCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGNvbmNhdE1hcCwgbWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgZmFGaWxlRG93bmxvYWQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cidcblxuaW1wb3J0IHsgSURhdGFFeHBvcnRlciB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9kYXRhLWV4cG9ydGVyJ1xuaW1wb3J0IHsgRHluYW1pY1ZhbHVlSGVscGVyU2VydmljZSwgVEhFU0VBTV9EWU5BTUlDX0RBVEEgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vZHluYW1pYydcbmltcG9ydCB7IFRoZVNlYW1Mb2FkaW5nT3ZlcmxheVNlcnZpY2UgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vbG9hZGluZydcbmltcG9ydCB7IGhhc1Byb3BlcnR5IH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xuXG5pbXBvcnQgeyBEYXRhdGFibGVDb21wb25lbnQsIFRIRVNFQU1fREFUQVRBQkxFIH0gZnJvbSAnLi4vZGF0YXRhYmxlL2RhdGF0YWJsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vbW9kZWxzL3RhYmxlLWNvbHVtbidcblxuZXhwb3J0IGludGVyZmFjZSBJRGF0YXRhYmxlRXhwb3J0QnV0dG9uRGF0YSB7XG4gIGV4cG9ydGVyczogSURhdGFFeHBvcnRlcltdXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tZGF0YXRhYmxlLWV4cG9ydC1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXRhYmxlLWV4cG9ydC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhdGFibGUtZXhwb3J0LWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhdGFibGVFeHBvcnRCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGljb24gPSBmYUZpbGVEb3dubG9hZFxuXG4gIEBJbnB1dCgpIGV4cG9ydGVyczogSURhdGFFeHBvcnRlcltdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gISh0aGlzLmV4cG9ydGVycyAmJiB0aGlzLmV4cG9ydGVycy5sZW5ndGggPiAwKVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChUSEVTRUFNX0RBVEFUQUJMRSkgcHJpdmF0ZSByZWFkb25seSBfZGF0YXRhYmxlOiBEYXRhdGFibGVDb21wb25lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRpbmc6IFRoZVNlYW1Mb2FkaW5nT3ZlcmxheVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmFsdWVIZWxwZXI6IER5bmFtaWNWYWx1ZUhlbHBlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUSEVTRUFNX0RZTkFNSUNfREFUQSkgcHJpdmF0ZSByZWFkb25seSBfZGF0YT86IElEYXRhdGFibGVFeHBvcnRCdXR0b25EYXRhXG4gICkge1xuICAgIGlmICh0aGlzLl9kYXRhICYmIHRoaXMuX2RhdGEuZXhwb3J0ZXJzKSB7XG4gICAgICB0aGlzLmV4cG9ydGVycyA9IHRoaXMuX2RhdGEuZXhwb3J0ZXJzXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7IH1cblxuICBfb25FeHBvcnRlckNsaWNrZWQoZXhwb3J0ZXI6IElEYXRhRXhwb3J0ZXIpIHtcbiAgICBpZiAoIWV4cG9ydGVyLmV4cG9ydCkge1xuICAgICAgY29uc3QgbXNnID0gaXNEZXZNb2RlKClcbiAgICAgICAgPyBgRXhwb3J0ZXIgJyR7ZXhwb3J0ZXIubmFtZX0nIGlzIG1pc3NpbmcgYW4gZXhwb3J0IG1ldGhvZC5gXG4gICAgICAgIDogYCR7ZXhwb3J0ZXIubGFiZWx9IGV4cG9ydCBpcyBub3QgYXZhaWxhYmxlLmBcbiAgICAgIHRoaXMuX3RvYXN0ci5lcnJvcihtc2csICdEYXRhIEV4cG9ydCcpXG4gICAgfVxuXG4gICAgY29uc3QgZXhwb3J0JCA9IHRoaXMuX2RhdGF0YWJsZS5yb3dzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcChyb3dzID0+IHtcbiAgICAgICAgICBpZiAoZXhwb3J0ZXIuc2tpcERhdGFNYXBwaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93c1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5fbWFwRXhwb3J0RGF0YSh0aGlzLl9kYXRhdGFibGUuY29sdW1ucyB8fCBbXSwgcm93cylcbiAgICAgICAgfSksXG4gICAgICAgIGNvbmNhdE1hcChkYXRhID0+IGV4cG9ydGVyLmV4cG9ydChkYXRhKSksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycilcbiAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpXG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoc3VjY2VzcyA9PiB7XG4gICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0ci5zdWNjZXNzKGAke2V4cG9ydGVyLmxhYmVsfSBleHBvcnQgY29tcGxldGUuYCwgJ0RhdGEgRXhwb3J0JylcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdG9hc3RyLmVycm9yKGAke2V4cG9ydGVyLmxhYmVsfSBleHBvcnQgZmFpbGVkLmAsICdEYXRhIEV4cG9ydCcpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuXG4gICAgdGhpcy5fbG9hZGluZy53aGlsZShleHBvcnQkKS5zdWJzY3JpYmUoKVxuICB9XG5cbiAgcHJpdmF0ZSBfbWFwRXhwb3J0RGF0YShjb2x1bW5zOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10sIHJvd3M6IGFueVtdKSB7XG4gICAgY29uc3QgZGF0YTogYW55W10gPSBbXVxuXG4gICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgICAgY29uc3QgbmV3Um93OiBhbnkgPSB7fVxuXG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XG4gICAgICAgIGlmICghY29sLmV4cG9ydElnbm9yZSkge1xuICAgICAgICAgIGNvbnN0IGNvbE5hbWUgPSBjb2wuZXhwb3J0SGVhZGVyIHx8IGNvbC5uYW1lIHx8IGNvbC5wcm9wXG4gICAgICAgICAgaWYgKGNvbE5hbWUpIHtcbiAgICAgICAgICAgIG5ld1Jvd1tjb2xOYW1lXSA9IHRoaXMuX3Jvd1ZhbHVlKGNvbCwgcm93KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBkYXRhLnB1c2gobmV3Um93KVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhXG4gIH1cblxuICBwcml2YXRlIF9yb3dWYWx1ZShjb2x1bW46IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4sIHJvdzogYW55KSB7XG4gICAgaWYgKGhhc1Byb3BlcnR5KGNvbHVtbiBhcyBhbnksICdleHBvcnRWYWx1ZScpKSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0geyB2YWx1ZTogY29sdW1uLnByb3AgPyByb3dbY29sdW1uLnByb3BdIDogdW5kZWZpbmVkLCByb3cgfVxuICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlSGVscGVyLmV2YWxTeW5jKChjb2x1bW4gYXMgYW55KS5leHBvcnRWYWx1ZSwgY29udGV4dClcbiAgICB9XG5cbiAgICBjb25zdCBjb2xQcm9wID0gY29sdW1uLnByb3BcbiAgICBpZiAoY29sUHJvcCkge1xuICAgICAgcmV0dXJuIHJvd1tjb2xQcm9wXVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxufVxuIl19
|