| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 50));\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 _pickerAddress = _interopRequireDefault(__webpack_require__(/*! ../../js/pickerAddress/pickerAddress.vue */ 53));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);}_next(undefined);});};}var _default =\n{\n components: {\n pickerAddress: _pickerAddress.default },\n\n data: function data() {\n return {\n title: '新增',\n param: {},\n classAttrList: [],\n classGridStyle: [],\n edit_inital_event: \"\", //弹窗初始化事件ID\n edit_ok_event: \"\", //弹窗点击OK 触发事件ID\n edit_select_compose_event: \"\", //选择组成对象时调用\n edit_compose_cls_id: \"\",\n global_attr: [],\n refdatastore: [], //引用数据存储区// {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n inputValList: [{ Name: \"test\" }, { Name: \"test2\" }, { Name: \"test3\" }, { Name: \"test4\" }, { Name: \"test5\" }, { Name: \"test6\" }, { Name: \"test7\" }] };\n\n },\n onLoad: function onLoad(options) {\n // console.log(options);\n uni.setNavigationBarTitle({ title: options.titlename }); //设置顶部标题 \n var param = JSON.parse(options.param);\n this.$data.title = param.Add_BtnName ? param.Add_BtnName : options.titlename; //设置按钮文字\n // console.log(param);\n if (!param.EditDlgMode) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置编辑窗口,请重新配置!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!param.Edit_dlg.Name) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置窗口样式,请重新配置!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n this.$data.param = param;\n var edit_dlg = {\n Model: param.EditDlgMode,\n Name: param.Edit_dlg.Name };\n\n var dataInfo = {\n class_id: param.clsid };\n\n var $this = this;\n $this.$store.state.thisareaFuncID = param.clsid;\n // console.log($this.$store.getters.getclassAttrList);\n //获取\n if ($this.$store.getters.getclassAttrList) {\n $this.$data.classAttrList = $this.$store.getters.getclassAttrList.data;\n $this.classGridStyleInfo();\n } else\n $this.$store.dispatch('classAttrList', dataInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n $this.$data.classAttrList = success.data;\n\n $this.classGridStyleInfo();\n } else {\n uni.showModal({ title: \"错误1\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误1.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n\n },\n methods: {\n cancel: function cancel(e) {\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\n },\n classGridStyleInfo: function classGridStyleInfo() {var _this = this;return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var $this, gridstyleInfo;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:\n $this = _this;\n gridstyleInfo = {\n class_id: $this.$data.param.clsid,\n name: $this.$data.param.Edit_dlg.Name,\n type: '2' };\n\n $this.$store.state.thisEditName = $this.$data.param.Edit_dlg.Name;\n // console.log($this.$store.getters.getclassGridStyleInfo);\n //获取\n if ($this.$store.getters.getclassGridStyleInfo) {\n $this.$data.classGridStyle = $this.$store.getters.getclassGridStyleInfo.data;\n $this.class_attr_init();\n } else {\n //console.log(gridstyleInfo);\n $this.$store.dispatch('classGridStyleInfo', gridstyleInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n success.data.StyleDef = JSON.parse(success.data.StyleDef);\n $this.$data.classGridStyle = success.data;\n\n $this.class_attr_init();\n } else {\n uni.showModal({ title: \"错误1.2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/classAttr.vue:482\");\n uni.showModal({ title: \"错误1.3\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n }case 4:case \"end\":return _context.stop();}}}, _callee);}))();\n },\n ontap: function ontap(e) {var _this2 = this; //扫码功能\n //console.log(e.target)\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n });\n },\n onarrow: function onarrow(index, open) {\n // console.log(index+'--'+open);\n this.$data.classAttrList[index].Open = open == true ? false : true;\n },\n ondateTime: function ondateTime(e) {\n //console.log(e.target)\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n },\n onchange: function onchange(e) {\n __f__(\"log\", e.target, \" at pages/modal/classAttr.vue:503\");\n var value = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n __f__(\"log\", data_attr, \" at pages/modal/classAttr.vue:506\");\n if (value.Name != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n __f__(\"log\", this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/classAttr.vue:509\");\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n\n },\n onchange2: function onchange2(item, value, delvalue) {\n // console.log(item);\n // console.log(value);\n // console.log(delvalue);\n if (item.length == 0) {//为空时,清空属性value\n var index,iindex,dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n if (delvalue[0].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n this.$data.classAttrList[i].Attr[j].Value = \"\";\n }\n }\n }\n }\n }\n\n for (var v in item) {\n var index,iindex,dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n if (item[v].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n index = i;iindex = j;dindex = d;\n }\n }\n }\n }\n var itemvalue = item[v];\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n\n __f__(\"log\", data_attr, \" at pages/modal/classAttr.vue:576\");\n if (itemvalue.Name != data_attr.Value) {\n this.$data.classAttrList[index].Attr[iindex].Value = value;\n __f__(\"log\", this.$data.classAttrList[index].Attr[iindex].Value, \" at pages/modal/classAttr.vue:579\");\n var eventid = this.$data.classAttrList[index].Attr[iindex].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串')\n req.push({ attr: ar.Name, val: itemvalue.Name });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n }\n\n\n },\n onevent: function onevent(e) {\n // console.log(e.target);\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n // console.log(data_attr);\n if (e.target.value != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info, data_attr);\n }\n }\n\n },\n oncheck: function oncheck(e) {\n // console.log(e.target);\n var ischecked = e.target.dataset.ischeck ? false : true;\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n // console.log(data_attr);\n if (ischecked != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n\n },\n inputValListIsDel: function inputValListIsDel(index) {\n // console.log(index);\n this.$data.inputValList.splice(index, 1); //删除tabPagejson的内容\n // console.log(this.$data.inputValList);\n },\n addresschange: function addresschange(e) {\n // console.log(e.target);\n __f__(\"log\", e.data.join(';'), \" at pages/modal/classAttr.vue:710\");\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.data.join(';');\n },\n classAttr_extButton: function classAttr_extButton(index, iindex) {\n var $this = this;\n var before_click_button = $this.$data.classAttrList[index].Attr[iindex].before_click_button;\n var button_callback = $this.$data.classAttrList[index].Attr[iindex].button_callback;\n if (!before_click_button) {\n uni.showModal({ title: \"提示\", content: \"before_click_button-event_id为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!button_callback) {\n uni.showModal({ title: \"提示\", content: \"button_callback-event_id为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n this.DataObjRunCustomEvent_Return(before_click_button, data_attr, button_callback, index, iindex);\n },\n classAttr_AddPer: function classAttr_AddPer(index, iindex) {\n var param = { index: index, iindex: iindex };\n var $this = this;\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/classAttr.vue:736\");\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].Login + ';' + data[0].Name;\n\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"4\",\n projectid: \"\",\n rclsid: \"\",\n robjid: \"\",\n userlogin: data[0].Login,\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: [] };\n\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n } } });\n\n\n },\n classAttr_AddRef: function classAttr_AddRef(e) {\n __f__(\"log\", e.target, \" at pages/modal/classAttr.vue:765\");\n uni.showModal({ title: \"提示\", content: \"此功能还未实现!\", showCancel: false, confirmText: \"取消\" });\n // var value=this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].RelCls[e.target.value];\n // this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=value;\n },\n classAttr_AddPrj: function classAttr_AddPrj(index, iindex) {\n var param = { index: index, iindex: iindex };\n var $this = this;\n uni.navigateTo({\n url: '../selPrj/index?relation=-1¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n // console.log(data);\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: [] };\n\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n } } });\n\n\n },\n sava: function sava() {\n if (this.$data.edit_ok_event)\n this.OKDataObjRunCustomEvent();else\n\n this.add();\n },\n add: function add() {var _this3 = this;\n uni.showLoading({\n title: \"加载中...\" });\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ name: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ name: ar.Name, value: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串') {\n if (ar.select == true) {//判断下拉是否多选\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr)\n valStr += \";\";\n valStr += ar.Value[v];\n }\n req.push({ name: ar.Name, value: valStr });\n } else\n req.push({ name: ar.Name, value: ar.Value });\n } else\n\n req.push({ name: ar.Name, value: ar.Value ? ar.Value : '' });\n\n if ((ar.NotEmpty == '1' || ar.notempty == true) && !ar.Value) {\n // if(ar.notEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'不能为空!',icon:\"success\",duration:3000});\n uni.showModal({ title: \"提示\", content: ar.DispName + '不能为空!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n }\n }\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid } };\n\n\n\n var dataInfo = {\n class_id: this.$data.param.clsid, data_obj_id: '', masterclsid: '',\n req: JSON.stringify(req), upfile: JSON.stringify([]), post_data: JSON.stringify({}),\n compose: JSON.stringify([]), refdatastore: JSON.stringify([]), extinfo: JSON.stringify(enviroment),\n not_trigger_sys_event: '' };\n\n\n // return\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:871\");\n this.$store.dispatch('addclassattr', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:873\");\n uni.hideLoading();\n if (success.code == '00000') {\n var action = JSON.parse(success.data.Action);\n if (action.ret == '0') {\n if (action.result_type == '0') {\n uni.showToast({ title: action.result, icon: \"success\", duration: 3000 });\n }\n // \"{\"ret\":0, \"result_type\":0, \"result\":\"创建成功123123123\",\"info\":\"\"}\"\n }\n //刷新\n uni.redirectTo({\n url: '../modal/classAttr?param=' + JSON.stringify(_this3.$data.param) + \"&titlename=\" + _this3.$data.title });\n\n // this.class_attr_init();\n } else {\n uni.showModal({ title: \"错误\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/classAttr.vue:892\");\n uni.hideLoading();\n uni.showModal({ title: \"提示\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n class_attr_init: function class_attr_init() {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n var newattrlist = [];\n if (this.$data.classAttrList.length > 0) {\n for (var i = 0; i < attrlist.length; i++) {\n var open = attrlist[i].open;\n var name = attrlist[i].attrgroup_name;\n var attrs = attrlist[i].attrs;\n for (var s = 0; s < this.$data.classAttrList.length; s++) {\n var clsattr = this.$data.classAttrList[s];\n if (name == clsattr.Name) {\n var attr = [];\n for (var j = 0; j < attrs.length; j++) {\n for (var l = 0; l < clsattr.Attr.length; l++) {\n var ca = clsattr.Attr[l];\n if (attrs[j].attr == ca.Name) {\n ca.action = attrs[j].action;\n ca.edit = attrs[j].edit;\n ca.notempty = attrs[j].notempty;\n ca.ext_button = attrs[j].ext_button;\n ca.button_img = attrs[j].button_img;\n ca.button_tooltip = attrs[j].button_tooltip;\n ca.before_click_button = attrs[j].before_click_button;\n ca.button_callback = attrs[j].button_callback;\n ca.hidden = attrs[j].hidden;\n ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n ca.Value = \"\";\n if (ca.dictitem) {\n var dictitemlist = [];\n for (var d = 0; d < ca.dictitem.length; d++) {\n ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n }\n if (ca.select == true)\n ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n else\n ca.Value = '请选择'; //ca.dictitem[0].CN_S_NAME;\n }\n if (ca.Type == '日期' || ca.Type == '时间') {\n var nowDate = new Date();\n var date = { year: nowDate.getFullYear(), month: nowDate.getMonth() + 1, day: nowDate.getDate() };\n ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n }\n if (ca.Type == '引用对象(多个)') {\n var relClsList = [];\n var attr_rescls = ca.RelCls.split(',');\n for (var ii in attr_rescls) {\n var rescls = attr_rescls[ii].split('|');\n relClsList.push({ id: rescls[0], name: rescls[1] });\n }\n ca.RelClsList = relClsList;\n ca.Value = '请';\n }\n if (ca.Type == '省市区')\n ca.Value = '请选择';\n if (ca.Type == '布尔值')\n ca.Value = false;\n\n attr.push(ca);\n }\n }\n }\n newattrlist.push({\n BkColor: clsattr.BkColor,\n HasAce: clsattr.HasAce,\n ImgFontStyle: clsattr.ImgFontStyle,\n Name: clsattr.Name,\n Order: clsattr.Order,\n Open: open,\n Attr: attr,\n control_style: this.$data.classGridStyle.StyleDef.control_style,\n title_p_wdith: this.$data.classGridStyle.StyleDef.title_p_wdith });\n\n }\n }\n }\n if (newattrlist.length > 0) {\n this.$data.classAttrList = newattrlist;\n }\n var req = [];\n if (this.$data.classGridStyle.StyleDef) {\n if (this.$data.classGridStyle.StyleDef.show_style.length > 0) {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n // $el.find('.attr_field').prop('readonly', true);\n // $el.find('.attr_field').prop('disabled', true);\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].attrs;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n req.push({ attr: ar.attr, val: ar.value ? ar.value : '' });\n }\n }\n }\n }\n\n var eventlist = this.$data.classGridStyle.StyleDef.event;\n if (eventlist) {\n if (eventlist.length > 0) {\n for (var i = 0; i < eventlist.length; i++) {\n if (eventlist[i].event_id == 'before_ok') {\n this.$data.edit_ok_event = eventlist[i];\n } else if (eventlist[i].event_id == 'initial') {\n this.$data.edit_inital_event = eventlist[i];\n } else if (eventlist[i].event_id == 'before_select_compose') {\n this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n }\n }\n }\n }\n __f__(\"log\", req, \" at pages/modal/classAttr.vue:1007\");\n if (this.$data.edit_inital_event) {\n var eventid = this.$data.edit_inital_event.scrip_id;\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.ini_DataObjRunCustomEvent(info);\n }\n __f__(\"log\", this.$data.classGridStyle, \" at pages/modal/classAttr.vue:1023\");\n __f__(\"log\", this.$data.classAttrList, \" at pages/modal/classAttr.vue:1024\");\n\n } else {\n uni.showModal({ title: \"提示\", content: \"未找到可显示的的属性\", showCancel: false, confirmText: \"取消\" });\n }\n },\n ini_DataObjRunCustomEvent: function ini_DataObjRunCustomEvent(info) {var _this4 = this;\n var param = {\n EditStyle: this.$data.param.Edit_dlg.Name,\n ViewStyle: this.$data.param.Edit_dlg.Name,\n NotTriggerSysEvent: 0,\n enviroment: {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } } };\n\n\n var inputparameter = '';\n var global_attr = '';\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid,\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(param), inputparameter: inputparameter, global_attr: global_attr };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1054\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1056\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n for (var j = 0; j < actionlist.length; j++) {\n var action = actionlist[j];\n var action_type = action.action_type;\n var value = action.value;\n if (action_type == 'set_dlg_attr') {\n if (value) {\n var val = value;\n if (typeof value == 'string') {\n val = JSON.parse(value);\n }\n __f__(\"log\", val, \" at pages/modal/classAttr.vue:1071\");\n for (var i = 0; i < val.length; i++) {\n for (var a = 0; a < _this4.$data.classAttrList.length; a++) {\n for (var l = 0; l < _this4.$data.classAttrList[a].Attr.length; l++) {\n var ca = _this4.$data.classAttrList[a].Attr[l];\n if (val[i].attr == ca.Name) {\n if (ca.Type == '字典' || ca.Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in val[i].choice_list) {\n var val = val[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n\n }\n ca.dictitem = dictItemList;\n // attr[j].dictitem = val[i].choice_list;\n } else {\n // ca.value = val[i].value;\n }\n }\n }\n }\n\n var length = 0;\n if (!_this4.$data.refdatastore.filter(function (s) {\n return val[i].attr == s.attr;\n }).length) {\n length = 1;\n _this4.$data.refdatastore.push(val[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this4.$data.refdatastore.length; j++) {\n if (_this4.$data.refdatastore[j].attr == val[i].attr) {\n _this4.$data.refdatastore[j].value = val[i].value;\n }\n }\n }\n }\n }\n }\n if (action_type == 'open_select_userdlg') {\n uni.showModal({ title: \"错误2.2\", content: \"open_select_userdlg这个action_type还未处理!\", showCancel: false, confirmText: \"取消\" });\n }\n }\n }\n\n } else {\n uni.showModal({ title: \"错误2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误2.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n var $this = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n if (data_attr) {\n enviroment.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.clsid //当前数据类id\n };\n if (data_attr) {\n enviroment.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n }\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{', '').replace('}', ''),\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: '', global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1158\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1160\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/classAttr.vue:1166\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n if (attr[j].Type == '字典' || attr[j].Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n }\n attr[j].dictitem = dictItemList;\n // attr[j].dictitem = result[i].choice_list;\n }\n }\n }\n }\n }\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/classAttr.vue:1193\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_global_attr') {\n $this.$data.global_attr = data.action[i].value || [];\n }\n }\n }\n\n if (data.result) {\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n } else {\n uni.showModal({ title: \"错误3\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误3.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n OKDataObjRunCustomEvent: function OKDataObjRunCustomEvent() {var _this5 = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n } };\n\n\n\n var eventid = this.$data.edit_ok_event.scrip_id;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value });\n }\n }\n\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({ 'attr': this.$data.refdatastore[i].attr, 'val': this.$data.refdatastore[i].value });\n }\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid, rclsid: info.rclsid,\n robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1313\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1315\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n // self.class_attr_ele.find('.attr_field[data-field=\"' + result[i].attr + '\"]').val(result[i].value).data('val', result[i].value);\n var length = 0;\n if (!_this5.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n _this5.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this5.$data.refdatastore.length; j++) {\n if (_this5.$data.refdatastore[j].attr == result[i].attr) {\n _this5.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n\n _this5.add();\n } else {\n uni.showModal({ title: \"错误4\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误4.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, index, iindex) {var _this6 = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value });\n }\n }\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({ 'attr': this.$data.refdatastore[i].attr, 'val': this.$data.refdatastore[i].value });\n }\n }\n }\n var extinfo = enviroment;\n extinfo.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.clsid //当前数据类id\n };\n if (data_attr) {\n extinfo.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n var dataInfo = {\n edtype: \"0\", eventid: eventid, projectid: '', rclsid: '', robjid: '', userlogin: '',\n clsid: this.$data.param.clsid, objid: '', attr: JSON.stringify(req),\n extinfo: JSON.stringify(extinfo), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1404\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1406\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n if (data != \"\") {\n\n var actions = data.action;\n __f__(\"log\", actions, \" at pages/modal/classAttr.vue:1412\");\n if (actions) {\n for (var i = 0; i < actions.length; i++) {\n var action = actions[i];\n var val = action.value;\n var enviroment = JSON.stringify(enviroment);\n\n if (action.action_type == 'open_panel') {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n } else\n if (action.action_type == 'open_select_userdlg') {\n var style = val.style;\n // style == 'user' ? '选择人员' : style == 'department' ? '选择部门' : style == 'role' ? '选择角色' : ''\n var $this = _this6;\n var param = {\n index: index,\n iindex: iindex,\n button_callback: button_callback,\n req: req,\n data_attr: data_attr };\n\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/classAttr.vue:1442\");\n var callback_eventid = param.button_callback.trim();\n var info = {\n eventid: callback_eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: param.req,\n inputparameter: data };\n\n $this.DataObjRunCustomEvent(info, param.data_attr);\n } } });\n\n\n } else\n if (action.action_type == 'open_data_query_dlg') {\n\n } else\n if (action.action_type == 'open_common_dlg') {\n var value = action.value;\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n } else\n if (action.action_type == 'open_project_query_dlg') {\n //console.log(action.value.select_range);\n //console.log(action.value.mulit_select);\n var priRel = '-1';\n if (action.value.select_range == '全部相关')\n priRel = '0';else\n if (action.value.select_range == '我负责的项目')\n priRel = '1';else\n if (action.value.select_range == '我创建的')\n priRel = '2';else\n if (action.value.select_range == '我参与的' || action.value.select_range == '我参加的')\n priRel = '3';else\n if (action.value.select_range == '我关注的')\n priRel = '4';else\n if (action.value.select_range == '我下属的项目')\n priRel = '5';\n\n var $this = _this6;\n var param_ = {\n index: index,\n iindex: iindex,\n button_callback: button_callback,\n req: req };\n\n uni.navigateTo({\n url: '../selPrj/index?relation=' + priRel + '¶m=' + JSON.stringify(param_),\n events: {\n AddPer: function AddPer(data, param) {\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n var callback_eventid = param.button_callback.trim();\n if (callback_eventid) {\n var info = {\n eventid: callback_eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: param.req };\n\n\n $this.DataObjRunCustomEvent(info);\n }\n } } });\n\n\n } else {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n }\n }\n }\n } else {\n uni.showModal({ title: \"提示5.2\", content: '调用 before_click_button 脚本返回空,event_id' + eventid, showCancel: false, confirmText: \"取消\" });\n }\n } else {\n uni.showModal({ title: \"错误5\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"提示5.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvY2xhc3NBdHRyLnZ1ZSJdLCJuYW1lcyI6WyJjb21wb25lbnRzIiwicGlja2VyQWRkcmVzcyIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwiY2xhc3NBdHRyTGlzdCIsImNsYXNzR3JpZFN0eWxlIiwiZWRpdF9pbml0YWxfZXZlbnQiLCJlZGl0X29rX2V2ZW50IiwiZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCIsImVkaXRfY29tcG9zZV9jbHNfaWQiLCJnbG9iYWxfYXR0ciIsInJlZmRhdGFzdG9yZSIsImlucHV0VmFsTGlzdCIsIk5hbWUiLCJvbkxvYWQiLCJvcHRpb25zIiwidW5pIiwic2V0TmF2aWdhdGlvbkJhclRpdGxlIiwidGl0bGVuYW1lIiwiSlNPTiIsInBhcnNlIiwiJGRhdGEiLCJBZGRfQnRuTmFtZSIsIkVkaXREbGdNb2RlIiwic2hvd01vZGFsIiwiY29udGVudCIsInNob3dDYW5jZWwiLCJjb25maXJtVGV4dCIsIkVkaXRfZGxnIiwiZWRpdF9kbGciLCJNb2RlbCIsImRhdGFJbmZvIiwiY2xhc3NfaWQiLCJjbHNpZCIsIiR0aGlzIiwiJHN0b3JlIiwic3RhdGUiLCJ0aGlzYXJlYUZ1bmNJRCIsImdldHRlcnMiLCJnZXRjbGFzc0F0dHJMaXN0IiwiY2xhc3NHcmlkU3R5bGVJbmZvIiwiZGlzcGF0Y2giLCJ0aGVuIiwic3VjY2VzcyIsImNvZGUiLCJtc2ciLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwibWV0aG9kcyIsImNhbmNlbCIsImUiLCJuYXZpZ2F0ZUJhY2siLCJkZWx0YSIsImdyaWRzdHlsZUluZm8iLCJuYW1lIiwidHlwZSIsInRoaXNFZGl0TmFtZSIsImdldGNsYXNzR3JpZFN0eWxlSW5mbyIsImNsYXNzX2F0dHJfaW5pdCIsIlN0eWxlRGVmIiwib250YXAiLCJnZXRBcHAiLCJvblNjYW4iLCJyZXN1bHQiLCJ0YXJnZXQiLCJkYXRhc2V0IiwiQXR0ciIsIlZhbHVlIiwiZGVjb2RlZGF0YSIsIm9uYXJyb3ciLCJpbmRleCIsIm9wZW4iLCJPcGVuIiwib25kYXRlVGltZSIsInZhbHVlIiwib25jaGFuZ2UiLCJkaWN0aXRlbSIsImRhdGFfYXR0ciIsImV2ZW50aWQiLCJhY3Rpb24iLCJyZXEiLCJhdHRybGlzdCIsImkiLCJsZW5ndGgiLCJhdHRyIiwiaiIsImFyIiwiVHlwZSIsInB1c2giLCJ2YWwiLCJWYWxJRCIsImluZm8iLCJlZHR5cGUiLCJwcm9qZWN0aWQiLCJyY2xzaWQiLCJyb2JqaWQiLCJ1c2VybG9naW4iLCJvYmppZCIsIkRhdGFPYmpSdW5DdXN0b21FdmVudCIsIm9uY2hhbmdlMiIsIml0ZW0iLCJkZWx2YWx1ZSIsImlpbmRleCIsImRpbmRleCIsImQiLCJ2IiwiaXRlbXZhbHVlIiwib25ldmVudCIsIm9uY2hlY2siLCJpc2NoZWNrZWQiLCJpc2NoZWNrIiwiaW5wdXRWYWxMaXN0SXNEZWwiLCJzcGxpY2UiLCJhZGRyZXNzY2hhbmdlIiwiam9pbiIsImNsYXNzQXR0cl9leHRCdXR0b24iLCJiZWZvcmVfY2xpY2tfYnV0dG9uIiwiYnV0dG9uX2NhbGxiYWNrIiwiRGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybiIsImNsYXNzQXR0cl9BZGRQZXIiLCJuYXZpZ2F0ZVRvIiwidXJsIiwic3RyaW5naWZ5IiwiZXZlbnRzIiwiQWRkUGVyIiwiTG9naW4iLCJ0cmltIiwiY2xhc3NBdHRyX0FkZFJlZiIsImNsYXNzQXR0cl9BZGRQcmoiLCJJRCIsInNhdmEiLCJPS0RhdGFPYmpSdW5DdXN0b21FdmVudCIsImFkZCIsInNob3dMb2FkaW5nIiwic2VsZWN0IiwidmFsU3RyIiwiTm90RW1wdHkiLCJub3RlbXB0eSIsImhpZGVMb2FkaW5nIiwiRGlzcE5hbWUiLCJlbnZpcm9tZW50IiwiY2xzX2lkIiwiYnV0dG9uX25hbWUiLCJtYXN0ZXIiLCJkYXRhX29ial9pZCIsIm1hc3RlcmNsc2lkIiwidXBmaWxlIiwicG9zdF9kYXRhIiwiY29tcG9zZSIsImV4dGluZm8iLCJub3RfdHJpZ2dlcl9zeXNfZXZlbnQiLCJBY3Rpb24iLCJyZXQiLCJyZXN1bHRfdHlwZSIsInNob3dUb2FzdCIsImljb24iLCJkdXJhdGlvbiIsInJlZGlyZWN0VG8iLCJzaG93X3N0eWxlIiwibmV3YXR0cmxpc3QiLCJhdHRyZ3JvdXBfbmFtZSIsImF0dHJzIiwicyIsImNsc2F0dHIiLCJsIiwiY2EiLCJlZGl0IiwiZXh0X2J1dHRvbiIsImJ1dHRvbl9pbWciLCJidXR0b25fdG9vbHRpcCIsImhpZGRlbiIsInVuZGVmaW5lZCIsImRpY3RpdGVtbGlzdCIsImxhYmVsIiwiQ05fU19OQU1FIiwibm93RGF0ZSIsIkRhdGUiLCJkYXRlIiwieWVhciIsImdldEZ1bGxZZWFyIiwibW9udGgiLCJnZXRNb250aCIsImRheSIsImdldERhdGUiLCJyZWxDbHNMaXN0IiwiYXR0cl9yZXNjbHMiLCJSZWxDbHMiLCJzcGxpdCIsImlpIiwicmVzY2xzIiwiaWQiLCJSZWxDbHNMaXN0IiwiQmtDb2xvciIsIkhhc0FjZSIsIkltZ0ZvbnRTdHlsZSIsIk9yZGVyIiwiY29udHJvbF9zdHlsZSIsInRpdGxlX3Bfd2RpdGgiLCJldmVudGxpc3QiLCJldmVudCIsImV2ZW50X2lkIiwic2NyaXBfaWQiLCJjb21wb3NlX2Nsc19pZCIsImluaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJFZGl0U3R5bGUiLCJWaWV3U3R5bGUiLCJOb3RUcmlnZ2VyU3lzRXZlbnQiLCJpbnB1dHBhcmFtZXRlciIsImFjdGlvbmxpc3QiLCJhY3Rpb25fdHlwZSIsImEiLCJkaWN0SXRlbUxpc3QiLCJjaG9pY2VfbGlzdCIsImZpbHRlciIsImZvcm1fY29udHJvbCIsInRleHQiLCJncm91cF9uYW1lIiwiR3JvdXBOYW1lIiwicmVhZG9ubHkiLCJSZWFkT25seSIsInJlcGxhY2UiLCJjIiwiYWN0aW9ucyIsImRpYWxvZyIsInNob3ciLCJzdHlsZSIsImNhbGxiYWNrX2V2ZW50aWQiLCJwcmlSZWwiLCJzZWxlY3RfcmFuZ2UiLCJwYXJhbV8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7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LFVBQUFDLEVBQUUsRUFBRTtBQUNaO0FBQ0EvQixXQUFHLENBQUNRLFNBQUosQ0FBYyxFQUFDdEIsS0FBSyxFQUFDLE9BQVAsRUFBZXVCLE9BQU8sRUFBQ3NCLEVBQUUsQ0FBQ0MsTUFBMUIsRUFBaUN0QixVQUFVLEVBQUMsS0FBNUMsRUFBa0RDLFdBQVcsRUFBQyxJQUE5RCxFQUFkO0FBQ0EsT0F0SUQ7QUF1SUcsS0Fsa0NJLEVBaEVLLEUiLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXHRpbXBvcnQgcGlja2VyQWRkcmVzcyBmcm9tICcuLi8uLi9qcy9waWNrZXJBZGRyZXNzL3BpY2tlckFkZHJlc3MudnVlJ1xuXHRleHBvcnQgZGVmYXVsdCB7XG5cdFx0Y29tcG9uZW50czoge1xuICAgICAgICAgICAgcGlja2VyQWRkcmVzc1xuICAgICAgICB9LFxuXHRcdGRhdGEoKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0aXRsZTogJ+aWsOWinicsXG5cdFx0XHRcdHBhcmFtOnt9LFxuXHRcdFx0XHRjbGFzc0F0dHJMaXN0OltdLFxuXHRcdFx0XHRjbGFzc0dyaWRTdHlsZTpbXSxcblx0XHRcdFx0ZWRpdF9pbml0YWxfZXZlbnQ6XCJcIiwgIC8v5by556qX5Yid5aeL5YyW5LqL5Lu2SURcblx0XHRcdFx0ZWRpdF9va19ldmVudDpcIlwiLCAgICAgIC8v5by556qX54K55Ye7T0sg6Kem5Y+R5LqL5Lu2SURcblx0XHRcdFx0ZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudDpcIlwiLCAgLy/pgInmi6nnu4TmiJDlr7nosaHml7bosIPnlKhcblx0XHRcdFx0ZWRpdF9jb21wb3NlX2Nsc19pZDpcIlwiLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjpbXSxcblx0XHRcdFx0cmVmZGF0YXN0b3JlOiBbXSxcdCAgIC8v5byV55So5pWw5o2u5a2Y5YKo5Yy6Ly8ge2F0dHI6J0dfUFJKXycgKyBiaW5kYXR0ciArICdfSUQnLCB2YWx1ZTppbmZvLmlkfVxuXHRcdFx0XHRpbnB1dFZhbExpc3Q6W3tOYW1lOlwidGVzdFwifSx7TmFtZTpcInRlc3QyXCJ9LHtOYW1lOlwidGVzdDNcIn0se05hbWU6XCJ0ZXN0NFwifSx7TmFtZTpcInRlc3Q1XCJ9LHtOYW1lOlwidGVzdDZcIn0se05hbWU6XCJ0ZXN0N1wifV0sXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvbkxvYWQob3B0aW9ucykge1xuXHRcdFx0Ly8gY29uc29sZS5sb2cob3B0aW9ucyk7XG5cdFx0XHR1bmkuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHsgdGl0bGU6IG9wdGlvbnMudGl0bGVuYW1lfSk7IC8v6K6+572u6aG26YOo5qCH6aKYIFxuXHRcdFx0dmFyIHBhcmFtID0gSlNPTi5wYXJzZShvcHRpb25zLnBhcmFtKTtcblx0XHRcdHRoaXMuJGRhdGEudGl0bGUgPSBwYXJhbS5BZGRfQnRuTmFtZT9wYXJhbS5BZGRfQnRuTmFtZTpvcHRpb25zLnRpdGxlbmFtZTsgLy/orr7nva7mjInpkq7mloflrZdcblx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcblx0XHRcdGlmKCFwYXJhbS5FZGl0RGxnTW9kZSl7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuivpeWKn+iDveeCueacqumFjee9rue8lui+keeql+WPo++8jOivt+mHjeaWsOmFjee9ru+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZighcGFyYW0uRWRpdF9kbGcuTmFtZSl7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuivpeWKn+iDveeCueacqumFjee9rueql+WPo+agt+W8j++8jOivt+mHjeaWsOmFjee9ru+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0aGlzLiRkYXRhLnBhcmFtID0gcGFyYW07XG5cdFx0XHR2YXIgZWRpdF9kbGcgPSB7XG5cdFx0XHQgICAgTW9kZWw6IHBhcmFtLkVkaXREbGdNb2RlLFxuXHRcdFx0ICAgIE5hbWU6IHBhcmFtLkVkaXRfZGxnLk5hbWVcblx0XHRcdH1cblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0Y2xhc3NfaWQ6IHBhcmFtLmNsc2lkXG5cdFx0XHR9O1xuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzYXJlYUZ1bmNJRCA9IHBhcmFtLmNsc2lkO1xuXHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdCk7XG5cdFx0XHQgLy/ojrflj5Zcblx0XHRcdGlmKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3Qpe1xuXHRcdFx0IFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3QuZGF0YTtcblx0XHRcdFx0JHRoaXMuY2xhc3NHcmlkU3R5bGVJbmZvKCk7XG5cdFx0XHR9ZWxzZVxuXHRcdFx0XHQkdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2NsYXNzQXR0ckxpc3QnLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gc3VjY2Vzcy5kYXRhO1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8oKTtcblx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMVwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFxuXHRcdH0sXG5cdFx0bWV0aG9kczoge1xuXHRcdFx0Y2FuY2VsKGUpe1xuXHRcdFx0XHR1bmkubmF2aWdhdGVCYWNrKHtcblx0XHRcdFx0XHRkZWx0YToxIC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHRhc3luYyBjbGFzc0dyaWRTdHlsZUluZm8oKXtcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0dmFyIGdyaWRzdHlsZUluZm8gPSB7XG5cdFx0XHRcdFx0Y2xhc3NfaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdG5hbWU6ICR0aGlzLiRkYXRhLnBhcmFtLkVkaXRfZGxnLk5hbWUsXG5cdFx0XHRcdFx0dHlwZTogJzInXG5cdFx0XHRcdH07XG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzRWRpdE5hbWUgPSAkdGhpcy4kZGF0YS5wYXJhbS5FZGl0X2RsZy5OYW1lXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mbyk7XG5cdFx0XHRcdCAvL+iOt+WPllxuXHRcdFx0XHRpZigkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0dyaWRTdHlsZUluZm8pe1xuXHRcdFx0XHQgXHQkdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mby5kYXRhO1xuXHRcdFx0XHRcdCR0aGlzLmNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKGdyaWRzdHlsZUluZm8pO1xuXHRcdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xhc3NHcmlkU3R5bGVJbmZvJyxncmlkc3R5bGVJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0XHRzdWNjZXNzLmRhdGEuU3R5bGVEZWYgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YS5TdHlsZURlZik7XG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlID0gc3VjY2Vzcy5kYXRhO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0JHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjJcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmNhdGNoKGV4PT57XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuM1wiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0b250YXAoZSl7IC8v5omr56CB5Yqf6IO9XG5cdFx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXG5cdFx0XHRcdGdldEFwcCgpLm9uU2NhbigocmVzdWx0KT0+e1xuXHRcdFx0XHRcdC8vY29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xuXHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1yZXN1bHQuZGVjb2RlZGF0YTtcblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHRvbmFycm93KGluZGV4LG9wZW4pe1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhpbmRleCsnLS0nK29wZW4pO1xuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLk9wZW49b3Blbj09dHJ1ZT9mYWxzZTp0cnVlO1xuXHRcdFx0fSxcblx0XHRcdG9uZGF0ZVRpbWUoZSkge1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9ZS50YXJnZXQudmFsdWU7XG5cdFx0XHR9LFxuXHRcdFx0b25jaGFuZ2UoZSkge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRcdHZhciB2YWx1ZT10aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uZGljdGl0ZW1bZS50YXJnZXQudmFsdWVdO1xuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0XHRpZiAodmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9dmFsdWUuTmFtZTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUpO1xuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0ICAgICAgICB2YXIgcmVxPVtdO1xuXHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2Vcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xuXHRcdFx0XHQgICAgICAgIFx0fVxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcblx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgcm9iamlkOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdCAgICAgICAgICAgIG9iamlkOiBcIlwiLFxuXHRcdFx0XHQgICAgICAgICAgICBhdHRyOiByZXEsXG5cdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgIHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHQgICAgfVxuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG9uY2hhbmdlMihpdGVtLHZhbHVlLGRlbHZhbHVlKSB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGl0ZW0pO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyh2YWx1ZSk7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRlbHZhbHVlKTtcblx0XHRcdFx0aWYoaXRlbS5sZW5ndGg9PTApeyAvL+S4uuepuuaXtu+8jOa4heepuuWxnuaAp3ZhbHVlXG5cdFx0XHRcdFx0dmFyIGluZGV4ICxpaW5kZXgsZGluZGV4PTA7XG5cdFx0XHRcdFx0Zm9yKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCl7XG5cdFx0XHRcdFx0XHRmb3IodmFyIGogaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHIpe1xuXHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW0pe1xuXHRcdFx0XHRcdFx0XHRcdGlmKGRlbHZhbHVlWzBdLk5hbWUgPT0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW1bZF0uTmFtZSl7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5WYWx1ZT1cIlwiO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRmb3IodmFyIHYgaW4gaXRlbSl7XG5cdFx0XHRcdFx0dmFyIGluZGV4ICxpaW5kZXgsZGluZGV4PTA7XG5cdFx0XHRcdFx0Zm9yKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCl7XG5cdFx0XHRcdFx0XHRmb3IodmFyIGogaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHIpe1xuXHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW0pe1xuXHRcdFx0XHRcdFx0XHRcdGlmKGl0ZW1bdl0uTmFtZSA9PSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5kaWN0aXRlbVtkXS5OYW1lKXtcblx0XHRcdFx0XHRcdFx0XHRcdGluZGV4PWk7aWluZGV4PWo7ZGluZGV4PWQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBpdGVtdmFsdWUgPSBpdGVtW3ZdO1xuXHRcdFx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0XHRcdGlmIChpdGVtdmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLlZhbHVlPXZhbHVlO1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uVmFsdWUpO1xuXHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5hY3Rpb247XG5cdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdCAgICAgICAgLy8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdCAgICAgICAgdmFyIHJlcT1bXTtcblx0XHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHQgICAgICAgIFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcblx0XHRcdFx0XHQgICAgICAgIFx0XHRlbHNlIGlmKGFyLlR5cGU9PSflrZflhbgnIHx8IGFyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGl0ZW12YWx1ZS5OYW1lfSk7XG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZVxuXHRcdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcblx0XHRcdFx0XHQgICAgICAgIFx0fVxuXHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcblx0XHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxuXHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdCAgICAgICAgdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG9uZXZlbnQoZSl7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdFx0aWYgKGUudGFyZ2V0LnZhbHVlICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xuXHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1lLnRhcmdldC52YWx1ZTtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5hY3Rpb247XG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0ICAgICAgICAvLyBzZWxmLmV2ZW50X25vX3N1YiA9IDE7XG5cdFx0XHRcdCAgICAgICAgdmFyIHJlcT1bXTtcblx0XHRcdFx0ICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHQgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdCAgICAgICAgXHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWU/JzEnOicwJ30pO1xuXHRcdFx0XHQgICAgICAgIFx0XHRlbHNlXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcblx0XHRcdFx0ICAgICAgICBcdH1cblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBkYXRhX2F0dHIpO1xuXHRcdFx0XHQgICAgfVxuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG9uY2hlY2soZSkge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRcdHZhciBpc2NoZWNrZWQgPSBlLnRhcmdldC5kYXRhc2V0LmlzY2hlY2s/ZmFsc2U6dHJ1ZTtcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdFx0aWYgKGlzY2hlY2tlZCAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9aXNjaGVja2VkO1xuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0ICAgICAgICB2YXIgcmVxPVtdO1xuXHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcblx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0ICAgICAgICBcdH1cblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcblx0XHRcdFx0ICAgIH1cblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdH0sXG5cdFx0XHRpbnB1dFZhbExpc3RJc0RlbChpbmRleCl7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmlucHV0VmFsTGlzdC5zcGxpY2UoaW5kZXgsIDEpOyAvL+WIoOmZpHRhYlBhZ2Vqc29u55qE5YaF5a65XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuaW5wdXRWYWxMaXN0KTtcblx0XHRcdH0sXG5cdFx0XHRhZGRyZXNzY2hhbmdlKGUpIHtcblx0XHRcdCAgICAvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHQgICAgY29uc29sZS5sb2coZS5kYXRhLmpvaW4oJzsnKSlcblx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPWUuZGF0YS5qb2luKCc7Jyk7XG5cdFx0XHR9LFxuXHRcdFx0Y2xhc3NBdHRyX2V4dEJ1dHRvbihpbmRleCxpaW5kZXgpe1xuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0XHR2YXIgYmVmb3JlX2NsaWNrX2J1dHRvbiA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5iZWZvcmVfY2xpY2tfYnV0dG9uO1xuXHRcdFx0XHR2YXIgYnV0dG9uX2NhbGxiYWNrID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLmJ1dHRvbl9jYWxsYmFjaztcblx0XHRcdFx0aWYoIWJlZm9yZV9jbGlja19idXR0b24pe1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcImJlZm9yZV9jbGlja19idXR0b24tZXZlbnRfaWTkuLrnqbrvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoIWJ1dHRvbl9jYWxsYmFjayl7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OlwiYnV0dG9uX2NhbGxiYWNrLWV2ZW50X2lk5Li656m677yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XTtcblx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKGJlZm9yZV9jbGlja19idXR0b24sIGRhdGFfYXR0ciwgYnV0dG9uX2NhbGxiYWNrLCBpbmRleCxpaW5kZXgpO1xuXHRcdFx0fSxcblx0XHRcdGNsYXNzQXR0cl9BZGRQZXIoaW5kZXgsaWluZGV4KXtcblx0XHRcdFx0dmFyIHBhcmFtPXtpbmRleDppbmRleCxpaW5kZXg6aWluZGV4fTtcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdHVybDonLi4vc2VscHNuL2luZGV4P211bGl0PWZhbHNlJnBhcmFtPScrSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxuXHRcdFx0XHRcdGV2ZW50czp7XG5cdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhwYXJhbSk7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGRhdGEpO1xuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsSUQ9ZGF0YVswXS5Mb2dpbisnOycrZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0XHQgICAgZXZlbnRpZCA9IGV2ZW50aWQudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHQgICAgaWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjRcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICByY2xzaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiBkYXRhWzBdLkxvZ2luLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBhdHRyOiBbXSxcblx0XHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdC8vIHZhciBkYXRhX2F0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF07XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgJHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdFx0XHQgICAgfVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHRjbGFzc0F0dHJfQWRkUmVmKGUpe1xuXHRcdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuatpOWKn+iDvei/mOacquWunueOsO+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHQvLyB2YXIgdmFsdWU9dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlJlbENsc1tlLnRhcmdldC52YWx1ZV07XG5cdFx0XHRcdC8vIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT12YWx1ZTtcblx0XHRcdH0sXG5cdFx0XHRjbGFzc0F0dHJfQWRkUHJqKGluZGV4LGlpbmRleCl7XG5cdFx0XHRcdHZhciBwYXJhbT17aW5kZXg6aW5kZXgsaWluZGV4OmlpbmRleH07XG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHR1cmw6Jy4uL3NlbFByai9pbmRleD9yZWxhdGlvbj0tMSZwYXJhbT0nK0pTT04uc3RyaW5naWZ5KHBhcmFtKSxcblx0XHRcdFx0XHRldmVudHM6e1xuXHRcdFx0XHRcdFx0QWRkUGVyKGRhdGEscGFyYW0peyBcblx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocGFyYW0pO1xuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhkYXRhKTtcblx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbHVlPWRhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEPWRhdGFbMF0uSUQrJzsnK2RhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdHZhciBldmVudGlkID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLmFjdGlvbjtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0ICAgIGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0ICAgIGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIyXCIsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogZGF0YVswXS5JRCxcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogXCJcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogW10sXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgLy8gdmFyIGRhdGFfYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XTtcblx0XHRcdFx0XHRcdFx0ICAgICAgICAkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdHNhdmEoKXtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuZWRpdF9va19ldmVudClcblx0XHRcdFx0XHR0aGlzLk9LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KCk7XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHR0aGlzLmFkZCgpO1xuXHRcdFx0fSxcblx0XHRcdGFkZCgpe1xuXHRcdFx0XHR1bmkuc2hvd0xvYWRpbmcoe1xuXHRcdFx0XHRcdHRpdGxlOlwi5Yqg6L295LitLi4uXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHZhciByZXE9W107XG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRpZihhci5WYWx1ZT09J+ivt+mAieaLqScgfHwgYXIuVmFsdWU9PSfigJTigJTor7fpgInmi6nigJTigJQnKSBhci5WYWx1ZT0nJztcblx0XHRcdFx0XHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XG5cdFx0XHRcdCAgICAgICAgaWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXG5cdFx0XHRcdCAgICAgICAgXHRyZXEucHVzaCh7IG5hbWU6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xuXHRcdFx0XHQgICAgICAgIGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgbmFtZTogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlPycxJzonMCd9KTtcblx0XHRcdFx0ICAgICAgICBlbHNlIGlmKGFyLlR5cGU9PSflrZflhbgnIHx8IGFyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XG5cdFx0XHRcdFx0XHRcdGlmKGFyLnNlbGVjdD09dHJ1ZSl7IC8v5Yik5pat5LiL5ouJ5piv5ZCm5aSa6YCJXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHZhbFN0ciA9XCJcIjtcblx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIHYgaW4gYXIuVmFsdWUpe1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYodmFsU3RyKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIrPVwiO1wiO1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyKz1hci5WYWx1ZVt2XTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogdmFsU3RyfSk7XG5cdFx0XHRcdFx0XHRcdH1lbHNlXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWV9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdGlmICgoYXIuTm90RW1wdHkgPT0gJzEnIHx8IGFyLm5vdGVtcHR5ID09IHRydWUpICYmICFhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0Ly8gaWYoYXIubm90RW1wdHk9PScxJyl7XG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xuXHRcdFx0XHQgICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdCAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0XHRcdCAgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0ICAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdCAgICAgbWFzdGVyOiB7XG5cdFx0XHRcdCAgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgXG5cdFx0XHRcdCAgICAgfVxuXHRcdFx0XHR9O1xuXHRcdFx0XHQgXG5cdFx0XHRcdHZhciBkYXRhSW5mbz17XG5cdFx0XHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgZGF0YV9vYmpfaWQ6ICcnLCBtYXN0ZXJjbHNpZDogJycsXG5cdFx0XHRcdCAgICByZXE6IEpTT04uc3RyaW5naWZ5KHJlcSksIHVwZmlsZTogSlNPTi5zdHJpbmdpZnkoW10pLCBwb3N0X2RhdGE6IEpTT04uc3RyaW5naWZ5KHt9KSxcblx0XHRcdFx0ICAgIGNvbXBvc2U6IEpTT04uc3RyaW5naWZ5KFtdKSwgcmVmZGF0YXN0b3JlOiBKU09OLnN0cmluZ2lmeShbXSksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLCBcblx0XHRcdFx0XHRub3RfdHJpZ2dlcl9zeXNfZXZlbnQ6ICcnXG5cdFx0XHRcdH07XG5cdFx0XHRcdFxuXHRcdFx0XHQvLyByZXR1cm5cblx0XHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYWRkY2xhc3NhdHRyJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhLkFjdGlvbik7XG5cdFx0XHRcdFx0XHRpZihhY3Rpb24ucmV0PT0nMCcpe1xuXHRcdFx0XHRcdFx0XHRpZihhY3Rpb24ucmVzdWx0X3R5cGU9PScwJyl7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7dGl0bGU6YWN0aW9uLnJlc3VsdCxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQvLyBcIntcInJldFwiOjAsIFwicmVzdWx0X3R5cGVcIjowLCBcInJlc3VsdFwiOlwi5Yib5bu65oiQ5YqfMTIzMTIzMTIzXCIsXCJpbmZvXCI6XCJcIn1cIlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly/liLfmlrBcblx0XHRcdFx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcblx0XHRcdFx0XHRcdFx0dXJsOicuLi9tb2RhbC9jbGFzc0F0dHI/cGFyYW09JytKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLnBhcmFtKStcIiZ0aXRsZW5hbWU9XCIrdGhpcy4kZGF0YS50aXRsZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHQvLyB0aGlzLmNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkuY2F0Y2goZXg9Pntcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0Y2xhc3NfYXR0cl9pbml0KCl7XG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxuXHRcdFx0XHR2YXIgbmV3YXR0cmxpc3QgPSBbXTtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgdmFyIG9wZW4gPSBhdHRybGlzdFtpXS5vcGVuO1xuXHRcdFx0XHQgICAgICAgIHZhciBuYW1lID0gYXR0cmxpc3RbaV0uYXR0cmdyb3VwX25hbWU7XG5cdFx0XHRcdCAgICAgICAgdmFyIGF0dHJzID0gYXR0cmxpc3RbaV0uYXR0cnM7XG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdFx0ICAgICAgICAgICAgdmFyIGNsc2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Rbc107XG5cdFx0XHRcdCAgICAgICAgICAgIGlmIChuYW1lID09IGNsc2F0dHIuTmFtZSkge1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBbXTtcblx0XHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXR0cnMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IGNsc2F0dHIuQXR0ci5sZW5ndGg7IGwrKykge1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2EgPSBjbHNhdHRyLkF0dHJbbF07XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyc1tqXS5hdHRyID09IGNhLk5hbWUpIHtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmFjdGlvbiA9IGF0dHJzW2pdLmFjdGlvbjtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmVkaXQgPSBhdHRyc1tqXS5lZGl0O1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Eubm90ZW1wdHkgPSBhdHRyc1tqXS5ub3RlbXB0eTtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmV4dF9idXR0b24gPSBhdHRyc1tqXS5leHRfYnV0dG9uO1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYnV0dG9uX2ltZyA9IGF0dHJzW2pdLmJ1dHRvbl9pbWc7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25fdG9vbHRpcCA9IGF0dHJzW2pdLmJ1dHRvbl90b29sdGlwO1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYmVmb3JlX2NsaWNrX2J1dHRvbiA9IGF0dHJzW2pdLmJlZm9yZV9jbGlja19idXR0b247XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25fY2FsbGJhY2sgPSBhdHRyc1tqXS5idXR0b25fY2FsbGJhY2s7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5oaWRkZW4gPSBhdHRyc1tqXS5oaWRkZW47XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5zZWxlY3QgPSBhdHRyc1tqXS5zZWxlY3Q9PXVuZGVmaW5lZD9mYWxzZTphdHRyc1tqXS5zZWxlY3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPVwiXCI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuZGljdGl0ZW0pe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RpdGVtbGlzdD1bXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgPSAwOyBkIDwgY2EuZGljdGl0ZW0ubGVuZ3RoOyBkKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0ubGFiZWw9Y2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS52YWx1ZT1jYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5zZWxlY3QgPT0gdHJ1ZSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBbXTsvL2NhLmRpY3RpdGVtWzBdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivt+mAieaLqSc7Ly9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSfml6XmnJ8nIHx8IGNhLlR5cGU9PSfml7bpl7QnKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBub3dEYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkYXRlID0ge3llYXI6IG5vd0RhdGUuZ2V0RnVsbFllYXIoKSxtb250aDogbm93RGF0ZS5nZXRNb250aCgpICsgMSxkYXk6IG5vd0RhdGUuZ2V0RGF0ZSgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBkYXRlLnllYXIgKyAnLScgKyAoZGF0ZS5tb250aCA+PSAxMCA/IGRhdGUubW9udGggOiAnMCcgKyBkYXRlLm1vbnRoKSArICctJyArIChkYXRlLmRheSA+PSAxMCA/IGRhdGUuZGF5IDogJzAnICsgZGF0ZS5kYXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByZWxDbHNMaXN0PVtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHJfcmVzY2xzID0gY2EuUmVsQ2xzLnNwbGl0KCcsJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIGlpIGluIGF0dHJfcmVzY2xzKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlc2NscyA9IGF0dHJfcmVzY2xzW2lpXS5zcGxpdCgnfCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZWxDbHNMaXN0LnB1c2goe2lkOnJlc2Nsc1swXSxuYW1lOnJlc2Nsc1sxXX0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuUmVsQ2xzTGlzdCA9IHJlbENsc0xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7cnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n55yB5biC5Yy6Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivt+mAieaLqSc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLnB1c2goY2EpO1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgICAgICAgICAgbmV3YXR0cmxpc3QucHVzaCh7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgQmtDb2xvcjogY2xzYXR0ci5Ca0NvbG9yLFxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIEhhc0FjZTogY2xzYXR0ci5IYXNBY2UsXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgSW1nRm9udFN0eWxlOiBjbHNhdHRyLkltZ0ZvbnRTdHlsZSxcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBOYW1lOiBjbHNhdHRyLk5hbWUsXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgT3JkZXI6IGNsc2F0dHIuT3JkZXIsXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgT3Blbjogb3Blbixcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBBdHRyOiBhdHRyLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udHJvbF9zdHlsZTp0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmNvbnRyb2xfc3R5bGUsXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZV9wX3dkaXRoOnRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYudGl0bGVfcF93ZGl0aFxuXHRcdFx0XHQgICAgICAgICAgICAgICAgfSlcblx0XHRcdFx0ICAgICAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgIH1cblx0XHRcdFx0ICAgIGlmIChuZXdhdHRybGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdCAgICAgICAgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gbmV3YXR0cmxpc3Q7XG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0dmFyIHJlcT1bXTtcblx0XHRcdFx0ICAgIGlmICh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmKSB7XG5cdFx0XHRcdCAgICAgICAgIGlmICh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQgICAgICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcblx0XHRcdFx0ICAgICAgICAgICAgLy8gJGVsLmZpbmQoJy5hdHRyX2ZpZWxkJykucHJvcCgncmVhZG9ubHknLCB0cnVlKTtcblx0XHRcdFx0ICAgICAgICAgICAgLy8gJGVsLmZpbmQoJy5hdHRyX2ZpZWxkJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcblx0XHRcdFx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBhdHRybGlzdFtpXS5hdHRyc1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgdmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuYXR0ciwgdmFsOiBhci52YWx1ZT9hci52YWx1ZTonJyB9KTtcblx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0XHR9XHRcblx0XHRcdFx0XHRcblx0XHRcdFx0XHR2YXIgZXZlbnRsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5ldmVudDtcblx0XHRcdFx0XHRpZiAoZXZlbnRsaXN0KSB7XG5cdFx0XHRcdFx0ICAgIGlmIChldmVudGxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudGxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHQgICAgICAgICAgICBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfb2snKSB7XG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEuZWRpdF9va19ldmVudCA9IGV2ZW50bGlzdFtpXTtcblx0XHRcdFx0XHQgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnaW5pdGlhbCcpIHtcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudCA9IGV2ZW50bGlzdFtpXTtcblx0XHRcdFx0XHQgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnYmVmb3JlX3NlbGVjdF9jb21wb3NlJykge1xuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfc2VsZWN0X2NvbXBvc2VfZXZlbnQgPSBldmVudGxpc3RbaV0uc2NyaXBfaWQ7XG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEuZWRpdF9jb21wb3NlX2Nsc19pZCA9IGV2ZW50bGlzdFtpXS5jb21wb3NlX2Nsc19pZDtcblx0XHRcdFx0XHQgICAgICAgICAgICB9XG5cdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcSk7XG5cdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQpIHtcblx0XHRcdFx0XHQgICAgdmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50LnNjcmlwX2lkO1xuXHRcdFx0XHRcdCAgICB2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHQgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0ICAgICAgICBlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdCAgICAgICAgcHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHQgICAgICAgIHJjbHNpZDogJycsXG5cdFx0XHRcdFx0ICAgICAgICByb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdCAgICAgICAgdXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHQgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdCAgICAgICAgb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0ICAgICAgICBhdHRyOiByZXEsXG5cdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHQgICAgdGhpcy5pbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlKTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QpO1xuXHRcdFx0XHRcdFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuacquaJvuWIsOWPr+aYvuekuueahOeahOWxnuaAp1wiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0aW5pX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKXtcblx0XHRcdFx0dmFyIHBhcmFtID0ge1xuXHRcdFx0XHQgICAgRWRpdFN0eWxlOiB0aGlzLiRkYXRhLnBhcmFtLkVkaXRfZGxnLk5hbWUsXG5cdFx0XHRcdCAgICBWaWV3U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uRWRpdF9kbGcuTmFtZSxcblx0XHRcdFx0ICAgIE5vdFRyaWdnZXJTeXNFdmVudDogMCxcblx0XHRcdFx0ICAgIGVudmlyb21lbnQ6IHtcblx0XHRcdFx0ICAgICAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQgICAgICAgICdidXR0b24nOiAndG9wJywgICAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHQgICAgICAgIG1hc3Rlcjoge1xuXHRcdFx0XHQgICAgICAgICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cdFx0XHRcdCAgICAgICAgICAgIC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGlucHV0cGFyYW1ldGVyID0gJyc7XG5cdFx0XHRcdHZhciBnbG9iYWxfYXR0ciA9ICcnO1xuXHRcdFx0XHRcblx0XHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICBlZHR5cGU6IGluZm8uZWR0eXBlLCBldmVudGlkOiBpbmZvLmV2ZW50aWQsIHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQsXG4gICAgICAgICAgICAgICAgICAgIHJjbHNpZDogaW5mby5yY2xzaWQsIHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcbiAgICAgICAgICAgICAgICAgICAgYXR0cjogSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSwgZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkocGFyYW0pLCBpbnB1dHBhcmFtZXRlcjogaW5wdXRwYXJhbWV0ZXIsIGdsb2JhbF9hdHRyOiBnbG9iYWxfYXR0clxuICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcblx0XHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcblx0XHRcdFx0XHRcdGlmIChhY3Rpb25saXN0KSB7XG5cdFx0XHRcdFx0XHQgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhY3Rpb25saXN0Lmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2pdXG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBhY3Rpb25fdHlwZSA9IGFjdGlvbi5hY3Rpb25fdHlwZTtcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0ICAgICAgICBpZiAoYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHZhciB2YWwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIHZhbCA9IEpTT04ucGFyc2UodmFsdWUpO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2codmFsKTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGEgPSAwOyBhIDwgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBsID0gMDsgbCA8IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFthXS5BdHRyLmxlbmd0aDsgbCsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYSA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFthXS5BdHRyW2xdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsW2ldLmF0dHIgID09IGNhLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n5a2X5YW4JyB8fCBjYS5UeXBlPT0n5a2X5YW4LeWtl+espuS4sicpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdD1bXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgZCBpbiB2YWxbaV0uY2hvaWNlX2xpc3Qpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID12YWxbaV0uY2hvaWNlX2xpc3RbZF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcIkNOX1NfTkFNRVwiOnZhbCxcIk5hbWVcIjp2YWwsXCJsYWJlbFwiOnZhbCxcInZhbHVlXCI6dmFsfSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyW2pdLmRpY3RpdGVtID0gdmFsW2ldLmNob2ljZV9saXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY2EudmFsdWUgPSB2YWxbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaCh2YWxbaV0pO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHZhbFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gdmFsW2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgICAgICBpZiAoYWN0aW9uX3R5cGUgPT0gJ29wZW5fc2VsZWN0X3VzZXJkbGcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMlwiLGNvbnRlbnQ6XCJvcGVuX3NlbGVjdF91c2VyZGxn6L+Z5LiqYWN0aW9uX3R5cGXov5jmnKrlpITnkIbvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMi4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHQgICAgRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sZGF0YV9hdHRyKXtcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHQgICAgXHR2YXIgZW52aXJvbWVudCA9IHtcblx0XHQgICAgXHQgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHQgICAgXHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0ICAgIFx0ICAgICdidXR0b24nOiAndG9wJywgICAvLyB0b3AvYm90dG9tXG5cdFx0ICAgIFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHQgICAgXHQgICAgbWFzdGVyOiB7XG5cdFx0ICAgIFx0ICAgICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cdFx0ICAgIFx0ICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXG5cdFx0ICAgIFx0ICAgIH1cblx0XHQgICAgXHR9O1xuXHRcdCAgICBcdGlmKGRhdGFfYXR0cil7XG5cdFx0XHRcdFx0ZW52aXJvbWVudC5lZGl0X2RsZyA9IHtcblx0XHRcdFx0XHQgICAgdHlwZTogJ3NtYWxsJywvL+Wwj+eql+WPo1xuXHRcdFx0XHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwvL+W9k+WJjeaVsOaNruexu2lkXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChkYXRhX2F0dHIpIHtcblx0XHRcdFx0XHQgICAgZW52aXJvbWVudC5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7Zcblx0XHRcdFx0XHQgICAgICAgIG5hbWU6IGRhdGFfYXR0ci5OYW1lLC8v5a2X5q615bGe5oCnXG5cdFx0XHRcdFx0ICAgICAgICB0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsLy/mmL7npLrmlofmnKxcblx0XHRcdFx0XHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4Rcblx0XHRcdFx0XHQgICAgICAgIHR5cGU6IGRhdGFfYXR0ci5UeXBlLC8v5a2X5q6157G75Z6LXG5cdFx0XHRcdFx0ICAgICAgICByZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LC8v5piv5ZCm5Y+q6K+7XG5cdFx0XHRcdFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xuXHRcdFx0XHRcdCAgICAgICAgYnV0dG9uX3Rvb2x0aXA6IGRhdGFfYXR0ci5idXR0b25fdG9vbHRpcC8v5byV55So5oyJ6ZKu55qEdG9vbHRpcFxuXHRcdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0ICAgIFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdCAgICAgICAgICAgIGVkdHlwZTogaW5mby5lZHR5cGUsIGV2ZW50aWQ6IGluZm8uZXZlbnRpZCwgcHJvamVjdGlkOiBpbmZvLnByb2plY3RpZC5yZXBsYWNlKCd7JywnJykucmVwbGFjZSgnfScsJycpLFxuXHRcdCAgICAgICAgICAgIHJjbHNpZDogaW5mby5yY2xzaWQsIHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcblx0XHQgICAgICAgICAgICBhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgaW5wdXRwYXJhbWV0ZXI6ICcnLCBnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcblx0XHQgICAgICAgIH1cblx0XHQgICAgXHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0ICAgIFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHQgICAgXHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdCAgICBcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0ICAgIFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XG5cdFx0XHRcdFx0XHRcdFx0XHRcblx0XHQgICAgXHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XG5cdFx0ICAgIFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdGlvbmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICB2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtpXTtcblx0XHQgICAgXHRcdFx0ICAgICAgICBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIHZhciByZXN1bHQgPSBhY3Rpb24udmFsdWU7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2NdLkF0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5OYW1lPT1yZXN1bHRbaV0uYXR0cil7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5UeXBlPT0n5a2X5YW4JyB8fCBhdHRyW2pdLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCl7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWwgPXJlc3VsdFtpXS5jaG9pY2VfbGlzdFtkXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiTmFtZVwiOnZhbCxcImxhYmVsXCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyW2pdLmRpY3RpdGVtID0gcmVzdWx0W2ldLmNob2ljZV9saXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbY10uQXR0cjtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUrJz09JytyZXN1bHRbaV0uYXR0cik7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0aWYoYXR0cltqXS5OYW1lPT1yZXN1bHRbaV0uYXR0cil7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRcdH1cblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0fVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH0pLmxlbmd0aCkge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDE7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIH1cblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfSBlbHNlIGlmIChkYXRhLmFjdGlvbltpXS5hY3Rpb25fdHlwZSA9PSAnc2V0X2dsb2JhbF9hdHRyJykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgJHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIgPSBkYXRhLmFjdGlvbltpXS52YWx1ZSB8fCBbXTtcblx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgfVxuXHRcdCAgICBcdFx0XHR9XG5cdFx0ICAgIFx0XHRcdFxuXHRcdCAgICBcdFx0XHRpZiAoZGF0YS5yZXN1bHQpIHtcblx0XHQgICAgXHRcdFx0ICAgIHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcblx0XHQgICAgXHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbY10uQXR0cjtcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0XHRpZihhdHRyW2pdLk5hbWU9PXJlc3VsdFtpXS5hdHRyKXtcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0XHR9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHR9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICByZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfSkubGVuZ3RoKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGxlbmd0aCA9IDE7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmIChsZW5ndGggPT0gMCkge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgaWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgfVxuXHRcdCAgICBcdFx0XHR9XG5cdFx0ICAgIFx0XHR9ZWxzZXtcblx0XHQgICAgXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zXCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHQgICAgXHRcdH1cblx0XHQgICAgXHR9KS5jYXRjaChleD0+e1xuXHRcdCAgICBcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdCAgICBcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHQgICAgXHR9KTtcblx0XHQgICAgfSxcblx0XHRcdE9LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KCl7XG5cdFx0ICAgIFx0dmFyIGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0XHRcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxuXHRcdFx0XHQgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHQgICAgbWFzdGVyOiB7XG5cdFx0XHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxuXHRcdFx0XHQgICAgICAgIFxuXHRcdFx0XHQgICAgfVxuXHRcdFx0XHR9O1xuXHRcdCAgICBcdFxuXHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9va19ldmVudC5zY3JpcF9pZDtcblx0XHRcdFx0dmFyIHJlcT1bXTtcblx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+36YCJ5oupJyB8fCBhci5WYWx1ZT09J+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHRcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcblx0XHRcdFx0ICAgICAgICBpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcblx0XHRcdFx0ICAgICAgICBcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xuXHRcdFx0XHQgICAgICAgIGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XG5cdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZSB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0ICAgIFx0aWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aCA+IDApIHtcblx0XHQgICAgXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGkrKykge1xuXHRcdCAgICBcdCAgICAgICAgaWYgKCFyZXEuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XG5cdFx0ICAgIFx0ICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIgPT0gcy5uYW1lXG5cdFx0ICAgIFx0ICAgICAgICB9KS5sZW5ndGgpIHtcblx0XHQgICAgXHQgICAgICAgICAgICBsZW5ndGggPSAxO1xuXHRcdCAgICBcdCAgICAgICAgICAgIHJlcS5wdXNoKHsgJ2F0dHInOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS5hdHRyLCAndmFsJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0udmFsdWUgfSk7XG5cdFx0ICAgIFx0ICAgICAgICB9XG5cdFx0ICAgIFx0ICAgIH1cblx0XHQgICAgXHR9XG5cdFx0ICAgIFx0dmFyIGluZm8gPSB7XG5cdFx0ICAgIFx0ICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0ICAgIFx0ICAgIGVkdHlwZTogXCIwXCIsXG5cdFx0ICAgIFx0ICAgIHByb2plY3RpZDogJycsXG5cdFx0ICAgIFx0ICAgIHJjbHNpZDogJycsXG5cdFx0ICAgIFx0ICAgIHJvYmppZDogJycsXG5cdFx0ICAgIFx0ICAgIHVzZXJsb2dpbjogJycsXG5cdFx0ICAgIFx0ICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdCAgICBcdCAgICBvYmppZDogXCJcIixcblx0XHQgICAgXHQgICAgYXR0cjogcmVxLFxuXHRcdCAgICBcdH1cblx0XHQgICAgXHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBpbmZvLmVkdHlwZSwgZXZlbnRpZDogaW5mby5ldmVudGlkLCBwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLHJjbHNpZDogaW5mby5yY2xzaWQsIFxuXHRcdFx0XHRcdHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcblx0XHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgZ2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXG5cdFx0ICAgICAgICB9XG5cdFx0ICAgIFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdCAgICBcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XG5cdFx0ICAgIFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHQgICAgXHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcblx0XHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1x0XHRcblx0XHQgICAgXHRcdFx0dmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xuXHRcdCAgICBcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuXHRcdCAgICBcdFx0XHQgICAgLy8gc2VsZi5jbGFzc19hdHRyX2VsZS5maW5kKCcuYXR0cl9maWVsZFtkYXRhLWZpZWxkPVwiJyArIHJlc3VsdFtpXS5hdHRyICsgJ1wiXScpLnZhbChyZXN1bHRbaV0udmFsdWUpLmRhdGEoJ3ZhbCcsIHJlc3VsdFtpXS52YWx1ZSk7XG5cdFx0ICAgIFx0XHRcdCAgICB2YXIgbGVuZ3RoID0gMDtcblx0XHQgICAgXHRcdFx0ICAgIGlmICghdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgcmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdCAgICBcdFx0XHQgICAgfSkubGVuZ3RoKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgbGVuZ3RoID0gMTtcblx0XHQgICAgXHRcdFx0ICAgICAgICB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0ICAgIFx0XHRcdCAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICBpZiAobGVuZ3RoID09IDApIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgIH1cblx0XHQgICAgXHRcdFx0ICAgIH1cblx0XHQgICAgXHRcdFx0fVxuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR0aGlzLmFkZCgpO1xuXHRcdCAgICBcdFx0fWVsc2V7XG5cdFx0ICAgIFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNFwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0ICAgIFx0XHR9XG5cdFx0ICAgIFx0fSkuY2F0Y2goZXg9Pntcblx0XHQgICAgXHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHQgICAgXHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNC4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0ICAgIFx0fSk7XG5cdFx0ICAgIH0sXG5cdFx0ICAgIERhdGFPYmpSdW5DdXN0b21FdmVudF9SZXR1cm4oZXZlbnRpZCxkYXRhX2F0dHIsYnV0dG9uX2NhbGxiYWNrLGluZGV4LGlpbmRleCl7XG5cdFx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xuXHRcdFx0XHQgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0ICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0ICAgIG1hc3Rlcjoge1xuXHRcdFx0XHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblx0XHRcdFx0ICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdH07XG5cdFx0XHRcdHZhciByZXE9W107XG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHQgICAgICAgIGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxuXHRcdFx0XHQgICAgICAgIFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XG5cdFx0XHRcdCAgICAgICAgZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcblx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHQgICAgICAgIGlmICghcmVxLmZpbHRlcihmdW5jdGlvbiAocykge1xuXHRcdFx0XHQgICAgICAgICAgICByZXR1cm4gdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciA9PSBzLm5hbWVcblx0XHRcdFx0ICAgICAgICB9KS5sZW5ndGgpIHtcblx0XHRcdFx0ICAgICAgICAgICAgbGVuZ3RoID0gMTtcblx0XHRcdFx0ICAgICAgICAgICAgcmVxLnB1c2goeyAnYXR0cic6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIsICd2YWwnOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS52YWx1ZSB9KTtcblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGV4dGluZm8gPSBlbnZpcm9tZW50O1xuXHRcdFx0XHRleHRpbmZvLmVkaXRfZGxnID0ge1xuXHRcdFx0XHQgICAgdHlwZTogJ3NtYWxsJywvL+Wwj+eql+WPo1xuXHRcdFx0XHQgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsLy/lvZPliY3mlbDmja7nsbtpZFxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhX2F0dHIpIHtcblx0XHRcdFx0ICAgIGV4dGluZm8uZWRpdF9kbGcuZm9ybV9jb250cm9sID0gey8v5omA5bGe55qE6KGo5Y2V5o6n5Lu2XG5cdFx0XHRcdCAgICAgICAgbmFtZTogZGF0YV9hdHRyLk5hbWUsLy/lrZfmrrXlsZ7mgKdcblx0XHRcdFx0ICAgICAgICB0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsLy/mmL7npLrmlofmnKxcblx0XHRcdFx0ICAgICAgICBncm91cF9uYW1lOiBkYXRhX2F0dHIuR3JvdXBOYW1lLC8v5bGe5oCn57uEXG5cdFx0XHRcdCAgICAgICAgdHlwZTogZGF0YV9hdHRyLlR5cGUsLy/lrZfmrrXnsbvlnotcblx0XHRcdFx0ICAgICAgICByZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LC8v5piv5ZCm5Y+q6K+7XG5cdFx0XHRcdCAgICAgICAgYnV0dG9uX2ltZzogZGF0YV9hdHRyLmJ1dHRvbl9pbWcsLy/lvJXnlKjmjInpkq7nmoTlm77moIdcblx0XHRcdFx0ICAgICAgICBidXR0b25fdG9vbHRpcDogZGF0YV9hdHRyLmJ1dHRvbl90b29sdGlwLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRcdGVkdHlwZTogIFwiMFwiLCBldmVudGlkOiBldmVudGlkLCBwcm9qZWN0aWQ6ICcnLHJjbHNpZDogJycsIHJvYmppZDogJycsIHVzZXJsb2dpbjogJycsIFxuXHRcdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCBvYmppZDogJycsYXR0cjogSlNPTi5zdHJpbmdpZnkocmVxKSwgXG5cdFx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZXh0aW5mbyksIGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKVxuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XG5cdFx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHRcdFx0XHRcdGlmIChkYXRhICE9IFwiXCIpIHtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdHZhciBhY3Rpb25zID0gZGF0YS5hY3Rpb247XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25zKTtcblx0XHRcdFx0XHRcdGlmIChhY3Rpb25zKSB7XG5cdFx0XHRcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBhY3Rpb24gPSBhY3Rpb25zW2ldO1xuXHRcdFx0XHRcdFx0ICAgICAgICB2YXIgdmFsID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0ICAgICAgICB2YXIgZW52aXJvbWVudCA9IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpO1xuXHRcdFx0XHRcdFx0ICAgICAgICBcblx0XHRcdFx0XHRcdCAgICAgICAgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9wYW5lbCcpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgdmFyIGQgPSBkaWFsb2coe1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgdGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICBjb250ZW50OiBhY3Rpb24uYWN0aW9uX3R5cGUgKyAn5q2kYWN0aW9u5bCa5pyq5aSE55CG77yBJ1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICB9KTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgZC5zaG93KCk7XG5cdFx0XHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3NlbGVjdF91c2VyZGxnJykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIHN0eWxlID0gdmFsLnN0eWxlO1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gc3R5bGUgPT0gJ3VzZXInID8gJ+mAieaLqeS6uuWRmCcgOiBzdHlsZSA9PSAnZGVwYXJ0bWVudCcgPyAn6YCJ5oup6YOo6ZeoJyA6IHN0eWxlID09ICdyb2xlJyA/ICfpgInmi6nop5LoibInIDogJydcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcGFyYW09e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpbmRleDogaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlpbmRleDppaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJ1dHRvbl9jYWxsYmFjazpidXR0b25fY2FsbGJhY2ssXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlcTpyZXEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRhdGFfYXR0cjpkYXRhX2F0dHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0dXJsOicuLi9zZWxwc24vaW5kZXg/bXVsaXQ9ZmFsc2UmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbSksXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdGV2ZW50czp7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdFx0QWRkUGVyKGRhdGEscGFyYW0peyBcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdGNvbnNvbGUubG9nKGRhdGEpO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdFx0dmFyIGNhbGxiYWNrX2V2ZW50aWQgPSBwYXJhbS5idXR0b25fY2FsbGJhY2sudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgZXZlbnRpZDogY2FsbGJhY2tfZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgcmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICByb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGF0dHI6IHBhcmFtLnJlcSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpbnB1dHBhcmFtZXRlcjogZGF0YVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIHBhcmFtLmRhdGFfYXR0cik7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdFx0fVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHR9XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB9KTtcdFxuXHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9kYXRhX3F1ZXJ5X2RsZycpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFxuXHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9jb21tb25fZGxnJykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIGQgPSBkaWFsb2coe1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRpdGxlOiAnPGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1pbmZvLWNpcmNsZVwiPjwvaT4gJyArICfmj5DnpLonLFxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB9KTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGQuc2hvdygpO1xuXHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9wcm9qZWN0X3F1ZXJ5X2RsZycpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIC8vY29uc29sZS5sb2coYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSk7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAvL2NvbnNvbGUubG9nKGFjdGlvbi52YWx1ZS5tdWxpdF9zZWxlY3QpO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyIHByaVJlbCA9ICctMSc7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5YWo6YOo55u45YWzJylcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBwcmlSZWwgPSAnMCc7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHotJ/otKPnmoTpobnnm64nKVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICcxJztcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWIm+W7uueahCcpXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzInO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5Y+C5LiO55qEJyB8fCBhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlj4LliqDnmoQnKVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICczJztcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWFs+azqOeahCcpXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzQnO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5LiL5bGe55qE6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0cHJpUmVsID0gJzUnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcGFyYW1fPXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5kZXg6IGluZGV4LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpaW5kZXg6aWluZGV4LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRidXR0b25fY2FsbGJhY2s6YnV0dG9uX2NhbGxiYWNrLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXE6cmVxXG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVybDonLi4vc2VsUHJqL2luZGV4P3JlbGF0aW9uPScrcHJpUmVsKycmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbV8pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRldmVudHM6e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEFkZFBlcihkYXRhLHBhcmFtKXsgXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEPWRhdGFbMF0uSUQrJzsnK2RhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gcGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYWxsYmFja19ldmVudGlkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGV2ZW50aWQ6IGNhbGxiYWNrX2V2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIGVkdHlwZTogXCIyXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHByb2plY3RpZDogZGF0YVswXS5JRCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgcmNsc2lkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICByb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHVzZXJsb2dpbjogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgYXR0cjogcGFyYW0ucmVxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgJHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHQgICAgICAgIH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgZCA9IGRpYWxvZyh7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgY29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIH0pO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZC5zaG93KCk7XG5cdFx0XHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLo1LjJcIixjb250ZW50OiAn6LCD55SoIGJlZm9yZV9jbGlja19idXR0b24g6ISa5pys6L+U5Zue56m677yMZXZlbnRfaWQnICsgZXZlbnRpZCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNVwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekujUuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHR9KTtcblx0XHQgICAgfSxcblx0XHQgICAgXG5cdFx0XHRcblx0XHR9XG5cdH1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n"); |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 50));\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 _pickerAddress = _interopRequireDefault(__webpack_require__(/*! ../../js/pickerAddress/pickerAddress.vue */ 53));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);}_next(undefined);});};}var _default =\n{\n components: {\n pickerAddress: _pickerAddress.default },\n\n data: function data() {\n return {\n title: '新增',\n param: {},\n classAttrList: [],\n classGridStyle: [],\n edit_inital_event: \"\", //弹窗初始化事件ID\n edit_ok_event: \"\", //弹窗点击OK 触发事件ID\n edit_select_compose_event: \"\", //选择组成对象时调用\n edit_compose_cls_id: \"\",\n global_attr: [],\n refdatastore: [], //引用数据存储区// {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n inputValList: [{ Name: \"test\" }, { Name: \"test2\" }, { Name: \"test3\" }, { Name: \"test4\" }, { Name: \"test5\" }, { Name: \"test6\" }, { Name: \"test7\" }] };\n\n },\n onLoad: function onLoad(options) {\n // console.log(options);\n uni.setNavigationBarTitle({ title: options.titlename }); //设置顶部标题 \n var param = JSON.parse(options.param);\n this.$data.title = param.Add_BtnName ? param.Add_BtnName : options.titlename; //设置按钮文字\n // console.log(param);\n if (!param.EditDlgMode) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置编辑窗口,请重新配置!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!param.Edit_dlg.Name) {\n uni.showModal({ title: \"提示\", content: \"该功能点未配置窗口样式,请重新配置!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n this.$data.param = param;\n var edit_dlg = {\n Model: param.EditDlgMode,\n Name: param.Edit_dlg.Name };\n\n var dataInfo = {\n class_id: param.clsid };\n\n var $this = this;\n $this.$store.state.thisareaFuncID = param.clsid;\n // console.log($this.$store.getters.getclassAttrList);\n //获取\n if ($this.$store.getters.getclassAttrList) {\n $this.$data.classAttrList = $this.$store.getters.getclassAttrList.data;\n $this.classGridStyleInfo();\n } else\n $this.$store.dispatch('classAttrList', dataInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n $this.$data.classAttrList = success.data;\n\n $this.classGridStyleInfo();\n } else {\n uni.showModal({ title: \"错误1\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误1.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n\n },\n methods: {\n cancel: function cancel(e) {\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\n },\n classGridStyleInfo: function classGridStyleInfo() {var _this = this;return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var $this, gridstyleInfo;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:\n $this = _this;\n gridstyleInfo = {\n class_id: $this.$data.param.clsid,\n name: $this.$data.param.Edit_dlg.Name,\n type: '2' };\n\n $this.$store.state.thisEditName = $this.$data.param.Edit_dlg.Name;\n // console.log($this.$store.getters.getclassGridStyleInfo);\n //获取\n if ($this.$store.getters.getclassGridStyleInfo) {\n $this.$data.classGridStyle = $this.$store.getters.getclassGridStyleInfo.data;\n $this.class_attr_init();\n } else {\n //console.log(gridstyleInfo);\n $this.$store.dispatch('classGridStyleInfo', gridstyleInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n success.data.StyleDef = JSON.parse(success.data.StyleDef);\n $this.$data.classGridStyle = success.data;\n\n $this.class_attr_init();\n } else {\n uni.showModal({ title: \"错误1.2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/classAttr.vue:482\");\n uni.showModal({ title: \"错误1.3\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n }case 4:case \"end\":return _context.stop();}}}, _callee);}))();\n },\n ontap: function ontap(e) {var _this2 = this; //扫码功能\n //console.log(e.target)\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n });\n },\n onarrow: function onarrow(index, open) {\n // console.log(index+'--'+open);\n this.$data.classAttrList[index].Open = open == true ? false : true;\n },\n ondateTime: function ondateTime(e) {\n //console.log(e.target)\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n },\n onchange: function onchange(e) {\n __f__(\"log\", e.target, \" at pages/modal/classAttr.vue:503\");\n var value = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n __f__(\"log\", data_attr, \" at pages/modal/classAttr.vue:506\");\n if (value.Name != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n __f__(\"log\", this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/classAttr.vue:509\");\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n\n },\n onchange2: function onchange2(item, value, delvalue) {\n // console.log(item);\n // console.log(value);\n // console.log(delvalue);\n if (item.length == 0) {//为空时,清空属性value\n var index,iindex,dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n if (delvalue[0].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n this.$data.classAttrList[i].Attr[j].Value = \"\";\n }\n }\n }\n }\n }\n\n for (var v in item) {\n var index,iindex,dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n for (var d in this.$data.classAttrList[i].Attr[j].dictitem) {\n if (item[v].Name == this.$data.classAttrList[i].Attr[j].dictitem[d].Name) {\n index = i;iindex = j;dindex = d;\n }\n }\n }\n }\n var itemvalue = item[v];\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n\n __f__(\"log\", data_attr, \" at pages/modal/classAttr.vue:576\");\n if (itemvalue.Name != data_attr.Value) {\n this.$data.classAttrList[index].Attr[iindex].Value = value;\n __f__(\"log\", this.$data.classAttrList[index].Attr[iindex].Value, \" at pages/modal/classAttr.vue:579\");\n var eventid = this.$data.classAttrList[index].Attr[iindex].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串')\n req.push({ attr: ar.Name, val: itemvalue.Name });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n }\n\n\n },\n onevent: function onevent(e) {\n // console.log(e.target);\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n // console.log(data_attr);\n if (e.target.value != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info, data_attr);\n }\n }\n\n },\n oncheck: function oncheck(e) {\n // console.log(e.target);\n var ischecked = e.target.dataset.ischeck ? false : true;\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n // console.log(data_attr);\n if (ischecked != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value ? ar.Value : '' });\n\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.DataObjRunCustomEvent(info);\n }\n }\n\n },\n inputValListIsDel: function inputValListIsDel(index) {\n // console.log(index);\n this.$data.inputValList.splice(index, 1); //删除tabPagejson的内容\n // console.log(this.$data.inputValList);\n },\n addresschange: function addresschange(e) {\n // console.log(e.target);\n __f__(\"log\", e.data.join(';'), \" at pages/modal/classAttr.vue:710\");\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.data.join(';');\n },\n classAttr_extButton: function classAttr_extButton(index, iindex) {\n var $this = this;\n var before_click_button = $this.$data.classAttrList[index].Attr[iindex].before_click_button;\n var button_callback = $this.$data.classAttrList[index].Attr[iindex].button_callback;\n if (!before_click_button) {\n uni.showModal({ title: \"提示\", content: \"before_click_button-event_id为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n if (!button_callback) {\n uni.showModal({ title: \"提示\", content: \"button_callback-event_id为空!\", showCancel: false, confirmText: \"取消\" });\n return;\n }\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n this.DataObjRunCustomEvent_Return(before_click_button, data_attr, button_callback, index, iindex);\n },\n classAttr_AddPer: function classAttr_AddPer(index, iindex) {\n var param = { index: index, iindex: iindex };\n var $this = this;\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/classAttr.vue:736\");\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].Login + ';' + data[0].Name;\n\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"4\",\n projectid: \"\",\n rclsid: \"\",\n robjid: \"\",\n userlogin: data[0].Login,\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: [] };\n\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n } } });\n\n\n },\n classAttr_AddRef: function classAttr_AddRef(e) {\n __f__(\"log\", e.target, \" at pages/modal/classAttr.vue:765\");\n uni.showModal({ title: \"提示\", content: \"此功能还未实现!\", showCancel: false, confirmText: \"取消\" });\n // var value=this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].RelCls[e.target.value];\n // this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=value;\n },\n classAttr_AddPrj: function classAttr_AddPrj(index, iindex) {\n var param = { index: index, iindex: iindex };\n var $this = this;\n uni.navigateTo({\n url: '../selPrj/index?relation=-1¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n // console.log(data);\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: [] };\n\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n } } });\n\n\n },\n sava: function sava() {\n if (this.$data.edit_ok_event)\n this.OKDataObjRunCustomEvent();else\n\n this.add();\n },\n add: function add() {var _this3 = this;\n uni.showLoading({\n title: \"加载中...\" });\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ name: ar.Name, value: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ name: ar.Name, value: ar.Value ? '1' : '0' });else\n if (ar.Type == '字典' || ar.Type == '字典-字符串') {\n if (ar.select == true) {//判断下拉是否多选\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr)\n valStr += \";\";\n valStr += ar.Value[v];\n }\n req.push({ name: ar.Name, value: valStr });\n } else\n req.push({ name: ar.Name, value: ar.Value });\n } else\n\n req.push({ name: ar.Name, value: ar.Value ? ar.Value : '' });\n\n if ((ar.NotEmpty == '1' || ar.notempty == true) && !ar.Value) {\n // if(ar.notEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'不能为空!',icon:\"success\",duration:3000});\n uni.showModal({ title: \"提示\", content: ar.DispName + '不能为空!', showCancel: false, confirmText: \"取消\" });\n return;\n }\n }\n }\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid } };\n\n\n\n var dataInfo = {\n class_id: this.$data.param.clsid, data_obj_id: '', masterclsid: '',\n req: JSON.stringify(req), upfile: JSON.stringify([]), post_data: JSON.stringify({}),\n compose: JSON.stringify([]), refdatastore: JSON.stringify([]), extinfo: JSON.stringify(enviroment),\n not_trigger_sys_event: '' };\n\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:870\");\n // return\n this.$store.dispatch('addclassattr', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:873\");\n uni.hideLoading();\n if (success.code == '00000') {\n var action = JSON.parse(success.data.Action);\n if (action.ret == '0') {\n if (action.result_type == '0') {\n uni.showToast({ title: action.result, icon: \"success\", duration: 3000 });\n }\n // \"{\"ret\":0, \"result_type\":0, \"result\":\"创建成功123123123\",\"info\":\"\"}\"\n }\n //刷新\n uni.redirectTo({\n url: '../modal/classAttr?param=' + JSON.stringify(_this3.$data.param) + \"&titlename=\" + _this3.$data.title });\n\n // this.class_attr_init();\n } else {\n uni.showModal({ title: \"错误\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/classAttr.vue:892\");\n uni.hideLoading();\n uni.showModal({ title: \"提示\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n class_attr_init: function class_attr_init() {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n var newattrlist = [];\n if (this.$data.classAttrList.length > 0) {\n for (var i = 0; i < attrlist.length; i++) {\n var open = attrlist[i].open;\n var name = attrlist[i].attrgroup_name;\n var attrs = attrlist[i].attrs;\n for (var s = 0; s < this.$data.classAttrList.length; s++) {\n var clsattr = this.$data.classAttrList[s];\n if (name == clsattr.Name) {\n var attr = [];\n for (var j = 0; j < attrs.length; j++) {\n for (var l = 0; l < clsattr.Attr.length; l++) {\n var ca = clsattr.Attr[l];\n if (attrs[j].attr == ca.Name) {\n ca.action = attrs[j].action;\n ca.edit = attrs[j].edit;\n ca.notempty = attrs[j].notempty;\n ca.ext_button = attrs[j].ext_button;\n ca.button_img = attrs[j].button_img;\n ca.button_tooltip = attrs[j].button_tooltip;\n ca.before_click_button = attrs[j].before_click_button;\n ca.button_callback = attrs[j].button_callback;\n ca.hidden = attrs[j].hidden;\n ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n ca.Value = \"\";\n if (ca.dictitem) {\n if (ca.select == true)\n ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n else\n ca.Value = '请选择'; //ca.dictitem[0].CN_S_NAME;\n var dictitemlist = [];\n for (var d = 0; d < ca.dictitem.length; d++) {\n ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n if (ca.dictitem[d].CN_C_IS_DEFAULT == '1')\n ca.Value = ca.dictitem[d].CN_S_NAME;\n }\n }\n if (ca.Type == '日期' || ca.Type == '时间') {\n var nowDate = new Date();\n var date = { year: nowDate.getFullYear(), month: nowDate.getMonth() + 1, day: nowDate.getDate() };\n ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n }\n if (ca.Type == '引用对象(多个)') {\n var relClsList = [];\n var attr_rescls = ca.RelCls.split(',');\n for (var ii in attr_rescls) {\n var rescls = attr_rescls[ii].split('|');\n relClsList.push({ id: rescls[0], name: rescls[1] });\n }\n ca.RelClsList = relClsList;\n ca.Value = '请';\n }\n if (ca.Type == '省市区')\n ca.Value = '请选择';\n if (ca.Type == '布尔值')\n ca.Value = false;\n\n attr.push(ca);\n }\n }\n }\n newattrlist.push({\n BkColor: clsattr.BkColor,\n HasAce: clsattr.HasAce,\n ImgFontStyle: clsattr.ImgFontStyle,\n Name: clsattr.Name,\n Order: clsattr.Order,\n Open: open,\n Attr: attr,\n control_style: this.$data.classGridStyle.StyleDef.control_style,\n title_p_wdith: this.$data.classGridStyle.StyleDef.title_p_wdith });\n\n }\n }\n }\n if (newattrlist.length > 0) {\n this.$data.classAttrList = newattrlist;\n }\n var req = [];\n if (this.$data.classGridStyle.StyleDef) {\n if (this.$data.classGridStyle.StyleDef.show_style.length > 0) {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n // $el.find('.attr_field').prop('readonly', true);\n // $el.find('.attr_field').prop('disabled', true);\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].attrs;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n req.push({ attr: ar.attr, val: ar.value ? ar.value : '' });\n }\n }\n }\n }\n\n var eventlist = this.$data.classGridStyle.StyleDef.event;\n if (eventlist) {\n if (eventlist.length > 0) {\n for (var i = 0; i < eventlist.length; i++) {\n if (eventlist[i].event_id == 'before_ok') {\n this.$data.edit_ok_event = eventlist[i];\n } else if (eventlist[i].event_id == 'initial') {\n this.$data.edit_inital_event = eventlist[i];\n } else if (eventlist[i].event_id == 'before_select_compose') {\n this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n }\n }\n }\n }\n __f__(\"log\", req, \" at pages/modal/classAttr.vue:1009\");\n if (this.$data.edit_inital_event) {\n var eventid = this.$data.edit_inital_event.scrip_id;\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n this.ini_DataObjRunCustomEvent(info);\n }\n __f__(\"log\", this.$data.classGridStyle, \" at pages/modal/classAttr.vue:1025\");\n __f__(\"log\", this.$data.classAttrList, \" at pages/modal/classAttr.vue:1026\");\n\n } else {\n uni.showModal({ title: \"提示\", content: \"未找到可显示的的属性\", showCancel: false, confirmText: \"取消\" });\n }\n },\n ini_DataObjRunCustomEvent: function ini_DataObjRunCustomEvent(info) {var _this4 = this;\n var param = {\n EditStyle: this.$data.param.Edit_dlg.Name,\n ViewStyle: this.$data.param.Edit_dlg.Name,\n NotTriggerSysEvent: 0,\n enviroment: {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } } };\n\n\n var inputparameter = '';\n var global_attr = '';\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid,\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(param), inputparameter: inputparameter, global_attr: global_attr };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1056\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1058\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n for (var j = 0; j < actionlist.length; j++) {\n var action = actionlist[j];\n var action_type = action.action_type;\n var value = action.value;\n if (action_type == 'set_dlg_attr') {\n if (value) {\n var val = value;\n if (typeof value == 'string') {\n val = JSON.parse(value);\n }\n __f__(\"log\", val, \" at pages/modal/classAttr.vue:1073\");\n for (var i = 0; i < val.length; i++) {\n for (var a = 0; a < _this4.$data.classAttrList.length; a++) {\n for (var l = 0; l < _this4.$data.classAttrList[a].Attr.length; l++) {\n var ca = _this4.$data.classAttrList[a].Attr[l];\n if (val[i].attr == ca.Name) {\n if (ca.Type == '字典' || ca.Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in val[i].choice_list) {\n var val = val[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n\n }\n ca.dictitem = dictItemList;\n // attr[j].dictitem = val[i].choice_list;\n } else {\n // ca.value = val[i].value;\n }\n }\n }\n }\n\n var length = 0;\n if (!_this4.$data.refdatastore.filter(function (s) {\n return val[i].attr == s.attr;\n }).length) {\n length = 1;\n _this4.$data.refdatastore.push(val[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this4.$data.refdatastore.length; j++) {\n if (_this4.$data.refdatastore[j].attr == val[i].attr) {\n _this4.$data.refdatastore[j].value = val[i].value;\n }\n }\n }\n }\n }\n }\n if (action_type == 'open_select_userdlg') {\n uni.showModal({ title: \"错误2.2\", content: \"open_select_userdlg这个action_type还未处理!\", showCancel: false, confirmText: \"取消\" });\n }\n }\n }\n\n } else {\n uni.showModal({ title: \"错误2\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误2.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n var $this = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n if (data_attr) {\n enviroment.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.clsid //当前数据类id\n };\n if (data_attr) {\n enviroment.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n }\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{', '').replace('}', ''),\n rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: '', global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1160\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1162\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/classAttr.vue:1168\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n if (attr[j].Type == '字典' || attr[j].Type == '字典-字符串') {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({ \"CN_S_NAME\": val, \"Name\": val, \"label\": val, \"value\": val });\n }\n attr[j].dictitem = dictItemList;\n // attr[j].dictitem = result[i].choice_list;\n }\n }\n }\n }\n }\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/classAttr.vue:1195\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_global_attr') {\n $this.$data.global_attr = data.action[i].value || [];\n }\n }\n }\n\n if (data.result) {\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n } else {\n uni.showModal({ title: \"错误3\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误3.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n OKDataObjRunCustomEvent: function OKDataObjRunCustomEvent() {var _this5 = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n } };\n\n\n\n var eventid = this.$data.edit_ok_event.scrip_id;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '请选择' || ar.Value == '——请选择——') ar.Value = '';\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value });\n }\n }\n\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({ 'attr': this.$data.refdatastore[i].attr, 'val': this.$data.refdatastore[i].value });\n }\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.clsid,\n objid: \"\",\n attr: req };\n\n var dataInfo = {\n edtype: info.edtype, eventid: info.eventid, projectid: info.projectid, rclsid: info.rclsid,\n robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1315\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1317\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n // self.class_attr_ele.find('.attr_field[data-field=\"' + result[i].attr + '\"]').val(result[i].value).data('val', result[i].value);\n var length = 0;\n if (!_this5.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n _this5.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this5.$data.refdatastore.length; j++) {\n if (_this5.$data.refdatastore[j].attr == result[i].attr) {\n _this5.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n\n _this5.add();\n } else {\n uni.showModal({ title: \"错误4\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"错误4.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n },\n DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, index, iindex) {var _this6 = this;\n var enviroment = {\n 'function': '3000', // 功能点编号\n cls_id: this.$data.param.clsid, // 功能点主数据类标识\n 'button': 'top', // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.clsid // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n } };\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '引用对象(多个)')\n if (ar.Value == '请') ar.Value = '';\n if (ar.Type == '引用人员' || ar.Type == '引用项目')\n req.push({ attr: ar.Name, val: ar.ValID ? ar.ValID : '' });else\n if (ar.Type == '布尔值')\n req.push({ attr: ar.Name, val: ar.Value ? '1' : '0' });else\n\n req.push({ attr: ar.Name, val: ar.Value });\n }\n }\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({ 'attr': this.$data.refdatastore[i].attr, 'val': this.$data.refdatastore[i].value });\n }\n }\n }\n var extinfo = enviroment;\n extinfo.edit_dlg = {\n type: 'small', //小窗口\n class_id: this.$data.param.clsid //当前数据类id\n };\n if (data_attr) {\n extinfo.edit_dlg.form_control = { //所属的表单控件\n name: data_attr.Name, //字段属性\n text: data_attr.DispName, //显示文本\n group_name: data_attr.GroupName, //属性组\n type: data_attr.Type, //字段类型\n readonly: data_attr.ReadOnly, //是否只读\n button_img: data_attr.button_img, //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n var dataInfo = {\n edtype: \"0\", eventid: eventid, projectid: '', rclsid: '', robjid: '', userlogin: '',\n clsid: this.$data.param.clsid, objid: '', attr: JSON.stringify(req),\n extinfo: JSON.stringify(extinfo), global_attr: JSON.stringify(this.$data.global_attr) };\n\n __f__(\"log\", dataInfo, \" at pages/modal/classAttr.vue:1406\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/classAttr.vue:1408\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n if (data != \"\") {\n\n var actions = data.action;\n __f__(\"log\", actions, \" at pages/modal/classAttr.vue:1414\");\n if (actions) {\n for (var i = 0; i < actions.length; i++) {\n var action = actions[i];\n var val = action.value;\n var enviroment = JSON.stringify(enviroment);\n\n if (action.action_type == 'open_panel') {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n } else\n if (action.action_type == 'open_select_userdlg') {\n var style = val.style;\n // style == 'user' ? '选择人员' : style == 'department' ? '选择部门' : style == 'role' ? '选择角色' : ''\n var $this = _this6;\n var param = {\n index: index,\n iindex: iindex,\n button_callback: button_callback,\n req: req,\n data_attr: data_attr };\n\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/classAttr.vue:1444\");\n var callback_eventid = param.button_callback.trim();\n var info = {\n eventid: callback_eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: param.req,\n inputparameter: data };\n\n $this.DataObjRunCustomEvent(info, param.data_attr);\n } } });\n\n\n } else\n if (action.action_type == 'open_data_query_dlg') {\n\n } else\n if (action.action_type == 'open_common_dlg') {\n var value = action.value;\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n } else\n if (action.action_type == 'open_project_query_dlg') {\n //console.log(action.value.select_range);\n //console.log(action.value.mulit_select);\n var priRel = '-1';\n if (action.value.select_range == '全部相关')\n priRel = '0';else\n if (action.value.select_range == '我负责的项目')\n priRel = '1';else\n if (action.value.select_range == '我创建的')\n priRel = '2';else\n if (action.value.select_range == '我参与的' || action.value.select_range == '我参加的')\n priRel = '3';else\n if (action.value.select_range == '我关注的')\n priRel = '4';else\n if (action.value.select_range == '我下属的项目')\n priRel = '5';\n\n var $this = _this6;\n var param_ = {\n index: index,\n iindex: iindex,\n button_callback: button_callback,\n req: req };\n\n uni.navigateTo({\n url: '../selPrj/index?relation=' + priRel + '¶m=' + JSON.stringify(param_),\n events: {\n AddPer: function AddPer(data, param) {\n $this.$data.classAttrList[param.index].Attr[param.iindex].Value = data[0].Name;\n $this.$data.classAttrList[param.index].Attr[param.iindex].ValID = data[0].ID + ';' + data[0].Name;\n var callback_eventid = param.button_callback.trim();\n if (callback_eventid) {\n var info = {\n eventid: callback_eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.clsid,\n objid: \"\",\n attr: param.req };\n\n\n $this.DataObjRunCustomEvent(info);\n }\n } } });\n\n\n } else {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!' });\n\n d.show();\n }\n }\n }\n } else {\n uni.showModal({ title: \"提示5.2\", content: '调用 before_click_button 脚本返回空,event_id' + eventid, showCancel: false, confirmText: \"取消\" });\n }\n } else {\n uni.showModal({ title: \"错误5\", content: success.msg, showCancel: false, confirmText: \"取消\" });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({ title: \"提示5.1\", content: ex.errMsg, showCancel: false, confirmText: \"取消\" });\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 13)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvY2xhc3NBdHRyLnZ1ZSJdLCJuYW1lcyI6WyJjb21wb25lbnRzIiwicGlja2VyQWRkcmVzcyIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwiY2xhc3NBdHRyTGlzdCIsImNsYXNzR3JpZFN0eWxlIiwiZWRpdF9pbml0YWxfZXZlbnQiLCJlZGl0X29rX2V2ZW50IiwiZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCIsImVkaXRfY29tcG9zZV9jbHNfaWQiLCJnbG9iYWxfYXR0ciIsInJlZmRhdGFzdG9yZSIsImlucHV0VmFsTGlzdCIsIk5hbWUiLCJvbkxvYWQiLCJvcHRpb25zIiwidW5pIiwic2V0TmF2aWdhdGlvbkJhclRpdGxlIiwidGl0bGVuYW1lIiwiSlNPTiIsInBhcnNlIiwiJGRhdGEiLCJBZGRfQnRuTmFtZSIsIkVkaXREbGdNb2RlIiwic2hvd01vZGFsIiwiY29udGVudCIsInNob3dDYW5jZWwiLCJjb25maXJtVGV4dCIsIkVkaXRfZGxnIiwiZWRpdF9kbGciLCJNb2RlbCIsImRhdGFJbmZvIiwiY2xhc3NfaWQiLCJjbHNpZCIsIiR0aGlzIiwiJHN0b3JlIiwic3RhdGUiLCJ0aGlzYXJlYUZ1bmNJRCIsImdldHRlcnMiLCJnZXRjbGFzc0F0dHJMaXN0IiwiY2xhc3NHcmlkU3R5bGVJbmZvIiwiZGlzcGF0Y2giLCJ0aGVuIiwic3VjY2VzcyIsImNvZGUiLCJtc2ciLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwibWV0aG9kcyIsImNhbmNlbCIsImUiLCJuYXZpZ2F0ZUJhY2siLCJkZWx0YSIsImdyaWRzdHlsZUluZm8iLCJuYW1lIiwidHlwZSIsInRoaXNFZGl0TmFtZSIsImdldGNsYXNzR3JpZFN0eWxlSW5mbyIsImNsYXNzX2F0dHJfaW5pdCIsIlN0eWxlRGVmIiwib250YXAiLCJnZXRBcHAiLCJvblNjYW4iLCJyZXN1bHQiLCJ0YXJnZXQiLCJkYXRhc2V0IiwiQXR0ciIsIlZhbHVlIiwiZGVjb2RlZGF0YSIsIm9uYXJyb3ciLCJpbmRleCIsIm9wZW4iLCJPcGVuIiwib25kYXRlVGltZSIsInZhbHVlIiwib25jaGFuZ2UiLCJkaWN0aXRlbSIsImRhdGFfYXR0ciIsImV2ZW50aWQiLCJhY3Rpb24iLCJyZXEiLCJhdHRybGlzdCIsImkiLCJsZW5ndGgiLCJhdHRyIiwiaiIsImFyIiwiVHlwZSIsInB1c2giLCJ2YWwiLCJWYWxJRCIsImluZm8iLCJlZHR5cGUiLCJwcm9qZWN0aWQiLCJyY2xzaWQiLCJyb2JqaWQiLCJ1c2VybG9naW4iLCJvYmppZCIsIkRhdGFPYmpSdW5DdXN0b21FdmVudCIsIm9uY2hhbmdlMiIsIml0ZW0iLCJkZWx2YWx1ZSIsImlpbmRleCIsImRpbmRleCIsImQiLCJ2IiwiaXRlbXZhbHVlIiwib25ldmVudCIsIm9uY2hlY2siLCJpc2NoZWNrZWQiLCJpc2NoZWNrIiwiaW5wdXRWYWxMaXN0SXNEZWwiLCJzcGxpY2UiLCJhZGRyZXNzY2hhbmdlIiwiam9pbiIsImNsYXNzQXR0cl9leHRCdXR0b24iLCJiZWZvcmVfY2xpY2tfYnV0dG9uIiwiYnV0dG9uX2NhbGxiYWNrIiwiRGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybiIsImNsYXNzQXR0cl9BZGRQZXIiLCJuYXZpZ2F0ZVRvIiwidXJsIiwic3RyaW5naWZ5IiwiZXZlbnRzIiwiQWRkUGVyIiwiTG9naW4iLCJ0cmltIiwiY2xhc3NBdHRyX0FkZFJlZiIsImNsYXNzQXR0cl9BZGRQcmoiLCJJRCIsInNhdmEiLCJPS0RhdGFPYmpSdW5DdXN0b21FdmVudCIsImFkZCIsInNob3dMb2FkaW5nIiwic2VsZWN0IiwidmFsU3RyIiwiTm90RW1wdHkiLCJub3RlbXB0eSIsImhpZGVMb2FkaW5nIiwiRGlzcE5hbWUiLCJlbnZpcm9tZW50IiwiY2xzX2lkIiwiYnV0dG9uX25hbWUiLCJtYXN0ZXIiLCJkYXRhX29ial9pZCIsIm1hc3RlcmNsc2lkIiwidXBmaWxlIiwicG9zdF9kYXRhIiwiY29tcG9zZSIsImV4dGluZm8iLCJub3RfdHJpZ2dlcl9zeXNfZXZlbnQiLCJBY3Rpb24iLCJyZXQiLCJyZXN1bHRfdHlwZSIsInNob3dUb2FzdCIsImljb24iLCJkdXJhdGlvbiIsInJlZGlyZWN0VG8iLCJzaG93X3N0eWxlIiwibmV3YXR0cmxpc3QiLCJhdHRyZ3JvdXBfbmFtZSIsImF0dHJzIiwicyIsImNsc2F0dHIiLCJsIiwiY2EiLCJlZGl0IiwiZXh0X2J1dHRvbiIsImJ1dHRvbl9pbWciLCJidXR0b25fdG9vbHRpcCIsImhpZGRlbiIsInVuZGVmaW5lZCIsImRpY3RpdGVtbGlzdCIsImxhYmVsIiwiQ05fU19OQU1FIiwiQ05fQ19JU19ERUZBVUxUIiwibm93RGF0ZSIsIkRhdGUiLCJkYXRlIiwieWVhciIsImdldEZ1bGxZZWFyIiwibW9udGgiLCJnZXRNb250aCIsImRheSIsImdldERhdGUiLCJyZWxDbHNMaXN0IiwiYXR0cl9yZXNjbHMiLCJSZWxDbHMiLCJzcGxpdCIsImlpIiwicmVzY2xzIiwiaWQiLCJSZWxDbHNMaXN0IiwiQmtDb2xvciIsIkhhc0FjZSIsIkltZ0ZvbnRTdHlsZSIsIk9yZGVyIiwiY29udHJvbF9zdHlsZSIsInRpdGxlX3Bfd2RpdGgiLCJldmVudGxpc3QiLCJldmVudCIsImV2ZW50X2lkIiwic2NyaXBfaWQiLCJjb21wb3NlX2Nsc19pZCIsImluaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJFZGl0U3R5bGUiLCJWaWV3U3R5bGUiLCJOb3RUcmlnZ2VyU3lzRXZlbnQiLCJpbnB1dHBhcmFtZXRlciIsImFjdGlvbmxpc3QiLCJhY3Rpb25fdHlwZSIsImEiLCJkaWN0SXRlbUxpc3QiLCJjaG9pY2VfbGlzdCIsImZpbHRlciIsImZvcm1fY29udHJvbCIsInRleHQiLCJncm91cF9uYW1lIiwiR3JvdXBOYW1lIiwicmVhZG9ubHkiLCJSZWFkT25seSIsInJlcGxhY2UiLCJjIiwiYWN0aW9ucyIsImRpYWxvZyIsInNob3ciLCJzdHlsZSIsImNhbGxiYWNrX2V2ZW50aWQiLCJwcmlSZWwiLCJzZWxlY3RfcmFuZ2UiLCJwYXJhbV8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdZQyxxSDtBQUNlO0FBQ2RBLFlBQVUsRUFBRTtBQUNGQyxpQkFBYSxFQUFiQSxzQkFERSxFQURFOztBQUlkQyxNQUpjLGtCQUlQO0FBQ04sV0FBTztBQUNOQyxXQUFLLEVBQUUsSUFERDtBQUVOQyxXQUFLLEVBQUMsRUFGQTtBQUdOQyxtQkFBYSxFQUFDLEVBSFI7QUFJTkMsb0JBQWMsRUFBQyxFQUpUO0FBS05DLHVCQUFpQixFQUFDLEVBTFosRUFLaUI7QUFDdkJDLG1CQUFhLEVBQUMsRUFOUixFQU1pQjtBQUN2QkMsK0JBQXlCLEVBQUMsRUFQcEIsRUFPeUI7QUFDL0JDLHlCQUFtQixFQUFDLEVBUmQ7QUFTTkMsaUJBQVcsRUFBQyxFQVROO0FBVU5DLGtCQUFZLEVBQUUsRUFWUixFQVVlO0FBQ3JCQyxrQkFBWSxFQUFDLENBQUMsRUFBQ0MsSUFBSSxFQUFDLE1BQU4sRUFBRCxFQUFlLEVBQUNBLElBQUksRUFBQyxPQUFOLEVBQWYsRUFBOEIsRUFBQ0EsSUFBSSxFQUFDLE9BQU4sRUFBOUIsRUFBNkMsRUFBQ0EsSUFBSSxFQUFDLE9BQU4sRUFBN0MsRUFBNEQsRUFBQ0EsSUFBSSxFQUFDLE9BQU4sRUFBNUQsRUFBMkUsRUFBQ0EsSUFBSSxFQUFDLE9BQU4sRUFBM0UsRUFBMEYsRUFBQ0EsSUFBSSxFQUFDLE9BQU4sRUFBMUYsQ0FYUCxFQUFQOztBQWFBLEdBbEJhO0FBbUJkQyxRQW5CYyxrQkFtQlBDLE9BbkJPLEVBbUJFO0FBQ2Y7QUFDQUMsT0FBRyxDQUFDQyxxQkFBSixDQUEwQixFQUFFZixLQUFLLEVBQUVhLE9BQU8sQ0FBQ0csU0FBakIsRUFBMUIsRUFGZSxDQUV5QztBQUN4RCxRQUFJZixLQUFLLEdBQUdnQixJQUFJLENBQUNDLEtBQUwsQ0FBV0wsT0FBTyxDQUFDWixLQUFuQixDQUFaO0FBQ0EsU0FBS2tCLEtBQUwsQ0FBV25CLEtBQVgsR0FBbUJDLEtBQUssQ0FBQ21CLFdBQU4sR0FBa0JuQixLQUFLLENBQUNtQixXQUF4QixHQUFvQ1AsT0FBTyxDQUFDRyxTQUEvRCxDQUplLENBSTJEO0FBQzFFO0FBQ0EsUUFBRyxDQUFDZixLQUFLLENBQUNvQixXQUFWLEVBQXNCO0FBQ3JCUCxTQUFHLENBQUNRLFNBQUosQ0FBYyxFQUFDdEIsS0FBSyxFQUFDLElBQVAsRUFBWXVCLE9BQU8sRUFBQyxvQkFBcEIsRUFBeUNDLFVBQVUsRUFBQyxLQUFwRCxFQUEwREMsV0FBVyxFQUFDLElBQXRFLEVBQWQ7QUFDQTtBQUNBO0FBQ0QsUUFBRyxDQUFDeEIsS0FBSyxDQUFDeUIsUUFBTixDQUFlZixJQUFuQixFQUF3QjtBQUN2QkcsU0FBRyxDQUFDUSxTQUFKLENBQWMsRUFBQ3RCLEtBQUssRUFBQyxJQUFQLEVBQVl1QixPQUFPLEVBQUMsb0JBQXBCLEVBQXlDQyxVQUFVLEVBQUMsS0FBcEQsRUFBMERDLFdBQVcsRUFBQyxJQUF0RSxFQUFkO0FBQ0E7QUFDQTtBQUNELFNBQUtOLEtBQUwsQ0FBV2xCLEtBQVgsR0FBbUJBLEtBQW5CO0FBQ0EsUUFBSTBCLFFBQVEsR0FBRztBQUNYQyxXQUFLLEVBQUUzQixLQUFLLENBQUNvQixXQURGO0FBRVhWLFVBQUksRUFBRVYsS0FBSyxDQUFDeUIsUUFBTixDQUFlZixJQUZWLEVBQWY7O0FBSUEsUUFBSWtCLFFBQVEsR0FBRztBQUNkQyxjQUFRLEVBQUU3QixLQUFLLENBQUM4QixLQURGLEVBQWY7O0FBR0EsUUFBSUMsS0FBSyxHQUFHLElBQVo7QUFDQUEsU0FBSyxDQUFDQyxNQUFOLENBQWFDLEtBQWIsQ0FBbUJDLGNBQW5CLEdBQW9DbEMsS0FBSyxDQUFDOEIsS0FBMUM7QUFDQTtBQUNDO0FBQ0QsUUFBR0MsS0FBSyxDQUFDQyxNQUFOLENBQWFHLE9BQWIsQ0FBcUJDLGdCQUF4QixFQUF5QztBQUN2Q0wsV0FBSyxDQUFDYixLQUFOLENBQVlqQixhQUFaLEdBQTRCOEIsS0FBSyxDQUFDQyxNQUFOLENBQWFHLE9BQWIsQ0FBcUJDLGdCQUFyQixDQUFzQ3RDLElBQWxFO0FBQ0RpQyxXQUFLLENBQUNNLGtCQUFOO0FBQ0EsS0FIRDtBQUlDTixTQUFLLENBQUNDLE1BQU4sQ0FBYU0sUUFBYixDQUFzQixlQUF0QixFQUFzQ1YsUUFBdEMsRUFBZ0RXLElBQWhELENBQXFELFVBQUFDLE9BQU8sRUFBRTtBQUM3RDtBQUNBLFVBQUlBLE9BQU8sQ0FBQ0MsSUFBUixJQUFjLE9BQWxCLEVBQTJCO0FBQzFCVixhQUFLLENBQUNiLEtBQU4sQ0FBWWpCLGFBQVosR0FBNEJ1QyxPQUFPLENBQUMxQyxJQUFwQzs7QUFFQWlDLGFBQUssQ0FBQ00sa0JBQU47QUFDQSxPQUpELE1BSUs7QUFDSnhCLFdBQUcsQ0FBQ1EsU0FBSixDQUFjLEVBQUN0QixLQUFLLEVBQUMsS0FBUCxFQUFhdUIsT0FBTyxFQUFDa0IsT0FBTyxDQUFDRSxHQUE3QixFQUFpQ25CLFVBQVUsRUFBQyxLQUE1QyxFQUFrREMsV0FBVyxFQUFDLElBQTlELEVBQWQ7QUFDQTtBQUNELEtBVEQsRUFTR21CLEtBVEgsQ0FTUyxVQUFBQyxFQUFFLEVBQUU7QUFDWjtBQUNBL0IsU0FBRyxDQUFDUSxTQUFKLENBQWMsRUFBQ3RCLEtBQUssRUFBQyxPQUFQLEVBQWV1QixPQUFPLEVBQUNzQixFQUFFLENBQUNDLE1BQTFCLEVBQWlDdEIsVUFBVSxFQUFDLEtBQTVDLEVBQWtEQyxXQUFXLEVBQUMsSUFBOUQsRUFBZDtBQUNBLEtBWkQ7O0FBY0QsR0EvRGE7QUFnRWRzQixTQUFPLEVBQUU7QUFDUkMsVUFEUSxrQkFDREMsQ0FEQyxFQUNDO0FBQ1JuQyxTQUFHLENBQUNvQyxZQUFKLENBQWlCO0FBQ2hCQyxhQUFLLEVBQUMsQ0FEVSxDQUNSO0FBRFEsT0FBakI7QUFHQSxLQUxPO0FBTUZiLHNCQU5FLGdDQU1rQjtBQUNyQk4scUJBRHFCLEdBQ2IsS0FEYTtBQUVyQm9CLDZCQUZxQixHQUVMO0FBQ25CdEIsMEJBQVEsRUFBRUUsS0FBSyxDQUFDYixLQUFOLENBQVlsQixLQUFaLENBQWtCOEIsS0FEVDtBQUVuQnNCLHNCQUFJLEVBQUVyQixLQUFLLENBQUNiLEtBQU4sQ0FBWWxCLEtBQVosQ0FBa0J5QixRQUFsQixDQUEyQmYsSUFGZDtBQUduQjJDLHNCQUFJLEVBQUUsR0FIYSxFQUZLOztBQU96QnRCLHFCQUFLLENBQUNDLE1BQU4sQ0FBYUMsS0FBYixDQUFtQnFCLFlBQW5CLEdBQWtDdkIsS0FBSyxDQUFDYixLQUFOLENBQVlsQixLQUFaLENBQWtCeUIsUUFBbEIsQ0FBMkJmLElBQTdEO0FBQ0E7QUFDQztBQUNELG9CQUFHcUIsS0FBSyxDQUFDQyxNQUFOLENBQWFHLE9BQWIsQ0FBcUJvQixxQkFBeEIsRUFBOEM7QUFDNUN4Qix1QkFBSyxDQUFDYixLQUFOLENBQVloQixjQUFaLEdBQTZCNkIsS0FBSyxDQUFDQyxNQUFOLENBQWFHLE9BQWIsQ0FBcUJvQixxQkFBckIsQ0FBMkN6RCxJQUF4RTtBQUNEaUMsdUJBQUssQ0FBQ3lCLGVBQU47QUFDQSxpQkFIRCxNQUdLO0FBQ0o7QUFDQXpCLHVCQUFLLENBQUNDLE1BQU4sQ0FBYU0sUUFBYixDQUFzQixvQkFBdEIsRUFBMkNhLGFBQTNDLEVBQTBEWixJQUExRCxDQUErRCxVQUFBQyxPQUFPLEVBQUU7QUFDdkU7QUFDQSx3QkFBSUEsT0FBTyxDQUFDQyxJQUFSLElBQWMsT0FBbEIsRUFBMkI7QUFDMUJELDZCQUFPLENBQUMxQyxJQUFSLENBQWEyRCxRQUFiLEdBQXdCekMsSUFBSSxDQUFDQyxLQUFMLENBQVd1QixPQUFPLENBQUMxQyxJQUFSLENBQWEyRCxRQUF4QixDQUF4QjtBQUNBMUIsMkJBQUssQ0FBQ2IsS0FBTixDQUFZaEIsY0FBWixHQUE2QnNDLE9BQU8sQ0FBQzFDLElBQXJDOztBQUVBaUMsMkJBQUssQ0FBQ3lCLGVBQU47QUFDQSxxQkFMRCxNQUtLO0FBQ0ozQyx5QkFBRyxDQUFDUSxTQUFKLENBQWMsRUFBQ3RCLEtBQUssRUFBQyxPQUFQLEVBQWV1QixPQUFPLEVBQUNrQixPQUFPLENBQUNFLEdBQS9CLEVBQW1DbkIsVUFBVSxFQUFDLEtBQTlDLEVBQW9EQyxXQUFXLEVBQUMsSUFBaEUsRUFBZDtBQUNBO0FBQ0QsbUJBVkQsRUFVR21CLEtBVkgsQ0FVUyxVQUFBQyxFQUFFLEVBQUU7QUFDWixpQ0FBWUEsRUFBWjtBQUNBL0IsdUJBQUcsQ0FBQ1EsU0FBSixDQUFjLEVBQUN0QixLQUFLLEVBQUMsT0FBUCxFQUFldUIsT0FBTyxFQUFDc0IsRUFBRSxDQUFDQyxNQUExQixFQUFpQ3RCLFVBQVUsRUFBQyxLQUE1QyxFQUFrREMsV0FBVyxFQUFDLElBQTlELEVBQWQ7QUFDQSxtQkFiRDtBQWNBLGlCQTdCd0I7QUE4QnpCLEtBcENPO0FBcUNSa0MsU0FyQ1EsaUJBcUNGVixDQXJDRSxFQXFDQSxvQkFBRTtBQUNUO0FBQ0FXLFlBQU0sR0FBR0MsTUFBVCxDQUFnQixVQUFDQyxNQUFELEVBQVU7QUFDekI7QUFDQSxjQUFJLENBQUMzQyxLQUFMLENBQVdqQixhQUFYLENBQXlCK0MsQ0FBQyxDQUFDYyxNQUFGLENBQVNDLE9BQVQsQ0FBaUIsT0FBakIsQ0FBekIsRUFBb0RDLElBQXBELENBQXlEaEIsQ0FBQyxDQUFDYyxNQUFGLENBQVNDLE9BQVQsQ0FBaUIsUUFBakIsQ0FBekQsRUFBcUZFLEtBQXJGLEdBQTJGSixNQUFNLENBQUNLLFVBQWxHO0FBQ0EsT0FIRDtBQUlBLEtBM0NPO0FBNENSQyxXQTVDUSxtQkE0Q0FDLEtBNUNBLEVBNENNQyxJQTVDTixFQTRDVztBQUNsQjtBQUNBLFdBQUtuRCxLQUFMLENBQVdqQixhQUFYLENBQXlCbUUsS0FBekIsRUFBZ0NFLElBQWhDLEdBQXFDRCxJQUFJLElBQUUsSUFBTixHQUFXLEtBQVgsR0FBaUIsSUFBdEQ7QUFDQSxLQS9DTztBQWdEUkUsY0FoRFEsc0JBZ0RHdkIsQ0FoREgsRUFnRE07QUFDYjtBQUNBLFdBQUs5QixLQUFMLENBQVdqQixhQUFYLENBQXlCK0MsQ0FBQyxDQUFDYyxNQUFGLENBQVNDLE9BQVQsQ0FBaUIsT0FBakIsQ0FBekIsRUFBb0RDLElBQXBELENBQXlEaEIsQ0FBQyxDQUFDYyxNQUFGLENBQVNDLE9BQVQsQ0FBaUIsUUFBakIsQ0FBekQsRUFBcUZFLEtBQXJGLEdBQTJGakIsQ0FBQyxDQUFDYyxNQUFGLENBQVNVLEtBQXBHO0FBQ0EsS0FuRE87QUFvRFJDLFlBcERRLG9CQW9EQ3pCLENBcERELEVBb0RJO0FBQ1gsbUJBQVlBLENBQUMsQ0FBQ2MsTUFBZDtBQUNBLFVBQUlVLEtBQUssR0FBQyxLQUFLdEQsS0FBTCxDQUFXakIsYUFBWCxDQUF5QitDLENBQUMsQ0FBQ2MsTUFBRixDQUFTQyxPQUFULENBQWlCLE9BQWpCLENBQXpCLEVBQW9EQyxJQUFwRCxDQUF5RGhCLENBQUMsQ0FBQ2MsTUFBRixDQUFTQyxPQUFULENBQWlCLFFBQWpCLENBQXpELEVBQXFGVyxRQUFyRixDQUE4RjFCLENBQUMsQ0FBQ2MsTUFBRixDQUFTVSxLQUF2RyxDQUFWO0FBQ0EsVUFBSUcsU0FBUyxHQUFHLEtBQUt6RCxLQUFMLENBQVdqQixhQUFYLENBQXlCK0MsQ0FBQyxDQUFDYyxNQUFGLENBQVNDLE9BQVQsQ0FBaUIsT0FBakIsQ0FBekIsRUFBb0RDLElBQXBELENBQXlEaEIsQ0FBQyxDQUFDYyxNQUFGLENBQVNDLE9BQVQsQ0FBaUIsUUFBakIsQ0FBekQsQ0FBaEI7QUFDQSxtQkFBWVksU0FBWjtBQUNBLFVBQUlILEtBQUssQ0FBQzlELElBQU4sSUFBY2lFLFNBQVMsQ0FBQ1YsS0FBNUIsRUFBbUM7QUFDbEMsYUFBSy9DLEtBQUwsQ0FBV2pCLGFBQVgsQ0FBeUIrQyxDQUFDLENBQUNjLE1BQUYsQ0FBU0MsT0FBVCxDQUFpQixPQUFqQixDQUF6QixFQUFvREMsSUFBcEQsQ0FBeURoQixDQUFDLENBQUNjLE1BQUYsQ0FBU0MsT0FBVCxDQUFpQixRQUFqQixDQUF6RCxFQUFxRkUsS0FBckYsR0FBMkZPLEtBQUssQ0FBQzlELElBQWpHO0FBQ0EscUJBQVksS0FBS1EsS0FBTCxDQUFXakIsYUFBWCxDQUF5QitDLENBQUMsQ0FBQ2MsTUFBRixDQUFTQyxPQUFULENBQWlCLE9BQWpCLENBQXpCLEVBQW9EQyxJQUFwRCxDQUF5RGhCLENBQUMsQ0FBQ2MsTUFBRixDQUFTQyxPQUFULENBQWlCLFFBQWpCLENBQXpELEVBQXFGRSxLQUFqRztBQUNBLFlBQUlXLE9BQU8sR0FBRyxLQUFLMUQsS0FBTCxDQUFXakIsYUFBWCxDQUF5QitDLENBQUMsQ0FBQ2MsTUFBRixDQUFTQyxPQUFULENBQWlCLE9BQWpCLENBQXpCLEVBQW9EQyxJQUFwRCxDQUF5RGhCLENBQUMsQ0FBQ2MsTUFBRixDQUFTQyxPQUFULENBQWlCLFFBQWpCLENBQXpELEVBQXFGYyxNQUFuRztBQUNBLFlBQUlELE9BQUosRUFBYTtBQUNOO0FBQ0EsY0FBSUUsR0FBRyxHQUFDLEVBQVI7QUFDQSxjQUFJQyxRQUFRLEdBQUcsS0FBSzdELEtBQUwsQ0FBV2pCLGFBQTFCO0FBQ0EsZUFBSyxJQUFJK0UsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsUUFBUSxDQUFDRSxNQUE3QixFQUFxQ0QsQ0FBQyxFQUF0QyxFQUEwQztBQUN6QyxnQkFBSUUsSUFBSSxHQUFHSCxRQUFRLENBQUNDLENBQUQsQ0FBUixDQUFZaEIsSUFBdkI7QUFDQSxpQkFBSyxJQUFJbUIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsSUFBSSxDQUFDRCxNQUF6QixFQUFpQ0UsQ0FBQyxFQUFsQyxFQUFzQztBQUNyQyxrQkFBSUMsRUFBRSxHQUFHRixJQUFJLENBQUNDLENBQUQsQ0FBYjtBQUNBLGtCQUFHQyxFQUFFLENBQUNDLElBQUgsSUFBUyxVQUFaO0FBQ0Msa0JBQUdELEVBQUUsQ0FBQ25CLEtBQUgsSUFBVSxHQUFiLEVBQWtCbUIsRUFBRSxDQUFDbkIsS0FBSCxHQUFTLEVBQVQ7QUFDbkIsa0JBQUdtQixFQUFFLENBQUNDLElBQUgsSUFBUyxNQUFULElBQW1CRCxFQUFFLENBQUNDLElBQUgsSUFBUyxNQUEvQjtBQUNDUCxpQkFBRyxDQUFDUSxJQUFKLENBQVMsRUFBRUosSUFBSSxFQUFFRSxFQUFFLENBQUMxRSxJQUFYLEVBQWlCNkUsR0FBRyxFQUFFSCxFQUFFLENBQUNJLEtBQUgsR0FBVUosRUFBRSxDQUFDSSxLQUFiLEdBQW9CLEVBQTFDLEVBQVQsRUFERDtBQUVLLGtCQUFHSixFQUFFLENBQUNDLElBQUgsSUFBUyxLQUFaO0FBQ1ZQLGlCQUFHLENBQUNRLElBQUosQ0FBUyxFQUFFSixJQUFJLEVBQUVFLEVBQUUsQ0FBQzFFLElBQVgsRUFBaUI2RSxHQUFHLEVBQUVILEVBQUUsQ0FBQ25CLEtBQUgsR0FBUyxHQUFULEdBQWEsR0FBbkMsRUFBVCxFQURVOztBQUdKYSxpQkFBRyxDQUFDUSxJQUFKLENBQVMsRUFBRUosSUFBSSxFQUFFRSxFQUFFLENBQUMxRSxJQUFYLEVBQWlCNkUsR0FBRyxFQUFFSCxFQUFFLENBQUNuQixLQUFILEdBQVVtQixFQUFFLENBQUNuQixLQUFiLEdBQW9CLEVBQTFDLEVBQVQ7QUFDRDtBQUNEO0FBQ0QsY0FBSXdCLElBQUksR0FBRztBQUNQYixtQkFBTyxFQUFFQSxPQURGO0FBRVBjLGtCQUFNLEVBQUUsR0FGRDtBQUdQQyxxQkFBUyxFQUFFLEVBSEo7QUFJUEMsa0JBQU0sRUFBRSxFQUpEO0FBS1BDLGtCQUFNLEVBQUUsRUFMRDtBQU1QQyxxQkFBUyxFQUFFLEVBTko7QUFPUGhFLGlCQUFLLEVBQUUsS0FBS1osS0FBTCxDQUFXbEIsS0FBWCxDQUFpQjhCLEtBUGpCO0FBUVBpRSxpQkFBSyxFQUFFLEVBUkE7QUFTUGIsZ0JBQUksRUFBRUosR0FUQyxFQUFYOztBQVdBLGVBQUtrQixxQkFBTCxDQUEyQlAsSUFBM0I7QUFDSDtBQUNKOztBQUVELEtBOUZPO0FBK0ZSUSxhQS9GUSxxQkErRkVDLElBL0ZGLEVBK0ZPMUIsS0EvRlAsRUErRmEyQixRQS9GYixFQStGdUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsVUFBR0QsSUFBSSxDQUFDakIsTUFBTCxJQUFhLENBQWhCLEVBQWtCLENBQUU7QUFDbkIsWUFBSWIsS0FBSixDQUFXZ0MsTUFBWCxDQUFrQkMsTUFBTSxHQUFDLENBQXpCO0FBQ0EsYUFBSSxJQUFJckIsQ0FBUixJQUFhLEtBQUs5RCxLQUFMLENBQVdqQixhQUF4QixFQUFzQztBQUNyQyxlQUFJLElBQUlrRixDQUFSLElBQWEsS0FBS2pFLEtBQUwsQ0FBV2pCLGFBQVgsQ0FBeUIrRSxDQUF6QixFQUE0QmhCLElBQXpDLEVBQThDO0FBQzdDLGlCQUFJLElBQUlzQyxDQUFSLElBQWEsS0FBS3BGLEtBQUwsQ0FBV2pCLGFBQVgsQ0FBeUIrRSxDQUF6QixFQUE0QmhCLElBQTVCLENBQWlDbUIsQ0FBakMsRUFBb0NULFFBQWpELEVBQTBEO0FBQ3pELGtCQUFHeUIsUUFBUSxDQUFDLENBQUQsQ0FBUixDQUFZekYsSUFBWixJQUFvQixLQUFLUSxLQUFMLENBQVdqQixhQUFYLENBQXlCK0UsQ0FBekIsRUFBNEJoQixJQUE1QixDQUFpQ21CLENBQWpDLEVBQW9DVCxRQUFwQyxDQUE2QzRCLENBQTdDLEVBQWdENUYsSUFBdkUsRUFBNEU7QUFDM0UscUJBQUtRLEtBQUwsQ0FBV2pCLGFBQVgsQ0FBeUIrRSxDQUF6QixFQUE0QmhCLElBQTVCLENBQWlDbUIsQ0FBakMsRUFBb0NsQixLQUFwQyxHQUEwQyxFQUExQztBQUNBO0FBQ0Q7QUFDRDtBQUNEO0FBQ0Q7O0FBRUQsV0FBSSxJQUFJc0MsQ0FBUixJQUFhTCxJQUFiLEVBQWtCO0FBQ2pCLFlBQUk5QixLQUFKLENBQVdnQyxNQUFYLENBQWtCQyxNQUFNLEdBQUMsQ0FBekI7QUFDQSxhQUFJLElBQUlyQixDQUFSLElBQWEsS0FBSzlELEtBQUwsQ0FBV2pCLGFBQXhCLEVBQXNDO0FBQ3JDLGVBQUksSUFBSWtGLENBQVIsSUFBYSxLQUFLakUsS0FBTCxDQUFXakIsYUFBWCxDQUF5QitFLENBQXpCLEVBQTRCaEIsSUFBekMsRUFBOEM7QUFDN0MsaUJBQUksSUFBSXNDLENBQVIsSUFBYSxLQUFLcEYsS0FBTCxDQUFXakIsYUFBWCxDQUF5QitFLENBQXpCLEVBQTRCaEIsSUFBNUIsQ0FBaUNtQixDQUFqQyxFQUFvQ1QsUUFBakQsRUFBMEQ7QUFDekQsa0JBQUd3QixJQUFJLENBQUNLLENBQUQsQ0FBSixDQUFRN0YsSUFBUixJQUFnQixLQUFLUSxLQUFMLENBQVdqQixhQUFYLENBQXlCK0UsQ0FBekIsRUFBNEJoQixJQUE1QixDQUFpQ21CLENBQWpDLEVBQW9DVCxRQUFwQyxDQUE2QzRCLENBQTdDLEVBQWdENUYsSUFBbkUsRUFBd0U7QUFDdkUwRCxxQkFBSyxHQUFDWSxDQUFOLENBQVFvQixNQUFNLEdBQUNqQixDQUFQLENBQVNrQixNQUFNLEdBQUNDLENBQVA7QUFDakI7QUFDRDtBQUNEO0FBQ0Q7QUFDRCxZQUFJRSxTQUFTLEdBQUdOLElBQUksQ0FBQ0ssQ0FBRCxDQUFwQjtBQUNBLFlBQUk1QixTQUFTLEdBQUcsS0FBS3pELEtBQUwsQ0FBV2pCLGFBQVgsQ0FBeUJtRSxLQUF6QixFQUFnQ0osSUFBaEMsQ0FBcUNvQyxNQUFyQyxDQUFoQjs7QUFFQSxxQkFBWXpCLFNBQVo7QUFDQSxZQUFJNkIsU0FBUyxDQUFDOUYsSUFBVixJQUFrQmlFLFNBQVMsQ0FBQ1YsS0FBaEMsRUFBdUM7QUFDdEMsZUFBSy9DLEtBQUwsQ0FBV2pCLGFBQVgsQ0FBeUJtRSxLQUF6QixFQUFnQ0osSUFBaEMsQ0FBcUNvQyxNQUFyQyxFQUE2Q25DLEtBQTdDLEdBQW1ETyxLQUFuRDtBQUNBLHVCQUFZLEtBQUt0RCxLQUFMLENBQVdqQixhQUFYLENBQXlCbUUsS0FBekIsRUFBZ0NKLElBQWhDLENBQXFDb0MsTUFBckMsRUFBNkNuQyxLQUF6RDtBQUNBLGNBQUlXLE9BQU8sR0FBRyxLQUFLMUQsS0FBTCxDQUFXakIsYUFBWCxDQUF5Qm1FLEtBQXpCLEVBQWdDSixJQUFoQyxDQUFxQ29DLE1BQXJDLEVBQTZDdkIsTUFBM0Q7QUFDQSxjQUFJRCxPQUFKLEVBQWE7QUFDTjtBQUNBLGdCQUFJRSxHQUFHLEdBQUMsRUFBUjtBQUNBLGdCQUFJQyxRQUFRLEdBQUcsS0FBSzdELEtBQUwsQ0FBV2pCLGFBQTFCO0FBQ0EsaUJBQUssSUFBSStFLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELFFBQVEsQ0FBQ0UsTUFBN0IsRUFBcUNELENBQUMsRUFBdEMsRUFBMEM7QUFDekMsa0JBQUlFLElBQUksR0FBR0gsUUFBUSxDQUFDQyxDQUFELENBQVIsQ0FBWWhCLElBQXZCO0FBQ0EsbUJBQUssSUFBSW1CLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELElBQUksQ0FBQ0QsTUFBekIsRUFBaUNFLENBQUMsRUFBbEMsRUFBc0M7QUFDckMsb0JBQUlDLEVBQUUsR0FBR0YsSUFBSSxDQUFDQyxDQUFELENBQWI7QUFDQSxvQkFBR0MsRUFBRSxDQUFDQyxJQUFILElBQVMsVUFBWjtBQUNDLG9CQUFHRCxFQUFFLENBQUNuQixLQUFILElBQVUsR0FBYixFQUFrQm1CLEVBQUUsQ0FBQ25CLEtBQUgsR0FBUyxFQUFUO0FBQ25CLG9CQUFHbUIsRUFBRSxDQUFDQyxJQUFILElBQVMsTUFBVCxJQUFtQkQsRUFBRSxDQUFDQyxJQUFILElBQVMsTUFBL0I7QUFDQ1AsbUJBQUcsQ0FBQ1EsSUFBSixDQUFTLEVBQUVKLElBQUksRUFBRUUsRUFBRSxDQUFDMUUsSUFBWCxFQUFpQjZFLEdBQUcsRUFBRUgsRUFBRSxDQUFDSSxLQUFILEdBQVVKLEVBQUUsQ0FBQ0ksS0FBYixHQUFvQixFQUExQyxFQUFULEVBREQ7QUFFSyxvQkFBR0osRUFBRSxDQUFDQyxJQUFILElBQVMsS0FBWjtBQUNWUCxtQkFBRyxDQUFDUSxJQUFKLENBQVMsRUFBRUosSUFBSSxFQUFFRSxFQUFFLENBQUMxRSxJQUFYLEVBQWlCNkUsR0FBRyxFQUFFSCxFQUFFLENBQUNuQixLQUFILEdBQVMsR0FBVCxHQUFhLEdBQW5DLEVBQVQsRUFEVTtBQUVBLG9CQUFHbUIsRUFBRSxDQUFDQyxJQUFILElBQVMsSUFBVCxJQUFpQkQsRUFBRSxDQUFDQyxJQUFILElBQVMsUUFBN0I7QUFDVlAsbUJBQUcsQ0FBQ1EsSUFBSixDQUFTLEVBQUVKLElBQUksRUFBRUUsRUFBRSxDQUFDMUUsSUFBWCxFQUFpQjZFLEdBQUcsRUFBRWlCLFNBQVMsQ0FBQzlGLElBQWhDLEVBQVQsRUFEVTs7QUFHSm9FLG1CQUFHLENBQUNRLElBQUosQ0FBUyxFQUFFSixJQUFJLEVBQUVFLEVBQUUsQ0FBQzFFLElBQVgsRUFBaUI2RSxHQUFHLEVBQUVILEVBQUUsQ0FBQ25CLEtBQUgsR0FBVW1CLEVBQUUsQ0FBQ25CLEtBQWIsR0FBb0IsRUFBMUMsRUFBVDtBQUNEO0FBQ0Q7QUFDRCxnQkFBSXdCLElBQUksR0FBRztBQUNQYixxQkFBTyxFQUFFQSxPQURGO0FBRVBjLG9CQUFNLEVBQUUsR0FGRDtBQUdQQyx1QkFBUyxFQUFFLEVBSEo7QUFJUEMsb0JBQU0sRUFBRSxFQUpEO0FBS1BDLG9CQUFNLEVBQUUsRUFMRDtBQU1QQyx1QkFBUyxFQUFFLEVBTko7QUFPUGhFLG1CQUFLLEVBQUUsS0FBS1osS0FBTCxDQUFXbEIsS0FBWCxDQUFpQjhCLEtBUGpCO0FBUVBpRSxtQkFBSyxFQUFFLEVBUkE7QUFTUGIsa0JBQUksRUFBRUosR0FUQyxFQUFYOztBQVdBLGlCQUFLa0IscUJBQUwsQ0FBMkJQLElBQTNCO0FBQ0g7QUFDSjtBQUNEOzs7QUFHRCxLQXhLTztBQXlLUmdCLFdBektRLG1CQXlLQXpELENBektBLEVBeUtFO0FBQ1Q7QUFDQSxVQUFJMkIsU0FBUyxHQUFHLEtBQUt6RCxLQUFMLENBQVdqQixhQUFYLENBQXlCK0MsQ0FBQyxDQUFDYyxNQUFGLENBQVNDLE9BQVQsQ0FBaUIsT0FBakIsQ0FBekIsRUFBb0RDLElBQXBELENBQXlEaEIsQ0FBQyxDQUFDYyxNQUFGLENBQVNDLE9BQVQsQ0FBaUIsUUFBakIsQ0FBekQsQ0FBaEI7QUFDQTtBQUNBLFVBQUlmLENBQUMsQ0FBQ2MsTUFBRixDQUFTVSxLQUFULElBQWtCRyxTQUFTLENBQUNWLEtBQWhDLEVBQXVDO0FBQ3RDLGFBQUsvQyxLQUFMLENBQVdqQixhQUFYLENBQXlCK0MsQ0FBQyxDQUFDYyxNQUFGLENBQVNDLE9BQVQsQ0FBaUIsT0FBakIsQ0FBekIsRUFBb0RDLElBQXBELENBQXlEaEIsQ0FBQyxDQUFDYyxNQUFGLENBQVNDLE9BQVQsQ0FBaUIsUUFBakIsQ0FBekQsRUFBcUZFLEtBQXJGLEdBQTJGakIsQ0FBQyxDQUFDYyxNQUFGLENBQVNVLEtBQXBHO0FBQ0EsWUFBSUksT0FBTyxHQUFHLEtBQUsxRCxLQUFMLENBQVdqQixhQUFYLENBQXlCK0MsQ0FBQyxDQUFDYyxNQUFGLENBQVNDLE9BQVQsQ0FBaUIsT0FBakIsQ0FBekIsRUFBb0RDLElBQXBELENBQXlEaEIsQ0FBQyxDQUFDYyxNQUFGLENBQVNDLE9BQVQsQ0FBaUIsUUFBakIsQ0FBekQsRUFBcUZjLE1BQW5HO0FBQ0EsWUFBSUQsT0FBSixFQUFhO0FBQ047QUFDQSxjQUFJRSxHQUFHLEdBQUMsRUFBUjtBQUNBLGNBQUlDLFFBQVEsR0FBRyxLQUFLN0QsS0FBTCxDQUFXakIsYUFBMUI7QUFDQSxlQUFLLElBQUkrRSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxRQUFRLENBQUNFLE1BQTdCLEVBQXFDRCxDQUFDLEVBQXRDLEVBQTBDO0FBQ3pDLGdCQUFJRSxJQUFJLEdBQUdILFFBQVEsQ0FBQ0MsQ0FBRCxDQUFSLENBQVloQixJQUF2QjtBQUNBLGlCQUFLLElBQUltQixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxJQUFJLENBQUNELE1BQXpCLEVBQWlDRSxDQUFDLEVBQWxDLEVBQXNDO0FBQ3JDLGtCQUFJQyxFQUFFLEdBQUdGLElBQUksQ0FBQ0MsQ0FBRCxDQUFiO0FBQ0Esa0JBQUdDLEVBQUUsQ0FBQ0MsSUFBSCxJQUFTLFVBQVo7QUFDQyxrQkFBR0QsRUFBRSxDQUFDbkIsS0FBSCxJQUFVLEdBQWIsRUFBa0JtQixFQUFFLENBQUNuQixLQUFILEdBQVMsRUFBVDtBQUNuQixrQkFBR21CLEVBQUUsQ0FBQ0MsSUFBSCxJQUFTLE1BQVQsSUFBbUJELEVBQUUsQ0FBQ0MsSUFBSCxJQUFTLE1BQS9CO0FBQ0NQLGlCQUFHLENBQUNRLElBQUosQ0FBUyxFQUFFSixJQUFJLEVBQUVFLEVBQUUsQ0FBQzFFLElBQVgsRUFBaUI2RSxHQUFHLEVBQUVILEVBQUUsQ0FBQ0ksS0FBSCxHQUFVSixFQUFFLENBQUNJLEtBQWIsR0FBb0IsRUFBMUMsRUFBVCxFQUREO0FBRUssa0JBQUdKLEVBQUUsQ0FBQ0MsSUFBSCxJQUFTLEtBQVo7QUFDVlAsaUJBQUcsQ0FBQ1EsSUFBSixDQUFTLEVBQUVKLElBQUksRUFBRUUsRUFBRSxDQUFDMUUsSUFBWCxFQUFpQjZFLEdBQUcsRUFBRUgsRUFBRSxDQUFDbkIsS0FBSCxHQUFTLEdBQVQsR0FBYSxHQUFuQyxFQUFULEVBRFU7O0FBR0phLGlCQUFHLENBQUNRLElBQUosQ0FBUyxFQUFFSixJQUFJLEVBQUVFLEVBQUUsQ0FBQzFFLElBQVgsRUFBaUI2RSxHQUFHLEVBQUVILEVBQUUsQ0FBQ25CLEtBQUgsR0FBVW1CLEVBQUUsQ0FBQ25CLEtBQWIsR0FBb0IsRUFBMUMsRUFBVDtBQUNEO0FBQ0Q7QUFDRCxjQUFJd0IsSUFBSSxHQUFHO0FBQ1BiLG1CQUFPLEVBQUVBLE9BREY7QUFFUGMsa0JBQU0sRUFBRSxHQUZEO0FBR1BDLHFCQUFTLEVBQUUsRUFISjtBQUlQQyxrQkFBTSxFQUFFLEVBSkQ7QUFLUEMsa0JBQU0sRUFBRSxFQUxEO0FBTVBDLHFCQUFTLEVBQUUsRUFOSjtBQU9QaEUsaUJBQUssRUFBRSxLQUFLWixLQUFMLENBQVdsQixLQUFYLENBQWlCOEIsS0FQakI7QUFRUGlFLGlCQUFLLEVBQUUsRUFSQTtBQVNQYixnQkFBSSxFQUFFSixHQVRDLEVBQVg7O0FBV0EsZUFBS2tCLHFCQUFMLENBQTJCUCxJQUEzQixFQUFpQ2QsU0FBakM7QUFDSDtBQUNKOztBQUVELEtBak5PO0FBa05SK0IsV0FsTlEsbUJBa05BMUQsQ0FsTkEsRUFrTkc7QUFDVjtBQUNBLFVBQUkyRCxTQUFTLEdBQUczRCxDQUFDLENBQUNjLE1BQUYsQ0FBU0MsT0FBVCxDQUFpQjZDLE9BQWpCLEdBQXlCLEtBQXpCLEdBQStCLElBQS9DO0FBQ0EsVUFBSWpDLFNBQVMsR0FBRyxLQUFLekQsS0FBTCxDQUFXakIsYUFBWCxDQUF5QitDLENBQUMsQ0FBQ2MsTUFBRixDQUFTQyxPQUFULENBQWlCLE9BQWpCLENBQXpCLEVBQW9EQyxJQUFwRCxDQUF5RGhCLENBQUMsQ0FBQ2MsTUFBRixDQUFTQyxPQUFULENBQWlCLFFBQWpCLENBQXpELENBQWhCO0FBQ0E7QUFDQSxVQUFJNEMsU0FBUyxJQUFJaEMsU0FBUyxDQUFDVixLQUEzQixFQUFrQztBQUNqQyxhQUFLL0MsS0FBTCxDQUFXakIsYUFBWCxDQUF5QitDLENBQUMsQ0FBQ2MsTUFBRixDQUFTQyxPQUFULENBQWlCLE9BQWpCLENBQXpCLEVBQW9EQyxJQUFwRCxDQUF5RGhCLENBQUMsQ0FBQ2MsTUFBRixDQUFTQyxPQUFULENBQWlCLFFBQWpCLENBQXpELEVBQXFGRSxLQUFyRixHQUEyRjBDLFNBQTNGO0FBQ0EsWUFBSS9CLE9BQU8sR0FBRyxLQUFLMUQsS0FBTCxDQUFXakIsYUFBWCxDQUF5QitDLENBQUMsQ0FBQ2MsTUFBRixDQUFTQyxPQUFULENBQWlCLE9BQWpCLENBQXpCLEVBQW9EQyxJQUFwRCxDQUF5RGhCLENBQUMsQ0FBQ2MsTUFBRixDQUFTQyxPQUFULENBQWlCLFFBQWpCLENBQXpELEVBQXFGYyxNQUFuRztBQUNBLFlBQUlELE9BQUosRUFBYTtBQUNOO0FBQ0EsY0FBSUUsR0FBRyxHQUFDLEVBQVI7QUFDQSxjQUFJQyxRQUFRLEdBQUcsS0FBSzdELEtBQUwsQ0FBV2pCLGFBQTFCO0FBQ0EsZUFBSyxJQUFJK0UsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsUUFBUSxDQUFDRSxNQUE3QixFQUFxQ0QsQ0FBQyxFQUF0QyxFQUEwQztBQUN6QyxnQkFBSUUsSUFBSSxHQUFHSCxRQUFRLENBQUNDLENBQUQsQ0FBUixDQUFZaEIsSUFBdkI7QUFDQSxpQkFBSyxJQUFJbUIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsSUFBSSxDQUFDRCxNQUF6QixFQUFpQ0UsQ0FBQyxFQUFsQyxFQUFzQztBQUNyQyxrQkFBSUMsRUFBRSxHQUFHRixJQUFJLENBQUNDLENBQUQsQ0FBYjtBQUNBLGtCQUFHQyxFQUFFLENBQUNDLElBQUgsSUFBUyxVQUFaO0FBQ0Msa0JBQUdELEVBQUUsQ0FBQ25CLEtBQUgsSUFBVSxHQUFiLEVBQWtCbUIsRUFBRSxDQUFDbkIsS0FBSCxHQUFTLEVBQVQ7QUFDbkIsa0JBQUdtQixFQUFFLENBQUNDLElBQUgsSUFBUyxNQUFULElBQW1CRCxFQUFFLENBQUNDLElBQUgsSUFBUyxNQUEvQjtBQUNDUCxpQkFBRyxDQUFDUSxJQUFKLENBQVMsRUFBRUosSUFBSSxFQUFFRSxFQUFFLENBQUMxRSxJQUFYLEVBQWlCNkUsR0FBRyxFQUFFSCxFQUFFLENBQUNJLEtBQUgsR0FBVUosRUFBRSxDQUFDSSxLQUFiLEdBQW9CLEVBQTFDLEVBQVQsRUFERDtBQUVLLGtCQUFHSixFQUFFLENBQUNDLElBQUgsSUFBUyxLQUFaO0FBQ1ZQLGlCQUFHLENBQUNRLElBQUosQ0FBUyxFQUFFSixJQUFJLEVBQUVFLEVBQUUsQ0FBQzFFLElBQVgsRUFBaUI2RSxHQUFHLEVBQUVILEVBQUUsQ0FBQ25CLEtBQUgsR0FBUyxHQUFULEdBQWEsR0FBbkMsRUFBVCxFQURVOztBQUdWYSxpQkFBRyxDQUFDUSxJQUFKLENBQVMsRUFBRUosSUFBSSxFQUFFRSxFQUFFLENBQUMxRSxJQUFYLEVBQWlCNkUsR0FBRyxFQUFFSCxFQUFFLENBQUNuQixLQUFILEdBQVVtQixFQUFFLENBQUNuQixLQUFiLEdBQW9CLEVBQTFDLEVBQVQ7O0FBRUs7QUFDRDtBQUNELGNBQUl3QixJQUFJLEdBQUc7QUFDUGIsbUJBQU8sRUFBRUEsT0FERjtBQUVQYyxrQkFBTSxFQUFFLEdBRkQ7QUFHUEMscUJBQVMsRUFBRSxFQUhKO0FBSVBDLGtCQUFNLEVBQUUsRUFKRDtBQUtQQyxrQkFBTSxFQUFFLEVBTEQ7QUFNUEMscUJBQVMsRUFBRSxFQU5KO0FBT1BoRSxpQkFBSyxFQUFFLEtBQUtaLEtBQUwsQ0FBV2xCLEtBQVgsQ0FBaUI4QixLQVBqQjtBQVFQaUUsaUJBQUssRUFBRSxFQVJBO0FBU1BiLGdCQUFJLEVBQUVKLEdBVEMsRUFBWDs7QUFXQSxlQUFLa0IscUJBQUwsQ0FBMkJQLElBQTNCO0FBQ0g7QUFDSjs7QUFFRCxLQTVQTztBQTZQUm9CLHFCQTdQUSw2QkE2UFV6QyxLQTdQVixFQTZQZ0I7QUFDdkI7QUFDWSxXQUFLbEQsS0FBTCxDQUFXVCxZQUFYLENBQXdCcUcsTUFBeEIsQ0FBK0IxQyxLQUEvQixFQUFzQyxDQUF0QyxFQUZXLENBRStCO0FBQ3REO0FBQ0EsS0FqUU87QUFrUVIyQyxpQkFsUVEseUJBa1FNL0QsQ0FsUU4sRUFrUVM7QUFDYjtBQUNBLG1CQUFZQSxDQUFDLENBQUNsRCxJQUFGLENBQU9rSCxJQUFQLENBQVksR0FBWixDQUFaO0FBQ0gsV0FBSzlGLEtBQUwsQ0FBV2pCLGFBQVgsQ0FBeUIrQyxDQUFDLENBQUNjLE1BQUYsQ0FBU0MsT0FBVCxDQUFpQixPQUFqQixDQUF6QixFQUFvREMsSUFBcEQsQ0FBeURoQixDQUFDLENBQUNjLE1BQUYsQ0FBU0MsT0FBVCxDQUFpQixRQUFqQixDQUF6RCxFQUFxRkUsS0FBckYsR0FBMkZqQixDQUFDLENBQUNsRCxJQUFGLENBQU9rSCxJQUFQLENBQVksR0FBWixDQUEzRjtBQUNBLEtBdFFPO0FBdVFSQyx1QkF2UVEsK0JBdVFZN0MsS0F2UVosRUF1UWtCZ0MsTUF2UWxCLEVBdVF5QjtBQUNoQyxVQUFJckUsS0FBSyxHQUFHLElBQVo7QUFDQSxVQUFJbUYsbUJBQW1CLEdBQUduRixLQUFLLENBQUNiLEtBQU4sQ0FBWWpCLGFBQVosQ0FBMEJtRSxLQUExQixFQUFpQ0osSUFBakMsQ0FBc0NvQyxNQUF0QyxFQUE4Q2MsbUJBQXhFO0FBQ0EsVUFBSUMsZUFBZSxHQUFHcEYsS0FBSyxDQUFDYixLQUFOLENBQVlqQixhQUFaLENBQTBCbUUsS0FBMUIsRUFBaUNKLElBQWpDLENBQXNDb0MsTUFBdEMsRUFBOENlLGVBQXBFO0FBQ0EsVUFBRyxDQUFDRCxtQkFBSixFQUF3QjtBQUN2QnJHLFdBQUcsQ0FBQ1EsU0FBSixDQUFjLEVBQUN0QixLQUFLLEVBQUMsSUFBUCxFQUFZdUIsT0FBTyxFQUFDLGlDQUFwQixFQUFzREMsVUFBVSxFQUFDLEtBQWpFLEVBQXVFQyxXQUFXLEVBQUMsSUFBbkYsRUFBZDtBQUNBO0FBQ0E7QUFDRCxVQUFHLENBQUMyRixlQUFKLEVBQW9CO0FBQ25CdEcsV0FBRyxDQUFDUSxTQUFKLENBQWMsRUFBQ3RCLEtBQUssRUFBQyxJQUFQLEVBQVl1QixPQUFPLEVBQUMsNkJBQXBCLEVBQWtEQyxVQUFVLEVBQUMsS0FBN0QsRUFBbUVDLFdBQVcsRUFBQyxJQUEvRSxFQUFkO0FBQ0E7QUFDQTtBQUNELFVBQUltRCxTQUFTLEdBQUcsS0FBS3pELEtBQUwsQ0FBV2pCLGFBQVgsQ0FBeUJtRSxLQUF6QixFQUFnQ0osSUFBaEMsQ0FBcUNvQyxNQUFyQyxDQUFoQjtBQUNBLFdBQUtnQiw0QkFBTCxDQUFrQ0YsbUJBQWxDLEVBQXVEdkMsU0FBdkQsRUFBa0V3QyxlQUFsRSxFQUFtRi9DLEtBQW5GLEVBQXlGZ0MsTUFBekY7QUFDQSxLQXJSTztBQXNSUmlCLG9CQXRSUSw0QkFzUlNqRCxLQXRSVCxFQXNSZWdDLE1BdFJmLEVBc1JzQjtBQUM3QixVQUFJcEcsS0FBSyxHQUFDLEVBQUNvRSxLQUFLLEVBQUNBLEtBQVAsRUFBYWdDLE1BQU0sRUFBQ0EsTUFBcEIsRUFBVjtBQUNBLFVBQUlyRSxLQUFLLEdBQUcsSUFBWjtBQUNBbEIsU0FBRyxDQUFDeUcsVUFBSixDQUFlO0FBQ2RDLFdBQUcsRUFBQyx1Q0FBcUN2RyxJQUFJLENBQUN3RyxTQUFMLENBQWV4SCxLQUFmLENBRDNCO0FBRWR5SCxjQUFNLEVBQUM7QUFDTkMsZ0JBRE0sa0JBQ0M1SCxJQURELEVBQ01FLEtBRE4sRUFDWTtBQUNqQjtBQUNBLHlCQUFZRixJQUFaO0FBQ0FpQyxpQkFBSyxDQUFDYixLQUFOLENBQVlqQixhQUFaLENBQTBCRCxLQUFLLENBQUNvRSxLQUFoQyxFQUF1Q0osSUFBdkMsQ0FBNENoRSxLQUFLLENBQUNvRyxNQUFsRCxFQUEwRG5DLEtBQTFELEdBQWdFbkUsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRWSxJQUF4RTtBQUNBcUIsaUJBQUssQ0FBQ2IsS0FBTixDQUFZakIsYUFBWixDQUEwQkQsS0FBSyxDQUFDb0UsS0FBaEMsRUFBdUNKLElBQXZDLENBQTRDaEUsS0FBSyxDQUFDb0csTUFBbEQsRUFBMERaLEtBQTFELEdBQWdFMUYsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRNkgsS0FBUixHQUFjLEdBQWQsR0FBa0I3SCxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVFZLElBQTFGOztBQUVBLGdCQUFJa0UsT0FBTyxHQUFHN0MsS0FBSyxDQUFDYixLQUFOLENBQVlqQixhQUFaLENBQTBCRCxLQUFLLENBQUNvRSxLQUFoQyxFQUF1Q0osSUFBdkMsQ0FBNENoRSxLQUFLLENBQUNvRyxNQUFsRCxFQUEwRHZCLE1BQXhFO0FBQ0EsZ0JBQUlELE9BQUosRUFBYTtBQUNUQSxxQkFBTyxHQUFHQSxPQUFPLENBQUNnRCxJQUFSLEVBQVY7QUFDQSxrQkFBSWhELE9BQUosRUFBYTtBQUNULG9CQUFJYSxJQUFJLEdBQUc7QUFDUGIseUJBQU8sRUFBRUEsT0FERjtBQUVQYyx3QkFBTSxFQUFFLEdBRkQ7QUFHUEMsMkJBQVMsRUFBRSxFQUhKO0FBSVBDLHdCQUFNLEVBQUUsRUFKRDtBQUtQQyx3QkFBTSxFQUFFLEVBTEQ7QUFNUEMsMkJBQVMsRUFBRWhHLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUTZILEtBTlo7QUFPUDdGLHVCQUFLLEVBQUVDLEtBQUssQ0FBQ2IsS0FBTixDQUFZbEIsS0FBWixDQUFrQjhCLEtBUGxCO0FBUVBpRSx1QkFBSyxFQUFFLEVBUkE7QUFTUGIsc0JBQUksRUFBRSxFQVRDLEVBQVg7OztBQVlOO0FBQ01uRCxxQkFBSyxDQUFDaUUscUJBQU4sQ0FBNEJQLElBQTVCO0FBQ0g7QUFDSjtBQUNELFdBM0JLLEVBRk8sRUFBZjs7O0FBZ0NBLEtBelRPO0FBMFRSb0Msb0JBMVRRLDRCQTBUUzdFLENBMVRULEVBMFRXO0FBQ2xCLG1CQUFZQSxDQUFDLENBQUNjLE1BQWQ7QUFDQWpELFNBQUcsQ0FBQ1EsU0FBSixDQUFjLEVBQUN0QixLQUFLLEVBQUMsSUFBUCxFQUFZdUIsT0FBTyxFQUFDLFVBQXBCLEVBQStCQyxVQUFVLEVBQUMsS0FBMUMsRUFBZ0RDLFdBQVcsRUFBQyxJQUE1RCxFQUFkO0FBQ0E7QUFDQTtBQUNBLEtBL1RPO0FBZ1VSc0csb0JBaFVRLDRCQWdVUzFELEtBaFVULEVBZ1VlZ0MsTUFoVWYsRUFnVXNCO0FBQzdCLFVBQUlwRyxLQUFLLEdBQUMsRUFBQ29FLEtBQUssRUFBQ0EsS0FBUCxFQUFhZ0MsTUFBTSxFQUFDQSxNQUFwQixFQUFWO0FBQ0EsVUFBSXJFLEtBQUssR0FBRyxJQUFaO0FBQ0FsQixTQUFHLENBQUN5RyxVQUFKLENBQWU7QUFDZEMsV0FBRyxFQUFDLHVDQUFxQ3ZHLElBQUksQ0FBQ3dHLFNBQUwsQ0FBZXhILEtBQWYsQ0FEM0I7QUFFZHlILGNBQU0sRUFBQztBQUNOQyxnQkFETSxrQkFDQzVILElBREQsRUFDTUUsS0FETixFQUNZO0FBQ2pCO0FBQ0E7QUFDQStCLGlCQUFLLENBQUNiLEtBQU4sQ0FBWWpCLGFBQVosQ0FBMEJELEtBQUssQ0FBQ29FLEtBQWhDLEVBQXVDSixJQUF2QyxDQUE0Q2hFLEtBQUssQ0FBQ29HLE1BQWxELEVBQTBEbkMsS0FBMUQsR0FBZ0VuRSxJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVFZLElBQXhFO0FBQ0FxQixpQkFBSyxDQUFDYixLQUFOLENBQVlqQixhQUFaLENBQTBCRCxLQUFLLENBQUNvRSxLQUFoQyxFQUF1Q0osSUFBdkMsQ0FBNENoRSxLQUFLLENBQUNvRyxNQUFsRCxFQUEwRFosS0FBMUQsR0FBZ0UxRixJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVFpSSxFQUFSLEdBQVcsR0FBWCxHQUFlakksSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRWSxJQUF2Rjs7QUFFQSxnQkFBSWtFLE9BQU8sR0FBRzdDLEtBQUssQ0FBQ2IsS0FBTixDQUFZakIsYUFBWixDQUEwQkQsS0FBSyxDQUFDb0UsS0FBaEMsRUFBdUNKLElBQXZDLENBQTRDaEUsS0FBSyxDQUFDb0csTUFBbEQsRUFBMER2QixNQUF4RTtBQUNBLGdCQUFJRCxPQUFKLEVBQWE7QUFDVEEscUJBQU8sR0FBR0EsT0FBTyxDQUFDZ0QsSUFBUixFQUFWO0FBQ0Esa0JBQUloRCxPQUFKLEVBQWE7QUFDVCxvQkFBSWEsSUFBSSxHQUFHO0FBQ1BiLHlCQUFPLEVBQUVBLE9BREY7QUFFUGMsd0JBQU0sRUFBRSxHQUZEO0FBR1BDLDJCQUFTLEVBQUU3RixJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVFpSSxFQUhaO0FBSVBuQyx3QkFBTSxFQUFFLEVBSkQ7QUFLUEMsd0JBQU0sRUFBRSxFQUxEO0FBTVBDLDJCQUFTLEVBQUUsRUFOSjtBQU9QaEUsdUJBQUssRUFBRUMsS0FBSyxDQUFDYixLQUFOLENBQVlsQixLQUFaLENBQWtCOEIsS0FQbEI7QUFRUGlFLHVCQUFLLEVBQUUsRUFSQTtBQVNQYixzQkFBSSxFQUFFLEVBVEMsRUFBWDs7O0FBWUE7QUFDQW5ELHFCQUFLLENBQUNpRSxxQkFBTixDQUE0QlAsSUFBNUI7QUFDSDtBQUNKO0FBQ0QsV0EzQkssRUFGTyxFQUFmOzs7QUFnQ0EsS0FuV087QUFvV1J1QyxRQXBXUSxrQkFvV0Y7QUFDTCxVQUFJLEtBQUs5RyxLQUFMLENBQVdkLGFBQWY7QUFDQyxXQUFLNkgsdUJBQUwsR0FERDs7QUFHQyxXQUFLQyxHQUFMO0FBQ0QsS0F6V087QUEwV1JBLE9BMVdRLGlCQTBXSDtBQUNKckgsU0FBRyxDQUFDc0gsV0FBSixDQUFnQjtBQUNmcEksYUFBSyxFQUFDLFFBRFMsRUFBaEI7O0FBR0EsVUFBSStFLEdBQUcsR0FBQyxFQUFSO0FBQ0EsVUFBSUMsUUFBUSxHQUFHLEtBQUs3RCxLQUFMLENBQVdqQixhQUExQjtBQUNBLFdBQUssSUFBSStFLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELFFBQVEsQ0FBQ0UsTUFBN0IsRUFBcUNELENBQUMsRUFBdEMsRUFBMEM7QUFDekMsWUFBSUUsSUFBSSxHQUFHSCxRQUFRLENBQUNDLENBQUQsQ0FBUixDQUFZaEIsSUFBdkI7QUFDQSxhQUFLLElBQUltQixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxJQUFJLENBQUNELE1BQXpCLEVBQWlDRSxDQUFDLEVBQWxDLEVBQXNDO0FBQ3JDLGNBQUlDLEVBQUUsR0FBR0YsSUFBSSxDQUFDQyxDQUFELENBQWI7QUFDQSxjQUFHQyxFQUFFLENBQUNuQixLQUFILElBQVUsS0FBVixJQUFtQm1CLEVBQUUsQ0FBQ25CLEtBQUgsSUFBVSxTQUFoQyxFQUEyQ21CLEVBQUUsQ0FBQ25CLEtBQUgsR0FBUyxFQUFUO0FBQzNDLGNBQUdtQixFQUFFLENBQUNDLElBQUgsSUFBUyxVQUFaO0FBQ0MsY0FBR0QsRUFBRSxDQUFDbkIsS0FBSCxJQUFVLEdBQWIsRUFBa0JtQixFQUFFLENBQUNuQixLQUFILEdBQVMsRUFBVDtBQUNiLGNBQUdtQixFQUFFLENBQUNDLElBQUgsSUFBUyxNQUFULElBQW1CRCxFQUFFLENBQUNDLElBQUgsSUFBUyxNQUEvQjtBQUNDUCxhQUFHLENBQUNRLElBQUosQ0FBUyxFQUFFbEMsSUFBSSxFQUFFZ0MsRUFBRSxDQUFDMUUsSUFBWCxFQUFpQjhELEtBQUssRUFBRVksRUFBRSxDQUFDSSxLQUFILEdBQVVKLEVBQUUsQ0FBQ0ksS0FBYixHQUFvQixFQUE1QyxFQUFULEVBREQ7QUFFSyxjQUFHSixFQUFFLENBQUNDLElBQUgsSUFBUyxLQUFaO0FBQ1ZQLGFBQUcsQ0FBQ1EsSUFBSixDQUFTLEVBQUVsQyxJQUFJLEVBQUVnQyxFQUFFLENBQUMxRSxJQUFYLEVBQWlCOEQsS0FBSyxFQUFFWSxFQUFFLENBQUNuQixLQUFILEdBQVMsR0FBVCxHQUFhLEdBQXJDLEVBQVQsRUFEVTtBQUVBLGNBQUdtQixFQUFFLENBQUNDLElBQUgsSUFBUyxJQUFULElBQWlCRCxFQUFFLENBQUNDLElBQUgsSUFBUyxRQUE3QixFQUFzQztBQUNoRCxnQkFBR0QsRUFBRSxDQUFDZ0QsTUFBSCxJQUFXLElBQWQsRUFBbUIsQ0FBRTtBQUNwQixrQkFBSUMsTUFBTSxHQUFFLEVBQVo7QUFDQSxtQkFBSSxJQUFJOUIsQ0FBUixJQUFhbkIsRUFBRSxDQUFDbkIsS0FBaEIsRUFBc0I7QUFDckIsb0JBQUdvRSxNQUFIO0FBQ0NBLHNCQUFNLElBQUUsR0FBUjtBQUNEQSxzQkFBTSxJQUFFakQsRUFBRSxDQUFDbkIsS0FBSCxDQUFTc0MsQ0FBVCxDQUFSO0FBQ0E7QUFDRHpCLGlCQUFHLENBQUNRLElBQUosQ0FBUyxFQUFFbEMsSUFBSSxFQUFFZ0MsRUFBRSxDQUFDMUUsSUFBWCxFQUFpQjhELEtBQUssRUFBRTZELE1BQXhCLEVBQVQ7QUFDQSxhQVJEO0FBU0N2RCxlQUFHLENBQUNRLElBQUosQ0FBUyxFQUFFbEMsSUFBSSxFQUFFZ0MsRUFBRSxDQUFDMUUsSUFBWCxFQUFpQjhELEtBQUssRUFBRVksRUFBRSxDQUFDbkIsS0FBM0IsRUFBVDtBQUNELFdBWFU7O0FBYVZhLGFBQUcsQ0FBQ1EsSUFBSixDQUFTLEVBQUVsQyxJQUFJLEVBQUVnQyxFQUFFLENBQUMxRSxJQUFYLEVBQWlCOEQsS0FBSyxFQUFFWSxFQUFFLENBQUNuQixLQUFILEdBQVVtQixFQUFFLENBQUNuQixLQUFiLEdBQW9CLEVBQTVDLEVBQVQ7O0FBRUQsY0FBSSxDQUFDbUIsRUFBRSxDQUFDa0QsUUFBSCxJQUFlLEdBQWYsSUFBc0JsRCxFQUFFLENBQUNtRCxRQUFILElBQWUsSUFBdEMsS0FBK0MsQ0FBQ25ELEVBQUUsQ0FBQ25CLEtBQXZELEVBQThEO0FBQzlEO0FBQ0NwRCxlQUFHLENBQUMySCxXQUFKO0FBQ0E7QUFDQTNILGVBQUcsQ0FBQ1EsU0FBSixDQUFjLEVBQUN0QixLQUFLLEVBQUMsSUFBUCxFQUFZdUIsT0FBTyxFQUFDOEQsRUFBRSxDQUFDcUQsUUFBSCxHQUFZLE9BQWhDLEVBQXdDbEgsVUFBVSxFQUFDLEtBQW5ELEVBQXlEQyxXQUFXLEVBQUMsSUFBckUsRUFBZDtBQUNBO0FBQ0E7QUFDRDtBQUNEO0FBQ0QsVUFBSWtILFVBQVUsR0FBRztBQUNaLG9CQUFZLE1BREEsRUFDUTtBQUNwQkMsY0FBTSxFQUFFLEtBQUt6SCxLQUFMLENBQVdsQixLQUFYLENBQWlCOEIsS0FGYixFQUV3QjtBQUNwQyxrQkFBVSxLQUhFLEVBR087QUFDbkI4RyxtQkFBVyxFQUFFLElBSkQ7QUFLWkMsY0FBTSxFQUFFO0FBQ0pGLGdCQUFNLEVBQUUsS0FBS3pILEtBQUwsQ0FBV2xCLEtBQVgsQ0FBaUI4QixLQURyQixFQUxJLEVBQWpCOzs7O0FBVUEsVUFBSUYsUUFBUSxHQUFDO0FBQ1RDLGdCQUFRLEVBQUUsS0FBS1gsS0FBTCxDQUFXbEIsS0FBWCxDQUFpQjhCLEtBRGxCLEVBQ3lCZ0gsV0FBVyxFQUFFLEVBRHRDLEVBQzBDQyxXQUFXLEVBQUUsRUFEdkQ7QUFFVGpFLFdBQUcsRUFBRTlELElBQUksQ0FBQ3dHLFNBQUwsQ0FBZTFDLEdBQWYsQ0FGSSxFQUVpQmtFLE1BQU0sRUFBRWhJLElBQUksQ0FBQ3dHLFNBQUwsQ0FBZSxFQUFmLENBRnpCLEVBRTZDeUIsU0FBUyxFQUFFakksSUFBSSxDQUFDd0csU0FBTCxDQUFlLEVBQWYsQ0FGeEQ7QUFHVDBCLGVBQU8sRUFBRWxJLElBQUksQ0FBQ3dHLFNBQUwsQ0FBZSxFQUFmLENBSEEsRUFHb0JoSCxZQUFZLEVBQUVRLElBQUksQ0FBQ3dHLFNBQUwsQ0FBZSxFQUFmLENBSGxDLEVBR3NEMkIsT0FBTyxFQUFFbkksSUFBSSxDQUFDd0csU0FBTCxDQUFla0IsVUFBZixDQUgvRDtBQUlaVSw2QkFBcUIsRUFBRSxFQUpYLEVBQWI7OztBQU9BLG1CQUFZeEgsUUFBWjtBQUNBO0FBQ0EsV0FBS0ksTUFBTCxDQUFZTSxRQUFaLENBQXFCLGNBQXJCLEVBQW9DVixRQUFwQyxFQUE4Q1csSUFBOUMsQ0FBbUQsVUFBQUMsT0FBTyxFQUFFO0FBQzNELHFCQUFZQSxPQUFaO0FBQ0EzQixXQUFHLENBQUMySCxXQUFKO0FBQ0EsWUFBSWhHLE9BQU8sQ0FBQ0MsSUFBUixJQUFjLE9BQWxCLEVBQTJCO0FBQzFCLGNBQUlvQyxNQUFNLEdBQUc3RCxJQUFJLENBQUNDLEtBQUwsQ0FBV3VCLE9BQU8sQ0FBQzFDLElBQVIsQ0FBYXVKLE1BQXhCLENBQWI7QUFDQSxjQUFHeEUsTUFBTSxDQUFDeUUsR0FBUCxJQUFZLEdBQWYsRUFBbUI7QUFDbEIsZ0JBQUd6RSxNQUFNLENBQUMwRSxXQUFQLElBQW9CLEdBQXZCLEVBQTJCO0FBQzFCMUksaUJBQUcsQ0FBQzJJLFNBQUosQ0FBYyxFQUFDekosS0FBSyxFQUFDOEUsTUFBTSxDQUFDaEIsTUFBZCxFQUFxQjRGLElBQUksRUFBQyxTQUExQixFQUFvQ0MsUUFBUSxFQUFDLElBQTdDLEVBQWQ7QUFDQTtBQUNEO0FBQ0E7QUFDRDtBQUNBN0ksYUFBRyxDQUFDOEksVUFBSixDQUFlO0FBQ2RwQyxlQUFHLEVBQUMsOEJBQTRCdkcsSUFBSSxDQUFDd0csU0FBTCxDQUFlLE1BQUksQ0FBQ3RHLEtBQUwsQ0FBV2xCLEtBQTFCLENBQTVCLEdBQTZELGFBQTdELEdBQTJFLE1BQUksQ0FBQ2tCLEtBQUwsQ0FBV25CLEtBRDVFLEVBQWY7O0FBR0E7QUFDQSxTQWJELE1BYUs7QUFDSmMsYUFBRyxDQUFDUSxTQUFKLENBQWMsRUFBQ3RCLEtBQUssRUFBQyxJQUFQLEVBQVl1QixPQUFPLEVBQUNrQixPQUFPLENBQUNFLEdBQTVCLEVBQWdDbkIsVUFBVSxFQUFDLEtBQTNDLEVBQWlEQyxXQUFXLEVBQUMsSUFBN0QsRUFBZDtBQUNBO0FBQ0QsT0FuQkQsRUFtQkdtQixLQW5CSCxDQW1CUyxVQUFBQyxFQUFFLEVBQUU7QUFDWixxQkFBWUEsRUFBWjtBQUNBL0IsV0FBRyxDQUFDMkgsV0FBSjtBQUNBM0gsV0FBRyxDQUFDUSxTQUFKLENBQWMsRUFBQ3RCLEtBQUssRUFBQyxJQUFQLEVBQVl1QixPQUFPLEVBQUNzQixFQUFFLENBQUNDLE1BQXZCLEVBQThCdEIsVUFBVSxFQUFDLEtBQXpDLEVBQStDQyxXQUFXLEVBQUMsSUFBM0QsRUFBZDtBQUNBLE9BdkJEO0FBd0JBLEtBOWJPO0FBK2JSZ0MsbUJBL2JRLDZCQStiUztBQUNoQixVQUFJdUIsUUFBUSxHQUFHLEtBQUs3RCxLQUFMLENBQVdoQixjQUFYLENBQTBCdUQsUUFBMUIsQ0FBbUNtRyxVQUFsRDtBQUNBLFVBQUlDLFdBQVcsR0FBRyxFQUFsQjtBQUNBLFVBQUksS0FBSzNJLEtBQUwsQ0FBV2pCLGFBQVgsQ0FBeUJnRixNQUF6QixHQUFrQyxDQUF0QyxFQUF5QztBQUNyQyxhQUFLLElBQUlELENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELFFBQVEsQ0FBQ0UsTUFBN0IsRUFBcUNELENBQUMsRUFBdEMsRUFBMEM7QUFDdEMsY0FBSVgsSUFBSSxHQUFHVSxRQUFRLENBQUNDLENBQUQsQ0FBUixDQUFZWCxJQUF2QjtBQUNBLGNBQUlqQixJQUFJLEdBQUcyQixRQUFRLENBQUNDLENBQUQsQ0FBUixDQUFZOEUsY0FBdkI7QUFDQSxjQUFJQyxLQUFLLEdBQUdoRixRQUFRLENBQUNDLENBQUQsQ0FBUixDQUFZK0UsS0FBeEI7QUFDQSxlQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcsS0FBSzlJLEtBQUwsQ0FBV2pCLGFBQVgsQ0FBeUJnRixNQUE3QyxFQUFxRCtFLENBQUMsRUFBdEQsRUFBMEQ7QUFDdEQsZ0JBQUlDLE9BQU8sR0FBRyxLQUFLL0ksS0FBTCxDQUFXakIsYUFBWCxDQUF5QitKLENBQXpCLENBQWQ7QUFDQSxnQkFBSTVHLElBQUksSUFBSTZHLE9BQU8sQ0FBQ3ZKLElBQXBCLEVBQTBCO0FBQ3RCLGtCQUFJd0UsSUFBSSxHQUFHLEVBQVg7QUFDQSxtQkFBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHNEUsS0FBSyxDQUFDOUUsTUFBMUIsRUFBa0NFLENBQUMsRUFBbkMsRUFBdUM7QUFDbkMscUJBQUssSUFBSStFLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELE9BQU8sQ0FBQ2pHLElBQVIsQ0FBYWlCLE1BQWpDLEVBQXlDaUYsQ0FBQyxFQUExQyxFQUE4QztBQUMxQyxzQkFBSUMsRUFBRSxHQUFHRixPQUFPLENBQUNqRyxJQUFSLENBQWFrRyxDQUFiLENBQVQ7QUFDQSxzQkFBSUgsS0FBSyxDQUFDNUUsQ0FBRCxDQUFMLENBQVNELElBQVQsSUFBaUJpRixFQUFFLENBQUN6SixJQUF4QixFQUE4QjtBQUMxQnlKLHNCQUFFLENBQUN0RixNQUFILEdBQVlrRixLQUFLLENBQUM1RSxDQUFELENBQUwsQ0FBU04sTUFBckI7QUFDQXNGLHNCQUFFLENBQUNDLElBQUgsR0FBVUwsS0FBSyxDQUFDNUUsQ0FBRCxDQUFMLENBQVNpRixJQUFuQjtBQUNBRCxzQkFBRSxDQUFDNUIsUUFBSCxHQUFjd0IsS0FBSyxDQUFDNUUsQ0FBRCxDQUFMLENBQVNvRCxRQUF2QjtBQUNBNEIsc0JBQUUsQ0FBQ0UsVUFBSCxHQUFnQk4sS0FBSyxDQUFDNUUsQ0FBRCxDQUFMLENBQVNrRixVQUF6QjtBQUNBRixzQkFBRSxDQUFDRyxVQUFILEdBQWdCUCxLQUFLLENBQUM1RSxDQUFELENBQUwsQ0FBU21GLFVBQXpCO0FBQ0FILHNCQUFFLENBQUNJLGNBQUgsR0FBb0JSLEtBQUssQ0FBQzVFLENBQUQsQ0FBTCxDQUFTb0YsY0FBN0I7QUFDQUosc0JBQUUsQ0FBQ2pELG1CQUFILEdBQXlCNkMsS0FBSyxDQUFDNUUsQ0FBRCxDQUFMLENBQVMrQixtQkFBbEM7QUFDQWlELHNCQUFFLENBQUNoRCxlQUFILEdBQXFCNEMsS0FBSyxDQUFDNUUsQ0FBRCxDQUFMLENBQVNnQyxlQUE5QjtBQUNBZ0Qsc0JBQUUsQ0FBQ0ssTUFBSCxHQUFZVCxLQUFLLENBQUM1RSxDQUFELENBQUwsQ0FBU3FGLE1BQXJCO0FBQ0FMLHNCQUFFLENBQUMvQixNQUFILEdBQVkyQixLQUFLLENBQUM1RSxDQUFELENBQUwsQ0FBU2lELE1BQVQsSUFBaUJxQyxTQUFqQixHQUEyQixLQUEzQixHQUFpQ1YsS0FBSyxDQUFDNUUsQ0FBRCxDQUFMLENBQVNpRCxNQUF0RDtBQUNyQitCLHNCQUFFLENBQUNsRyxLQUFILEdBQVUsRUFBVjtBQUNBLHdCQUFHa0csRUFBRSxDQUFDekYsUUFBTixFQUFlO0FBQ2QsMEJBQUd5RixFQUFFLENBQUMvQixNQUFILElBQWEsSUFBaEI7QUFDQytCLHdCQUFFLENBQUNsRyxLQUFILEdBQVcsRUFBWCxDQURELENBQ2U7QUFEZjtBQUdDa0csMEJBQUUsQ0FBQ2xHLEtBQUgsR0FBVyxLQUFYLENBSmEsQ0FJSTtBQUNsQiwwQkFBSXlHLFlBQVksR0FBQyxFQUFqQjtBQUNBLDJCQUFLLElBQUlwRSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHNkQsRUFBRSxDQUFDekYsUUFBSCxDQUFZTyxNQUFoQyxFQUF3Q3FCLENBQUMsRUFBekMsRUFBNkM7QUFDNUM2RCwwQkFBRSxDQUFDekYsUUFBSCxDQUFZNEIsQ0FBWixFQUFlcUUsS0FBZixHQUFxQlIsRUFBRSxDQUFDekYsUUFBSCxDQUFZNEIsQ0FBWixFQUFlc0UsU0FBcEM7QUFDQVQsMEJBQUUsQ0FBQ3pGLFFBQUgsQ0FBWTRCLENBQVosRUFBZTlCLEtBQWYsR0FBcUIyRixFQUFFLENBQUN6RixRQUFILENBQVk0QixDQUFaLEVBQWVzRSxTQUFwQztBQUNBLDRCQUFHVCxFQUFFLENBQUN6RixRQUFILENBQVk0QixDQUFaLEVBQWV1RSxlQUFmLElBQWdDLEdBQW5DO0FBQ0NWLDBCQUFFLENBQUNsRyxLQUFILEdBQVNrRyxFQUFFLENBQUN6RixRQUFILENBQVk0QixDQUFaLEVBQWVzRSxTQUF4QjtBQUNEO0FBQ0Q7QUFDRCx3QkFBR1QsRUFBRSxDQUFDOUUsSUFBSCxJQUFTLElBQVQsSUFBaUI4RSxFQUFFLENBQUM5RSxJQUFILElBQVMsSUFBN0IsRUFBa0M7QUFDakMsMEJBQUl5RixPQUFPLEdBQUcsSUFBSUMsSUFBSixFQUFkO0FBQ0EsMEJBQUlDLElBQUksR0FBRyxFQUFDQyxJQUFJLEVBQUVILE9BQU8sQ0FBQ0ksV0FBUixFQUFQLEVBQTZCQyxLQUFLLEVBQUVMLE9BQU8sQ0FBQ00sUUFBUixLQUFxQixDQUF6RCxFQUEyREMsR0FBRyxFQUFFUCxPQUFPLENBQUNRLE9BQVIsRUFBaEUsRUFBWDtBQUNBbkIsd0JBQUUsQ0FBQ2xHLEtBQUgsR0FBVytHLElBQUksQ0FBQ0MsSUFBTCxHQUFZLEdBQVosSUFBbUJELElBQUksQ0FBQ0csS0FBTCxJQUFjLEVBQWQsR0FBbUJILElBQUksQ0FBQ0csS0FBeEIsR0FBZ0MsTUFBTUgsSUFBSSxDQUFDRyxLQUE5RCxJQUF1RSxHQUF2RSxJQUE4RUgsSUFBSSxDQUFDSyxHQUFMLElBQVksRUFBWixHQUFpQkwsSUFBSSxDQUFDSyxHQUF0QixHQUE0QixNQUFNTCxJQUFJLENBQUNLLEdBQXJILENBQVg7QUFDQTtBQUNELHdCQUFHbEIsRUFBRSxDQUFDOUUsSUFBSCxJQUFTLFVBQVosRUFBdUI7QUFDdEIsMEJBQUlrRyxVQUFVLEdBQUMsRUFBZjtBQUNBLDBCQUFJQyxXQUFXLEdBQUdyQixFQUFFLENBQUNzQixNQUFILENBQVVDLEtBQVYsQ0FBZ0IsR0FBaEIsQ0FBbEI7QUFDQSwyQkFBSSxJQUFJQyxFQUFSLElBQWNILFdBQWQsRUFBMEI7QUFDekIsNEJBQUlJLE1BQU0sR0FBR0osV0FBVyxDQUFDRyxFQUFELENBQVgsQ0FBZ0JELEtBQWhCLENBQXNCLEdBQXRCLENBQWI7QUFDQUgsa0NBQVUsQ0FBQ2pHLElBQVgsQ0FBZ0IsRUFBQ3VHLEVBQUUsRUFBQ0QsTUFBTSxDQUFDLENBQUQsQ0FBVixFQUFjeEksSUFBSSxFQUFDd0ksTUFBTSxDQUFDLENBQUQsQ0FBekIsRUFBaEI7QUFDQTtBQUNEekIsd0JBQUUsQ0FBQzJCLFVBQUgsR0FBZ0JQLFVBQWhCO0FBQ0FwQix3QkFBRSxDQUFDbEcsS0FBSCxHQUFXLEdBQVg7QUFDQTtBQUNELHdCQUFHa0csRUFBRSxDQUFDOUUsSUFBSCxJQUFTLEtBQVo7QUFDQzhFLHNCQUFFLENBQUNsRyxLQUFILEdBQVcsS0FBWDtBQUNELHdCQUFHa0csRUFBRSxDQUFDOUUsSUFBSCxJQUFTLEtBQVo7QUFDQzhFLHNCQUFFLENBQUNsRyxLQUFILEdBQVcsS0FBWDs7QUFFb0JpQix3QkFBSSxDQUFDSSxJQUFMLENBQVU2RSxFQUFWO0FBQ0g7QUFDSjtBQUNKO0FBQ0ROLHlCQUFXLENBQUN2RSxJQUFaLENBQWlCO0FBQ2J5Ryx1QkFBTyxFQUFFOUIsT0FBTyxDQUFDOEIsT0FESjtBQUViQyxzQkFBTSxFQUFFL0IsT0FBTyxDQUFDK0IsTUFGSDtBQUdiQyw0QkFBWSxFQUFFaEMsT0FBTyxDQUFDZ0MsWUFIVDtBQUlidkwsb0JBQUksRUFBRXVKLE9BQU8sQ0FBQ3ZKLElBSkQ7QUFLYndMLHFCQUFLLEVBQUVqQyxPQUFPLENBQUNpQyxLQUxGO0FBTWI1SCxvQkFBSSxFQUFFRCxJQU5PO0FBT2JMLG9CQUFJLEVBQUVrQixJQVBPO0FBUTVCaUgsNkJBQWEsRUFBQyxLQUFLakwsS0FBTCxDQUFXaEIsY0FBWCxDQUEwQnVELFFBQTFCLENBQW1DMEksYUFSckI7QUFTNUJDLDZCQUFhLEVBQUMsS0FBS2xMLEtBQUwsQ0FBV2hCLGNBQVgsQ0FBMEJ1RCxRQUExQixDQUFtQzJJLGFBVHJCLEVBQWpCOztBQVdIO0FBQ0o7QUFDSjtBQUNELFlBQUl2QyxXQUFXLENBQUM1RSxNQUFaLEdBQXFCLENBQXpCLEVBQTRCO0FBQ3hCLGVBQUsvRCxLQUFMLENBQVdqQixhQUFYLEdBQTJCNEosV0FBM0I7QUFDSDtBQUNKLFlBQUkvRSxHQUFHLEdBQUMsRUFBUjtBQUNHLFlBQUksS0FBSzVELEtBQUwsQ0FBV2hCLGNBQVgsQ0FBMEJ1RCxRQUE5QixFQUF3QztBQUNuQyxjQUFJLEtBQUt2QyxLQUFMLENBQVdoQixjQUFYLENBQTBCdUQsUUFBMUIsQ0FBbUNtRyxVQUFuQyxDQUE4QzNFLE1BQTlDLEdBQXVELENBQTNELEVBQThEO0FBQzNELGdCQUFJRixRQUFRLEdBQUcsS0FBSzdELEtBQUwsQ0FBV2hCLGNBQVgsQ0FBMEJ1RCxRQUExQixDQUFtQ21HLFVBQWxEO0FBQ0E7QUFDQTtBQUNBLGlCQUFLLElBQUk1RSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxRQUFRLENBQUNFLE1BQTdCLEVBQXFDRCxDQUFDLEVBQXRDLEVBQTBDO0FBQ3RDLGtCQUFJRSxJQUFJLEdBQUdILFFBQVEsQ0FBQ0MsQ0FBRCxDQUFSLENBQVkrRSxLQUF2QjtBQUNBLG1CQUFLLElBQUk1RSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxJQUFJLENBQUNELE1BQXpCLEVBQWlDRSxDQUFDLEVBQWxDLEVBQXNDO0FBQ2xDLG9CQUFJQyxFQUFFLEdBQUdGLElBQUksQ0FBQ0MsQ0FBRCxDQUFiO0FBQ2ZMLG1CQUFHLENBQUNRLElBQUosQ0FBUyxFQUFFSixJQUFJLEVBQUVFLEVBQUUsQ0FBQ0YsSUFBWCxFQUFpQkssR0FBRyxFQUFFSCxFQUFFLENBQUNaLEtBQUgsR0FBU1ksRUFBRSxDQUFDWixLQUFaLEdBQWtCLEVBQXhDLEVBQVQ7QUFDWTtBQUNKO0FBQ0o7QUFDUDs7QUFFRCxZQUFJNkgsU0FBUyxHQUFHLEtBQUtuTCxLQUFMLENBQVdoQixjQUFYLENBQTBCdUQsUUFBMUIsQ0FBbUM2SSxLQUFuRDtBQUNBLFlBQUlELFNBQUosRUFBZTtBQUNYLGNBQUlBLFNBQVMsQ0FBQ3BILE1BQVYsR0FBbUIsQ0FBdkIsRUFBMEI7QUFDdEIsaUJBQUssSUFBSUQsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3FILFNBQVMsQ0FBQ3BILE1BQTlCLEVBQXNDRCxDQUFDLEVBQXZDLEVBQTJDO0FBQ3ZDLGtCQUFJcUgsU0FBUyxDQUFDckgsQ0FBRCxDQUFULENBQWF1SCxRQUFiLElBQXlCLFdBQTdCLEVBQTBDO0FBQ3RDLHFCQUFLckwsS0FBTCxDQUFXZCxhQUFYLEdBQTJCaU0sU0FBUyxDQUFDckgsQ0FBRCxDQUFwQztBQUNILGVBRkQsTUFFTyxJQUFJcUgsU0FBUyxDQUFDckgsQ0FBRCxDQUFULENBQWF1SCxRQUFiLElBQXlCLFNBQTdCLEVBQXdDO0FBQzNDLHFCQUFLckwsS0FBTCxDQUFXZixpQkFBWCxHQUErQmtNLFNBQVMsQ0FBQ3JILENBQUQsQ0FBeEM7QUFDSCxlQUZNLE1BRUEsSUFBSXFILFNBQVMsQ0FBQ3JILENBQUQsQ0FBVCxDQUFhdUgsUUFBYixJQUF5Qix1QkFBN0IsRUFBc0Q7QUFDekQscUJBQUtyTCxLQUFMLENBQVdiLHlCQUFYLEdBQXVDZ00sU0FBUyxDQUFDckgsQ0FBRCxDQUFULENBQWF3SCxRQUFwRDtBQUNBLHFCQUFLdEwsS0FBTCxDQUFXWixtQkFBWCxHQUFpQytMLFNBQVMsQ0FBQ3JILENBQUQsQ0FBVCxDQUFheUgsY0FBOUM7QUFDSDtBQUNKO0FBQ1A7QUFDRDtBQUNELHFCQUFZM0gsR0FBWjtBQUNBLFlBQUksS0FBSzVELEtBQUwsQ0FBV2YsaUJBQWYsRUFBa0M7QUFDOUIsY0FBSXlFLE9BQU8sR0FBRyxLQUFLMUQsS0FBTCxDQUFXZixpQkFBWCxDQUE2QnFNLFFBQTNDO0FBQ0EsY0FBSS9HLElBQUksR0FBRztBQUNQYixtQkFBTyxFQUFFQSxPQURGO0FBRVBjLGtCQUFNLEVBQUUsR0FGRDtBQUdQQyxxQkFBUyxFQUFFLEVBSEo7QUFJUEMsa0JBQU0sRUFBRSxFQUpEO0FBS1BDLGtCQUFNLEVBQUUsRUFMRDtBQU1QQyxxQkFBUyxFQUFFLEVBTko7QUFPUGhFLGlCQUFLLEVBQUUsS0FBS1osS0FBTCxDQUFXbEIsS0FBWCxDQUFpQjhCLEtBUGpCO0FBUVBpRSxpQkFBSyxFQUFFLEVBUkE7QUFTUGIsZ0JBQUksRUFBRUosR0FUQyxFQUFYOztBQVdBLGVBQUs0SCx5QkFBTCxDQUErQmpILElBQS9CO0FBQ0g7QUFDRCxxQkFBWSxLQUFLdkUsS0FBTCxDQUFXaEIsY0FBdkI7QUFDQSxxQkFBWSxLQUFLZ0IsS0FBTCxDQUFXakIsYUFBdkI7O0FBRUEsT0FoSUQsTUFnSU87QUFDTlksV0FBRyxDQUFDUSxTQUFKLENBQWMsRUFBQ3RCLEtBQUssRUFBQyxJQUFQLEVBQVl1QixPQUFPLEVBQUMsWUFBcEIsRUFBaUNDLFVBQVUsRUFBQyxLQUE1QyxFQUFrREMsV0FBVyxFQUFDLElBQTlELEVBQWQ7QUFDQTtBQUNELEtBcmtCTztBQXNrQlJrTCw2QkF0a0JRLHFDQXNrQmtCakgsSUF0a0JsQixFQXNrQnVCO0FBQzlCLFVBQUl6RixLQUFLLEdBQUc7QUFDUjJNLGlCQUFTLEVBQUUsS0FBS3pMLEtBQUwsQ0FBV2xCLEtBQVgsQ0FBaUJ5QixRQUFqQixDQUEwQmYsSUFEN0I7QUFFUmtNLGlCQUFTLEVBQUUsS0FBSzFMLEtBQUwsQ0FBV2xCLEtBQVgsQ0FBaUJ5QixRQUFqQixDQUEwQmYsSUFGN0I7QUFHUm1NLDBCQUFrQixFQUFFLENBSFo7QUFJUm5FLGtCQUFVLEVBQUU7QUFDUixzQkFBWSxNQURKLEVBQ1k7QUFDcEJDLGdCQUFNLEVBQUUsS0FBS3pILEtBQUwsQ0FBV2xCLEtBQVgsQ0FBaUI4QixLQUZqQixFQUU0QjtBQUNwQyxvQkFBVSxLQUhGLEVBR1c7QUFDbkI4RyxxQkFBVyxFQUFFLElBSkw7QUFLUkMsZ0JBQU0sRUFBRTtBQUNKRixrQkFBTSxFQUFFLEtBQUt6SCxLQUFMLENBQVdsQixLQUFYLENBQWlCOEIsS0FEckIsQ0FDNEI7QUFDaEM7QUFGSSxXQUxBLEVBSkosRUFBWjs7O0FBZUEsVUFBSWdMLGNBQWMsR0FBRyxFQUFyQjtBQUNBLFVBQUl2TSxXQUFXLEdBQUcsRUFBbEI7O0FBRUEsVUFBSXFCLFFBQVEsR0FBRztBQUNDOEQsY0FBTSxFQUFFRCxJQUFJLENBQUNDLE1BRGQsRUFDc0JkLE9BQU8sRUFBRWEsSUFBSSxDQUFDYixPQURwQyxFQUM2Q2UsU0FBUyxFQUFFRixJQUFJLENBQUNFLFNBRDdEO0FBRUNDLGNBQU0sRUFBRUgsSUFBSSxDQUFDRyxNQUZkLEVBRXNCQyxNQUFNLEVBQUVKLElBQUksQ0FBQ0ksTUFGbkMsRUFFMkNDLFNBQVMsRUFBRUwsSUFBSSxDQUFDSyxTQUYzRCxFQUVzRWhFLEtBQUssRUFBRTJELElBQUksQ0FBQzNELEtBRmxGLEVBRXlGaUUsS0FBSyxFQUFFTixJQUFJLENBQUNNLEtBRnJHO0FBR0NiLFlBQUksRUFBRWxFLElBQUksQ0FBQ3dHLFNBQUwsQ0FBZS9CLElBQUksQ0FBQ1AsSUFBcEIsQ0FIUCxFQUdrQ2lFLE9BQU8sRUFBRW5JLElBQUksQ0FBQ3dHLFNBQUwsQ0FBZXhILEtBQWYsQ0FIM0MsRUFHa0U4TSxjQUFjLEVBQUVBLGNBSGxGLEVBR2tHdk0sV0FBVyxFQUFFQSxXQUgvRyxFQUFmOztBQUtBLG1CQUFZcUIsUUFBWjtBQUNBLFdBQUtJLE1BQUwsQ0FBWU0sUUFBWixDQUFxQiwyQkFBckIsRUFBaURWLFFBQWpELEVBQTJEVyxJQUEzRCxDQUFnRSxVQUFBQyxPQUFPLEVBQUU7QUFDeEUscUJBQVlBLE9BQVo7QUFDQSxZQUFJQSxPQUFPLENBQUNDLElBQVIsSUFBYyxPQUFsQixFQUEyQjtBQUMxQixjQUFJM0MsSUFBSSxHQUFHa0IsSUFBSSxDQUFDQyxLQUFMLENBQVd1QixPQUFPLENBQUMxQyxJQUFuQixDQUFYO0FBQ0EsY0FBSWlOLFVBQVUsR0FBR2pOLElBQUksQ0FBQytFLE1BQXRCO0FBQ0EsY0FBSWtJLFVBQUosRUFBZ0I7QUFDWixpQkFBSyxJQUFJNUgsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzRILFVBQVUsQ0FBQzlILE1BQS9CLEVBQXVDRSxDQUFDLEVBQXhDLEVBQTRDO0FBQ3hDLGtCQUFJTixNQUFNLEdBQUdrSSxVQUFVLENBQUM1SCxDQUFELENBQXZCO0FBQ0Esa0JBQUk2SCxXQUFXLEdBQUduSSxNQUFNLENBQUNtSSxXQUF6QjtBQUNBLGtCQUFJeEksS0FBSyxHQUFHSyxNQUFNLENBQUNMLEtBQW5CO0FBQ0Esa0JBQUl3SSxXQUFXLElBQUksY0FBbkIsRUFBbUM7QUFDL0Isb0JBQUl4SSxLQUFKLEVBQVc7QUFDUCxzQkFBSWUsR0FBRyxHQUFHZixLQUFWO0FBQ0Esc0JBQUksT0FBT0EsS0FBUCxJQUFnQixRQUFwQixFQUE4QjtBQUMxQmUsdUJBQUcsR0FBR3ZFLElBQUksQ0FBQ0MsS0FBTCxDQUFXdUQsS0FBWCxDQUFOO0FBQ0g7QUFDYiwrQkFBWWUsR0FBWjtBQUNZLHVCQUFLLElBQUlQLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdPLEdBQUcsQ0FBQ04sTUFBeEIsRUFBZ0NELENBQUMsRUFBakMsRUFBcUM7QUFDaEQseUJBQUssSUFBSWlJLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcsTUFBSSxDQUFDL0wsS0FBTCxDQUFXakIsYUFBWCxDQUF5QmdGLE1BQTdDLEVBQXFEZ0ksQ0FBQyxFQUF0RCxFQUEwRDtBQUN6RCwyQkFBSyxJQUFJL0MsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxNQUFJLENBQUNoSixLQUFMLENBQVdqQixhQUFYLENBQXlCZ04sQ0FBekIsRUFBNEJqSixJQUE1QixDQUFpQ2lCLE1BQXJELEVBQTZEaUYsQ0FBQyxFQUE5RCxFQUFrRTtBQUNqRSw0QkFBSUMsRUFBRSxHQUFHLE1BQUksQ0FBQ2pKLEtBQUwsQ0FBV2pCLGFBQVgsQ0FBeUJnTixDQUF6QixFQUE0QmpKLElBQTVCLENBQWlDa0csQ0FBakMsQ0FBVDtBQUNBLDRCQUFJM0UsR0FBRyxDQUFDUCxDQUFELENBQUgsQ0FBT0UsSUFBUCxJQUFnQmlGLEVBQUUsQ0FBQ3pKLElBQXZCLEVBQTZCO0FBQzVCLDhCQUFHeUosRUFBRSxDQUFDOUUsSUFBSCxJQUFTLElBQVQsSUFBaUI4RSxFQUFFLENBQUM5RSxJQUFILElBQVMsUUFBN0IsRUFBc0M7QUFDckMsZ0NBQUk2SCxZQUFZLEdBQUMsRUFBakI7QUFDQSxpQ0FBSSxJQUFJNUcsQ0FBUixJQUFhZixHQUFHLENBQUNQLENBQUQsQ0FBSCxDQUFPbUksV0FBcEIsRUFBZ0M7QUFDL0Isa0NBQUk1SCxHQUFHLEdBQUVBLEdBQUcsQ0FBQ1AsQ0FBRCxDQUFILENBQU9tSSxXQUFQLENBQW1CN0csQ0FBbkIsQ0FBVDtBQUNBNEcsMENBQVksQ0FBQzVILElBQWIsQ0FBa0IsRUFBQyxhQUFZQyxHQUFiLEVBQWlCLFFBQU9BLEdBQXhCLEVBQTRCLFNBQVFBLEdBQXBDLEVBQXdDLFNBQVFBLEdBQWhELEVBQWxCOztBQUVBO0FBQ0Q0RSw4QkFBRSxDQUFDekYsUUFBSCxHQUFjd0ksWUFBZDtBQUNBO0FBQ0EsMkJBVEQsTUFTSztBQUNKO0FBQ0E7QUFDRDtBQUNEO0FBQ0Q7O0FBRWMsd0JBQUlqSSxNQUFNLEdBQUcsQ0FBYjtBQUNBLHdCQUFJLENBQUMsTUFBSSxDQUFDL0QsS0FBTCxDQUFXVixZQUFYLENBQXdCNE0sTUFBeEIsQ0FBK0IsVUFBVXBELENBQVYsRUFBYTtBQUM3Qyw2QkFBT3pFLEdBQUcsQ0FBQ1AsQ0FBRCxDQUFILENBQU9FLElBQVAsSUFBZThFLENBQUMsQ0FBQzlFLElBQXhCO0FBQ0gscUJBRkksRUFFRkQsTUFGSCxFQUVXO0FBQ1BBLDRCQUFNLEdBQUcsQ0FBVDtBQUNBLDRCQUFJLENBQUMvRCxLQUFMLENBQVdWLFlBQVgsQ0FBd0I4RSxJQUF4QixDQUE2QkMsR0FBRyxDQUFDUCxDQUFELENBQWhDO0FBQ0g7QUFDRCx3QkFBSUMsTUFBTSxJQUFJLENBQWQsRUFBaUI7QUFDYiwyQkFBSyxJQUFJRSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHLE1BQUksQ0FBQ2pFLEtBQUwsQ0FBV1YsWUFBWCxDQUF3QnlFLE1BQTVDLEVBQW9ERSxDQUFDLEVBQXJELEVBQXlEO0FBQ3JELDRCQUFJLE1BQUksQ0FBQ2pFLEtBQUwsQ0FBV1YsWUFBWCxDQUF3QjJFLENBQXhCLEVBQTJCRCxJQUEzQixJQUFtQ0ssR0FBRyxDQUFDUCxDQUFELENBQUgsQ0FBT0UsSUFBOUMsRUFBb0Q7QUFDaEQsZ0NBQUksQ0FBQ2hFLEtBQUwsQ0FBV1YsWUFBWCxDQUF3QjJFLENBQXhCLEVBQTJCWCxLQUEzQixHQUFtQ2UsR0FBRyxDQUFDUCxDQUFELENBQUgsQ0FBT1IsS0FBMUM7QUFDSDtBQUNKO0FBQ0o7QUFDSjtBQUNKO0FBQ0o7QUFDRCxrQkFBSXdJLFdBQVcsSUFBSSxxQkFBbkIsRUFBMEM7QUFDL0NuTSxtQkFBRyxDQUFDUSxTQUFKLENBQWMsRUFBQ3RCLEtBQUssRUFBQyxPQUFQLEVBQWV1QixPQUFPLEVBQUMsdUNBQXZCLEVBQStEQyxVQUFVLEVBQUMsS0FBMUUsRUFBZ0ZDLFdBQVcsRUFBQyxJQUE1RixFQUFkO0FBQ007QUFDSjtBQUNKOztBQUVELFNBM0RELE1BMkRLO0FBQ0pYLGFBQUcsQ0FBQ1EsU0FBSixDQUFjLEVBQUN0QixLQUFLLEVBQUMsS0FBUCxFQUFhdUIsT0FBTyxFQUFDa0IsT0FBTyxDQUFDRSxHQUE3QixFQUFpQ25CLFVBQVUsRUFBQyxLQUE1QyxFQUFrREMsV0FBVyxFQUFDLElBQTlELEVBQWQ7QUFDQTtBQUNELE9BaEVELEVBZ0VHbUIsS0FoRUgsQ0FnRVMsVUFBQUMsRUFBRSxFQUFFO0FBQ1o7QUFDQS9CLFdBQUcsQ0FBQ1EsU0FBSixDQUFjLEVBQUN0QixLQUFLLEVBQUMsT0FBUCxFQUFldUIsT0FBTyxFQUFDc0IsRUFBRSxDQUFDQyxNQUExQixFQUFpQ3RCLFVBQVUsRUFBQyxLQUE1QyxFQUFrREMsV0FBVyxFQUFDLElBQTlELEVBQWQ7QUFDQSxPQW5FRDtBQW9FQSxLQW5xQk87QUFvcUJMd0UseUJBcHFCSyxpQ0FvcUJpQlAsSUFwcUJqQixFQW9xQnNCZCxTQXBxQnRCLEVBb3FCZ0M7QUFDdkMsVUFBSTVDLEtBQUssR0FBRyxJQUFaO0FBQ0csVUFBSTJHLFVBQVUsR0FBRztBQUNiLG9CQUFZLE1BREMsRUFDTztBQUNwQkMsY0FBTSxFQUFFLEtBQUt6SCxLQUFMLENBQVdsQixLQUFYLENBQWlCOEIsS0FGWixFQUV1QjtBQUNwQyxrQkFBVSxLQUhHLEVBR007QUFDbkI4RyxtQkFBVyxFQUFFLElBSkE7QUFLYkMsY0FBTSxFQUFFO0FBQ0pGLGdCQUFNLEVBQUUsS0FBS3pILEtBQUwsQ0FBV2xCLEtBQVgsQ0FBaUI4QixLQURyQixDQUM0QjtBQUNoQztBQUZJLFNBTEssRUFBakI7O0FBVUEsVUFBRzZDLFNBQUgsRUFBYTtBQUNmK0Qsa0JBQVUsQ0FBQ2hILFFBQVgsR0FBc0I7QUFDbEIyQixjQUFJLEVBQUUsT0FEWSxFQUNKO0FBQ2R4QixrQkFBUSxFQUFFLEtBQUtYLEtBQUwsQ0FBV2xCLEtBQVgsQ0FBaUI4QixLQUZULENBRWU7QUFGZixTQUF0QjtBQUlBLFlBQUk2QyxTQUFKLEVBQWU7QUFDWCtELG9CQUFVLENBQUNoSCxRQUFYLENBQW9CMkwsWUFBcEIsR0FBbUMsRUFBQztBQUNoQ2pLLGdCQUFJLEVBQUV1QixTQUFTLENBQUNqRSxJQURlLEVBQ1Y7QUFDckI0TSxnQkFBSSxFQUFFM0ksU0FBUyxDQUFDOEQsUUFGZSxFQUVOO0FBQ3pCOEUsc0JBQVUsRUFBRTVJLFNBQVMsQ0FBQzZJLFNBSFMsRUFHQztBQUNoQ25LLGdCQUFJLEVBQUVzQixTQUFTLENBQUNVLElBSmUsRUFJVjtBQUNyQm9JLG9CQUFRLEVBQUU5SSxTQUFTLENBQUMrSSxRQUxXLEVBS0Y7QUFDN0JwRCxzQkFBVSxFQUFFM0YsU0FBUyxDQUFDMkYsVUFOUyxFQU1FO0FBQ2pDQywwQkFBYyxFQUFFNUYsU0FBUyxDQUFDNEYsY0FQSyxDQU9TO0FBUFQsV0FBbkM7QUFTSDtBQUNEO0FBQ0UsVUFBSTNJLFFBQVEsR0FBRztBQUNSOEQsY0FBTSxFQUFFRCxJQUFJLENBQUNDLE1BREwsRUFDYWQsT0FBTyxFQUFFYSxJQUFJLENBQUNiLE9BRDNCLEVBQ29DZSxTQUFTLEVBQUVGLElBQUksQ0FBQ0UsU0FBTCxDQUFlZ0ksT0FBZixDQUF1QixHQUF2QixFQUEyQixFQUEzQixFQUErQkEsT0FBL0IsQ0FBdUMsR0FBdkMsRUFBMkMsRUFBM0MsQ0FEL0M7QUFFUi9ILGNBQU0sRUFBRUgsSUFBSSxDQUFDRyxNQUZMLEVBRWFDLE1BQU0sRUFBRUosSUFBSSxDQUFDSSxNQUYxQixFQUVrQ0MsU0FBUyxFQUFFTCxJQUFJLENBQUNLLFNBRmxELEVBRTZEaEUsS0FBSyxFQUFFMkQsSUFBSSxDQUFDM0QsS0FGekUsRUFFZ0ZpRSxLQUFLLEVBQUVOLElBQUksQ0FBQ00sS0FGNUY7QUFHUmIsWUFBSSxFQUFFbEUsSUFBSSxDQUFDd0csU0FBTCxDQUFlL0IsSUFBSSxDQUFDUCxJQUFwQixDQUhFLEVBR3lCaUUsT0FBTyxFQUFFbkksSUFBSSxDQUFDd0csU0FBTCxDQUFla0IsVUFBZixDQUhsQyxFQUc4RG9FLGNBQWMsRUFBRSxFQUg5RSxFQUdrRnZNLFdBQVcsRUFBRVMsSUFBSSxDQUFDd0csU0FBTCxDQUFlLEtBQUt0RyxLQUFMLENBQVdYLFdBQTFCLENBSC9GLEVBQWY7O0FBS0EsbUJBQVlxQixRQUFaO0FBQ0EsV0FBS0ksTUFBTCxDQUFZTSxRQUFaLENBQXFCLDJCQUFyQixFQUFpRFYsUUFBakQsRUFBMkRXLElBQTNELENBQWdFLFVBQUFDLE9BQU8sRUFBRTtBQUN4RSxxQkFBWUEsT0FBWjtBQUNBLFlBQUlBLE9BQU8sQ0FBQ0MsSUFBUixJQUFjLE9BQWxCLEVBQTJCO0FBQzdCLGNBQUkzQyxJQUFJLEdBQUdrQixJQUFJLENBQUNDLEtBQUwsQ0FBV3VCLE9BQU8sQ0FBQzFDLElBQW5CLENBQVg7QUFDRyxjQUFJaU4sVUFBVSxHQUFHak4sSUFBSSxDQUFDK0UsTUFBdEI7O0FBRUEsY0FBSWtJLFVBQUosRUFBZ0I7QUFDbEIseUJBQVlBLFVBQVo7QUFDTSxpQkFBSyxJQUFJL0gsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRytILFVBQVUsQ0FBQzlILE1BQS9CLEVBQXVDRCxDQUFDLEVBQXhDLEVBQTRDO0FBQ3hDLGtCQUFJSCxNQUFNLEdBQUdrSSxVQUFVLENBQUMvSCxDQUFELENBQXZCO0FBQ0Esa0JBQUlILE1BQU0sQ0FBQ21JLFdBQVAsSUFBc0IsY0FBMUIsRUFBMEM7QUFDdEMsb0JBQUluSixNQUFNLEdBQUdnQixNQUFNLENBQUNMLEtBQXBCO0FBQ0EscUJBQUssSUFBSVEsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR25CLE1BQU0sQ0FBQ29CLE1BQTNCLEVBQW1DRCxDQUFDLEVBQXBDLEVBQXdDO0FBQ2xELHNCQUFJbkIsTUFBTSxDQUFDbUIsQ0FBRCxDQUFOLENBQVVtSSxXQUFkLEVBQTJCO0FBQzNCLHlCQUFLLElBQUlTLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUc3TCxLQUFLLENBQUNiLEtBQU4sQ0FBWWpCLGFBQVosQ0FBMEJnRixNQUE5QyxFQUFzRDJJLENBQUMsRUFBdkQsRUFBMkQ7QUFDMUQsMEJBQUkxSSxJQUFJLEdBQUduRCxLQUFLLENBQUNiLEtBQU4sQ0FBWWpCLGFBQVosQ0FBMEIyTixDQUExQixFQUE2QjVKLElBQXhDO0FBQ0EsMkJBQUssSUFBSW1CLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELElBQUksQ0FBQ0QsTUFBekIsRUFBaUNFLENBQUMsRUFBbEMsRUFBc0M7QUFDckMsNEJBQUdELElBQUksQ0FBQ0MsQ0FBRCxDQUFKLENBQVF6RSxJQUFSLElBQWNtRCxNQUFNLENBQUNtQixDQUFELENBQU4sQ0FBVUUsSUFBM0IsRUFBZ0M7QUFDL0IsOEJBQUdBLElBQUksQ0FBQ0MsQ0FBRCxDQUFKLENBQVFFLElBQVIsSUFBYyxJQUFkLElBQXNCSCxJQUFJLENBQUNDLENBQUQsQ0FBSixDQUFRRSxJQUFSLElBQWMsUUFBdkMsRUFBZ0Q7QUFDL0MsZ0NBQUk2SCxZQUFZLEdBQUMsRUFBakI7QUFDQSxpQ0FBSSxJQUFJNUcsQ0FBUixJQUFhekMsTUFBTSxDQUFDbUIsQ0FBRCxDQUFOLENBQVVtSSxXQUF2QixFQUFtQztBQUNsQyxrQ0FBSTVILEdBQUcsR0FBRTFCLE1BQU0sQ0FBQ21CLENBQUQsQ0FBTixDQUFVbUksV0FBVixDQUFzQjdHLENBQXRCLENBQVQ7QUFDQTRHLDBDQUFZLENBQUM1SCxJQUFiLENBQWtCLEVBQUMsYUFBWUMsR0FBYixFQUFpQixRQUFPQSxHQUF4QixFQUE0QixTQUFRQSxHQUFwQyxFQUF3QyxTQUFRQSxHQUFoRCxFQUFsQjtBQUNBO0FBQ0RMLGdDQUFJLENBQUNDLENBQUQsQ0FBSixDQUFRVCxRQUFSLEdBQW1Cd0ksWUFBbkI7QUFDQTtBQUNBO0FBQ0Q7QUFDRDtBQUNEO0FBQ2M7QUFDRCx1QkFBSyxJQUFJVSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHN0wsS0FBSyxDQUFDYixLQUFOLENBQVlqQixhQUFaLENBQTBCZ0YsTUFBOUMsRUFBc0QySSxDQUFDLEVBQXZELEVBQTJEO0FBQzFELHdCQUFJMUksSUFBSSxHQUFHbkQsS0FBSyxDQUFDYixLQUFOLENBQVlqQixhQUFaLENBQTBCMk4sQ0FBMUIsRUFBNkI1SixJQUF4QztBQUNBLHlCQUFLLElBQUltQixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxJQUFJLENBQUNELE1BQXpCLEVBQWlDRSxDQUFDLEVBQWxDLEVBQXNDO0FBQ3BELG1DQUFZRCxJQUFJLENBQUNDLENBQUQsQ0FBSixDQUFRekUsSUFBUixHQUFhLElBQWIsR0FBa0JtRCxNQUFNLENBQUNtQixDQUFELENBQU4sQ0FBVUUsSUFBeEM7QUFDZSwwQkFBR0EsSUFBSSxDQUFDQyxDQUFELENBQUosQ0FBUXpFLElBQVIsSUFBY21ELE1BQU0sQ0FBQ21CLENBQUQsQ0FBTixDQUFVRSxJQUEzQixFQUFnQztBQUMvQkEsNEJBQUksQ0FBQ0MsQ0FBRCxDQUFKLENBQVFsQixLQUFSLEdBQWdCSixNQUFNLENBQUNtQixDQUFELENBQU4sQ0FBVVIsS0FBMUI7QUFDQTtBQUNEO0FBQ0Q7QUFDaEIsc0JBQUlTLE1BQU0sR0FBRyxDQUFiO0FBQ2Usc0JBQUksQ0FBQ2xELEtBQUssQ0FBQ2IsS0FBTixDQUFZVixZQUFaLENBQXlCNE0sTUFBekIsQ0FBZ0MsVUFBVXBELENBQVYsRUFBYTtBQUM5QywyQkFBT25HLE1BQU0sQ0FBQ21CLENBQUQsQ0FBTixDQUFVRSxJQUFWLElBQWtCOEUsQ0FBQyxDQUFDOUUsSUFBM0I7QUFDSCxtQkFGSSxFQUVGRCxNQUZILEVBRVc7QUFDUEEsMEJBQU0sR0FBRyxDQUFUO0FBQ0FsRCx5QkFBSyxDQUFDYixLQUFOLENBQVlWLFlBQVosQ0FBeUI4RSxJQUF6QixDQUE4QnpCLE1BQU0sQ0FBQ21CLENBQUQsQ0FBcEM7QUFDSDtBQUNELHNCQUFJQyxNQUFNLElBQUksQ0FBZCxFQUFpQjtBQUNiLHlCQUFLLElBQUlFLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdwRCxLQUFLLENBQUNiLEtBQU4sQ0FBWVYsWUFBWixDQUF5QnlFLE1BQTdDLEVBQXFERSxDQUFDLEVBQXRELEVBQTBEO0FBQ3RELDBCQUFJcEQsS0FBSyxDQUFDYixLQUFOLENBQVlWLFlBQVosQ0FBeUIyRSxDQUF6QixFQUE0QkQsSUFBNUIsSUFBb0NyQixNQUFNLENBQUNtQixDQUFELENBQU4sQ0FBVUUsSUFBbEQsRUFBd0Q7QUFDcERuRCw2QkFBSyxDQUFDYixLQUFOLENBQVlWLFlBQVosQ0FBeUIyRSxDQUF6QixFQUE0QlgsS0FBNUIsR0FBb0NYLE1BQU0sQ0FBQ21CLENBQUQsQ0FBTixDQUFVUixLQUE5QztBQUNIO0FBQ0o7QUFDSjtBQUNKO0FBQ0osZUE3Q0QsTUE2Q08sSUFBSTFFLElBQUksQ0FBQytFLE1BQUwsQ0FBWUcsQ0FBWixFQUFlZ0ksV0FBZixJQUE4QixpQkFBbEMsRUFBcUQ7QUFDM0RqTCxxQkFBSyxDQUFDYixLQUFOLENBQVlYLFdBQVosR0FBMEJULElBQUksQ0FBQytFLE1BQUwsQ0FBWUcsQ0FBWixFQUFlUixLQUFmLElBQXdCLEVBQWxEO0FBQ0g7QUFDRDtBQUNKOztBQUVELGNBQUkxRSxJQUFJLENBQUMrRCxNQUFULEVBQWlCO0FBQ2IsZ0JBQUlBLE1BQU0sR0FBRy9ELElBQUksQ0FBQytELE1BQWxCO0FBQ0EsaUJBQUssSUFBSW1CLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUduQixNQUFNLENBQUNvQixNQUEzQixFQUFtQ0QsQ0FBQyxFQUFwQyxFQUF3QztBQUNwQyxtQkFBSyxJQUFJNEksQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzdMLEtBQUssQ0FBQ2IsS0FBTixDQUFZakIsYUFBWixDQUEwQmdGLE1BQTlDLEVBQXNEMkksQ0FBQyxFQUF2RCxFQUEyRDtBQUMxRCxvQkFBSTFJLElBQUksR0FBR25ELEtBQUssQ0FBQ2IsS0FBTixDQUFZakIsYUFBWixDQUEwQjJOLENBQTFCLEVBQTZCNUosSUFBeEM7QUFDQSxxQkFBSyxJQUFJbUIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsSUFBSSxDQUFDRCxNQUF6QixFQUFpQ0UsQ0FBQyxFQUFsQyxFQUFzQztBQUNyQyxzQkFBR0QsSUFBSSxDQUFDQyxDQUFELENBQUosQ0FBUXpFLElBQVIsSUFBY21ELE1BQU0sQ0FBQ21CLENBQUQsQ0FBTixDQUFVRSxJQUEzQixFQUFnQztBQUMvQkEsd0JBQUksQ0FBQ0MsQ0FBRCxDQUFKLENBQVFsQixLQUFSLEdBQWdCSixNQUFNLENBQUNtQixDQUFELENBQU4sQ0FBVVIsS0FBMUI7QUFDQTtBQUNEO0FBQ0Q7O0FBRVYsa0JBQUlTLE1BQU0sR0FBRyxDQUFiO0FBQ1Msa0JBQUksQ0FBQ2xELEtBQUssQ0FBQ2IsS0FBTixDQUFZVixZQUFaLENBQXlCNE0sTUFBekIsQ0FBZ0MsVUFBVXBELENBQVYsRUFBYTtBQUM5Qyx1QkFBT25HLE1BQU0sQ0FBQ21CLENBQUQsQ0FBTixDQUFVRSxJQUFWLElBQWtCOEUsQ0FBQyxDQUFDOUUsSUFBM0I7QUFDSCxlQUZJLEVBRUZELE1BRkgsRUFFVztBQUNQQSxzQkFBTSxHQUFHLENBQVQ7QUFDQWxELHFCQUFLLENBQUNiLEtBQU4sQ0FBWVYsWUFBWixDQUF5QjhFLElBQXpCLENBQThCekIsTUFBTSxDQUFDbUIsQ0FBRCxDQUFwQztBQUNIO0FBQ0Qsa0JBQUlDLE1BQU0sSUFBSSxDQUFkLEVBQWlCO0FBQ2IscUJBQUssSUFBSUUsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3BELEtBQUssQ0FBQ2IsS0FBTixDQUFZVixZQUFaLENBQXlCeUUsTUFBN0MsRUFBcURFLENBQUMsRUFBdEQsRUFBMEQ7QUFDdEQsc0JBQUlwRCxLQUFLLENBQUNiLEtBQU4sQ0FBWVYsWUFBWixDQUF5QjJFLENBQXpCLEVBQTRCRCxJQUE1QixJQUFvQ3JCLE1BQU0sQ0FBQ21CLENBQUQsQ0FBTixDQUFVRSxJQUFsRCxFQUF3RDtBQUNwRG5ELHlCQUFLLENBQUNiLEtBQU4sQ0FBWVYsWUFBWixDQUF5QjJFLENBQXpCLEVBQTRCWCxLQUE1QixHQUFvQ1gsTUFBTSxDQUFDbUIsQ0FBRCxDQUFOLENBQVVSLEtBQTlDO0FBQ0g7QUFDSjtBQUNKO0FBQ0o7QUFDSjtBQUNELFNBdkZELE1BdUZLO0FBQ0ozRCxhQUFHLENBQUNRLFNBQUosQ0FBYyxFQUFDdEIsS0FBSyxFQUFDLEtBQVAsRUFBYXVCLE9BQU8sRUFBQ2tCLE9BQU8sQ0FBQ0UsR0FBN0IsRUFBaUNuQixVQUFVLEVBQUMsS0FBNUMsRUFBa0RDLFdBQVcsRUFBQyxJQUE5RCxFQUFkO0FBQ0E7QUFDRCxPQTVGRCxFQTRGR21CLEtBNUZILENBNEZTLFVBQUFDLEVBQUUsRUFBRTtBQUNaO0FBQ0EvQixXQUFHLENBQUNRLFNBQUosQ0FBYyxFQUFDdEIsS0FBSyxFQUFDLE9BQVAsRUFBZXVCLE9BQU8sRUFBQ3NCLEVBQUUsQ0FBQ0MsTUFBMUIsRUFBaUN0QixVQUFVLEVBQUMsS0FBNUMsRUFBa0RDLFdBQVcsRUFBQyxJQUE5RCxFQUFkO0FBQ0EsT0EvRkQ7QUFnR0EsS0F2eUJJO0FBd3lCUnlHLDJCQXh5QlEscUNBd3lCaUI7QUFDckIsVUFBSVMsVUFBVSxHQUFHO0FBQ2hCLG9CQUFZLE1BREksRUFDSTtBQUNwQkMsY0FBTSxFQUFFLEtBQUt6SCxLQUFMLENBQVdsQixLQUFYLENBQWlCOEIsS0FGVCxFQUVvQjtBQUNwQyxrQkFBVSxLQUhNLEVBR0c7QUFDbkI4RyxtQkFBVyxFQUFFLElBSkc7QUFLaEJDLGNBQU0sRUFBRTtBQUNKRixnQkFBTSxFQUFFLEtBQUt6SCxLQUFMLENBQVdsQixLQUFYLENBQWlCOEIsS0FEckIsQ0FDNEI7QUFENUIsU0FMUSxFQUFqQjs7OztBQVdILFVBQUk4QyxPQUFPLEdBQUcsS0FBSzFELEtBQUwsQ0FBV2QsYUFBWCxDQUF5Qm9NLFFBQXZDO0FBQ0EsVUFBSTFILEdBQUcsR0FBQyxFQUFSO0FBQ0EsVUFBSUMsUUFBUSxHQUFHLEtBQUs3RCxLQUFMLENBQVdqQixhQUExQjtBQUNBLFdBQUssSUFBSStFLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELFFBQVEsQ0FBQ0UsTUFBN0IsRUFBcUNELENBQUMsRUFBdEMsRUFBMEM7QUFDekMsWUFBSUUsSUFBSSxHQUFHSCxRQUFRLENBQUNDLENBQUQsQ0FBUixDQUFZaEIsSUFBdkI7QUFDQSxhQUFLLElBQUltQixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxJQUFJLENBQUNELE1BQXpCLEVBQWlDRSxDQUFDLEVBQWxDLEVBQXNDO0FBQ3JDLGNBQUlDLEVBQUUsR0FBR0YsSUFBSSxDQUFDQyxDQUFELENBQWI7QUFDQSxjQUFHQyxFQUFFLENBQUNuQixLQUFILElBQVUsS0FBVixJQUFtQm1CLEVBQUUsQ0FBQ25CLEtBQUgsSUFBVSxTQUFoQyxFQUEyQ21CLEVBQUUsQ0FBQ25CLEtBQUgsR0FBUyxFQUFUO0FBQzNDLGNBQUdtQixFQUFFLENBQUNDLElBQUgsSUFBUyxVQUFaO0FBQ0MsY0FBR0QsRUFBRSxDQUFDbkIsS0FBSCxJQUFVLEdBQWIsRUFBa0JtQixFQUFFLENBQUNuQixLQUFILEdBQVMsRUFBVDtBQUNiLGNBQUdtQixFQUFFLENBQUNDLElBQUgsSUFBUyxNQUFULElBQW1CRCxFQUFFLENBQUNDLElBQUgsSUFBUyxNQUEvQjtBQUNDUCxhQUFHLENBQUNRLElBQUosQ0FBUyxFQUFFSixJQUFJLEVBQUVFLEVBQUUsQ0FBQzFFLElBQVgsRUFBaUI2RSxHQUFHLEVBQUVILEVBQUUsQ0FBQ0ksS0FBSCxHQUFVSixFQUFFLENBQUNJLEtBQWIsR0FBb0IsRUFBMUMsRUFBVCxFQUREO0FBRUssY0FBR0osRUFBRSxDQUFDQyxJQUFILElBQVMsS0FBWjtBQUNWUCxhQUFHLENBQUNRLElBQUosQ0FBUyxFQUFFSixJQUFJLEVBQUVFLEVBQUUsQ0FBQzFFLElBQVgsRUFBaUI2RSxHQUFHLEVBQUVILEVBQUUsQ0FBQ25CLEtBQUgsR0FBUyxHQUFULEdBQWEsR0FBbkMsRUFBVCxFQURVOztBQUdWYSxhQUFHLENBQUNRLElBQUosQ0FBUyxFQUFFSixJQUFJLEVBQUVFLEVBQUUsQ0FBQzFFLElBQVgsRUFBaUI2RSxHQUFHLEVBQUVILEVBQUUsQ0FBQ25CLEtBQXpCLEVBQVQ7QUFDRDtBQUNEOztBQUVFLFVBQUksS0FBSy9DLEtBQUwsQ0FBV1YsWUFBWCxDQUF3QnlFLE1BQXhCLEdBQWlDLENBQXJDLEVBQXdDO0FBQ3BDLGFBQUssSUFBSUQsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLOUQsS0FBTCxDQUFXVixZQUFYLENBQXdCeUUsTUFBNUMsRUFBb0RELENBQUMsRUFBckQsRUFBeUQ7QUFDckQsY0FBSSxDQUFDRixHQUFHLENBQUNzSSxNQUFKLENBQVcsVUFBVXBELENBQVYsRUFBYTtBQUN6QixtQkFBTyxLQUFLOUksS0FBTCxDQUFXVixZQUFYLENBQXdCd0UsQ0FBeEIsRUFBMkJFLElBQTNCLElBQW1DOEUsQ0FBQyxDQUFDNUcsSUFBNUM7QUFDSCxXQUZJLEVBRUY2QixNQUZILEVBRVc7QUFDUEEsa0JBQU0sR0FBRyxDQUFUO0FBQ0FILGVBQUcsQ0FBQ1EsSUFBSixDQUFTLEVBQUUsUUFBUSxLQUFLcEUsS0FBTCxDQUFXVixZQUFYLENBQXdCd0UsQ0FBeEIsRUFBMkJFLElBQXJDLEVBQTJDLE9BQU8sS0FBS2hFLEtBQUwsQ0FBV1YsWUFBWCxDQUF3QndFLENBQXhCLEVBQTJCUixLQUE3RSxFQUFUO0FBQ0g7QUFDSjtBQUNKO0FBQ0QsVUFBSWlCLElBQUksR0FBRztBQUNQYixlQUFPLEVBQUVBLE9BREY7QUFFUGMsY0FBTSxFQUFFLEdBRkQ7QUFHUEMsaUJBQVMsRUFBRSxFQUhKO0FBSVBDLGNBQU0sRUFBRSxFQUpEO0FBS1BDLGNBQU0sRUFBRSxFQUxEO0FBTVBDLGlCQUFTLEVBQUUsRUFOSjtBQU9QaEUsYUFBSyxFQUFFLEtBQUtaLEtBQUwsQ0FBV2xCLEtBQVgsQ0FBaUI4QixLQVBqQjtBQVFQaUUsYUFBSyxFQUFFLEVBUkE7QUFTUGIsWUFBSSxFQUFFSixHQVRDLEVBQVg7O0FBV0EsVUFBSWxELFFBQVEsR0FBRztBQUNSOEQsY0FBTSxFQUFFRCxJQUFJLENBQUNDLE1BREwsRUFDYWQsT0FBTyxFQUFFYSxJQUFJLENBQUNiLE9BRDNCLEVBQ29DZSxTQUFTLEVBQUVGLElBQUksQ0FBQ0UsU0FEcEQsRUFDOERDLE1BQU0sRUFBRUgsSUFBSSxDQUFDRyxNQUQzRTtBQUVqQkMsY0FBTSxFQUFFSixJQUFJLENBQUNJLE1BRkksRUFFSUMsU0FBUyxFQUFFTCxJQUFJLENBQUNLLFNBRnBCLEVBRStCaEUsS0FBSyxFQUFFMkQsSUFBSSxDQUFDM0QsS0FGM0MsRUFFa0RpRSxLQUFLLEVBQUVOLElBQUksQ0FBQ00sS0FGOUQ7QUFHakJiLFlBQUksRUFBRWxFLElBQUksQ0FBQ3dHLFNBQUwsQ0FBZS9CLElBQUksQ0FBQ1AsSUFBcEIsQ0FIVyxFQUdnQmlFLE9BQU8sRUFBRW5JLElBQUksQ0FBQ3dHLFNBQUwsQ0FBZWtCLFVBQWYsQ0FIekIsRUFHcURuSSxXQUFXLEVBQUVTLElBQUksQ0FBQ3dHLFNBQUwsQ0FBZSxLQUFLdEcsS0FBTCxDQUFXWCxXQUExQixDQUhsRSxFQUFmOztBQUtBLG1CQUFZcUIsUUFBWjtBQUNBLFdBQUtJLE1BQUwsQ0FBWU0sUUFBWixDQUFxQiwyQkFBckIsRUFBaURWLFFBQWpELEVBQTJEVyxJQUEzRCxDQUFnRSxVQUFBQyxPQUFPLEVBQUU7QUFDeEUscUJBQVlBLE9BQVo7QUFDQSxZQUFJQSxPQUFPLENBQUNDLElBQVIsSUFBYyxPQUFsQixFQUEyQjtBQUM3QixjQUFJM0MsSUFBSSxHQUFHa0IsSUFBSSxDQUFDQyxLQUFMLENBQVd1QixPQUFPLENBQUMxQyxJQUFuQixDQUFYO0FBQ0csY0FBSStELE1BQU0sR0FBRy9ELElBQUksQ0FBQytELE1BQWxCO0FBQ0EsZUFBSyxJQUFJbUIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR25CLE1BQU0sQ0FBQ29CLE1BQTNCLEVBQW1DRCxDQUFDLEVBQXBDLEVBQXdDO0FBQ3BDO0FBQ0EsZ0JBQUlDLE1BQU0sR0FBRyxDQUFiO0FBQ0EsZ0JBQUksQ0FBQyxNQUFJLENBQUMvRCxLQUFMLENBQVdWLFlBQVgsQ0FBd0I0TSxNQUF4QixDQUErQixVQUFVcEQsQ0FBVixFQUFhO0FBQzdDLHFCQUFPbkcsTUFBTSxDQUFDbUIsQ0FBRCxDQUFOLENBQVVFLElBQVYsSUFBa0I4RSxDQUFDLENBQUM5RSxJQUEzQjtBQUNILGFBRkksRUFFRkQsTUFGSCxFQUVXO0FBQ1BBLG9CQUFNLEdBQUcsQ0FBVDtBQUNBLG9CQUFJLENBQUMvRCxLQUFMLENBQVdWLFlBQVgsQ0FBd0I4RSxJQUF4QixDQUE2QnpCLE1BQU0sQ0FBQ21CLENBQUQsQ0FBbkM7QUFDSDtBQUNELGdCQUFJQyxNQUFNLElBQUksQ0FBZCxFQUFpQjtBQUNiLG1CQUFLLElBQUlFLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcsTUFBSSxDQUFDakUsS0FBTCxDQUFXVixZQUFYLENBQXdCeUUsTUFBNUMsRUFBb0RFLENBQUMsRUFBckQsRUFBeUQ7QUFDckQsb0JBQUksTUFBSSxDQUFDakUsS0FBTCxDQUFXVixZQUFYLENBQXdCMkUsQ0FBeEIsRUFBMkJELElBQTNCLElBQW1DckIsTUFBTSxDQUFDbUIsQ0FBRCxDQUFOLENBQVVFLElBQWpELEVBQXVEO0FBQ25ELHdCQUFJLENBQUNoRSxLQUFMLENBQVdWLFlBQVgsQ0FBd0IyRSxDQUF4QixFQUEyQlgsS0FBM0IsR0FBbUNYLE1BQU0sQ0FBQ21CLENBQUQsQ0FBTixDQUFVUixLQUE3QztBQUNIO0FBQ0o7QUFDSjtBQUNKOztBQUVKLGdCQUFJLENBQUMwRCxHQUFMO0FBQ0csU0F0QkQsTUFzQks7QUFDSnJILGFBQUcsQ0FBQ1EsU0FBSixDQUFjLEVBQUN0QixLQUFLLEVBQUMsS0FBUCxFQUFhdUIsT0FBTyxFQUFDa0IsT0FBTyxDQUFDRSxHQUE3QixFQUFpQ25CLFVBQVUsRUFBQyxLQUE1QyxFQUFrREMsV0FBVyxFQUFDLElBQTlELEVBQWQ7QUFDQTtBQUNELE9BM0JELEVBMkJHbUIsS0EzQkgsQ0EyQlMsVUFBQUMsRUFBRSxFQUFFO0FBQ1o7QUFDQS9CLFdBQUcsQ0FBQ1EsU0FBSixDQUFjLEVBQUN0QixLQUFLLEVBQUMsT0FBUCxFQUFldUIsT0FBTyxFQUFDc0IsRUFBRSxDQUFDQyxNQUExQixFQUFpQ3RCLFVBQVUsRUFBQyxLQUE1QyxFQUFrREMsV0FBVyxFQUFDLElBQTlELEVBQWQ7QUFDQSxPQTlCRDtBQStCQSxLQWo0Qkk7QUFrNEJMNEYsZ0NBbDRCSyx3Q0FrNEJ3QnhDLE9BbDRCeEIsRUFrNEJnQ0QsU0FsNEJoQyxFQWs0QjBDd0MsZUFsNEIxQyxFQWs0QjBEL0MsS0FsNEIxRCxFQWs0QmdFZ0MsTUFsNEJoRSxFQWs0QnVFO0FBQzlFLFVBQUlzQyxVQUFVLEdBQUc7QUFDYixvQkFBWSxNQURDLEVBQ087QUFDcEJDLGNBQU0sRUFBRSxLQUFLekgsS0FBTCxDQUFXbEIsS0FBWCxDQUFpQjhCLEtBRlosRUFFdUI7QUFDcEMsa0JBQVUsS0FIRyxFQUdNO0FBQ25COEcsbUJBQVcsRUFBRSxJQUpBO0FBS2JDLGNBQU0sRUFBRTtBQUNKRixnQkFBTSxFQUFFLEtBQUt6SCxLQUFMLENBQVdsQixLQUFYLENBQWlCOEIsS0FEckIsQ0FDNEI7QUFDaEM7QUFGSSxTQUxLLEVBQWpCOztBQVVBLFVBQUlnRCxHQUFHLEdBQUMsRUFBUjtBQUNBLFVBQUlDLFFBQVEsR0FBRyxLQUFLN0QsS0FBTCxDQUFXakIsYUFBMUI7QUFDQSxXQUFLLElBQUkrRSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxRQUFRLENBQUNFLE1BQTdCLEVBQXFDRCxDQUFDLEVBQXRDLEVBQTBDO0FBQ3pDLFlBQUlFLElBQUksR0FBR0gsUUFBUSxDQUFDQyxDQUFELENBQVIsQ0FBWWhCLElBQXZCO0FBQ0EsYUFBSyxJQUFJbUIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsSUFBSSxDQUFDRCxNQUF6QixFQUFpQ0UsQ0FBQyxFQUFsQyxFQUFzQztBQUNyQyxjQUFJQyxFQUFFLEdBQUdGLElBQUksQ0FBQ0MsQ0FBRCxDQUFiO0FBQ0EsY0FBR0MsRUFBRSxDQUFDQyxJQUFILElBQVMsVUFBWjtBQUNDLGNBQUdELEVBQUUsQ0FBQ25CLEtBQUgsSUFBVSxHQUFiLEVBQWtCbUIsRUFBRSxDQUFDbkIsS0FBSCxHQUFTLEVBQVQ7QUFDYixjQUFHbUIsRUFBRSxDQUFDQyxJQUFILElBQVMsTUFBVCxJQUFtQkQsRUFBRSxDQUFDQyxJQUFILElBQVMsTUFBL0I7QUFDQ1AsYUFBRyxDQUFDUSxJQUFKLENBQVMsRUFBRUosSUFBSSxFQUFFRSxFQUFFLENBQUMxRSxJQUFYLEVBQWlCNkUsR0FBRyxFQUFFSCxFQUFFLENBQUNJLEtBQUgsR0FBVUosRUFBRSxDQUFDSSxLQUFiLEdBQW9CLEVBQTFDLEVBQVQsRUFERDtBQUVLLGNBQUdKLEVBQUUsQ0FBQ0MsSUFBSCxJQUFTLEtBQVo7QUFDVlAsYUFBRyxDQUFDUSxJQUFKLENBQVMsRUFBRUosSUFBSSxFQUFFRSxFQUFFLENBQUMxRSxJQUFYLEVBQWlCNkUsR0FBRyxFQUFFSCxFQUFFLENBQUNuQixLQUFILEdBQVMsR0FBVCxHQUFhLEdBQW5DLEVBQVQsRUFEVTs7QUFHVmEsYUFBRyxDQUFDUSxJQUFKLENBQVMsRUFBRUosSUFBSSxFQUFFRSxFQUFFLENBQUMxRSxJQUFYLEVBQWlCNkUsR0FBRyxFQUFFSCxFQUFFLENBQUNuQixLQUF6QixFQUFUO0FBQ0Q7QUFDRDtBQUNELFVBQUksS0FBSy9DLEtBQUwsQ0FBV1YsWUFBWCxDQUF3QnlFLE1BQXhCLEdBQWlDLENBQXJDLEVBQXdDO0FBQ3BDLGFBQUssSUFBSUQsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLOUQsS0FBTCxDQUFXVixZQUFYLENBQXdCeUUsTUFBNUMsRUFBb0RELENBQUMsRUFBckQsRUFBeUQ7QUFDckQsY0FBSSxDQUFDRixHQUFHLENBQUNzSSxNQUFKLENBQVcsVUFBVXBELENBQVYsRUFBYTtBQUN6QixtQkFBTyxLQUFLOUksS0FBTCxDQUFXVixZQUFYLENBQXdCd0UsQ0FBeEIsRUFBMkJFLElBQTNCLElBQW1DOEUsQ0FBQyxDQUFDNUcsSUFBNUM7QUFDSCxXQUZJLEVBRUY2QixNQUZILEVBRVc7QUFDUEEsa0JBQU0sR0FBRyxDQUFUO0FBQ0FILGVBQUcsQ0FBQ1EsSUFBSixDQUFTLEVBQUUsUUFBUSxLQUFLcEUsS0FBTCxDQUFXVixZQUFYLENBQXdCd0UsQ0FBeEIsRUFBMkJFLElBQXJDLEVBQTJDLE9BQU8sS0FBS2hFLEtBQUwsQ0FBV1YsWUFBWCxDQUF3QndFLENBQXhCLEVBQTJCUixLQUE3RSxFQUFUO0FBQ0g7QUFDSjtBQUNKO0FBQ0QsVUFBSTJFLE9BQU8sR0FBR1QsVUFBZDtBQUNBUyxhQUFPLENBQUN6SCxRQUFSLEdBQW1CO0FBQ2YyQixZQUFJLEVBQUUsT0FEUyxFQUNEO0FBQ2R4QixnQkFBUSxFQUFFLEtBQUtYLEtBQUwsQ0FBV2xCLEtBQVgsQ0FBaUI4QixLQUZaLENBRWtCO0FBRmxCLE9BQW5CO0FBSUEsVUFBSTZDLFNBQUosRUFBZTtBQUNYd0UsZUFBTyxDQUFDekgsUUFBUixDQUFpQjJMLFlBQWpCLEdBQWdDLEVBQUM7QUFDN0JqSyxjQUFJLEVBQUV1QixTQUFTLENBQUNqRSxJQURZLEVBQ1A7QUFDckI0TSxjQUFJLEVBQUUzSSxTQUFTLENBQUM4RCxRQUZZLEVBRUg7QUFDekI4RSxvQkFBVSxFQUFFNUksU0FBUyxDQUFDNkksU0FITSxFQUdJO0FBQ2hDbkssY0FBSSxFQUFFc0IsU0FBUyxDQUFDVSxJQUpZLEVBSVA7QUFDckJvSSxrQkFBUSxFQUFFOUksU0FBUyxDQUFDK0ksUUFMUSxFQUtDO0FBQzdCcEQsb0JBQVUsRUFBRTNGLFNBQVMsQ0FBQzJGLFVBTk0sRUFNSztBQUNqQ0Msd0JBQWMsRUFBRTVGLFNBQVMsQ0FBQzRGLGNBUEUsQ0FPWTtBQVBaLFNBQWhDO0FBU0g7QUFDRCxVQUFJM0ksUUFBUSxHQUFHO0FBQ2Q4RCxjQUFNLEVBQUcsR0FESyxFQUNBZCxPQUFPLEVBQUVBLE9BRFQsRUFDa0JlLFNBQVMsRUFBRSxFQUQ3QixFQUNnQ0MsTUFBTSxFQUFFLEVBRHhDLEVBQzRDQyxNQUFNLEVBQUUsRUFEcEQsRUFDd0RDLFNBQVMsRUFBRSxFQURuRTtBQUVkaEUsYUFBSyxFQUFFLEtBQUtaLEtBQUwsQ0FBV2xCLEtBQVgsQ0FBaUI4QixLQUZWLEVBRWlCaUUsS0FBSyxFQUFFLEVBRnhCLEVBRTJCYixJQUFJLEVBQUVsRSxJQUFJLENBQUN3RyxTQUFMLENBQWUxQyxHQUFmLENBRmpDO0FBR2RxRSxlQUFPLEVBQUVuSSxJQUFJLENBQUN3RyxTQUFMLENBQWUyQixPQUFmLENBSEssRUFHb0I1SSxXQUFXLEVBQUVTLElBQUksQ0FBQ3dHLFNBQUwsQ0FBZSxLQUFLdEcsS0FBTCxDQUFXWCxXQUExQixDQUhqQyxFQUFmOztBQUtBLG1CQUFZcUIsUUFBWjtBQUNBLFdBQUtJLE1BQUwsQ0FBWU0sUUFBWixDQUFxQiwyQkFBckIsRUFBaURWLFFBQWpELEVBQTJEVyxJQUEzRCxDQUFnRSxVQUFBQyxPQUFPLEVBQUU7QUFDeEUscUJBQVlBLE9BQVo7QUFDQSxZQUFJQSxPQUFPLENBQUNDLElBQVIsSUFBYyxPQUFsQixFQUEyQjtBQUMxQixjQUFJM0MsSUFBSSxHQUFHa0IsSUFBSSxDQUFDQyxLQUFMLENBQVd1QixPQUFPLENBQUMxQyxJQUFuQixDQUFYO0FBQ0EsY0FBSUEsSUFBSSxJQUFJLEVBQVosRUFBZ0I7O0FBRWhCLGdCQUFJK04sT0FBTyxHQUFHL04sSUFBSSxDQUFDK0UsTUFBbkI7QUFDQSx5QkFBWWdKLE9BQVo7QUFDQSxnQkFBSUEsT0FBSixFQUFhO0FBQ1QsbUJBQUssSUFBSTdJLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUc2SSxPQUFPLENBQUM1SSxNQUE1QixFQUFvQ0QsQ0FBQyxFQUFyQyxFQUF5QztBQUNyQyxvQkFBSUgsTUFBTSxHQUFHZ0osT0FBTyxDQUFDN0ksQ0FBRCxDQUFwQjtBQUNBLG9CQUFJTyxHQUFHLEdBQUdWLE1BQU0sQ0FBQ0wsS0FBakI7QUFDQSxvQkFBSWtFLFVBQVUsR0FBRzFILElBQUksQ0FBQ3dHLFNBQUwsQ0FBZWtCLFVBQWYsQ0FBakI7O0FBRUEsb0JBQUk3RCxNQUFNLENBQUNtSSxXQUFQLElBQXNCLFlBQTFCLEVBQXdDO0FBQ3JDLHNCQUFJMUcsQ0FBQyxHQUFHd0gsTUFBTSxDQUFDO0FBQ1gvTix5QkFBSyxFQUFFLGdEQUFnRCxJQUQ1QztBQUVYdUIsMkJBQU8sRUFBRXVELE1BQU0sQ0FBQ21JLFdBQVAsR0FBcUIsY0FGbkIsRUFBRCxDQUFkOztBQUlBMUcsbUJBQUMsQ0FBQ3lILElBQUY7QUFDRixpQkFORDtBQU9LLG9CQUFJbEosTUFBTSxDQUFDbUksV0FBUCxJQUFzQixxQkFBMUIsRUFBaUQ7QUFDbEQsc0JBQUlnQixLQUFLLEdBQUd6SSxHQUFHLENBQUN5SSxLQUFoQjtBQUNUO0FBQ1Msc0JBQUlqTSxLQUFLLEdBQUcsTUFBWjtBQUNULHNCQUFJL0IsS0FBSyxHQUFDO0FBQ1RvRSx5QkFBSyxFQUFFQSxLQURFO0FBRVRnQywwQkFBTSxFQUFDQSxNQUZFO0FBR1RlLG1DQUFlLEVBQUNBLGVBSFA7QUFJVHJDLHVCQUFHLEVBQUNBLEdBSks7QUFLVEgsNkJBQVMsRUFBQ0EsU0FMRCxFQUFWOztBQU9BOUQscUJBQUcsQ0FBQ3lHLFVBQUosQ0FBZTtBQUNMQyx1QkFBRyxFQUFDLHVDQUFxQ3ZHLElBQUksQ0FBQ3dHLFNBQUwsQ0FBZXhILEtBQWYsQ0FEcEM7QUFFTHlILDBCQUFNLEVBQUM7QUFDTkMsNEJBRE0sa0JBQ0M1SCxJQURELEVBQ01FLEtBRE4sRUFDWTtBQUNqQjtBQUNBLHFDQUFZRixJQUFaO0FBQ0EsNEJBQUltTyxnQkFBZ0IsR0FBR2pPLEtBQUssQ0FBQ21ILGVBQU4sQ0FBc0JTLElBQXRCLEVBQXZCO0FBQ1QsNEJBQUluQyxJQUFJLEdBQUc7QUFDUGIsaUNBQU8sRUFBRXFKLGdCQURGO0FBRVB2SSxnQ0FBTSxFQUFFLEdBRkQ7QUFHUEMsbUNBQVMsRUFBRSxFQUhKO0FBSVBDLGdDQUFNLEVBQUUsRUFKRDtBQUtQQyxnQ0FBTSxFQUFFLEVBTEQ7QUFNUEMsbUNBQVMsRUFBRSxFQU5KO0FBT1BoRSwrQkFBSyxFQUFFQyxLQUFLLENBQUNiLEtBQU4sQ0FBWWxCLEtBQVosQ0FBa0I4QixLQVBsQjtBQVFQaUUsK0JBQUssRUFBRSxFQVJBO0FBU1BiLDhCQUFJLEVBQUVsRixLQUFLLENBQUM4RSxHQVRMO0FBVVBnSSx3Q0FBYyxFQUFFaE4sSUFWVCxFQUFYOztBQVlBaUMsNkJBQUssQ0FBQ2lFLHFCQUFOLENBQTRCUCxJQUE1QixFQUFrQ3pGLEtBQUssQ0FBQzJFLFNBQXhDO0FBQ1MsdUJBbEJLLEVBRkYsRUFBZjs7O0FBdUJNLGlCQWxDSTtBQW1DQSxvQkFBSUUsTUFBTSxDQUFDbUksV0FBUCxJQUFzQixxQkFBMUIsRUFBaUQ7O0FBRXJELGlCQUZJO0FBR0Esb0JBQUluSSxNQUFNLENBQUNtSSxXQUFQLElBQXNCLGlCQUExQixFQUE2QztBQUM5QyxzQkFBSXhJLEtBQUssR0FBR0ssTUFBTSxDQUFDTCxLQUFuQjtBQUNBLHNCQUFJOEIsQ0FBQyxHQUFHd0gsTUFBTSxDQUFDO0FBQ1gvTix5QkFBSyxFQUFFLGdEQUFnRCxJQUQ1QztBQUVYdUIsMkJBQU8sRUFBRXVELE1BQU0sQ0FBQ21JLFdBQVAsR0FBcUIsY0FGbkIsRUFBRCxDQUFkOztBQUlBMUcsbUJBQUMsQ0FBQ3lILElBQUY7QUFDSCxpQkFQSTtBQVFBLG9CQUFJbEosTUFBTSxDQUFDbUksV0FBUCxJQUFzQix3QkFBMUIsRUFBb0Q7QUFDckQ7QUFDQTtBQUNBLHNCQUFJa0IsTUFBTSxHQUFHLElBQWI7QUFDQSxzQkFBSXJKLE1BQU0sQ0FBQ0wsS0FBUCxDQUFhMkosWUFBYixJQUE2QixNQUFqQztBQUNJRCx3QkFBTSxHQUFHLEdBQVQsQ0FESjtBQUVLLHNCQUFJckosTUFBTSxDQUFDTCxLQUFQLENBQWEySixZQUFiLElBQTZCLFFBQWpDO0FBQ0RELHdCQUFNLEdBQUcsR0FBVCxDQURDO0FBRUEsc0JBQUlySixNQUFNLENBQUNMLEtBQVAsQ0FBYTJKLFlBQWIsSUFBNkIsTUFBakM7QUFDREQsd0JBQU0sR0FBRyxHQUFULENBREM7QUFFQSxzQkFBSXJKLE1BQU0sQ0FBQ0wsS0FBUCxDQUFhMkosWUFBYixJQUE2QixNQUE3QixJQUF1Q3RKLE1BQU0sQ0FBQ0wsS0FBUCxDQUFhMkosWUFBYixJQUE2QixNQUF4RTtBQUNERCx3QkFBTSxHQUFHLEdBQVQsQ0FEQztBQUVBLHNCQUFJckosTUFBTSxDQUFDTCxLQUFQLENBQWEySixZQUFiLElBQTZCLE1BQWpDO0FBQ0RELHdCQUFNLEdBQUcsR0FBVCxDQURDO0FBRUEsc0JBQUlySixNQUFNLENBQUNMLEtBQVAsQ0FBYTJKLFlBQWIsSUFBNkIsUUFBakM7QUFDYkQsd0JBQU0sR0FBRyxHQUFUOztBQUVELHNCQUFJbk0sS0FBSyxHQUFHLE1BQVo7QUFDQSxzQkFBSXFNLE1BQU0sR0FBQztBQUNWaEsseUJBQUssRUFBRUEsS0FERztBQUVWZ0MsMEJBQU0sRUFBQ0EsTUFGRztBQUdWZSxtQ0FBZSxFQUFDQSxlQUhOO0FBSVZyQyx1QkFBRyxFQUFDQSxHQUpNLEVBQVg7O0FBTUFqRSxxQkFBRyxDQUFDeUcsVUFBSixDQUFlO0FBQ2RDLHVCQUFHLEVBQUMsOEJBQTRCMkcsTUFBNUIsR0FBbUMsU0FBbkMsR0FBNkNsTixJQUFJLENBQUN3RyxTQUFMLENBQWU0RyxNQUFmLENBRG5DO0FBRWQzRywwQkFBTSxFQUFDO0FBQ05DLDRCQURNLGtCQUNDNUgsSUFERCxFQUNNRSxLQUROLEVBQ1k7QUFDakIrQiw2QkFBSyxDQUFDYixLQUFOLENBQVlqQixhQUFaLENBQTBCRCxLQUFLLENBQUNvRSxLQUFoQyxFQUF1Q0osSUFBdkMsQ0FBNENoRSxLQUFLLENBQUNvRyxNQUFsRCxFQUEwRG5DLEtBQTFELEdBQWdFbkUsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRWSxJQUF4RTtBQUNBcUIsNkJBQUssQ0FBQ2IsS0FBTixDQUFZakIsYUFBWixDQUEwQkQsS0FBSyxDQUFDb0UsS0FBaEMsRUFBdUNKLElBQXZDLENBQTRDaEUsS0FBSyxDQUFDb0csTUFBbEQsRUFBMERaLEtBQTFELEdBQWdFMUYsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRaUksRUFBUixHQUFXLEdBQVgsR0FBZWpJLElBQUksQ0FBQyxDQUFELENBQUosQ0FBUVksSUFBdkY7QUFDUyw0QkFBSXVOLGdCQUFnQixHQUFHak8sS0FBSyxDQUFDbUgsZUFBTixDQUFzQlMsSUFBdEIsRUFBdkI7QUFDVCw0QkFBSXFHLGdCQUFKLEVBQXNCO0FBQ2xCLDhCQUFJeEksSUFBSSxHQUFHO0FBQ1BiLG1DQUFPLEVBQUVxSixnQkFERjtBQUVQdkksa0NBQU0sRUFBRSxHQUZEO0FBR1BDLHFDQUFTLEVBQUU3RixJQUFJLENBQUMsQ0FBRCxDQUFKLENBQVFpSSxFQUhaO0FBSVBuQyxrQ0FBTSxFQUFFLEVBSkQ7QUFLUEMsa0NBQU0sRUFBRSxFQUxEO0FBTVBDLHFDQUFTLEVBQUUsRUFOSjtBQU9QaEUsaUNBQUssRUFBRUMsS0FBSyxDQUFDYixLQUFOLENBQVlsQixLQUFaLENBQWtCOEIsS0FQbEI7QUFRUGlFLGlDQUFLLEVBQUUsRUFSQTtBQVNQYixnQ0FBSSxFQUFFbEYsS0FBSyxDQUFDOEUsR0FUTCxFQUFYOzs7QUFZQS9DLCtCQUFLLENBQUNpRSxxQkFBTixDQUE0QlAsSUFBNUI7QUFDSDtBQUNELHVCQXBCSyxFQUZPLEVBQWY7OztBQXlCTSxpQkFqREksTUFpREU7QUFDSCxzQkFBSWEsQ0FBQyxHQUFHd0gsTUFBTSxDQUFDO0FBQ1gvTix5QkFBSyxFQUFFLGdEQUFnRCxJQUQ1QztBQUVYdUIsMkJBQU8sRUFBRXVELE1BQU0sQ0FBQ21JLFdBQVAsR0FBcUIsY0FGbkIsRUFBRCxDQUFkOztBQUlBMUcsbUJBQUMsQ0FBQ3lILElBQUY7QUFDSDtBQUNKO0FBQ0o7QUFDQSxXQXpIRCxNQXlISztBQUNKbE4sZUFBRyxDQUFDUSxTQUFKLENBQWMsRUFBQ3RCLEtBQUssRUFBQyxPQUFQLEVBQWV1QixPQUFPLEVBQUUsMENBQTBDc0QsT0FBbEUsRUFBMEVyRCxVQUFVLEVBQUMsS0FBckYsRUFBMkZDLFdBQVcsRUFBQyxJQUF2RyxFQUFkO0FBQ0E7QUFDRCxTQTlIRCxNQThISztBQUNKWCxhQUFHLENBQUNRLFNBQUosQ0FBYyxFQUFDdEIsS0FBSyxFQUFDLEtBQVAsRUFBYXVCLE9BQU8sRUFBQ2tCLE9BQU8sQ0FBQ0UsR0FBN0IsRUFBaUNuQixVQUFVLEVBQUMsS0FBNUMsRUFBa0RDLFdBQVcsRUFBQyxJQUE5RCxFQUFkO0FBQ0E7QUFDRCxPQW5JRCxFQW1JR21CLEtBbklILENBbUlTLFVBQUFDLEVBQUUsRUFBRTtBQUNaO0FBQ0EvQixXQUFHLENBQUNRLFNBQUosQ0FBYyxFQUFDdEIsS0FBSyxFQUFDLE9BQVAsRUFBZXVCLE9BQU8sRUFBQ3NCLEVBQUUsQ0FBQ0MsTUFBMUIsRUFBaUN0QixVQUFVLEVBQUMsS0FBNUMsRUFBa0RDLFdBQVcsRUFBQyxJQUE5RCxFQUFkO0FBQ0EsT0F0SUQ7QUF1SUcsS0Fwa0NJLEVBaEVLLEUiLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXHRpbXBvcnQgcGlja2VyQWRkcmVzcyBmcm9tICcuLi8uLi9qcy9waWNrZXJBZGRyZXNzL3BpY2tlckFkZHJlc3MudnVlJ1xuXHRleHBvcnQgZGVmYXVsdCB7XG5cdFx0Y29tcG9uZW50czoge1xuICAgICAgICAgICAgcGlja2VyQWRkcmVzc1xuICAgICAgICB9LFxuXHRcdGRhdGEoKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0aXRsZTogJ+aWsOWinicsXG5cdFx0XHRcdHBhcmFtOnt9LFxuXHRcdFx0XHRjbGFzc0F0dHJMaXN0OltdLFxuXHRcdFx0XHRjbGFzc0dyaWRTdHlsZTpbXSxcblx0XHRcdFx0ZWRpdF9pbml0YWxfZXZlbnQ6XCJcIiwgIC8v5by556qX5Yid5aeL5YyW5LqL5Lu2SURcblx0XHRcdFx0ZWRpdF9va19ldmVudDpcIlwiLCAgICAgIC8v5by556qX54K55Ye7T0sg6Kem5Y+R5LqL5Lu2SURcblx0XHRcdFx0ZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudDpcIlwiLCAgLy/pgInmi6nnu4TmiJDlr7nosaHml7bosIPnlKhcblx0XHRcdFx0ZWRpdF9jb21wb3NlX2Nsc19pZDpcIlwiLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjpbXSxcblx0XHRcdFx0cmVmZGF0YXN0b3JlOiBbXSxcdCAgIC8v5byV55So5pWw5o2u5a2Y5YKo5Yy6Ly8ge2F0dHI6J0dfUFJKXycgKyBiaW5kYXR0ciArICdfSUQnLCB2YWx1ZTppbmZvLmlkfVxuXHRcdFx0XHRpbnB1dFZhbExpc3Q6W3tOYW1lOlwidGVzdFwifSx7TmFtZTpcInRlc3QyXCJ9LHtOYW1lOlwidGVzdDNcIn0se05hbWU6XCJ0ZXN0NFwifSx7TmFtZTpcInRlc3Q1XCJ9LHtOYW1lOlwidGVzdDZcIn0se05hbWU6XCJ0ZXN0N1wifV0sXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvbkxvYWQob3B0aW9ucykge1xuXHRcdFx0Ly8gY29uc29sZS5sb2cob3B0aW9ucyk7XG5cdFx0XHR1bmkuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHsgdGl0bGU6IG9wdGlvbnMudGl0bGVuYW1lfSk7IC8v6K6+572u6aG26YOo5qCH6aKYIFxuXHRcdFx0dmFyIHBhcmFtID0gSlNPTi5wYXJzZShvcHRpb25zLnBhcmFtKTtcblx0XHRcdHRoaXMuJGRhdGEudGl0bGUgPSBwYXJhbS5BZGRfQnRuTmFtZT9wYXJhbS5BZGRfQnRuTmFtZTpvcHRpb25zLnRpdGxlbmFtZTsgLy/orr7nva7mjInpkq7mloflrZdcblx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcblx0XHRcdGlmKCFwYXJhbS5FZGl0RGxnTW9kZSl7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuivpeWKn+iDveeCueacqumFjee9rue8lui+keeql+WPo++8jOivt+mHjeaWsOmFjee9ru+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZighcGFyYW0uRWRpdF9kbGcuTmFtZSl7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuivpeWKn+iDveeCueacqumFjee9rueql+WPo+agt+W8j++8jOivt+mHjeaWsOmFjee9ru+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0aGlzLiRkYXRhLnBhcmFtID0gcGFyYW07XG5cdFx0XHR2YXIgZWRpdF9kbGcgPSB7XG5cdFx0XHQgICAgTW9kZWw6IHBhcmFtLkVkaXREbGdNb2RlLFxuXHRcdFx0ICAgIE5hbWU6IHBhcmFtLkVkaXRfZGxnLk5hbWVcblx0XHRcdH1cblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0Y2xhc3NfaWQ6IHBhcmFtLmNsc2lkXG5cdFx0XHR9O1xuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzYXJlYUZ1bmNJRCA9IHBhcmFtLmNsc2lkO1xuXHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdCk7XG5cdFx0XHQgLy/ojrflj5Zcblx0XHRcdGlmKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3Qpe1xuXHRcdFx0IFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3QuZGF0YTtcblx0XHRcdFx0JHRoaXMuY2xhc3NHcmlkU3R5bGVJbmZvKCk7XG5cdFx0XHR9ZWxzZVxuXHRcdFx0XHQkdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2NsYXNzQXR0ckxpc3QnLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gc3VjY2Vzcy5kYXRhO1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8oKTtcblx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMVwiLGNvbnRlbnQ6c3VjY2Vzcy5tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFxuXHRcdH0sXG5cdFx0bWV0aG9kczoge1xuXHRcdFx0Y2FuY2VsKGUpe1xuXHRcdFx0XHR1bmkubmF2aWdhdGVCYWNrKHtcblx0XHRcdFx0XHRkZWx0YToxIC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHRhc3luYyBjbGFzc0dyaWRTdHlsZUluZm8oKXtcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0dmFyIGdyaWRzdHlsZUluZm8gPSB7XG5cdFx0XHRcdFx0Y2xhc3NfaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdG5hbWU6ICR0aGlzLiRkYXRhLnBhcmFtLkVkaXRfZGxnLk5hbWUsXG5cdFx0XHRcdFx0dHlwZTogJzInXG5cdFx0XHRcdH07XG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzRWRpdE5hbWUgPSAkdGhpcy4kZGF0YS5wYXJhbS5FZGl0X2RsZy5OYW1lXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mbyk7XG5cdFx0XHRcdCAvL+iOt+WPllxuXHRcdFx0XHRpZigkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0dyaWRTdHlsZUluZm8pe1xuXHRcdFx0XHQgXHQkdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mby5kYXRhO1xuXHRcdFx0XHRcdCR0aGlzLmNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKGdyaWRzdHlsZUluZm8pO1xuXHRcdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xhc3NHcmlkU3R5bGVJbmZvJyxncmlkc3R5bGVJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0XHRzdWNjZXNzLmRhdGEuU3R5bGVEZWYgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YS5TdHlsZURlZik7XG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlID0gc3VjY2Vzcy5kYXRhO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0JHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjJcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmNhdGNoKGV4PT57XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuM1wiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0b250YXAoZSl7IC8v5omr56CB5Yqf6IO9XG5cdFx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXG5cdFx0XHRcdGdldEFwcCgpLm9uU2NhbigocmVzdWx0KT0+e1xuXHRcdFx0XHRcdC8vY29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xuXHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1yZXN1bHQuZGVjb2RlZGF0YTtcblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHRvbmFycm93KGluZGV4LG9wZW4pe1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhpbmRleCsnLS0nK29wZW4pO1xuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLk9wZW49b3Blbj09dHJ1ZT9mYWxzZTp0cnVlO1xuXHRcdFx0fSxcblx0XHRcdG9uZGF0ZVRpbWUoZSkge1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9ZS50YXJnZXQudmFsdWU7XG5cdFx0XHR9LFxuXHRcdFx0b25jaGFuZ2UoZSkge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRcdHZhciB2YWx1ZT10aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uZGljdGl0ZW1bZS50YXJnZXQudmFsdWVdO1xuXHRcdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0XHRpZiAodmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9dmFsdWUuTmFtZTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUpO1xuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0ICAgICAgICB2YXIgcmVxPVtdO1xuXHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2Vcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xuXHRcdFx0XHQgICAgICAgIFx0fVxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcblx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgcm9iamlkOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdCAgICAgICAgICAgIG9iamlkOiBcIlwiLFxuXHRcdFx0XHQgICAgICAgICAgICBhdHRyOiByZXEsXG5cdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgIHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHQgICAgfVxuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG9uY2hhbmdlMihpdGVtLHZhbHVlLGRlbHZhbHVlKSB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGl0ZW0pO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyh2YWx1ZSk7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRlbHZhbHVlKTtcblx0XHRcdFx0aWYoaXRlbS5sZW5ndGg9PTApeyAvL+S4uuepuuaXtu+8jOa4heepuuWxnuaAp3ZhbHVlXG5cdFx0XHRcdFx0dmFyIGluZGV4ICxpaW5kZXgsZGluZGV4PTA7XG5cdFx0XHRcdFx0Zm9yKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCl7XG5cdFx0XHRcdFx0XHRmb3IodmFyIGogaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHIpe1xuXHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW0pe1xuXHRcdFx0XHRcdFx0XHRcdGlmKGRlbHZhbHVlWzBdLk5hbWUgPT0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW1bZF0uTmFtZSl7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5WYWx1ZT1cIlwiO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRmb3IodmFyIHYgaW4gaXRlbSl7XG5cdFx0XHRcdFx0dmFyIGluZGV4ICxpaW5kZXgsZGluZGV4PTA7XG5cdFx0XHRcdFx0Zm9yKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCl7XG5cdFx0XHRcdFx0XHRmb3IodmFyIGogaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHIpe1xuXHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uZGljdGl0ZW0pe1xuXHRcdFx0XHRcdFx0XHRcdGlmKGl0ZW1bdl0uTmFtZSA9PSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5kaWN0aXRlbVtkXS5OYW1lKXtcblx0XHRcdFx0XHRcdFx0XHRcdGluZGV4PWk7aWluZGV4PWo7ZGluZGV4PWQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBpdGVtdmFsdWUgPSBpdGVtW3ZdO1xuXHRcdFx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0XHRcdGlmIChpdGVtdmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLlZhbHVlPXZhbHVlO1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uVmFsdWUpO1xuXHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5hY3Rpb247XG5cdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdCAgICAgICAgLy8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdCAgICAgICAgdmFyIHJlcT1bXTtcblx0XHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHQgICAgICAgIFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcblx0XHRcdFx0XHQgICAgICAgIFx0XHRlbHNlIGlmKGFyLlR5cGU9PSflrZflhbgnIHx8IGFyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGl0ZW12YWx1ZS5OYW1lfSk7XG5cdFx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZVxuXHRcdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcblx0XHRcdFx0XHQgICAgICAgIFx0fVxuXHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcblx0XHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxuXHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdCAgICAgICAgdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG9uZXZlbnQoZSl7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdFx0aWYgKGUudGFyZ2V0LnZhbHVlICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xuXHRcdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1lLnRhcmdldC52YWx1ZTtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5hY3Rpb247XG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0ICAgICAgICAvLyBzZWxmLmV2ZW50X25vX3N1YiA9IDE7XG5cdFx0XHRcdCAgICAgICAgdmFyIHJlcT1bXTtcblx0XHRcdFx0ICAgICAgICB2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHQgICAgICAgIFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHQgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdCAgICAgICAgXHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdCAgICAgICAgXHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0aWYoYXIuVmFsdWU9PSfor7cnKSBhci5WYWx1ZT0nJztcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XG5cdFx0XHRcdCAgICAgICAgXHRcdGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWU/JzEnOicwJ30pO1xuXHRcdFx0XHQgICAgICAgIFx0XHRlbHNlXG5cdFx0XHRcdCAgICAgICAgXHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcblx0XHRcdFx0ICAgICAgICBcdH1cblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBkYXRhX2F0dHIpO1xuXHRcdFx0XHQgICAgfVxuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG9uY2hlY2soZSkge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRcdHZhciBpc2NoZWNrZWQgPSBlLnRhcmdldC5kYXRhc2V0LmlzY2hlY2s/ZmFsc2U6dHJ1ZTtcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdFx0aWYgKGlzY2hlY2tlZCAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9aXNjaGVja2VkO1xuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0ICAgICAgICB2YXIgcmVxPVtdO1xuXHRcdFx0XHQgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgXHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdCAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ICAgICAgICBcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0ICAgICAgICBcdFx0aWYoYXIuVHlwZT09J+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHQgICAgICAgIFx0XHRpZihhci5UeXBlPT0n5byV55So5Lq65ZGYJyB8fCBhci5UeXBlPT0n5byV55So6aG555uuJylcblx0XHRcdFx0ICAgICAgICBcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcblx0XHRcdFx0ICAgICAgICBcdFx0ZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgYXR0cjogYXIuTmFtZSwgdmFsOiBhci5WYWx1ZT8nMSc6JzAnfSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlID9hci5WYWx1ZSA6Jyd9KTtcblx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0ICAgICAgICBcdH1cblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogcmVxLFxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcblx0XHRcdFx0ICAgIH1cblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdH0sXG5cdFx0XHRpbnB1dFZhbExpc3RJc0RlbChpbmRleCl7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmlucHV0VmFsTGlzdC5zcGxpY2UoaW5kZXgsIDEpOyAvL+WIoOmZpHRhYlBhZ2Vqc29u55qE5YaF5a65XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuaW5wdXRWYWxMaXN0KTtcblx0XHRcdH0sXG5cdFx0XHRhZGRyZXNzY2hhbmdlKGUpIHtcblx0XHRcdCAgICAvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHQgICAgY29uc29sZS5sb2coZS5kYXRhLmpvaW4oJzsnKSlcblx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPWUuZGF0YS5qb2luKCc7Jyk7XG5cdFx0XHR9LFxuXHRcdFx0Y2xhc3NBdHRyX2V4dEJ1dHRvbihpbmRleCxpaW5kZXgpe1xuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0XHR2YXIgYmVmb3JlX2NsaWNrX2J1dHRvbiA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5iZWZvcmVfY2xpY2tfYnV0dG9uO1xuXHRcdFx0XHR2YXIgYnV0dG9uX2NhbGxiYWNrID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLmJ1dHRvbl9jYWxsYmFjaztcblx0XHRcdFx0aWYoIWJlZm9yZV9jbGlja19idXR0b24pe1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcImJlZm9yZV9jbGlja19idXR0b24tZXZlbnRfaWTkuLrnqbrvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoIWJ1dHRvbl9jYWxsYmFjayl7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OlwiYnV0dG9uX2NhbGxiYWNrLWV2ZW50X2lk5Li656m677yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XTtcblx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKGJlZm9yZV9jbGlja19idXR0b24sIGRhdGFfYXR0ciwgYnV0dG9uX2NhbGxiYWNrLCBpbmRleCxpaW5kZXgpO1xuXHRcdFx0fSxcblx0XHRcdGNsYXNzQXR0cl9BZGRQZXIoaW5kZXgsaWluZGV4KXtcblx0XHRcdFx0dmFyIHBhcmFtPXtpbmRleDppbmRleCxpaW5kZXg6aWluZGV4fTtcblx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdHVybDonLi4vc2VscHNuL2luZGV4P211bGl0PWZhbHNlJnBhcmFtPScrSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxuXHRcdFx0XHRcdGV2ZW50czp7XG5cdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhwYXJhbSk7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGRhdGEpO1xuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsSUQ9ZGF0YVswXS5Mb2dpbisnOycrZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0XHQgICAgZXZlbnRpZCA9IGV2ZW50aWQudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHQgICAgaWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjRcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICByY2xzaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHJvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiBkYXRhWzBdLkxvZ2luLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBhdHRyOiBbXSxcblx0XHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdC8vIHZhciBkYXRhX2F0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF07XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgJHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdFx0XHQgICAgfVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHRjbGFzc0F0dHJfQWRkUmVmKGUpe1xuXHRcdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuatpOWKn+iDvei/mOacquWunueOsO+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHQvLyB2YXIgdmFsdWU9dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlJlbENsc1tlLnRhcmdldC52YWx1ZV07XG5cdFx0XHRcdC8vIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT12YWx1ZTtcblx0XHRcdH0sXG5cdFx0XHRjbGFzc0F0dHJfQWRkUHJqKGluZGV4LGlpbmRleCl7XG5cdFx0XHRcdHZhciBwYXJhbT17aW5kZXg6aW5kZXgsaWluZGV4OmlpbmRleH07XG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHR1cmw6Jy4uL3NlbFByai9pbmRleD9yZWxhdGlvbj0tMSZwYXJhbT0nK0pTT04uc3RyaW5naWZ5KHBhcmFtKSxcblx0XHRcdFx0XHRldmVudHM6e1xuXHRcdFx0XHRcdFx0QWRkUGVyKGRhdGEscGFyYW0peyBcblx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocGFyYW0pO1xuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhkYXRhKTtcblx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbHVlPWRhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEPWRhdGFbMF0uSUQrJzsnK2RhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdHZhciBldmVudGlkID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLmFjdGlvbjtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0ICAgIGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0ICAgIGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCIyXCIsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHByb2plY3RpZDogZGF0YVswXS5JRCxcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICByb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogXCJcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLFxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgYXR0cjogW10sXG5cdFx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgLy8gdmFyIGRhdGFfYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XTtcblx0XHRcdFx0XHRcdFx0ICAgICAgICAkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdHNhdmEoKXtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuZWRpdF9va19ldmVudClcblx0XHRcdFx0XHR0aGlzLk9LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KCk7XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHR0aGlzLmFkZCgpO1xuXHRcdFx0fSxcblx0XHRcdGFkZCgpe1xuXHRcdFx0XHR1bmkuc2hvd0xvYWRpbmcoe1xuXHRcdFx0XHRcdHRpdGxlOlwi5Yqg6L295LitLi4uXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHZhciByZXE9W107XG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRpZihhci5WYWx1ZT09J+ivt+mAieaLqScgfHwgYXIuVmFsdWU9PSfigJTigJTor7fpgInmi6nigJTigJQnKSBhci5WYWx1ZT0nJztcblx0XHRcdFx0XHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XG5cdFx0XHRcdCAgICAgICAgaWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXG5cdFx0XHRcdCAgICAgICAgXHRyZXEucHVzaCh7IG5hbWU6IGFyLk5hbWUsIHZhbHVlOiBhci5WYWxJRCA/YXIuVmFsSUQgOicnIH0pO1xuXHRcdFx0XHQgICAgICAgIGVsc2UgaWYoYXIuVHlwZT09J+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHsgbmFtZTogYXIuTmFtZSwgdmFsdWU6IGFyLlZhbHVlPycxJzonMCd9KTtcblx0XHRcdFx0ICAgICAgICBlbHNlIGlmKGFyLlR5cGU9PSflrZflhbgnIHx8IGFyLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XG5cdFx0XHRcdFx0XHRcdGlmKGFyLnNlbGVjdD09dHJ1ZSl7IC8v5Yik5pat5LiL5ouJ5piv5ZCm5aSa6YCJXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHZhbFN0ciA9XCJcIjtcblx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIHYgaW4gYXIuVmFsdWUpe1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYodmFsU3RyKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIrPVwiO1wiO1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyKz1hci5WYWx1ZVt2XTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogdmFsU3RyfSk7XG5cdFx0XHRcdFx0XHRcdH1lbHNlXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWV9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBuYW1lOiBhci5OYW1lLCB2YWx1ZTogYXIuVmFsdWUgP2FyLlZhbHVlIDonJ30pO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdGlmICgoYXIuTm90RW1wdHkgPT0gJzEnIHx8IGFyLm5vdGVtcHR5ID09IHRydWUpICYmICFhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0Ly8gaWYoYXIubm90RW1wdHk9PScxJyl7XG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xuXHRcdFx0XHQgICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdCAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0XHRcdCAgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0ICAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdCAgICAgbWFzdGVyOiB7XG5cdFx0XHRcdCAgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgXG5cdFx0XHRcdCAgICAgfVxuXHRcdFx0XHR9O1xuXHRcdFx0XHQgXG5cdFx0XHRcdHZhciBkYXRhSW5mbz17XG5cdFx0XHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgZGF0YV9vYmpfaWQ6ICcnLCBtYXN0ZXJjbHNpZDogJycsXG5cdFx0XHRcdCAgICByZXE6IEpTT04uc3RyaW5naWZ5KHJlcSksIHVwZmlsZTogSlNPTi5zdHJpbmdpZnkoW10pLCBwb3N0X2RhdGE6IEpTT04uc3RyaW5naWZ5KHt9KSxcblx0XHRcdFx0ICAgIGNvbXBvc2U6IEpTT04uc3RyaW5naWZ5KFtdKSwgcmVmZGF0YXN0b3JlOiBKU09OLnN0cmluZ2lmeShbXSksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLCBcblx0XHRcdFx0XHRub3RfdHJpZ2dlcl9zeXNfZXZlbnQ6ICcnXG5cdFx0XHRcdH07XG5cdFx0XHRcdFxuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHRcdC8vIHJldHVyblxuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYWRkY2xhc3NhdHRyJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhLkFjdGlvbik7XG5cdFx0XHRcdFx0XHRpZihhY3Rpb24ucmV0PT0nMCcpe1xuXHRcdFx0XHRcdFx0XHRpZihhY3Rpb24ucmVzdWx0X3R5cGU9PScwJyl7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7dGl0bGU6YWN0aW9uLnJlc3VsdCxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQvLyBcIntcInJldFwiOjAsIFwicmVzdWx0X3R5cGVcIjowLCBcInJlc3VsdFwiOlwi5Yib5bu65oiQ5YqfMTIzMTIzMTIzXCIsXCJpbmZvXCI6XCJcIn1cIlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly/liLfmlrBcblx0XHRcdFx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcblx0XHRcdFx0XHRcdFx0dXJsOicuLi9tb2RhbC9jbGFzc0F0dHI/cGFyYW09JytKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLnBhcmFtKStcIiZ0aXRsZW5hbWU9XCIrdGhpcy4kZGF0YS50aXRsZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHQvLyB0aGlzLmNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkuY2F0Y2goZXg9Pntcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0Y2xhc3NfYXR0cl9pbml0KCl7XG5cdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxuXHRcdFx0XHR2YXIgbmV3YXR0cmxpc3QgPSBbXTtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgdmFyIG9wZW4gPSBhdHRybGlzdFtpXS5vcGVuO1xuXHRcdFx0XHQgICAgICAgIHZhciBuYW1lID0gYXR0cmxpc3RbaV0uYXR0cmdyb3VwX25hbWU7XG5cdFx0XHRcdCAgICAgICAgdmFyIGF0dHJzID0gYXR0cmxpc3RbaV0uYXR0cnM7XG5cdFx0XHRcdCAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdFx0ICAgICAgICAgICAgdmFyIGNsc2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Rbc107XG5cdFx0XHRcdCAgICAgICAgICAgIGlmIChuYW1lID09IGNsc2F0dHIuTmFtZSkge1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBbXTtcblx0XHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXR0cnMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IGNsc2F0dHIuQXR0ci5sZW5ndGg7IGwrKykge1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2EgPSBjbHNhdHRyLkF0dHJbbF07XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyc1tqXS5hdHRyID09IGNhLk5hbWUpIHtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmFjdGlvbiA9IGF0dHJzW2pdLmFjdGlvbjtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmVkaXQgPSBhdHRyc1tqXS5lZGl0O1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Eubm90ZW1wdHkgPSBhdHRyc1tqXS5ub3RlbXB0eTtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhLmV4dF9idXR0b24gPSBhdHRyc1tqXS5leHRfYnV0dG9uO1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYnV0dG9uX2ltZyA9IGF0dHJzW2pdLmJ1dHRvbl9pbWc7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25fdG9vbHRpcCA9IGF0dHJzW2pdLmJ1dHRvbl90b29sdGlwO1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2EuYmVmb3JlX2NsaWNrX2J1dHRvbiA9IGF0dHJzW2pdLmJlZm9yZV9jbGlja19idXR0b247XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5idXR0b25fY2FsbGJhY2sgPSBhdHRyc1tqXS5idXR0b25fY2FsbGJhY2s7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5oaWRkZW4gPSBhdHRyc1tqXS5oaWRkZW47XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYS5zZWxlY3QgPSBhdHRyc1tqXS5zZWxlY3Q9PXVuZGVmaW5lZD9mYWxzZTphdHRyc1tqXS5zZWxlY3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPVwiXCI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuZGljdGl0ZW0pe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2Euc2VsZWN0ID09IHRydWUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gW107Ly9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlIFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7fpgInmi6knOy8vY2EuZGljdGl0ZW1bMF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RpdGVtbGlzdD1bXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgPSAwOyBkIDwgY2EuZGljdGl0ZW0ubGVuZ3RoOyBkKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0ubGFiZWw9Y2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS52YWx1ZT1jYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLmRpY3RpdGVtW2RdLkNOX0NfSVNfREVGQVVMVD09JzEnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlPWNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoY2EuVHlwZT09J+aXpeacnycgfHwgY2EuVHlwZT09J+aXtumXtCcpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRhdGUgPSB7eWVhcjogbm93RGF0ZS5nZXRGdWxsWWVhcigpLG1vbnRoOiBub3dEYXRlLmdldE1vbnRoKCkgKyAxLGRheTogbm93RGF0ZS5nZXREYXRlKCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGRhdGUueWVhciArICctJyArIChkYXRlLm1vbnRoID49IDEwID8gZGF0ZS5tb250aCA6ICcwJyArIGRhdGUubW9udGgpICsgJy0nICsgKGRhdGUuZGF5ID49IDEwID8gZGF0ZS5kYXkgOiAnMCcgKyBkYXRlLmRheSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlbENsc0xpc3Q9W107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0cl9yZXNjbHMgPSBjYS5SZWxDbHMuc3BsaXQoJywnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcih2YXIgaWkgaW4gYXR0cl9yZXNjbHMpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzY2xzID0gYXR0cl9yZXNjbHNbaWldLnNwbGl0KCd8Jyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlbENsc0xpc3QucHVzaCh7aWQ6cmVzY2xzWzBdLG5hbWU6cmVzY2xzWzFdfSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5SZWxDbHNMaXN0ID0gcmVsQ2xzTGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivtyc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSfnnIHluILljLonKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+36YCJ5oupJztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjYS5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIucHVzaChjYSk7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgICAgICAgICBuZXdhdHRybGlzdC5wdXNoKHtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBCa0NvbG9yOiBjbHNhdHRyLkJrQ29sb3IsXG5cdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgSGFzQWNlOiBjbHNhdHRyLkhhc0FjZSxcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBJbWdGb250U3R5bGU6IGNsc2F0dHIuSW1nRm9udFN0eWxlLFxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIE5hbWU6IGNsc2F0dHIuTmFtZSxcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBPcmRlcjogY2xzYXR0ci5PcmRlcixcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBPcGVuOiBvcGVuLFxuXHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIEF0dHI6IGF0dHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRjb250cm9sX3N0eWxlOnRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuY29udHJvbF9zdHlsZSxcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlX3Bfd2RpdGg6dGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi50aXRsZV9wX3dkaXRoXG5cdFx0XHRcdCAgICAgICAgICAgICAgICB9KVxuXHRcdFx0XHQgICAgICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHQgICAgfVxuXHRcdFx0XHQgICAgaWYgKG5ld2F0dHJsaXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0ICAgICAgICB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QgPSBuZXdhdHRybGlzdDtcblx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHR2YXIgcmVxPVtdO1xuXHRcdFx0XHQgICAgaWYgKHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYpIHtcblx0XHRcdFx0ICAgICAgICAgaWYgKHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdCAgICAgICAgICAgIHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxuXHRcdFx0XHQgICAgICAgICAgICAvLyAkZWwuZmluZCgnLmF0dHJfZmllbGQnKS5wcm9wKCdyZWFkb25seScsIHRydWUpO1xuXHRcdFx0XHQgICAgICAgICAgICAvLyAkZWwuZmluZCgnLmF0dHJfZmllbGQnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuXHRcdFx0XHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgICAgICAgICB2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLmF0dHJzXG5cdFx0XHRcdCAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5hdHRyLCB2YWw6IGFyLnZhbHVlP2FyLnZhbHVlOicnIH0pO1xuXHRcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHQgICAgICAgICAgICB9XG5cdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdH1cdFxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdHZhciBldmVudGxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmV2ZW50O1xuXHRcdFx0XHRcdGlmIChldmVudGxpc3QpIHtcblx0XHRcdFx0XHQgICAgaWYgKGV2ZW50bGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50bGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdCAgICAgICAgICAgIGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2JlZm9yZV9vaycpIHtcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X29rX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xuXHRcdFx0XHRcdCAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdpbml0aWFsJykge1xuXHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xuXHRcdFx0XHRcdCAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfc2VsZWN0X2NvbXBvc2UnKSB7XG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEuZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCA9IGV2ZW50bGlzdFtpXS5zY3JpcF9pZDtcblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5lZGl0X2NvbXBvc2VfY2xzX2lkID0gZXZlbnRsaXN0W2ldLmNvbXBvc2VfY2xzX2lkO1xuXHRcdFx0XHRcdCAgICAgICAgICAgIH1cblx0XHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc29sZS5sb2cocmVxKTtcblx0XHRcdFx0XHRpZiAodGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudCkge1xuXHRcdFx0XHRcdCAgICB2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQuc2NyaXBfaWQ7XG5cdFx0XHRcdFx0ICAgIHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdCAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHQgICAgICAgIGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdFx0ICAgICAgICBwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdCAgICAgICAgcmNsc2lkOiAnJyxcblx0XHRcdFx0XHQgICAgICAgIHJvYmppZDogJycsXG5cdFx0XHRcdFx0ICAgICAgICB1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdCAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdFx0ICAgICAgICBvYmppZDogXCJcIixcblx0XHRcdFx0XHQgICAgICAgIGF0dHI6IHJlcSxcblx0XHRcdFx0XHQgICAgfVxuXHRcdFx0XHRcdCAgICB0aGlzLmluaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUpO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCk7XG5cdFx0XHRcdFx0XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi5pyq5om+5Yiw5Y+v5pi+56S655qE55qE5bGe5oCnXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRpbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pe1xuXHRcdFx0XHR2YXIgcGFyYW0gPSB7XG5cdFx0XHRcdCAgICBFZGl0U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uRWRpdF9kbGcuTmFtZSxcblx0XHRcdFx0ICAgIFZpZXdTdHlsZTogdGhpcy4kZGF0YS5wYXJhbS5FZGl0X2RsZy5OYW1lLFxuXHRcdFx0XHQgICAgTm90VHJpZ2dlclN5c0V2ZW50OiAwLFxuXHRcdFx0XHQgICAgZW52aXJvbWVudDoge1xuXHRcdFx0XHQgICAgICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0XHRcdCAgICAgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0ICAgICAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdCAgICAgICAgbWFzdGVyOiB7XG5cdFx0XHRcdCAgICAgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblx0XHRcdFx0ICAgICAgICAgICAgLy9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgIH1cblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgaW5wdXRwYXJhbWV0ZXIgPSAnJztcblx0XHRcdFx0dmFyIGdsb2JhbF9hdHRyID0gJyc7XG5cdFx0XHRcdFxuXHRcdFx0XHR2YXIgZGF0YUluZm8gPSB7XG4gICAgICAgICAgICAgICAgICAgIGVkdHlwZTogaW5mby5lZHR5cGUsIGV2ZW50aWQ6IGluZm8uZXZlbnRpZCwgcHJvamVjdGlkOiBpbmZvLnByb2plY3RpZCxcbiAgICAgICAgICAgICAgICAgICAgcmNsc2lkOiBpbmZvLnJjbHNpZCwgcm9iamlkOiBpbmZvLnJvYmppZCwgdXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbiwgY2xzaWQ6IGluZm8uY2xzaWQsIG9iamlkOiBpbmZvLm9iamlkLFxuICAgICAgICAgICAgICAgICAgICBhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShwYXJhbSksIGlucHV0cGFyYW1ldGVyOiBpbnB1dHBhcmFtZXRlciwgZ2xvYmFsX2F0dHI6IGdsb2JhbF9hdHRyXG4gICAgICAgICAgICAgICAgfVxuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0XHRcdFx0XHR2YXIgYWN0aW9ubGlzdCA9IGRhdGEuYWN0aW9uO1xuXHRcdFx0XHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcblx0XHRcdFx0XHRcdCAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFjdGlvbmxpc3QubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbiA9IGFjdGlvbmxpc3Rbal1cblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbl90eXBlID0gYWN0aW9uLmFjdGlvbl90eXBlO1xuXHRcdFx0XHRcdFx0ICAgICAgICB2YXIgdmFsdWUgPSBhY3Rpb24udmFsdWU7XG5cdFx0XHRcdFx0XHQgICAgICAgIGlmIChhY3Rpb25fdHlwZSA9PSAnc2V0X2RsZ19hdHRyJykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdmFyIHZhbCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgdmFsID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyh2YWwpO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYSA9IDA7IGEgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBhKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGwgPSAwOyBsIDwgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2FdLkF0dHIubGVuZ3RoOyBsKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGNhID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2FdLkF0dHJbbF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh2YWxbaV0uYXR0ciAgPT0gY2EuTmFtZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNhLlR5cGU9PSflrZflhbgnIHx8IGNhLlR5cGU9PSflrZflhbgt5a2X56ym5LiyJyl7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yKHZhciBkIGluIHZhbFtpXS5jaG9pY2VfbGlzdCl7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWwgPXZhbFtpXS5jaG9pY2VfbGlzdFtkXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiTmFtZVwiOnZhbCxcImxhYmVsXCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbSA9IGRpY3RJdGVtTGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSB2YWxbaV0uY2hvaWNlX2xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjYS52YWx1ZSA9IHZhbFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHZhbFtpXSk7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gdmFsW2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSB2YWxbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgICAgIGlmIChhY3Rpb25fdHlwZSA9PSAnb3Blbl9zZWxlY3RfdXNlcmRsZycpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMi4yXCIsY29udGVudDpcIm9wZW5fc2VsZWN0X3VzZXJkbGfov5nkuKphY3Rpb25fdHlwZei/mOacquWkhOeQhu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHQgICAgfVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzJcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkuY2F0Y2goZXg9Pntcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdCAgICBEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyxkYXRhX2F0dHIpe1xuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdCAgICBcdHZhciBlbnZpcm9tZW50ID0ge1xuXHRcdCAgICBcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdCAgICBcdCAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4Zcblx0XHQgICAgXHQgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cblx0XHQgICAgXHQgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdCAgICBcdCAgICBtYXN0ZXI6IHtcblx0XHQgICAgXHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblx0XHQgICAgXHQgICAgICAgIC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcblx0XHQgICAgXHQgICAgfVxuXHRcdCAgICBcdH07XG5cdFx0ICAgIFx0aWYoZGF0YV9hdHRyKXtcblx0XHRcdFx0XHRlbnZpcm9tZW50LmVkaXRfZGxnID0ge1xuXHRcdFx0XHRcdCAgICB0eXBlOiAnc21hbGwnLC8v5bCP56qX5Y+jXG5cdFx0XHRcdFx0ICAgIGNsYXNzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLC8v5b2T5YmN5pWw5o2u57G7aWRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGRhdGFfYXR0cikge1xuXHRcdFx0XHRcdCAgICBlbnZpcm9tZW50LmVkaXRfZGxnLmZvcm1fY29udHJvbCA9IHsvL+aJgOWxnueahOihqOWNleaOp+S7tlxuXHRcdFx0XHRcdCAgICAgICAgbmFtZTogZGF0YV9hdHRyLk5hbWUsLy/lrZfmrrXlsZ7mgKdcblx0XHRcdFx0XHQgICAgICAgIHRleHQ6IGRhdGFfYXR0ci5EaXNwTmFtZSwvL+aYvuekuuaWh+acrFxuXHRcdFx0XHRcdCAgICAgICAgZ3JvdXBfbmFtZTogZGF0YV9hdHRyLkdyb3VwTmFtZSwvL+WxnuaAp+e7hFxuXHRcdFx0XHRcdCAgICAgICAgdHlwZTogZGF0YV9hdHRyLlR5cGUsLy/lrZfmrrXnsbvlnotcblx0XHRcdFx0XHQgICAgICAgIHJlYWRvbmx5OiBkYXRhX2F0dHIuUmVhZE9ubHksLy/mmK/lkKblj6ror7tcblx0XHRcdFx0XHQgICAgICAgIGJ1dHRvbl9pbWc6IGRhdGFfYXR0ci5idXR0b25faW1nLC8v5byV55So5oyJ6ZKu55qE5Zu+5qCHXG5cdFx0XHRcdFx0ICAgICAgICBidXR0b25fdG9vbHRpcDogZGF0YV9hdHRyLmJ1dHRvbl90b29sdGlwLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXG5cdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHQgICAgXHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBpbmZvLmVkdHlwZSwgZXZlbnRpZDogaW5mby5ldmVudGlkLCBwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLnJlcGxhY2UoJ3snLCcnKS5yZXBsYWNlKCd9JywnJyksXG5cdFx0ICAgICAgICAgICAgcmNsc2lkOiBpbmZvLnJjbHNpZCwgcm9iamlkOiBpbmZvLnJvYmppZCwgdXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbiwgY2xzaWQ6IGluZm8uY2xzaWQsIG9iamlkOiBpbmZvLm9iamlkLFxuXHRcdCAgICAgICAgICAgIGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLCBpbnB1dHBhcmFtZXRlcjogJycsIGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKVxuXHRcdCAgICAgICAgfVxuXHRcdCAgICBcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHQgICAgXHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xuXHRcdCAgICBcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0ICAgIFx0XHRpZiAoc3VjY2Vzcy5jb2RlPT0nMDAwMDAnKSB7XG5cdFx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHQgICAgXHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcblx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdCAgICBcdFx0XHRpZiAoYWN0aW9ubGlzdCkge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25saXN0KTtcblx0XHQgICAgXHRcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWN0aW9ubGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdCAgICBcdFx0XHQgICAgICAgIHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2ldO1xuXHRcdCAgICBcdFx0XHQgICAgICAgIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0W2ldLmNob2ljZV9saXN0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbY10uQXR0cjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihhdHRyW2pdLk5hbWU9PXJlc3VsdFtpXS5hdHRyKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihhdHRyW2pdLlR5cGU9PSflrZflhbgnIHx8IGF0dHJbal0uVHlwZT09J+Wtl+WFuC3lrZfnrKbkuLInKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0SXRlbUxpc3Q9W107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IodmFyIGQgaW4gcmVzdWx0W2ldLmNob2ljZV9saXN0KXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9cmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaWN0SXRlbUxpc3QucHVzaCh7XCJDTl9TX05BTUVcIjp2YWwsXCJOYW1lXCI6dmFsLFwibGFiZWxcIjp2YWwsXCJ2YWx1ZVwiOnZhbH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5kaWN0aXRlbSA9IGRpY3RJdGVtTGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSByZXN1bHRbaV0uY2hvaWNlX2xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGF0dHJbal0uTmFtZSsnPT0nK3Jlc3VsdFtpXS5hdHRyKTtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0XHRpZihhdHRyW2pdLk5hbWU9PXJlc3VsdFtpXS5hdHRyKXtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIFx0XHRcdGF0dHJbal0uVmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBcdFx0fVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgXHR9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgaWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfSkubGVuZ3RoKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gMTtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaChyZXN1bHRbaV0pO1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIH1cblx0XHQgICAgXHRcdFx0ICAgICAgICB9IGVsc2UgaWYgKGRhdGEuYWN0aW9uW2ldLmFjdGlvbl90eXBlID09ICdzZXRfZ2xvYmFsX2F0dHInKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAkdGhpcy4kZGF0YS5nbG9iYWxfYXR0ciA9IGRhdGEuYWN0aW9uW2ldLnZhbHVlIHx8IFtdO1xuXHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICB9XG5cdFx0ICAgIFx0XHRcdH1cblx0XHQgICAgXHRcdFx0XG5cdFx0ICAgIFx0XHRcdGlmIChkYXRhLnJlc3VsdCkge1xuXHRcdCAgICBcdFx0XHQgICAgdmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xuXHRcdCAgICBcdFx0XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICBcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHRcdGlmKGF0dHJbal0uTmFtZT09cmVzdWx0W2ldLmF0dHIpe1xuXHRcdCAgICBcdFx0XHQgICAgICAgIFx0XHRcdGF0dHJbal0uVmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgXHRcdH1cblx0XHQgICAgXHRcdFx0ICAgICAgICBcdH1cblx0XHQgICAgXHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgaWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHQgICAgXHRcdFx0ICAgICAgICB9KS5sZW5ndGgpIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgbGVuZ3RoID0gMTtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHQgICAgXHRcdFx0ICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgaWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICBpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgICAgICAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgICAgIH1cblx0XHQgICAgXHRcdFx0ICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICB9XG5cdFx0ICAgIFx0XHRcdH1cblx0XHQgICAgXHRcdH1lbHNle1xuXHRcdCAgICBcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzNcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdCAgICBcdFx0fVxuXHRcdCAgICBcdH0pLmNhdGNoKGV4PT57XG5cdFx0ICAgIFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XG5cdFx0ICAgIFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzMuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdCAgICBcdH0pO1xuXHRcdCAgICB9LFxuXHRcdFx0T0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoKXtcblx0XHQgICAgXHR2YXIgZW52aXJvbWVudCA9IHtcblx0XHRcdFx0ICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdCAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0ICAgICdidXR0b24nOiAndG9wJywgICAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdCAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdCAgICBtYXN0ZXI6IHtcblx0XHRcdFx0ICAgICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cdFx0XHRcdCAgICAgICAgXG5cdFx0XHRcdCAgICB9XG5cdFx0XHRcdH07XG5cdFx0ICAgIFx0XG5cdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5lZGl0X29rX2V2ZW50LnNjcmlwX2lkO1xuXHRcdFx0XHR2YXIgcmVxPVtdO1xuXHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0aWYoYXIuVmFsdWU9PSfor7fpgInmi6knIHx8IGFyLlZhbHVlPT0n4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWU9Jyc7XG5cdFx0XHRcdFx0XHRpZihhci5UeXBlPT0n5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRpZihhci5WYWx1ZT09J+ivtycpIGFyLlZhbHVlPScnO1xuXHRcdFx0XHQgICAgICAgIGlmKGFyLlR5cGU9PSflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGU9PSflvJXnlKjpobnnm64nKVxuXHRcdFx0XHQgICAgICAgIFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbElEID9hci5WYWxJRCA6JycgfSk7XG5cdFx0XHRcdCAgICAgICAgZWxzZSBpZihhci5UeXBlPT0n5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlPycxJzonMCd9KTtcblx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goeyBhdHRyOiBhci5OYW1lLCB2YWw6IGFyLlZhbHVlIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHQgICAgXHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoID4gMCkge1xuXHRcdCAgICBcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaSsrKSB7XG5cdFx0ICAgIFx0ICAgICAgICBpZiAoIXJlcS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcblx0XHQgICAgXHQgICAgICAgICAgICByZXR1cm4gdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciA9PSBzLm5hbWVcblx0XHQgICAgXHQgICAgICAgIH0pLmxlbmd0aCkge1xuXHRcdCAgICBcdCAgICAgICAgICAgIGxlbmd0aCA9IDE7XG5cdFx0ICAgIFx0ICAgICAgICAgICAgcmVxLnB1c2goeyAnYXR0cic6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIsICd2YWwnOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS52YWx1ZSB9KTtcblx0XHQgICAgXHQgICAgICAgIH1cblx0XHQgICAgXHQgICAgfVxuXHRcdCAgICBcdH1cblx0XHQgICAgXHR2YXIgaW5mbyA9IHtcblx0XHQgICAgXHQgICAgZXZlbnRpZDogZXZlbnRpZCxcblx0XHQgICAgXHQgICAgZWR0eXBlOiBcIjBcIixcblx0XHQgICAgXHQgICAgcHJvamVjdGlkOiAnJyxcblx0XHQgICAgXHQgICAgcmNsc2lkOiAnJyxcblx0XHQgICAgXHQgICAgcm9iamlkOiAnJyxcblx0XHQgICAgXHQgICAgdXNlcmxvZ2luOiAnJyxcblx0XHQgICAgXHQgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0ICAgIFx0ICAgIG9iamlkOiBcIlwiLFxuXHRcdCAgICBcdCAgICBhdHRyOiByZXEsXG5cdFx0ICAgIFx0fVxuXHRcdCAgICBcdHZhciBkYXRhSW5mbyA9IHtcblx0XHQgICAgICAgICAgICBlZHR5cGU6IGluZm8uZWR0eXBlLCBldmVudGlkOiBpbmZvLmV2ZW50aWQsIHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQscmNsc2lkOiBpbmZvLnJjbHNpZCwgXG5cdFx0XHRcdFx0cm9iamlkOiBpbmZvLnJvYmppZCwgdXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbiwgY2xzaWQ6IGluZm8uY2xzaWQsIG9iamlkOiBpbmZvLm9iamlkLFxuXHRcdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLCBnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcblx0XHQgICAgICAgIH1cblx0XHQgICAgXHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0ICAgIFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9Pntcblx0XHQgICAgXHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdCAgICBcdFx0aWYgKHN1Y2Nlc3MuY29kZT09JzAwMDAwJykge1xuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XHRcdFxuXHRcdCAgICBcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XG5cdFx0ICAgIFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0ICAgIFx0XHRcdCAgICAvLyBzZWxmLmNsYXNzX2F0dHJfZWxlLmZpbmQoJy5hdHRyX2ZpZWxkW2RhdGEtZmllbGQ9XCInICsgcmVzdWx0W2ldLmF0dHIgKyAnXCJdJykudmFsKHJlc3VsdFtpXS52YWx1ZSkuZGF0YSgndmFsJywgcmVzdWx0W2ldLnZhbHVlKTtcblx0XHQgICAgXHRcdFx0ICAgIHZhciBsZW5ndGggPSAwO1xuXHRcdCAgICBcdFx0XHQgICAgaWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICByZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXG5cdFx0ICAgIFx0XHRcdCAgICB9KS5sZW5ndGgpIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICBsZW5ndGggPSAxO1xuXHRcdCAgICBcdFx0XHQgICAgICAgIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHQgICAgXHRcdFx0ICAgIH1cblx0XHQgICAgXHRcdFx0ICAgIGlmIChsZW5ndGggPT0gMCkge1xuXHRcdCAgICBcdFx0XHQgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgaWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHQgICAgXHRcdFx0ICAgICAgICAgICAgICAgIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdCAgICBcdFx0XHQgICAgICAgICAgICB9XG5cdFx0ICAgIFx0XHRcdCAgICAgICAgfVxuXHRcdCAgICBcdFx0XHQgICAgfVxuXHRcdCAgICBcdFx0XHR9XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdHRoaXMuYWRkKCk7XG5cdFx0ICAgIFx0XHR9ZWxzZXtcblx0XHQgICAgXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor680XCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHQgICAgXHRcdH1cblx0XHQgICAgXHR9KS5jYXRjaChleD0+e1xuXHRcdCAgICBcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdCAgICBcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor680LjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHQgICAgXHR9KTtcblx0XHQgICAgfSxcblx0XHQgICAgRGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybihldmVudGlkLGRhdGFfYXR0cixidXR0b25fY2FsbGJhY2ssaW5kZXgsaWluZGV4KXtcblx0XHRcdFx0dmFyIGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0XHRcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxuXHRcdFx0XHQgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHQgICAgbWFzdGVyOiB7XG5cdFx0XHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLmNsc2lkLCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxuXHRcdFx0XHQgICAgICAgIC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcblx0XHRcdFx0ICAgIH1cblx0XHRcdFx0fTtcblx0XHRcdFx0dmFyIHJlcT1bXTtcblx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdGlmKGFyLlR5cGU9PSflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdGlmKGFyLlZhbHVlPT0n6K+3JykgYXIuVmFsdWU9Jyc7XG5cdFx0XHRcdCAgICAgICAgaWYoYXIuVHlwZT09J+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZT09J+W8leeUqOmhueebricpXG5cdFx0XHRcdCAgICAgICAgXHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsSUQgP2FyLlZhbElEIDonJyB9KTtcblx0XHRcdFx0ICAgICAgICBlbHNlIGlmKGFyLlR5cGU9PSfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWU/JzEnOicwJ30pO1xuXHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7IGF0dHI6IGFyLk5hbWUsIHZhbDogYXIuVmFsdWUgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdCAgICAgICAgaWYgKCFyZXEuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XG5cdFx0XHRcdCAgICAgICAgICAgIHJldHVybiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS5hdHRyID09IHMubmFtZVxuXHRcdFx0XHQgICAgICAgIH0pLmxlbmd0aCkge1xuXHRcdFx0XHQgICAgICAgICAgICBsZW5ndGggPSAxO1xuXHRcdFx0XHQgICAgICAgICAgICByZXEucHVzaCh7ICdhdHRyJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciwgJ3ZhbCc6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLnZhbHVlIH0pO1xuXHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0ICAgIH1cblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgZXh0aW5mbyA9IGVudmlyb21lbnQ7XG5cdFx0XHRcdGV4dGluZm8uZWRpdF9kbGcgPSB7XG5cdFx0XHRcdCAgICB0eXBlOiAnc21hbGwnLC8v5bCP56qX5Y+jXG5cdFx0XHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5jbHNpZCwvL+W9k+WJjeaVsOaNruexu2lkXG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGRhdGFfYXR0cikge1xuXHRcdFx0XHQgICAgZXh0aW5mby5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7Zcblx0XHRcdFx0ICAgICAgICBuYW1lOiBkYXRhX2F0dHIuTmFtZSwvL+Wtl+auteWxnuaAp1xuXHRcdFx0XHQgICAgICAgIHRleHQ6IGRhdGFfYXR0ci5EaXNwTmFtZSwvL+aYvuekuuaWh+acrFxuXHRcdFx0XHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4Rcblx0XHRcdFx0ICAgICAgICB0eXBlOiBkYXRhX2F0dHIuVHlwZSwvL+Wtl+auteexu+Wei1xuXHRcdFx0XHQgICAgICAgIHJlYWRvbmx5OiBkYXRhX2F0dHIuUmVhZE9ubHksLy/mmK/lkKblj6ror7tcblx0XHRcdFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xuXHRcdFx0XHQgICAgICAgIGJ1dHRvbl90b29sdGlwOiBkYXRhX2F0dHIuYnV0dG9uX3Rvb2x0aXAvL+W8leeUqOaMiemSrueahHRvb2x0aXBcblx0XHRcdFx0ICAgIH1cblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdFx0ZWR0eXBlOiAgXCIwXCIsIGV2ZW50aWQ6IGV2ZW50aWQsIHByb2plY3RpZDogJycscmNsc2lkOiAnJywgcm9iamlkOiAnJywgdXNlcmxvZ2luOiAnJywgXG5cdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsIG9iamlkOiAnJyxhdHRyOiBKU09OLnN0cmluZ2lmeShyZXEpLCBcblx0XHRcdFx0XHRleHRpbmZvOiBKU09OLnN0cmluZ2lmeShleHRpbmZvKSwgZ2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGU9PScwMDAwMCcpIHtcblx0XHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdFx0aWYgKGRhdGEgIT0gXCJcIikge1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0dmFyIGFjdGlvbnMgPSBkYXRhLmFjdGlvbjtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGFjdGlvbnMpO1xuXHRcdFx0XHRcdFx0aWYgKGFjdGlvbnMpIHtcblx0XHRcdFx0XHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdGlvbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdCAgICAgICAgdmFyIGFjdGlvbiA9IGFjdGlvbnNbaV07XG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciB2YWwgPSBhY3Rpb24udmFsdWU7XG5cdFx0XHRcdFx0XHQgICAgICAgIHZhciBlbnZpcm9tZW50ID0gSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCk7XG5cdFx0XHRcdFx0XHQgICAgICAgIFxuXHRcdFx0XHRcdFx0ICAgICAgICBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3BhbmVsJykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICB2YXIgZCA9IGRpYWxvZyh7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICB0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6Jyxcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgIGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXG5cdFx0XHRcdFx0XHQgICAgICAgICAgIH0pO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICBkLnNob3coKTtcblx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgICAgICBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fc2VsZWN0X3VzZXJkbGcnKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgc3R5bGUgPSB2YWwuc3R5bGU7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBzdHlsZSA9PSAndXNlcicgPyAn6YCJ5oup5Lq65ZGYJyA6IHN0eWxlID09ICdkZXBhcnRtZW50JyA/ICfpgInmi6npg6jpl6gnIDogc3R5bGUgPT0gJ3JvbGUnID8gJ+mAieaLqeinkuiJsicgOiAnJ1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgdmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBwYXJhbT17XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluZGV4OiBpbmRleCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWluZGV4OmlpbmRleCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnV0dG9uX2NhbGxiYWNrOmJ1dHRvbl9jYWxsYmFjayxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxOnJlcSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0YV9hdHRyOmRhdGFfYXR0clxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHR1cmw6Jy4uL3NlbHBzbi9pbmRleD9tdWxpdD1mYWxzZSZwYXJhbT0nK0pTT04uc3RyaW5naWZ5KHBhcmFtKSxcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0ZXZlbnRzOntcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdFx0Ly8gY29uc29sZS5sb2cocGFyYW0pO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdFx0Y29uc29sZS5sb2coZGF0YSk7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdFx0XHR2YXIgY2FsbGJhY2tfZXZlbnRpZCA9IHBhcmFtLmJ1dHRvbl9jYWxsYmFjay50cmltKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBldmVudGlkOiBjYWxsYmFja19ldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgcHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICByY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgdXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgYXR0cjogcGFyYW0ucmVxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGlucHV0cGFyYW1ldGVyOiBkYXRhXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgcGFyYW0uZGF0YV9hdHRyKTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIFx0XHR9XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBcdH1cblx0XHRcdFx0XHRcdCAgICAgICAgICAgIH0pO1x0XG5cdFx0XHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX2RhdGFfcXVlcnlfZGxnJykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXG5cdFx0XHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX2NvbW1vbl9kbGcnKSB7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgdmFsdWUgPSBhY3Rpb24udmFsdWU7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgZCA9IGRpYWxvZyh7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgdGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgY29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIH0pO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZC5zaG93KCk7XG5cdFx0XHRcdFx0XHQgICAgICAgIH1cblx0XHRcdFx0XHRcdCAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3Byb2plY3RfcXVlcnlfZGxnJykge1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlKTtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIC8vY29uc29sZS5sb2coYWN0aW9uLnZhbHVlLm11bGl0X3NlbGVjdCk7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICB2YXIgcHJpUmVsID0gJy0xJztcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICflhajpg6jnm7jlhbMnKVxuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgIHByaVJlbCA9ICcwJztcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkei0n+i0o+eahOmhueebricpXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzEnO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5Yib5bu655qEJylcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBwcmlSZWwgPSAnMic7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlj4LkuI7nmoQnIHx8IGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWPguWKoOeahCcpXG5cdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgcHJpUmVsID0gJzMnO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5YWz5rOo55qEJylcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBwcmlSZWwgPSAnNCc7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHkuIvlsZ7nmoTpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnNSc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBwYXJhbV89e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpbmRleDogaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlpbmRleDppaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJ1dHRvbl9jYWxsYmFjazpidXR0b25fY2FsbGJhY2ssXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlcTpyZXFcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dXJsOicuLi9zZWxQcmovaW5kZXg/cmVsYXRpb249JytwcmlSZWwrJyZwYXJhbT0nK0pTT04uc3RyaW5naWZ5KHBhcmFtXyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50czp7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QWRkUGVyKGRhdGEscGFyYW0peyBcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWx1ZT1kYXRhWzBdLk5hbWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsSUQ9ZGF0YVswXS5JRCsnOycrZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgXHRcdFx0dmFyIGNhbGxiYWNrX2V2ZW50aWQgPSBwYXJhbS5idXR0b25fY2FsbGJhY2sudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhbGxiYWNrX2V2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgZXZlbnRpZDogY2FsbGJhY2tfZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgZWR0eXBlOiBcIjJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgcHJvamVjdGlkOiBkYXRhWzBdLklELFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICByY2xzaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHJvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgICAgdXNlcmxvZ2luOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICBjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uY2xzaWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICBhdHRyOiBwYXJhbS5yZXEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdCAgICAgICAgfSBlbHNlIHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgIHZhciBkID0gZGlhbG9nKHtcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICB0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6Jyxcblx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICBjb250ZW50OiBhY3Rpb24uYWN0aW9uX3R5cGUgKyAn5q2kYWN0aW9u5bCa5pyq5aSE55CG77yBJ1xuXHRcdFx0XHRcdFx0ICAgICAgICAgICAgfSk7XG5cdFx0XHRcdFx0XHQgICAgICAgICAgICBkLnNob3coKTtcblx0XHRcdFx0XHRcdCAgICAgICAgfVxuXHRcdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekujUuMlwiLGNvbnRlbnQ6ICfosIPnlKggYmVmb3JlX2NsaWNrX2J1dHRvbiDohJrmnKzov5Tlm57nqbrvvIxldmVudF9pZCcgKyBldmVudGlkLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor681XCIsY29udGVudDpzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLmNhdGNoKGV4PT57XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6NS4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XG5cdFx0XHRcdH0pO1xuXHRcdCAgICB9LFxuXHRcdCAgICBcblx0XHRcdFxuXHRcdH1cblx0fVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///49\n"); |
| | | |
| | | /***/ }), |
| | | /* 50 */ |