| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 57));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 59));\nvar _base = _interopRequireDefault(__webpack_require__(/*! ../../components/js-base64/base64.js */ 65));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n modules: {\n Base64: _base.default\n },\n onNavigationBarButtonTap: function onNavigationBarButtonTap(e) {\n // \tconsole.log(e);\n // e.text=\"\\ue924\";\n // console.log(e.fontSize);\n if (this.isFilter) this.isFilter = false;else this.isFilter = true;\n },\n onBackPress: function onBackPress(e) {\n // console.log(\"监听返回按钮事件\",e);\n var eventChannel = this.$scope.eventChannel;\n // const eventChannel = this.getOpenerEventChannel();\n eventChannel.emit('view_3201', \"\");\n // uni.navigateBack({\n // \tdelta:1 ,//返回层数,2则上上页\n // });\n // return true;\n },\n data: function data() {\n return {\n title: '新增',\n isFilter: true,\n param: {},\n focusMateria: false,\n styledef: {},\n head_styledef: {\n form: {\n items: []\n }\n },\n detail1_styledef: {},\n detail1StyleDefList: [],\n detail2_styledef: {},\n detail2StyleDefList: [],\n items: [],\n active_id: '',\n activelist: [],\n where: '',\n wheres: '',\n orderby: '',\n query_id: '',\n pageindex: 1,\n page_size: 10,\n page_count: 0,\n scrollTop: 0,\n old: {\n scrollTop: 0\n },\n isScroll: true,\n //获取数据类的HTML页面\n ListHtml_Panel: \"\",\n ListPageHtml_Show: {\n name: \"\",\n event: {\n id: \"\",\n name: \"\"\n }\n }\n };\n },\n onLoad: function onLoad(options) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var _this$param$ListPage$;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // console.log(options);\n uni.setNavigationBarTitle({\n title: options.titlename\n }); //设置顶部标题 \n _this.$data.title = options.titlename;\n _this.$data.param = JSON.parse(options.param);\n _this.isFilter = true;\n if (_this.param.ShowFilter) _this.isFilter = false;\n //获取数据类的自定义表单参数\n _this.Head_UIStyleGetInfo(_this.param.DataCls.id, _this.param.Query_Panel.id);\n if (!(((_this$param$ListPage$ = _this.param.ListPage.ListItem_UIDef) === null || _this$param$ListPage$ === void 0 ? void 0 : _this$param$ListPage$.ui_type) == \"HTML页面\")) {\n _context.next = 11;\n break;\n }\n _context.next = 9;\n return _this.Html_UIstyleGetInfo(_this.param.DataCls.id, _this.param.ListPage.ListItem_UIDef.id);\n case 9:\n _context.next = 13;\n break;\n case 11:\n _context.next = 13;\n return _this.Detail1_UIstyleGetInfo(_this.param.DataCls.id, _this.param.ListPage.ListItem_UIDef.id);\n case 13:\n _this.orderby = _this.param.Order ? _this.param.Order : 'T_CREATE Desc';\n if (!_this.param.Query_Event) {\n _context.next = 19;\n break;\n }\n _context.next = 17;\n return _this.onSearChange(_this.param.DataCls.id, _this.param.Query_Event.id);\n case 17:\n _context.next = 25;\n break;\n case 19:\n _this.wheres = _this.param.Condition;\n _this.pageindex = 1;\n _this.page_size = 3;\n _this.query_id = \"\";\n _context.next = 25;\n return _this.loadDataGetList();\n case 25:\n __f__(\"log\", _this.$data.param, \" at pages/modal/3200.vue:691\");\n //页面初始化获取焦点\n // this.focusMateria=true; \n case 26:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n methods: {\n //滚动到底部后懒加载数据\n scrolltolower: function scrolltolower(e) {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!_this2.isScroll) {\n _context2.next = 7;\n break;\n }\n if (!(_this2.page_count == _this2.pageindex)) {\n _context2.next = 3;\n break;\n }\n return _context2.abrupt(\"return\");\n case 3:\n _this2.pageindex += 1;\n if (_this2.where || _this2.page_count == 1) {\n _this2.query_id = \"\";\n _this2.detail1StyleDefList = [];\n }\n _context2.next = 7;\n return _this2.loadDataGetList();\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n scroll: function scroll(e) {\n // console.log(e.detail.scrollTop)\n this.old.scrollTop = e.detail.scrollTop;\n },\n Head_UIStyleGetInfo: function Head_UIStyleGetInfo(class_id, style_id) {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n //获取自定义表单样式\n $this = _this3;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n }; // console.log(dataInfo);\n _this3.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var styledef = \"\";\n if (ret.result.style_def) {\n //mobox2的style_def是json字符串\n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3的style_def是base64字符串\n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.$data.head_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n // this.form = this.head_styledef.form.model;\n // console.log($this.$data.head_styledef);\n $this.head_styledef.form.items.forEach( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(ele, index) {\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n __f__(\"log\", ele.useDict, \" at pages/modal/3200.vue:736\");\n if (!(ele.useDict == true)) {\n _context3.next = 4;\n break;\n }\n _context3.next = 4;\n return _this3.DictGetInfo(ele.bind.dict, index, 'mast');\n case 4:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n } else {\n uni.showModal({\n title: \"错误1\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误1.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 3:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n Detail1_UIstyleGetInfo: function Detail1_UIstyleGetInfo(class_id, style_id) {\n var _this4 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n //获取自定义表单样式\n $this = _this4;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n };\n _this4.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n __f__(\"log\", ret, \" at pages/modal/3200.vue:758\");\n if (ret.err_code == 0) {\n var styledef = \"\";\n if (ret.result.style_def) {\n //mobox2的style_def是json字符串\n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3的style_def是base64字符串\n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.$data.detail1_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n $this.$data.detail1_styledef.SelBut_Checked = false;\n // console.log($this.$data.detail1_styledef);\n // $this.$data.detail1StyleDefList.push($this.$data.detail1_styledef);\n // var aa = JSON.stringify(this.detail1_styledef);\n // $this.$data.detail1StyleDefList.push(JSON.parse(aa));\n // console.log($this.$data.detail1StyleDefList);\n } else {\n uni.showModal({\n title: \"错误2\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误2.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 3:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }))();\n },\n Html_UIstyleGetInfo: function Html_UIstyleGetInfo(class_id, style_id) {\n var _this5 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n //获取自定义表单样式\n $this = _this5;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n };\n _this5.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var styledef = \"\";\n if (ret.result.style_def) {\n //mobox2的style_def是json字符串\n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3的style_def是base64字符串\n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.ListPageHtml_Show = ret.result.style_def ? JSON.parse(styledef) : {};\n // console.log($this.ListPageHtml_Show);\n } else {\n uni.showModal({\n title: \"错误10\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误10.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 3:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n },\n DictGetInfo: function DictGetInfo(dict, index, type) {\n var _this6 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n //Mobox3得到得到字典信息字典项列表\n _this6.data = [];\n $this = _this6;\n dataInfo = {\n dict_id: dict.id,\n dict_name: dict.name\n }; // console.log(dataInfo);\n _this6.$store.dispatch('DictGetInfo', dataInfo).then( /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(success) {\n var list, itemName, attr, head_styledef;\n return _regenerator.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n __f__(\"log\", success, \" at pages/modal/3200.vue:831\");\n if (success.err_code == 0) {\n if (type == 'mast') {\n list = [];\n itemName = '';\n success.result.dict_item_list.forEach(function (item) {\n if (item.is_default == '1') itemName = item.name;\n list.push({\n text: item.value,\n value: item.name\n });\n });\n //有默认值,显示默认值\n if (itemName) {\n $this.head_styledef.form.items[index].value = itemName;\n attr = $this.head_styledef.form.items[index].fieldId;\n $this.head_styledef.form.model[attr] = itemName;\n }\n $this.head_styledef.form.items[index].dict = list;\n head_styledef = JSON.parse(JSON.stringify($this.head_styledef));\n $this.head_styledef = [];\n $this.head_styledef = head_styledef;\n } else {\n // $this.$data.subClassAttrList[index].attr_list[key].dictitem=success.result;\n // this.$store.commit(\"subClassAttrList\", $this.$data.subClassAttrList);\n }\n } else {\n uni.showModal({\n title: \"错误3.1\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 2:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }));\n return function (_x3) {\n return _ref2.apply(this, arguments);\n };\n }()).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误3\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 4:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8);\n }))();\n },\n // 执行查询事件\n onSearChange: function onSearChange(clsid, eventid) {\n var _this7 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {\n var $this, dataInfo, tip;\n return _regenerator.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n try {\n if (event.id) {\n $this = _this7;\n dataInfo = {\n ed_type: 0,\n start_transaction: true,\n class_id: clsid,\n event_id: eventid\n };\n _this7.$store.dispatch('runCustomEvent', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var result = ret.result;\n if (result.ret != 0) {\n var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n if (result.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + result.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n if (result.result_type == 0 && result.action) {\n result.action.forEach(function (item) {\n if (item.action_type == \"set_query_condition\") {\n var value = item.value;\n $this.wheres = value.condition;\n $this.orderby = value.order ? value.order : $this.orderby;\n $this.pageindex = 1;\n $this.query_id = \"\";\n $this.detail1StyleDefList = [];\n $this.loadDataGetList();\n }\n });\n } else {\n // this.detail2StyleDefList=[];\n if (result.info) {\n uni.showModal({\n title: \"提示\",\n content: result.info,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误4\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误4.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n }\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误4.2\",\n content: \"执行“查询事件”事件失败:\" + tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9);\n }))();\n },\n //查询数据类数据信息\n loadDataGetList: function loadDataGetList() {\n var _this8 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {\n var condition, $this, dataInfo, tip;\n return _regenerator.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n try {\n uni.showLoading({\n title: \"加载中...\",\n mask: true\n });\n //条件查询\n condition = _this8.wheres;\n if (_this8.where) {\n if (condition) condition += ' and ';\n condition += _this8.where;\n }\n // console.log(condition);\n // console.log(this.orderby);\n $this = _this8;\n dataInfo = {\n class_id: _this8.param.DataCls.id,\n attrs: [],\n condition: _this8.toWhereBase64String(\"\" + condition + \"\"),\n prj_rel_type: \"\",\n order_by: _this8.orderby,\n page_size: _this8.page_size,\n page: _this8.pageindex,\n query_id: _this8.query_id\n };\n _this8.$store.dispatch('dataObjQuery', dataInfo).then(function (ret) {\n __f__(\"log\", ret, \" at pages/modal/3200.vue:954\");\n uni.hideLoading();\n if (ret.err_code == 0) {\n // var list=[];\n $this.query_id = '';\n if (ret.result) {\n $this.page_count = ret.result.page_count;\n if (ret.result.page_count > 1) $this.query_id = ret.result.query_id;\n if ($this.ListPageHtml_Show.event.id) {\n ret.result.obj_list.forEach(function (obj) {\n var info = {\n id: obj.id\n };\n obj.attr_list.forEach(function (attr) {\n info[attr.name] = attr.value;\n });\n var detailStyle = {\n SelBut_Checked: false,\n form: {},\n info: info\n };\n detailStyle.form.htmlobjId = obj.id ? obj.id.replace(/-/g, '').replace('{', '').replace('}', '') : 'null';\n detailStyle.form.objId = obj.id;\n detailStyle.form.attrs = obj.attr_list;\n $this.detail1StyleDefList.push(detailStyle);\n $this.activelist.push({\n active: false\n });\n });\n // console.log(this.detail1StyleDefList);\n var jsonlist = [];\n $this.detail1StyleDefList.forEach(function (attr) {\n jsonlist.push({\n id: attr.info.id,\n attrs: Object.keys(attr.info).map(function (a) {\n return {\n attr: a,\n value: attr.info[a] || \"\"\n };\n })\n });\n });\n // console.log(jsonlist);\n var data_json = _base.default.encode(JSON.stringify(jsonlist));\n var eventid = $this.ListPageHtml_Show.event.id;\n if (!$this.ListPageHtml_Show.event.id.includes('{')) eventid = '{' + $this.ListPageHtml_Show.event.id + '}';\n //HTML页面事件\n $this.runCustomEvent({\n ed_type: 0,\n start_transaction: true,\n class_id: $this.param.DataCls.id,\n event_id: eventid,\n data_json: data_json\n });\n } else {\n // $this.detail1StyleDefList=[];\n ret.result.obj_list.forEach(function (obj) {\n var styleStr = JSON.stringify($this.detail1_styledef);\n var detailStyle = JSON.parse(styleStr);\n // var info ={\n // S_ID:obj.id,\n // };\n obj.attr_list.forEach(function (attr) {\n // info[attr.name]=attr.value;\n detailStyle.form.items.forEach(function (ele) {\n if (ele.name != 'Layout') {\n if (ele.fieldId == attr.name) ele.value = attr.value;\n } else if (ele.name == 'Layout') {\n ele.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == attr.name) col.value = attr.value;\n }\n });\n }\n });\n });\n detailStyle.form.htmlobjId = obj.id ? obj.id.replace(/-/g, '').replace('{', '').replace('}', '') : 'null';\n detailStyle.form.objId = obj.id;\n detailStyle.form.attrs = obj.attr_list;\n $this.detail1StyleDefList.push(detailStyle);\n $this.activelist.push({\n active: false\n });\n //list.push(info);\n });\n }\n\n // 解决view层不同步的问题\n // $this.scrollTop = $this.old.scrollTop;\n $this.isScroll = false;\n setTimeout(function () {\n $this.isScroll = true;\n }, 1000);\n // console.log($this.detail1StyleDefList);\n }\n } else {\n uni.showModal({\n title: \"错误5\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误5.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误5.2\",\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10);\n }))();\n },\n //刷新\n Refresh: function Refresh(value) {\n //刷新当前页面\n // location.reload();\n uni.redirectTo({\n url: '../modal/3200?param=' + JSON.stringify(this.$data.param) + \"&titlename=\" + this.$data.title\n });\n },\n //点击显示浏览对象显示页面\n onViewPageClick: function onViewPageClick(style) {\n var _this9 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {\n var $this;\n return _regenerator.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n if (_this9.param.ViewPage) {\n if (_this9.param.ViewPage.View_UIDef) {\n _this9.styledef = style;\n $this = _this9;\n uni.navigateTo({\n url: '../modal/3200_view?param=' + JSON.stringify(_this9.param) + \"&titlename=\" + _this9.title + \"&style=\" + JSON.stringify(style),\n events: {\n // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据\n ExitViewEvent: function ExitViewEvent(data) {\n var _$this$param$ViewPage;\n __f__(\"log\", data, \" at pages/modal/3200.vue:1080\");\n //退出页面后事件\n var eventid = (_$this$param$ViewPage = $this.param.ViewPage.Exit_View_Event) === null || _$this$param$ViewPage === void 0 ? void 0 : _$this$param$ViewPage.id;\n if (eventid) {\n try {\n var obj_attr = {\n 'S_ID': $this.styledef.form.objId\n };\n $this.styledef.form.attrs.forEach(function (attr) {\n obj_attr[attr.name] = attr.value;\n });\n // console.log(obj_attr);\n var input_param = _base.default.encode(JSON.stringify(obj_attr));\n $this.runCustomEvent({\n ed_type: 0,\n start_transaction: true,\n class_id: $this.param.DataCls.id,\n event_id: eventid,\n obj_attr: obj_attr,\n input_param: input_param\n });\n } catch (ex) {\n var tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误\",\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n }\n }\n });\n }\n }\n case 1:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11);\n }))();\n },\n //点击按钮\n onBtnClick: function onBtnClick(btn, style) {\n var that = this;\n if (btn.Prompt) {\n uni.showModal({\n title: '提示',\n content: btn.PromptContent || \"是否确定?\",\n success: function success(res) {\n if (res.confirm) {\n that.onButtonClicked(btn, style);\n // } else if (res.cancel) {\n // \tconsole.log('用户点击取消');\n }\n }\n });\n } else that.onButtonClicked(btn, style);\n },\n //点击按钮列表\n actionSheetTap: function actionSheetTap() {\n var that = this;\n var itemlist = [];\n this.param.ListPage.Page_Button.forEach(function (btn) {\n itemlist.push(btn.ShowName);\n });\n uni.showActionSheet({\n // title: '按钮列表',\n itemList: itemlist,\n success: function success(e) {\n __f__(\"log\", e.tapIndex, \" at pages/modal/3200.vue:1138\");\n var btn = that.param.ListPage.Page_Button[e.tapIndex];\n if (btn.Prompt) {\n uni.showModal({\n title: '提示',\n content: btn.PromptContent || \"是否确定?\",\n success: function success(res) {\n if (res.confirm) {\n that.onButtonClicked(btn);\n // } else if (res.cancel) {\n // \tconsole.log('用户点击取消');\n }\n }\n });\n } else that.onButtonClicked(btn);\n }\n });\n },\n //处理相关按钮\n onButtonClicked: function onButtonClicked(btn, style) {\n var _this10 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {\n var enviroment, tip;\n return _regenerator.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n style = style || '';\n try {\n enviroment = {\n button: \"top\",\n button_name: btn.ShowName,\n cls_id: btn.Cls_ID,\n function: \"3200\",\n master: {}\n };\n if (btn.FunCode == \"Add\" || btn.FunCode == \"Modify\") {\n if (btn.Edit_dlg.Model == \"small\") {\n _this10.showAddSmallDialog(btn, style, enviroment);\n }\n } else if (btn.FunCode == \"Delete\") {\n _this10.DeleteObj(btn, style, enviroment);\n // } else if (btn.FunCode == \"TriggerEvent\") {\n // this.triggerEvent(btn, style, enviroment);\n } else {\n uni.showModal({\n title: \"提示\",\n content: \"未实现\",\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误\",\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 2:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12);\n }))();\n },\n //新增修改小窗口数据\n showAddSmallDialog: function showAddSmallDialog(btn, style, enviroment) {\n var data = {\n Add_BtnName: btn.ShowName,\n EditDlgMode: btn.Edit_dlg.Model,\n clsid: this.param.DataCls.id,\n cls_name: this.param.DataCls.name,\n Edit_dlg: btn.Edit_dlg\n };\n var $this = this;\n uni.navigateTo({\n url: '../modal/3018?param=' + JSON.stringify(data) + \"&titlename=\" + btn.Edit_dlg.Name + \"&type=addDataObj\",\n events: {\n // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据\n addDataObj: function addDataObj(data) {\n __f__(\"log\", data, \" at pages/modal/3200.vue:1198\");\n $this.Refresh();\n }\n }\n });\n },\n //删除数据对象\n DeleteObj: function DeleteObj(btn, style, enviroment) {\n // console.log(style);\n var $this = this;\n uni.showModal({\n title: '提示',\n content: '确定删除该数据!',\n success: function success(res) {\n if (res.confirm) {\n var objID = style.form.objId;\n if (!style.form.objId.includes('{')) objID = '{' + style.form.objId + '}';\n var dataInfo = {\n class_id: btn.Cls_ID,\n class_name: '',\n obj_id: objID\n };\n // console.log(dataInfo);\n $this.$store.dispatch('dataObjDel', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n //执行后处理事件\n $this.AfterProcess_Event(btn.clsId, btm.AfterProcess_Event, enviroment);\n //清除当前列表数据\n $this.detail1StyleDefList.forEach(function (ele, index) {\n if (ele.form.objId == objID) {\n $this.detail1StyleDefList.splice(index, 1);\n }\n });\n uni.showModal({\n title: \"提示\",\n content: \"删除成功!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n } else {\n uni.showModal({\n title: \"错误6.1\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误6\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n } else if (res.cancel) {}\n }\n });\n },\n //执行后处理事件\n AfterProcess_Event: function AfterProcess_Event(clsId, afterProcess_Event, enviroment) {\n var _this11 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {\n var tip;\n return _regenerator.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n _context13.prev = 0;\n if (!afterProcess_Event.ID) {\n _context13.next = 4;\n break;\n }\n _context13.next = 4;\n return _this11.runCustomEvent({\n ed_type: 0,\n start_transaction: true,\n class_id: clsId,\n event_id: afterProcess_Event.ID\n });\n case 4:\n _context13.next = 10;\n break;\n case 6:\n _context13.prev = 6;\n _context13.t0 = _context13[\"catch\"](0);\n tip = typeof _context13.t0 == \"string\" ? _context13.t0 : _context13.t0.message;\n uni.showModal({\n title: \"错误7\",\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n case 10:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13, null, [[0, 6]]);\n }))();\n },\n ontap: function ontap(item) {\n var _this12 = this;\n //扫码功能\n // var $ele = e;\n //console.log(e.target)\n getApp().onScan(function (result) {\n __f__(\"log\", result.decodedata, \" at pages/modal/3200.vue:1271\");\n item.value = result.decodedata;\n uni.hideKeyboard();\n var $this = _this12;\n __f__(\"log\", item, \" at pages/modal/3200.vue:1276\");\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n var attr = item.fieldId;\n _this12.head_styledef.form.model[attr] = item.value;\n var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件\n var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //后图标点击事件\n var onSuffixClickEvent = item.bind.onSuffixClickEvent; //后图标点击回调\n var isflag = false;\n if (onChangeEvent.id) {\n //内容变化后事件\n $this.onChange(onChangeEvent);\n } else {\n $this.where = '';\n if (item.value) $this.where = item.fieldId + \" like '%\" + item.value + \"%'\";\n $this.query_id = '';\n $this.pageindex = 1;\n $this.detail1StyleDefList = [];\n $this.loadDataGetList();\n }\n if (item.value) {\n //第一个输入框不为空\n $this.focusMateria = true; //初始化,第二个输入框focus属性\n // setTimeout(function(){\n // \t$this.focusMateria=true; //第二个输入框获取焦点\n setTimeout(function () {\n uni.hideKeyboard();\n }, 100);\n // },500);\n }\n // if(onSuffixClickCallbackEvent.id){ //后图标点击事件\n // this.onSuffixClick(onSuffixClickCallbackEvent);\n // }\n // if(onSuffixClickEvent.id){ //后图标点击回调\n // this.onSuffixClickCallback(onSuffixClickEvent);\n // }\n }\n });\n },\n onEnterChange: function onEnterChange(item) {\n //回车,点击按钮,取消节点事件\n // console.log(item);\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n var attr = item.fieldId;\n this.head_styledef.form.model[attr] = item.value;\n var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件\n var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //后图标点击事件\n var onSuffixClickEvent = item.bind.onSuffixClickEvent; //后图标点击回调\n var isflag = false;\n if (onChangeEvent.id) {\n //内容变化后事件\n this.onChange(onChangeEvent);\n } else {\n this.where = '';\n if (item.value) this.where = item.fieldId + \" like '%\" + item.value + \"%'\";\n this.query_id = '';\n this.pageindex = 1;\n this.detail1StyleDefList = [];\n this.loadDataGetList();\n }\n // if(onSuffixClickCallbackEvent.id){ //后图标点击事件\n // this.onSuffixClick(onSuffixClickCallbackEvent);\n // }\n // if(onSuffixClickEvent.id){ //后图标点击回调\n // this.onSuffixClickCallback(onSuffixClickEvent);\n // }\n }\n },\n // 内容变化后事件\n onChange: function onChange(event) {\n var _this13 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {\n var obj_attr, input_param, $this, dataInfo, tip;\n return _regenerator.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n try {\n if (event.id) {\n obj_attr = _this13.head_styledef.form.model; // console.log(obj_attr);\n input_param = _base.default.encode(JSON.stringify(Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n })));\n $this = _this13;\n dataInfo = {\n ed_type: 0,\n start_transaction: true,\n class_id: _this13.$data.head_styledef.form.clsId,\n class_name: '',\n event_id: event.id,\n event_name: '',\n data_obj_id: '',\n obj_attr: obj_attr,\n prj_id: '',\n ref_cls_id: '',\n rel_obj_id: '',\n user_login: '',\n data_json: '',\n compose_info: '',\n ext_info: '',\n global_attr: '',\n input_param: input_param\n };\n _this13.$store.dispatch('runCustomEvent', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var result = ret.result;\n if (result.ret != 0) {\n var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n if (result.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + result.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n if (result.result_type == 0 && result.action) {\n result.action.forEach(function (item) {\n if (item.action_type == \"set_dlg_attr\") {\n // value = {\"attr\":\"xxx\", \"value\":\"xxx\"}\n var data = item.value;\n $this.$data.head_styledef.form.items.forEach( /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15(ele, index) {\n return _regenerator.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n data.forEach( /*#__PURE__*/function () {\n var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(ele2, index) {\n return _regenerator.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n if (ele.fieldId == ele2.attr) {\n ele.value = ele2.value;\n }\n case 1:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee14);\n }));\n return function (_x6, _x7) {\n return _ref4.apply(this, arguments);\n };\n }());\n case 1:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _callee15);\n }));\n return function (_x4, _x5) {\n return _ref3.apply(this, arguments);\n };\n }());\n }\n });\n } else {\n // this.detail2StyleDefList=[];\n if (result.info) {\n uni.showModal({\n title: \"提示\",\n content: result.info,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误8\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误8.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n }\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误8.2\",\n content: \"执行“内容变化后”事件失败:\" + tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _callee16);\n }))();\n },\n //点中表单\n onPanelClick: function onPanelClick(value) {\n //点击面板高亮显示\n // console.log(value);\n this.activelist.forEach(function (ele) {\n ele.active = false;\n });\n this.activelist[value].active = true;\n },\n //事件处理\n runCustomEvent: function runCustomEvent(dataInfo) {\n var _this14 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17() {\n var $this, tip;\n return _regenerator.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n try {\n $this = _this14;\n _this14.$store.dispatch('runCustomEvent', dataInfo).then(function (ret) {\n __f__(\"log\", ret, \" at pages/modal/3200.vue:1442\");\n if (ret.err_code == 0) {\n var result = ret.result;\n if (result.ret != 0) {\n var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n if (result.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + result.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n if (result.result_type == 0 && result.action) {\n result.action.forEach(function (item) {\n if (item.action_type == \"goback_to_pre_page\") {\n //返回上一页\n var value = item.value;\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\n } else if (item.action_type == \"hidden_button\") {\n //隐藏按钮\n var value = item.value;\n value.forEach(function (btn) {\n var index = $this.param.ListPage.Page_Button.findIndex(function (button) {\n return button.ShowName == btn;\n });\n if (index > -1) $this.param.ListPage.Page_Button.splice(index, 1);\n });\n // } else if(item.action_type == \"refresh_cur_row\"){ //\n // \tvar value = item.value;\n } else if (item.action_type == \"set_panel_html\") {\n //显示Html页面\n // var value = item.value;\n $this.ListHtml_Panel = item.value;\n // $this.detail1StyleDefList.forEach((ele,index)=>{\n // \tele.ListHtml_Panel = item.value[index];\n // });\n } else {\n uni.showModal({\n title: \"提示\",\n content: \"当前action_type:\" + item.action_type + \"未处理\",\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n });\n } else {\n // this.detail2StyleDefList=[];\n if (result.info) {\n uni.showModal({\n title: \"提示\",\n content: result.info,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误9\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误9.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误9.2\",\n content: \"执行事件失败:\" + tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context17.stop();\n }\n }\n }, _callee17);\n }))();\n },\n cancel: function cancel(e) {\n //取消\n var eventChannel = this.$scope.eventChannel;\n // const eventChannel = this.getOpenerEventChannel();\n eventChannel.emit('view_3201', \"\");\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\n },\n /**\r\n * 只支持[\"column1='A' or column2='B'\", \"column3='C' and column4='D'\", \"column5='E'\"]这种格式\r\n * {\r\n * \"model\": 0 / 1,\r\n * \"condition\":\r\n * [\r\n * [\r\n * { },\r\n * { },\r\n * { }\r\n * ],\r\n * [\r\n * { }\r\n * ],\r\n * [\r\n * { }\r\n * ]\r\n * ]\r\n * }\r\n */\n toWhereBase64String: function toWhereBase64String(list) {\n if (typeof list == 'string') list = [list];\n var sql = [];\n var seps = [' not in', ' in', '<>', '!=', '<=', '>=', '<', '=', '>', ' like'];\n list.forEach(function (ls) {\n var where = ls.trim().toLowerCase();\n if (where.startsWith('(') && where.endsWith(')')) where = where.replace(/^\\(/, '').replace(/\\)$/, '');\n if (where.includes(' and ')) {\n // 二级and放在第一级数组中\n where.split(' and ').forEach(function (li) {\n var l = li.trim();\n if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\\(/, '').replace(/\\)$/, '');\n var sep = '';\n for (var i = 0; i < seps.length; i++) {\n if (l.includes(seps[i])) {\n sep = seps[i];\n break;\n }\n }\n if (sep) {\n var _values$;\n var values = l.split(sep);\n var field = (_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.trim().replace(/^\\[/, '').replace(/\\]$/, '');\n var value = '';\n var op = sep.trim();\n if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) {\n value = l.replace(field, '').replace(/^\\s*(in|not in)\\s*/, '').trim();\n if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\\(/, '').replace(/\\)$/, '').trim();\n } else {\n var _values$2;\n value = (_values$2 = values[1]) === null || _values$2 === void 0 ? void 0 : _values$2.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n if (['in', 'not in'].includes(op)) {\n value = value.replace(/^\\(/, '').replace(/\\)$/, '');\n value = value.split(',').map(function (v) {\n return v.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n });\n }\n }\n sql.push([{\n field: field,\n value: value,\n op: op\n }]);\n }\n });\n } else if (where.includes(' or ')) {\n // 二级or放在第二级同一组数组中\n var s = [];\n where.split(' or ').forEach(function (li) {\n var l = li.trim();\n if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\\(/, '').replace(/\\)$/, '');\n var sep = '';\n for (var i = 0; i < seps.length; i++) {\n if (l.includes(seps[i])) {\n sep = seps[i];\n break;\n }\n }\n if (sep) {\n var _values$3;\n var values = l.split(sep);\n var field = (_values$3 = values[0]) === null || _values$3 === void 0 ? void 0 : _values$3.trim().replace(/^\\[/, '').replace(/\\]$/, '');\n var value = '';\n var op = sep.trim();\n if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) {\n value = l.replace(field, '').replace(/^\\s*(in|not in)\\s*/, '').trim();\n if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\\(/, '').replace(/\\)$/, '').trim();\n } else {\n var _values$4;\n value = (_values$4 = values[1]) === null || _values$4 === void 0 ? void 0 : _values$4.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n if (['in', 'not in'].includes(op)) {\n value = value.replace(/^\\(/, '').replace(/\\)$/, '');\n value = value.split(',').map(function (v) {\n return v.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n });\n }\n }\n sql.push([{\n field: field,\n value: value,\n op: op\n }]);\n }\n });\n sql.push(s);\n } else {\n var li = where;\n // 单一查询条件直接放在第一级数组中\n var l = li.trim();\n if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\\(/, '').replace(/\\)$/, '');\n var sep = '';\n for (var i = 0; i < seps.length; i++) {\n if (l.includes(seps[i])) {\n sep = seps[i];\n break;\n }\n }\n if (sep) {\n var _values$5;\n var values = l.split(sep);\n var field = (_values$5 = values[0]) === null || _values$5 === void 0 ? void 0 : _values$5.trim().replace(/^\\[/, '').replace(/\\]$/, '');\n var value = '';\n var op = sep.trim();\n if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) {\n value = l.replace(field, '').replace(/^\\s*(in|not in)\\s*/, '').trim();\n if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\\(/, '').replace(/\\)$/, '').trim();\n } else {\n var _values$6;\n value = (_values$6 = values[1]) === null || _values$6 === void 0 ? void 0 : _values$6.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n if (['in', 'not in'].includes(op)) {\n value = value.replace(/^\\(/, '').replace(/\\)$/, '');\n value = value.split(',').map(function (v) {\n return v.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n });\n }\n }\n sql.push([{\n field: field,\n value: value,\n op: op\n }]);\n }\n }\n });\n if (sql.length > 0) return _base.default.encode(JSON.stringify({\n model: 1,\n condition: sql\n }));else return '';\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvMzIwMC52dWUiXSwibmFtZXMiOlsibW9kdWxlcyIsIkJhc2U2NCIsIm9uTmF2aWdhdGlvbkJhckJ1dHRvblRhcCIsIm9uQmFja1ByZXNzIiwiZXZlbnRDaGFubmVsIiwiZGF0YSIsInRpdGxlIiwiaXNGaWx0ZXIiLCJwYXJhbSIsImZvY3VzTWF0ZXJpYSIsInN0eWxlZGVmIiwiaGVhZF9zdHlsZWRlZiIsImZvcm0iLCJpdGVtcyIsImRldGFpbDFfc3R5bGVkZWYiLCJkZXRhaWwxU3R5bGVEZWZMaXN0IiwiZGV0YWlsMl9zdHlsZWRlZiIsImRldGFpbDJTdHlsZURlZkxpc3QiLCJhY3RpdmVfaWQiLCJhY3RpdmVsaXN0Iiwid2hlcmUiLCJ3aGVyZXMiLCJvcmRlcmJ5IiwicXVlcnlfaWQiLCJwYWdlaW5kZXgiLCJwYWdlX3NpemUiLCJwYWdlX2NvdW50Iiwic2Nyb2xsVG9wIiwib2xkIiwiaXNTY3JvbGwiLCJMaXN0SHRtbF9QYW5lbCIsIkxpc3RQYWdlSHRtbF9TaG93IiwibmFtZSIsImV2ZW50IiwiaWQiLCJvbkxvYWQiLCJ1bmkiLCJtZXRob2RzIiwic2Nyb2xsdG9sb3dlciIsInNjcm9sbCIsIkhlYWRfVUlTdHlsZUdldEluZm8iLCIkdGhpcyIsImRhdGFJbmZvIiwiY2xhc3NfaWQiLCJ1aV9zdHlsZV9pZCIsImVsZSIsImNvbnRlbnQiLCJzaG93Q2FuY2VsIiwiY29uZmlybVRleHQiLCJEZXRhaWwxX1VJc3R5bGVHZXRJbmZvIiwiSHRtbF9VSXN0eWxlR2V0SW5mbyIsInN0eWxlX2RlZiIsIkRpY3RHZXRJbmZvIiwiZGljdF9pZCIsImRpY3RfbmFtZSIsImxpc3QiLCJpdGVtTmFtZSIsInN1Y2Nlc3MiLCJ0ZXh0IiwidmFsdWUiLCJhdHRyIiwib25TZWFyQ2hhbmdlIiwiZWRfdHlwZSIsInN0YXJ0X3RyYW5zYWN0aW9uIiwiZXZlbnRfaWQiLCJyZXN1bHQiLCJ0aXAiLCJsb2FkRGF0YUdldExpc3QiLCJtYXNrIiwiY29uZGl0aW9uIiwiYXR0cnMiLCJwcmpfcmVsX3R5cGUiLCJvcmRlcl9ieSIsInBhZ2UiLCJyZXQiLCJvYmoiLCJpbmZvIiwiU2VsQnV0X0NoZWNrZWQiLCJkZXRhaWxTdHlsZSIsImFjdGl2ZSIsImpzb25saXN0IiwiZXZlbnRpZCIsImRhdGFfanNvbiIsInNldFRpbWVvdXQiLCJSZWZyZXNoIiwidXJsIiwib25WaWV3UGFnZUNsaWNrIiwiZXZlbnRzIiwiRXhpdFZpZXdFdmVudCIsIm9ial9hdHRyIiwiaW5wdXRfcGFyYW0iLCJvbkJ0bkNsaWNrIiwidGhhdCIsImFjdGlvblNoZWV0VGFwIiwiaXRlbWxpc3QiLCJpdGVtTGlzdCIsIm9uQnV0dG9uQ2xpY2tlZCIsInN0eWxlIiwiZW52aXJvbWVudCIsImJ1dHRvbiIsImJ1dHRvbl9uYW1lIiwiY2xzX2lkIiwiZnVuY3Rpb24iLCJtYXN0ZXIiLCJzaG93QWRkU21hbGxEaWFsb2ciLCJBZGRfQnRuTmFtZSIsIkVkaXREbGdNb2RlIiwiY2xzaWQiLCJjbHNfbmFtZSIsIkVkaXRfZGxnIiwiYWRkRGF0YU9iaiIsIkRlbGV0ZU9iaiIsImNsYXNzX25hbWUiLCJvYmpfaWQiLCJBZnRlclByb2Nlc3NfRXZlbnQiLCJhZnRlclByb2Nlc3NfRXZlbnQiLCJvbnRhcCIsImdldEFwcCIsIml0ZW0iLCJvbkVudGVyQ2hhbmdlIiwib25DaGFuZ2UiLCJKU09OIiwiT2JqZWN0IiwiZXZlbnRfbmFtZSIsImRhdGFfb2JqX2lkIiwicHJqX2lkIiwicmVmX2Nsc19pZCIsInJlbF9vYmpfaWQiLCJ1c2VyX2xvZ2luIiwiY29tcG9zZV9pbmZvIiwiZXh0X2luZm8iLCJnbG9iYWxfYXR0ciIsIm9uUGFuZWxDbGljayIsInJ1bkN1c3RvbUV2ZW50IiwiZGVsdGEiLCJjYW5jZWwiLCJ0b1doZXJlQmFzZTY0U3RyaW5nIiwic2VwIiwic3FsIiwiZmllbGQiLCJvcCIsIm1vZGVsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFxbEJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFDQTtFQUNBQTtJQUNBQztFQUNBO0VBQ0FDO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsbUJBQ0EsMkJBRUE7RUFDQTtFQUNBQztJQUNBO0lBQ0E7SUFDQTtJQUNBQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztRQUNBQztVQUNBQztRQUNBO01BQ0E7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUo7TUFDQUs7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7UUFDQUQ7TUFDQTtNQUNBRTtNQUNBO01BQ0FDO01BQ0FDO1FBQ0FDO1FBQ0FD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QztRQUNBeEU7TUFDQSxTQUVBO0lBQ0E7RUFFQTtBQUNBO0FBQUEsMkIiLCJmaWxlIjoiMTY1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHN0eWxlPlxyXG4udi1oZWFkU3R5bGU6Zmlyc3QtY2hpbGR7XHJcblx0bWFyZ2luLXRvcDogMTVycHg7XHJcbn1cclxuLnYtaGVhZFN0eWxlIC50eHRfdGl0bGV7XHJcbiAgZm9udC1zaXplOiAzNHJweDtcclxuICB0ZXh0LWFsaWduOiByaWdodDtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgdmVydGljYWwtYWxpZ246IDI0cnB4O1xyXG59XHJcbi52LWhlYWRTdHlsZSBpbnB1dHtcclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0LyogYm9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTsgKi9cclxuXHQvKiB3aWR0aDogNjUlOyAqL1xyXG5cdHdpZHRoOiA4NSU7ICAgIFxyXG5cdGhlaWdodDogNTJycHg7XG4gICAgbGluZS1oZWlnaHQ6IDM0cnB4O1xyXG5cdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiAjMmQ4Y2YwO1xyXG5cdHBhZGRpbmc6IDEwcnB4IDhycHggMTJycHg7XHJcblx0Zm9udC1zaXplOiAzNHJweDtcclxuXHRmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxuXHRtYXJnaW4tdG9wOiA0cnB4O1xyXG59XHJcbi52LWhlYWRTdHlsZSBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XHJcblx0Zm9udC1zaXplOiAxMnJweDtcclxufVxyXG4uaW5wdXQtd3JhcHBlcntcclxuXHRib3JkZXI6IDFweCBzb2xpZCAjZDVkNWQ1O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogNjUlOyAgICBcclxuXHRsaW5lLWhlaWdodDogMjJycHg7XG59XHJcbltudnVlXSB1bmktdmlldyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlcjogMCBzb2xpZCAjMDAwO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XHJcbi51bmktaW5wdXQge1xyXG5cdC8qIGJvcmRlcjogbm9uZTsgKi9cbn1cclxuLnVuaS1pY29ue1xyXG5cdC8qIGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgKi9cclxuXHR3aWR0aDogOCU7XG4gICAgZm9udC1mYW1pbHk6IHVuaWljb25zO1xuICAgIGZvbnQtc2l6ZTogNDBycHg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgLyogd2lkdGg6IDQ4cnB4OyAqL1xuICAgIGhlaWdodDogNDhycHg7XG4gICAgbGluZS1oZWlnaHQ6IDQ4cnB4O1xyXG5cdGNvbG9yOiAjMmQ4Y2YwO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdHZlcnRpY2FsLWFsaWduOiAxOHJweDtcbn1cclxuLnYtY29udGVudHtcclxuXHRoZWlnaHQ6IDk0NXJweDtcclxuXHRvdmVyZmxvdzogaGlkZTtcclxuXHQvKiBib3JkZXI6MC4xcHggc29saWQgcmVkOyAqL1xyXG59XHJcbi52aWV3LWNvbnRlbnR7XHJcblx0bWFyZ2luLXRvcDogMTBycHg7XHJcbn1cbi5kdi1wYW5lbC1ia2NvbG9ye1xuICBiYWNrZ3JvdW5kLWNvbG9yOiNlZmVmZWY7XG59XHJcbi5kdi1wYW5lbHsgXG4gICAgYmFja2dyb3VuZC1jb2xvcjojZWZlZmVmO1xuICAgIHBhZGRpbmc6IDIwcnB4IDIwcnB4IDIwcnB4IDBweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnJweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHJweDtcclxuXHR0ZXh0LWFsaWduOiByaWdodDtcclxufVxyXG4uZHYtbGlzdEh0bWwtUGFuZWwsXG4uZHYtcGFuZWwtaW5wdXR7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB3aWR0aDogOTElO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxyXG4uZHYtcGFuZWwtYnV0aWNvbntcbiAgbGluZS1oZWlnaHQ6IDBycHg7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIC8qIGZvbnQtc2l6ZTogMTdweDsgKi9cbiAgcGFkZGluZzogMCAzMHJweDtcbn1cbi5kdi1wYW5lbC1idXRpY29uIC5idG4tcGFkZGluZ3tcbiAgICBwYWRkaW5nOiAwcnB4IDIwcnB4O1xyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxyXG4uZHYtcGFuZWwtYnV0aWNvbiBhIGkgeyBcclxuXHRmb250LXNpemU6IDM4cnB4O1xufVxyXG4uZHYtcGFuZWwtYnV0aWNvbiBidXR0b257XHJcblx0bWluLXdpZHRoOiAxMjBycHg7XG4gICAgZm9udC1zaXplOiAzMnJweDtcclxuXHRwYWRkaW5nOiAyMHJweCAyMHJweCAwcnB4IDIwcnB4O1xyXG5cdGxpbmUtaGVpZ2h0OiAxO1xyXG5cdGJhY2tncm91bmQ6ICM0RDZBRjQ7XHJcblx0Ym9yZGVyOiBub25lO1xyXG5cdGNvbG9yOiAjZmZmO1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdGJvcmRlci1yYWRpdXM6IDhycHg7XG59XHJcbi5kdi1wYW5lbCAudHh0X3RpdGxle1xyXG4gIGZvbnQtc2l6ZTogMzRycHg7XHJcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcbi5kdi1wYW5lbCBpbnB1dHtcclxuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRib3JkZXI6IDJycHggc29saWQgI2Q1ZDVkNTtcclxuXHR3aWR0aDogNjglOyBcclxuXHRoZWlnaHQ6IDUycnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAzNHJweDtcclxuXHRiYWNrZ3JvdW5kOiAjRkZGO1xyXG5cdGJvcmRlci1yYWRpdXM6IDE0cnB4ICFpbXBvcnRhbnQ7XHJcblx0Y29sb3I6ICMyZDhjZjA7XHJcblx0cGFkZGluZzogNnJweCA4cnB4IDhycHg7XHJcblx0Zm9udC1zaXplOiAzMnJweDtcclxuXHRmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxuXHRtYXJnaW4tdG9wOiAwcnB4O1xyXG59XHJcbi5kdi1wYW5lbCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XHJcblx0Zm9udC1zaXplOiAxMHJweDtcclxufVxyXG4uZHYtcGFuZWwgLmZvcm0taXRlbS1zcGFue1xyXG5cdHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcclxuICAgIGNvbG9yOiAjMmQ4Y2YwO1xyXG5cdHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcblx0d29yZC1icmVhazogYnJlYWstYWxsO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdHdpZHRoOiBjYWxjKDEwMCUgLSAxMDBweCk7XHJcbn1cclxuLmR2LXBhbmVsLWJ1dHRvbntcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cclxuLmR2LXBhbmVsLWJ1dHRvbiBjaGVja2JveC1ncm91cCB7IFxyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cclxuLmR2LXBhbmVsLWJ1dHRvbiB1bmktY2hlY2tib3ggLnVuaS1jaGVja2JveC1pbnB1dHtcclxuXHR3aWR0aDogMzRycHg7XHJcblx0aGVpZ2h0OiAzNHJweDtcclxufVxyXG4uZHYtcGFuZWwtYnV0dG9uIGEgaSB7IFxyXG5cdGZvbnQtc2l6ZTogMzZycHg7XG59XHJcbi5kdi1wYW5lbC1idXR0b24gYnV0dG9uIHsgXG5cdGhlaWdodDogNTBycHg7XG5cdGZvbnQtc2l6ZTogMjZycHg7XG5cdHBhZGRpbmc6IDAgMjRycHg7XHJcbn1cclxuLnZpZXctZmxvb3J7XHJcblx0cGFkZGluZzogMCAyMHJweDtcclxuXHQvKiBib3JkZXI6MXB4IHNvbGlkIHJlZDsgKi9cclxufVxyXG5idXR0b24uYnRuX3JlZnJlc2gge1xyXG5cdHdpZHRoOjQ5LjUlO1xyXG5cdG1hcmdpbi10b3A6IDI1cnB4O1xyXG5cdHBhZGRpbmc6IDIwcnB4O1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0YmFja2dyb3VuZDogIzRENkFGNDtcclxuXHRib3JkZXI6IG5vbmU7XHJcblx0Y29sb3I6ICNmZmY7XHJcbiAgICBmb250LXNpemU6IDM4cnB4O1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdGZsb2F0OiBsZWZ0O1xyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG5idXR0b24uYnRuX2NhbmNlbCB7XHJcblx0d2lkdGg6NDkuNSU7XHJcblx0bWFyZ2luLXRvcDogMjVycHg7XHJcblx0cGFkZGluZzogMjBycHg7XHJcblx0bGluZS1oZWlnaHQ6IDEuNTtcclxuXHRiYWNrZ3JvdW5kOiAjZmZmO1xyXG5cdGJvcmRlcjogbm9uZTtcclxuXHRjb2xvcjogIzAwMDtcclxuICAgIGZvbnQtc2l6ZTogMzhycHg7XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0ZmxvYXQ6IGxlZnQ7XHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdG1hcmdpbi1yaWdodDogMjBycHg7XHJcbn1cclxuXG4uYmstYWN0aXZle1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRDZGQ0IyO1xufVxyXG4udW5pLXBhZGRpbmctd3JhcHtcclxuICBtYXJnaW4tdG9wOiAyMHJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk4REFFQTtcbiAgd2lkdGg6IDEwNHJweDtcbiAgaGVpZ2h0OiA4MHJweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiA1NHJweDtcbiAgcGFkZGluZzogMjRycHggMCAwIDA7XG4gIGZsb2F0OiByaWdodDtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XHJcbi51bmktcGFkZGluZy13cmFwIGF7XG4gIGZvbnQtc2l6ZTogNDBycHg7XG59XHJcbiNkdl9zZWxlY3R7XHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdHdpZHRoOiA2NiU7IFxyXG5cdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiAjMmQ4Y2YwO1xyXG5cdC8qIHBhZGRpbmc6IDEwcnB4IDhycHggMTJycHg7ICovXHJcblx0Zm9udC1zaXplOiAzNHJweDtcclxuXHRmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxuXHRtYXJnaW4tdG9wOiAwcnB4O1xyXG5cdHZlcnRpY2FsLWFsaWduOiAyMHJweDtcclxufVxyXG4jZHZfc2VsZWN0IC51bmktc2VsZWN0e1xyXG5cdGJvcmRlcjogMnJweCBzb2xpZCAjY2NjO1xyXG5cdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcclxuXHRjb2xvcjogIzJkOGNmMDtcdFxyXG59XHJcbiNkdl9zZWxlY3QgLnVuaS1zZWxlY3RfX2lucHV0LXRleHR7XHJcblx0Y29sb3I6ICMyZDhjZjA7XHRcclxufVxyXG4uaW5wdXQtZGlzYWJsZWR7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uZHZfcGFuZWxfY29uZGVudHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6I0Q2RkNCMjtcclxuICAgIHBhZGRpbmc6IDIwcnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMTJycHg7XHJcbn1cclxuLmR2X3BhbmVsX2F0dHJ7XHJcblx0bWFyZ2luLWJvdHRvbTogMTBycHg7XHJcbn1cclxuLmR2X3BhbmVsX2F0dHIgLmR2X2lubGluZXtcclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcbi5kdl9wYW5lbF9hdHRyIGl7XHJcblx0dmVydGljYWwtYWxpZ246IDI1cHg7XHJcblx0bWFyZ2luOiAwIDEwcHg7XHJcbn1cclxuLmR2X3BhbmVsX2F0dHIgLmR2X2lubGluZSBwe1xyXG5cdGJhY2tncm91bmQ6ICM0RDZBRjQ7XHJcblx0Y29sb3I6ICNmZmY7XHJcblx0cGFkZGluZzogMTBycHggMTVycHg7XHJcblx0bGluZS1oZWlnaHQ6IDEuNTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDEwcnB4O1xyXG59XHJcbi5zY3JvbGwtWSB7XHJcblx0aGVpZ2h0OiAxMDAlO1xyXG59XHJcbi5zY3JvbGwtdmlld19IIHtcclxuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG59XHJcblxuLmR2X3BhbmVsX2NvbnRlbnR7XG4gICAgbWFyZ2luOiAwIDEwcHg7XG59XHJcbi5kdl9wYW5lbF9jb250ZW50IC5kdl9wYW5lbF9hdHRye1xuICAgIG1hcmdpbi1ib3R0b206IDVweDtcbn1cclxuLmR2X3BhbmVsX2NvbnRlbnQgLmR2X3BhbmVsX2F0dHIgaXtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogMjJweDtcbiAgICBtYXJnaW46IDAgMTBweDtcbn1cbi5kdl9wYW5lbF9jb250ZW50IC5kdl9wYW5lbF9hdHRyIC5jaXJjZWxfbm9kZXt9XG4vKiDmmK/oj7HlvaLnmoQgKi9cbi5kdl9wYW5lbF9jb250ZW50IC5kdl9wYW5lbF9hdHRyIC5kdl9kaWFtb25kX25vZGUge31cbi5kdl9wYW5lbF9jb250ZW50IC5kdl9wYW5lbF9hdHRyIC5kdl9ib3hfbm9kZXtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XHJcbi5kdl9wYW5lbF9jb250ZW50IC5kdl9wYW5lbF9hdHRyIC5kdl9ib3hfbm9kZSBwe1xuICAgIGJhY2tncm91bmQ6ICM0RDZBRjQ7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogM3B4IDdweDtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbn1cbjwvc3R5bGU+XHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuXHQuZGVtby11bmktcm93IHtcblx0XHRtYXJnaW4tYm90dG9tOiAwcHg7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblx0Ojp2LWRlZXAgLnVuaS1yb3cge1xuXHRcdG1hcmdpbi1ib3R0b206IDBweDtcblx0fVxyXG5cdC52aWV3LXRhYnBhZ2UgOjp2LWRlZXAgLnVuaS1yb3cgIHtcblx0XHRtYXJnaW4tYm90dG9tOiA1cHg7XG5cdH1cblx0LmRlbW8tdW5pLWNvbCB7XG5cdFx0aGVpZ2h0OiAzNnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDVweDtcblx0fVxyXG5cdC5kZW1vLXVuaS1yb3cgLnVuaS1pbnB1dHtcclxuXHRcdHdpZHRoOiBjYWxjKDEwMCUgLSAxMjBweCk7XHJcblx0fVxuPC9zdHlsZT5cblxyXG48dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJjb250ZW50XCI+XHJcblx0XHQ8IS0tIDx2aWV3IGNsYXNzPVwiZHZfcGFuZWxfY29uZGVudFwiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImR2X3BhbmVsX2F0dHJcIj5cclxuXHRcdFx0XHQ8bGFiZWw+Tm/vvJo8L2xhYmVsPlxyXG5cdFx0XHRcdDxzcGFuPlRBMjQwMTI5LTAwMDAxPC9zcGFuPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiZHZfcGFuZWxfYXR0clwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiZHZfaW5saW5lXCI+XHJcblx0XHRcdFx0XHQ8cD7mr5vmlpnnur/ovrk8L3A+XHJcblx0XHRcdFx0XHQ8bGFiZWw+TDAwMi0xPC9sYWJlbD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PGkgY2xhc3M9XCJtb2JveC1ub3JtYWwtcmlnaHRcIj48L2k+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkdl9pbmxpbmVcIj5cclxuXHRcdFx0XHRcdDxwPuavm+aWmee6v+i+uTwvcD5cclxuXHRcdFx0XHRcdDxsYWJlbD5MMDAzLTM8L2xhYmVsPlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PiAtLT5cclxuXHRcdFxyXG5cdCAgPHZpZXcgY2xhc3M9XCJ2LWNvbnRlbnRcIj5cclxuXHRcdDwhLS0g6KGo5aS05qC35byPIC0tPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJ2LWhlYWRTdHlsZVwiIHYtZm9yPVwiKGl0ZW0saW5kZXgpIGluIGhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1wiIHYtaWY9XCJpc0ZpbHRlcj09dHJ1ZVwiPlxyXG5cdFx0XHQ8dGV4dCBjbGFzcz1cInR4dF90aXRsZVwiIDpzdHlsZT1cInsnd2lkdGgnOml0ZW0ubGFiZWxXaWR0aCsncHgnfVwiPnt7aXRlbS5sYWJlbH1977yaPC90ZXh0PlxyXG5cdFx0XHQ8IS0tIOS4i+aLieahhi3ljZXpgIkgaXRlbS51c2VEaWN0P2l0ZW0uZGljdDppdGVtLnNlbGVjdGlvbnMtLT5cclxuXHRcdFx0PHVuaS1kYXRhLXNlbGVjdCBpZD1cImR2X3NlbGVjdFwiIHYtaWY9XCJpdGVtLm5hbWU9PSdTZWxlY3QnXCJcclxuXHRcdFx0XHQ6Y2xhc3M9XCJpdGVtLmRpc2FibGVkPydpbnB1dC1kaXNhYmxlZCc6JydcIlxyXG5cdFx0XHRcdHYtbW9kZWw9XCJpdGVtLnZhbHVlXCJcclxuXHRcdFx0XHQ6bG9jYWxkYXRhPVwiaXRlbS5kaWN0XCJcclxuXHRcdFx0XHRAY2hhbmdlPVwib25DaGFuZ2UoaXRlbSlcIlxyXG5cdFx0XHRcdDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdDpjbGVhcj1cImZhbHNlXCJcclxuXHRcdFx0PjwvdW5pLWRhdGEtc2VsZWN0PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0LXdyYXBwZXJcIiB2LWlmPVwiaXRlbS5uYW1lPT0nSW5wdXQnIHx8IGl0ZW0ubmFtZT09J0lucHV0TnVtYmVyJ1wiPlxyXG5cdFx0XHRcdDx0ZXh0IHYtaWY9XCJpdGVtLnNldHRpbmcucHJlZml4XCIgXHJcblx0XHRcdFx0XHRjbGFzcz1cInVuaS1pY29uXCIgXHJcblx0XHRcdFx0XHQ6Y2xhc3M9XCJbaXRlbS5zZXR0aW5nLnByZWZpeF1cIlxyXG5cdFx0XHRcdFx0QGNsaWNrPVwib25FbnRlckNoYW5nZShpdGVtKVwiPiYjeGU1Njg7PC90ZXh0PlxyXG5cdFx0XHRcdDxpbnB1dCBjbGFzcz1cInVuaS1pbnB1dFwiXHJcblx0XHRcdFx0XHQ6Y2xhc3M9XCJpdGVtLmRpc2FibGVkPydpbnB1dC1kaXNhYmxlZCc6JydcIlxyXG5cdFx0XHRcdFx0OnR5cGU9XCJpdGVtLm5hbWU9PSdJbnB1dCc/J3RleHQnOidudW1iZXInXCIgXHJcblx0XHRcdFx0XHR2LW1vZGVsPVwiaXRlbS52YWx1ZVwiXHJcblx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdFx0XHRcdDpwbGFjZWhvbGRlcj1cIml0ZW0ucGxhY2Vob2xkZXJcIlxyXG5cdFx0XHRcdFx0OnN0eWxlPVwieyd3aWR0aCc6aXRlbS5zZXR0aW5nLnByZWZpeCAmJiBpdGVtLnNldHRpbmcuc3VmZml4Pyc3OCUnOml0ZW0uc2V0dGluZy5wcmVmaXggfHwgaXRlbS5zZXR0aW5nLnN1ZmZpeD8nODclJzonOTYlJ31cIiBcclxuXHRcdFx0XHRcdDpmb2N1cz1cImZvY3VzTWF0ZXJpYVwiXHJcblx0XHRcdFx0XHRAZm9jdXM9XCJvbnRhcChpdGVtKVwiIFxyXG5cdFx0XHRcdFx0QGtleXVwLmVudGVyPVwib25FbnRlckNoYW5nZShpdGVtKVwiXHJcblx0XHRcdFx0XHRAYmx1cj1cIm9uRW50ZXJDaGFuZ2UoaXRlbSlcIlxyXG5cdFx0XHRcdC8+XHJcblx0XHRcdFx0PHRleHQgdi1pZj1cIml0ZW0uc2V0dGluZy5zdWZmaXhcIiBcclxuXHRcdFx0XHRcdGNsYXNzPVwidW5pLWljb25cIiBcclxuXHRcdFx0XHRcdDpjbGFzcz1cIltpdGVtLnNldHRpbmcuc3VmZml4XVwiXHJcblx0XHRcdFx0XHRAY2xpY2s9XCJvbkVudGVyQ2hhbmdlKGl0ZW0pXCI+JiN4ZTU2ODs8L3RleHQ+XHJcblx0XHQgICAgPC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0XHJcblx0XHQ8c2Nyb2xsLXZpZXcgOnNjcm9sbC10b3A9XCJzY3JvbGxUb3BcIiA6c2Nyb2xsLXk9XCJ0cnVlXCIgY2xhc3M9XCJzY3JvbGwtWVwiXHJcblx0XHQgIEBzY3JvbGx0b2xvd2VyPVwic2Nyb2xsdG9sb3dlclwiIEBzY3JvbGw9XCJzY3JvbGxcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ2aWV3LWNvbnRlbnRcIiBpZD1cInRhYnBhbmVsXCI+XHJcblx0XHRcdCAgPHZpZXcgY2xhc3M9XCJkdi1wYW5lbCBkdi1wYW5lbC1ia2NvbG9yXCIgdi1mb3I9XCIoc3R5bGUsaWkpIGluIGRldGFpbDFTdHlsZURlZkxpc3RcIiBcclxuXHRcdFx0XHRAY2xpY2s9XCJvblBhbmVsQ2xpY2soaWkpXCJcclxuXHRcdFx0XHQ6aWQ9XCIncGFuZWwnK3N0eWxlLmZvcm0uaHRtbG9iaklkXCJcclxuXHRcdFx0XHQ6Y2xhc3M9XCJhY3RpdmVsaXN0W2lpXS5hY3RpdmU9PXRydWU/J2JrLWFjdGl2ZSc6JydcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZHYtcGFuZWwtYnV0dG9uXCIgdi1pZj1cInBhcmFtLkxpc3RQYWdlLkNoZWNrQm94PT10cnVlXCI+XHJcblx0XHRcdFx0ICA8Y2hlY2tib3gtZ3JvdXA+XHJcblx0XHRcdFx0XHQ8bGFiZWw+XHJcblx0XHRcdFx0XHRcdDxjaGVja2JveCA6dmFsdWU9XCJzdHlsZS5TZWxCdXRfQ2hlY2tlZFwiIDpjaGVja2VkPVwic3R5bGUuU2VsQnV0X0NoZWNrZWRcIiAvPlxyXG5cdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHQgIDwvY2hlY2tib3gtZ3JvdXA+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PCEtLSBIVE1M6aG16Z2i57G75Z6L5pi+56S6IC0tPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJkdi1saXN0SHRtbC1QYW5lbFwiIHYtaWY9XCJMaXN0SHRtbF9QYW5lbFwiIHYtaHRtbD1cIkxpc3RIdG1sX1BhbmVsW2lpXVwiXHJcblx0XHRcdFx0ICA6c3R5bGU9XCJwYXJhbS5MaXN0UGFnZS5DaGVja0JveD09dHJ1ZSAmJiBwYXJhbS5MaXN0UGFnZS5DbGlja19WaWV3PT10cnVlPyd3aWR0aDo4NSU7JzpcclxuXHRcdFx0XHQgIHBhcmFtLkxpc3RQYWdlLkNoZWNrQm94PT1mYWxzZSAmJiBwYXJhbS5MaXN0UGFnZS5DbGlja19WaWV3PT10cnVlPyd3aWR0aDo5MSU7JzpcclxuXHRcdFx0XHQgIHBhcmFtLkxpc3RQYWdlLkNoZWNrQm94PT10cnVlICYmIHBhcmFtLkxpc3RQYWdlLkNsaWNrX1ZpZXc9PWZhbHNlPyd3aWR0aDo4OCU7Jzond2lkdGg6MTAwJTsnXCI+XHJcblx0XHRcdFx0XHQ8IS0tIDxkaXYgY2xhc3M9XCJkdl9wYW5lbF9jb250ZW50XCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJkdl9wYW5lbF9hdHRyXCI+XHJcblx0XHRcdFx0XHRcdCAgPGxhYmVsPk5v77yaPC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0ICA8c3Bhbj5UQTI0MDEyOS0wMDAwMTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJkdl9wYW5lbF9hdHRyXCI+XHJcblx0XHRcdFx0XHRcdCAgPGRpdiBjbGFzcz1cImR2X2JveF9ub2RlXCI+XHJcblx0XHRcdFx0XHRcdFx0PHA+5q+b5paZ57q/6L65PC9wPlxyXG5cdFx0XHRcdFx0XHRcdDxsYWJlbD5MMDAyLTE8L2xhYmVsPlxyXG5cdFx0XHRcdFx0XHQgIDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQgIDxpIGNsYXNzPVwibW9ib3gtbm9ybWFsLXJpZ2h0XCI+PC9pPlxyXG5cdFx0XHRcdFx0XHQgIDxkaXYgY2xhc3M9XCJkdl9ib3hfbm9kZVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxwPuavm+aWmee6v+i+uTwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8bGFiZWw+TDAwMy0zPC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0ICA8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L2Rpdj4gLS0+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PCEtLSDoh6rlrprkuYnooajljZXnsbvlnovmmL7npLogLS0+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImR2LXBhbmVsLWlucHV0XCIgdi1pZj1cIiFMaXN0SHRtbF9QYW5lbFwiXHJcblx0XHRcdFx0ICA6c3R5bGU9XCJwYXJhbS5MaXN0UGFnZS5DaGVja0JveD09dHJ1ZSAmJiBwYXJhbS5MaXN0UGFnZS5DbGlja19WaWV3PT10cnVlPyd3aWR0aDo4NSU7JzpcclxuXHRcdFx0XHQgIHBhcmFtLkxpc3RQYWdlLkNoZWNrQm94PT1mYWxzZSAmJiBwYXJhbS5MaXN0UGFnZS5DbGlja19WaWV3PT10cnVlPyd3aWR0aDo5MSU7JzpcclxuXHRcdFx0XHQgIHBhcmFtLkxpc3RQYWdlLkNoZWNrQm94PT10cnVlICYmIHBhcmFtLkxpc3RQYWdlLkNsaWNrX1ZpZXc9PWZhbHNlPyd3aWR0aDo4OCU7Jzond2lkdGg6MTAwJTsnXCI+XHJcblx0XHRcdFx0ICA8ZGl2IHYtZm9yPVwiKGl0ZW0saW5kZXgpIGluIHN0eWxlLmZvcm0uaXRlbXNcIj5cclxuXHRcdFx0XHRcdDwhLS0g5pmu6YCa5biD5bGAIC0tPlxyXG5cdFx0XHRcdFx0PHZpZXcgdi1pZj1cIml0ZW0ubmFtZSE9J0xheW91dCdcIj5cclxuXHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eHRfdGl0bGVcIiA6c3R5bGU9XCJ7J3dpZHRoJzppdGVtLmxhYmVsV2lkdGgrJ3B4J31cIj57e2l0ZW0ubGFiZWx9fe+8mjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb3JtLWl0ZW0tc3BhblwiIHYtaWY9XCJpdGVtLmRpc2FibGVkXCI+e3tpdGVtLnZhbHVlfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwhLS0g5paH5pys5qGGL+aVsOWtl+ahhiAtLT5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkdl9pbnB1dFwiIHYtaWY9XCIoaXRlbS5uYW1lPT0nSW5wdXQnIHx8IGl0ZW0ubmFtZT09J0lucHV0TnVtYmVyJykgJiYgIWl0ZW0uZGlzYWJsZWRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCB2LWlmPVwiaXRlbS5zZXR0aW5nLnByZWZpeFwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ1bmktaWNvblwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0OmNsYXNzPVwiW2l0ZW0uc2V0dGluZy5wcmVmaXhdXCJcclxuXHRcdFx0XHRcdFx0XHRcdEBjaGFuZ2U9XCJvbkNoYW5nZShpdGVtKVwiPiYjeGU1Njg7PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cInVuaS1pbnB1dFwiIDpjbGFzcz1cIml0ZW0uZGlzYWJsZWQ/J2lucHV0LWRpc2FibGVkJzonJ1wiIFxyXG5cdFx0XHRcdFx0XHRcdFx0OnR5cGU9XCJpdGVtLm5hbWU9PSdJbnB1dCc/J3RleHQnOml0ZW0ubmFtZT09J0lucHV0TnVtYmVyJz8nbnVtYmVyJzondGV4dCdcIiBcclxuXHRcdFx0XHRcdFx0XHRcdHYtbW9kZWw9XCJpdGVtLnZhbHVlXCJcclxuXHRcdFx0XHRcdFx0XHRcdDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0OnBsYWNlaG9sZGVyPVwiaXRlbS5wbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0XHRcdFx0XHQ6c3R5bGU9XCJ7J3dpZHRoJzppdGVtLnNldHRpbmcucHJlZml4ICYmIGl0ZW0uc2V0dGluZy5zdWZmaXg/Jzc4JSc6aXRlbS5zZXR0aW5nLnByZWZpeCB8fCBpdGVtLnNldHRpbmcuc3VmZml4Pyc4NyUnOic5NiUnfVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0OmZvY3VzPVwiZm9jdXNNYXRlcmlhXCJcclxuXHRcdFx0XHRcdFx0XHRcdEBmb2N1cz1cIm9udGFwKGl0ZW0pXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRAYmx1cj1cIm9uZXZlbnQoaXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQgdi1pZj1cIml0ZW0uc2V0dGluZy5zdWZmaXhcIiBcclxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidW5pLWljb25cIiBcclxuXHRcdFx0XHRcdFx0XHRcdDpjbGFzcz1cIltpdGVtLnNldHRpbmcuc3VmZml4XVwiXHJcblx0XHRcdFx0XHRcdFx0XHRAY2xpY2s9XCJvbkNoYW5nZShpdGVtKVwiPiYjeGU1Njg7PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDwhLS0g5LiL5ouJ5qGGLeWNlemAiSBpdGVtLnVzZURpY3Q/aXRlbS5kaWN0Oml0ZW0uc2VsZWN0aW9ucy0tPlxyXG5cdFx0XHRcdFx0XHQ8dW5pLWRhdGEtc2VsZWN0IGlkPVwiZHZfc2VsZWN0XCIgdi1pZj1cIml0ZW0ubmFtZT09J1NlbGVjdCcgJiYgIWl0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdDpjbGFzcz1cIml0ZW0uZGlzYWJsZWQ/J2lucHV0LWRpc2FibGVkJzonJ1wiIFxyXG5cdFx0XHRcdFx0XHRcdHYtbW9kZWw9XCJpdGVtLnZhbHVlXCJcclxuXHRcdFx0XHRcdFx0XHQ6bG9jYWxkYXRhPVwiaXRlbS5kaWN0XCJcclxuXHRcdFx0XHRcdFx0XHRAY2hhbmdlPVwib25DaGFuZ2UoaXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRcdDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdDpjbGVhcj1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0PjwvdW5pLWRhdGEtc2VsZWN0PlxyXG5cdFx0XHRcdFx0XHQ8IS0tIOWkmuihjOaWh+acrCAtLT5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCIgdi1pZj1cIml0ZW0ubmFtZT09J1RleHRhcmVhJyAmJiAhaXRlbS5kaXNhYmxlZFwiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0YXJlYSBjbGFzcz1cInVuaS1pbnB1dFwiIDp2YWx1ZT1cIml0ZW0udmFsdWVcIiBcclxuXHRcdFx0XHRcdFx0XHQgIDpjbGFzcz1cIml0ZW0uZGlzYWJsZWQ/J2lucHV0LWRpc2FibGVkJzonJ1wiIFxyXG5cdFx0XHRcdFx0XHRcdCAgOnBsYWNlaG9sZGVyPVwiaXRlbS5wbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0XHRcdFx0ICBAYmx1cj1cIm9uTW9kZWxWYWx1ZShpdGVtKVwiIFxyXG5cdFx0XHRcdFx0XHRcdCAgc3R5bGU9XCJoZWlnaHQ6NjBweDtcIiBcclxuXHRcdFx0XHRcdFx0XHQgIDpzdHlsZT1cInsnd2lkdGgnOic5NiUnfVwiIFxyXG5cdFx0XHRcdFx0XHRcdCAgOmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0PjwvdGV4dGFyZWE+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PCEtLSDlpI3pgInmoYYgLS0+XHJcblx0XHRcdFx0XHRcdDxjaGVja2JveC1ncm91cCBjbGFzcz1cImNoZWNrX3JlbWVtYmVyUHdkXCIgdi1pZj1cIml0ZW0ubmFtZT09J0NoZWNrYm94J1wiXHJcblx0XHRcdFx0XHRcdFx0OmNsYXNzPVwiaXRlbS5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0XHRcdFx0QGNoYW5nZT1cIm9uTW9kZWxWYWx1ZShpdGVtKVwiIFxyXG5cdFx0XHRcdFx0XHRcdDpkYXRhLWlzY2hlY2s9XCJpdGVtLnZhbHVlXCIgXHJcblx0XHRcdFx0XHRcdFx0OmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0OnN0eWxlPVwieydtYXJnaW4tbGVmdCc6JzEwcnB4J31cIj5cclxuXHRcdFx0XHRcdFx0XHQ8bGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHQ8Y2hlY2tib3ggOnZhbHVlPVwiaXRlbS52YWx1ZVwiIDpjaGVja2VkPVwiaXRlbS52YWx1ZVwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0Pnt7aXRlbS5sYWJlbH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdDwvY2hlY2tib3gtZ3JvdXA+XHJcblx0XHRcdFx0XHRcdDwhLS0gU3dpdGNo5byA5YWzIC0tPlxyXG5cdFx0XHRcdFx0XHQ8c3dpdGNoIHYtaWY9XCJpdGVtLm5hbWU9PSdTd2l0Y2gnXCIgOmNsYXNzPVwiaXRlbS5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0XHRcdFx0OmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0di1tb2RlbD1cIml0ZW0udmFsdWVcIiBcclxuXHRcdFx0XHRcdFx0XHRAY2hhbmdlPVwib25Nb2RlbFZhbHVlKGl0ZW0pXCIgXHJcblx0XHRcdFx0XHRcdFx0OnN0eWxlPVwieydtYXJnaW4tbGVmdCc6JzEwcnB4J31cIi8+XHJcblx0XHRcdFx0XHRcdDwhLS0g5pel5pyf5pe26Ze0IC0tPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0LXdyYXBwZXJcIiB2LWlmPVwiKGl0ZW0ubmFtZT09J1RpbWVQaWNrZXInIHx8IGl0ZW0ubmFtZT09J0RhdGVQaWNrZXInKSAmJiAhaXRlbS5kaXNhYmxlZFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxwaWNrZXIgbW9kZT1cImRhdGVcIiBjbGFzcz1cImRhdGVfaXB1dFwiIDpjbGFzcz1cIml0ZW0uZGlzYWJsZWQ/J2lucHV0LWRpc2FibGVkJzonJ1wiXHJcblx0XHRcdFx0XHRcdFx0ICA6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdFx0XHRcdFx0XHQgIDp2YWx1ZT1cIml0ZW0udmFsdWVcIiBcclxuXHRcdFx0XHRcdFx0XHQgIEBjaGFuZ2U9XCJvbk1vZGVsVmFsdWUoaXRlbSlcIiBcclxuXHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0ICAgPHZpZXcgY2xhc3M9XCJwaWNrZXJcIj57e2l0ZW0udmFsdWV9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PCEtLSDmoIXmoLzluIPlsYAgLS0+XHJcblx0XHRcdFx0XHQ8dW5pLXJvdyBjbGFzcz1cImRlbW8tdW5pLXJvd1wiIHYtaWY9XCJpdGVtLm5hbWU9PSdMYXlvdXQnXCI+XHJcblx0XHRcdFx0XHRcdDx1bmktY29sIHYtZm9yPVwiKGNvbHMsa2V5KSBpbiBpdGVtLnNldHRpbmcuY29sTGlzdFwiIFxyXG5cdFx0XHRcdFx0XHRcdDpzcGFuPVwiaXRlbS5zZXR0aW5nLnNwYW5MaXN0P2l0ZW0uc2V0dGluZy5zcGFuTGlzdFtrZXldOjI0IC8gaXRlbS5zZXR0aW5nLmNvbFwiPlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjb2xzIT1udWxsXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eHRfdGl0bGVcIiA6c3R5bGU9XCJ7J3dpZHRoJzpjb2xzLmxhYmVsV2lkdGgrJ3B4J31cIj57e2NvbHMubGFiZWx9fe+8mjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9ybS1pdGVtLXNwYW5cIiB2LWlmPVwiY29scy5kaXNhYmxlZFwiPnt7Y29scy52YWx1ZX19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkdl9pbnB1dFwiIHYtaWY9XCIoY29scy5uYW1lPT0nSW5wdXQnIHx8IGNvbHMubmFtZT09J0lucHV0TnVtYmVyJykgJiYgIWNvbHMuZGlzYWJsZWRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgdi1pZj1cImNvbHMuc2V0dGluZy5wcmVmaXhcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInVuaS1pY29uXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OmNsYXNzPVwiW2NvbHMuc2V0dGluZy5wcmVmaXhdXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAY2hhbmdlPVwib25DaGFuZ2UoY29scylcIj4mI3hlNTY4OzwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwidW5pLWlucHV0XCIgOmNsYXNzPVwiY29scy5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OnR5cGU9XCJjb2xzLm5hbWU9PSdJbnB1dCc/J3RleHQnOmNvbHMubmFtZT09J0lucHV0TnVtYmVyJz8nbnVtYmVyJzondGV4dCdcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2LW1vZGVsPVwiY29scy52YWx1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OmRpc2FibGVkPVwiY29scy5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OnBsYWNlaG9sZGVyPVwiY29scy5wbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OnN0eWxlPVwieyd3aWR0aCc6Y29scy5zZXR0aW5nLnByZWZpeCAmJiBjb2xzLnNldHRpbmcuc3VmZml4Pyc3OCUnOmNvbHMuc2V0dGluZy5wcmVmaXggfHwgY29scy5zZXR0aW5nLnN1ZmZpeD8nODclJzonOTYlJ31cIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6Zm9jdXM9XCJmb2N1c01hdGVyaWFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBmb2N1cz1cIm9udGFwKGNvbHMpXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QGJsdXI9XCJvbmV2ZW50KGNvbHMpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgdi1pZj1cImNvbHMuc2V0dGluZy5zdWZmaXhcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInVuaS1pY29uXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OmNsYXNzPVwiW2NvbHMuc2V0dGluZy5zdWZmaXhdXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAY2xpY2s9XCJvbkNoYW5nZShjb2xzKVwiPiYjeGU1Njg7PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSDkuIvmi4nmoYYt5Y2V6YCJIGNvbHMudXNlRGljdD9jb2xzLmRpY3Q6Y29scy5zZWxlY3Rpb25zLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLWRhdGEtc2VsZWN0IGlkPVwiZHZfc2VsZWN0XCIgdi1pZj1cImNvbHMubmFtZT09J1NlbGVjdCcgJiYgIWNvbHMuZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6Y2xhc3M9XCJjb2xzLmRpc2FibGVkPydpbnB1dC1kaXNhYmxlZCc6JydcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0di1tb2RlbD1cImNvbHMudmFsdWVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6bG9jYWxkYXRhPVwiY29scy5kaWN0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0QGNoYW5nZT1cIm9uQ2hhbmdlKGNvbHMpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OmRpc2FibGVkPVwiY29scy5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdDpjbGVhcj1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdD48L3VuaS1kYXRhLXNlbGVjdD5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0g5aSa6KGM5paH5pysIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCIgdi1pZj1cImNvbHMubmFtZT09J1RleHRhcmVhJyAmJiAhY29scy5kaXNhYmxlZFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgY2xhc3M9XCJ1bmktaW5wdXRcIiA6dmFsdWU9XCJjb2xzLnZhbHVlXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgOmNsYXNzPVwiY29scy5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgOnBsYWNlaG9sZGVyPVwiY29scy5wbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgQGJsdXI9XCJvbk1vZGVsVmFsdWUoY29scylcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICBzdHlsZT1cImhlaWdodDo2MHB4O1wiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgIDpzdHlsZT1cInsnd2lkdGgnOic5NiUnfVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgIDpkaXNhYmxlZD1cImNvbHMuZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ+PC90ZXh0YXJlYT5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0g5aSN6YCJ5qGGIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGNoZWNrYm94LWdyb3VwIGNsYXNzPVwiY2hlY2tfcmVtZW1iZXJQd2RcIiB2LWlmPVwiY29scy5uYW1lPT0nQ2hlY2tib3gnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OmNsYXNzPVwiY29scy5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAY2hhbmdlPVwib25Nb2RlbFZhbHVlKGNvbHMpXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdDpkYXRhLWlzY2hlY2s9XCJjb2xzLnZhbHVlXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdDpzdHlsZT1cInsnbWFyZ2luLWxlZnQnOicxMHJweCd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8Y2hlY2tib3ggOnZhbHVlPVwiY29scy52YWx1ZVwiIDpjaGVja2VkPVwiY29scy52YWx1ZVwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dD57e2NvbHMubGFiZWx9fTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdDwvY2hlY2tib3gtZ3JvdXA+XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIFN3aXRjaOW8gOWFsyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDxzd2l0Y2ggdi1pZj1cImNvbHMubmFtZT09J1N3aXRjaCdcIiA6Y2xhc3M9XCJjb2xzLmRpc2FibGVkPydpbnB1dC1kaXNhYmxlZCc6JydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0di1tb2RlbD1cImNvbHMudmFsdWVcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0QGNoYW5nZT1cIm9uTW9kZWxWYWx1ZShjb2xzKVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6c3R5bGU9XCJ7J21hcmdpbi1sZWZ0JzonMTBycHgnfVwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0g5pel5pyf5pe26Ze0IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCIgdi1pZj1cIihjb2xzLm5hbWU9PSdUaW1lUGlja2VyJyB8fCBjb2xzLm5hbWU9PSdEYXRlUGlja2VyJykgJiYgIWNvbHMuZGlzYWJsZWRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHBpY2tlciBtb2RlPVwiZGF0ZVwiIGNsYXNzPVwiZGF0ZV9pcHV0XCIgOmNsYXNzPVwiY29scy5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgOmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgOnZhbHVlPVwiY29scy52YWx1ZVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgIEBjaGFuZ2U9XCJvbk1vZGVsVmFsdWUoY29scylcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgICA8dmlldyBjbGFzcz1cInBpY2tlclwiPnt7Y29scy52YWx1ZX19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDwvdW5pLWNvbD5cclxuXHRcdFx0XHRcdDwvdW5pLXJvdz5cclxuXHRcdFx0XHQgICA8L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZHYtcGFuZWwtYnV0dG9uXCIgdi1pZj1cInBhcmFtLkxpc3RQYWdlLkNsaWNrX1ZpZXc9PXRydWVcIiA+XHJcblx0XHRcdFx0ICA8YSBAY2xpY2s9XCJvblZpZXdQYWdlQ2xpY2soc3R5bGUpXCI+PGkgY2xhc3M9XCJtb2JveC1ub3JtYWwtcmlnaHQtYXJyb3dcIiAvPjwvYT5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZHYtcGFuZWwtYnV0aWNvblwiIHYtaWY9XCJwYXJhbS5MaXN0UGFnZS5MaXN0SXRlbV9CdXR0b25cIiA+XHJcblx0XHRcdFx0ICA8dmlldyBjbGFzcz1cImJ0bi1wYWRkaW5nXCIgdi1mb3I9XCIoYnRuLGtleSkgaW4gcGFyYW0uTGlzdFBhZ2UuTGlzdEl0ZW1fQnV0dG9uXCI+XHJcblx0XHRcdFx0XHQ8YSBAY2xpY2s9XCJvbkJ0bkNsaWNrKGJ0bixzdHlsZSlcIiA6dGl0bGU9XCJidG4uU2hvd05hbWVcIiB2LWlmPVwiYnRuLlN0eWxlPT0naW1nJ1wiPlxyXG5cdFx0XHRcdFx0XHQ8aSA6Y2xhc3M9XCJidG4uSW1nXCIgLz5cclxuXHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImRlZmF1bHRcIiBAY2xpY2s9XCJvbkJ0bkNsaWNrKGJ0bixzdHlsZSlcIiBjbGFzcz1cImJ0bi1wYWRkaW5nXCIgdi1lbHNlLWlmPVwiYnRuLlN0eWxlPT0ndGV4dCdcIj57e2J0bi5TaG93TmFtZX19PC9idXR0b24+XHJcblx0XHRcdFx0ICA8L3ZpZXc+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdCAgPC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3Njcm9sbC12aWV3PlxyXG5cdCAgPC92aWV3PlxyXG5cdFx0XHJcblx0ICA8dmlldyBjbGFzcz1cInZpZXctZmxvb3JcIj5cclxuXHQgIFx0PGJ1dHRvbiB0eXBlPVwiZGVmYXVsdFwiIEBjbGljaz1cImNhbmNlbFwiIGNsYXNzPVwiYnRuX2NhbmNlbFwiIFxyXG5cdFx0ICA6c3R5bGU9XCJ7J3dpZHRoJzpwYXJhbS5MaXN0UGFnZS5QYWdlX0J1dHRvbi5sZW5ndGg+MD8nMzkuNSUnOic0OC41JSd9XCI+5YWz6ZetPC9idXR0b24+XHJcblx0ICBcdDxidXR0b24gdHlwZT1cImRlZmF1bHRcIiBAY2xpY2s9XCJSZWZyZXNoXCIgY2xhc3M9XCJidG5fcmVmcmVzaFwiIFxyXG5cdFx0ICA6c3R5bGU9XCJ7J3dpZHRoJzpwYXJhbS5MaXN0UGFnZS5QYWdlX0J1dHRvbi5sZW5ndGg+MD8nMzkuNSUnOic0OC41JSd9XCI+5Yi35pawPC9idXR0b24+XHJcblx0XHQ8dmlldyBjbGFzcz1cInVuaS1wYWRkaW5nLXdyYXBcIiB2LWlmPVwicGFyYW0uTGlzdFBhZ2UuUGFnZV9CdXR0b24ubGVuZ3RoPjBcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ1bmktYnRuLXZcIj5cclxuXHRcdFx0XHQ8YSBAdGFwPVwiYWN0aW9uU2hlZXRUYXBcIj48SWNvbiBjbGFzcz1cIm1vYm94LW5vcm1hbC1tb3JlXCIvPjwvYT5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cdCAgPC92aWV3PlxuICAgIDwvdmlldz5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XHJcbmltcG9ydCBCYXNlNjQgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9qcy1iYXNlNjQvYmFzZTY0LmpzJ1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgbW9kdWxlczp7XHJcblx0QmFzZTY0LFxyXG4gIH0sXHJcbiAgb25OYXZpZ2F0aW9uQmFyQnV0dG9uVGFwKGUpIHtcclxuIC8vICBcdGNvbnNvbGUubG9nKGUpO1xyXG5cdC8vIGUudGV4dD1cIlxcdWU5MjRcIjtcclxuICBcdC8vIGNvbnNvbGUubG9nKGUuZm9udFNpemUpO1xyXG5cdGlmKHRoaXMuaXNGaWx0ZXIpXHJcblx0ICAgIHRoaXMuaXNGaWx0ZXI9ZmFsc2U7XHJcblx0ZWxzZVxyXG5cdCAgICB0aGlzLmlzRmlsdGVyPXRydWU7XHJcbiAgfSxcclxuICBvbkJhY2tQcmVzcyhlKXtcblx0Ly8gY29uc29sZS5sb2coXCLnm5HlkKzov5Tlm57mjInpkq7kuovku7ZcIixlKTtcclxuXHR2YXIgZXZlbnRDaGFubmVsID0gdGhpcy4kc2NvcGUuZXZlbnRDaGFubmVsO1xyXG5cdC8vIGNvbnN0IGV2ZW50Q2hhbm5lbCA9IHRoaXMuZ2V0T3BlbmVyRXZlbnRDaGFubmVsKCk7XHJcblx0ZXZlbnRDaGFubmVsLmVtaXQoJ3ZpZXdfMzIwMScsXCJcIik7XHJcblx0Ly8gdW5pLm5hdmlnYXRlQmFjayh7XHJcblx0Ly8gXHRkZWx0YToxICwvL+i/lOWbnuWxguaVsO+8jDLliJnkuIrkuIrpobVcclxuXHQvLyB9KTtcblx0Ly8gcmV0dXJuIHRydWU7XG4gIH0sXHRcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xyXG5cdCAgdGl0bGU6J+aWsOWinicsXHJcbiAgICAgIGlzRmlsdGVyOnRydWUsXG4gICAgICBwYXJhbToge30sXHJcblx0ICBmb2N1c01hdGVyaWE6ZmFsc2UsXHJcblx0ICBzdHlsZWRlZjp7fSxcclxuXHQgIGhlYWRfc3R5bGVkZWY6e1xyXG5cdFx0Zm9ybTp7XHJcblx0XHRcdGl0ZW1zOltdXHJcblx0XHR9XHJcblx0ICB9LFxuICAgICAgZGV0YWlsMV9zdHlsZWRlZjp7fSxcbiAgICAgIGRldGFpbDFTdHlsZURlZkxpc3Q6W10sXG4gICAgICBkZXRhaWwyX3N0eWxlZGVmOnt9LFxuICAgICAgZGV0YWlsMlN0eWxlRGVmTGlzdDpbXSxcclxuXHQgIGl0ZW1zOiBbXSxcclxuICAgICAgYWN0aXZlX2lkOicnLFxyXG5cdCAgYWN0aXZlbGlzdDpbXSxcbiAgICAgIHdoZXJlOicnLFxuICAgICAgd2hlcmVzOicnLFxuICAgICAgb3JkZXJieTonJyxcbiAgICAgIHF1ZXJ5X2lkOicnLFxuICAgICAgcGFnZWluZGV4OjEsXG4gICAgICBwYWdlX3NpemU6MTAsXG4gICAgICBwYWdlX2NvdW50OjAsXHJcblx0ICBzY3JvbGxUb3A6IDAsXHJcblx0ICBvbGQ6IHtcclxuXHQgIFx0c2Nyb2xsVG9wOiAwXHJcblx0ICB9LFxyXG5cdCAgaXNTY3JvbGw6dHJ1ZSxcclxuXHQgIC8v6I635Y+W5pWw5o2u57G755qESFRNTOmhtemdolxyXG5cdCAgTGlzdEh0bWxfUGFuZWw6XCJcIixcclxuXHQgIExpc3RQYWdlSHRtbF9TaG93OiB7XHJcblx0ICBcdG5hbWU6IFwiXCIsXHJcblx0ICBcdGV2ZW50OiB7XHJcblx0ICBcdFx0aWQ6IFwiXCIsXHJcblx0ICBcdFx0bmFtZTogXCJcIlxyXG5cdCAgXHR9XHJcblx0ICB9LFxuICAgIH07XG4gIH0sXHJcbiAgYXN5bmMgb25Mb2FkKG9wdGlvbnMpIHtcclxuXHQvLyBjb25zb2xlLmxvZyhvcHRpb25zKTtcclxuXHR1bmkuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHsgdGl0bGU6IG9wdGlvbnMudGl0bGVuYW1lfSk7IC8v6K6+572u6aG26YOo5qCH6aKYIFxyXG5cdHRoaXMuJGRhdGEudGl0bGUgPSBvcHRpb25zLnRpdGxlbmFtZTtcclxuXHR0aGlzLiRkYXRhLnBhcmFtID0gSlNPTi5wYXJzZShvcHRpb25zLnBhcmFtKTtcclxuXHR0aGlzLmlzRmlsdGVyPXRydWU7XHJcblx0aWYodGhpcy5wYXJhbS5TaG93RmlsdGVyKVxyXG5cdCAgdGhpcy5pc0ZpbHRlcj1mYWxzZTtcclxuXHQvL+iOt+WPluaVsOaNruexu+eahOiHquWumuS5ieihqOWNleWPguaVsFxyXG5cdHRoaXMuSGVhZF9VSVN0eWxlR2V0SW5mbyh0aGlzLnBhcmFtLkRhdGFDbHMuaWQsdGhpcy5wYXJhbS5RdWVyeV9QYW5lbC5pZCk7XHJcblx0aWYodGhpcy5wYXJhbS5MaXN0UGFnZS5MaXN0SXRlbV9VSURlZj8udWlfdHlwZT09XCJIVE1M6aG16Z2iXCIpe1xyXG5cdFx0Ly8gSFRNTOmhtemdolxyXG5cdFx0Ly/ojrflj5bmlbDmja7nsbvnmoRIVE1M6aG16Z2iXHJcblx0XHRhd2FpdCB0aGlzLkh0bWxfVUlzdHlsZUdldEluZm8odGhpcy5wYXJhbS5EYXRhQ2xzLmlkLHRoaXMucGFyYW0uTGlzdFBhZ2UuTGlzdEl0ZW1fVUlEZWYuaWQpO1xyXG5cdH1lbHNle1xyXG5cdFx0YXdhaXQgdGhpcy5EZXRhaWwxX1VJc3R5bGVHZXRJbmZvKHRoaXMucGFyYW0uRGF0YUNscy5pZCx0aGlzLnBhcmFtLkxpc3RQYWdlLkxpc3RJdGVtX1VJRGVmLmlkKTtcclxuXHR9XHJcblx0dGhpcy5vcmRlcmJ5ID0gdGhpcy5wYXJhbS5PcmRlcj90aGlzLnBhcmFtLk9yZGVyOidUX0NSRUFURSBEZXNjJztcclxuXHRpZih0aGlzLnBhcmFtLlF1ZXJ5X0V2ZW50KXtcclxuXHQgICAgYXdhaXQgdGhpcy5vblNlYXJDaGFuZ2UodGhpcy5wYXJhbS5EYXRhQ2xzLmlkLHRoaXMucGFyYW0uUXVlcnlfRXZlbnQuaWQpO1xyXG5cdH0gZWxzZXtcclxuXHQgIHRoaXMud2hlcmVzID0gdGhpcy5wYXJhbS5Db25kaXRpb247XHJcblx0ICB0aGlzLnBhZ2VpbmRleCA9IDE7XHJcblx0ICB0aGlzLnBhZ2Vfc2l6ZSA9IDM7XHJcblx0ICB0aGlzLnF1ZXJ5X2lkID0gXCJcIjtcclxuXHQgIGF3YWl0IHRoaXMubG9hZERhdGFHZXRMaXN0KCk7XHJcblx0fVxyXG5cdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEucGFyYW0pO1xyXG5cdC8v6aG16Z2i5Yid5aeL5YyW6I635Y+W54Sm54K5XHJcblx0Ly8gdGhpcy5mb2N1c01hdGVyaWE9dHJ1ZTsgXHJcbiAgfSxcdFxuICBtZXRob2RzOiB7XHJcblx0Ly/mu5rliqjliLDlupXpg6jlkI7mh5LliqDovb3mlbDmja5cclxuXHRhc3luYyBzY3JvbGx0b2xvd2VyKGUpIHtcclxuXHRcdC8vIGNvbnNvbGUubG9nKGUpXHJcblx0XHRpZih0aGlzLmlzU2Nyb2xsKXsgLy/liKTmlq3liLfmlrDkuIDmrKHlkI7kuI3kvJrmjIHnu63liLfmlrBcclxuXHRcdFx0aWYodGhpcy5wYWdlX2NvdW50PT10aGlzLnBhZ2VpbmRleCl7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMucGFnZWluZGV4ICs9IDE7XHJcblx0XHRcdGlmKHRoaXMud2hlcmUgfHwgdGhpcy5wYWdlX2NvdW50PT0xKSB7XHJcblx0XHRcdCAgdGhpcy5xdWVyeV9pZCA9IFwiXCI7XHJcblx0XHRcdCAgdGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHR9XHJcblx0XHRcdGF3YWl0IHRoaXMubG9hZERhdGFHZXRMaXN0KCk7XHJcblx0XHR9XHJcblx0fSxcclxuXHRzY3JvbGw6IGZ1bmN0aW9uKGUpIHtcclxuXHRcdC8vIGNvbnNvbGUubG9nKGUuZGV0YWlsLnNjcm9sbFRvcClcclxuXHRcdHRoaXMub2xkLnNjcm9sbFRvcCA9IGUuZGV0YWlsLnNjcm9sbFRvcFxyXG5cdH0sXHJcblx0YXN5bmMgSGVhZF9VSVN0eWxlR2V0SW5mbyhjbGFzc19pZCxzdHlsZV9pZCl7ICAgLy/ojrflj5boh6rlrprkuYnooajljZXmoLflvI9cclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZGF0YUluZm89e1xyXG5cdFx0XHRjbGFzc19pZDpjbGFzc19pZCxcclxuXHRcdFx0dWlfc3R5bGVfaWQ6c3R5bGVfaWQsXHJcblx0XHR9O1xyXG5cdFx0Ly8gY29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ1VJU3R5bGVHZXRJbmZvJyxkYXRhSW5mbykudGhlbihyZXQ9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIHN0eWxlZGVmPVwiXCI7XHJcblx0XHRcdFx0aWYocmV0LnJlc3VsdC5zdHlsZV9kZWYpe1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDLnmoRzdHlsZV9kZWbmmK9qc29u5a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBzdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmLnJlcGxhY2UoL1xcXFwvZyxcIlwiKTtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gz55qEc3R5bGVfZGVm5pivYmFzZTY05a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBpZighcmV0LnJlc3VsdC5zdHlsZV9kZWYuaW5jbHVkZXMoJ1wiJykpIHN0eWxlZGVmID0gQmFzZTY0LmRlY29kZShyZXQucmVzdWx0LnN0eWxlX2RlZik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdCR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZj8gSlNPTi5wYXJzZShzdHlsZWRlZik6IHt9O1xyXG5cdFx0XHRcdC8vIHRoaXMuZm9ybSA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtcy5mb3JFYWNoKGFzeW5jIChlbGUsaW5kZXgpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGVsZS51c2VEaWN0KTtcclxuXHRcdFx0XHQgICAgaWYoZWxlLnVzZURpY3Q9PXRydWUpeyAvL+WIpOaWrXVzZURpY3TmmK/lkKbkvb/nlKjlrZflhbhcclxuXHRcdFx0XHQgICAgICAgIGF3YWl0IHRoaXMuRGljdEdldEluZm8oZWxlLmJpbmQuZGljdCxpbmRleCwnbWFzdCcpO1xyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMVwiLGNvbnRlbnQ6cmV0LmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG5cdCAgICBcclxuXHR9LFxyXG5cdGFzeW5jIERldGFpbDFfVUlzdHlsZUdldEluZm8oY2xhc3NfaWQsc3R5bGVfaWQpeyAgIC8v6I635Y+W6Ieq5a6a5LmJ6KGo5Y2V5qC35byPXHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdFx0Y2xhc3NfaWQ6Y2xhc3NfaWQsXHJcblx0XHRcdHVpX3N0eWxlX2lkOnN0eWxlX2lkLFxyXG5cdFx0fTtcclxuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdVSVN0eWxlR2V0SW5mbycsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdGNvbnNvbGUubG9nKHJldCk7XHJcblx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBzdHlsZWRlZj1cIlwiO1xyXG5cdFx0XHRcdGlmKHJldC5yZXN1bHQuc3R5bGVfZGVmKXtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gy55qEc3R5bGVfZGVm5pivanNvbuWtl+espuS4slxyXG5cdFx0XHRcdCAgICAgc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZi5yZXBsYWNlKC9cXFxcL2csXCJcIik7XHJcblx0XHRcdFx0ICAgICAvL21vYm94M+eahHN0eWxlX2RlZuaYr2Jhc2U2NOWtl+espuS4slxyXG5cdFx0XHRcdCAgICAgaWYoIXJldC5yZXN1bHQuc3R5bGVfZGVmLmluY2x1ZGVzKCdcIicpKSBzdHlsZWRlZiA9IEJhc2U2NC5kZWNvZGUocmV0LnJlc3VsdC5zdHlsZV9kZWYpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQkdGhpcy4kZGF0YS5kZXRhaWwxX3N0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWY/IEpTT04ucGFyc2Uoc3R5bGVkZWYpOiB7fTtcclxuXHRcdFx0XHQkdGhpcy4kZGF0YS5kZXRhaWwxX3N0eWxlZGVmLlNlbEJ1dF9DaGVja2VkID0gZmFsc2U7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEuZGV0YWlsMV9zdHlsZWRlZik7XHJcblx0XHRcdFx0Ly8gJHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdC5wdXNoKCR0aGlzLiRkYXRhLmRldGFpbDFfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdC8vIHZhciBhYSA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZGV0YWlsMV9zdHlsZWRlZik7XHJcblx0XHRcdFx0Ly8gJHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdC5wdXNoKEpTT04ucGFyc2UoYWEpKTtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yXCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0ICAgIFxyXG5cdH0sXHJcblx0YXN5bmMgSHRtbF9VSXN0eWxlR2V0SW5mbyhjbGFzc19pZCwgc3R5bGVfaWQpIHsgLy/ojrflj5boh6rlrprkuYnooajljZXmoLflvI9cclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZGF0YUluZm8gPSB7XHJcblx0XHRcdGNsYXNzX2lkOiBjbGFzc19pZCxcclxuXHRcdFx0dWlfc3R5bGVfaWQ6IHN0eWxlX2lkLFxyXG5cdFx0fTtcclxuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdVSVN0eWxlR2V0SW5mbycsIGRhdGFJbmZvKS50aGVuKHJldCA9PiB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHJldCk7XHJcblx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBzdHlsZWRlZiA9IFwiXCI7XHJcblx0XHRcdFx0aWYgKHJldC5yZXN1bHQuc3R5bGVfZGVmKSB7XHJcblx0XHRcdFx0XHQvL21vYm94MueahHN0eWxlX2RlZuaYr2pzb27lrZfnrKbkuLJcclxuXHRcdFx0XHRcdHN0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWYucmVwbGFjZSgvXFxcXC9nLCBcIlwiKTtcclxuXHRcdFx0XHRcdC8vbW9ib3gz55qEc3R5bGVfZGVm5pivYmFzZTY05a2X56ym5LiyXHJcblx0XHRcdFx0XHRpZiAoIXJldC5yZXN1bHQuc3R5bGVfZGVmLmluY2x1ZGVzKCdcIicpKSBzdHlsZWRlZiA9IEJhc2U2NC5kZWNvZGUocmV0LnJlc3VsdFxyXG5cdFx0XHRcdFx0XHQuc3R5bGVfZGVmKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0JHRoaXMuTGlzdFBhZ2VIdG1sX1Nob3cgPSByZXQucmVzdWx0LnN0eWxlX2RlZiA/IEpTT04ucGFyc2Uoc3R5bGVkZWYpIDoge307XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuTGlzdFBhZ2VIdG1sX1Nob3cpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMTBcIixcclxuXHRcdFx0XHRcdGNvbnRlbnQ6IHJldC5lcnJfbXNnLFxyXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXHJcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleCA9PiB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMTAuMVwiLFxyXG5cdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcclxuXHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcclxuXHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdFxyXG5cdH0sXHJcblx0YXN5bmMgRGljdEdldEluZm8oZGljdCxpbmRleCx0eXBlKXsgLy9Nb2JveDPlvpfliLDlvpfliLDlrZflhbjkv6Hmga/lrZflhbjpobnliJfooahcclxuXHRcdHRoaXMuZGF0YT1bXTtcclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZGF0YUluZm8gPXtcclxuXHRcdFx0ZGljdF9pZDogZGljdC5pZCxcclxuXHRcdFx0ZGljdF9uYW1lOiBkaWN0Lm5hbWVcclxuXHRcdH07XHJcblx0XHQvLyBjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGljdEdldEluZm8nLGRhdGFJbmZvKS50aGVuKGFzeW5jIChzdWNjZXNzKT0+e1xyXG5cdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0aWYgKHN1Y2Nlc3MuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdGlmKHR5cGU9PSdtYXN0Jyl7XHJcblx0XHRcdFx0XHR2YXIgbGlzdD1bXTtcclxuXHRcdFx0XHRcdHZhciBpdGVtTmFtZT0nJztcclxuXHRcdFx0XHRcdHN1Y2Nlc3MucmVzdWx0LmRpY3RfaXRlbV9saXN0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuXHRcdFx0XHRcdCAgICBpZihpdGVtLmlzX2RlZmF1bHQ9PScxJylcclxuXHRcdFx0XHRcdCAgICAgICAgaXRlbU5hbWUgPSBpdGVtLm5hbWU7XHJcblx0XHRcdFx0XHQgICAgbGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdCAgICAgICAgdGV4dDppdGVtLnZhbHVlLFxyXG5cdFx0XHRcdFx0ICAgICAgICB2YWx1ZTppdGVtLm5hbWUsXHJcblx0XHRcdFx0XHQgICAgfSk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdC8v5pyJ6buY6K6k5YC877yM5pi+56S66buY6K6k5YC8XHJcblx0XHRcdFx0XHRpZihpdGVtTmFtZSl7XHJcblx0XHRcdFx0XHRcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tpbmRleF0udmFsdWU9aXRlbU5hbWU7XHJcblx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zW2luZGV4XS5maWVsZElkO1xyXG5cdFx0XHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0cl0gPSBpdGVtTmFtZTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tpbmRleF0uZGljdD1saXN0O1xyXG5cdFx0XHRcdFx0dmFyIGhlYWRfc3R5bGVkZWYgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KCR0aGlzLmhlYWRfc3R5bGVkZWYpKTtcclxuXHRcdFx0XHRcdCR0aGlzLmhlYWRfc3R5bGVkZWY9W107XHJcblx0XHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmID0gaGVhZF9zdHlsZWRlZjtcclxuXHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdC8vICR0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3RbaW5kZXhdLmF0dHJfbGlzdFtrZXldLmRpY3RpdGVtPXN1Y2Nlc3MucmVzdWx0O1xyXG5cdFx0XHRcdFx0Ly8gdGhpcy4kc3RvcmUuY29tbWl0KFwic3ViQ2xhc3NBdHRyTGlzdFwiLCAkdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMy4xXCIsY29udGVudDpzdWNjZXNzLmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdFxyXG5cdC8vIOaJp+ihjOafpeivouS6i+S7tlxyXG5cdGFzeW5jIG9uU2VhckNoYW5nZShjbHNpZCxldmVudGlkKSB7XHJcblx0IHRyeSB7XHJcblx0ICAgIGlmIChldmVudC5pZCkge1xyXG5cdCBcdCAgdmFyICR0aGlzID0gdGhpcztcclxuXHQgXHQgIHZhciBkYXRhSW5mbz17XHJcblx0ICAgICAgICBlZF90eXBlOiAwLFxyXG4gICAgICAgICAgICBzdGFydF90cmFuc2FjdGlvbjogdHJ1ZSxcclxuXHRcdCAgICBjbGFzc19pZDogY2xzaWQsXHJcblx0XHRcdGV2ZW50X2lkOiBldmVudGlkLFxyXG5cdCAgICAgIH07XHJcblx0IFx0ICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncnVuQ3VzdG9tRXZlbnQnLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdCBcdCAgXHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdCBcdCAgXHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHQgXHRcdFx0dmFyIHJlc3VsdCA9IHJldC5yZXN1bHQ7IFxyXG5cdCBcdFx0XHRpZiAocmVzdWx0LnJldCAhPSAwKSB7XHJcblx0IFx0XHRcdCAgICB2YXIgdGlwID0gcmVzdWx0LmVycl9pbmZvID8gdHlwZW9mIHJlc3VsdC5lcnJfaW5mbyA9PSAnc3RyaW5nJyA/IHJlc3VsdC5lcnJfaW5mbyA6IHJlc3VsdC5lcnJfaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0IFx0XHRcdCAgICBpZiAocmVzdWx0LnJldCA9PSA4MDEpIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCBcdFx0XHQgICAgZWxzZSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCsnLOaPkOekujonK3Jlc3VsdC5yZXQsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0IFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdCBcdFx0XHR9ZWxzZXtcclxuXHQgXHRcdFx0XHR2YXIgdGlwID0gcmVzdWx0LmluZm8gPyB0eXBlb2YgcmVzdWx0LmluZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuaW5mbyA6IHJlc3VsdC5pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHQgXHRcdFx0XHRpZiAodGlwKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgXHRcdFx0XHJcblx0IFx0XHRcdFx0aWYocmVzdWx0LnJlc3VsdF90eXBlID09IDAgJiYgcmVzdWx0LmFjdGlvbil7XHJcblx0IFx0XHRcdFx0XHRyZXN1bHQuYWN0aW9uLmZvckVhY2goaXRlbT0+e1xyXG5cdCBcdFx0XHRcdFx0XHRpZihpdGVtLmFjdGlvbl90eXBlID09IFwic2V0X3F1ZXJ5X2NvbmRpdGlvblwiKXsgXHJcblx0IFx0XHRcdFx0XHRcdCAgICB2YXIgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdCBcdFx0XHRcdFx0XHQgICAgJHRoaXMud2hlcmVzID0gdmFsdWUuY29uZGl0aW9uO1xyXG5cdCBcdFx0XHRcdFx0XHQgICAgJHRoaXMub3JkZXJieSA9IHZhbHVlLm9yZGVyP3ZhbHVlLm9yZGVyOiR0aGlzLm9yZGVyYnk7XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMucGFnZWluZGV4ID0gMTtcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy5xdWVyeV9pZCA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuZGV0YWlsMVN0eWxlRGVmTGlzdD1bXTtcclxuXHQgXHRcdFx0XHRcdFx0ICAgICR0aGlzLmxvYWREYXRhR2V0TGlzdCgpO1xyXG5cdCBcdFx0XHRcdFx0XHR9IFxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHQgXHRcdFx0XHR9ZWxzZXtcclxuXHQgXHRcdFx0XHRcdC8vIHRoaXMuZGV0YWlsMlN0eWxlRGVmTGlzdD1bXTtcclxuXHQgXHRcdFx0XHRcdGlmKHJlc3VsdC5pbmZvKXtcclxuXHQgXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OnJlc3VsdC5pbmZvLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCBcdFx0XHRcdFx0fVxyXG5cdCBcdFx0XHRcdH1cclxuXHQgXHRcdFx0fVxyXG5cdCBcdCAgXHRcdFxyXG5cdCBcdCAgXHR9ZWxzZXtcclxuXHQgXHQgIFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzRcIixjb250ZW50OnJldC5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCBcdCAgXHR9XHJcblx0IFx0ICB9KS5jYXRjaChleD0+e1xyXG5cdCBcdCAgXHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0IFx0ICBcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNC4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0IFx0ICB9KTtcclxuXHQgICAgIH1cclxuXHQgfSBjYXRjaCAoZXgpIHtcclxuXHQgICAgIHZhciB0aXAgPSB0eXBlb2YgZXggPT0gXCJzdHJpbmdcIiA/IGV4IDogZXgubWVzc2FnZTtcclxuXHQgXHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzQuMlwiLGNvbnRlbnQ6XCLmiafooYzigJzmn6Xor6Lkuovku7bigJ3kuovku7blpLHotKXvvJpcIiArIHRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgXHRcclxuXHQgfVxyXG5cdH0sXHJcblx0Ly/mn6Xor6LmlbDmja7nsbvmlbDmja7kv6Hmga9cclxuXHRhc3luYyBsb2FkRGF0YUdldExpc3QoKXsgICBcclxuXHQgIHRyeXtcclxuXHRcdHVuaS5zaG93TG9hZGluZyh7XHJcblx0XHRcdHRpdGxlOlwi5Yqg6L295LitLi4uXCIsXHJcblx0XHRcdG1hc2s6dHJ1ZVxyXG5cdFx0fSk7XHJcblx0ICAgIC8v5p2h5Lu25p+l6K+iXHJcblx0ICAgIHZhciBjb25kaXRpb24gPSB0aGlzLndoZXJlcztcclxuXHQgICAgaWYodGhpcy53aGVyZSl7XHJcblx0ICAgICAgaWYoY29uZGl0aW9uKSBjb25kaXRpb24gKz0nIGFuZCAnO1xyXG5cdCAgICAgIGNvbmRpdGlvbis9dGhpcy53aGVyZTtcclxuXHQgICAgfVxyXG5cdCAgICAvLyBjb25zb2xlLmxvZyhjb25kaXRpb24pO1xyXG5cdCAgICAvLyBjb25zb2xlLmxvZyh0aGlzLm9yZGVyYnkpO1xyXG5cdCAgICB2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdFx0Y2xhc3NfaWQ6IHRoaXMucGFyYW0uRGF0YUNscy5pZCxcclxuXHRcdFx0YXR0cnM6IFtdLFxyXG5cdFx0XHRjb25kaXRpb246IHRoaXMudG9XaGVyZUJhc2U2NFN0cmluZyhcIlwiKyBjb25kaXRpb24gK1wiXCIpLCBcclxuXHRcdFx0cHJqX3JlbF90eXBlOiBcIlwiLFxyXG5cdFx0XHRvcmRlcl9ieTogdGhpcy5vcmRlcmJ5LFxyXG5cdFx0XHRwYWdlX3NpemU6IHRoaXMucGFnZV9zaXplLFxyXG5cdFx0XHRwYWdlOiB0aGlzLnBhZ2VpbmRleCxcclxuXHRcdFx0cXVlcnlfaWQ6IHRoaXMucXVlcnlfaWQsXHJcblx0XHR9O1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2RhdGFPYmpRdWVyeScsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdGNvbnNvbGUubG9nKHJldCk7XHJcblx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHQvLyB2YXIgbGlzdD1bXTtcclxuXHRcdFx0XHQkdGhpcy5xdWVyeV9pZCA9ICcnO1xyXG5cdFx0XHRcdGlmKHJldC5yZXN1bHQpe1xyXG5cdFx0XHRcdFx0JHRoaXMucGFnZV9jb3VudCA9IHJldC5yZXN1bHQucGFnZV9jb3VudDtcclxuXHRcdFx0XHRcdGlmKHJldC5yZXN1bHQucGFnZV9jb3VudD4xKSAkdGhpcy5xdWVyeV9pZCA9IHJldC5yZXN1bHQucXVlcnlfaWQ7XHJcblx0XHRcdFx0XHRpZigkdGhpcy5MaXN0UGFnZUh0bWxfU2hvdy5ldmVudC5pZCl7XHJcblx0XHRcdFx0XHRcdHJldC5yZXN1bHQub2JqX2xpc3QuZm9yRWFjaCgob2JqKSA9PiB7XHJcblx0XHRcdFx0XHQgICAgICB2YXIgaW5mbyA9e1xyXG5cdFx0XHRcdFx0ICAgICAgICAgIGlkOm9iai5pZCxcclxuXHRcdFx0XHRcdCAgICAgIH07XHJcblx0XHRcdFx0XHQgICAgICBvYmouYXR0cl9saXN0LmZvckVhY2goKGF0dHIpID0+IHtcclxuXHRcdFx0XHRcdCAgICAgICAgaW5mb1thdHRyLm5hbWVdPWF0dHIudmFsdWU7XHJcblx0XHRcdFx0XHQgICAgICB9KTtcclxuXHRcdFx0XHRcdCAgICAgIHZhciBkZXRhaWxTdHlsZSA9e1xyXG5cdFx0XHRcdFx0ICAgICAgICAgIFNlbEJ1dF9DaGVja2VkOmZhbHNlLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgIGZvcm06e30sXHJcblx0XHRcdFx0XHQgICAgICAgICAgaW5mbzppbmZvXHJcblx0XHRcdFx0XHQgICAgICB9O1xyXG5cdFx0XHRcdFx0ICAgICAgZGV0YWlsU3R5bGUuZm9ybS5odG1sb2JqSWQgPSBvYmouaWQ/b2JqLmlkLnJlcGxhY2UoLy0vZywnJykucmVwbGFjZSgneycsJycpLnJlcGxhY2UoJ30nLCcnKTonbnVsbCc7XHJcblx0XHRcdFx0XHQgICAgICBkZXRhaWxTdHlsZS5mb3JtLm9iaklkID0gb2JqLmlkO1xyXG5cdFx0XHRcdFx0ICAgICAgZGV0YWlsU3R5bGUuZm9ybS5hdHRycyA9IG9iai5hdHRyX2xpc3Q7XHJcblx0XHRcdFx0XHQgICAgICAkdGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0LnB1c2goZGV0YWlsU3R5bGUpO1xyXG5cdFx0XHRcdFx0XHQgICR0aGlzLmFjdGl2ZWxpc3QucHVzaCh7YWN0aXZlOmZhbHNlfSk7XHJcblx0XHRcdFx0XHQgICAgfSk7XHJcblx0XHRcdFx0XHQgICAgLy8gY29uc29sZS5sb2codGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0KTtcclxuXHRcdFx0XHRcdCAgICB2YXIganNvbmxpc3Q9W107XHJcblx0XHRcdFx0XHQgICAgJHRoaXMuZGV0YWlsMVN0eWxlRGVmTGlzdC5mb3JFYWNoKGF0dHI9PntcclxuXHRcdFx0XHRcdCAgICAgIGpzb25saXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0ICAgICAgICBpZDphdHRyLmluZm8uaWQsXHJcblx0XHRcdFx0XHQgICAgICAgIGF0dHJzOiBPYmplY3Qua2V5cyhhdHRyLmluZm8pLm1hcCgoYSkgPT4gKHtcclxuXHRcdFx0XHRcdCAgICAgICAgICBhdHRyOiBhLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgIHZhbHVlOiBhdHRyLmluZm9bYV0gfHwgXCJcIixcclxuXHRcdFx0XHRcdCAgICAgICAgfSkpXHJcblx0XHRcdFx0XHQgICAgICB9KTtcclxuXHRcdFx0XHRcdCAgICB9KTtcclxuXHRcdFx0XHRcdCAgICAvLyBjb25zb2xlLmxvZyhqc29ubGlzdCk7XHJcblx0XHRcdFx0XHRcdHZhciBkYXRhX2pzb24gPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KGpzb25saXN0KSk7XHJcblx0XHRcdFx0XHQgICAgdmFyIGV2ZW50aWQgPSAkdGhpcy5MaXN0UGFnZUh0bWxfU2hvdy5ldmVudC5pZDtcclxuXHRcdFx0XHRcdCAgICBpZiAoISR0aGlzLkxpc3RQYWdlSHRtbF9TaG93LmV2ZW50LmlkLmluY2x1ZGVzKCd7JykpXHJcblx0XHRcdFx0XHQgICAgXHRldmVudGlkID0gJ3snICsgJHRoaXMuTGlzdFBhZ2VIdG1sX1Nob3cuZXZlbnQuaWQgKyAnfSc7XHJcblx0XHRcdFx0XHQgICAgLy9IVE1M6aG16Z2i5LqL5Lu2XHJcblx0XHRcdFx0XHQgICAgJHRoaXMucnVuQ3VzdG9tRXZlbnQoe1xyXG5cdFx0XHRcdFx0ICAgIFx0ZWRfdHlwZTogMCxcclxuXHRcdFx0XHRcdCAgICBcdHN0YXJ0X3RyYW5zYWN0aW9uOiB0cnVlLFxyXG5cdFx0XHRcdFx0ICAgIFx0Y2xhc3NfaWQ6ICR0aGlzLnBhcmFtLkRhdGFDbHMuaWQsXHJcblx0XHRcdFx0XHQgICAgXHRldmVudF9pZDogZXZlbnRpZCxcclxuXHRcdFx0XHRcdCAgICBcdGRhdGFfanNvbixcclxuXHRcdFx0XHRcdCAgICB9KTtcclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0ICAvLyAkdGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0ICByZXQucmVzdWx0Lm9ial9saXN0LmZvckVhY2goKG9iaikgPT4ge1xyXG5cdFx0XHRcdFx0XHR2YXIgc3R5bGVTdHIgPSBKU09OLnN0cmluZ2lmeSgkdGhpcy5kZXRhaWwxX3N0eWxlZGVmKTtcclxuXHRcdFx0XHRcdFx0dmFyIGRldGFpbFN0eWxlID0gSlNPTi5wYXJzZShzdHlsZVN0cik7XHJcblx0XHRcdFx0XHRcdC8vIHZhciBpbmZvID17XHJcblx0XHRcdFx0XHRcdC8vICAgICBTX0lEOm9iai5pZCxcclxuXHRcdFx0XHRcdFx0Ly8gfTtcclxuXHRcdFx0XHRcdFx0b2JqLmF0dHJfbGlzdC5mb3JFYWNoKChhdHRyKSA9PiB7XHJcblx0XHRcdFx0XHRcdCAgLy8gaW5mb1thdHRyLm5hbWVdPWF0dHIudmFsdWU7XHJcblx0XHRcdFx0XHRcdCAgZGV0YWlsU3R5bGUuZm9ybS5pdGVtcy5mb3JFYWNoKGVsZT0+e1xyXG5cdFx0XHRcdFx0XHRcdGlmKGVsZS5uYW1lIT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0ICBpZihlbGUuZmllbGRJZCA9PSBhdHRyLm5hbWUpIGVsZS52YWx1ZSA9IGF0dHIudmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKGVsZS5uYW1lPT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0ICBlbGUuc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0XHRcdFx0XHRcdFx0XHRpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBpZihjb2wuZmllbGRJZCA9PSBhdHRyLm5hbWUpIGNvbC52YWx1ZSA9IGF0dHIudmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdCAgfSk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHQgIFxyXG5cdFx0XHRcdFx0XHRkZXRhaWxTdHlsZS5mb3JtLmh0bWxvYmpJZCA9IG9iai5pZD9vYmouaWQucmVwbGFjZSgvLS9nLCcnKS5yZXBsYWNlKCd7JywnJykucmVwbGFjZSgnfScsJycpOidudWxsJztcclxuXHRcdFx0XHRcdFx0ZGV0YWlsU3R5bGUuZm9ybS5vYmpJZCA9IG9iai5pZDtcclxuXHRcdFx0XHRcdFx0ZGV0YWlsU3R5bGUuZm9ybS5hdHRycyA9IG9iai5hdHRyX2xpc3Q7XHJcblx0XHRcdFx0XHRcdCR0aGlzLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaChkZXRhaWxTdHlsZSk7XHJcblx0XHRcdFx0XHRcdCR0aGlzLmFjdGl2ZWxpc3QucHVzaCh7YWN0aXZlOmZhbHNlfSk7XHJcblx0XHRcdFx0XHRcdC8vbGlzdC5wdXNoKGluZm8pO1xyXG5cdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQgIFxyXG5cdFx0XHRcdFx0Ly8g6Kej5Yazdmlld+WxguS4jeWQjOatpeeahOmXrumimFxyXG5cdFx0XHRcdFx0Ly8gJHRoaXMuc2Nyb2xsVG9wID0gJHRoaXMub2xkLnNjcm9sbFRvcDtcclxuXHRcdFx0XHRcdCR0aGlzLmlzU2Nyb2xsPWZhbHNlO1xyXG5cdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpe1xyXG5cdFx0XHRcdFx0XHQkdGhpcy5pc1Njcm9sbD10cnVlO1xyXG5cdFx0XHRcdFx0fSwxMDAwKTtcclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLmRldGFpbDFTdHlsZURlZkxpc3QpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor681XCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzUuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0ICB9IGNhdGNoIChleCkge1xyXG5cdCAgICB2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzUuMlwiLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCAgfVxyXG5cdH0sXHJcblx0XHJcblx0Ly/liLfmlrBcclxuXHRSZWZyZXNoKHZhbHVlKXtcclxuXHQgIC8v5Yi35paw5b2T5YmN6aG16Z2iXHJcblx0ICAvLyBsb2NhdGlvbi5yZWxvYWQoKTtcclxuXHQgIHVuaS5yZWRpcmVjdFRvKHtcclxuXHQgIFx0dXJsOicuLi9tb2RhbC8zMjAwP3BhcmFtPScrSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5wYXJhbSkrXCImdGl0bGVuYW1lPVwiK3RoaXMuJGRhdGEudGl0bGVcclxuXHQgIH0pO1xyXG5cdH0sXHJcblx0Ly/ngrnlh7vmmL7npLrmtY/op4jlr7nosaHmmL7npLrpobXpnaJcclxuXHRhc3luYyBvblZpZXdQYWdlQ2xpY2soc3R5bGUpe1xyXG5cdCAgaWYodGhpcy5wYXJhbS5WaWV3UGFnZSl7XHJcblx0XHQgIGlmKHRoaXMucGFyYW0uVmlld1BhZ2UuVmlld19VSURlZil7XHJcblx0XHRcdHRoaXMuc3R5bGVkZWYgPSBzdHlsZTtcclxuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdHVybDonLi4vbW9kYWwvMzIwMF92aWV3P3BhcmFtPScrSlNPTi5zdHJpbmdpZnkodGhpcy5wYXJhbSkrXCImdGl0bGVuYW1lPVwiK3RoaXMudGl0bGUrXCImc3R5bGU9XCIrSlNPTi5zdHJpbmdpZnkoc3R5bGUpLFxyXG5cdFx0XHRcdGV2ZW50czoge1xyXG5cdFx0XHRcdCAgICAvLyDkuLrmjIflrprkuovku7bmt7vliqDkuIDkuKrnm5HlkKzlmajvvIzojrflj5booqvmiZPlvIDpobXpnaLkvKDpgIHliLDlvZPliY3pobXpnaLnmoTmlbDmja5cclxuXHRcdFx0XHQgICAgRXhpdFZpZXdFdmVudDogZnVuY3Rpb24oZGF0YSkge1xyXG5cdFx0XHRcdCAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG5cdFx0XHRcdFx0ICAvL+mAgOWHuumhtemdouWQjuS6i+S7tlxyXG5cdFx0XHRcdFx0ICB2YXIgZXZlbnRpZCA9ICR0aGlzLnBhcmFtLlZpZXdQYWdlLkV4aXRfVmlld19FdmVudD8uaWQ7XHJcblx0XHRcdFx0XHQgIGlmKGV2ZW50aWQpe1xyXG5cdFx0XHRcdFx0ICAgIHRyeSB7XHJcblx0XHRcdFx0XHRcdCAgdmFyIG9ial9hdHRyID0geydTX0lEJzokdGhpcy5zdHlsZWRlZi5mb3JtLm9iaklkfTtcclxuXHRcdFx0XHRcdCAgICAgICR0aGlzLnN0eWxlZGVmLmZvcm0uYXR0cnMuZm9yRWFjaCgoYXR0cikgPT4ge1xyXG5cdFx0XHRcdFx0XHQgICAgb2JqX2F0dHJbYXR0ci5uYW1lXT1hdHRyLnZhbHVlO1xyXG5cdFx0XHRcdFx0ICAgICAgfSk7XHJcblx0XHRcdFx0XHQgICAgICAvLyBjb25zb2xlLmxvZyhvYmpfYXR0cik7XHJcblx0XHRcdFx0XHQgICAgICB2YXIgaW5wdXRfcGFyYW0gPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KG9ial9hdHRyKSk7XHJcblx0XHRcdFx0XHQgICAgICAkdGhpcy5ydW5DdXN0b21FdmVudCh7XHJcblx0XHRcdFx0XHQgICAgICAgICAgZWRfdHlwZTogMCxcclxuXHRcdFx0XHRcdFx0XHQgIHN0YXJ0X3RyYW5zYWN0aW9uOiB0cnVlLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgIGNsYXNzX2lkOiAkdGhpcy5wYXJhbS5EYXRhQ2xzLmlkLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgIGV2ZW50X2lkOiBldmVudGlkLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgIG9ial9hdHRyLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgIGlucHV0X3BhcmFtLFxyXG5cdFx0XHRcdFx0ICAgICAgfSk7XHJcblx0XHRcdFx0XHQgICAgfSBjYXRjaCAoZXgpIHtcclxuXHRcdFx0XHRcdFx0XHR2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHQgIH0gICAgICAgXHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHQgIH1cclxuXHR9LFxyXG5cdC8v54K55Ye75oyJ6ZKuXHJcblx0b25CdG5DbGljayhidG4sc3R5bGUpe1xyXG5cdCAgdmFyIHRoYXQgPSB0aGlzXHJcblx0ICBpZiAoYnRuLlByb21wdCkge1xyXG5cdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHQgIHRpdGxlOiAn5o+Q56S6JyxcclxuXHRcdCAgY29udGVudDogYnRuLlByb21wdENvbnRlbnQgfHwgXCLmmK/lkKbnoa7lrprvvJ9cIixcclxuXHRcdCAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xyXG5cdFx0ICAgIGlmIChyZXMuY29uZmlybSkge1xyXG5cdFx0ICBcdCAgdGhhdC5vbkJ1dHRvbkNsaWNrZWQoYnRuLHN0eWxlKTtcclxuXHRcdCAgICAvLyB9IGVsc2UgaWYgKHJlcy5jYW5jZWwpIHtcclxuXHRcdCAgICAvLyBcdGNvbnNvbGUubG9nKCfnlKjmiLfngrnlh7vlj5bmtognKTtcclxuXHRcdCAgICB9XHJcblx0XHQgIH1cclxuXHRcdH0pO1xyXG5cdCAgfSBlbHNlIHRoYXQub25CdXR0b25DbGlja2VkKGJ0bixzdHlsZSk7XHJcblx0fSxcclxuXHQvL+eCueWHu+aMiemSruWIl+ihqFxyXG5cdGFjdGlvblNoZWV0VGFwKCkge1xyXG5cdCAgXHR2YXIgdGhhdCA9IHRoaXNcclxuXHRcdHZhciBpdGVtbGlzdD1bXTtcclxuXHRcdHRoaXMucGFyYW0uTGlzdFBhZ2UuUGFnZV9CdXR0b24uZm9yRWFjaCgoYnRuKSA9PiB7XHJcblx0XHRcdGl0ZW1saXN0LnB1c2goYnRuLlNob3dOYW1lKTtcclxuXHRcdH0pO1xyXG5cdCAgXHR1bmkuc2hvd0FjdGlvblNoZWV0KHtcclxuXHQgIFx0XHQvLyB0aXRsZTogJ+aMiemSruWIl+ihqCcsXHJcblx0ICBcdFx0aXRlbUxpc3Q6IGl0ZW1saXN0LFxyXG5cdCAgXHRcdHN1Y2Nlc3M6IChlKSA9PiB7XHJcblx0ICBcdFx0XHRjb25zb2xlLmxvZyhlLnRhcEluZGV4KTtcclxuXHQgIFx0XHRcdHZhciBidG4gPSB0aGF0LnBhcmFtLkxpc3RQYWdlLlBhZ2VfQnV0dG9uW2UudGFwSW5kZXhdO1xyXG5cdCAgXHRcdFx0aWYgKGJ0bi5Qcm9tcHQpIHtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogJ+aPkOekuicsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGJ0bi5Qcm9tcHRDb250ZW50IHx8IFwi5piv5ZCm56Gu5a6a77yfXCIsXHJcblx0XHRcdFx0XHRcdHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAocmVzLmNvbmZpcm0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQub25CdXR0b25DbGlja2VkKGJ0bik7XHJcblx0XHRcdFx0XHRcdFx0Ly8gfSBlbHNlIGlmIChyZXMuY2FuY2VsKSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gXHRjb25zb2xlLmxvZygn55So5oi354K55Ye75Y+W5raIJyk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHQgIFx0XHRcdH0gZWxzZSB0aGF0Lm9uQnV0dG9uQ2xpY2tlZChidG4pO1xyXG5cdCAgXHRcdH1cclxuXHQgIFx0fSlcclxuXHR9LFxyXG5cdC8v5aSE55CG55u45YWz5oyJ6ZKuXHJcblx0YXN5bmMgb25CdXR0b25DbGlja2VkKGJ0bixzdHlsZSkge1xyXG4gICAgICBzdHlsZSA9IHN0eWxlIHx8ICcnO1xyXG5cdCAgdHJ5IHtcclxuXHQgICAgdmFyIGVudmlyb21lbnQgPSB7XHJcblx0ICAgICAgYnV0dG9uOiBcInRvcFwiLFxyXG5cdCAgICAgIGJ1dHRvbl9uYW1lOiBidG4uU2hvd05hbWUsXHJcblx0ICAgICAgY2xzX2lkOiBidG4uQ2xzX0lELFxyXG5cdCAgICAgIGZ1bmN0aW9uOiBcIjMyMDBcIixcclxuXHQgICAgICBtYXN0ZXI6IHt9LFxyXG5cdCAgICB9O1xyXG5cdCAgICBpZiAoYnRuLkZ1bkNvZGUgPT0gXCJBZGRcIiB8fCBidG4uRnVuQ29kZSA9PSBcIk1vZGlmeVwiKSB7XHJcblx0ICAgICAgaWYgKGJ0bi5FZGl0X2RsZy5Nb2RlbCA9PSBcInNtYWxsXCIpe1xyXG5cdCAgICAgICAgdGhpcy5zaG93QWRkU21hbGxEaWFsb2coYnRuLCBzdHlsZSwgZW52aXJvbWVudCk7XHJcblx0XHQgIH1cclxuXHQgICAgfSBlbHNlIGlmIChidG4uRnVuQ29kZSA9PSBcIkRlbGV0ZVwiKSB7XHJcblx0ICAgICAgdGhpcy5EZWxldGVPYmooYnRuLCBzdHlsZSwgZW52aXJvbWVudCk7XHJcblx0ICAgIC8vIH0gZWxzZSBpZiAoYnRuLkZ1bkNvZGUgPT0gXCJUcmlnZ2VyRXZlbnRcIikge1xyXG5cdCAgICAvLyAgIHRoaXMudHJpZ2dlckV2ZW50KGJ0biwgc3R5bGUsIGVudmlyb21lbnQpO1xyXG5cdCAgICB9IGVsc2Uge1xyXG5cdFx0ICB1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLmnKrlrp7njrBcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgICAgfVxyXG5cdCAgfSBjYXRjaCAoZXgpIHtcclxuXHQgICAgdmFyIHRpcCA9IHR5cGVvZiBleCA9PSBcInN0cmluZ1wiID8gZXggOiBleC5tZXNzYWdlO1xyXG5cdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgIH1cclxuXHR9LFxyXG5cdC8v5paw5aKe5L+u5pS55bCP56qX5Y+j5pWw5o2uXHJcblx0c2hvd0FkZFNtYWxsRGlhbG9nKGJ0biwgc3R5bGUsIGVudmlyb21lbnQpe1xyXG5cdFx0dmFyIGRhdGE9e1xyXG5cdFx0XHRBZGRfQnRuTmFtZTogYnRuLlNob3dOYW1lLFxyXG5cdFx0XHRFZGl0RGxnTW9kZTogYnRuLkVkaXRfZGxnLk1vZGVsLFxyXG5cdFx0XHRjbHNpZDogdGhpcy5wYXJhbS5EYXRhQ2xzLmlkLFxyXG5cdFx0XHRjbHNfbmFtZTogIHRoaXMucGFyYW0uRGF0YUNscy5uYW1lLFxyXG5cdFx0XHRFZGl0X2RsZzogYnRuLkVkaXRfZGxnXHJcblx0XHR9O1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHVuaS5uYXZpZ2F0ZVRvKHtcclxuXHRcdFx0dXJsOicuLi9tb2RhbC8zMDE4P3BhcmFtPScrSlNPTi5zdHJpbmdpZnkoZGF0YSkrXCImdGl0bGVuYW1lPVwiK2J0bi5FZGl0X2RsZy5OYW1lK1wiJnR5cGU9YWRkRGF0YU9ialwiLFxyXG5cdFx0XHRldmVudHM6IHtcclxuXHRcdFx0ICAgIC8vIOS4uuaMh+WumuS6i+S7tua3u+WKoOS4gOS4quebkeWQrOWZqO+8jOiOt+WPluiiq+aJk+W8gOmhtemdouS8oOmAgeWIsOW9k+WJjemhtemdoueahOaVsOaNrlxyXG5cdFx0XHQgICAgYWRkRGF0YU9iajogZnVuY3Rpb24oZGF0YSkge1xyXG5cdFx0XHQgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuXHRcdFx0XHQgICR0aGlzLlJlZnJlc2goKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdC8v5Yig6Zmk5pWw5o2u5a+56LGhXHJcblx0RGVsZXRlT2JqKGJ0biwgc3R5bGUsIGVudmlyb21lbnQpe1xyXG5cdCAgLy8gY29uc29sZS5sb2coc3R5bGUpO1xyXG5cdCAgdmFyICR0aGlzID0gdGhpcztcclxuXHQgIHVuaS5zaG93TW9kYWwoe1xyXG5cdCAgXHR0aXRsZTogJ+aPkOekuicsXHJcblx0ICBcdGNvbnRlbnQ6ICfnoa7lrprliKDpmaTor6XmlbDmja7vvIEnLFxyXG5cdCAgXHRzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XHJcblx0ICBcdFx0aWYgKHJlcy5jb25maXJtKSB7XHJcblx0XHRcdFx0dmFyIG9iaklEPXN0eWxlLmZvcm0ub2JqSWQ7XHJcblx0XHRcdFx0aWYoIXN0eWxlLmZvcm0ub2JqSWQuaW5jbHVkZXMoJ3snKSkgb2JqSUQgPSAneycrc3R5bGUuZm9ybS5vYmpJZCsnfSc7XHJcblx0XHRcdFx0ICAgICAgICAgIFxyXG5cdFx0XHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdFx0XHRjbGFzc19pZDogYnRuLkNsc19JRCxcclxuXHRcdFx0XHRcdGNsYXNzX25hbWU6ICcnLFxyXG5cdFx0XHRcdFx0b2JqX2lkOiBvYmpJRFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZGF0YU9iakRlbCcsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdC8v5omn6KGM5ZCO5aSE55CG5LqL5Lu2XHJcblx0XHRcdFx0XHRcdCR0aGlzLkFmdGVyUHJvY2Vzc19FdmVudChidG4uY2xzSWQsIGJ0bS5BZnRlclByb2Nlc3NfRXZlbnQsIGVudmlyb21lbnQpO1xyXG5cdFx0XHRcdFx0XHQvL+a4hemZpOW9k+WJjeWIl+ihqOaVsOaNrlxyXG5cdFx0XHRcdFx0XHQkdGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0LmZvckVhY2goKGVsZSxpbmRleCk9PntcclxuXHRcdFx0XHRcdFx0ICBpZihlbGUuZm9ybS5vYmpJZCA9PSBvYmpJRCl7XHJcblx0XHRcdFx0XHRcdCAgICAkdGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0LnNwbGljZShpbmRleCwxKTtcclxuXHRcdFx0XHRcdFx0ICB9XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLliKDpmaTmiJDlip/vvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor682LjFcIixjb250ZW50OnJldC5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzZcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHR9KTtcclxuXHQgIFx0XHR9IGVsc2UgaWYgKHJlcy5jYW5jZWwpIHtcclxuXHRcdFx0XHRcclxuXHQgIFx0XHR9XHJcblx0ICBcdH1cclxuXHQgIH0pO1xyXG5cdCAgXHJcblx0fSxcclxuXHQvL+aJp+ihjOWQjuWkhOeQhuS6i+S7tlxyXG5cdGFzeW5jIEFmdGVyUHJvY2Vzc19FdmVudChjbHNJZCwgYWZ0ZXJQcm9jZXNzX0V2ZW50LCBlbnZpcm9tZW50KXtcclxuXHQgIHRyeSB7XHJcblx0ICAgIGlmIChhZnRlclByb2Nlc3NfRXZlbnQuSUQpIHtcclxuXHRcdFx0Ly/miafooYzlkI7lpITnkIbkuovku7ZcclxuXHRcdFx0YXdhaXQgdGhpcy5ydW5DdXN0b21FdmVudCh7XHJcblx0ICAgICAgICAgICAgZWRfdHlwZTogMCxcclxuXHRcdFx0XHRzdGFydF90cmFuc2FjdGlvbjogdHJ1ZSxcclxuXHQgICAgICAgICAgICBjbGFzc19pZDogY2xzSWQsXHJcblx0ICAgICAgICAgICAgZXZlbnRfaWQ6IGFmdGVyUHJvY2Vzc19FdmVudC5JRCxcclxuXHQgICAgICAgIH0pO1xyXG5cdCAgICB9XHJcblx0ICB9IGNhdGNoIChleCkge1xyXG5cdCAgICB2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzdcIixjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgIH1cclxuXHR9LFxyXG5cclxuXHRvbnRhcChpdGVtKXsgLy/miavnoIHlip/og71cclxuXHRcdC8vIHZhciAkZWxlID0gZTtcclxuXHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXHJcblx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCk9PntcclxuXHRcdFx0Y29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xyXG5cdFx0XHRpdGVtLnZhbHVlID0gcmVzdWx0LmRlY29kZWRhdGE7XHJcblx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcclxuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0XHJcblx0XHRcdGNvbnNvbGUubG9nKGl0ZW0pO1xyXG5cdFx0XHRpZihpdGVtLm9sZHZhbHVlICE9IGl0ZW0udmFsdWUpe1xyXG5cdFx0XHQgICAgaXRlbS5vbGR2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0dmFyIGF0dHIgPSBpdGVtLmZpZWxkSWQ7XHJcblx0XHRcdFx0dGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0cl0gPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRcdHZhciBvbkNoYW5nZUV2ZW50ID0gaXRlbS5iaW5kLm9uQ2hhbmdlRXZlbnQ7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdFx0XHR2YXIgb25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQgPSBpdGVtLmJpbmQub25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQ7ICAgLy/lkI7lm77moIfngrnlh7vkuovku7ZcclxuXHRcdFx0XHR2YXIgb25TdWZmaXhDbGlja0V2ZW50ID0gaXRlbS5iaW5kLm9uU3VmZml4Q2xpY2tFdmVudDsgICAvL+WQjuWbvuagh+eCueWHu+Wbnuiwg1xyXG5cdFx0XHRcdHZhciBpc2ZsYWcgPSBmYWxzZTtcclxuXHRcdFx0XHRcclxuXHRcdFx0ICAgIGlmKG9uQ2hhbmdlRXZlbnQuaWQpeyAgIC8v5YaF5a655Y+Y5YyW5ZCO5LqL5Lu2XHJcblx0XHRcdCAgICAgICR0aGlzLm9uQ2hhbmdlKG9uQ2hhbmdlRXZlbnQpOyBcclxuXHRcdFx0ICAgIH0gZWxzZXtcblx0XHRcdFx0ICAkdGhpcy53aGVyZSA9Jyc7XG5cdFx0XHRcdCAgaWYoaXRlbS52YWx1ZSlcblx0XHRcdFx0XHQkdGhpcy53aGVyZSA9aXRlbS5maWVsZElkK1wiIGxpa2UgJyVcIitpdGVtLnZhbHVlK1wiJSdcIjtcblx0XHRcdFx0ICAkdGhpcy5xdWVyeV9pZD0nJztcblx0XHRcdFx0ICAkdGhpcy5wYWdlaW5kZXggPSAxO1xuXHRcdFx0XHQgICR0aGlzLmRldGFpbDFTdHlsZURlZkxpc3Q9W107XG5cdFx0XHRcdCAgJHRoaXMubG9hZERhdGFHZXRMaXN0KCk7XG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZihpdGVtLnZhbHVlKXsgLy/nrKzkuIDkuKrovpPlhaXmoYbkuI3kuLrnqbpcclxuXHRcdFx0XHRcdCR0aGlzLmZvY3VzTWF0ZXJpYSA9IHRydWU7IC8v5Yid5aeL5YyW77yM56ys5LqM5Liq6L6T5YWl5qGGZm9jdXPlsZ7mgKdcclxuXHRcdFx0XHRcdC8vIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcclxuXHRcdFx0XHRcdC8vIFx0JHRoaXMuZm9jdXNNYXRlcmlhPXRydWU7IC8v56ys5LqM5Liq6L6T5YWl5qGG6I635Y+W54Sm54K5XHJcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcclxuXHRcdFx0XHRcdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XHJcblx0XHRcdFx0XHRcdH0sMTAwKTtcclxuXHRcdFx0XHRcdC8vIH0sNTAwKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCAgICAvLyBpZihvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudC5pZCl7ICAgLy/lkI7lm77moIfngrnlh7vkuovku7ZcclxuXHRcdFx0ICAgIC8vICAgdGhpcy5vblN1ZmZpeENsaWNrKG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50KTtcclxuXHRcdFx0ICAgIC8vIH1cclxuXHRcdFx0ICAgIC8vIGlmKG9uU3VmZml4Q2xpY2tFdmVudC5pZCl7ICAgLy/lkI7lm77moIfngrnlh7vlm57osINcclxuXHRcdFx0ICAgIC8vICAgdGhpcy5vblN1ZmZpeENsaWNrQ2FsbGJhY2sob25TdWZmaXhDbGlja0V2ZW50KTtcclxuXHRcdFx0ICAgIC8vIH1cclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdG9uRW50ZXJDaGFuZ2UoaXRlbSl7IC8v5Zue6L2m77yM54K55Ye75oyJ6ZKu77yM5Y+W5raI6IqC54K55LqL5Lu2XHJcblx0XHQvLyBjb25zb2xlLmxvZyhpdGVtKTtcclxuXHRcdGlmKGl0ZW0ub2xkdmFsdWUgIT0gaXRlbS52YWx1ZSl7XHJcblx0XHQgICAgaXRlbS5vbGR2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdHZhciBhdHRyID0gaXRlbS5maWVsZElkO1xyXG5cdFx0XHR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdHZhciBvbkNoYW5nZUV2ZW50ID0gaXRlbS5iaW5kLm9uQ2hhbmdlRXZlbnQ7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdFx0dmFyIG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50ID0gaXRlbS5iaW5kLm9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50OyAgIC8v5ZCO5Zu+5qCH54K55Ye75LqL5Lu2XHJcblx0XHRcdHZhciBvblN1ZmZpeENsaWNrRXZlbnQgPSBpdGVtLmJpbmQub25TdWZmaXhDbGlja0V2ZW50OyAgIC8v5ZCO5Zu+5qCH54K55Ye75Zue6LCDXHJcblx0XHRcdHZhciBpc2ZsYWcgPSBmYWxzZTtcclxuXHRcdFx0XHJcblx0XHQgICAgaWYob25DaGFuZ2VFdmVudC5pZCl7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdCAgICAgIHRoaXMub25DaGFuZ2Uob25DaGFuZ2VFdmVudCk7IFxyXG5cdFx0ICAgIH0gZWxzZXtcblx0XHRcdCAgdGhpcy53aGVyZSA9Jyc7XHJcblx0XHRcdCAgaWYoaXRlbS52YWx1ZSlcclxuXHRcdFx0XHR0aGlzLndoZXJlID1pdGVtLmZpZWxkSWQrXCIgbGlrZSAnJVwiK2l0ZW0udmFsdWUrXCIlJ1wiO1xyXG5cdFx0XHQgIHRoaXMucXVlcnlfaWQ9Jyc7XHJcblx0XHRcdCAgdGhpcy5wYWdlaW5kZXggPSAxO1xyXG5cdFx0XHQgIHRoaXMuZGV0YWlsMVN0eWxlRGVmTGlzdD1bXTtcclxuXHRcdFx0ICB0aGlzLmxvYWREYXRhR2V0TGlzdCgpO1xuXHRcdFx0fVxyXG5cdFx0ICAgIC8vIGlmKG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50LmlkKXsgICAvL+WQjuWbvuagh+eCueWHu+S6i+S7tlxyXG5cdFx0ICAgIC8vICAgdGhpcy5vblN1ZmZpeENsaWNrKG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50KTtcclxuXHRcdCAgICAvLyB9XHJcblx0XHQgICAgLy8gaWYob25TdWZmaXhDbGlja0V2ZW50LmlkKXsgICAvL+WQjuWbvuagh+eCueWHu+Wbnuiwg1xyXG5cdFx0ICAgIC8vICAgdGhpcy5vblN1ZmZpeENsaWNrQ2FsbGJhY2sob25TdWZmaXhDbGlja0V2ZW50KTtcclxuXHRcdCAgICAvLyB9XHJcblx0XHR9XHJcblx0fSxcclxuXHQvLyDlhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRhc3luYyBvbkNoYW5nZShldmVudCkge1xyXG5cdCAgICB0cnkge1xyXG5cdCAgICAgICAgaWYgKGV2ZW50LmlkKSB7XHJcblx0ICAgICAgICAgIHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdCAgICAgICAgICAvLyBjb25zb2xlLmxvZyhvYmpfYXR0cik7XHJcblx0ICAgICAgICAgIHZhciBpbnB1dF9wYXJhbSA9IEJhc2U2NC5lbmNvZGUoXHJcblx0ICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoXHJcblx0ICAgICAgICAgICAgICBPYmplY3Qua2V5cyhvYmpfYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdCAgICAgICAgICAgICAgICBhdHRyOiBhLFxyXG5cdCAgICAgICAgICAgICAgICB2YWx1ZTogb2JqX2F0dHJbYV0gfHwgXCJcIixcclxuXHQgICAgICAgICAgICAgIH0pKVxyXG5cdCAgICAgICAgICAgIClcclxuXHQgICAgICAgICAgKTtcclxuXHRcdFx0ICB2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHQgIHZhciBkYXRhSW5mbz17XHJcblx0ICAgICAgICAgICAgZWRfdHlwZTogMCxcclxuXHRcdFx0XHRzdGFydF90cmFuc2FjdGlvbjogdHJ1ZSxcclxuXHQgICAgICAgICAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0uY2xzSWQsXHJcblx0XHRcdFx0Y2xhc3NfbmFtZTogJycsXHJcblx0ICAgICAgICAgICAgZXZlbnRfaWQ6IGV2ZW50LmlkLFxyXG5cdFx0XHRcdGV2ZW50X25hbWU6ICcnLFxyXG5cdFx0XHRcdGRhdGFfb2JqX2lkOiAnJyxcclxuXHQgICAgICAgICAgICBvYmpfYXR0cjogb2JqX2F0dHIsXHJcblx0XHRcdFx0cHJqX2lkOiAnJyxcclxuXHRcdFx0XHRyZWZfY2xzX2lkOiAnJyxcclxuXHRcdFx0XHRyZWxfb2JqX2lkOiAnJyxcclxuXHRcdFx0XHR1c2VyX2xvZ2luOiAnJyxcclxuXHRcdFx0XHRkYXRhX2pzb246ICcnLFxyXG5cdFx0XHRcdGNvbXBvc2VfaW5mbzogJycsXHJcblx0XHRcdFx0ZXh0X2luZm86ICcnLFxyXG5cdFx0XHRcdGdsb2JhbF9hdHRyOiAnJyxcclxuXHQgICAgICAgICAgICBpbnB1dF9wYXJhbTogaW5wdXRfcGFyYW0sXHJcblx0ICAgICAgICAgIH07XHJcblx0XHRcdCAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3J1bkN1c3RvbUV2ZW50JyxkYXRhSW5mbykudGhlbihyZXQ9PntcclxuXHRcdFx0ICBcdC8vIGNvbnNvbGUubG9nKHJldCk7XHJcblx0XHRcdCAgXHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRcdHZhciByZXN1bHQgPSByZXQucmVzdWx0OyBcclxuXHRcdFx0XHRcdGlmIChyZXN1bHQucmV0ICE9IDApIHtcclxuXHRcdFx0XHRcdCAgICB2YXIgdGlwID0gcmVzdWx0LmVycl9pbmZvID8gdHlwZW9mIHJlc3VsdC5lcnJfaW5mbyA9PSAnc3RyaW5nJyA/IHJlc3VsdC5lcnJfaW5mbyA6IHJlc3VsdC5lcnJfaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0XHQgICAgaWYgKHJlc3VsdC5yZXQgPT0gODAxKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdCAgICBlbHNlIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwKycs5o+Q56S6OicrcmVzdWx0LnJldCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdHZhciB0aXAgPSByZXN1bHQuaW5mbyA/IHR5cGVvZiByZXN1bHQuaW5mbyA9PSAnc3RyaW5nJyA/IHJlc3VsdC5pbmZvIDogcmVzdWx0LmluZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdFx0XHRpZiAodGlwKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRpZihyZXN1bHQucmVzdWx0X3R5cGUgPT0gMCAmJiByZXN1bHQuYWN0aW9uKXtcclxuXHRcdFx0XHRcdFx0XHRyZXN1bHQuYWN0aW9uLmZvckVhY2goaXRlbT0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYoaXRlbS5hY3Rpb25fdHlwZSA9PSBcInNldF9kbGdfYXR0clwiKXtcclxuXHRcdFx0XHRcdFx0XHRcdCAgLy8gdmFsdWUgPSB7XCJhdHRyXCI6XCJ4eHhcIiwgXCJ2YWx1ZVwiOlwieHh4XCJ9XHJcblx0XHRcdFx0XHRcdFx0XHQgIHZhciBkYXRhID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdCAgJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmZvckVhY2goYXN5bmMgKGVsZSxpbmRleCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgIGRhdGEuZm9yRWFjaChhc3luYyAoZWxlMixpbmRleCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgaWYoZWxlLmZpZWxkSWQgPT0gZWxlMi5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdCAgICAgICAgZWxlLnZhbHVlID0gZWxlMi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdCAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdCAgICB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdCAgfSk7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdC8vIHRoaXMuZGV0YWlsMlN0eWxlRGVmTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRpZihyZXN1bHQuaW5mbyl7XHJcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6cmVzdWx0LmluZm8sc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdCAgXHRcdFxyXG5cdFx0XHQgIFx0fWVsc2V7XHJcblx0XHRcdCAgXHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vOFwiLGNvbnRlbnQ6cmV0LmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdCAgXHR9XHJcblx0XHRcdCAgfSkuY2F0Y2goZXg9PntcclxuXHRcdFx0ICBcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0ICBcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vOC4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdCAgfSk7XHJcblx0ICAgICAgICB9XHJcblx0ICAgIH0gY2F0Y2ggKGV4KSB7XHJcblx0ICAgICAgICB2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vOC4yXCIsY29udGVudDpcIuaJp+ihjOKAnOWGheWuueWPmOWMluWQjuKAneS6i+S7tuWksei0pe+8mlwiICsgdGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcclxuXHQgICAgfVxyXG5cdH0sXHJcblx0Ly/ngrnkuK3ooajljZVcclxuXHRvblBhbmVsQ2xpY2sodmFsdWUpeyAvL+eCueWHu+mdouadv+mrmOS6ruaYvuekulxyXG5cdFx0Ly8gY29uc29sZS5sb2codmFsdWUpO1xyXG5cdCAgICB0aGlzLmFjdGl2ZWxpc3QuZm9yRWFjaChlbGU9PntcclxuXHQgICAgICAgIGVsZS5hY3RpdmUgPSBmYWxzZTtcclxuXHQgICAgfSk7XHJcblx0ICAgIHRoaXMuYWN0aXZlbGlzdFt2YWx1ZV0uYWN0aXZlID0gdHJ1ZTtcclxuXHR9LFxyXG5cdFx0XHJcblx0Ly/kuovku7blpITnkIZcclxuXHRhc3luYyBydW5DdXN0b21FdmVudChkYXRhSW5mbykge1xyXG5cdCAgICB0cnkge1xyXG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgncnVuQ3VzdG9tRXZlbnQnLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdFx0XHQgIFx0Y29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0ICBcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0dmFyIHJlc3VsdCA9IHJldC5yZXN1bHQ7IFxyXG5cdFx0XHRcdFx0aWYgKHJlc3VsdC5yZXQgIT0gMCkge1xyXG5cdFx0XHRcdFx0ICAgIHZhciB0aXAgPSByZXN1bHQuZXJyX2luZm8gPyB0eXBlb2YgcmVzdWx0LmVycl9pbmZvID09ICdzdHJpbmcnID8gcmVzdWx0LmVycl9pbmZvIDogcmVzdWx0LmVycl9pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHRcdCAgICBpZiAocmVzdWx0LnJldCA9PSA4MDEpIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0ICAgIGVsc2UgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXArJyzmj5DnpLo6JytyZXN1bHQucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dmFyIHRpcCA9IHJlc3VsdC5pbmZvID8gdHlwZW9mIHJlc3VsdC5pbmZvID09ICdzdHJpbmcnID8gcmVzdWx0LmluZm8gOiByZXN1bHQuaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0XHRcdGlmICh0aXApIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdGlmKHJlc3VsdC5yZXN1bHRfdHlwZSA9PSAwICYmIHJlc3VsdC5hY3Rpb24pe1xyXG5cdFx0XHRcdFx0XHRcdHJlc3VsdC5hY3Rpb24uZm9yRWFjaChpdGVtPT57XHJcblx0XHRcdFx0XHRcdFx0XHRpZihpdGVtLmFjdGlvbl90eXBlID09IFwiZ29iYWNrX3RvX3ByZV9wYWdlXCIpeyAvL+i/lOWbnuS4iuS4gOmhtVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVCYWNrKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkZWx0YToxICwvL+i/lOWbnuWxguaVsO+8jDLliJnkuIrkuIrpobVcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYoaXRlbS5hY3Rpb25fdHlwZSA9PSBcImhpZGRlbl9idXR0b25cIil7IC8v6ZqQ6JeP5oyJ6ZKuXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlLmZvckVhY2goYnRuID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICAgIHZhciBpbmRleCA9ICR0aGlzLnBhcmFtLkxpc3RQYWdlLlBhZ2VfQnV0dG9uLmZpbmRJbmRleChidXR0b24gPT4gYnV0dG9uLlNob3dOYW1lID09IGJ0bilcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICAgIGlmIChpbmRleCA+IC0xKSBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLnBhcmFtLkxpc3RQYWdlLlBhZ2VfQnV0dG9uLnNwbGljZShpbmRleCwgMSlcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0XHRcdC8vIH0gZWxzZSBpZihpdGVtLmFjdGlvbl90eXBlID09IFwicmVmcmVzaF9jdXJfcm93XCIpeyAvL1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gXHR2YXIgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChpdGVtLmFjdGlvbl90eXBlID09IFwic2V0X3BhbmVsX2h0bWxcIikgeyAvL+aYvuekukh0bWzpobXpnaJcclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gdmFyIHZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuTGlzdEh0bWxfUGFuZWwgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyAkdGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0LmZvckVhY2goKGVsZSxpbmRleCk9PntcclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gXHRlbGUuTGlzdEh0bWxfUGFuZWwgPSBpdGVtLnZhbHVlW2luZGV4XTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNle1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLlvZPliY1hY3Rpb25fdHlwZe+8mlwiK2l0ZW0uYWN0aW9uX3R5cGUrXCLmnKrlpITnkIZcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdFx0Ly8gdGhpcy5kZXRhaWwyU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdGlmKHJlc3VsdC5pbmZvKXtcclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpyZXN1bHQuaW5mbyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0ICBcdFx0XHJcblx0XHRcdCAgXHR9ZWxzZXtcclxuXHRcdFx0ICBcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor685XCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0ICBcdH1cclxuXHRcdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0ICBcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0ICBcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vOS4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH0pO1xyXG5cdCAgICB9IGNhdGNoIChleCkge1xyXG5cdCAgICAgICAgdmFyIHRpcCA9IHR5cGVvZiBleCA9PSBcInN0cmluZ1wiID8gZXggOiBleC5tZXNzYWdlO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzkuMlwiLGNvbnRlbnQ6XCLmiafooYzkuovku7blpLHotKXvvJpcIiArIHRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHJcblx0ICAgIH1cclxuXHR9LFxyXG5cdFxyXG5cdGNhbmNlbChlKXsgLy/lj5bmtohcclxuXHRcdHZhciBldmVudENoYW5uZWwgPSB0aGlzLiRzY29wZS5ldmVudENoYW5uZWw7XHJcblx0XHQvLyBjb25zdCBldmVudENoYW5uZWwgPSB0aGlzLmdldE9wZW5lckV2ZW50Q2hhbm5lbCgpO1xyXG5cdFx0ZXZlbnRDaGFubmVsLmVtaXQoJ3ZpZXdfMzIwMScsXCJcIik7XHJcblx0XHR1bmkubmF2aWdhdGVCYWNrKHtcclxuXHRcdFx0ZGVsdGE6MSAsLy/ov5Tlm57lsYLmlbDvvIwy5YiZ5LiK5LiK6aG1XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdC8qKlxyXG5cdCAqIOWPquaUr+aMgVtcImNvbHVtbjE9J0EnIG9yIGNvbHVtbjI9J0InXCIsIFwiY29sdW1uMz0nQycgYW5kIGNvbHVtbjQ9J0QnXCIsIFwiY29sdW1uNT0nRSdcIl3ov5nnp43moLzlvI9cclxuXHQgKiB7XHJcblx0ICogICAgIFwibW9kZWxcIjogMCAvIDEsXHJcblx0ICogICAgIFwiY29uZGl0aW9uXCI6XHJcblx0ICogICAgIFtcclxuXHQgKiAgICAgICAgIFtcclxuXHQgKiAgICAgICAgICAgICB7IH0sXHJcblx0ICogICAgICAgICAgICAgeyB9LFxyXG5cdCAqICAgICAgICAgICAgIHsgfVxyXG5cdCAqICAgICAgICAgXSxcclxuXHQgKiAgICAgICAgIFtcclxuXHQgKiAgICAgICAgICAgICB7IH1cclxuXHQgKiAgICAgICAgIF0sXHJcblx0ICogICAgICAgICBbXHJcblx0ICogICAgICAgICAgICAgeyB9XHJcblx0ICogICAgICAgICBdXHJcblx0ICogICAgIF1cclxuXHQgKiB9XHJcblx0ICovXHJcblx0dG9XaGVyZUJhc2U2NFN0cmluZyhsaXN0KSB7XHJcblx0ICAgIGlmICh0eXBlb2YgbGlzdCA9PSAnc3RyaW5nJykgbGlzdCA9IFtsaXN0XVxyXG5cdCAgICB2YXIgc3FsID0gW11cclxuXHQgICAgdmFyIHNlcHMgPSBbJyBub3QgaW4nLCAnIGluJywgJzw+JywgJyE9JywgJzw9JywgJz49JywgJzwnLCAnPScsICc+JywgJyBsaWtlJ11cclxuXHQgICAgbGlzdC5mb3JFYWNoKGxzID0+IHtcclxuXHQgICAgICAgIHZhciB3aGVyZSA9IGxzLnRyaW0oKS50b0xvd2VyQ2FzZSgpXHJcblx0ICAgICAgICBpZiAod2hlcmUuc3RhcnRzV2l0aCgnKCcpICYmIHdoZXJlLmVuZHNXaXRoKCcpJykpIHdoZXJlID0gd2hlcmUucmVwbGFjZSgvXlxcKC8sICcnKS5yZXBsYWNlKC9cXCkkLywgJycpXHJcblx0ICAgICAgICBpZiAod2hlcmUuaW5jbHVkZXMoJyBhbmQgJykpIHtcclxuXHQgICAgICAgICAgICAvLyDkuoznuqdhbmTmlL7lnKjnrKzkuIDnuqfmlbDnu4TkuK1cclxuXHQgICAgICAgICAgICB3aGVyZS5zcGxpdCgnIGFuZCAnKS5mb3JFYWNoKGxpID0+IHtcclxuXHQgICAgICAgICAgICAgICAgdmFyIGwgPSBsaS50cmltKClcclxuXHQgICAgICAgICAgICAgICAgaWYgKGwuc3RhcnRzV2l0aCgnKCcpICYmIGwuZW5kc1dpdGgoJyknKSkgbCA9IGwucmVwbGFjZSgvXlxcKC8sICcnKS5yZXBsYWNlKC9cXCkkLywgJycpXHJcblx0ICAgICAgICAgICAgICAgIHZhciBzZXAgPSAnJ1xyXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcHMubGVuZ3RoOyBpKyspIHtcclxuXHQgICAgICAgICAgICAgICAgICAgIGlmIChsLmluY2x1ZGVzKHNlcHNbaV0pKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgc2VwID0gc2Vwc1tpXVxyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcblx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgaWYgKHNlcCkge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlcyA9IGwuc3BsaXQoc2VwKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGZpZWxkID0gdmFsdWVzWzBdPy50cmltKCkucmVwbGFjZSgvXlxcWy8sICcnKS5yZXBsYWNlKC9cXF0kLywgJycpXHJcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSAnJ1xyXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIG9wID0gc2VwLnRyaW0oKVxyXG5cdFxyXG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKFsnIGluJywgJyBub3QgaW4nXS5pbmNsdWRlcyhzZXApICYmIHZhbHVlc1sxXS5pbmNsdWRlcygnc2VsZWN0ICcpICYmIHZhbHVlc1sxXS5pbmNsdWRlcygnIGZyb20gJykpIHtcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGwucmVwbGFjZShmaWVsZCwgJycpLnJlcGxhY2UoL15cXHMqKGlufG5vdCBpbilcXHMqLywgJycpLnRyaW0oKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcoJykgJiYgdmFsdWUuZW5kc1dpdGgoJyknKSkgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJykudHJpbSgpXHJcblx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlc1sxXT8udHJpbSgpLnJlcGxhY2UoL15cXCcvLCAnJykucmVwbGFjZSgvXFwnJC8sICcnKVxyXG5cdFxyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGlmIChbJ2luJywgJ25vdCBpbiddLmluY2x1ZGVzKG9wKSkge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KCcsJykubWFwKHYgPT4gdi50cmltKCkucmVwbGFjZSgvXlxcJy8sICcnKS5yZXBsYWNlKC9cXCckLywgJycpKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgICAgIHNxbC5wdXNoKFt7IGZpZWxkLCB2YWx1ZSwgb3AgfV0pXHJcblx0ICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICB9KVxyXG5cdCAgICAgICAgfVxyXG5cdCAgICAgICAgZWxzZSBpZiAod2hlcmUuaW5jbHVkZXMoJyBvciAnKSkge1xyXG5cdCAgICAgICAgICAgIC8vIOS6jOe6p29y5pS+5Zyo56ys5LqM57qn5ZCM5LiA57uE5pWw57uE5LitXHJcblx0ICAgICAgICAgICAgdmFyIHMgPSBbXVxyXG5cdCAgICAgICAgICAgIHdoZXJlLnNwbGl0KCcgb3IgJykuZm9yRWFjaChsaSA9PiB7XHJcblx0ICAgICAgICAgICAgICAgIHZhciBsID0gbGkudHJpbSgpXHJcblx0ICAgICAgICAgICAgICAgIGlmIChsLnN0YXJ0c1dpdGgoJygnKSAmJiBsLmVuZHNXaXRoKCcpJykpIGwgPSBsLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKVxyXG5cdCAgICAgICAgICAgICAgICB2YXIgc2VwID0gJydcclxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXBzLmxlbmd0aDsgaSsrKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICBpZiAobC5pbmNsdWRlcyhzZXBzW2ldKSkge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHNlcCA9IHNlcHNbaV1cclxuXHQgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG5cdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgIGlmIChzZXApIHtcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBsLnNwbGl0KHNlcClcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBmaWVsZCA9IHZhbHVlc1swXT8udHJpbSgpLnJlcGxhY2UoL15cXFsvLCAnJykucmVwbGFjZSgvXFxdJC8sICcnKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gJydcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBvcCA9IHNlcC50cmltKClcclxuXHRcclxuXHQgICAgICAgICAgICAgICAgICAgIGlmIChbJyBpbicsICcgbm90IGluJ10uaW5jbHVkZXMoc2VwKSAmJiB2YWx1ZXNbMV0uaW5jbHVkZXMoJ3NlbGVjdCAnKSAmJiB2YWx1ZXNbMV0uaW5jbHVkZXMoJyBmcm9tICcpKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBsLnJlcGxhY2UoZmllbGQsICcnKS5yZXBsYWNlKC9eXFxzKihpbnxub3QgaW4pXFxzKi8sICcnKS50cmltKClcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnKCcpICYmIHZhbHVlLmVuZHNXaXRoKCcpJykpIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXlxcKC8sICcnKS5yZXBsYWNlKC9cXCkkLywgJycpLnRyaW0oKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbMV0/LnRyaW0oKS5yZXBsYWNlKC9eXFwnLywgJycpLnJlcGxhY2UoL1xcJyQvLCAnJylcclxuXHRcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAoWydpbicsICdub3QgaW4nXS5pbmNsdWRlcyhvcCkpIHtcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJylcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdCgnLCcpLm1hcCh2ID0+IHYudHJpbSgpLnJlcGxhY2UoL15cXCcvLCAnJykucmVwbGFjZSgvXFwnJC8sICcnKSlcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgICAgICBzcWwucHVzaChbeyBmaWVsZCwgdmFsdWUsIG9wIH1dKVxyXG5cdCAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgfSlcclxuXHQgICAgICAgICAgICBzcWwucHVzaChzKVxyXG5cdCAgICAgICAgfVxyXG5cdCAgICAgICAgZWxzZSB7XHJcblx0ICAgICAgICAgICAgdmFyIGxpID0gd2hlcmVcclxuXHQgICAgICAgICAgICAvLyDljZXkuIDmn6Xor6LmnaHku7bnm7TmjqXmlL7lnKjnrKzkuIDnuqfmlbDnu4TkuK1cclxuXHQgICAgICAgICAgICB2YXIgbCA9IGxpLnRyaW0oKVxyXG5cdCAgICAgICAgICAgIGlmIChsLnN0YXJ0c1dpdGgoJygnKSAmJiBsLmVuZHNXaXRoKCcpJykpIGwgPSBsLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKVxyXG5cdCAgICAgICAgICAgIHZhciBzZXAgPSAnJ1xyXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Vwcy5sZW5ndGg7IGkrKykge1xyXG5cdCAgICAgICAgICAgICAgICBpZiAobC5pbmNsdWRlcyhzZXBzW2ldKSkge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgc2VwID0gc2Vwc1tpXVxyXG5cdCAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuXHQgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICBpZiAoc2VwKSB7XHJcblx0ICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBsLnNwbGl0KHNlcClcclxuXHQgICAgICAgICAgICAgICAgdmFyIGZpZWxkID0gdmFsdWVzWzBdPy50cmltKCkucmVwbGFjZSgvXlxcWy8sICcnKS5yZXBsYWNlKC9cXF0kLywgJycpXHJcblx0ICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9ICcnXHJcblx0ICAgICAgICAgICAgICAgIHZhciBvcCA9IHNlcC50cmltKClcclxuXHRcclxuXHQgICAgICAgICAgICAgICAgaWYgKFsnIGluJywgJyBub3QgaW4nXS5pbmNsdWRlcyhzZXApICYmIHZhbHVlc1sxXS5pbmNsdWRlcygnc2VsZWN0ICcpICYmIHZhbHVlc1sxXS5pbmNsdWRlcygnIGZyb20gJykpIHtcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbC5yZXBsYWNlKGZpZWxkLCAnJykucmVwbGFjZSgvXlxccyooaW58bm90IGluKVxccyovLCAnJykudHJpbSgpXHJcblx0ICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnKCcpICYmIHZhbHVlLmVuZHNXaXRoKCcpJykpIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXlxcKC8sICcnKS5yZXBsYWNlKC9cXCkkLywgJycpLnRyaW0oKVxyXG5cdCAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgIGVsc2Uge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbMV0/LnRyaW0oKS5yZXBsYWNlKC9eXFwnLywgJycpLnJlcGxhY2UoL1xcJyQvLCAnJylcclxuXHRcclxuXHQgICAgICAgICAgICAgICAgICAgIGlmIChbJ2luJywgJ25vdCBpbiddLmluY2x1ZGVzKG9wKSkge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXlxcKC8sICcnKS5yZXBsYWNlKC9cXCkkLywgJycpXHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdCgnLCcpLm1hcCh2ID0+IHYudHJpbSgpLnJlcGxhY2UoL15cXCcvLCAnJykucmVwbGFjZSgvXFwnJC8sICcnKSlcclxuXHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICBzcWwucHVzaChbeyBmaWVsZCwgdmFsdWUsIG9wIH1dKVxyXG5cdCAgICAgICAgICAgIH1cclxuXHQgICAgICAgIH1cclxuXHQgICAgfSlcclxuXHRcclxuXHQgICAgaWYgKHNxbC5sZW5ndGggPiAwKVxyXG5cdCAgICAgICAgcmV0dXJuIEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoe1xyXG5cdCAgICAgICAgICAgIG1vZGVsOiAxLFxyXG5cdCAgICAgICAgICAgIGNvbmRpdGlvbjogc3FsXHJcblx0ICAgICAgICB9KSlcclxuXHQgICAgZWxzZVxyXG5cdCAgICAgICAgcmV0dXJuICcnXHJcblx0fVxyXG5cclxuICB9LFxufTtcbjwvc2NyaXB0PlxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///165\n"); |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 57));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 59));\nvar _base = _interopRequireDefault(__webpack_require__(/*! ../../components/js-base64/base64.js */ 65));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n modules: {\n Base64: _base.default\n },\n onNavigationBarButtonTap: function onNavigationBarButtonTap(e) {\n // \tconsole.log(e);\n // e.text=\"\\ue924\";\n // console.log(e.fontSize);\n if (this.isFilter) this.isFilter = false;else this.isFilter = true;\n },\n onBackPress: function onBackPress(e) {\n // console.log(\"监听返回按钮事件\",e);\n var eventChannel = this.$scope.eventChannel;\n // const eventChannel = this.getOpenerEventChannel();\n eventChannel.emit('view_3201', \"\");\n // uni.navigateBack({\n // \tdelta:1 ,//返回层数,2则上上页\n // });\n // return true;\n },\n data: function data() {\n return {\n title: '新增',\n isFilter: true,\n param: {},\n focusMateria: false,\n styledef: {},\n head_styledef: {\n form: {\n items: []\n }\n },\n detail1_styledef: {},\n detail1StyleDefList: [],\n detail2_styledef: {},\n detail2StyleDefList: [],\n items: [],\n active_id: '',\n activelist: [],\n where: '',\n wheres: '',\n orderby: '',\n query_id: '',\n pageindex: 1,\n page_size: 10,\n page_count: 0,\n scrollTop: 0,\n old: {\n scrollTop: 0\n },\n isScroll: true,\n //获取数据类的HTML页面\n ListHtml_Panel: \"\",\n ListPageHtml_Show: {\n name: \"\",\n event: {\n id: \"\",\n name: \"\"\n }\n }\n };\n },\n onLoad: function onLoad(options) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var _this$param$ListPage$;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // console.log(options);\n uni.setNavigationBarTitle({\n title: options.titlename\n }); //设置顶部标题 \n _this.$data.title = options.titlename;\n _this.$data.param = JSON.parse(options.param);\n _this.isFilter = true;\n if (_this.param.ShowFilter) _this.isFilter = false;\n //获取数据类的自定义表单参数\n if (_this.param.Query_Panel) {\n _this.Head_UIStyleGetInfo(_this.param.DataCls.id, _this.param.Query_Panel.id);\n }\n if (!(((_this$param$ListPage$ = _this.param.ListPage.ListItem_UIDef) === null || _this$param$ListPage$ === void 0 ? void 0 : _this$param$ListPage$.ui_type) == \"HTML页面\")) {\n _context.next = 11;\n break;\n }\n _context.next = 9;\n return _this.Html_UIstyleGetInfo(_this.param.DataCls.id, _this.param.ListPage.ListItem_UIDef.id);\n case 9:\n _context.next = 13;\n break;\n case 11:\n _context.next = 13;\n return _this.Detail1_UIstyleGetInfo(_this.param.DataCls.id, _this.param.ListPage.ListItem_UIDef.id);\n case 13:\n _this.orderby = _this.param.Order ? _this.param.Order : 'T_CREATE Desc';\n if (!_this.param.Query_Event) {\n _context.next = 19;\n break;\n }\n _context.next = 17;\n return _this.onSearChange(_this.param.DataCls.id, _this.param.Query_Event.id);\n case 17:\n _context.next = 25;\n break;\n case 19:\n _this.wheres = _this.param.Condition;\n _this.pageindex = 1;\n _this.page_size = 3;\n _this.query_id = \"\";\n _context.next = 25;\n return _this.loadDataGetList();\n case 25:\n __f__(\"log\", _this.$data.param, \" at pages/modal/3200.vue:693\");\n //页面初始化获取焦点\n // this.focusMateria=true; \n case 26:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n methods: {\n //滚动到底部后懒加载数据\n scrolltolower: function scrolltolower(e) {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!_this2.isScroll) {\n _context2.next = 7;\n break;\n }\n if (!(_this2.page_count == _this2.pageindex)) {\n _context2.next = 3;\n break;\n }\n return _context2.abrupt(\"return\");\n case 3:\n _this2.pageindex += 1;\n if (_this2.where || _this2.page_count == 1) {\n _this2.query_id = \"\";\n _this2.detail1StyleDefList = [];\n }\n _context2.next = 7;\n return _this2.loadDataGetList();\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n scroll: function scroll(e) {\n // console.log(e.detail.scrollTop)\n this.old.scrollTop = e.detail.scrollTop;\n },\n Head_UIStyleGetInfo: function Head_UIStyleGetInfo(class_id, style_id) {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n //获取自定义表单样式\n $this = _this3;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n }; // console.log(dataInfo);\n _this3.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var styledef = \"\";\n if (ret.result.style_def) {\n //mobox2的style_def是json字符串\n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3的style_def是base64字符串\n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.$data.head_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n // this.form = this.head_styledef.form.model;\n // console.log($this.$data.head_styledef);\n $this.head_styledef.form.items.forEach( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(ele, index) {\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n __f__(\"log\", ele.useDict, \" at pages/modal/3200.vue:738\");\n if (!(ele.useDict == true)) {\n _context3.next = 4;\n break;\n }\n _context3.next = 4;\n return _this3.DictGetInfo(ele.bind.dict, index, 'mast');\n case 4:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n } else {\n uni.showModal({\n title: \"错误1\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误1.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 3:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n Detail1_UIstyleGetInfo: function Detail1_UIstyleGetInfo(class_id, style_id) {\n var _this4 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n //获取自定义表单样式\n $this = _this4;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n };\n _this4.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n __f__(\"log\", ret, \" at pages/modal/3200.vue:760\");\n if (ret.err_code == 0) {\n var styledef = \"\";\n if (ret.result.style_def) {\n //mobox2的style_def是json字符串\n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3的style_def是base64字符串\n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.$data.detail1_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n $this.$data.detail1_styledef.SelBut_Checked = false;\n // console.log($this.$data.detail1_styledef);\n // $this.$data.detail1StyleDefList.push($this.$data.detail1_styledef);\n // var aa = JSON.stringify(this.detail1_styledef);\n // $this.$data.detail1StyleDefList.push(JSON.parse(aa));\n // console.log($this.$data.detail1StyleDefList);\n } else {\n uni.showModal({\n title: \"错误2\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误2.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 3:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }))();\n },\n Html_UIstyleGetInfo: function Html_UIstyleGetInfo(class_id, style_id) {\n var _this5 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n //获取自定义表单样式\n $this = _this5;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n };\n _this5.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var styledef = \"\";\n if (ret.result.style_def) {\n //mobox2的style_def是json字符串\n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3的style_def是base64字符串\n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.ListPageHtml_Show = ret.result.style_def ? JSON.parse(styledef) : {};\n // console.log($this.ListPageHtml_Show);\n } else {\n uni.showModal({\n title: \"错误10\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误10.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 3:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n },\n DictGetInfo: function DictGetInfo(dict, index, type) {\n var _this6 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n //Mobox3得到得到字典信息字典项列表\n _this6.data = [];\n $this = _this6;\n dataInfo = {\n dict_id: dict.id,\n dict_name: dict.name\n }; // console.log(dataInfo);\n _this6.$store.dispatch('DictGetInfo', dataInfo).then( /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(success) {\n var list, itemName, attr, head_styledef;\n return _regenerator.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n __f__(\"log\", success, \" at pages/modal/3200.vue:833\");\n if (success.err_code == 0) {\n if (type == 'mast') {\n list = [];\n itemName = '';\n success.result.dict_item_list.forEach(function (item) {\n if (item.is_default == '1') itemName = item.name;\n list.push({\n text: item.value,\n value: item.name\n });\n });\n //有默认值,显示默认值\n if (itemName) {\n $this.head_styledef.form.items[index].value = itemName;\n attr = $this.head_styledef.form.items[index].fieldId;\n $this.head_styledef.form.model[attr] = itemName;\n }\n $this.head_styledef.form.items[index].dict = list;\n head_styledef = JSON.parse(JSON.stringify($this.head_styledef));\n $this.head_styledef = [];\n $this.head_styledef = head_styledef;\n } else {\n // $this.$data.subClassAttrList[index].attr_list[key].dictitem=success.result;\n // this.$store.commit(\"subClassAttrList\", $this.$data.subClassAttrList);\n }\n } else {\n uni.showModal({\n title: \"错误3.1\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 2:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }));\n return function (_x3) {\n return _ref2.apply(this, arguments);\n };\n }()).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误3\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 4:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8);\n }))();\n },\n // 执行查询事件\n onSearChange: function onSearChange(clsid, eventid) {\n var _this7 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {\n var $this, dataInfo, tip;\n return _regenerator.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n try {\n if (eventid) {\n $this = _this7;\n dataInfo = {\n ed_type: 0,\n start_transaction: true,\n class_id: clsid,\n event_id: eventid\n };\n _this7.$store.dispatch('runCustomEvent', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var result = ret.result;\n if (result.ret != 0) {\n var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n if (result.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + result.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n if (result.result_type == 0 && result.action) {\n result.action.forEach(function (item) {\n if (item.action_type == \"set_query_condition\") {\n var value = item.value;\n $this.wheres = value.condition;\n $this.orderby = value.order ? value.order : $this.orderby;\n $this.pageindex = 1;\n $this.query_id = \"\";\n $this.detail1StyleDefList = [];\n $this.loadDataGetList();\n }\n });\n } else {\n // this.detail2StyleDefList=[];\n if (result.info) {\n uni.showModal({\n title: \"提示\",\n content: result.info,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误4\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误4.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n }\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误4.2\",\n content: \"执行“查询事件”事件失败:\" + tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9);\n }))();\n },\n //查询数据类数据信息\n loadDataGetList: function loadDataGetList() {\n var _this8 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {\n var condition, $this, dataInfo, tip;\n return _regenerator.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n try {\n uni.showLoading({\n title: \"加载中...\",\n mask: true\n });\n //条件查询\n condition = _this8.wheres;\n if (_this8.where) {\n if (condition) condition += ' and ';\n condition += _this8.where;\n }\n // console.log(condition);\n // console.log(this.orderby);\n $this = _this8;\n dataInfo = {\n class_id: _this8.param.DataCls.id,\n attrs: [],\n condition: _this8.toWhereBase64String(\"\" + condition + \"\"),\n prj_rel_type: \"\",\n order_by: _this8.orderby,\n page_size: _this8.page_size,\n page: _this8.pageindex,\n query_id: _this8.query_id\n };\n _this8.$store.dispatch('dataObjQuery', dataInfo).then(function (ret) {\n __f__(\"log\", ret, \" at pages/modal/3200.vue:956\");\n uni.hideLoading();\n if (ret.err_code == 0) {\n // var list=[];\n $this.query_id = '';\n if (ret.result) {\n $this.page_count = ret.result.page_count;\n if (ret.result.page_count > 1) $this.query_id = ret.result.query_id;\n if ($this.ListPageHtml_Show.event.id) {\n ret.result.obj_list.forEach(function (obj) {\n var info = {\n id: obj.id\n };\n obj.attr_list.forEach(function (attr) {\n info[attr.name] = attr.value;\n });\n var detailStyle = {\n SelBut_Checked: false,\n form: {},\n info: info\n };\n detailStyle.form.htmlobjId = obj.id ? obj.id.replace(/-/g, '').replace('{', '').replace('}', '') : 'null';\n detailStyle.form.objId = obj.id;\n detailStyle.form.attrs = obj.attr_list;\n $this.detail1StyleDefList.push(detailStyle);\n $this.activelist.push({\n active: false\n });\n });\n // console.log(this.detail1StyleDefList);\n var jsonlist = [];\n $this.detail1StyleDefList.forEach(function (attr) {\n jsonlist.push({\n id: attr.info.id,\n attrs: Object.keys(attr.info).map(function (a) {\n return {\n attr: a,\n value: attr.info[a] || \"\"\n };\n })\n });\n });\n // console.log(jsonlist);\n var data_json = _base.default.encode(JSON.stringify(jsonlist));\n var eventid = $this.ListPageHtml_Show.event.id;\n if (!$this.ListPageHtml_Show.event.id.includes('{')) eventid = '{' + $this.ListPageHtml_Show.event.id + '}';\n //HTML页面事件\n $this.runCustomEvent({\n ed_type: 0,\n start_transaction: true,\n class_id: $this.param.DataCls.id,\n event_id: eventid,\n data_json: data_json\n });\n } else {\n // $this.detail1StyleDefList=[];\n ret.result.obj_list.forEach(function (obj) {\n var styleStr = JSON.stringify($this.detail1_styledef);\n var detailStyle = JSON.parse(styleStr);\n // var info ={\n // S_ID:obj.id,\n // };\n obj.attr_list.forEach(function (attr) {\n // info[attr.name]=attr.value;\n detailStyle.form.items.forEach(function (ele) {\n if (ele.name != 'Layout') {\n if (ele.fieldId == attr.name) ele.value = attr.value;\n } else if (ele.name == 'Layout') {\n ele.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == attr.name) col.value = attr.value;\n }\n });\n }\n });\n });\n detailStyle.form.htmlobjId = obj.id ? obj.id.replace(/-/g, '').replace('{', '').replace('}', '') : 'null';\n detailStyle.form.objId = obj.id;\n detailStyle.form.attrs = obj.attr_list;\n $this.detail1StyleDefList.push(detailStyle);\n $this.activelist.push({\n active: false\n });\n //list.push(info);\n });\n }\n\n // 解决view层不同步的问题\n // $this.scrollTop = $this.old.scrollTop;\n $this.isScroll = false;\n setTimeout(function () {\n $this.isScroll = true;\n }, 1000);\n // console.log($this.detail1StyleDefList);\n }\n } else {\n uni.showModal({\n title: \"错误5\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误5.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误5.2\",\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10);\n }))();\n },\n //刷新\n Refresh: function Refresh(value) {\n //刷新当前页面\n // location.reload();\n uni.redirectTo({\n url: '../modal/3200?param=' + JSON.stringify(this.$data.param) + \"&titlename=\" + this.$data.title\n });\n },\n //点击显示浏览对象显示页面\n onViewPageClick: function onViewPageClick(style) {\n var _this9 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {\n var $this;\n return _regenerator.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n if (_this9.param.ViewPage) {\n if (_this9.param.ViewPage.View_UIDef) {\n _this9.styledef = style;\n $this = _this9;\n uni.navigateTo({\n url: '../modal/3200_view?param=' + JSON.stringify(_this9.param) + \"&titlename=\" + _this9.title + \"&style=\" + JSON.stringify(style),\n events: {\n // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据\n ExitViewEvent: function ExitViewEvent(data) {\n var _$this$param$ViewPage;\n __f__(\"log\", data, \" at pages/modal/3200.vue:1082\");\n //退出页面后事件\n var eventid = (_$this$param$ViewPage = $this.param.ViewPage.Exit_View_Event) === null || _$this$param$ViewPage === void 0 ? void 0 : _$this$param$ViewPage.id;\n if (eventid) {\n try {\n var obj_attr = {\n 'S_ID': $this.styledef.form.objId\n };\n $this.styledef.form.attrs.forEach(function (attr) {\n obj_attr[attr.name] = attr.value;\n });\n // console.log(obj_attr);\n var input_param = _base.default.encode(JSON.stringify(obj_attr));\n $this.runCustomEvent({\n ed_type: 0,\n start_transaction: true,\n class_id: $this.param.DataCls.id,\n event_id: eventid,\n obj_attr: obj_attr,\n input_param: input_param\n });\n } catch (ex) {\n var tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误\",\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n }\n }\n });\n }\n }\n case 1:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11);\n }))();\n },\n //点击按钮\n onBtnClick: function onBtnClick(btn, style) {\n var that = this;\n if (btn.Prompt) {\n uni.showModal({\n title: '提示',\n content: btn.PromptContent || \"是否确定?\",\n success: function success(res) {\n if (res.confirm) {\n that.onButtonClicked(btn, style);\n // } else if (res.cancel) {\n // \tconsole.log('用户点击取消');\n }\n }\n });\n } else that.onButtonClicked(btn, style);\n },\n //点击按钮列表\n actionSheetTap: function actionSheetTap() {\n var that = this;\n var itemlist = [];\n this.param.ListPage.Page_Button.forEach(function (btn) {\n itemlist.push(btn.ShowName);\n });\n uni.showActionSheet({\n // title: '按钮列表',\n itemList: itemlist,\n success: function success(e) {\n __f__(\"log\", e.tapIndex, \" at pages/modal/3200.vue:1140\");\n var btn = that.param.ListPage.Page_Button[e.tapIndex];\n if (btn.Prompt) {\n uni.showModal({\n title: '提示',\n content: btn.PromptContent || \"是否确定?\",\n success: function success(res) {\n if (res.confirm) {\n that.onButtonClicked(btn);\n // } else if (res.cancel) {\n // \tconsole.log('用户点击取消');\n }\n }\n });\n } else that.onButtonClicked(btn);\n }\n });\n },\n //处理相关按钮\n onButtonClicked: function onButtonClicked(btn, style) {\n var _this10 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {\n var enviroment, tip;\n return _regenerator.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n style = style || '';\n try {\n enviroment = {\n button: \"top\",\n button_name: btn.ShowName,\n cls_id: btn.Cls_ID,\n function: \"3200\",\n master: {}\n };\n if (btn.FunCode == \"Add\" || btn.FunCode == \"Modify\") {\n if (btn.Edit_dlg.Model == \"small\") {\n _this10.showAddSmallDialog(btn, style, enviroment);\n }\n } else if (btn.FunCode == \"Delete\") {\n _this10.DeleteObj(btn, style, enviroment);\n // } else if (btn.FunCode == \"TriggerEvent\") {\n // this.triggerEvent(btn, style, enviroment);\n } else {\n uni.showModal({\n title: \"提示\",\n content: \"未实现\",\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误\",\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 2:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12);\n }))();\n },\n //新增修改小窗口数据\n showAddSmallDialog: function showAddSmallDialog(btn, style, enviroment) {\n var data = {\n Add_BtnName: btn.ShowName,\n EditDlgMode: btn.Edit_dlg.Model,\n clsid: this.param.DataCls.id,\n cls_name: this.param.DataCls.name,\n Edit_dlg: btn.Edit_dlg\n };\n var $this = this;\n uni.navigateTo({\n url: '../modal/3018?param=' + JSON.stringify(data) + \"&titlename=\" + btn.Edit_dlg.Name + \"&type=addDataObj\",\n events: {\n // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据\n addDataObj: function addDataObj(data) {\n __f__(\"log\", data, \" at pages/modal/3200.vue:1200\");\n $this.Refresh();\n }\n }\n });\n },\n //删除数据对象\n DeleteObj: function DeleteObj(btn, style, enviroment) {\n // console.log(style);\n var $this = this;\n uni.showModal({\n title: '提示',\n content: '确定删除该数据!',\n success: function success(res) {\n if (res.confirm) {\n var objID = style.form.objId;\n if (!style.form.objId.includes('{')) objID = '{' + style.form.objId + '}';\n var dataInfo = {\n class_id: btn.Cls_ID,\n class_name: '',\n obj_id: objID\n };\n // console.log(dataInfo);\n $this.$store.dispatch('dataObjDel', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n //执行后处理事件\n $this.AfterProcess_Event(btn.clsId, btm.AfterProcess_Event, enviroment);\n //清除当前列表数据\n $this.detail1StyleDefList.forEach(function (ele, index) {\n if (ele.form.objId == objID) {\n $this.detail1StyleDefList.splice(index, 1);\n }\n });\n uni.showModal({\n title: \"提示\",\n content: \"删除成功!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n } else {\n uni.showModal({\n title: \"错误6.1\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误6\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n } else if (res.cancel) {}\n }\n });\n },\n //执行后处理事件\n AfterProcess_Event: function AfterProcess_Event(clsId, afterProcess_Event, enviroment) {\n var _this11 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {\n var tip;\n return _regenerator.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n _context13.prev = 0;\n if (!afterProcess_Event.ID) {\n _context13.next = 4;\n break;\n }\n _context13.next = 4;\n return _this11.runCustomEvent({\n ed_type: 0,\n start_transaction: true,\n class_id: clsId,\n event_id: afterProcess_Event.ID\n });\n case 4:\n _context13.next = 10;\n break;\n case 6:\n _context13.prev = 6;\n _context13.t0 = _context13[\"catch\"](0);\n tip = typeof _context13.t0 == \"string\" ? _context13.t0 : _context13.t0.message;\n uni.showModal({\n title: \"错误7\",\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n case 10:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13, null, [[0, 6]]);\n }))();\n },\n ontap: function ontap(item) {\n var _this12 = this;\n //扫码功能\n // var $ele = e;\n //console.log(e.target)\n getApp().onScan(function (result) {\n __f__(\"log\", result.decodedata, \" at pages/modal/3200.vue:1273\");\n item.value = result.decodedata;\n uni.hideKeyboard();\n var $this = _this12;\n __f__(\"log\", item, \" at pages/modal/3200.vue:1278\");\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n var attr = item.fieldId;\n _this12.head_styledef.form.model[attr] = item.value;\n var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件\n var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //后图标点击事件\n var onSuffixClickEvent = item.bind.onSuffixClickEvent; //后图标点击回调\n var isflag = false;\n if (onChangeEvent.id) {\n //内容变化后事件\n $this.onChange(onChangeEvent);\n } else {\n $this.where = '';\n if (item.value) $this.where = item.fieldId + \" like '%\" + item.value + \"%'\";\n $this.query_id = '';\n $this.pageindex = 1;\n $this.detail1StyleDefList = [];\n $this.loadDataGetList();\n }\n if (item.value) {\n //第一个输入框不为空\n $this.focusMateria = true; //初始化,第二个输入框focus属性\n // setTimeout(function(){\n // \t$this.focusMateria=true; //第二个输入框获取焦点\n setTimeout(function () {\n uni.hideKeyboard();\n }, 100);\n // },500);\n }\n // if(onSuffixClickCallbackEvent.id){ //后图标点击事件\n // this.onSuffixClick(onSuffixClickCallbackEvent);\n // }\n // if(onSuffixClickEvent.id){ //后图标点击回调\n // this.onSuffixClickCallback(onSuffixClickEvent);\n // }\n }\n });\n },\n onEnterChange: function onEnterChange(item) {\n //回车,点击按钮,取消节点事件\n // console.log(item);\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n var attr = item.fieldId;\n this.head_styledef.form.model[attr] = item.value;\n var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件\n var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //后图标点击事件\n var onSuffixClickEvent = item.bind.onSuffixClickEvent; //后图标点击回调\n var isflag = false;\n if (onChangeEvent.id) {\n //内容变化后事件\n this.onChange(onChangeEvent);\n } else {\n this.where = '';\n if (item.value) this.where = item.fieldId + \" like '%\" + item.value + \"%'\";\n this.query_id = '';\n this.pageindex = 1;\n this.detail1StyleDefList = [];\n this.loadDataGetList();\n }\n // if(onSuffixClickCallbackEvent.id){ //后图标点击事件\n // this.onSuffixClick(onSuffixClickCallbackEvent);\n // }\n // if(onSuffixClickEvent.id){ //后图标点击回调\n // this.onSuffixClickCallback(onSuffixClickEvent);\n // }\n }\n },\n // 内容变化后事件\n onChange: function onChange(event) {\n var _this13 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {\n var obj_attr, input_param, $this, dataInfo, tip;\n return _regenerator.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n try {\n if (event.id) {\n obj_attr = _this13.head_styledef.form.model; // console.log(obj_attr);\n input_param = _base.default.encode(JSON.stringify(Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n })));\n $this = _this13;\n dataInfo = {\n ed_type: 0,\n start_transaction: true,\n class_id: _this13.$data.head_styledef.form.clsId,\n class_name: '',\n event_id: event.id,\n event_name: '',\n data_obj_id: '',\n obj_attr: obj_attr,\n prj_id: '',\n ref_cls_id: '',\n rel_obj_id: '',\n user_login: '',\n data_json: '',\n compose_info: '',\n ext_info: '',\n global_attr: '',\n input_param: input_param\n };\n _this13.$store.dispatch('runCustomEvent', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var result = ret.result;\n if (result.ret != 0) {\n var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n if (result.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + result.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n if (result.result_type == 0 && result.action) {\n result.action.forEach(function (item) {\n if (item.action_type == \"set_dlg_attr\") {\n // value = {\"attr\":\"xxx\", \"value\":\"xxx\"}\n var data = item.value;\n $this.$data.head_styledef.form.items.forEach( /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15(ele, index) {\n return _regenerator.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n data.forEach( /*#__PURE__*/function () {\n var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(ele2, index) {\n return _regenerator.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n if (ele.fieldId == ele2.attr) {\n ele.value = ele2.value;\n }\n case 1:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee14);\n }));\n return function (_x6, _x7) {\n return _ref4.apply(this, arguments);\n };\n }());\n case 1:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _callee15);\n }));\n return function (_x4, _x5) {\n return _ref3.apply(this, arguments);\n };\n }());\n }\n });\n } else {\n // this.detail2StyleDefList=[];\n if (result.info) {\n uni.showModal({\n title: \"提示\",\n content: result.info,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误8\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误8.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n }\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误8.2\",\n content: \"执行“内容变化后”事件失败:\" + tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _callee16);\n }))();\n },\n //点中表单\n onPanelClick: function onPanelClick(value) {\n //点击面板高亮显示\n // console.log(value);\n this.activelist.forEach(function (ele) {\n ele.active = false;\n });\n this.activelist[value].active = true;\n },\n //事件处理\n runCustomEvent: function runCustomEvent(dataInfo) {\n var _this14 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17() {\n var $this, tip;\n return _regenerator.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n try {\n $this = _this14;\n _this14.$store.dispatch('runCustomEvent', dataInfo).then(function (ret) {\n __f__(\"log\", ret, \" at pages/modal/3200.vue:1444\");\n if (ret.err_code == 0) {\n var result = ret.result;\n if (result.ret != 0) {\n var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n if (result.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + result.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n if (result.result_type == 0 && result.action) {\n result.action.forEach(function (item) {\n if (item.action_type == \"goback_to_pre_page\") {\n //返回上一页\n var value = item.value;\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\n } else if (item.action_type == \"hidden_button\") {\n //隐藏按钮\n var value = item.value;\n value.forEach(function (btn) {\n var index = $this.param.ListPage.Page_Button.findIndex(function (button) {\n return button.ShowName == btn;\n });\n if (index > -1) $this.param.ListPage.Page_Button.splice(index, 1);\n });\n // } else if(item.action_type == \"refresh_cur_row\"){ //\n // \tvar value = item.value;\n } else if (item.action_type == \"set_panel_html\") {\n //显示Html页面\n // var value = item.value;\n $this.ListHtml_Panel = item.value;\n // $this.detail1StyleDefList.forEach((ele,index)=>{\n // \tele.ListHtml_Panel = item.value[index];\n // });\n } else {\n uni.showModal({\n title: \"提示\",\n content: \"当前action_type:\" + item.action_type + \"未处理\",\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n });\n } else {\n // this.detail2StyleDefList=[];\n if (result.info) {\n uni.showModal({\n title: \"提示\",\n content: result.info,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误9\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误9.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误9.2\",\n content: \"执行事件失败:\" + tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context17.stop();\n }\n }\n }, _callee17);\n }))();\n },\n cancel: function cancel(e) {\n //取消\n var eventChannel = this.$scope.eventChannel;\n // const eventChannel = this.getOpenerEventChannel();\n eventChannel.emit('view_3201', \"\");\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\n },\n /**\r\n * 只支持[\"column1='A' or column2='B'\", \"column3='C' and column4='D'\", \"column5='E'\"]这种格式\r\n * {\r\n * \"model\": 0 / 1,\r\n * \"condition\":\r\n * [\r\n * [\r\n * { },\r\n * { },\r\n * { }\r\n * ],\r\n * [\r\n * { }\r\n * ],\r\n * [\r\n * { }\r\n * ]\r\n * ]\r\n * }\r\n */\n toWhereBase64String: function toWhereBase64String(list) {\n if (typeof list == 'string') list = [list];\n var sql = [];\n var seps = [' not in', ' in', '<>', '!=', '<=', '>=', '<', '=', '>', ' like'];\n list.forEach(function (ls) {\n var where = ls.trim().toLowerCase();\n if (where.startsWith('(') && where.endsWith(')')) where = where.replace(/^\\(/, '').replace(/\\)$/, '');\n if (where.includes(' and ')) {\n // 二级and放在第一级数组中\n where.split(' and ').forEach(function (li) {\n var l = li.trim();\n if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\\(/, '').replace(/\\)$/, '');\n var sep = '';\n for (var i = 0; i < seps.length; i++) {\n if (l.includes(seps[i])) {\n sep = seps[i];\n break;\n }\n }\n if (sep) {\n var _values$;\n var values = l.split(sep);\n var field = (_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.trim().replace(/^\\[/, '').replace(/\\]$/, '');\n var value = '';\n var op = sep.trim();\n if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) {\n value = l.replace(field, '').replace(/^\\s*(in|not in)\\s*/, '').trim();\n if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\\(/, '').replace(/\\)$/, '').trim();\n } else {\n var _values$2;\n value = (_values$2 = values[1]) === null || _values$2 === void 0 ? void 0 : _values$2.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n if (['in', 'not in'].includes(op)) {\n value = value.replace(/^\\(/, '').replace(/\\)$/, '');\n value = value.split(',').map(function (v) {\n return v.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n });\n }\n }\n sql.push([{\n field: field,\n value: value,\n op: op\n }]);\n }\n });\n } else if (where.includes(' or ')) {\n // 二级or放在第二级同一组数组中\n var s = [];\n where.split(' or ').forEach(function (li) {\n var l = li.trim();\n if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\\(/, '').replace(/\\)$/, '');\n var sep = '';\n for (var i = 0; i < seps.length; i++) {\n if (l.includes(seps[i])) {\n sep = seps[i];\n break;\n }\n }\n if (sep) {\n var _values$3;\n var values = l.split(sep);\n var field = (_values$3 = values[0]) === null || _values$3 === void 0 ? void 0 : _values$3.trim().replace(/^\\[/, '').replace(/\\]$/, '');\n var value = '';\n var op = sep.trim();\n if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) {\n value = l.replace(field, '').replace(/^\\s*(in|not in)\\s*/, '').trim();\n if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\\(/, '').replace(/\\)$/, '').trim();\n } else {\n var _values$4;\n value = (_values$4 = values[1]) === null || _values$4 === void 0 ? void 0 : _values$4.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n if (['in', 'not in'].includes(op)) {\n value = value.replace(/^\\(/, '').replace(/\\)$/, '');\n value = value.split(',').map(function (v) {\n return v.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n });\n }\n }\n sql.push([{\n field: field,\n value: value,\n op: op\n }]);\n }\n });\n sql.push(s);\n } else {\n var li = where;\n // 单一查询条件直接放在第一级数组中\n var l = li.trim();\n if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\\(/, '').replace(/\\)$/, '');\n var sep = '';\n for (var i = 0; i < seps.length; i++) {\n if (l.includes(seps[i])) {\n sep = seps[i];\n break;\n }\n }\n if (sep) {\n var _values$5;\n var values = l.split(sep);\n var field = (_values$5 = values[0]) === null || _values$5 === void 0 ? void 0 : _values$5.trim().replace(/^\\[/, '').replace(/\\]$/, '');\n var value = '';\n var op = sep.trim();\n if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) {\n value = l.replace(field, '').replace(/^\\s*(in|not in)\\s*/, '').trim();\n if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\\(/, '').replace(/\\)$/, '').trim();\n } else {\n var _values$6;\n value = (_values$6 = values[1]) === null || _values$6 === void 0 ? void 0 : _values$6.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n if (['in', 'not in'].includes(op)) {\n value = value.replace(/^\\(/, '').replace(/\\)$/, '');\n value = value.split(',').map(function (v) {\n return v.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n });\n }\n }\n sql.push([{\n field: field,\n value: value,\n op: op\n }]);\n }\n }\n });\n if (sql.length > 0) return _base.default.encode(JSON.stringify({\n model: 1,\n condition: sql\n }));else return '';\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvMzIwMC52dWUiXSwibmFtZXMiOlsibW9kdWxlcyIsIkJhc2U2NCIsIm9uTmF2aWdhdGlvbkJhckJ1dHRvblRhcCIsImUiLCJpc0ZpbHRlciIsIm9uQmFja1ByZXNzIiwiZXZlbnRDaGFubmVsIiwiJHNjb3BlIiwiZW1pdCIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwiZm9jdXNNYXRlcmlhIiwic3R5bGVkZWYiLCJoZWFkX3N0eWxlZGVmIiwiZm9ybSIsIml0ZW1zIiwiZGV0YWlsMV9zdHlsZWRlZiIsImRldGFpbDFTdHlsZURlZkxpc3QiLCJkZXRhaWwyX3N0eWxlZGVmIiwiZGV0YWlsMlN0eWxlRGVmTGlzdCIsImFjdGl2ZV9pZCIsImFjdGl2ZWxpc3QiLCJ3aGVyZSIsIndoZXJlcyIsIm9yZGVyYnkiLCJxdWVyeV9pZCIsInBhZ2VpbmRleCIsInBhZ2Vfc2l6ZSIsInBhZ2VfY291bnQiLCJzY3JvbGxUb3AiLCJvbGQiLCJpc1Njcm9sbCIsIkxpc3RIdG1sX1BhbmVsIiwiTGlzdFBhZ2VIdG1sX1Nob3ciLCJuYW1lIiwiZXZlbnQiLCJpZCIsIm9uTG9hZCIsIm9wdGlvbnMiLCJ1bmkiLCJzZXROYXZpZ2F0aW9uQmFyVGl0bGUiLCJ0aXRsZW5hbWUiLCIkZGF0YSIsIkpTT04iLCJwYXJzZSIsIlNob3dGaWx0ZXIiLCJRdWVyeV9QYW5lbCIsIkhlYWRfVUlTdHlsZUdldEluZm8iLCJEYXRhQ2xzIiwiTGlzdFBhZ2UiLCJMaXN0SXRlbV9VSURlZiIsInVpX3R5cGUiLCJIdG1sX1VJc3R5bGVHZXRJbmZvIiwiRGV0YWlsMV9VSXN0eWxlR2V0SW5mbyIsIk9yZGVyIiwiUXVlcnlfRXZlbnQiLCJvblNlYXJDaGFuZ2UiLCJDb25kaXRpb24iLCJsb2FkRGF0YUdldExpc3QiLCJtZXRob2RzIiwic2Nyb2xsdG9sb3dlciIsInNjcm9sbCIsImRldGFpbCIsImNsYXNzX2lkIiwic3R5bGVfaWQiLCIkdGhpcyIsImRhdGFJbmZvIiwidWlfc3R5bGVfaWQiLCIkc3RvcmUiLCJkaXNwYXRjaCIsInRoZW4iLCJyZXQiLCJlcnJfY29kZSIsInJlc3VsdCIsInN0eWxlX2RlZiIsInJlcGxhY2UiLCJpbmNsdWRlcyIsImRlY29kZSIsImZvckVhY2giLCJlbGUiLCJpbmRleCIsInVzZURpY3QiLCJEaWN0R2V0SW5mbyIsImJpbmQiLCJkaWN0Iiwic2hvd01vZGFsIiwiY29udGVudCIsImVycl9tc2ciLCJzaG93Q2FuY2VsIiwiY29uZmlybVRleHQiLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwiU2VsQnV0X0NoZWNrZWQiLCJ0eXBlIiwiZGljdF9pZCIsImRpY3RfbmFtZSIsInN1Y2Nlc3MiLCJsaXN0IiwiaXRlbU5hbWUiLCJkaWN0X2l0ZW1fbGlzdCIsIml0ZW0iLCJpc19kZWZhdWx0IiwicHVzaCIsInRleHQiLCJ2YWx1ZSIsImF0dHIiLCJmaWVsZElkIiwibW9kZWwiLCJzdHJpbmdpZnkiLCJjbHNpZCIsImV2ZW50aWQiLCJlZF90eXBlIiwic3RhcnRfdHJhbnNhY3Rpb24iLCJldmVudF9pZCIsInRpcCIsImVycl9pbmZvIiwiam9pbiIsImluZm8iLCJyZXN1bHRfdHlwZSIsImFjdGlvbiIsImFjdGlvbl90eXBlIiwiY29uZGl0aW9uIiwib3JkZXIiLCJtZXNzYWdlIiwic2hvd0xvYWRpbmciLCJtYXNrIiwiYXR0cnMiLCJ0b1doZXJlQmFzZTY0U3RyaW5nIiwicHJqX3JlbF90eXBlIiwib3JkZXJfYnkiLCJwYWdlIiwiaGlkZUxvYWRpbmciLCJvYmpfbGlzdCIsIm9iaiIsImF0dHJfbGlzdCIsImRldGFpbFN0eWxlIiwiaHRtbG9iaklkIiwib2JqSWQiLCJhY3RpdmUiLCJqc29ubGlzdCIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJhIiwiZGF0YV9qc29uIiwiZW5jb2RlIiwicnVuQ3VzdG9tRXZlbnQiLCJzdHlsZVN0ciIsInNldHRpbmciLCJjb2xMaXN0IiwiY29sIiwic2V0VGltZW91dCIsIlJlZnJlc2giLCJyZWRpcmVjdFRvIiwidXJsIiwib25WaWV3UGFnZUNsaWNrIiwic3R5bGUiLCJWaWV3UGFnZSIsIlZpZXdfVUlEZWYiLCJuYXZpZ2F0ZVRvIiwiZXZlbnRzIiwiRXhpdFZpZXdFdmVudCIsIkV4aXRfVmlld19FdmVudCIsIm9ial9hdHRyIiwiaW5wdXRfcGFyYW0iLCJvbkJ0bkNsaWNrIiwiYnRuIiwidGhhdCIsIlByb21wdCIsIlByb21wdENvbnRlbnQiLCJyZXMiLCJjb25maXJtIiwib25CdXR0b25DbGlja2VkIiwiYWN0aW9uU2hlZXRUYXAiLCJpdGVtbGlzdCIsIlBhZ2VfQnV0dG9uIiwiU2hvd05hbWUiLCJzaG93QWN0aW9uU2hlZXQiLCJpdGVtTGlzdCIsInRhcEluZGV4IiwiZW52aXJvbWVudCIsImJ1dHRvbiIsImJ1dHRvbl9uYW1lIiwiY2xzX2lkIiwiQ2xzX0lEIiwiZnVuY3Rpb24iLCJtYXN0ZXIiLCJGdW5Db2RlIiwiRWRpdF9kbGciLCJNb2RlbCIsInNob3dBZGRTbWFsbERpYWxvZyIsIkRlbGV0ZU9iaiIsIkFkZF9CdG5OYW1lIiwiRWRpdERsZ01vZGUiLCJjbHNfbmFtZSIsIk5hbWUiLCJhZGREYXRhT2JqIiwib2JqSUQiLCJjbGFzc19uYW1lIiwib2JqX2lkIiwiQWZ0ZXJQcm9jZXNzX0V2ZW50IiwiY2xzSWQiLCJidG0iLCJzcGxpY2UiLCJjYW5jZWwiLCJhZnRlclByb2Nlc3NfRXZlbnQiLCJJRCIsIm9udGFwIiwiZ2V0QXBwIiwib25TY2FuIiwiZGVjb2RlZGF0YSIsImhpZGVLZXlib2FyZCIsIm9sZHZhbHVlIiwib25DaGFuZ2VFdmVudCIsIm9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50Iiwib25TdWZmaXhDbGlja0V2ZW50IiwiaXNmbGFnIiwib25DaGFuZ2UiLCJvbkVudGVyQ2hhbmdlIiwiZXZlbnRfbmFtZSIsImRhdGFfb2JqX2lkIiwicHJqX2lkIiwicmVmX2Nsc19pZCIsInJlbF9vYmpfaWQiLCJ1c2VyX2xvZ2luIiwiY29tcG9zZV9pbmZvIiwiZXh0X2luZm8iLCJnbG9iYWxfYXR0ciIsImVsZTIiLCJvblBhbmVsQ2xpY2siLCJuYXZpZ2F0ZUJhY2siLCJkZWx0YSIsImZpbmRJbmRleCIsInNxbCIsInNlcHMiLCJscyIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsInNwbGl0IiwibGkiLCJsIiwic2VwIiwiaSIsImxlbmd0aCIsInZhbHVlcyIsImZpZWxkIiwib3AiLCJ2IiwicyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBcWxCQTtBQXJsQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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RyxDQUFDLENBQUNsRyxHQUFHLENBQUMsVUFBQTJHLENBQUM7a0JBQUEsT0FBSUEsQ0FBQyxDQUFDYixJQUFJLEVBQUUsQ0FBQ2xLLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUNBLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUFBLEVBQUM7Y0FDckY7WUFDSjtZQUNBK0osR0FBRyxDQUFDbkksSUFBSSxDQUFDLENBQUM7Y0FBRWlKLEtBQUssRUFBTEEsS0FBSztjQUFFL0ksS0FBSyxFQUFMQSxLQUFLO2NBQUVnSixFQUFFLEVBQUZBO1lBQUcsQ0FBQyxDQUFDLENBQUM7VUFDcEM7UUFDSjtNQUNKLENBQUMsQ0FBQztNQUVGLElBQUlmLEdBQUcsQ0FBQ1ksTUFBTSxHQUFHLENBQUMsRUFDZCxPQUFPdFAsYUFBTSxDQUFDa0osTUFBTSxDQUFDdkcsSUFBSSxDQUFDa0UsU0FBUyxDQUFDO1FBQ2hDRCxLQUFLLEVBQUUsQ0FBQztRQUNSYyxTQUFTLEVBQUVnSDtNQUNmLENBQUMsQ0FBQyxDQUFDLE1BRUgsT0FBTyxFQUFFO0lBQ2pCO0VBRUM7QUFDRixDQUFDO0FBQUEsMkIiLCJmaWxlIjoiMTY1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuLy9cclxuXHJcbmltcG9ydCBCYXNlNjQgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9qcy1iYXNlNjQvYmFzZTY0LmpzJ1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgbW9kdWxlczp7XHJcblx0QmFzZTY0LFxyXG4gIH0sXHJcbiAgb25OYXZpZ2F0aW9uQmFyQnV0dG9uVGFwKGUpIHtcclxuIC8vICBcdGNvbnNvbGUubG9nKGUpO1xyXG5cdC8vIGUudGV4dD1cIlxcdWU5MjRcIjtcclxuICBcdC8vIGNvbnNvbGUubG9nKGUuZm9udFNpemUpO1xyXG5cdGlmKHRoaXMuaXNGaWx0ZXIpXHJcblx0ICAgIHRoaXMuaXNGaWx0ZXI9ZmFsc2U7XHJcblx0ZWxzZVxyXG5cdCAgICB0aGlzLmlzRmlsdGVyPXRydWU7XHJcbiAgfSxcclxuICBvbkJhY2tQcmVzcyhlKXtcclxuXHQvLyBjb25zb2xlLmxvZyhcIuebkeWQrOi/lOWbnuaMiemSruS6i+S7tlwiLGUpO1xyXG5cdHZhciBldmVudENoYW5uZWwgPSB0aGlzLiRzY29wZS5ldmVudENoYW5uZWw7XHJcblx0Ly8gY29uc3QgZXZlbnRDaGFubmVsID0gdGhpcy5nZXRPcGVuZXJFdmVudENoYW5uZWwoKTtcclxuXHRldmVudENoYW5uZWwuZW1pdCgndmlld18zMjAxJyxcIlwiKTtcclxuXHQvLyB1bmkubmF2aWdhdGVCYWNrKHtcclxuXHQvLyBcdGRlbHRhOjEgLC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxyXG5cdC8vIH0pO1xyXG5cdC8vIHJldHVybiB0cnVlO1xyXG4gIH0sXHRcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuXHQgIHRpdGxlOifmlrDlop4nLFxyXG4gICAgICBpc0ZpbHRlcjp0cnVlLFxyXG4gICAgICBwYXJhbToge30sXHJcblx0ICBmb2N1c01hdGVyaWE6ZmFsc2UsXHJcblx0ICBzdHlsZWRlZjp7fSxcclxuXHQgIGhlYWRfc3R5bGVkZWY6e1xyXG5cdFx0Zm9ybTp7XHJcblx0XHRcdGl0ZW1zOltdXHJcblx0XHR9XHJcblx0ICB9LFxyXG4gICAgICBkZXRhaWwxX3N0eWxlZGVmOnt9LFxyXG4gICAgICBkZXRhaWwxU3R5bGVEZWZMaXN0OltdLFxyXG4gICAgICBkZXRhaWwyX3N0eWxlZGVmOnt9LFxyXG4gICAgICBkZXRhaWwyU3R5bGVEZWZMaXN0OltdLFxyXG5cdCAgaXRlbXM6IFtdLFxyXG4gICAgICBhY3RpdmVfaWQ6JycsXHJcblx0ICBhY3RpdmVsaXN0OltdLFxyXG4gICAgICB3aGVyZTonJyxcclxuICAgICAgd2hlcmVzOicnLFxyXG4gICAgICBvcmRlcmJ5OicnLFxyXG4gICAgICBxdWVyeV9pZDonJyxcclxuICAgICAgcGFnZWluZGV4OjEsXHJcbiAgICAgIHBhZ2Vfc2l6ZToxMCxcclxuICAgICAgcGFnZV9jb3VudDowLFxyXG5cdCAgc2Nyb2xsVG9wOiAwLFxyXG5cdCAgb2xkOiB7XHJcblx0ICBcdHNjcm9sbFRvcDogMFxyXG5cdCAgfSxcclxuXHQgIGlzU2Nyb2xsOnRydWUsXHJcblx0ICAvL+iOt+WPluaVsOaNruexu+eahEhUTUzpobXpnaJcclxuXHQgIExpc3RIdG1sX1BhbmVsOlwiXCIsXHJcblx0ICBMaXN0UGFnZUh0bWxfU2hvdzoge1xyXG5cdCAgXHRuYW1lOiBcIlwiLFxyXG5cdCAgXHRldmVudDoge1xyXG5cdCAgXHRcdGlkOiBcIlwiLFxyXG5cdCAgXHRcdG5hbWU6IFwiXCJcclxuXHQgIFx0fVxyXG5cdCAgfSxcclxuICAgIH07XHJcbiAgfSxcclxuICBhc3luYyBvbkxvYWQob3B0aW9ucykge1xyXG5cdC8vIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG5cdHVuaS5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoeyB0aXRsZTogb3B0aW9ucy50aXRsZW5hbWV9KTsgLy/orr7nva7pobbpg6jmoIfpopggXHJcblx0dGhpcy4kZGF0YS50aXRsZSA9IG9wdGlvbnMudGl0bGVuYW1lO1xyXG5cdHRoaXMuJGRhdGEucGFyYW0gPSBKU09OLnBhcnNlKG9wdGlvbnMucGFyYW0pO1xyXG5cdHRoaXMuaXNGaWx0ZXI9dHJ1ZTtcclxuXHRpZih0aGlzLnBhcmFtLlNob3dGaWx0ZXIpXHJcblx0ICB0aGlzLmlzRmlsdGVyPWZhbHNlO1xyXG5cdC8v6I635Y+W5pWw5o2u57G755qE6Ieq5a6a5LmJ6KGo5Y2V5Y+C5pWwXHJcblx0aWYodGhpcy5wYXJhbS5RdWVyeV9QYW5lbCl7XHJcblx0XHR0aGlzLkhlYWRfVUlTdHlsZUdldEluZm8odGhpcy5wYXJhbS5EYXRhQ2xzLmlkLHRoaXMucGFyYW0uUXVlcnlfUGFuZWwuaWQpO1xyXG5cdH1cclxuXHRpZih0aGlzLnBhcmFtLkxpc3RQYWdlLkxpc3RJdGVtX1VJRGVmPy51aV90eXBlPT1cIkhUTUzpobXpnaJcIil7XHJcblx0XHQvLyBIVE1M6aG16Z2iXHJcblx0XHQvL+iOt+WPluaVsOaNruexu+eahEhUTUzpobXpnaJcclxuXHRcdGF3YWl0IHRoaXMuSHRtbF9VSXN0eWxlR2V0SW5mbyh0aGlzLnBhcmFtLkRhdGFDbHMuaWQsdGhpcy5wYXJhbS5MaXN0UGFnZS5MaXN0SXRlbV9VSURlZi5pZCk7XHJcblx0fWVsc2V7XHJcblx0XHRhd2FpdCB0aGlzLkRldGFpbDFfVUlzdHlsZUdldEluZm8odGhpcy5wYXJhbS5EYXRhQ2xzLmlkLHRoaXMucGFyYW0uTGlzdFBhZ2UuTGlzdEl0ZW1fVUlEZWYuaWQpO1xyXG5cdH1cclxuXHR0aGlzLm9yZGVyYnkgPSB0aGlzLnBhcmFtLk9yZGVyP3RoaXMucGFyYW0uT3JkZXI6J1RfQ1JFQVRFIERlc2MnO1xyXG5cdGlmKHRoaXMucGFyYW0uUXVlcnlfRXZlbnQpe1xyXG5cdCAgICBhd2FpdCB0aGlzLm9uU2VhckNoYW5nZSh0aGlzLnBhcmFtLkRhdGFDbHMuaWQsdGhpcy5wYXJhbS5RdWVyeV9FdmVudC5pZCk7XHJcblx0fSBlbHNle1xyXG5cdCAgdGhpcy53aGVyZXMgPSB0aGlzLnBhcmFtLkNvbmRpdGlvbjtcclxuXHQgIHRoaXMucGFnZWluZGV4ID0gMTtcclxuXHQgIHRoaXMucGFnZV9zaXplID0gMztcclxuXHQgIHRoaXMucXVlcnlfaWQgPSBcIlwiO1xyXG5cdCAgYXdhaXQgdGhpcy5sb2FkRGF0YUdldExpc3QoKTtcclxuXHR9XHJcblx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5wYXJhbSk7XHJcblx0Ly/pobXpnaLliJ3lp4vljJbojrflj5bnhKbngrlcclxuXHQvLyB0aGlzLmZvY3VzTWF0ZXJpYT10cnVlOyBcclxuICB9LFx0XHJcbiAgbWV0aG9kczoge1xyXG5cdC8v5rua5Yqo5Yiw5bqV6YOo5ZCO5oeS5Yqg6L295pWw5o2uXHJcblx0YXN5bmMgc2Nyb2xsdG9sb3dlcihlKSB7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhlKVxyXG5cdFx0aWYodGhpcy5pc1Njcm9sbCl7IC8v5Yik5pat5Yi35paw5LiA5qyh5ZCO5LiN5Lya5oyB57ut5Yi35pawXHJcblx0XHRcdGlmKHRoaXMucGFnZV9jb3VudD09dGhpcy5wYWdlaW5kZXgpe1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLnBhZ2VpbmRleCArPSAxO1xyXG5cdFx0XHRpZih0aGlzLndoZXJlIHx8IHRoaXMucGFnZV9jb3VudD09MSkge1xyXG5cdFx0XHQgIHRoaXMucXVlcnlfaWQgPSBcIlwiO1xyXG5cdFx0XHQgIHRoaXMuZGV0YWlsMVN0eWxlRGVmTGlzdD1bXTtcclxuXHRcdFx0fVxyXG5cdFx0XHRhd2FpdCB0aGlzLmxvYWREYXRhR2V0TGlzdCgpO1xyXG5cdFx0fVxyXG5cdH0sXHJcblx0c2Nyb2xsOiBmdW5jdGlvbihlKSB7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhlLmRldGFpbC5zY3JvbGxUb3ApXHJcblx0XHR0aGlzLm9sZC5zY3JvbGxUb3AgPSBlLmRldGFpbC5zY3JvbGxUb3BcclxuXHR9LFxyXG5cdGFzeW5jIEhlYWRfVUlTdHlsZUdldEluZm8oY2xhc3NfaWQsc3R5bGVfaWQpeyAgIC8v6I635Y+W6Ieq5a6a5LmJ6KGo5Y2V5qC35byPXHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdFx0Y2xhc3NfaWQ6Y2xhc3NfaWQsXHJcblx0XHRcdHVpX3N0eWxlX2lkOnN0eWxlX2lkLFxyXG5cdFx0fTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdVSVN0eWxlR2V0SW5mbycsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHJldCk7XHJcblx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBzdHlsZWRlZj1cIlwiO1xyXG5cdFx0XHRcdGlmKHJldC5yZXN1bHQuc3R5bGVfZGVmKXtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gy55qEc3R5bGVfZGVm5pivanNvbuWtl+espuS4slxyXG5cdFx0XHRcdCAgICAgc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZi5yZXBsYWNlKC9cXFxcL2csXCJcIik7XHJcblx0XHRcdFx0ICAgICAvL21vYm94M+eahHN0eWxlX2RlZuaYr2Jhc2U2NOWtl+espuS4slxyXG5cdFx0XHRcdCAgICAgaWYoIXJldC5yZXN1bHQuc3R5bGVfZGVmLmluY2x1ZGVzKCdcIicpKSBzdHlsZWRlZiA9IEJhc2U2NC5kZWNvZGUocmV0LnJlc3VsdC5zdHlsZV9kZWYpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWY/IEpTT04ucGFyc2Uoc3R5bGVkZWYpOiB7fTtcclxuXHRcdFx0XHQvLyB0aGlzLmZvcm0gPSB0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbDtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmKTtcclxuXHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXMuZm9yRWFjaChhc3luYyAoZWxlLGluZGV4KSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhlbGUudXNlRGljdCk7XHJcblx0XHRcdFx0ICAgIGlmKGVsZS51c2VEaWN0PT10cnVlKXsgLy/liKTmlq11c2VEaWN05piv5ZCm5L2/55So5a2X5YW4XHJcblx0XHRcdFx0ICAgICAgICBhd2FpdCB0aGlzLkRpY3RHZXRJbmZvKGVsZS5iaW5kLmRpY3QsaW5kZXgsJ21hc3QnKTtcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzFcIixjb250ZW50OnJldC5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHR9KTtcclxuXHQgICAgXHJcblx0fSxcclxuXHRhc3luYyBEZXRhaWwxX1VJc3R5bGVHZXRJbmZvKGNsYXNzX2lkLHN0eWxlX2lkKXsgICAvL+iOt+WPluiHquWumuS5ieihqOWNleagt+W8j1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdGNsYXNzX2lkOmNsYXNzX2lkLFxyXG5cdFx0XHR1aV9zdHlsZV9pZDpzdHlsZV9pZCxcclxuXHRcdH07XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnVUlTdHlsZUdldEluZm8nLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdFx0XHRjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgc3R5bGVkZWY9XCJcIjtcclxuXHRcdFx0XHRpZihyZXQucmVzdWx0LnN0eWxlX2RlZil7XHJcblx0XHRcdFx0ICAgICAvL21vYm94MueahHN0eWxlX2RlZuaYr2pzb27lrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIHN0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWYucmVwbGFjZSgvXFxcXC9nLFwiXCIpO1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDPnmoRzdHlsZV9kZWbmmK9iYXNlNjTlrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIGlmKCFyZXQucmVzdWx0LnN0eWxlX2RlZi5pbmNsdWRlcygnXCInKSkgc3R5bGVkZWYgPSBCYXNlNjQuZGVjb2RlKHJldC5yZXN1bHQuc3R5bGVfZGVmKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0JHRoaXMuJGRhdGEuZGV0YWlsMV9zdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmPyBKU09OLnBhcnNlKHN0eWxlZGVmKToge307XHJcblx0XHRcdFx0JHRoaXMuJGRhdGEuZGV0YWlsMV9zdHlsZWRlZi5TZWxCdXRfQ2hlY2tlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLmRldGFpbDFfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdC8vICR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaCgkdGhpcy4kZGF0YS5kZXRhaWwxX3N0eWxlZGVmKTtcclxuXHRcdFx0XHQvLyB2YXIgYWEgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmRldGFpbDFfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdC8vICR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaChKU09OLnBhcnNlKGFhKSk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdCk7XHJcblx0XHRcdFx0XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMlwiLGNvbnRlbnQ6cmV0LmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG5cdCAgICBcclxuXHR9LFxyXG5cdGFzeW5jIEh0bWxfVUlzdHlsZUdldEluZm8oY2xhc3NfaWQsIHN0eWxlX2lkKSB7IC8v6I635Y+W6Ieq5a6a5LmJ6KGo5Y2V5qC35byPXHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvID0ge1xyXG5cdFx0XHRjbGFzc19pZDogY2xhc3NfaWQsXHJcblx0XHRcdHVpX3N0eWxlX2lkOiBzdHlsZV9pZCxcclxuXHRcdH07XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnVUlTdHlsZUdldEluZm8nLCBkYXRhSW5mbykudGhlbihyZXQgPT4ge1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgc3R5bGVkZWYgPSBcIlwiO1xyXG5cdFx0XHRcdGlmIChyZXQucmVzdWx0LnN0eWxlX2RlZikge1xyXG5cdFx0XHRcdFx0Ly9tb2JveDLnmoRzdHlsZV9kZWbmmK9qc29u5a2X56ym5LiyXHJcblx0XHRcdFx0XHRzdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmLnJlcGxhY2UoL1xcXFwvZywgXCJcIik7XHJcblx0XHRcdFx0XHQvL21vYm94M+eahHN0eWxlX2RlZuaYr2Jhc2U2NOWtl+espuS4slxyXG5cdFx0XHRcdFx0aWYgKCFyZXQucmVzdWx0LnN0eWxlX2RlZi5pbmNsdWRlcygnXCInKSkgc3R5bGVkZWYgPSBCYXNlNjQuZGVjb2RlKHJldC5yZXN1bHRcclxuXHRcdFx0XHRcdFx0LnN0eWxlX2RlZik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdCR0aGlzLkxpc3RQYWdlSHRtbF9TaG93ID0gcmV0LnJlc3VsdC5zdHlsZV9kZWYgPyBKU09OLnBhcnNlKHN0eWxlZGVmKSA6IHt9O1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLkxpc3RQYWdlSHRtbF9TaG93KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzEwXCIsXHJcblx0XHRcdFx0XHRjb250ZW50OiByZXQuZXJyX21zZyxcclxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxyXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXggPT4ge1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdHRpdGxlOiBcIumUmeivrzEwLjFcIixcclxuXHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXHJcblx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXHJcblx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHRcclxuXHR9LFxyXG5cdGFzeW5jIERpY3RHZXRJbmZvKGRpY3QsaW5kZXgsdHlwZSl7IC8vTW9ib3gz5b6X5Yiw5b6X5Yiw5a2X5YW45L+h5oGv5a2X5YW46aG55YiX6KGoXHJcblx0XHR0aGlzLmRhdGE9W107XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvID17XHJcblx0XHRcdGRpY3RfaWQ6IGRpY3QuaWQsXHJcblx0XHRcdGRpY3RfbmFtZTogZGljdC5uYW1lXHJcblx0XHR9O1xyXG5cdFx0Ly8gY29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RpY3RHZXRJbmZvJyxkYXRhSW5mbykudGhlbihhc3luYyAoc3VjY2Vzcyk9PntcclxuXHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdGlmIChzdWNjZXNzLmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRpZih0eXBlPT0nbWFzdCcpe1xyXG5cdFx0XHRcdFx0dmFyIGxpc3Q9W107XHJcblx0XHRcdFx0XHR2YXIgaXRlbU5hbWU9Jyc7XHJcblx0XHRcdFx0XHRzdWNjZXNzLnJlc3VsdC5kaWN0X2l0ZW1fbGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcblx0XHRcdFx0XHQgICAgaWYoaXRlbS5pc19kZWZhdWx0PT0nMScpXHJcblx0XHRcdFx0XHQgICAgICAgIGl0ZW1OYW1lID0gaXRlbS5uYW1lO1xyXG5cdFx0XHRcdFx0ICAgIGxpc3QucHVzaCh7XHJcblx0XHRcdFx0XHQgICAgICAgIHRleHQ6aXRlbS52YWx1ZSxcclxuXHRcdFx0XHRcdCAgICAgICAgdmFsdWU6aXRlbS5uYW1lLFxyXG5cdFx0XHRcdFx0ICAgIH0pO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHQvL+aciem7mOiupOWAvO+8jOaYvuekuum7mOiupOWAvFxyXG5cdFx0XHRcdFx0aWYoaXRlbU5hbWUpe1xyXG5cdFx0XHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXNbaW5kZXhdLnZhbHVlPWl0ZW1OYW1lO1xyXG5cdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tpbmRleF0uZmllbGRJZDtcclxuXHRcdFx0XHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gaXRlbU5hbWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXNbaW5kZXhdLmRpY3Q9bGlzdDtcclxuXHRcdFx0XHRcdHZhciBoZWFkX3N0eWxlZGVmID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSgkdGhpcy5oZWFkX3N0eWxlZGVmKSk7XHJcblx0XHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmPVtdO1xyXG5cdFx0XHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZiA9IGhlYWRfc3R5bGVkZWY7XHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHQvLyAkdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W2luZGV4XS5hdHRyX2xpc3Rba2V5XS5kaWN0aXRlbT1zdWNjZXNzLnJlc3VsdDtcclxuXHRcdFx0XHRcdC8vIHRoaXMuJHN0b3JlLmNvbW1pdChcInN1YkNsYXNzQXR0ckxpc3RcIiwgJHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzMuMVwiLGNvbnRlbnQ6c3VjY2Vzcy5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vM1wiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0fSxcclxuXHRcclxuXHQvLyDmiafooYzmn6Xor6Lkuovku7ZcclxuXHRhc3luYyBvblNlYXJDaGFuZ2UoY2xzaWQsZXZlbnRpZCkge1xyXG5cdCB0cnkge1xyXG5cdCAgICBpZiAoZXZlbnRpZCkge1xyXG5cdCBcdCAgdmFyICR0aGlzID0gdGhpcztcclxuXHQgXHQgIHZhciBkYXRhSW5mbz17XHJcblx0ICAgICAgICBlZF90eXBlOiAwLFxyXG4gICAgICAgICAgICBzdGFydF90cmFuc2FjdGlvbjogdHJ1ZSxcclxuXHRcdCAgICBjbGFzc19pZDogY2xzaWQsXHJcblx0XHRcdGV2ZW50X2lkOiBldmVudGlkLFxyXG5cdCAgICAgIH07XHJcblx0IFx0ICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncnVuQ3VzdG9tRXZlbnQnLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdCBcdCAgXHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdCBcdCAgXHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHQgXHRcdFx0dmFyIHJlc3VsdCA9IHJldC5yZXN1bHQ7IFxyXG5cdCBcdFx0XHRpZiAocmVzdWx0LnJldCAhPSAwKSB7XHJcblx0IFx0XHRcdCAgICB2YXIgdGlwID0gcmVzdWx0LmVycl9pbmZvID8gdHlwZW9mIHJlc3VsdC5lcnJfaW5mbyA9PSAnc3RyaW5nJyA/IHJlc3VsdC5lcnJfaW5mbyA6IHJlc3VsdC5lcnJfaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0IFx0XHRcdCAgICBpZiAocmVzdWx0LnJldCA9PSA4MDEpIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCBcdFx0XHQgICAgZWxzZSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCsnLOaPkOekujonK3Jlc3VsdC5yZXQsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0IFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdCBcdFx0XHR9ZWxzZXtcclxuXHQgXHRcdFx0XHR2YXIgdGlwID0gcmVzdWx0LmluZm8gPyB0eXBlb2YgcmVzdWx0LmluZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuaW5mbyA6IHJlc3VsdC5pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHQgXHRcdFx0XHRpZiAodGlwKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgXHRcdFx0XHJcblx0IFx0XHRcdFx0aWYocmVzdWx0LnJlc3VsdF90eXBlID09IDAgJiYgcmVzdWx0LmFjdGlvbil7XHJcblx0IFx0XHRcdFx0XHRyZXN1bHQuYWN0aW9uLmZvckVhY2goaXRlbT0+e1xyXG5cdCBcdFx0XHRcdFx0XHRpZihpdGVtLmFjdGlvbl90eXBlID09IFwic2V0X3F1ZXJ5X2NvbmRpdGlvblwiKXsgXHJcblx0IFx0XHRcdFx0XHRcdCAgICB2YXIgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdCBcdFx0XHRcdFx0XHQgICAgJHRoaXMud2hlcmVzID0gdmFsdWUuY29uZGl0aW9uO1xyXG5cdCBcdFx0XHRcdFx0XHQgICAgJHRoaXMub3JkZXJieSA9IHZhbHVlLm9yZGVyP3ZhbHVlLm9yZGVyOiR0aGlzLm9yZGVyYnk7XHJcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy5wYWdlaW5kZXggPSAxO1xyXG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMucXVlcnlfaWQgPSBcIlwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuZGV0YWlsMVN0eWxlRGVmTGlzdD1bXTtcclxuXHQgXHRcdFx0XHRcdFx0ICAgICR0aGlzLmxvYWREYXRhR2V0TGlzdCgpO1xyXG5cdCBcdFx0XHRcdFx0XHR9IFxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHQgXHRcdFx0XHR9ZWxzZXtcclxuXHQgXHRcdFx0XHRcdC8vIHRoaXMuZGV0YWlsMlN0eWxlRGVmTGlzdD1bXTtcclxuXHQgXHRcdFx0XHRcdGlmKHJlc3VsdC5pbmZvKXtcclxuXHQgXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OnJlc3VsdC5pbmZvLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCBcdFx0XHRcdFx0fVxyXG5cdCBcdFx0XHRcdH1cclxuXHQgXHRcdFx0fVxyXG5cdCBcdCAgXHRcdFxyXG5cdCBcdCAgXHR9ZWxzZXtcclxuXHQgXHQgIFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzRcIixjb250ZW50OnJldC5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCBcdCAgXHR9XHJcblx0IFx0ICB9KS5jYXRjaChleD0+e1xyXG5cdCBcdCAgXHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0IFx0ICBcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNC4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0IFx0ICB9KTtcclxuXHQgICAgIH1cclxuXHQgfSBjYXRjaCAoZXgpIHtcclxuXHQgICAgIHZhciB0aXAgPSB0eXBlb2YgZXggPT0gXCJzdHJpbmdcIiA/IGV4IDogZXgubWVzc2FnZTtcclxuXHQgXHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzQuMlwiLGNvbnRlbnQ6XCLmiafooYzigJzmn6Xor6Lkuovku7bigJ3kuovku7blpLHotKXvvJpcIiArIHRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgXHRcclxuXHQgfVxyXG5cdH0sXHJcblx0Ly/mn6Xor6LmlbDmja7nsbvmlbDmja7kv6Hmga9cclxuXHRhc3luYyBsb2FkRGF0YUdldExpc3QoKXsgICBcclxuXHQgIHRyeXtcclxuXHRcdHVuaS5zaG93TG9hZGluZyh7XHJcblx0XHRcdHRpdGxlOlwi5Yqg6L295LitLi4uXCIsXHJcblx0XHRcdG1hc2s6dHJ1ZVxyXG5cdFx0fSk7XHJcblx0ICAgIC8v5p2h5Lu25p+l6K+iXHJcblx0ICAgIHZhciBjb25kaXRpb24gPSB0aGlzLndoZXJlcztcclxuXHQgICAgaWYodGhpcy53aGVyZSl7XHJcblx0ICAgICAgaWYoY29uZGl0aW9uKSBjb25kaXRpb24gKz0nIGFuZCAnO1xyXG5cdCAgICAgIGNvbmRpdGlvbis9dGhpcy53aGVyZTtcclxuXHQgICAgfVxyXG5cdCAgICAvLyBjb25zb2xlLmxvZyhjb25kaXRpb24pO1xyXG5cdCAgICAvLyBjb25zb2xlLmxvZyh0aGlzLm9yZGVyYnkpO1xyXG5cdCAgICB2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdFx0Y2xhc3NfaWQ6IHRoaXMucGFyYW0uRGF0YUNscy5pZCxcclxuXHRcdFx0YXR0cnM6IFtdLFxyXG5cdFx0XHRjb25kaXRpb246IHRoaXMudG9XaGVyZUJhc2U2NFN0cmluZyhcIlwiKyBjb25kaXRpb24gK1wiXCIpLCBcclxuXHRcdFx0cHJqX3JlbF90eXBlOiBcIlwiLFxyXG5cdFx0XHRvcmRlcl9ieTogdGhpcy5vcmRlcmJ5LFxyXG5cdFx0XHRwYWdlX3NpemU6IHRoaXMucGFnZV9zaXplLFxyXG5cdFx0XHRwYWdlOiB0aGlzLnBhZ2VpbmRleCxcclxuXHRcdFx0cXVlcnlfaWQ6IHRoaXMucXVlcnlfaWQsXHJcblx0XHR9O1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2RhdGFPYmpRdWVyeScsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdGNvbnNvbGUubG9nKHJldCk7XHJcblx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHQvLyB2YXIgbGlzdD1bXTtcclxuXHRcdFx0XHQkdGhpcy5xdWVyeV9pZCA9ICcnO1xyXG5cdFx0XHRcdGlmKHJldC5yZXN1bHQpe1xyXG5cdFx0XHRcdFx0JHRoaXMucGFnZV9jb3VudCA9IHJldC5yZXN1bHQucGFnZV9jb3VudDtcclxuXHRcdFx0XHRcdGlmKHJldC5yZXN1bHQucGFnZV9jb3VudD4xKSAkdGhpcy5xdWVyeV9pZCA9IHJldC5yZXN1bHQucXVlcnlfaWQ7XHJcblx0XHRcdFx0XHRpZigkdGhpcy5MaXN0UGFnZUh0bWxfU2hvdy5ldmVudC5pZCl7XHJcblx0XHRcdFx0XHRcdHJldC5yZXN1bHQub2JqX2xpc3QuZm9yRWFjaCgob2JqKSA9PiB7XHJcblx0XHRcdFx0XHQgICAgICB2YXIgaW5mbyA9e1xyXG5cdFx0XHRcdFx0ICAgICAgICAgIGlkOm9iai5pZCxcclxuXHRcdFx0XHRcdCAgICAgIH07XHJcblx0XHRcdFx0XHQgICAgICBvYmouYXR0cl9saXN0LmZvckVhY2goKGF0dHIpID0+IHtcclxuXHRcdFx0XHRcdCAgICAgICAgaW5mb1thdHRyLm5hbWVdPWF0dHIudmFsdWU7XHJcblx0XHRcdFx0XHQgICAgICB9KTtcclxuXHRcdFx0XHRcdCAgICAgIHZhciBkZXRhaWxTdHlsZSA9e1xyXG5cdFx0XHRcdFx0ICAgICAgICAgIFNlbEJ1dF9DaGVja2VkOmZhbHNlLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgIGZvcm06e30sXHJcblx0XHRcdFx0XHQgICAgICAgICAgaW5mbzppbmZvXHJcblx0XHRcdFx0XHQgICAgICB9O1xyXG5cdFx0XHRcdFx0ICAgICAgZGV0YWlsU3R5bGUuZm9ybS5odG1sb2JqSWQgPSBvYmouaWQ/b2JqLmlkLnJlcGxhY2UoLy0vZywnJykucmVwbGFjZSgneycsJycpLnJlcGxhY2UoJ30nLCcnKTonbnVsbCc7XHJcblx0XHRcdFx0XHQgICAgICBkZXRhaWxTdHlsZS5mb3JtLm9iaklkID0gb2JqLmlkO1xyXG5cdFx0XHRcdFx0ICAgICAgZGV0YWlsU3R5bGUuZm9ybS5hdHRycyA9IG9iai5hdHRyX2xpc3Q7XHJcblx0XHRcdFx0XHQgICAgICAkdGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0LnB1c2goZGV0YWlsU3R5bGUpO1xyXG5cdFx0XHRcdFx0XHQgICR0aGlzLmFjdGl2ZWxpc3QucHVzaCh7YWN0aXZlOmZhbHNlfSk7XHJcblx0XHRcdFx0XHQgICAgfSk7XHJcblx0XHRcdFx0XHQgICAgLy8gY29uc29sZS5sb2codGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0KTtcclxuXHRcdFx0XHRcdCAgICB2YXIganNvbmxpc3Q9W107XHJcblx0XHRcdFx0XHQgICAgJHRoaXMuZGV0YWlsMVN0eWxlRGVmTGlzdC5mb3JFYWNoKGF0dHI9PntcclxuXHRcdFx0XHRcdCAgICAgIGpzb25saXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0ICAgICAgICBpZDphdHRyLmluZm8uaWQsXHJcblx0XHRcdFx0XHQgICAgICAgIGF0dHJzOiBPYmplY3Qua2V5cyhhdHRyLmluZm8pLm1hcCgoYSkgPT4gKHtcclxuXHRcdFx0XHRcdCAgICAgICAgICBhdHRyOiBhLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgIHZhbHVlOiBhdHRyLmluZm9bYV0gfHwgXCJcIixcclxuXHRcdFx0XHRcdCAgICAgICAgfSkpXHJcblx0XHRcdFx0XHQgICAgICB9KTtcclxuXHRcdFx0XHRcdCAgICB9KTtcclxuXHRcdFx0XHRcdCAgICAvLyBjb25zb2xlLmxvZyhqc29ubGlzdCk7XHJcblx0XHRcdFx0XHRcdHZhciBkYXRhX2pzb24gPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KGpzb25saXN0KSk7XHJcblx0XHRcdFx0XHQgICAgdmFyIGV2ZW50aWQgPSAkdGhpcy5MaXN0UGFnZUh0bWxfU2hvdy5ldmVudC5pZDtcclxuXHRcdFx0XHRcdCAgICBpZiAoISR0aGlzLkxpc3RQYWdlSHRtbF9TaG93LmV2ZW50LmlkLmluY2x1ZGVzKCd7JykpXHJcblx0XHRcdFx0XHQgICAgXHRldmVudGlkID0gJ3snICsgJHRoaXMuTGlzdFBhZ2VIdG1sX1Nob3cuZXZlbnQuaWQgKyAnfSc7XHJcblx0XHRcdFx0XHQgICAgLy9IVE1M6aG16Z2i5LqL5Lu2XHJcblx0XHRcdFx0XHQgICAgJHRoaXMucnVuQ3VzdG9tRXZlbnQoe1xyXG5cdFx0XHRcdFx0ICAgIFx0ZWRfdHlwZTogMCxcclxuXHRcdFx0XHRcdCAgICBcdHN0YXJ0X3RyYW5zYWN0aW9uOiB0cnVlLFxyXG5cdFx0XHRcdFx0ICAgIFx0Y2xhc3NfaWQ6ICR0aGlzLnBhcmFtLkRhdGFDbHMuaWQsXHJcblx0XHRcdFx0XHQgICAgXHRldmVudF9pZDogZXZlbnRpZCxcclxuXHRcdFx0XHRcdCAgICBcdGRhdGFfanNvbixcclxuXHRcdFx0XHRcdCAgICB9KTtcclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0ICAvLyAkdGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0ICByZXQucmVzdWx0Lm9ial9saXN0LmZvckVhY2goKG9iaikgPT4ge1xyXG5cdFx0XHRcdFx0XHR2YXIgc3R5bGVTdHIgPSBKU09OLnN0cmluZ2lmeSgkdGhpcy5kZXRhaWwxX3N0eWxlZGVmKTtcclxuXHRcdFx0XHRcdFx0dmFyIGRldGFpbFN0eWxlID0gSlNPTi5wYXJzZShzdHlsZVN0cik7XHJcblx0XHRcdFx0XHRcdC8vIHZhciBpbmZvID17XHJcblx0XHRcdFx0XHRcdC8vICAgICBTX0lEOm9iai5pZCxcclxuXHRcdFx0XHRcdFx0Ly8gfTtcclxuXHRcdFx0XHRcdFx0b2JqLmF0dHJfbGlzdC5mb3JFYWNoKChhdHRyKSA9PiB7XHJcblx0XHRcdFx0XHRcdCAgLy8gaW5mb1thdHRyLm5hbWVdPWF0dHIudmFsdWU7XHJcblx0XHRcdFx0XHRcdCAgZGV0YWlsU3R5bGUuZm9ybS5pdGVtcy5mb3JFYWNoKGVsZT0+e1xyXG5cdFx0XHRcdFx0XHRcdGlmKGVsZS5uYW1lIT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0ICBpZihlbGUuZmllbGRJZCA9PSBhdHRyLm5hbWUpIGVsZS52YWx1ZSA9IGF0dHIudmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKGVsZS5uYW1lPT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0ICBlbGUuc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0XHRcdFx0XHRcdFx0XHRpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBpZihjb2wuZmllbGRJZCA9PSBhdHRyLm5hbWUpIGNvbC52YWx1ZSA9IGF0dHIudmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdCAgfSk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHQgIFxyXG5cdFx0XHRcdFx0XHRkZXRhaWxTdHlsZS5mb3JtLmh0bWxvYmpJZCA9IG9iai5pZD9vYmouaWQucmVwbGFjZSgvLS9nLCcnKS5yZXBsYWNlKCd7JywnJykucmVwbGFjZSgnfScsJycpOidudWxsJztcclxuXHRcdFx0XHRcdFx0ZGV0YWlsU3R5bGUuZm9ybS5vYmpJZCA9IG9iai5pZDtcclxuXHRcdFx0XHRcdFx0ZGV0YWlsU3R5bGUuZm9ybS5hdHRycyA9IG9iai5hdHRyX2xpc3Q7XHJcblx0XHRcdFx0XHRcdCR0aGlzLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaChkZXRhaWxTdHlsZSk7XHJcblx0XHRcdFx0XHRcdCR0aGlzLmFjdGl2ZWxpc3QucHVzaCh7YWN0aXZlOmZhbHNlfSk7XHJcblx0XHRcdFx0XHRcdC8vbGlzdC5wdXNoKGluZm8pO1xyXG5cdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQgIFxyXG5cdFx0XHRcdFx0Ly8g6Kej5Yazdmlld+WxguS4jeWQjOatpeeahOmXrumimFxyXG5cdFx0XHRcdFx0Ly8gJHRoaXMuc2Nyb2xsVG9wID0gJHRoaXMub2xkLnNjcm9sbFRvcDtcclxuXHRcdFx0XHRcdCR0aGlzLmlzU2Nyb2xsPWZhbHNlO1xyXG5cdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpe1xyXG5cdFx0XHRcdFx0XHQkdGhpcy5pc1Njcm9sbD10cnVlO1xyXG5cdFx0XHRcdFx0fSwxMDAwKTtcclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLmRldGFpbDFTdHlsZURlZkxpc3QpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor681XCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzUuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0ICB9IGNhdGNoIChleCkge1xyXG5cdCAgICB2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzUuMlwiLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCAgfVxyXG5cdH0sXHJcblx0XHJcblx0Ly/liLfmlrBcclxuXHRSZWZyZXNoKHZhbHVlKXtcclxuXHQgIC8v5Yi35paw5b2T5YmN6aG16Z2iXHJcblx0ICAvLyBsb2NhdGlvbi5yZWxvYWQoKTtcclxuXHQgIHVuaS5yZWRpcmVjdFRvKHtcclxuXHQgIFx0dXJsOicuLi9tb2RhbC8zMjAwP3BhcmFtPScrSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5wYXJhbSkrXCImdGl0bGVuYW1lPVwiK3RoaXMuJGRhdGEudGl0bGVcclxuXHQgIH0pO1xyXG5cdH0sXHJcblx0Ly/ngrnlh7vmmL7npLrmtY/op4jlr7nosaHmmL7npLrpobXpnaJcclxuXHRhc3luYyBvblZpZXdQYWdlQ2xpY2soc3R5bGUpe1xyXG5cdCAgaWYodGhpcy5wYXJhbS5WaWV3UGFnZSl7XHJcblx0XHQgIGlmKHRoaXMucGFyYW0uVmlld1BhZ2UuVmlld19VSURlZil7XHJcblx0XHRcdHRoaXMuc3R5bGVkZWYgPSBzdHlsZTtcclxuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdHVybDonLi4vbW9kYWwvMzIwMF92aWV3P3BhcmFtPScrSlNPTi5zdHJpbmdpZnkodGhpcy5wYXJhbSkrXCImdGl0bGVuYW1lPVwiK3RoaXMudGl0bGUrXCImc3R5bGU9XCIrSlNPTi5zdHJpbmdpZnkoc3R5bGUpLFxyXG5cdFx0XHRcdGV2ZW50czoge1xyXG5cdFx0XHRcdCAgICAvLyDkuLrmjIflrprkuovku7bmt7vliqDkuIDkuKrnm5HlkKzlmajvvIzojrflj5booqvmiZPlvIDpobXpnaLkvKDpgIHliLDlvZPliY3pobXpnaLnmoTmlbDmja5cclxuXHRcdFx0XHQgICAgRXhpdFZpZXdFdmVudDogZnVuY3Rpb24oZGF0YSkge1xyXG5cdFx0XHRcdCAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG5cdFx0XHRcdFx0ICAvL+mAgOWHuumhtemdouWQjuS6i+S7tlxyXG5cdFx0XHRcdFx0ICB2YXIgZXZlbnRpZCA9ICR0aGlzLnBhcmFtLlZpZXdQYWdlLkV4aXRfVmlld19FdmVudD8uaWQ7XHJcblx0XHRcdFx0XHQgIGlmKGV2ZW50aWQpe1xyXG5cdFx0XHRcdFx0ICAgIHRyeSB7XHJcblx0XHRcdFx0XHRcdCAgdmFyIG9ial9hdHRyID0geydTX0lEJzokdGhpcy5zdHlsZWRlZi5mb3JtLm9iaklkfTtcclxuXHRcdFx0XHRcdCAgICAgICR0aGlzLnN0eWxlZGVmLmZvcm0uYXR0cnMuZm9yRWFjaCgoYXR0cikgPT4ge1xyXG5cdFx0XHRcdFx0XHQgICAgb2JqX2F0dHJbYXR0ci5uYW1lXT1hdHRyLnZhbHVlO1xyXG5cdFx0XHRcdFx0ICAgICAgfSk7XHJcblx0XHRcdFx0XHQgICAgICAvLyBjb25zb2xlLmxvZyhvYmpfYXR0cik7XHJcblx0XHRcdFx0XHQgICAgICB2YXIgaW5wdXRfcGFyYW0gPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KG9ial9hdHRyKSk7XHJcblx0XHRcdFx0XHQgICAgICAkdGhpcy5ydW5DdXN0b21FdmVudCh7XHJcblx0XHRcdFx0XHQgICAgICAgICAgZWRfdHlwZTogMCxcclxuXHRcdFx0XHRcdFx0XHQgIHN0YXJ0X3RyYW5zYWN0aW9uOiB0cnVlLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgIGNsYXNzX2lkOiAkdGhpcy5wYXJhbS5EYXRhQ2xzLmlkLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgIGV2ZW50X2lkOiBldmVudGlkLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgIG9ial9hdHRyLFxyXG5cdFx0XHRcdFx0ICAgICAgICAgIGlucHV0X3BhcmFtLFxyXG5cdFx0XHRcdFx0ICAgICAgfSk7XHJcblx0XHRcdFx0XHQgICAgfSBjYXRjaCAoZXgpIHtcclxuXHRcdFx0XHRcdFx0XHR2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHQgIH0gICAgICAgXHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHQgIH1cclxuXHR9LFxyXG5cdC8v54K55Ye75oyJ6ZKuXHJcblx0b25CdG5DbGljayhidG4sc3R5bGUpe1xyXG5cdCAgdmFyIHRoYXQgPSB0aGlzXHJcblx0ICBpZiAoYnRuLlByb21wdCkge1xyXG5cdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHQgIHRpdGxlOiAn5o+Q56S6JyxcclxuXHRcdCAgY29udGVudDogYnRuLlByb21wdENvbnRlbnQgfHwgXCLmmK/lkKbnoa7lrprvvJ9cIixcclxuXHRcdCAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xyXG5cdFx0ICAgIGlmIChyZXMuY29uZmlybSkge1xyXG5cdFx0ICBcdCAgdGhhdC5vbkJ1dHRvbkNsaWNrZWQoYnRuLHN0eWxlKTtcclxuXHRcdCAgICAvLyB9IGVsc2UgaWYgKHJlcy5jYW5jZWwpIHtcclxuXHRcdCAgICAvLyBcdGNvbnNvbGUubG9nKCfnlKjmiLfngrnlh7vlj5bmtognKTtcclxuXHRcdCAgICB9XHJcblx0XHQgIH1cclxuXHRcdH0pO1xyXG5cdCAgfSBlbHNlIHRoYXQub25CdXR0b25DbGlja2VkKGJ0bixzdHlsZSk7XHJcblx0fSxcclxuXHQvL+eCueWHu+aMiemSruWIl+ihqFxyXG5cdGFjdGlvblNoZWV0VGFwKCkge1xyXG5cdCAgXHR2YXIgdGhhdCA9IHRoaXNcclxuXHRcdHZhciBpdGVtbGlzdD1bXTtcclxuXHRcdHRoaXMucGFyYW0uTGlzdFBhZ2UuUGFnZV9CdXR0b24uZm9yRWFjaCgoYnRuKSA9PiB7XHJcblx0XHRcdGl0ZW1saXN0LnB1c2goYnRuLlNob3dOYW1lKTtcclxuXHRcdH0pO1xyXG5cdCAgXHR1bmkuc2hvd0FjdGlvblNoZWV0KHtcclxuXHQgIFx0XHQvLyB0aXRsZTogJ+aMiemSruWIl+ihqCcsXHJcblx0ICBcdFx0aXRlbUxpc3Q6IGl0ZW1saXN0LFxyXG5cdCAgXHRcdHN1Y2Nlc3M6IChlKSA9PiB7XHJcblx0ICBcdFx0XHRjb25zb2xlLmxvZyhlLnRhcEluZGV4KTtcclxuXHQgIFx0XHRcdHZhciBidG4gPSB0aGF0LnBhcmFtLkxpc3RQYWdlLlBhZ2VfQnV0dG9uW2UudGFwSW5kZXhdO1xyXG5cdCAgXHRcdFx0aWYgKGJ0bi5Qcm9tcHQpIHtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogJ+aPkOekuicsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGJ0bi5Qcm9tcHRDb250ZW50IHx8IFwi5piv5ZCm56Gu5a6a77yfXCIsXHJcblx0XHRcdFx0XHRcdHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAocmVzLmNvbmZpcm0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQub25CdXR0b25DbGlja2VkKGJ0bik7XHJcblx0XHRcdFx0XHRcdFx0Ly8gfSBlbHNlIGlmIChyZXMuY2FuY2VsKSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gXHRjb25zb2xlLmxvZygn55So5oi354K55Ye75Y+W5raIJyk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHQgIFx0XHRcdH0gZWxzZSB0aGF0Lm9uQnV0dG9uQ2xpY2tlZChidG4pO1xyXG5cdCAgXHRcdH1cclxuXHQgIFx0fSlcclxuXHR9LFxyXG5cdC8v5aSE55CG55u45YWz5oyJ6ZKuXHJcblx0YXN5bmMgb25CdXR0b25DbGlja2VkKGJ0bixzdHlsZSkge1xyXG4gICAgICBzdHlsZSA9IHN0eWxlIHx8ICcnO1xyXG5cdCAgdHJ5IHtcclxuXHQgICAgdmFyIGVudmlyb21lbnQgPSB7XHJcblx0ICAgICAgYnV0dG9uOiBcInRvcFwiLFxyXG5cdCAgICAgIGJ1dHRvbl9uYW1lOiBidG4uU2hvd05hbWUsXHJcblx0ICAgICAgY2xzX2lkOiBidG4uQ2xzX0lELFxyXG5cdCAgICAgIGZ1bmN0aW9uOiBcIjMyMDBcIixcclxuXHQgICAgICBtYXN0ZXI6IHt9LFxyXG5cdCAgICB9O1xyXG5cdCAgICBpZiAoYnRuLkZ1bkNvZGUgPT0gXCJBZGRcIiB8fCBidG4uRnVuQ29kZSA9PSBcIk1vZGlmeVwiKSB7XHJcblx0ICAgICAgaWYgKGJ0bi5FZGl0X2RsZy5Nb2RlbCA9PSBcInNtYWxsXCIpe1xyXG5cdCAgICAgICAgdGhpcy5zaG93QWRkU21hbGxEaWFsb2coYnRuLCBzdHlsZSwgZW52aXJvbWVudCk7XHJcblx0XHQgIH1cclxuXHQgICAgfSBlbHNlIGlmIChidG4uRnVuQ29kZSA9PSBcIkRlbGV0ZVwiKSB7XHJcblx0ICAgICAgdGhpcy5EZWxldGVPYmooYnRuLCBzdHlsZSwgZW52aXJvbWVudCk7XHJcblx0ICAgIC8vIH0gZWxzZSBpZiAoYnRuLkZ1bkNvZGUgPT0gXCJUcmlnZ2VyRXZlbnRcIikge1xyXG5cdCAgICAvLyAgIHRoaXMudHJpZ2dlckV2ZW50KGJ0biwgc3R5bGUsIGVudmlyb21lbnQpO1xyXG5cdCAgICB9IGVsc2Uge1xyXG5cdFx0ICB1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLmnKrlrp7njrBcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgICAgfVxyXG5cdCAgfSBjYXRjaCAoZXgpIHtcclxuXHQgICAgdmFyIHRpcCA9IHR5cGVvZiBleCA9PSBcInN0cmluZ1wiID8gZXggOiBleC5tZXNzYWdlO1xyXG5cdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgIH1cclxuXHR9LFxyXG5cdC8v5paw5aKe5L+u5pS55bCP56qX5Y+j5pWw5o2uXHJcblx0c2hvd0FkZFNtYWxsRGlhbG9nKGJ0biwgc3R5bGUsIGVudmlyb21lbnQpe1xyXG5cdFx0dmFyIGRhdGE9e1xyXG5cdFx0XHRBZGRfQnRuTmFtZTogYnRuLlNob3dOYW1lLFxyXG5cdFx0XHRFZGl0RGxnTW9kZTogYnRuLkVkaXRfZGxnLk1vZGVsLFxyXG5cdFx0XHRjbHNpZDogdGhpcy5wYXJhbS5EYXRhQ2xzLmlkLFxyXG5cdFx0XHRjbHNfbmFtZTogIHRoaXMucGFyYW0uRGF0YUNscy5uYW1lLFxyXG5cdFx0XHRFZGl0X2RsZzogYnRuLkVkaXRfZGxnXHJcblx0XHR9O1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHVuaS5uYXZpZ2F0ZVRvKHtcclxuXHRcdFx0dXJsOicuLi9tb2RhbC8zMDE4P3BhcmFtPScrSlNPTi5zdHJpbmdpZnkoZGF0YSkrXCImdGl0bGVuYW1lPVwiK2J0bi5FZGl0X2RsZy5OYW1lK1wiJnR5cGU9YWRkRGF0YU9ialwiLFxyXG5cdFx0XHRldmVudHM6IHtcclxuXHRcdFx0ICAgIC8vIOS4uuaMh+WumuS6i+S7tua3u+WKoOS4gOS4quebkeWQrOWZqO+8jOiOt+WPluiiq+aJk+W8gOmhtemdouS8oOmAgeWIsOW9k+WJjemhtemdoueahOaVsOaNrlxyXG5cdFx0XHQgICAgYWRkRGF0YU9iajogZnVuY3Rpb24oZGF0YSkge1xyXG5cdFx0XHQgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuXHRcdFx0XHQgICR0aGlzLlJlZnJlc2goKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdC8v5Yig6Zmk5pWw5o2u5a+56LGhXHJcblx0RGVsZXRlT2JqKGJ0biwgc3R5bGUsIGVudmlyb21lbnQpe1xyXG5cdCAgLy8gY29uc29sZS5sb2coc3R5bGUpO1xyXG5cdCAgdmFyICR0aGlzID0gdGhpcztcclxuXHQgIHVuaS5zaG93TW9kYWwoe1xyXG5cdCAgXHR0aXRsZTogJ+aPkOekuicsXHJcblx0ICBcdGNvbnRlbnQ6ICfnoa7lrprliKDpmaTor6XmlbDmja7vvIEnLFxyXG5cdCAgXHRzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XHJcblx0ICBcdFx0aWYgKHJlcy5jb25maXJtKSB7XHJcblx0XHRcdFx0dmFyIG9iaklEPXN0eWxlLmZvcm0ub2JqSWQ7XHJcblx0XHRcdFx0aWYoIXN0eWxlLmZvcm0ub2JqSWQuaW5jbHVkZXMoJ3snKSkgb2JqSUQgPSAneycrc3R5bGUuZm9ybS5vYmpJZCsnfSc7XHJcblx0XHRcdFx0ICAgICAgICAgIFxyXG5cdFx0XHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdFx0XHRjbGFzc19pZDogYnRuLkNsc19JRCxcclxuXHRcdFx0XHRcdGNsYXNzX25hbWU6ICcnLFxyXG5cdFx0XHRcdFx0b2JqX2lkOiBvYmpJRFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZGF0YU9iakRlbCcsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdC8v5omn6KGM5ZCO5aSE55CG5LqL5Lu2XHJcblx0XHRcdFx0XHRcdCR0aGlzLkFmdGVyUHJvY2Vzc19FdmVudChidG4uY2xzSWQsIGJ0bS5BZnRlclByb2Nlc3NfRXZlbnQsIGVudmlyb21lbnQpO1xyXG5cdFx0XHRcdFx0XHQvL+a4hemZpOW9k+WJjeWIl+ihqOaVsOaNrlxyXG5cdFx0XHRcdFx0XHQkdGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0LmZvckVhY2goKGVsZSxpbmRleCk9PntcclxuXHRcdFx0XHRcdFx0ICBpZihlbGUuZm9ybS5vYmpJZCA9PSBvYmpJRCl7XHJcblx0XHRcdFx0XHRcdCAgICAkdGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0LnNwbGljZShpbmRleCwxKTtcclxuXHRcdFx0XHRcdFx0ICB9XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLliKDpmaTmiJDlip/vvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor682LjFcIixjb250ZW50OnJldC5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzZcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHR9KTtcclxuXHQgIFx0XHR9IGVsc2UgaWYgKHJlcy5jYW5jZWwpIHtcclxuXHRcdFx0XHRcclxuXHQgIFx0XHR9XHJcblx0ICBcdH1cclxuXHQgIH0pO1xyXG5cdCAgXHJcblx0fSxcclxuXHQvL+aJp+ihjOWQjuWkhOeQhuS6i+S7tlxyXG5cdGFzeW5jIEFmdGVyUHJvY2Vzc19FdmVudChjbHNJZCwgYWZ0ZXJQcm9jZXNzX0V2ZW50LCBlbnZpcm9tZW50KXtcclxuXHQgIHRyeSB7XHJcblx0ICAgIGlmIChhZnRlclByb2Nlc3NfRXZlbnQuSUQpIHtcclxuXHRcdFx0Ly/miafooYzlkI7lpITnkIbkuovku7ZcclxuXHRcdFx0YXdhaXQgdGhpcy5ydW5DdXN0b21FdmVudCh7XHJcblx0ICAgICAgICAgICAgZWRfdHlwZTogMCxcclxuXHRcdFx0XHRzdGFydF90cmFuc2FjdGlvbjogdHJ1ZSxcclxuXHQgICAgICAgICAgICBjbGFzc19pZDogY2xzSWQsXHJcblx0ICAgICAgICAgICAgZXZlbnRfaWQ6IGFmdGVyUHJvY2Vzc19FdmVudC5JRCxcclxuXHQgICAgICAgIH0pO1xyXG5cdCAgICB9XHJcblx0ICB9IGNhdGNoIChleCkge1xyXG5cdCAgICB2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzdcIixjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgIH1cclxuXHR9LFxyXG5cclxuXHRvbnRhcChpdGVtKXsgLy/miavnoIHlip/og71cclxuXHRcdC8vIHZhciAkZWxlID0gZTtcclxuXHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXHJcblx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCk9PntcclxuXHRcdFx0Y29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xyXG5cdFx0XHRpdGVtLnZhbHVlID0gcmVzdWx0LmRlY29kZWRhdGE7XHJcblx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcclxuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0XHJcblx0XHRcdGNvbnNvbGUubG9nKGl0ZW0pO1xyXG5cdFx0XHRpZihpdGVtLm9sZHZhbHVlICE9IGl0ZW0udmFsdWUpe1xyXG5cdFx0XHQgICAgaXRlbS5vbGR2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0dmFyIGF0dHIgPSBpdGVtLmZpZWxkSWQ7XHJcblx0XHRcdFx0dGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0cl0gPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRcdHZhciBvbkNoYW5nZUV2ZW50ID0gaXRlbS5iaW5kLm9uQ2hhbmdlRXZlbnQ7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdFx0XHR2YXIgb25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQgPSBpdGVtLmJpbmQub25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQ7ICAgLy/lkI7lm77moIfngrnlh7vkuovku7ZcclxuXHRcdFx0XHR2YXIgb25TdWZmaXhDbGlja0V2ZW50ID0gaXRlbS5iaW5kLm9uU3VmZml4Q2xpY2tFdmVudDsgICAvL+WQjuWbvuagh+eCueWHu+Wbnuiwg1xyXG5cdFx0XHRcdHZhciBpc2ZsYWcgPSBmYWxzZTtcclxuXHRcdFx0XHRcclxuXHRcdFx0ICAgIGlmKG9uQ2hhbmdlRXZlbnQuaWQpeyAgIC8v5YaF5a655Y+Y5YyW5ZCO5LqL5Lu2XHJcblx0XHRcdCAgICAgICR0aGlzLm9uQ2hhbmdlKG9uQ2hhbmdlRXZlbnQpOyBcclxuXHRcdFx0ICAgIH0gZWxzZXtcclxuXHRcdFx0XHQgICR0aGlzLndoZXJlID0nJztcclxuXHRcdFx0XHQgIGlmKGl0ZW0udmFsdWUpXHJcblx0XHRcdFx0XHQkdGhpcy53aGVyZSA9aXRlbS5maWVsZElkK1wiIGxpa2UgJyVcIitpdGVtLnZhbHVlK1wiJSdcIjtcclxuXHRcdFx0XHQgICR0aGlzLnF1ZXJ5X2lkPScnO1xyXG5cdFx0XHRcdCAgJHRoaXMucGFnZWluZGV4ID0gMTtcclxuXHRcdFx0XHQgICR0aGlzLmRldGFpbDFTdHlsZURlZkxpc3Q9W107XHJcblx0XHRcdFx0ICAkdGhpcy5sb2FkRGF0YUdldExpc3QoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYoaXRlbS52YWx1ZSl7IC8v56ys5LiA5Liq6L6T5YWl5qGG5LiN5Li656m6XHJcblx0XHRcdFx0XHQkdGhpcy5mb2N1c01hdGVyaWEgPSB0cnVlOyAvL+WIneWni+WMlu+8jOesrOS6jOS4qui+k+WFpeahhmZvY3Vz5bGe5oCnXHJcblx0XHRcdFx0XHQvLyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XHJcblx0XHRcdFx0XHQvLyBcdCR0aGlzLmZvY3VzTWF0ZXJpYT10cnVlOyAvL+esrOS6jOS4qui+k+WFpeahhuiOt+WPlueEpueCuVxyXG5cdFx0XHRcdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XHJcblx0XHRcdFx0XHRcdFx0dW5pLmhpZGVLZXlib2FyZCgpO1xyXG5cdFx0XHRcdFx0XHR9LDEwMCk7XHJcblx0XHRcdFx0XHQvLyB9LDUwMCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQgICAgLy8gaWYob25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQuaWQpeyAgIC8v5ZCO5Zu+5qCH54K55Ye75LqL5Lu2XHJcblx0XHRcdCAgICAvLyAgIHRoaXMub25TdWZmaXhDbGljayhvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudCk7XHJcblx0XHRcdCAgICAvLyB9XHJcblx0XHRcdCAgICAvLyBpZihvblN1ZmZpeENsaWNrRXZlbnQuaWQpeyAgIC8v5ZCO5Zu+5qCH54K55Ye75Zue6LCDXHJcblx0XHRcdCAgICAvLyAgIHRoaXMub25TdWZmaXhDbGlja0NhbGxiYWNrKG9uU3VmZml4Q2xpY2tFdmVudCk7XHJcblx0XHRcdCAgICAvLyB9XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fSxcclxuXHRvbkVudGVyQ2hhbmdlKGl0ZW0peyAvL+Wbnui9pu+8jOeCueWHu+aMiemSru+8jOWPlua2iOiKgueCueS6i+S7tlxyXG5cdFx0Ly8gY29uc29sZS5sb2coaXRlbSk7XHJcblx0XHRpZihpdGVtLm9sZHZhbHVlICE9IGl0ZW0udmFsdWUpe1xyXG5cdFx0ICAgIGl0ZW0ub2xkdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHR2YXIgYXR0ciA9IGl0ZW0uZmllbGRJZDtcclxuXHRcdFx0dGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0cl0gPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHR2YXIgb25DaGFuZ2VFdmVudCA9IGl0ZW0uYmluZC5vbkNoYW5nZUV2ZW50OyAgIC8v5YaF5a655Y+Y5YyW5ZCO5LqL5Lu2XHJcblx0XHRcdHZhciBvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudCA9IGl0ZW0uYmluZC5vblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudDsgICAvL+WQjuWbvuagh+eCueWHu+S6i+S7tlxyXG5cdFx0XHR2YXIgb25TdWZmaXhDbGlja0V2ZW50ID0gaXRlbS5iaW5kLm9uU3VmZml4Q2xpY2tFdmVudDsgICAvL+WQjuWbvuagh+eCueWHu+Wbnuiwg1xyXG5cdFx0XHR2YXIgaXNmbGFnID0gZmFsc2U7XHJcblx0XHRcdFxyXG5cdFx0ICAgIGlmKG9uQ2hhbmdlRXZlbnQuaWQpeyAgIC8v5YaF5a655Y+Y5YyW5ZCO5LqL5Lu2XHJcblx0XHQgICAgICB0aGlzLm9uQ2hhbmdlKG9uQ2hhbmdlRXZlbnQpOyBcclxuXHRcdCAgICB9IGVsc2V7XHJcblx0XHRcdCAgdGhpcy53aGVyZSA9Jyc7XHJcblx0XHRcdCAgaWYoaXRlbS52YWx1ZSlcclxuXHRcdFx0XHR0aGlzLndoZXJlID1pdGVtLmZpZWxkSWQrXCIgbGlrZSAnJVwiK2l0ZW0udmFsdWUrXCIlJ1wiO1xyXG5cdFx0XHQgIHRoaXMucXVlcnlfaWQ9Jyc7XHJcblx0XHRcdCAgdGhpcy5wYWdlaW5kZXggPSAxO1xyXG5cdFx0XHQgIHRoaXMuZGV0YWlsMVN0eWxlRGVmTGlzdD1bXTtcclxuXHRcdFx0ICB0aGlzLmxvYWREYXRhR2V0TGlzdCgpO1xyXG5cdFx0XHR9XHJcblx0XHQgICAgLy8gaWYob25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQuaWQpeyAgIC8v5ZCO5Zu+5qCH54K55Ye75LqL5Lu2XHJcblx0XHQgICAgLy8gICB0aGlzLm9uU3VmZml4Q2xpY2sob25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQpO1xyXG5cdFx0ICAgIC8vIH1cclxuXHRcdCAgICAvLyBpZihvblN1ZmZpeENsaWNrRXZlbnQuaWQpeyAgIC8v5ZCO5Zu+5qCH54K55Ye75Zue6LCDXHJcblx0XHQgICAgLy8gICB0aGlzLm9uU3VmZml4Q2xpY2tDYWxsYmFjayhvblN1ZmZpeENsaWNrRXZlbnQpO1xyXG5cdFx0ICAgIC8vIH1cclxuXHRcdH1cclxuXHR9LFxyXG5cdC8vIOWGheWuueWPmOWMluWQjuS6i+S7tlxyXG5cdGFzeW5jIG9uQ2hhbmdlKGV2ZW50KSB7XHJcblx0ICAgIHRyeSB7XHJcblx0ICAgICAgICBpZiAoZXZlbnQuaWQpIHtcclxuXHQgICAgICAgICAgdmFyIG9ial9hdHRyID0gdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWw7XHJcblx0ICAgICAgICAgIC8vIGNvbnNvbGUubG9nKG9ial9hdHRyKTtcclxuXHQgICAgICAgICAgdmFyIGlucHV0X3BhcmFtID0gQmFzZTY0LmVuY29kZShcclxuXHQgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShcclxuXHQgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG9ial9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0ICAgICAgICAgICAgICAgIGF0dHI6IGEsXHJcblx0ICAgICAgICAgICAgICAgIHZhbHVlOiBvYmpfYXR0clthXSB8fCBcIlwiLFxyXG5cdCAgICAgICAgICAgICAgfSkpXHJcblx0ICAgICAgICAgICAgKVxyXG5cdCAgICAgICAgICApO1xyXG5cdFx0XHQgIHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdCAgdmFyIGRhdGFJbmZvPXtcclxuXHQgICAgICAgICAgICBlZF90eXBlOiAwLFxyXG5cdFx0XHRcdHN0YXJ0X3RyYW5zYWN0aW9uOiB0cnVlLFxyXG5cdCAgICAgICAgICAgIGNsYXNzX2lkOiB0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5jbHNJZCxcclxuXHRcdFx0XHRjbGFzc19uYW1lOiAnJyxcclxuXHQgICAgICAgICAgICBldmVudF9pZDogZXZlbnQuaWQsXHJcblx0XHRcdFx0ZXZlbnRfbmFtZTogJycsXHJcblx0XHRcdFx0ZGF0YV9vYmpfaWQ6ICcnLFxyXG5cdCAgICAgICAgICAgIG9ial9hdHRyOiBvYmpfYXR0cixcclxuXHRcdFx0XHRwcmpfaWQ6ICcnLFxyXG5cdFx0XHRcdHJlZl9jbHNfaWQ6ICcnLFxyXG5cdFx0XHRcdHJlbF9vYmpfaWQ6ICcnLFxyXG5cdFx0XHRcdHVzZXJfbG9naW46ICcnLFxyXG5cdFx0XHRcdGRhdGFfanNvbjogJycsXHJcblx0XHRcdFx0Y29tcG9zZV9pbmZvOiAnJyxcclxuXHRcdFx0XHRleHRfaW5mbzogJycsXHJcblx0XHRcdFx0Z2xvYmFsX2F0dHI6ICcnLFxyXG5cdCAgICAgICAgICAgIGlucHV0X3BhcmFtOiBpbnB1dF9wYXJhbSxcclxuXHQgICAgICAgICAgfTtcclxuXHRcdFx0ICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncnVuQ3VzdG9tRXZlbnQnLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdFx0XHQgIFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0ICBcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0dmFyIHJlc3VsdCA9IHJldC5yZXN1bHQ7IFxyXG5cdFx0XHRcdFx0aWYgKHJlc3VsdC5yZXQgIT0gMCkge1xyXG5cdFx0XHRcdFx0ICAgIHZhciB0aXAgPSByZXN1bHQuZXJyX2luZm8gPyB0eXBlb2YgcmVzdWx0LmVycl9pbmZvID09ICdzdHJpbmcnID8gcmVzdWx0LmVycl9pbmZvIDogcmVzdWx0LmVycl9pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHRcdCAgICBpZiAocmVzdWx0LnJldCA9PSA4MDEpIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0ICAgIGVsc2UgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXArJyzmj5DnpLo6JytyZXN1bHQucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dmFyIHRpcCA9IHJlc3VsdC5pbmZvID8gdHlwZW9mIHJlc3VsdC5pbmZvID09ICdzdHJpbmcnID8gcmVzdWx0LmluZm8gOiByZXN1bHQuaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0XHRcdGlmICh0aXApIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdGlmKHJlc3VsdC5yZXN1bHRfdHlwZSA9PSAwICYmIHJlc3VsdC5hY3Rpb24pe1xyXG5cdFx0XHRcdFx0XHRcdHJlc3VsdC5hY3Rpb24uZm9yRWFjaChpdGVtPT57XHJcblx0XHRcdFx0XHRcdFx0XHRpZihpdGVtLmFjdGlvbl90eXBlID09IFwic2V0X2RsZ19hdHRyXCIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAvLyB2YWx1ZSA9IHtcImF0dHJcIjpcInh4eFwiLCBcInZhbHVlXCI6XCJ4eHhcIn1cclxuXHRcdFx0XHRcdFx0XHRcdCAgdmFyIGRhdGEgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXMuZm9yRWFjaChhc3luYyAoZWxlLGluZGV4KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgZGF0YS5mb3JFYWNoKGFzeW5jIChlbGUyLGluZGV4KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgICBpZihlbGUuZmllbGRJZCA9PSBlbGUyLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICBlbGUudmFsdWUgPSBlbGUyLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0ICAgIH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdFx0Ly8gdGhpcy5kZXRhaWwyU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdGlmKHJlc3VsdC5pbmZvKXtcclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpyZXN1bHQuaW5mbyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0ICBcdFx0XHJcblx0XHRcdCAgXHR9ZWxzZXtcclxuXHRcdFx0ICBcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor684XCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0ICBcdH1cclxuXHRcdFx0ICB9KS5jYXRjaChleD0+e1xyXG5cdFx0XHQgIFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHQgIFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor684LjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0ICB9KTtcclxuXHQgICAgICAgIH1cclxuXHQgICAgfSBjYXRjaCAoZXgpIHtcclxuXHQgICAgICAgIHZhciB0aXAgPSB0eXBlb2YgZXggPT0gXCJzdHJpbmdcIiA/IGV4IDogZXgubWVzc2FnZTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor684LjJcIixjb250ZW50Olwi5omn6KGM4oCc5YaF5a655Y+Y5YyW5ZCO4oCd5LqL5Lu25aSx6LSl77yaXCIgKyB0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFxyXG5cdCAgICB9XHJcblx0fSxcclxuXHQvL+eCueS4reihqOWNlVxyXG5cdG9uUGFuZWxDbGljayh2YWx1ZSl7IC8v54K55Ye76Z2i5p2/6auY5Lqu5pi+56S6XHJcblx0XHQvLyBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcblx0ICAgIHRoaXMuYWN0aXZlbGlzdC5mb3JFYWNoKGVsZT0+e1xyXG5cdCAgICAgICAgZWxlLmFjdGl2ZSA9IGZhbHNlO1xyXG5cdCAgICB9KTtcclxuXHQgICAgdGhpcy5hY3RpdmVsaXN0W3ZhbHVlXS5hY3RpdmUgPSB0cnVlO1xyXG5cdH0sXHJcblx0XHRcclxuXHQvL+S6i+S7tuWkhOeQhlxyXG5cdGFzeW5jIHJ1bkN1c3RvbUV2ZW50KGRhdGFJbmZvKSB7XHJcblx0ICAgIHRyeSB7XHJcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdydW5DdXN0b21FdmVudCcsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdCAgXHRjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHQgIFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gcmV0LnJlc3VsdDsgXHJcblx0XHRcdFx0XHRpZiAocmVzdWx0LnJldCAhPSAwKSB7XHJcblx0XHRcdFx0XHQgICAgdmFyIHRpcCA9IHJlc3VsdC5lcnJfaW5mbyA/IHR5cGVvZiByZXN1bHQuZXJyX2luZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuZXJyX2luZm8gOiByZXN1bHQuZXJyX2luZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdFx0ICAgIGlmIChyZXN1bHQucmV0ID09IDgwMSkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHQgICAgZWxzZSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCsnLOaPkOekujonK3Jlc3VsdC5yZXQsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHR2YXIgdGlwID0gcmVzdWx0LmluZm8gPyB0eXBlb2YgcmVzdWx0LmluZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuaW5mbyA6IHJlc3VsdC5pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHRcdFx0aWYgKHRpcCkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0aWYocmVzdWx0LnJlc3VsdF90eXBlID09IDAgJiYgcmVzdWx0LmFjdGlvbil7XHJcblx0XHRcdFx0XHRcdFx0cmVzdWx0LmFjdGlvbi5mb3JFYWNoKGl0ZW09PntcclxuXHRcdFx0XHRcdFx0XHRcdGlmKGl0ZW0uYWN0aW9uX3R5cGUgPT0gXCJnb2JhY2tfdG9fcHJlX3BhZ2VcIil7IC8v6L+U5Zue5LiK5LiA6aG1XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZUJhY2soe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlbHRhOjEgLC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihpdGVtLmFjdGlvbl90eXBlID09IFwiaGlkZGVuX2J1dHRvblwiKXsgLy/pmpDol4/mjInpkq5cclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWUuZm9yRWFjaChidG4gPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgdmFyIGluZGV4ID0gJHRoaXMucGFyYW0uTGlzdFBhZ2UuUGFnZV9CdXR0b24uZmluZEluZGV4KGJ1dHRvbiA9PiBidXR0b24uU2hvd05hbWUgPT0gYnRuKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgaWYgKGluZGV4ID4gLTEpIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMucGFyYW0uTGlzdFBhZ2UuUGFnZV9CdXR0b24uc3BsaWNlKGluZGV4LCAxKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gfSBlbHNlIGlmKGl0ZW0uYWN0aW9uX3R5cGUgPT0gXCJyZWZyZXNoX2N1cl9yb3dcIil7IC8vXHJcblx0XHRcdFx0XHRcdFx0XHQvLyBcdHZhciB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGl0ZW0uYWN0aW9uX3R5cGUgPT0gXCJzZXRfcGFuZWxfaHRtbFwiKSB7IC8v5pi+56S6SHRtbOmhtemdolxyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyB2YXIgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy5MaXN0SHRtbF9QYW5lbCA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdC8vICR0aGlzLmRldGFpbDFTdHlsZURlZkxpc3QuZm9yRWFjaCgoZWxlLGluZGV4KT0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBcdGVsZS5MaXN0SHRtbF9QYW5lbCA9IGl0ZW0udmFsdWVbaW5kZXhdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2V7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuW9k+WJjWFjdGlvbl90eXBl77yaXCIraXRlbS5hY3Rpb25fdHlwZStcIuacquWkhOeQhlwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0XHQvLyB0aGlzLmRldGFpbDJTdHlsZURlZkxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0aWYocmVzdWx0LmluZm8pe1xyXG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OnJlc3VsdC5pbmZvLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHQgIFx0XHRcclxuXHRcdFx0ICBcdH1lbHNle1xyXG5cdFx0XHQgIFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzlcIixjb250ZW50OnJldC5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHQgIFx0fVxyXG5cdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHQgIFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHQgIFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor685LjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fSk7XHJcblx0ICAgIH0gY2F0Y2ggKGV4KSB7XHJcblx0ICAgICAgICB2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vOS4yXCIsY29udGVudDpcIuaJp+ihjOS6i+S7tuWksei0pe+8mlwiICsgdGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcclxuXHQgICAgfVxyXG5cdH0sXHJcblx0XHJcblx0Y2FuY2VsKGUpeyAvL+WPlua2iFxyXG5cdFx0dmFyIGV2ZW50Q2hhbm5lbCA9IHRoaXMuJHNjb3BlLmV2ZW50Q2hhbm5lbDtcclxuXHRcdC8vIGNvbnN0IGV2ZW50Q2hhbm5lbCA9IHRoaXMuZ2V0T3BlbmVyRXZlbnRDaGFubmVsKCk7XHJcblx0XHRldmVudENoYW5uZWwuZW1pdCgndmlld18zMjAxJyxcIlwiKTtcclxuXHRcdHVuaS5uYXZpZ2F0ZUJhY2soe1xyXG5cdFx0XHRkZWx0YToxICwvL+i/lOWbnuWxguaVsO+8jDLliJnkuIrkuIrpobVcclxuXHRcdH0pO1xyXG5cdH0sXHJcblx0LyoqXHJcblx0ICog5Y+q5pSv5oyBW1wiY29sdW1uMT0nQScgb3IgY29sdW1uMj0nQidcIiwgXCJjb2x1bW4zPSdDJyBhbmQgY29sdW1uND0nRCdcIiwgXCJjb2x1bW41PSdFJ1wiXei/meenjeagvOW8j1xyXG5cdCAqIHtcclxuXHQgKiAgICAgXCJtb2RlbFwiOiAwIC8gMSxcclxuXHQgKiAgICAgXCJjb25kaXRpb25cIjpcclxuXHQgKiAgICAgW1xyXG5cdCAqICAgICAgICAgW1xyXG5cdCAqICAgICAgICAgICAgIHsgfSxcclxuXHQgKiAgICAgICAgICAgICB7IH0sXHJcblx0ICogICAgICAgICAgICAgeyB9XHJcblx0ICogICAgICAgICBdLFxyXG5cdCAqICAgICAgICAgW1xyXG5cdCAqICAgICAgICAgICAgIHsgfVxyXG5cdCAqICAgICAgICAgXSxcclxuXHQgKiAgICAgICAgIFtcclxuXHQgKiAgICAgICAgICAgICB7IH1cclxuXHQgKiAgICAgICAgIF1cclxuXHQgKiAgICAgXVxyXG5cdCAqIH1cclxuXHQgKi9cclxuXHR0b1doZXJlQmFzZTY0U3RyaW5nKGxpc3QpIHtcclxuXHQgICAgaWYgKHR5cGVvZiBsaXN0ID09ICdzdHJpbmcnKSBsaXN0ID0gW2xpc3RdXHJcblx0ICAgIHZhciBzcWwgPSBbXVxyXG5cdCAgICB2YXIgc2VwcyA9IFsnIG5vdCBpbicsICcgaW4nLCAnPD4nLCAnIT0nLCAnPD0nLCAnPj0nLCAnPCcsICc9JywgJz4nLCAnIGxpa2UnXVxyXG5cdCAgICBsaXN0LmZvckVhY2gobHMgPT4ge1xyXG5cdCAgICAgICAgdmFyIHdoZXJlID0gbHMudHJpbSgpLnRvTG93ZXJDYXNlKClcclxuXHQgICAgICAgIGlmICh3aGVyZS5zdGFydHNXaXRoKCcoJykgJiYgd2hlcmUuZW5kc1dpdGgoJyknKSkgd2hlcmUgPSB3aGVyZS5yZXBsYWNlKC9eXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJylcclxuXHQgICAgICAgIGlmICh3aGVyZS5pbmNsdWRlcygnIGFuZCAnKSkge1xyXG5cdCAgICAgICAgICAgIC8vIOS6jOe6p2FuZOaUvuWcqOesrOS4gOe6p+aVsOe7hOS4rVxyXG5cdCAgICAgICAgICAgIHdoZXJlLnNwbGl0KCcgYW5kICcpLmZvckVhY2gobGkgPT4ge1xyXG5cdCAgICAgICAgICAgICAgICB2YXIgbCA9IGxpLnRyaW0oKVxyXG5cdCAgICAgICAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCcoJykgJiYgbC5lbmRzV2l0aCgnKScpKSBsID0gbC5yZXBsYWNlKC9eXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJylcclxuXHQgICAgICAgICAgICAgICAgdmFyIHNlcCA9ICcnXHJcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Vwcy5sZW5ndGg7IGkrKykge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKGwuaW5jbHVkZXMoc2Vwc1tpXSkpIHtcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzZXAgPSBzZXBzW2ldXHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuXHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICBpZiAoc2VwKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gbC5zcGxpdChzZXApXHJcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZmllbGQgPSB2YWx1ZXNbMF0/LnRyaW0oKS5yZXBsYWNlKC9eXFxbLywgJycpLnJlcGxhY2UoL1xcXSQvLCAnJylcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9ICcnXHJcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgb3AgPSBzZXAudHJpbSgpXHJcblx0XHJcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoWycgaW4nLCAnIG5vdCBpbiddLmluY2x1ZGVzKHNlcCkgJiYgdmFsdWVzWzFdLmluY2x1ZGVzKCdzZWxlY3QgJykgJiYgdmFsdWVzWzFdLmluY2x1ZGVzKCcgZnJvbSAnKSkge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbC5yZXBsYWNlKGZpZWxkLCAnJykucmVwbGFjZSgvXlxccyooaW58bm90IGluKVxccyovLCAnJykudHJpbSgpXHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJygnKSAmJiB2YWx1ZS5lbmRzV2l0aCgnKScpKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKS50cmltKClcclxuXHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVzWzFdPy50cmltKCkucmVwbGFjZSgvXlxcJy8sICcnKS5yZXBsYWNlKC9cXCckLywgJycpXHJcblx0XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFsnaW4nLCAnbm90IGluJ10uaW5jbHVkZXMob3ApKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXlxcKC8sICcnKS5yZXBsYWNlKC9cXCkkLywgJycpXHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJywnKS5tYXAodiA9PiB2LnRyaW0oKS5yZXBsYWNlKC9eXFwnLywgJycpLnJlcGxhY2UoL1xcJyQvLCAnJykpXHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICAgICAgc3FsLnB1c2goW3sgZmllbGQsIHZhbHVlLCBvcCB9XSlcclxuXHQgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgIH0pXHJcblx0ICAgICAgICB9XHJcblx0ICAgICAgICBlbHNlIGlmICh3aGVyZS5pbmNsdWRlcygnIG9yICcpKSB7XHJcblx0ICAgICAgICAgICAgLy8g5LqM57qnb3LmlL7lnKjnrKzkuoznuqflkIzkuIDnu4TmlbDnu4TkuK1cclxuXHQgICAgICAgICAgICB2YXIgcyA9IFtdXHJcblx0ICAgICAgICAgICAgd2hlcmUuc3BsaXQoJyBvciAnKS5mb3JFYWNoKGxpID0+IHtcclxuXHQgICAgICAgICAgICAgICAgdmFyIGwgPSBsaS50cmltKClcclxuXHQgICAgICAgICAgICAgICAgaWYgKGwuc3RhcnRzV2l0aCgnKCcpICYmIGwuZW5kc1dpdGgoJyknKSkgbCA9IGwucmVwbGFjZSgvXlxcKC8sICcnKS5yZXBsYWNlKC9cXCkkLywgJycpXHJcblx0ICAgICAgICAgICAgICAgIHZhciBzZXAgPSAnJ1xyXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcHMubGVuZ3RoOyBpKyspIHtcclxuXHQgICAgICAgICAgICAgICAgICAgIGlmIChsLmluY2x1ZGVzKHNlcHNbaV0pKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgc2VwID0gc2Vwc1tpXVxyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcblx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgaWYgKHNlcCkge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlcyA9IGwuc3BsaXQoc2VwKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGZpZWxkID0gdmFsdWVzWzBdPy50cmltKCkucmVwbGFjZSgvXlxcWy8sICcnKS5yZXBsYWNlKC9cXF0kLywgJycpXHJcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSAnJ1xyXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIG9wID0gc2VwLnRyaW0oKVxyXG5cdFxyXG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKFsnIGluJywgJyBub3QgaW4nXS5pbmNsdWRlcyhzZXApICYmIHZhbHVlc1sxXS5pbmNsdWRlcygnc2VsZWN0ICcpICYmIHZhbHVlc1sxXS5pbmNsdWRlcygnIGZyb20gJykpIHtcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGwucmVwbGFjZShmaWVsZCwgJycpLnJlcGxhY2UoL15cXHMqKGlufG5vdCBpbilcXHMqLywgJycpLnRyaW0oKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcoJykgJiYgdmFsdWUuZW5kc1dpdGgoJyknKSkgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJykudHJpbSgpXHJcblx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlc1sxXT8udHJpbSgpLnJlcGxhY2UoL15cXCcvLCAnJykucmVwbGFjZSgvXFwnJC8sICcnKVxyXG5cdFxyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGlmIChbJ2luJywgJ25vdCBpbiddLmluY2x1ZGVzKG9wKSkge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KCcsJykubWFwKHYgPT4gdi50cmltKCkucmVwbGFjZSgvXlxcJy8sICcnKS5yZXBsYWNlKC9cXCckLywgJycpKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgICAgIHNxbC5wdXNoKFt7IGZpZWxkLCB2YWx1ZSwgb3AgfV0pXHJcblx0ICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICB9KVxyXG5cdCAgICAgICAgICAgIHNxbC5wdXNoKHMpXHJcblx0ICAgICAgICB9XHJcblx0ICAgICAgICBlbHNlIHtcclxuXHQgICAgICAgICAgICB2YXIgbGkgPSB3aGVyZVxyXG5cdCAgICAgICAgICAgIC8vIOWNleS4gOafpeivouadoeS7tuebtOaOpeaUvuWcqOesrOS4gOe6p+aVsOe7hOS4rVxyXG5cdCAgICAgICAgICAgIHZhciBsID0gbGkudHJpbSgpXHJcblx0ICAgICAgICAgICAgaWYgKGwuc3RhcnRzV2l0aCgnKCcpICYmIGwuZW5kc1dpdGgoJyknKSkgbCA9IGwucmVwbGFjZSgvXlxcKC8sICcnKS5yZXBsYWNlKC9cXCkkLywgJycpXHJcblx0ICAgICAgICAgICAgdmFyIHNlcCA9ICcnXHJcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXBzLmxlbmd0aDsgaSsrKSB7XHJcblx0ICAgICAgICAgICAgICAgIGlmIChsLmluY2x1ZGVzKHNlcHNbaV0pKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICBzZXAgPSBzZXBzW2ldXHJcblx0ICAgICAgICAgICAgICAgICAgICBicmVha1xyXG5cdCAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgIGlmIChzZXApIHtcclxuXHQgICAgICAgICAgICAgICAgdmFyIHZhbHVlcyA9IGwuc3BsaXQoc2VwKVxyXG5cdCAgICAgICAgICAgICAgICB2YXIgZmllbGQgPSB2YWx1ZXNbMF0/LnRyaW0oKS5yZXBsYWNlKC9eXFxbLywgJycpLnJlcGxhY2UoL1xcXSQvLCAnJylcclxuXHQgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gJydcclxuXHQgICAgICAgICAgICAgICAgdmFyIG9wID0gc2VwLnRyaW0oKVxyXG5cdFxyXG5cdCAgICAgICAgICAgICAgICBpZiAoWycgaW4nLCAnIG5vdCBpbiddLmluY2x1ZGVzKHNlcCkgJiYgdmFsdWVzWzFdLmluY2x1ZGVzKCdzZWxlY3QgJykgJiYgdmFsdWVzWzFdLmluY2x1ZGVzKCcgZnJvbSAnKSkge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBsLnJlcGxhY2UoZmllbGQsICcnKS5yZXBsYWNlKC9eXFxzKihpbnxub3QgaW4pXFxzKi8sICcnKS50cmltKClcclxuXHQgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcoJykgJiYgdmFsdWUuZW5kc1dpdGgoJyknKSkgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJykudHJpbSgpXHJcblx0ICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgZWxzZSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlc1sxXT8udHJpbSgpLnJlcGxhY2UoL15cXCcvLCAnJykucmVwbGFjZSgvXFwnJC8sICcnKVxyXG5cdFxyXG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKFsnaW4nLCAnbm90IGluJ10uaW5jbHVkZXMob3ApKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJylcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KCcsJykubWFwKHYgPT4gdi50cmltKCkucmVwbGFjZSgvXlxcJy8sICcnKS5yZXBsYWNlKC9cXCckLywgJycpKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgIHNxbC5wdXNoKFt7IGZpZWxkLCB2YWx1ZSwgb3AgfV0pXHJcblx0ICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgfVxyXG5cdCAgICB9KVxyXG5cdFxyXG5cdCAgICBpZiAoc3FsLmxlbmd0aCA+IDApXHJcblx0ICAgICAgICByZXR1cm4gQmFzZTY0LmVuY29kZShKU09OLnN0cmluZ2lmeSh7XHJcblx0ICAgICAgICAgICAgbW9kZWw6IDEsXHJcblx0ICAgICAgICAgICAgY29uZGl0aW9uOiBzcWxcclxuXHQgICAgICAgIH0pKVxyXG5cdCAgICBlbHNlXHJcblx0ICAgICAgICByZXR1cm4gJydcclxuXHR9XHJcblxyXG4gIH0sXHJcbn07XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///165\n"); |
| | | |
| | | /***/ }), |
| | | /* 166 */ |
| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 57));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 59));\nvar _base = _interopRequireDefault(__webpack_require__(/*! ../../components/js-base64/base64.js */ 65));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n modules: {\n Base64: _base.default\n },\n data: function data() {\n return {\n title: '新增',\n param: {},\n show: true,\n duration: 0,\n modeClass: ['fade', 'slide-left'],\n styles: {\n justifyContent: 'center',\n alignItems: 'center',\n width: '100px',\n height: '100px',\n borderRadius: '5px',\n textAlign: 'center',\n backgroundColor: '#fff'\n },\n wheres: '',\n orderby: ''\n };\n },\n onReady: function onReady() {\n // console.log(1111);\n // this.$refs.ani.init({\n // \tduration: 1000, //过渡动画持续时间,单位ms\t\n // \ttimingFunction: 'linear',\n // \ttransformOrigin: '50% 50%',\n // \tdelay: 500 //动画延迟时间,单位 ms\t\n // });\n // this.$refs.ani.step({\n // \t// translateX: '50px'\n // },{\n // \tduration: 1000, //过渡动画持续时间,单位ms\t\n // \ttimingFunction: 'linear',\n // \ttransformOrigin: '50% 50%',\n // \tdelay: 500 //动画延迟时间,单位 ms\t\n // });\n // // 开始执行动画\n // this.$refs.ani.run(()=>{\n // \tconsole.log('动画支持完毕')\n // });\n },\n onLoad: function onLoad(options) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // console.log(options);\n _this.duration = 2000;\n uni.setNavigationBarTitle({\n title: options.titlename\n }); //设置顶部标题 \n _this.$data.title = options.titlename;\n _this.$data.param = JSON.parse(options.param);\n __f__(\"log\", _this.$data.param, \" at pages/modal/3201.vue:180\");\n //加载初始界面\n if (_this.$data.param.welcome_page) {\n _this.$data.styles.width = _this.$data.param.welcome_page.width + 'px';\n _this.$data.styles.height = _this.$data.param.welcome_page.height + 'px';\n _this.$data.styles.backgroundColor = _this.$data.param.welcome_page.bkground_color;\n _this.$data.param.welcome_page.img = _this.$data.param.welcome_page.img.replace(/ /g, '+');\n _this.$data.param.welcome_page.width = parseInt(_this.$data.param.welcome_page.width);\n _this.$data.param.welcome_page.height = parseInt(_this.$data.param.welcome_page.height);\n _this.$data.param.catalog.forEach( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(ele, index) {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n ele.img = ele.img.replace(/ /g, '+');\n ele.taskQty = 0;\n _context.next = 4;\n return _this.appGetInfo(ele.function_def_id, index);\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n }\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n methods: {\n //获取功能点信息\n appGetInfo: function appGetInfo(appid, index) {\n var _this2 = this;\n var $this = this;\n var json = {\n app_id: [appid]\n };\n this.$store.dispatch('appGetInfo', json).then( /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(success) {\n var app, paramStr, appName, defCode, param;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(success.err_code == 0)) {\n _context3.next = 24;\n break;\n }\n app = success.result[0];\n paramStr = app.param;\n appName = app.name;\n defCode = app.def_code;\n param = \"\";\n if (paramStr) {\n //mobox2的param是json字符串\n param = paramStr.replace(/\\\\/g, \"\");\n //mobox3的param是base64字符串\n if (!paramStr.includes('\"')) param = _base.default.decode(paramStr);\n }\n if (param) {\n _context3.next = 10;\n break;\n }\n uni.showModal({\n title: \"提示\",\n content: defCode + \"该功能点未配置参数,请重新配置参数!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return _context3.abrupt(\"return\");\n case 10:\n _this2.$data.param.catalog[index].param = param;\n _this2.$data.param.catalog[index].appName = appName;\n param = JSON.parse(param);\n $this.orderby = param.Order ? param.Order : 'T_CREATE Desc';\n if (!param.Query_Event) {\n _context3.next = 19;\n break;\n }\n _context3.next = 17;\n return $this.onSearChange(param.DataCls.id, param.Query_Event.id, index);\n case 17:\n _context3.next = 22;\n break;\n case 19:\n $this.wheres = param.Condition;\n _context3.next = 22;\n return $this.loadDataGetList(param.DataCls.id, index);\n case 22:\n _context3.next = 25;\n break;\n case 24:\n uni.showModal({\n title: \"提示\",\n content: success.msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n case 25:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n return function (_x3) {\n return _ref2.apply(this, arguments);\n };\n }()).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n // 执行查询事件\n onSearChange: function onSearChange(clsid, eventid, index) {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var $this, dataInfo, tip;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n try {\n if (event.id) {\n $this = _this3;\n dataInfo = {\n ed_type: 0,\n start_transaction: true,\n class_id: clsid,\n event_id: eventid\n };\n _this3.$store.dispatch('runCustomEvent', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var result = ret.result;\n if (result.ret != 0) {\n var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n if (result.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + result.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n if (result.result_type == 0 && result.action) {\n result.action.forEach(function (item) {\n if (item.action_type == \"set_query_condition\") {\n var value = item.value;\n $this.wheres = value.condition;\n $this.orderby = value.order ? value.order : $this.orderby;\n $this.loadDataGetList(clsid, index);\n }\n });\n } else {\n // this.detail2StyleDefList=[];\n if (result.info) {\n uni.showModal({\n title: \"提示\",\n content: result.info,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误1\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误1.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n }\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误1.2\",\n content: \"执行“查询事件”事件失败:\" + tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n //查询数据类数据信息\n loadDataGetList: function loadDataGetList(clsid, index) {\n var _this4 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var condition, $this, dataInfo, tip;\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n try {\n //条件查询\n condition = _this4.wheres; // console.log(condition);\n // console.log(this.orderby);\n $this = _this4;\n dataInfo = {\n class_id: clsid,\n attrs: [],\n condition: _this4.toWhereBase64String(\"\" + condition + \"\"),\n prj_rel_type: \"\",\n order_by: _this4.orderby,\n page_size: 99999,\n page: 1,\n query_id: ''\n };\n _this4.$store.dispatch('dataObjQuery', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n if (ret.result) {\n $this.$data.param.catalog[index].taskQty = ret.result.obj_list.length;\n // console.log($this.$data.param.catalog[index]);\n var param = JSON.parse(JSON.stringify($this.$data.param));\n $this.$data.param = [];\n $this.$data.param = param;\n }\n } else {\n uni.showModal({\n title: \"错误2\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误2.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误2.2\",\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }))();\n },\n //点击条目打开3200\n onViewClick: function onViewClick(data) {\n if (!data.function_def_id) {\n uni.showModal({\n title: \"提示\",\n content: \"该条目未关联功能点!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n var $this = this;\n uni.navigateTo({\n url: '../modal/3200?param=' + data.param + \"&titlename=\" + data.appName,\n events: {\n // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据\n view_3201: function view_3201(data) {\n __f__(\"log\", data, \" at pages/modal/3201.vue:351\");\n //刷新当前页面\n // location.reload();\n uni.redirectTo({\n url: '../modal/3201?param=' + JSON.stringify($this.$data.param) + \"&titlename=\" + $this.$data.title\n });\n }\n }\n });\n },\n cancel: function cancel(e) {\n //取消\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\n },\n /**\r\n * 只支持[\"column1='A' or column2='B'\", \"column3='C' and column4='D'\", \"column5='E'\"]这种格式\r\n * {\r\n * \"model\": 0 / 1,\r\n * \"condition\":\r\n * [\r\n * [\r\n * { },\r\n * { },\r\n * { }\r\n * ],\r\n * [\r\n * { }\r\n * ],\r\n * [\r\n * { }\r\n * ]\r\n * ]\r\n * }\r\n */\n toWhereBase64String: function toWhereBase64String(list) {\n if (typeof list == 'string') list = [list];\n var sql = [];\n var seps = [' not in', ' in', '<>', '!=', '<=', '>=', '<', '=', '>', ' like'];\n list.forEach(function (ls) {\n var where = ls.trim().toLowerCase();\n if (where.startsWith('(') && where.endsWith(')')) where = where.replace(/^\\(/, '').replace(/\\)$/, '');\n if (where.includes(' and ')) {\n // 二级and放在第一级数组中\n where.split(' and ').forEach(function (li) {\n var l = li.trim();\n if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\\(/, '').replace(/\\)$/, '');\n var sep = '';\n for (var i = 0; i < seps.length; i++) {\n if (l.includes(seps[i])) {\n sep = seps[i];\n break;\n }\n }\n if (sep) {\n var _values$;\n var values = l.split(sep);\n var field = (_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.trim().replace(/^\\[/, '').replace(/\\]$/, '');\n var value = '';\n var op = sep.trim();\n if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) {\n value = l.replace(field, '').replace(/^\\s*(in|not in)\\s*/, '').trim();\n if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\\(/, '').replace(/\\)$/, '').trim();\n } else {\n var _values$2;\n value = (_values$2 = values[1]) === null || _values$2 === void 0 ? void 0 : _values$2.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n if (['in', 'not in'].includes(op)) {\n value = value.replace(/^\\(/, '').replace(/\\)$/, '');\n value = value.split(',').map(function (v) {\n return v.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n });\n }\n }\n sql.push([{\n field: field,\n value: value,\n op: op\n }]);\n }\n });\n } else if (where.includes(' or ')) {\n // 二级or放在第二级同一组数组中\n var s = [];\n where.split(' or ').forEach(function (li) {\n var l = li.trim();\n if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\\(/, '').replace(/\\)$/, '');\n var sep = '';\n for (var i = 0; i < seps.length; i++) {\n if (l.includes(seps[i])) {\n sep = seps[i];\n break;\n }\n }\n if (sep) {\n var _values$3;\n var values = l.split(sep);\n var field = (_values$3 = values[0]) === null || _values$3 === void 0 ? void 0 : _values$3.trim().replace(/^\\[/, '').replace(/\\]$/, '');\n var value = '';\n var op = sep.trim();\n if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) {\n value = l.replace(field, '').replace(/^\\s*(in|not in)\\s*/, '').trim();\n if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\\(/, '').replace(/\\)$/, '').trim();\n } else {\n var _values$4;\n value = (_values$4 = values[1]) === null || _values$4 === void 0 ? void 0 : _values$4.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n if (['in', 'not in'].includes(op)) {\n value = value.replace(/^\\(/, '').replace(/\\)$/, '');\n value = value.split(',').map(function (v) {\n return v.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n });\n }\n }\n sql.push([{\n field: field,\n value: value,\n op: op\n }]);\n }\n });\n sql.push(s);\n } else {\n var li = where;\n // 单一查询条件直接放在第一级数组中\n var l = li.trim();\n if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\\(/, '').replace(/\\)$/, '');\n var sep = '';\n for (var i = 0; i < seps.length; i++) {\n if (l.includes(seps[i])) {\n sep = seps[i];\n break;\n }\n }\n if (sep) {\n var _values$5;\n var values = l.split(sep);\n var field = (_values$5 = values[0]) === null || _values$5 === void 0 ? void 0 : _values$5.trim().replace(/^\\[/, '').replace(/\\]$/, '');\n var value = '';\n var op = sep.trim();\n if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) {\n value = l.replace(field, '').replace(/^\\s*(in|not in)\\s*/, '').trim();\n if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\\(/, '').replace(/\\)$/, '').trim();\n } else {\n var _values$6;\n value = (_values$6 = values[1]) === null || _values$6 === void 0 ? void 0 : _values$6.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n if (['in', 'not in'].includes(op)) {\n value = value.replace(/^\\(/, '').replace(/\\)$/, '');\n value = value.split(',').map(function (v) {\n return v.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n });\n }\n }\n sql.push([{\n field: field,\n value: value,\n op: op\n }]);\n }\n }\n });\n if (sql.length > 0) return _base.default.encode(JSON.stringify({\n model: 1,\n condition: sql\n }));else return '';\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvMzIwMS52dWUiXSwibmFtZXMiOlsibW9kdWxlcyIsIkJhc2U2NCIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwic2hvdyIsImR1cmF0aW9uIiwibW9kZUNsYXNzIiwic3R5bGVzIiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwid2lkdGgiLCJoZWlnaHQiLCJib3JkZXJSYWRpdXMiLCJ0ZXh0QWxpZ24iLCJiYWNrZ3JvdW5kQ29sb3IiLCJ3aGVyZXMiLCJvcmRlcmJ5Iiwib25SZWFkeSIsIm9uTG9hZCIsInVuaSIsImVsZSIsIm1ldGhvZHMiLCJhcHBHZXRJbmZvIiwiYXBwX2lkIiwic3VjY2VzcyIsImFwcCIsInBhcmFtU3RyIiwiYXBwTmFtZSIsImRlZkNvZGUiLCJjb250ZW50Iiwic2hvd0NhbmNlbCIsImNvbmZpcm1UZXh0IiwiJHRoaXMiLCJvblNlYXJDaGFuZ2UiLCJkYXRhSW5mbyIsImVkX3R5cGUiLCJzdGFydF90cmFuc2FjdGlvbiIsImNsYXNzX2lkIiwiZXZlbnRfaWQiLCJyZXN1bHQiLCJ0aXAiLCJsb2FkRGF0YUdldExpc3QiLCJjb25kaXRpb24iLCJhdHRycyIsInByal9yZWxfdHlwZSIsIm9yZGVyX2J5IiwicGFnZV9zaXplIiwicGFnZSIsInF1ZXJ5X2lkIiwib25WaWV3Q2xpY2siLCJ1cmwiLCJldmVudHMiLCJ2aWV3XzMyMDEiLCJjYW5jZWwiLCJkZWx0YSIsInRvV2hlcmVCYXNlNjRTdHJpbmciLCJsaXN0Iiwid2hlcmUiLCJzZXAiLCJ2YWx1ZSIsInNxbCIsImZpZWxkIiwib3AiLCJtb2RlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBK0hBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VBQ0E7RUFD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O2tCQUFBO2dCQUNBO2NBQ0E7Y0FDQUM7Z0JBQUFDO2dCQUFBRjtnQkFBQUc7Y0FBQTtZQUNBO1VBQ0E7UUFDQSxPQUNBO1VBQ0E7VUFDQTtVQUNBTDtZQUNBO1lBQ0E7WUFDQTtZQUNBO2NBQ0E7Z0JBQ0FDO2dCQUNBO2NBQ0E7WUFDQTtZQUNBO2NBQUE7Y0FDQTtjQUNBO2NBQ0E7Y0FDQTtjQUVBO2dCQUNBQztnQkFDQTtjQUNBLE9BQ0E7Z0JBQUE7Z0JBQ0FBO2dCQUVBO2tCQUNBQTtrQkFDQUE7b0JBQUE7a0JBQUE7Z0JBQ0E7Y0FDQTtjQUNBQztnQkFBQUM7Z0JBQUFGO2dCQUFBRztjQUFBO1lBQ0E7VUFDQTtVQUNBRjtRQUNBLE9BQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7WUFDQTtjQUNBRjtjQUNBO1lBQ0E7VUFDQTtVQUNBO1lBQUE7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUVBO2NBQ0FDO2NBQ0E7WUFDQSxPQUNBO2NBQUE7Y0FDQUE7Y0FFQTtnQkFDQUE7Z0JBQ0FBO2tCQUFBO2dCQUFBO2NBQ0E7WUFDQTtZQUNBQztjQUFBQztjQUFBRjtjQUFBRztZQUFBO1VBQ0E7UUFDQTtNQUNBO01BRUEsb0JBQ0E7UUFDQUM7UUFDQXJCO01BQ0EsU0FFQTtJQUNBO0VBRUE7QUFDQTtBQUFBLDJCIiwiZmlsZSI6IjE3NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuXHQuZXhhbXBsZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGhlaWdodDogMTUwcHg7XG5cdFx0Ly8gYmFja2dyb3VuZC1jb2xvcjogI2VmZWZlZjtcblx0fVxuXHQudHJhbnNpdGlvbi1idXR0b24ge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGZsZXg6IDE7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0fVxuXHQuZXhhbXBsZSA6OnYtZGVlcCAudHJhbnNpdGlvbiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdHdpZHRoOiAxMDBweDtcblx0XHRoZWlnaHQ6IDEwMHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDVweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Ly8gYmFja2dyb3VuZC1jb2xvcjogIzRjZDk2NDtcblx0XHQvLyBib3gtc2hhZG93OiAwIDAgNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMik7XG5cdH1cblx0LnRleHQge1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRjb2xvcjogI2ZmZjtcblx0fVxuPC9zdHlsZT5cbjxzdHlsZT5cclxuXHQuY29udGVudHtcclxuXHRcdG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2VmZWZlZjtcclxuXHRcdHBhZGRpbmc6IDFycHggMHJweDtcclxuXHR9XHJcblx0LmR2X2hlYWR7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZWZlZmVmO1xyXG5cdH1cclxuXHQuaGVhZF90aXRsZXtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGZvbnQtc2l6ZTogMTlweDtcclxuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdH1cclxuXHQudW5pLXNlY3Rpb24gLnVuaS1zZWN0aW9uLWhlYWRlcntcclxuXHRcdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuXHR9XHJcblx0LmR2X2NvbnRlbnR7XHJcblx0XHRtYXJnaW46IDMwcnB4O1xyXG5cdFx0cGFkZGluZzogMTBycHg7XHJcblx0XHRib3JkZXItcmFkaXVzOiAxMnJweDtcclxuXHR9XHJcblx0LmR2X3BhbmVse1xyXG5cdCAgYmFja2dyb3VuZC1jb2xvcjojZmZmO1xyXG5cdCAgcGFkZGluZzogMjBycHg7XHJcblx0ICBtYXJnaW4tdG9wOiAyMHJweDtcclxuXHQgIGJvcmRlci1yYWRpdXM6IDEycnB4O1xyXG5cdCAgLyogYm94LXNoYWRvdzogMnJweCAycnB4IDJycHggcmdiYSgwLCAwLCAwLCAwLjMpOyAqL1xyXG5cdH1cclxuXHQuZHZfcGFuZWw6Zmlyc3QtY2hpbGR7XHJcblx0XHRtYXJnaW46IDA7XHJcblx0fVxyXG5cdC5wYW5lbF9pbWFnZV91cGxvYWRsaXN0IHtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdC8qIHBhZGRpbmc6IDMwcnB4IDBweCAxMHJweCAwcHg7ICovXHJcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cdFx0d2lkdGg6IDIwMHJweDtcclxuXHRcdGhlaWdodDogMjAwcnB4O1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0bGluZS1oZWlnaHQ6IDEwMCU7XHJcblx0XHRib3JkZXI6IDJycHggc29saWQgdHJhbnNwYXJlbnQ7XHJcblx0XHRib3JkZXItcmFkaXVzOiA4cnB4O1xyXG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcclxuXHRcdGJhY2tncm91bmQ6ICNmZmY7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHQvKiBib3gtc2hhZG93OiAwIDJycHggMnJweCByZ2JhKDAsIDAsIDAsIDAuMik7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IDhycHg7ICovXHJcblx0fVxyXG5cdC5wYW5lbF9pbWFnZV91cGxvYWRsaXN0IGltYWdle1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0fVxyXG5cdC5wYW5lbF90aXRsZXtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdHBhZGRpbmctbGVmdDogMzBycHg7XHJcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cdH1cclxuXHQucGFuZWxfdGl0bGUgcHtcclxuXHRcdGZvbnQtc2l6ZTogMTlweDtcclxuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdH1cclxuXHQucGFuZWxfdGl0bGUgc3BhbntcclxuXHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHR9XHJcblx0XHJcbjwvc3R5bGU+XHJcblxyXG48dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJjb250ZW50XCI+XHJcblx0XHQ8dmlldyBjbGFzcz1cImR2X2hlYWRcIj5cclxuXHRcdFx0PHVuaS1zZWN0aW9uIDp0aXRsZT1cInRpdGxlXCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJleGFtcGxlXCIgOnN0eWxlPVwieydiYWNrZ3JvdW5kLWNvbG9yJzpwYXJhbS53ZWxjb21lX3BhZ2UuYmtncm91bmRfY29sb3IsJ2hlaWdodCc6KHBhcmFtLndlbGNvbWVfcGFnZS5oZWlnaHQrMzApKydweCd9XCI+XHJcblx0XHRcdFx0XHQ8dW5pLXRyYW5zaXRpb24gcmVmPVwiYW5pXCIgY3VzdG9tLWNsYXNzPVwidHJhbnNpdGlvblwiIDpkdXJhdGlvbj1cImR1cmF0aW9uXCIgOm1vZGUtY2xhc3M9XCJtb2RlQ2xhc3NcIiA6c3R5bGVzPVwic3R5bGVzXCIgOnNob3c9XCJzaG93XCI+XHJcblx0XHRcdFx0XHRcdDxpbWFnZSA6c3JjPVwicGFyYW0ud2VsY29tZV9wYWdlLmltZ1wiIFxyXG5cdFx0XHRcdFx0XHRcdDpzdHlsZT1cInsnd2lkdGgnOnBhcmFtLndlbGNvbWVfcGFnZS53aWR0aCsncHgnLCdoZWlnaHQnOnBhcmFtLndlbGNvbWVfcGFnZS5oZWlnaHQrJ3B4J31cIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0PC91bmktdHJhbnNpdGlvbj5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdW5pLXNlY3Rpb24+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHRcclxuXHRcdDx2aWV3IGNsYXNzPVwiZHZfY29udGVudFwiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImR2X3BhbmVsXCIgdi1mb3I9XCIoaXRlbSxpbmRleCkgaW4gcGFyYW0uY2F0YWxvZ1wiIFxyXG5cdFx0XHQgIDpzdHlsZT1cInsnYmFja2dyb3VuZC1jb2xvcic6aXRlbS5ia2dyb3VuZF9jb2xvcn1cIiBAdGFwPVwib25WaWV3Q2xpY2soaXRlbSlcIlxyXG5cdFx0XHQ+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwYW5lbF9pbWFnZV91cGxvYWRsaXN0XCI+XHJcblx0XHRcdFx0XHQ8aW1hZ2UgOnNyYz1cIml0ZW0uaW1nXCI+PC9pbWFnZT5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwYW5lbF90aXRsZVwiPlxyXG5cdFx0XHRcdFx0PHA+e3tpdGVtLnRpdGxlfX08L3A+XHJcblx0XHRcdFx0XHQ8c3Bhbj57e2l0ZW0udGFza1F0eX19PC9zcGFuPlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcclxuXHRcdDwvdmlldz5cbiAgICA8L3ZpZXc+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxyXG5pbXBvcnQgQmFzZTY0IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvanMtYmFzZTY0L2Jhc2U2NC5qcydcclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIG1vZHVsZXM6e1xyXG5cdEJhc2U2NCxcclxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XHJcblx0ICB0aXRsZTon5paw5aKeJyxcbiAgICAgIHBhcmFtOiB7fSxcblx0ICBzaG93OiB0cnVlLFxyXG5cdCAgZHVyYXRpb246MCxcblx0ICBtb2RlQ2xhc3M6IFsnZmFkZScsICdzbGlkZS1sZWZ0J10sXG5cdCAgc3R5bGVzOiB7XHJcblx0XHRqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXHJcblx0XHRhbGlnbkl0ZW1zOiAnY2VudGVyJyxcclxuXHRcdHdpZHRoOiAnMTAwcHgnLFxyXG5cdFx0aGVpZ2h0OiAnMTAwcHgnLFxyXG5cdFx0Ym9yZGVyUmFkaXVzOiAnNXB4JyxcclxuXHRcdHRleHRBbGlnbjogJ2NlbnRlcicsXHJcblx0XHRiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcclxuXHQgIH0sXG4gICAgICB3aGVyZXM6JycsXG4gICAgICBvcmRlcmJ5OicnLFxuICAgIH07XG4gIH0sXHJcbiAgb25SZWFkeSgpIHtcclxuXHQvLyBjb25zb2xlLmxvZygxMTExKTtcblx0Ly8gdGhpcy4kcmVmcy5hbmkuaW5pdCh7XG5cdC8vIFx0ZHVyYXRpb246IDEwMDAsICAvL+i/h+a4oeWKqOeUu+aMgee7reaXtumXtO+8jOWNleS9jW1zXHRcblx0Ly8gXHR0aW1pbmdGdW5jdGlvbjogJ2xpbmVhcicsXG5cdC8vIFx0dHJhbnNmb3JtT3JpZ2luOiAnNTAlIDUwJScsXG5cdC8vIFx0ZGVsYXk6IDUwMCAgLy/liqjnlLvlu7bov5/ml7bpl7TvvIzljZXkvY0gbXNcdFxuXHQvLyB9KTtcclxuXHQvLyB0aGlzLiRyZWZzLmFuaS5zdGVwKHtcclxuXHQvLyBcdC8vIHRyYW5zbGF0ZVg6ICc1MHB4J1xyXG5cdC8vIH0se1xyXG5cdC8vIFx0ZHVyYXRpb246IDEwMDAsICAvL+i/h+a4oeWKqOeUu+aMgee7reaXtumXtO+8jOWNleS9jW1zXHRcclxuXHQvLyBcdHRpbWluZ0Z1bmN0aW9uOiAnbGluZWFyJyxcclxuXHQvLyBcdHRyYW5zZm9ybU9yaWdpbjogJzUwJSA1MCUnLFxyXG5cdC8vIFx0ZGVsYXk6IDUwMCAgLy/liqjnlLvlu7bov5/ml7bpl7TvvIzljZXkvY0gbXNcdFxyXG5cdC8vIH0pO1xyXG5cdC8vIC8vIOW8gOWni+aJp+ihjOWKqOeUu1xyXG5cdC8vIHRoaXMuJHJlZnMuYW5pLnJ1bigoKT0+e1xyXG5cdC8vIFx0Y29uc29sZS5sb2coJ+WKqOeUu+aUr+aMgeWujOavlScpXHJcblx0Ly8gfSk7XG4gIH0sXHJcbiAgYXN5bmMgb25Mb2FkKG9wdGlvbnMpIHtcclxuXHQvLyBjb25zb2xlLmxvZyhvcHRpb25zKTtcclxuXHR0aGlzLmR1cmF0aW9uPTIwMDA7XHJcblx0dW5pLnNldE5hdmlnYXRpb25CYXJUaXRsZSh7IHRpdGxlOiBvcHRpb25zLnRpdGxlbmFtZX0pOyAvL+iuvue9rumhtumDqOagh+mimCBcclxuXHR0aGlzLiRkYXRhLnRpdGxlID0gb3B0aW9ucy50aXRsZW5hbWU7XHJcblx0dGhpcy4kZGF0YS5wYXJhbSA9IEpTT04ucGFyc2Uob3B0aW9ucy5wYXJhbSk7XHJcblx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5wYXJhbSk7XHJcblx0Ly/liqDovb3liJ3lp4vnlYzpnaJcclxuXHRpZih0aGlzLiRkYXRhLnBhcmFtLndlbGNvbWVfcGFnZSl7XHJcblx0ICB0aGlzLiRkYXRhLnN0eWxlcy53aWR0aCA9IHRoaXMuJGRhdGEucGFyYW0ud2VsY29tZV9wYWdlLndpZHRoKydweCc7XHJcblx0ICB0aGlzLiRkYXRhLnN0eWxlcy5oZWlnaHQgPSB0aGlzLiRkYXRhLnBhcmFtLndlbGNvbWVfcGFnZS5oZWlnaHQrJ3B4JztcclxuXHQgIHRoaXMuJGRhdGEuc3R5bGVzLmJhY2tncm91bmRDb2xvciA9IHRoaXMuJGRhdGEucGFyYW0ud2VsY29tZV9wYWdlLmJrZ3JvdW5kX2NvbG9yO1xyXG5cdCAgXHJcblx0ICB0aGlzLiRkYXRhLnBhcmFtLndlbGNvbWVfcGFnZS5pbWcgPSB0aGlzLiRkYXRhLnBhcmFtLndlbGNvbWVfcGFnZS5pbWcucmVwbGFjZSgvIC9nLCcrJyk7XHJcblx0ICB0aGlzLiRkYXRhLnBhcmFtLndlbGNvbWVfcGFnZS53aWR0aCA9IHBhcnNlSW50KHRoaXMuJGRhdGEucGFyYW0ud2VsY29tZV9wYWdlLndpZHRoKTtcclxuXHQgIHRoaXMuJGRhdGEucGFyYW0ud2VsY29tZV9wYWdlLmhlaWdodCA9IHBhcnNlSW50KHRoaXMuJGRhdGEucGFyYW0ud2VsY29tZV9wYWdlLmhlaWdodCk7XHJcblx0ICB0aGlzLiRkYXRhLnBhcmFtLmNhdGFsb2cuZm9yRWFjaChhc3luYyAoZWxlLGluZGV4KSA9PiB7XHJcblx0XHRlbGUuaW1nID0gZWxlLmltZy5yZXBsYWNlKC8gL2csJysnKTtcclxuXHRcdGVsZS50YXNrUXR5PTA7XHJcblx0XHRhd2FpdCB0aGlzLmFwcEdldEluZm8oZWxlLmZ1bmN0aW9uX2RlZl9pZCxpbmRleCk7XHJcblx0ICB9KTtcclxuXHR9XHJcblx0XHJcbiAgfSxcdFxuICBtZXRob2RzOiB7XHJcblx0Ly/ojrflj5blip/og73ngrnkv6Hmga9cclxuXHRhcHBHZXRJbmZvKGFwcGlkLGluZGV4KXtcclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIganNvbiA9e1xyXG5cdFx0XHRhcHBfaWQ6IFthcHBpZF1cclxuXHRcdH07XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYXBwR2V0SW5mbycsanNvbikudGhlbihhc3luYyBzdWNjZXNzPT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRpZiAoc3VjY2Vzcy5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIGFwcCA9IHN1Y2Nlc3MucmVzdWx0WzBdO1xyXG5cdFx0XHRcdHZhciBwYXJhbVN0ciA9IGFwcC5wYXJhbTtcclxuXHRcdFx0XHR2YXIgYXBwTmFtZSA9IGFwcC5uYW1lO1xyXG5cdFx0XHRcdHZhciBkZWZDb2RlID0gYXBwLmRlZl9jb2RlO1xyXG5cdFx0XHRcdHZhciBwYXJhbSA9IFwiXCI7XHJcblx0XHRcdFx0aWYocGFyYW1TdHIpe1xyXG5cdFx0XHRcdCAgICAvL21vYm94MueahHBhcmFt5pivanNvbuWtl+espuS4slxyXG5cdFx0XHRcdCAgICBwYXJhbSA9IHBhcmFtU3RyLnJlcGxhY2UoL1xcXFwvZyxcIlwiKTtcclxuXHRcdFx0XHQgICAgLy9tb2JveDPnmoRwYXJhbeaYr2Jhc2U2NOWtl+espuS4slxyXG5cdFx0XHRcdCAgICBpZighcGFyYW1TdHIuaW5jbHVkZXMoJ1wiJykpIHBhcmFtID0gQmFzZTY0LmRlY29kZShwYXJhbVN0cik7XHJcblx0XHRcdFx0fVx0ICBcclxuXHRcdFx0XHRpZighcGFyYW0pe1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OmRlZkNvZGUrXCLor6Xlip/og73ngrnmnKrphY3nva7lj4LmlbDvvIzor7fph43mlrDphY3nva7lj4LmlbDvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy4kZGF0YS5wYXJhbS5jYXRhbG9nW2luZGV4XS5wYXJhbT1wYXJhbTtcclxuXHRcdFx0XHR0aGlzLiRkYXRhLnBhcmFtLmNhdGFsb2dbaW5kZXhdLmFwcE5hbWU9YXBwTmFtZTtcclxuXHRcdFx0XHRwYXJhbSA9IEpTT04ucGFyc2UocGFyYW0pO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdCR0aGlzLm9yZGVyYnkgPSBwYXJhbS5PcmRlcj9wYXJhbS5PcmRlcjonVF9DUkVBVEUgRGVzYyc7XHJcblx0XHRcdFx0aWYocGFyYW0uUXVlcnlfRXZlbnQpe1xyXG5cdFx0XHRcdCAgICBhd2FpdCAkdGhpcy5vblNlYXJDaGFuZ2UocGFyYW0uRGF0YUNscy5pZCxwYXJhbS5RdWVyeV9FdmVudC5pZCxpbmRleCk7XHJcblx0XHRcdFx0fSBlbHNle1xyXG5cdFx0XHRcdCAgJHRoaXMud2hlcmVzID0gcGFyYW0uQ29uZGl0aW9uO1xyXG5cdFx0XHRcdCAgYXdhaXQgJHRoaXMubG9hZERhdGFHZXRMaXN0KHBhcmFtLkRhdGFDbHMuaWQsaW5kZXgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdC8vIOaJp+ihjOafpeivouS6i+S7tlxyXG5cdGFzeW5jIG9uU2VhckNoYW5nZShjbHNpZCxldmVudGlkLGluZGV4KSB7XHJcblx0IHRyeSB7XHJcblx0ICAgIGlmIChldmVudC5pZCkge1xyXG5cdCBcdCAgdmFyICR0aGlzID0gdGhpcztcclxuXHQgXHQgIHZhciBkYXRhSW5mbz17XHJcblx0ICAgICAgICBlZF90eXBlOiAwLFxyXG5cdCAgICAgICAgc3RhcnRfdHJhbnNhY3Rpb246IHRydWUsXHJcblx0XHQgICAgY2xhc3NfaWQ6IGNsc2lkLFxyXG5cdFx0XHRldmVudF9pZDogZXZlbnRpZCxcclxuXHQgICAgICB9O1xyXG5cdCBcdCAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3J1bkN1c3RvbUV2ZW50JyxkYXRhSW5mbykudGhlbihyZXQ9PntcclxuXHQgXHQgIFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHQgXHQgIFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0IFx0XHRcdHZhciByZXN1bHQgPSByZXQucmVzdWx0OyBcclxuXHQgXHRcdFx0aWYgKHJlc3VsdC5yZXQgIT0gMCkge1xyXG5cdCBcdFx0XHQgICAgdmFyIHRpcCA9IHJlc3VsdC5lcnJfaW5mbyA/IHR5cGVvZiByZXN1bHQuZXJyX2luZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuZXJyX2luZm8gOiByZXN1bHQuZXJyX2luZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdCBcdFx0XHQgICAgaWYgKHJlc3VsdC5yZXQgPT0gODAxKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgXHRcdFx0ICAgIGVsc2UgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXArJyzmj5DnpLo6JytyZXN1bHQucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCBcdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHQgXHRcdFx0fWVsc2V7XHJcblx0IFx0XHRcdFx0dmFyIHRpcCA9IHJlc3VsdC5pbmZvID8gdHlwZW9mIHJlc3VsdC5pbmZvID09ICdzdHJpbmcnID8gcmVzdWx0LmluZm8gOiByZXN1bHQuaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0IFx0XHRcdFx0aWYgKHRpcCkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0IFx0XHRcdFxyXG5cdCBcdFx0XHRcdGlmKHJlc3VsdC5yZXN1bHRfdHlwZSA9PSAwICYmIHJlc3VsdC5hY3Rpb24pe1xyXG5cdCBcdFx0XHRcdFx0cmVzdWx0LmFjdGlvbi5mb3JFYWNoKGl0ZW09PntcclxuXHQgXHRcdFx0XHRcdFx0aWYoaXRlbS5hY3Rpb25fdHlwZSA9PSBcInNldF9xdWVyeV9jb25kaXRpb25cIil7IFxyXG5cdCBcdFx0XHRcdFx0XHQgICAgdmFyIHZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHQgXHRcdFx0XHRcdFx0ICAgICR0aGlzLndoZXJlcyA9IHZhbHVlLmNvbmRpdGlvbjtcclxuXHQgXHRcdFx0XHRcdFx0ICAgICR0aGlzLm9yZGVyYnkgPSB2YWx1ZS5vcmRlcj92YWx1ZS5vcmRlcjokdGhpcy5vcmRlcmJ5O1xyXG5cdCBcdFx0XHRcdFx0XHQgICAgJHRoaXMubG9hZERhdGFHZXRMaXN0KGNsc2lkLGluZGV4KTtcclxuXHQgXHRcdFx0XHRcdFx0fSBcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0IFx0XHRcdFx0fWVsc2V7XHJcblx0IFx0XHRcdFx0XHQvLyB0aGlzLmRldGFpbDJTdHlsZURlZkxpc3Q9W107XHJcblx0IFx0XHRcdFx0XHRpZihyZXN1bHQuaW5mbyl7XHJcblx0IFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpyZXN1bHQuaW5mbyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgXHRcdFx0XHRcdH1cclxuXHQgXHRcdFx0XHR9XHJcblx0IFx0XHRcdH1cclxuXHQgXHQgIFx0XHRcclxuXHQgXHQgIFx0fWVsc2V7XHJcblx0IFx0ICBcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xXCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgXHQgIFx0fVxyXG5cdCBcdCAgfSkuY2F0Y2goZXg9PntcclxuXHQgXHQgIFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdCBcdCAgXHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCBcdCAgfSk7XHJcblx0ICAgICB9XHJcblx0IH0gY2F0Y2ggKGV4KSB7XHJcblx0ICAgICB2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0IFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjJcIixjb250ZW50Olwi5omn6KGM4oCc5p+l6K+i5LqL5Lu24oCd5LqL5Lu25aSx6LSl77yaXCIgKyB0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0IFx0XHJcblx0IH1cclxuXHR9LFxyXG5cdC8v5p+l6K+i5pWw5o2u57G75pWw5o2u5L+h5oGvXHJcblx0YXN5bmMgbG9hZERhdGFHZXRMaXN0KGNsc2lkLGluZGV4KXsgICBcclxuXHQgIHRyeXtcclxuXHQgICAgLy/mnaHku7bmn6Xor6JcclxuXHQgICAgdmFyIGNvbmRpdGlvbiA9IHRoaXMud2hlcmVzO1xyXG5cdCAgICAvLyBjb25zb2xlLmxvZyhjb25kaXRpb24pO1xyXG5cdCAgICAvLyBjb25zb2xlLmxvZyh0aGlzLm9yZGVyYnkpO1xyXG5cdCAgICB2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdFx0Y2xhc3NfaWQ6IGNsc2lkLFxyXG5cdFx0XHRhdHRyczogW10sXHJcblx0XHRcdGNvbmRpdGlvbjogdGhpcy50b1doZXJlQmFzZTY0U3RyaW5nKFwiXCIrIGNvbmRpdGlvbiArXCJcIiksIFxyXG5cdFx0XHRwcmpfcmVsX3R5cGU6IFwiXCIsXHJcblx0XHRcdG9yZGVyX2J5OiB0aGlzLm9yZGVyYnksXHJcblx0XHRcdHBhZ2Vfc2l6ZTogOTk5OTksXHJcblx0XHRcdHBhZ2U6IDEsXHJcblx0XHRcdHF1ZXJ5X2lkOiAnJyxcclxuXHRcdH07XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZGF0YU9ialF1ZXJ5JyxkYXRhSW5mbykudGhlbihyZXQ9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0aWYocmV0LnJlc3VsdCl7XHJcblx0XHRcdFx0XHQkdGhpcy4kZGF0YS5wYXJhbS5jYXRhbG9nW2luZGV4XS50YXNrUXR5PXJldC5yZXN1bHQub2JqX2xpc3QubGVuZ3RoO1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEucGFyYW0uY2F0YWxvZ1tpbmRleF0pO1xyXG5cdFx0XHRcdFx0dmFyIHBhcmFtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSgkdGhpcy4kZGF0YS5wYXJhbSkpO1xyXG5cdFx0XHRcdFx0JHRoaXMuJGRhdGEucGFyYW09W107XHJcblx0XHRcdFx0XHQkdGhpcy4kZGF0YS5wYXJhbSA9IHBhcmFtO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yXCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0ICB9IGNhdGNoIChleCkge1xyXG5cdCAgICB2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMlwiLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCAgfVxyXG5cdH0sXHJcblx0XHJcblx0Ly/ngrnlh7vmnaHnm67miZPlvIAzMjAwXHJcblx0b25WaWV3Q2xpY2soZGF0YSl7XHJcblx0XHRpZighZGF0YS5mdW5jdGlvbl9kZWZfaWQpe1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLor6XmnaHnm67mnKrlhbPogZTlip/og73ngrnvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHVuaS5uYXZpZ2F0ZVRvKHtcclxuXHRcdFx0dXJsOicuLi9tb2RhbC8zMjAwP3BhcmFtPScrZGF0YS5wYXJhbStcIiZ0aXRsZW5hbWU9XCIrZGF0YS5hcHBOYW1lLFxyXG5cdFx0XHRldmVudHM6IHtcclxuXHRcdFx0XHQvLyDkuLrmjIflrprkuovku7bmt7vliqDkuIDkuKrnm5HlkKzlmajvvIzojrflj5booqvmiZPlvIDpobXpnaLkvKDpgIHliLDlvZPliY3pobXpnaLnmoTmlbDmja5cclxuXHRcdFx0XHR2aWV3XzMyMDE6IGZ1bmN0aW9uKGRhdGEpIHtcclxuXHRcdFx0XHQgICAgY29uc29sZS5sb2coZGF0YSk7XHJcblx0XHRcdFx0XHQvL+WIt+aWsOW9k+WJjemhtemdolxyXG5cdFx0XHRcdFx0Ly8gbG9jYXRpb24ucmVsb2FkKCk7XHJcblx0XHRcdFx0XHR1bmkucmVkaXJlY3RUbyh7XHJcblx0XHRcdFx0XHRcdHVybDonLi4vbW9kYWwvMzIwMT9wYXJhbT0nK0pTT04uc3RyaW5naWZ5KCR0aGlzLiRkYXRhLnBhcmFtKStcIiZ0aXRsZW5hbWU9XCIrJHRoaXMuJGRhdGEudGl0bGVcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cdH0sXHRcdFx0XHJcblx0XHJcblx0XHJcblx0Y2FuY2VsKGUpeyAvL+WPlua2iFxyXG5cdFx0dW5pLm5hdmlnYXRlQmFjayh7XHJcblx0XHRcdGRlbHRhOjEgLC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxyXG5cdFx0fSk7XHJcblx0fSxcclxuXHQvKipcclxuXHQgKiDlj6rmlK/mjIFbXCJjb2x1bW4xPSdBJyBvciBjb2x1bW4yPSdCJ1wiLCBcImNvbHVtbjM9J0MnIGFuZCBjb2x1bW40PSdEJ1wiLCBcImNvbHVtbjU9J0UnXCJd6L+Z56eN5qC85byPXHJcblx0ICoge1xyXG5cdCAqICAgICBcIm1vZGVsXCI6IDAgLyAxLFxyXG5cdCAqICAgICBcImNvbmRpdGlvblwiOlxyXG5cdCAqICAgICBbXHJcblx0ICogICAgICAgICBbXHJcblx0ICogICAgICAgICAgICAgeyB9LFxyXG5cdCAqICAgICAgICAgICAgIHsgfSxcclxuXHQgKiAgICAgICAgICAgICB7IH1cclxuXHQgKiAgICAgICAgIF0sXHJcblx0ICogICAgICAgICBbXHJcblx0ICogICAgICAgICAgICAgeyB9XHJcblx0ICogICAgICAgICBdLFxyXG5cdCAqICAgICAgICAgW1xyXG5cdCAqICAgICAgICAgICAgIHsgfVxyXG5cdCAqICAgICAgICAgXVxyXG5cdCAqICAgICBdXHJcblx0ICogfVxyXG5cdCAqL1xyXG5cdHRvV2hlcmVCYXNlNjRTdHJpbmcobGlzdCkge1xyXG5cdCAgICBpZiAodHlwZW9mIGxpc3QgPT0gJ3N0cmluZycpIGxpc3QgPSBbbGlzdF1cclxuXHQgICAgdmFyIHNxbCA9IFtdXHJcblx0ICAgIHZhciBzZXBzID0gWycgbm90IGluJywgJyBpbicsICc8PicsICchPScsICc8PScsICc+PScsICc8JywgJz0nLCAnPicsICcgbGlrZSddXHJcblx0ICAgIGxpc3QuZm9yRWFjaChscyA9PiB7XHJcblx0ICAgICAgICB2YXIgd2hlcmUgPSBscy50cmltKCkudG9Mb3dlckNhc2UoKVxyXG5cdCAgICAgICAgaWYgKHdoZXJlLnN0YXJ0c1dpdGgoJygnKSAmJiB3aGVyZS5lbmRzV2l0aCgnKScpKSB3aGVyZSA9IHdoZXJlLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKVxyXG5cdCAgICAgICAgaWYgKHdoZXJlLmluY2x1ZGVzKCcgYW5kICcpKSB7XHJcblx0ICAgICAgICAgICAgLy8g5LqM57qnYW5k5pS+5Zyo56ys5LiA57qn5pWw57uE5LitXHJcblx0ICAgICAgICAgICAgd2hlcmUuc3BsaXQoJyBhbmQgJykuZm9yRWFjaChsaSA9PiB7XHJcblx0ICAgICAgICAgICAgICAgIHZhciBsID0gbGkudHJpbSgpXHJcblx0ICAgICAgICAgICAgICAgIGlmIChsLnN0YXJ0c1dpdGgoJygnKSAmJiBsLmVuZHNXaXRoKCcpJykpIGwgPSBsLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKVxyXG5cdCAgICAgICAgICAgICAgICB2YXIgc2VwID0gJydcclxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXBzLmxlbmd0aDsgaSsrKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICBpZiAobC5pbmNsdWRlcyhzZXBzW2ldKSkge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHNlcCA9IHNlcHNbaV1cclxuXHQgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG5cdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgIGlmIChzZXApIHtcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBsLnNwbGl0KHNlcClcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBmaWVsZCA9IHZhbHVlc1swXT8udHJpbSgpLnJlcGxhY2UoL15cXFsvLCAnJykucmVwbGFjZSgvXFxdJC8sICcnKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gJydcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBvcCA9IHNlcC50cmltKClcclxuXHRcclxuXHQgICAgICAgICAgICAgICAgICAgIGlmIChbJyBpbicsICcgbm90IGluJ10uaW5jbHVkZXMoc2VwKSAmJiB2YWx1ZXNbMV0uaW5jbHVkZXMoJ3NlbGVjdCAnKSAmJiB2YWx1ZXNbMV0uaW5jbHVkZXMoJyBmcm9tICcpKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBsLnJlcGxhY2UoZmllbGQsICcnKS5yZXBsYWNlKC9eXFxzKihpbnxub3QgaW4pXFxzKi8sICcnKS50cmltKClcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnKCcpICYmIHZhbHVlLmVuZHNXaXRoKCcpJykpIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXlxcKC8sICcnKS5yZXBsYWNlKC9cXCkkLywgJycpLnRyaW0oKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbMV0/LnRyaW0oKS5yZXBsYWNlKC9eXFwnLywgJycpLnJlcGxhY2UoL1xcJyQvLCAnJylcclxuXHRcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAoWydpbicsICdub3QgaW4nXS5pbmNsdWRlcyhvcCkpIHtcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJylcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdCgnLCcpLm1hcCh2ID0+IHYudHJpbSgpLnJlcGxhY2UoL15cXCcvLCAnJykucmVwbGFjZSgvXFwnJC8sICcnKSlcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgICAgICBzcWwucHVzaChbeyBmaWVsZCwgdmFsdWUsIG9wIH1dKVxyXG5cdCAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgfSlcclxuXHQgICAgICAgIH1cclxuXHQgICAgICAgIGVsc2UgaWYgKHdoZXJlLmluY2x1ZGVzKCcgb3IgJykpIHtcclxuXHQgICAgICAgICAgICAvLyDkuoznuqdvcuaUvuWcqOesrOS6jOe6p+WQjOS4gOe7hOaVsOe7hOS4rVxyXG5cdCAgICAgICAgICAgIHZhciBzID0gW11cclxuXHQgICAgICAgICAgICB3aGVyZS5zcGxpdCgnIG9yICcpLmZvckVhY2gobGkgPT4ge1xyXG5cdCAgICAgICAgICAgICAgICB2YXIgbCA9IGxpLnRyaW0oKVxyXG5cdCAgICAgICAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCcoJykgJiYgbC5lbmRzV2l0aCgnKScpKSBsID0gbC5yZXBsYWNlKC9eXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJylcclxuXHQgICAgICAgICAgICAgICAgdmFyIHNlcCA9ICcnXHJcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Vwcy5sZW5ndGg7IGkrKykge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKGwuaW5jbHVkZXMoc2Vwc1tpXSkpIHtcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzZXAgPSBzZXBzW2ldXHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuXHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICBpZiAoc2VwKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gbC5zcGxpdChzZXApXHJcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZmllbGQgPSB2YWx1ZXNbMF0/LnRyaW0oKS5yZXBsYWNlKC9eXFxbLywgJycpLnJlcGxhY2UoL1xcXSQvLCAnJylcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9ICcnXHJcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgb3AgPSBzZXAudHJpbSgpXHJcblx0XHJcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoWycgaW4nLCAnIG5vdCBpbiddLmluY2x1ZGVzKHNlcCkgJiYgdmFsdWVzWzFdLmluY2x1ZGVzKCdzZWxlY3QgJykgJiYgdmFsdWVzWzFdLmluY2x1ZGVzKCcgZnJvbSAnKSkge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbC5yZXBsYWNlKGZpZWxkLCAnJykucmVwbGFjZSgvXlxccyooaW58bm90IGluKVxccyovLCAnJykudHJpbSgpXHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJygnKSAmJiB2YWx1ZS5lbmRzV2l0aCgnKScpKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKS50cmltKClcclxuXHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVzWzFdPy50cmltKCkucmVwbGFjZSgvXlxcJy8sICcnKS5yZXBsYWNlKC9cXCckLywgJycpXHJcblx0XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFsnaW4nLCAnbm90IGluJ10uaW5jbHVkZXMob3ApKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXlxcKC8sICcnKS5yZXBsYWNlKC9cXCkkLywgJycpXHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJywnKS5tYXAodiA9PiB2LnRyaW0oKS5yZXBsYWNlKC9eXFwnLywgJycpLnJlcGxhY2UoL1xcJyQvLCAnJykpXHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICAgICAgc3FsLnB1c2goW3sgZmllbGQsIHZhbHVlLCBvcCB9XSlcclxuXHQgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgIH0pXHJcblx0ICAgICAgICAgICAgc3FsLnB1c2gocylcclxuXHQgICAgICAgIH1cclxuXHQgICAgICAgIGVsc2Uge1xyXG5cdCAgICAgICAgICAgIHZhciBsaSA9IHdoZXJlXHJcblx0ICAgICAgICAgICAgLy8g5Y2V5LiA5p+l6K+i5p2h5Lu255u05o6l5pS+5Zyo56ys5LiA57qn5pWw57uE5LitXHJcblx0ICAgICAgICAgICAgdmFyIGwgPSBsaS50cmltKClcclxuXHQgICAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCcoJykgJiYgbC5lbmRzV2l0aCgnKScpKSBsID0gbC5yZXBsYWNlKC9eXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJylcclxuXHQgICAgICAgICAgICB2YXIgc2VwID0gJydcclxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcHMubGVuZ3RoOyBpKyspIHtcclxuXHQgICAgICAgICAgICAgICAgaWYgKGwuaW5jbHVkZXMoc2Vwc1tpXSkpIHtcclxuXHQgICAgICAgICAgICAgICAgICAgIHNlcCA9IHNlcHNbaV1cclxuXHQgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcblx0ICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgaWYgKHNlcCkge1xyXG5cdCAgICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gbC5zcGxpdChzZXApXHJcblx0ICAgICAgICAgICAgICAgIHZhciBmaWVsZCA9IHZhbHVlc1swXT8udHJpbSgpLnJlcGxhY2UoL15cXFsvLCAnJykucmVwbGFjZSgvXFxdJC8sICcnKVxyXG5cdCAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSAnJ1xyXG5cdCAgICAgICAgICAgICAgICB2YXIgb3AgPSBzZXAudHJpbSgpXHJcblx0XHJcblx0ICAgICAgICAgICAgICAgIGlmIChbJyBpbicsICcgbm90IGluJ10uaW5jbHVkZXMoc2VwKSAmJiB2YWx1ZXNbMV0uaW5jbHVkZXMoJ3NlbGVjdCAnKSAmJiB2YWx1ZXNbMV0uaW5jbHVkZXMoJyBmcm9tICcpKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGwucmVwbGFjZShmaWVsZCwgJycpLnJlcGxhY2UoL15cXHMqKGlufG5vdCBpbilcXHMqLywgJycpLnRyaW0oKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJygnKSAmJiB2YWx1ZS5lbmRzV2l0aCgnKScpKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKS50cmltKClcclxuXHQgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICBlbHNlIHtcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVzWzFdPy50cmltKCkucmVwbGFjZSgvXlxcJy8sICcnKS5yZXBsYWNlKC9cXCckLywgJycpXHJcblx0XHJcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoWydpbicsICdub3QgaW4nXS5pbmNsdWRlcyhvcCkpIHtcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJywnKS5tYXAodiA9PiB2LnRyaW0oKS5yZXBsYWNlKC9eXFwnLywgJycpLnJlcGxhY2UoL1xcJyQvLCAnJykpXHJcblx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgc3FsLnB1c2goW3sgZmllbGQsIHZhbHVlLCBvcCB9XSlcclxuXHQgICAgICAgICAgICB9XHJcblx0ICAgICAgICB9XHJcblx0ICAgIH0pXHJcblx0XHJcblx0ICAgIGlmIChzcWwubGVuZ3RoID4gMClcclxuXHQgICAgICAgIHJldHVybiBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KHtcclxuXHQgICAgICAgICAgICBtb2RlbDogMSxcclxuXHQgICAgICAgICAgICBjb25kaXRpb246IHNxbFxyXG5cdCAgICAgICAgfSkpXHJcblx0ICAgIGVsc2VcclxuXHQgICAgcmV0dXJuICcnXHJcblx0fSxcclxuXHRcclxuICB9LFxufTtcbjwvc2NyaXB0PlxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///175\n"); |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 57));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 59));\nvar _base = _interopRequireDefault(__webpack_require__(/*! ../../components/js-base64/base64.js */ 65));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n modules: {\n Base64: _base.default\n },\n data: function data() {\n return {\n title: '新增',\n param: {},\n show: true,\n duration: 0,\n modeClass: ['fade', 'slide-left'],\n styles: {\n justifyContent: 'center',\n alignItems: 'center',\n width: '100px',\n height: '100px',\n borderRadius: '5px',\n textAlign: 'center',\n backgroundColor: '#fff'\n },\n wheres: '',\n orderby: ''\n };\n },\n onReady: function onReady() {\n // console.log(1111);\n // this.$refs.ani.init({\n // \tduration: 1000, //过渡动画持续时间,单位ms\t\n // \ttimingFunction: 'linear',\n // \ttransformOrigin: '50% 50%',\n // \tdelay: 500 //动画延迟时间,单位 ms\t\n // });\n // this.$refs.ani.step({\n // \t// translateX: '50px'\n // },{\n // \tduration: 1000, //过渡动画持续时间,单位ms\t\n // \ttimingFunction: 'linear',\n // \ttransformOrigin: '50% 50%',\n // \tdelay: 500 //动画延迟时间,单位 ms\t\n // });\n // // 开始执行动画\n // this.$refs.ani.run(()=>{\n // \tconsole.log('动画支持完毕')\n // });\n },\n onLoad: function onLoad(options) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // console.log(options);\n _this.duration = 2000;\n uni.setNavigationBarTitle({\n title: options.titlename\n }); //设置顶部标题 \n _this.$data.title = options.titlename;\n _this.$data.param = JSON.parse(options.param);\n __f__(\"log\", _this.$data.param, \" at pages/modal/3201.vue:180\");\n //加载初始界面\n if (_this.$data.param.welcome_page) {\n _this.$data.styles.width = _this.$data.param.welcome_page.width + 'px';\n _this.$data.styles.height = _this.$data.param.welcome_page.height + 'px';\n _this.$data.styles.backgroundColor = _this.$data.param.welcome_page.bkground_color;\n _this.$data.param.welcome_page.img = _this.$data.param.welcome_page.img.replace(/ /g, '+');\n _this.$data.param.welcome_page.width = parseInt(_this.$data.param.welcome_page.width);\n _this.$data.param.welcome_page.height = parseInt(_this.$data.param.welcome_page.height);\n _this.$data.param.catalog.forEach( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(ele, index) {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n ele.img = ele.img.replace(/ /g, '+');\n ele.taskQty = 0;\n _context.next = 4;\n return _this.appGetInfo(ele.function_def_id, index);\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n }\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n methods: {\n //获取功能点信息\n appGetInfo: function appGetInfo(appid, index) {\n var _this2 = this;\n var $this = this;\n var json = {\n app_id: [appid]\n };\n this.$store.dispatch('appGetInfo', json).then( /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(success) {\n var app, paramStr, appName, defCode, param;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(success.err_code == 0)) {\n _context3.next = 24;\n break;\n }\n app = success.result[0];\n paramStr = app.param;\n appName = app.name;\n defCode = app.def_code;\n param = \"\";\n if (paramStr) {\n //mobox2的param是json字符串\n param = paramStr.replace(/\\\\/g, \"\");\n //mobox3的param是base64字符串\n if (!paramStr.includes('\"')) param = _base.default.decode(paramStr);\n }\n if (param) {\n _context3.next = 10;\n break;\n }\n uni.showModal({\n title: \"提示\",\n content: defCode + \"该功能点未配置参数,请重新配置参数!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return _context3.abrupt(\"return\");\n case 10:\n _this2.$data.param.catalog[index].param = param;\n _this2.$data.param.catalog[index].appName = appName;\n param = JSON.parse(param);\n $this.orderby = param.Order ? param.Order : 'T_CREATE Desc';\n if (!param.Query_Event) {\n _context3.next = 19;\n break;\n }\n _context3.next = 17;\n return $this.onSearChange(param.DataCls.id, param.Query_Event.id, index);\n case 17:\n _context3.next = 22;\n break;\n case 19:\n $this.wheres = param.Condition;\n _context3.next = 22;\n return $this.loadDataGetList(param.DataCls.id, index);\n case 22:\n _context3.next = 25;\n break;\n case 24:\n uni.showModal({\n title: \"提示\",\n content: success.msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n case 25:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n return function (_x3) {\n return _ref2.apply(this, arguments);\n };\n }()).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n // 执行查询事件\n onSearChange: function onSearChange(clsid, eventid, index) {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var $this, dataInfo, tip;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n try {\n if (eventid) {\n $this = _this3;\n dataInfo = {\n ed_type: 0,\n start_transaction: true,\n class_id: clsid,\n event_id: eventid\n };\n _this3.$store.dispatch('runCustomEvent', dataInfo).then(function (ret) {\n __f__(\"log\", ret, \" at pages/modal/3201.vue:254\");\n if (ret.err_code == 0) {\n var result = ret.result;\n if (result.ret != 0) {\n var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n if (result.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + result.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n if (result.result_type == 0 && result.action) {\n result.action.forEach(function (item) {\n if (item.action_type == \"set_query_condition\") {\n var value = item.value;\n $this.wheres = value.condition;\n $this.orderby = value.order ? value.order : $this.orderby;\n $this.loadDataGetList(clsid, index);\n }\n });\n } else {\n // this.detail2StyleDefList=[];\n if (result.info) {\n uni.showModal({\n title: \"提示\",\n content: result.info,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误1\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误1.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n }\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误1.2\",\n content: \"执行“查询事件”事件失败:\" + tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n //查询数据类数据信息\n loadDataGetList: function loadDataGetList(clsid, index) {\n var _this4 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var condition, $this, dataInfo, tip;\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n try {\n //条件查询\n condition = _this4.wheres; // console.log(condition);\n // console.log(this.orderby);\n $this = _this4;\n dataInfo = {\n class_id: clsid,\n attrs: [],\n condition: _this4.toWhereBase64String(\"\" + condition + \"\"),\n prj_rel_type: \"\",\n order_by: _this4.orderby,\n page_size: 99999,\n page: 1,\n query_id: ''\n };\n _this4.$store.dispatch('dataObjQuery', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n if (ret.result) {\n $this.$data.param.catalog[index].taskQty = ret.result.obj_list.length;\n // console.log($this.$data.param.catalog[index]);\n var param = JSON.parse(JSON.stringify($this.$data.param));\n $this.$data.param = [];\n $this.$data.param = param;\n }\n } else {\n uni.showModal({\n title: \"错误2\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误2.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"错误2.2\",\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }))();\n },\n //点击条目打开3200\n onViewClick: function onViewClick(data) {\n if (!data.function_def_id) {\n uni.showModal({\n title: \"提示\",\n content: \"该条目未关联功能点!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n var $this = this;\n uni.navigateTo({\n url: '../modal/3200?param=' + data.param + \"&titlename=\" + data.appName,\n events: {\n // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据\n view_3201: function view_3201(data) {\n __f__(\"log\", data, \" at pages/modal/3201.vue:351\");\n //刷新当前页面\n // location.reload();\n uni.redirectTo({\n url: '../modal/3201?param=' + JSON.stringify($this.$data.param) + \"&titlename=\" + $this.$data.title\n });\n }\n }\n });\n },\n cancel: function cancel(e) {\n //取消\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\n },\n /**\r\n * 只支持[\"column1='A' or column2='B'\", \"column3='C' and column4='D'\", \"column5='E'\"]这种格式\r\n * {\r\n * \"model\": 0 / 1,\r\n * \"condition\":\r\n * [\r\n * [\r\n * { },\r\n * { },\r\n * { }\r\n * ],\r\n * [\r\n * { }\r\n * ],\r\n * [\r\n * { }\r\n * ]\r\n * ]\r\n * }\r\n */\n toWhereBase64String: function toWhereBase64String(list) {\n if (typeof list == 'string') list = [list];\n var sql = [];\n var seps = [' not in', ' in', '<>', '!=', '<=', '>=', '<', '=', '>', ' like'];\n list.forEach(function (ls) {\n var where = ls.trim().toLowerCase();\n if (where.startsWith('(') && where.endsWith(')')) where = where.replace(/^\\(/, '').replace(/\\)$/, '');\n if (where.includes(' and ')) {\n // 二级and放在第一级数组中\n where.split(' and ').forEach(function (li) {\n var l = li.trim();\n if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\\(/, '').replace(/\\)$/, '');\n var sep = '';\n for (var i = 0; i < seps.length; i++) {\n if (l.includes(seps[i])) {\n sep = seps[i];\n break;\n }\n }\n if (sep) {\n var _values$;\n var values = l.split(sep);\n var field = (_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.trim().replace(/^\\[/, '').replace(/\\]$/, '');\n var value = '';\n var op = sep.trim();\n if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) {\n value = l.replace(field, '').replace(/^\\s*(in|not in)\\s*/, '').trim();\n if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\\(/, '').replace(/\\)$/, '').trim();\n } else {\n var _values$2;\n value = (_values$2 = values[1]) === null || _values$2 === void 0 ? void 0 : _values$2.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n if (['in', 'not in'].includes(op)) {\n value = value.replace(/^\\(/, '').replace(/\\)$/, '');\n value = value.split(',').map(function (v) {\n return v.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n });\n }\n }\n sql.push([{\n field: field,\n value: value,\n op: op\n }]);\n }\n });\n } else if (where.includes(' or ')) {\n // 二级or放在第二级同一组数组中\n var s = [];\n where.split(' or ').forEach(function (li) {\n var l = li.trim();\n if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\\(/, '').replace(/\\)$/, '');\n var sep = '';\n for (var i = 0; i < seps.length; i++) {\n if (l.includes(seps[i])) {\n sep = seps[i];\n break;\n }\n }\n if (sep) {\n var _values$3;\n var values = l.split(sep);\n var field = (_values$3 = values[0]) === null || _values$3 === void 0 ? void 0 : _values$3.trim().replace(/^\\[/, '').replace(/\\]$/, '');\n var value = '';\n var op = sep.trim();\n if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) {\n value = l.replace(field, '').replace(/^\\s*(in|not in)\\s*/, '').trim();\n if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\\(/, '').replace(/\\)$/, '').trim();\n } else {\n var _values$4;\n value = (_values$4 = values[1]) === null || _values$4 === void 0 ? void 0 : _values$4.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n if (['in', 'not in'].includes(op)) {\n value = value.replace(/^\\(/, '').replace(/\\)$/, '');\n value = value.split(',').map(function (v) {\n return v.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n });\n }\n }\n sql.push([{\n field: field,\n value: value,\n op: op\n }]);\n }\n });\n sql.push(s);\n } else {\n var li = where;\n // 单一查询条件直接放在第一级数组中\n var l = li.trim();\n if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\\(/, '').replace(/\\)$/, '');\n var sep = '';\n for (var i = 0; i < seps.length; i++) {\n if (l.includes(seps[i])) {\n sep = seps[i];\n break;\n }\n }\n if (sep) {\n var _values$5;\n var values = l.split(sep);\n var field = (_values$5 = values[0]) === null || _values$5 === void 0 ? void 0 : _values$5.trim().replace(/^\\[/, '').replace(/\\]$/, '');\n var value = '';\n var op = sep.trim();\n if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) {\n value = l.replace(field, '').replace(/^\\s*(in|not in)\\s*/, '').trim();\n if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\\(/, '').replace(/\\)$/, '').trim();\n } else {\n var _values$6;\n value = (_values$6 = values[1]) === null || _values$6 === void 0 ? void 0 : _values$6.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n if (['in', 'not in'].includes(op)) {\n value = value.replace(/^\\(/, '').replace(/\\)$/, '');\n value = value.split(',').map(function (v) {\n return v.trim().replace(/^\\'/, '').replace(/\\'$/, '');\n });\n }\n }\n sql.push([{\n field: field,\n value: value,\n op: op\n }]);\n }\n }\n });\n if (sql.length > 0) return _base.default.encode(JSON.stringify({\n model: 1,\n condition: sql\n }));else return '';\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvMzIwMS52dWUiXSwibmFtZXMiOlsibW9kdWxlcyIsIkJhc2U2NCIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwic2hvdyIsImR1cmF0aW9uIiwibW9kZUNsYXNzIiwic3R5bGVzIiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwid2lkdGgiLCJoZWlnaHQiLCJib3JkZXJSYWRpdXMiLCJ0ZXh0QWxpZ24iLCJiYWNrZ3JvdW5kQ29sb3IiLCJ3aGVyZXMiLCJvcmRlcmJ5Iiwib25SZWFkeSIsIm9uTG9hZCIsIm9wdGlvbnMiLCJ1bmkiLCJzZXROYXZpZ2F0aW9uQmFyVGl0bGUiLCJ0aXRsZW5hbWUiLCIkZGF0YSIsIkpTT04iLCJwYXJzZSIsIndlbGNvbWVfcGFnZSIsImJrZ3JvdW5kX2NvbG9yIiwiaW1nIiwicmVwbGFjZSIsInBhcnNlSW50IiwiY2F0YWxvZyIsImZvckVhY2giLCJlbGUiLCJpbmRleCIsInRhc2tRdHkiLCJhcHBHZXRJbmZvIiwiZnVuY3Rpb25fZGVmX2lkIiwibWV0aG9kcyIsImFwcGlkIiwiJHRoaXMiLCJqc29uIiwiYXBwX2lkIiwiJHN0b3JlIiwiZGlzcGF0Y2giLCJ0aGVuIiwic3VjY2VzcyIsImVycl9jb2RlIiwiYXBwIiwicmVzdWx0IiwicGFyYW1TdHIiLCJhcHBOYW1lIiwibmFtZSIsImRlZkNvZGUiLCJkZWZfY29kZSIsImluY2x1ZGVzIiwiZGVjb2RlIiwic2hvd01vZGFsIiwiY29udGVudCIsInNob3dDYW5jZWwiLCJjb25maXJtVGV4dCIsIk9yZGVyIiwiUXVlcnlfRXZlbnQiLCJvblNlYXJDaGFuZ2UiLCJEYXRhQ2xzIiwiaWQiLCJDb25kaXRpb24iLCJsb2FkRGF0YUdldExpc3QiLCJtc2ciLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwiY2xzaWQiLCJldmVudGlkIiwiZGF0YUluZm8iLCJlZF90eXBlIiwic3RhcnRfdHJhbnNhY3Rpb24iLCJjbGFzc19pZCIsImV2ZW50X2lkIiwicmV0IiwidGlwIiwiZXJyX2luZm8iLCJqb2luIiwiaW5mbyIsInJlc3VsdF90eXBlIiwiYWN0aW9uIiwiaXRlbSIsImFjdGlvbl90eXBlIiwidmFsdWUiLCJjb25kaXRpb24iLCJvcmRlciIsImVycl9tc2ciLCJtZXNzYWdlIiwiYXR0cnMiLCJ0b1doZXJlQmFzZTY0U3RyaW5nIiwicHJqX3JlbF90eXBlIiwib3JkZXJfYnkiLCJwYWdlX3NpemUiLCJwYWdlIiwicXVlcnlfaWQiLCJvYmpfbGlzdCIsImxlbmd0aCIsInN0cmluZ2lmeSIsIm9uVmlld0NsaWNrIiwibmF2aWdhdGVUbyIsInVybCIsImV2ZW50cyIsInZpZXdfMzIwMSIsInJlZGlyZWN0VG8iLCJjYW5jZWwiLCJlIiwibmF2aWdhdGVCYWNrIiwiZGVsdGEiLCJsaXN0Iiwic3FsIiwic2VwcyIsImxzIiwid2hlcmUiLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJzcGxpdCIsImxpIiwibCIsInNlcCIsImkiLCJ2YWx1ZXMiLCJmaWVsZCIsIm9wIiwibWFwIiwidiIsInB1c2giLCJzIiwiZW5jb2RlIiwibW9kZWwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQStIQTtBQS9IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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Y0FBRXhDLEtBQUssRUFBTEEsS0FBSztjQUFFeUMsRUFBRSxFQUFGQTtZQUFHLENBQUMsQ0FBQyxDQUFDO1VBQ3BDO1FBQ0o7TUFDSixDQUFDLENBQUM7TUFFRixJQUFJZixHQUFHLENBQUNiLE1BQU0sR0FBRyxDQUFDLEVBQ2QsT0FBT3JHLGFBQU0sQ0FBQ3NJLE1BQU0sQ0FBQzlHLElBQUksQ0FBQzhFLFNBQVMsQ0FBQztRQUNoQ2lDLEtBQUssRUFBRSxDQUFDO1FBQ1I5QyxTQUFTLEVBQUV5QjtNQUNmLENBQUMsQ0FBQyxDQUFDLE1BRVAsT0FBTyxFQUFFO0lBQ2I7RUFFQztBQUNGLENBQUM7QUFBQSwyQiIsImZpbGUiOiIxNzUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG5cclxuaW1wb3J0IEJhc2U2NCBmcm9tICcuLi8uLi9jb21wb25lbnRzL2pzLWJhc2U2NC9iYXNlNjQuanMnXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBtb2R1bGVzOntcclxuXHRCYXNlNjQsXHJcbiAgfSxcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuXHQgIHRpdGxlOifmlrDlop4nLFxyXG4gICAgICBwYXJhbToge30sXHJcblx0ICBzaG93OiB0cnVlLFxyXG5cdCAgZHVyYXRpb246MCxcclxuXHQgIG1vZGVDbGFzczogWydmYWRlJywgJ3NsaWRlLWxlZnQnXSxcclxuXHQgIHN0eWxlczoge1xyXG5cdFx0anVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxyXG5cdFx0YWxpZ25JdGVtczogJ2NlbnRlcicsXHJcblx0XHR3aWR0aDogJzEwMHB4JyxcclxuXHRcdGhlaWdodDogJzEwMHB4JyxcclxuXHRcdGJvcmRlclJhZGl1czogJzVweCcsXHJcblx0XHR0ZXh0QWxpZ246ICdjZW50ZXInLFxyXG5cdFx0YmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXHJcblx0ICB9LFxyXG4gICAgICB3aGVyZXM6JycsXHJcbiAgICAgIG9yZGVyYnk6JycsXHJcbiAgICB9O1xyXG4gIH0sXHJcbiAgb25SZWFkeSgpIHtcclxuXHQvLyBjb25zb2xlLmxvZygxMTExKTtcclxuXHQvLyB0aGlzLiRyZWZzLmFuaS5pbml0KHtcclxuXHQvLyBcdGR1cmF0aW9uOiAxMDAwLCAgLy/ov4fmuKHliqjnlLvmjIHnu63ml7bpl7TvvIzljZXkvY1tc1x0XHJcblx0Ly8gXHR0aW1pbmdGdW5jdGlvbjogJ2xpbmVhcicsXHJcblx0Ly8gXHR0cmFuc2Zvcm1PcmlnaW46ICc1MCUgNTAlJyxcclxuXHQvLyBcdGRlbGF5OiA1MDAgIC8v5Yqo55S75bu26L+f5pe26Ze077yM5Y2V5L2NIG1zXHRcclxuXHQvLyB9KTtcclxuXHQvLyB0aGlzLiRyZWZzLmFuaS5zdGVwKHtcclxuXHQvLyBcdC8vIHRyYW5zbGF0ZVg6ICc1MHB4J1xyXG5cdC8vIH0se1xyXG5cdC8vIFx0ZHVyYXRpb246IDEwMDAsICAvL+i/h+a4oeWKqOeUu+aMgee7reaXtumXtO+8jOWNleS9jW1zXHRcclxuXHQvLyBcdHRpbWluZ0Z1bmN0aW9uOiAnbGluZWFyJyxcclxuXHQvLyBcdHRyYW5zZm9ybU9yaWdpbjogJzUwJSA1MCUnLFxyXG5cdC8vIFx0ZGVsYXk6IDUwMCAgLy/liqjnlLvlu7bov5/ml7bpl7TvvIzljZXkvY0gbXNcdFxyXG5cdC8vIH0pO1xyXG5cdC8vIC8vIOW8gOWni+aJp+ihjOWKqOeUu1xyXG5cdC8vIHRoaXMuJHJlZnMuYW5pLnJ1bigoKT0+e1xyXG5cdC8vIFx0Y29uc29sZS5sb2coJ+WKqOeUu+aUr+aMgeWujOavlScpXHJcblx0Ly8gfSk7XHJcbiAgfSxcclxuICBhc3luYyBvbkxvYWQob3B0aW9ucykge1xyXG5cdC8vIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG5cdHRoaXMuZHVyYXRpb249MjAwMDtcclxuXHR1bmkuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHsgdGl0bGU6IG9wdGlvbnMudGl0bGVuYW1lfSk7IC8v6K6+572u6aG26YOo5qCH6aKYIFxyXG5cdHRoaXMuJGRhdGEudGl0bGUgPSBvcHRpb25zLnRpdGxlbmFtZTtcclxuXHR0aGlzLiRkYXRhLnBhcmFtID0gSlNPTi5wYXJzZShvcHRpb25zLnBhcmFtKTtcclxuXHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLnBhcmFtKTtcclxuXHQvL+WKoOi9veWIneWni+eVjOmdolxyXG5cdGlmKHRoaXMuJGRhdGEucGFyYW0ud2VsY29tZV9wYWdlKXtcclxuXHQgIHRoaXMuJGRhdGEuc3R5bGVzLndpZHRoID0gdGhpcy4kZGF0YS5wYXJhbS53ZWxjb21lX3BhZ2Uud2lkdGgrJ3B4JztcclxuXHQgIHRoaXMuJGRhdGEuc3R5bGVzLmhlaWdodCA9IHRoaXMuJGRhdGEucGFyYW0ud2VsY29tZV9wYWdlLmhlaWdodCsncHgnO1xyXG5cdCAgdGhpcy4kZGF0YS5zdHlsZXMuYmFja2dyb3VuZENvbG9yID0gdGhpcy4kZGF0YS5wYXJhbS53ZWxjb21lX3BhZ2UuYmtncm91bmRfY29sb3I7XHJcblx0ICBcclxuXHQgIHRoaXMuJGRhdGEucGFyYW0ud2VsY29tZV9wYWdlLmltZyA9IHRoaXMuJGRhdGEucGFyYW0ud2VsY29tZV9wYWdlLmltZy5yZXBsYWNlKC8gL2csJysnKTtcclxuXHQgIHRoaXMuJGRhdGEucGFyYW0ud2VsY29tZV9wYWdlLndpZHRoID0gcGFyc2VJbnQodGhpcy4kZGF0YS5wYXJhbS53ZWxjb21lX3BhZ2Uud2lkdGgpO1xyXG5cdCAgdGhpcy4kZGF0YS5wYXJhbS53ZWxjb21lX3BhZ2UuaGVpZ2h0ID0gcGFyc2VJbnQodGhpcy4kZGF0YS5wYXJhbS53ZWxjb21lX3BhZ2UuaGVpZ2h0KTtcclxuXHQgIHRoaXMuJGRhdGEucGFyYW0uY2F0YWxvZy5mb3JFYWNoKGFzeW5jIChlbGUsaW5kZXgpID0+IHtcclxuXHRcdGVsZS5pbWcgPSBlbGUuaW1nLnJlcGxhY2UoLyAvZywnKycpO1xyXG5cdFx0ZWxlLnRhc2tRdHk9MDtcclxuXHRcdGF3YWl0IHRoaXMuYXBwR2V0SW5mbyhlbGUuZnVuY3Rpb25fZGVmX2lkLGluZGV4KTtcclxuXHQgIH0pO1xyXG5cdH1cclxuXHRcclxuICB9LFx0XHJcbiAgbWV0aG9kczoge1xyXG5cdC8v6I635Y+W5Yqf6IO954K55L+h5oGvXHJcblx0YXBwR2V0SW5mbyhhcHBpZCxpbmRleCl7XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGpzb24gPXtcclxuXHRcdFx0YXBwX2lkOiBbYXBwaWRdXHJcblx0XHR9O1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FwcEdldEluZm8nLGpzb24pLnRoZW4oYXN5bmMgc3VjY2Vzcz0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0aWYgKHN1Y2Nlc3MuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBhcHAgPSBzdWNjZXNzLnJlc3VsdFswXTtcclxuXHRcdFx0XHR2YXIgcGFyYW1TdHIgPSBhcHAucGFyYW07XHJcblx0XHRcdFx0dmFyIGFwcE5hbWUgPSBhcHAubmFtZTtcclxuXHRcdFx0XHR2YXIgZGVmQ29kZSA9IGFwcC5kZWZfY29kZTtcclxuXHRcdFx0XHR2YXIgcGFyYW0gPSBcIlwiO1xyXG5cdFx0XHRcdGlmKHBhcmFtU3RyKXtcclxuXHRcdFx0XHQgICAgLy9tb2JveDLnmoRwYXJhbeaYr2pzb27lrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgcGFyYW0gPSBwYXJhbVN0ci5yZXBsYWNlKC9cXFxcL2csXCJcIik7XHJcblx0XHRcdFx0ICAgIC8vbW9ib3gz55qEcGFyYW3mmK9iYXNlNjTlrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgaWYoIXBhcmFtU3RyLmluY2x1ZGVzKCdcIicpKSBwYXJhbSA9IEJhc2U2NC5kZWNvZGUocGFyYW1TdHIpO1xyXG5cdFx0XHRcdH1cdCAgXHJcblx0XHRcdFx0aWYoIXBhcmFtKXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpkZWZDb2RlK1wi6K+l5Yqf6IO954K55pyq6YWN572u5Y+C5pWw77yM6K+36YeN5paw6YWN572u5Y+C5pWw77yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuJGRhdGEucGFyYW0uY2F0YWxvZ1tpbmRleF0ucGFyYW09cGFyYW07XHJcblx0XHRcdFx0dGhpcy4kZGF0YS5wYXJhbS5jYXRhbG9nW2luZGV4XS5hcHBOYW1lPWFwcE5hbWU7XHJcblx0XHRcdFx0cGFyYW0gPSBKU09OLnBhcnNlKHBhcmFtKTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHQkdGhpcy5vcmRlcmJ5ID0gcGFyYW0uT3JkZXI/cGFyYW0uT3JkZXI6J1RfQ1JFQVRFIERlc2MnO1xyXG5cdFx0XHRcdGlmKHBhcmFtLlF1ZXJ5X0V2ZW50KXtcclxuXHRcdFx0XHQgICAgYXdhaXQgJHRoaXMub25TZWFyQ2hhbmdlKHBhcmFtLkRhdGFDbHMuaWQscGFyYW0uUXVlcnlfRXZlbnQuaWQsaW5kZXgpO1xyXG5cdFx0XHRcdH0gZWxzZXtcclxuXHRcdFx0XHQgICR0aGlzLndoZXJlcyA9IHBhcmFtLkNvbmRpdGlvbjtcclxuXHRcdFx0XHQgIGF3YWl0ICR0aGlzLmxvYWREYXRhR2V0TGlzdChwYXJhbS5EYXRhQ2xzLmlkLGluZGV4KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivr1wiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0fSxcclxuXHQvLyDmiafooYzmn6Xor6Lkuovku7ZcclxuXHRhc3luYyBvblNlYXJDaGFuZ2UoY2xzaWQsZXZlbnRpZCxpbmRleCkge1xyXG5cdCB0cnkge1xyXG5cdCAgICBpZiAoZXZlbnRpZCkge1xyXG5cdCBcdCAgdmFyICR0aGlzID0gdGhpcztcclxuXHQgXHQgIHZhciBkYXRhSW5mbz17XHJcblx0ICAgICAgICBlZF90eXBlOiAwLFxyXG5cdCAgICAgICAgc3RhcnRfdHJhbnNhY3Rpb246IHRydWUsXHJcblx0XHQgICAgY2xhc3NfaWQ6IGNsc2lkLFxyXG5cdFx0XHRldmVudF9pZDogZXZlbnRpZCxcclxuXHQgICAgICB9O1xyXG5cdCBcdCAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3J1bkN1c3RvbUV2ZW50JyxkYXRhSW5mbykudGhlbihyZXQ9PntcclxuXHQgXHQgIFx0Y29uc29sZS5sb2cocmV0KTtcclxuXHQgXHQgIFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0IFx0XHRcdHZhciByZXN1bHQgPSByZXQucmVzdWx0OyBcclxuXHQgXHRcdFx0aWYgKHJlc3VsdC5yZXQgIT0gMCkge1xyXG5cdCBcdFx0XHQgICAgdmFyIHRpcCA9IHJlc3VsdC5lcnJfaW5mbyA/IHR5cGVvZiByZXN1bHQuZXJyX2luZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuZXJyX2luZm8gOiByZXN1bHQuZXJyX2luZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdCBcdFx0XHQgICAgaWYgKHJlc3VsdC5yZXQgPT0gODAxKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgXHRcdFx0ICAgIGVsc2UgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXArJyzmj5DnpLo6JytyZXN1bHQucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCBcdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHQgXHRcdFx0fWVsc2V7XHJcblx0IFx0XHRcdFx0dmFyIHRpcCA9IHJlc3VsdC5pbmZvID8gdHlwZW9mIHJlc3VsdC5pbmZvID09ICdzdHJpbmcnID8gcmVzdWx0LmluZm8gOiByZXN1bHQuaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0IFx0XHRcdFx0aWYgKHRpcCkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0IFx0XHRcdFxyXG5cdCBcdFx0XHRcdGlmKHJlc3VsdC5yZXN1bHRfdHlwZSA9PSAwICYmIHJlc3VsdC5hY3Rpb24pe1xyXG5cdCBcdFx0XHRcdFx0cmVzdWx0LmFjdGlvbi5mb3JFYWNoKGl0ZW09PntcclxuXHQgXHRcdFx0XHRcdFx0aWYoaXRlbS5hY3Rpb25fdHlwZSA9PSBcInNldF9xdWVyeV9jb25kaXRpb25cIil7IFxyXG5cdCBcdFx0XHRcdFx0XHQgICAgdmFyIHZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHQgXHRcdFx0XHRcdFx0ICAgICR0aGlzLndoZXJlcyA9IHZhbHVlLmNvbmRpdGlvbjtcclxuXHQgXHRcdFx0XHRcdFx0ICAgICR0aGlzLm9yZGVyYnkgPSB2YWx1ZS5vcmRlcj92YWx1ZS5vcmRlcjokdGhpcy5vcmRlcmJ5O1xyXG5cdCBcdFx0XHRcdFx0XHQgICAgJHRoaXMubG9hZERhdGFHZXRMaXN0KGNsc2lkLGluZGV4KTtcclxuXHQgXHRcdFx0XHRcdFx0fSBcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0IFx0XHRcdFx0fWVsc2V7XHJcblx0IFx0XHRcdFx0XHQvLyB0aGlzLmRldGFpbDJTdHlsZURlZkxpc3Q9W107XHJcblx0IFx0XHRcdFx0XHRpZihyZXN1bHQuaW5mbyl7XHJcblx0IFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpyZXN1bHQuaW5mbyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgXHRcdFx0XHRcdH1cclxuXHQgXHRcdFx0XHR9XHJcblx0IFx0XHRcdH1cclxuXHQgXHQgIFx0XHRcclxuXHQgXHQgIFx0fWVsc2V7XHJcblx0IFx0ICBcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xXCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHQgXHQgIFx0fVxyXG5cdCBcdCAgfSkuY2F0Y2goZXg9PntcclxuXHQgXHQgIFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdCBcdCAgXHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCBcdCAgfSk7XHJcblx0ICAgICB9XHJcblx0IH0gY2F0Y2ggKGV4KSB7XHJcblx0ICAgICB2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0IFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjJcIixjb250ZW50Olwi5omn6KGM4oCc5p+l6K+i5LqL5Lu24oCd5LqL5Lu25aSx6LSl77yaXCIgKyB0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0IFx0XHJcblx0IH1cclxuXHR9LFxyXG5cdC8v5p+l6K+i5pWw5o2u57G75pWw5o2u5L+h5oGvXHJcblx0YXN5bmMgbG9hZERhdGFHZXRMaXN0KGNsc2lkLGluZGV4KXsgICBcclxuXHQgIHRyeXtcclxuXHQgICAgLy/mnaHku7bmn6Xor6JcclxuXHQgICAgdmFyIGNvbmRpdGlvbiA9IHRoaXMud2hlcmVzO1xyXG5cdCAgICAvLyBjb25zb2xlLmxvZyhjb25kaXRpb24pO1xyXG5cdCAgICAvLyBjb25zb2xlLmxvZyh0aGlzLm9yZGVyYnkpO1xyXG5cdCAgICB2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdFx0Y2xhc3NfaWQ6IGNsc2lkLFxyXG5cdFx0XHRhdHRyczogW10sXHJcblx0XHRcdGNvbmRpdGlvbjogdGhpcy50b1doZXJlQmFzZTY0U3RyaW5nKFwiXCIrIGNvbmRpdGlvbiArXCJcIiksIFxyXG5cdFx0XHRwcmpfcmVsX3R5cGU6IFwiXCIsXHJcblx0XHRcdG9yZGVyX2J5OiB0aGlzLm9yZGVyYnksXHJcblx0XHRcdHBhZ2Vfc2l6ZTogOTk5OTksXHJcblx0XHRcdHBhZ2U6IDEsXHJcblx0XHRcdHF1ZXJ5X2lkOiAnJyxcclxuXHRcdH07XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZGF0YU9ialF1ZXJ5JyxkYXRhSW5mbykudGhlbihyZXQ9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0aWYocmV0LnJlc3VsdCl7XHJcblx0XHRcdFx0XHQkdGhpcy4kZGF0YS5wYXJhbS5jYXRhbG9nW2luZGV4XS50YXNrUXR5PXJldC5yZXN1bHQub2JqX2xpc3QubGVuZ3RoO1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEucGFyYW0uY2F0YWxvZ1tpbmRleF0pO1xyXG5cdFx0XHRcdFx0dmFyIHBhcmFtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSgkdGhpcy4kZGF0YS5wYXJhbSkpO1xyXG5cdFx0XHRcdFx0JHRoaXMuJGRhdGEucGFyYW09W107XHJcblx0XHRcdFx0XHQkdGhpcy4kZGF0YS5wYXJhbSA9IHBhcmFtO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yXCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0ICB9IGNhdGNoIChleCkge1xyXG5cdCAgICB2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMlwiLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCAgfVxyXG5cdH0sXHJcblx0XHJcblx0Ly/ngrnlh7vmnaHnm67miZPlvIAzMjAwXHJcblx0b25WaWV3Q2xpY2soZGF0YSl7XHJcblx0XHRpZighZGF0YS5mdW5jdGlvbl9kZWZfaWQpe1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLor6XmnaHnm67mnKrlhbPogZTlip/og73ngrnvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHVuaS5uYXZpZ2F0ZVRvKHtcclxuXHRcdFx0dXJsOicuLi9tb2RhbC8zMjAwP3BhcmFtPScrZGF0YS5wYXJhbStcIiZ0aXRsZW5hbWU9XCIrZGF0YS5hcHBOYW1lLFxyXG5cdFx0XHRldmVudHM6IHtcclxuXHRcdFx0XHQvLyDkuLrmjIflrprkuovku7bmt7vliqDkuIDkuKrnm5HlkKzlmajvvIzojrflj5booqvmiZPlvIDpobXpnaLkvKDpgIHliLDlvZPliY3pobXpnaLnmoTmlbDmja5cclxuXHRcdFx0XHR2aWV3XzMyMDE6IGZ1bmN0aW9uKGRhdGEpIHtcclxuXHRcdFx0XHQgICAgY29uc29sZS5sb2coZGF0YSk7XHJcblx0XHRcdFx0XHQvL+WIt+aWsOW9k+WJjemhtemdolxyXG5cdFx0XHRcdFx0Ly8gbG9jYXRpb24ucmVsb2FkKCk7XHJcblx0XHRcdFx0XHR1bmkucmVkaXJlY3RUbyh7XHJcblx0XHRcdFx0XHRcdHVybDonLi4vbW9kYWwvMzIwMT9wYXJhbT0nK0pTT04uc3RyaW5naWZ5KCR0aGlzLiRkYXRhLnBhcmFtKStcIiZ0aXRsZW5hbWU9XCIrJHRoaXMuJGRhdGEudGl0bGVcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cdH0sXHRcdFx0XHJcblx0XHJcblx0XHJcblx0Y2FuY2VsKGUpeyAvL+WPlua2iFxyXG5cdFx0dW5pLm5hdmlnYXRlQmFjayh7XHJcblx0XHRcdGRlbHRhOjEgLC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxyXG5cdFx0fSk7XHJcblx0fSxcclxuXHQvKipcclxuXHQgKiDlj6rmlK/mjIFbXCJjb2x1bW4xPSdBJyBvciBjb2x1bW4yPSdCJ1wiLCBcImNvbHVtbjM9J0MnIGFuZCBjb2x1bW40PSdEJ1wiLCBcImNvbHVtbjU9J0UnXCJd6L+Z56eN5qC85byPXHJcblx0ICoge1xyXG5cdCAqICAgICBcIm1vZGVsXCI6IDAgLyAxLFxyXG5cdCAqICAgICBcImNvbmRpdGlvblwiOlxyXG5cdCAqICAgICBbXHJcblx0ICogICAgICAgICBbXHJcblx0ICogICAgICAgICAgICAgeyB9LFxyXG5cdCAqICAgICAgICAgICAgIHsgfSxcclxuXHQgKiAgICAgICAgICAgICB7IH1cclxuXHQgKiAgICAgICAgIF0sXHJcblx0ICogICAgICAgICBbXHJcblx0ICogICAgICAgICAgICAgeyB9XHJcblx0ICogICAgICAgICBdLFxyXG5cdCAqICAgICAgICAgW1xyXG5cdCAqICAgICAgICAgICAgIHsgfVxyXG5cdCAqICAgICAgICAgXVxyXG5cdCAqICAgICBdXHJcblx0ICogfVxyXG5cdCAqL1xyXG5cdHRvV2hlcmVCYXNlNjRTdHJpbmcobGlzdCkge1xyXG5cdCAgICBpZiAodHlwZW9mIGxpc3QgPT0gJ3N0cmluZycpIGxpc3QgPSBbbGlzdF1cclxuXHQgICAgdmFyIHNxbCA9IFtdXHJcblx0ICAgIHZhciBzZXBzID0gWycgbm90IGluJywgJyBpbicsICc8PicsICchPScsICc8PScsICc+PScsICc8JywgJz0nLCAnPicsICcgbGlrZSddXHJcblx0ICAgIGxpc3QuZm9yRWFjaChscyA9PiB7XHJcblx0ICAgICAgICB2YXIgd2hlcmUgPSBscy50cmltKCkudG9Mb3dlckNhc2UoKVxyXG5cdCAgICAgICAgaWYgKHdoZXJlLnN0YXJ0c1dpdGgoJygnKSAmJiB3aGVyZS5lbmRzV2l0aCgnKScpKSB3aGVyZSA9IHdoZXJlLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKVxyXG5cdCAgICAgICAgaWYgKHdoZXJlLmluY2x1ZGVzKCcgYW5kICcpKSB7XHJcblx0ICAgICAgICAgICAgLy8g5LqM57qnYW5k5pS+5Zyo56ys5LiA57qn5pWw57uE5LitXHJcblx0ICAgICAgICAgICAgd2hlcmUuc3BsaXQoJyBhbmQgJykuZm9yRWFjaChsaSA9PiB7XHJcblx0ICAgICAgICAgICAgICAgIHZhciBsID0gbGkudHJpbSgpXHJcblx0ICAgICAgICAgICAgICAgIGlmIChsLnN0YXJ0c1dpdGgoJygnKSAmJiBsLmVuZHNXaXRoKCcpJykpIGwgPSBsLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKVxyXG5cdCAgICAgICAgICAgICAgICB2YXIgc2VwID0gJydcclxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXBzLmxlbmd0aDsgaSsrKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICBpZiAobC5pbmNsdWRlcyhzZXBzW2ldKSkge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHNlcCA9IHNlcHNbaV1cclxuXHQgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG5cdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgIGlmIChzZXApIHtcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBsLnNwbGl0KHNlcClcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBmaWVsZCA9IHZhbHVlc1swXT8udHJpbSgpLnJlcGxhY2UoL15cXFsvLCAnJykucmVwbGFjZSgvXFxdJC8sICcnKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gJydcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBvcCA9IHNlcC50cmltKClcclxuXHRcclxuXHQgICAgICAgICAgICAgICAgICAgIGlmIChbJyBpbicsICcgbm90IGluJ10uaW5jbHVkZXMoc2VwKSAmJiB2YWx1ZXNbMV0uaW5jbHVkZXMoJ3NlbGVjdCAnKSAmJiB2YWx1ZXNbMV0uaW5jbHVkZXMoJyBmcm9tICcpKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBsLnJlcGxhY2UoZmllbGQsICcnKS5yZXBsYWNlKC9eXFxzKihpbnxub3QgaW4pXFxzKi8sICcnKS50cmltKClcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnKCcpICYmIHZhbHVlLmVuZHNXaXRoKCcpJykpIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXlxcKC8sICcnKS5yZXBsYWNlKC9cXCkkLywgJycpLnRyaW0oKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbMV0/LnRyaW0oKS5yZXBsYWNlKC9eXFwnLywgJycpLnJlcGxhY2UoL1xcJyQvLCAnJylcclxuXHRcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAoWydpbicsICdub3QgaW4nXS5pbmNsdWRlcyhvcCkpIHtcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJylcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdCgnLCcpLm1hcCh2ID0+IHYudHJpbSgpLnJlcGxhY2UoL15cXCcvLCAnJykucmVwbGFjZSgvXFwnJC8sICcnKSlcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgICAgICBzcWwucHVzaChbeyBmaWVsZCwgdmFsdWUsIG9wIH1dKVxyXG5cdCAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgfSlcclxuXHQgICAgICAgIH1cclxuXHQgICAgICAgIGVsc2UgaWYgKHdoZXJlLmluY2x1ZGVzKCcgb3IgJykpIHtcclxuXHQgICAgICAgICAgICAvLyDkuoznuqdvcuaUvuWcqOesrOS6jOe6p+WQjOS4gOe7hOaVsOe7hOS4rVxyXG5cdCAgICAgICAgICAgIHZhciBzID0gW11cclxuXHQgICAgICAgICAgICB3aGVyZS5zcGxpdCgnIG9yICcpLmZvckVhY2gobGkgPT4ge1xyXG5cdCAgICAgICAgICAgICAgICB2YXIgbCA9IGxpLnRyaW0oKVxyXG5cdCAgICAgICAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCcoJykgJiYgbC5lbmRzV2l0aCgnKScpKSBsID0gbC5yZXBsYWNlKC9eXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJylcclxuXHQgICAgICAgICAgICAgICAgdmFyIHNlcCA9ICcnXHJcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Vwcy5sZW5ndGg7IGkrKykge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKGwuaW5jbHVkZXMoc2Vwc1tpXSkpIHtcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzZXAgPSBzZXBzW2ldXHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuXHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICBpZiAoc2VwKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gbC5zcGxpdChzZXApXHJcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZmllbGQgPSB2YWx1ZXNbMF0/LnRyaW0oKS5yZXBsYWNlKC9eXFxbLywgJycpLnJlcGxhY2UoL1xcXSQvLCAnJylcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9ICcnXHJcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgb3AgPSBzZXAudHJpbSgpXHJcblx0XHJcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoWycgaW4nLCAnIG5vdCBpbiddLmluY2x1ZGVzKHNlcCkgJiYgdmFsdWVzWzFdLmluY2x1ZGVzKCdzZWxlY3QgJykgJiYgdmFsdWVzWzFdLmluY2x1ZGVzKCcgZnJvbSAnKSkge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbC5yZXBsYWNlKGZpZWxkLCAnJykucmVwbGFjZSgvXlxccyooaW58bm90IGluKVxccyovLCAnJykudHJpbSgpXHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJygnKSAmJiB2YWx1ZS5lbmRzV2l0aCgnKScpKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKS50cmltKClcclxuXHQgICAgICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVzWzFdPy50cmltKCkucmVwbGFjZSgvXlxcJy8sICcnKS5yZXBsYWNlKC9cXCckLywgJycpXHJcblx0XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFsnaW4nLCAnbm90IGluJ10uaW5jbHVkZXMob3ApKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXlxcKC8sICcnKS5yZXBsYWNlKC9cXCkkLywgJycpXHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJywnKS5tYXAodiA9PiB2LnRyaW0oKS5yZXBsYWNlKC9eXFwnLywgJycpLnJlcGxhY2UoL1xcJyQvLCAnJykpXHJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICAgICAgc3FsLnB1c2goW3sgZmllbGQsIHZhbHVlLCBvcCB9XSlcclxuXHQgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgIH0pXHJcblx0ICAgICAgICAgICAgc3FsLnB1c2gocylcclxuXHQgICAgICAgIH1cclxuXHQgICAgICAgIGVsc2Uge1xyXG5cdCAgICAgICAgICAgIHZhciBsaSA9IHdoZXJlXHJcblx0ICAgICAgICAgICAgLy8g5Y2V5LiA5p+l6K+i5p2h5Lu255u05o6l5pS+5Zyo56ys5LiA57qn5pWw57uE5LitXHJcblx0ICAgICAgICAgICAgdmFyIGwgPSBsaS50cmltKClcclxuXHQgICAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCcoJykgJiYgbC5lbmRzV2l0aCgnKScpKSBsID0gbC5yZXBsYWNlKC9eXFwoLywgJycpLnJlcGxhY2UoL1xcKSQvLCAnJylcclxuXHQgICAgICAgICAgICB2YXIgc2VwID0gJydcclxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcHMubGVuZ3RoOyBpKyspIHtcclxuXHQgICAgICAgICAgICAgICAgaWYgKGwuaW5jbHVkZXMoc2Vwc1tpXSkpIHtcclxuXHQgICAgICAgICAgICAgICAgICAgIHNlcCA9IHNlcHNbaV1cclxuXHQgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcblx0ICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgaWYgKHNlcCkge1xyXG5cdCAgICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gbC5zcGxpdChzZXApXHJcblx0ICAgICAgICAgICAgICAgIHZhciBmaWVsZCA9IHZhbHVlc1swXT8udHJpbSgpLnJlcGxhY2UoL15cXFsvLCAnJykucmVwbGFjZSgvXFxdJC8sICcnKVxyXG5cdCAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSAnJ1xyXG5cdCAgICAgICAgICAgICAgICB2YXIgb3AgPSBzZXAudHJpbSgpXHJcblx0XHJcblx0ICAgICAgICAgICAgICAgIGlmIChbJyBpbicsICcgbm90IGluJ10uaW5jbHVkZXMoc2VwKSAmJiB2YWx1ZXNbMV0uaW5jbHVkZXMoJ3NlbGVjdCAnKSAmJiB2YWx1ZXNbMV0uaW5jbHVkZXMoJyBmcm9tICcpKSB7XHJcblx0ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGwucmVwbGFjZShmaWVsZCwgJycpLnJlcGxhY2UoL15cXHMqKGlufG5vdCBpbilcXHMqLywgJycpLnRyaW0oKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJygnKSAmJiB2YWx1ZS5lbmRzV2l0aCgnKScpKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKS50cmltKClcclxuXHQgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgICBlbHNlIHtcclxuXHQgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVzWzFdPy50cmltKCkucmVwbGFjZSgvXlxcJy8sICcnKS5yZXBsYWNlKC9cXCckLywgJycpXHJcblx0XHJcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoWydpbicsICdub3QgaW4nXS5pbmNsdWRlcyhvcCkpIHtcclxuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL15cXCgvLCAnJykucmVwbGFjZSgvXFwpJC8sICcnKVxyXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJywnKS5tYXAodiA9PiB2LnRyaW0oKS5yZXBsYWNlKC9eXFwnLywgJycpLnJlcGxhY2UoL1xcJyQvLCAnJykpXHJcblx0ICAgICAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgICAgc3FsLnB1c2goW3sgZmllbGQsIHZhbHVlLCBvcCB9XSlcclxuXHQgICAgICAgICAgICB9XHJcblx0ICAgICAgICB9XHJcblx0ICAgIH0pXHJcblx0XHJcblx0ICAgIGlmIChzcWwubGVuZ3RoID4gMClcclxuXHQgICAgICAgIHJldHVybiBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KHtcclxuXHQgICAgICAgICAgICBtb2RlbDogMSxcclxuXHQgICAgICAgICAgICBjb25kaXRpb246IHNxbFxyXG5cdCAgICAgICAgfSkpXHJcblx0ICAgIGVsc2VcclxuXHQgICAgcmV0dXJuICcnXHJcblx0fSxcclxuXHRcclxuICB9LFxyXG59O1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///175\n"); |
| | | |
| | | /***/ }), |
| | | /* 176 */ |