qms-angular 1.1.67 → 1.1.68
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/qms-angular.umd.js +19 -2
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/components/select-department/select-department.component.js +5 -2
- package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +16 -2
- package/fesm2015/qms-angular.js +19 -2
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/components/select-department/select-department.component.d.ts +2 -0
- package/lib/components/select-department-tree/select-department-tree.component.d.ts +2 -0
- package/package.json +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/af.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/ar.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/ast.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/az.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/bg.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/ca.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/cs.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/da.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/de-ch.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/de.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/el.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/en-au.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/en-gb.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/eo.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/es.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/et.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/eu.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/fa.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/fi.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/fr.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/gl.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/gu.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/he.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/hi.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/hr.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/hu.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/id.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/it.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/ja.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/kk.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/km.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/kn.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/ko.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/ku.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/lt.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/lv.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/ms.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/nb.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/ne.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/nl.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/no.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/oc.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/pl.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/pt-br.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/pt.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/ro.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/ru.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/si.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/sk.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/sl.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/sq.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/sr-latn.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/sr.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/sv.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/th.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/tk.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/tr.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/tt.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/ug.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/uk.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/vi.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/zh-cn.js +1 -0
- package/src/assets/qms-ckeditor-plugin/build/translations/zh.js +1 -0
@@ -240,11 +240,14 @@ export class SelectDepartmentComponent {
|
|
240
240
|
getChildrenSelected(node) {
|
241
241
|
return this.treeDepartment.getChildrenSelected(node);
|
242
242
|
}
|
243
|
+
isPushingChildNodes(val) {
|
244
|
+
this.isPushing = val;
|
245
|
+
}
|
243
246
|
}
|
244
247
|
SelectDepartmentComponent.decorators = [
|
245
248
|
{ type: Component, args: [{
|
246
249
|
selector: 'qms-select-department',
|
247
|
-
template: "<div class=\"qms-select-department\">\n <div class=\"header-dialog mb-2\">\n <span>{{popupData.headerName}}</span>\n <button matDialogClose class=\"btn-close-dialog\" color=\"light\" qms-btn-icon>\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div>\n <div class=\"qms-scrollbar\">\n <div>\n <qms-select-department-tree #treeDepartment customClass=\"custom-department-tree\"\n [height]=\"popupData.config.isMobile ? '38vh' : '50vh'\" [rowsSkeleton]=\"9\" [config]=\"popupData.config\"\n (onSearchEvent)=\"onSearchEvent.emit($event)\" (onValueChangeEvent)=\"onResultDepartmentChange($event)\"\n (onPagingSearchEvent)=\"onPagingEvent.emit($event)\" (onCheckNodeEvent)=\"onCheckNodeEvent.emit($event)\"\n (onExpandNodeEvent)=\"onExpandNodeEvent.emit($event)\" (onLoadMoreEvent)=\"onLoadMoreEvent.emit()\"\n (onCheckAllItemSearchEvent)=\"onCheckAllItemSearchEvent.emit($event)\"\n (onCheckItemSearchEvent)=\"onCheckItemSearchEvent.emit($event)\"\n (toggleIncludeChildEvent)=\"toggleIncludeChildEvent.emit($event)\">\n </qms-select-department-tree>\n </div>\n </div>\n <div class=\"line__divider\"></div>\n <div [@heightAnimation]\n *ngIf=\"treeDepartment && !!treeDepartment.resultSelected.length && !popupData.hidePanelResult && !popupData.config.moveLocationMode\"\n class=\" pr-0 pe-0\">\n <div class=\"header-title\">{{popupData.resultTitle || LANG.RESULT}}</div>\n <div class=\"result-content pr-0 pe-0\">\n <mat-chip-list class=\"panel__item qms-scrollbar\">\n <div [@inOutAnimation_2] [id]=\"'item-result-'+item.id\" *ngFor=\"let item of treeDepartment.resultSelected\">\n <mat-chip [@updateItemAnimation] *qmsContentChanges=\"item.children?.length\"\n [qms-tool-tip]=\"generateTootip(item)\" position=\"top\" mode=\"dark\" qms-chip [removable]=\"true\">\n <span (click)=\"onScrollToNode(item)\" qms-chip-body>\n <span class=\"related__item__content_name\" #itemName>\n <span>{{item.name}}</span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && !popupData.config.lazy\">\n {{item.children.length}}/{{item.childCount}}\n </span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && popupData.config.lazy\">\n {{item.selectedChildCount || item.children.length}}/{{item.childCount}}\n </span>\n </span>\n </span>\n <ng-container *ngIf=\"isNodeLoading(item.id)\" [ngTemplateOutlet]=\"loadingSpinner\"></ng-container>\n <mat-icon *ngIf=\"!treeDepartment.isDisabledNode(item.id) && !isNodeLoading(item.id)\"\n (click)=\"onRemoveNode(item)\">cancel</mat-icon>\n </mat-chip>\n </div>\n </mat-chip-list>\n </div>\n </div>\n <mat-divider *ngIf=\"treeDepartment && !!treeDepartment.resultSelected.length && !popupData.hidePanelResult\"\n class=\"mx-auto\"></mat-divider>\n <div class=\"confirm__button__groups\">\n <button (click)=\"onCloseDialog()\" class=\"btn-add\"\n [disabled]=\"!treeDepartment.resultSelected.length && !popupData.config.canAddNullResult\"\n [class.qms-btn-disabled]=\"!treeDepartment.resultSelected.length && !popupData.config.canAddNullResult\" qms-btn>\n <span>{{LANG.ADD}}</span>\n <span *ngIf=\"!popupData.config.moveLocationMode\">\n ({{treeDepartment.resultSelected.length}})\n </span>\n </button>\n <button qms-btn-text mat-dialog-close>\n {{LANG.CANCEL}}\n </button>\n </div>\n </div>\n</div>\n\n<!-- Loading spinner -->\n<ng-template #loadingSpinner>\n <div class=\"qms-spinner-wrapper\">\n <div class=\"qms-spinner center\">\n <mat-spinner [diameter]=\"20\" [strokeWidth]=\"2\" color=\"primary\"></mat-spinner>\n </div>\n </div>\n</ng-template>",
|
250
|
+
template: "<div class=\"qms-select-department\">\n <div class=\"header-dialog mb-2\">\n <span>{{popupData.headerName}}</span>\n <button matDialogClose class=\"btn-close-dialog\" color=\"light\" qms-btn-icon>\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div>\n <div class=\"qms-scrollbar\">\n <div>\n <qms-select-department-tree #treeDepartment customClass=\"custom-department-tree\"\n [height]=\"popupData.config.isMobile ? '38vh' : '50vh'\" [rowsSkeleton]=\"9\" [config]=\"popupData.config\"\n (onSearchEvent)=\"onSearchEvent.emit($event)\" (onValueChangeEvent)=\"onResultDepartmentChange($event)\"\n (onPagingSearchEvent)=\"onPagingEvent.emit($event)\" (onCheckNodeEvent)=\"onCheckNodeEvent.emit($event)\"\n (onExpandNodeEvent)=\"onExpandNodeEvent.emit($event)\" (onLoadMoreEvent)=\"onLoadMoreEvent.emit()\"\n (onCheckAllItemSearchEvent)=\"onCheckAllItemSearchEvent.emit($event)\"\n (onCheckItemSearchEvent)=\"onCheckItemSearchEvent.emit($event)\"\n (toggleIncludeChildEvent)=\"toggleIncludeChildEvent.emit($event)\"\n (isPushingChildNodes)=\"isPushingChildNodes($event)\">\n </qms-select-department-tree>\n </div>\n </div>\n <div class=\"line__divider\"></div>\n <div [@heightAnimation]\n *ngIf=\"treeDepartment && !!treeDepartment.resultSelected.length && !popupData.hidePanelResult && !popupData.config.moveLocationMode\"\n class=\" pr-0 pe-0\">\n <div class=\"header-title\">{{popupData.resultTitle || LANG.RESULT}}</div>\n <div class=\"result-content pr-0 pe-0\">\n <mat-chip-list class=\"panel__item qms-scrollbar\">\n <div [@inOutAnimation_2] [id]=\"'item-result-'+item.id\" *ngFor=\"let item of treeDepartment.resultSelected\">\n <mat-chip [@updateItemAnimation] *qmsContentChanges=\"item.children?.length\"\n [qms-tool-tip]=\"generateTootip(item)\" position=\"top\" mode=\"dark\" qms-chip [removable]=\"true\">\n <span (click)=\"onScrollToNode(item)\" qms-chip-body>\n <span class=\"related__item__content_name\" #itemName>\n <span>{{item.name}}</span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && !popupData.config.lazy\">\n {{item.children.length}}/{{item.childCount}}\n </span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && popupData.config.lazy\">\n {{item.selectedChildCount || item.children.length}}/{{item.childCount}}\n </span>\n </span>\n </span>\n <ng-container *ngIf=\"isNodeLoading(item.id)\" [ngTemplateOutlet]=\"loadingSpinner\"></ng-container>\n <mat-icon *ngIf=\"!treeDepartment.isDisabledNode(item.id) && !isNodeLoading(item.id)\"\n (click)=\"onRemoveNode(item)\">cancel</mat-icon>\n </mat-chip>\n </div>\n </mat-chip-list>\n </div>\n </div>\n <mat-divider *ngIf=\"treeDepartment && !!treeDepartment.resultSelected.length && !popupData.hidePanelResult\"\n class=\"mx-auto\"></mat-divider>\n <div class=\"confirm__button__groups\">\n \n <button (click)=\"onCloseDialog()\" class=\"btn-add\"\n [disabled]=\"(!treeDepartment.resultSelected.length && !popupData.config.canAddNullResult) || isPushing\"\n [class.qms-btn-disabled]=\"(!treeDepartment.resultSelected.length && !popupData.config.canAddNullResult) || isPushing\" qms-btn>\n <span>{{LANG.ADD}}</span>\n <span *ngIf=\"!popupData.config.moveLocationMode\">\n ({{treeDepartment.resultSelected.length}})\n </span>\n </button>\n <button qms-btn-text mat-dialog-close>\n {{LANG.CANCEL}}\n </button>\n </div>\n </div>\n</div>\n\n<!-- Loading spinner -->\n<ng-template #loadingSpinner>\n <div class=\"qms-spinner-wrapper\">\n <div class=\"qms-spinner center\">\n <mat-spinner [diameter]=\"20\" [strokeWidth]=\"2\" color=\"primary\"></mat-spinner>\n </div>\n </div>\n</ng-template>",
|
248
251
|
providers: [
|
249
252
|
{
|
250
253
|
provide: MAT_CHECKBOX_DEFAULT_OPTIONS,
|
@@ -273,4 +276,4 @@ SelectDepartmentComponent.propDecorators = {
|
|
273
276
|
toggleIncludeChildEvent: [{ type: Output }]
|
274
277
|
};
|
275
278
|
export { ɵ0 };
|
276
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRlcGFydG1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC1kZXBhcnRtZW50L3NlbGVjdC1kZXBhcnRtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQTZCLDRCQUE0QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUV0RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztXQVN2RTtJQUNSLFdBQVcsRUFBRSxNQUFNO0NBQ1M7QUFLcEMsTUFBTSxPQUFPLHlCQUF5QjtJQXFCcEMsWUFDVSxLQUF3QixFQUN4QixTQUFrRCxFQUN6QixJQUErQixFQUN6RCxLQUE4QjtRQUg3QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUF5QztRQUN6QixTQUFJLEdBQUosSUFBSSxDQUEyQjtRQUN6RCxVQUFLLEdBQUwsS0FBSyxDQUF5QjtRQXhCdkMsa0JBQWEsR0FBRyxJQUFJ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QkFBdUI7Ozs2QkFzQjdCLFNBQVMsU0FBQyxnQkFBZ0I7NEJBQzFCLE1BQU07NEJBSU4sTUFBTTsrQkFDTixNQUFNO2dDQUNOLE1BQU07OEJBQ04sTUFBTTtxQ0FDTixNQUFNO3dDQUNOLE1BQU07c0NBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94RGVmYXVsdE9wdGlvbnMsIE1BVF9DSEVDS0JPWF9ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUU1TRmxhdE5vZGVUcmVlIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtZmxhdC1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFFNU1RyZWVOb2RlIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtdHJlZS1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBEZXBhcnRtZW50U2VhcmNoUmVzdWx0TW9kZWwsIFFNU0RlcGFydG1lbnRQYWdpbmdNb2RlbCwgU2VsZWN0RGVwYXJ0bWVudFRyZWVDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QtZGVwYXJ0bWVudC10cmVlJztcbmltcG9ydCB7IFNlbGVjdERlcGFydG1lbnRBbmltYXRpb25UcmlnZ2VyIH0gZnJvbSAnLi9jb21tb24vYW5pbWF0aW9uJztcbmltcG9ydCB7IFNlbGVjdERlcGFydG1lbnRQb3B1cERhdGEgfSBmcm9tICcuL21vZGVsL3NlbGVjdC1kZXBhcnRtZW50LXBvcHVwLWRhdGEubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxbXMtc2VsZWN0LWRlcGFydG1lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWRlcGFydG1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtZGVwYXJ0bWVudC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfQ0hFQ0tCT1hfREVGQVVMVF9PUFRJT05TLFxuICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgY2xpY2tBY3Rpb246ICdub29wJ1xuICAgICAgfSBhcyBNYXRDaGVja2JveERlZmF1bHRPcHRpb25zXG4gICAgfVxuICBdLFxuICBhbmltYXRpb25zOiBbU2VsZWN0RGVwYXJ0bWVudEFuaW1hdGlvblRyaWdnZXJdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdERlcGFydG1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBMQU5HOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3RyZWVEZXBhcnRtZW50JykgdHJlZURlcGFydG1lbnQ6IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgb25QYWdpbmdFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuICBwb3B1cERhdGEgPSBuZXcgU2VsZWN0RGVwYXJ0bWVudFBvcHVwRGF0YSgpO1xuICByZXN1bHRTZWxlY3RlZDogUU1TVHJlZU5vZGVbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKSBvblNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkNoZWNrTm9kZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxRTVNGbGF0Tm9kZVRyZWU+KCk7XG4gIEBPdXRwdXQoKSBvbkV4cGFuZE5vZGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UU1TRmxhdE5vZGVUcmVlPigpO1xuICBAT3V0cHV0KCkgb25Mb2FkTW9yZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25DaGVja0l0ZW1TZWFyY2hFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzdGF0ZTogYm9vbGVhbiwgaXRlbTogRGVwYXJ0bWVudFNlYXJjaFJlc3VsdE1vZGVsIH0+KCk7XG4gIEBPdXRwdXQoKSBvbkNoZWNrQWxsSXRlbVNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgdG9nZ2xlSW5jbHVkZUNoaWxkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIG9uVmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxRTVNUcmVlTm9kZVtdPigpO1xuICByZXN1bHRTZWFyY2g6IFFNU0ZsYXROb2RlVHJlZVtdID0gW107XG4gIGlzQWN0aXZlVmlld1NlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuICBnZXQgaXNJbmNsdWRlQ2hpbGQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy50cmVlRGVwYXJ0bWVudCAmJiB0aGlzLnRyZWVEZXBhcnRtZW50LmlzSW5jbHVkZUNoaWxkcmVuO1xuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U2VsZWN0RGVwYXJ0bWVudENvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgZGF0YTogU2VsZWN0RGVwYXJ0bWVudFBvcHVwRGF0YSxcbiAgICBwdWJsaWMgdHJhbnM6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMudHJhbnMuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zLmdldE9iamVjdExhbmcocmVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBJbml0IHBvcHVwIGRhdGFcbiAgICB0aGlzLnBvcHVwRGF0YSA9IF8uY2xvbmVEZWVwKHRoaXMuZGF0YSk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25DbG9zZURpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLnRyZWVEZXBhcnRtZW50LnJlc3VsdFNlbGVjdGVkKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50VHJlZURhdGEoKTogUU1TVHJlZU5vZGVbXSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQgPyB0aGlzLnRyZWVEZXBhcnRtZW50LmN1cnJlbnRUcmVlRGF0YSA6IFtdO1xuICB9XG5cbiAgZGlzcGxheVdoZW5TZWxlY3REZXBhcnRtZW50T3B0aW9uKCRldmVudDogYW55KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgb25TY3JvbGxUb05vZGUobm9kZTogUU1TVHJlZU5vZGUpIHtcbiAgICAvLyB0aGlzLnRyZWVEZXBhcnRtZW50LnNjcm9sbFRvTm9kZShub2RlLmlkKTtcbiAgfVxuXG4gIG9uUmVtb3ZlTm9kZShub2RlOiBRTVNUcmVlTm9kZSkge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQub25SZW1vdmVOb2RlKG5vZGUuaWQpO1xuICB9XG5cbiAgLyoqXG4gKiBHZXRzIGEgbGlzdCBvZiB0aGUgZGF0YSBub2RlJ3Mgc3VidHJlZSBvZiBkZXNjZW5kZW50IGRhdGEgbm9kZXMuXG4gKi9cbiAgZ2V0Q2hpbGRyZW5Ob2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50LmdldExpc3RDaGlsZHJlbk9mTm9kZShub2RlKTtcbiAgfVxuXG4gIG9uUmVzdWx0RGVwYXJ0bWVudENoYW5nZShkYXRhOiBRTVNUcmVlTm9kZVtdKSB7XG4gICAgdGhpcy5yZXN1bHRTZWxlY3RlZCA9IGRhdGEubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgdG9vbHRpcDogdGhpcy5nZW5lcmF0ZVRvb3RpcChpdGVtKVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMub25WYWx1ZUNoYW5nZS5uZXh0KHRoaXMucmVzdWx0U2VsZWN0ZWQpO1xuICB9XG5cbiAgZGVmYXVsdEZvcm1hdFRvb2x0aXBOb2RlKG5vZGU6IFFNU1RyZWVOb2RlKSB7XG4gICAgcmV0dXJuIG5vZGUuaXNHcm91cCA/IHRoaXMuZm9ybWF0U3RyaW5nKHRoaXMucG9wdXBEYXRhLmNvbmZpZy50b29sdGlwSW5jbHVkZUxhYmVsID8gdGhpcy5wb3B1cERhdGEuY29uZmlnLnRvb2x0aXBJbmNsdWRlTGFiZWwgOiB0aGlzLkxBTkcuVE9PTFRJUF9JTkNMVURFX1NVQl9ERVBBUlRNRU5ULCBub2RlLm5hbWUsIG5vZGUuY2hpbGRyZW4ubGVuZ3RoLnRvU3RyaW5nKCkpIDogbm9kZS5uYW1lO1xuICB9XG5cbiAgZ2VuZXJhdGVUb290aXAobm9kZTogUU1TVHJlZU5vZGUpIHtcbiAgICByZXR1cm4gISF0aGlzLnBvcHVwRGF0YS5mb3JtYXRUb29sdGlwSXRlbVJlc3VsdCA/IHRoaXMucG9wdXBEYXRhLmZvcm1hdFRvb2x0aXBJdGVtUmVzdWx0KG5vZGUpIDogdGhpcy5kZWZhdWx0Rm9ybWF0VG9vbHRpcE5vZGUobm9kZSlcbiAgfVxuXG4gIHVwZGF0ZVJlc3VsdFNlYXJjaChkYXRhOiBRTVNEZXBhcnRtZW50UGFnaW5nTW9kZWw8UU1TRmxhdE5vZGVUcmVlPikge1xuICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcbiAgICAgIHJldHVybjtcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50LnNldFJlc3VsdFNlYXJjaChkYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0U3RyaW5nKC4uLnJlcGxhY2VtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQgPSBhcmd1bWVudHNbMF07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKGBcXFxceyR7aX1cXFxcfWAsICdnbScpO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UocmVnLCBhcmd1bWVudHNbaSArIDFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICAgICAqIFRoaXMgZnVuY3Rpb24gdXNlIGZvciBsYXp5IGxvYWQgY2hpbGRyZW4gb2Ygbm9kZVxuICAgICAgICogQHBhcmFtIG5vZGUgbm9kZSB1cGRhdGVcbiAgICAgICAqIEBwYXJhbSBkYXRhIGxpc3QgY2hpbGRyZW4gdG8gdXBkYXRlIG5vZGUuXG4gICAgICAgKiBAcGFyYW0gbW9kZSBkZWZhdWx0IGlzIHVwZGF0ZSB0aGF0IHJlcGxhY2UgY3VycmVudCBsaXN0IGNoaWxkcmVuIGJ5IG5ldyBsaXN0IGNoaWxkcmVuICwgaWYgbW9kZSA9ICdpbnNlcnQnIHdpbGwgaW5zZXJ0IG5ldyB2YWx1ZSB0byBsaXN0IGNoaWxkcmVuIGV4aXN0ZWQgYmVmb3JlLlxuICAqL1xuICB1cGRhdGVDaGlsZE9mTm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUsIGRhdGE6IFFNU0ZsYXROb2RlVHJlZVtdLCBtb2RlOiAnaW5zZXJ0JyB8ICd1cGRhdGUnID0gJ3VwZGF0ZScpIHtcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50LnVwZGF0ZUNoaWxkT2ZOb2RlKG5vZGUsIGRhdGEsIG1vZGUpO1xuICB9XG5cbiAgYWRkUm9vdFRyZWUoZGF0YTogUU1TRmxhdE5vZGVUcmVlW10gPSBbXSkge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQuYWRkUm9vdFRyZWUoZGF0YSk7XG4gIH1cblxuICAvKipcbiAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlIGNoZWNrIG5vZGUgb2YgdHJlZVxuICogQHBhcmFtIG5vZGUgbm9kZSBvZiB0cmVlXG4gKiBAcGFyYW0gY2FsbGJhY2sgZG8gc29tZXRoaW5nIGJlZm9yZSBoYW5kbGUgY2hlY2sgbm9kZVxuICogQHJldHVybnNcbiAqL1xuICBvbkJlZm9yZUNoZWNrTm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUsIGNhbGxiYWNrPzogKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC5vbkJlZm9yZUNoZWNrTm9kZShub2RlLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVDaGVja05vZGUobm9kZTogUU1TRmxhdE5vZGVUcmVlKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQuaGFuZGxlQ2hlY2tOb2RlKG5vZGUpXG4gIH1cblxuICAvKipcbiAqIFRoaXMgbWV0aG9kIHVzZSBmb3IgbGF6eSBtb2RlLCBkbyBzb21lIHRoaW5nIGJlZm9yZSBpbml0IGxpc3Qgbm9kZSBzZWxlY3RlZFxuICogQHBhcmFtIGNhbGxiYWNrXG4gKiBAcmV0dXJuc1xuICovXG4gIGFzeW5jIG9uQmVmb3JlSW5pdE5vZGVTZWxlY3RlZChjYWxsYmFjaz86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghIWNhbGxiYWNrKVxuICAgICAgYXdhaXQgdGhpcy50cmVlRGVwYXJ0bWVudC5vbkJlZm9yZUluaXROb2RlU2VsZWN0ZWQoY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBub2RlIGJ5IGlkIG9mIG5vZGVcbiAgICogQHBhcmFtIG5vZGVJZCBpZCBvZiBub2RlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kTm9kZShub2RlSWQ6IHN0cmluZyk6IFFNU0ZsYXROb2RlVHJlZSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50LnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gbm9kZUlkLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gKiBUaGlzIG1ldGhvZCB1c2UgZm9yIGxhenkgbW9kZSwgZG8gc29tZSB0aGluZyBiZWZvcmUgc2VsZWN0IGFsbCByZXN1bHQgc2VhcmNoXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zXG4gKi9cbiAgYXN5bmMgb25CZWZvcmVDaGVja0FsbFNlYXJjaChjYWxsYmFjaz86IChkYXRhKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikge1xuICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcbiAgICAgIHJldHVybjtcbiAgICBhd2FpdCB0aGlzLnRyZWVEZXBhcnRtZW50Lm9uQmVmb3JlQ2hlY2tBbGxTZWFyY2goY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4qIFRoaXMgbWV0aG9kIHVzZSBmb3IgbGF6eSBtb2RlLCBkbyBzb21lIHRoaW5nIGJlZm9yZSBjaGVjayBpdGVtIHJlc3VsdFxuKiBAcGFyYW0gY2FsbGJhY2tcbiogQHJldHVybnNcbiovXG4gIG9uQmVmb3JlQ2hlY2tJdGVtU2VhcmNoKGl0ZW06IERlcGFydG1lbnRTZWFyY2hSZXN1bHRNb2RlbCwgY2FsbGJhY2s/OiAoaXRlbTogRGVwYXJ0bWVudFNlYXJjaFJlc3VsdE1vZGVsKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikge1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50Lm9uQmVmb3JlQ2hlY2tJdGVtU2VhcmNoKGl0ZW0sIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHNldExvYWRpbmdTdGF0ZU5vZGUoaXNMb2FkaW5nLCBub2RlSWQ6IHN0cmluZykge1xuICAgICEhdGhpcy50cmVlRGVwYXJ0bWVudCAmJiB0aGlzLnRyZWVEZXBhcnRtZW50LnNldExvYWRpbmdTdGF0ZU5vZGUoaXNMb2FkaW5nLCBub2RlSWQpO1xuICB9XG4gIC8qKlxuICAgKiBTZWxlY3QgYSB2YWx1ZSBvciBhbiBhcnJheSBvZiB2YWx1ZXMuXG4gICAqL1xuICBvblNlbGVjdE5vZGUoLi4ubm9kZUlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50Lm9uU2VsZWN0Tm9kZSguLi5ub2RlSWRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlbGVjdHMgYSB2YWx1ZSBvciBhbiBhcnJheSBvZiB2YWx1ZXMuXG4gICAqL1xuICBvbkRlc2VsZWN0Tm9kZSguLi5ub2RlSWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQub25EZXNlbGVjdE5vZGUoLi4ubm9kZUlkcyk7XG4gIH1cblxuICAvKipcbiAgKiBUb2dnbGVzIGEgdmFsdWUgYmV0d2VlbiBzZWxlY3RlZCBhbmQgZGVzZWxlY3RlZC5cbiAgKi9cbiAgb25Ub2dnbGVOb2RlKG5vZGVJZDogc3RyaW5nKSB7XG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudC5vblRvZ2dsZU5vZGUobm9kZUlkKTtcbiAgfVxuXG4gIGdldE5vZGVCeUlkKG5vZGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQuZ2V0Tm9kZUJ5SWQobm9kZUlkKTtcbiAgfVxuXG4gIGlzTm9kZUxvYWRpbmcobm9kZUlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMudHJlZURlcGFydG1lbnQuZ2V0Tm9kZUJ5SWQobm9kZUlkKTtcbiAgICByZXR1cm4gISFub2RlICYmIG5vZGUuaXNMb2FkaW5nO1xuICB9XG5cbiAgc2V0TG9hZGluZ01vcmUoc3RhdGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXG4gICAgICByZXR1cm47XG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudC5nZXRMb2FkaW5nTW9yZSQubmV4dChzdGF0ZSk7XG4gIH1cblxuICBzZXRMb2FkaW5nKHN0YXRlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQuZ2V0TG9hZGluZyQubmV4dChzdGF0ZSk7XG4gIH1cbiAgc2V0TG9hZGluZ05vZGUobm9kZUlkOiBzdHJpbmcsIHN0YXRlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnRyZWVEZXBhcnRtZW50LmdldE5vZGVCeUlkKG5vZGVJZCk7XG4gICAgaWYgKCEhbm9kZSlcbiAgICAgIG5vZGUuaXNMb2FkaW5nID0gc3RhdGU7XG4gIH1cblxuICB1cGRhdGVUcmVlRGF0YShkYXRhOiBRTVNUcmVlTm9kZVtdID0gdGhpcy5jdXJyZW50VHJlZURhdGEpIHtcbiAgICAhIXRoaXMudHJlZURlcGFydG1lbnQgJiYgdGhpcy50cmVlRGVwYXJ0bWVudC51cGRhdGVEYXRhVHJlZShkYXRhKTtcbiAgfVxuXG4gIG9uRGVzdHJveUxvYWRNb3JlKCkge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQub25EZXN0cm95TG9hZE1vcmUoKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkTGlzdERhdGEoZGF0YTogYW55KSB7XG4gICAgdGhpcy5wb3B1cERhdGEuY29uZmlnLnNlbGVjdGVkTGlzdCA9IGRhdGE7XG4gIH1cblxuICBnZXRDaGVja2VkU3RhdHVzTm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC5nZXRDaGVja2VkU3RhdHVzTm9kZShub2RlKTtcbiAgfVxuXG4gIHVwZGF0ZU5vZGVJbmZvcm1hdGlvbihub2RlOiBRTVNGbGF0Tm9kZVRyZWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC51cGRhdGVOb2RlSW5mb3JtYXRpb24obm9kZSk7XG4gIH1cblxuICB1cGRhdGVTZWxlY3RlZFJlc3VsdERhdGEobm9kZTogUU1TRmxhdE5vZGVUcmVlKSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQudXBkYXRlU2VsZWN0ZWRSZXN1bHREYXRhKG5vZGUpO1xuICB9XG5cbiAgZ2V0QWxsUGFyZW50Tm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC5nZXRBbGxQYXJlbnROb2RlKG5vZGUpO1xuICB9XG5cbiAgb25DaGVja05vZGUobm9kZTogUU1TRmxhdE5vZGVUcmVlLCBmaXJlRXZlbnRDaGVja05vZGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQub25DaGVja05vZGUobm9kZSwgZmlyZUV2ZW50Q2hlY2tOb2RlKTtcbiAgfVxuXG4gIGdldENoaWxkcmVuU2VsZWN0ZWQobm9kZTogUU1TRmxhdE5vZGVUcmVlKTogUU1TRmxhdE5vZGVUcmVlW10ge1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50LmdldENoaWxkcmVuU2VsZWN0ZWQobm9kZSk7XG4gIH1cbn1cbiJdfQ==
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRlcGFydG1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC1kZXBhcnRtZW50L3NlbGVjdC1kZXBhcnRtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQTZCLDRCQUE0QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUV0RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztXQVN2RTtJQUNSLFdBQVcsRUFBRSxNQUFNO0NBQ1M7QUFLcEMsTUFBTSxPQUFPLHlCQUF5QjtJQXNCcEMsWUFDVSxLQUF3QixFQUN4QixTQUFrRCxFQUN6QixJQUErQixFQUN6RCxLQUE4QjtRQUg3QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUF5QztRQUN6QixTQUFJLEdBQUosSUFBSSxDQUEyQjtRQUN6RCxVQUFLLEdBQUwsS0FBSyxDQUF5QjtRQXpCdkMsa0JBQWEsR0FBRyxJQUFJ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O1lBM0J1QixpQkFBaUI7WUFFaEMsWUFBWTtZQVVaLHlCQUF5Qix1QkF5QzdCLE1BQU0sU0FBQyxlQUFlO1lBNUNsQix1QkFBdUI7Ozs2QkFzQjdCLFNBQVMsU0FBQyxnQkFBZ0I7NEJBQzFCLE1BQU07NEJBS04sTUFBTTsrQkFDTixNQUFNO2dDQUNOLE1BQU07OEJBQ04sTUFBTTtxQ0FDTixNQUFNO3dDQUNOLE1BQU07c0NBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94RGVmYXVsdE9wdGlvbnMsIE1BVF9DSEVDS0JPWF9ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUU1TRmxhdE5vZGVUcmVlIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtZmxhdC1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFFNU1RyZWVOb2RlIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtdHJlZS1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBEZXBhcnRtZW50U2VhcmNoUmVzdWx0TW9kZWwsIFFNU0RlcGFydG1lbnRQYWdpbmdNb2RlbCwgU2VsZWN0RGVwYXJ0bWVudFRyZWVDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QtZGVwYXJ0bWVudC10cmVlJztcbmltcG9ydCB7IFNlbGVjdERlcGFydG1lbnRBbmltYXRpb25UcmlnZ2VyIH0gZnJvbSAnLi9jb21tb24vYW5pbWF0aW9uJztcbmltcG9ydCB7IFNlbGVjdERlcGFydG1lbnRQb3B1cERhdGEgfSBmcm9tICcuL21vZGVsL3NlbGVjdC1kZXBhcnRtZW50LXBvcHVwLWRhdGEubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxbXMtc2VsZWN0LWRlcGFydG1lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWRlcGFydG1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtZGVwYXJ0bWVudC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfQ0hFQ0tCT1hfREVGQVVMVF9PUFRJT05TLFxuICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgY2xpY2tBY3Rpb246ICdub29wJ1xuICAgICAgfSBhcyBNYXRDaGVja2JveERlZmF1bHRPcHRpb25zXG4gICAgfVxuICBdLFxuICBhbmltYXRpb25zOiBbU2VsZWN0RGVwYXJ0bWVudEFuaW1hdGlvblRyaWdnZXJdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdERlcGFydG1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBMQU5HOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3RyZWVEZXBhcnRtZW50JykgdHJlZURlcGFydG1lbnQ6IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgb25QYWdpbmdFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuICBwb3B1cERhdGEgPSBuZXcgU2VsZWN0RGVwYXJ0bWVudFBvcHVwRGF0YSgpO1xuICByZXN1bHRTZWxlY3RlZDogUU1TVHJlZU5vZGVbXSA9IFtdO1xuICBpc1B1c2hpbmc6IGJvb2xlYW47XG5cbiAgQE91dHB1dCgpIG9uU2VhcmNoRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIG9uQ2hlY2tOb2RlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFFNU0ZsYXROb2RlVHJlZT4oKTtcbiAgQE91dHB1dCgpIG9uRXhwYW5kTm9kZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxRTVNGbGF0Tm9kZVRyZWU+KCk7XG4gIEBPdXRwdXQoKSBvbkxvYWRNb3JlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBvbkNoZWNrSXRlbVNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0YXRlOiBib29sZWFuLCBpdGVtOiBEZXBhcnRtZW50U2VhcmNoUmVzdWx0TW9kZWwgfT4oKTtcbiAgQE91dHB1dCgpIG9uQ2hlY2tBbGxJdGVtU2VhcmNoRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSB0b2dnbGVJbmNsdWRlQ2hpbGRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgb25WYWx1ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PFFNU1RyZWVOb2RlW10+KCk7XG4gIHJlc3VsdFNlYXJjaDogUU1TRmxhdE5vZGVUcmVlW10gPSBbXTtcbiAgaXNBY3RpdmVWaWV3U2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG4gIGdldCBpc0luY2x1ZGVDaGlsZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRyZWVEZXBhcnRtZW50ICYmIHRoaXMudHJlZURlcGFydG1lbnQuaXNJbmNsdWRlQ2hpbGRyZW47XG4gIH1cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTZWxlY3REZXBhcnRtZW50Q29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBkYXRhOiBTZWxlY3REZXBhcnRtZW50UG9wdXBEYXRhLFxuICAgIHB1YmxpYyB0cmFuczogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy50cmFucy5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnMuZ2V0T2JqZWN0TGFuZyhyZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIEluaXQgcG9wdXAgZGF0YVxuICAgIHRoaXMucG9wdXBEYXRhID0gXy5jbG9uZURlZXAodGhpcy5kYXRhKTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBvbkNsb3NlRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMudHJlZURlcGFydG1lbnQucmVzdWx0U2VsZWN0ZWQpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRUcmVlRGF0YSgpOiBRTVNUcmVlTm9kZVtdIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudCA/IHRoaXMudHJlZURlcGFydG1lbnQuY3VycmVudFRyZWVEYXRhIDogW107XG4gIH1cblxuICBkaXNwbGF5V2hlblNlbGVjdERlcGFydG1lbnRPcHRpb24oJGV2ZW50OiBhbnkpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBvblNjcm9sbFRvTm9kZShub2RlOiBRTVNUcmVlTm9kZSkge1xuICAgIC8vIHRoaXMudHJlZURlcGFydG1lbnQuc2Nyb2xsVG9Ob2RlKG5vZGUuaWQpO1xuICB9XG5cbiAgb25SZW1vdmVOb2RlKG5vZGU6IFFNU1RyZWVOb2RlKSB7XG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudC5vblJlbW92ZU5vZGUobm9kZS5pZCk7XG4gIH1cblxuICAvKipcbiAqIEdldHMgYSBsaXN0IG9mIHRoZSBkYXRhIG5vZGUncyBzdWJ0cmVlIG9mIGRlc2NlbmRlbnQgZGF0YSBub2Rlcy5cbiAqL1xuICBnZXRDaGlsZHJlbk5vZGUobm9kZTogUU1TRmxhdE5vZGVUcmVlKSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQuZ2V0TGlzdENoaWxkcmVuT2ZOb2RlKG5vZGUpO1xuICB9XG5cbiAgb25SZXN1bHREZXBhcnRtZW50Q2hhbmdlKGRhdGE6IFFNU1RyZWVOb2RlW10pIHtcbiAgICB0aGlzLnJlc3VsdFNlbGVjdGVkID0gZGF0YS5tYXAoaXRlbSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICB0b29sdGlwOiB0aGlzLmdlbmVyYXRlVG9vdGlwKGl0ZW0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlLm5leHQodGhpcy5yZXN1bHRTZWxlY3RlZCk7XG4gIH1cblxuICBkZWZhdWx0Rm9ybWF0VG9vbHRpcE5vZGUobm9kZTogUU1TVHJlZU5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5pc0dyb3VwID8gdGhpcy5mb3JtYXRTdHJpbmcodGhpcy5wb3B1cERhdGEuY29uZmlnLnRvb2x0aXBJbmNsdWRlTGFiZWwgPyB0aGlzLnBvcHVwRGF0YS5jb25maWcudG9vbHRpcEluY2x1ZGVMYWJlbCA6IHRoaXMuTEFORy5UT09MVElQX0lOQ0xVREVfU1VCX0RFUEFSVE1FTlQsIG5vZGUubmFtZSwgbm9kZS5jaGlsZHJlbi5sZW5ndGgudG9TdHJpbmcoKSkgOiBub2RlLm5hbWU7XG4gIH1cblxuICBnZW5lcmF0ZVRvb3RpcChub2RlOiBRTVNUcmVlTm9kZSkge1xuICAgIHJldHVybiAhIXRoaXMucG9wdXBEYXRhLmZvcm1hdFRvb2x0aXBJdGVtUmVzdWx0ID8gdGhpcy5wb3B1cERhdGEuZm9ybWF0VG9vbHRpcEl0ZW1SZXN1bHQobm9kZSkgOiB0aGlzLmRlZmF1bHRGb3JtYXRUb29sdGlwTm9kZShub2RlKVxuICB9XG5cbiAgdXBkYXRlUmVzdWx0U2VhcmNoKGRhdGE6IFFNU0RlcGFydG1lbnRQYWdpbmdNb2RlbDxRTVNGbGF0Tm9kZVRyZWU+KSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQuc2V0UmVzdWx0U2VhcmNoKGRhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRTdHJpbmcoLi4ucmVwbGFjZW1lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdCA9IGFyZ3VtZW50c1swXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYFxcXFx7JHtpfVxcXFx9YCwgJ2dtJyk7XG4gICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShyZWcsIGFyZ3VtZW50c1tpICsgMV0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIC8qKlxuICAgICAgICogVGhpcyBmdW5jdGlvbiB1c2UgZm9yIGxhenkgbG9hZCBjaGlsZHJlbiBvZiBub2RlXG4gICAgICAgKiBAcGFyYW0gbm9kZSBub2RlIHVwZGF0ZVxuICAgICAgICogQHBhcmFtIGRhdGEgbGlzdCBjaGlsZHJlbiB0byB1cGRhdGUgbm9kZS5cbiAgICAgICAqIEBwYXJhbSBtb2RlIGRlZmF1bHQgaXMgdXBkYXRlIHRoYXQgcmVwbGFjZSBjdXJyZW50IGxpc3QgY2hpbGRyZW4gYnkgbmV3IGxpc3QgY2hpbGRyZW4gLCBpZiBtb2RlID0gJ2luc2VydCcgd2lsbCBpbnNlcnQgbmV3IHZhbHVlIHRvIGxpc3QgY2hpbGRyZW4gZXhpc3RlZCBiZWZvcmUuXG4gICovXG4gIHVwZGF0ZUNoaWxkT2ZOb2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSwgZGF0YTogUU1TRmxhdE5vZGVUcmVlW10sIG1vZGU6ICdpbnNlcnQnIHwgJ3VwZGF0ZScgPSAndXBkYXRlJykge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQudXBkYXRlQ2hpbGRPZk5vZGUobm9kZSwgZGF0YSwgbW9kZSk7XG4gIH1cblxuICBhZGRSb290VHJlZShkYXRhOiBRTVNGbGF0Tm9kZVRyZWVbXSA9IFtdKSB7XG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudC5hZGRSb290VHJlZShkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICogVGhpcyBmdW5jdGlvbiBoYW5kbGUgY2hlY2sgbm9kZSBvZiB0cmVlXG4gKiBAcGFyYW0gbm9kZSBub2RlIG9mIHRyZWVcbiAqIEBwYXJhbSBjYWxsYmFjayBkbyBzb21ldGhpbmcgYmVmb3JlIGhhbmRsZSBjaGVjayBub2RlXG4gKiBAcmV0dXJuc1xuICovXG4gIG9uQmVmb3JlQ2hlY2tOb2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSwgY2FsbGJhY2s/OiAobm9kZTogUU1TRmxhdE5vZGVUcmVlKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikge1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50Lm9uQmVmb3JlQ2hlY2tOb2RlKG5vZGUsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIGhhbmRsZUNoZWNrTm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUpIHtcbiAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXG4gICAgICByZXR1cm47XG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudC5oYW5kbGVDaGVja05vZGUobm9kZSlcbiAgfVxuXG4gIC8qKlxuICogVGhpcyBtZXRob2QgdXNlIGZvciBsYXp5IG1vZGUsIGRvIHNvbWUgdGhpbmcgYmVmb3JlIGluaXQgbGlzdCBub2RlIHNlbGVjdGVkXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zXG4gKi9cbiAgYXN5bmMgb25CZWZvcmVJbml0Tm9kZVNlbGVjdGVkKGNhbGxiYWNrPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHtcbiAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCEhY2FsbGJhY2spXG4gICAgICBhd2FpdCB0aGlzLnRyZWVEZXBhcnRtZW50Lm9uQmVmb3JlSW5pdE5vZGVTZWxlY3RlZChjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IG5vZGUgYnkgaWQgb2Ygbm9kZVxuICAgKiBAcGFyYW0gbm9kZUlkIGlkIG9mIG5vZGVcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbmROb2RlKG5vZGVJZDogc3RyaW5nKTogUU1TRmxhdE5vZGVUcmVlIHtcbiAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXG4gICAgICByZXR1cm47XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQobm9kZSA9PiBub2RlLmlkID09PSBub2RlSWQudG9TdHJpbmcoKSk7XG4gIH1cblxuICAvKipcbiAqIFRoaXMgbWV0aG9kIHVzZSBmb3IgbGF6eSBtb2RlLCBkbyBzb21lIHRoaW5nIGJlZm9yZSBzZWxlY3QgYWxsIHJlc3VsdCBzZWFyY2hcbiAqIEBwYXJhbSBjYWxsYmFja1xuICogQHJldHVybnNcbiAqL1xuICBhc3luYyBvbkJlZm9yZUNoZWNrQWxsU2VhcmNoKGNhbGxiYWNrPzogKGRhdGEpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGF3YWl0IHRoaXMudHJlZURlcGFydG1lbnQub25CZWZvcmVDaGVja0FsbFNlYXJjaChjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiogVGhpcyBtZXRob2QgdXNlIGZvciBsYXp5IG1vZGUsIGRvIHNvbWUgdGhpbmcgYmVmb3JlIGNoZWNrIGl0ZW0gcmVzdWx0XG4qIEBwYXJhbSBjYWxsYmFja1xuKiBAcmV0dXJuc1xuKi9cbiAgb25CZWZvcmVDaGVja0l0ZW1TZWFyY2goaXRlbTogRGVwYXJ0bWVudFNlYXJjaFJlc3VsdE1vZGVsLCBjYWxsYmFjaz86IChpdGVtOiBEZXBhcnRtZW50U2VhcmNoUmVzdWx0TW9kZWwpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQub25CZWZvcmVDaGVja0l0ZW1TZWFyY2goaXRlbSwgY2FsbGJhY2spO1xuICB9XG5cbiAgc2V0TG9hZGluZ1N0YXRlTm9kZShpc0xvYWRpbmcsIG5vZGVJZDogc3RyaW5nKSB7XG4gICAgISF0aGlzLnRyZWVEZXBhcnRtZW50ICYmIHRoaXMudHJlZURlcGFydG1lbnQuc2V0TG9hZGluZ1N0YXRlTm9kZShpc0xvYWRpbmcsIG5vZGVJZCk7XG4gIH1cbiAgLyoqXG4gICAqIFNlbGVjdCBhIHZhbHVlIG9yIGFuIGFycmF5IG9mIHZhbHVlcy5cbiAgICovXG4gIG9uU2VsZWN0Tm9kZSguLi5ub2RlSWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQub25TZWxlY3ROb2RlKC4uLm5vZGVJZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2VsZWN0cyBhIHZhbHVlIG9yIGFuIGFycmF5IG9mIHZhbHVlcy5cbiAgICovXG4gIG9uRGVzZWxlY3ROb2RlKC4uLm5vZGVJZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudC5vbkRlc2VsZWN0Tm9kZSguLi5ub2RlSWRzKTtcbiAgfVxuXG4gIC8qKlxuICAqIFRvZ2dsZXMgYSB2YWx1ZSBiZXR3ZWVuIHNlbGVjdGVkIGFuZCBkZXNlbGVjdGVkLlxuICAqL1xuICBvblRvZ2dsZU5vZGUobm9kZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50Lm9uVG9nZ2xlTm9kZShub2RlSWQpO1xuICB9XG5cbiAgZ2V0Tm9kZUJ5SWQobm9kZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC5nZXROb2RlQnlJZChub2RlSWQpO1xuICB9XG5cbiAgaXNOb2RlTG9hZGluZyhub2RlSWQ6IHN0cmluZykge1xuICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBub2RlID0gdGhpcy50cmVlRGVwYXJ0bWVudC5nZXROb2RlQnlJZChub2RlSWQpO1xuICAgIHJldHVybiAhIW5vZGUgJiYgbm9kZS5pc0xvYWRpbmc7XG4gIH1cblxuICBzZXRMb2FkaW5nTW9yZShzdGF0ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcbiAgICAgIHJldHVybjtcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50LmdldExvYWRpbmdNb3JlJC5uZXh0KHN0YXRlKTtcbiAgfVxuXG4gIHNldExvYWRpbmcoc3RhdGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXG4gICAgICByZXR1cm47XG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudC5nZXRMb2FkaW5nJC5uZXh0KHN0YXRlKTtcbiAgfVxuICBzZXRMb2FkaW5nTm9kZShub2RlSWQ6IHN0cmluZywgc3RhdGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXG4gICAgICByZXR1cm47XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMudHJlZURlcGFydG1lbnQuZ2V0Tm9kZUJ5SWQobm9kZUlkKTtcbiAgICBpZiAoISFub2RlKVxuICAgICAgbm9kZS5pc0xvYWRpbmcgPSBzdGF0ZTtcbiAgfVxuXG4gIHVwZGF0ZVRyZWVEYXRhKGRhdGE6IFFNU1RyZWVOb2RlW10gPSB0aGlzLmN1cnJlbnRUcmVlRGF0YSkge1xuICAgICEhdGhpcy50cmVlRGVwYXJ0bWVudCAmJiB0aGlzLnRyZWVEZXBhcnRtZW50LnVwZGF0ZURhdGFUcmVlKGRhdGEpO1xuICB9XG5cbiAgb25EZXN0cm95TG9hZE1vcmUoKSB7XG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudC5vbkRlc3Ryb3lMb2FkTW9yZSgpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRMaXN0RGF0YShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnBvcHVwRGF0YS5jb25maWcuc2VsZWN0ZWRMaXN0ID0gZGF0YTtcbiAgfVxuXG4gIGdldENoZWNrZWRTdGF0dXNOb2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50LmdldENoZWNrZWRTdGF0dXNOb2RlKG5vZGUpO1xuICB9XG5cbiAgdXBkYXRlTm9kZUluZm9ybWF0aW9uKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50LnVwZGF0ZU5vZGVJbmZvcm1hdGlvbihub2RlKTtcbiAgfVxuXG4gIHVwZGF0ZVNlbGVjdGVkUmVzdWx0RGF0YShub2RlOiBRTVNGbGF0Tm9kZVRyZWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC51cGRhdGVTZWxlY3RlZFJlc3VsdERhdGEobm9kZSk7XG4gIH1cblxuICBnZXRBbGxQYXJlbnROb2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50LmdldEFsbFBhcmVudE5vZGUobm9kZSk7XG4gIH1cblxuICBvbkNoZWNrTm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUsIGZpcmVFdmVudENoZWNrTm9kZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC5vbkNoZWNrTm9kZShub2RlLCBmaXJlRXZlbnRDaGVja05vZGUpO1xuICB9XG5cbiAgZ2V0Q2hpbGRyZW5TZWxlY3RlZChub2RlOiBRTVNGbGF0Tm9kZVRyZWUpOiBRTVNGbGF0Tm9kZVRyZWVbXSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQuZ2V0Q2hpbGRyZW5TZWxlY3RlZChub2RlKTtcbiAgfVxuXG4gIGlzUHVzaGluZ0NoaWxkTm9kZXModmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc1B1c2hpbmcgPSB2YWw7XG4gIH1cbn1cbiJdfQ==
|