UNPKG

ng-yunzai-mobile

Version:

1. 适配yunzai_uni_app_x

339 lines 30.4 kB
/** * @fileoverview added by tsickle * Generated from: tree-picker/yz-tree-picker/yz-tree-picker.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, Inject } from '@angular/core'; import { treePickerParams } from "./yz-tree-picker.service"; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; var YzTreePickerComponent = /** @class */ (function () { function YzTreePickerComponent(dialogRef, data) { this.dialogRef = dialogRef; this.data = data; this.titleName = null; this.closeBtnText = null; this.pickerClassName = null; // 部门/班级 this.deptNode = []; this.deptList = []; this.resultList = []; this.searchValue = null; this.searchResult = []; } /** * @return {?} */ YzTreePickerComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; this.titleName = this.data.titleName; this.deptNode = this.data.tree; this.closeBtnText = this.data.closeBtnText; this.pickerClassName = this.data.pickerClassName; this.blTree(this.deptNode, null); this.setDefultValue(); this.blTree(this.deptNode, null); this.dialogRef.backdropClick().subscribe((/** * @return {?} */ function () { document.getElementsByClassName('tree-picker-panel-bg')[0].remove(); _this.closeHandle(); })); }; // 关闭 // 关闭 /** * @return {?} */ YzTreePickerComponent.prototype.closeHandle = // 关闭 /** * @return {?} */ function () { this.dialogRef.close(this.resultList); }; // 重置 // 重置 /** * @return {?} */ YzTreePickerComponent.prototype.resetHandle = // 重置 /** * @return {?} */ function () { this.resultList = []; this.blTree(this.deptNode, null); this.deptList = this.deptNode.length > 0 ? this.deptNode : []; this.cancelSearchHandle(); }; // 回显 // 回显 /** * @return {?} */ YzTreePickerComponent.prototype.setDefultValue = // 回显 /** * @return {?} */ function () { if (this.data.value) { this.resultList = this.familyTree(this.deptNode, this.data.value).reverse(); if (this.resultList.length == 0) { console.error('传入参数中回显数据字段(value)值不存在于数据源中!!!'); return; } if (this.resultList[this.resultList.length - 1].children && this.resultList[this.resultList.length - 1].children.length > 0) { this.deptList = this.resultList[this.resultList.length - 1].children; } else if (this.resultList.length >= 2) { this.deptList = this.resultList[this.resultList.length - 2].children; } else { this.deptList = this.deptNode.length > 0 ? this.deptNode : []; } } else { this.deptList = this.deptNode.length > 0 ? this.deptNode : []; } }; // 遍历树节点,设置父id // 遍历树节点,设置父id /** * @param {?} data * @param {?} id * @return {?} */ YzTreePickerComponent.prototype.blTree = // 遍历树节点,设置父id /** * @param {?} data * @param {?} id * @return {?} */ function (data, id) { var _this = this; if (data && data.length && data.length > 0) { data.forEach((/** * @param {?} item * @return {?} */ function (item) { item['pid'] = id; item['selected'] = _this.resultList.some((/** * @param {?} item2 * @return {?} */ function (item2) { return item2.value == item.value; })); _this.blTree(item.children, item.value); })); } }; // 递归获取子节点所有父节点 // 递归获取子节点所有父节点 /** * @param {?} arr1 * @param {?} id * @return {?} */ YzTreePickerComponent.prototype.familyTree = // 递归获取子节点所有父节点 /** * @param {?} arr1 * @param {?} id * @return {?} */ function (arr1, id) { /** @type {?} */ var temp = []; /** @type {?} */ var forFn = (/** * @param {?} arr * @param {?} id * @return {?} */ function (arr, id) { for (var i = 0; i < arr.length; i++) { /** @type {?} */ var item = arr[i]; if (item.value === id) { temp.push(item); forFn(arr1, item.pid); break; } else { if (item.children) { forFn(item.children, id); } } } }); forFn(arr1, id); return temp; }; // 搜索 // 搜索 /** * @return {?} */ YzTreePickerComponent.prototype.searchHandle = // 搜索 /** * @return {?} */ function () { var _this = this; this.searchResult = []; if (this.searchValue) { this.searchResult = this.deptList.filter((/** * @param {?} item * @return {?} */ function (item) { return item.title.indexOf(_this.searchValue) != -1; })); } }; // 取消搜索 // 取消搜索 /** * @return {?} */ YzTreePickerComponent.prototype.cancelSearchHandle = // 取消搜索 /** * @return {?} */ function () { this.searchResult = []; this.searchValue = null; }; // 选择部门 // 选择部门 /** * @param {?} dept * @return {?} */ YzTreePickerComponent.prototype.selectDeptHandle = // 选择部门 /** * @param {?} dept * @return {?} */ function (dept) { var _this = this; this.cancelSearchHandle(); /** @type {?} */ var hasThis = this.resultList.some((/** * @param {?} item * @return {?} */ function (item) { return item.value == dept.value; })); if (!hasThis) { if (this.resultList.length > 0) { /** @type {?} */ var hasLastItem = this.deptList.some((/** * @param {?} item * @return {?} */ function (item) { return item.value == _this.resultList[_this.resultList.length - 1].value; })); if (hasLastItem) { // 在最后的叶子节点上更换部门 this.resultList.splice(this.resultList.length - 1, 1); } } this.resultList.push(dept); this.deptList.forEach((/** * @param {?} item * @return {?} */ function (item) { item['selected'] = item.value == dept.value; })); if (dept.children && dept.children.length > 0) { this.deptList = dept.children; } } this.setScrollTop(); }; // 在结果处更改部门 // 在结果处更改部门 /** * @param {?} item * @param {?} index * @return {?} */ YzTreePickerComponent.prototype.selectResultDeptHandle = // 在结果处更改部门 /** * @param {?} item * @param {?} index * @return {?} */ function (item, index) { if (index != this.resultList.length - 1) { this.deptList = item.children; this.resultList.length = index + 1; this.blTree(this.deptList, item.value); } this.setScrollTop(); }; // 设置数据源列表滚动条置顶 // 设置数据源列表滚动条置顶 /** * @return {?} */ YzTreePickerComponent.prototype.setScrollTop = // 设置数据源列表滚动条置顶 /** * @return {?} */ function () { setTimeout((/** * @return {?} */ function () { document.getElementsByClassName('tree-picker-comp')[0].getElementsByTagName('ul')[0].scrollTop = 0; }), 0); }; YzTreePickerComponent.decorators = [ { type: Component, args: [{ selector: 'yz-tree-picker', template: "<div class=\"tree-picker-comp\" [ngClass]=\"pickerClassName\">\r\n <a class=\"tree-picker-reset-btn\" (click)=\"resetHandle()\">\u91CD\u7F6E</a>\r\n <h2>\u8BF7\u9009\u62E9\r\n <ng-container *ngIf=\"titleName\">{{titleName}}</ng-container>\r\n </h2>\r\n <Icon *ngIf=\"!closeBtnText\"\r\n class=\"tree-picker-close-btn\"\r\n [type]=\"'cross'\"\r\n [size]=\"'md'\"\r\n (click)=\"closeHandle()\"\r\n ></Icon>\r\n <a *ngIf=\"closeBtnText\" class=\"tree-picker-close-btn\" (click)=\"closeHandle()\">{{closeBtnText}}</a>\r\n <div class=\"tree-picker-step\" *ngIf=\"resultList.length>0\">\r\n <Steps [size]=\"'small'\">\r\n <Step *ngFor=\"let item of resultList;let i=index;\"\r\n [title]=\"item?.title\"\r\n (click)=\"selectResultDeptHandle(item,i)\"></Step>\r\n </Steps>\r\n </div>\r\n\r\n <div class=\"tree-picker-search\">\r\n <SearchBar [placeholder]=\"'\u641C\u7D22\u2026\u2026'\"\r\n [(ngModel)]=\"searchValue\"\r\n (ngModelChange)=\"searchHandle()\"\r\n (onCancel)=\"cancelSearchHandle()\"></SearchBar>\r\n </div>\r\n\r\n <ul *ngIf=\"!searchValue\"\r\n [ngStyle]=\"{'height':resultList.length>5?'calc(100% - 364px)':'calc(100% - '+(48*resultList.length+124)+'px)'}\">\r\n <li *ngFor=\"let item of deptList\"\r\n (click)=\"selectDeptHandle(item)\"\r\n [class.selected]=\"item.selected\">\r\n <span>{{item?.title || 'XX'}}</span>\r\n <Icon *ngIf=\"item.children && item.children.length>0\" [type]=\"'right'\"></Icon>\r\n <Icon *ngIf=\"item.selected\" [type]=\"'check'\"></Icon>\r\n </li>\r\n <li *ngIf=\"deptList.length==0\" style=\"text-align: center;\">\u6682\u65E0\u6570\u636E\u2026\u2026</li>\r\n </ul>\r\n\r\n <ul *ngIf=\"searchValue\"\r\n [ngStyle]=\"{'height':resultList.length>5?'calc(100% - 364px)':'calc(100% - '+(48*resultList.length+124)+'px)'}\">\r\n <li *ngFor=\"let item of searchResult\"\r\n (click)=\"selectDeptHandle(item)\"\r\n [class.selected]=\"item.selected\">\r\n <span>{{item?.title || 'XX'}}</span>\r\n <Icon *ngIf=\"item.children && item.children.length>0\" [type]=\"'right'\"></Icon>\r\n <Icon *ngIf=\"item.selected\" [type]=\"'check'\"></Icon>\r\n </li>\r\n\r\n <li *ngIf=\"searchResult.length==0\" style=\"text-align: center;color: red\">\u65E0\u641C\u7D22\u7ED3\u679C\u2026\u2026</li>\r\n </ul>\r\n</div>\r\n\r\n", styles: [".textOverflow{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}::ng-deep .tree-picker-panel-bg{background:rgba(0,0,0,.4);height:100%;position:fixed;width:100%;left:0;top:0;z-index:200}::ng-deep .tree-picker-panel{position:fixed!important;bottom:0;left:0;z-index:200;width:100%;height:80%;max-width:unset!important}::ng-deep .tree-picker-panel .mat-dialog-container{padding:0;border-radius:0;transform:none!important}.tree-picker-comp{background:#fff;width:100%;height:100%;overflow:hidden}.tree-picker-comp h2{font-size:16px;text-align:center;font-weight:700;padding:10px 42px;text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.tree-picker-comp ul{margin:0;overflow-y:auto}.tree-picker-comp ul li{line-height:44px;overflow:hidden;padding:0 16px;color:#333}.tree-picker-comp ul li:active{background:#eaeaea}.tree-picker-comp ul li span{float:left;max-width:calc(100% - 70px);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.tree-picker-comp ul li Icon{float:right;margin:11px 0 0 10px}.tree-picker-comp ul li.selected{color:#108ee9}.tree-picker-comp ul li.selected Icon ::ng-deep .am-icon-check{color:#108ee9}.tree-picker-close-btn,.tree-picker-reset-btn{position:absolute;right:0;top:0;padding:10px;cursor:pointer;color:#333;background:#fff}.tree-picker-close-btn:active,.tree-picker-reset-btn:active{color:#108ee9}.tree-picker-reset-btn{right:auto;left:0;line-height:24px;font-size:14px;color:#108ee9}.tree-picker-reset-btn:active{opacity:.7}::ng-deep .tree-picker-step{border-bottom:1px solid #ddd;padding:12px 16px 0;max-height:253px;overflow-y:auto}::ng-deep .tree-picker-step .am-steps-small .am-steps-item-title{font-size:14px;max-height:36px;display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}::ng-deep .tree-picker-step .am-steps-small .am-steps-icon{display:none}::ng-deep .tree-picker-step .am-steps-small .am-steps-item-icon{width:8px;height:8px;background:#108ee9!important;margin:5px 10px 5px 6px}::ng-deep .tree-picker-step .am-steps-small .am-steps-item-tail:after{background:#108ee9!important}::ng-deep .tree-picker-search{padding:4px 8px 0}::ng-deep .tree-picker-search .am-search{background:#fff;height:55px}::ng-deep .tree-picker-search .am-search-input{border:1px solid #ddd;height:38px}::ng-deep .tree-picker-search .am-search-input input[type=search]{height:36px;line-height:36px}::ng-deep .tree-picker-search .am-search-input .am-search-synthetic-ph{height:36px;line-height:36px;padding-left:12px!important}::ng-deep .tree-picker-search .am-search-input .am-search-clear{padding:11px 7px}::ng-deep .tree-picker-search .am-search-cancel{height:38px;line-height:38px}"] }] } ]; /** @nocollapse */ YzTreePickerComponent.ctorParameters = function () { return [ { type: MatDialogRef }, { type: treePickerParams, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] } ]; }; return YzTreePickerComponent; }()); export { YzTreePickerComponent }; if (false) { /** @type {?} */ YzTreePickerComponent.prototype.titleName; /** @type {?} */ YzTreePickerComponent.prototype.closeBtnText; /** @type {?} */ YzTreePickerComponent.prototype.pickerClassName; /** @type {?} */ YzTreePickerComponent.prototype.deptNode; /** @type {?} */ YzTreePickerComponent.prototype.deptList; /** @type {?} */ YzTreePickerComponent.prototype.resultList; /** @type {?} */ YzTreePickerComponent.prototype.searchValue; /** @type {?} */ YzTreePickerComponent.prototype.searchResult; /** @type {?} */ YzTreePickerComponent.prototype.dialogRef; /** @type {?} */ YzTreePickerComponent.prototype.data; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXotdHJlZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmcteXVuemFpLW1vYmlsZS8iLCJzb3VyY2VzIjpbInRyZWUtcGlja2VyL3l6LXRyZWUtcGlja2VyL3l6LXRyZWUtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBYSxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFdkU7SUFtQkUsK0JBQW1CLFNBQThDLEVBQ3JCLElBQXNCO1FBRC9DLGNBQVMsR0FBVCxTQUFTLENBQXFDO1FBQ3JCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBYmxFLGNBQVMsR0FBVyxJQUFJLENBQUM7UUFDekIsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFDNUIsb0JBQWUsR0FBVyxJQUFJLENBQUM7O1FBRy9CLGFBQVEsR0FBc0IsRUFBRSxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFFZCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQVcsSUFBSSxDQUFDO1FBQzNCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO0lBSWxCLENBQUM7Ozs7SUFFRCx3Q0FBUTs7O0lBQVI7UUFBQSxpQkFZQztRQVhDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzNDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENB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LElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZUFBZTs7Ozs7SUFDZiw0Q0FBWTs7Ozs7SUFBWjtRQUNFLFVBQVU7OztRQUFDO1lBQ1QsUUFBUSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNyRyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUE7SUFDUCxDQUFDOztnQkE5SkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLDY1RUFBOEM7O2lCQUUvQzs7OztnQkFOd0IsWUFBWTtnQkFEakIsZ0JBQWdCLHVCQXVCckIsTUFBTSxTQUFDLGVBQWU7O0lBMklyQyw0QkFBQztDQUFBLEFBL0pELElBK0pDO1NBMUpZLHFCQUFxQjs7O0lBRWhDLDBDQUF5Qjs7SUFDekIsNkNBQTRCOztJQUM1QixnREFBK0I7O0lBRy9CLHlDQUFpQzs7SUFDakMseUNBQWM7O0lBRWQsMkNBQWdCOztJQUNoQiw0Q0FBMkI7O0lBQzNCLDZDQUFrQjs7SUFFTiwwQ0FBcUQ7O0lBQ3JELHFDQUFzRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7bGlzdE9wdGlvbiwgdHJlZVBpY2tlclBhcmFtc30gZnJvbSBcIi4veXotdHJlZS1waWNrZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge01BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd5ei10cmVlLXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3l6LXRyZWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi95ei10cmVlLXBpY2tlci5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBZelRyZWVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICB0aXRsZU5hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgY2xvc2VCdG5UZXh0OiBzdHJpbmcgPSBudWxsO1xyXG4gIHBpY2tlckNsYXNzTmFtZTogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLy8g6YOo6ZeoL+ePree6p1xyXG4gIGRlcHROb2RlOiBBcnJheTxsaXN0T3B0aW9uPiA9IFtdO1xyXG4gIGRlcHRMaXN0ID0gW107XHJcblxyXG4gIHJlc3VsdExpc3QgPSBbXTtcclxuICBzZWFyY2hWYWx1ZTogc3RyaW5nID0gbnVsbDtcclxuICBzZWFyY2hSZXN1bHQgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFl6VHJlZVBpY2tlckNvbXBvbmVudD4sXHJcbiAgICAgICAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiB0cmVlUGlja2VyUGFyYW1zKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudGl0bGVOYW1lID0gdGhpcy5kYXRhLnRpdGxlTmFtZTtcclxuICAgIHRoaXMuZGVwdE5vZGUgPSB0aGlzLmRhdGEudHJlZTtcclxuICAgIHRoaXMuY2xvc2VCdG5UZXh0ID0gdGhpcy5kYXRhLmNsb3NlQnRuVGV4dDtcclxuICAgIHRoaXMucGlja2VyQ2xhc3NOYW1lID0gdGhpcy5kYXRhLnBpY2tlckNsYXNzTmFtZTtcclxuICAgIHRoaXMuYmxUcmVlKHRoaXMuZGVwdE5vZGUsIG51bGwpO1xyXG4gICAgdGhpcy5zZXREZWZ1bHRWYWx1ZSgpO1xyXG4gICAgdGhpcy5ibFRyZWUodGhpcy5kZXB0Tm9kZSwgbnVsbCk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHsgLy8g54K55Ye76IOM5pmv6YGu572p5bGC5YWz6Zet6YCJ5oup5Zmo5pe2XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyZWUtcGlja2VyLXBhbmVsLWJnJylbMF0ucmVtb3ZlKCk7XHJcbiAgICAgIHRoaXMuY2xvc2VIYW5kbGUoKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIOWFs+mXrVxyXG4gIGNsb3NlSGFuZGxlKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5yZXN1bHRMaXN0KTtcclxuICB9XHJcblxyXG4gIC8vIOmHjee9rlxyXG4gIHJlc2V0SGFuZGxlKCkge1xyXG4gICAgdGhpcy5yZXN1bHRMaXN0ID0gW107XHJcbiAgICB0aGlzLmJsVHJlZSh0aGlzLmRlcHROb2RlLCBudWxsKTtcclxuICAgIHRoaXMuZGVwdExpc3QgPSB0aGlzLmRlcHROb2RlLmxlbmd0aCA+IDAgPyB0aGlzLmRlcHROb2RlIDogW11cclxuICAgIHRoaXMuY2FuY2VsU2VhcmNoSGFuZGxlKCk7XHJcbiAgfVxyXG5cclxuICAvLyDlm57mmL5cclxuICBzZXREZWZ1bHRWYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLmRhdGEudmFsdWUpIHtcclxuICAgICAgdGhpcy5yZXN1bHRMaXN0ID0gdGhpcy5mYW1pbHlUcmVlKHRoaXMuZGVwdE5vZGUsIHRoaXMuZGF0YS52YWx1ZSkucmV2ZXJzZSgpO1xyXG4gICAgICBpZiAodGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcign5Lyg5YWl5Y+C5pWw5Lit5Zue5pi+5pWw5o2u5a2X5q6177yIdmFsdWXvvInlgLzkuI3lrZjlnKjkuo7mlbDmja7mupDkuK3vvIHvvIHvvIEnKTtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5yZXN1bHRMaXN0W3RoaXMucmVzdWx0TGlzdC5sZW5ndGggLSAxXS5jaGlsZHJlbiAmJiB0aGlzLnJlc3VsdExpc3RbdGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCAtIDFdLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmRlcHRMaXN0ID0gdGhpcy5yZXN1bHRMaXN0W3RoaXMucmVzdWx0TGlzdC5sZW5ndGggLSAxXS5jaGlsZHJlbjtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnJlc3VsdExpc3QubGVuZ3RoID49IDIpIHtcclxuICAgICAgICB0aGlzLmRlcHRMaXN0ID0gdGhpcy5yZXN1bHRMaXN0W3RoaXMucmVzdWx0TGlzdC5sZW5ndGggLSAyXS5jaGlsZHJlbjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRlcHRMaXN0ID0gdGhpcy5kZXB0Tm9kZS5sZW5ndGggPiAwID8gdGhpcy5kZXB0Tm9kZSA6IFtdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRlcHRMaXN0ID0gdGhpcy5kZXB0Tm9kZS5sZW5ndGggPiAwID8gdGhpcy5kZXB0Tm9kZSA6IFtdXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDpgY3ljobmoJHoioLngrnvvIzorr7nva7niLZpZFxyXG4gIGJsVHJlZShkYXRhLCBpZCkge1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGl0ZW1bJ3BpZCddID0gaWQ7XHJcbiAgICAgICAgaXRlbVsnc2VsZWN0ZWQnXSA9IHRoaXMucmVzdWx0TGlzdC5zb21lKGl0ZW0yID0+IGl0ZW0yLnZhbHVlID09IGl0ZW0udmFsdWUpO1xyXG4gICAgICAgIHRoaXMuYmxUcmVlKGl0ZW0uY2hpbGRyZW4sIGl0ZW0udmFsdWUpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8g6YCS5b2S6I635Y+W5a2Q6IqC54K55omA5pyJ54i26IqC54K5XHJcbiAgZmFtaWx5VHJlZShhcnIxLCBpZCkge1xyXG4gICAgbGV0IHRlbXAgPSBbXVxyXG4gICAgY29uc3QgZm9yRm4gPSBmdW5jdGlvbiAoYXJyLCBpZCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBhcnJbaV1cclxuICAgICAgICBpZiAoaXRlbS52YWx1ZSA9PT0gaWQpIHtcclxuICAgICAgICAgIHRlbXAucHVzaChpdGVtKVxyXG4gICAgICAgICAgZm9yRm4oYXJyMSwgaXRlbS5waWQpXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICBmb3JGbihpdGVtLmNoaWxkcmVuLCBpZClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvckZuKGFycjEsIGlkKVxyXG4gICAgcmV0dXJuIHRlbXBcclxuICB9XHJcblxyXG4gIC8vIOaQnOe0olxyXG4gIHNlYXJjaEhhbmRsZSgpIHtcclxuICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gW107XHJcbiAgICBpZiAodGhpcy5zZWFyY2hWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IHRoaXMuZGVwdExpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbS50aXRsZS5pbmRleE9mKHRoaXMuc2VhcmNoVmFsdWUpICE9IC0xKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g5Y+W5raI5pCc57SiXHJcbiAgY2FuY2VsU2VhcmNoSGFuZGxlKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZXN1bHQgPSBbXTtcclxuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSBudWxsO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIOmAieaLqemDqOmXqFxyXG4gIHNlbGVjdERlcHRIYW5kbGUoZGVwdDogYW55KSB7XHJcbiAgICB0aGlzLmNhbmNlbFNlYXJjaEhhbmRsZSgpO1xyXG4gICAgY29uc3QgaGFzVGhpcyA9IHRoaXMucmVzdWx0TGlzdC5zb21lKGl0ZW0gPT4gaXRlbS52YWx1ZSA9PSBkZXB0LnZhbHVlKTtcclxuICAgIGlmICghaGFzVGhpcykge1xyXG4gICAgICBpZiAodGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBoYXNMYXN0SXRlbSA9IHRoaXMuZGVwdExpc3Quc29tZShpdGVtID0+IGl0ZW0udmFsdWUgPT0gdGhpcy5yZXN1bHRMaXN0W3RoaXMucmVzdWx0TGlzdC5sZW5ndGggLSAxXS52YWx1ZSlcclxuICAgICAgICBpZiAoaGFzTGFzdEl0ZW0pIHsgLy8g5Zyo5pyA5ZCO55qE5Y+25a2Q6IqC54K55LiK5pu05o2i6YOo6ZeoXHJcbiAgICAgICAgICB0aGlzLnJlc3VsdExpc3Quc3BsaWNlKHRoaXMucmVzdWx0TGlzdC5sZW5ndGggLSAxLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZXN1bHRMaXN0LnB1c2goZGVwdCk7XHJcbiAgICAgIHRoaXMuZGVwdExpc3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtWydzZWxlY3RlZCddID0gaXRlbS52YWx1ZSA9PSBkZXB0LnZhbHVlO1xyXG4gICAgICB9KVxyXG4gICAgICBpZiAoZGVwdC5jaGlsZHJlbiAmJiBkZXB0LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmRlcHRMaXN0ID0gZGVwdC5jaGlsZHJlbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLy8g5Zyo57uT5p6c5aSE5pu05pS56YOo6ZeoXHJcbiAgc2VsZWN0UmVzdWx0RGVwdEhhbmRsZShpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmIChpbmRleCAhPSB0aGlzLnJlc3VsdExpc3QubGVuZ3RoIC0gMSkge1xyXG4gICAgICB0aGlzLmRlcHRMaXN0ID0gaXRlbS5jaGlsZHJlbjtcclxuICAgICAgdGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCA9IGluZGV4ICsgMTtcclxuICAgICAgdGhpcy5ibFRyZWUodGhpcy5kZXB0TGlzdCwgaXRlbS52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRTY3JvbGxUb3AoKTtcclxuICB9XHJcblxyXG4gIC8vIOiuvue9ruaVsOaNrua6kOWIl+ihqOa7muWKqOadoee9rumhtlxyXG4gIHNldFNjcm9sbFRvcCgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0cmVlLXBpY2tlci1jb21wJylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3VsJylbMF0uc2Nyb2xsVG9wID0gMDtcclxuICAgIH0sIDApXHJcbiAgfVxyXG59XHJcbiJdfQ==