@rs-pk/asset-management 1.0.27 → 1.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/rs-pk-asset-management.umd.js +475 -89
- package/bundles/rs-pk-asset-management.umd.js.map +1 -1
- package/bundles/rs-pk-asset-management.umd.min.js +2 -2
- package/bundles/rs-pk-asset-management.umd.min.js.map +1 -1
- package/esm2015/lib/components/partial/asset-dialog/asset-dialog.component.js +1 -2
- package/esm2015/lib/components/partial/asset-item/asset-item.component.js +6 -3
- package/esm2015/lib/components/partial/asset-list/asset-list.component.js +14 -6
- package/esm2015/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +2 -3
- package/esm2015/lib/components/partial/asset-wrapper/asset-wrapper.component.js +6 -10
- package/esm2015/lib/components/partial/file-list/file-list.component.js +1 -1
- package/esm2015/lib/components/partial/folder-item/folder-item.component.js +2 -2
- package/esm2015/lib/components/partial/folder-list/folder-list.component.js +33 -5
- package/esm2015/lib/components/partial/node-details/node-details.component.js +74 -13
- package/esm2015/lib/components/partial/node-tree/node-tree.component.js +164 -24
- package/esm2015/lib/components/partial/search-box/search-box.component.js +11 -6
- package/esm2015/lib/components/ui/modal/modal.component.js +1 -1
- package/esm2015/lib/datasources/node-tree.datasource.js +4 -3
- package/esm2015/lib/models/asset.model.js +15 -1
- package/esm2015/lib/models/index.js +2 -2
- package/esm2015/lib/services/asset.service.js +53 -11
- package/esm2015/lib/services/env-config.service.js +3 -1
- package/esm2015/lib/services/node-tree.service.js +27 -15
- package/esm5/lib/components/partial/asset-dialog/asset-dialog.component.js +1 -2
- package/esm5/lib/components/partial/asset-item/asset-item.component.js +6 -3
- package/esm5/lib/components/partial/asset-list/asset-list.component.js +14 -6
- package/esm5/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +2 -3
- package/esm5/lib/components/partial/asset-wrapper/asset-wrapper.component.js +6 -13
- package/esm5/lib/components/partial/file-list/file-list.component.js +1 -1
- package/esm5/lib/components/partial/folder-item/folder-item.component.js +2 -2
- package/esm5/lib/components/partial/folder-list/folder-list.component.js +40 -5
- package/esm5/lib/components/partial/node-details/node-details.component.js +92 -16
- package/esm5/lib/components/partial/node-tree/node-tree.component.js +202 -26
- package/esm5/lib/components/partial/search-box/search-box.component.js +11 -6
- package/esm5/lib/components/ui/modal/modal.component.js +1 -1
- package/esm5/lib/datasources/node-tree.datasource.js +5 -3
- package/esm5/lib/models/asset.model.js +15 -1
- package/esm5/lib/models/index.js +2 -2
- package/esm5/lib/services/asset.service.js +69 -12
- package/esm5/lib/services/env-config.service.js +3 -1
- package/esm5/lib/services/node-tree.service.js +38 -18
- package/fesm2015/rs-pk-asset-management.js +386 -79
- package/fesm2015/rs-pk-asset-management.js.map +1 -1
- package/fesm5/rs-pk-asset-management.js +477 -91
- package/fesm5/rs-pk-asset-management.js.map +1 -1
- package/lib/components/partial/asset-item/asset-item.component.d.ts +1 -0
- package/lib/components/partial/asset-list/asset-list.component.d.ts +1 -0
- package/lib/components/partial/asset-wrapper/asset-wrapper.component.d.ts +1 -1
- package/lib/components/partial/folder-list/folder-list.component.d.ts +8 -2
- package/lib/components/partial/node-details/node-details.component.d.ts +11 -0
- package/lib/components/partial/node-tree/node-tree.component.d.ts +21 -7
- package/lib/datasources/node-tree.datasource.d.ts +1 -1
- package/lib/models/asset.model.d.ts +7 -0
- package/lib/services/asset.service.d.ts +10 -3
- package/lib/services/env-config.service.d.ts +1 -0
- package/lib/services/node-tree.service.d.ts +7 -6
- package/package.json +3 -4
- package/rs-pk-asset-management.metadata.json +1 -1
|
@@ -2,19 +2,31 @@
|
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
|
-
import { Component, Input } from '@angular/core';
|
|
5
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
6
6
|
import { Subject } from 'rxjs/internal/Subject';
|
|
7
7
|
import { takeUntil } from 'rxjs/operators';
|
|
8
8
|
import { select } from '../../../store';
|
|
9
|
+
import { MatPaginator, PageEvent } from '@angular/material';
|
|
9
10
|
export class FolderListComponent {
|
|
10
11
|
constructor() {
|
|
11
12
|
this.hasModifyPermission = true;
|
|
12
13
|
this.hasAccessPermission = true;
|
|
13
14
|
this.hasArchivePermission = true;
|
|
15
|
+
this.onPageChange = new EventEmitter();
|
|
14
16
|
this.loading = false;
|
|
15
17
|
this.unsubscribe$ = new Subject();
|
|
16
18
|
this.bindSubscriber();
|
|
17
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* @return {?}
|
|
22
|
+
*/
|
|
23
|
+
ngOnChanges() {
|
|
24
|
+
if (this.paginator && this.pagination) {
|
|
25
|
+
this.paginator.pageIndex = this.pagination.pageIndex;
|
|
26
|
+
this.paginator.pageSize = this.pagination.pageSize;
|
|
27
|
+
this.paginator.length = this.pagination.length;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
18
30
|
/**
|
|
19
31
|
* @return {?}
|
|
20
32
|
*/
|
|
@@ -26,6 +38,13 @@ export class FolderListComponent {
|
|
|
26
38
|
this.unsubscribe$.next();
|
|
27
39
|
this.unsubscribe$.complete();
|
|
28
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* @param {?=} event
|
|
43
|
+
* @return {?}
|
|
44
|
+
*/
|
|
45
|
+
pageChange(event) {
|
|
46
|
+
this.onPageChange.emit(event);
|
|
47
|
+
}
|
|
29
48
|
/**
|
|
30
49
|
* @private
|
|
31
50
|
* @return {?}
|
|
@@ -49,8 +68,8 @@ export class FolderListComponent {
|
|
|
49
68
|
FolderListComponent.decorators = [
|
|
50
69
|
{ type: Component, args: [{
|
|
51
70
|
selector: 'lib-folder-list',
|
|
52
|
-
template: "<div
|
|
53
|
-
styles: [":host::ng-deep .folder-container h6{color:#979797}:host::ng-deep .folder-container .folder-list{display:flex;flex-wrap:
|
|
71
|
+
template: "<div class=\"folder-container\">\n <h6>Folders</h6>\n <div class=\"folder-list custom-scrollbar\">\n <lib-folder-item\n *ngFor=\"let folder of folders\"\n [folder]=\"folder\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-folder-item>\n </div>\n <div class=\"folder-empty\" *ngIf=\"folders && !folders.length\">\n <span>This folder is empty.</span>\n </div>\n <div [hidden]=\"!folders?.length\">\n <mat-paginator\n #paginator\n [pageSizeOptions]=\"[10, 20, 50, 100]\"\n (page)=\"pageChange($event)\"\n [showFirstLastButtons]=\"true\"\n >\n </mat-paginator>\n </div>\n</div>",
|
|
72
|
+
styles: [":host::ng-deep .folder-container h6{color:#979797}:host::ng-deep .folder-container .folder-list{display:flex;flex-wrap:wrap;overflow:auto;padding-bottom:10px;max-height:320px}:host::ng-deep .folder-container .folder-empty{text-align:center;color:#979797;font-size:14px}"]
|
|
54
73
|
}] }
|
|
55
74
|
];
|
|
56
75
|
/** @nocollapse */
|
|
@@ -59,7 +78,10 @@ FolderListComponent.propDecorators = {
|
|
|
59
78
|
hasModifyPermission: [{ type: Input }],
|
|
60
79
|
hasAccessPermission: [{ type: Input }],
|
|
61
80
|
hasArchivePermission: [{ type: Input }],
|
|
62
|
-
|
|
81
|
+
paginator: [{ type: ViewChild, args: [MatPaginator, { static: true },] }],
|
|
82
|
+
folders: [{ type: Input }],
|
|
83
|
+
pagination: [{ type: Input }],
|
|
84
|
+
onPageChange: [{ type: Output }]
|
|
63
85
|
};
|
|
64
86
|
if (false) {
|
|
65
87
|
/** @type {?} */
|
|
@@ -69,8 +91,14 @@ if (false) {
|
|
|
69
91
|
/** @type {?} */
|
|
70
92
|
FolderListComponent.prototype.hasArchivePermission;
|
|
71
93
|
/** @type {?} */
|
|
94
|
+
FolderListComponent.prototype.paginator;
|
|
95
|
+
/** @type {?} */
|
|
72
96
|
FolderListComponent.prototype.folders;
|
|
73
97
|
/** @type {?} */
|
|
98
|
+
FolderListComponent.prototype.pagination;
|
|
99
|
+
/** @type {?} */
|
|
100
|
+
FolderListComponent.prototype.onPageChange;
|
|
101
|
+
/** @type {?} */
|
|
74
102
|
FolderListComponent.prototype.loading;
|
|
75
103
|
/**
|
|
76
104
|
* @type {?}
|
|
@@ -78,4 +106,4 @@ if (false) {
|
|
|
78
106
|
*/
|
|
79
107
|
FolderListComponent.prototype.unsubscribe$;
|
|
80
108
|
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9sZGVyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJzLXBrL2Fzc2V0LW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9wYXJ0aWFsL2ZvbGRlci1saXN0L2ZvbGRlci1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBTTVELE1BQU0sT0FBTyxtQkFBbUI7SUFLOUI7UUFKUyx3QkFBbUIsR0FBYSxJQUFJLENBQUM7UUFDckMsd0JBQW1CLEdBQWEsSUFBSSxDQUFDO1FBQ3JDLHlCQUFvQixHQUFhLElBQUksQ0FBQztRQVNyQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFFaEQsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNmLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVR6QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7OztJQVVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztZQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztTQUNoRDtJQUNILENBQUM7Ozs7SUFFRCxRQUFRLEtBQUssQ0FBQzs7OztJQUVkLFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQzs7Ozs7SUFFTSxVQUFVLENBQUMsS0FBaUI7UUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7Ozs7SUFFTyxjQUFjO1FBQ3BCLE1BQU07Ozs7UUFBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUM7YUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUzs7OztRQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDO1FBQy9CLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBL0NGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQiw0dkJBQTJDOzthQUU1Qzs7Ozs7a0NBRUUsS0FBSztrQ0FDTCxLQUFLO21DQUNMLEtBQUs7d0JBTUwsU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7c0JBQ3hDLEtBQUs7eUJBQ0wsS0FBSzsyQkFDTCxNQUFNOzs7O0lBWFAsa0RBQThDOztJQUM5QyxrREFBOEM7O0lBQzlDLG1EQUErQzs7SUFNL0Msd0NBQW1FOztJQUNuRSxzQ0FBK0I7O0lBQy9CLHlDQUErQjs7SUFDL0IsMkNBQXVEOztJQUV2RCxzQ0FBdUI7Ozs7O0lBQ3ZCLDJDQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzL2ludGVybmFsL1N1YmplY3QnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXNzZXRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBzZWxlY3QgfSBmcm9tICcuLi8uLi8uLi9zdG9yZSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1mb2xkZXItbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb2xkZXItbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZvbGRlci1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvbGRlckxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgaGFzTW9kaWZ5UGVybWlzc2lvbj86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBoYXNBY2Nlc3NQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGhhc0FyY2hpdmVQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5iaW5kU3Vic2NyaWJlcigpO1xuICB9XG5cbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuICBASW5wdXQoKSBmb2xkZXJzOiBBc3NldE1vZGVsW107XG4gIEBJbnB1dCgpIHBhZ2luYXRpb246IFBhZ2VFdmVudDtcbiAgQE91dHB1dCgpIG9uUGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuXG4gIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5wYWdpbmF0b3IgJiYgdGhpcy5wYWdpbmF0aW9uKSB7XG4gICAgICB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSB0aGlzLnBhZ2luYXRpb24ucGFnZUluZGV4O1xuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUgPSB0aGlzLnBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgICB0aGlzLnBhZ2luYXRvci5sZW5ndGggPSB0aGlzLnBhZ2luYXRpb24ubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkgeyB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZShldmVudD86IFBhZ2VFdmVudCkge1xuICAgIHRoaXMub25QYWdlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBiaW5kU3Vic2NyaWJlcigpIHtcbiAgICBzZWxlY3Qoc3RhdGUgPT4gc3RhdGUuZ2xvYmFsTG9hZGluZylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKGdsb2JhbExvYWRpbmcgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBnbG9iYWxMb2FkaW5nO1xuICAgICAgfSk7XG4gIH1cbn0iXX0=
|
|
@@ -261,17 +261,20 @@ export class NodeDetailsComponent {
|
|
|
261
261
|
type: ActionTypes.SET_GLOBAL_LOADING,
|
|
262
262
|
payload: true,
|
|
263
263
|
});
|
|
264
|
+
const { pageIndex, pageSize } = this.getFolderPagePagination();
|
|
264
265
|
this.assetService
|
|
265
|
-
.getChildrenFolders({ assetId: id })
|
|
266
|
+
.getChildrenFolders({ assetId: id, pageIndex, pageSize })
|
|
266
267
|
.pipe(takeUntil(this.unsubscribe$))
|
|
267
268
|
.subscribe((/**
|
|
268
269
|
* @param {?} res
|
|
269
270
|
* @return {?}
|
|
270
271
|
*/
|
|
271
272
|
(res) => {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
273
|
+
const { Data } = res;
|
|
274
|
+
const { Children } = Data;
|
|
275
|
+
this.setFolderList(res);
|
|
276
|
+
if (Children) {
|
|
277
|
+
Children.forEach((/**
|
|
275
278
|
* @param {?} node
|
|
276
279
|
* @return {?}
|
|
277
280
|
*/
|
|
@@ -288,6 +291,18 @@ export class NodeDetailsComponent {
|
|
|
288
291
|
});
|
|
289
292
|
}));
|
|
290
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* @private
|
|
296
|
+
* @param {?} res
|
|
297
|
+
* @return {?}
|
|
298
|
+
*/
|
|
299
|
+
setFolderList(res) {
|
|
300
|
+
const { Data, Meta } = res;
|
|
301
|
+
const { TotalFolder } = Data;
|
|
302
|
+
const { PageIndex, PageSize } = Meta;
|
|
303
|
+
this.assetService.setFolderList(Data, { Total: TotalFolder, PageIndex, PageSize });
|
|
304
|
+
this.setFolderPagination({ length: TotalFolder, pageIndex: PageIndex, pageSize: PageSize });
|
|
305
|
+
}
|
|
291
306
|
/**
|
|
292
307
|
* @private
|
|
293
308
|
* @param {?} id
|
|
@@ -298,8 +313,9 @@ export class NodeDetailsComponent {
|
|
|
298
313
|
type: ActionTypes.SET_GLOBAL_LOADING,
|
|
299
314
|
payload: true,
|
|
300
315
|
});
|
|
316
|
+
const { pageIndex, pageSize } = this.getFolderPagePagination();
|
|
301
317
|
combineLatest([
|
|
302
|
-
this.assetService.getChildrenFolders({ assetId: id }),
|
|
318
|
+
this.assetService.getChildrenFolders({ assetId: id, pageIndex, pageSize }),
|
|
303
319
|
this.assetService.getChildrenAssets({
|
|
304
320
|
assetId: id,
|
|
305
321
|
}),
|
|
@@ -309,11 +325,17 @@ export class NodeDetailsComponent {
|
|
|
309
325
|
* @param {?} __0
|
|
310
326
|
* @return {?}
|
|
311
327
|
*/
|
|
312
|
-
([
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
328
|
+
([foldersRes, assetsRes]) => {
|
|
329
|
+
/** @type {?} */
|
|
330
|
+
const pagination = assetsRes && assetsRes.Meta || {};
|
|
331
|
+
/** @type {?} */
|
|
332
|
+
const assets = assetsRes && assetsRes.Data && assetsRes.Data.Children || [];
|
|
333
|
+
/** @type {?} */
|
|
334
|
+
const totalFile = assetsRes && assetsRes.Data && assetsRes.Data.TotalFile || 0;
|
|
335
|
+
this.setFolderList(foldersRes);
|
|
336
|
+
this.assetService.setAssetList(assets, pagination, totalFile);
|
|
337
|
+
if (foldersRes.Data && foldersRes.Data.Children) {
|
|
338
|
+
foldersRes.Data.Children.forEach((/**
|
|
317
339
|
* @param {?} node
|
|
318
340
|
* @return {?}
|
|
319
341
|
*/
|
|
@@ -330,6 +352,40 @@ export class NodeDetailsComponent {
|
|
|
330
352
|
});
|
|
331
353
|
}));
|
|
332
354
|
}
|
|
355
|
+
/**
|
|
356
|
+
* @return {?}
|
|
357
|
+
*/
|
|
358
|
+
getFolderPagePagination() {
|
|
359
|
+
return {
|
|
360
|
+
pageIndex: this.assetService.pageFolderIndex,
|
|
361
|
+
pageSize: this.assetService.pageFolderSize,
|
|
362
|
+
length: this.assetService.folderTotal,
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* @param {?} event
|
|
367
|
+
* @return {?}
|
|
368
|
+
*/
|
|
369
|
+
onFolderPageChange(event) {
|
|
370
|
+
this.assetService.pageFolderIndex = event.pageIndex;
|
|
371
|
+
this.assetService.pageFolderSize = event.pageSize;
|
|
372
|
+
this.fetchFolder(this.currentFolder.AssetId);
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* @private
|
|
376
|
+
* @param {?} pagination
|
|
377
|
+
* @return {?}
|
|
378
|
+
*/
|
|
379
|
+
setFolderPagination(pagination) {
|
|
380
|
+
if (!pagination)
|
|
381
|
+
return;
|
|
382
|
+
const { length, pageIndex, pageSize } = pagination;
|
|
383
|
+
this.folderPagination = {
|
|
384
|
+
pageIndex,
|
|
385
|
+
pageSize,
|
|
386
|
+
length
|
|
387
|
+
};
|
|
388
|
+
}
|
|
333
389
|
/**
|
|
334
390
|
* @return {?}
|
|
335
391
|
*/
|
|
@@ -357,8 +413,8 @@ export class NodeDetailsComponent {
|
|
|
357
413
|
NodeDetailsComponent.decorators = [
|
|
358
414
|
{ type: Component, args: [{
|
|
359
415
|
selector: 'lib-node-details',
|
|
360
|
-
template: "<div class=\"node-details custom-scrollbar\">\n <div class=\"node-header\">\n <mat-progress-bar [style.visibility]=\"(loading$ | async) ? 'visible' : 'hidden'\" mode=\"indeterminate\">\n </mat-progress-bar>\n <div class=\"node-header-content\">\n <div class=\"node-header-content__left\">\n <H5 class=\"node-header-content__left--title\">\n <ng-container *ngIf=\"assetService?.keyword\">\n Search results for <span>{{ assetService?.keyword }}</span> in\n </ng-container>\n {{ currentFolder?.OriginalFileName }}\n </H5>\n <p *ngIf=\"!noResults\" class=\"node-header-content__left--subtitle\">\n {{ assetService?.folderTotal }}\n {{ assetService?.folderTotal > 1 ? 'folders' : 'folder' }},\n {{ assetService?.fileTotal }}\n {{ assetService?.fileTotal > 1 ? 'files': 'file' }}\n </p>\n </div>\n <div class=\"node-header-content__right\">\n <div class=\"button-wrapper\">\n <button mat-raised-button [disabled]=\"!selectedAssets?.length || !hasArchivePermission\" (click)=\"deleteAssets()\" color=\"warn\">\n <span>{{selectedAssets?.length > 1 ? 'Delete assets' : 'Delete asset'}}</span>\n <span *ngIf=\"selectedAssets?.length\" class=\"count\">({{ selectedAssets.length }})</span>\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"openUploadDialog()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Upload asset\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"addFolder()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Add folder\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"node-body\">\n <lib-search-not-found *ngIf=\"noResults; else contentAsset\"></lib-search-not-found>\n <ng-template #contentAsset>\n <lib-folder-list\n class=\"node-body__section\"\n [folders]=\"currentFolder?.Children\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-folder-list>\n <lib-asset-list\n [assets]=\"assets\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-asset-list>\n </ng-template>\n </div>\n</div>",
|
|
361
|
-
styles: [":host::ng-deep .node-details{max-height:100%;overflow-y:auto}:host::ng-deep .node-details .node-header{position
|
|
416
|
+
template: "<div class=\"node-details custom-scrollbar\">\n <div class=\"node-header\">\n <mat-progress-bar [style.visibility]=\"(loading$ | async) ? 'visible' : 'hidden'\" mode=\"indeterminate\">\n </mat-progress-bar>\n <div class=\"node-header-content\">\n <div class=\"node-header-content__left\">\n <H5 class=\"node-header-content__left--title\">\n <ng-container *ngIf=\"assetService?.keyword\">\n Search results for <span>{{ assetService?.keyword }}</span> in\n </ng-container>\n {{ currentFolder?.OriginalFileName }}\n </H5>\n <p *ngIf=\"!noResults\" class=\"node-header-content__left--subtitle\">\n {{ assetService?.folderTotal }}\n {{ assetService?.folderTotal > 1 ? 'folders' : 'folder' }},\n {{ assetService?.fileTotal }}\n {{ assetService?.fileTotal > 1 ? 'files': 'file' }}\n </p>\n </div>\n <div class=\"node-header-content__right\">\n <div class=\"button-wrapper\">\n <button mat-raised-button [disabled]=\"!selectedAssets?.length || !hasArchivePermission\" (click)=\"deleteAssets()\" color=\"warn\">\n <span>{{selectedAssets?.length > 1 ? 'Delete assets' : 'Delete asset'}}</span>\n <span *ngIf=\"selectedAssets?.length\" class=\"count\">({{ selectedAssets.length }})</span>\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"openUploadDialog()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Upload asset\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"addFolder()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Add folder\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"node-body\">\n <lib-search-not-found *ngIf=\"noResults; else contentAsset\"></lib-search-not-found>\n <ng-template #contentAsset>\n <lib-folder-list\n class=\"node-body__section\"\n [folders]=\"currentFolder?.Children\"\n [pagination]=\"folderPagination\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n (onPageChange)=\"onFolderPageChange($event)\"\n ></lib-folder-list>\n <lib-asset-list\n [assets]=\"assets\"\n [isDialog]=\"isDialog\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-asset-list>\n </ng-template>\n </div>\n</div>",
|
|
417
|
+
styles: [":host::ng-deep .node-details{max-height:100%;overflow-y:auto}:host::ng-deep .node-details .node-header{position:sticky;top:0;background-color:#fff;z-index:20}:host::ng-deep .node-details .node-header-content{padding:10px 20px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}:host::ng-deep .node-details .node-header-content__left--title{margin-bottom:5px}:host::ng-deep .node-details .node-header-content__left--title span{color:#fb3458}:host::ng-deep .node-details .node-header-content__left--subtitle{margin:0;color:#979797;font-size:14px}:host::ng-deep .node-details .node-header-content__right{flex:1}:host::ng-deep .node-details .node-header-content__right .button-wrapper{display:flex;gap:15px;justify-content:flex-end}:host::ng-deep .node-details .node-header-content__right .button-wrapper .count{margin-left:3px}:host::ng-deep .node-details .node-body{padding:0 20px}:host::ng-deep .node-details .node-body__section{display:block;margin-bottom:15px}"]
|
|
362
418
|
}] }
|
|
363
419
|
];
|
|
364
420
|
/** @nocollapse */
|
|
@@ -370,11 +426,14 @@ NodeDetailsComponent.ctorParameters = () => [
|
|
|
370
426
|
{ type: ChangeDetectorRef }
|
|
371
427
|
];
|
|
372
428
|
NodeDetailsComponent.propDecorators = {
|
|
429
|
+
isDialog: [{ type: Input }],
|
|
373
430
|
hasModifyPermission: [{ type: Input }],
|
|
374
431
|
hasAccessPermission: [{ type: Input }],
|
|
375
432
|
hasArchivePermission: [{ type: Input }]
|
|
376
433
|
};
|
|
377
434
|
if (false) {
|
|
435
|
+
/** @type {?} */
|
|
436
|
+
NodeDetailsComponent.prototype.isDialog;
|
|
378
437
|
/** @type {?} */
|
|
379
438
|
NodeDetailsComponent.prototype.hasModifyPermission;
|
|
380
439
|
/** @type {?} */
|
|
@@ -387,6 +446,8 @@ if (false) {
|
|
|
387
446
|
*/
|
|
388
447
|
NodeDetailsComponent.prototype.unsubscribe$;
|
|
389
448
|
/** @type {?} */
|
|
449
|
+
NodeDetailsComponent.prototype.folderPagination;
|
|
450
|
+
/** @type {?} */
|
|
390
451
|
NodeDetailsComponent.prototype.selectedAssets;
|
|
391
452
|
/** @type {?} */
|
|
392
453
|
NodeDetailsComponent.prototype.loading$;
|
|
@@ -414,4 +475,4 @@ if (false) {
|
|
|
414
475
|
*/
|
|
415
476
|
NodeDetailsComponent.prototype.changeDetectorRef;
|
|
416
477
|
}
|
|
417
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bycy1way9hc3NldC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcGFydGlhbC9ub2RlLWRldGFpbHMvbm9kZS1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBT2pGLE1BQU0sT0FBTyxvQkFBb0I7Ozs7Ozs7O0lBSy9CLFlBQ1MsTUFBaUIsRUFDakIsWUFB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SCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQzs7O1lBL09GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixzL0VBQTRDOzthQUU3Qzs7OztZQW5CUSxTQUFTO1lBUVQsWUFBWTtZQUNaLGVBQWU7WUFIZixzQkFBc0I7WUFQdEIsaUJBQWlCOzs7a0NBc0J2QixLQUFLO2tDQUNMLEtBQUs7bUNBQ0wsS0FBSzs7OztJQUZOLG1EQUE4Qzs7SUFDOUMsbURBQThDOztJQUM5QyxvREFBK0M7Ozs7O0lBWS9DLDRDQUEyQzs7SUFFM0MsOENBQThDOztJQUM5Qyx3Q0FBdUU7O0lBQ3ZFLDZDQUFzQzs7SUFDdEMsc0NBQTRCOztJQWQxQixzQ0FBd0I7O0lBQ3hCLDRDQUFpQzs7Ozs7SUFDakMsK0NBQXdDOzs7OztJQUN4QyxtQ0FBbUM7Ozs7O0lBQ25DLGlEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzL2ludGVybmFsL0JlaGF2aW9yU3ViamVjdCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcy9pbnRlcm5hbC9vYnNlcnZhYmxlL2NvbWJpbmVMYXRlc3QnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMvaW50ZXJuYWwvU3ViamVjdCc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFzc2V0TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hc3NldC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXNzZXRNb2RlbCwgRm9sZGVyVHJlZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEFzc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Fzc2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZVRyZWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm9kZS10cmVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aW9uVHlwZXMsIHNlbGVjdCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlJztcbmltcG9ydCB7IEFkZEZvbGRlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FkZC1mb2xkZXItZGlhbG9nL2FkZC1mb2xkZXItZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWxldGVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9kZWxldGUtZGlhbG9nL2RlbGV0ZS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFVwbG9hZERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3VwbG9hZC1kaWFsb2cvdXBsb2FkLWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItbm9kZS1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vZGUtZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOb2RlRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgaGFzTW9kaWZ5UGVybWlzc2lvbj86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBoYXNBY2Nlc3NQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGhhc0FyY2hpdmVQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHB1YmxpYyBhc3NldFNlcnZpY2U6IEFzc2V0U2VydmljZSxcbiAgICBwcml2YXRlIG5vZGVUcmVlU2VydmljZTogTm9kZVRyZWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3ZjOiBBc3NldE1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuYmluZFN1YnNjcmliZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgc2VsZWN0ZWRBc3NldHM6IEFycmF5PEFzc2V0TW9kZWw+ID0gW107XG4gIHB1YmxpYyBsb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHB1YmxpYyBjdXJyZW50Rm9sZGVyOiBGb2xkZXJUcmVlTW9kZWw7XG4gIHB1YmxpYyBhc3NldHM6IEFzc2V0TW9kZWxbXTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFzc2V0U2VydmljZVxuICAgICAgLmdldEZvbGRlckxpc3QoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGZvbGRlcnMpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50Rm9sZGVyID0gZm9sZGVycztcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICB0aGlzLmFzc2V0U2VydmljZVxuICAgICAgLmdldEFzc2V0TGlzdCgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoYXNzZXRzKSA9PiB7XG4gICAgICAgIHRoaXMuYXNzZXRzID0gYXNzZXRzO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBiaW5kU3Vic2NyaWJlcigpIHtcbiAgICBzZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5nbG9iYWxMb2FkaW5nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICAgIHN3aXRjaE1hcCgocmVzKSA9PiBvZihyZXMpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZ2xvYmFsTG9hZGluZykgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZ2xvYmFsTG9hZGluZyk7XG4gICAgICB9KTtcblxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLnNlbGVjdGVkQXNzZXRzKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGVkQXNzZXRzKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZEFzc2V0cykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBc3NldHMgPSBzZWxlY3RlZEFzc2V0cztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBzZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5jdXJyZW50Rm9sZGVySWQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcbiAgICAgICAgc3dpdGNoTWFwKChyZXMpID0+IG9mKHJlcykpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChjdXJyZW50Rm9sZGVySWQpID0+IHtcbiAgICAgICAgaWYgKGN1cnJlbnRGb2xkZXJJZCkge1xuICAgICAgICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnBhZ2VJbmRleCA9IDA7XG4gICAgICAgICAgdGhpcy5mZXRjaE5vZGVEZXRhaWxzKGN1cnJlbnRGb2xkZXJJZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUucmVsb2FkQ3VycmVudEZvbGRlcilcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHJlcykgPT4gb2YocmVzKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudEZvbGRlcikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZldGNoRm9sZGVyKHRoaXMuY3VycmVudEZvbGRlci5Bc3NldElkKTtcbiAgICAgIH0pO1xuXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUucmVsb2FkQ3VycmVudE5vZGUpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcbiAgICAgICAgc3dpdGNoTWFwKChyZXMpID0+IG9mKHJlcykpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRGb2xkZXIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hc3NldFNlcnZpY2UucGFnZUluZGV4ID0gMDtcbiAgICAgICAgdGhpcy5mZXRjaE5vZGVEZXRhaWxzKHRoaXMuY3VycmVudEZvbGRlci5Bc3NldElkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9wZW5VcGxvYWREaWFsb2coKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihVcGxvYWREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY3VycmVudEFzc2V0SWQ6IHRoaXMuY3VycmVudEZvbGRlci5Bc3NldElkLFxuICAgICAgICBmaWxlVHlwZTogdGhpcy5hc3NldFNlcnZpY2UuZGlhbG9nQ29uZmlnLmFsbG93ZWRUeXBlLFxuICAgICAgICBtYXhTaXplOiB0aGlzLmFzc2V0U2VydmljZS5tYXhTaXplXG4gICAgICB9LFxuICAgICAgcGFuZWxDbGFzczogJ2xpYi1kaWFsb2ctLW1lZGl1bScsXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfQVNTRVRTLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX0ZPTERFUixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRGb2xkZXIoKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihBZGRGb2xkZXJEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY3VycmVudEFzc2V0SWQ6IHRoaXMuY3VycmVudEZvbGRlci5Bc3NldElkLFxuICAgICAgfSxcbiAgICAgIHBhbmVsQ2xhc3M6ICdsaWItZGlhbG9nLS1zbWFsbCcsXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfRk9MREVSLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZUFzc2V0cygpIHtcbiAgICBjb25zdCBpZHMgPSB0aGlzLnNlbGVjdGVkQXNzZXRzLm1hcCgoYXNzZXQpID0+IGFzc2V0LkFzc2V0SWQpO1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHR5cGU6ICdmaWxlcycsXG4gICAgICAgIGlkcyxcbiAgICAgIH0sXG4gICAgICBwYW5lbENsYXNzOiAnbGliLWRpYWxvZy0tc21hbGwnLFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRUxPQURfQ1VSUkVOVF9BU1NFVFMsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfRk9MREVSLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9TRUxFQ1RFRF9BU1NFVFMsXG4gICAgICAgICAgcGF5bG9hZDogW10sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaEZvbGRlcihpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0dMT0JBTF9MT0FESU5HLFxuICAgICAgcGF5bG9hZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYXNzZXRTZXJ2aWNlXG4gICAgICAuZ2V0Q2hpbGRyZW5Gb2xkZXJzKHsgYXNzZXRJZDogaWQgfSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5hc3NldFNlcnZpY2Uuc2V0Rm9sZGVyTGlzdChyZXMuRGF0YSwgcmVzLk1ldGEuVG90YWwpO1xuICAgICAgICBpZiAocmVzLkRhdGEgJiYgcmVzLkRhdGEuQ2hpbGRyZW4pIHtcbiAgICAgICAgICByZXMuRGF0YS5DaGlsZHJlbi5mb3JFYWNoKChub2RlKSA9PlxuICAgICAgICAgICAgdGhpcy5ub2RlVHJlZVNlcnZpY2UuYWRkTm9kZShub2RlLCB0aGlzLmN1cnJlbnRGb2xkZXIuQXNzZXRJZClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfR0xPQkFMX0xPQURJTkcsXG4gICAgICAgICAgcGF5bG9hZDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoTm9kZURldGFpbHMoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9HTE9CQUxfTE9BRElORyxcbiAgICAgIHBheWxvYWQ6IHRydWUsXG4gICAgfSk7XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmFzc2V0U2VydmljZS5nZXRDaGlsZHJlbkZvbGRlcnMoeyBhc3NldElkOiBpZCB9KSxcbiAgICAgIHRoaXMuYXNzZXRTZXJ2aWNlLmdldENoaWxkcmVuQXNzZXRzKHtcbiAgICAgICAgYXNzZXRJZDogaWQsXG4gICAgICB9KSxcbiAgICBdKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtmb2xkZXJzLCBhc3NldHNdKSA9PiB7XG4gICAgICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnNldEZvbGRlckxpc3QoZm9sZGVycy5EYXRhLCBmb2xkZXJzLk1ldGEuVG90YWwpO1xuICAgICAgICB0aGlzLmFzc2V0U2VydmljZS5zZXRBc3NldExpc3QoYXNzZXRzLkRhdGEuQ2hpbGRyZW4sIGFzc2V0cy5NZXRhKTtcbiAgICAgICAgaWYgKGZvbGRlcnMuRGF0YSAmJiBmb2xkZXJzLkRhdGEuQ2hpbGRyZW4pIHtcbiAgICAgICAgICBmb2xkZXJzLkRhdGEuQ2hpbGRyZW4uZm9yRWFjaCgobm9kZSkgPT5cbiAgICAgICAgICAgIHRoaXMubm9kZVRyZWVTZXJ2aWNlLmFkZE5vZGUobm9kZSwgdGhpcy5jdXJyZW50Rm9sZGVyLkFzc2V0SWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0dMT0JBTF9MT0FESU5HLFxuICAgICAgICAgIHBheWxvYWQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0IG5vUmVzdWx0cygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5hc3NldFNlcnZpY2Uua2V5d29yZCAmJlxuICAgICAgIXRoaXMuY3VycmVudEZvbGRlci5DaGlsZHJlbi5sZW5ndGggJiZcbiAgICAgICF0aGlzLmFzc2V0cy5sZW5ndGhcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0NVUlJFTlRfRk9MREVSX0lELFxuICAgICAgcGF5bG9hZDogbnVsbCxcbiAgICB9KTtcbiAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfQVNTRVRTLFxuICAgICAgcGF5bG9hZDogW10sXG4gICAgfSk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
478
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bycy1way9hc3NldC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcGFydGlhbC9ub2RlLWRldGFpbHMvbm9kZS1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBUWpGLE1BQU0sT0FBTyxvQkFBb0I7Ozs7Ozs7O0lBTS9CLFlBQ1MsTUFBaUIsRUFDakIsWUFBMEIsRUFDekIsZUFBZ0MsRUFDaEMsR0FBMkIsRUFDM0IsaUJBQW9DO1FBSnJDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDekIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLFFBQUcsR0FBSCxHQUFHLENBQXdCO1FBQzNCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFUckMsd0JBQW1CLEdBQWEsSUFBSSxDQUFDO1FBQ3JDLHdCQUFtQixHQUFhLElBQUksQ0FBQztRQUNyQyx5QkFBb0IsR0FBYSxJQUFJLENBQUM7UUFZdkMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXBDLG1CQUFjLEdBQXNCLEVBQUUsQ0FBQztRQUN2QyxhQUFRLEdBQTZCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBTnJFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDOzs7O0lBU0QsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZO2FBQ2QsYUFBYSxFQUFFO2FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUzs7OztRQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pDLENBQUMsRUFBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLFlBQVk7YUFDZCxZQUFZLEVBQUU7YUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTOzs7O1FBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7OztJQUVPLGNBQWM7UUFDcEIsTUFBTTs7OztRQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFDO2FBQ25DLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUM1QixTQUFTOzs7O1FBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUM1QjthQUNBLFNBQVM7Ozs7UUFBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsRUFBQyxDQUFDO1FBRUwsTUFBTTs7OztRQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFDO2FBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVM7Ozs7UUFBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQzVCLElBQUksY0FBYyxFQUFFO2dCQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQzthQUN0QztRQUNILENBQUMsRUFBQyxDQUFDO1FBRUwsTUFBTTs7OztRQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFDO2FBQ3JDLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUM1QixTQUFTOzs7O1FBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUM1QjthQUNBLFNBQVM7Ozs7UUFBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQzdCLElBQUksZUFBZSxFQUFFO2dCQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUN4QztRQUNILENBQUMsRUFBQyxDQUFDO1FBRUwsTUFBTTs7OztRQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUM7YUFDekMsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQzVCLFNBQVM7Ozs7UUFBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQzVCO2FBQ0EsU0FBUzs7O1FBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3ZCLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxDQUFDLEVBQUMsQ0FBQztRQUVMLE1BQU07Ozs7UUFBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFDO2FBQ3ZDLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUM1QixTQUFTOzs7O1FBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUM1QjthQUNBLFNBQVM7OztRQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN2QixPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7O0lBRU0sZ0JBQWdCOztjQUNmLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUN4RCxJQUFJLEVBQUU7Z0JBQ0osY0FBYyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTztnQkFDMUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFdBQVc7Z0JBQ3BELE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU87YUFDbkM7WUFDRCxVQUFVLEVBQUUsb0JBQW9CO1NBQ2pDLENBQUM7UUFFRixTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUzs7OztRQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7b0JBQ2hCLElBQUksRUFBRSxXQUFXLENBQUMscUJBQXFCO2lCQUN4QyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7b0JBQ2hCLElBQUksRUFBRSxXQUFXLENBQUMscUJBQXFCO2lCQUN4QyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVELFNBQVM7O2NBQ0QsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQzNELElBQUksRUFBRTtnQkFDSixjQUFjLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPO2FBQzNDO1lBQ0QsVUFBVSxFQUFFLG1CQUFtQjtTQUNoQyxDQUFDO1FBRUYsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVM7Ozs7UUFBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3hDLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO29CQUNoQixJQUFJLEVBQUUsV0FBVyxDQUFDLHFCQUFxQjtpQkFDeEMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7SUFFRCxZQUFZOztjQUNKLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUc7Ozs7UUFBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBQzs7Y0FDdkQsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3hELElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsT0FBTztnQkFDYixHQUFHO2FBQ0o7WUFDRCxVQUFVLEVBQUUsbUJBQW1CO1lBQy9CLFNBQVMsRUFBRSxLQUFLO1NBQ2pCLENBQUM7UUFFRixTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUzs7OztRQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7b0JBQ2hCLElBQUksRUFBRSxXQUFXLENBQUMscUJBQXFCO2lCQUN4QyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7b0JBQ2hCLElBQUksRUFBRSxXQUFXLENBQUMscUJBQXFCO2lCQUN4QyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7b0JBQ2hCLElBQUksRUFBRSxXQUFXLENBQUMsbUJBQW1CO29CQUNyQyxPQUFPLEVBQUUsRUFBRTtpQkFDWixDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7O0lBRU8sV0FBVyxDQUFDLEVBQVU7UUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDaEIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxrQkFBa0I7WUFDcEMsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUM7Y0FFRyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7UUFFOUQsSUFBSSxDQUFDLFlBQVk7YUFDZCxrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDO2FBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVM7Ozs7UUFBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2tCQUNYLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRztrQkFDZCxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUk7WUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV4QixJQUFJLFFBQVEsRUFBRTtnQkFDWixRQUFRLENBQUMsT0FBTzs7OztnQkFBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQzthQUM1RjtRQUNILENBQUMsRUFBQzthQUNELEdBQUc7OztRQUFDLEdBQUcsRUFBRTtZQUNSLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO2dCQUNoQixJQUFJLEVBQUUsV0FBVyxDQUFDLGtCQUFrQjtnQkFDcEMsT0FBTyxFQUFFLEtBQUs7YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7OztJQUVPLGFBQWEsQ0FBQyxHQUFHO2NBQ2pCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUc7Y0FDcEIsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJO2NBQ3RCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUk7UUFFcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQzs7Ozs7O0lBRU8sZ0JBQWdCLENBQUMsRUFBVTtRQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNoQixJQUFJLEVBQUUsV0FBVyxDQUFDLGtCQUFrQjtZQUNwQyxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztjQUNHLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtRQUU5RCxhQUFhLENBQUM7WUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDMUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDbEMsT0FBTyxFQUFFLEVBQUU7YUFDWixDQUFDO1NBQ0gsQ0FBQzthQUNDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVM7Ozs7UUFBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7O2tCQUMvQixVQUFVLEdBQUcsU0FBUyxJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksRUFBRTs7a0JBQzlDLE1BQU0sR0FBRyxTQUFTLElBQUksU0FBUyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFOztrQkFDckUsU0FBUyxHQUFHLFNBQVMsSUFBSSxTQUFTLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUM7WUFDOUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzlELElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDL0MsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTzs7OztnQkFBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUMvRCxDQUFDO2FBQ0g7UUFDSCxDQUFDLEVBQUM7YUFDRCxHQUFHOzs7UUFBQyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztnQkFDaEIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxrQkFBa0I7Z0JBQ3BDLE9BQU8sRUFBRSxLQUFLO2FBQ2YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7O0lBRU0sdUJBQXVCO1FBQzVCLE9BQU87WUFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlO1lBQzVDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWM7WUFDMUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVztTQUN0QyxDQUFDO0lBQ0osQ0FBQzs7Ozs7SUFFTSxrQkFBa0IsQ0FBQyxLQUFnQjtRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLENBQUM7Ozs7OztJQUVPLG1CQUFtQixDQUFDLFVBQXFCO1FBQy9DLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztjQUNsQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsVUFBVTtRQUVsRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDdEIsU0FBUztZQUNULFFBQVE7WUFDUixNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7Ozs7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLENBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPO1lBQ3pCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUNuQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUNwQixDQUFDO0lBQ0osQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNoQixJQUFJLEVBQUUsV0FBVyxDQUFDLHFCQUFxQjtZQUN2QyxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ2hCLElBQUksRUFBRSxXQUFXLENBQUMsbUJBQW1CO1lBQ3JDLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7OztZQTFSRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIseW5GQUE0Qzs7YUFFN0M7Ozs7WUFwQlEsU0FBUztZQVFULFlBQVk7WUFDWixlQUFlO1lBSGYsc0JBQXNCO1lBUHRCLGlCQUFpQjs7O3VCQXVCdkIsS0FBSztrQ0FDTCxLQUFLO2tDQUNMLEtBQUs7bUNBQ0wsS0FBSzs7OztJQUhOLHdDQUE0Qjs7SUFDNUIsbURBQThDOztJQUM5QyxtREFBOEM7O0lBQzlDLG9EQUErQzs7Ozs7SUFZL0MsNENBQTJDOztJQUMzQyxnREFBbUM7O0lBQ25DLDhDQUE4Qzs7SUFDOUMsd0NBQXVFOztJQUN2RSw2Q0FBc0M7O0lBQ3RDLHNDQUE0Qjs7SUFkMUIsc0NBQXdCOztJQUN4Qiw0Q0FBaUM7Ozs7O0lBQ2pDLCtDQUF3Qzs7Ozs7SUFDeEMsbUNBQW1DOzs7OztJQUNuQyxpREFBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcy9pbnRlcm5hbC9CZWhhdmlvclN1YmplY3QnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMvaW50ZXJuYWwvb2JzZXJ2YWJsZS9jb21iaW5lTGF0ZXN0JztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzL2ludGVybmFsL1N1YmplY3QnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBc3NldE1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXNzZXQtbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFzc2V0TW9kZWwsIEZvbGRlclRyZWVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBBc3NldFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hc3NldC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVUcmVlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25vZGUtdHJlZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGlvblR5cGVzLCBzZWxlY3QgfSBmcm9tICcuLi8uLi8uLi9zdG9yZSc7XG5pbXBvcnQgeyBBZGRGb2xkZXJEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9hZGQtZm9sZGVyLWRpYWxvZy9hZGQtZm9sZGVyLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVsZXRlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZGVsZXRlLWRpYWxvZy9kZWxldGUtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVcGxvYWREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi91cGxvYWQtZGlhbG9nL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLW5vZGUtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub2RlLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub2RlLWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTm9kZURldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGlzRGlhbG9nPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaGFzTW9kaWZ5UGVybWlzc2lvbj86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBoYXNBY2Nlc3NQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGhhc0FyY2hpdmVQZXJtaXNzaW9uPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHB1YmxpYyBhc3NldFNlcnZpY2U6IEFzc2V0U2VydmljZSxcbiAgICBwcml2YXRlIG5vZGVUcmVlU2VydmljZTogTm9kZVRyZWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3ZjOiBBc3NldE1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuYmluZFN1YnNjcmliZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIGZvbGRlclBhZ2luYXRpb246IFBhZ2VFdmVudDtcbiAgcHVibGljIHNlbGVjdGVkQXNzZXRzOiBBcnJheTxBc3NldE1vZGVsPiA9IFtdO1xuICBwdWJsaWMgbG9hZGluZyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwdWJsaWMgY3VycmVudEZvbGRlcjogRm9sZGVyVHJlZU1vZGVsO1xuICBwdWJsaWMgYXNzZXRzOiBBc3NldE1vZGVsW107XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hc3NldFNlcnZpY2VcbiAgICAgIC5nZXRGb2xkZXJMaXN0KClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKChmb2xkZXJzKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudEZvbGRlciA9IGZvbGRlcnM7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgdGhpcy5hc3NldFNlcnZpY2VcbiAgICAgIC5nZXRBc3NldExpc3QoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFzc2V0cykgPT4ge1xuICAgICAgICB0aGlzLmFzc2V0cyA9IGFzc2V0cztcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYmluZFN1YnNjcmliZXIoKSB7XG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUuZ2xvYmFsTG9hZGluZylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHJlcykgPT4gb2YocmVzKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGdsb2JhbExvYWRpbmcpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGdsb2JhbExvYWRpbmcpO1xuICAgICAgfSk7XG5cbiAgICBzZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5zZWxlY3RlZEFzc2V0cylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZEFzc2V0cykgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRBc3NldHMpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQXNzZXRzID0gc2VsZWN0ZWRBc3NldHM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUuY3VycmVudEZvbGRlcklkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICAgIHN3aXRjaE1hcCgocmVzKSA9PiBvZihyZXMpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoY3VycmVudEZvbGRlcklkKSA9PiB7XG4gICAgICAgIGlmIChjdXJyZW50Rm9sZGVySWQpIHtcbiAgICAgICAgICB0aGlzLmFzc2V0U2VydmljZS5wYWdlSW5kZXggPSAwO1xuICAgICAgICAgIHRoaXMuZmV0Y2hOb2RlRGV0YWlscyhjdXJyZW50Rm9sZGVySWQpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLnJlbG9hZEN1cnJlbnRGb2xkZXIpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcbiAgICAgICAgc3dpdGNoTWFwKChyZXMpID0+IG9mKHJlcykpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRGb2xkZXIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mZXRjaEZvbGRlcih0aGlzLmN1cnJlbnRGb2xkZXIuQXNzZXRJZCk7XG4gICAgICB9KTtcblxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLnJlbG9hZEN1cnJlbnROb2RlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICAgIHN3aXRjaE1hcCgocmVzKSA9PiBvZihyZXMpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50Rm9sZGVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnBhZ2VJbmRleCA9IDA7XG4gICAgICAgIHRoaXMuZmV0Y2hOb2RlRGV0YWlscyh0aGlzLmN1cnJlbnRGb2xkZXIuQXNzZXRJZCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuVXBsb2FkRGlhbG9nKCkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVXBsb2FkRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGN1cnJlbnRBc3NldElkOiB0aGlzLmN1cnJlbnRGb2xkZXIuQXNzZXRJZCxcbiAgICAgICAgZmlsZVR5cGU6IHRoaXMuYXNzZXRTZXJ2aWNlLmRpYWxvZ0NvbmZpZy5hbGxvd2VkVHlwZSxcbiAgICAgICAgbWF4U2l6ZTogdGhpcy5hc3NldFNlcnZpY2UubWF4U2l6ZVxuICAgICAgfSxcbiAgICAgIHBhbmVsQ2xhc3M6ICdsaWItZGlhbG9nLS1tZWRpdW0nLFxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX0FTU0VUUyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRUxPQURfQ1VSUkVOVF9GT0xERVIsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkRm9sZGVyKCkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWRkRm9sZGVyRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGN1cnJlbnRBc3NldElkOiB0aGlzLmN1cnJlbnRGb2xkZXIuQXNzZXRJZCxcbiAgICAgIH0sXG4gICAgICBwYW5lbENsYXNzOiAnbGliLWRpYWxvZy0tc21hbGwnLFxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX0ZPTERFUixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBkZWxldGVBc3NldHMoKSB7XG4gICAgY29uc3QgaWRzID0gdGhpcy5zZWxlY3RlZEFzc2V0cy5tYXAoKGFzc2V0KSA9PiBhc3NldC5Bc3NldElkKTtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERlbGV0ZURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICB0eXBlOiAnZmlsZXMnLFxuICAgICAgICBpZHMsXG4gICAgICB9LFxuICAgICAgcGFuZWxDbGFzczogJ2xpYi1kaWFsb2ctLXNtYWxsJyxcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfQVNTRVRTLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX0ZPTERFUixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfQVNTRVRTLFxuICAgICAgICAgIHBheWxvYWQ6IFtdLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hGb2xkZXIoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9HTE9CQUxfTE9BRElORyxcbiAgICAgIHBheWxvYWQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7IHBhZ2VJbmRleCwgcGFnZVNpemUgfSA9IHRoaXMuZ2V0Rm9sZGVyUGFnZVBhZ2luYXRpb24oKTtcblxuICAgIHRoaXMuYXNzZXRTZXJ2aWNlXG4gICAgICAuZ2V0Q2hpbGRyZW5Gb2xkZXJzKHsgYXNzZXRJZDogaWQsIHBhZ2VJbmRleCwgcGFnZVNpemUgfSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBEYXRhIH0gPSByZXM7XG4gICAgICAgIGNvbnN0IHsgQ2hpbGRyZW4gfSA9IERhdGE7XG4gICAgICAgIHRoaXMuc2V0Rm9sZGVyTGlzdChyZXMpO1xuXG4gICAgICAgIGlmIChDaGlsZHJlbikge1xuICAgICAgICAgIENoaWxkcmVuLmZvckVhY2goKG5vZGUpID0+IHRoaXMubm9kZVRyZWVTZXJ2aWNlLmFkZE5vZGUobm9kZSwgdGhpcy5jdXJyZW50Rm9sZGVyLkFzc2V0SWQpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0dMT0JBTF9MT0FESU5HLFxuICAgICAgICAgIHBheWxvYWQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb2xkZXJMaXN0KHJlcykge1xuICAgIGNvbnN0IHsgRGF0YSwgTWV0YSB9ID0gcmVzO1xuICAgIGNvbnN0IHsgVG90YWxGb2xkZXIgfSA9IERhdGE7XG4gICAgY29uc3QgeyBQYWdlSW5kZXgsIFBhZ2VTaXplIH0gPSBNZXRhO1xuXG4gICAgdGhpcy5hc3NldFNlcnZpY2Uuc2V0Rm9sZGVyTGlzdChEYXRhLCB7IFRvdGFsOiBUb3RhbEZvbGRlciwgUGFnZUluZGV4LCBQYWdlU2l6ZSB9KTtcbiAgICB0aGlzLnNldEZvbGRlclBhZ2luYXRpb24oeyBsZW5ndGg6IFRvdGFsRm9sZGVyLCBwYWdlSW5kZXg6IFBhZ2VJbmRleCwgcGFnZVNpemU6IFBhZ2VTaXplIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaE5vZGVEZXRhaWxzKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfR0xPQkFMX0xPQURJTkcsXG4gICAgICBwYXlsb2FkOiB0cnVlLFxuICAgIH0pO1xuICAgIGNvbnN0IHsgcGFnZUluZGV4LCBwYWdlU2l6ZSB9ID0gdGhpcy5nZXRGb2xkZXJQYWdlUGFnaW5hdGlvbigpO1xuXG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmFzc2V0U2VydmljZS5nZXRDaGlsZHJlbkZvbGRlcnMoeyBhc3NldElkOiBpZCwgcGFnZUluZGV4LCBwYWdlU2l6ZSB9KSxcbiAgICAgIHRoaXMuYXNzZXRTZXJ2aWNlLmdldENoaWxkcmVuQXNzZXRzKHtcbiAgICAgICAgYXNzZXRJZDogaWQsXG4gICAgICB9KSxcbiAgICBdKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtmb2xkZXJzUmVzLCBhc3NldHNSZXNdKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb24gPSBhc3NldHNSZXMgJiYgYXNzZXRzUmVzLk1ldGEgfHwge307XG4gICAgICAgIGNvbnN0IGFzc2V0cyA9IGFzc2V0c1JlcyAmJiBhc3NldHNSZXMuRGF0YSAmJiBhc3NldHNSZXMuRGF0YS5DaGlsZHJlbiB8fCBbXTtcbiAgICAgICAgY29uc3QgdG90YWxGaWxlID0gYXNzZXRzUmVzICYmIGFzc2V0c1Jlcy5EYXRhICYmIGFzc2V0c1Jlcy5EYXRhLlRvdGFsRmlsZSB8fCAwO1xuICAgICAgICB0aGlzLnNldEZvbGRlckxpc3QoZm9sZGVyc1Jlcyk7XG4gICAgICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnNldEFzc2V0TGlzdChhc3NldHMsIHBhZ2luYXRpb24sIHRvdGFsRmlsZSk7XG4gICAgICAgIGlmIChmb2xkZXJzUmVzLkRhdGEgJiYgZm9sZGVyc1Jlcy5EYXRhLkNoaWxkcmVuKSB7XG4gICAgICAgICAgZm9sZGVyc1Jlcy5EYXRhLkNoaWxkcmVuLmZvckVhY2goKG5vZGUpID0+XG4gICAgICAgICAgICB0aGlzLm5vZGVUcmVlU2VydmljZS5hZGROb2RlKG5vZGUsIHRoaXMuY3VycmVudEZvbGRlci5Bc3NldElkKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9HTE9CQUxfTE9BRElORyxcbiAgICAgICAgICBwYXlsb2FkOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb2xkZXJQYWdlUGFnaW5hdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZUluZGV4OiB0aGlzLmFzc2V0U2VydmljZS5wYWdlRm9sZGVySW5kZXgsXG4gICAgICBwYWdlU2l6ZTogdGhpcy5hc3NldFNlcnZpY2UucGFnZUZvbGRlclNpemUsXG4gICAgICBsZW5ndGg6IHRoaXMuYXNzZXRTZXJ2aWNlLmZvbGRlclRvdGFsLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgb25Gb2xkZXJQYWdlQ2hhbmdlKGV2ZW50OiBQYWdlRXZlbnQpIHtcbiAgICB0aGlzLmFzc2V0U2VydmljZS5wYWdlRm9sZGVySW5kZXggPSBldmVudC5wYWdlSW5kZXg7XG4gICAgdGhpcy5hc3NldFNlcnZpY2UucGFnZUZvbGRlclNpemUgPSBldmVudC5wYWdlU2l6ZTtcbiAgICB0aGlzLmZldGNoRm9sZGVyKHRoaXMuY3VycmVudEZvbGRlci5Bc3NldElkKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9sZGVyUGFnaW5hdGlvbihwYWdpbmF0aW9uOiBQYWdlRXZlbnQpIHtcbiAgICBpZiAoIXBhZ2luYXRpb24pIHJldHVybjtcbiAgICBjb25zdCB7IGxlbmd0aCwgcGFnZUluZGV4LCBwYWdlU2l6ZSB9ID0gcGFnaW5hdGlvbjtcblxuICAgIHRoaXMuZm9sZGVyUGFnaW5hdGlvbiA9IHtcbiAgICAgIHBhZ2VJbmRleCxcbiAgICAgIHBhZ2VTaXplLFxuICAgICAgbGVuZ3RoXG4gICAgfTtcbiAgfVxuXG4gIGdldCBub1Jlc3VsdHMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYXNzZXRTZXJ2aWNlLmtleXdvcmQgJiZcbiAgICAgICF0aGlzLmN1cnJlbnRGb2xkZXIuQ2hpbGRyZW4ubGVuZ3RoICYmXG4gICAgICAhdGhpcy5hc3NldHMubGVuZ3RoXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9DVVJSRU5UX0ZPTERFUl9JRCxcbiAgICAgIHBheWxvYWQ6IG51bGwsXG4gICAgfSk7XG4gICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX1NFTEVDVEVEX0FTU0VUUyxcbiAgICAgIHBheWxvYWQ6IFtdLFxuICAgIH0pO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG59Il19
|