ecp-ui-lib
Version:
450 lines (447 loc) • 31.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
左边导航 'ecp-nav-bar' v1.2
*/
import { Component, Input, Output, EventEmitter } from '@angular/core';
import { animate, state, style, transition, trigger } from '@angular/animations';
import { Router } from '@angular/router';
var NavBarComponent = /** @class */ (function () {
/*
menus: Array<any> = [
{
'name': '基本组件',
'uri': '',
'iconuri': 'pipe_area',
'child': [
{
'name': '左边导航',
'uri': 'navBarPage',
'iconuri': '',
'child': null
},
{
'name': '顶部导航',
'uri': 'topNavPage',
'iconuri': '',
'child': null
},
{
'name': '页面左边导航',
'uri': 'pageLeftNavPage',
'iconuri': '',
'child': null
},
{
'name': '开关切换',
'uri': 'switchPage',
'iconuri': '',
'child': null
},
{
'name': '面包屑',
'uri': 'breadCrumbPage',
'iconuri': '',
'child': null
},
{
'name': '步骤条',
'uri': 'stepsInfo',
'iconuri': '',
'child': null
},
{
'name': '工具条',
'uri': 'toolBarPage',
'iconuri': '',
'child': null
}
,
{
'name': '搜索模块',
'uri': 'seachModulePage',
'iconuri': '',
'child': null
}
,
{
'name': '弹出详情',
'uri': 'openDetailsInfo',
'iconuri': '',
'child': null
}
,
{
'name': '弹出详情2',
'uri': 'openDetailsInfo2',
'iconuri': '',
'child': null
},
{
'name': '地图用组件',
'uri': 'dotRipplePage',
'iconuri': '',
'child': null
},
{
'name': '侧边栏弹出',
'uri': 'popupSidebarPage',
'iconuri': '',
'child': null
},
{
'name': '标签页',
'uri': 'tabsPage',
'iconuri': '',
'child': null
},
{
'name': '状态条',
'uri': 'statusBarPage',
'iconuri': '',
'child': null
}
]
},
{
'name': '布局组件',
'uri': '',
'iconuri': 'pipe_area',
'child': [
{
'name': '布局演示',
'uri': 'layoutDemoPage',
'iconuri': '',
'child': null
},
{
'name': '上中下',
'uri': 'flexTopCenterBottom',
'iconuri': '',
'child': null
},
{
'name': '左中右',
'uri': 'flexleftCenterRight',
'iconuri': '',
'child': null
}
]
},
{
'name': '数据展示',
'uri': '',
'iconuri': 'pipe_area',
'child': [
{
'name': '登录界面',
'uri': 'loginPage',
'iconuri': '',
'child': null
},
{
'name': '系统切换',
'uri': 'homePage',
'iconuri': '',
'child': null
},
{
'name': '页面演示1',
'uri': 'pageDemo',
'iconuri': '',
'child': null
},
{
'name': '页面演示3',
'uri': 'pageDemo3',
'iconuri': '',
'child': null
},
{
'name': '页面演示2',
'uri': 'detailsStyle1',
'iconuri': '',
'child': null
},
{
'name': '表格展示1',
'uri': 'dataDemoPage',
'iconuri': '',
'child': null
},
{
'name': '表格展示',
'uri': 'tablePage',
'iconuri': '',
'child': null
}
,
{
'name': '图标演示',
'uri': 'iconPage',
'iconuri': '',
'child': null
},
{
'name': '标签页(传递模板)',
'uri': 'ecpTabset',
'iconuri': '',
'child': null
},
{
'name': '404/500页面',
'uri': 'httpPage',
'iconuri': '',
'child': null
}
,
{
'name': '生成帐单',
'uri': 'generateBillPage',
'iconuri': '',
'child': null
},
{
'name': '弹窗演示',
'uri': 'waterConsumptionAnalysisPopup',
'iconuri': '',
'child': null
}
,
{
'name': '组件联动',
'uri': 'pageDemo2',
'iconuri': '',
'child': null
},
{
'name': '调度中心',
'uri': 'dispatchPage',
'iconuri': '',
'child': null
}
,
{
'name': '控制台主页',
'uri': 'consolePage',
'iconuri': '',
'child': null
}
]
},
{
'name': '关于',
'uri': 'about',
'iconuri': 'pipe_report',
'child': []
}
];
*/
function NavBarComponent(router) {
this.router = router;
// 自定义伸缩,true 可以缩放,false 禁止缩放
this.customStyle = {};
this.navJson = [];
this.goTo = new EventEmitter();
this.menuStatus = 'off';
this.hoverId = 0; // 当前已选中
// 当前已选中
this.selectId = 0; // 当前鼠标选中
// 当前鼠标选中
this.thisMenuId = 0; // 当前选中子菜单
// 当前选中子菜单
this.hisHover = 0; // 历史选中菜单,收缩时记录,展开时使用
}
/**
* @return {?}
*/
NavBarComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
if (this.customScaling == null) {
this.customScaling = true;
}
};
// 菜单选中
// 菜单选中
/**
* @param {?} id
* @return {?}
*/
NavBarComponent.prototype.hoverMenu =
// 菜单选中
/**
* @param {?} id
* @return {?}
*/
function (id) {
if (this.hoverId === id) {
this.hoverId = null;
}
else {
this.hoverId = id;
}
};
// 移上去的
// 移上去的
/**
* @param {?} id
* @return {?}
*/
NavBarComponent.prototype.selectMenu =
// 移上去的
/**
* @param {?} id
* @return {?}
*/
function (id) {
this.selectId = id;
};
// 清除选中
// 清除选中
/**
* @return {?}
*/
NavBarComponent.prototype.cleanSel =
// 清除选中
/**
* @return {?}
*/
function () {
this.selectId = null;
};
// 展开
// 展开
/**
* @return {?}
*/
NavBarComponent.prototype.on =
// 展开
/**
* @return {?}
*/
function () {
/** @type {?} */
var self = this;
if (self.menuStatus === 'off') {
self.hoverId = self.hisHover;
self.menuStatus = 'on';
}
};
// 收缩
// 收缩
/**
* @return {?}
*/
NavBarComponent.prototype.off =
// 收缩
/**
* @return {?}
*/
function () {
/** @type {?} */
var self = this;
self.hisHover = self.hoverId;
if (self.customScaling == true) {
this.menuStatus = 'off';
}
};
/**
* @param {?} i
* @return {?}
*/
NavBarComponent.prototype.showChildMenu = /**
* @param {?} i
* @return {?}
*/
function (i) {
if (i === this.hoverId && this.menuStatus === 'on') {
return 'block';
}
else {
return 'none';
}
};
/**
* @param {?} uri
* @param {?} hoverId
* @return {?}
*/
NavBarComponent.prototype.selectedApp = /**
* @param {?} uri
* @param {?} hoverId
* @return {?}
*/
function (uri, hoverId) {
/** @type {?} */
var self = this;
this.goTo.emit(uri);
if (hoverId == null || hoverId == '') {
self.thisMenuId = 0;
}
self.thisMenuId = hoverId;
// console.log('click');
// self.router.navigate([uri]);
return false;
};
NavBarComponent.decorators = [
{ type: Component, args: [{
selector: 'ecp-nav-bar',
template: "<nav class=\"main-menu\" [ngClass]=\"{'on':!customScaling}\" [ngStyle]=\"customStyle\" (mouseleave)=\"off()\" (mouseover)=\"on()\">\r\n <!--\u5DE6\u8FB9\u56FE\u6807-->\r\n\r\n <ul class=\"menu-body\">\r\n <ng-container *ngFor=\"let menu of navJson;let i=index;\">\r\n <li [ngClass]=\"{'select':i==selectId,'hover':i==hoverId}\">\r\n <div class=\"menu-title\" [ngClass]=\"{'select':i==selectId,'hover':i==hoverId}\"\r\n (click)=\"hoverMenu(i);selectedApp(menu.uri,i)\" (mouseover)=\"selectMenu(i)\"\r\n (mouseout)=\"cleanSel()\">\r\n <i class=\"icon dongxiniotwater {{menu.iconuri}}\"></i>{{menu.name}}\r\n <i class=\"right\" [ngClass]=\"{'icon-fold':hoverId==i,'icon-unfold':hoverId!=i||hoverId==null}\"\r\n *ngIf=\"menu.child!=''\"></i>\r\n </div>\r\n <ul *ngIf=\"menu.child!=''\" class=\"menu-sub\" [@displayState]=\"showChildMenu(i)\">\r\n <ng-container *ngFor=\"let childmenu of menu.child; let childId = index;\">\r\n <li class=\"hover\" (click)=\"selectedApp(childmenu.uri,childId)\"\r\n [ngClass]=\"{'hover':childId==thisMenuId}\" (mouseover)=\"selectMenu(i)\" (mouseout)=\"cleanSel()\">\r\n {{childmenu.name}}\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</nav>\r\n\r\n\r\n\r\n\r\n\r\n",
animations: [
trigger('displayState', [
state('none', style({
height: 0, display: 'none', opacity: '0',
})),
state('block', style({
height: '*', display: 'block', opacity: '1',
})),
transition('none => block', animate('100ms linear')),
transition('block => none', animate('100ms linear'))
])
],
styles: [".main-menu.hover,.main-menu.on,.main-menu:hover{width:220px;overflow:hidden;opacity:1}.main-menu.off{width:60px;overflow:hidden;opacity:1}.main-menu{background:#22272e;color:#fff;position:absolute;top:0;bottom:0;left:0;width:60px;overflow:hidden;transition:width .2s linear;-webkit-transform:translateZ(0) scale(1,1);opacity:1;z-index:1000}.main-menu>ul{margin:0}.main-menu li{position:relative;display:block;width:220px;font-size:14px;cursor:pointer}nav{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}nav li,nav ul{outline:0;margin:0;padding:0}.main-menu .menu-body{height:100%}.main-menu .menu-body li{width:220px;min-height:42px;line-height:42px;clear:both}.main-menu .menu-body li .menu-title{height:42px;line-height:42px;text-align:left;cursor:pointer;color:#999;font-weight:700}.main-menu .menu-body li .menu-title i{width:60px;float:left;text-align:center;margin-right:0;font-size:18px;font-weight:400}.main-menu .menu-body li .menu-title i.on,.main-menu .menu-body li .menu-title i.right{margin-top:16px;width:13px;height:13px;float:right;margin-right:15px;font-size:12px;font-weight:400}.main-menu .menu-body li .menu-title.select{background:#1979ff;color:#fff}.main-menu .menu-body li .menu-title.hover{background:#1e5bd6;color:#fff}.main-menu .menu-body .menu-sub{overflow-x:hidden;background:#181b1f}.main-menu .menu-body .menu-sub li{height:42px;line-height:42px;color:#999;cursor:pointer;text-align:left!important;padding-left:60px!important}.main-menu .menu-body .menu-sub li:hover{background:#111214;color:#fff}.main-menu .menu-body .menu-sub li.hover{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsSAAALEgHS3X78AAAAdElEQVQY04XOwQnCQBQE0JetwApyE2Er2ALEJtKIkHtII3tNAWIBVhAC3raCgA14cA8qER/MZT58poG2m/cYcfRyxbnkeG/abj7ghp1PK1LAsHFUuyG8vd1yCv4IddAvl4C+Dvq2og8lxwUJEx41E1LJcXkCWCIYS4tT67sAAAAASUVORK5CYII=) 25px center no-repeat #111214;color:#fff}"]
}] }
];
/** @nocollapse */
NavBarComponent.ctorParameters = function () { return [
{ type: Router }
]; };
NavBarComponent.propDecorators = {
customScaling: [{ type: Input }],
customStyle: [{ type: Input }],
navJson: [{ type: Input }],
goTo: [{ type: Output }]
};
return NavBarComponent;
}());
export { NavBarComponent };
if (false) {
/** @type {?} */
NavBarComponent.prototype.customScaling;
/** @type {?} */
NavBarComponent.prototype.customStyle;
/** @type {?} */
NavBarComponent.prototype.navJson;
/** @type {?} */
NavBarComponent.prototype.goTo;
/** @type {?} */
NavBarComponent.prototype.menuStatus;
/** @type {?} */
NavBarComponent.prototype.hoverId;
/** @type {?} */
NavBarComponent.prototype.selectId;
/** @type {?} */
NavBarComponent.prototype.thisMenuId;
/** @type {?} */
NavBarComponent.prototype.hisHover;
/**
* @type {?}
* @private
*/
NavBarComponent.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9lY3AtdWktbGliLyIsInNvdXJjZXMiOlsibGliL25hdi1iYXIvbmF2LWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLE9BQU8sRUFBQyxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFdkM7SUE2QkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUF3T0U7SUFFRix5QkFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7O1FBcFB6QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixZQUFPLEdBQWUsRUFBRSxDQUFDO1FBQ3hCLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BDLGVBQVUsR0FBVyxLQUFLLENBQUM7UUFDM0IsWUFBTyxHQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVE7O1FBQzdCLGFBQVEsR0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTOztRQUMvQixlQUFVLEdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVTs7UUFDbEMsYUFBUSxHQUFXLENBQUMsQ0FBQyxDQUFDLHFC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Q0Y7Ozs7Z0JBbEJPLE1BQU07OztnQ0FvQlgsS0FBSzs4QkFDTCxLQUFLOzBCQUNMLEtBQUs7dUJBQ0wsTUFBTTs7SUF5VFQsc0JBQUM7Q0FBQSxBQTlVRCxJQThVQztTQTdUWSxlQUFlOzs7SUFDMUIsd0NBQWdDOztJQUNoQyxzQ0FBa0M7O0lBQ2xDLGtDQUFrQzs7SUFDbEMsK0JBQW9DOztJQUNwQyxxQ0FBMkI7O0lBQzNCLGtDQUFvQjs7SUFDcEIsbUNBQXFCOztJQUNyQixxQ0FBdUI7O0lBQ3ZCLG1DQUFxQjs7Ozs7SUE2T1QsaUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICAg5bem6L655a+86IiqICdlY3AtbmF2LWJhcicgdjEuMlxyXG4qL1xyXG5pbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlY3AtbmF2LWJhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25hdi1iYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25hdi1iYXIuY29tcG9uZW50LmNzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2Rpc3BsYXlTdGF0ZScsIFtcclxuICAgICAgc3RhdGUoJ25vbmUnLCBzdHlsZSh7XHJcbiAgICAgICAgaGVpZ2h0OiAwLCBkaXNwbGF5OiAnbm9uZScsIG9wYWNpdHk6ICcwJyxcclxuICAgICAgfSkpLFxyXG4gICAgICBzdGF0ZSgnYmxvY2snLCBzdHlsZSh7XHJcbiAgICAgICAgaGVpZ2h0OiAnKicsIGRpc3BsYXk6ICdibG9jaycsIG9wYWNpdHk6ICcxJyxcclxuICAgICAgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdub25lID0+IGJsb2NrJywgYW5pbWF0ZSgnMTAwbXMgbGluZWFyJykpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdibG9jayA9PiBub25lJywgYW5pbWF0ZSgnMTAwbXMgbGluZWFyJykpXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdkJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgY3VzdG9tU2NhbGluZzogYm9vbGVhbjsvLyDoh6rlrprkuYnkvLjnvKksdHJ1ZSDlj6/ku6XnvKnmlL7vvIxmYWxzZSDnpoHmraLnvKnmlL5cclxuICBASW5wdXQoKSBjdXN0b21TdHlsZTogb2JqZWN0ID0ge307XHJcbiAgQElucHV0KCkgbmF2SnNvbjogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBPdXRwdXQoKSBnb1RvID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIG1lbnVTdGF0dXM6IHN0cmluZyA9ICdvZmYnO1xyXG4gIGhvdmVySWQ6IG51bWJlciA9IDA7IC8vIOW9k+WJjeW3sumAieS4rVxyXG4gIHNlbGVjdElkOiBudW1iZXIgPSAwOyAvLyDlvZPliY3pvKDmoIfpgInkuK1cclxuICB0aGlzTWVudUlkOiBudW1iZXIgPSAwOyAvLyDlvZPliY3pgInkuK3lrZDoj5zljZVcclxuICBoaXNIb3ZlcjogbnVtYmVyID0gMDsgLy8g5Y6G5Y+y6YCJ5Lit6I+c5Y2VLOaUtue8qeaXtuiusOW9le+8jOWxleW8gOaXtuS9v+eUqFxyXG5cclxuXHJcbiAgLypcclxuXHJcbiAgICBtZW51czogQXJyYXk8YW55PiA9IFtcclxuICAgICAge1xyXG4gICAgICAgICduYW1lJzogJ+WfuuacrOe7hOS7ticsXHJcbiAgICAgICAgJ3VyaSc6ICcnLFxyXG4gICAgICAgICdpY29udXJpJzogJ3BpcGVfYXJlYScsXHJcbiAgICAgICAgJ2NoaWxkJzogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICflt6bovrnlr7zoiKonLFxyXG4gICAgICAgICAgICAndXJpJzogJ25hdkJhclBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfpobbpg6jlr7zoiKonLFxyXG4gICAgICAgICAgICAndXJpJzogJ3RvcE5hdlBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfpobXpnaLlt6bovrnlr7zoiKonLFxyXG4gICAgICAgICAgICAndXJpJzogJ3BhZ2VMZWZ0TmF2UGFnZScsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+W8gOWFs+WIh+aNoicsXHJcbiAgICAgICAgICAgICd1cmknOiAnc3dpdGNoUGFnZScsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+mdouWMheWxkScsXHJcbiAgICAgICAgICAgICd1cmknOiAnYnJlYWRDcnVtYlBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfmraXpqqTmnaEnLFxyXG4gICAgICAgICAgICAndXJpJzogJ3N0ZXBzSW5mbycsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+W3peWFt+adoScsXHJcbiAgICAgICAgICAgICd1cmknOiAndG9vbEJhclBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+aQnOe0ouaooeWdlycsXHJcbiAgICAgICAgICAgICd1cmknOiAnc2VhY2hNb2R1bGVQYWdlJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICflvLnlh7ror6bmg4UnLFxyXG4gICAgICAgICAgICAndXJpJzogJ29wZW5EZXRhaWxzSW5mbycsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn5by55Ye66K+m5oOFMicsXHJcbiAgICAgICAgICAgICd1cmknOiAnb3BlbkRldGFpbHNJbmZvMicsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+WcsOWbvueUqOe7hOS7ticsXHJcbiAgICAgICAgICAgICd1cmknOiAnZG90UmlwcGxlUGFnZScsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+S+p+i+ueagj+W8ueWHuicsXHJcbiAgICAgICAgICAgICd1cmknOiAncG9wdXBTaWRlYmFyUGFnZScsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+agh+etvumhtScsXHJcbiAgICAgICAgICAgICd1cmknOiAndGFic1BhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfnirbmgIHmnaEnLFxyXG4gICAgICAgICAgICAndXJpJzogJ3N0YXR1c0JhclBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgICduYW1lJzogJ+W4g+WxgOe7hOS7ticsXHJcbiAgICAgICAgJ3VyaSc6ICcnLFxyXG4gICAgICAgICdpY29udXJpJzogJ3BpcGVfYXJlYScsXHJcbiAgICAgICAgJ2NoaWxkJzogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfluIPlsYDmvJTnpLonLFxyXG4gICAgICAgICAgICAndXJpJzogJ2xheW91dERlbW9QYWdlJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn5LiK5Lit5LiLJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdmbGV4VG9wQ2VudGVyQm90dG9tJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn5bem5Lit5Y+zJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdmbGV4bGVmdENlbnRlclJpZ2h0JyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgICduYW1lJzogJ+aVsOaNruWxleekuicsXHJcbiAgICAgICAgJ3VyaSc6ICcnLFxyXG4gICAgICAgICdpY29udXJpJzogJ3BpcGVfYXJlYScsXHJcbiAgICAgICAgJ2NoaWxkJzogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfnmbvlvZXnlYzpnaInLFxyXG4gICAgICAgICAgICAndXJpJzogJ2xvZ2luUGFnZScsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+ezu+e7n+WIh+aNoicsXHJcbiAgICAgICAgICAgICd1cmknOiAnaG9tZVBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfpobXpnaLmvJTnpLoxJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdwYWdlRGVtbycsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+mhtemdoua8lOekujMnLFxyXG4gICAgICAgICAgICAndXJpJzogJ3BhZ2VEZW1vMycsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+mhtemdoua8lOekujInLFxyXG4gICAgICAgICAgICAndXJpJzogJ2RldGFpbHNTdHlsZTEnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfooajmoLzlsZXnpLoxJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdkYXRhRGVtb1BhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfooajmoLzlsZXnpLonLFxyXG4gICAgICAgICAgICAndXJpJzogJ3RhYmxlUGFnZScsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn5Zu+5qCH5ryU56S6JyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdpY29uUGFnZScsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+agh+etvumhte+8iOS8oOmAkuaooeadv++8iScsXHJcbiAgICAgICAgICAgICd1cmknOiAnZWNwVGFic2V0JyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAnNDA0LzUwMOmhtemdoicsXHJcbiAgICAgICAgICAgICd1cmknOiAnaHR0cFBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+eUn+aIkOW4kOWNlScsXHJcbiAgICAgICAgICAgICd1cmknOiAnZ2VuZXJhdGVCaWxsUGFnZScsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+W8ueeql+a8lOekuicsXHJcbiAgICAgICAgICAgICd1cmknOiAnd2F0ZXJDb25zdW1wdGlvbkFuYWx5c2lzUG9wdXAnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+e7hOS7tuiBlOWKqCcsXHJcbiAgICAgICAgICAgICd1cmknOiAncGFnZURlbW8yJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn6LCD5bqm5Lit5b+DJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdkaXNwYXRjaFBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+aOp+WItuWPsOS4u+mhtScsXHJcbiAgICAgICAgICAgICd1cmknOiAnY29uc29sZVBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgJ25hbWUnOiAn5YWz5LqOJyxcclxuICAgICAgICAndXJpJzogJ2Fib3V0JyxcclxuICAgICAgICAnaWNvbnVyaSc6ICdwaXBlX3JlcG9ydCcsXHJcbiAgICAgICAgJ2NoaWxkJzogW11cclxuICAgICAgfVxyXG4gICAgXTtcclxuXHJcbiAgKi9cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21TY2FsaW5nID09IG51bGwpIHtcclxuICAgICAgdGhpcy5jdXN0b21TY2FsaW5nID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOiPnOWNlemAieS4rVxyXG4gIGhvdmVyTWVudShpZCkge1xyXG4gICAgaWYgKHRoaXMuaG92ZXJJZCA9PT0gaWQpIHtcclxuICAgICAgdGhpcy5ob3ZlcklkID0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaG92ZXJJZCA9IGlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g56e75LiK5Y6755qEXHJcbiAgc2VsZWN0TWVudShpZCkge1xyXG4gICAgdGhpcy5zZWxlY3RJZCA9IGlkO1xyXG5cclxuICB9XHJcblxyXG4gIC8vIOa4hemZpOmAieS4rVxyXG4gIGNsZWFuU2VsKCkge1xyXG4gICAgdGhpcy5zZWxlY3RJZCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyDlsZXlvIBcclxuICBvbigpIHtcclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgaWYgKHNlbGYubWVudVN0YXR1cyA9PT0gJ29mZicpIHtcclxuICAgICAgc2VsZi5ob3ZlcklkID0gc2VsZi5oaXNIb3ZlcjtcclxuXHJcbiAgICAgIHNlbGYubWVudVN0YXR1cyA9ICdvbic7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g5pS257ypXHJcbiAgb2ZmKCkge1xyXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICBzZWxmLmhpc0hvdmVyID0gc2VsZi5ob3ZlcklkO1xyXG4gICAgaWYgKHNlbGYuY3VzdG9tU2NhbGluZyA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMubWVudVN0YXR1cyA9ICdvZmYnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0NoaWxkTWVudShpKSB7XHJcbiAgICBpZiAoaSA9PT0gdGhpcy5ob3ZlcklkICYmIHRoaXMubWVudVN0YXR1cyA9PT0gJ29uJykge1xyXG4gICAgICByZXR1cm4gJ2Jsb2NrJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnbm9uZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VsZWN0ZWRBcHAodXJpLCBob3ZlcklkKSB7XHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgIHRoaXMuZ29Uby5lbWl0KHVyaSk7XHJcbiAgICBpZiAoaG92ZXJJZCA9PSBudWxsIHx8IGhvdmVySWQgPT0gJycpIHtcclxuICAgICAgc2VsZi50aGlzTWVudUlkID0gMDtcclxuICAgIH1cclxuICAgIHNlbGYudGhpc01lbnVJZCA9IGhvdmVySWQ7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnY2xpY2snKTtcclxuICAgIC8vIHNlbGYucm91dGVyLm5hdmlnYXRlKFt1cmldKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=