UNPKG

@ecip/auth

Version:
274 lines 21.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ViewChild } from '@angular/core'; import { ModalHelper } from '@delon/theme'; import { SFComponent, } from '@delon/form'; import { STComponent } from "@delon/abc"; import { NzMessageService } from "ng-zorro-antd"; import { AuthDataSourceEditComponent } from "./edit/dsedit.component"; import { DictService, DataSourceService } from "@ecip/service"; export class AuthDataSourceComponent { /** * @param {?} modalHelper * @param {?} messageService * @param {?} dataSourceService * @param {?} dictService */ constructor(modalHelper, messageService, dataSourceService, dictService) { this.modalHelper = modalHelper; this.messageService = messageService; this.dataSourceService = dataSourceService; this.dictService = dictService; this.url = 'api/v1/sysrDS'; this.selectedIds = []; this.pageTitle = '数据源管理'; this.params = {}; this.schema = { properties: { dsName: { type: 'string', title: '数据源名称', }, dbType: { type: "string", title: '数据库类型', ui: { widget: 'select', width: 260, notFoundContent: '没有数据', dropdownMatchSelectWidth: false, asyncData: (/** * @return {?} */ () => this.dictService.getTypeList("dbType")) } }, ip: { type: 'string', title: '主机名', }, dbName: { type: 'string', title: '数据库名', }, }, }; this.columns = [ { title: '编号', type: 'checkbox', index: 'id', fixed: 'left', width: '2%', }, { title: '数据源名称', index: 'dsName', fixed: 'left', width: '10%' }, { title: '数据库类型', index: 'dbType', fixed: 'left', width: '6%', format: (/** * @param {?} item * @return {?} */ (item) => { for (let pair of this.dbTypeList) { if (item.dbType == pair.value) { return pair.label; } } return item.dbType; }) }, { title: '数据库名', index: 'dbName', fixed: 'left', width: '8%' }, { title: 'URL', index: 'url', }, { title: '主机名', index: 'ip', }, { title: '端口号', index: 'port', }, { title: '用户名', index: 'username', }, { title: '操作', fixed: 'right', width: '9%', buttons: [ { text: '编辑', icon: 'edit', type: 'static', component: AuthDataSourceEditComponent, click: (/** * @param {?} record * @param {?} modal * @return {?} */ (record, modal) => { this.messageService.success("编辑成功"); this.st.load(-1, this.params); }), acl: { ability: ['datasource:edit'] } }, { text: '删除', icon: 'delete', type: 'del', click: (/** * @param {?} record * @param {?} modal * @param {?} component * @return {?} */ (record, modal, component) => { this.dataSourceService.deleteById(record.id).subscribe((/** * @return {?} */ () => { this.messageService.success("删除成功"); component.load(-1, this.params); })); }), acl: { ability: ['datasource:remove'] } } ], } ]; } /** * @return {?} */ ngOnInit() { this.dictService.getTypeList("dbType").subscribe((/** * @param {?} res * @return {?} */ res => { this.dbTypeList = res; })); } //即时监控选中项的ID列表 /** * @param {?} e * @return {?} */ checkboxChange(e) { this.selectedIds = []; for (let item of e) { this.selectedIds.push(item.id); } } //因为[formData]和st的params似乎不能绑定,所以手写了一个绑定数据的方法 /** * @return {?} */ formBind() { this.params = this.sf.value; } /** * @return {?} */ multiDelete() { //未选定任何一条 if (this.selectedIds.length == 0) { this.messageService.warning("未选择任何记录"); } else { this.dataSourceService.multiDelete(this.selectedIds).subscribe((/** * @return {?} */ () => { this.messageService.success("删除成功"); this.st.load(-1, this.params); })); } } /** * @return {?} */ create() { this.modalHelper.createStatic(AuthDataSourceEditComponent, { isNew: true }) .subscribe((/** * @return {?} */ () => { this.messageService.success("创建成功"); this.st.load(-1, this.params); })); } } AuthDataSourceComponent.decorators = [ { type: Component, args: [{ selector: 'app-auth-ds', template: "<page-header [action]=\"phPhAction\">\r\n <ng-template #phPhAction>\r\n <button acl [acl-ability]=\"'datasource:add'\" nz-button nzType=\"primary\" (click)=\"create()\">\u65B0\u5EFA</button>\r\n <!--<button nz-button (click)=\"multiDelete()\">\u5220\u9664</button>-->\r\n </ng-template>\r\n</page-header>\r\n<nz-card>\r\n <sf #sf mode=\"search\" [schema]=\"schema\" (formSubmit)=\"formBind();st.load(1, params);\" (formReset)=\"formBind();st.reset(params)\"></sf>\r\n <st #st [data]=\"url\" [columns]=\"columns\" [scroll]=\"{x:'150%'}\" (change)=\"checkboxChange($event)\" [req]=\"{params: params}\" [page]=\"{front: false}\"></st>\r\n</nz-card>\r\n" }] } ]; /** @nocollapse */ AuthDataSourceComponent.ctorParameters = () => [ { type: ModalHelper }, { type: NzMessageService }, { type: DataSourceService }, { type: DictService } ]; AuthDataSourceComponent.propDecorators = { st: [{ type: ViewChild, args: ['st',] }], sf: [{ type: ViewChild, args: ['sf',] }] }; if (false) { /** @type {?} */ AuthDataSourceComponent.prototype.url; /** @type {?} */ AuthDataSourceComponent.prototype.selectedIds; /** @type {?} */ AuthDataSourceComponent.prototype.pageTitle; /** @type {?} */ AuthDataSourceComponent.prototype.params; /** @type {?} */ AuthDataSourceComponent.prototype.dbTypeList; /** @type {?} */ AuthDataSourceComponent.prototype.st; /** @type {?} */ AuthDataSourceComponent.prototype.sf; /** @type {?} */ AuthDataSourceComponent.prototype.schema; /** @type {?} */ AuthDataSourceComponent.prototype.columns; /** * @type {?} * @private */ AuthDataSourceComponent.prototype.modalHelper; /** * @type {?} * @private */ AuthDataSourceComponent.prototype.messageService; /** @type {?} */ AuthDataSourceComponent.prototype.dataSourceService; /** * @type {?} * @private */ AuthDataSourceComponent.prototype.dictService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGVjaXAvYXV0aC8iLCJzb3VyY2VzIjpbInNyYy9kYXRhc291cmNlL2RzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFnQixTQUFTLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFDLFdBQVcsR0FBWSxNQUFNLGFBQWEsQ0FBQztBQUNuRCxPQUFPLEVBQVcsV0FBVyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTS9ELE1BQU0sT0FBTyx1QkFBdUI7Ozs7Ozs7SUFnSWxDLFlBQW9CLFdBQXdCLEVBQ3hCLGNBQStCLEVBQ2hDLGlCQUFtQyxFQUNsQyxXQUF1QjtRQUh2QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBaUI7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQWpJM0MsUUFBRyxHQUFHLGVBQWUsQ0FBQztRQUV0QixnQkFBVyxHQUFZLEVBQUUsQ0FBQztRQUUxQixjQUFTLEdBQUcsT0FBTyxDQUFDO1FBRXBCLFdBQU0sR0FBTSxFQUFHLENBQUM7UUFVaEIsV0FBTSxHQUFhO1lBQ2pCLFVBQVUsRUFBRTtnQkFDVixNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLE9BQU87aUJBQ2Y7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLElBQUksRUFBRSxRQUFRO29CQUNk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LENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUzs7O1lBQUMsR0FBRSxFQUFFO2dCQUNqRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLENBQUMsRUFBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7O0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLDJCQUEyQixFQUFFLEVBQUMsS0FBSyxFQUFDLElBQUksRUFBQyxDQUFDO2FBQ3JFLFNBQVM7OztRQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7OztZQTlLRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLCtwQkFBa0M7YUFDbkM7Ozs7WUFWTyxXQUFXO1lBR1gsZ0JBQWdCO1lBRUYsaUJBQWlCO1lBQTlCLFdBQVc7OztpQkFrQmpCLFNBQVMsU0FBQyxJQUFJO2lCQUdkLFNBQVMsU0FBQyxJQUFJOzs7O0lBYmYsc0NBQXNCOztJQUV0Qiw4Q0FBMEI7O0lBRTFCLDRDQUFvQjs7SUFFcEIseUNBQWdCOztJQUVoQiw2Q0FBaUI7O0lBRWpCLHFDQUNnQjs7SUFFaEIscUNBQ2dCOztJQUVoQix5Q0EwQkU7O0lBRUYsMENBZ0ZFOzs7OztJQUVVLDhDQUFnQzs7Ozs7SUFDaEMsaURBQXVDOztJQUN2QyxvREFBMEM7Ozs7O0lBQzFDLDhDQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TW9kYWxIZWxwZXJ9IGZyb20gJ0BkZWxvbi90aGVtZSc7XHJcbmltcG9ydCB7U0ZDb21wb25lbnQsIFNGU2NoZW1hLH0gZnJvbSAnQGRlbG9uL2Zvcm0nO1xyXG5pbXBvcnQge1NUQ29sdW1uLCBTVENvbXBvbmVudH0gZnJvbSBcIkBkZWxvbi9hYmNcIjtcclxuaW1wb3J0IHtOek1lc3NhZ2VTZXJ2aWNlfSBmcm9tIFwibmctem9ycm8tYW50ZFwiO1xyXG5pbXBvcnQge0F1dGhEYXRhU291cmNlRWRpdENvbXBvbmVudH0gZnJvbSBcIi4vZWRpdC9kc2VkaXQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IERpY3RTZXJ2aWNlLCBEYXRhU291cmNlU2VydmljZSB9IGZyb20gXCJAZWNpcC9zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hdXRoLWRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHMuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aERhdGFTb3VyY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcblxyXG4gIHVybCA9ICdhcGkvdjEvc3lzckRTJztcclxuXHJcbiAgc2VsZWN0ZWRJZHM6c3RyaW5nW10gPSBbXTtcclxuXHJcbiAgcGFnZVRpdGxlID0gJ+aVsOaNrua6kOeuoeeQhic7XHJcblxyXG4gIHBhcmFtczphbnk9IHsgfTtcclxuXHJcbiAgZGJUeXBlTGlzdDpbYW55XTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc3QnKVxyXG4gIHN0OiBTVENvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc2YnKVxyXG4gIHNmOiBTRkNvbXBvbmVudDtcclxuXHJcbiAgc2NoZW1hOiBTRlNjaGVtYSA9IHtcclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgZHNOYW1lOiB7XHJcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgdGl0bGU6ICfmlbDmja7mupDlkI3np7AnLFxyXG4gICAgICB9LFxyXG4gICAgICBkYlR5cGU6IHtcclxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxyXG4gICAgICAgIHRpdGxlOiAn5pWw5o2u5bqT57G75Z6LJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgd2lkZ2V0OiAnc2VsZWN0JyxcclxuICAgICAgICAgIHdpZHRoOiAyNjAsXHJcbiAgICAgICAgICBub3RGb3VuZENvbnRlbnQ6ICfmsqHmnInmlbDmja4nLFxyXG4gICAgICAgICAgZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoOiBmYWxzZSxcclxuICAgICAgICAgIGFzeW5jRGF0YTooKT0+dGhpcy5kaWN0U2VydmljZS5nZXRUeXBlTGlzdChcImRiVHlwZVwiKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgaXA6IHtcclxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgICB0aXRsZTogJ+S4u+acuuWQjScsXHJcbiAgICAgIH0sXHJcbiAgICAgIGRiTmFtZToge1xyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIHRpdGxlOiAn5pWw5o2u5bqT5ZCNJyxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgY29sdW1uczogU1RDb2x1bW5bXSA9IFtcclxuICAgIHtcclxuICAgICAgdGl0bGU6ICfnvJblj7cnLFxyXG4gICAgICB0eXBlOidjaGVja2JveCcsXHJcbiAgICAgIGluZGV4OidpZCcsXHJcbiAgICAgIGZpeGVkOidsZWZ0JyxcclxuICAgICAgd2lkdGg6ICcyJScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0aXRsZTogJ+aVsOaNrua6kOWQjeensCcsXHJcbiAgICAgIGluZGV4OiAnZHNOYW1lJyxcclxuICAgICAgZml4ZWQ6J2xlZnQnLFxyXG4gICAgICB3aWR0aDogJzEwJSdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHRpdGxlOiAn5pWw5o2u5bqT57G75Z6LJyxcclxuICAgICAgaW5kZXg6ICdkYlR5cGUnLFxyXG4gICAgICBmaXhlZDonbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAnNiUnLFxyXG4gICAgICBmb3JtYXQ6KGl0ZW06YW55KT0+e1xyXG4gICAgICAgIGZvcihsZXQgcGFpciBvZiB0aGlzLmRiVHlwZUxpc3Qpe1xyXG4gICAgICAgICAgaWYoaXRlbS5kYlR5cGUgPT0gcGFpci52YWx1ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiBwYWlyLmxhYmVsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbS5kYlR5cGU7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHRpdGxlOiAn5pWw5o2u5bqT5ZCNJyxcclxuICAgICAgaW5kZXg6ICdkYk5hbWUnLFxyXG4gICAgICBmaXhlZDonbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAnOCUnXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0aXRsZTogJ1VSTCcsXHJcbiAgICAgIGluZGV4OiAndXJsJyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHRpdGxlOiAn5Li75py65ZCNJyxcclxuICAgICAgaW5kZXg6ICdpcCcsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0aXRsZTogJ+err+WPo+WPtycsXHJcbiAgICAgIGluZGV4OiAncG9ydCcsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0aXRsZTogJ+eUqOaIt+WQjScsXHJcbiAgICAgIGluZGV4OiAndXNlcm5hbWUnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdGl0bGU6ICfmk43kvZwnLFxyXG4gICAgICBmaXhlZDoncmlnaHQnLFxyXG4gICAgICB3aWR0aDogJzklJyxcclxuICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRleHQ6ICfnvJbovpEnLFxyXG4gICAgICAgICAgaWNvbjogJ2VkaXQnLFxyXG4gICAgICAgICAgdHlwZTogJ3N0YXRpYycsXHJcbiAgICAgICAgICBjb21wb25lbnQ6IEF1dGhEYXRhU291cmNlRWRpdENvbXBvbmVudCxcclxuICAgICAgICAgIGNsaWNrOiAocmVjb3JkLCBtb2RhbCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3VjY2VzcyhcIue8lui+keaIkOWKn1wiKTtcclxuICAgICAgICAgICAgdGhpcy5zdC5sb2FkKC0xLCB0aGlzLnBhcmFtcyk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgYWNsOiB7IGFiaWxpdHk6IFsnZGF0YXNvdXJjZTplZGl0J10gfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGV4dDogJ+WIoOmZpCcsXHJcbiAgICAgICAgICBpY29uOiAnZGVsZXRlJyxcclxuICAgICAgICAgIHR5cGU6ICdkZWwnLFxyXG4gICAgICAgICAgY2xpY2s6IChyZWNvcmQsIG1vZGFsLCBjb21wb25lbnQpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZS5kZWxldGVCeUlkKHJlY29yZC5pZCkuc3Vic2NyaWJlKCgpPT57XHJcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgICAgIGNvbXBvbmVudC5sb2FkKC0xLCB0aGlzLnBhcmFtcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGFjbDogeyBhYmlsaXR5OiBbJ2RhdGFzb3VyY2U6cmVtb3ZlJ10gfVxyXG4gICAgICAgIH1cclxuICAgICAgXSxcclxuICAgIH1cclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGFsSGVscGVyOiBNb2RhbEhlbHBlcixcclxuICAgICAgICAgICAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOk56TWVzc2FnZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIGRhdGFTb3VyY2VTZXJ2aWNlOkRhdGFTb3VyY2VTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZGljdFNlcnZpY2U6RGljdFNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWN0U2VydmljZS5nZXRUeXBlTGlzdChcImRiVHlwZVwiKS5zdWJzY3JpYmUocmVzPT57XHJcbiAgICAgIHRoaXMuZGJUeXBlTGlzdCA9IHJlcztcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvL+WNs+aXtuebkeaOp+mAieS4remhueeahElE5YiX6KGoXHJcbiAgY2hlY2tib3hDaGFuZ2UoZTogYW55W10pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcclxuICAgIGZvcihsZXQgaXRlbSBvZiBlKXtcclxuICAgICAgdGhpcy5zZWxlY3RlZElkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy/lm6DkuLpbZm9ybURhdGFd5ZKMc3TnmoRwYXJhbXPkvLzkuY7kuI3og73nu5HlrprvvIzmiYDku6XmiYvlhpnkuobkuIDkuKrnu5HlrprmlbDmja7nmoTmlrnms5VcclxuICBmb3JtQmluZCgpIHtcclxuICAgIHRoaXMucGFyYW1zID0gdGhpcy5zZi52YWx1ZTtcclxuICB9XHJcblxyXG4gIG11bHRpRGVsZXRlKCl7XHJcbiAgICAvL+acqumAieWumuS7u+S9leS4gOadoVxyXG4gICAgaWYodGhpcy5zZWxlY3RlZElkcy5sZW5ndGg9PTApe1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLndhcm5pbmcoXCLmnKrpgInmi6nku7vkvZXorrDlvZVcIik7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZS5tdWx0aURlbGV0ZSh0aGlzLnNlbGVjdGVkSWRzKS5zdWJzY3JpYmUoKCk9PntcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip9cIik7XHJcbiAgICAgICAgdGhpcy5zdC5sb2FkKC0xLCB0aGlzLnBhcmFtcyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlKCl7XHJcbiAgICB0aGlzLm1vZGFsSGVscGVyLmNyZWF0ZVN0YXRpYyhBdXRoRGF0YVNvdXJjZUVkaXRDb21wb25lbnQsIHtpc05ldzp0cnVlfSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFwi5Yib5bu65oiQ5YqfXCIpO1xyXG4gICAgICAgIHRoaXMuc3QubG9hZCgtMSwgdGhpcy5wYXJhbXMpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=