UNPKG

dbweb-common

Version:

用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上

414 lines 44.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { NestedTreeControl } from '@angular/cdk/tree'; import { Component, ElementRef, ViewChild } from '@angular/core'; import { MatTreeNestedDataSource } from '@angular/material/tree'; import { Router } from '@angular/router'; import { AuthloginService, CurrentService, ProjectService, RouteElementService, ElementsService } from 'dbweb-core'; import { portraitDefault } from '../../const'; import { MainNavService } from '../../services/main-nav.service'; import { TabsService } from '../tabs.service'; import { NavtreeService, NavHome } from './navtree.service'; var FileFlatNode = /** @class */ (function () { function FileFlatNode(expandable, filename, level, type) { this.expandable = expandable; this.filename = filename; this.level = level; this.type = type; } return FileFlatNode; }()); export { FileFlatNode }; if (false) { /** @type {?} */ FileFlatNode.prototype.expandable; /** @type {?} */ FileFlatNode.prototype.filename; /** @type {?} */ FileFlatNode.prototype.level; /** @type {?} */ FileFlatNode.prototype.type; } var HomeNavComponent = /** @class */ (function () { function HomeNavComponent(nav, current, eles, database, auth, routeEle, prj, navMain, router, tabs) { var _this = this; this.nav = nav; this.current = current; this.eles = eles; this.database = database; this.auth = auth; this.routeEle = routeEle; this.prj = prj; this.navMain = navMain; this.router = router; this.tabs = tabs; // 是正常导航还是简略导航 this.isMinNav = true; // 是否打开对话框 this.isOpenDialog = false; this.navItems = []; this._getChildren = (/** * @param {?} node * @return {?} */ function (node) { return node.children; }); this.isMinNav = this.navMain.getCurrent(); this.navMain.navMin.subscribe((/** * @param {?} v * @return {?} */ function (v) { _this.switchNavToMin(v); })); this.current.change$.subscribe((/** * @param {?} v * @return {?} */ function (v) { if (v && v.HeadPortrait) { _this.nav.portraitURL = v.portraitURL; } else { _this.nav.portraitURL = portraitDefault; } })); } /** * @param {?} v * @return {?} */ HomeNavComponent.prototype.switchNavToMin = /** * @param {?} v * @return {?} */ function (v) { var _this = this; if (v === this.isMinNav) { return; } setTimeout((/** * @return {?} */ function () { _this.isMinNav = v; }), 300); if (v) { this.maxNavContainer.nativeElement.style.width = '80px'; this.maxNavContainer.nativeElement.style.transition = 'all 0.3s'; } else { this.minNavContainer.nativeElement.style.width = '240px'; this.minNavContainer.nativeElement.style.transition = 'all 0.3s'; } }; /** * @return {?} */ HomeNavComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; this.nestedTreeControl = new NestedTreeControl(this._getChildren); this.nestedDataSource = new MatTreeNestedDataSource(); this.nestedDataSource.data = this.database.root.children; // this.buttonHight(); this.navItems = this.nestedDataSource.data; this.nav.subs.push(this.routeEle.currentElementListen.subscribe((/** * @param {?} e * @return {?} */ function (e) { // 偶尔会出现e未null的情况,原因未探查,等有时间再改造 if (e && e.element) { _this.currentNode = null; _this.obtainNode(e.element.Name, _this.navItems); if (_this.nav.activeNode.length !== 0 && _this.currentNode !== null) { _this.nav.activeNode.splice(0, _this.nav.activeNode.length); } if (_this.nav.openNodeCurrent.length !== 0 && _this.currentNode !== null) { _this.nav.openNodeCurrent.splice(0, _this.nav.openNodeCurrent.length); } if (_this.currentNode !== null) { _this.nav.recursionFuns(_this.currentNode); _this.nav.recursionFun(_this.currentNode); } } }))); this.nav.messages(); }; /** * @return {?} */ HomeNavComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { this.nav.subs.forEach((/** * @param {?} v * @return {?} */ function (v) { return v.unsubscribe(); })); }; /** * @return {?} */ HomeNavComponent.prototype.logout = /** * @return {?} */ function () { var _this = this; this.router .navigateByUrl('/login' + '/' + this.prj.apiNav()[0] + '/' + this.prj.apiNav()[1] + '/login') .then((/** * @return {?} */ function () { // 必须要在路由切换之后,因为只有切换后,才会在reuse中存在,才能clear _this.tabs.clear(); // 一定要先清除所有的tab页面,用于取消订阅curr的变化 _this.auth.logoutDefault().subscribe(); })); }; /** * @param {?} _ * @param {?} nodeData * @return {?} */ HomeNavComponent.prototype.hasNestedChild = /** * @param {?} _ * @param {?} nodeData * @return {?} */ function (_, nodeData) { return !!nodeData.children && nodeData.children.length > 0; }; // 对话框显示 // 对话框显示 /** * @return {?} */ HomeNavComponent.prototype.openDialog = // 对话框显示 /** * @return {?} */ function () { var _this = this; this.isOpenDialog = true; // this.unread = null; setTimeout((/** * @return {?} */ function () { _this.dialogScrolls(); }), 0); }; /** * @return {?} */ HomeNavComponent.prototype.closeDialog = /** * @return {?} */ function () { this.isOpenDialog = false; }; // 获取当前节点的node // 获取当前节点的node /** * @param {?} title * @param {?} navItems * @return {?} */ HomeNavComponent.prototype.obtainNode = // 获取当前节点的node /** * @param {?} title * @param {?} navItems * @return {?} */ function (title, navItems) { for (var i = 0; i <= navItems.length - 1; i++) { if (navItems[i].name === title) { this.currentNode = navItems[i]; } if (navItems[i].children !== undefined && this.currentNode == null) { this.obtainNode(title, navItems[i].children); } } }; /** * @return {?} */ HomeNavComponent.prototype.sendMessage = /** * @return {?} */ function () { var _this = this; if (this.nav.messageBody) { this.current.wsChat.next({ Creator: this.prj.Creator(), Project: this.prj.Name(), From: this.current.data.UserName, Addr: '', Time: null, Data: this.nav.messageBody }); this.nav.messageBody = ''; } setTimeout((/** * @return {?} */ function () { _this.dialogScrolls(); }), 0); }; // 输入框的回车事件 // 输入框的回车事件 /** * @param {?} e * @return {?} */ HomeNavComponent.prototype.keyDown = // 输入框的回车事件 /** * @param {?} e * @return {?} */ function (e) { /** @type {?} */ var ev = window.event || e; // 13是键盘上面固定的回车键 if (ev.keyCode === 13) { // 你要执行的方法 this.sendMessage(); } }; // 将聊天窗口滚动条滚至最下方 // 将聊天窗口滚动条滚至最下方 /** * @return {?} */ HomeNavComponent.prototype.dialogScrolls = // 将聊天窗口滚动条滚至最下方 /** * @return {?} */ function () { if (this.dialogScroll == null) { return; } this.nav.unread = null; this.dialogScroll.nativeElement.scrollTop = this.dialogScroll.nativeElement.scrollHeight; }; // 判断是否已阅读最新消息 // 判断是否已阅读最新消息 /** * @return {?} */ HomeNavComponent.prototype.isNews = // 判断是否已阅读最新消息 /** * @return {?} */ function () { /** @type {?} */ var isScrolledToBottom = this.dialogScroll.nativeElement.scrollHeight - this.dialogScroll.nativeElement.clientHeight <= this.dialogScroll.nativeElement.scrollTop + 1; if (isScrolledToBottom) { this.nav.unread = null; } }; HomeNavComponent.decorators = [ { type: Component, args: [{ selector: 'common-home-nav', template: "<div *ngIf=\"!isMinNav\" #maxNavContainer class=\"max-nav-container nav-container\">\r\n\t<div class=\"nav-top\">\r\n\t\t<div class=\"nav-title\">\r\n\t\t\t<div class=\"nav-title-logo\"><img [src]=\"prj.logoImageURL()\" /></div>\r\n\t\t\t<div class=\"nav-title-name\">\r\n\t\t\t\t<p\r\n\t\t\t\t\t[ngClass]=\"{'projectLabelMin': prj.projectLabelForShort.length>6}\">\r\n\t\t\t\t\t{{ prj.projectLabelForShort }}</p>\r\n\t\t\t\t<common-nav-selection-dept [isMinNav]=\"isMinNav\">\r\n\t\t\t\t</common-nav-selection-dept>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div (click)=\"switchNavToMin(!isMinNav)\" class=\"nav-switch\">\r\n\t\t\t<mat-icon svgIcon=\"chevron_left\"></mat-icon>\r\n\t\t</div>\r\n\t</div>\r\n\t<mat-divider class=\"nav-divider\"></mat-divider>\r\n\t<div class=\"\u5BFC\u822A\u6811\">\r\n\t\t<div class=\"slider slider-color\"></div>\r\n\t\t<mat-tree [dataSource]=\"nestedDataSource\" [treeControl]=\"nestedTreeControl\" class=\"example-tree\">\r\n\t\t\t<mat-tree-node *matTreeNodeDef=\"let node; index as i\" matTreeNodeToggle>\r\n\t\t\t\t<li (click)=\"nav.gradually(node)\" class=\"mat-tree-node\">\r\n\t\t\t\t\t<button [class.collapsed]=\"nav.activeNode.includes(node)\" [routerLink]=\"[node.url]\" mat-button\r\n\t\t\t\t\t\tclass=\"\u5BFC\u822A\u6309\u94AE\u60AC\u6D6E\u8272\">\r\n\t\t\t\t\t\t<mat-icon *ngIf=\"node.iconName\" class=\"menu-icon\" [svgIcon]=\"node.iconName\"></mat-icon>\r\n\t\t\t\t\t\t{{ node.title }}\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</li>\r\n\t\t\t</mat-tree-node>\r\n\t\t\t<mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasNestedChild; let i = index\" matTreeNodePadding>\r\n\t\t\t\t<div class=\"max-menu\" [class.\u5206\u652F\u80CC\u666F]=\"nav.openNodeCurrent.includes(node)\">\r\n\t\t\t\t\t<div *ngIf=\"node.level == 0\" [ngClass]=\"{\r\n\t\t\t\t\t\t\t'slider-color': nav.activeNode.includes(node),\r\n\t\t\t\t\t\t\t'max-left-slider': nav.activeNode.includes(node)\r\n\t\t\t\t\t\t}\"></div>\r\n\t\t\t\t\t<div class=\"mat-tree-node\">\r\n\t\t\t\t\t\t<button [class.collapsed]=\"nav.activeNode.includes(node)\" mat-button matTreeNodeToggle\r\n\t\t\t\t\t\t\t[attr.aria-label]=\"'toggle ' + node.title\" (click)=\"nav.openNode(node)\" class=\"\u5BFC\u822A\u6309\u94AE\u60AC\u6D6E\u8272\">\r\n\t\t\t\t\t\t\t<mat-icon *ngIf=\"node.level == 0\" svgIcon=\"{{ node.iconName }}\">\r\n\t\t\t\t\t\t\t</mat-icon>\r\n\t\t\t\t\t\t\t{{ node.title }}\r\n\t\t\t\t\t\t\t<mat-icon *ngIf=\"node.level != 0\" class=\"mat-icon-rtl-mirror\" svgIcon=\"{{\r\n\t\t\t\t\t\t\t\t\tnav.openNodeCurrent.includes(node)\r\n\t\t\t\t\t\t\t\t\t\t? 'expand_more'\r\n\t\t\t\t\t\t\t\t\t\t: 'chevron_right'\r\n\t\t\t\t\t\t\t\t}}\">\r\n\t\t\t\t\t\t\t</mat-icon>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<ul [class.example-tree-invisible]=\"\r\n\t\t\t\t\t\t\t!nav.openNodeCurrent.includes(node)\r\n\t\t\t\t\t\t\">\r\n\t\t\t\t\t\t<ng-container matTreeNodeOutlet></ng-container>\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t</div>\r\n\t\t\t</mat-nested-tree-node>\r\n\t\t</mat-tree>\r\n\t</div>\r\n\t<div class=\"nav-bottom\">\r\n\t\t<mat-divider class=\"nav-divider\"></mat-divider>\r\n\t\t<a class=\"nav-bottom-photo\" [routerLink]=\"eles.frontElementURL('userinfo')\">\r\n\t\t\t<div><img [src]=\"nav.portraitURL\" /></div>\r\n\t\t\t<p class=\"\u6635\u79F0\">{{ current.data.NickName || current.data.UserName}}</p>\r\n\t\t</a>\r\n\t\t<div class=\"nav-bottom-icon\">\r\n\t\t\t<div (click)=\"openDialog()\">\r\n\t\t\t\t<mat-icon matBadge=\"{{ nav.unread }}\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" svgIcon=\"mail\">\r\n\t\t\t\t</mat-icon>\r\n\t\t\t\t<p>\u6D88\u606F</p>\r\n\t\t\t</div>\r\n\t\t\t<div (click)=\"logout()\">\r\n\t\t\t\t<mat-icon svgIcon=\"forward\"></mat-icon>\r\n\t\t\t\t<p>\u9000\u51FA</p>\r\n\t\t\t</div>\r\n\t\t\t<div>\r\n\t\t\t\t<mat-icon svgIcon=\"help\"></mat-icon>\r\n\t\t\t\t<p>\u5E2E\u52A9</p>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div *ngIf=\"isOpenDialog\" class=\"\u5BF9\u8BDD\u6846\">\r\n\t\t<div class=\"\u5BF9\u8BDD\u6846\u4E0A\u90E8\">\r\n\t\t\t<mat-icon (click)=\"closeDialog()\" svgIcon=\"expand_more\"></mat-icon>\r\n\t\t</div>\r\n\t\t<div #dialogScroll class=\"\u5BF9\u8BDD\u6846\u5185\u5BB9\">\r\n\t\t\t<p class=\"\u663E\u793A\u5BF9\u8BDD\" *ngFor=\"let message of nav.chatMessages\">\r\n\t\t\t\t[<span class=\"\u540D\u5B57\">{{ message.From }}</span>]\r\n\t\t\t\t<span class=\"\u65F6\u95F4\">{{\r\n\t\t\t\t\tmessage.Time | date: \"yyyy-MM-dd HH:mm:ss\"\r\n\t\t\t\t}}</span>\r\n\t\t\t\t<span class=\"\u5185\u5BB9\">{{ message.Data }}</span>\r\n\t\t\t</p>\r\n\t\t</div>\r\n\t\t<div class=\"\u5BF9\u8BDD\u6846\u5E95\u90E8\">\r\n\t\t\t<input mat-input class=\"\u8F93\u5165\u6846\" [(ngModel)]=\"nav.messageBody\" (keydown)=\"keyDown($event)\"\r\n\t\t\t\tplaceholder=\"\u8F93\u5165\u5185\u5BB9,\u56DE\u8F66\u53D1\u9001\" />\r\n\t\t\t<mat-icon (click)=\"sendMessage()\" svgIcon=\"send\"></mat-icon>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n<div *ngIf=\"isMinNav\" #minNavContainer class=\"min-nav-container nav-container\">\r\n\t<div class=\"min-logo\"><img [src]=\"prj.logoImageURL()\" /></div>\r\n\t<div>\r\n\t\t<common-nav-selection-dept [isMinNav]=\"isMinNav\">\r\n\t\t</common-nav-selection-dept>\r\n\t\t<mat-divider class=\"nav-divider\"></mat-divider>\r\n\t</div>\r\n\t<div class=\"\u5BFC\u822A\u6811\u5C0F\">\r\n\t\t<div class=\"min-slider slider-color\"></div>\r\n\t\t<div class=\"\u83DC\u5355\u9879\" *ngFor=\"let item of navItems; index as i\" [class.\u5F53\u524D\u83DC\u5355\u9879]=\"nav.activeNode.includes(item)\">\r\n\t\t\t<div [ngClass]=\"{\r\n\t\t\t\t\t'slider-color': nav.activeNode.includes(item),\r\n\t\t\t\t\t'left-slider': nav.activeNode.includes(item)\r\n\t\t\t\t}\"></div>\r\n\t\t\t<!-- Handle branch node buttons here -->\r\n\t\t\t<div *ngIf=\"item.children && item.children.length > 0\">\r\n\t\t\t\t<button mat-button class=\"\u5BFC\u822A\u6309\u94AE\u60AC\u6D6E\u8272\" [class.collapsed]=\"nav.activeNode.includes(item)\"\r\n\t\t\t\t\t[matMenuTriggerFor]=\"menu.childMenu\">\r\n\t\t\t\t\t<mat-icon svgIcon=\"{{ item.iconName }}\"></mat-icon>\r\n\t\t\t\t\t{{ item.title }}\r\n\t\t\t\t</button>\r\n\t\t\t\t<common-menu [class.treebranch]=\"true\" #menu [items]=\"item.children\" [activeNode]=\"nav.activeNode\"\r\n\t\t\t\t\t(fromChild)=\"nav.fromChildFunc($event)\"></common-menu>\r\n\t\t\t</div>\r\n\t\t\t<!-- Leaf node buttons here -->\r\n\t\t\t<div *ngIf=\"!item.children || item.children.length === 0\">\r\n\t\t\t\t<button mat-button class=\"\u5BFC\u822A\u6309\u94AE\u60AC\u6D6E\u8272\">\r\n\t\t\t\t\t<mat-icon svgIcon=\"{{ item.iconName }}\"></mat-icon>\r\n\t\t\t\t\t{{ item.title }}\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"\u5BFC\u822A\u5E95\u90E8\u5C0F\">\r\n\t\t<mat-divider class=\"nav-divider\"></mat-divider>\r\n\t\t<button (click)=\"switchNavToMin(!isMinNav)\" mat-button>\r\n\t\t\t<mat-icon svgIcon=\"chevron_right\"></mat-icon>\u5C55\u5F00\r\n\t\t</button>\r\n\t\t<a class=\"nav-bottom-photo\" [routerLink]=\"eles.frontElementURL('userinfo')\">\r\n\t\t\t<div class=\"nav-bottom-photo-img\"><img [src]=\"nav.portraitURL\" /></div>\r\n\t\t\t<p class=\"\u6635\u79F0\">{{ current.data.NickName||current.data.UserName }}</p>\r\n\t\t</a>\r\n\t</div>\r\n</div>", providers: [NavtreeService, NavHome], styles: ["@charset \"UTF-8\";.max-nav-container{width:240px;height:100%;margin:0;padding:0;display:flex;flex-direction:column}.nav-top{width:100%;height:72px;display:flex;align-items:center;position:relative}.nav-top .nav-title{width:216px;height:48px;padding:0 8px 0 16px;display:flex}.nav-top .nav-title-logo{width:48px;height:48px}.nav-top .nav-title-logo img{width:100%;height:100%}.nav-top .nav-title-name{flex-grow:1;vertical-align:top;margin-left:8px;letter-spacing:1px}.nav-top .nav-title-name p{font-size:18px;width:100%;font-weight:700;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-top .nav-title-name .projectLabelMin{font-size:14px}.nav-top .nav-switch{width:32px;height:32px;border-radius:16px 0 0 16px;background-color:rgba(255,255,255,.2);position:absolute;right:0;bottom:4px}.nav-top .nav-switch .mat-icon{margin:4px;cursor:pointer}.nav-divider{z-index:2}.nav-menu-item{font-size:14px;height:32px;line-height:32px}.nav-bottom{margin:0;width:100%;height:98px}.nav-bottom .nav-bottom-photo{margin:16px 8px 0 12px}.nav-bottom .nav-bottom-icon{float:right;width:116px;height:46px;margin:28px 19px 0 0;display:flex;flex-direction:row;justify-content:space-between}.nav-bottom .nav-bottom-icon div{height:100%;cursor:pointer}.nav-bottom .nav-bottom-icon div p{margin:0;font-size:12px;line-height:18px;opacity:.6}.nav-bottom-photo{width:80px;display:inline-block;text-align:center}.nav-bottom-photo div{width:40px;height:40px;border-radius:50%;margin:0 auto;background:url(/front/assets/home/portrait_default.png);overflow:hidden}.nav-bottom-photo div img{width:100%;height:100%}.nav-bottom-photo p{font-size:12px;margin-top:5px;text-align:center;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.example-tree-invisible{display:none}.\u5BFC\u822A\u6811{flex-grow:1;overflow:auto;font-size:20px}.\u5BFC\u822A\u6811 .slider{width:2px;height:48px;display:none}.\u5BFC\u822A\u6811::-webkit-scrollbar-track{background-color:rgba(255,255,255,.06)}.\u5BFC\u822A\u6811::-webkit-scrollbar-track:hover{background-color:rgba(255,255,255,.12)}.\u5BFC\u822A\u6811::-webkit-scrollbar-thumb{background-color:#5e5e5e}.\u5BFC\u822A\u6811::-webkit-scrollbar-thumb:hover{background-color:silver}.\u5BFC\u822A\u6811 .example-tree li,.\u5BFC\u822A\u6811 .example-tree ul{margin-top:0;margin-bottom:0;list-style-type:none}.\u5BFC\u822A\u6811 .example-tree ul{padding-left:20px}.\u5BFC\u822A\u6811 .max-left-slider{width:2px;height:48px;float:left}.\u5BFC\u822A\u6811 .mat-tree-node button{font-size:16px}.\u5BFC\u822A\u6811 .\u7B2C\u4E09\u7EA7\u6ED1\u5757{width:2px;height:48px;background-color:rgba(255,255,255,.6);float:left}.\u5BFC\u822A\u6811 .mat-icon-rtl-mirror{float:right;margin:8px}.\u5BF9\u8BDD\u6846{width:240px;height:328px;background-color:#121212;position:absolute;left:0;bottom:2px;z-index:2;display:flex;flex-direction:column}.\u5BF9\u8BDD\u6846 .mat-icon{float:right;cursor:pointer}.\u5BF9\u8BDD\u6846\u5E95\u90E8 .\u8F93\u5165\u6846{width:184px;height:32px;box-sizing:border-box;border-radius:16px;padding:0 15px;margin:0 8px;line-height:30px;background-color:rgba(255,255,255,.36);border:0;outline:0;color:rgba(0,0,0,.87)}.\u5BF9\u8BDD\u6846\u5E95\u90E8 .\u8F93\u5165\u6846::-webkit-input-placeholder{color:rgba(0,0,0,.38)}.\u5BF9\u8BDD\u6846\u5E95\u90E8 .mat-icon{margin:4px 8px 4px 0;color:#ff9f1c}.\u5BF9\u8BDD\u6846\u5185\u5BB9{flex-grow:1;overflow-y:auto}.\u5BF9\u8BDD\u6846\u5185\u5BB9::-webkit-scrollbar{width:4px;height:4px;border-radius:2px}.\u5BF9\u8BDD\u6846\u5185\u5BB9::-webkit-scrollbar-track{border-radius:2px;background-color:rgba(255,255,255,.12)}.\u5BF9\u8BDD\u6846\u5185\u5BB9::-webkit-scrollbar-thumb{border-radius:2px;box-shadow:inset 0 2px 6px rgba(0,0,0,.3);background-color:#919191}.\u5BF9\u8BDD\u6846\u5185\u5BB9 .\u663E\u793A\u5BF9\u8BDD{width:90%;padding:0 5%;font-size:12px;color:#7ed321}.\u5BF9\u8BDD\u6846\u5185\u5BB9 .\u663E\u793A\u5BF9\u8BDD .\u65F6\u95F4{font-size:12px;color:rgba(255,255,255,.38);float:right;vertical-align:bottom}.\u5BF9\u8BDD\u6846\u5185\u5BB9 .\u663E\u793A\u5BF9\u8BDD .\u540D\u5B57{display:inline-block;max-width:108px;font-size:12px;color:#7ed321;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\u5BF9\u8BDD\u6846\u5185\u5BB9 .\u663E\u793A\u5BF9\u8BDD .\u5185\u5BB9{display:block;font-size:12px;color:#fff;flex-grow:1;letter-spacing:.75px}.min-nav-container{width:80px;height:100%;margin:0;padding:12px 0 0;box-sizing:border-box;display:flex;flex-direction:column}.min-logo{width:40px;height:40px;margin:0 auto}.min-logo img{width:100%;height:100%}.\u5BFC\u822A\u6811\u5C0F{flex-grow:1;overflow-y:auto;overflow-x:hidden}.\u5BFC\u822A\u6811\u5C0F .min-slider{width:2px;height:80px;display:none}.\u5BFC\u822A\u6811\u5C0F .left-slider{width:2px;height:80px;position:absolute;left:0;top:0;z-index:99}.\u5BFC\u822A\u6811\u5C0F .mat-button{width:78px;text-align:center;padding:10px 0 10px 2px;margin:0}.\u5BFC\u822A\u6811\u5C0F .mat-icon{margin:0 auto;text-align:center;display:block}.\u5BFC\u822A\u6811\u5C0F .\u83DC\u5355\u9879{margin:4px 0;padding:0;height:80px;position:relative}.\u5BFC\u822A\u6811\u5C0F .\u5F53\u524D\u83DC\u5355\u9879{background-color:#252525}.\u5BFC\u822A\u5E95\u90E8\u5C0F{width:80px;flex-shrink:0;text-align:center;font-size:12px}.\u5BFC\u822A\u5E95\u90E8\u5C0F p{margin:8px 0}.\u5BFC\u822A\u5E95\u90E8\u5C0F .mat-icon{display:block;text-align:center;margin:0 auto;color:#fff}.\u5BFC\u822A\u5E95\u90E8\u5C0F button{width:80px;margin:8px 0 24px;font-size:12px;color:rgba(255,255,255,.6)}.\u5BFC\u822A\u5E95\u90E8\u5C0F .nav-bottom-photo-img{width:24px;height:24px}.treebranch{width:0}.\u5BFC\u822A\u6309\u94AE\u60AC\u6D6E\u8272::ng-deep .mat-button-focus-overlay{background-color:#fff}"] }] } ]; /** @nocollapse */ HomeNavComponent.ctorParameters = function () { return [ { type: NavHome }, { type: CurrentService }, { type: ElementsService }, { type: NavtreeService }, { type: AuthloginService }, { type: RouteElementService }, { type: ProjectService }, { type: MainNavService }, { type: Router }, { type: TabsService } ]; }; HomeNavComponent.propDecorators = { dialogScroll: [{ type: ViewChild, args: ['dialogScroll', { static: false },] }], maxNavContainer: [{ type: ViewChild, args: ['maxNavContainer', { static: false },] }], minNavContainer: [{ type: ViewChild, args: ['minNavContainer', { static: false },] }] }; return HomeNavComponent; }()); export { HomeNavComponent }; if (false) { /** @type {?} */ HomeNavComponent.prototype.dialogScroll; /** @type {?} */ HomeNavComponent.prototype.maxNavContainer; /** @type {?} */ HomeNavComponent.prototype.minNavContainer; /** @type {?} */ HomeNavComponent.prototype.isMinNav; /** @type {?} */ HomeNavComponent.prototype.isOpenDialog; /** @type {?} */ HomeNavComponent.prototype.nestedTreeControl; /** @type {?} */ HomeNavComponent.prototype.nestedDataSource; /** @type {?} */ HomeNavComponent.prototype.treeControl; /** @type {?} */ HomeNavComponent.prototype.treeFlattener; /** @type {?} */ HomeNavComponent.prototype.dataSource; /** @type {?} */ HomeNavComponent.prototype.currentNode; /** @type {?} */ HomeNavComponent.prototype.navItems; /** @type {?} */ HomeNavComponent.prototype.chatObservable; /** @type {?} */ HomeNavComponent.prototype._getChildren; /** @type {?} */ HomeNavComponent.prototype.nav; /** @type {?} */ HomeNavComponent.prototype.current; /** @type {?} */ HomeNavComponent.prototype.eles; /** @type {?} */ HomeNavComponent.prototype.database; /** * @type {?} * @private */ HomeNavComponent.prototype.auth; /** * @type {?} * @private */ HomeNavComponent.prototype.routeEle; /** @type {?} */ HomeNavComponent.prototype.prj; /** @type {?} */ HomeNavComponent.prototype.navMain; /** * @type {?} * @private */ HomeNavComponent.prototype.router; /** * @type {?} * @private */ HomeNavComponent.prototype.tabs; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZGJ3ZWItY29tbW9uLyIsInNvdXJjZXMiOlsibGliL2hvbWUvbmF2LWl0ZW1uL2hvbWUtbmF2LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUEyQyx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQ04sZ0JBQWdCLEVBRWhCLGNBQWMsRUFDZCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixNQUFNLFlBQVksQ0FBQztBQUVwQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1RDtJQUNDLHNCQUFtQixVQUFtQixFQUFTLFFBQWdCLEVBQVMsS0FBYSxFQUFTLElBQVM7UUFBcEYsZUFBVSxHQUFWLFVBQVUsQ0FBUztRQUFTLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBSztJQUFHLENBQUM7SUFDNUcsbUJBQUM7QUFBRCxDQUFDLEFBRkQsSUFFQzs7OztJQURZLGtDQUEwQjs7SUFBRSxnQ0FBdUI7O0lBQUUsNkJBQW9COztJQUFFLDRCQUFnQjs7QUFFeEc7SUEwQkMsMEJBQ1EsR0FBWSxF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QVp0QixnQkFBZ0I7Z0JBSWhCLG1CQUFtQjtnQkFEbkIsY0FBYztnQkFNTixjQUFjO2dCQVhkLE1BQU07Z0JBWU4sV0FBVzs7OytCQWNsQixTQUFTLFNBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtrQ0FFM0MsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtrQ0FFOUMsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7SUFxS2hELHVCQUFDO0NBQUEsQUFoTEQsSUFnTEM7U0ExS1ksZ0JBQWdCOzs7SUFDNUIsd0NBQ3lDOztJQUN6QywyQ0FDNEM7O0lBQzVDLDJDQUM0Qzs7SUFFNUMsb0NBQWdCOztJQUVoQix3Q0FBcUI7O0lBRXJCLDZDQUE4Qzs7SUFDOUMsNENBQW1EOztJQUNuRCx1Q0FBMkM7O0lBQzNDLHlDQUF1RDs7SUFDdkQsc0NBQXlEOztJQUN6RCx1Q0FBcUI7O0lBQ3JCLG9DQUF5Qjs7SUFDekIsMENBQXdDOztJQWtGeEMsd0NBQWdEOztJQWhGL0MsK0JBQW1COztJQUNuQixtQ0FBOEI7O0lBQzlCLGdDQUE0Qjs7SUFDNUIsb0NBQStCOzs7OztJQUMvQixnQ0FBOEI7Ozs7O0lBQzlCLG9DQUFxQzs7SUFDckMsK0JBQTBCOztJQUMxQixtQ0FBOEI7Ozs7O0lBQzlCLGtDQUFzQjs7Ozs7SUFDdEIsZ0NBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhdFRyZWVDb250cm9sLCBOZXN0ZWRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFRyZWVGbGF0RGF0YVNvdXJjZSwgTWF0VHJlZUZsYXR0ZW5lciwgTWF0VHJlZU5lc3RlZERhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuXHRBdXRobG9naW5TZXJ2aWNlLFxyXG5cdENoYXRNZXNzYWdlLFxyXG5cdEN1cnJlbnRTZXJ2aWNlLFxyXG5cdFByb2plY3RTZXJ2aWNlLFxyXG5cdFJvdXRlRWxlbWVudFNlcnZpY2UsXHJcblx0RWxlbWVudHNTZXJ2aWNlXHJcbn0gZnJvbSAnZGJ3ZWItY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBwb3J0cmFpdERlZmF1bHQgfSBmcm9tICcuLi8uLi9jb25zdCc7XHJcbmltcG9ydCB7IE1haW5OYXZTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpbi1uYXYuc2VydmljZSc7XHJcbmltcG9ydCB7IFRhYnNTZXJ2aWNlIH0gZnJvbSAnLi4vdGFicy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2SXRlbSB9IGZyb20gJy4vbmF2LWl0ZW0nO1xyXG5pbXBvcnQgeyBOYXZ0cmVlU2VydmljZSwgTmF2SG9tZSB9IGZyb20gJy4vbmF2dHJlZS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWxlRmxhdE5vZGUge1xyXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyBleHBhbmRhYmxlOiBib29sZWFuLCBwdWJsaWMgZmlsZW5hbWU6IHN0cmluZywgcHVibGljIGxldmVsOiBudW1iZXIsIHB1YmxpYyB0eXBlOiBhbnkpIHt9XHJcbn1cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdjb21tb24taG9tZS1uYXYnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9ob21lLW5hdi5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vaG9tZS1uYXYuY29tcG9uZW50LnNjc3MnXSxcclxuXHRwcm92aWRlcnM6IFtOYXZ0cmVlU2VydmljZSwgTmF2SG9tZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEhvbWVOYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblx0QFZpZXdDaGlsZCgnZGlhbG9nU2Nyb2xsJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0ZGlhbG9nU2Nyb2xsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHRAVmlld0NoaWxkKCdtYXhOYXZDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRtYXhOYXZDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cdEBWaWV3Q2hpbGQoJ21pbk5hdkNvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdG1pbk5hdkNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblx0Ly8g5piv5q2j5bi45a+86Iiq6L+Y5piv566A55Wl5a+86IiqXHJcblx0aXNNaW5OYXYgPSB0cnVlO1xyXG5cdC8vIOaYr+WQpuaJk+W8gOWvueivneahhlxyXG5cdGlzT3BlbkRpYWxvZyA9IGZhbHNlO1xyXG5cclxuXHRuZXN0ZWRUcmVlQ29udHJvbDogTmVzdGVkVHJlZUNvbnRyb2w8TmF2SXRlbT47XHJcblx0bmVzdGVkRGF0YVNvdXJjZTogTWF0VHJlZU5lc3RlZERhdGFTb3VyY2U8TmF2SXRlbT47XHJcblx0dHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxGaWxlRmxhdE5vZGU+O1xyXG5cdHRyZWVGbGF0dGVuZXI6IE1hdFRyZWVGbGF0dGVuZXI8TmF2SXRlbSwgRmlsZUZsYXROb2RlPjtcclxuXHRkYXRhU291cmNlOiBNYXRUcmVlRmxhdERhdGFTb3VyY2U8TmF2SXRlbSwgRmlsZUZsYXROb2RlPjtcclxuXHRjdXJyZW50Tm9kZTogTmF2SXRlbTtcclxuXHRuYXZJdGVtczogTmF2SXRlbVtdID0gW107XHJcblx0Y2hhdE9ic2VydmFibGU6IE9ic2VydmFibGU8Q2hhdE1lc3NhZ2U+O1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHVibGljIG5hdjogTmF2SG9tZSxcclxuXHRcdHB1YmxpYyBjdXJyZW50OiBDdXJyZW50U2VydmljZSxcclxuXHRcdHB1YmxpYyBlbGVzOiBFbGVtZW50c1NlcnZpY2UsXHJcblx0XHRwdWJsaWMgZGF0YWJhc2U6IE5hdnRyZWVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBhdXRoOiBBdXRobG9naW5TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByb3V0ZUVsZTogUm91dGVFbGVtZW50U2VydmljZSxcclxuXHRcdHB1YmxpYyBwcmo6IFByb2plY3RTZXJ2aWNlLFxyXG5cdFx0cHVibGljIG5hdk1haW46IE1haW5OYXZTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuXHRcdHByaXZhdGUgdGFiczogVGFic1NlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMuaXNNaW5OYXYgPSB0aGlzLm5hdk1haW4uZ2V0Q3VycmVudCgpO1xyXG5cdFx0dGhpcy5uYXZNYWluLm5hdk1pbi5zdWJzY3JpYmUodiA9PiB7XHJcblx0XHRcdHRoaXMuc3dpdGNoTmF2VG9NaW4odik7XHJcblx0XHR9KTtcclxuXHRcdHRoaXMuY3VycmVudC5jaGFuZ2UkLnN1YnNjcmliZSh2ID0+IHtcclxuXHRcdFx0aWYgKHYgJiYgdi5IZWFkUG9ydHJhaXQpIHtcclxuXHRcdFx0XHR0aGlzLm5hdi5wb3J0cmFpdFVSTCA9IHYucG9ydHJhaXRVUkw7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5uYXYucG9ydHJhaXRVUkwgPSBwb3J0cmFpdERlZmF1bHQ7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHRzd2l0Y2hOYXZUb01pbih2OiBib29sZWFuKSB7XHJcblx0XHRpZiAodiA9PT0gdGhpcy5pc01pbk5hdikge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dGhpcy5pc01pbk5hdiA9IHY7XHJcblx0XHR9LCAzMDApO1xyXG5cdFx0aWYgKHYpIHtcclxuXHRcdFx0dGhpcy5tYXhOYXZDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9ICc4MHB4JztcclxuXHRcdFx0dGhpcy5tYXhOYXZDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2l0aW9uID0gJ2FsbCAwLjNzJztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMubWluTmF2Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSAnMjQwcHgnO1xyXG5cdFx0XHR0aGlzLm1pbk5hdkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zaXRpb24gPSAnYWxsIDAuM3MnO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRuZ09uSW5pdCgpIHtcclxuXHRcdHRoaXMubmVzdGVkVHJlZUNvbnRyb2wgPSBuZXcgTmVzdGVkVHJlZUNvbnRyb2w8TmF2SXRlbT4odGhpcy5fZ2V0Q2hpbGRyZW4pO1xyXG5cdFx0dGhpcy5uZXN0ZWREYXRhU291cmNlID0gbmV3IE1hdFRyZWVOZXN0ZWREYXRhU291cmNlKCk7XHJcblx0XHR0aGlzLm5lc3RlZERhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YWJhc2Uucm9vdC5jaGlsZHJlbjtcclxuXHRcdC8vIHRoaXMuYnV0dG9uSGlnaHQoKTtcclxuXHRcdHRoaXMubmF2SXRlbXMgPSB0aGlzLm5lc3RlZERhdGFTb3VyY2UuZGF0YTtcclxuXHRcdHRoaXMubmF2LnN1YnMucHVzaChcclxuXHRcdFx0dGhpcy5yb3V0ZUVsZS5jdXJyZW50RWxlbWVudExpc3Rlbi5zdWJzY3JpYmUoZSA9PiB7XHJcblx0XHRcdFx0Ly8g5YG25bCU5Lya5Ye6546wZeacqm51bGznmoTmg4XlhrXvvIzljp/lm6DmnKrmjqLmn6XvvIznrYnmnInml7bpl7Tlho3mlLnpgKBcclxuXHRcdFx0XHRpZiAoZSAmJiBlLmVsZW1lbnQpIHtcclxuXHRcdFx0XHRcdHRoaXMuY3VycmVudE5vZGUgPSBudWxsO1xyXG5cdFx0XHRcdFx0dGhpcy5vYnRhaW5Ob2RlKGUuZWxlbWVudC5OYW1lLCB0aGlzLm5hdkl0ZW1zKTtcclxuXHRcdFx0XHRcdGlmICh0aGlzLm5hdi5hY3RpdmVOb2RlLmxlbmd0aCAhPT0gMCAmJiB0aGlzLmN1cnJlbnROb2RlICE9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubmF2LmFjdGl2ZU5vZGUuc3BsaWNlKDAsIHRoaXMubmF2LmFjdGl2ZU5vZGUubGVuZ3RoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh0aGlzLm5hdi5vcGVuTm9kZUN1cnJlbnQubGVuZ3RoICE9PSAwICYmIHRoaXMuY3VycmVudE5vZGUgIT09IG51bGwpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5uYXYub3Blbk5vZGVDdXJyZW50LnNwbGljZSgwLCB0aGlzLm5hdi5vcGVuTm9kZUN1cnJlbnQubGVuZ3RoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh0aGlzLmN1cnJlbnROb2RlICE9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubmF2LnJlY3Vyc2lvbkZ1bnModGhpcy5jdXJyZW50Tm9kZSk7XHJcblx0XHRcdFx0XHRcdHRoaXMubmF2LnJlY3Vyc2lvbkZ1bih0aGlzLmN1cnJlbnROb2RlKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cdFx0dGhpcy5uYXYubWVzc2FnZXMoKTtcclxuXHR9XHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHR0aGlzLm5hdi5zdWJzLmZvckVhY2godiA9PiB2LnVuc3Vic2NyaWJlKCkpO1xyXG5cdH1cclxuXHRsb2dvdXQoKSB7XHJcblx0XHR0aGlzLnJvdXRlclxyXG5cdFx0XHQubmF2aWdhdGVCeVVybCgnL2xvZ2luJyArICcvJyArIHRoaXMucHJqLmFwaU5hdigpWzBdICsgJy8nICsgdGhpcy5wcmouYXBpTmF2KClbMV0gKyAnL2xvZ2luJylcclxuXHRcdFx0LnRoZW4oKCkgPT4ge1xyXG5cdFx0XHRcdC8vIOW/hemhu+imgeWcqOi3r+eUseWIh+aNouS5i+WQju+8jOWboOS4uuWPquacieWIh+aNouWQju+8jOaJjeS8muWcqHJldXNl5Lit5a2Y5Zyo77yM5omN6IO9Y2xlYXJcclxuXHRcdFx0XHR0aGlzLnRhYnMuY2xlYXIoKTsgLy8g5LiA5a6a6KaB5YWI5riF6Zmk5omA5pyJ55qEdGFi6aG16Z2i77yM55So5LqO5Y+W5raI6K6i6ZiFY3VycueahOWPmOWMllxyXG5cdFx0XHRcdHRoaXMuYXV0aC5sb2dvdXREZWZhdWx0KCkuc3Vic2NyaWJlKCk7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHRoYXNOZXN0ZWRDaGlsZChfOiBudW1iZXIsIG5vZGVEYXRhOiBOYXZJdGVtKSB7XHJcblx0XHRyZXR1cm4gISFub2RlRGF0YS5jaGlsZHJlbiAmJiBub2RlRGF0YS5jaGlsZHJlbi5sZW5ndGggPiAwO1xyXG5cdH1cclxuXHRfZ2V0Q2hpbGRyZW4gPSAobm9kZTogTmF2SXRlbSkgPT4gbm9kZS5jaGlsZHJlbjtcclxuXHQvLyDlr7nor53moYbmmL7npLpcclxuXHRvcGVuRGlhbG9nKCkge1xyXG5cdFx0dGhpcy5pc09wZW5EaWFsb2cgPSB0cnVlO1xyXG5cdFx0Ly8gdGhpcy51bnJlYWQgPSBudWxsO1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuZGlhbG9nU2Nyb2xscygpO1xyXG5cdFx0fSwgMCk7XHJcblx0fVxyXG5cdGNsb3NlRGlhbG9nKCkge1xyXG5cdFx0dGhpcy5pc09wZW5EaWFsb2cgPSBmYWxzZTtcclxuXHR9XHJcblxyXG5cdC8vIOiOt+WPluW9k+WJjeiKgueCueeahG5vZGVcclxuXHRvYnRhaW5Ob2RlKHRpdGxlOiBzdHJpbmcsIG5hdkl0ZW1zOiBOYXZJdGVtW10pIHtcclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDw9IG5hdkl0ZW1zLmxlbmd0aCAtIDE7IGkrKykge1xyXG5cdFx0XHRpZiAobmF2SXRlbXNbaV0ubmFtZSA9PT0gdGl0bGUpIHtcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnROb2RlID0gbmF2SXRlbXNbaV07XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKG5hdkl0ZW1zW2ldLmNoaWxkcmVuICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jdXJyZW50Tm9kZSA9PSBudWxsKSB7XHJcblx0XHRcdFx0dGhpcy5vYnRhaW5Ob2RlKHRpdGxlLCBuYXZJdGVtc1tpXS5jaGlsZHJlbik7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHNlbmRNZXNzYWdlKCkge1xyXG5cdFx0aWYgKHRoaXMubmF2Lm1lc3NhZ2VCb2R5KSB7XHJcblx0XHRcdHRoaXMuY3VycmVudC53c0NoYXQubmV4dCh7XHJcblx0XHRcdFx0Q3JlYXRvcjogdGhpcy5wcmouQ3JlYXRvcigpLFxyXG5cdFx0XHRcdFByb2plY3Q6IHRoaXMucHJqLk5hbWUoKSxcclxuXHRcdFx0XHRGcm9tOiB0aGlzLmN1cnJlbnQuZGF0YS5Vc2VyTmFtZSxcclxuXHRcdFx0XHRBZGRyOiAnJyxcclxuXHRcdFx0XHRUaW1lOiBudWxsLFxyXG5cdFx0XHRcdERhdGE6IHRoaXMubmF2Lm1lc3NhZ2VCb2R5XHJcblx0XHRcdH0pO1xyXG5cdFx0XHR0aGlzLm5hdi5tZXNzYWdlQm9keSA9ICcnO1xyXG5cdFx0fVxyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuZGlhbG9nU2Nyb2xscygpO1xyXG5cdFx0fSwgMCk7XHJcblx0fVxyXG5cdC8vIOi+k+WFpeahhueahOWbnui9puS6i+S7tlxyXG5cdGtleURvd24oZTogYW55KSB7XHJcblx0XHRjb25zdCBldiA9IHdpbmRvdy5ldmVudCB8fCBlO1xyXG5cclxuXHRcdC8vIDEz5piv6ZSu55uY5LiK6Z2i5Zu65a6a55qE5Zue6L2m6ZSuXHJcblx0XHRpZiAoZXYua2V5Q29kZSA9PT0gMTMpIHtcclxuXHRcdFx0Ly8g5L2g6KaB5omn6KGM55qE5pa55rOVXHJcblx0XHRcdHRoaXMuc2VuZE1lc3NhZ2UoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0Ly8g5bCG6IGK5aSp56qX5Y+j5rua5Yqo5p2h5rua6Iez5pyA5LiL5pa5XHJcblx0ZGlhbG9nU2Nyb2xscygpIHtcclxuXHRcdGlmICh0aGlzLmRpYWxvZ1Njcm9sbCA9PSBudWxsKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMubmF2LnVucmVhZCA9IG51bGw7XHJcblx0XHR0aGlzLmRpYWxvZ1Njcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuZGlhbG9nU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xyXG5cdH1cclxuXHJcblx0Ly8g5Yik5pat5piv5ZCm5bey6ZiF6K+75pyA5paw5raI5oGvXHJcblx0aXNOZXdzKCkge1xyXG5cdFx0Y29uc3QgaXNTY3JvbGxlZFRvQm90dG9tID1cclxuXHRcdFx0dGhpcy5kaWFsb2dTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLSB0aGlzLmRpYWxvZ1Njcm9sbC5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCA8PVxyXG5cdFx0XHR0aGlzLmRpYWxvZ1Njcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCArIDE7XHJcblx0XHRpZiAoaXNTY3JvbGxlZFRvQm90dG9tKSB7XHJcblx0XHRcdHRoaXMubmF2LnVucmVhZCA9IG51bGw7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==