From 3dd7c408b5a8066d2726c05aaddd8c972367d0e0 Mon Sep 17 00:00:00 2001
From: jt <jt@activesoft.com.cn>
Date: 星期日, 08 十月 2023 15:24:11 +0800
Subject: [PATCH] test

---
 unpackage/dist/dev/app-plus/app-service.js |   75 ++++++++++++++++++++-----------------
 1 files changed, 41 insertions(+), 34 deletions(-)

diff --git a/unpackage/dist/dev/app-plus/app-service.js b/unpackage/dist/dev/app-plus/app-service.js
index dbf3354..69acd2a 100644
--- a/unpackage/dist/dev/app-plus/app-service.js
+++ b/unpackage/dist/dev/app-plus/app-service.js
@@ -17868,6 +17868,13 @@
             [_vm._v(_vm._$s(281, "t0-0", _vm._s(_vm.title)))]
           )
         : _vm._e(),
+      _vm._$s(282, "i", _vm.param.After_Trigger_Event)
+        ? _c("button", {
+            staticClass: _vm._$s(282, "sc", "btn_trigger"),
+            attrs: { _i: 282 },
+            on: { click: _vm.trigger },
+          })
+        : _vm._e(),
       _c(
         "view",
         [
@@ -17875,28 +17882,28 @@
             "uni-popup",
             {
               ref: "popup",
-              staticClass: _vm._$s(283, "sc", "view-popup"),
-              attrs: { "background-color": "#fff", _i: 283 },
+              staticClass: _vm._$s(284, "sc", "view-popup"),
+              attrs: { "background-color": "#fff", _i: 284 },
               on: { change: _vm.popupChange },
             },
             [
               _c(
                 "view",
                 {
-                  staticClass: _vm._$s(284, "sc", "popup-header"),
-                  attrs: { _i: 284 },
+                  staticClass: _vm._$s(285, "sc", "popup-header"),
+                  attrs: { _i: 285 },
                 },
-                [_vm._v(_vm._$s(284, "t0-0", _vm._s(_vm.check_list.title)))]
+                [_vm._v(_vm._$s(285, "t0-0", _vm._s(_vm.check_list.title)))]
               ),
               _c(
                 "view",
                 {
-                  staticClass: _vm._$s(285, "sc", "popup-content"),
-                  class: _vm._$s(285, "c", {
+                  staticClass: _vm._$s(286, "sc", "popup-content"),
+                  class: _vm._$s(286, "c", {
                     "popup-height":
                       _vm.popupType === "left" || _vm.popupType === "right",
                   }),
-                  style: _vm._$s(285, "s", {
+                  style: _vm._$s(286, "s", {
                     width: _vm.check_list.width
                       ? _vm.check_list.width + "px"
                       : "200px",
@@ -17904,61 +17911,61 @@
                       ? _vm.check_list.height + "px"
                       : "88%",
                   }),
-                  attrs: { _i: 285 },
+                  attrs: { _i: 286 },
                 },
                 [
                   _c(
                     "view",
                     {
-                      staticClass: _vm._$s(286, "sc", "popup-cont"),
-                      style: _vm._$s(286, "s", {
+                      staticClass: _vm._$s(287, "sc", "popup-cont"),
+                      style: _vm._$s(287, "s", {
                         height: _vm.check_list.height
                           ? _vm.check_list.height - 45 + "px"
                           : "415px",
                       }),
-                      attrs: { _i: 286 },
+                      attrs: { _i: 287 },
                     },
                     _vm._l(
-                      _vm._$s(287, "f", { forItems: _vm.check_list.items }),
+                      _vm._$s(288, "f", { forItems: _vm.check_list.items }),
                       function (item, index, $25, $35) {
                         return _c(
                           "view",
                           {
-                            key: _vm._$s(287, "f", {
+                            key: _vm._$s(288, "f", {
                               forIndex: $25,
-                              key: 287 + "-" + $35,
+                              key: 288 + "-" + $35,
                             }),
                             staticClass: _vm._$s(
-                              "287-" + $35,
+                              "288-" + $35,
                               "sc",
                               "view_popup_CheckList"
                             ),
-                            attrs: { _i: "287-" + $35 },
+                            attrs: { _i: "288-" + $35 },
                           },
                           [
                             _c(
                               "checkbox-group",
                               {
                                 staticClass: _vm._$s(
-                                  "288-" + $35,
+                                  "289-" + $35,
                                   "sc",
                                   "check_list"
                                 ),
-                                style: _vm._$s("288-" + $35, "s", {
+                                style: _vm._$s("289-" + $35, "s", {
                                   "margin-left": "10rpx",
                                 }),
                                 attrs: {
                                   "data-ischeck": _vm._$s(
-                                    "288-" + $35,
+                                    "289-" + $35,
                                     "a-data-ischeck",
                                     item.check
                                   ),
                                   "data-index": _vm._$s(
-                                    "288-" + $35,
+                                    "289-" + $35,
                                     "a-data-index",
                                     index
                                   ),
-                                  _i: "288-" + $35,
+                                  _i: "289-" + $35,
                                 },
                                 on: { change: _vm.checkChange },
                               },
@@ -17967,22 +17974,22 @@
                                   _c("checkbox", {
                                     attrs: {
                                       value: _vm._$s(
-                                        "290-" + $35,
+                                        "291-" + $35,
                                         "a-value",
                                         item.check
                                       ),
                                       checked: _vm._$s(
-                                        "290-" + $35,
+                                        "291-" + $35,
                                         "a-checked",
                                         item.check
                                       ),
-                                      _i: "290-" + $35,
+                                      _i: "291-" + $35,
                                     },
                                   }),
                                   _c("text", [
                                     _vm._v(
                                       _vm._$s(
-                                        "291-" + $35,
+                                        "292-" + $35,
                                         "t0-0",
                                         _vm._s(item.name)
                                       )
@@ -18000,18 +18007,18 @@
                   _c(
                     "view",
                     {
-                      staticClass: _vm._$s(292, "sc", "popup-footer"),
-                      attrs: { _i: 292 },
+                      staticClass: _vm._$s(293, "sc", "popup-footer"),
+                      attrs: { _i: 293 },
                     },
                     [
                       _c("button", {
-                        staticClass: _vm._$s(293, "sc", "btn_popup_add"),
-                        attrs: { _i: 293 },
+                        staticClass: _vm._$s(294, "sc", "btn_popup_add"),
+                        attrs: { _i: 294 },
                         on: { click: _vm.popup_sava },
                       }),
                       _c("button", {
-                        staticClass: _vm._$s(294, "sc", "btn_popup_cancel"),
-                        attrs: { _i: 294 },
+                        staticClass: _vm._$s(295, "sc", "btn_popup_cancel"),
+                        attrs: { _i: 295 },
                         on: { click: _vm.popup_cancel },
                       }),
                     ]
@@ -18053,7 +18060,7 @@
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 57));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 59));\nvar _pickerAddress = _interopRequireDefault(__webpack_require__(/*! ../../js/pickerAddress/pickerAddress.vue */ 80));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  components: {\n    pickerAddress: _pickerAddress.default\n  },\n  data: function data() {\n    return {\n      title: '鏂板',\n      param: {},\n      classAttrList: [],\n      classGridStyle: [],\n      edit_inital_event: \"\",\n      //寮圭獥鍒濆鍖栦簨浠禝D\n      edit_ok_event: \"\",\n      //寮圭獥鐐瑰嚮OK 瑙﹀彂浜嬩欢ID\n      edit_select_compose_event: \"\",\n      //閫夋嫨缁勬垚瀵硅薄鏃惰皟鐢╘n      edit_compose_cls_id: \"\",\n      global_attr: [],\n      refdatastore: [],\n      //寮曠敤鏁版嵁瀛樺偍鍖�/ {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n      scanCodeVal: \"\",\n      subClassAttrList: [],\n      subPanelList: [],\n      subClassGridStyle: [],\n      popupType: \"center\",\n      check_list: {}\n    };\n  },\n  onLoad: function onLoad(options) {\n    // console.log(options);\n    uni.setNavigationBarTitle({\n      title: options.titlename\n    }); //璁剧疆椤堕儴鏍囬 \n    var param = JSON.parse(options.param);\n    this.$data.title = param.Add_BtnName ? param.Add_BtnName : options.titlename; //璁剧疆鎸夐挳鏂囧瓧\n    __f__(\"log\", param, \" at pages/modal/ms_classAttr.vue:1012\");\n    if (!param.Master_Cls.View_Style) {\n      uni.showModal({\n        title: \"鎻愮ず\",\n        content: \"璇ュ姛鑳界偣鏈厤缃晫闈㈢獥鍙o紝璇烽噸鏂伴厤缃紒\",\n        showCancel: false,\n        confirmText: \"鍙栨秷\"\n      });\n      return;\n    }\n    if (!param.Master_Cls.View_Style.Name) {\n      uni.showModal({\n        title: \"鎻愮ず\",\n        content: \"璇ュ姛鑳界偣鏈厤缃獥鍙f牱寮忥紝璇烽噸鏂伴厤缃紒\",\n        showCancel: false,\n        confirmText: \"鍙栨秷\"\n      });\n      return;\n    }\n    this.$data.param = param;\n    // var edit_dlg = {\n    //     Model: param.EditDlgMode,\n    //     Name: param.Master_Cls.View_Style.Name\n    // }\n    //涓绘暟鎹被鑾峰彇\n    var dataInfo = {\n      class_id: param.Master_Cls.ID\n    };\n    var $this = this;\n    $this.$store.state.thisareaFuncID = param.Master_Cls.ID;\n    // console.log($this.$store.getters.getclassAttrList);\n    if ($this.$store.getters.getclassAttrList) {\n      $this.$data.classAttrList = $this.$store.getters.getclassAttrList.data;\n      $this.classGridStyleInfo(param.Master_Cls.ID, $this.$data.param.Master_Cls.View_Style.Name, 'Mast');\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          $this.classGridStyleInfo(param.Master_Cls.ID, $this.$data.param.Master_Cls.View_Style.Name, 'Mast');\n        } else {\n          uni.showModal({\n            title: \"閿欒1\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒1.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    }\n\n    //浠庢暟鎹被鑾峰彇\n    var subdataInfo = {\n      class_id: param.Sub_Cls.ID\n    };\n    $this.$store.state.thisareaFuncSubID = param.Sub_Cls.ID;\n    if ($this.$store.getters.getSubClassAttrList) {\n      $this.$data.subClassAttrList = $this.$store.getters.getSubClassAttrList.data;\n      $this.classGridStyleInfo(param.Sub_Cls.ID, $this.$data.param.Sub_Cls.View_Style.Name, 'Sub');\n    } else {\n      $this.$store.dispatch('subClassAttrList', subdataInfo).then(function (success) {\n        // console.log(success);\n        if (success.code == '00000') {\n          $this.$data.subClassAttrList = success.data;\n          $this.classGridStyleInfo(param.Sub_Cls.ID, $this.$data.param.Sub_Cls.View_Style.Name, 'Sub');\n        } else {\n          uni.showModal({\n            title: \"閿欒1_1\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒1_1.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    }\n  },\n  methods: {\n    scan_classAttr_extButton: function scan_classAttr_extButton(e) {\n      //閫夋嫨鎸夐挳鍓峔n      var $this = this;\n      var Before_Select_Event = $this.$data.param.Scan_Code.Before_Select_Event;\n      if (!Before_Select_Event) {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"閫夋嫨鍓嶄簨浠朵负绌猴紒\",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n        return;\n      }\n      var mast_attr = [];\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 == '璇烽�鎷�) {\n            uni.showModal({\n              title: \"鎻愮ず\",\n              content: ar.DispName + \"鏈�鎷╂暟鎹紒\",\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n            return;\n          }\n          if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_attr.push({\n            attr: ar.Name,\n            value: ar.ValID ? ar.ValID : ''\n          });else if (ar.Type == '甯冨皵鍊�) mast_attr.push({\n            attr: ar.Name,\n            value: ar.Value ? '1' : '0'\n          });else mast_attr.push({\n            attr: ar.Name,\n            value: ar.Value ? ar.Value : ''\n          });\n        }\n      }\n      var objects = [];\n      var subPanelList = $this.$data.subPanelList;\n      for (var s = 0; s < subPanelList.length; s++) {\n        var sub_req = [];\n        for (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n          var attr = subPanelList[s].subClassAttr[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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n            if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') sub_req.push({\n              attr: ar.Name,\n              value: ar.ValID ? ar.ValID : ''\n            });else if (ar.Type == '甯冨皵鍊�) sub_req.push({\n              attr: ar.Name,\n              value: ar.Value ? '1' : '0'\n            });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n              if (ar.select == true) {\n                //鍒ゆ柇涓嬫媺鏄惁澶氶�\n                var valStr = \"\";\n                for (var v in ar.Value) {\n                  if (valStr) valStr += \";\";\n                  valStr += ar.Value[v];\n                }\n                sub_req.push({\n                  attr: ar.Name,\n                  value: valStr\n                });\n              } else sub_req.push({\n                attr: ar.Name,\n                value: ar.Value\n              });\n            } else sub_req.push({\n              attr: ar.Name,\n              value: ar.Value ? ar.Value : ''\n            });\n            if (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({\n                title: \"鎻愮ず\",\n                content: ar.DispName + '涓嶈兘涓虹┖锛�,\n                showCancel: false,\n                confirmText: \"鍙栨秷\"\n              });\n              return;\n            }\n          }\n        }\n        objects.push({\n          obj_id: subPanelList[s].scanCodeVal,\n          obj_attrs: sub_req\n        });\n      }\n      var enviroment = {\n        'function': '3000',\n        // 鍔熻兘鐐圭紪鍙穃n        cls_id: 'MBOX',\n        //this.$data.param.Sub_Cls.ID,     // 鍔熻兘鐐逛粠鏁版嵁绫绘爣璇哱n        'button': 'top',\n        // top/bottom\n        button_name: '鏂板',\n        edit_dlg: {\n          type: 'small',\n          //灏忕獥鍙n          class_id: 'MBOX' //this.$data.param.Sub_Cls.ID,//褰撳墠鏁版嵁绫籭d\n        },\n\n        master_cls: {\n          cls_name: 'MBOX',\n          //$this.$data.param.Master_Cls.Name,\n          obj_attrs: req\n        },\n        sub_cls: {\n          cls_name: 'MBOX',\n          //$this.$data.param.Sub_Cls.Name,\n          objects: objects\n        }\n      };\n      var req = [];\n      // var subPanelList = $this.$data.subPanelList;\n      // for (var s = 0; s < subPanelList.length; s++) {\n      // \tvar json = {};\n      // \tfor (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n      // \t\tvar attr = subPanelList[s].subClassAttr[i].Attr;\n      // \t\tfor (var j = 0; j < attr.length; j++) {\n      // \t\t\tvar ar = attr[j];\n      // \t\t\tjson[ar.Name] = ar.Value;\n      // \t\t}\n      // \t}\n      // \treq.push(json);\n      // }\n\n      var info = {\n        eventid: Before_Select_Event.ID,\n        edtype: \"7\",\n        //\"0\",\n        projectid: '',\n        rclsid: '',\n        robjid: '',\n        userlogin: '',\n        clsid: 'MBOX',\n        //this.$data.param.Sub_Cls.ID,\n        objid: \"\",\n        attr: [],\n        global_attr: req,\n        mast_attr: mast_attr,\n        inputParamter: mast_attr,\n        enviroment: enviroment\n      };\n      // console.log(info);\n      this.scan_DataObjRunCustomEvent(info, \"\");\n    },\n    popupChange: function popupChange(e) {\n      __f__(\"log\", '褰撳墠妯″紡锛� + e.type + ',鐘舵�锛� + e.show, \" at pages/modal/ms_classAttr.vue:1271\");\n    },\n    checkChange: function checkChange(e) {\n      //寮规check閫夋嫨\n      // console.log(e.target.dataset);\n      var index = e.target.dataset.index;\n      var ischeck = e.target.dataset.ischeck;\n      var data = this.$data.check_list.items;\n      // this.$data.check_list.items=[];\n      if (this.$data.check_list.multiple_choice == \"0\") {\n        //鍒ゆ柇鏃跺崟閫夎繕鏄閫塡n        for (var i in data) {\n          data[i].check = false;\n        }\n      }\n      data[index].check = ischeck ? false : true;\n      this.$data.check_list.items = data;\n    },\n    popup_cancel: function popup_cancel(e) {\n      //寮规鍙栨秷\n      this.$refs.popup.close();\n    },\n    popup_sava: function popup_sava(e) {\n      //寮规纭畾 閫夋嫨鎸夐挳鍚嶾n      var $this = this;\n      var After_Select_Event = $this.$data.param.Scan_Code.After_Select_Event;\n      if (!After_Select_Event) {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"閫夋嫨鍚庝簨浠朵负绌猴紒\",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n        return;\n      }\n      var items = $this.$data.check_list.items;\n      var data = [];\n      var name = \"\";\n      for (var i = 0; i < items.length; i++) {\n        if (items[i].check == true) {\n          if (name) name += ';';\n          name += items[i].name;\n          data.push({\n            id: items[i].id,\n            name: items[i].name\n          });\n        }\n      }\n      if (data.length == 0) {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"鏈�鎷╂暟鎹紒\",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n        return;\n      }\n      var mast_attr = [];\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 == '璇烽�鎷�) {\n            uni.showModal({\n              title: \"鎻愮ず\",\n              content: ar.DispName + \"鏈�鎷╂暟鎹紒\",\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n            return;\n          }\n          if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_attr.push({\n            attr: ar.Name,\n            value: ar.ValID ? ar.ValID : ''\n          });else if (ar.Type == '甯冨皵鍊�) mast_attr.push({\n            attr: ar.Name,\n            value: ar.Value ? '1' : '0'\n          });else mast_attr.push({\n            attr: ar.Name,\n            value: ar.Value ? ar.Value : ''\n          });\n        }\n      }\n      $this.$data.scanCodeVal = name;\n      var info = {\n        eventid: After_Select_Event.ID,\n        edtype: \"7\",\n        projectid: '',\n        rclsid: '',\n        robjid: '',\n        userlogin: '',\n        clsid: 'MBOX',\n        objid: \"\",\n        attr: [{\n          attr: 'mast_input_3037',\n          value: name\n        }],\n        global_attr: mast_attr,\n        inputParamter: data\n      };\n      // console.log(info);\n      this.scan_DataObjRunCustomEvent(info, \"\");\n      this.$refs.popup.close();\n    },\n    cancel: function cancel(e) {\n      uni.navigateBack({\n        delta: 1 //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\n      });\n    },\n    panel_del: function panel_del(index) {\n      var $this = this;\n      if (this.$data.subPanelList[index].scanCodeVal == this.$data.scanCodeVal) {\n        this.$data.scanCodeVal = '';\n      }\n      if (!this.$data.subPanelList[index].ObjID) this.$data.subPanelList.splice(index, 1);else {\n        var dataInfo = {\n          clsId: this.$data.param.Sub_Cls.ID,\n          objId: this.$data.subPanelList[index].ObjID\n        };\n        __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1373\");\n        // return;\n        uni.showLoading({\n          title: \"鍔犺浇涓�..\"\n        });\n        this.$store.dispatch('DelObj', dataInfo).then(function (success) {\n          __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1379\");\n          uni.hideLoading();\n          if (success.code == '00000') {\n            $this.$data.subPanelList.splice(index, 1);\n            uni.showModal({\n              title: \"鎻愮ず\",\n              content: \"鍒犻櫎鎴愬姛锛乗",\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n          } else {\n            uni.showModal({\n              title: \"閿欒9\",\n              content: success.msg,\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n          }\n        }).catch(function (ex) {\n          __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:1398\");\n          uni.hideLoading();\n          uni.showModal({\n            title: \"鎻愮ず9.1\",\n            content: ex.errMsg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        });\n      }\n    },\n    classGridStyleInfo: function classGridStyleInfo(clsid, styleName, clsType) {\n      var _this = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n        var $this, gridstyleInfo;\n        return _regenerator.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                $this = _this;\n                gridstyleInfo = {\n                  class_id: clsid,\n                  name: styleName,\n                  type: '2'\n                }; // console.log($this.$store.getters.getclassGridStyleInfo);\n                //鑾峰彇涓绘暟鎹被鐣岄潰鏍峰紡\n                if (clsType == 'Mast') {\n                  $this.$store.state.thisEditName = styleName;\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                        $this.class_attr_init();\n                      } else {\n                        uni.showModal({\n                          title: \"閿欒1.2\",\n                          content: success.msg,\n                          showCancel: false,\n                          confirmText: \"鍙栨秷\"\n                        });\n                      }\n                    }).catch(function (ex) {\n                      __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:1441\");\n                      uni.showModal({\n                        title: \"閿欒1.3\",\n                        content: ex.errMsg,\n                        showCancel: false,\n                        confirmText: \"鍙栨秷\"\n                      });\n                    });\n                  }\n                } else if (clsType == 'Sub') {\n                  //鑾峰彇浠庢暟鎹被鐣岄潰鏍峰紡\n                  $this.$store.state.thisEditSubName = styleName;\n                  if ($this.$store.getters.getSubClassGridStyleInfo) {\n                    $this.$data.subClassGridStyle = $this.$store.getters.getSubClassGridStyleInfo.data;\n                    $this.subClass_attr_init();\n                  } else {\n                    //console.log(gridstyleInfo);\n                    $this.$store.dispatch('subClassGridStyleInfo', 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.subClassGridStyle = success.data;\n                        $this.subClass_attr_init();\n                      } else {\n                        uni.showModal({\n                          title: \"閿欒1.2\",\n                          content: success.msg,\n                          showCancel: false,\n                          confirmText: \"鍙栨秷\"\n                        });\n                      }\n                    }).catch(function (ex) {\n                      __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:1473\");\n                      uni.showModal({\n                        title: \"閿欒1.3\",\n                        content: ex.errMsg,\n                        showCancel: false,\n                        confirmText: \"鍙栨秷\"\n                      });\n                    });\n                  }\n                }\n              case 3:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }))();\n    },\n    ontap: function ontap(e) {\n      var _this2 = this;\n      //鎵爜鍔熻兘\n      //console.log(e.target)\n      getApp().onScan(function (result) {\n        //console.log(result.decodedata);\n        var isVal = _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n        // if(!isVal){\n        // \tthis.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=result.decodedata;\n        // \tvar isVald =this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n        // \treturn;\n        // }\n        //涓绘暟鎹被鎵爜鏌ヨ鏁版嵁\n        if (isVal != result.decodedata) {\n          _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n          uni.hideKeyboard();\n          //瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈琝n          var eventid = _this2.$data.param.Scan_Code.Input_Change_Event.ID;\n          if (eventid) {\n            var req = [];\n            var attrlist = _this2.$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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                  attr: ar.Name,\n                  value: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? '1' : '0'\n                });else req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? ar.Value : ''\n                });\n              }\n            }\n            var info = {\n              eventid: eventid,\n              edtype: \"7\",\n              //\"0\",\n              projectid: '',\n              rclsid: '',\n              robjid: '',\n              userlogin: '',\n              clsid: 'MBOX',\n              //this.$data.param.Sub_Cls.ID,\n              objid: \"\",\n              attr: req,\n              mast_attr: [],\n              inputParamter: [{\n                attr: 'mast_input_3037',\n                value: result.decodedata\n              }]\n            };\n            _this2.scan_DataObjRunCustomEvent(info, \"\");\n          }\n        }\n      });\n    },\n    subontap: function subontap(e) {\n      var _this3 = this;\n      //鎵爜鍔熻兘\n      //console.log(e.target)\n      getApp().onScan(function (result) {\n        //console.log(result.decodedata);\n        var isVal = _this3.$data.subClassAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n        //涓绘暟鎹被鎵爜鏌ヨ鏁版嵁\n        if (isVal != result.decodedata) {\n          _this3.$data.subClassAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n          uni.hideKeyboard();\n          //瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈琝n          var eventid = _this3.$data.param.Scan_Code.Input_Change_Event.ID;\n          if (eventid) {\n            var req = [];\n            var attrlist = _this3.$data.subClassAttrList; //涓绘暟鎹被灞炴�\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                  attr: ar.Name,\n                  value: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? '1' : '0'\n                });else req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? ar.Value : ''\n                });\n              }\n            }\n            var info = {\n              eventid: eventid,\n              edtype: \"7\",\n              //\"0\",\n              projectid: '',\n              rclsid: '',\n              robjid: '',\n              userlogin: '',\n              clsid: 'MBOX',\n              //this.$data.param.Sub_Cls.ID,\n              objid: \"\",\n              attr: req,\n              mast_attr: [],\n              inputParamter: [{\n                attr: 'mast_input_3037',\n                value: result.decodedata\n              }]\n            };\n            _this3.scan_DataObjRunCustomEvent(info, \"\");\n          }\n        }\n      });\n    },\n    scan_ontap: function scan_ontap(e) {\n      var _this4 = this;\n      //鎵爜鍖烘壂鐮佸姛鑳絓n      //console.log(e.target)\n      getApp().onScan(function (result) {\n        __f__(\"log\", result.decodedata, \" at pages/modal/ms_classAttr.vue:1614\");\n        var isflag = true;\n        for (var i in _this4.$data.subPanelList) {\n          if (_this4.$data.subPanelList[i].scanCodeVal == result.decodedata) isflag = false;\n        }\n        //瀛愭暟鎹被鎵爜鏌ヨ鏁版嵁\n        if (isflag) {\n          uni.hideKeyboard();\n          _this4.$data.scanCodeVal = result.decodedata;\n          var eventid = _this4.$data.param.Scan_Code.Input_Change_Event.ID;\n          if (eventid) {\n            var mast_req = [];\n            //涓绘暟鎹被灞炴�\n            var classattrlist = _this4.$data.classAttrList;\n            for (var i = 0; i < classattrlist.length; i++) {\n              var attr = classattrlist[i].Attr;\n              for (var j = 0; j < attr.length; j++) {\n                var ar = attr[j];\n                if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_req.push({\n                  attr: ar.Name,\n                  value: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) mast_req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? '1' : '0'\n                });else mast_req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? ar.Value : ''\n                });\n              }\n            }\n            var req = [];\n            //瀛愭暟鎹被灞炴�\n            var attrlist = _this4.$data.subClassAttrList;\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                  attr: ar.Name,\n                  value: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? '1' : '0'\n                });else req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? ar.Value : ''\n                });\n              }\n            }\n            var info = {\n              eventid: eventid,\n              edtype: '7',\n              //\"0\",\n              projectid: '',\n              rclsid: '',\n              robjid: '',\n              userlogin: '',\n              clsid: 'MBOX',\n              //this.$data.param.Sub_Cls.ID,\n              objid: \"\",\n              attr: req,\n              mast_attr: mast_req,\n              inputParamter: [{\n                attr: 'input_3037',\n                value: _this4.$data.scanCodeVal\n              }]\n            };\n            _this4.scan_DataObjRunCustomEvent(info, \"\");\n          }\n        }\n      });\n    },\n    scan_onevent: function scan_onevent(e) {\n      // console.log(e.target);\n      if (e.target.value) {\n        var isflag = true;\n        for (var i in this.$data.subPanelList) {\n          if (this.$data.subPanelList[i].scanCodeVal == e.target.value) isflag = false;\n        }\n        //瀛愭暟鎹被鎵爜鏌ヨ鏁版嵁\n        if (isflag) {\n          uni.hideKeyboard();\n          this.$data.scanCodeVal = e.target.value;\n          var eventid = this.$data.param.Scan_Code.Input_Change_Event.ID;\n          if (eventid) {\n            var mast_req = [];\n            //涓绘暟鎹被灞炴�\n            var classattrlist = this.$data.classAttrList;\n            for (var i = 0; i < classattrlist.length; i++) {\n              var attr = classattrlist[i].Attr;\n              for (var j = 0; j < attr.length; j++) {\n                var ar = attr[j];\n                if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_req.push({\n                  attr: ar.Name,\n                  value: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) mast_req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? '1' : '0'\n                });else mast_req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? ar.Value : ''\n                });\n              }\n            }\n            var req = [];\n            //瀛愭暟鎹被灞炴�\n            var attrlist = this.$data.subClassAttrList;\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                  attr: ar.Name,\n                  value: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? '1' : '0'\n                });else req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? ar.Value : ''\n                });\n              }\n            }\n            var info = {\n              eventid: eventid,\n              edtype: '7',\n              //\"0\",\n              projectid: '',\n              rclsid: '',\n              robjid: '',\n              userlogin: '',\n              clsid: 'MBOX',\n              //this.$data.param.Sub_Cls.ID,\n              objid: \"\",\n              attr: req,\n              mast_attr: mast_req,\n              inputParamter: [{\n                attr: 'input_3037',\n                value: this.$data.scanCodeVal\n              }]\n            };\n            this.scan_DataObjRunCustomEvent(info, \"\");\n          }\n        }\n      }\n    },\n    onarrow: function onarrow(index, open) {\n      // console.log(index+'--'+open);\n      var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Open;\n      if (!data_attr) {\n        this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = open == true ? false : true;\n        return;\n      }\n      this.$data.classAttrList[e.target.dataset['iiindex']].subClassAttr[index].Open = open == true ? false : true;\n    },\n    ondateTime: function ondateTime(e) {\n      //console.log(e.target)\n      var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n      if (!data_attr) {\n        this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n        return;\n      }\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/ms_classAttr.vue:1812\");\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/ms_classAttr.vue:1816\");\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/ms_classAttr.vue:1820\");\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                attr: ar.Name,\n                val: ar.ValID ? ar.ValID : ''\n              });else if (ar.Type == '甯冨皵鍊�) req.push({\n                attr: ar.Name,\n                val: ar.Value ? '1' : '0'\n              });else req.push({\n                attr: ar.Name,\n                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.Master_Cls.ID,\n            objid: \"\",\n            attr: req\n          };\n          this.DataObjRunCustomEvent(info);\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) {\n        //涓虹┖鏃讹紝娓呯┖灞炴�value\n        var index,\n          iindex,\n          dindex = 0;\n        for (var i in this.$data.classAttrList) {\n          for (var j in this.$data.classAttrList[i].Attr) {\n            if (delvalue[0].attr == this.$data.classAttrList[i].Attr[j].Name) {\n              this.$data.classAttrList[i].Attr[j].Value = \"\";\n            }\n          }\n        }\n      }\n      for (var v in item) {\n        var index,\n          iindex,\n          dindex = 0;\n        for (var i in this.$data.classAttrList) {\n          for (var j in this.$data.classAttrList[i].Attr) {\n            if (item[v].attr == this.$data.classAttrList[i].Attr[j].Name) {\n              index = i;\n              iindex = j;\n            }\n          }\n        }\n        var itemvalue = item[v];\n        var data_attr = this.$data.classAttrList[index].Attr[iindex];\n        __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:1895\");\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/ms_classAttr.vue:1898\");\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                  attr: ar.Name,\n                  val: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) req.push({\n                  attr: ar.Name,\n                  val: ar.Value ? '1' : '0'\n                });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') req.push({\n                  attr: ar.Name,\n                  val: itemvalue.Name\n                });else req.push({\n                  attr: ar.Name,\n                  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.Master_Cls.ID,\n              objid: \"\",\n              attr: req\n            };\n            this.DataObjRunCustomEvent(info);\n          }\n        }\n      }\n    },\n    sub_onchange: function sub_onchange(e) {\n      __f__(\"log\", e.target, \" at pages/modal/ms_classAttr.vue:1951\");\n      var value = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n      var data_attr = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n      __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:1956\");\n      if (value.Name != data_attr.Value) {\n        this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n        __f__(\"log\", this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/ms_classAttr.vue:1960\");\n        var eventid = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[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.subPanelList[e.target.dataset['iiindex']].subClassAttr;\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                attr: ar.Name,\n                val: ar.ValID ? ar.ValID : ''\n              });else if (ar.Type == '甯冨皵鍊�) req.push({\n                attr: ar.Name,\n                val: ar.Value ? '1' : '0'\n              });else req.push({\n                attr: ar.Name,\n                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.Sub_Cls.ID,\n            objid: \"\",\n            attr: req\n          };\n          this.DataObjRunCustomEvent(info);\n        }\n      }\n    },\n    sub_onchange2: function sub_onchange2(item, value, delvalue) {\n      // console.log(item);\n      // console.log(value);\n      // console.log(delvalue);\n      var subClassAttr = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr;\n      if (item.length == 0) {\n        //涓虹┖鏃讹紝娓呯┖灞炴�value\n        var index,\n          iindex,\n          dindex = 0;\n        for (var i in subClassAttr) {\n          for (var j in subClassAttr[i].Attr) {\n            for (var d in subClassAttr[i].Attr[j].dictitem) {\n              if (delvalue[0].Name == subClassAttr[i].Attr[j].dictitem[d].Name) {\n                subClassAttr[i].Attr[j].Value = \"\";\n              }\n            }\n          }\n        }\n      }\n      for (var v in item) {\n        var index,\n          iindex,\n          dindex = 0;\n        for (var i in subClassAttr) {\n          for (var j in subClassAttr[i].Attr) {\n            for (var d in subClassAttr[i].Attr[j].dictitem) {\n              if (item[v].Name == subClassAttr[i].Attr[j].dictitem[d].Name) {\n                index = i;\n                iindex = j;\n                dindex = d;\n              }\n            }\n          }\n        }\n        var itemvalue = item[v];\n        var data_attr = subClassAttr[index].Attr[iindex];\n        __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:2041\");\n        if (itemvalue.Name != data_attr.Value) {\n          subClassAttr[index].Attr[iindex].Value = value;\n          __f__(\"log\", subClassAttr[index].Attr[iindex].Value, \" at pages/modal/ms_classAttr.vue:2044\");\n          var eventid = subClassAttr[index].Attr[iindex].action;\n          if (eventid) {\n            // self.event_no_sub = 1;\n            var req = [];\n            var attrlist = subClassAttr;\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                  attr: ar.Name,\n                  val: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) req.push({\n                  attr: ar.Name,\n                  val: ar.Value ? '1' : '0'\n                });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') req.push({\n                  attr: ar.Name,\n                  val: itemvalue.Name\n                });else req.push({\n                  attr: ar.Name,\n                  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.Sub_Cls.ID,\n              objid: \"\",\n              attr: req\n            };\n            this.DataObjRunCustomEvent(info);\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      if (!data_attr) {\n        this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n        return;\n      }\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        //瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈琝n        var eventid = this.$data.param.Scan_Code.Input_Change_Event.ID;\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                attr: ar.Name,\n                value: ar.ValID ? ar.ValID : ''\n              });else if (ar.Type == '甯冨皵鍊�) req.push({\n                attr: ar.Name,\n                value: ar.Value ? '1' : '0'\n              });else req.push({\n                attr: ar.Name,\n                value: ar.Value ? ar.Value : ''\n              });\n            }\n          }\n          var info = {\n            eventid: eventid,\n            edtype: \"7\",\n            //\"0\",\n            projectid: '',\n            rclsid: '',\n            robjid: '',\n            userlogin: '',\n            clsid: 'MBOX',\n            //this.$data.param.Sub_Cls.ID,\n            objid: \"\",\n            attr: req,\n            mast_attr: [],\n            inputParamter: [{\n              attr: 'mast_input_3037',\n              value: e.target.value\n            }]\n          };\n          this.scan_DataObjRunCustomEvent(info, \"\");\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      if (!data_attr) {\n        this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n        return;\n      }\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                attr: ar.Name,\n                val: ar.ValID ? ar.ValID : ''\n              });else if (ar.Type == '甯冨皵鍊�) req.push({\n                attr: ar.Name,\n                val: ar.Value ? '1' : '0'\n              });else req.push({\n                attr: ar.Name,\n                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.Master_Cls.ID,\n            objid: \"\",\n            attr: req\n          };\n          this.DataObjRunCustomEvent(info);\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/ms_classAttr.vue:2225\");\n      this.$data.subClassAttrList[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({\n          title: \"鎻愮ず\",\n          content: \"before_click_button-event_id涓虹┖锛乗",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n        return;\n      }\n      if (!button_callback) {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"button_callback-event_id涓虹┖锛乗",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\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 = {\n        index: index,\n        iindex: iindex\n      };\n      var $this = this;\n      uni.navigateTo({\n        url: '../selpsn/index?mulit=false&param=' + JSON.stringify(param),\n        events: {\n          AddPer: function AddPer(data, param) {\n            // console.log(param);\n            __f__(\"log\", data, \" at pages/modal/ms_classAttr.vue:2265\");\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            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.Master_Cls.ID,\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/ms_classAttr.vue:2295\");\n      uni.showModal({\n        title: \"鎻愮ず\",\n        content: \"姝ゅ姛鑳借繕鏈疄鐜帮紒\",\n        showCancel: false,\n        confirmText: \"鍙栨秷\"\n      });\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 = {\n        index: index,\n        iindex: iindex\n      };\n      var $this = this;\n      uni.navigateTo({\n        url: '../selPrj/index?relation=-1&param=' + 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            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.Master_Cls.ID,\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.param.Before_OK_Event)\n        //鍒ゆ柇鍔熻兘鐐瑰弬鏁版槸鍚︽湁纭畾鍓嶈剼鏈琝n        this.scan_OKDataObjRunCustomEvent(this.$data.param.Before_OK_Event.ID);else if (this.$data.param.After_OK_Event)\n        //鍒ゆ柇鍔熻兘鐐瑰弬鏁版槸鍚︽湁纭畾鍚庤剼鏈琝n        this.scan_OKDataObjRunCustomEvent(this.$data.param.After_OK_Event.ID);else uni.navigateBack({\n        delta: 1\n      }); //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\n    },\n    add: function add() {\n      var _this5 = this;\n      uni.showLoading({\n        title: \"鍔犺浇涓�..\",\n        mask: true\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n            name: ar.Name,\n            value: ar.ValID ? ar.ValID : ''\n          });else if (ar.Type == '甯冨皵鍊�) req.push({\n            name: ar.Name,\n            value: ar.Value ? '1' : '0'\n          });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n            if (ar.select == true) {\n              //鍒ゆ柇涓嬫媺鏄惁澶氶�\n              var valStr = \"\";\n              for (var v in ar.Value) {\n                if (valStr) valStr += \";\";\n                valStr += ar.Value[v];\n              }\n              req.push({\n                name: ar.Name,\n                value: valStr\n              });\n            } else req.push({\n              name: ar.Name,\n              value: ar.Value\n            });\n          } else req.push({\n            name: ar.Name,\n            value: ar.Value ? ar.Value : ''\n          });\n          if (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({\n              title: \"鎻愮ず\",\n              content: ar.DispName + '涓嶈兘涓虹┖锛�,\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n            return;\n          }\n        }\n      }\n      var enviroment = {\n        'function': '3000',\n        // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.Master_Cls.ID,\n        // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top',\n        // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.Master_Cls.ID\n        }\n      };\n      var dataInfo = {\n        class_id: this.$data.param.Master_Cls.ID,\n        data_obj_id: '',\n        masterclsid: '',\n        req: JSON.stringify(req),\n        upfile: JSON.stringify([]),\n        post_data: JSON.stringify({}),\n        compose: JSON.stringify([]),\n        refdatastore: JSON.stringify([]),\n        extinfo: JSON.stringify(enviroment),\n        not_trigger_sys_event: ''\n      };\n\n      // return\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2440\");\n      this.$store.dispatch('addclassattr', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2442\");\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({\n                title: action.result,\n                icon: \"success\",\n                duration: 3000\n              });\n            }\n            // \"{\"ret\":0, \"result_type\":0, \"result\":\"鍒涘缓鎴愬姛123123123\",\"info\":\"\"}\"\n          }\n          //鍒锋柊\n          uni.redirectTo({\n            url: '../modal/ms_classAttr?param=' + JSON.stringify(_this5.$data.param) + \"&titlename=\" + _this5.$data.title\n          });\n          // this.class_attr_init();\n        } else {\n          uni.showModal({\n            title: \"閿欒\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:2471\");\n        uni.hideLoading();\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\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) ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n                      else 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                        ca.dictitem[d].attr = ca.Name;\n                        if (ca.dictitem[d].CN_C_IS_DEFAULT == '1') ca.Value = ca.dictitem[d].CN_S_NAME;\n                      }\n                    }\n                    if (ca.Type == '鏃ユ湡' || ca.Type == '鏃堕棿') {\n                      var nowDate = new Date();\n                      var date = {\n                        year: nowDate.getFullYear(),\n                        month: nowDate.getMonth() + 1,\n                        day: nowDate.getDate()\n                      };\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({\n                          id: rescls[0],\n                          name: rescls[1]\n                        });\n                      }\n                      ca.RelClsList = relClsList;\n                      ca.Value = '璇�;\n                    }\n                    if (ca.Type == '鐪佸競鍖�) ca.Value = '璇烽�鎷�;\n                    if (ca.Type == '甯冨皵鍊�) ca.Value = false;\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                Font: this.$data.classGridStyle.StyleDef.Font ? this.$data.classGridStyle.StyleDef.Font : {},\n                Bk_Color: this.$data.classGridStyle.StyleDef.Bk_Color ? this.$data.classGridStyle.StyleDef.Bk_Color : '#FFFFFF',\n                Text_Color: this.$data.classGridStyle.StyleDef.Text_Color ? this.$data.classGridStyle.StyleDef.Text_Color : '#000000'\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({\n                  attr: ar.attr,\n                  value: 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        // console.log(req);\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.Master_Cls.ID,\n            objid: \"\",\n            attr: req\n          };\n          this.ini_DataObjRunCustomEvent(info);\n        }\n        __f__(\"log\", this.$data.classGridStyle, \" at pages/modal/ms_classAttr.vue:2627\");\n        __f__(\"log\", this.$data.classAttrList, \" at pages/modal/ms_classAttr.vue:2628\");\n      } else {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"鏈壘鍒板彲鏄剧ず鐨勭殑灞炴�\",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      }\n    },\n    subClass_attr_init: function subClass_attr_init() {\n      var attrlist = this.$data.subClassGridStyle.StyleDef.show_style;\n      var newattrlist = [];\n      if (this.$data.subClassAttrList.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.subClassAttrList.length; s++) {\n            var clsattr = this.$data.subClassAttrList[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) ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n                      else 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                        ca.dictitem[d].attr = ca.Name;\n                        if (ca.dictitem[d].CN_C_IS_DEFAULT == '1') ca.Value = ca.dictitem[d].CN_S_NAME;\n                      }\n                    }\n                    if (ca.Type == '鏃ユ湡' || ca.Type == '鏃堕棿') {\n                      var nowDate = new Date();\n                      var date = {\n                        year: nowDate.getFullYear(),\n                        month: nowDate.getMonth() + 1,\n                        day: nowDate.getDate()\n                      };\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({\n                          id: rescls[0],\n                          name: rescls[1]\n                        });\n                      }\n                      ca.RelClsList = relClsList;\n                      ca.Value = '璇�;\n                    }\n                    if (ca.Type == '鐪佸競鍖�) ca.Value = '璇烽�鎷�;\n                    if (ca.Type == '甯冨皵鍊�) ca.Value = false;\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.subClassGridStyle.StyleDef.control_style,\n                title_p_wdith: this.$data.subClassGridStyle.StyleDef.title_p_wdith,\n                Font: this.$data.subClassGridStyle.StyleDef.Font ? this.$data.subClassGridStyle.StyleDef.Font : {},\n                Bk_Color: this.$data.subClassGridStyle.StyleDef.Bk_Color ? this.$data.subClassGridStyle.StyleDef.Bk_Color : '#FFFFFF',\n                Text_Color: this.$data.subClassGridStyle.StyleDef.Text_Color ? this.$data.subClassGridStyle.StyleDef.Text_Color : '#000000'\n              });\n            }\n          }\n        }\n        if (newattrlist.length > 0) {\n          this.$data.subClassAttrList = newattrlist;\n        }\n        var req = [];\n        if (this.$data.subClassGridStyle.StyleDef) {\n          if (this.$data.subClassGridStyle.StyleDef.show_style.length > 0) {\n            var attrlist = this.$data.subClassGridStyle.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({\n                  attr: ar.attr,\n                  value: ar.value ? ar.value : ''\n                });\n              }\n            }\n          }\n        }\n        var eventlist = this.$data.subClassGridStyle.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        // console.log(req);\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.Sub_Cls.ID,\n            objid: \"\",\n            attr: req\n          };\n          this.scan_ini_DataObjRunCustomEvent(info);\n        }\n        __f__(\"log\", this.$data.subClassGridStyle, \" at pages/modal/ms_classAttr.vue:2785\");\n        __f__(\"log\", this.$data.subClassAttrList, \" at pages/modal/ms_classAttr.vue:2786\");\n      } else {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"鏈壘鍒板彲鏄剧ず鐨勭殑灞炴�\",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      }\n    },\n    ini_DataObjRunCustomEvent: function ini_DataObjRunCustomEvent(info) {\n      var _this6 = this;\n      var param = {\n        EditStyle: this.$data.param.Master_Cls.View_Style.Name,\n        ViewStyle: this.$data.param.Master_Cls.View_Style.Name,\n        NotTriggerSysEvent: 0,\n        enviroment: {\n          'function': '3000',\n          // 鍔熻兘鐐圭紪鍙穃n          cls_id: this.$data.param.Master_Cls.ID,\n          // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n          'button': 'top',\n          // top/bottom\n          button_name: '鏂板',\n          master: {\n            cls_id: this.$data.param.Master_Cls.ID // button=bottom鏃�master鐨刢ls_id\n            //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n          }\n        }\n      };\n\n      var inputparameter = '';\n      var global_attr = '';\n      var dataInfo = {\n        edtype: info.edtype,\n        eventid: info.eventid,\n        projectid: info.projectid,\n        rclsid: info.rclsid,\n        robjid: info.robjid,\n        userlogin: info.userlogin,\n        clsid: info.clsid,\n        objid: info.objid,\n        attr: JSON.stringify(info.attr),\n        extinfo: JSON.stringify(param),\n        inputparameter: inputparameter,\n        global_attr: global_attr\n      };\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2830\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2832\");\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/ms_classAttr.vue:2847\");\n                  for (var i = 0; i < val.length; i++) {\n                    for (var a = 0; a < _this6.$data.classAttrList.length; a++) {\n                      for (var l = 0; l < _this6.$data.classAttrList[a].Attr.length; l++) {\n                        var ca = _this6.$data.classAttrList[a].Attr[l];\n                        if (val[i].attr == ca.Name) {\n                          if (ca.Type == '瀛楀吀' || 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({\n                                \"CN_S_NAME\": val,\n                                \"Name\": val,\n                                \"label\": val,\n                                \"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                    var length = 0;\n                    if (!_this6.$data.refdatastore.filter(function (s) {\n                      return val[i].attr == s.attr;\n                    }).length) {\n                      length = 1;\n                      _this6.$data.refdatastore.push(val[i]);\n                    }\n                    if (length == 0) {\n                      for (var j = 0; j < _this6.$data.refdatastore.length; j++) {\n                        if (_this6.$data.refdatastore[j].attr == val[i].attr) {\n                          _this6.$data.refdatastore[j].value = val[i].value;\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n              if (action_type == 'open_select_userdlg') {\n                uni.showModal({\n                  title: \"閿欒2.2\",\n                  content: \"open_select_userdlg杩欎釜action_type杩樻湭澶勭悊锛乗",\n                  showCancel: false,\n                  confirmText: \"鍙栨秷\"\n                });\n              }\n            }\n          }\n        } else {\n          uni.showModal({\n            title: \"閿欒2\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒2.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    },\n    DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n      var $this = this;\n      var enviroment = {\n        'function': '3000',\n        // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.Master_Cls.ID,\n        // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top',\n        // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.Master_Cls.ID // button=bottom鏃�master鐨刢ls_id\n          //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n        }\n      };\n\n      enviroment.edit_dlg = {\n        type: 'small',\n        //灏忕獥鍙n        class_id: this.$data.param.Master_Cls.ID //褰撳墠鏁版嵁绫籭d\n      };\n\n      if (data_attr) {\n        enviroment.edit_dlg.form_control = {\n          //鎵�睘鐨勮〃鍗曟帶浠禱n          name: data_attr.Name,\n          //瀛楁灞炴�\n          text: data_attr.DispName,\n          //鏄剧ず鏂囨湰\n          group_name: data_attr.GroupName,\n          //灞炴�缁刓n          type: data_attr.Type,\n          //瀛楁绫诲瀷\n          readonly: data_attr.ReadOnly,\n          //鏄惁鍙\n          button_img: data_attr.button_img,\n          //寮曠敤鎸夐挳鐨勫浘鏍嘰n          button_tooltip: data_attr.button_tooltip //寮曠敤鎸夐挳鐨則ooltip\n        };\n      }\n\n      var dataInfo = {\n        edtype: info.edtype,\n        eventid: info.eventid,\n        projectid: info.projectid.replace('{', '').replace('}', ''),\n        rclsid: info.rclsid,\n        robjid: info.robjid,\n        userlogin: info.userlogin,\n        clsid: info.clsid,\n        objid: info.objid,\n        attr: JSON.stringify(info.attr),\n        extinfo: JSON.stringify(enviroment),\n        inputparameter: '',\n        global_attr: JSON.stringify(this.$data.global_attr)\n      };\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2962\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2964\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          var actionlist = data.action;\n          if (actionlist) {\n            __f__(\"log\", actionlist, \" at pages/modal/ms_classAttr.vue:2970\");\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 == '瀛楀吀-瀛楃涓� || 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({\n                                \"CN_S_NAME\": val,\n                                \"Name\": val,\n                                \"label\": val,\n                                \"value\": val\n                              });\n                            }\n                            attr[j].dictitem = dictItemList;\n                            // attr[j].dictitem = result[i].choice_list;\n                          }\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/ms_classAttr.vue:3003\");\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          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              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({\n            title: \"閿欒3\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒3.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    },\n    OKDataObjRunCustomEvent: function OKDataObjRunCustomEvent() {\n      var _this7 = this;\n      var enviroment = {\n        'function': '3000',\n        // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.Master_Cls.ID,\n        // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top',\n        // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.Master_Cls.ID // button=bottom鏃�master鐨刢ls_id\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n            attr: ar.Name,\n            value: ar.ValID ? ar.ValID : ''\n          });else if (ar.Type == '甯冨皵鍊�) req.push({\n            attr: ar.Name,\n            value: ar.Value ? '1' : '0'\n          });else req.push({\n            attr: ar.Name,\n            value: 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({\n              'attr': this.$data.refdatastore[i].attr,\n              'value': this.$data.refdatastore[i].value\n            });\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.Master_Cls.ID,\n        objid: \"\",\n        attr: req\n      };\n      var dataInfo = {\n        edtype: info.edtype,\n        eventid: info.eventid,\n        projectid: info.projectid,\n        rclsid: info.rclsid,\n        robjid: info.robjid,\n        userlogin: info.userlogin,\n        clsid: info.clsid,\n        objid: info.objid,\n        attr: JSON.stringify(info.attr),\n        extinfo: JSON.stringify(enviroment),\n        global_attr: JSON.stringify(this.$data.global_attr)\n      };\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3153\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3155\");\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 (!_this7.$data.refdatastore.filter(function (s) {\n              return result[i].attr == s.attr;\n            }).length) {\n              length = 1;\n              _this7.$data.refdatastore.push(result[i]);\n            }\n            if (length == 0) {\n              for (var j = 0; j < _this7.$data.refdatastore.length; j++) {\n                if (_this7.$data.refdatastore[j].attr == result[i].attr) {\n                  _this7.$data.refdatastore[j].value = result[i].value;\n                }\n              }\n            }\n          }\n          _this7.add();\n        } else {\n          uni.showModal({\n            title: \"閿欒4\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒4.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    },\n    DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, index, iindex) {\n      var _this8 = this;\n      var enviroment = {\n        'function': '3000',\n        // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.Master_Cls.ID,\n        // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top',\n        // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.Master_Cls.ID // button=bottom鏃�master鐨刢ls_id\n          //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n        }\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n            attr: ar.Name,\n            value: ar.ValID ? ar.ValID : ''\n          });else if (ar.Type == '甯冨皵鍊�) req.push({\n            attr: ar.Name,\n            value: ar.Value ? '1' : '0'\n          });else req.push({\n            attr: ar.Name,\n            value: 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({\n              'attr': this.$data.refdatastore[i].attr,\n              'value': this.$data.refdatastore[i].value\n            });\n          }\n        }\n      }\n      var extinfo = enviroment;\n      extinfo.edit_dlg = {\n        type: 'small',\n        //灏忕獥鍙n        class_id: this.$data.param.Master_Cls.ID //褰撳墠鏁版嵁绫籭d\n      };\n\n      if (data_attr) {\n        extinfo.edit_dlg.form_control = {\n          //鎵�睘鐨勮〃鍗曟帶浠禱n          name: data_attr.Name,\n          //瀛楁灞炴�\n          text: data_attr.DispName,\n          //鏄剧ず鏂囨湰\n          group_name: data_attr.GroupName,\n          //灞炴�缁刓n          type: data_attr.Type,\n          //瀛楁绫诲瀷\n          readonly: data_attr.ReadOnly,\n          //鏄惁鍙\n          button_img: data_attr.button_img,\n          //寮曠敤鎸夐挳鐨勫浘鏍嘰n          button_tooltip: data_attr.button_tooltip //寮曠敤鎸夐挳鐨則ooltip\n        };\n      }\n\n      var dataInfo = {\n        edtype: \"0\",\n        eventid: eventid,\n        projectid: '',\n        rclsid: '',\n        robjid: '',\n        userlogin: '',\n        clsid: this.$data.param.Master_Cls.ID,\n        objid: '',\n        attr: JSON.stringify(req),\n        extinfo: JSON.stringify(extinfo),\n        global_attr: JSON.stringify(this.$data.global_attr)\n      };\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3274\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3276\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          if (data != \"\") {\n            var actions = data.action;\n            __f__(\"log\", actions, \" at pages/modal/ms_classAttr.vue:3282\");\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                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 + '姝ction灏氭湭澶勭悊锛�\n                  });\n                  d.show();\n                } else if (action.action_type == 'open_select_userdlg') {\n                  var style = val.style;\n                  // style == 'user' ? '閫夋嫨浜哄憳' : style == 'department' ? '閫夋嫨閮ㄩ棬' : style == 'role' ? '閫夋嫨瑙掕壊' : ''\n                  var $this = _this8;\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&param=' + JSON.stringify(param),\n                    events: {\n                      AddPer: function AddPer(data, param) {\n                        // console.log(param);\n                        __f__(\"log\", data, \" at pages/modal/ms_classAttr.vue:3312\");\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.Master_Cls.ID,\n                          objid: \"\",\n                          attr: param.req,\n                          inputparameter: data\n                        };\n                        $this.DataObjRunCustomEvent(info, param.data_attr);\n                      }\n                    }\n                  });\n                } else if (action.action_type == 'open_data_query_dlg') {} else 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 + '姝ction灏氭湭澶勭悊锛�\n                  });\n                  d.show();\n                } else 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 == '鍏ㄩ儴鐩稿叧') priRel = '0';else if (action.value.select_range == '鎴戣礋璐g殑椤圭洰') priRel = '1';else if (action.value.select_range == '鎴戝垱寤虹殑') priRel = '2';else if (action.value.select_range == '鎴戝弬涓庣殑' || action.value.select_range == '鎴戝弬鍔犵殑') priRel = '3';else if (action.value.select_range == '鎴戝叧娉ㄧ殑') priRel = '4';else if (action.value.select_range == '鎴戜笅灞炵殑椤圭洰') priRel = '5';\n                  var $this = _this8;\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 + '&param=' + 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.Master_Cls.ID,\n                            objid: \"\",\n                            attr: param.req\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 + '姝ction灏氭湭澶勭悊锛�\n                  });\n                  d.show();\n                }\n              }\n            }\n          } else {\n            uni.showModal({\n              title: \"鎻愮ず5.2\",\n              content: '璋冪敤 before_click_button 鑴氭湰杩斿洖绌猴紝event_id' + eventid,\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n          }\n        } else {\n          uni.showModal({\n            title: \"閿欒5\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"鎻愮ず5.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    },\n    scan_ini_DataObjRunCustomEvent: function scan_ini_DataObjRunCustomEvent(info) {\n      var _this9 = this;\n      var param = {\n        EditStyle: this.$data.param.Sub_Cls.View_Style.Name,\n        ViewStyle: this.$data.param.Sub_Cls.View_Style.Name,\n        NotTriggerSysEvent: 0,\n        enviroment: {\n          'function': '3000',\n          // 鍔熻兘鐐圭紪鍙穃n          cls_id: this.$data.param.Sub_Cls.ID,\n          // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n          'button': 'top',\n          // top/bottom\n          button_name: '鏂板',\n          master: {\n            cls_id: this.$data.param.Sub_Cls.ID // button=bottom鏃�master鐨刢ls_id\n            //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n          }\n        }\n      };\n\n      var inputparameter = '';\n      var global_attr = '';\n      var dataInfo = {\n        edtype: info.edtype,\n        eventid: info.eventid,\n        projectid: info.projectid,\n        rclsid: info.rclsid,\n        robjid: info.robjid,\n        userlogin: info.userlogin,\n        clsid: info.clsid,\n        objid: info.objid,\n        attr: JSON.stringify(info.attr),\n        extinfo: JSON.stringify(param),\n        inputparameter: inputparameter,\n        global_attr: global_attr\n      };\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3461\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3463\");\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/ms_classAttr.vue:3478\");\n                  for (var i = 0; i < val.length; i++) {\n                    for (var a = 0; a < _this9.$data.subClassAttrList.length; a++) {\n                      for (var l = 0; l < _this9.$data.subClassAttrList[a].Attr.length; l++) {\n                        var ca = _this9.$data.subClassAttrList[a].Attr[l];\n                        if (val[i].attr == ca.Name) {\n                          if (ca.Type == '瀛楀吀' || 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({\n                                \"CN_S_NAME\": val,\n                                \"Name\": val,\n                                \"label\": val,\n                                \"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                    var length = 0;\n                    if (!_this9.$data.refdatastore.filter(function (s) {\n                      return val[i].attr == s.attr;\n                    }).length) {\n                      length = 1;\n                      _this9.$data.refdatastore.push(val[i]);\n                    }\n                    if (length == 0) {\n                      for (var j = 0; j < _this9.$data.refdatastore.length; j++) {\n                        if (_this9.$data.refdatastore[j].attr == val[i].attr) {\n                          _this9.$data.refdatastore[j].value = val[i].value;\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n              if (action_type == 'open_select_userdlg') {\n                uni.showModal({\n                  title: \"閿欒6.2\",\n                  content: \"open_select_userdlg杩欎釜action_type杩樻湭澶勭悊锛乗",\n                  showCancel: false,\n                  confirmText: \"鍙栨秷\"\n                });\n              }\n            }\n          }\n        } else {\n          uni.showModal({\n            title: \"閿欒6\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒6.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    },\n    scan_DataObjRunCustomEvent: function scan_DataObjRunCustomEvent(info, data_attr) {\n      var _this10 = this;\n      var $this = this;\n      var enviroment = {};\n      if (info.enviroment) {\n        enviroment = info.enviroment;\n      } else {\n        enviroment = {\n          'function': '3000',\n          // 鍔熻兘鐐圭紪鍙穃n          cls_id: 'MBOX',\n          //this.$data.param.Sub_Cls.ID,     // 鍔熻兘鐐逛粠鏁版嵁绫绘爣璇哱n          'button': 'top',\n          // top/bottom\n          button_name: '鏂板',\n          edit_dlg: {\n            type: 'small',\n            //灏忕獥鍙n            class_id: 'MBOX' //this.$data.param.Sub_Cls.ID,//褰撳墠鏁版嵁绫籭d\n          }\n        };\n      }\n\n      var global_attr = this.$data.global_attr;\n      if (info.global_attr) {\n        global_attr = info.global_attr;\n      }\n      var dataInfo = {\n        edtype: info.edtype,\n        eventid: info.eventid,\n        projectid: info.projectid.replace('{', '').replace('}', ''),\n        rclsid: info.rclsid,\n        robjid: info.robjid,\n        userlogin: info.userlogin,\n        clsid: info.clsid,\n        objid: info.objid,\n        attr: JSON.stringify(info.attr),\n        extinfo: JSON.stringify(enviroment),\n        inputparameter: JSON.stringify(info.inputParamter),\n        global_attr: JSON.stringify(global_attr)\n      };\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3589\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3591\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          var actionlist = data.action;\n          if (actionlist) {\n            __f__(\"log\", actionlist, \" at pages/modal/ms_classAttr.vue:3597\");\n            for (var ii = 0; ii < actionlist.length; ii++) {\n              var action = actionlist[ii];\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 s = 0; s < $this.$data.subPanelList.length; s++) {\n                      for (var c = 0; c < $this.$data.subPanelList[s].subClassAttrList.length; c++) {\n                        var attr = $this.$data.subPanelList[s].subClassAttrList[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 == '瀛楀吀-瀛楃涓� || 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({\n                                  \"CN_S_NAME\": val,\n                                  \"Name\": val,\n                                  \"label\": val,\n                                  \"value\": val\n                                });\n                              }\n                              attr[j].dictitem = dictItemList;\n                              // attr[j].dictitem = result[i].choice_list;\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n\n                  for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n                    for (var c = 0; c < $this.$data.subPanelList[s].subClassAttrList.length; c++) {\n                      var attr = $this.$data.subPanelList[s].subClassAttrList[c].Attr;\n                      for (var j = 0; j < attr.length; j++) {\n                        __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/ms_classAttr.vue:3636\");\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              } else if (action.action_type == 'set_global_attr') {\n                $this.$actiontr = action.value || [];\n              } else if (action.action_type == 'open_common_dlg') {\n                //鎵撳紑渚ф粦寮规\n                var $this = _this10;\n                if (action.value.common_dlg_id == 'check_list') {\n                  $this.$data.check_list = action.value.config;\n                  if (action.value.config.appear_style == 'sideslip')\n                    //鍒ゆ柇鏄惁鏄晶婊慭n                    $this.$data.popupType = 'right';else $this.$data.popupType = 'center';\n                  // open 鏂规硶浼犲叆鍙傛暟 绛夊悓鍦�uni-popup 缁勪欢涓婄粦瀹�type灞炴�\n                  $this.$refs.popup.open($this.$data.popupType);\n                }\n              } else if (action.action_type == 'add_subcls_panel') {\n                //涓讳粠鏁版嵁绫绘壂鐮佹煡璇㈡暟鎹甛n                var result = action.value;\n                var $this = _this10;\n                var list_1 = JSON.parse(JSON.stringify(_this10.$data.subClassAttrList));\n                var scanCodeVal = $this.$data.scanCodeVal;\n                var rand = '';\n                for (var i = 0; i < 5; i++) {\n                  //鐢熸垚5浣嶉殢鏈烘暟\n                  rand += Math.floor(Math.random() * 10);\n                }\n                if (info.inputParamter[0].attr) {\n                  if (info.inputParamter[0].attr == \"mast_input_3037\")\n                    //鍒ゆ柇鏄富鏁版嵁绫绘壂鐮佹煡璇㈡暟鎹甛n                    scanCodeVal = \"mast_input_3037-\" + rand;\n                }\n                if (info.attr[0].attr) {\n                  if (info.attr[0].attr == \"mast_input_3037\")\n                    //鍒ゆ柇鏄富鏁版嵁绫绘壂鐮佹煡璇㈡暟鎹甛n                    scanCodeVal = \"mast_input_3037-\" + rand;\n                }\n                $this.$data.subPanelList.push({\n                  scanCodeVal: scanCodeVal,\n                  subClassAttr: list_1\n                });\n                for (var i = 0; i < result.length; i++) {\n                  for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n                    if ($this.$data.subPanelList[s].scanCodeVal == scanCodeVal) {\n                      if (result[i].attr == \"S_ID\") $this.$data.subPanelList[s].ObjID = result[i].value;\n                      var _subClassAttr = $this.$data.subPanelList[s].subClassAttr;\n                      for (var c = 0; c < _subClassAttr.length; c++) {\n                        var attr = _subClassAttr[c].Attr;\n                        for (var j = 0; j < attr.length; j++) {\n                          // console.log(attr[j].Name+'=='+result[i].attr);\n                          if (attr[j].Name == result[i].attr) {\n                            attr[j].Value = result[i].value;\n                          }\n                        }\n                      }\n\n                      // $this.$data.subPanelList[s].subClassAttr=list_1;\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            }\n          }\n          if (data.result) {\n            var _list_ = JSON.parse(JSON.stringify(_this10.$data.subClassAttrList));\n            var scanCodeVal = $this.$data.scanCodeVal;\n            if (info.inputParamter[0].attr == \"mast_input_3037\") scanCodeVal = \"mast_input_3037-\" + ii;\n            $this.$data.subPanelList.push({\n              scanCodeVal: scanCodeVal,\n              subClassAttr: _list_\n            });\n            var result = data.result;\n            for (var i = 0; i < result.length; i++) {\n              for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n                if ($this.$data.subPanelList[s].scanCodeVal == scanCodeVal) {\n                  if (result[i].attr == \"S_ID\") $this.$data.subPanelList[s].ObjID = result[i].value;\n                  var _subClassAttr = $this.$data.subPanelList[s].subClassAttr;\n                  for (var c = 0; c < _subClassAttr.length; c++) {\n                    var attr = _subClassAttr[c].Attr;\n                    for (var j = 0; j < attr.length; j++) {\n                      // console.log(attr[j].Name+'=='+result[i].attr);\n                      if (attr[j].Name == result[i].attr) {\n                        attr[j].Value = result[i].value;\n                      }\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({\n            title: \"閿欒7\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒7.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    },\n    scan_OKDataObjRunCustomEvent: function scan_OKDataObjRunCustomEvent(eventID) {\n      uni.showLoading({\n        title: \"鍔犺浇涓�..\",\n        mask: true\n      });\n      var $this = this;\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n            attr: ar.Name,\n            value: ar.ValID ? ar.ValID : ''\n          });else if (ar.Type == '甯冨皵鍊�) req.push({\n            attr: ar.Name,\n            value: ar.Value ? '1' : '0'\n          });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n            if (ar.select == true) {\n              //鍒ゆ柇涓嬫媺鏄惁澶氶�\n              var valStr = \"\";\n              for (var v in ar.Value) {\n                if (valStr) valStr += \";\";\n                valStr += ar.Value[v];\n              }\n              req.push({\n                attr: ar.Name,\n                value: valStr\n              });\n            } else req.push({\n              attr: ar.Name,\n              value: ar.Value\n            });\n          } else req.push({\n            attr: ar.Name,\n            value: ar.Value ? ar.Value : ''\n          });\n          if (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({\n              title: \"鎻愮ず\",\n              content: ar.DispName + '涓嶈兘涓虹┖锛�,\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n            return;\n          }\n        }\n      }\n      var objects = [];\n      var subPanelList = $this.$data.subPanelList;\n      for (var s = 0; s < subPanelList.length; s++) {\n        var sub_req = [];\n        for (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n          var attr = subPanelList[s].subClassAttr[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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n            if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') sub_req.push({\n              attr: ar.Name,\n              value: ar.ValID ? ar.ValID : ''\n            });else if (ar.Type == '甯冨皵鍊�) sub_req.push({\n              attr: ar.Name,\n              value: ar.Value ? '1' : '0'\n            });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n              if (ar.select == true) {\n                //鍒ゆ柇涓嬫媺鏄惁澶氶�\n                var valStr = \"\";\n                for (var v in ar.Value) {\n                  if (valStr) valStr += \";\";\n                  valStr += ar.Value[v];\n                }\n                sub_req.push({\n                  attr: ar.Name,\n                  value: valStr\n                });\n              } else sub_req.push({\n                attr: ar.Name,\n                value: ar.Value\n              });\n            } else sub_req.push({\n              attr: ar.Name,\n              value: ar.Value ? ar.Value : ''\n            });\n            if (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({\n                title: \"鎻愮ず\",\n                content: ar.DispName + '涓嶈兘涓虹┖锛�,\n                showCancel: false,\n                confirmText: \"鍙栨秷\"\n              });\n              return;\n            }\n          }\n        }\n        objects.push({\n          obj_id: subPanelList[s].scanCodeVal,\n          obj_attrs: sub_req\n        });\n      }\n      var dataJson = {\n        master_cls: {\n          cls_name: 'MBOX',\n          //$this.$data.param.Master_Cls.Name,\n          obj_attrs: req\n        },\n        input_3037: $this.$data.scanCodeVal,\n        //鎵爜鍐呭\n        op_type: $this.$data.param.OperationType,\n        //浣滀笟绫诲瀷瀹氫箟\n        sub_cls: {\n          cls_name: 'MBOX',\n          //$this.$data.param.Sub_Cls.Name,\n          objects: objects\n        }\n      };\n      // console.log(JSON.stringify(dataJson));\n      var dataInfo = {\n        edtype: \"7\",\n        eventid: eventID,\n        projectid: '',\n        rclsid: '',\n        robjid: '',\n        userlogin: '',\n        clsid: 'MBOX',\n        objid: '',\n        attr: JSON.stringify([]),\n        extinfo: JSON.stringify([]),\n        global_attr: JSON.stringify($this.$data.global_attr),\n        dataJson: JSON.stringify(dataJson)\n      };\n      // console.log(JSON.stringify(dataInfo));\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3933\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3935\");\n        uni.hideLoading();\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          var result = data.result;\n          if (eventID != $this.$data.param.After_OK_Event.ID) $this.scan_OKDataObjRunCustomEvent($this.$data.param.After_OK_Event.ID);else {\n            //鍒锋柊\n            uni.redirectTo({\n              url: '../modal/ms_classAttr?param=' + JSON.stringify($this.$data.param) + \"&titlename=\" + $this.$data.title\n            });\n          }\n        } else {\n          uni.showModal({\n            title: \"閿欒8\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.hideLoading();\n        uni.showModal({\n          title: \"閿欒8.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    }\n  }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvbXNfY2xhc3NBdHRyLnZ1ZSJdLCJuYW1lcyI6WyJjb21wb25lbnRzIiwicGlja2VyQWRkcmVzcyIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwiY2xhc3NBdHRyTGlzdCIsImNsYXNzR3JpZFN0eWxlIiwiZWRpdF9pbml0YWxfZXZlbnQiLCJlZGl0X29rX2V2ZW50IiwiZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCIsImVkaXRfY29tcG9zZV9jbHNfaWQiLCJnbG9iYWxfYXR0ciIsInJlZmRhdGFzdG9yZSIsInNjYW5Db2RlVmFsIiwic3ViQ2xhc3NBdHRyTGlzdCIsInN1YlBhbmVsTGlzdCIsInN1YkNsYXNzR3JpZFN0eWxlIiwicG9wdXBUeXBlIiwiY2hlY2tfbGlzdCIsIm9uTG9hZCIsIm9wdGlvbnMiLCJ1bmkiLCJzZXROYXZpZ2F0aW9uQmFyVGl0bGUiLCJ0aXRsZW5hbWUiLCJKU09OIiwicGFyc2UiLCIkZGF0YSIsIkFkZF9CdG5OYW1lIiwiTWFzdGVyX0NscyIsIlZpZXdfU3R5bGUiLCJzaG93TW9kYWwiLCJjb250ZW50Iiwic2hvd0NhbmNlbCIsImNvbmZpcm1UZXh0IiwiTmFtZSIsImRhdGFJbmZvIiwiY2xhc3NfaWQiLCJJRCIsIiR0aGlzIiwiJHN0b3JlIiwic3RhdGUiLCJ0aGlzYXJlYUZ1bmNJRCIsImdldHRlcnMiLCJnZXRjbGFzc0F0dHJMaXN0IiwiY2xhc3NHcmlkU3R5bGVJbmZvIiwiZGlzcGF0Y2giLCJ0aGVuIiwic3VjY2VzcyIsImNvZGUiLCJtc2ciLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwic3ViZGF0YUluZm8iLCJTdWJfQ2xzIiwidGhpc2FyZWFGdW5jU3ViSUQiLCJnZXRTdWJDbGFzc0F0dHJMaXN0IiwibWV0aG9kcyIsInNjYW5fY2xhc3NBdHRyX2V4dEJ1dHRvbiIsImUiLCJCZWZvcmVfU2VsZWN0X0V2ZW50IiwiU2Nhbl9Db2RlIiwibWFzdF9hdHRyIiwiYXR0cmxpc3QiLCJpIiwibGVuZ3RoIiwiYXR0ciIsIkF0dHIiLCJqIiwiYXIiLCJWYWx1ZSIsIkRpc3BOYW1lIiwiVHlwZSIsInB1c2giLCJ2YWx1ZSIsIlZhbElEIiwib2JqZWN0cyIsInMiLCJzdWJfcmVxIiwic3ViQ2xhc3NBdHRyIiwic2VsZWN0IiwidmFsU3RyIiwidiIsIm5vdGVtcHR5IiwiaGlkZUxvYWRpbmciLCJvYmpfaWQiLCJvYmpfYXR0cnMiLCJlbnZpcm9tZW50IiwiY2xzX2lkIiwiYnV0dG9uX25hbWUiLCJlZGl0X2RsZyIsInR5cGUiLCJtYXN0ZXJfY2xzIiwiY2xzX25hbWUiLCJyZXEiLCJzdWJfY2xzIiwiaW5mbyIsImV2ZW50aWQiLCJlZHR5cGUiLCJwcm9qZWN0aWQiLCJyY2xzaWQiLCJyb2JqaWQiLCJ1c2VybG9naW4iLCJjbHNpZCIsIm9iamlkIiwiaW5wdXRQYXJhbXRlciIsInNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50IiwicG9wdXBDaGFuZ2UiLCJzaG93IiwiY2hlY2tDaGFuZ2UiLCJpbmRleCIsInRhcmdldCIsImRhdGFzZXQiLCJpc2NoZWNrIiwiaXRlbXMiLCJtdWx0aXBsZV9jaG9pY2UiLCJjaGVjayIsInBvcHVwX2NhbmNlbCIsIiRyZWZzIiwicG9wdXAiLCJjbG9zZSIsInBvcHVwX3NhdmEiLCJBZnRlcl9TZWxlY3RfRXZlbnQiLCJuYW1lIiwiaWQiLCJjYW5jZWwiLCJuYXZpZ2F0ZUJhY2siLCJkZWx0YSIsInBhbmVsX2RlbCIsIk9iaklEIiwic3BsaWNlIiwiY2xzSWQiLCJvYmpJZCIsInNob3dMb2FkaW5nIiwic3R5bGVOYW1lIiwiY2xzVHlwZSIsImdyaWRzdHlsZUluZm8iLCJ0aGlzRWRpdE5hbWUiLCJnZXRjbGFzc0dyaWRTdHlsZUluZm8iLCJjbGFzc19hdHRyX2luaXQiLCJTdHlsZURlZiIsInRoaXNFZGl0U3ViTmFtZSIsImdldFN1YkNsYXNzR3JpZFN0eWxlSW5mbyIsInN1YkNsYXNzX2F0dHJfaW5pdCIsIm9udGFwIiwiZ2V0QXBwIiwib25TY2FuIiwicmVzdWx0IiwiaXNWYWwiLCJkZWNvZGVkYXRhIiwiaGlkZUtleWJvYXJkIiwiSW5wdXRfQ2hhbmdlX0V2ZW50Iiwic3Vib250YXAiLCJzY2FuX29udGFwIiwiaXNmbGFnIiwibWFzdF9yZXEiLCJjbGFzc2F0dHJsaXN0Iiwic2Nhbl9vbmV2ZW50Iiwib25hcnJvdyIsIm9wZW4iLCJkYXRhX2F0dHIiLCJPcGVuIiwib25kYXRlVGltZSIsIm9uY2hhbmdlIiwiZGljdGl0ZW0iLCJhY3Rpb24iLCJ2YWwiLCJEYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJvbmNoYW5nZTIiLCJpdGVtIiwiZGVsdmFsdWUiLCJpaW5kZXgiLCJkaW5kZXgiLCJpdGVtdmFsdWUiLCJzdWJfb25jaGFuZ2UiLCJzdWJfb25jaGFuZ2UyIiwiZCIsIm9uZXZlbnQiLCJvbmNoZWNrIiwiaXNjaGVja2VkIiwiaW5wdXRWYWxMaXN0SXNEZWwiLCJpbnB1dFZhbExpc3QiLCJhZGRyZXNzY2hhbmdlIiwiam9pbiIsImNsYXNzQXR0cl9leHRCdXR0b24iLCJiZWZvcmVfY2xpY2tfYnV0dG9uIiwiYnV0dG9uX2NhbGxiYWNrIiwiRGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybiIsImNsYXNzQXR0cl9BZGRQZXIiLCJuYXZpZ2F0ZVRvIiwidXJsIiwic3RyaW5naWZ5IiwiZXZlbnRzIiwiQWRkUGVyIiwiTG9naW4iLCJ0cmltIiwiY2xhc3NBdHRyX0FkZFJlZiIsImNsYXNzQXR0cl9BZGRQcmoiLCJzYXZhIiwiQmVmb3JlX09LX0V2ZW50Iiwic2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudCIsIkFmdGVyX09LX0V2ZW50IiwiYWRkIiwibWFzayIsIm1hc3RlciIsImRhdGFfb2JqX2lkIiwibWFzdGVyY2xzaWQiLCJ1cGZpbGUiLCJwb3N0X2RhdGEiLCJjb21wb3NlIiwiZXh0aW5mbyIsIm5vdF90cmlnZ2VyX3N5c19ldmVudCIsIkFjdGlvbiIsInJldCIsInJlc3VsdF90eXBlIiwic2hvd1RvYXN0IiwiaWNvbiIsImR1cmF0aW9uIiwicmVkaXJlY3RUbyIsInNob3dfc3R5bGUiLCJuZXdhdHRybGlzdCIsImF0dHJncm91cF9uYW1lIiwiYXR0cnMiLCJjbHNhdHRyIiwibCIsImNhIiwiZWRpdCIsImV4dF9idXR0b24iLCJidXR0b25faW1nIiwiYnV0dG9uX3Rvb2x0aXAiLCJoaWRkZW4iLCJ1bmRlZmluZWQiLCJkaWN0aXRlbWxpc3QiLCJsYWJlbCIsIkNOX1NfTkFNRSIsIkNOX0NfSVNfREVGQVVMVCIsIm5vd0RhdGUiLCJEYXRlIiwiZGF0ZSIsInllYXIiLCJnZXRGdWxsWWVhciIsIm1vbnRoIiwiZ2V0TW9udGgiLCJkYXkiLCJnZXREYXRlIiwicmVsQ2xzTGlzdCIsImF0dHJfcmVzY2xzIiwiUmVsQ2xzIiwic3BsaXQiLCJpaSIsInJlc2NscyIsIlJlbENsc0xpc3QiLCJCa0NvbG9yIiwiSGFzQWNlIiwiSW1nRm9udFN0eWxlIiwiT3JkZXIiLCJjb250cm9sX3N0eWxlIiwidGl0bGVfcF93ZGl0aCIsIkZvbnQiLCJCa19Db2xvciIsIlRleHRfQ29sb3IiLCJldmVudGxpc3QiLCJldmVudCIsImV2ZW50X2lkIiwic2NyaXBfaWQiLCJjb21wb3NlX2Nsc19pZCIsImluaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJzY2FuX2luaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJFZGl0U3R5bGUiLCJWaWV3U3R5bGUiLCJOb3RUcmlnZ2VyU3lzRXZlbnQiLCJpbnB1dHBhcmFtZXRlciIsImFjdGlvbmxpc3QiLCJhY3Rpb25fdHlwZSIsImEiLCJkaWN0SXRlbUxpc3QiLCJjaG9pY2VfbGlzdCIsImZpbHRlciIsImZvcm1fY29udHJvbCIsInRleHQiLCJncm91cF9uYW1lIiwiR3JvdXBOYW1lIiwicmVhZG9ubHkiLCJSZWFkT25seSIsInJlcGxhY2UiLCJjIiwiT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJhY3Rpb25zIiwiZGlhbG9nIiwic3R5bGUiLCJjYWxsYmFja19ldmVudGlkIiwicHJpUmVsIiwic2VsZWN0X3JhbmdlIiwicGFyYW1fIiwiJGFjdGlvbnRyIiwiY29tbW9uX2RsZ19pZCIsImNvbmZpZyIsImFwcGVhcl9zdHlsZSIsImxpc3RfMSIsInJhbmQiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJfc3ViQ2xhc3NBdHRyIiwiZXZlbnRJRCIsImRhdGFKc29uIiwiaW5wdXRfMzAzNyIsIm9wX3R5cGUiLCJPcGVyYXRpb25UeXBlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFtOUJBO0FBbjlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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bi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbmltcG9ydCBwaWNrZXJBZGRyZXNzIGZyb20gJy4uLy4uL2pzL3BpY2tlckFkZHJlc3MvcGlja2VyQWRkcmVzcy52dWUnXG5leHBvcnQgZGVmYXVsdCB7XG5cdGNvbXBvbmVudHM6IHtcblx0XHRwaWNrZXJBZGRyZXNzXG5cdH0sXG5cdGRhdGEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRpdGxlOiAn5paw5aKeJyxcblx0XHRcdHBhcmFtOiB7fSxcblx0XHRcdGNsYXNzQXR0ckxpc3Q6IFtdLFxuXHRcdFx0Y2xhc3NHcmlkU3R5bGU6IFtdLFxuXHRcdFx0ZWRpdF9pbml0YWxfZXZlbnQ6IFwiXCIsIC8v5by556qX5Yid5aeL5YyW5LqL5Lu2SURcblx0XHRcdGVkaXRfb2tfZXZlbnQ6IFwiXCIsIC8v5by556qX54K55Ye7T0sg6Kem5Y+R5LqL5Lu2SURcblx0XHRcdGVkaXRfc2VsZWN0X2NvbXBvc2VfZXZlbnQ6IFwiXCIsIC8v6YCJ5oup57uE5oiQ5a+56LGh5pe26LCD55SoXG5cdFx0XHRlZGl0X2NvbXBvc2VfY2xzX2lkOiBcIlwiLFxuXHRcdFx0Z2xvYmFsX2F0dHI6IFtdLFxuXHRcdFx0cmVmZGF0YXN0b3JlOiBbXSwgLy/lvJXnlKjmlbDmja7lrZjlgqjljLovLyB7YXR0cjonR19QUkpfJyArIGJpbmRhdHRyICsgJ19JRCcsIHZhbHVlOmluZm8uaWR9XG5cdFx0XHRzY2FuQ29kZVZhbDogXCJcIixcblx0XHRcdHN1YkNsYXNzQXR0ckxpc3Q6IFtdLFxuXHRcdFx0c3ViUGFuZWxMaXN0OiBbXSxcblx0XHRcdHN1YkNsYXNzR3JpZFN0eWxlOiBbXSxcblx0XHRcdHBvcHVwVHlwZTogXCJjZW50ZXJcIixcblx0XHRcdGNoZWNrX2xpc3Q6IHt9LFxuXHRcdH1cblx0fSxcblx0b25Mb2FkKG9wdGlvbnMpIHtcblx0XHQvLyBjb25zb2xlLmxvZyhvcHRpb25zKTtcblx0XHR1bmkuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHtcblx0XHRcdHRpdGxlOiBvcHRpb25zLnRpdGxlbmFtZVxuXHRcdH0pOyAvL+iuvue9rumhtumDqOagh+mimCBcblx0XHR2YXIgcGFyYW0gPSBKU09OLnBhcnNlKG9wdGlvbnMucGFyYW0pO1xuXHRcdHRoaXMuJGRhdGEudGl0bGUgPSBwYXJhbS5BZGRfQnRuTmFtZSA/IHBhcmFtLkFkZF9CdG5OYW1lIDogb3B0aW9ucy50aXRsZW5hbWU7IC8v6K6+572u5oyJ6ZKu5paH5a2XXG5cdFx0Y29uc29sZS5sb2cocGFyYW0pO1xuXHRcdGlmICghcGFyYW0uTWFzdGVyX0Nscy5WaWV3X1N0eWxlKSB7XG5cdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdGNvbnRlbnQ6IFwi6K+l5Yqf6IO954K55pyq6YWN572u55WM6Z2i56qX5Y+j77yM6K+36YeN5paw6YWN572u77yBXCIsXG5cdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICghcGFyYW0uTWFzdGVyX0Nscy5WaWV3X1N0eWxlLk5hbWUpIHtcblx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0Y29udGVudDogXCLor6Xlip/og73ngrnmnKrphY3nva7nqpflj6PmoLflvI/vvIzor7fph43mlrDphY3nva7vvIFcIixcblx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy4kZGF0YS5wYXJhbSA9IHBhcmFtO1xuXHRcdC8vIHZhciBlZGl0X2RsZyA9IHtcblx0XHQvLyAgICAgTW9kZWw6IHBhcmFtLkVkaXREbGdNb2RlLFxuXHRcdC8vICAgICBOYW1lOiBwYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZVxuXHRcdC8vIH1cblx0XHQvL+S4u+aVsOaNruexu+iOt+WPllxuXHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdGNsYXNzX2lkOiBwYXJhbS5NYXN0ZXJfQ2xzLklEXG5cdFx0fTtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzYXJlYUZ1bmNJRCA9IHBhcmFtLk1hc3Rlcl9DbHMuSUQ7XG5cdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdCk7XG5cdFx0aWYgKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3QpIHtcblx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QgPSAkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0F0dHJMaXN0LmRhdGE7XG5cdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8ocGFyYW0uTWFzdGVyX0Nscy5JRCwgJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5WaWV3X1N0eWxlLk5hbWUsICdNYXN0Jyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xhc3NBdHRyTGlzdCcsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCA9IHN1Y2Nlc3MuZGF0YTtcblxuXHRcdFx0XHRcdCR0aGlzLmNsYXNzR3JpZFN0eWxlSW5mbyhwYXJhbS5NYXN0ZXJfQ2xzLklELCAkdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZSxcblx0XHRcdFx0XHRcdCdNYXN0Jyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68xXCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBzdWNjZXNzLm1zZyxcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzEuMVwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8v5LuO5pWw5o2u57G76I635Y+WXG5cdFx0dmFyIHN1YmRhdGFJbmZvID0ge1xuXHRcdFx0Y2xhc3NfaWQ6IHBhcmFtLlN1Yl9DbHMuSURcblx0XHR9O1xuXHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzYXJlYUZ1bmNTdWJJRCA9IHBhcmFtLlN1Yl9DbHMuSUQ7XG5cdFx0aWYgKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN1YkNsYXNzQXR0ckxpc3QpIHtcblx0XHRcdCR0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QgPSAkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTdWJDbGFzc0F0dHJMaXN0LmRhdGE7XG5cdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8ocGFyYW0uU3ViX0Nscy5JRCwgJHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5WaWV3X1N0eWxlLk5hbWUsICdTdWInKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdzdWJDbGFzc0F0dHJMaXN0Jywgc3ViZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0ID0gc3VjY2Vzcy5kYXRhO1xuXG5cdFx0XHRcdFx0JHRoaXMuY2xhc3NHcmlkU3R5bGVJbmZvKHBhcmFtLlN1Yl9DbHMuSUQsICR0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuVmlld19TdHlsZS5OYW1lLFxuXHRcdFx0XHRcdFx0J1N1YicpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMV8xXCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBzdWNjZXNzLm1zZyxcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzFfMS4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0c2Nhbl9jbGFzc0F0dHJfZXh0QnV0dG9uKGUpIHsgLy/pgInmi6nmjInpkq7liY1cblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgQmVmb3JlX1NlbGVjdF9FdmVudCA9ICR0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5CZWZvcmVfU2VsZWN0X0V2ZW50O1xuXHRcdFx0aWYgKCFCZWZvcmVfU2VsZWN0X0V2ZW50KSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwi6YCJ5oup5YmN5LqL5Lu25Li656m677yBXCIsXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHZhciBtYXN0X2F0dHIgPSBbXTtcblx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+36YCJ5oupJykge1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBhci5EaXNwTmFtZSArIFwi5pyq6YCJ5oup5pWw5o2u77yBXCIsXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdG1hc3RfYXR0ci5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdG1hc3RfYXR0ci5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRtYXN0X2F0dHIucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdHZhciBvYmplY3RzID0gW107XG5cdFx0XHR2YXIgc3ViUGFuZWxMaXN0ID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0O1xuXHRcdFx0Zm9yICh2YXIgcyA9IDA7IHMgPCBzdWJQYW5lbExpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdFx0dmFyIHN1Yl9yZXEgPSBbXTtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dmFyIGF0dHIgPSBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyW2ldLkF0dHI7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7fpgInmi6knIHx8IGFyLlZhbHVlID09ICfigJTigJTor7fpgInmi6nigJTigJQnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5a2X5YW4JyB8fCBhci5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBhci5UeXBlID09ICflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuc2VsZWN0ID09IHRydWUpIHsgLy/liKTmlq3kuIvmi4nmmK/lkKblpJrpgIlcblx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsU3RyID0gXCJcIjtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciB2IGluIGFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsU3RyKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gXCI7XCI7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gYXIuVmFsdWVbdl07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHZhbFN0clxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XG5cdFx0XHRcdFx0XHRpZiAoYXIubm90ZW1wdHkgPT0gdHJ1ZSAmJiAhYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0Ly8gaWYoYXIuTm90RW1wdHk9PScxJyl7XG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogYXIuRGlzcE5hbWUgKyAn5LiN6IO95Li656m677yBJyxcblx0XHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRvYmplY3RzLnB1c2goe1xuXHRcdFx0XHRcdG9ial9pZDogc3ViUGFuZWxMaXN0W3NdLnNjYW5Db2RlVmFsLFxuXHRcdFx0XHRcdG9ial9hdHRyczogc3ViX3JlcVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xuXHRcdFx0XHQnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHRjbHNfaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsICAgICAvLyDlip/og73ngrnku47mlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0J2J1dHRvbic6ICd0b3AnLCAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0ZWRpdF9kbGc6IHtcblx0XHRcdFx0XHR0eXBlOiAnc21hbGwnLCAvL+Wwj+eql+WPo1xuXHRcdFx0XHRcdGNsYXNzX2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELC8v5b2T5YmN5pWw5o2u57G7aWRcblx0XHRcdFx0fSxcblx0XHRcdFx0bWFzdGVyX2Nsczoge1xuXHRcdFx0XHRcdGNsc19uYW1lOiAnTUJPWCcsIC8vJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5OYW1lLFxuXHRcdFx0XHRcdG9ial9hdHRyczogcmVxXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHN1Yl9jbHM6IHtcblx0XHRcdFx0XHRjbHNfbmFtZTogJ01CT1gnLCAvLyR0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuTmFtZSxcblx0XHRcdFx0XHRvYmplY3RzOiBvYmplY3RzXG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0XHR9O1xuXHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0Ly8gdmFyIHN1YlBhbmVsTGlzdCA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdDtcblx0XHRcdC8vIGZvciAodmFyIHMgPSAwOyBzIDwgc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHQvLyBcdHZhciBqc29uID0ge307XG5cdFx0XHQvLyBcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ci5sZW5ndGg7IGkrKykge1xuXHRcdFx0Ly8gXHRcdHZhciBhdHRyID0gc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0cltpXS5BdHRyO1xuXHRcdFx0Ly8gXHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0Ly8gXHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdC8vIFx0XHRcdGpzb25bYXIuTmFtZV0gPSBhci5WYWx1ZTtcblx0XHRcdC8vIFx0XHR9XG5cdFx0XHQvLyBcdH1cblx0XHRcdC8vIFx0cmVxLnB1c2goanNvbik7XG5cdFx0XHQvLyB9XG5cblx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRldmVudGlkOiBCZWZvcmVfU2VsZWN0X0V2ZW50LklELFxuXHRcdFx0XHRlZHR5cGU6IFwiN1wiLCAvL1wiMFwiLFxuXHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRjbHNpZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdGF0dHI6IFtdLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogcmVxLFxuXHRcdFx0XHRtYXN0X2F0dHI6IG1hc3RfYXR0cixcblx0XHRcdFx0aW5wdXRQYXJhbXRlcjogbWFzdF9hdHRyLFxuXHRcdFx0XHRlbnZpcm9tZW50OiBlbnZpcm9tZW50XG5cdFx0XHR9XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhpbmZvKTtcblx0XHRcdHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XG5cdFx0fSxcblx0XHRwb3B1cENoYW5nZShlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygn5b2T5YmN5qih5byP77yaJyArIGUudHlwZSArICcs54q25oCB77yaJyArIGUuc2hvdyk7XG5cdFx0fSxcblx0XHRjaGVja0NoYW5nZShlKSB7IC8v5by55qGGY2hlY2vpgInmi6lcblx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0LmRhdGFzZXQpO1xuXHRcdFx0dmFyIGluZGV4ID0gZS50YXJnZXQuZGF0YXNldC5pbmRleDtcblx0XHRcdHZhciBpc2NoZWNrID0gZS50YXJnZXQuZGF0YXNldC5pc2NoZWNrO1xuXHRcdFx0dmFyIGRhdGEgPSB0aGlzLiRkYXRhLmNoZWNrX2xpc3QuaXRlbXM7XG5cdFx0XHQvLyB0aGlzLiRkYXRhLmNoZWNrX2xpc3QuaXRlbXM9W107XG5cdFx0XHRpZiAodGhpcy4kZGF0YS5jaGVja19saXN0Lm11bHRpcGxlX2Nob2ljZSA9PSBcIjBcIikgeyAvL+WIpOaWreaXtuWNlemAiei/mOaYr+WkmumAiVxuXHRcdFx0XHRmb3IgKHZhciBpIGluIGRhdGEpIHtcblx0XHRcdFx0XHRkYXRhW2ldLmNoZWNrID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGRhdGFbaW5kZXhdLmNoZWNrID0gaXNjaGVjayA/IGZhbHNlIDogdHJ1ZTtcblx0XHRcdHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcyA9IGRhdGE7XG5cblx0XHR9LFxuXHRcdHBvcHVwX2NhbmNlbChlKSB7IC8v5by55qGG5Y+W5raIXG5cdFx0XHR0aGlzLiRyZWZzLnBvcHVwLmNsb3NlKCk7XG5cdFx0fSxcblx0XHRwb3B1cF9zYXZhKGUpIHsgLy/lvLnmoYbnoa7lrpog6YCJ5oup5oyJ6ZKu5ZCOXG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dmFyIEFmdGVyX1NlbGVjdF9FdmVudCA9ICR0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5BZnRlcl9TZWxlY3RfRXZlbnQ7XG5cdFx0XHRpZiAoIUFmdGVyX1NlbGVjdF9FdmVudCkge1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTogXCLmj5DnpLpcIixjb250ZW50OiBcIumAieaLqeWQjuS6i+S7tuS4uuepuu+8gVwiLHNob3dDYW5jZWw6IGZhbHNlLGNvbmZpcm1UZXh0OiBcIuWPlua2iFwifSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHZhciBpdGVtcyA9ICR0aGlzLiRkYXRhLmNoZWNrX2xpc3QuaXRlbXM7XG5cdFx0XHR2YXIgZGF0YSA9IFtdO1xuXHRcdFx0dmFyIG5hbWUgPSBcIlwiO1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAoaXRlbXNbaV0uY2hlY2sgPT0gdHJ1ZSkge1xuXHRcdFx0XHRcdGlmIChuYW1lKVxuXHRcdFx0XHRcdFx0bmFtZSArPSAnOyc7XG5cdFx0XHRcdFx0bmFtZSArPSBpdGVtc1tpXS5uYW1lO1xuXHRcdFx0XHRcdGRhdGEucHVzaCh7XG5cdFx0XHRcdFx0XHRpZDogaXRlbXNbaV0uaWQsXG5cdFx0XHRcdFx0XHRuYW1lOiBpdGVtc1tpXS5uYW1lXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChkYXRhLmxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOiBcIuaPkOekulwiLGNvbnRlbnQ6IFwi5pyq6YCJ5oup5pWw5o2u77yBXCIsc2hvd0NhbmNlbDogZmFsc2UsY29uZmlybVRleHQ6IFwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dmFyIG1hc3RfYXR0ciA9IFtdO1xuXHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7fpgInmi6knKSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTogXCLmj5DnpLpcIixjb250ZW50OiBhci5EaXNwTmFtZSArIFwi5pyq6YCJ5oup5pWw5o2u77yBXCIsc2hvd0NhbmNlbDogZmFsc2UsY29uZmlybVRleHQ6IFwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0bWFzdF9hdHRyLnB1c2goe2F0dHI6IGFyLk5hbWUsdmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ30pO1xuXHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRtYXN0X2F0dHIucHVzaCh7YXR0cjogYXIuTmFtZSx2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCd9KTtcblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRtYXN0X2F0dHIucHVzaCh7YXR0cjogYXIuTmFtZSx2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnfSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0JHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwgPSBuYW1lO1xuXHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdGV2ZW50aWQ6IEFmdGVyX1NlbGVjdF9FdmVudC5JRCxcblx0XHRcdFx0ZWR0eXBlOiBcIjdcIixcblx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0Y2xzaWQ6ICdNQk9YJyxcblx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdGF0dHI6IFt7YXR0cjogJ21hc3RfaW5wdXRfMzAzNycsdmFsdWU6IG5hbWV9XSxcblx0XHRcdFx0Z2xvYmFsX2F0dHI6IG1hc3RfYXR0cixcblx0XHRcdFx0aW5wdXRQYXJhbXRlcjogZGF0YVxuXHRcdFx0fVxuXHRcdFx0Ly8gY29uc29sZS5sb2coaW5mbyk7XG5cdFx0XHR0aGlzLnNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIFwiXCIpO1xuXHRcdFx0dGhpcy4kcmVmcy5wb3B1cC5jbG9zZSgpO1xuXHRcdH0sXG5cblx0XHRjYW5jZWwoZSkge1xuXHRcdFx0dW5pLm5hdmlnYXRlQmFjayh7XG5cdFx0XHRcdGRlbHRhOiAxIC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHRwYW5lbF9kZWwoaW5kZXgpIHtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRpZiAodGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbaW5kZXhdLnNjYW5Db2RlVmFsID09IHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5zY2FuQ29kZVZhbCA9ICcnO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCF0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtpbmRleF0uT2JqSUQpXG5cdFx0XHRcdHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0LnNwbGljZShpbmRleCwgMSk7XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRcdGNsc0lkOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXG5cdFx0XHRcdFx0b2JqSWQ6IHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2luZGV4XS5PYmpJRFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHRcdC8vIHJldHVybjtcblx0XHRcdFx0dW5pLnNob3dMb2FkaW5nKHtcblx0XHRcdFx0XHR0aXRsZTogXCLliqDovb3kuK0uLi5cIlxuXHRcdFx0XHR9KTtcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RlbE9iaicsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0LnNwbGljZShpbmRleCwgMSk7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwi5Yig6Zmk5oiQ5Yqf77yBXCIsXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor685XCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekujkuMVwiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGFzeW5jIGNsYXNzR3JpZFN0eWxlSW5mbyhjbHNpZCwgc3R5bGVOYW1lLCBjbHNUeXBlKSB7XG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dmFyIGdyaWRzdHlsZUluZm8gPSB7XG5cdFx0XHRcdGNsYXNzX2lkOiBjbHNpZCxcblx0XHRcdFx0bmFtZTogc3R5bGVOYW1lLFxuXHRcdFx0XHR0eXBlOiAnMidcblx0XHRcdH07XG5cdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0dyaWRTdHlsZUluZm8pO1xuXHRcdFx0Ly/ojrflj5bkuLvmlbDmja7nsbvnlYzpnaLmoLflvI9cblx0XHRcdGlmIChjbHNUeXBlID09ICdNYXN0Jykge1xuXHRcdFx0XHQkdGhpcy4kc3RvcmUuc3RhdGUudGhpc0VkaXROYW1lID0gc3R5bGVOYW1lO1xuXHRcdFx0XHRpZiAoJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NHcmlkU3R5bGVJbmZvKSB7XG5cdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUgPSAkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0dyaWRTdHlsZUluZm8uZGF0YTtcblx0XHRcdFx0XHQkdGhpcy5jbGFzc19hdHRyX2luaXQoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKGdyaWRzdHlsZUluZm8pO1xuXHRcdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xhc3NHcmlkU3R5bGVJbmZvJywgZ3JpZHN0eWxlSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3MuZGF0YS5TdHlsZURlZiA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhLlN0eWxlRGVmKTtcblx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUgPSBzdWNjZXNzLmRhdGE7XG5cblx0XHRcdFx0XHRcdFx0JHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68xLjJcIixcblx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiBzdWNjZXNzLm1zZyxcblx0XHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMS4zXCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcblx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChjbHNUeXBlID09ICdTdWInKSB7IC8v6I635Y+W5LuO5pWw5o2u57G755WM6Z2i5qC35byPXG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzRWRpdFN1Yk5hbWUgPSBzdHlsZU5hbWU7XG5cdFx0XHRcdGlmICgkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTdWJDbGFzc0dyaWRTdHlsZUluZm8pIHtcblx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZSA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN1YkNsYXNzR3JpZFN0eWxlSW5mby5kYXRhO1xuXHRcdFx0XHRcdCR0aGlzLnN1YkNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vY29uc29sZS5sb2coZ3JpZHN0eWxlSW5mbyk7XG5cdFx0XHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdzdWJDbGFzc0dyaWRTdHlsZUluZm8nLCBncmlkc3R5bGVJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHRcdFx0c3VjY2Vzcy5kYXRhLlN0eWxlRGVmID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEuU3R5bGVEZWYpO1xuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZSA9IHN1Y2Nlc3MuZGF0YTtcblxuXHRcdFx0XHRcdFx0XHQkdGhpcy5zdWJDbGFzc19hdHRyX2luaXQoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzEuMlwiLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68xLjNcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvbnRhcChlKSB7IC8v5omr56CB5Yqf6IO9XG5cdFx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxuXHRcdFx0Z2V0QXBwKCkub25TY2FuKChyZXN1bHQpID0+IHtcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhyZXN1bHQuZGVjb2RlZGF0YSk7XG5cdFx0XHRcdHZhciBpc1ZhbCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbXG5cdFx0XHRcdFx0J2lpbmRleCddXS5WYWx1ZTtcblx0XHRcdFx0Ly8gaWYoIWlzVmFsKXtcblx0XHRcdFx0Ly8gXHR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1yZXN1bHQuZGVjb2RlZGF0YTtcblx0XHRcdFx0Ly8gXHR2YXIgaXNWYWxkID10aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZTtcblx0XHRcdFx0Ly8gXHRyZXR1cm47XG5cdFx0XHRcdC8vIH1cblx0XHRcdFx0Ly/kuLvmlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cblx0XHRcdFx0aWYgKGlzVmFsICE9IHJlc3VsdC5kZWNvZGVkYXRhKSB7XG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dXG5cdFx0XHRcdFx0XHQuVmFsdWUgPSByZXN1bHQuZGVjb2RlZGF0YTtcblx0XHRcdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XG5cdFx0XHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHljLrkuovku7bohJrmnKxcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLklucHV0X0NoYW5nZV9FdmVudC5JRDtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0OyAvL+S4u+aVsOaNruexu+WxnuaAp1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiN1wiLCAvL1wiMFwiLFxuXHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0XHRjbHNpZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHRcdFx0bWFzdF9hdHRyOiBbXSxcblx0XHRcdFx0XHRcdFx0aW5wdXRQYXJhbXRlcjogW3tcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiAnbWFzdF9pbnB1dF8zMDM3Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcmVzdWx0LmRlY29kZWRhdGFcblx0XHRcdFx0XHRcdFx0fV1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0fSxcblx0XHRzdWJvbnRhcChlKSB7IC8v5omr56CB5Yqf6IO9XG5cdFx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxuXHRcdFx0Z2V0QXBwKCkub25TY2FuKChyZXN1bHQpID0+IHtcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhyZXN1bHQuZGVjb2RlZGF0YSk7XG5cdFx0XHRcdHZhciBpc1ZhbCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbXG5cdFx0XHRcdFx0J2lpbmRleCddXS5WYWx1ZTtcblx0XHRcdFx0Ly/kuLvmlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cblx0XHRcdFx0aWYgKGlzVmFsICE9IHJlc3VsdC5kZWNvZGVkYXRhKSB7XG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dXG5cdFx0XHRcdFx0XHQuVmFsdWUgPSByZXN1bHQuZGVjb2RlZGF0YTtcblx0XHRcdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XG5cdFx0XHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHljLrkuovku7bohJrmnKxcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLklucHV0X0NoYW5nZV9FdmVudC5JRDtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0OyAvL+S4u+aVsOaNruexu+WxnuaAp1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiN1wiLCAvL1wiMFwiLFxuXHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0XHRjbHNpZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHRcdFx0bWFzdF9hdHRyOiBbXSxcblx0XHRcdFx0XHRcdFx0aW5wdXRQYXJhbXRlcjogW3tcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiAnbWFzdF9pbnB1dF8zMDM3Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcmVzdWx0LmRlY29kZWRhdGFcblx0XHRcdFx0XHRcdFx0fV1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0fSxcblx0XHRzY2FuX29udGFwKGUpIHsgLy/miavnoIHljLrmiavnoIHlip/og71cblx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXG5cdFx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhyZXN1bHQuZGVjb2RlZGF0YSk7XG5cdFx0XHRcdHZhciBpc2ZsYWcgPSB0cnVlO1xuXHRcdFx0XHRmb3IgKHZhciBpIGluIHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0KSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2ldLnNjYW5Db2RlVmFsID09IHJlc3VsdC5kZWNvZGVkYXRhKVxuXHRcdFx0XHRcdFx0aXNmbGFnID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cblx0XHRcdFx0aWYgKGlzZmxhZykge1xuXHRcdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsID0gcmVzdWx0LmRlY29kZWRhdGE7XG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5JbnB1dF9DaGFuZ2VfRXZlbnQuSUQ7XG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdHZhciBtYXN0X3JlcSA9IFtdO1xuXHRcdFx0XHRcdFx0Ly/kuLvmlbDmja7nsbvlsZ7mgKdcblx0XHRcdFx0XHRcdHZhciBjbGFzc2F0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBjbGFzc2F0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gY2xhc3NhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRcdG1hc3RfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0bWFzdF9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0bWFzdF9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0XHQvL+WtkOaVsOaNruexu+WxnuaAp1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRlZHR5cGU6ICc3JywgLy9cIjBcIixcblx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRhdHRyOiByZXEsXG5cdFx0XHRcdFx0XHRcdG1hc3RfYXR0cjogbWFzdF9yZXEsXG5cdFx0XHRcdFx0XHRcdGlucHV0UGFyYW10ZXI6IFt7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogJ2lucHV0XzMwMzcnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiB0aGlzLiRkYXRhLnNjYW5Db2RlVmFsXG5cdFx0XHRcdFx0XHRcdH1dXG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0sXG5cdFx0c2Nhbl9vbmV2ZW50KGUpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcblx0XHRcdGlmIChlLnRhcmdldC52YWx1ZSkge1xuXHRcdFx0XHR2YXIgaXNmbGFnID0gdHJ1ZTtcblx0XHRcdFx0Zm9yICh2YXIgaSBpbiB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdCkge1xuXHRcdFx0XHRcdGlmICh0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtpXS5zY2FuQ29kZVZhbCA9PSBlLnRhcmdldC52YWx1ZSlcblx0XHRcdFx0XHRcdGlzZmxhZyA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8v5a2Q5pWw5o2u57G75omr56CB5p+l6K+i5pWw5o2uXG5cdFx0XHRcdGlmIChpc2ZsYWcpIHtcblx0XHRcdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5zY2FuQ29kZVZhbCA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5wYXJhbS5TY2FuX0NvZGUuSW5wdXRfQ2hhbmdlX0V2ZW50LklEO1xuXHRcdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHR2YXIgbWFzdF9yZXEgPSBbXTtcblx0XHRcdFx0XHRcdC8v5Li75pWw5o2u57G75bGe5oCnXG5cdFx0XHRcdFx0XHR2YXIgY2xhc3NhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgY2xhc3NhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGNsYXNzYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0XHRtYXN0X3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdG1hc3RfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdG1hc3RfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdFx0Ly/lrZDmlbDmja7nsbvlsZ7mgKdcblx0XHRcdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0ZWR0eXBlOiAnNycsIC8vXCIwXCIsXG5cdFx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRcdGNsc2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdFx0XHRtYXN0X2F0dHI6IG1hc3RfcmVxLFxuXHRcdFx0XHRcdFx0XHRpbnB1dFBhcmFtdGVyOiBbe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6ICdpbnB1dF8zMDM3Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdGhpcy4kZGF0YS5zY2FuQ29kZVZhbFxuXHRcdFx0XHRcdFx0XHR9XVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR0aGlzLnNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIFwiXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0b25hcnJvdyhpbmRleCwgb3Blbikge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coaW5kZXgrJy0tJytvcGVuKTtcblx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uT3Blbjtcblx0XHRcdGlmICghZGF0YV9hdHRyKSB7XG5cdFx0XHRcdHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZVxuXHRcdFx0XHRcdC50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gb3BlbiA9PSB0cnVlID8gZmFsc2UgOiB0cnVlO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbaW5kZXhdLk9wZW4gPSBvcGVuID09IHRydWUgPyBmYWxzZSA6XG5cdFx0XHRcdHRydWU7XG5cdFx0fSxcblx0XHRvbmRhdGVUaW1lKGUpIHtcblx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXG5cdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlO1xuXHRcdFx0aWYgKCFkYXRhX2F0dHIpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlXG5cdFx0XHRcdFx0LnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gZS50YXJnZXRcblx0XHRcdC52YWx1ZTtcblxuXHRcdH0sXG5cdFx0b25jaGFuZ2UoZSkge1xuXHRcdFx0Y29uc29sZS5sb2coZS50YXJnZXQpO1xuXHRcdFx0dmFyIHZhbHVlID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmRpY3RpdGVtW2Vcblx0XHRcdFx0LnRhcmdldC52YWx1ZV07XG5cdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xuXHRcdFx0Y29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdGlmICh2YWx1ZS5OYW1lICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSB2YWx1ZVxuXHRcdFx0XHQuTmFtZTtcblx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dXG5cdFx0XHRcdC5WYWx1ZSk7XG5cdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dXG5cdFx0XHRcdFx0LmFjdGlvbjtcblx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHQvLyBzZWxmLmV2ZW50X25vX3N1YiA9IDE7XG5cdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0sXG5cdFx0b25jaGFuZ2UyKGl0ZW0sIHZhbHVlLCBkZWx2YWx1ZSkge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coaXRlbSk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyh2YWx1ZSk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhkZWx2YWx1ZSk7XG5cdFx0XHRpZiAoaXRlbS5sZW5ndGggPT0gMCkgeyAvL+S4uuepuuaXtu+8jOa4heepuuWxnuaAp3ZhbHVlXG5cdFx0XHRcdHZhciBpbmRleCwgaWluZGV4LCBkaW5kZXggPSAwO1xuXHRcdFx0XHRmb3IgKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCkge1xuXHRcdFx0XHRcdGZvciAodmFyIGogaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHIpIHtcblx0XHRcdFx0XHRcdGlmIChkZWx2YWx1ZVswXS5hdHRyID09IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uVmFsdWUgPSBcIlwiO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKHZhciB2IGluIGl0ZW0pIHtcblx0XHRcdFx0dmFyIGluZGV4LCBpaW5kZXgsIGRpbmRleCA9IDA7XG5cdFx0XHRcdGZvciAodmFyIGkgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0KSB7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaiBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cikge1xuXHRcdFx0XHRcdFx0aWYgKGl0ZW1bdl0uYXR0ciA9PSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5OYW1lKSB7XG5cdFx0XHRcdFx0XHRcdGluZGV4ID0gaTtcblx0XHRcdFx0XHRcdFx0aWluZGV4ID0gajtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGl0ZW12YWx1ZSA9IGl0ZW1bdl07XG5cdFx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0XHRpZiAoaXRlbXZhbHVlLk5hbWUgIT0gZGF0YV9hdHRyLlZhbHVlKSB7XG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uVmFsdWUgPSB2YWx1ZTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5WYWx1ZSk7XG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5hY3Rpb247XG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeaVtOaVsCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbDogaXRlbXZhbHVlLk5hbWVcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cblx0XHR9LFxuXHRcdHN1Yl9vbmNoYW5nZShlKSB7XG5cdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHR2YXIgdmFsdWUgPSB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXVxuXHRcdFx0XHQuQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uZGljdGl0ZW1bZS50YXJnZXQudmFsdWVdO1xuXHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbXG5cdFx0XHRcdCdpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XG5cdFx0XHRpZiAodmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlXG5cdFx0XHRcdFx0LnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSB2YWx1ZS5OYW1lO1xuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0W1xuXHRcdFx0XHRcdCdpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSk7XG5cdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFtcblx0XHRcdFx0XHQnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uYWN0aW9uO1xuXHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHI7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRhdHRyOiByZXEsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9LFxuXHRcdHN1Yl9vbmNoYW5nZTIoaXRlbSwgdmFsdWUsIGRlbHZhbHVlKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhpdGVtKTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKHZhbHVlKTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGRlbHZhbHVlKTtcblx0XHRcdHZhciBzdWJDbGFzc0F0dHIgPSB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cjtcblx0XHRcdGlmIChpdGVtLmxlbmd0aCA9PSAwKSB7IC8v5Li656m65pe277yM5riF56m65bGe5oCndmFsdWVcblx0XHRcdFx0dmFyIGluZGV4LCBpaW5kZXgsIGRpbmRleCA9IDA7XG5cdFx0XHRcdGZvciAodmFyIGkgaW4gc3ViQ2xhc3NBdHRyKSB7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaiBpbiBzdWJDbGFzc0F0dHJbaV0uQXR0cikge1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgZCBpbiBzdWJDbGFzc0F0dHJbaV0uQXR0cltqXS5kaWN0aXRlbSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoZGVsdmFsdWVbMF0uTmFtZSA9PSBzdWJDbGFzc0F0dHJbaV0uQXR0cltqXS5kaWN0aXRlbVtkXS5OYW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0c3ViQ2xhc3NBdHRyW2ldLkF0dHJbal0uVmFsdWUgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAodmFyIHYgaW4gaXRlbSkge1xuXHRcdFx0XHR2YXIgaW5kZXgsIGlpbmRleCwgZGluZGV4ID0gMDtcblx0XHRcdFx0Zm9yICh2YXIgaSBpbiBzdWJDbGFzc0F0dHIpIHtcblx0XHRcdFx0XHRmb3IgKHZhciBqIGluIHN1YkNsYXNzQXR0cltpXS5BdHRyKSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBkIGluIHN1YkNsYXNzQXR0cltpXS5BdHRyW2pdLmRpY3RpdGVtKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChpdGVtW3ZdLk5hbWUgPT0gc3ViQ2xhc3NBdHRyW2ldLkF0dHJbal0uZGljdGl0ZW1bZF0uTmFtZSkge1xuXHRcdFx0XHRcdFx0XHRcdGluZGV4ID0gaTtcblx0XHRcdFx0XHRcdFx0XHRpaW5kZXggPSBqO1xuXHRcdFx0XHRcdFx0XHRcdGRpbmRleCA9IGQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGl0ZW12YWx1ZSA9IGl0ZW1bdl07XG5cdFx0XHRcdHZhciBkYXRhX2F0dHIgPSBzdWJDbGFzc0F0dHJbaW5kZXhdLkF0dHJbaWluZGV4XTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0XHRpZiAoaXRlbXZhbHVlLk5hbWUgIT0gZGF0YV9hdHRyLlZhbHVlKSB7XG5cdFx0XHRcdFx0c3ViQ2xhc3NBdHRyW2luZGV4XS5BdHRyW2lpbmRleF0uVmFsdWUgPSB2YWx1ZTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhzdWJDbGFzc0F0dHJbaW5kZXhdLkF0dHJbaWluZGV4XS5WYWx1ZSk7XG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSBzdWJDbGFzc0F0dHJbaW5kZXhdLkF0dHJbaWluZGV4XS5hY3Rpb247XG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0XHRcdHZhciBhdHRybGlzdCA9IHN1YkNsYXNzQXR0cjtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeaVtOaVsCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbDogaXRlbXZhbHVlLk5hbWVcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cblx0XHR9LFxuXHRcdG9uZXZlbnQoZSkge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQpO1xuXHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdGlmICghZGF0YV9hdHRyKSB7XG5cdFx0XHRcdHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZVxuXHRcdFx0XHRcdC50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gZS50YXJnZXQudmFsdWU7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdC8vIGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XG5cdFx0XHRpZiAoZS50YXJnZXQudmFsdWUgIT0gZGF0YV9hdHRyLlZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSA9IGUudGFyZ2V0XG5cdFx0XHRcdFx0LnZhbHVlO1xuXHRcdFx0XHQvLyB2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5hY3Rpb247XG5cdFx0XHRcdC8v5a2Q5pWw5o2u57G75omr56CB5Yy65LqL5Lu26ISa5pysXG5cdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5wYXJhbS5TY2FuX0NvZGUuSW5wdXRfQ2hhbmdlX0V2ZW50LklEO1xuXHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0OyAvL+S4u+aVsOaNruexu+WxnuaAp1xuXHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdGVkdHlwZTogXCI3XCIsIC8vXCIwXCIsXG5cdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0Y2xzaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHRcdG1hc3RfYXR0cjogW10sXG5cdFx0XHRcdFx0XHRpbnB1dFBhcmFtdGVyOiBbe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiAnbWFzdF9pbnB1dF8zMDM3Jyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGUudGFyZ2V0LnZhbHVlXG5cdFx0XHRcdFx0XHR9XVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0sXG5cdFx0b25jaGVjayhlKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHR2YXIgaXNjaGVja2VkID0gZS50YXJnZXQuZGF0YXNldC5pc2NoZWNrID8gZmFsc2UgOiB0cnVlO1xuXHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdGlmICghZGF0YV9hdHRyKSB7XG5cdFx0XHRcdHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZVxuXHRcdFx0XHRcdC50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gaXNjaGVja2VkO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0aWYgKGlzY2hlY2tlZCAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gaXNjaGVja2VkO1xuXHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXVxuXHRcdFx0XHRcdC5hY3Rpb247XG5cdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0Ly8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0sXG5cdFx0aW5wdXRWYWxMaXN0SXNEZWwoaW5kZXgpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGluZGV4KTtcblx0XHRcdHRoaXMuJGRhdGEuaW5wdXRWYWxMaXN0LnNwbGljZShpbmRleCwgMSk7IC8v5Yig6ZmkdGFiUGFnZWpzb27nmoTlhoXlrrlcblx0XHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuaW5wdXRWYWxMaXN0KTtcblx0XHR9LFxuXHRcdGFkZHJlc3NjaGFuZ2UoZSkge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQpO1xuXHRcdFx0Y29uc29sZS5sb2coZS5kYXRhLmpvaW4oJzsnKSlcblx0XHRcdHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSA9IGUuZGF0YVxuXHRcdFx0XHQuam9pbignOycpO1xuXHRcdH0sXG5cdFx0Y2xhc3NBdHRyX2V4dEJ1dHRvbihpbmRleCwgaWluZGV4KSB7XG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dmFyIGJlZm9yZV9jbGlja19idXR0b24gPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uYmVmb3JlX2NsaWNrX2J1dHRvbjtcblx0XHRcdHZhciBidXR0b25fY2FsbGJhY2sgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uYnV0dG9uX2NhbGxiYWNrO1xuXHRcdFx0aWYgKCFiZWZvcmVfY2xpY2tfYnV0dG9uKSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwiYmVmb3JlX2NsaWNrX2J1dHRvbi1ldmVudF9pZOS4uuepuu+8gVwiLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWJ1dHRvbl9jYWxsYmFjaykge1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRjb250ZW50OiBcImJ1dHRvbl9jYWxsYmFjay1ldmVudF9pZOS4uuepuu+8gVwiLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF07XG5cdFx0XHR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudF9SZXR1cm4oYmVmb3JlX2NsaWNrX2J1dHRvbiwgZGF0YV9hdHRyLCBidXR0b25fY2FsbGJhY2ssIGluZGV4LCBpaW5kZXgpO1xuXHRcdH0sXG5cdFx0Y2xhc3NBdHRyX0FkZFBlcihpbmRleCwgaWluZGV4KSB7XG5cdFx0XHR2YXIgcGFyYW0gPSB7XG5cdFx0XHRcdGluZGV4OiBpbmRleCxcblx0XHRcdFx0aWluZGV4OiBpaW5kZXhcblx0XHRcdH07XG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHR1cmw6ICcuLi9zZWxwc24vaW5kZXg/bXVsaXQ9ZmFsc2UmcGFyYW09JyArIEpTT04uc3RyaW5naWZ5KHBhcmFtKSxcblx0XHRcdFx0ZXZlbnRzOiB7XG5cdFx0XHRcdFx0QWRkUGVyKGRhdGEsIHBhcmFtKSB7XG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhwYXJhbSk7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhKTtcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWx1ZSA9IGRhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWxJRCA9IGRhdGFbMF0uTG9naW4gKyAnOycgK1xuXHRcdFx0XHRcdFx0XHRkYXRhWzBdLk5hbWU7XG5cblx0XHRcdFx0XHRcdHZhciBldmVudGlkID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLmFjdGlvbjtcblx0XHRcdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiNFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0cmNsc2lkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0cm9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiBkYXRhWzBdLkxvZ2luLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IFtdLFxuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdC8vIHZhciBkYXRhX2F0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF07XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdGNsYXNzQXR0cl9BZGRSZWYoZSkge1xuXHRcdFx0Y29uc29sZS5sb2coZS50YXJnZXQpO1xuXHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRjb250ZW50OiBcIuatpOWKn+iDvei/mOacquWunueOsO+8gVwiLFxuXHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdH0pO1xuXHRcdFx0Ly8gdmFyIHZhbHVlPXRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5SZWxDbHNbZS50YXJnZXQudmFsdWVdO1xuXHRcdFx0Ly8gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPXZhbHVlO1xuXHRcdH0sXG5cdFx0Y2xhc3NBdHRyX0FkZFByaihpbmRleCwgaWluZGV4KSB7XG5cdFx0XHR2YXIgcGFyYW0gPSB7XG5cdFx0XHRcdGluZGV4OiBpbmRleCxcblx0XHRcdFx0aWluZGV4OiBpaW5kZXhcblx0XHRcdH07XG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHR1cmw6ICcuLi9zZWxQcmovaW5kZXg/cmVsYXRpb249LTEmcGFyYW09JyArIEpTT04uc3RyaW5naWZ5KHBhcmFtKSxcblx0XHRcdFx0ZXZlbnRzOiB7XG5cdFx0XHRcdFx0QWRkUGVyKGRhdGEsIHBhcmFtKSB7XG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhwYXJhbSk7XG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhkYXRhKTtcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWx1ZSA9IGRhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWxJRCA9IGRhdGFbMF0uSUQgKyAnOycgK1xuXHRcdFx0XHRcdFx0XHRkYXRhWzBdLk5hbWU7XG5cblx0XHRcdFx0XHRcdHZhciBldmVudGlkID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLmFjdGlvbjtcblx0XHRcdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiMlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiBkYXRhWzBdLklELFxuXHRcdFx0XHRcdFx0XHRcdFx0cmNsc2lkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0cm9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IFtdLFxuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdC8vIHZhciBkYXRhX2F0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF07XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdHNhdmEoKSB7XG5cdFx0XHRpZiAodGhpcy4kZGF0YS5wYXJhbS5CZWZvcmVfT0tfRXZlbnQpIC8v5Yik5pat5Yqf6IO954K55Y+C5pWw5piv5ZCm5pyJ56Gu5a6a5YmN6ISa5pysXG5cdFx0XHRcdHRoaXMuc2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudCh0aGlzLiRkYXRhLnBhcmFtLkJlZm9yZV9PS19FdmVudC5JRCk7XG5cdFx0XHRlbHNlIGlmICh0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX09LX0V2ZW50KSAvL+WIpOaWreWKn+iDveeCueWPguaVsOaYr+WQpuacieehruWumuWQjuiEmuacrFxuXHRcdFx0XHR0aGlzLnNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQodGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudC5JRCk7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZUJhY2soe1xuXHRcdFx0XHRcdGRlbHRhOiAxXG5cdFx0XHRcdH0pOyAvL+i/lOWbnuWxguaVsO+8jDLliJnkuIrkuIrpobVcblx0XHR9LFxuXHRcdGFkZCgpIHtcblx0XHRcdHVuaS5zaG93TG9hZGluZyh7XG5cdFx0XHRcdHRpdGxlOiBcIuWKoOi9veS4rS4uLlwiLFxuXHRcdFx0XHRtYXNrOiB0cnVlXG5cdFx0XHR9KTtcblx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+36YCJ5oupJyB8fCBhci5WYWx1ZSA9PSAn4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdG5hbWU6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdG5hbWU6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5a2X5YW4JyB8fCBhci5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBhci5UeXBlID09ICflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0aWYgKGFyLnNlbGVjdCA9PSB0cnVlKSB7IC8v5Yik5pat5LiL5ouJ5piv5ZCm5aSa6YCJXG5cdFx0XHRcdFx0XHRcdHZhciB2YWxTdHIgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciB2IGluIGFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHZhbFN0cilcblx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBcIjtcIjtcblx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gYXIuVmFsdWVbdl07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHZhbFN0clxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWVcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdG5hbWU6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0aWYgKGFyLm5vdGVtcHR5ID09IHRydWUgJiYgIWFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHQvLyBpZihhci5Ob3RFbXB0eT09JzEnKXtcblx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdFx0Ly8gdW5pLnNob3dUb2FzdCh7dGl0bGU6YXIuRGlzcE5hbWUrJ+S4jeiDveS4uuepuu+8gScsaWNvbjpcInN1Y2Nlc3NcIixkdXJhdGlvbjozMDAwfSk7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFyLkRpc3BOYW1lICsgJ+S4jeiDveS4uuepuu+8gScsXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR2YXIgZW52aXJvbWVudCA9IHtcblx0XHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHRtYXN0ZXI6IHtcblx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELFxuXHRcdFx0XHRkYXRhX29ial9pZDogJycsXG5cdFx0XHRcdG1hc3RlcmNsc2lkOiAnJyxcblx0XHRcdFx0cmVxOiBKU09OLnN0cmluZ2lmeShyZXEpLFxuXHRcdFx0XHR1cGZpbGU6IEpTT04uc3RyaW5naWZ5KFtdKSxcblx0XHRcdFx0cG9zdF9kYXRhOiBKU09OLnN0cmluZ2lmeSh7fSksXG5cdFx0XHRcdGNvbXBvc2U6IEpTT04uc3RyaW5naWZ5KFtdKSxcblx0XHRcdFx0cmVmZGF0YXN0b3JlOiBKU09OLnN0cmluZ2lmeShbXSksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLFxuXHRcdFx0XHRub3RfdHJpZ2dlcl9zeXNfZXZlbnQ6ICcnXG5cdFx0XHR9O1xuXG5cdFx0XHQvLyByZXR1cm5cblx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRjbGFzc2F0dHInLCBkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHR2YXIgYWN0aW9uID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEuQWN0aW9uKTtcblx0XHRcdFx0XHRpZiAoYWN0aW9uLnJldCA9PSAnMCcpIHtcblx0XHRcdFx0XHRcdGlmIChhY3Rpb24ucmVzdWx0X3R5cGUgPT0gJzAnKSB7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBhY3Rpb24ucmVzdWx0LFxuXHRcdFx0XHRcdFx0XHRcdGljb246IFwic3VjY2Vzc1wiLFxuXHRcdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAzMDAwXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly8gXCJ7XCJyZXRcIjowLCBcInJlc3VsdF90eXBlXCI6MCwgXCJyZXN1bHRcIjpcIuWIm+W7uuaIkOWKnzEyMzEyMzEyM1wiLFwiaW5mb1wiOlwiXCJ9XCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly/liLfmlrBcblx0XHRcdFx0XHR1bmkucmVkaXJlY3RUbyh7XG5cdFx0XHRcdFx0XHR1cmw6ICcuLi9tb2RhbC9tc19jbGFzc0F0dHI/cGFyYW09JyArIEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEucGFyYW0pICtcblx0XHRcdFx0XHRcdFx0XCImdGl0bGVuYW1lPVwiICsgdGhpcy4kZGF0YS50aXRsZVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdC8vIHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor69cIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0Y2xhc3NfYXR0cl9pbml0KCkge1xuXHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5zaG93X3N0eWxlXG5cdFx0XHR2YXIgbmV3YXR0cmxpc3QgPSBbXTtcblx0XHRcdGlmICh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dmFyIG9wZW4gPSBhdHRybGlzdFtpXS5vcGVuO1xuXHRcdFx0XHRcdHZhciBuYW1lID0gYXR0cmxpc3RbaV0uYXR0cmdyb3VwX25hbWU7XG5cdFx0XHRcdFx0dmFyIGF0dHJzID0gYXR0cmxpc3RbaV0uYXR0cnM7XG5cdFx0XHRcdFx0Zm9yICh2YXIgcyA9IDA7IHMgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdFx0XHRcdHZhciBjbHNhdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3NdO1xuXHRcdFx0XHRcdFx0aWYgKG5hbWUgPT0gY2xzYXR0ci5OYW1lKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gW107XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0cnMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBsID0gMDsgbCA8IGNsc2F0dHIuQXR0ci5sZW5ndGg7IGwrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGNhID0gY2xzYXR0ci5BdHRyW2xdO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJzW2pdLmF0dHIgPT0gY2EuTmFtZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5hY3Rpb24gPSBhdHRyc1tqXS5hY3Rpb247XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmVkaXQgPSBhdHRyc1tqXS5lZGl0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5ub3RlbXB0eSA9IGF0dHJzW2pdLm5vdGVtcHR5O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5leHRfYnV0dG9uID0gYXR0cnNbal0uZXh0X2J1dHRvbjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYnV0dG9uX2ltZyA9IGF0dHJzW2pdLmJ1dHRvbl9pbWc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmJ1dHRvbl90b29sdGlwID0gYXR0cnNbal0uYnV0dG9uX3Rvb2x0aXA7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmJlZm9yZV9jbGlja19idXR0b24gPSBhdHRyc1tqXS5iZWZvcmVfY2xpY2tfYnV0dG9uO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5idXR0b25fY2FsbGJhY2sgPSBhdHRyc1tqXS5idXR0b25fY2FsbGJhY2s7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmhpZGRlbiA9IGF0dHJzW2pdLmhpZGRlbjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2Euc2VsZWN0ID0gYXR0cnNbal0uc2VsZWN0ID09IHVuZGVmaW5lZCA/IGZhbHNlIDogYXR0cnNbal0uc2VsZWN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5kaWN0aXRlbSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5zZWxlY3QgPT0gdHJ1ZSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gW107IC8vY2EuZGljdGl0ZW1bMF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivt+mAieaLqSc7IC8vY2EuZGljdGl0ZW1bMF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0aXRlbWxpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBkID0gMDsgZCA8IGNhLmRpY3RpdGVtLmxlbmd0aDsgZCsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS5sYWJlbCA9IGNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtW2RdLnZhbHVlID0gY2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0uYXR0ciA9IGNhLk5hbWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuZGljdGl0ZW1bZF0uQ05fQ19JU19ERUZBVUxUID09ICcxJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBjYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5UeXBlID09ICfml6XmnJ8nIHx8IGNhLlR5cGUgPT0gJ+aXtumXtCcpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbm93RGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRhdGUgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR5ZWFyOiBub3dEYXRlLmdldEZ1bGxZZWFyKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtb250aDogbm93RGF0ZS5nZXRNb250aCgpICsgMSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRheTogbm93RGF0ZS5nZXREYXRlKClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBkYXRlLnllYXIgKyAnLScgKyAoZGF0ZS5tb250aCA+PSAxMCA/IGRhdGUubW9udGggOiAnMCcgKyBkYXRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQubW9udGgpICsgJy0nICsgKGRhdGUuZGF5ID49IDEwID8gZGF0ZS5kYXkgOiAnMCcgKyBkYXRlLmRheSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByZWxDbHNMaXN0ID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHJfcmVzY2xzID0gY2EuUmVsQ2xzLnNwbGl0KCcsJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaWkgaW4gYXR0cl9yZXNjbHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByZXNjbHMgPSBhdHRyX3Jlc2Nsc1tpaV0uc3BsaXQoJ3wnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlbENsc0xpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkOiByZXNjbHNbMF0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IHJlc2Nsc1sxXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlJlbENsc0xpc3QgPSByZWxDbHNMaXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivtyc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+ecgeW4guWMuicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+36YCJ5oupJztcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBmYWxzZTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyLnB1c2goY2EpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRuZXdhdHRybGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRCa0NvbG9yOiBjbHNhdHRyLkJrQ29sb3IsXG5cdFx0XHRcdFx0XHRcdFx0SGFzQWNlOiBjbHNhdHRyLkhhc0FjZSxcblx0XHRcdFx0XHRcdFx0XHRJbWdGb250U3R5bGU6IGNsc2F0dHIuSW1nRm9udFN0eWxlLFxuXHRcdFx0XHRcdFx0XHRcdE5hbWU6IGNsc2F0dHIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRPcmRlcjogY2xzYXR0ci5PcmRlcixcblx0XHRcdFx0XHRcdFx0XHRPcGVuOiBvcGVuLFxuXHRcdFx0XHRcdFx0XHRcdEF0dHI6IGF0dHIsXG5cdFx0XHRcdFx0XHRcdFx0Y29udHJvbF9zdHlsZTogdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5jb250cm9sX3N0eWxlLFxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlX3Bfd2RpdGg6IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYudGl0bGVfcF93ZGl0aCxcblx0XHRcdFx0XHRcdFx0XHRGb250OiB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLkZvbnQgPyB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlXG5cdFx0XHRcdFx0XHRcdFx0XHQuU3R5bGVEZWYuRm9udCA6IHt9LFxuXHRcdFx0XHRcdFx0XHRcdEJrX0NvbG9yOiB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLkJrX0NvbG9yID8gdGhpcy4kZGF0YVxuXHRcdFx0XHRcdFx0XHRcdFx0LmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLkJrX0NvbG9yIDogJyNGRkZGRkYnLFxuXHRcdFx0XHRcdFx0XHRcdFRleHRfQ29sb3I6IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuVGV4dF9Db2xvciA/IHRoaXMuJGRhdGFcblx0XHRcdFx0XHRcdFx0XHRcdC5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5UZXh0X0NvbG9yIDogJyMwMDAwMDAnXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChuZXdhdHRybGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gbmV3YXR0cmxpc3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRpZiAodGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZikge1xuXHRcdFx0XHRcdGlmICh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5zaG93X3N0eWxlXG5cdFx0XHRcdFx0XHQvLyAkZWwuZmluZCgnLmF0dHJfZmllbGQnKS5wcm9wKCdyZWFkb25seScsIHRydWUpO1xuXHRcdFx0XHRcdFx0Ly8gJGVsLmZpbmQoJy5hdHRyX2ZpZWxkJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5hdHRyc1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLmF0dHIsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIudmFsdWUgPyBhci52YWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR2YXIgZXZlbnRsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5ldmVudDtcblx0XHRcdFx0aWYgKGV2ZW50bGlzdCkge1xuXHRcdFx0XHRcdGlmIChldmVudGxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBldmVudGxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnYmVmb3JlX29rJykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuZWRpdF9va19ldmVudCA9IGV2ZW50bGlzdFtpXTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2luaXRpYWwnKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudCA9IGV2ZW50bGlzdFtpXTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2JlZm9yZV9zZWxlY3RfY29tcG9zZScpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmVkaXRfc2VsZWN0X2NvbXBvc2VfZXZlbnQgPSBldmVudGxpc3RbaV0uc2NyaXBfaWQ7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5lZGl0X2NvbXBvc2VfY2xzX2lkID0gZXZlbnRsaXN0W2ldLmNvbXBvc2VfY2xzX2lkO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlcSk7XG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50KSB7XG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50LnNjcmlwX2lkO1xuXHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmluaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwi5pyq5om+5Yiw5Y+v5pi+56S655qE55qE5bGe5oCnXCIsXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRzdWJDbGFzc19hdHRyX2luaXQoKSB7XG5cdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcblx0XHRcdHZhciBuZXdhdHRybGlzdCA9IFtdO1xuXHRcdFx0aWYgKHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR2YXIgb3BlbiA9IGF0dHJsaXN0W2ldLm9wZW47XG5cdFx0XHRcdFx0dmFyIG5hbWUgPSBhdHRybGlzdFtpXS5hdHRyZ3JvdXBfbmFtZTtcblx0XHRcdFx0XHR2YXIgYXR0cnMgPSBhdHRybGlzdFtpXS5hdHRycztcblx0XHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHRcdFx0dmFyIGNsc2F0dHIgPSB0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3Rbc107XG5cdFx0XHRcdFx0XHRpZiAobmFtZSA9PSBjbHNhdHRyLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBbXTtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRycy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGwgPSAwOyBsIDwgY2xzYXR0ci5BdHRyLmxlbmd0aDsgbCsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgY2EgPSBjbHNhdHRyLkF0dHJbbF07XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cnNbal0uYXR0ciA9PSBjYS5OYW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmFjdGlvbiA9IGF0dHJzW2pdLmFjdGlvbjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZWRpdCA9IGF0dHJzW2pdLmVkaXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLm5vdGVtcHR5ID0gYXR0cnNbal0ubm90ZW1wdHk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmV4dF9idXR0b24gPSBhdHRyc1tqXS5leHRfYnV0dG9uO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5idXR0b25faW1nID0gYXR0cnNbal0uYnV0dG9uX2ltZztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYnV0dG9uX3Rvb2x0aXAgPSBhdHRyc1tqXS5idXR0b25fdG9vbHRpcDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYmVmb3JlX2NsaWNrX2J1dHRvbiA9IGF0dHJzW2pdLmJlZm9yZV9jbGlja19idXR0b247XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmJ1dHRvbl9jYWxsYmFjayA9IGF0dHJzW2pdLmJ1dHRvbl9jYWxsYmFjaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuaGlkZGVuID0gYXR0cnNbal0uaGlkZGVuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5zZWxlY3QgPSBhdHRyc1tqXS5zZWxlY3QgPT0gdW5kZWZpbmVkID8gZmFsc2UgOiBhdHRyc1tqXS5zZWxlY3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gXCJcIjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLmRpY3RpdGVtKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLnNlbGVjdCA9PSB0cnVlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBbXTsgLy9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+36YCJ5oupJzsgLy9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RpdGVtbGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgPSAwOyBkIDwgY2EuZGljdGl0ZW0ubGVuZ3RoOyBkKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtW2RdLmxhYmVsID0gY2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0udmFsdWUgPSBjYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS5hdHRyID0gY2EuTmFtZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5kaWN0aXRlbVtkXS5DTl9DX0lTX0RFRkFVTFQgPT0gJzEnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+aXpeacnycgfHwgY2EuVHlwZSA9PSAn5pe26Ze0Jykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBub3dEYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGF0ZSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHllYXI6IG5vd0RhdGUuZ2V0RnVsbFllYXIoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1vbnRoOiBub3dEYXRlLmdldE1vbnRoKCkgKyAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF5OiBub3dEYXRlLmdldERhdGUoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGRhdGUueWVhciArICctJyArIChkYXRlLm1vbnRoID49IDEwID8gZGF0ZS5tb250aCA6ICcwJyArIGRhdGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5tb250aCkgKyAnLScgKyAoZGF0ZS5kYXkgPj0gMTAgPyBkYXRlLmRheSA6ICcwJyArIGRhdGUuZGF5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlbENsc0xpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0cl9yZXNjbHMgPSBjYS5SZWxDbHMuc3BsaXQoJywnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpaSBpbiBhdHRyX3Jlc2Nscykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlc2NscyA9IGF0dHJfcmVzY2xzW2lpXS5zcGxpdCgnfCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVsQ2xzTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ6IHJlc2Nsc1swXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogcmVzY2xzWzFdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuUmVsQ2xzTGlzdCA9IHJlbENsc0xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+3Jztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn55yB5biC5Yy6Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7fpgInmi6knO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHIucHVzaChjYSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdG5ld2F0dHJsaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdEJrQ29sb3I6IGNsc2F0dHIuQmtDb2xvcixcblx0XHRcdFx0XHRcdFx0XHRIYXNBY2U6IGNsc2F0dHIuSGFzQWNlLFxuXHRcdFx0XHRcdFx0XHRcdEltZ0ZvbnRTdHlsZTogY2xzYXR0ci5JbWdGb250U3R5bGUsXG5cdFx0XHRcdFx0XHRcdFx0TmFtZTogY2xzYXR0ci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdE9yZGVyOiBjbHNhdHRyLk9yZGVyLFxuXHRcdFx0XHRcdFx0XHRcdE9wZW46IG9wZW4sXG5cdFx0XHRcdFx0XHRcdFx0QXR0cjogYXR0cixcblx0XHRcdFx0XHRcdFx0XHRjb250cm9sX3N0eWxlOiB0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmNvbnRyb2xfc3R5bGUsXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGVfcF93ZGl0aDogdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi50aXRsZV9wX3dkaXRoLFxuXHRcdFx0XHRcdFx0XHRcdEZvbnQ6IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuRm9udCA/IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGVcblx0XHRcdFx0XHRcdFx0XHRcdC5TdHlsZURlZi5Gb250IDoge30sXG5cdFx0XHRcdFx0XHRcdFx0QmtfQ29sb3I6IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuQmtfQ29sb3IgPyB0aGlzLiRkYXRhXG5cdFx0XHRcdFx0XHRcdFx0XHQuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuQmtfQ29sb3IgOiAnI0ZGRkZGRicsXG5cdFx0XHRcdFx0XHRcdFx0VGV4dF9Db2xvcjogdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5UZXh0X0NvbG9yID8gdGhpcy4kZGF0YVxuXHRcdFx0XHRcdFx0XHRcdFx0LnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLlRleHRfQ29sb3IgOiAnIzAwMDAwMCdcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG5ld2F0dHJsaXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QgPSBuZXdhdHRybGlzdDtcblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcblx0XHRcdFx0XHRcdC8vICRlbC5maW5kKCcuYXR0cl9maWVsZCcpLnByb3AoJ3JlYWRvbmx5JywgdHJ1ZSk7XG5cdFx0XHRcdFx0XHQvLyAkZWwuZmluZCgnLmF0dHJfZmllbGQnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLmF0dHJzXG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuYXR0cixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci52YWx1ZSA/IGFyLnZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZhciBldmVudGxpc3QgPSB0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmV2ZW50O1xuXHRcdFx0XHRpZiAoZXZlbnRsaXN0KSB7XG5cdFx0XHRcdFx0aWYgKGV2ZW50bGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50bGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfb2snKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5lZGl0X29rX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnaW5pdGlhbCcpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnYmVmb3JlX3NlbGVjdF9jb21wb3NlJykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCA9IGV2ZW50bGlzdFtpXS5zY3JpcF9pZDtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmVkaXRfY29tcG9zZV9jbHNfaWQgPSBldmVudGxpc3RbaV0uY29tcG9zZV9jbHNfaWQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVxKTtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQpIHtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQuc2NyaXBfaWQ7XG5cdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRhdHRyOiByZXEsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuc2Nhbl9pbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUpO1xuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QpO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRjb250ZW50OiBcIuacquaJvuWIsOWPr+aYvuekuueahOeahOWxnuaAp1wiLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0aW5pX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKSB7XG5cdFx0XHR2YXIgcGFyYW0gPSB7XG5cdFx0XHRcdEVkaXRTdHlsZTogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZSxcblx0XHRcdFx0Vmlld1N0eWxlOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZS5OYW1lLFxuXHRcdFx0XHROb3RUcmlnZ2VyU3lzRXZlbnQ6IDAsXG5cdFx0XHRcdGVudmlyb21lbnQ6IHtcblx0XHRcdFx0XHQnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0XHRidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdFx0bWFzdGVyOiB7XG5cdFx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblx0XHRcdFx0XHRcdC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBpbnB1dHBhcmFtZXRlciA9ICcnO1xuXHRcdFx0dmFyIGdsb2JhbF9hdHRyID0gJyc7XG5cblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0ZWR0eXBlOiBpbmZvLmVkdHlwZSxcblx0XHRcdFx0ZXZlbnRpZDogaW5mby5ldmVudGlkLFxuXHRcdFx0XHRwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLFxuXHRcdFx0XHRyY2xzaWQ6IGluZm8ucmNsc2lkLFxuXHRcdFx0XHRyb2JqaWQ6IGluZm8ucm9iamlkLFxuXHRcdFx0XHR1c2VybG9naW46IGluZm8udXNlcmxvZ2luLFxuXHRcdFx0XHRjbHNpZDogaW5mby5jbHNpZCxcblx0XHRcdFx0b2JqaWQ6IGluZm8ub2JqaWQsXG5cdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KHBhcmFtKSxcblx0XHRcdFx0aW5wdXRwYXJhbWV0ZXI6IGlucHV0cGFyYW1ldGVyLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogZ2xvYmFsX2F0dHJcblx0XHRcdH1cblx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHRcdFx0XHR2YXIgYWN0aW9ubGlzdCA9IGRhdGEuYWN0aW9uO1xuXHRcdFx0XHRcdGlmIChhY3Rpb25saXN0KSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGFjdGlvbmxpc3QubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IGFjdGlvbmxpc3Rbal1cblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbl90eXBlID0gYWN0aW9uLmFjdGlvbl90eXBlO1xuXHRcdFx0XHRcdFx0XHR2YXIgdmFsdWUgPSBhY3Rpb24udmFsdWU7XG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb25fdHlwZSA9PSAnc2V0X2RsZ19hdHRyJykge1xuXHRcdFx0XHRcdFx0XHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWwgPSBKU09OLnBhcnNlKHZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHZhbCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBhID0gMDsgYSA8IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGErKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGwgPSAwOyBsIDwgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2FdLkF0dHIubGVuZ3RoOyBsKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYSA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFthXS5BdHRyW2xdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHZhbFtpXS5hdHRyID09IGNhLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgY2EuVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHwgY2EuVHlwZSA9PVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0SXRlbUxpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBkIGluIHZhbFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IHZhbFtpXS5jaG9pY2VfbGlzdFtkXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJDTl9TX05BTUVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIk5hbWVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcImxhYmVsXCI6IHZhbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiB2YWxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtID0gZGljdEl0ZW1MaXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSB2YWxbaV0uY2hvaWNlX2xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY2EudmFsdWUgPSB2YWxbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaCh2YWxbaV0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHZhbFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gdmFsW2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uX3R5cGUgPT0gJ29wZW5fc2VsZWN0X3VzZXJkbGcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68yLjJcIixcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwib3Blbl9zZWxlY3RfdXNlcmRsZ+i/meS4qmFjdGlvbl90eXBl6L+Y5pyq5aSE55CG77yBXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzJcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMi4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHREYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgZGF0YV9hdHRyKSB7XG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dmFyIGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdCdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0J2J1dHRvbic6ICd0b3AnLCAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0bWFzdGVyOiB7XG5cdFx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cdFx0XHRcdFx0Ly9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0ZW52aXJvbWVudC5lZGl0X2RsZyA9IHtcblx0XHRcdFx0dHlwZTogJ3NtYWxsJywgLy/lsI/nqpflj6Ncblx0XHRcdFx0Y2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy/lvZPliY3mlbDmja7nsbtpZFxuXHRcdFx0fVxuXHRcdFx0aWYgKGRhdGFfYXR0cikge1xuXHRcdFx0XHRlbnZpcm9tZW50LmVkaXRfZGxnLmZvcm1fY29udHJvbCA9IHsgLy/miYDlsZ7nmoTooajljZXmjqfku7Zcblx0XHRcdFx0XHRuYW1lOiBkYXRhX2F0dHIuTmFtZSwgLy/lrZfmrrXlsZ7mgKdcblx0XHRcdFx0XHR0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsIC8v5pi+56S65paH5pysXG5cdFx0XHRcdFx0Z3JvdXBfbmFtZTogZGF0YV9hdHRyLkdyb3VwTmFtZSwgLy/lsZ7mgKfnu4Rcblx0XHRcdFx0XHR0eXBlOiBkYXRhX2F0dHIuVHlwZSwgLy/lrZfmrrXnsbvlnotcblx0XHRcdFx0XHRyZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LCAvL+aYr+WQpuWPquivu1xuXHRcdFx0XHRcdGJ1dHRvbl9pbWc6IGRhdGFfYXR0ci5idXR0b25faW1nLCAvL+W8leeUqOaMiemSrueahOWbvuagh1xuXHRcdFx0XHRcdGJ1dHRvbl90b29sdGlwOiBkYXRhX2F0dHIuYnV0dG9uX3Rvb2x0aXAgLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0ZWR0eXBlOiBpbmZvLmVkdHlwZSxcblx0XHRcdFx0ZXZlbnRpZDogaW5mby5ldmVudGlkLFxuXHRcdFx0XHRwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKSxcblx0XHRcdFx0cmNsc2lkOiBpbmZvLnJjbHNpZCxcblx0XHRcdFx0cm9iamlkOiBpbmZvLnJvYmppZCxcblx0XHRcdFx0dXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbixcblx0XHRcdFx0Y2xzaWQ6IGluZm8uY2xzaWQsXG5cdFx0XHRcdG9iamlkOiBpbmZvLm9iamlkLFxuXHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLFxuXHRcdFx0XHRleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSxcblx0XHRcdFx0aW5wdXRwYXJhbWV0ZXI6ICcnLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcblx0XHRcdH1cblx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHRcdFx0XHR2YXIgYWN0aW9ubGlzdCA9IGRhdGEuYWN0aW9uO1xuXG5cdFx0XHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGFjdGlvbmxpc3QpO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25saXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2ldO1xuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbY10uQXR0cjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyW2pdLk5hbWUgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uVHlwZSA9PSAn5a2X5YW4JyB8fCBhdHRyW2pdLlR5cGUgPT0gJ+Wtl+WFuC3lrZfnrKbkuLInIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5UeXBlID09ICflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0SXRlbUxpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IHJlc3VsdFtpXS5jaG9pY2VfbGlzdFtkXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJDTl9TX05BTUVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIk5hbWVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcImxhYmVsXCI6IHZhbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiB2YWxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLmRpY3RpdGVtID0gZGljdEl0ZW1MaXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSByZXN1bHRbaV0uY2hvaWNlX2xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbY10uQXR0cjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYXR0cltqXS5OYW1lICsgJz09JyArIHJlc3VsdFtpXS5hdHRyKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cltqXS5OYW1lID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobGVuZ3RoID09IDApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZGF0YS5hY3Rpb25baV0uYWN0aW9uX3R5cGUgPT0gJ3NldF9nbG9iYWxfYXR0cicpIHtcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5nbG9iYWxfYXR0ciA9IGRhdGEuYWN0aW9uW2ldLnZhbHVlIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKGRhdGEucmVzdWx0KSB7XG5cdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbY10uQXR0cjtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyW2pdLk5hbWUgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vM1wiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLplJnor68zLjFcIixcblx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdE9LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KCkge1xuXHRcdFx0dmFyIGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdCdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0J2J1dHRvbic6ICd0b3AnLCAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0bWFzdGVyOiB7XG5cdFx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmVkaXRfb2tfZXZlbnQuc2NyaXBfaWQ7XG5cdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivt+mAieaLqScgfHwgYXIuVmFsdWUgPT0gJ+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0aWYgKCFyZXEuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIgPT0gcy5uYW1lXG5cdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdCdhdHRyJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0cixcblx0XHRcdFx0XHRcdFx0J3ZhbHVlJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0udmFsdWVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRhdHRyOiByZXEsXG5cdFx0XHR9XG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdGVkdHlwZTogaW5mby5lZHR5cGUsXG5cdFx0XHRcdGV2ZW50aWQ6IGluZm8uZXZlbnRpZCxcblx0XHRcdFx0cHJvamVjdGlkOiBpbmZvLnByb2plY3RpZCxcblx0XHRcdFx0cmNsc2lkOiBpbmZvLnJjbHNpZCxcblx0XHRcdFx0cm9iamlkOiBpbmZvLnJvYmppZCxcblx0XHRcdFx0dXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbixcblx0XHRcdFx0Y2xzaWQ6IGluZm8uY2xzaWQsXG5cdFx0XHRcdG9iamlkOiBpbmZvLm9iamlkLFxuXHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLFxuXHRcdFx0XHRleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSxcblx0XHRcdFx0Z2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXG5cdFx0XHR9XG5cdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xuXHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHQvLyBzZWxmLmNsYXNzX2F0dHJfZWxlLmZpbmQoJy5hdHRyX2ZpZWxkW2RhdGEtZmllbGQ9XCInICsgcmVzdWx0W2ldLmF0dHIgKyAnXCJdJykudmFsKHJlc3VsdFtpXS52YWx1ZSkuZGF0YSgndmFsJywgcmVzdWx0W2ldLnZhbHVlKTtcblx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0aWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHRoaXMuYWRkKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor680XCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBzdWNjZXNzLm1zZyxcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzQuMVwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0RGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybihldmVudGlkLCBkYXRhX2F0dHIsIGJ1dHRvbl9jYWxsYmFjaywgaW5kZXgsIGlpbmRleCkge1xuXHRcdFx0dmFyIGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdCdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0J2J1dHRvbic6ICd0b3AnLCAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0bWFzdGVyOiB7XG5cdFx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cdFx0XHRcdFx0Ly9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGlmICghcmVxLmZpbHRlcihmdW5jdGlvbihzKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS5hdHRyID09IHMubmFtZVxuXHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHQnYXR0cic6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIsXG5cdFx0XHRcdFx0XHRcdCd2YWx1ZSc6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLnZhbHVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBleHRpbmZvID0gZW52aXJvbWVudDtcblx0XHRcdGV4dGluZm8uZWRpdF9kbGcgPSB7XG5cdFx0XHRcdHR5cGU6ICdzbWFsbCcsIC8v5bCP56qX5Y+jXG5cdFx0XHRcdGNsYXNzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8v5b2T5YmN5pWw5o2u57G7aWRcblx0XHRcdH1cblx0XHRcdGlmIChkYXRhX2F0dHIpIHtcblx0XHRcdFx0ZXh0aW5mby5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7IC8v5omA5bGe55qE6KGo5Y2V5o6n5Lu2XG5cdFx0XHRcdFx0bmFtZTogZGF0YV9hdHRyLk5hbWUsIC8v5a2X5q615bGe5oCnXG5cdFx0XHRcdFx0dGV4dDogZGF0YV9hdHRyLkRpc3BOYW1lLCAvL+aYvuekuuaWh+acrFxuXHRcdFx0XHRcdGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsIC8v5bGe5oCn57uEXG5cdFx0XHRcdFx0dHlwZTogZGF0YV9hdHRyLlR5cGUsIC8v5a2X5q6157G75Z6LXG5cdFx0XHRcdFx0cmVhZG9ubHk6IGRhdGFfYXR0ci5SZWFkT25seSwgLy/mmK/lkKblj6ror7tcblx0XHRcdFx0XHRidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywgLy/lvJXnlKjmjInpkq7nmoTlm77moIdcblx0XHRcdFx0XHRidXR0b25fdG9vbHRpcDogZGF0YV9hdHRyLmJ1dHRvbl90b29sdGlwIC8v5byV55So5oyJ6ZKu55qEdG9vbHRpcFxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdG9iamlkOiAnJyxcblx0XHRcdFx0YXR0cjogSlNPTi5zdHJpbmdpZnkocmVxKSxcblx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZXh0aW5mbyksXG5cdFx0XHRcdGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKVxuXHRcdFx0fVxuXHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLCBkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdGlmIChkYXRhICE9IFwiXCIpIHtcblxuXHRcdFx0XHRcdFx0dmFyIGFjdGlvbnMgPSBkYXRhLmFjdGlvbjtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGFjdGlvbnMpO1xuXHRcdFx0XHRcdFx0aWYgKGFjdGlvbnMpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IGFjdGlvbnNbaV07XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IGFjdGlvbi52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHR2YXIgZW52aXJvbWVudCA9IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpO1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9wYW5lbCcpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBkID0gZGlhbG9nKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdGQuc2hvdygpO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3NlbGVjdF91c2VyZGxnJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHN0eWxlID0gdmFsLnN0eWxlO1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gc3R5bGUgPT0gJ3VzZXInID8gJ+mAieaLqeS6uuWRmCcgOiBzdHlsZSA9PSAnZGVwYXJ0bWVudCcgPyAn6YCJ5oup6YOo6ZeoJyA6IHN0eWxlID09ICdyb2xlJyA/ICfpgInmi6nop5LoibInIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcGFyYW0gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluZGV4OiBpbmRleCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWluZGV4OiBpaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJ1dHRvbl9jYWxsYmFjazogYnV0dG9uX2NhbGxiYWNrLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXE6IHJlcSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0YV9hdHRyOiBkYXRhX2F0dHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dXJsOiAnLi4vc2VscHNuL2luZGV4P211bGl0PWZhbHNlJnBhcmFtPScgKyBKU09OLnN0cmluZ2lmeShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJhbSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50czoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEFkZFBlcihkYXRhLCBwYXJhbSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocGFyYW0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZGF0YSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgY2FsbGJhY2tfZXZlbnRpZCA9IHBhcmFtLmJ1dHRvbl9jYWxsYmFjay50cmltKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogY2FsbGJhY2tfZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBwYXJhbS5yZXEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlucHV0cGFyYW1ldGVyOiBkYXRhXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgcGFyYW0uZGF0YV9hdHRyKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX2RhdGFfcXVlcnlfZGxnJykge1xuXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fY29tbW9uX2RsZycpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBkID0gZGlhbG9nKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdGQuc2hvdygpO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3Byb2plY3RfcXVlcnlfZGxnJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly9jb25zb2xlLmxvZyhhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlKTtcblx0XHRcdFx0XHRcdFx0XHRcdC8vY29uc29sZS5sb2coYWN0aW9uLnZhbHVlLm11bGl0X3NlbGVjdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcHJpUmVsID0gJy0xJztcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICflhajpg6jnm7jlhbMnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnMCc7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHotJ/otKPnmoTpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnMSc7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHliJvlu7rnmoQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnMic7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlj4LkuI7nmoQnIHx8IGFjdGlvbi52YWx1ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuc2VsZWN0X3JhbmdlID09ICfmiJHlj4LliqDnmoQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnMyc7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlhbPms6jnmoQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnNCc7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHkuIvlsZ7nmoTpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnNSc7XG5cblx0XHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcGFyYW1fID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpbmRleDogaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlpbmRleDogaWluZGV4LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRidXR0b25fY2FsbGJhY2s6IGJ1dHRvbl9jYWxsYmFjayxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxOiByZXFcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dXJsOiAnLi4vc2VsUHJqL2luZGV4P3JlbGF0aW9uPScgKyBwcmlSZWwgKyAnJnBhcmFtPScgKyBKU09OXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnN0cmluZ2lmeShwYXJhbV8pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRldmVudHM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSwgcGFyYW0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmlpbmRleF0uVmFsdWUgPSBkYXRhWzBdLk5hbWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmlpbmRleF0uVmFsSUQgPSBkYXRhWzBdLklEICsgJzsnICsgZGF0YVswXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuTmFtZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gcGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYWxsYmFja19ldmVudGlkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50aWQ6IGNhbGxiYWNrX2V2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6IGRhdGFbMF0uSUQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmNsc2lkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VybG9naW46IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogcGFyYW0ucmVxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBkID0gZGlhbG9nKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdGQuc2hvdygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6NS4yXCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6ICfosIPnlKggYmVmb3JlX2NsaWNrX2J1dHRvbiDohJrmnKzov5Tlm57nqbrvvIxldmVudF9pZCcgKyBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzVcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6NS4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHRzY2FuX2luaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbykge1xuXHRcdFx0dmFyIHBhcmFtID0ge1xuXHRcdFx0XHRFZGl0U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5WaWV3X1N0eWxlLk5hbWUsXG5cdFx0XHRcdFZpZXdTdHlsZTogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLlZpZXdfU3R5bGUuTmFtZSxcblx0XHRcdFx0Tm90VHJpZ2dlclN5c0V2ZW50OiAwLFxuXHRcdFx0XHRlbnZpcm9tZW50OiB7XG5cdFx0XHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0XHRcdFx0J2J1dHRvbic6ICd0b3AnLCAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHRcdG1hc3Rlcjoge1xuXHRcdFx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cdFx0XHRcdFx0XHQvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR2YXIgaW5wdXRwYXJhbWV0ZXIgPSAnJztcblx0XHRcdHZhciBnbG9iYWxfYXR0ciA9ICcnO1xuXG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdGVkdHlwZTogaW5mby5lZHR5cGUsXG5cdFx0XHRcdGV2ZW50aWQ6IGluZm8uZXZlbnRpZCxcblx0XHRcdFx0cHJvamVjdGlkOiBpbmZvLnByb2plY3RpZCxcblx0XHRcdFx0cmNsc2lkOiBpbmZvLnJjbHNpZCxcblx0XHRcdFx0cm9iamlkOiBpbmZvLnJvYmppZCxcblx0XHRcdFx0dXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbixcblx0XHRcdFx0Y2xzaWQ6IGluZm8uY2xzaWQsXG5cdFx0XHRcdG9iamlkOiBpbmZvLm9iamlkLFxuXHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLFxuXHRcdFx0XHRleHRpbmZvOiBKU09OLnN0cmluZ2lmeShwYXJhbSksXG5cdFx0XHRcdGlucHV0cGFyYW1ldGVyOiBpbnB1dHBhcmFtZXRlcixcblx0XHRcdFx0Z2xvYmFsX2F0dHI6IGdsb2JhbF9hdHRyXG5cdFx0XHR9XG5cdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0XHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoYWN0aW9ubGlzdCkge1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhY3Rpb25saXN0Lmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2pdXG5cdFx0XHRcdFx0XHRcdHZhciBhY3Rpb25fdHlwZSA9IGFjdGlvbi5hY3Rpb25fdHlwZTtcblx0XHRcdFx0XHRcdFx0dmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyh2YWwpO1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCB2YWwubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYSA9IDA7IGEgPCB0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QubGVuZ3RoOyBhKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBsID0gMDsgbCA8IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdFthXS5BdHRyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQubGVuZ3RoOyBsKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYSA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdFthXS5BdHRyW2xdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHZhbFtpXS5hdHRyID09IGNhLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgY2EuVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHwgY2EuVHlwZSA9PVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0SXRlbUxpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBkIGluIHZhbFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IHZhbFtpXS5jaG9pY2VfbGlzdFtkXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJDTl9TX05BTUVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIk5hbWVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcImxhYmVsXCI6IHZhbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiB2YWxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtID0gZGljdEl0ZW1MaXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSB2YWxbaV0uY2hvaWNlX2xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY2EudmFsdWUgPSB2YWxbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaCh2YWxbaV0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHZhbFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gdmFsW2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uX3R5cGUgPT0gJ29wZW5fc2VsZWN0X3VzZXJkbGcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor682LjJcIixcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwib3Blbl9zZWxlY3RfdXNlcmRsZ+i/meS4qmFjdGlvbl90eXBl6L+Y5pyq5aSE55CG77yBXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzZcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vNi4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHRzY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBkYXRhX2F0dHIpIHtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgZW52aXJvbWVudCA9IHt9O1xuXHRcdFx0aWYoaW5mby5lbnZpcm9tZW50KXtcblx0XHRcdFx0ZW52aXJvbWVudCA9IGluZm8uZW52aXJvbWVudDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0XHRjbHNfaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsICAgICAvLyDlip/og73ngrnku47mlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0XHRidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdFx0ZWRpdF9kbGc6IHtcblx0XHRcdFx0XHRcdHR5cGU6ICdzbWFsbCcsIC8v5bCP56qX5Y+jXG5cdFx0XHRcdFx0XHRjbGFzc19pZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwvL+W9k+WJjeaVsOaNruexu2lkXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fTtcblx0XHRcdFx0XG5cdFx0XHR9XG5cdFx0XHR2YXIgZ2xvYmFsX2F0dHIgPSB0aGlzLiRkYXRhLmdsb2JhbF9hdHRyO1xuXHRcdFx0aWYgKGluZm8uZ2xvYmFsX2F0dHIpIHtcblx0XHRcdFx0Z2xvYmFsX2F0dHIgPSBpbmZvLmdsb2JhbF9hdHRyO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRlZHR5cGU6IGluZm8uZWR0eXBlLFxuXHRcdFx0XHRldmVudGlkOiBpbmZvLmV2ZW50aWQsXG5cdFx0XHRcdHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQucmVwbGFjZSgneycsICcnKS5yZXBsYWNlKCd9JywgJycpLFxuXHRcdFx0XHRyY2xzaWQ6IGluZm8ucmNsc2lkLFxuXHRcdFx0XHRyb2JqaWQ6IGluZm8ucm9iamlkLFxuXHRcdFx0XHR1c2VybG9naW46IGluZm8udXNlcmxvZ2luLFxuXHRcdFx0XHRjbHNpZDogaW5mby5jbHNpZCxcblx0XHRcdFx0b2JqaWQ6IGluZm8ub2JqaWQsXG5cdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLFxuXHRcdFx0XHRpbnB1dHBhcmFtZXRlcjogSlNPTi5zdHJpbmdpZnkoaW5mby5pbnB1dFBhcmFtdGVyKSxcblx0XHRcdFx0Z2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KGdsb2JhbF9hdHRyKVxuXHRcdFx0fVxuXHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLCBkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XG5cblx0XHRcdFx0XHRpZiAoYWN0aW9ubGlzdCkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpaSA9IDA7IGlpIDwgYWN0aW9ubGlzdC5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IGFjdGlvbmxpc3RbaWldO1xuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5sZW5ndGg7IGMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyTGlzdFtjXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LkF0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uTmFtZSA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyW2pdLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgYXR0cltqXS5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5UeXBlID09ICflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZCBpbiByZXN1bHRbaV0uY2hvaWNlX2xpc3QpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IHJlc3VsdFtpXS5jaG9pY2VfbGlzdFtkXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiQ05fU19OQU1FXCI6IHZhbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIk5hbWVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwibGFiZWxcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwidmFsdWVcIjogdmFsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5kaWN0aXRlbSA9IGRpY3RJdGVtTGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSByZXN1bHRbaV0uY2hvaWNlX2xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHJMaXN0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lmxlbmd0aDsgYysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYXR0cltqXS5OYW1lICsgJz09JyArIHJlc3VsdFtpXS5hdHRyKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyW2pdLk5hbWUgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaChyZXN1bHRbaV0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnc2V0X2dsb2JhbF9hdHRyJykge1xuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRhY3Rpb250ciA9IGFjdGlvbi52YWx1ZSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fY29tbW9uX2RsZycpIHsgLy/miZPlvIDkvqfmu5HlvLnmoYZcblx0XHRcdFx0XHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhY3Rpb24udmFsdWUuY29tbW9uX2RsZ19pZCA9PSAnY2hlY2tfbGlzdCcpIHtcblx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNoZWNrX2xpc3QgPSBhY3Rpb24udmFsdWUuY29uZmlnO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbi52YWx1ZS5jb25maWcuYXBwZWFyX3N0eWxlID09ICdzaWRlc2xpcCcpIC8v5Yik5pat5piv5ZCm5piv5L6n5ruRXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnBvcHVwVHlwZSA9ICdyaWdodCc7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnBvcHVwVHlwZSA9ICdjZW50ZXInXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBvcGVuIOaWueazleS8oOWFpeWPguaVsCDnrYnlkIzlnKggdW5pLXBvcHVwIOe7hOS7tuS4iue7keWumiB0eXBl5bGe5oCnXG5cdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kcmVmcy5wb3B1cC5vcGVuKCR0aGlzLiRkYXRhLnBvcHVwVHlwZSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnYWRkX3N1YmNsc19wYW5lbCcpIHsgLy/kuLvku47mlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cblx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGxpc3RfMSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0KSk7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHNjYW5Db2RlVmFsID0gJHRoaXMuJGRhdGEuc2NhbkNvZGVWYWw7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJhbmQgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDU7IGkrKykgeyAvL+eUn+aIkDXkvY3pmo/mnLrmlbBcblx0XHRcdFx0XHRcdFx0XHRcdHJhbmQgKz0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAoaW5mby5pbnB1dFBhcmFtdGVyWzBdLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChpbmZvLmlucHV0UGFyYW10ZXJbMF0uYXR0ciA9PSBcIm1hc3RfaW5wdXRfMzAzN1wiKSAvL+WIpOaWreaYr+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzY2FuQ29kZVZhbCA9IFwibWFzdF9pbnB1dF8zMDM3LVwiICsgcmFuZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGluZm8uYXR0clswXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoaW5mby5hdHRyWzBdLmF0dHIgPT0gXCJtYXN0X2lucHV0XzMwMzdcIikgLy/liKTmlq3mmK/kuLvmlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cblx0XHRcdFx0XHRcdFx0XHRcdFx0c2NhbkNvZGVWYWwgPSBcIm1hc3RfaW5wdXRfMzAzNy1cIiArIHJhbmQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsOiBzY2FuQ29kZVZhbCxcblx0XHRcdFx0XHRcdFx0XHRcdHN1YkNsYXNzQXR0cjogbGlzdF8xXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwgPT0gc2NhbkNvZGVWYWwpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0W2ldLmF0dHIgPT0gXCJTX0lEXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uT2JqSUQgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIF9zdWJDbGFzc0F0dHIgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgX3N1YkNsYXNzQXR0ci5sZW5ndGg7IGMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBfc3ViQ2xhc3NBdHRyW2NdLkF0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coYXR0cltqXS5OYW1lKyc9PScrcmVzdWx0W2ldLmF0dHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cltqXS5OYW1lID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHI9bGlzdF8xO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbihzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKGRhdGEucmVzdWx0KSB7XG5cdFx0XHRcdFx0XHRsZXQgbGlzdF8xID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QpKTtcblx0XHRcdFx0XHRcdHZhciBzY2FuQ29kZVZhbCA9ICR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsO1xuXHRcdFx0XHRcdFx0aWYgKGluZm8uaW5wdXRQYXJhbXRlclswXS5hdHRyID09IFwibWFzdF9pbnB1dF8zMDM3XCIpXG5cdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsID0gXCJtYXN0X2lucHV0XzMwMzctXCIgKyBpaTtcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0c2NhbkNvZGVWYWw6IHNjYW5Db2RlVmFsLFxuXHRcdFx0XHRcdFx0XHRzdWJDbGFzc0F0dHI6IGxpc3RfMVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwgPT0gc2NhbkNvZGVWYWwpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyZXN1bHRbaV0uYXR0ciA9PSBcIlNfSURcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLk9iaklEID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIF9zdWJDbGFzc0F0dHIgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyO1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCBfc3ViQ2xhc3NBdHRyLmxlbmd0aDsgYysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gX3N1YkNsYXNzQXR0cltjXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUrJz09JytyZXN1bHRbaV0uYXR0cik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uTmFtZSA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOiBcIumUmeivrzdcIixjb250ZW50OiBzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOiBmYWxzZSxjb25maXJtVGV4dDogXCLlj5bmtohcIn0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6IFwi6ZSZ6K+vNy4xXCIsY29udGVudDogZXguZXJyTXNnLHNob3dDYW5jZWw6IGZhbHNlLGNvbmZpcm1UZXh0OiBcIuWPlua2iFwifSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdHNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoZXZlbnRJRCkge1xuXHRcdFx0dW5pLnNob3dMb2FkaW5nKHt0aXRsZTogXCLliqDovb3kuK0uLi5cIixtYXNrOiB0cnVlfSk7XG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0dmFyIGF0dHJsaXN0ID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+36YCJ5oupJyB8fCBhci5WYWx1ZSA9PSAn4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5a2X5YW4JyB8fCBhci5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBhci5UeXBlID09ICflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0aWYgKGFyLnNlbGVjdCA9PSB0cnVlKSB7IC8v5Yik5pat5LiL5ouJ5piv5ZCm5aSa6YCJXG5cdFx0XHRcdFx0XHRcdHZhciB2YWxTdHIgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciB2IGluIGFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHZhbFN0cilcblx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBcIjtcIjtcblx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gYXIuVmFsdWVbdl07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHZhbFN0clxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWVcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0aWYgKGFyLm5vdGVtcHR5ID09IHRydWUgJiYgIWFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHQvLyBpZihhci5Ob3RFbXB0eT09JzEnKXtcblx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdFx0Ly8gdW5pLnNob3dUb2FzdCh7dGl0bGU6YXIuRGlzcE5hbWUrJ+S4jeiDveS4uuepuu+8gScsaWNvbjpcInN1Y2Nlc3NcIixkdXJhdGlvbjozMDAwfSk7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFyLkRpc3BOYW1lICsgJ+S4jeiDveS4uuepuu+8gScsXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR2YXIgb2JqZWN0cyA9IFtdO1xuXHRcdFx0dmFyIHN1YlBhbmVsTGlzdCA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdDtcblx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHRcdHZhciBzdWJfcmVxID0gW107XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ci5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBhdHRyID0gc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0cltpXS5BdHRyO1xuXHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+36YCJ5oupJyB8fCBhci5WYWx1ZSA9PSAn4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeaVtOaVsCcpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGFyLnNlbGVjdCA9PSB0cnVlKSB7IC8v5Yik5pat5LiL5ouJ5piv5ZCm5aSa6YCJXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHZhbFN0ciA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgdiBpbiBhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHZhbFN0cilcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyICs9IFwiO1wiO1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyICs9IGFyLlZhbHVlW3ZdO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiB2YWxTdHJcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWVcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0aWYgKGFyLm5vdGVtcHR5ID09IHRydWUgJiYgIWFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGlmKGFyLk5vdEVtcHR5PT0nMScpe1xuXHRcdFx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0XHRcdFx0Ly8gdW5pLnNob3dUb2FzdCh7dGl0bGU6YXIuRGlzcE5hbWUrJ+S4jeiDveS4uuepuu+8gScsaWNvbjpcInN1Y2Nlc3NcIixkdXJhdGlvbjozMDAwfSk7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFyLkRpc3BOYW1lICsgJ+S4jeiDveS4uuepuu+8gScsXG5cdFx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0b2JqZWN0cy5wdXNoKHtcblx0XHRcdFx0XHRvYmpfaWQ6IHN1YlBhbmVsTGlzdFtzXS5zY2FuQ29kZVZhbCxcblx0XHRcdFx0XHRvYmpfYXR0cnM6IHN1Yl9yZXFcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgZGF0YUpzb24gPSB7XG5cdFx0XHRcdG1hc3Rlcl9jbHM6IHtcblx0XHRcdFx0XHRjbHNfbmFtZTogJ01CT1gnLCAvLyR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuTmFtZSxcblx0XHRcdFx0XHRvYmpfYXR0cnM6IHJlcVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRpbnB1dF8zMDM3OiAkdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCwgLy/miavnoIHlhoXlrrlcblx0XHRcdFx0b3BfdHlwZTogJHRoaXMuJGRhdGEucGFyYW0uT3BlcmF0aW9uVHlwZSwgLy/kvZzkuJrnsbvlnovlrprkuYlcblx0XHRcdFx0c3ViX2Nsczoge1xuXHRcdFx0XHRcdGNsc19uYW1lOiAnTUJPWCcsIC8vJHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5OYW1lLFxuXHRcdFx0XHRcdG9iamVjdHM6IG9iamVjdHNcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGRhdGFKc29uKSk7XG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdGVkdHlwZTogXCI3XCIsXG5cdFx0XHRcdGV2ZW50aWQ6IGV2ZW50SUQsXG5cdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdGNsc2lkOiAnTUJPWCcsXG5cdFx0XHRcdG9iamlkOiAnJyxcblx0XHRcdFx0YXR0cjogSlNPTi5zdHJpbmdpZnkoW10pLFxuXHRcdFx0XHRleHRpbmZvOiBKU09OLnN0cmluZ2lmeShbXSksXG5cdFx0XHRcdGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSgkdGhpcy4kZGF0YS5nbG9iYWxfYXR0ciksXG5cdFx0XHRcdGRhdGFKc29uOiBKU09OLnN0cmluZ2lmeShkYXRhSnNvbilcblx0XHRcdH1cblx0XHRcdC8vIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGRhdGFJbmZvKSk7XG5cdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcblx0XHRcdFx0XHRpZiAoZXZlbnRJRCAhPSAkdGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudC5JRClcblx0XHRcdFx0XHRcdCR0aGlzLnNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoJHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQuSUQpO1xuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly/liLfmlrBcblx0XHRcdFx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcblx0XHRcdFx0XHRcdFx0dXJsOiAnLi4vbW9kYWwvbXNfY2xhc3NBdHRyP3BhcmFtPScgKyBKU09OLnN0cmluZ2lmeSgkdGhpcy4kZGF0YS5wYXJhbSkgK1xuXHRcdFx0XHRcdFx0XHRcdFwiJnRpdGxlbmFtZT1cIiArICR0aGlzLiRkYXRhLnRpdGxlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor684XCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBzdWNjZXNzLm1zZyxcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLplJnor684LjFcIixcblx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXG5cblx0fVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///90\n");
+eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 57));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 59));\nvar _pickerAddress = _interopRequireDefault(__webpack_require__(/*! ../../js/pickerAddress/pickerAddress.vue */ 80));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  components: {\n    pickerAddress: _pickerAddress.default\n  },\n  data: function data() {\n    return {\n      title: '鏂板',\n      param: {},\n      classAttrList: [],\n      classGridStyle: [],\n      edit_inital_event: \"\",\n      //寮圭獥鍒濆鍖栦簨浠禝D\n      edit_ok_event: \"\",\n      //寮圭獥鐐瑰嚮OK 瑙﹀彂浜嬩欢ID\n      edit_select_compose_event: \"\",\n      //閫夋嫨缁勬垚瀵硅薄鏃惰皟鐢╘n      edit_compose_cls_id: \"\",\n      global_attr: [],\n      refdatastore: [],\n      //寮曠敤鏁版嵁瀛樺偍鍖�/ {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n      scanCodeVal: \"\",\n      subClassAttrList: [],\n      subPanelList: [],\n      subClassGridStyle: [],\n      popupType: \"center\",\n      check_list: {}\n    };\n  },\n  onLoad: function onLoad(options) {\n    // console.log(options);\n    uni.setNavigationBarTitle({\n      title: options.titlename\n    }); //璁剧疆椤堕儴鏍囬 \n    var param = JSON.parse(options.param);\n    this.$data.title = param.Add_BtnName ? param.Add_BtnName : options.titlename; //璁剧疆鎸夐挳鏂囧瓧\n    __f__(\"log\", param, \" at pages/modal/ms_classAttr.vue:1030\");\n    if (!param.Master_Cls.View_Style) {\n      uni.showModal({\n        title: \"鎻愮ず\",\n        content: \"璇ュ姛鑳界偣鏈厤缃晫闈㈢獥鍙o紝璇烽噸鏂伴厤缃紒\",\n        showCancel: false,\n        confirmText: \"鍙栨秷\"\n      });\n      return;\n    }\n    if (!param.Master_Cls.View_Style.Name) {\n      uni.showModal({\n        title: \"鎻愮ず\",\n        content: \"璇ュ姛鑳界偣鏈厤缃獥鍙f牱寮忥紝璇烽噸鏂伴厤缃紒\",\n        showCancel: false,\n        confirmText: \"鍙栨秷\"\n      });\n      return;\n    }\n    this.$data.param = param;\n    // var edit_dlg = {\n    //     Model: param.EditDlgMode,\n    //     Name: param.Master_Cls.View_Style.Name\n    // }\n    //涓绘暟鎹被鑾峰彇\n    var dataInfo = {\n      class_id: param.Master_Cls.ID\n    };\n    var $this = this;\n    $this.$store.state.thisareaFuncID = param.Master_Cls.ID;\n    // console.log($this.$store.getters.getclassAttrList);\n    if ($this.$store.getters.getclassAttrList) {\n      $this.$data.classAttrList = $this.$store.getters.getclassAttrList.data;\n      $this.classGridStyleInfo(param.Master_Cls.ID, $this.$data.param.Master_Cls.View_Style.Name, 'Mast');\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          $this.classGridStyleInfo(param.Master_Cls.ID, $this.$data.param.Master_Cls.View_Style.Name, 'Mast');\n        } else {\n          uni.showModal({\n            title: \"閿欒1\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒1.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    }\n\n    //浠庢暟鎹被鑾峰彇\n    var subdataInfo = {\n      class_id: param.Sub_Cls.ID\n    };\n    $this.$store.state.thisareaFuncSubID = param.Sub_Cls.ID;\n    if ($this.$store.getters.getSubClassAttrList) {\n      $this.$data.subClassAttrList = $this.$store.getters.getSubClassAttrList.data;\n      $this.classGridStyleInfo(param.Sub_Cls.ID, $this.$data.param.Sub_Cls.View_Style.Name, 'Sub');\n    } else {\n      $this.$store.dispatch('subClassAttrList', subdataInfo).then(function (success) {\n        // console.log(success);\n        if (success.code == '00000') {\n          $this.$data.subClassAttrList = success.data;\n          $this.classGridStyleInfo(param.Sub_Cls.ID, $this.$data.param.Sub_Cls.View_Style.Name, 'Sub');\n        } else {\n          uni.showModal({\n            title: \"閿欒1_1\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒1_1.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    }\n  },\n  methods: {\n    scan_classAttr_extButton: function scan_classAttr_extButton(e) {\n      //閫夋嫨鎸夐挳鍓峔n      var $this = this;\n      var Before_Select_Event = $this.$data.param.Scan_Code.Before_Select_Event;\n      if (!Before_Select_Event) {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"閫夋嫨鍓嶄簨浠朵负绌猴紒\",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n        return;\n      }\n      var mast_attr = [];\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 == '璇烽�鎷�) {\n            uni.showModal({\n              title: \"鎻愮ず\",\n              content: ar.DispName + \"鏈�鎷╂暟鎹紒\",\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n            return;\n          }\n          if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_attr.push({\n            attr: ar.Name,\n            value: ar.ValID ? ar.ValID : ''\n          });else if (ar.Type == '甯冨皵鍊�) mast_attr.push({\n            attr: ar.Name,\n            value: ar.Value ? '1' : '0'\n          });else mast_attr.push({\n            attr: ar.Name,\n            value: ar.Value ? ar.Value : ''\n          });\n        }\n      }\n      var objects = [];\n      var subPanelList = $this.$data.subPanelList;\n      for (var s = 0; s < subPanelList.length; s++) {\n        var sub_req = [];\n        for (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n          var attr = subPanelList[s].subClassAttr[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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n            if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') sub_req.push({\n              attr: ar.Name,\n              value: ar.ValID ? ar.ValID : ''\n            });else if (ar.Type == '甯冨皵鍊�) sub_req.push({\n              attr: ar.Name,\n              value: ar.Value ? '1' : '0'\n            });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n              if (ar.select == true) {\n                //鍒ゆ柇涓嬫媺鏄惁澶氶�\n                var valStr = \"\";\n                for (var v in ar.Value) {\n                  if (valStr) valStr += \";\";\n                  valStr += ar.Value[v];\n                }\n                sub_req.push({\n                  attr: ar.Name,\n                  value: valStr\n                });\n              } else sub_req.push({\n                attr: ar.Name,\n                value: ar.Value\n              });\n            } else sub_req.push({\n              attr: ar.Name,\n              value: ar.Value ? ar.Value : ''\n            });\n            if (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({\n                title: \"鎻愮ず\",\n                content: ar.DispName + '涓嶈兘涓虹┖锛�,\n                showCancel: false,\n                confirmText: \"鍙栨秷\"\n              });\n              return;\n            }\n          }\n        }\n        objects.push({\n          obj_id: subPanelList[s].scanCodeVal,\n          obj_attrs: sub_req\n        });\n      }\n      var enviroment = {\n        'function': '3000',\n        // 鍔熻兘鐐圭紪鍙穃n        cls_id: 'MBOX',\n        //this.$data.param.Sub_Cls.ID,     // 鍔熻兘鐐逛粠鏁版嵁绫绘爣璇哱n        'button': 'top',\n        // top/bottom\n        button_name: '鏂板',\n        edit_dlg: {\n          type: 'small',\n          //灏忕獥鍙n          class_id: 'MBOX' //this.$data.param.Sub_Cls.ID,//褰撳墠鏁版嵁绫籭d\n        },\n\n        master_cls: {\n          cls_name: 'MBOX',\n          //$this.$data.param.Master_Cls.Name,\n          obj_attrs: req\n        },\n        sub_cls: {\n          cls_name: 'MBOX',\n          //$this.$data.param.Sub_Cls.Name,\n          objects: objects\n        }\n      };\n      var req = [];\n      // var subPanelList = $this.$data.subPanelList;\n      // for (var s = 0; s < subPanelList.length; s++) {\n      // \tvar json = {};\n      // \tfor (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n      // \t\tvar attr = subPanelList[s].subClassAttr[i].Attr;\n      // \t\tfor (var j = 0; j < attr.length; j++) {\n      // \t\t\tvar ar = attr[j];\n      // \t\t\tjson[ar.Name] = ar.Value;\n      // \t\t}\n      // \t}\n      // \treq.push(json);\n      // }\n\n      var info = {\n        eventid: Before_Select_Event.ID,\n        edtype: \"7\",\n        //\"0\",\n        projectid: '',\n        rclsid: '',\n        robjid: '',\n        userlogin: '',\n        clsid: 'MBOX',\n        //this.$data.param.Sub_Cls.ID,\n        objid: \"\",\n        attr: [],\n        global_attr: req,\n        mast_attr: mast_attr,\n        inputParamter: mast_attr,\n        enviroment: enviroment\n      };\n      // console.log(info);\n      this.scan_DataObjRunCustomEvent(info, \"\");\n    },\n    popupChange: function popupChange(e) {\n      __f__(\"log\", '褰撳墠妯″紡锛� + e.type + ',鐘舵�锛� + e.show, \" at pages/modal/ms_classAttr.vue:1289\");\n    },\n    checkChange: function checkChange(e) {\n      //寮规check閫夋嫨\n      // console.log(e.target.dataset);\n      var index = e.target.dataset.index;\n      var ischeck = e.target.dataset.ischeck;\n      var data = this.$data.check_list.items;\n      // this.$data.check_list.items=[];\n      if (this.$data.check_list.multiple_choice == \"0\") {\n        //鍒ゆ柇鏃跺崟閫夎繕鏄閫塡n        for (var i in data) {\n          data[i].check = false;\n        }\n      }\n      data[index].check = ischeck ? false : true;\n      this.$data.check_list.items = data;\n    },\n    popup_cancel: function popup_cancel(e) {\n      //寮规鍙栨秷\n      this.$refs.popup.close();\n    },\n    popup_sava: function popup_sava(e) {\n      //寮规纭畾 閫夋嫨鎸夐挳鍚嶾n      var $this = this;\n      var After_Select_Event = $this.$data.param.Scan_Code.After_Select_Event;\n      if (!After_Select_Event) {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"閫夋嫨鍚庝簨浠朵负绌猴紒\",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n        return;\n      }\n      var items = $this.$data.check_list.items;\n      var data = [];\n      var name = \"\";\n      for (var i = 0; i < items.length; i++) {\n        if (items[i].check == true) {\n          if (name) name += ';';\n          name += items[i].name;\n          data.push({\n            id: items[i].id,\n            name: items[i].name\n          });\n        }\n      }\n      if (data.length == 0) {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"鏈�鎷╂暟鎹紒\",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n        return;\n      }\n      var mast_attr = [];\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 == '璇烽�鎷�) {\n            uni.showModal({\n              title: \"鎻愮ず\",\n              content: ar.DispName + \"鏈�鎷╂暟鎹紒\",\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n            return;\n          }\n          if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_attr.push({\n            attr: ar.Name,\n            value: ar.ValID ? ar.ValID : ''\n          });else if (ar.Type == '甯冨皵鍊�) mast_attr.push({\n            attr: ar.Name,\n            value: ar.Value ? '1' : '0'\n          });else mast_attr.push({\n            attr: ar.Name,\n            value: ar.Value ? ar.Value : ''\n          });\n        }\n      }\n      $this.$data.scanCodeVal = name;\n      var info = {\n        eventid: After_Select_Event.ID,\n        edtype: \"7\",\n        projectid: '',\n        rclsid: '',\n        robjid: '',\n        userlogin: '',\n        clsid: 'MBOX',\n        objid: \"\",\n        attr: [{\n          attr: 'mast_input_3037',\n          value: name\n        }],\n        global_attr: mast_attr,\n        inputParamter: data\n      };\n      // console.log(info);\n      this.scan_DataObjRunCustomEvent(info, \"\");\n      this.$refs.popup.close();\n    },\n    cancel: function cancel(e) {\n      uni.navigateBack({\n        delta: 1 //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\n      });\n    },\n    panel_del: function panel_del(index) {\n      var $this = this;\n      if (this.$data.subPanelList[index].scanCodeVal == this.$data.scanCodeVal) {\n        this.$data.scanCodeVal = '';\n      }\n      if (!this.$data.subPanelList[index].ObjID) this.$data.subPanelList.splice(index, 1);else {\n        var dataInfo = {\n          clsId: this.$data.param.Sub_Cls.ID,\n          objId: this.$data.subPanelList[index].ObjID\n        };\n        __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1391\");\n        // return;\n        uni.showLoading({\n          title: \"鍔犺浇涓�..\"\n        });\n        this.$store.dispatch('DelObj', dataInfo).then(function (success) {\n          __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1397\");\n          uni.hideLoading();\n          if (success.code == '00000') {\n            $this.$data.subPanelList.splice(index, 1);\n            uni.showModal({\n              title: \"鎻愮ず\",\n              content: \"鍒犻櫎鎴愬姛锛乗",\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n          } else {\n            uni.showModal({\n              title: \"閿欒9\",\n              content: success.msg,\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n          }\n        }).catch(function (ex) {\n          __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:1416\");\n          uni.hideLoading();\n          uni.showModal({\n            title: \"鎻愮ず9.1\",\n            content: ex.errMsg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        });\n      }\n    },\n    classGridStyleInfo: function classGridStyleInfo(clsid, styleName, clsType) {\n      var _this = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n        var $this, gridstyleInfo;\n        return _regenerator.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                $this = _this;\n                gridstyleInfo = {\n                  class_id: clsid,\n                  name: styleName,\n                  type: '2'\n                }; // console.log($this.$store.getters.getclassGridStyleInfo);\n                //鑾峰彇涓绘暟鎹被鐣岄潰鏍峰紡\n                if (clsType == 'Mast') {\n                  $this.$store.state.thisEditName = styleName;\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                        $this.class_attr_init();\n                      } else {\n                        uni.showModal({\n                          title: \"閿欒1.2\",\n                          content: success.msg,\n                          showCancel: false,\n                          confirmText: \"鍙栨秷\"\n                        });\n                      }\n                    }).catch(function (ex) {\n                      __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:1459\");\n                      uni.showModal({\n                        title: \"閿欒1.3\",\n                        content: ex.errMsg,\n                        showCancel: false,\n                        confirmText: \"鍙栨秷\"\n                      });\n                    });\n                  }\n                } else if (clsType == 'Sub') {\n                  //鑾峰彇浠庢暟鎹被鐣岄潰鏍峰紡\n                  $this.$store.state.thisEditSubName = styleName;\n                  if ($this.$store.getters.getSubClassGridStyleInfo) {\n                    $this.$data.subClassGridStyle = $this.$store.getters.getSubClassGridStyleInfo.data;\n                    $this.subClass_attr_init();\n                  } else {\n                    //console.log(gridstyleInfo);\n                    $this.$store.dispatch('subClassGridStyleInfo', 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.subClassGridStyle = success.data;\n                        $this.subClass_attr_init();\n                      } else {\n                        uni.showModal({\n                          title: \"閿欒1.2\",\n                          content: success.msg,\n                          showCancel: false,\n                          confirmText: \"鍙栨秷\"\n                        });\n                      }\n                    }).catch(function (ex) {\n                      __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:1491\");\n                      uni.showModal({\n                        title: \"閿欒1.3\",\n                        content: ex.errMsg,\n                        showCancel: false,\n                        confirmText: \"鍙栨秷\"\n                      });\n                    });\n                  }\n                }\n              case 3:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }))();\n    },\n    ontap: function ontap(e) {\n      var _this2 = this;\n      //鎵爜鍔熻兘\n      //console.log(e.target)\n      getApp().onScan(function (result) {\n        //console.log(result.decodedata);\n        var isVal = _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n        // if(!isVal){\n        // \tthis.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=result.decodedata;\n        // \tvar isVald =this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n        // \treturn;\n        // }\n        //涓绘暟鎹被鎵爜鏌ヨ鏁版嵁\n        if (isVal != result.decodedata) {\n          _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n          uni.hideKeyboard();\n          //瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈琝n          var eventid = _this2.$data.param.Scan_Code.Input_Change_Event.ID;\n          if (eventid) {\n            var req = [];\n            var attrlist = _this2.$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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                  attr: ar.Name,\n                  value: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? '1' : '0'\n                });else req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? ar.Value : ''\n                });\n              }\n            }\n            var info = {\n              eventid: eventid,\n              edtype: \"7\",\n              //\"0\",\n              projectid: '',\n              rclsid: '',\n              robjid: '',\n              userlogin: '',\n              clsid: 'MBOX',\n              //this.$data.param.Sub_Cls.ID,\n              objid: \"\",\n              attr: req,\n              mast_attr: [],\n              inputParamter: [{\n                attr: 'mast_input_3037',\n                value: result.decodedata\n              }]\n            };\n            _this2.scan_DataObjRunCustomEvent(info, \"\");\n          }\n        }\n      });\n    },\n    subontap: function subontap(e) {\n      var _this3 = this;\n      //鎵爜鍔熻兘\n      //console.log(e.target)\n      getApp().onScan(function (result) {\n        //console.log(result.decodedata);\n        var isVal = _this3.$data.subClassAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n        //涓绘暟鎹被鎵爜鏌ヨ鏁版嵁\n        if (isVal != result.decodedata) {\n          _this3.$data.subClassAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n          uni.hideKeyboard();\n          //瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈琝n          var eventid = _this3.$data.param.Scan_Code.Input_Change_Event.ID;\n          if (eventid) {\n            var req = [];\n            var attrlist = _this3.$data.subClassAttrList; //涓绘暟鎹被灞炴�\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                  attr: ar.Name,\n                  value: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? '1' : '0'\n                });else req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? ar.Value : ''\n                });\n              }\n            }\n            var info = {\n              eventid: eventid,\n              edtype: \"7\",\n              //\"0\",\n              projectid: '',\n              rclsid: '',\n              robjid: '',\n              userlogin: '',\n              clsid: 'MBOX',\n              //this.$data.param.Sub_Cls.ID,\n              objid: \"\",\n              attr: req,\n              mast_attr: [],\n              inputParamter: [{\n                attr: 'mast_input_3037',\n                value: result.decodedata\n              }]\n            };\n            _this3.scan_DataObjRunCustomEvent(info, \"\");\n          }\n        }\n      });\n    },\n    scan_ontap: function scan_ontap(e) {\n      var _this4 = this;\n      //鎵爜鍖烘壂鐮佸姛鑳絓n      //console.log(e.target)\n      getApp().onScan(function (result) {\n        __f__(\"log\", result.decodedata, \" at pages/modal/ms_classAttr.vue:1632\");\n        var isflag = true;\n        for (var i in _this4.$data.subPanelList) {\n          if (_this4.$data.subPanelList[i].scanCodeVal == result.decodedata) isflag = false;\n        }\n        //瀛愭暟鎹被鎵爜鏌ヨ鏁版嵁\n        if (isflag) {\n          uni.hideKeyboard();\n          _this4.$data.scanCodeVal = result.decodedata;\n          var eventid = _this4.$data.param.Scan_Code.Input_Change_Event.ID;\n          if (eventid) {\n            var mast_req = [];\n            //涓绘暟鎹被灞炴�\n            var classattrlist = _this4.$data.classAttrList;\n            for (var i = 0; i < classattrlist.length; i++) {\n              var attr = classattrlist[i].Attr;\n              for (var j = 0; j < attr.length; j++) {\n                var ar = attr[j];\n                if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_req.push({\n                  attr: ar.Name,\n                  value: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) mast_req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? '1' : '0'\n                });else mast_req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? ar.Value : ''\n                });\n              }\n            }\n            var req = [];\n            //瀛愭暟鎹被灞炴�\n            var attrlist = _this4.$data.subClassAttrList;\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                  attr: ar.Name,\n                  value: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? '1' : '0'\n                });else req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? ar.Value : ''\n                });\n              }\n            }\n            var info = {\n              eventid: eventid,\n              edtype: '7',\n              //\"0\",\n              projectid: '',\n              rclsid: '',\n              robjid: '',\n              userlogin: '',\n              clsid: 'MBOX',\n              //this.$data.param.Sub_Cls.ID,\n              objid: \"\",\n              attr: req,\n              mast_attr: mast_req,\n              inputParamter: [{\n                attr: 'input_3037',\n                value: _this4.$data.scanCodeVal\n              }]\n            };\n            _this4.scan_DataObjRunCustomEvent(info, \"\");\n          }\n        }\n      });\n    },\n    scan_onevent: function scan_onevent(e) {\n      // console.log(e.target);\n      if (e.target.value) {\n        var isflag = true;\n        for (var i in this.$data.subPanelList) {\n          if (this.$data.subPanelList[i].scanCodeVal == e.target.value) isflag = false;\n        }\n        //瀛愭暟鎹被鎵爜鏌ヨ鏁版嵁\n        if (isflag) {\n          uni.hideKeyboard();\n          this.$data.scanCodeVal = e.target.value;\n          var eventid = this.$data.param.Scan_Code.Input_Change_Event.ID;\n          if (eventid) {\n            var mast_req = [];\n            //涓绘暟鎹被灞炴�\n            var classattrlist = this.$data.classAttrList;\n            for (var i = 0; i < classattrlist.length; i++) {\n              var attr = classattrlist[i].Attr;\n              for (var j = 0; j < attr.length; j++) {\n                var ar = attr[j];\n                if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_req.push({\n                  attr: ar.Name,\n                  value: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) mast_req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? '1' : '0'\n                });else mast_req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? ar.Value : ''\n                });\n              }\n            }\n            var req = [];\n            //瀛愭暟鎹被灞炴�\n            var attrlist = this.$data.subClassAttrList;\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                  attr: ar.Name,\n                  value: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? '1' : '0'\n                });else req.push({\n                  attr: ar.Name,\n                  value: ar.Value ? ar.Value : ''\n                });\n              }\n            }\n            var info = {\n              eventid: eventid,\n              edtype: '7',\n              //\"0\",\n              projectid: '',\n              rclsid: '',\n              robjid: '',\n              userlogin: '',\n              clsid: 'MBOX',\n              //this.$data.param.Sub_Cls.ID,\n              objid: \"\",\n              attr: req,\n              mast_attr: mast_req,\n              inputParamter: [{\n                attr: 'input_3037',\n                value: this.$data.scanCodeVal\n              }]\n            };\n            this.scan_DataObjRunCustomEvent(info, \"\");\n          }\n        }\n      }\n    },\n    onarrow: function onarrow(index, open) {\n      // console.log(index+'--'+open);\n      var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Open;\n      if (!data_attr) {\n        this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = open == true ? false : true;\n        return;\n      }\n      this.$data.classAttrList[e.target.dataset['iiindex']].subClassAttr[index].Open = open == true ? false : true;\n    },\n    ondateTime: function ondateTime(e) {\n      //console.log(e.target)\n      var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n      if (!data_attr) {\n        this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n        return;\n      }\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/ms_classAttr.vue:1830\");\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/ms_classAttr.vue:1834\");\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/ms_classAttr.vue:1838\");\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                attr: ar.Name,\n                val: ar.ValID ? ar.ValID : ''\n              });else if (ar.Type == '甯冨皵鍊�) req.push({\n                attr: ar.Name,\n                val: ar.Value ? '1' : '0'\n              });else req.push({\n                attr: ar.Name,\n                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.Master_Cls.ID,\n            objid: \"\",\n            attr: req\n          };\n          this.DataObjRunCustomEvent(info);\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) {\n        //涓虹┖鏃讹紝娓呯┖灞炴�value\n        var index,\n          iindex,\n          dindex = 0;\n        for (var i in this.$data.classAttrList) {\n          for (var j in this.$data.classAttrList[i].Attr) {\n            if (delvalue[0].attr == this.$data.classAttrList[i].Attr[j].Name) {\n              this.$data.classAttrList[i].Attr[j].Value = \"\";\n            }\n          }\n        }\n      }\n      for (var v in item) {\n        var index,\n          iindex,\n          dindex = 0;\n        for (var i in this.$data.classAttrList) {\n          for (var j in this.$data.classAttrList[i].Attr) {\n            if (item[v].attr == this.$data.classAttrList[i].Attr[j].Name) {\n              index = i;\n              iindex = j;\n            }\n          }\n        }\n        var itemvalue = item[v];\n        var data_attr = this.$data.classAttrList[index].Attr[iindex];\n        __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:1913\");\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/ms_classAttr.vue:1916\");\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                  attr: ar.Name,\n                  val: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) req.push({\n                  attr: ar.Name,\n                  val: ar.Value ? '1' : '0'\n                });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') req.push({\n                  attr: ar.Name,\n                  val: itemvalue.Name\n                });else req.push({\n                  attr: ar.Name,\n                  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.Master_Cls.ID,\n              objid: \"\",\n              attr: req\n            };\n            this.DataObjRunCustomEvent(info);\n          }\n        }\n      }\n    },\n    sub_onchange: function sub_onchange(e) {\n      __f__(\"log\", e.target, \" at pages/modal/ms_classAttr.vue:1969\");\n      var value = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n      var data_attr = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n      __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:1974\");\n      if (value.Name != data_attr.Value) {\n        this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n        __f__(\"log\", this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/ms_classAttr.vue:1978\");\n        var eventid = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[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.subPanelList[e.target.dataset['iiindex']].subClassAttr;\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                attr: ar.Name,\n                val: ar.ValID ? ar.ValID : ''\n              });else if (ar.Type == '甯冨皵鍊�) req.push({\n                attr: ar.Name,\n                val: ar.Value ? '1' : '0'\n              });else req.push({\n                attr: ar.Name,\n                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.Sub_Cls.ID,\n            objid: \"\",\n            attr: req\n          };\n          this.DataObjRunCustomEvent(info);\n        }\n      }\n    },\n    sub_onchange2: function sub_onchange2(item, value, delvalue) {\n      // console.log(item);\n      // console.log(value);\n      // console.log(delvalue);\n      var subClassAttr = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr;\n      if (item.length == 0) {\n        //涓虹┖鏃讹紝娓呯┖灞炴�value\n        var index,\n          iindex,\n          dindex = 0;\n        for (var i in subClassAttr) {\n          for (var j in subClassAttr[i].Attr) {\n            for (var d in subClassAttr[i].Attr[j].dictitem) {\n              if (delvalue[0].Name == subClassAttr[i].Attr[j].dictitem[d].Name) {\n                subClassAttr[i].Attr[j].Value = \"\";\n              }\n            }\n          }\n        }\n      }\n      for (var v in item) {\n        var index,\n          iindex,\n          dindex = 0;\n        for (var i in subClassAttr) {\n          for (var j in subClassAttr[i].Attr) {\n            for (var d in subClassAttr[i].Attr[j].dictitem) {\n              if (item[v].Name == subClassAttr[i].Attr[j].dictitem[d].Name) {\n                index = i;\n                iindex = j;\n                dindex = d;\n              }\n            }\n          }\n        }\n        var itemvalue = item[v];\n        var data_attr = subClassAttr[index].Attr[iindex];\n        __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:2059\");\n        if (itemvalue.Name != data_attr.Value) {\n          subClassAttr[index].Attr[iindex].Value = value;\n          __f__(\"log\", subClassAttr[index].Attr[iindex].Value, \" at pages/modal/ms_classAttr.vue:2062\");\n          var eventid = subClassAttr[index].Attr[iindex].action;\n          if (eventid) {\n            // self.event_no_sub = 1;\n            var req = [];\n            var attrlist = subClassAttr;\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n                if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                  attr: ar.Name,\n                  val: ar.ValID ? ar.ValID : ''\n                });else if (ar.Type == '甯冨皵鍊�) req.push({\n                  attr: ar.Name,\n                  val: ar.Value ? '1' : '0'\n                });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') req.push({\n                  attr: ar.Name,\n                  val: itemvalue.Name\n                });else req.push({\n                  attr: ar.Name,\n                  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.Sub_Cls.ID,\n              objid: \"\",\n              attr: req\n            };\n            this.DataObjRunCustomEvent(info);\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      if (!data_attr) {\n        this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n        return;\n      }\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        //瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈琝n        var eventid = this.$data.param.Scan_Code.Input_Change_Event.ID;\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                attr: ar.Name,\n                value: ar.ValID ? ar.ValID : ''\n              });else if (ar.Type == '甯冨皵鍊�) req.push({\n                attr: ar.Name,\n                value: ar.Value ? '1' : '0'\n              });else req.push({\n                attr: ar.Name,\n                value: ar.Value ? ar.Value : ''\n              });\n            }\n          }\n          var info = {\n            eventid: eventid,\n            edtype: \"7\",\n            //\"0\",\n            projectid: '',\n            rclsid: '',\n            robjid: '',\n            userlogin: '',\n            clsid: 'MBOX',\n            //this.$data.param.Sub_Cls.ID,\n            objid: \"\",\n            attr: req,\n            mast_attr: [],\n            inputParamter: [{\n              attr: 'mast_input_3037',\n              value: e.target.value\n            }]\n          };\n          this.scan_DataObjRunCustomEvent(info, \"\");\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      if (!data_attr) {\n        this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n        return;\n      }\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n              if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n                attr: ar.Name,\n                val: ar.ValID ? ar.ValID : ''\n              });else if (ar.Type == '甯冨皵鍊�) req.push({\n                attr: ar.Name,\n                val: ar.Value ? '1' : '0'\n              });else req.push({\n                attr: ar.Name,\n                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.Master_Cls.ID,\n            objid: \"\",\n            attr: req\n          };\n          this.DataObjRunCustomEvent(info);\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/ms_classAttr.vue:2243\");\n      this.$data.subClassAttrList[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({\n          title: \"鎻愮ず\",\n          content: \"before_click_button-event_id涓虹┖锛乗",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n        return;\n      }\n      if (!button_callback) {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"button_callback-event_id涓虹┖锛乗",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\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 = {\n        index: index,\n        iindex: iindex\n      };\n      var $this = this;\n      uni.navigateTo({\n        url: '../selpsn/index?mulit=false&param=' + JSON.stringify(param),\n        events: {\n          AddPer: function AddPer(data, param) {\n            // console.log(param);\n            __f__(\"log\", data, \" at pages/modal/ms_classAttr.vue:2283\");\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            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.Master_Cls.ID,\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/ms_classAttr.vue:2313\");\n      uni.showModal({\n        title: \"鎻愮ず\",\n        content: \"姝ゅ姛鑳借繕鏈疄鐜帮紒\",\n        showCancel: false,\n        confirmText: \"鍙栨秷\"\n      });\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 = {\n        index: index,\n        iindex: iindex\n      };\n      var $this = this;\n      uni.navigateTo({\n        url: '../selPrj/index?relation=-1&param=' + 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            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.Master_Cls.ID,\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.param.Before_OK_Event)\n        //鍒ゆ柇鍔熻兘鐐瑰弬鏁版槸鍚︽湁纭畾鍓嶈剼鏈琝n        this.scan_OKDataObjRunCustomEvent(this.$data.param.Before_OK_Event.ID);else if (this.$data.param.After_OK_Event)\n        //鍒ゆ柇鍔熻兘鐐瑰弬鏁版槸鍚︽湁纭畾鍚庤剼鏈琝n        this.scan_OKDataObjRunCustomEvent(this.$data.param.After_OK_Event.ID);else uni.navigateBack({\n        delta: 1\n      }); //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\n    },\n    trigger: function trigger() {\n      if (this.$data.param.Before_Trigger_Event)\n        //鍒ゆ柇鍔熻兘鐐瑰弬鏁版槸鍚︽湁瑙﹀彂鍓嶈剼鏈琝n        this.scan_TriggerDataObjRunCustomEvent(this.$data.param.Before_Trigger_Event.ID);else if (this.$data.param.After_Trigger_Event)\n        //鍒ゆ柇鍔熻兘鐐瑰弬鏁版槸鍚︽湁瑙﹀彂鍚庤剼鏈琝n        this.scan_TriggerDataObjRunCustomEvent(this.$data.param.After_Trigger_Event.ID);\n      elsess;\n      uni.navigateBack({\n        delta: 1\n      }); //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\n    },\n    add: function add() {\n      var _this5 = this;\n      uni.showLoading({\n        title: \"鍔犺浇涓�..\",\n        mask: true\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n            name: ar.Name,\n            value: ar.ValID ? ar.ValID : ''\n          });else if (ar.Type == '甯冨皵鍊�) req.push({\n            name: ar.Name,\n            value: ar.Value ? '1' : '0'\n          });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n            if (ar.select == true) {\n              //鍒ゆ柇涓嬫媺鏄惁澶氶�\n              var valStr = \"\";\n              for (var v in ar.Value) {\n                if (valStr) valStr += \";\";\n                valStr += ar.Value[v];\n              }\n              req.push({\n                name: ar.Name,\n                value: valStr\n              });\n            } else req.push({\n              name: ar.Name,\n              value: ar.Value\n            });\n          } else req.push({\n            name: ar.Name,\n            value: ar.Value ? ar.Value : ''\n          });\n          if (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({\n              title: \"鎻愮ず\",\n              content: ar.DispName + '涓嶈兘涓虹┖锛�,\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n            return;\n          }\n        }\n      }\n      var enviroment = {\n        'function': '3000',\n        // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.Master_Cls.ID,\n        // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top',\n        // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.Master_Cls.ID\n        }\n      };\n      var dataInfo = {\n        class_id: this.$data.param.Master_Cls.ID,\n        data_obj_id: '',\n        masterclsid: '',\n        req: JSON.stringify(req),\n        upfile: JSON.stringify([]),\n        post_data: JSON.stringify({}),\n        compose: JSON.stringify([]),\n        refdatastore: JSON.stringify([]),\n        extinfo: JSON.stringify(enviroment),\n        not_trigger_sys_event: ''\n      };\n\n      // return\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2468\");\n      this.$store.dispatch('addclassattr', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2470\");\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({\n                title: action.result,\n                icon: \"success\",\n                duration: 3000\n              });\n            }\n            // \"{\"ret\":0, \"result_type\":0, \"result\":\"鍒涘缓鎴愬姛123123123\",\"info\":\"\"}\"\n          }\n          //鍒锋柊\n          uni.redirectTo({\n            url: '../modal/ms_classAttr?param=' + JSON.stringify(_this5.$data.param) + \"&titlename=\" + _this5.$data.title\n          });\n          // this.class_attr_init();\n        } else {\n          uni.showModal({\n            title: \"閿欒\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:2499\");\n        uni.hideLoading();\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\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) ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n                      else 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                        ca.dictitem[d].attr = ca.Name;\n                        if (ca.dictitem[d].CN_C_IS_DEFAULT == '1') ca.Value = ca.dictitem[d].CN_S_NAME;\n                      }\n                    }\n                    if (ca.Type == '鏃ユ湡' || ca.Type == '鏃堕棿') {\n                      var nowDate = new Date();\n                      var date = {\n                        year: nowDate.getFullYear(),\n                        month: nowDate.getMonth() + 1,\n                        day: nowDate.getDate()\n                      };\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({\n                          id: rescls[0],\n                          name: rescls[1]\n                        });\n                      }\n                      ca.RelClsList = relClsList;\n                      ca.Value = '璇�;\n                    }\n                    if (ca.Type == '鐪佸競鍖�) ca.Value = '璇烽�鎷�;\n                    if (ca.Type == '甯冨皵鍊�) ca.Value = false;\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                Font: this.$data.classGridStyle.StyleDef.Font ? this.$data.classGridStyle.StyleDef.Font : {},\n                Bk_Color: this.$data.classGridStyle.StyleDef.Bk_Color ? this.$data.classGridStyle.StyleDef.Bk_Color : '#FFFFFF',\n                Text_Color: this.$data.classGridStyle.StyleDef.Text_Color ? this.$data.classGridStyle.StyleDef.Text_Color : '#000000'\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({\n                  attr: ar.attr,\n                  value: 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        // console.log(req);\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.Master_Cls.ID,\n            objid: \"\",\n            attr: req\n          };\n          this.ini_DataObjRunCustomEvent(info);\n        }\n        __f__(\"log\", this.$data.classGridStyle, \" at pages/modal/ms_classAttr.vue:2655\");\n        __f__(\"log\", this.$data.classAttrList, \" at pages/modal/ms_classAttr.vue:2656\");\n      } else {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"鏈壘鍒板彲鏄剧ず鐨勭殑灞炴�\",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      }\n    },\n    subClass_attr_init: function subClass_attr_init() {\n      var attrlist = this.$data.subClassGridStyle.StyleDef.show_style;\n      var newattrlist = [];\n      if (this.$data.subClassAttrList.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.subClassAttrList.length; s++) {\n            var clsattr = this.$data.subClassAttrList[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) ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n                      else 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                        ca.dictitem[d].attr = ca.Name;\n                        if (ca.dictitem[d].CN_C_IS_DEFAULT == '1') ca.Value = ca.dictitem[d].CN_S_NAME;\n                      }\n                    }\n                    if (ca.Type == '鏃ユ湡' || ca.Type == '鏃堕棿') {\n                      var nowDate = new Date();\n                      var date = {\n                        year: nowDate.getFullYear(),\n                        month: nowDate.getMonth() + 1,\n                        day: nowDate.getDate()\n                      };\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({\n                          id: rescls[0],\n                          name: rescls[1]\n                        });\n                      }\n                      ca.RelClsList = relClsList;\n                      ca.Value = '璇�;\n                    }\n                    if (ca.Type == '鐪佸競鍖�) ca.Value = '璇烽�鎷�;\n                    if (ca.Type == '甯冨皵鍊�) ca.Value = false;\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.subClassGridStyle.StyleDef.control_style,\n                title_p_wdith: this.$data.subClassGridStyle.StyleDef.title_p_wdith,\n                Font: this.$data.subClassGridStyle.StyleDef.Font ? this.$data.subClassGridStyle.StyleDef.Font : {},\n                Bk_Color: this.$data.subClassGridStyle.StyleDef.Bk_Color ? this.$data.subClassGridStyle.StyleDef.Bk_Color : '#FFFFFF',\n                Text_Color: this.$data.subClassGridStyle.StyleDef.Text_Color ? this.$data.subClassGridStyle.StyleDef.Text_Color : '#000000'\n              });\n            }\n          }\n        }\n        if (newattrlist.length > 0) {\n          this.$data.subClassAttrList = newattrlist;\n        }\n        var req = [];\n        if (this.$data.subClassGridStyle.StyleDef) {\n          if (this.$data.subClassGridStyle.StyleDef.show_style.length > 0) {\n            var attrlist = this.$data.subClassGridStyle.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({\n                  attr: ar.attr,\n                  value: ar.value ? ar.value : ''\n                });\n              }\n            }\n          }\n        }\n        var eventlist = this.$data.subClassGridStyle.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        // console.log(req);\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.Sub_Cls.ID,\n            objid: \"\",\n            attr: req\n          };\n          this.scan_ini_DataObjRunCustomEvent(info);\n        }\n        __f__(\"log\", this.$data.subClassGridStyle, \" at pages/modal/ms_classAttr.vue:2813\");\n        __f__(\"log\", this.$data.subClassAttrList, \" at pages/modal/ms_classAttr.vue:2814\");\n      } else {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"鏈壘鍒板彲鏄剧ず鐨勭殑灞炴�\",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      }\n    },\n    ini_DataObjRunCustomEvent: function ini_DataObjRunCustomEvent(info) {\n      var _this6 = this;\n      var param = {\n        EditStyle: this.$data.param.Master_Cls.View_Style.Name,\n        ViewStyle: this.$data.param.Master_Cls.View_Style.Name,\n        NotTriggerSysEvent: 0,\n        enviroment: {\n          'function': '3000',\n          // 鍔熻兘鐐圭紪鍙穃n          cls_id: this.$data.param.Master_Cls.ID,\n          // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n          'button': 'top',\n          // top/bottom\n          button_name: '鏂板',\n          master: {\n            cls_id: this.$data.param.Master_Cls.ID // button=bottom鏃�master鐨刢ls_id\n            //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n          }\n        }\n      };\n\n      var inputparameter = '';\n      var global_attr = '';\n      var dataInfo = {\n        edtype: info.edtype,\n        eventid: info.eventid,\n        projectid: info.projectid,\n        rclsid: info.rclsid,\n        robjid: info.robjid,\n        userlogin: info.userlogin,\n        clsid: info.clsid,\n        objid: info.objid,\n        attr: JSON.stringify(info.attr),\n        extinfo: JSON.stringify(param),\n        inputparameter: inputparameter,\n        global_attr: global_attr\n      };\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2858\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2860\");\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/ms_classAttr.vue:2875\");\n                  for (var i = 0; i < val.length; i++) {\n                    for (var a = 0; a < _this6.$data.classAttrList.length; a++) {\n                      for (var l = 0; l < _this6.$data.classAttrList[a].Attr.length; l++) {\n                        var ca = _this6.$data.classAttrList[a].Attr[l];\n                        if (val[i].attr == ca.Name) {\n                          if (ca.Type == '瀛楀吀' || 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({\n                                \"CN_S_NAME\": val,\n                                \"Name\": val,\n                                \"label\": val,\n                                \"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                    var length = 0;\n                    if (!_this6.$data.refdatastore.filter(function (s) {\n                      return val[i].attr == s.attr;\n                    }).length) {\n                      length = 1;\n                      _this6.$data.refdatastore.push(val[i]);\n                    }\n                    if (length == 0) {\n                      for (var j = 0; j < _this6.$data.refdatastore.length; j++) {\n                        if (_this6.$data.refdatastore[j].attr == val[i].attr) {\n                          _this6.$data.refdatastore[j].value = val[i].value;\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n              if (action_type == 'open_select_userdlg') {\n                uni.showModal({\n                  title: \"閿欒2.2\",\n                  content: \"open_select_userdlg杩欎釜action_type杩樻湭澶勭悊锛乗",\n                  showCancel: false,\n                  confirmText: \"鍙栨秷\"\n                });\n              }\n            }\n          }\n        } else {\n          uni.showModal({\n            title: \"閿欒2\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒2.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    },\n    DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n      var $this = this;\n      var enviroment = {\n        'function': '3000',\n        // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.Master_Cls.ID,\n        // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top',\n        // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.Master_Cls.ID // button=bottom鏃�master鐨刢ls_id\n          //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n        }\n      };\n\n      enviroment.edit_dlg = {\n        type: 'small',\n        //灏忕獥鍙n        class_id: this.$data.param.Master_Cls.ID //褰撳墠鏁版嵁绫籭d\n      };\n\n      if (data_attr) {\n        enviroment.edit_dlg.form_control = {\n          //鎵�睘鐨勮〃鍗曟帶浠禱n          name: data_attr.Name,\n          //瀛楁灞炴�\n          text: data_attr.DispName,\n          //鏄剧ず鏂囨湰\n          group_name: data_attr.GroupName,\n          //灞炴�缁刓n          type: data_attr.Type,\n          //瀛楁绫诲瀷\n          readonly: data_attr.ReadOnly,\n          //鏄惁鍙\n          button_img: data_attr.button_img,\n          //寮曠敤鎸夐挳鐨勫浘鏍嘰n          button_tooltip: data_attr.button_tooltip //寮曠敤鎸夐挳鐨則ooltip\n        };\n      }\n\n      var dataInfo = {\n        edtype: info.edtype,\n        eventid: info.eventid,\n        projectid: info.projectid.replace('{', '').replace('}', ''),\n        rclsid: info.rclsid,\n        robjid: info.robjid,\n        userlogin: info.userlogin,\n        clsid: info.clsid,\n        objid: info.objid,\n        attr: JSON.stringify(info.attr),\n        extinfo: JSON.stringify(enviroment),\n        inputparameter: '',\n        global_attr: JSON.stringify(this.$data.global_attr)\n      };\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2990\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2992\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          var actionlist = data.action;\n          if (actionlist) {\n            __f__(\"log\", actionlist, \" at pages/modal/ms_classAttr.vue:2998\");\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 == '瀛楀吀-瀛楃涓� || 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({\n                                \"CN_S_NAME\": val,\n                                \"Name\": val,\n                                \"label\": val,\n                                \"value\": val\n                              });\n                            }\n                            attr[j].dictitem = dictItemList;\n                            // attr[j].dictitem = result[i].choice_list;\n                          }\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/ms_classAttr.vue:3031\");\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          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              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({\n            title: \"閿欒3\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒3.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    },\n    OKDataObjRunCustomEvent: function OKDataObjRunCustomEvent() {\n      var _this7 = this;\n      var enviroment = {\n        'function': '3000',\n        // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.Master_Cls.ID,\n        // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top',\n        // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.Master_Cls.ID // button=bottom鏃�master鐨刢ls_id\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n            attr: ar.Name,\n            value: ar.ValID ? ar.ValID : ''\n          });else if (ar.Type == '甯冨皵鍊�) req.push({\n            attr: ar.Name,\n            value: ar.Value ? '1' : '0'\n          });else req.push({\n            attr: ar.Name,\n            value: 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({\n              'attr': this.$data.refdatastore[i].attr,\n              'value': this.$data.refdatastore[i].value\n            });\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.Master_Cls.ID,\n        objid: \"\",\n        attr: req\n      };\n      var dataInfo = {\n        edtype: info.edtype,\n        eventid: info.eventid,\n        projectid: info.projectid,\n        rclsid: info.rclsid,\n        robjid: info.robjid,\n        userlogin: info.userlogin,\n        clsid: info.clsid,\n        objid: info.objid,\n        attr: JSON.stringify(info.attr),\n        extinfo: JSON.stringify(enviroment),\n        global_attr: JSON.stringify(this.$data.global_attr)\n      };\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3181\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3183\");\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 (!_this7.$data.refdatastore.filter(function (s) {\n              return result[i].attr == s.attr;\n            }).length) {\n              length = 1;\n              _this7.$data.refdatastore.push(result[i]);\n            }\n            if (length == 0) {\n              for (var j = 0; j < _this7.$data.refdatastore.length; j++) {\n                if (_this7.$data.refdatastore[j].attr == result[i].attr) {\n                  _this7.$data.refdatastore[j].value = result[i].value;\n                }\n              }\n            }\n          }\n          _this7.add();\n        } else {\n          uni.showModal({\n            title: \"閿欒4\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒4.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    },\n    DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, index, iindex) {\n      var _this8 = this;\n      var enviroment = {\n        'function': '3000',\n        // 鍔熻兘鐐圭紪鍙穃n        cls_id: this.$data.param.Master_Cls.ID,\n        // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n        'button': 'top',\n        // top/bottom\n        button_name: '鏂板',\n        master: {\n          cls_id: this.$data.param.Master_Cls.ID // button=bottom鏃�master鐨刢ls_id\n          //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n        }\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n            attr: ar.Name,\n            value: ar.ValID ? ar.ValID : ''\n          });else if (ar.Type == '甯冨皵鍊�) req.push({\n            attr: ar.Name,\n            value: ar.Value ? '1' : '0'\n          });else req.push({\n            attr: ar.Name,\n            value: 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({\n              'attr': this.$data.refdatastore[i].attr,\n              'value': this.$data.refdatastore[i].value\n            });\n          }\n        }\n      }\n      var extinfo = enviroment;\n      extinfo.edit_dlg = {\n        type: 'small',\n        //灏忕獥鍙n        class_id: this.$data.param.Master_Cls.ID //褰撳墠鏁版嵁绫籭d\n      };\n\n      if (data_attr) {\n        extinfo.edit_dlg.form_control = {\n          //鎵�睘鐨勮〃鍗曟帶浠禱n          name: data_attr.Name,\n          //瀛楁灞炴�\n          text: data_attr.DispName,\n          //鏄剧ず鏂囨湰\n          group_name: data_attr.GroupName,\n          //灞炴�缁刓n          type: data_attr.Type,\n          //瀛楁绫诲瀷\n          readonly: data_attr.ReadOnly,\n          //鏄惁鍙\n          button_img: data_attr.button_img,\n          //寮曠敤鎸夐挳鐨勫浘鏍嘰n          button_tooltip: data_attr.button_tooltip //寮曠敤鎸夐挳鐨則ooltip\n        };\n      }\n\n      var dataInfo = {\n        edtype: \"0\",\n        eventid: eventid,\n        projectid: '',\n        rclsid: '',\n        robjid: '',\n        userlogin: '',\n        clsid: this.$data.param.Master_Cls.ID,\n        objid: '',\n        attr: JSON.stringify(req),\n        extinfo: JSON.stringify(extinfo),\n        global_attr: JSON.stringify(this.$data.global_attr)\n      };\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3302\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3304\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          if (data != \"\") {\n            var actions = data.action;\n            __f__(\"log\", actions, \" at pages/modal/ms_classAttr.vue:3310\");\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                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 + '姝ction灏氭湭澶勭悊锛�\n                  });\n                  d.show();\n                } else if (action.action_type == 'open_select_userdlg') {\n                  var style = val.style;\n                  // style == 'user' ? '閫夋嫨浜哄憳' : style == 'department' ? '閫夋嫨閮ㄩ棬' : style == 'role' ? '閫夋嫨瑙掕壊' : ''\n                  var $this = _this8;\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&param=' + JSON.stringify(param),\n                    events: {\n                      AddPer: function AddPer(data, param) {\n                        // console.log(param);\n                        __f__(\"log\", data, \" at pages/modal/ms_classAttr.vue:3340\");\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.Master_Cls.ID,\n                          objid: \"\",\n                          attr: param.req,\n                          inputparameter: data\n                        };\n                        $this.DataObjRunCustomEvent(info, param.data_attr);\n                      }\n                    }\n                  });\n                } else if (action.action_type == 'open_data_query_dlg') {} else 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 + '姝ction灏氭湭澶勭悊锛�\n                  });\n                  d.show();\n                } else 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 == '鍏ㄩ儴鐩稿叧') priRel = '0';else if (action.value.select_range == '鎴戣礋璐g殑椤圭洰') priRel = '1';else if (action.value.select_range == '鎴戝垱寤虹殑') priRel = '2';else if (action.value.select_range == '鎴戝弬涓庣殑' || action.value.select_range == '鎴戝弬鍔犵殑') priRel = '3';else if (action.value.select_range == '鎴戝叧娉ㄧ殑') priRel = '4';else if (action.value.select_range == '鎴戜笅灞炵殑椤圭洰') priRel = '5';\n                  var $this = _this8;\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 + '&param=' + 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.Master_Cls.ID,\n                            objid: \"\",\n                            attr: param.req\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 + '姝ction灏氭湭澶勭悊锛�\n                  });\n                  d.show();\n                }\n              }\n            }\n          } else {\n            uni.showModal({\n              title: \"鎻愮ず5.2\",\n              content: '璋冪敤 before_click_button 鑴氭湰杩斿洖绌猴紝event_id' + eventid,\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n          }\n        } else {\n          uni.showModal({\n            title: \"閿欒5\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"鎻愮ず5.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    },\n    scan_ini_DataObjRunCustomEvent: function scan_ini_DataObjRunCustomEvent(info) {\n      var _this9 = this;\n      var param = {\n        EditStyle: this.$data.param.Sub_Cls.View_Style.Name,\n        ViewStyle: this.$data.param.Sub_Cls.View_Style.Name,\n        NotTriggerSysEvent: 0,\n        enviroment: {\n          'function': '3000',\n          // 鍔熻兘鐐圭紪鍙穃n          cls_id: this.$data.param.Sub_Cls.ID,\n          // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n          'button': 'top',\n          // top/bottom\n          button_name: '鏂板',\n          master: {\n            cls_id: this.$data.param.Sub_Cls.ID // button=bottom鏃�master鐨刢ls_id\n            //obj_id: ''  // button=bottom鏃�master鐨刼bj_id\n          }\n        }\n      };\n\n      var inputparameter = '';\n      var global_attr = '';\n      var dataInfo = {\n        edtype: info.edtype,\n        eventid: info.eventid,\n        projectid: info.projectid,\n        rclsid: info.rclsid,\n        robjid: info.robjid,\n        userlogin: info.userlogin,\n        clsid: info.clsid,\n        objid: info.objid,\n        attr: JSON.stringify(info.attr),\n        extinfo: JSON.stringify(param),\n        inputparameter: inputparameter,\n        global_attr: global_attr\n      };\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3489\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3491\");\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/ms_classAttr.vue:3506\");\n                  for (var i = 0; i < val.length; i++) {\n                    for (var a = 0; a < _this9.$data.subClassAttrList.length; a++) {\n                      for (var l = 0; l < _this9.$data.subClassAttrList[a].Attr.length; l++) {\n                        var ca = _this9.$data.subClassAttrList[a].Attr[l];\n                        if (val[i].attr == ca.Name) {\n                          if (ca.Type == '瀛楀吀' || 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({\n                                \"CN_S_NAME\": val,\n                                \"Name\": val,\n                                \"label\": val,\n                                \"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                    var length = 0;\n                    if (!_this9.$data.refdatastore.filter(function (s) {\n                      return val[i].attr == s.attr;\n                    }).length) {\n                      length = 1;\n                      _this9.$data.refdatastore.push(val[i]);\n                    }\n                    if (length == 0) {\n                      for (var j = 0; j < _this9.$data.refdatastore.length; j++) {\n                        if (_this9.$data.refdatastore[j].attr == val[i].attr) {\n                          _this9.$data.refdatastore[j].value = val[i].value;\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n              if (action_type == 'open_select_userdlg') {\n                uni.showModal({\n                  title: \"閿欒6.2\",\n                  content: \"open_select_userdlg杩欎釜action_type杩樻湭澶勭悊锛乗",\n                  showCancel: false,\n                  confirmText: \"鍙栨秷\"\n                });\n              }\n            }\n          }\n        } else {\n          uni.showModal({\n            title: \"閿欒6\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒6.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    },\n    scan_DataObjRunCustomEvent: function scan_DataObjRunCustomEvent(info, data_attr) {\n      var _this10 = this;\n      var $this = this;\n      var enviroment = {};\n      if (info.enviroment) {\n        enviroment = info.enviroment;\n      } else {\n        enviroment = {\n          'function': '3000',\n          // 鍔熻兘鐐圭紪鍙穃n          cls_id: 'MBOX',\n          //this.$data.param.Sub_Cls.ID,     // 鍔熻兘鐐逛粠鏁版嵁绫绘爣璇哱n          'button': 'top',\n          // top/bottom\n          button_name: '鏂板',\n          edit_dlg: {\n            type: 'small',\n            //灏忕獥鍙n            class_id: 'MBOX' //this.$data.param.Sub_Cls.ID,//褰撳墠鏁版嵁绫籭d\n          }\n        };\n      }\n\n      var global_attr = this.$data.global_attr;\n      if (info.global_attr) {\n        global_attr = info.global_attr;\n      }\n      var dataInfo = {\n        edtype: info.edtype,\n        eventid: info.eventid,\n        projectid: info.projectid.replace('{', '').replace('}', ''),\n        rclsid: info.rclsid,\n        robjid: info.robjid,\n        userlogin: info.userlogin,\n        clsid: info.clsid,\n        objid: info.objid,\n        attr: JSON.stringify(info.attr),\n        extinfo: JSON.stringify(enviroment),\n        inputparameter: JSON.stringify(info.inputParamter),\n        global_attr: JSON.stringify(global_attr)\n      };\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3617\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3619\");\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          var actionlist = data.action;\n          if (actionlist) {\n            __f__(\"log\", actionlist, \" at pages/modal/ms_classAttr.vue:3625\");\n            for (var ii = 0; ii < actionlist.length; ii++) {\n              var action = actionlist[ii];\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 s = 0; s < $this.$data.subPanelList.length; s++) {\n                      for (var c = 0; c < $this.$data.subPanelList[s].subClassAttrList.length; c++) {\n                        var attr = $this.$data.subPanelList[s].subClassAttrList[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 == '瀛楀吀-瀛楃涓� || 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({\n                                  \"CN_S_NAME\": val,\n                                  \"Name\": val,\n                                  \"label\": val,\n                                  \"value\": val\n                                });\n                              }\n                              attr[j].dictitem = dictItemList;\n                              // attr[j].dictitem = result[i].choice_list;\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n\n                  for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n                    for (var c = 0; c < $this.$data.subPanelList[s].subClassAttrList.length; c++) {\n                      var attr = $this.$data.subPanelList[s].subClassAttrList[c].Attr;\n                      for (var j = 0; j < attr.length; j++) {\n                        __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/ms_classAttr.vue:3664\");\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              } else if (action.action_type == 'set_global_attr') {\n                $this.$actiontr = action.value || [];\n              } else if (action.action_type == 'open_common_dlg') {\n                //鎵撳紑渚ф粦寮规\n                var $this = _this10;\n                if (action.value.common_dlg_id == 'check_list') {\n                  $this.$data.check_list = action.value.config;\n                  if (action.value.config.appear_style == 'sideslip')\n                    //鍒ゆ柇鏄惁鏄晶婊慭n                    $this.$data.popupType = 'right';else $this.$data.popupType = 'center';\n                  // open 鏂规硶浼犲叆鍙傛暟 绛夊悓鍦�uni-popup 缁勪欢涓婄粦瀹�type灞炴�\n                  $this.$refs.popup.open($this.$data.popupType);\n                }\n              } else if (action.action_type == 'add_subcls_panel') {\n                //涓讳粠鏁版嵁绫绘壂鐮佹煡璇㈡暟鎹甛n                var result = action.value;\n                var $this = _this10;\n                var list_1 = JSON.parse(JSON.stringify(_this10.$data.subClassAttrList));\n                var scanCodeVal = $this.$data.scanCodeVal;\n                var rand = '';\n                for (var i = 0; i < 5; i++) {\n                  //鐢熸垚5浣嶉殢鏈烘暟\n                  rand += Math.floor(Math.random() * 10);\n                }\n                if (info.inputParamter[0].attr) {\n                  if (info.inputParamter[0].attr == \"mast_input_3037\")\n                    //鍒ゆ柇鏄富鏁版嵁绫绘壂鐮佹煡璇㈡暟鎹甛n                    scanCodeVal = \"mast_input_3037-\" + rand;\n                }\n                if (info.attr[0].attr) {\n                  if (info.attr[0].attr == \"mast_input_3037\")\n                    //鍒ゆ柇鏄富鏁版嵁绫绘壂鐮佹煡璇㈡暟鎹甛n                    scanCodeVal = \"mast_input_3037-\" + rand;\n                }\n                $this.$data.subPanelList.push({\n                  scanCodeVal: scanCodeVal,\n                  subClassAttr: list_1\n                });\n                for (var i = 0; i < result.length; i++) {\n                  for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n                    if ($this.$data.subPanelList[s].scanCodeVal == scanCodeVal) {\n                      if (result[i].attr == \"S_ID\") $this.$data.subPanelList[s].ObjID = result[i].value;\n                      var _subClassAttr = $this.$data.subPanelList[s].subClassAttr;\n                      for (var c = 0; c < _subClassAttr.length; c++) {\n                        var attr = _subClassAttr[c].Attr;\n                        for (var j = 0; j < attr.length; j++) {\n                          // console.log(attr[j].Name+'=='+result[i].attr);\n                          if (attr[j].Name == result[i].attr) {\n                            attr[j].Value = result[i].value;\n                          }\n                        }\n                      }\n\n                      // $this.$data.subPanelList[s].subClassAttr=list_1;\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            }\n          }\n          if (data.result) {\n            var _list_ = JSON.parse(JSON.stringify(_this10.$data.subClassAttrList));\n            var scanCodeVal = $this.$data.scanCodeVal;\n            if (info.inputParamter[0].attr == \"mast_input_3037\") scanCodeVal = \"mast_input_3037-\" + ii;\n            $this.$data.subPanelList.push({\n              scanCodeVal: scanCodeVal,\n              subClassAttr: _list_\n            });\n            var result = data.result;\n            for (var i = 0; i < result.length; i++) {\n              for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n                if ($this.$data.subPanelList[s].scanCodeVal == scanCodeVal) {\n                  if (result[i].attr == \"S_ID\") $this.$data.subPanelList[s].ObjID = result[i].value;\n                  var _subClassAttr = $this.$data.subPanelList[s].subClassAttr;\n                  for (var c = 0; c < _subClassAttr.length; c++) {\n                    var attr = _subClassAttr[c].Attr;\n                    for (var j = 0; j < attr.length; j++) {\n                      // console.log(attr[j].Name+'=='+result[i].attr);\n                      if (attr[j].Name == result[i].attr) {\n                        attr[j].Value = result[i].value;\n                      }\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({\n            title: \"閿欒7\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.showModal({\n          title: \"閿欒7.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    },\n    scan_OKDataObjRunCustomEvent: function scan_OKDataObjRunCustomEvent(eventID) {\n      uni.showLoading({\n        title: \"鍔犺浇涓�..\",\n        mask: true\n      });\n      var $this = this;\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n            attr: ar.Name,\n            value: ar.ValID ? ar.ValID : ''\n          });else if (ar.Type == '甯冨皵鍊�) req.push({\n            attr: ar.Name,\n            value: ar.Value ? '1' : '0'\n          });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n            if (ar.select == true) {\n              //鍒ゆ柇涓嬫媺鏄惁澶氶�\n              var valStr = \"\";\n              for (var v in ar.Value) {\n                if (valStr) valStr += \";\";\n                valStr += ar.Value[v];\n              }\n              req.push({\n                attr: ar.Name,\n                value: valStr\n              });\n            } else req.push({\n              attr: ar.Name,\n              value: ar.Value\n            });\n          } else req.push({\n            attr: ar.Name,\n            value: ar.Value ? ar.Value : ''\n          });\n          if (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({\n              title: \"鎻愮ず\",\n              content: ar.DispName + '涓嶈兘涓虹┖锛�,\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n            return;\n          }\n        }\n      }\n      var objects = [];\n      var subPanelList = $this.$data.subPanelList;\n      for (var s = 0; s < subPanelList.length; s++) {\n        var sub_req = [];\n        for (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n          var attr = subPanelList[s].subClassAttr[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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n            if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') sub_req.push({\n              attr: ar.Name,\n              value: ar.ValID ? ar.ValID : ''\n            });else if (ar.Type == '甯冨皵鍊�) sub_req.push({\n              attr: ar.Name,\n              value: ar.Value ? '1' : '0'\n            });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n              if (ar.select == true) {\n                //鍒ゆ柇涓嬫媺鏄惁澶氶�\n                var valStr = \"\";\n                for (var v in ar.Value) {\n                  if (valStr) valStr += \";\";\n                  valStr += ar.Value[v];\n                }\n                sub_req.push({\n                  attr: ar.Name,\n                  value: valStr\n                });\n              } else sub_req.push({\n                attr: ar.Name,\n                value: ar.Value\n              });\n            } else sub_req.push({\n              attr: ar.Name,\n              value: ar.Value ? ar.Value : ''\n            });\n            if (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({\n                title: \"鎻愮ず\",\n                content: ar.DispName + '涓嶈兘涓虹┖锛�,\n                showCancel: false,\n                confirmText: \"鍙栨秷\"\n              });\n              return;\n            }\n          }\n        }\n        objects.push({\n          obj_id: subPanelList[s].scanCodeVal,\n          obj_attrs: sub_req\n        });\n      }\n      var dataJson = {\n        master_cls: {\n          cls_name: 'MBOX',\n          //$this.$data.param.Master_Cls.Name,\n          obj_attrs: req\n        },\n        input_3037: $this.$data.scanCodeVal,\n        //鎵爜鍐呭\n        op_type: $this.$data.param.OperationType,\n        //浣滀笟绫诲瀷瀹氫箟\n        sub_cls: {\n          cls_name: 'MBOX',\n          //$this.$data.param.Sub_Cls.Name,\n          objects: objects\n        }\n      };\n      // console.log(JSON.stringify(dataJson));\n      var dataInfo = {\n        edtype: \"7\",\n        eventid: eventID,\n        projectid: '',\n        rclsid: '',\n        robjid: '',\n        userlogin: '',\n        clsid: 'MBOX',\n        objid: '',\n        attr: JSON.stringify([]),\n        extinfo: JSON.stringify([]),\n        global_attr: JSON.stringify($this.$data.global_attr),\n        dataJson: JSON.stringify(dataJson)\n      };\n      // console.log(JSON.stringify(dataInfo));\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3961\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3963\");\n        uni.hideLoading();\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          var result = data.result;\n          if (eventID != $this.$data.param.After_OK_Event.ID) $this.scan_OKDataObjRunCustomEvent($this.$data.param.After_OK_Event.ID);else {\n            //鍒锋柊\n            uni.redirectTo({\n              url: '../modal/ms_classAttr?param=' + JSON.stringify($this.$data.param) + \"&titlename=\" + $this.$data.title\n            });\n          }\n        } else {\n          uni.showModal({\n            title: \"閿欒8\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.hideLoading();\n        uni.showModal({\n          title: \"閿欒8.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    },\n    scan_TriggerDataObjRunCustomEvent: function scan_TriggerDataObjRunCustomEvent(eventID) {\n      uni.showLoading({\n        title: \"鍔犺浇涓�..\",\n        mask: true\n      });\n      var $this = this;\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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n          if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n            attr: ar.Name,\n            value: ar.ValID ? ar.ValID : ''\n          });else if (ar.Type == '甯冨皵鍊�) req.push({\n            attr: ar.Name,\n            value: ar.Value ? '1' : '0'\n          });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n            if (ar.select == true) {\n              //鍒ゆ柇涓嬫媺鏄惁澶氶�\n              var valStr = \"\";\n              for (var v in ar.Value) {\n                if (valStr) valStr += \";\";\n                valStr += ar.Value[v];\n              }\n              req.push({\n                attr: ar.Name,\n                value: valStr\n              });\n            } else req.push({\n              attr: ar.Name,\n              value: ar.Value\n            });\n          } else req.push({\n            attr: ar.Name,\n            value: ar.Value ? ar.Value : ''\n          });\n          if (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({\n              title: \"鎻愮ず\",\n              content: ar.DispName + '涓嶈兘涓虹┖锛�,\n              showCancel: false,\n              confirmText: \"鍙栨秷\"\n            });\n            return;\n          }\n        }\n      }\n      var objects = [];\n      var subPanelList = $this.$data.subPanelList;\n      for (var s = 0; s < subPanelList.length; s++) {\n        var sub_req = [];\n        for (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n          var attr = subPanelList[s].subClassAttr[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 == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n            if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') sub_req.push({\n              attr: ar.Name,\n              value: ar.ValID ? ar.ValID : ''\n            });else if (ar.Type == '甯冨皵鍊�) sub_req.push({\n              attr: ar.Name,\n              value: ar.Value ? '1' : '0'\n            });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n              if (ar.select == true) {\n                //鍒ゆ柇涓嬫媺鏄惁澶氶�\n                var valStr = \"\";\n                for (var v in ar.Value) {\n                  if (valStr) valStr += \";\";\n                  valStr += ar.Value[v];\n                }\n                sub_req.push({\n                  attr: ar.Name,\n                  value: valStr\n                });\n              } else sub_req.push({\n                attr: ar.Name,\n                value: ar.Value\n              });\n            } else sub_req.push({\n              attr: ar.Name,\n              value: ar.Value ? ar.Value : ''\n            });\n            if (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({\n                title: \"鎻愮ず\",\n                content: ar.DispName + '涓嶈兘涓虹┖锛�,\n                showCancel: false,\n                confirmText: \"鍙栨秷\"\n              });\n              return;\n            }\n          }\n        }\n        objects.push({\n          obj_id: subPanelList[s].scanCodeVal,\n          obj_attrs: sub_req\n        });\n      }\n      var dataJson = {\n        master_cls: {\n          cls_name: 'MBOX',\n          //$this.$data.param.Master_Cls.Name,\n          obj_attrs: req\n        },\n        input_3037: $this.$data.scanCodeVal,\n        //鎵爜鍐呭\n        op_type: $this.$data.param.OperationType,\n        //浣滀笟绫诲瀷瀹氫箟\n        sub_cls: {\n          cls_name: 'MBOX',\n          //$this.$data.param.Sub_Cls.Name,\n          objects: objects\n        }\n      };\n      // console.log(JSON.stringify(dataJson));\n      var dataInfo = {\n        edtype: \"7\",\n        eventid: eventID,\n        projectid: '',\n        rclsid: '',\n        robjid: '',\n        userlogin: '',\n        clsid: 'MBOX',\n        objid: '',\n        attr: JSON.stringify([]),\n        extinfo: JSON.stringify([]),\n        global_attr: JSON.stringify($this.$data.global_attr),\n        dataJson: JSON.stringify(dataJson)\n      };\n      // console.log(JSON.stringify(dataInfo));\n      __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:4146\");\n      this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n        __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:4148\");\n        uni.hideLoading();\n        if (success.code == '00000') {\n          var data = JSON.parse(success.data);\n          var result = data.result;\n          if (eventID != $this.$data.param.After_Trigger_Event.ID) $this.scan_TriggerDataObjRunCustomEvent($this.$data.param.After_Trigger_Event.ID);else {\n            //鍒锋柊\n            uni.redirectTo({\n              url: '../modal/ms_classAttr?param=' + JSON.stringify($this.$data.param) + \"&titlename=\" + $this.$data.title\n            });\n          }\n        } else {\n          uni.showModal({\n            title: \"閿欒8\",\n            content: success.msg,\n            showCancel: false,\n            confirmText: \"鍙栨秷\"\n          });\n        }\n      }).catch(function (ex) {\n        // console.log(ex);\n        uni.hideLoading();\n        uni.showModal({\n          title: \"閿欒8.1\",\n          content: ex.errMsg,\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n      });\n    }\n  }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvbXNfY2xhc3NBdHRyLnZ1ZSJdLCJuYW1lcyI6WyJjb21wb25lbnRzIiwicGlja2VyQWRkcmVzcyIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwiY2xhc3NBdHRyTGlzdCIsImNsYXNzR3JpZFN0eWxlIiwiZWRpdF9pbml0YWxfZXZlbnQiLCJlZGl0X29rX2V2ZW50IiwiZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCIsImVkaXRfY29tcG9zZV9jbHNfaWQiLCJnbG9iYWxfYXR0ciIsInJlZmRhdGFzdG9yZSIsInNjYW5Db2RlVmFsIiwic3ViQ2xhc3NBdHRyTGlzdCIsInN1YlBhbmVsTGlzdCIsInN1YkNsYXNzR3JpZFN0eWxlIiwicG9wdXBUeXBlIiwiY2hlY2tfbGlzdCIsIm9uTG9hZCIsIm9wdGlvbnMiLCJ1bmkiLCJzZXROYXZpZ2F0aW9uQmFyVGl0bGUiLCJ0aXRsZW5hbWUiLCJKU09OIiwicGFyc2UiLCIkZGF0YSIsIkFkZF9CdG5OYW1lIiwiTWFzdGVyX0NscyIsIlZpZXdfU3R5bGUiLCJzaG93TW9kYWwiLCJjb250ZW50Iiwic2hvd0NhbmNlbCIsImNvbmZpcm1UZXh0IiwiTmFtZSIsImRhdGFJbmZvIiwiY2xhc3NfaWQiLCJJRCIsIiR0aGlzIiwiJHN0b3JlIiwic3RhdGUiLCJ0aGlzYXJlYUZ1bmNJRCIsImdldHRlcnMiLCJnZXRjbGFzc0F0dHJMaXN0IiwiY2xhc3NHcmlkU3R5bGVJbmZvIiwiZGlzcGF0Y2giLCJ0aGVuIiwic3VjY2VzcyIsImNvZGUiLCJtc2ciLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwic3ViZGF0YUluZm8iLCJTdWJfQ2xzIiwidGhpc2FyZWFGdW5jU3ViSUQiLCJnZXRTdWJDbGFzc0F0dHJMaXN0IiwibWV0aG9kcyIsInNjYW5fY2xhc3NBdHRyX2V4dEJ1dHRvbiIsImUiLCJCZWZvcmVfU2VsZWN0X0V2ZW50IiwiU2Nhbl9Db2RlIiwibWFzdF9hdHRyIiwiYXR0cmxpc3QiLCJpIiwibGVuZ3RoIiwiYXR0ciIsIkF0dHIiLCJqIiwiYXIiLCJWYWx1ZSIsIkRpc3BOYW1lIiwiVHlwZSIsInB1c2giLCJ2YWx1ZSIsIlZhbElEIiwib2JqZWN0cyIsInMiLCJzdWJfcmVxIiwic3ViQ2xhc3NBdHRyIiwic2VsZWN0IiwidmFsU3RyIiwidiIsIm5vdGVtcHR5IiwiaGlkZUxvYWRpbmciLCJvYmpfaWQiLCJvYmpfYXR0cnMiLCJlbnZpcm9tZW50IiwiY2xzX2lkIiwiYnV0dG9uX25hbWUiLCJlZGl0X2RsZyIsInR5cGUiLCJtYXN0ZXJfY2xzIiwiY2xzX25hbWUiLCJyZXEiLCJzdWJfY2xzIiwiaW5mbyIsImV2ZW50aWQiLCJlZHR5cGUiLCJwcm9qZWN0aWQiLCJyY2xzaWQiLCJyb2JqaWQiLCJ1c2VybG9naW4iLCJjbHNpZCIsIm9iamlkIiwiaW5wdXRQYXJhbXRlciIsInNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50IiwicG9wdXBDaGFuZ2UiLCJzaG93IiwiY2hlY2tDaGFuZ2UiLCJpbmRleCIsInRhcmdldCIsImRhdGFzZXQiLCJpc2NoZWNrIiwiaXRlbXMiLCJtdWx0aXBsZV9jaG9pY2UiLCJjaGVjayIsInBvcHVwX2NhbmNlbCIsIiRyZWZzIiwicG9wdXAiLCJjbG9zZSIsInBvcHVwX3NhdmEiLCJBZnRlcl9TZWxlY3RfRXZlbnQiLCJuYW1lIiwiaWQiLCJjYW5jZWwiLCJuYXZpZ2F0ZUJhY2siLCJkZWx0YSIsInBhbmVsX2RlbCIsIk9iaklEIiwic3BsaWNlIiwiY2xzSWQiLCJvYmpJZCIsInNob3dMb2FkaW5nIiwic3R5bGVOYW1lIiwiY2xzVHlwZSIsImdyaWRzdHlsZUluZm8iLCJ0aGlzRWRpdE5hbWUiLCJnZXRjbGFzc0dyaWRTdHlsZUluZm8iLCJjbGFzc19hdHRyX2luaXQiLCJTdHlsZURlZiIsInRoaXNFZGl0U3ViTmFtZSIsImdldFN1YkNsYXNzR3JpZFN0eWxlSW5mbyIsInN1YkNsYXNzX2F0dHJfaW5pdCIsIm9udGFwIiwiZ2V0QXBwIiwib25TY2FuIiwicmVzdWx0IiwiaXNWYWwiLCJkZWNvZGVkYXRhIiwiaGlkZUtleWJvYXJkIiwiSW5wdXRfQ2hhbmdlX0V2ZW50Iiwic3Vib250YXAiLCJzY2FuX29udGFwIiwiaXNmbGFnIiwibWFzdF9yZXEiLCJjbGFzc2F0dHJsaXN0Iiwic2Nhbl9vbmV2ZW50Iiwib25hcnJvdyIsIm9wZW4iLCJkYXRhX2F0dHIiLCJPcGVuIiwib25kYXRlVGltZSIsIm9uY2hhbmdlIiwiZGljdGl0ZW0iLCJhY3Rpb24iLCJ2YWwiLCJEYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJvbmNoYW5nZTIiLCJpdGVtIiwiZGVsdmFsdWUiLCJpaW5kZXgiLCJkaW5kZXgiLCJpdGVtdmFsdWUiLCJzdWJfb25jaGFuZ2UiLCJzdWJfb25jaGFuZ2UyIiwiZCIsIm9uZXZlbnQiLCJvbmNoZWNrIiwiaXNjaGVja2VkIiwiaW5wdXRWYWxMaXN0SXNEZWwiLCJpbnB1dFZhbExpc3QiLCJhZGRyZXNzY2hhbmdlIiwiam9pbiIsImNsYXNzQXR0cl9leHRCdXR0b24iLCJiZWZvcmVfY2xpY2tfYnV0dG9uIiwiYnV0dG9uX2NhbGxiYWNrIiwiRGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybiIsImNsYXNzQXR0cl9BZGRQZXIiLCJuYXZpZ2F0ZVRvIiwidXJsIiwic3RyaW5naWZ5IiwiZXZlbnRzIiwiQWRkUGVyIiwiTG9naW4iLCJ0cmltIiwiY2xhc3NBdHRyX0FkZFJlZiIsImNsYXNzQXR0cl9BZGRQcmoiLCJzYXZhIiwiQmVmb3JlX09LX0V2ZW50Iiwic2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudCIsIkFmdGVyX09LX0V2ZW50IiwidHJpZ2dlciIsIkJlZm9yZV9UcmlnZ2VyX0V2ZW50Iiwic2Nhbl9UcmlnZ2VyRGF0YU9ialJ1bkN1c3RvbUV2ZW50IiwiQWZ0ZXJfVHJpZ2dlcl9FdmVudCIsImVsc2VzcyIsImFkZCIsIm1hc2siLCJtYXN0ZXIiLCJkYXRhX29ial9pZCIsIm1hc3RlcmNsc2lkIiwidXBmaWxlIiwicG9zdF9kYXRhIiwiY29tcG9zZSIsImV4dGluZm8iLCJub3RfdHJpZ2dlcl9zeXNfZXZlbnQiLCJBY3Rpb24iLCJyZXQiLCJyZXN1bHRfdHlwZSIsInNob3dUb2FzdCIsImljb24iLCJkdXJhdGlvbiIsInJlZGlyZWN0VG8iLCJzaG93X3N0eWxlIiwibmV3YXR0cmxpc3QiLCJhdHRyZ3JvdXBfbmFtZSIsImF0dHJzIiwiY2xzYXR0ciIsImwiLCJjYSIsImVkaXQiLCJleHRfYnV0dG9uIiwiYnV0dG9uX2ltZyIsImJ1dHRvbl90b29sdGlwIiwiaGlkZGVuIiwidW5kZWZpbmVkIiwiZGljdGl0ZW1saXN0IiwibGFiZWwiLCJDTl9TX05BTUUiLCJDTl9DX0lTX0RFRkFVTFQiLCJub3dEYXRlIiwiRGF0ZSIsImRhdGUiLCJ5ZWFyIiwiZ2V0RnVsbFllYXIiLCJtb250aCIsImdldE1vbnRoIiwiZGF5IiwiZ2V0RGF0ZSIsInJlbENsc0xpc3QiLCJhdHRyX3Jlc2NscyIsIlJlbENscyIsInNwbGl0IiwiaWkiLCJyZXNjbHMiLCJSZWxDbHNMaXN0IiwiQmtDb2xvciIsIkhhc0FjZSIsIkltZ0ZvbnRTdHlsZSIsIk9yZGVyIiwiY29udHJvbF9zdHlsZSIsInRpdGxlX3Bfd2RpdGgiLCJGb250IiwiQmtfQ29sb3IiLCJUZXh0X0NvbG9yIiwiZXZlbnRsaXN0IiwiZXZlbnQiLCJldmVudF9pZCIsInNjcmlwX2lkIiwiY29tcG9zZV9jbHNfaWQiLCJpbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50Iiwic2Nhbl9pbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50IiwiRWRpdFN0eWxlIiwiVmlld1N0eWxlIiwiTm90VHJpZ2dlclN5c0V2ZW50IiwiaW5wdXRwYXJhbWV0ZXIiLCJhY3Rpb25saXN0IiwiYWN0aW9uX3R5cGUiLCJhIiwiZGljdEl0ZW1MaXN0IiwiY2hvaWNlX2xpc3QiLCJmaWx0ZXIiLCJmb3JtX2NvbnRyb2wiLCJ0ZXh0IiwiZ3JvdXBfbmFtZSIsIkdyb3VwTmFtZSIsInJlYWRvbmx5IiwiUmVhZE9ubHkiLCJyZXBsYWNlIiwiYyIsIk9LRGF0YU9ialJ1bkN1c3RvbUV2ZW50IiwiYWN0aW9ucyIsImRpYWxvZyIsInN0eWxlIiwiY2FsbGJhY2tfZXZlbnRpZCIsInByaVJlbCIsInNlbGVjdF9yYW5nZSIsInBhcmFtXyIsIiRhY3Rpb250ciIsImNvbW1vbl9kbGdfaWQiLCJjb25maWciLCJhcHBlYXJfc3R5bGUiLCJsaXN0XzEiLCJyYW5kIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiX3N1YkNsYXNzQXR0ciIsImV2ZW50SUQiLCJkYXRhSnNvbiIsImlucHV0XzMwMzciLCJvcF90eXBlIiwiT3BlcmF0aW9uVHlwZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBcStCQTtBQXIrQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEsZUFHZTtFQUNkQSxVQUFVLEVBQUU7SUFDWEMsYUFBYSxFQUFiQTtFQUNELENBQUM7RUFDREMsSUFBSSxrQkFBRztJQUNOLE9BQU87TUFDTkMsS0FBSyxFQUFFLElBQUk7TUFDWEMsS0FBSyxFQUFFLENBQUMsQ0FBQztNQUNU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cEJqQixVQUFVLEVBQUUsS0FBSztZQUNqQkMsV0FBVyxFQUFFO1VBQ2QsQ0FBQyxDQUFDO1FBQ0g7TUFDRCxDQUFDLENBQUMsQ0FBQ2lCLEtBQUssQ0FBQyxVQUFBQyxFQUFFLEVBQUk7UUFDZDtRQUNBOUIsR0FBRyxDQUFDK0QsV0FBVyxFQUFFO1FBQ2pCL0QsR0FBRyxDQUFDUyxTQUFTLENBQUM7VUFDYjNCLEtBQUssRUFBRSxPQUFPO1VBQ2Q0QixPQUFPLEVBQUVvQixFQUFFLENBQUNDLE1BQU07VUFDbEJwQixVQUFVLEVBQUUsS0FBSztVQUNqQkMsV0FBVyxFQUFFO1FBQ2QsQ0FBQyxDQUFDO01BQ0gsQ0FBQyxDQUFDO0lBQ0g7RUFHRDtBQUNELENBQUM7QUFBQSwyQiIsImZpbGUiOiI5MC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuaW1wb3J0IHBpY2tlckFkZHJlc3MgZnJvbSAnLi4vLi4vanMvcGlja2VyQWRkcmVzcy9waWNrZXJBZGRyZXNzLnZ1ZSdcbmV4cG9ydCBkZWZhdWx0IHtcblx0Y29tcG9uZW50czoge1xuXHRcdHBpY2tlckFkZHJlc3Ncblx0fSxcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dGl0bGU6ICfmlrDlop4nLFxuXHRcdFx0cGFyYW06IHt9LFxuXHRcdFx0Y2xhc3NBdHRyTGlzdDogW10sXG5cdFx0XHRjbGFzc0dyaWRTdHlsZTogW10sXG5cdFx0XHRlZGl0X2luaXRhbF9ldmVudDogXCJcIiwgLy/lvLnnqpfliJ3lp4vljJbkuovku7ZJRFxuXHRcdFx0ZWRpdF9va19ldmVudDogXCJcIiwgLy/lvLnnqpfngrnlh7tPSyDop6blj5Hkuovku7ZJRFxuXHRcdFx0ZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudDogXCJcIiwgLy/pgInmi6nnu4TmiJDlr7nosaHml7bosIPnlKhcblx0XHRcdGVkaXRfY29tcG9zZV9jbHNfaWQ6IFwiXCIsXG5cdFx0XHRnbG9iYWxfYXR0cjogW10sXG5cdFx0XHRyZWZkYXRhc3RvcmU6IFtdLCAvL+W8leeUqOaVsOaNruWtmOWCqOWMui8vIHthdHRyOidHX1BSSl8nICsgYmluZGF0dHIgKyAnX0lEJywgdmFsdWU6aW5mby5pZH1cblx0XHRcdHNjYW5Db2RlVmFsOiBcIlwiLFxuXHRcdFx0c3ViQ2xhc3NBdHRyTGlzdDogW10sXG5cdFx0XHRzdWJQYW5lbExpc3Q6IFtdLFxuXHRcdFx0c3ViQ2xhc3NHcmlkU3R5bGU6IFtdLFxuXHRcdFx0cG9wdXBUeXBlOiBcImNlbnRlclwiLFxuXHRcdFx0Y2hlY2tfbGlzdDoge30sXG5cdFx0fVxuXHR9LFxuXHRvbkxvYWQob3B0aW9ucykge1xuXHRcdC8vIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xuXHRcdHVuaS5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoe1xuXHRcdFx0dGl0bGU6IG9wdGlvbnMudGl0bGVuYW1lXG5cdFx0fSk7IC8v6K6+572u6aG26YOo5qCH6aKYIFxuXHRcdHZhciBwYXJhbSA9IEpTT04ucGFyc2Uob3B0aW9ucy5wYXJhbSk7XG5cdFx0dGhpcy4kZGF0YS50aXRsZSA9IHBhcmFtLkFkZF9CdG5OYW1lID8gcGFyYW0uQWRkX0J0bk5hbWUgOiBvcHRpb25zLnRpdGxlbmFtZTsgLy/orr7nva7mjInpkq7mloflrZdcblx0XHRjb25zb2xlLmxvZyhwYXJhbSk7XG5cdFx0aWYgKCFwYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUpIHtcblx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0Y29udGVudDogXCLor6Xlip/og73ngrnmnKrphY3nva7nlYzpnaLnqpflj6PvvIzor7fph43mlrDphY3nva7vvIFcIixcblx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCFwYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZSkge1xuXHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRjb250ZW50OiBcIuivpeWKn+iDveeCueacqumFjee9rueql+WPo+agt+W8j++8jOivt+mHjeaWsOmFjee9ru+8gVwiLFxuXHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLiRkYXRhLnBhcmFtID0gcGFyYW07XG5cdFx0Ly8gdmFyIGVkaXRfZGxnID0ge1xuXHRcdC8vICAgICBNb2RlbDogcGFyYW0uRWRpdERsZ01vZGUsXG5cdFx0Ly8gICAgIE5hbWU6IHBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZS5OYW1lXG5cdFx0Ly8gfVxuXHRcdC8v5Li75pWw5o2u57G76I635Y+WXG5cdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0Y2xhc3NfaWQ6IHBhcmFtLk1hc3Rlcl9DbHMuSURcblx0XHR9O1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0JHRoaXMuJHN0b3JlLnN0YXRlLnRoaXNhcmVhRnVuY0lEID0gcGFyYW0uTWFzdGVyX0Nscy5JRDtcblx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0F0dHJMaXN0KTtcblx0XHRpZiAoJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdCkge1xuXHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3QuZGF0YTtcblx0XHRcdCR0aGlzLmNsYXNzR3JpZFN0eWxlSW5mbyhwYXJhbS5NYXN0ZXJfQ2xzLklELCAkdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZSwgJ01hc3QnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdjbGFzc0F0dHJMaXN0JywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gc3VjY2Vzcy5kYXRhO1xuXG5cdFx0XHRcdFx0JHRoaXMuY2xhc3NHcmlkU3R5bGVJbmZvKHBhcmFtLk1hc3Rlcl9DbHMuSUQsICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZS5OYW1lLFxuXHRcdFx0XHRcdFx0J01hc3QnKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzFcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMS4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Ly/ku47mlbDmja7nsbvojrflj5Zcblx0XHR2YXIgc3ViZGF0YUluZm8gPSB7XG5cdFx0XHRjbGFzc19pZDogcGFyYW0uU3ViX0Nscy5JRFxuXHRcdH07XG5cdFx0JHRoaXMuJHN0b3JlLnN0YXRlLnRoaXNhcmVhRnVuY1N1YklEID0gcGFyYW0uU3ViX0Nscy5JRDtcblx0XHRpZiAoJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0U3ViQ2xhc3NBdHRyTGlzdCkge1xuXHRcdFx0JHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN1YkNsYXNzQXR0ckxpc3QuZGF0YTtcblx0XHRcdCR0aGlzLmNsYXNzR3JpZFN0eWxlSW5mbyhwYXJhbS5TdWJfQ2xzLklELCAkdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLlZpZXdfU3R5bGUuTmFtZSwgJ1N1YicpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3N1YkNsYXNzQXR0ckxpc3QnLCBzdWJkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QgPSBzdWNjZXNzLmRhdGE7XG5cblx0XHRcdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8ocGFyYW0uU3ViX0Nscy5JRCwgJHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5WaWV3X1N0eWxlLk5hbWUsXG5cdFx0XHRcdFx0XHQnU3ViJyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68xXzFcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMV8xLjFcIixcblx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHRzY2FuX2NsYXNzQXR0cl9leHRCdXR0b24oZSkgeyAvL+mAieaLqeaMiemSruWJjVxuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdHZhciBCZWZvcmVfU2VsZWN0X0V2ZW50ID0gJHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLkJlZm9yZV9TZWxlY3RfRXZlbnQ7XG5cdFx0XHRpZiAoIUJlZm9yZV9TZWxlY3RfRXZlbnQpIHtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0Y29udGVudDogXCLpgInmi6nliY3kuovku7bkuLrnqbrvvIFcIixcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dmFyIG1hc3RfYXR0ciA9IFtdO1xuXHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7fpgInmi6knKSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFyLkRpc3BOYW1lICsgXCLmnKrpgInmi6nmlbDmja7vvIFcIixcblx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0bWFzdF9hdHRyLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0bWFzdF9hdHRyLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdG1hc3RfYXR0ci5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0dmFyIG9iamVjdHMgPSBbXTtcblx0XHRcdHZhciBzdWJQYW5lbExpc3QgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Q7XG5cdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8IHN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHR2YXIgc3ViX3JlcSA9IFtdO1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHIubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR2YXIgYXR0ciA9IHN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHJbaV0uQXR0cjtcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivt+mAieaLqScgfHwgYXIuVmFsdWUgPT0gJ+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICflrZflhbgnIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3lrZfnrKbkuLInIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChhci5zZWxlY3QgPT0gdHJ1ZSkgeyAvL+WIpOaWreS4i+aLieaYr+WQpuWkmumAiVxuXHRcdFx0XHRcdFx0XHRcdHZhciB2YWxTdHIgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHYgaW4gYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICh2YWxTdHIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBcIjtcIjtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBhci5WYWx1ZVt2XTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdmFsU3RyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcblx0XHRcdFx0XHRcdGlmIChhci5ub3RlbXB0eSA9PSB0cnVlICYmICFhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0XHQvLyBpZihhci5Ob3RFbXB0eT09JzEnKXtcblx0XHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0XHRcdC8vIHVuaS5zaG93VG9hc3Qoe3RpdGxlOmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLGljb246XCJzdWNjZXNzXCIsZHVyYXRpb246MzAwMH0pO1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiBhci5EaXNwTmFtZSArICfkuI3og73kuLrnqbrvvIEnLFxuXHRcdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdG9iamVjdHMucHVzaCh7XG5cdFx0XHRcdFx0b2JqX2lkOiBzdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwsXG5cdFx0XHRcdFx0b2JqX2F0dHJzOiBzdWJfcmVxXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdCdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdGNsc19pZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwgICAgIC8vIOWKn+iDveeCueS7juaVsOaNruexu+agh+ivhlxuXHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHRlZGl0X2RsZzoge1xuXHRcdFx0XHRcdHR5cGU6ICdzbWFsbCcsIC8v5bCP56qX5Y+jXG5cdFx0XHRcdFx0Y2xhc3NfaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsLy/lvZPliY3mlbDmja7nsbtpZFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtYXN0ZXJfY2xzOiB7XG5cdFx0XHRcdFx0Y2xzX25hbWU6ICdNQk9YJywgLy8kdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLk5hbWUsXG5cdFx0XHRcdFx0b2JqX2F0dHJzOiByZXFcblx0XHRcdFx0fSxcblx0XHRcdFx0c3ViX2Nsczoge1xuXHRcdFx0XHRcdGNsc19uYW1lOiAnTUJPWCcsIC8vJHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5OYW1lLFxuXHRcdFx0XHRcdG9iamVjdHM6IG9iamVjdHNcblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdH07XG5cdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHQvLyB2YXIgc3ViUGFuZWxMaXN0ID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0O1xuXHRcdFx0Ly8gZm9yICh2YXIgcyA9IDA7IHMgPCBzdWJQYW5lbExpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdC8vIFx0dmFyIGpzb24gPSB7fTtcblx0XHRcdC8vIFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHQvLyBcdFx0dmFyIGF0dHIgPSBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyW2ldLkF0dHI7XG5cdFx0XHQvLyBcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHQvLyBcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0Ly8gXHRcdFx0anNvblthci5OYW1lXSA9IGFyLlZhbHVlO1xuXHRcdFx0Ly8gXHRcdH1cblx0XHRcdC8vIFx0fVxuXHRcdFx0Ly8gXHRyZXEucHVzaChqc29uKTtcblx0XHRcdC8vIH1cblxuXHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdGV2ZW50aWQ6IEJlZm9yZV9TZWxlY3RfRXZlbnQuSUQsXG5cdFx0XHRcdGVkdHlwZTogXCI3XCIsIC8vXCIwXCIsXG5cdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdGNsc2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0YXR0cjogW10sXG5cdFx0XHRcdGdsb2JhbF9hdHRyOiByZXEsXG5cdFx0XHRcdG1hc3RfYXR0cjogbWFzdF9hdHRyLFxuXHRcdFx0XHRpbnB1dFBhcmFtdGVyOiBtYXN0X2F0dHIsXG5cdFx0XHRcdGVudmlyb21lbnQ6IGVudmlyb21lbnRcblx0XHRcdH1cblx0XHRcdC8vIGNvbnNvbGUubG9nKGluZm8pO1xuXHRcdFx0dGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcblx0XHR9LFxuXHRcdHBvcHVwQ2hhbmdlKGUpIHtcblx0XHRcdGNvbnNvbGUubG9nKCflvZPliY3mqKHlvI/vvJonICsgZS50eXBlICsgJyznirbmgIHvvJonICsgZS5zaG93KTtcblx0XHR9LFxuXHRcdGNoZWNrQ2hhbmdlKGUpIHsgLy/lvLnmoYZjaGVja+mAieaLqVxuXHRcdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQuZGF0YXNldCk7XG5cdFx0XHR2YXIgaW5kZXggPSBlLnRhcmdldC5kYXRhc2V0LmluZGV4O1xuXHRcdFx0dmFyIGlzY2hlY2sgPSBlLnRhcmdldC5kYXRhc2V0LmlzY2hlY2s7XG5cdFx0XHR2YXIgZGF0YSA9IHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcztcblx0XHRcdC8vIHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcz1bXTtcblx0XHRcdGlmICh0aGlzLiRkYXRhLmNoZWNrX2xpc3QubXVsdGlwbGVfY2hvaWNlID09IFwiMFwiKSB7IC8v5Yik5pat5pe25Y2V6YCJ6L+Y5piv5aSa6YCJXG5cdFx0XHRcdGZvciAodmFyIGkgaW4gZGF0YSkge1xuXHRcdFx0XHRcdGRhdGFbaV0uY2hlY2sgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZGF0YVtpbmRleF0uY2hlY2sgPSBpc2NoZWNrID8gZmFsc2UgOiB0cnVlO1xuXHRcdFx0dGhpcy4kZGF0YS5jaGVja19saXN0Lml0ZW1zID0gZGF0YTtcblxuXHRcdH0sXG5cdFx0cG9wdXBfY2FuY2VsKGUpIHsgLy/lvLnmoYblj5bmtohcblx0XHRcdHRoaXMuJHJlZnMucG9wdXAuY2xvc2UoKTtcblx0XHR9LFxuXHRcdHBvcHVwX3NhdmEoZSkgeyAvL+W8ueahhuehruWumiDpgInmi6nmjInpkq7lkI5cblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgQWZ0ZXJfU2VsZWN0X0V2ZW50ID0gJHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLkFmdGVyX1NlbGVjdF9FdmVudDtcblx0XHRcdGlmICghQWZ0ZXJfU2VsZWN0X0V2ZW50KSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOiBcIuaPkOekulwiLGNvbnRlbnQ6IFwi6YCJ5oup5ZCO5LqL5Lu25Li656m677yBXCIsc2hvd0NhbmNlbDogZmFsc2UsY29uZmlybVRleHQ6IFwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGl0ZW1zID0gJHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcztcblx0XHRcdHZhciBkYXRhID0gW107XG5cdFx0XHR2YXIgbmFtZSA9IFwiXCI7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmIChpdGVtc1tpXS5jaGVjayA9PSB0cnVlKSB7XG5cdFx0XHRcdFx0aWYgKG5hbWUpXG5cdFx0XHRcdFx0XHRuYW1lICs9ICc7Jztcblx0XHRcdFx0XHRuYW1lICs9IGl0ZW1zW2ldLm5hbWU7XG5cdFx0XHRcdFx0ZGF0YS5wdXNoKHtcblx0XHRcdFx0XHRcdGlkOiBpdGVtc1tpXS5pZCxcblx0XHRcdFx0XHRcdG5hbWU6IGl0ZW1zW2ldLm5hbWVcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGRhdGEubGVuZ3RoID09IDApIHtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6IFwi5o+Q56S6XCIsY29udGVudDogXCLmnKrpgInmi6nmlbDmja7vvIFcIixzaG93Q2FuY2VsOiBmYWxzZSxjb25maXJtVGV4dDogXCLlj5bmtohcIn0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR2YXIgbWFzdF9hdHRyID0gW107XG5cdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivt+mAieaLqScpIHtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOiBcIuaPkOekulwiLGNvbnRlbnQ6IGFyLkRpc3BOYW1lICsgXCLmnKrpgInmi6nmlbDmja7vvIFcIixzaG93Q2FuY2VsOiBmYWxzZSxjb25maXJtVGV4dDogXCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRtYXN0X2F0dHIucHVzaCh7YXR0cjogYXIuTmFtZSx2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnfSk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdG1hc3RfYXR0ci5wdXNoKHthdHRyOiBhci5OYW1lLHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ30pO1xuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdG1hc3RfYXR0ci5wdXNoKHthdHRyOiBhci5OYW1lLHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJyd9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHQkdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCA9IG5hbWU7XG5cdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0ZXZlbnRpZDogQWZ0ZXJfU2VsZWN0X0V2ZW50LklELFxuXHRcdFx0XHRlZHR5cGU6IFwiN1wiLFxuXHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRjbHNpZDogJ01CT1gnLFxuXHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0YXR0cjogW3thdHRyOiAnbWFzdF9pbnB1dF8zMDM3Jyx2YWx1ZTogbmFtZX1dLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogbWFzdF9hdHRyLFxuXHRcdFx0XHRpbnB1dFBhcmFtdGVyOiBkYXRhXG5cdFx0XHR9XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhpbmZvKTtcblx0XHRcdHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XG5cdFx0XHR0aGlzLiRyZWZzLnBvcHVwLmNsb3NlKCk7XG5cdFx0fSxcblxuXHRcdGNhbmNlbChlKSB7XG5cdFx0XHR1bmkubmF2aWdhdGVCYWNrKHtcblx0XHRcdFx0ZGVsdGE6IDEgLy/ov5Tlm57lsYLmlbDvvIwy5YiZ5LiK5LiK6aG1XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdHBhbmVsX2RlbChpbmRleCkge1xuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdGlmICh0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtpbmRleF0uc2NhbkNvZGVWYWwgPT0gdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCkge1xuXHRcdFx0XHR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsID0gJyc7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2luZGV4XS5PYmpJRClcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3Quc3BsaWNlKGluZGV4LCAxKTtcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdFx0Y2xzSWQ6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0XHRvYmpJZDogdGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbaW5kZXhdLk9iaklEXG5cdFx0XHRcdH07XG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdFx0Ly8gcmV0dXJuO1xuXHRcdFx0XHR1bmkuc2hvd0xvYWRpbmcoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuWKoOi9veS4rS4uLlwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGVsT2JqJywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Quc3BsaWNlKGluZGV4LCAxKTtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogXCLliKDpmaTmiJDlip/vvIFcIixcblx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzlcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6OS4xXCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0YXN5bmMgY2xhc3NHcmlkU3R5bGVJbmZvKGNsc2lkLCBzdHlsZU5hbWUsIGNsc1R5cGUpIHtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgZ3JpZHN0eWxlSW5mbyA9IHtcblx0XHRcdFx0Y2xhc3NfaWQ6IGNsc2lkLFxuXHRcdFx0XHRuYW1lOiBzdHlsZU5hbWUsXG5cdFx0XHRcdHR5cGU6ICcyJ1xuXHRcdFx0fTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mbyk7XG5cdFx0XHQvL+iOt+WPluS4u+aVsOaNruexu+eVjOmdouagt+W8j1xuXHRcdFx0aWYgKGNsc1R5cGUgPT0gJ01hc3QnKSB7XG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzRWRpdE5hbWUgPSBzdHlsZU5hbWU7XG5cdFx0XHRcdGlmICgkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0dyaWRTdHlsZUluZm8pIHtcblx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mby5kYXRhO1xuXHRcdFx0XHRcdCR0aGlzLmNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vY29uc29sZS5sb2coZ3JpZHN0eWxlSW5mbyk7XG5cdFx0XHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdjbGFzc0dyaWRTdHlsZUluZm8nLCBncmlkc3R5bGVJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHRcdFx0c3VjY2Vzcy5kYXRhLlN0eWxlRGVmID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEuU3R5bGVEZWYpO1xuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSA9IHN1Y2Nlc3MuZGF0YTtcblxuXHRcdFx0XHRcdFx0XHQkdGhpcy5jbGFzc19hdHRyX2luaXQoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzEuMlwiLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68xLjNcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGNsc1R5cGUgPT0gJ1N1YicpIHsgLy/ojrflj5bku47mlbDmja7nsbvnlYzpnaLmoLflvI9cblx0XHRcdFx0JHRoaXMuJHN0b3JlLnN0YXRlLnRoaXNFZGl0U3ViTmFtZSA9IHN0eWxlTmFtZTtcblx0XHRcdFx0aWYgKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN1YkNsYXNzR3JpZFN0eWxlSW5mbykge1xuXHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlID0gJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0U3ViQ2xhc3NHcmlkU3R5bGVJbmZvLmRhdGE7XG5cdFx0XHRcdFx0JHRoaXMuc3ViQ2xhc3NfYXR0cl9pbml0KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly9jb25zb2xlLmxvZyhncmlkc3R5bGVJbmZvKTtcblx0XHRcdFx0XHQkdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3N1YkNsYXNzR3JpZFN0eWxlSW5mbycsIGdyaWRzdHlsZUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdFx0XHRzdWNjZXNzLmRhdGEuU3R5bGVEZWYgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YS5TdHlsZURlZik7XG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlID0gc3VjY2Vzcy5kYXRhO1xuXG5cdFx0XHRcdFx0XHRcdCR0aGlzLnN1YkNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMS4yXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzEuM1wiLFxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHRcdG9udGFwKGUpIHsgLy/miavnoIHlip/og71cblx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXG5cdFx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlc3VsdC5kZWNvZGVkYXRhKTtcblx0XHRcdFx0dmFyIGlzVmFsID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFtcblx0XHRcdFx0XHQnaWluZGV4J11dLlZhbHVlO1xuXHRcdFx0XHQvLyBpZighaXNWYWwpe1xuXHRcdFx0XHQvLyBcdHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPXJlc3VsdC5kZWNvZGVkYXRhO1xuXHRcdFx0XHQvLyBcdHZhciBpc1ZhbGQgPXRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlO1xuXHRcdFx0XHQvLyBcdHJldHVybjtcblx0XHRcdFx0Ly8gfVxuXHRcdFx0XHQvL+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxuXHRcdFx0XHRpZiAoaXNWYWwgIT0gcmVzdWx0LmRlY29kZWRhdGEpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV1cblx0XHRcdFx0XHRcdC5WYWx1ZSA9IHJlc3VsdC5kZWNvZGVkYXRhO1xuXHRcdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcblx0XHRcdFx0XHQvL+WtkOaVsOaNruexu+aJq+eggeWMuuS6i+S7tuiEmuacrFxuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5wYXJhbS5TY2FuX0NvZGUuSW5wdXRfQ2hhbmdlX0V2ZW50LklEO1xuXHRcdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7IC8v5Li75pWw5o2u57G75bGe5oCnXG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdGVkdHlwZTogXCI3XCIsIC8vXCIwXCIsXG5cdFx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRcdGNsc2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdFx0XHRtYXN0X2F0dHI6IFtdLFxuXHRcdFx0XHRcdFx0XHRpbnB1dFBhcmFtdGVyOiBbe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6ICdtYXN0X2lucHV0XzMwMzcnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiByZXN1bHQuZGVjb2RlZGF0YVxuXHRcdFx0XHRcdFx0XHR9XVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR0aGlzLnNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIFwiXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9LFxuXHRcdHN1Ym9udGFwKGUpIHsgLy/miavnoIHlip/og71cblx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXG5cdFx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlc3VsdC5kZWNvZGVkYXRhKTtcblx0XHRcdFx0dmFyIGlzVmFsID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFtcblx0XHRcdFx0XHQnaWluZGV4J11dLlZhbHVlO1xuXHRcdFx0XHQvL+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxuXHRcdFx0XHRpZiAoaXNWYWwgIT0gcmVzdWx0LmRlY29kZWRhdGEpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV1cblx0XHRcdFx0XHRcdC5WYWx1ZSA9IHJlc3VsdC5kZWNvZGVkYXRhO1xuXHRcdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcblx0XHRcdFx0XHQvL+WtkOaVsOaNruexu+aJq+eggeWMuuS6i+S7tuiEmuacrFxuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5wYXJhbS5TY2FuX0NvZGUuSW5wdXRfQ2hhbmdlX0V2ZW50LklEO1xuXHRcdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3Q7IC8v5Li75pWw5o2u57G75bGe5oCnXG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdGVkdHlwZTogXCI3XCIsIC8vXCIwXCIsXG5cdFx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRcdGNsc2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdFx0XHRtYXN0X2F0dHI6IFtdLFxuXHRcdFx0XHRcdFx0XHRpbnB1dFBhcmFtdGVyOiBbe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6ICdtYXN0X2lucHV0XzMwMzcnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiByZXN1bHQuZGVjb2RlZGF0YVxuXHRcdFx0XHRcdFx0XHR9XVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR0aGlzLnNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIFwiXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9LFxuXHRcdHNjYW5fb250YXAoZSkgeyAvL+aJq+eggeWMuuaJq+eggeWKn+iDvVxuXHRcdFx0Ly9jb25zb2xlLmxvZyhlLnRhcmdldClcblx0XHRcdGdldEFwcCgpLm9uU2NhbigocmVzdWx0KSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHJlc3VsdC5kZWNvZGVkYXRhKTtcblx0XHRcdFx0dmFyIGlzZmxhZyA9IHRydWU7XG5cdFx0XHRcdGZvciAodmFyIGkgaW4gdGhpcy4kZGF0YS5zdWJQYW5lbExpc3QpIHtcblx0XHRcdFx0XHRpZiAodGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbaV0uc2NhbkNvZGVWYWwgPT0gcmVzdWx0LmRlY29kZWRhdGEpXG5cdFx0XHRcdFx0XHRpc2ZsYWcgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvL+WtkOaVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxuXHRcdFx0XHRpZiAoaXNmbGFnKSB7XG5cdFx0XHRcdFx0dW5pLmhpZGVLZXlib2FyZCgpO1xuXHRcdFx0XHRcdHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwgPSByZXN1bHQuZGVjb2RlZGF0YTtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLklucHV0X0NoYW5nZV9FdmVudC5JRDtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0dmFyIG1hc3RfcmVxID0gW107XG5cdFx0XHRcdFx0XHQvL+S4u+aVsOaNruexu+WxnuaAp1xuXHRcdFx0XHRcdFx0dmFyIGNsYXNzYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGNsYXNzYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBjbGFzc2F0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0bWFzdF9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRtYXN0X3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHRtYXN0X3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0XHRcdC8v5a2Q5pWw5o2u57G75bGe5oCnXG5cdFx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdGVkdHlwZTogJzcnLCAvL1wiMFwiLFxuXHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0XHRjbHNpZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHRcdFx0bWFzdF9hdHRyOiBtYXN0X3JlcSxcblx0XHRcdFx0XHRcdFx0aW5wdXRQYXJhbXRlcjogW3tcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiAnaW5wdXRfMzAzNycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHRoaXMuJGRhdGEuc2NhbkNvZGVWYWxcblx0XHRcdFx0XHRcdFx0fV1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0fSxcblx0XHRzY2FuX29uZXZlbnQoZSkge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQpO1xuXHRcdFx0aWYgKGUudGFyZ2V0LnZhbHVlKSB7XG5cdFx0XHRcdHZhciBpc2ZsYWcgPSB0cnVlO1xuXHRcdFx0XHRmb3IgKHZhciBpIGluIHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0KSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2ldLnNjYW5Db2RlVmFsID09IGUudGFyZ2V0LnZhbHVlKVxuXHRcdFx0XHRcdFx0aXNmbGFnID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cblx0XHRcdFx0aWYgKGlzZmxhZykge1xuXHRcdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsID0gZS50YXJnZXQudmFsdWU7XG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5JbnB1dF9DaGFuZ2VfRXZlbnQuSUQ7XG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdHZhciBtYXN0X3JlcSA9IFtdO1xuXHRcdFx0XHRcdFx0Ly/kuLvmlbDmja7nsbvlsZ7mgKdcblx0XHRcdFx0XHRcdHZhciBjbGFzc2F0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBjbGFzc2F0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gY2xhc3NhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRcdG1hc3RfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0bWFzdF9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0bWFzdF9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0XHQvL+WtkOaVsOaNruexu+WxnuaAp1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRlZHR5cGU6ICc3JywgLy9cIjBcIixcblx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRhdHRyOiByZXEsXG5cdFx0XHRcdFx0XHRcdG1hc3RfYXR0cjogbWFzdF9yZXEsXG5cdFx0XHRcdFx0XHRcdGlucHV0UGFyYW10ZXI6IFt7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogJ2lucHV0XzMwMzcnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiB0aGlzLiRkYXRhLnNjYW5Db2RlVmFsXG5cdFx0XHRcdFx0XHRcdH1dXG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvbmFycm93KGluZGV4LCBvcGVuKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhpbmRleCsnLS0nK29wZW4pO1xuXHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5PcGVuO1xuXHRcdFx0aWYgKCFkYXRhX2F0dHIpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlXG5cdFx0XHRcdFx0LnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSBvcGVuID09IHRydWUgPyBmYWxzZSA6IHRydWU7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltpbmRleF0uT3BlbiA9IG9wZW4gPT0gdHJ1ZSA/IGZhbHNlIDpcblx0XHRcdFx0dHJ1ZTtcblx0XHR9LFxuXHRcdG9uZGF0ZVRpbWUoZSkge1xuXHRcdFx0Ly9jb25zb2xlLmxvZyhlLnRhcmdldClcblx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU7XG5cdFx0XHRpZiAoIWRhdGFfYXR0cikge1xuXHRcdFx0XHR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2Vcblx0XHRcdFx0XHQudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSBlLnRhcmdldFxuXHRcdFx0LnZhbHVlO1xuXG5cdFx0fSxcblx0XHRvbmNoYW5nZShlKSB7XG5cdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHR2YXIgdmFsdWUgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uZGljdGl0ZW1bZVxuXHRcdFx0XHQudGFyZ2V0LnZhbHVlXTtcblx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV07XG5cdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0aWYgKHZhbHVlLk5hbWUgIT0gZGF0YV9hdHRyLlZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSA9IHZhbHVlXG5cdFx0XHRcdC5OYW1lO1xuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV1cblx0XHRcdFx0LlZhbHVlKTtcblx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV1cblx0XHRcdFx0XHQuYWN0aW9uO1xuXHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0fSxcblx0XHRvbmNoYW5nZTIoaXRlbSwgdmFsdWUsIGRlbHZhbHVlKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhpdGVtKTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKHZhbHVlKTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGRlbHZhbHVlKTtcblx0XHRcdGlmIChpdGVtLmxlbmd0aCA9PSAwKSB7IC8v5Li656m65pe277yM5riF56m65bGe5oCndmFsdWVcblx0XHRcdFx0dmFyIGluZGV4LCBpaW5kZXgsIGRpbmRleCA9IDA7XG5cdFx0XHRcdGZvciAodmFyIGkgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0KSB7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaiBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cikge1xuXHRcdFx0XHRcdFx0aWYgKGRlbHZhbHVlWzBdLmF0dHIgPT0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uTmFtZSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5WYWx1ZSA9IFwiXCI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAodmFyIHYgaW4gaXRlbSkge1xuXHRcdFx0XHR2YXIgaW5kZXgsIGlpbmRleCwgZGluZGV4ID0gMDtcblx0XHRcdFx0Zm9yICh2YXIgaSBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QpIHtcblx0XHRcdFx0XHRmb3IgKHZhciBqIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyKSB7XG5cdFx0XHRcdFx0XHRpZiAoaXRlbVt2XS5hdHRyID09IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0aW5kZXggPSBpO1xuXHRcdFx0XHRcdFx0XHRpaW5kZXggPSBqO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgaXRlbXZhbHVlID0gaXRlbVt2XTtcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XG5cdFx0XHRcdGlmIChpdGVtdmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5WYWx1ZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLlZhbHVlKTtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0Ly8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5a2X5YW4JyB8fCBhci5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBhci5UeXBlID09ICflrZflhbgt5pW05pWwJylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBpdGVtdmFsdWUuTmFtZVxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0XHRjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELFxuXHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblxuXHRcdH0sXG5cdFx0c3ViX29uY2hhbmdlKGUpIHtcblx0XHRcdGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcblx0XHRcdHZhciB2YWx1ZSA9IHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dXG5cdFx0XHRcdC5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5kaWN0aXRlbVtlLnRhcmdldC52YWx1ZV07XG5cdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFtcblx0XHRcdFx0J2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xuXHRcdFx0Y29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdGlmICh2YWx1ZS5OYW1lICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xuXHRcdFx0XHR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2Vcblx0XHRcdFx0XHQudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSA9IHZhbHVlLk5hbWU7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbXG5cdFx0XHRcdFx0J2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlKTtcblx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0W1xuXHRcdFx0XHRcdCdpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5hY3Rpb247XG5cdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0Ly8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cjtcblx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0sXG5cdFx0c3ViX29uY2hhbmdlMihpdGVtLCB2YWx1ZSwgZGVsdmFsdWUpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGl0ZW0pO1xuXHRcdFx0Ly8gY29uc29sZS5sb2codmFsdWUpO1xuXHRcdFx0Ly8gY29uc29sZS5sb2coZGVsdmFsdWUpO1xuXHRcdFx0dmFyIHN1YkNsYXNzQXR0ciA9IHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyO1xuXHRcdFx0aWYgKGl0ZW0ubGVuZ3RoID09IDApIHsgLy/kuLrnqbrml7bvvIzmuIXnqbrlsZ7mgKd2YWx1ZVxuXHRcdFx0XHR2YXIgaW5kZXgsIGlpbmRleCwgZGluZGV4ID0gMDtcblx0XHRcdFx0Zm9yICh2YXIgaSBpbiBzdWJDbGFzc0F0dHIpIHtcblx0XHRcdFx0XHRmb3IgKHZhciBqIGluIHN1YkNsYXNzQXR0cltpXS5BdHRyKSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBkIGluIHN1YkNsYXNzQXR0cltpXS5BdHRyW2pdLmRpY3RpdGVtKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChkZWx2YWx1ZVswXS5OYW1lID09IHN1YkNsYXNzQXR0cltpXS5BdHRyW2pdLmRpY3RpdGVtW2RdLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRzdWJDbGFzc0F0dHJbaV0uQXR0cltqXS5WYWx1ZSA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Zm9yICh2YXIgdiBpbiBpdGVtKSB7XG5cdFx0XHRcdHZhciBpbmRleCwgaWluZGV4LCBkaW5kZXggPSAwO1xuXHRcdFx0XHRmb3IgKHZhciBpIGluIHN1YkNsYXNzQXR0cikge1xuXHRcdFx0XHRcdGZvciAodmFyIGogaW4gc3ViQ2xhc3NBdHRyW2ldLkF0dHIpIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIGQgaW4gc3ViQ2xhc3NBdHRyW2ldLkF0dHJbal0uZGljdGl0ZW0pIHtcblx0XHRcdFx0XHRcdFx0aWYgKGl0ZW1bdl0uTmFtZSA9PSBzdWJDbGFzc0F0dHJbaV0uQXR0cltqXS5kaWN0aXRlbVtkXS5OYW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5kZXggPSBpO1xuXHRcdFx0XHRcdFx0XHRcdGlpbmRleCA9IGo7XG5cdFx0XHRcdFx0XHRcdFx0ZGluZGV4ID0gZDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgaXRlbXZhbHVlID0gaXRlbVt2XTtcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHN1YkNsYXNzQXR0cltpbmRleF0uQXR0cltpaW5kZXhdO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XG5cdFx0XHRcdGlmIChpdGVtdmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHRzdWJDbGFzc0F0dHJbaW5kZXhdLkF0dHJbaWluZGV4XS5WYWx1ZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1YkNsYXNzQXR0cltpbmRleF0uQXR0cltpaW5kZXhdLlZhbHVlKTtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHN1YkNsYXNzQXR0cltpbmRleF0uQXR0cltpaW5kZXhdLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0Ly8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gc3ViQ2xhc3NBdHRyO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5a2X5YW4JyB8fCBhci5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBhci5UeXBlID09ICflrZflhbgt5pW05pWwJylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBpdGVtdmFsdWUuTmFtZVxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0XHRjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblxuXHRcdH0sXG5cdFx0b25ldmVudChlKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xuXHRcdFx0aWYgKCFkYXRhX2F0dHIpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlXG5cdFx0XHRcdFx0LnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdGlmIChlLnRhcmdldC52YWx1ZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gZS50YXJnZXRcblx0XHRcdFx0XHQudmFsdWU7XG5cdFx0XHRcdC8vIHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmFjdGlvbjtcblx0XHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHljLrkuovku7bohJrmnKxcblx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5JbnB1dF9DaGFuZ2VfRXZlbnQuSUQ7XG5cdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0Ly8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7IC8v5Li75pWw5o2u57G75bGe5oCnXG5cdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjdcIiwgLy9cIjBcIixcblx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRjbHNpZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdFx0bWFzdF9hdHRyOiBbXSxcblx0XHRcdFx0XHRcdGlucHV0UGFyYW10ZXI6IFt7XG5cdFx0XHRcdFx0XHRcdGF0dHI6ICdtYXN0X2lucHV0XzMwMzcnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogZS50YXJnZXQudmFsdWVcblx0XHRcdFx0XHRcdH1dXG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0fSxcblx0XHRvbmNoZWNrKGUpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcblx0XHRcdHZhciBpc2NoZWNrZWQgPSBlLnRhcmdldC5kYXRhc2V0LmlzY2hlY2sgPyBmYWxzZSA6IHRydWU7XG5cdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xuXHRcdFx0aWYgKCFkYXRhX2F0dHIpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlXG5cdFx0XHRcdFx0LnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSBpc2NoZWNrZWQ7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdC8vIGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XG5cdFx0XHRpZiAoaXNjaGVja2VkICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSBpc2NoZWNrZWQ7XG5cdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dXG5cdFx0XHRcdFx0LmFjdGlvbjtcblx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHQvLyBzZWxmLmV2ZW50X25vX3N1YiA9IDE7XG5cdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0fSxcblx0XHRpbnB1dFZhbExpc3RJc0RlbChpbmRleCkge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coaW5kZXgpO1xuXHRcdFx0dGhpcy4kZGF0YS5pbnB1dFZhbExpc3Quc3BsaWNlKGluZGV4LCAxKTsgLy/liKDpmaR0YWJQYWdlanNvbueahOWGheWuuVxuXHRcdFx0Ly8gY29uc29sZS5sb2codGhpcy4kZGF0YS5pbnB1dFZhbExpc3QpO1xuXHRcdH0sXG5cdFx0YWRkcmVzc2NoYW5nZShlKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRjb25zb2xlLmxvZyhlLmRhdGEuam9pbignOycpKVxuXHRcdFx0dGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gZS5kYXRhXG5cdFx0XHRcdC5qb2luKCc7Jyk7XG5cdFx0fSxcblx0XHRjbGFzc0F0dHJfZXh0QnV0dG9uKGluZGV4LCBpaW5kZXgpIHtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgYmVmb3JlX2NsaWNrX2J1dHRvbiA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5iZWZvcmVfY2xpY2tfYnV0dG9uO1xuXHRcdFx0dmFyIGJ1dHRvbl9jYWxsYmFjayA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5idXR0b25fY2FsbGJhY2s7XG5cdFx0XHRpZiAoIWJlZm9yZV9jbGlja19idXR0b24pIHtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0Y29udGVudDogXCJiZWZvcmVfY2xpY2tfYnV0dG9uLWV2ZW50X2lk5Li656m677yBXCIsXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmICghYnV0dG9uX2NhbGxiYWNrKSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwiYnV0dG9uX2NhbGxiYWNrLWV2ZW50X2lk5Li656m677yBXCIsXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XTtcblx0XHRcdHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybihiZWZvcmVfY2xpY2tfYnV0dG9uLCBkYXRhX2F0dHIsIGJ1dHRvbl9jYWxsYmFjaywgaW5kZXgsIGlpbmRleCk7XG5cdFx0fSxcblx0XHRjbGFzc0F0dHJfQWRkUGVyKGluZGV4LCBpaW5kZXgpIHtcblx0XHRcdHZhciBwYXJhbSA9IHtcblx0XHRcdFx0aW5kZXg6IGluZGV4LFxuXHRcdFx0XHRpaW5kZXg6IGlpbmRleFxuXHRcdFx0fTtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdHVybDogJy4uL3NlbHBzbi9pbmRleD9tdWxpdD1mYWxzZSZwYXJhbT0nICsgSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxuXHRcdFx0XHRldmVudHM6IHtcblx0XHRcdFx0XHRBZGRQZXIoZGF0YSwgcGFyYW0pIHtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGRhdGEpO1xuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbHVlID0gZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEID0gZGF0YVswXS5Mb2dpbiArICc7JyArXG5cdFx0XHRcdFx0XHRcdGRhdGFbMF0uTmFtZTtcblxuXHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xuXHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0ZXZlbnRpZCA9IGV2ZW50aWQudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0XHRcdGVkdHlwZTogXCI0XCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRyY2xzaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRyb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHR1c2VybG9naW46IGRhdGFbMF0uTG9naW4sXG5cdFx0XHRcdFx0XHRcdFx0XHRjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogW10sXG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gdmFyIGRhdGFfYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XTtcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0Y2xhc3NBdHRyX0FkZFJlZihlKSB7XG5cdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdGNvbnRlbnQ6IFwi5q2k5Yqf6IO96L+Y5pyq5a6e546w77yBXCIsXG5cdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0fSk7XG5cdFx0XHQvLyB2YXIgdmFsdWU9dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlJlbENsc1tlLnRhcmdldC52YWx1ZV07XG5cdFx0XHQvLyB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9dmFsdWU7XG5cdFx0fSxcblx0XHRjbGFzc0F0dHJfQWRkUHJqKGluZGV4LCBpaW5kZXgpIHtcblx0XHRcdHZhciBwYXJhbSA9IHtcblx0XHRcdFx0aW5kZXg6IGluZGV4LFxuXHRcdFx0XHRpaW5kZXg6IGlpbmRleFxuXHRcdFx0fTtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdHVybDogJy4uL3NlbFByai9pbmRleD9yZWxhdGlvbj0tMSZwYXJhbT0nICsgSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxuXHRcdFx0XHRldmVudHM6IHtcblx0XHRcdFx0XHRBZGRQZXIoZGF0YSwgcGFyYW0pIHtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRhdGEpO1xuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbHVlID0gZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEID0gZGF0YVswXS5JRCArICc7JyArXG5cdFx0XHRcdFx0XHRcdGRhdGFbMF0uTmFtZTtcblxuXHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xuXHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0ZXZlbnRpZCA9IGV2ZW50aWQudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0XHRcdGVkdHlwZTogXCIyXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6IGRhdGFbMF0uSUQsXG5cdFx0XHRcdFx0XHRcdFx0XHRyY2xzaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRyb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHR1c2VybG9naW46IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogW10sXG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gdmFyIGRhdGFfYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XTtcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0c2F2YSgpIHtcblx0XHRcdGlmICh0aGlzLiRkYXRhLnBhcmFtLkJlZm9yZV9PS19FdmVudCkgLy/liKTmlq3lip/og73ngrnlj4LmlbDmmK/lkKbmnInnoa7lrprliY3ohJrmnKxcblx0XHRcdFx0dGhpcy5zY2FuX09LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50LklEKTtcblx0XHRcdGVsc2UgaWYgKHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQpIC8v5Yik5pat5Yqf6IO954K55Y+C5pWw5piv5ZCm5pyJ56Gu5a6a5ZCO6ISa5pysXG5cdFx0XHRcdHRoaXMuc2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudCh0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX09LX0V2ZW50LklEKTtcblx0XHRcdGVsc2Vcblx0XHRcdFx0dW5pLm5hdmlnYXRlQmFjayh7XG5cdFx0XHRcdFx0ZGVsdGE6IDFcblx0XHRcdFx0fSk7IC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxuXHRcdH0sXG5cdFx0dHJpZ2dlcigpIHsgXG5cdFx0XHRpZiAodGhpcy4kZGF0YS5wYXJhbS5CZWZvcmVfVHJpZ2dlcl9FdmVudCkgLy/liKTmlq3lip/og73ngrnlj4LmlbDmmK/lkKbmnInop6blj5HliY3ohJrmnKxcblx0XHRcdFx0dGhpcy5zY2FuX1RyaWdnZXJEYXRhT2JqUnVuQ3VzdG9tRXZlbnQodGhpcy4kZGF0YS5wYXJhbS5CZWZvcmVfVHJpZ2dlcl9FdmVudC5JRCk7XG5cdFx0XHRlbHNlIGlmICh0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX1RyaWdnZXJfRXZlbnQpIC8v5Yik5pat5Yqf6IO954K55Y+C5pWw5piv5ZCm5pyJ6Kem5Y+R5ZCO6ISa5pysXG5cdFx0XHRcdHRoaXMuc2Nhbl9UcmlnZ2VyRGF0YU9ialJ1bkN1c3RvbUV2ZW50KHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfVHJpZ2dlcl9FdmVudC5JRCk7XG5cdFx0XHRlbHNlc3Ncblx0XHRcdFx0dW5pLm5hdmlnYXRlQmFjayh7XG5cdFx0XHRcdFx0ZGVsdGE6IDFcblx0XHRcdFx0fSk7IC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxuXHRcdH0sXG5cdFx0YWRkKCkge1xuXHRcdFx0dW5pLnNob3dMb2FkaW5nKHtcblx0XHRcdFx0dGl0bGU6IFwi5Yqg6L295LitLi4uXCIsXG5cdFx0XHRcdG1hc2s6IHRydWVcblx0XHRcdH0pO1xuXHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7fpgInmi6knIHx8IGFyLlZhbHVlID09ICfigJTigJTor7fpgInmi6nigJTigJQnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0bmFtZTogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0bmFtZTogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICflrZflhbgnIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3lrZfnrKbkuLInIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRpZiAoYXIuc2VsZWN0ID09IHRydWUpIHsgLy/liKTmlq3kuIvmi4nmmK/lkKblpJrpgIlcblx0XHRcdFx0XHRcdFx0dmFyIHZhbFN0ciA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIHYgaW4gYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodmFsU3RyKVxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyICs9IFwiO1wiO1xuXHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBhci5WYWx1ZVt2XTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdmFsU3RyXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0bmFtZTogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRpZiAoYXIubm90ZW1wdHkgPT0gdHJ1ZSAmJiAhYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdC8vIGlmKGFyLk5vdEVtcHR5PT0nMScpe1xuXHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogYXIuRGlzcE5hbWUgKyAn5LiN6IO95Li656m677yBJyxcblx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xuXHRcdFx0XHQnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0XHRcdCdidXR0b24nOiAndG9wJywgLy8gdG9wL2JvdHRvbVxuXHRcdFx0XHRidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdG1hc3Rlcjoge1xuXHRcdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELFxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdGNsYXNzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdGRhdGFfb2JqX2lkOiAnJyxcblx0XHRcdFx0bWFzdGVyY2xzaWQ6ICcnLFxuXHRcdFx0XHRyZXE6IEpTT04uc3RyaW5naWZ5KHJlcSksXG5cdFx0XHRcdHVwZmlsZTogSlNPTi5zdHJpbmdpZnkoW10pLFxuXHRcdFx0XHRwb3N0X2RhdGE6IEpTT04uc3RyaW5naWZ5KHt9KSxcblx0XHRcdFx0Y29tcG9zZTogSlNPTi5zdHJpbmdpZnkoW10pLFxuXHRcdFx0XHRyZWZkYXRhc3RvcmU6IEpTT04uc3RyaW5naWZ5KFtdKSxcblx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCksXG5cdFx0XHRcdG5vdF90cmlnZ2VyX3N5c19ldmVudDogJydcblx0XHRcdH07XG5cblx0XHRcdC8vIHJldHVyblxuXHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FkZGNsYXNzYXR0cicsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdHZhciBhY3Rpb24gPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YS5BY3Rpb24pO1xuXHRcdFx0XHRcdGlmIChhY3Rpb24ucmV0ID09ICcwJykge1xuXHRcdFx0XHRcdFx0aWYgKGFjdGlvbi5yZXN1bHRfdHlwZSA9PSAnMCcpIHtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IGFjdGlvbi5yZXN1bHQsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogXCJzdWNjZXNzXCIsXG5cdFx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDMwMDBcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvLyBcIntcInJldFwiOjAsIFwicmVzdWx0X3R5cGVcIjowLCBcInJlc3VsdFwiOlwi5Yib5bu65oiQ5YqfMTIzMTIzMTIzXCIsXCJpbmZvXCI6XCJcIn1cIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvL+WIt+aWsFxuXHRcdFx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcblx0XHRcdFx0XHRcdHVybDogJy4uL21vZGFsL21zX2NsYXNzQXR0cj9wYXJhbT0nICsgSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5wYXJhbSkgK1xuXHRcdFx0XHRcdFx0XHRcIiZ0aXRsZW5hbWU9XCIgKyB0aGlzLiRkYXRhLnRpdGxlXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Ly8gdGhpcy5jbGFzc19hdHRyX2luaXQoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivr1wiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHRjbGFzc19hdHRyX2luaXQoKSB7XG5cdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcblx0XHRcdHZhciBuZXdhdHRybGlzdCA9IFtdO1xuXHRcdFx0aWYgKHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR2YXIgb3BlbiA9IGF0dHJsaXN0W2ldLm9wZW47XG5cdFx0XHRcdFx0dmFyIG5hbWUgPSBhdHRybGlzdFtpXS5hdHRyZ3JvdXBfbmFtZTtcblx0XHRcdFx0XHR2YXIgYXR0cnMgPSBhdHRybGlzdFtpXS5hdHRycztcblx0XHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHRcdFx0dmFyIGNsc2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Rbc107XG5cdFx0XHRcdFx0XHRpZiAobmFtZSA9PSBjbHNhdHRyLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBbXTtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRycy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGwgPSAwOyBsIDwgY2xzYXR0ci5BdHRyLmxlbmd0aDsgbCsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgY2EgPSBjbHNhdHRyLkF0dHJbbF07XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cnNbal0uYXR0ciA9PSBjYS5OYW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmFjdGlvbiA9IGF0dHJzW2pdLmFjdGlvbjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZWRpdCA9IGF0dHJzW2pdLmVkaXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLm5vdGVtcHR5ID0gYXR0cnNbal0ubm90ZW1wdHk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmV4dF9idXR0b24gPSBhdHRyc1tqXS5leHRfYnV0dG9uO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5idXR0b25faW1nID0gYXR0cnNbal0uYnV0dG9uX2ltZztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYnV0dG9uX3Rvb2x0aXAgPSBhdHRyc1tqXS5idXR0b25fdG9vbHRpcDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYmVmb3JlX2NsaWNrX2J1dHRvbiA9IGF0dHJzW2pdLmJlZm9yZV9jbGlja19idXR0b247XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmJ1dHRvbl9jYWxsYmFjayA9IGF0dHJzW2pdLmJ1dHRvbl9jYWxsYmFjaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuaGlkZGVuID0gYXR0cnNbal0uaGlkZGVuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5zZWxlY3QgPSBhdHRyc1tqXS5zZWxlY3QgPT0gdW5kZWZpbmVkID8gZmFsc2UgOiBhdHRyc1tqXS5zZWxlY3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gXCJcIjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLmRpY3RpdGVtKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLnNlbGVjdCA9PSB0cnVlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBbXTsgLy9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+36YCJ5oupJzsgLy9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RpdGVtbGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgPSAwOyBkIDwgY2EuZGljdGl0ZW0ubGVuZ3RoOyBkKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtW2RdLmxhYmVsID0gY2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0udmFsdWUgPSBjYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS5hdHRyID0gY2EuTmFtZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5kaWN0aXRlbVtkXS5DTl9DX0lTX0RFRkFVTFQgPT0gJzEnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+aXpeacnycgfHwgY2EuVHlwZSA9PSAn5pe26Ze0Jykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBub3dEYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGF0ZSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHllYXI6IG5vd0RhdGUuZ2V0RnVsbFllYXIoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1vbnRoOiBub3dEYXRlLmdldE1vbnRoKCkgKyAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF5OiBub3dEYXRlLmdldERhdGUoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGRhdGUueWVhciArICctJyArIChkYXRlLm1vbnRoID49IDEwID8gZGF0ZS5tb250aCA6ICcwJyArIGRhdGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5tb250aCkgKyAnLScgKyAoZGF0ZS5kYXkgPj0gMTAgPyBkYXRlLmRheSA6ICcwJyArIGRhdGUuZGF5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlbENsc0xpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0cl9yZXNjbHMgPSBjYS5SZWxDbHMuc3BsaXQoJywnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpaSBpbiBhdHRyX3Jlc2Nscykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlc2NscyA9IGF0dHJfcmVzY2xzW2lpXS5zcGxpdCgnfCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVsQ2xzTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ6IHJlc2Nsc1swXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogcmVzY2xzWzFdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuUmVsQ2xzTGlzdCA9IHJlbENsc0xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+3Jztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn55yB5biC5Yy6Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7fpgInmi6knO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHIucHVzaChjYSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdG5ld2F0dHJsaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdEJrQ29sb3I6IGNsc2F0dHIuQmtDb2xvcixcblx0XHRcdFx0XHRcdFx0XHRIYXNBY2U6IGNsc2F0dHIuSGFzQWNlLFxuXHRcdFx0XHRcdFx0XHRcdEltZ0ZvbnRTdHlsZTogY2xzYXR0ci5JbWdGb250U3R5bGUsXG5cdFx0XHRcdFx0XHRcdFx0TmFtZTogY2xzYXR0ci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdE9yZGVyOiBjbHNhdHRyLk9yZGVyLFxuXHRcdFx0XHRcdFx0XHRcdE9wZW46IG9wZW4sXG5cdFx0XHRcdFx0XHRcdFx0QXR0cjogYXR0cixcblx0XHRcdFx0XHRcdFx0XHRjb250cm9sX3N0eWxlOiB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmNvbnRyb2xfc3R5bGUsXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGVfcF93ZGl0aDogdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi50aXRsZV9wX3dkaXRoLFxuXHRcdFx0XHRcdFx0XHRcdEZvbnQ6IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuRm9udCA/IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGVcblx0XHRcdFx0XHRcdFx0XHRcdC5TdHlsZURlZi5Gb250IDoge30sXG5cdFx0XHRcdFx0XHRcdFx0QmtfQ29sb3I6IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuQmtfQ29sb3IgPyB0aGlzLiRkYXRhXG5cdFx0XHRcdFx0XHRcdFx0XHQuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuQmtfQ29sb3IgOiAnI0ZGRkZGRicsXG5cdFx0XHRcdFx0XHRcdFx0VGV4dF9Db2xvcjogdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5UZXh0X0NvbG9yID8gdGhpcy4kZGF0YVxuXHRcdFx0XHRcdFx0XHRcdFx0LmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLlRleHRfQ29sb3IgOiAnIzAwMDAwMCdcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG5ld2F0dHJsaXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QgPSBuZXdhdHRybGlzdDtcblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcblx0XHRcdFx0XHRcdC8vICRlbC5maW5kKCcuYXR0cl9maWVsZCcpLnByb3AoJ3JlYWRvbmx5JywgdHJ1ZSk7XG5cdFx0XHRcdFx0XHQvLyAkZWwuZmluZCgnLmF0dHJfZmllbGQnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLmF0dHJzXG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuYXR0cixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci52YWx1ZSA/IGFyLnZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZhciBldmVudGxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmV2ZW50O1xuXHRcdFx0XHRpZiAoZXZlbnRsaXN0KSB7XG5cdFx0XHRcdFx0aWYgKGV2ZW50bGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50bGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfb2snKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5lZGl0X29rX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnaW5pdGlhbCcpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnYmVmb3JlX3NlbGVjdF9jb21wb3NlJykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCA9IGV2ZW50bGlzdFtpXS5zY3JpcF9pZDtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmVkaXRfY29tcG9zZV9jbHNfaWQgPSBldmVudGxpc3RbaV0uY29tcG9zZV9jbHNfaWQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVxKTtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQpIHtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQuc2NyaXBfaWQ7XG5cdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELFxuXHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRhdHRyOiByZXEsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuaW5pX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlKTtcblx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0KTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0Y29udGVudDogXCLmnKrmib7liLDlj6/mmL7npLrnmoTnmoTlsZ7mgKdcIixcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHN1YkNsYXNzX2F0dHJfaW5pdCgpIHtcblx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxuXHRcdFx0dmFyIG5ld2F0dHJsaXN0ID0gW107XG5cdFx0XHRpZiAodGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBvcGVuID0gYXR0cmxpc3RbaV0ub3Blbjtcblx0XHRcdFx0XHR2YXIgbmFtZSA9IGF0dHJsaXN0W2ldLmF0dHJncm91cF9uYW1lO1xuXHRcdFx0XHRcdHZhciBhdHRycyA9IGF0dHJsaXN0W2ldLmF0dHJzO1xuXHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHRcdFx0XHR2YXIgY2xzYXR0ciA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdFtzXTtcblx0XHRcdFx0XHRcdGlmIChuYW1lID09IGNsc2F0dHIuTmFtZSkge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IFtdO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHJzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgbCA9IDA7IGwgPCBjbHNhdHRyLkF0dHIubGVuZ3RoOyBsKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYSA9IGNsc2F0dHIuQXR0cltsXTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyc1tqXS5hdHRyID09IGNhLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYWN0aW9uID0gYXR0cnNbal0uYWN0aW9uO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5lZGl0ID0gYXR0cnNbal0uZWRpdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2Eubm90ZW1wdHkgPSBhdHRyc1tqXS5ub3RlbXB0eTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZXh0X2J1dHRvbiA9IGF0dHJzW2pdLmV4dF9idXR0b247XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmJ1dHRvbl9pbWcgPSBhdHRyc1tqXS5idXR0b25faW1nO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5idXR0b25fdG9vbHRpcCA9IGF0dHJzW2pdLmJ1dHRvbl90b29sdGlwO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5iZWZvcmVfY2xpY2tfYnV0dG9uID0gYXR0cnNbal0uYmVmb3JlX2NsaWNrX2J1dHRvbjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYnV0dG9uX2NhbGxiYWNrID0gYXR0cnNbal0uYnV0dG9uX2NhbGxiYWNrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5oaWRkZW4gPSBhdHRyc1tqXS5oaWRkZW47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLnNlbGVjdCA9IGF0dHJzW2pdLnNlbGVjdCA9PSB1bmRlZmluZWQgPyBmYWxzZSA6IGF0dHJzW2pdLnNlbGVjdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuZGljdGl0ZW0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2Euc2VsZWN0ID09IHRydWUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IFtdOyAvL2NhLmRpY3RpdGVtWzBdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7fpgInmi6knOyAvL2NhLmRpY3RpdGVtWzBdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdGl0ZW1saXN0ID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZCA9IDA7IGQgPCBjYS5kaWN0aXRlbS5sZW5ndGg7IGQrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0ubGFiZWwgPSBjYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS52YWx1ZSA9IGNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtW2RdLmF0dHIgPSBjYS5OYW1lO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLmRpY3RpdGVtW2RdLkNOX0NfSVNfREVGQVVMVCA9PSAnMScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gY2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5pel5pyfJyB8fCBjYS5UeXBlID09ICfml7bpl7QnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkYXRlID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eWVhcjogbm93RGF0ZS5nZXRGdWxsWWVhcigpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bW9udGg6IG5vd0RhdGUuZ2V0TW9udGgoKSArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXk6IG5vd0RhdGUuZ2V0RGF0ZSgpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gZGF0ZS55ZWFyICsgJy0nICsgKGRhdGUubW9udGggPj0gMTAgPyBkYXRlLm1vbnRoIDogJzAnICsgZGF0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lm1vbnRoKSArICctJyArIChkYXRlLmRheSA+PSAxMCA/IGRhdGUuZGF5IDogJzAnICsgZGF0ZS5kYXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmVsQ2xzTGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyX3Jlc2NscyA9IGNhLlJlbENscy5zcGxpdCgnLCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGlpIGluIGF0dHJfcmVzY2xzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzY2xzID0gYXR0cl9yZXNjbHNbaWldLnNwbGl0KCd8Jyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZWxDbHNMaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZDogcmVzY2xzWzBdLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiByZXNjbHNbMV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5SZWxDbHNMaXN0ID0gcmVsQ2xzTGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7cnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5UeXBlID09ICfnnIHluILljLonKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivt+mAieaLqSc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gZmFsc2U7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0ci5wdXNoKGNhKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bmV3YXR0cmxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0QmtDb2xvcjogY2xzYXR0ci5Ca0NvbG9yLFxuXHRcdFx0XHRcdFx0XHRcdEhhc0FjZTogY2xzYXR0ci5IYXNBY2UsXG5cdFx0XHRcdFx0XHRcdFx0SW1nRm9udFN0eWxlOiBjbHNhdHRyLkltZ0ZvbnRTdHlsZSxcblx0XHRcdFx0XHRcdFx0XHROYW1lOiBjbHNhdHRyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0T3JkZXI6IGNsc2F0dHIuT3JkZXIsXG5cdFx0XHRcdFx0XHRcdFx0T3Blbjogb3Blbixcblx0XHRcdFx0XHRcdFx0XHRBdHRyOiBhdHRyLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRyb2xfc3R5bGU6IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuY29udHJvbF9zdHlsZSxcblx0XHRcdFx0XHRcdFx0XHR0aXRsZV9wX3dkaXRoOiB0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnRpdGxlX3Bfd2RpdGgsXG5cdFx0XHRcdFx0XHRcdFx0Rm9udDogdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5Gb250ID8gdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZVxuXHRcdFx0XHRcdFx0XHRcdFx0LlN0eWxlRGVmLkZvbnQgOiB7fSxcblx0XHRcdFx0XHRcdFx0XHRCa19Db2xvcjogdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5Ca19Db2xvciA/IHRoaXMuJGRhdGFcblx0XHRcdFx0XHRcdFx0XHRcdC5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5Ca19Db2xvciA6ICcjRkZGRkZGJyxcblx0XHRcdFx0XHRcdFx0XHRUZXh0X0NvbG9yOiB0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLlRleHRfQ29sb3IgPyB0aGlzLiRkYXRhXG5cdFx0XHRcdFx0XHRcdFx0XHQuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuVGV4dF9Db2xvciA6ICcjMDAwMDAwJ1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAobmV3YXR0cmxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCA9IG5ld2F0dHJsaXN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYpIHtcblx0XHRcdFx0XHRpZiAodGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5zaG93X3N0eWxlLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxuXHRcdFx0XHRcdFx0Ly8gJGVsLmZpbmQoJy5hdHRyX2ZpZWxkJykucHJvcCgncmVhZG9ubHknLCB0cnVlKTtcblx0XHRcdFx0XHRcdC8vICRlbC5maW5kKCcuYXR0cl9maWVsZCcpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uYXR0cnNcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5hdHRyLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLnZhbHVlID8gYXIudmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dmFyIGV2ZW50bGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuZXZlbnQ7XG5cdFx0XHRcdGlmIChldmVudGxpc3QpIHtcblx0XHRcdFx0XHRpZiAoZXZlbnRsaXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnRsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2JlZm9yZV9vaycpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmVkaXRfb2tfZXZlbnQgPSBldmVudGxpc3RbaV07XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdpbml0aWFsJykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQgPSBldmVudGxpc3RbaV07XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfc2VsZWN0X2NvbXBvc2UnKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5lZGl0X3NlbGVjdF9jb21wb3NlX2V2ZW50ID0gZXZlbnRsaXN0W2ldLnNjcmlwX2lkO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuZWRpdF9jb21wb3NlX2Nsc19pZCA9IGV2ZW50bGlzdFtpXS5jb21wb3NlX2Nsc19pZDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXEpO1xuXHRcdFx0XHRpZiAodGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudCkge1xuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudC5zY3JpcF9pZDtcblx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5zY2FuX2luaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZSk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwi5pyq5om+5Yiw5Y+v5pi+56S655qE55qE5bGe5oCnXCIsXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRpbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pIHtcblx0XHRcdHZhciBwYXJhbSA9IHtcblx0XHRcdFx0RWRpdFN0eWxlOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZS5OYW1lLFxuXHRcdFx0XHRWaWV3U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5WaWV3X1N0eWxlLk5hbWUsXG5cdFx0XHRcdE5vdFRyaWdnZXJTeXNFdmVudDogMCxcblx0XHRcdFx0ZW52aXJvbWVudDoge1xuXHRcdFx0XHRcdCdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHRcdCdidXR0b24nOiAndG9wJywgLy8gdG9wL2JvdHRvbVxuXHRcdFx0XHRcdGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0XHRtYXN0ZXI6IHtcblx0XHRcdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxuXHRcdFx0XHRcdFx0Ly9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dmFyIGlucHV0cGFyYW1ldGVyID0gJyc7XG5cdFx0XHR2YXIgZ2xvYmFsX2F0dHIgPSAnJztcblxuXHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRlZHR5cGU6IGluZm8uZWR0eXBlLFxuXHRcdFx0XHRldmVudGlkOiBpbmZvLmV2ZW50aWQsXG5cdFx0XHRcdHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQsXG5cdFx0XHRcdHJjbHNpZDogaW5mby5yY2xzaWQsXG5cdFx0XHRcdHJvYmppZDogaW5mby5yb2JqaWQsXG5cdFx0XHRcdHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sXG5cdFx0XHRcdGNsc2lkOiBpbmZvLmNsc2lkLFxuXHRcdFx0XHRvYmppZDogaW5mby5vYmppZCxcblx0XHRcdFx0YXR0cjogSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSxcblx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxuXHRcdFx0XHRpbnB1dHBhcmFtZXRlcjogaW5wdXRwYXJhbWV0ZXIsXG5cdFx0XHRcdGdsb2JhbF9hdHRyOiBnbG9iYWxfYXR0clxuXHRcdFx0fVxuXHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLCBkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XG5cdFx0XHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYWN0aW9ubGlzdC5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtqXVxuXHRcdFx0XHRcdFx0XHR2YXIgYWN0aW9uX3R5cGUgPSBhY3Rpb24uYWN0aW9uX3R5cGU7XG5cdFx0XHRcdFx0XHRcdHZhciB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcblx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbCA9IEpTT04ucGFyc2UodmFsdWUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2codmFsKTtcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGEgPSAwOyBhIDwgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgbCA9IDA7IGwgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbYV0uQXR0ci5sZW5ndGg7IGwrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGNhID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2FdLkF0dHJbbF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsW2ldLmF0dHIgPT0gY2EuTmFtZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5a2X5YW4JyB8fCBjYS5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBjYS5UeXBlID09XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgaW4gdmFsW2ldLmNob2ljZV9saXN0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gdmFsW2ldLmNob2ljZV9saXN0W2RdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIkNOX1NfTkFNRVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiTmFtZVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwibGFiZWxcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcInZhbHVlXCI6IHZhbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0cltqXS5kaWN0aXRlbSA9IHZhbFtpXS5jaG9pY2VfbGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjYS52YWx1ZSA9IHZhbFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbihzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsW2ldLmF0dHIgPT0gcy5hdHRyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHZhbFtpXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gdmFsW2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSB2YWxbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb25fdHlwZSA9PSAnb3Blbl9zZWxlY3RfdXNlcmRsZycpIHtcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzIuMlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogXCJvcGVuX3NlbGVjdF91c2VyZGxn6L+Z5LiqYWN0aW9uX3R5cGXov5jmnKrlpITnkIbvvIFcIixcblx0XHRcdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMlwiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLplJnor68yLjFcIixcblx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdERhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBkYXRhX2F0dHIpIHtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgZW52aXJvbWVudCA9IHtcblx0XHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHRtYXN0ZXI6IHtcblx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblx0XHRcdFx0XHQvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRlbnZpcm9tZW50LmVkaXRfZGxnID0ge1xuXHRcdFx0XHR0eXBlOiAnc21hbGwnLCAvL+Wwj+eql+WPo1xuXHRcdFx0XHRjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAvL+W9k+WJjeaVsOaNruexu2lkXG5cdFx0XHR9XG5cdFx0XHRpZiAoZGF0YV9hdHRyKSB7XG5cdFx0XHRcdGVudmlyb21lbnQuZWRpdF9kbGcuZm9ybV9jb250cm9sID0geyAvL+aJgOWxnueahOihqOWNleaOp+S7tlxuXHRcdFx0XHRcdG5hbWU6IGRhdGFfYXR0ci5OYW1lLCAvL+Wtl+auteWxnuaAp1xuXHRcdFx0XHRcdHRleHQ6IGRhdGFfYXR0ci5EaXNwTmFtZSwgLy/mmL7npLrmlofmnKxcblx0XHRcdFx0XHRncm91cF9uYW1lOiBkYXRhX2F0dHIuR3JvdXBOYW1lLCAvL+WxnuaAp+e7hFxuXHRcdFx0XHRcdHR5cGU6IGRhdGFfYXR0ci5UeXBlLCAvL+Wtl+auteexu+Wei1xuXHRcdFx0XHRcdHJlYWRvbmx5OiBkYXRhX2F0dHIuUmVhZE9ubHksIC8v5piv5ZCm5Y+q6K+7XG5cdFx0XHRcdFx0YnV0dG9uX2ltZzogZGF0YV9hdHRyLmJ1dHRvbl9pbWcsIC8v5byV55So5oyJ6ZKu55qE5Zu+5qCHXG5cdFx0XHRcdFx0YnV0dG9uX3Rvb2x0aXA6IGRhdGFfYXR0ci5idXR0b25fdG9vbHRpcCAvL+W8leeUqOaMiemSrueahHRvb2x0aXBcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRlZHR5cGU6IGluZm8uZWR0eXBlLFxuXHRcdFx0XHRldmVudGlkOiBpbmZvLmV2ZW50aWQsXG5cdFx0XHRcdHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQucmVwbGFjZSgneycsICcnKS5yZXBsYWNlKCd9JywgJycpLFxuXHRcdFx0XHRyY2xzaWQ6IGluZm8ucmNsc2lkLFxuXHRcdFx0XHRyb2JqaWQ6IGluZm8ucm9iamlkLFxuXHRcdFx0XHR1c2VybG9naW46IGluZm8udXNlcmxvZ2luLFxuXHRcdFx0XHRjbHNpZDogaW5mby5jbHNpZCxcblx0XHRcdFx0b2JqaWQ6IGluZm8ub2JqaWQsXG5cdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLFxuXHRcdFx0XHRpbnB1dHBhcmFtZXRlcjogJycsXG5cdFx0XHRcdGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKVxuXHRcdFx0fVxuXHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLCBkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XG5cblx0XHRcdFx0XHRpZiAoYWN0aW9ubGlzdCkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFjdGlvbmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IGFjdGlvbmxpc3RbaV07XG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0W2ldLmNob2ljZV9saXN0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uTmFtZSA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cltqXS5UeXBlID09ICflrZflhbgnIHx8IGF0dHJbal0uVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlR5cGUgPT0gJ+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgaW4gcmVzdWx0W2ldLmNob2ljZV9saXN0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gcmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIkNOX1NfTkFNRVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiTmFtZVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwibGFiZWxcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcInZhbHVlXCI6IHZhbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0cltqXS5kaWN0aXRlbSA9IHJlc3VsdFtpXS5jaG9pY2VfbGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUgKyAnPT0nICsgcmVzdWx0W2ldLmF0dHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyW2pdLk5hbWUgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uVmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbihzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChkYXRhLmFjdGlvbltpXS5hY3Rpb25fdHlwZSA9PSAnc2V0X2dsb2JhbF9hdHRyJykge1xuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmdsb2JhbF9hdHRyID0gZGF0YS5hY3Rpb25baV0udmFsdWUgfHwgW107XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoZGF0YS5yZXN1bHQpIHtcblx0XHRcdFx0XHRcdHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uTmFtZSA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0XHRpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAobGVuZ3RoID09IDApIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68zXCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBzdWNjZXNzLm1zZyxcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzMuMVwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0T0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoKSB7XG5cdFx0XHR2YXIgZW52aXJvbWVudCA9IHtcblx0XHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHRtYXN0ZXI6IHtcblx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9va19ldmVudC5zY3JpcF9pZDtcblx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+36YCJ5oupJyB8fCBhci5WYWx1ZSA9PSAn4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRpZiAoIXJlcS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciA9PSBzLm5hbWVcblx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0J2F0dHInOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS5hdHRyLFxuXHRcdFx0XHRcdFx0XHQndmFsdWUnOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS52YWx1ZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdH1cblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0ZWR0eXBlOiBpbmZvLmVkdHlwZSxcblx0XHRcdFx0ZXZlbnRpZDogaW5mby5ldmVudGlkLFxuXHRcdFx0XHRwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLFxuXHRcdFx0XHRyY2xzaWQ6IGluZm8ucmNsc2lkLFxuXHRcdFx0XHRyb2JqaWQ6IGluZm8ucm9iamlkLFxuXHRcdFx0XHR1c2VybG9naW46IGluZm8udXNlcmxvZ2luLFxuXHRcdFx0XHRjbHNpZDogaW5mby5jbHNpZCxcblx0XHRcdFx0b2JqaWQ6IGluZm8ub2JqaWQsXG5cdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcblx0XHRcdH1cblx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdC8vIHNlbGYuY2xhc3NfYXR0cl9lbGUuZmluZCgnLmF0dHJfZmllbGRbZGF0YS1maWVsZD1cIicgKyByZXN1bHRbaV0uYXR0ciArICdcIl0nKS52YWwocmVzdWx0W2ldLnZhbHVlKS5kYXRhKCd2YWwnLCByZXN1bHRbaV0udmFsdWUpO1xuXHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XG5cdFx0XHRcdFx0XHRpZiAoIXRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbihzKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaChyZXN1bHRbaV0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy5hZGQoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzRcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vNC4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHREYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKGV2ZW50aWQsIGRhdGFfYXR0ciwgYnV0dG9uX2NhbGxiYWNrLCBpbmRleCwgaWluZGV4KSB7XG5cdFx0XHR2YXIgZW52aXJvbWVudCA9IHtcblx0XHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHRtYXN0ZXI6IHtcblx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblx0XHRcdFx0XHQvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0aWYgKCFyZXEuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIgPT0gcy5uYW1lXG5cdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdCdhdHRyJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0cixcblx0XHRcdFx0XHRcdFx0J3ZhbHVlJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0udmFsdWVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dmFyIGV4dGluZm8gPSBlbnZpcm9tZW50O1xuXHRcdFx0ZXh0aW5mby5lZGl0X2RsZyA9IHtcblx0XHRcdFx0dHlwZTogJ3NtYWxsJywgLy/lsI/nqpflj6Ncblx0XHRcdFx0Y2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy/lvZPliY3mlbDmja7nsbtpZFxuXHRcdFx0fVxuXHRcdFx0aWYgKGRhdGFfYXR0cikge1xuXHRcdFx0XHRleHRpbmZvLmVkaXRfZGxnLmZvcm1fY29udHJvbCA9IHsgLy/miYDlsZ7nmoTooajljZXmjqfku7Zcblx0XHRcdFx0XHRuYW1lOiBkYXRhX2F0dHIuTmFtZSwgLy/lrZfmrrXlsZ7mgKdcblx0XHRcdFx0XHR0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsIC8v5pi+56S65paH5pysXG5cdFx0XHRcdFx0Z3JvdXBfbmFtZTogZGF0YV9hdHRyLkdyb3VwTmFtZSwgLy/lsZ7mgKfnu4Rcblx0XHRcdFx0XHR0eXBlOiBkYXRhX2F0dHIuVHlwZSwgLy/lrZfmrrXnsbvlnotcblx0XHRcdFx0XHRyZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LCAvL+aYr+WQpuWPquivu1xuXHRcdFx0XHRcdGJ1dHRvbl9pbWc6IGRhdGFfYXR0ci5idXR0b25faW1nLCAvL+W8leeUqOaMiemSrueahOWbvuagh1xuXHRcdFx0XHRcdGJ1dHRvbl90b29sdGlwOiBkYXRhX2F0dHIuYnV0dG9uX3Rvb2x0aXAgLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0b2JqaWQ6ICcnLFxuXHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShyZXEpLFxuXHRcdFx0XHRleHRpbmZvOiBKU09OLnN0cmluZ2lmeShleHRpbmZvKSxcblx0XHRcdFx0Z2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXG5cdFx0XHR9XG5cdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0XHRcdFx0aWYgKGRhdGEgIT0gXCJcIikge1xuXG5cdFx0XHRcdFx0XHR2YXIgYWN0aW9ucyA9IGRhdGEuYWN0aW9uO1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ucyk7XG5cdFx0XHRcdFx0XHRpZiAoYWN0aW9ucykge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFjdGlvbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYWN0aW9uID0gYWN0aW9uc1tpXTtcblx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdHZhciBlbnZpcm9tZW50ID0gSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCk7XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3BhbmVsJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGQgPSBkaWFsb2coe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZC5zaG93KCk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fc2VsZWN0X3VzZXJkbGcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgc3R5bGUgPSB2YWwuc3R5bGU7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBzdHlsZSA9PSAndXNlcicgPyAn6YCJ5oup5Lq65ZGYJyA6IHN0eWxlID09ICdkZXBhcnRtZW50JyA/ICfpgInmi6npg6jpl6gnIDogc3R5bGUgPT0gJ3JvbGUnID8gJ+mAieaLqeinkuiJsicgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBwYXJhbSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5kZXg6IGluZGV4LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpaW5kZXg6IGlpbmRleCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnV0dG9uX2NhbGxiYWNrOiBidXR0b25fY2FsbGJhY2ssXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlcTogcmVxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRhX2F0dHI6IGRhdGFfYXR0clxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cmw6ICcuLi9zZWxwc24vaW5kZXg/bXVsaXQ9ZmFsc2UmcGFyYW09JyArIEpTT04uc3RyaW5naWZ5KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QWRkUGVyKGRhdGEsIHBhcmFtKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhwYXJhbSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gcGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRldmVudGlkOiBjYWxsYmFja19ldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IHBhcmFtLnJlcSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aW5wdXRwYXJhbWV0ZXI6IGRhdGFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBwYXJhbS5kYXRhX2F0dHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fZGF0YV9xdWVyeV9kbGcnKSB7XG5cblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9jb21tb25fZGxnJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGQgPSBkaWFsb2coe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZC5zaG93KCk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fcHJvamVjdF9xdWVyeV9kbGcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UpO1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly9jb25zb2xlLmxvZyhhY3Rpb24udmFsdWUubXVsaXRfc2VsZWN0KTtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBwcmlSZWwgPSAnLTEnO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+WFqOmDqOebuOWFsycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICcwJztcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkei0n+i0o+eahOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICcxJztcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWIm+W7uueahCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICcyJztcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWPguS4jueahCcgfHwgYWN0aW9uLnZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWPguWKoOeahCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICczJztcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWFs+azqOeahCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICc0Jztcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeS4i+WxnueahOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICc1JztcblxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBwYXJhbV8gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluZGV4OiBpbmRleCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWluZGV4OiBpaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJ1dHRvbl9jYWxsYmFjazogYnV0dG9uX2NhbGxiYWNrLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXE6IHJlcVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cmw6ICcuLi9zZWxQcmovaW5kZXg/cmVsYXRpb249JyArIHByaVJlbCArICcmcGFyYW09JyArIEpTT05cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuc3RyaW5naWZ5KHBhcmFtXyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50czoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEFkZFBlcihkYXRhLCBwYXJhbSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuaWluZGV4XS5WYWx1ZSA9IGRhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuaWluZGV4XS5WYWxJRCA9IGRhdGFbMF0uSUQgKyAnOycgKyBkYXRhWzBdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5OYW1lO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGNhbGxiYWNrX2V2ZW50aWQgPSBwYXJhbS5idXR0b25fY2FsbGJhY2sudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhbGxiYWNrX2V2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogY2FsbGJhY2tfZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiMlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByb2plY3RpZDogZGF0YVswXS5JRCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyY2xzaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cm9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXJsb2dpbjogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBwYXJhbS5yZXEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGQgPSBkaWFsb2coe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZC5zaG93KCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLo1LjJcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogJ+iwg+eUqCBiZWZvcmVfY2xpY2tfYnV0dG9uIOiEmuacrOi/lOWbnuepuu+8jGV2ZW50X2lkJyArIGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vNVwiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLo1LjFcIixcblx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdHNjYW5faW5pX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKSB7XG5cdFx0XHR2YXIgcGFyYW0gPSB7XG5cdFx0XHRcdEVkaXRTdHlsZTogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLlZpZXdfU3R5bGUuTmFtZSxcblx0XHRcdFx0Vmlld1N0eWxlOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuVmlld19TdHlsZS5OYW1lLFxuXHRcdFx0XHROb3RUcmlnZ2VyU3lzRXZlbnQ6IDAsXG5cdFx0XHRcdGVudmlyb21lbnQ6IHtcblx0XHRcdFx0XHQnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELCAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0XHRidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdFx0bWFzdGVyOiB7XG5cdFx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblx0XHRcdFx0XHRcdC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBpbnB1dHBhcmFtZXRlciA9ICcnO1xuXHRcdFx0dmFyIGdsb2JhbF9hdHRyID0gJyc7XG5cblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0ZWR0eXBlOiBpbmZvLmVkdHlwZSxcblx0XHRcdFx0ZXZlbnRpZDogaW5mby5ldmVudGlkLFxuXHRcdFx0XHRwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLFxuXHRcdFx0XHRyY2xzaWQ6IGluZm8ucmNsc2lkLFxuXHRcdFx0XHRyb2JqaWQ6IGluZm8ucm9iamlkLFxuXHRcdFx0XHR1c2VybG9naW46IGluZm8udXNlcmxvZ2luLFxuXHRcdFx0XHRjbHNpZDogaW5mby5jbHNpZCxcblx0XHRcdFx0b2JqaWQ6IGluZm8ub2JqaWQsXG5cdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KHBhcmFtKSxcblx0XHRcdFx0aW5wdXRwYXJhbWV0ZXI6IGlucHV0cGFyYW1ldGVyLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogZ2xvYmFsX2F0dHJcblx0XHRcdH1cblx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHRcdFx0XHR2YXIgYWN0aW9ubGlzdCA9IGRhdGEuYWN0aW9uO1xuXHRcdFx0XHRcdGlmIChhY3Rpb25saXN0KSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGFjdGlvbmxpc3QubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IGFjdGlvbmxpc3Rbal1cblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbl90eXBlID0gYWN0aW9uLmFjdGlvbl90eXBlO1xuXHRcdFx0XHRcdFx0XHR2YXIgdmFsdWUgPSBhY3Rpb24udmFsdWU7XG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb25fdHlwZSA9PSAnc2V0X2RsZ19hdHRyJykge1xuXHRcdFx0XHRcdFx0XHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWwgPSBKU09OLnBhcnNlKHZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHZhbCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBhID0gMDsgYSA8IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdC5sZW5ndGg7IGErKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGwgPSAwOyBsIDwgdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W2FdLkF0dHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5sZW5ndGg7IGwrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGNhID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W2FdLkF0dHJbbF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsW2ldLmF0dHIgPT0gY2EuTmFtZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5a2X5YW4JyB8fCBjYS5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBjYS5UeXBlID09XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgaW4gdmFsW2ldLmNob2ljZV9saXN0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gdmFsW2ldLmNob2ljZV9saXN0W2RdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIkNOX1NfTkFNRVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiTmFtZVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwibGFiZWxcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcInZhbHVlXCI6IHZhbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0cltqXS5kaWN0aXRlbSA9IHZhbFtpXS5jaG9pY2VfbGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjYS52YWx1ZSA9IHZhbFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbihzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsW2ldLmF0dHIgPT0gcy5hdHRyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHZhbFtpXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gdmFsW2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSB2YWxbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb25fdHlwZSA9PSAnb3Blbl9zZWxlY3RfdXNlcmRsZycpIHtcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzYuMlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogXCJvcGVuX3NlbGVjdF91c2VyZGxn6L+Z5LiqYWN0aW9uX3R5cGXov5jmnKrlpITnkIbvvIFcIixcblx0XHRcdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vNlwiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLplJnor682LjFcIixcblx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdHNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIGRhdGFfYXR0cikge1xuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdHZhciBlbnZpcm9tZW50ID0ge307XG5cdFx0XHRpZihpbmZvLmVudmlyb21lbnQpe1xuXHRcdFx0XHRlbnZpcm9tZW50ID0gaW5mby5lbnZpcm9tZW50O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZW52aXJvbWVudCA9IHtcblx0XHRcdFx0XHQnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHRcdGNsc19pZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwgICAgIC8vIOWKn+iDveeCueS7juaVsOaNruexu+agh+ivhlxuXHRcdFx0XHRcdCdidXR0b24nOiAndG9wJywgLy8gdG9wL2JvdHRvbVxuXHRcdFx0XHRcdGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0XHRlZGl0X2RsZzoge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3NtYWxsJywgLy/lsI/nqpflj6Ncblx0XHRcdFx0XHRcdGNsYXNzX2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELC8v5b2T5YmN5pWw5o2u57G7aWRcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRcblx0XHRcdH1cblx0XHRcdHZhciBnbG9iYWxfYXR0ciA9IHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHI7XG5cdFx0XHRpZiAoaW5mby5nbG9iYWxfYXR0cikge1xuXHRcdFx0XHRnbG9iYWxfYXR0ciA9IGluZm8uZ2xvYmFsX2F0dHI7XG5cdFx0XHR9XG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdGVkdHlwZTogaW5mby5lZHR5cGUsXG5cdFx0XHRcdGV2ZW50aWQ6IGluZm8uZXZlbnRpZCxcblx0XHRcdFx0cHJvamVjdGlkOiBpbmZvLnByb2plY3RpZC5yZXBsYWNlKCd7JywgJycpLnJlcGxhY2UoJ30nLCAnJyksXG5cdFx0XHRcdHJjbHNpZDogaW5mby5yY2xzaWQsXG5cdFx0XHRcdHJvYmppZDogaW5mby5yb2JqaWQsXG5cdFx0XHRcdHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sXG5cdFx0XHRcdGNsc2lkOiBpbmZvLmNsc2lkLFxuXHRcdFx0XHRvYmppZDogaW5mby5vYmppZCxcblx0XHRcdFx0YXR0cjogSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSxcblx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCksXG5cdFx0XHRcdGlucHV0cGFyYW1ldGVyOiBKU09OLnN0cmluZ2lmeShpbmZvLmlucHV0UGFyYW10ZXIpLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkoZ2xvYmFsX2F0dHIpXG5cdFx0XHR9XG5cdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0XHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcblxuXHRcdFx0XHRcdGlmIChhY3Rpb25saXN0KSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25saXN0KTtcblx0XHRcdFx0XHRcdGZvciAodmFyIGlpID0gMDsgaWkgPCBhY3Rpb25saXN0Lmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtpaV07XG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0W2ldLmNob2ljZV9saXN0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyTGlzdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lmxlbmd0aDsgYysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHJMaXN0W2NdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuQXR0cjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cltqXS5OYW1lID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uVHlwZSA9PSAn5a2X5YW4JyB8fCBhdHRyW2pdLlR5cGUgPT0gJ+Wtl+WFuC3lrZfnrKbkuLInIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlR5cGUgPT0gJ+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdEl0ZW1MaXN0ID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gcmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaWN0SXRlbUxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJDTl9TX05BTUVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiTmFtZVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJsYWJlbFwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiB2YWxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLmRpY3RpdGVtID0gZGljdEl0ZW1MaXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0cltqXS5kaWN0aXRlbSA9IHJlc3VsdFtpXS5jaG9pY2VfbGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQubGVuZ3RoOyBjKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHJMaXN0W2NdLkF0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUgKyAnPT0nICsgcmVzdWx0W2ldLmF0dHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uTmFtZSA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobGVuZ3RoID09IDApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZ2xvYmFsX2F0dHInKSB7XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGFjdGlvbnRyID0gYWN0aW9uLnZhbHVlIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9jb21tb25fZGxnJykgeyAvL+aJk+W8gOS+p+a7keW8ueahhlxuXHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbi52YWx1ZS5jb21tb25fZGxnX2lkID09ICdjaGVja19saXN0Jykge1xuXHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2hlY2tfbGlzdCA9IGFjdGlvbi52YWx1ZS5jb25maWc7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uLnZhbHVlLmNvbmZpZy5hcHBlYXJfc3R5bGUgPT0gJ3NpZGVzbGlwJykgLy/liKTmlq3mmK/lkKbmmK/kvqfmu5Fcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucG9wdXBUeXBlID0gJ3JpZ2h0Jztcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucG9wdXBUeXBlID0gJ2NlbnRlcidcblx0XHRcdFx0XHRcdFx0XHRcdC8vIG9wZW4g5pa55rOV5Lyg5YWl5Y+C5pWwIOetieWQjOWcqCB1bmktcG9wdXAg57uE5Lu25LiK57uR5a6aIHR5cGXlsZ7mgKdcblx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRyZWZzLnBvcHVwLm9wZW4oJHRoaXMuJGRhdGEucG9wdXBUeXBlKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdhZGRfc3ViY2xzX3BhbmVsJykgeyAvL+S4u+S7juaVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxuXHRcdFx0XHRcdFx0XHRcdHZhciByZXN1bHQgPSBhY3Rpb24udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0XHRcdFx0XHRsZXQgbGlzdF8xID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QpKTtcblx0XHRcdFx0XHRcdFx0XHR2YXIgc2NhbkNvZGVWYWwgPSAkdGhpcy4kZGF0YS5zY2FuQ29kZVZhbDtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmFuZCA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7IC8v55Sf5oiQNeS9jemaj+acuuaVsFxuXHRcdFx0XHRcdFx0XHRcdFx0cmFuZCArPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGlmIChpbmZvLmlucHV0UGFyYW10ZXJbMF0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGluZm8uaW5wdXRQYXJhbXRlclswXS5hdHRyID09IFwibWFzdF9pbnB1dF8zMDM3XCIpIC8v5Yik5pat5piv5Li75pWw5o2u57G75omr56CB5p+l6K+i5pWw5o2uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsID0gXCJtYXN0X2lucHV0XzMwMzctXCIgKyByYW5kO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAoaW5mby5hdHRyWzBdLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChpbmZvLmF0dHJbMF0uYXR0ciA9PSBcIm1hc3RfaW5wdXRfMzAzN1wiKSAvL+WIpOaWreaYr+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzY2FuQ29kZVZhbCA9IFwibWFzdF9pbnB1dF8zMDM3LVwiICsgcmFuZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0c2NhbkNvZGVWYWw6IHNjYW5Db2RlVmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0c3ViQ2xhc3NBdHRyOiBsaXN0XzFcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgcyA9IDA7IHMgPCAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zY2FuQ29kZVZhbCA9PSBzY2FuQ29kZVZhbCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChyZXN1bHRbaV0uYXR0ciA9PSBcIlNfSURcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5PYmpJRCA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgX3N1YkNsYXNzQXR0ciA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCBfc3ViQ2xhc3NBdHRyLmxlbmd0aDsgYysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IF9zdWJDbGFzc0F0dHJbY10uQXR0cjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUrJz09JytyZXN1bHRbaV0uYXR0cik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyW2pdLk5hbWUgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0cj1saXN0XzE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaChyZXN1bHRbaV0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoZGF0YS5yZXN1bHQpIHtcblx0XHRcdFx0XHRcdGxldCBsaXN0XzEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCkpO1xuXHRcdFx0XHRcdFx0dmFyIHNjYW5Db2RlVmFsID0gJHRoaXMuJGRhdGEuc2NhbkNvZGVWYWw7XG5cdFx0XHRcdFx0XHRpZiAoaW5mby5pbnB1dFBhcmFtdGVyWzBdLmF0dHIgPT0gXCJtYXN0X2lucHV0XzMwMzdcIilcblx0XHRcdFx0XHRcdFx0c2NhbkNvZGVWYWwgPSBcIm1hc3RfaW5wdXRfMzAzNy1cIiArIGlpO1xuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRzY2FuQ29kZVZhbDogc2NhbkNvZGVWYWwsXG5cdFx0XHRcdFx0XHRcdHN1YkNsYXNzQXR0cjogbGlzdF8xXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zY2FuQ29kZVZhbCA9PSBzY2FuQ29kZVZhbCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5hdHRyID09IFwiU19JRFwiKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uT2JqSUQgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgX3N1YkNsYXNzQXR0ciA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8IF9zdWJDbGFzc0F0dHIubGVuZ3RoOyBjKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBfc3ViQ2xhc3NBdHRyW2NdLkF0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGF0dHJbal0uTmFtZSsnPT0nK3Jlc3VsdFtpXS5hdHRyKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cltqXS5OYW1lID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0XHRpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAobGVuZ3RoID09IDApIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6IFwi6ZSZ6K+vN1wiLGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6IGZhbHNlLGNvbmZpcm1UZXh0OiBcIuWPlua2iFwifSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTogXCLplJnor683LjFcIixjb250ZW50OiBleC5lcnJNc2csc2hvd0NhbmNlbDogZmFsc2UsY29uZmlybVRleHQ6IFwi5Y+W5raIXCJ9KTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0c2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudChldmVudElEKSB7XG5cdFx0XHR1bmkuc2hvd0xvYWRpbmcoe3RpdGxlOiBcIuWKoOi9veS4rS4uLlwiLG1hc2s6IHRydWV9KTtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHR2YXIgYXR0cmxpc3QgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7fpgInmi6knIHx8IGFyLlZhbHVlID09ICfigJTigJTor7fpgInmi6nigJTigJQnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICflrZflhbgnIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3lrZfnrKbkuLInIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRpZiAoYXIuc2VsZWN0ID09IHRydWUpIHsgLy/liKTmlq3kuIvmi4nmmK/lkKblpJrpgIlcblx0XHRcdFx0XHRcdFx0dmFyIHZhbFN0ciA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIHYgaW4gYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodmFsU3RyKVxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyICs9IFwiO1wiO1xuXHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBhci5WYWx1ZVt2XTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdmFsU3RyXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRpZiAoYXIubm90ZW1wdHkgPT0gdHJ1ZSAmJiAhYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdC8vIGlmKGFyLk5vdEVtcHR5PT0nMScpe1xuXHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogYXIuRGlzcE5hbWUgKyAn5LiN6IO95Li656m677yBJyxcblx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBvYmplY3RzID0gW107XG5cdFx0XHR2YXIgc3ViUGFuZWxMaXN0ID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0O1xuXHRcdFx0Zm9yICh2YXIgcyA9IDA7IHMgPCBzdWJQYW5lbExpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdFx0dmFyIHN1Yl9yZXEgPSBbXTtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dmFyIGF0dHIgPSBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyW2ldLkF0dHI7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7fpgInmi6knIHx8IGFyLlZhbHVlID09ICfigJTigJTor7fpgInmi6nigJTigJQnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5a2X5YW4JyB8fCBhci5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBhci5UeXBlID09ICflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuc2VsZWN0ID09IHRydWUpIHsgLy/liKTmlq3kuIvmi4nmmK/lkKblpJrpgIlcblx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsU3RyID0gXCJcIjtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciB2IGluIGFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsU3RyKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gXCI7XCI7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gYXIuVmFsdWVbdl07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHZhbFN0clxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRpZiAoYXIubm90ZW1wdHkgPT0gdHJ1ZSAmJiAhYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0Ly8gaWYoYXIuTm90RW1wdHk9PScxJyl7XG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogYXIuRGlzcE5hbWUgKyAn5LiN6IO95Li656m677yBJyxcblx0XHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRvYmplY3RzLnB1c2goe1xuXHRcdFx0XHRcdG9ial9pZDogc3ViUGFuZWxMaXN0W3NdLnNjYW5Db2RlVmFsLFxuXHRcdFx0XHRcdG9ial9hdHRyczogc3ViX3JlcVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHZhciBkYXRhSnNvbiA9IHtcblx0XHRcdFx0bWFzdGVyX2Nsczoge1xuXHRcdFx0XHRcdGNsc19uYW1lOiAnTUJPWCcsIC8vJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5OYW1lLFxuXHRcdFx0XHRcdG9ial9hdHRyczogcmVxXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGlucHV0XzMwMzc6ICR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsLCAvL+aJq+eggeWGheWuuVxuXHRcdFx0XHRvcF90eXBlOiAkdGhpcy4kZGF0YS5wYXJhbS5PcGVyYXRpb25UeXBlLCAvL+S9nOS4muexu+Wei+WumuS5iVxuXHRcdFx0XHRzdWJfY2xzOiB7XG5cdFx0XHRcdFx0Y2xzX25hbWU6ICdNQk9YJywgLy8kdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLk5hbWUsXG5cdFx0XHRcdFx0b2JqZWN0czogb2JqZWN0c1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0Ly8gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YUpzb24pKTtcblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0ZWR0eXBlOiBcIjdcIixcblx0XHRcdFx0ZXZlbnRpZDogZXZlbnRJRCxcblx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0Y2xzaWQ6ICdNQk9YJyxcblx0XHRcdFx0b2JqaWQ6ICcnLFxuXHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShbXSksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KFtdKSxcblx0XHRcdFx0Z2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KCR0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKSxcblx0XHRcdFx0ZGF0YUpzb246IEpTT04uc3RyaW5naWZ5KGRhdGFKc29uKVxuXHRcdFx0fVxuXHRcdFx0Ly8gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YUluZm8pKTtcblx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xuXHRcdFx0XHRcdGlmIChldmVudElEICE9ICR0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX09LX0V2ZW50LklEKVxuXHRcdFx0XHRcdFx0JHRoaXMuc2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudCgkdGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudC5JRCk7XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHQvL+WIt+aWsFxuXHRcdFx0XHRcdFx0dW5pLnJlZGlyZWN0VG8oe1xuXHRcdFx0XHRcdFx0XHR1cmw6ICcuLi9tb2RhbC9tc19jbGFzc0F0dHI/cGFyYW09JyArIEpTT04uc3RyaW5naWZ5KCR0aGlzLiRkYXRhLnBhcmFtKSArXG5cdFx0XHRcdFx0XHRcdFx0XCImdGl0bGVuYW1lPVwiICsgJHRoaXMuJGRhdGEudGl0bGVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzhcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzguMVwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0c2Nhbl9UcmlnZ2VyRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGV2ZW50SUQpIHtcblx0XHRcdHVuaS5zaG93TG9hZGluZyh7dGl0bGU6IFwi5Yqg6L295LitLi4uXCIsbWFzazogdHJ1ZX0pO1xuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdHZhciBhdHRybGlzdCA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivt+mAieaLqScgfHwgYXIuVmFsdWUgPT0gJ+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeaVtOaVsCcpIHtcblx0XHRcdFx0XHRcdGlmIChhci5zZWxlY3QgPT0gdHJ1ZSkgeyAvL+WIpOaWreS4i+aLieaYr+WQpuWkmumAiVxuXHRcdFx0XHRcdFx0XHR2YXIgdmFsU3RyID0gXCJcIjtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgdiBpbiBhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICh2YWxTdHIpXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gXCI7XCI7XG5cdFx0XHRcdFx0XHRcdFx0dmFsU3RyICs9IGFyLlZhbHVlW3ZdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiB2YWxTdHJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGlmIChhci5ub3RlbXB0eSA9PSB0cnVlICYmICFhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0Ly8gaWYoYXIuTm90RW1wdHk9PScxJyl7XG5cdFx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0XHRcdC8vIHVuaS5zaG93VG9hc3Qoe3RpdGxlOmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLGljb246XCJzdWNjZXNzXCIsZHVyYXRpb246MzAwMH0pO1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBhci5EaXNwTmFtZSArICfkuI3og73kuLrnqbrvvIEnLFxuXHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dmFyIG9iamVjdHMgPSBbXTtcblx0XHRcdHZhciBzdWJQYW5lbExpc3QgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Q7XG5cdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8IHN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHR2YXIgc3ViX3JlcSA9IFtdO1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHIubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR2YXIgYXR0ciA9IHN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHJbaV0uQXR0cjtcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivt+mAieaLqScgfHwgYXIuVmFsdWUgPT0gJ+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICflrZflhbgnIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3lrZfnrKbkuLInIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChhci5zZWxlY3QgPT0gdHJ1ZSkgeyAvL+WIpOaWreS4i+aLieaYr+WQpuWkmumAiVxuXHRcdFx0XHRcdFx0XHRcdHZhciB2YWxTdHIgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHYgaW4gYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICh2YWxTdHIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBcIjtcIjtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBhci5WYWx1ZVt2XTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdmFsU3RyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdGlmIChhci5ub3RlbXB0eSA9PSB0cnVlICYmICFhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0XHQvLyBpZihhci5Ob3RFbXB0eT09JzEnKXtcblx0XHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0XHRcdC8vIHVuaS5zaG93VG9hc3Qoe3RpdGxlOmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLGljb246XCJzdWNjZXNzXCIsZHVyYXRpb246MzAwMH0pO1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiBhci5EaXNwTmFtZSArICfkuI3og73kuLrnqbrvvIEnLFxuXHRcdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdG9iamVjdHMucHVzaCh7XG5cdFx0XHRcdFx0b2JqX2lkOiBzdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwsXG5cdFx0XHRcdFx0b2JqX2F0dHJzOiBzdWJfcmVxXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGRhdGFKc29uID0ge1xuXHRcdFx0XHRtYXN0ZXJfY2xzOiB7XG5cdFx0XHRcdFx0Y2xzX25hbWU6ICdNQk9YJywgLy8kdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLk5hbWUsXG5cdFx0XHRcdFx0b2JqX2F0dHJzOiByZXFcblx0XHRcdFx0fSxcblx0XHRcdFx0aW5wdXRfMzAzNzogJHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwsIC8v5omr56CB5YaF5a65XG5cdFx0XHRcdG9wX3R5cGU6ICR0aGlzLiRkYXRhLnBhcmFtLk9wZXJhdGlvblR5cGUsIC8v5L2c5Lia57G75Z6L5a6a5LmJXG5cdFx0XHRcdHN1Yl9jbHM6IHtcblx0XHRcdFx0XHRjbHNfbmFtZTogJ01CT1gnLCAvLyR0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuTmFtZSxcblx0XHRcdFx0XHRvYmplY3RzOiBvYmplY3RzXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkYXRhSnNvbikpO1xuXHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRlZHR5cGU6IFwiN1wiLFxuXHRcdFx0XHRldmVudGlkOiBldmVudElELFxuXHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRjbHNpZDogJ01CT1gnLFxuXHRcdFx0XHRvYmppZDogJycsXG5cdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KFtdKSxcblx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoW10pLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkoJHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpLFxuXHRcdFx0XHRkYXRhSnNvbjogSlNPTi5zdHJpbmdpZnkoZGF0YUpzb24pXG5cdFx0XHR9XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkYXRhSW5mbykpO1xuXHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLCBkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XG5cdFx0XHRcdFx0aWYgKGV2ZW50SUQgIT0gJHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfVHJpZ2dlcl9FdmVudC5JRClcblx0XHRcdFx0XHRcdCR0aGlzLnNjYW5fVHJpZ2dlckRhdGFPYmpSdW5DdXN0b21FdmVudCgkdGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9UcmlnZ2VyX0V2ZW50LklEKTtcblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdC8v5Yi35pawXG5cdFx0XHRcdFx0XHR1bmkucmVkaXJlY3RUbyh7XG5cdFx0XHRcdFx0XHRcdHVybDogJy4uL21vZGFsL21zX2NsYXNzQXR0cj9wYXJhbT0nICsgSlNPTi5zdHJpbmdpZnkoJHRoaXMuJGRhdGEucGFyYW0pICtcblx0XHRcdFx0XHRcdFx0XHRcIiZ0aXRsZW5hbWU9XCIgKyAkdGhpcy4kZGF0YS50aXRsZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vOFwiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vOC4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSxcblxuXG5cdH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///90\n");
 
 /***/ }),
 /* 91 */
@@ -32502,7 +32509,7 @@
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 57));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 59));\nvar _base = _interopRequireDefault(__webpack_require__(/*! ../../components/js-base64/base64.js */ 65));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  modules: {\n    Base64: _base.default\n  },\n  data: function data() {\n    return {\n      title: '鐮佺洏',\n      param: {},\n      focusMateria: false,\n      head_styledef: {\n        form: {\n          items: []\n        }\n      },\n      detail1_styledef: {},\n      detail1StyleDefList: [],\n      detail2_styledef: {},\n      detail2StyleDefList: [],\n      // 鍒嗘鍣ㄦ暟鎹甛n      current: 0,\n      items: ['姝e湪鐮佺洏', '宸茬爜鐩�]\n    };\n  },\n  onLoad: function onLoad(options) {\n    // console.log(options);\n    uni.setNavigationBarTitle({\n      title: options.titlename\n    }); //璁剧疆椤堕儴鏍囬 \n    this.$data.param = JSON.parse(options.param);\n    // console.log(this.$data.param);\n    //鑾峰彇CG_Detail锛堟墭鐩樿揣鍝佽〃锛夋暟鎹被鐨勮嚜瀹氫箟琛ㄥ崟鍙傛暟\n    this.Head_UIStyleGetInfo('CG_Detail', this.$data.param.Head_Panel_Style.ID);\n    this.Detail1_UIstyleGetInfo('CG_Detail', this.$data.param.Detail_List_Panel1_Style.ID);\n    this.Detail2_UIstyleGetInfo('CG_Detail', this.$data.param.Detail_List_Panel2_Style.ID);\n    //椤甸潰鍒濆鍖栬幏鍙栫劍鐐筡n    // this.focusMateria=true; \n  },\n\n  methods: {\n    Head_UIStyleGetInfo: function Head_UIStyleGetInfo(class_id, style_id) {\n      var _this = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n        var $this, dataInfo;\n        return _regenerator.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                //鑾峰彇鑷畾涔夎〃鍗曟牱寮廫n                $this = _this;\n                dataInfo = {\n                  class_id: class_id,\n                  ui_style_id: style_id\n                };\n                _this.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n                  // console.log(ret);\n                  if (ret.err_code == 0) {\n                    var styledef = \"\";\n                    if (ret.result.style_def) {\n                      //mobox2鐨剆tyle_def鏄痡son瀛楃涓瞈n                      styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n                      //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓瞈n                      if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n                    }\n                    $this.$data.head_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n                    // this.form = this.head_styledef.form.model;\n                    // console.log($this.$data.head_styledef);\n                  } else {\n                    uni.showModal({\n                      title: \"閿欒1\",\n                      content: ret.err_msg,\n                      showCancel: false,\n                      confirmText: \"鍙栨秷\"\n                    });\n                  }\n                }).catch(function (ex) {\n                  // console.log(ex);\n                  uni.showModal({\n                    title: \"閿欒1.1\",\n                    content: ex.errMsg,\n                    showCancel: false,\n                    confirmText: \"鍙栨秷\"\n                  });\n                });\n              case 3:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }))();\n    },\n    Detail1_UIstyleGetInfo: function Detail1_UIstyleGetInfo(class_id, style_id) {\n      var _this2 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n        var $this, dataInfo;\n        return _regenerator.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                //鑾峰彇鑷畾涔夎〃鍗曟牱寮廫n                $this = _this2;\n                dataInfo = {\n                  class_id: class_id,\n                  ui_style_id: style_id\n                };\n                _this2.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n                  // console.log(ret);\n                  if (ret.err_code == 0) {\n                    var styledef = \"\";\n                    if (ret.result.style_def) {\n                      //mobox2鐨剆tyle_def鏄痡son瀛楃涓瞈n                      styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n                      //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓瞈n                      if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n                    }\n                    $this.$data.detail1_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n                    // console.log($this.$data.detail1_styledef);\n                    // $this.$data.detail1StyleDefList.push($this.$data.detail1_styledef);\n                    // let aa = JSON.stringify(this.detail1_styledef);\n                    // $this.$data.detail1StyleDefList.push(JSON.parse(aa));\n                    // console.log($this.$data.detail1StyleDefList);\n                  } else {\n                    uni.showModal({\n                      title: \"閿欒2\",\n                      content: ret.err_msg,\n                      showCancel: false,\n                      confirmText: \"鍙栨秷\"\n                    });\n                  }\n                }).catch(function (ex) {\n                  // console.log(ex);\n                  uni.showModal({\n                    title: \"閿欒2.1\",\n                    content: ex.errMsg,\n                    showCancel: false,\n                    confirmText: \"鍙栨秷\"\n                  });\n                });\n              case 3:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2);\n      }))();\n    },\n    Detail2_UIstyleGetInfo: function Detail2_UIstyleGetInfo(class_id, style_id) {\n      var _this3 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n        var $this, dataInfo;\n        return _regenerator.default.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                //鑾峰彇鑷畾涔夎〃鍗曟牱寮廫n                $this = _this3;\n                dataInfo = {\n                  class_id: class_id,\n                  ui_style_id: style_id\n                };\n                _this3.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n                  // console.log(ret);\n                  if (ret.err_code == 0) {\n                    var styledef = \"\";\n                    if (ret.result.style_def) {\n                      //mobox2鐨剆tyle_def鏄痡son瀛楃涓瞈n                      styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n                      //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓瞈n                      if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n                    }\n                    $this.$data.detail2_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n                    // console.log($this.$data.detail2_styledef);\n                  } else {\n                    uni.showModal({\n                      title: \"閿欒3\",\n                      content: ret.err_msg,\n                      showCancel: false,\n                      confirmText: \"鍙栨秷\"\n                    });\n                  }\n                }).catch(function (ex) {\n                  // console.log(ex);\n                  uni.showModal({\n                    title: \"閿欒3.1\",\n                    content: ex.errMsg,\n                    showCancel: false,\n                    confirmText: \"鍙栨秷\"\n                  });\n                });\n              case 3:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3);\n      }))();\n    },\n    ontap: function ontap(item) {\n      var _this4 = this;\n      //鎵爜鍔熻兘\n      // var $ele = e;\n      //console.log(e.target)\n      getApp().onScan(function (result) {\n        __f__(\"log\", result.decodedata, \" at pages/modal/5600.vue:462\");\n        item.value = result.decodedata;\n        uni.hideKeyboard();\n        var $this = _this4;\n        __f__(\"log\", item, \" at pages/modal/5600.vue:467\");\n        if (item.oldvalue != item.value) {\n          item.oldvalue = item.value;\n          var attr = item.fieldId;\n          _this4.head_styledef.form.model[attr] = item.value;\n          var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠禱n          var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠禱n          var onSuffixClickEvent = item.bind.onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋僜n          var isflag = false;\n          if (onChangeEvent.id) {\n            //鍐呭鍙樺寲鍚庝簨浠禱n            $this.onChange(onChangeEvent);\n          }\n          if (item.value) {\n            //绗竴涓緭鍏ユ涓嶄负绌篭n            $this.focusMateria = true; //鍒濆鍖栵紝绗簩涓緭鍏ユfocus灞炴�\n            // setTimeout(function(){\n            // \t$this.focusMateria=true; //绗簩涓緭鍏ユ鑾峰彇鐒︾偣\n            setTimeout(function () {\n              uni.hideKeyboard();\n            }, 100);\n            // },500);\n          }\n          // if(onSuffixClickCallbackEvent.id){   //鍚庡浘鏍囩偣鍑讳簨浠禱n          //   this.onSuffixClick(onSuffixClickCallbackEvent);\n          // }\n          // if(onSuffixClickEvent.id){   //鍚庡浘鏍囩偣鍑诲洖璋僜n          //   this.onSuffixClickCallback(onSuffixClickEvent);\n          // }\n        }\n      });\n    },\n    onEnterChange: function onEnterChange(item) {\n      //鍥炶溅锛岀偣鍑绘寜閽紝鍙栨秷鑺傜偣浜嬩欢\n      // console.log(item);\n      if (item.oldvalue != item.value) {\n        item.oldvalue = item.value;\n        var attr = item.fieldId;\n        this.head_styledef.form.model[attr] = item.value;\n        var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠禱n        var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠禱n        var onSuffixClickEvent = item.bind.onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋僜n        var isflag = false;\n        if (onChangeEvent.id) {\n          //鍐呭鍙樺寲鍚庝簨浠禱n          this.onChange(onChangeEvent);\n        }\n        // if(onSuffixClickCallbackEvent.id){   //鍚庡浘鏍囩偣鍑讳簨浠禱n        //   this.onSuffixClick(onSuffixClickCallbackEvent);\n        // }\n        // if(onSuffixClickEvent.id){   //鍚庡浘鏍囩偣鍑诲洖璋僜n        //   this.onSuffixClickCallback(onSuffixClickEvent);\n        // }\n      }\n    },\n    // 鍐呭鍙樺寲鍚庝簨浠禱n    onChange: function onChange(event) {\n      var _this5 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n        var obj_attr, input_param, $this, dataInfo, tip;\n        return _regenerator.default.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                try {\n                  if (event.id) {\n                    obj_attr = _this5.head_styledef.form.model; // console.log(obj_attr);\n                    input_param = _base.default.encode(JSON.stringify(Object.keys(obj_attr).map(function (a) {\n                      return {\n                        attr: a,\n                        value: obj_attr[a] || \"\"\n                      };\n                    })));\n                    $this = _this5;\n                    dataInfo = {\n                      ed_type: 0,\n                      start_transaction: '',\n                      class_id: _this5.$data.head_styledef.form.clsId,\n                      class_name: '',\n                      event_id: event.id,\n                      event_name: '',\n                      data_obj_id: '',\n                      obj_attr: obj_attr,\n                      prj_id: '',\n                      ref_cls_id: '',\n                      rel_obj_id: '',\n                      user_login: '',\n                      data_json: '',\n                      compose_info: '',\n                      ext_info: '',\n                      global_attr: '',\n                      input_param: input_param\n                    };\n                    _this5.$store.dispatch('runCustomEvent', dataInfo).then(function (ret) {\n                      // console.log(ret);\n                      if (ret.err_code == 0) {\n                        var result = ret.result;\n                        if (result.ret != 0) {\n                          var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n                          if (result.ret == 801) uni.showModal({\n                            title: '鎻愮ず',\n                            content: tip,\n                            showCancel: false,\n                            confirmText: \"鍙栨秷\"\n                          });else uni.showModal({\n                            title: '鎻愮ず',\n                            content: tip + ',鎻愮ず:' + result.ret,\n                            showCancel: false,\n                            confirmText: \"鍙栨秷\"\n                          });\n                          return false;\n                        } else {\n                          var _tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n                          if (_tip) uni.showModal({\n                            title: '鎻愮ず',\n                            content: _tip,\n                            showCancel: false,\n                            confirmText: \"鍙栨秷\"\n                          });\n                          if (result.result_type == 0 && result.action) {\n                            result.action.forEach(function (item) {\n                              if (item.action_type == \"insert_subtable_page_row\") {\n                                //鐮佺洏涓璡n                                var value = item.value;\n                                $this.viewAceionRow(value);\n                              } else if (item.action_type == \"set_subtable_page_content\") {\n                                //宸茬爜鐩榎n                                var value = item.value;\n                                if (value.clear == true && $this.$data.detail1StyleDefList.length > 0) {\n                                  //鍒ゆ柇鏄惁娓呯┖椤电鍐呭,姝e湪鐮佺洏鏄惁鏈夋暟鎹甛n                                  uni.showModal({\n                                    title: '鎻愮ず',\n                                    content: '绯荤粺妫�祴鍒版湁姝e湪鐮佺洏涓殑璐у搧锛岀户缁搷浣滀細娓呯┖锛屾槸鍚︾户缁紵',\n                                    success: function success(res) {\n                                      if (res.confirm) {\n                                        $this.$data.detail1StyleDefList = [];\n                                        $this.$data.detail2StyleDefList = [];\n                                        $this.viewAceionContent(value);\n                                      } else if (res.cancel) {\n                                        $this.$data.detail2StyleDefList = [];\n                                        $this.viewAceionContent(value);\n                                      }\n                                    }\n                                  });\n                                } else {\n                                  $this.$data.detail2StyleDefList = [];\n                                  $this.viewAceionContent(value);\n                                }\n                              }\n                            });\n                          } else {\n                            // this.detail2StyleDefList=[];\n                            if (result.info) {\n                              uni.showModal({\n                                title: \"閿欒4.3\",\n                                content: result.info,\n                                showCancel: false,\n                                confirmText: \"鍙栨秷\"\n                              });\n                            }\n                          }\n                        }\n                      } else {\n                        uni.showModal({\n                          title: \"閿欒4\",\n                          content: ret.err_msg,\n                          showCancel: false,\n                          confirmText: \"鍙栨秷\"\n                        });\n                      }\n                    }).catch(function (ex) {\n                      // console.log(ex);\n                      uni.showModal({\n                        title: \"閿欒4.1\",\n                        content: ex.errMsg,\n                        showCancel: false,\n                        confirmText: \"鍙栨秷\"\n                      });\n                    });\n                  }\n                } catch (ex) {\n                  tip = typeof ex == \"string\" ? ex : ex.message;\n                  uni.showModal({\n                    title: \"閿欒4.2\",\n                    content: \"鎵ц鈥滃唴瀹瑰彉鍖栧悗鈥濅簨浠跺け璐ワ細\" + tip,\n                    showCancel: false,\n                    confirmText: \"鍙栨秷\"\n                  });\n                }\n              case 1:\n              case \"end\":\n                return _context4.stop();\n            }\n          }\n        }, _callee4);\n      }))();\n    },\n    //鍔犺浇姝e湪鐮佺洏鍐呭\n    viewAceionRow: function viewAceionRow(data, type) {\n      // console.log(data);\n      var styleStr = JSON.stringify(this.$data.detail1_styledef);\n      if (type) {\n        //纭畾鍚庤剼鏈繘鍏ュ姞杞藉凡鐮佺洏鏁版嵁\n        styleStr = JSON.stringify(this.$data.detail2_styledef);\n      }\n      var detailStyle = JSON.parse(styleStr);\n      data.row.attrs.forEach(function (attr) {\n        detailStyle.form.items.forEach(function (ele) {\n          if (ele.name != 'Layout') {\n            if (ele.fieldId == attr.attr) ele.value = attr.value;\n          } else if (ele.name == 'Layout') {\n            ele.setting.colList.forEach(function (col) {\n              if (col) {\n                if (col.fieldId == attr.attr) col.value = attr.value;\n              }\n            });\n          }\n        });\n      });\n      if (type) {\n        //纭畾鍚庤剼鏈繘鍏ュ姞杞藉凡鐮佺洏鏁版嵁\n        detailStyle.form.objId = data.row.id;\n        this.$data.detail2StyleDefList.push(detailStyle);\n        // console.log(this.$data.detail2StyleDefList);\n      } else {\n        detailStyle.form.attrs = data.row.attrs;\n        this.$data.detail1StyleDefList.push(detailStyle);\n        // console.log(this.$data.detail1StyleDefList);\n      }\n    },\n    //鍔犺浇宸茬爜鐩樺唴瀹筡n    viewAceionContent: function viewAceionContent(data) {\n      var _this6 = this;\n      data.content.forEach(function (cont) {\n        var styleStr = JSON.stringify(_this6.$data.detail2_styledef);\n        var detailStyle = JSON.parse(styleStr);\n        detailStyle.form.objId = cont.id;\n        cont.attrs.forEach(function (attr) {\n          detailStyle.form.items.forEach(function (ele) {\n            if (ele.name != 'Layout') {\n              if (ele.fieldId == attr.attr) ele.value = attr.value;\n            } else if (ele.name == 'Layout') {\n              ele.setting.colList.forEach(function (col) {\n                if (col) {\n                  if (col.fieldId == attr.attr) col.value = attr.value;\n                }\n              });\n            }\n          });\n        });\n        _this6.$data.detail2StyleDefList.push(detailStyle);\n      });\n      // console.log(this.detail2StyleDefList);\n    },\n    onClickItem: function onClickItem(e) {\n      //閫夋嫨椤电\n      // console.log(e);\n      this.current = e.currentIndex;\n    },\n    onDetail1EnterChange: function onDetail1EnterChange(item) {\n      //鐮佺洏涓牱寮忓洖杞︿簨浠禱n      __f__(\"log\", item, \" at pages/modal/5600.vue:676\");\n    },\n    delItem: function delItem(index) {\n      //鍒犻櫎鐮佺洏涓牱寮忛潰鏉縗n      this.detail1StyleDefList.splice(index, 1);\n    },\n    delDataObj: function delDataObj(style, index) {\n      //鍒犻櫎宸茬爜鐩樻暟\n      // console.log(style);\n      var $this = this;\n      uni.showModal({\n        title: '鎻愮ず',\n        content: '纭畾鍒犻櫎璇ュ凡鐮佺洏鏁版嵁锛�,\n        success: function success(res) {\n          if (res.confirm) {\n            var objID = style.form.objId;\n            if (!style.form.objId.includes('{')) objID = '{' + style.form.objId + '}';\n            var dataInfo = {\n              class_id: style.form.clsId,\n              class_name: '',\n              obj_id: objID\n            };\n            // console.log(dataInfo);\n            $this.$store.dispatch('dataObjDel', dataInfo).then(function (ret) {\n              // console.log(ret);\n              if (ret.err_code == 0) {\n                $this.detail2StyleDefList.splice(index, 1);\n                uni.showModal({\n                  title: \"鎻愮ず\",\n                  content: \"鍒犻櫎鎴愬姛锛乗",\n                  showCancel: false,\n                  confirmText: \"鍙栨秷\"\n                });\n              } else {\n                uni.showModal({\n                  title: \"閿欒5\",\n                  content: ret.err_msg,\n                  showCancel: false,\n                  confirmText: \"鍙栨秷\"\n                });\n              }\n            }).catch(function (ex) {\n              // console.log(ex);\n              uni.showModal({\n                title: \"閿欒5.1\",\n                content: ex.errMsg,\n                showCancel: false,\n                confirmText: \"鍙栨秷\"\n              });\n            });\n          } else if (res.cancel) {}\n        }\n      });\n    },\n    ok: function ok() {\n      //纭畾\n      // var $this = this;\n      // console.log(this.$data.param.Before_OK_Event);\n      //    console.log(this.$data.param.After_OK_Event);\n      if (this.$data.param.Before_OK_Event)\n        //鏄惁鏈夌‘瀹氬墠浜嬩欢\n        this.sava(this.$data.param.Before_OK_Event);else if (this.$data.param.After_OK_Event)\n        //鏄惁鏈夌‘瀹氬悗浜嬩欢\n        this.sava(this.$data.param.After_OK_Event);\n    },\n    sava: function sava(event) {\n      var $this = this;\n      if (this.$data.detail1StyleDefList.length == 0) {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"娌℃湁姝e湪鐮佺洏鐨勬暟鎹紒\",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n        return false;\n      }\n      //鑾峰彇琛ㄥご灞炴�\n      var head_attr = {};\n      this.$data.head_styledef.form.items.forEach(function (item) {\n        head_attr[item.fieldId] = item.value;\n      });\n      // console.log(head_attr);\n      //鑾峰彇姝e湪鐮佺洏灞炴�\n      var detailAttrList = [];\n      this.$data.detail1StyleDefList.forEach(function (style) {\n        var detail_attr = {};\n        style.form.items.forEach(function (item) {\n          if (item.name == \"Layout\") {\n            //鍒ゆ柇鏄惁鏄爡鏍忔牸寮廫n            item.setting.colList.forEach(function (cols) {\n              if (cols != null) detail_attr[cols.fieldId] = cols.value;\n            });\n          } else detail_attr[item.fieldId] = item.value;\n        });\n        detailAttrList.push(detail_attr);\n      });\n      // console.log(detailAttrList);\n      //鑾峰彇姝e湪鐮佺洏閲屾病鏈夋樉绀虹殑瀛楁\n      this.$data.detail1StyleDefList.forEach(function (style) {\n        style.form.attrs.forEach(function (attr) {\n          for (var key in detailAttrList) {\n            var keys = Object.keys(detailAttrList[key]);\n            var isflag = true;\n            keys.forEach(function (ele) {\n              if (ele == attr.attr) isflag = false;\n            });\n            if (isflag) {\n              detailAttrList[attr.attr] = attr.value;\n            }\n          }\n        });\n      });\n      // console.log(detailAttrList);\n      //    return;\n      var input_param = _base.default.encode(JSON.stringify(Object.keys(head_attr).map(function (a) {\n        return {\n          attr: a,\n          value: head_attr[a] || \"\"\n        };\n      })));\n      var jsonlist = [];\n      detailAttrList.forEach(function (attr) {\n        jsonlist.push({\n          id: '',\n          attrs: Object.keys(attr).map(function (a) {\n            return {\n              attr: a,\n              value: attr[a] || \"\"\n            };\n          })\n        });\n      });\n      // console.log(jsonlist);\n      jsonlist.forEach( /*#__PURE__*/function () {\n        var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(json, key) {\n          return _regenerator.default.wrap(function _callee5$(_context5) {\n            while (1) {\n              switch (_context5.prev = _context5.next) {\n                case 0:\n                  _context5.next = 2;\n                  return $this.runCustomEvent(event, input_param, json);\n                case 2:\n                case \"end\":\n                  return _context5.stop();\n              }\n            }\n          }, _callee5);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }());\n    },\n    //鎵ц纭畾鑴氭湰\n    runCustomEvent: function runCustomEvent(event, input_param, json) {\n      var _this7 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n        var $this, data_json, dataInfo;\n        return _regenerator.default.wrap(function _callee6$(_context6) {\n          while (1) {\n            switch (_context6.prev = _context6.next) {\n              case 0:\n                $this = _this7;\n                data_json = _base.default.encode(JSON.stringify(json));\n                dataInfo = {\n                  ed_type: 0,\n                  start_transaction: '',\n                  class_id: _this7.$data.head_styledef.form.clsId,\n                  class_name: '',\n                  event_id: _this7.$data.param.After_OK_Event.ID,\n                  event_name: '',\n                  data_obj_id: '',\n                  obj_attr: '',\n                  prj_id: '',\n                  ref_cls_id: '',\n                  rel_obj_id: '',\n                  user_login: '',\n                  data_json: data_json,\n                  compose_info: '',\n                  ext_info: '',\n                  global_attr: '',\n                  input_param: input_param\n                }; // console.log(dataInfo);\n                _this7.$store.dispatch('runCustomEvent', dataInfo).then(function (res) {\n                  __f__(\"log\", res, \" at pages/modal/5600.vue:822\");\n                  if (res.err_code == 0) {\n                    var result = res.result;\n                    if (result.ret != 0) {\n                      var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n                      if (result.ret == 801) uni.showModal({\n                        title: '鎻愮ず',\n                        content: tip,\n                        showCancel: false,\n                        confirmText: \"鍙栨秷\"\n                      });else uni.showModal({\n                        title: '鎻愮ず',\n                        content: tip + ',鎻愮ず:' + result.ret,\n                        showCancel: false,\n                        confirmText: \"鍙栨秷\"\n                      });\n                      return false;\n                    } else {\n                      var _tip2 = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n                      if (_tip2) uni.showModal({\n                        title: '鎻愮ず',\n                        content: _tip2,\n                        showCancel: false,\n                        confirmText: \"鍙栨秷\"\n                      });\n                      if (result.result_type == 0) {\n                        if (result.action) {\n                          result.action.forEach(function (item) {\n                            if (item.action_type == \"insert_subtable_page_row\") {\n                              //鐮佺洏涓璡n                              var value = item.value;\n                              //鍔犺浇宸茬粡鐮佺洏鏁版嵁\n                              $this.viewAceionRow(value, 'add');\n                              //娓呯┖鏉$爜鍐呭\n                              $this.$data.head_styledef.form.items.forEach(function (item, index) {\n                                if (item.fieldId != \"S_CNTR_CODE\") {\n                                  item.value = '';\n                                  item.oldvalue = '';\n                                  $this.$data.head_styledef.form.model[item.fieldId] = '';\n                                }\n                              });\n                              //娓呴櫎姝e湪鐮佺洏涓垚鍔熺殑鏁版嵁\n                              $this.$data.detail1StyleDefList.forEach(function (style, index) {\n                                if (style.form.items[0].fieldId == json.attrs[0].attr && style.form.items[0].value == json.attrs[0].value) {\n                                  $this.$data.detail1StyleDefList.splice(index, 1);\n                                  return;\n                                }\n                              });\n                              // this.detail2StyleDefList=[];\n                              uni.showModal({\n                                title: \"鎻愮ず\",\n                                content: \"鐮佺洏鎴愬姛\",\n                                showCancel: false,\n                                confirmText: \"鍙栨秷\"\n                              });\n                            }\n                          });\n                        } else {\n                          if ($this.$data.param.After_OK_Event.ID != event.ID) {\n                            //鍒ゆ柇褰撳墠浜嬩欢鏄惁鏄‘瀹氬悗浜嬩欢\n                            $this.sava($this.$data.param.After_OK_Event); //鎵ц纭畾鍚庝簨浠禱n                          }\n                        }\n                      } else {\n                        // $this.$data.detail2StyleDefList=[];\n                        if (result.info) {\n                          uni.showModal({\n                            title: \"鎻愮ず\",\n                            content: result.info,\n                            showCancel: false,\n                            confirmText: \"鍙栨秷\"\n                          });\n                        }\n                      }\n                    }\n                  } else {\n                    uni.showModal({\n                      title: \"閿欒8\",\n                      content: res.err_msg,\n                      showCancel: false,\n                      confirmText: \"鍙栨秷\"\n                    });\n                  }\n                }).catch(function (ex) {\n                  var tip = typeof ex == \"string\" ? ex : ex.errMsg;\n                  uni.showModal({\n                    title: \"閿欒8.1\",\n                    content: \"鎵ц鈥滅‘瀹氬悗鈥濅簨浠跺け璐ワ細\" + tip,\n                    showCancel: false,\n                    confirmText: \"鍙栨秷\"\n                  });\n                });\n              case 4:\n              case \"end\":\n                return _context6.stop();\n            }\n          }\n        }, _callee6);\n      }))();\n    },\n    cancel: function cancel(e) {\n      //鍙栨秷\n      uni.navigateBack({\n        delta: 1 //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\n      });\n    }\n  }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvNTYwMC52dWUiXSwibmFtZXMiOlsibW9kdWxlcyIsIkJhc2U2NCIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwiZm9jdXNNYXRlcmlhIiwiaGVhZF9zdHlsZWRlZiIsImZvcm0iLCJpdGVtcyIsImRldGFpbDFfc3R5bGVkZWYiLCJkZXRhaWwxU3R5bGVEZWZMaXN0IiwiZGV0YWlsMl9zdHlsZWRlZiIsImRldGFpbDJTdHlsZURlZkxpc3QiLCJjdXJyZW50Iiwib25Mb2FkIiwidW5pIiwibWV0aG9kcyIsIkhlYWRfVUlTdHlsZUdldEluZm8iLCIkdGhpcyIsImRhdGFJbmZvIiwiY2xhc3NfaWQiLCJ1aV9zdHlsZV9pZCIsInN0eWxlZGVmIiwiY29udGVudCIsInNob3dDYW5jZWwiLCJjb25maXJtVGV4dCIsIkRldGFpbDFfVUlzdHlsZUdldEluZm8iLCJEZXRhaWwyX1VJc3R5bGVHZXRJbmZvIiwib250YXAiLCJnZXRBcHAiLCJpdGVtIiwic2V0VGltZW91dCIsIm9uRW50ZXJDaGFuZ2UiLCJvbkNoYW5nZSIsIm9ial9hdHRyIiwiaW5wdXRfcGFyYW0iLCJKU09OIiwiT2JqZWN0IiwiYXR0ciIsInZhbHVlIiwiZWRfdHlwZSIsInN0YXJ0X3RyYW5zYWN0aW9uIiwiY2xhc3NfbmFtZSIsImV2ZW50X2lkIiwiZXZlbnRfbmFtZSIsImRhdGFfb2JqX2lkIiwicHJqX2lkIiwicmVmX2Nsc19pZCIsInJlbF9vYmpfaWQiLCJ1c2VyX2xvZ2luIiwiZGF0YV9qc29uIiwiY29tcG9zZV9pbmZvIiwiZXh0X2luZm8iLCJnbG9iYWxfYXR0ciIsInJlc3VsdCIsInN1Y2Nlc3MiLCJ0aXAiLCJ2aWV3QWNlaW9uUm93Iiwic3R5bGVTdHIiLCJkZXRhaWxTdHlsZSIsImVsZSIsInZpZXdBY2Vpb25Db250ZW50IiwiY29udCIsIm9uQ2xpY2tJdGVtIiwib25EZXRhaWwxRW50ZXJDaGFuZ2UiLCJkZWxJdGVtIiwiZGVsRGF0YU9iaiIsIm9ial9pZCIsIm9rIiwic2F2YSIsImhlYWRfYXR0ciIsInN0eWxlIiwiZGV0YWlsX2F0dHIiLCJkZXRhaWxBdHRyTGlzdCIsImtleXMiLCJqc29ubGlzdCIsImlkIiwiYXR0cnMiLCJydW5DdXN0b21FdmVudCIsImNhbmNlbCIsImRlbHRhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUEwVUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQUNBO0VBQ0FBO0lBQ0FDO0VBQ0E7RUFDQUM7SUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztRQUNBQztVQUNBQztRQUNBO01BQ0E7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQTtNQUNBQztNQUNBTDtJQUNBO0VBQ0E7RUFDQU07SUFDQTtJQUNBQztNQUFBWjtJQUFBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFQUNBOztFQUNBYTtJQUNBQztNQUFBO01BQUE7UUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2dCQUFBO2dCQUNBQztnQkFDQUM7a0JBQ0FDO2tCQUNBQztnQkFDQTtnQkFDQTtrQkFDQTtrQkFDQTtvQkFDQTtvQkFDQTtzQkFDQTtzQkFDQUM7c0JBQ0E7c0JBQ0E7b0JBQ0E7b0JBQ0FKO29CQUNBO29CQUNBO2tCQUVBO29CQUNBSDtzQkFBQVo7c0JBQUFvQjtzQkFBQUM7c0JBQUFDO29CQUFBO2tCQUNBO2dCQUNBO2tCQUNBO2tCQUNBVjtvQkFBQVo7b0JBQUFvQjtvQkFBQUM7b0JBQUFDO2tCQUFBO2dCQUNBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBRUE7SUFDQUM7TUFBQTtNQUFBO1FBQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtnQkFBQTtnQkFDQVI7Z0JBQ0FDO2tCQUNBQztrQkFDQUM7Z0JBQ0E7Z0JBQ0E7a0JBQ0E7a0JBQ0E7b0JBQ0E7b0JBQ0E7c0JBQ0E7c0JBQ0FDO3NCQUNBO3NCQUNBO29CQUNBO29CQUNBSjtvQkFDQTtvQkFDQTtvQkFDQTtvQkFDQTtvQkFDQTtrQkFFQTtvQkFDQUg7c0JBQUFaO3NCQUFBb0I7c0JBQUFDO3NCQUFBQztvQkFBQTtrQkFDQTtnQkFDQTtrQkFDQTtrQkFDQVY7b0JBQUFaO29CQUFBb0I7b0JBQUFDO29CQUFBQztrQkFBQTtnQkFDQTtjQUFBO2NBQUE7Z0JBQUE7WUFBQTtVQUFBO1FBQUE7TUFBQTtJQUVBO0lBQ0FFO01BQUE7TUFBQTtRQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUE7Z0JBQUE7Z0JBQ0FUO2dCQUNBQztrQkFDQUM7a0JBQ0FDO2dCQUNBO2dCQUNBO2tCQUNBO2tCQUNBO29CQUNBO29CQUNBO3NCQUNBO3NCQUNBQztzQkFDQTtzQkFDQTtvQkFDQTtvQkFDQUo7b0JBQ0E7a0JBRUE7b0JBQ0FIO3NCQUFBWjtzQkFBQW9CO3NCQUFBQztzQkFBQUM7b0JBQUE7a0JBQ0E7Z0JBQ0E7a0JBQ0E7a0JBQ0FWO29CQUFBWjtvQkFBQW9CO29CQUFBQztvQkFBQUM7a0JBQUE7Z0JBQ0E7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFFQTtJQUVBRztNQUFBO01BQUE7TUFDQTtNQUNBO01BQ0FDO1FBQ0E7UUFDQUM7UUFDQWY7UUFFQTtRQUNBO1FBQ0E7VUFDQWU7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFFQTtZQUFBO1lBQ0FaO1VBQ0E7VUFDQTtZQUFBO1lBQ0FBO1lB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QUFBQztzQkFBQSxRQUNBVjt3QkFBQVo7d0JBQUFvQjt3QkFBQUM7d0JBQUFDO3NCQUFBO3NCQUNBO29CQUNBO3NCQUNBO3NCQUNBO3dCQUFBdEI7d0JBQUFvQjt3QkFBQUM7d0JBQUFDO3NCQUFBO3NCQUVBO3dCQUNBOzBCQUNBNkI7NEJBQ0E7OEJBQUE7OEJBQ0E7OEJBQ0E7OEJBQ0FwQzs4QkFDQTs4QkFDQUE7Z0NBQ0E7a0NBQ0FZO2tDQUNBQTtrQ0FDQVo7Z0NBQ0E7OEJBQ0E7OEJBQ0E7OEJBQ0FBO2dDQUNBO2tDQUNBQTtrQ0FDQTtnQ0FDQTs4QkFDQTs4QkFDQTs4QkFDQUg7Z0NBQUFaO2dDQUFBb0I7Z0NBQUFDO2dDQUFBQzs4QkFBQTs0QkFDQTswQkFDQTt3QkFDQTswQkFDQTs0QkFBQTs0QkFDQVA7MEJBQ0E7d0JBQ0E7c0JBQ0E7d0JBQ0E7d0JBQ0E7MEJBQ0FIOzRCQUFBWjs0QkFBQW9COzRCQUFBQzs0QkFBQUM7MEJBQUE7d0JBQ0E7c0JBQ0E7b0JBQ0E7a0JBQ0E7b0JBQ0FWO3NCQUFBWjtzQkFBQW9CO3NCQUFBQztzQkFBQUM7b0JBQUE7a0JBQ0E7Z0JBQ0E7a0JBQ0E7a0JBQ0FWO29CQUFBWjtvQkFBQW9CO29CQUFBQztvQkFBQUM7a0JBQUE7Z0JBQ0E7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFDQTtJQUVBc0Q7TUFBQTtNQUNBaEU7UUFDQWlFO01BQ0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSwyQiIsImZpbGUiOiIxMzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8c3R5bGU+XHJcbi52LWhlYWRTdHlsZSAudHh0X3RpdGxle1xyXG4gIGZvbnQtc2l6ZTogMzRycHg7XHJcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHZlcnRpY2FsLWFsaWduOiAxMnB4O1xyXG59XHJcbi52LWhlYWRTdHlsZSBpbnB1dHtcclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0LyogYm9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTsgKi9cclxuXHQvKiB3aWR0aDogNjUlOyAqL1xyXG5cdHdpZHRoOiA4NSU7ICAgIFxyXG5cdGhlaWdodDogNTJycHg7XG4gICAgbGluZS1oZWlnaHQ6IDM0cnB4O1xyXG5cdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiAjMmQ4Y2YwO1xyXG5cdHBhZGRpbmc6IDEwcnB4IDhycHggMTJycHg7XHJcblx0Zm9udC1zaXplOiAzNHJweDtcclxuXHRmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxuXHRtYXJnaW4tdG9wOiA0cnB4O1xyXG59XHJcbi52LWhlYWRTdHlsZSBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XHJcblx0Zm9udC1zaXplOiAxMnJweDtcclxufVxyXG4uaW5wdXQtd3JhcHBlcntcclxuXHRib3JkZXI6IDFweCBzb2xpZCAjZDVkNWQ1O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogNjUlOyAgICBcclxuXHRsaW5lLWhlaWdodDogMjJycHg7XG59XHJcbltudnVlXSB1bmktdmlldyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlcjogMCBzb2xpZCAjMDAwO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XHJcbi51bmktaW5wdXQge1xyXG5cdC8qIGJvcmRlcjogbm9uZTsgKi9cbn1cclxuLnVuaS1pY29ue1xyXG5cdC8qIGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgKi9cclxuXHR3aWR0aDogOCU7XG4gICAgZm9udC1mYW1pbHk6IHVuaWljb25zO1xuICAgIGZvbnQtc2l6ZTogNDBycHg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgLyogd2lkdGg6IDQ4cnB4OyAqL1xuICAgIGhlaWdodDogNDhycHg7XG4gICAgbGluZS1oZWlnaHQ6IDQ4cnB4O1xyXG5cdGNvbG9yOiAjMmQ4Y2YwO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdHZlcnRpY2FsLWFsaWduOiAxOHJweDtcbn1cclxuLnZpZXctY29udGVudHtcclxuXHRtaW4taGVpZ2h0OiA3NjBycHg7XHJcblx0LyogYm9yZGVyOjFweCBzb2xpZCByZWQ7ICovXHJcbn1cclxuLmR2LXBhbmVse1xuICAgIGJhY2tncm91bmQtY29sb3I6I0VBRkVEOTtcbiAgICBwYWRkaW5nOiAyMHJweCAyMHJweCA0cnB4IDBweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnJweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHJweDtcclxuXHR0ZXh0LWFsaWduOiByaWdodDtcclxufVxuLmR2LXBhbmVsLWlucHV0e1xyXG5cdHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHR0ZXh0LWFsaWduOiBsZWZ0O1xufVxyXG4uZHYtcGFuZWwgLnR4dF90aXRsZXtcclxuICBmb250LXNpemU6IDM0cnB4O1xyXG4gIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG5cclxuLmR2LXBhbmVsIGlucHV0e1xyXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XHJcblx0d2lkdGg6IDY4JTsgXHJcblx0aGVpZ2h0OiA1MnJweDtcbiAgICBsaW5lLWhlaWdodDogMzRycHg7XHJcblx0YmFja2dyb3VuZDogI0ZGRjtcclxuXHRib3JkZXItcmFkaXVzOiA3cHggIWltcG9ydGFudDtcclxuXHRjb2xvcjogIzJkOGNmMDtcclxuXHRwYWRkaW5nOiA2cnB4IDhycHggOHJweDtcclxuXHRmb250LXNpemU6IDMycnB4O1xyXG5cdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cdGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuXHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzO1xyXG5cdG1hcmdpbi10b3A6IDBycHg7XHJcbn1cclxuLmR2LXBhbmVsIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcclxuXHRmb250LXNpemU6IDEwcnB4O1xyXG59XHJcbi5kdi1wYW5lbCAuZm9ybS1pdGVtLXNwYW57XHJcblx0dmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xyXG4gICAgY29sb3I6ICMyZDhjZjA7XHJcblx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuXHR3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0d2lkdGg6IGNhbGMoMTAwJSAtIDEwMHB4KTtcclxufVxyXG5cbi5kdi1wYW5lbC1idXR0b257XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdG1hcmdpbi1yaWdodDogMjBycHg7XG59XHJcbi5kdi1wYW5lbC1idXR0b24gYnV0dG9uIHsgICAgXHJcblx0bGluZS1oZWlnaHQ6IDEuODtcbiAgICBib3JkZXI6IG5vbmU7XHJcblx0Zm9udC1zaXplOiAzNHJweDtcclxufVxyXG5idXR0b24uYnRuX2NhbmNlbCB7XHJcblx0d2lkdGg6NDkuNSU7XHJcblx0bWFyZ2luLXRvcDogNTBycHg7XHJcblx0cGFkZGluZzogMjBycHg7XHJcblx0bGluZS1oZWlnaHQ6IDEuNTtcclxuXHRib3JkZXI6IG5vbmU7XHJcblx0Zm9udC1zaXplOiAzOHJweDtcclxuXHRmb250LXdlaWdodDogYm9sZDtcclxuXHRmbG9hdDogbGVmdDtcclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuYnV0dG9uLmJ0bl9hZGQge1xyXG5cdHdpZHRoOjQ5LjUlO1xyXG5cdG1hcmdpbi10b3A6IDUwcnB4O1xyXG5cdHBhZGRpbmc6IDIwcnB4O1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0Ym9yZGVyOiBub25lO1xyXG5cdGZvbnQtc2l6ZTogMzhycHg7XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG4ubG9nbyB7XHJcblx0aGVpZ2h0OiA1MHB4O1xuICAgIHdpZHRoOiAyMzBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbjogMzglIGF1dG87XHJcbn1cclxuLmR2LWJvcmRlcntcclxuXHRib3JkZXI6IDFweCBzb2xpZCByZWQ7XHJcbn1cbjwvc3R5bGU+XHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuXHQuZGVtby11bmktcm93IHtcblx0XHRtYXJnaW4tYm90dG9tOiAwcHg7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblx0Ojp2LWRlZXAgLnVuaS1yb3cge1xuXHRcdG1hcmdpbi1ib3R0b206IDBweDtcblx0fVxyXG5cdC52aWV3LXRhYnBhZ2UgOjp2LWRlZXAgLnVuaS1yb3cgIHtcblx0XHRtYXJnaW4tYm90dG9tOiA1cHg7XG5cdH1cblx0LmRlbW8tdW5pLWNvbCB7XG5cdFx0aGVpZ2h0OiAzNnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDVweDtcblx0fVxyXG5cdC5kZW1vLXVuaS1yb3cgLnVuaS1pbnB1dHtcclxuXHRcdHdpZHRoOiBjYWxjKDEwMCUgLSAxMjBweCk7XHJcblx0fVxuPC9zdHlsZT5cblxuXHJcblxyXG48dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJjb250ZW50XCI+XHJcblx0XHQ8IS0tIOihqOWktOagt+W8jyAtLT5cclxuXHRcdDx2aWV3IGNsYXNzPVwidi1oZWFkU3R5bGVcIiB2LWZvcj1cIihpdGVtLGluZGV4KSBpbiBoZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXNcIiA+XHJcblx0XHRcdDx0ZXh0IGNsYXNzPVwidHh0X3RpdGxlXCIgOnN0eWxlPVwieyd3aWR0aCc6aXRlbS5sYWJlbFdpZHRoKydweCd9XCI+e3tpdGVtLmxhYmVsfX3vvJo8L3RleHQ+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiPlxuXHRcdFx0XHQ8dGV4dCB2LWlmPVwiaXRlbS5zZXR0aW5nLnByZWZpeFwiIFxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJ1bmktaWNvblwiIFxyXG5cdFx0XHRcdFx0OmNsYXNzPVwiW2l0ZW0uc2V0dGluZy5wcmVmaXhdXCJcblx0XHRcdFx0XHRAY2xpY2s9XCJvbkVudGVyQ2hhbmdlKGl0ZW0pXCI+JiN4ZTU2ODs8L3RleHQ+XHJcblx0XHRcdFx0PGlucHV0XHJcblx0XHRcdFx0XHRjbGFzcz1cInVuaS1pbnB1dFwiXHJcblx0XHRcdFx0XHQ6dHlwZT1cIml0ZW0ubmFtZT09J0lucHV0Jz8ndGV4dCc6J3RleHQnXCIgXHJcblx0XHRcdFx0XHR2LW1vZGVsPVwiaXRlbS52YWx1ZVwiXHJcblx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdFx0XHRcdDpwbGFjZWhvbGRlcj1cIml0ZW0ucGxhY2Vob2xkZXJcIlxyXG5cdFx0XHRcdFx0OnN0eWxlPVwieyd3aWR0aCc6aXRlbS5zZXR0aW5nLnByZWZpeCAmJiBpdGVtLnNldHRpbmcuc3VmZml4Pyc3OCUnOml0ZW0uc2V0dGluZy5wcmVmaXggfHwgaXRlbS5zZXR0aW5nLnN1ZmZpeD8nODclJzonOTYlJ31cIiBcclxuXHRcdFx0XHRcdDpmb2N1cz1cImZvY3VzTWF0ZXJpYVwiXHJcblx0XHRcdFx0XHRAZm9jdXM9XCJvbnRhcChpdGVtKVwiIFxuXHRcdFx0XHRcdEBrZXl1cC5lbnRlcj1cIm9uRW50ZXJDaGFuZ2UoaXRlbSlcIlxuXHRcdFx0XHRcdEBibHVyPVwib25FbnRlckNoYW5nZShpdGVtKVwiXHJcblx0XHRcdFx0Lz5cblx0XHRcdFx0PHRleHQgdi1pZj1cIml0ZW0uc2V0dGluZy5zdWZmaXhcIiBcclxuXHRcdFx0XHRcdGNsYXNzPVwidW5pLWljb25cIiBcclxuXHRcdFx0XHRcdDpjbGFzcz1cIltpdGVtLnNldHRpbmcuc3VmZml4XVwiXG5cdFx0XHRcdFx0QGNsaWNrPVwib25FbnRlckNoYW5nZShpdGVtKVwiPiYjeGU1Njg7PC90ZXh0PlxyXG5cdFx0ICAgIDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwidmlldy1jb250ZW50XCI+XHJcblx0XHRcdDwhLS0g6aG1562+IC0tPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImR2LXRhYlwiPlxyXG5cdFx0XHRcdDx1bmktc2VnbWVudGVkLWNvbnRyb2wgOmN1cnJlbnQ9XCJjdXJyZW50XCIgOnZhbHVlcz1cIml0ZW1zXCIgQGNsaWNrSXRlbT1cIm9uQ2xpY2tJdGVtXCJcclxuXHRcdFx0XHRcdHN0eWxlVHlwZT1cImJ1dHRvblwiPlxyXG5cdFx0XHRcdDwvdW5pLXNlZ21lbnRlZC1jb250cm9sPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwhLS0g5q2j5Zyo56CB55uYIC0tPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInZpZXctdGFicGFnZVwiIHYtaWY9XCJjdXJyZW50PT0wXCI+XHJcblx0XHRcdFx0PGltYWdlIGNsYXNzPVwibG9nb1wiIHYtaWY9XCJkZXRhaWwxU3R5bGVEZWZMaXN0Lmxlbmd0aD09MFwiIHNyYz1cIi4uLy4uL2ltYWdlcy9tb2JveF9sb2dfMjAweDQwLnBuZ1wiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0PCEtLSA8ZGl2IGNsYXNzPVwiZHYtcGFuZWxcIj5cclxuXHRcdFx0XHQgICAgPGRpdiBjbGFzcz1cImR2LXBhbmVsLWlucHV0XCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHh0X3RpdGxlXCIgc3R5bGU9XCJ3aWR0aDoxMDBweFwiPnRlc3TvvJo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb3JtLWl0ZW0tc3BhblwiID4xMTExPC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQgICAgICAgIDxkaXYgPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHh0X3RpdGxlXCIgc3R5bGU9XCJ3aWR0aDoxMDBweFwiPnRlc3TvvJo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb3JtLWl0ZW0tc3BhblwiID4xMTExPC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHQ8dW5pLXJvdyBjbGFzcz1cImRlbW8tdW5pLXJvd1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS1jb2wgOnNwYW49XCIxMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4dF90aXRsZSBkdi1mb3JtLWl0ZW0tY29sXCIgc3R5bGU9XCJ3aWR0aDoxMDBweFwiPnRlc3TvvJo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9ybS1pdGVtLXNwYW5cIiA+ZmZhYWE8L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS1jb2w+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLWNvbCA6c3Bhbj1cIjEyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHh0X3RpdGxlIGR2LWZvcm0taXRlbS1jb2xcIiBzdHlsZT1cIndpZHRoOjEwMHB4XCI+dGVzdO+8mjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb3JtLWl0ZW0tc3BhblwiID5mZmFhYWZmYWFhZmZhYWFmZmFhYWZmYWFhPC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktY29sPlxyXG5cdFx0XHRcdFx0XHRcdDwvdW5pLXJvdz5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXY+XHJcblx0XHRcdFx0XHRcdFx0PHVuaS1yb3cgY2xhc3M9XCJkZW1vLXVuaS1yb3dcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktY29sIDpzcGFuPVwiMTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eHRfdGl0bGUgZHYtZm9ybS1pdGVtLWNvbFwiIHN0eWxlPVwid2lkdGg6MTAwcHhcIj50ZXN077yaPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvcm0taXRlbS1zcGFuXCIgPmZzZmVnZnM8L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS1jb2w+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLWNvbCA6c3Bhbj1cIjEyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHh0X3RpdGxlIGR2LWZvcm0taXRlbS1jb2xcIiBzdHlsZT1cIndpZHRoOjEwMHB4XCI+dGVzdO+8mjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cInVuaS1pbnB1dCBpbnB1dC1tYXJnaW50b3BcIiBzdHlsZT1cIndpZHRoOiBjYWxjKDEwMCUgLSAxMjBweCk7XCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktY29sPlxyXG5cdFx0XHRcdFx0XHRcdDwvdW5pLXJvdz5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJkdi1wYW5lbC1idXR0b25cIj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwid2FyblwiIEB0YXA9XCJkZWxJdGVtKDApXCI+5Yig6ZmkPC9idXR0b24+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj4gLS0+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImR2LXBhbmVsXCIgdi1mb3I9XCIoc3R5bGUsaWkpIGluIGRldGFpbDFTdHlsZURlZkxpc3RcIj5cclxuXHRcdFx0XHQgICAgPGRpdiBjbGFzcz1cImR2LXBhbmVsLWlucHV0XCI+XHJcblx0XHRcdFx0ICAgICAgICA8ZGl2IHYtZm9yPVwiKGl0ZW0saW5kZXgpIGluIHN0eWxlLmZvcm0uaXRlbXNcIj5cclxuXHRcdFx0XHQgICAgICAgICAgICA8IS0tIOaZrumAmuW4g+WxgCAtLT5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiaXRlbS5uYW1lPT0nSW5wdXQnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4dF90aXRsZVwiIDpzdHlsZT1cInsnd2lkdGgnOml0ZW0ubGFiZWxXaWR0aCsncHgnfVwiPnt7aXRlbS5sYWJlbH1977yaPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb3JtLWl0ZW0tc3BhblwiIHYtaWY9XCJpdGVtLmRpc2FibGVkXCI+e3tpdGVtLnZhbHVlfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ1bmktaW5wdXRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2LWlmPVwiIWl0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6dHlwZT1cIml0ZW0ubmFtZT09J0lucHV0TnVtYmVyJz8nbnVtYmVyJzondGV4dCdcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0OnZhbHVlPVwiaXRlbS52YWx1ZVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OnBsYWNlaG9sZGVyPVwiaXRlbS5wbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQgICAgICAgICAgICA8IS0tIOagheagvOW4g+WxgCAtLT5cclxuXHRcdFx0XHRcdFx0XHQ8dW5pLXJvdyBjbGFzcz1cImRlbW8tdW5pLXJvd1wiIHYtaWY9XCJpdGVtLm5hbWU9PSdMYXlvdXQnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLWNvbCBcclxuXHRcdFx0XHRcdFx0XHRcdFx0OnNwYW49XCIyNCAvIGl0ZW0uc2V0dGluZy5jb2xcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2LWZvcj1cIihjb2xzLGtleSkgaW4gaXRlbS5zZXR0aW5nLmNvbExpc3RcIiBcclxuXHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNvbHMhPW51bGxcIiA+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eHRfdGl0bGVcIiA6c3R5bGU9XCJ7J3dpZHRoJzpjb2xzLmxhYmVsV2lkdGgrJ3B4J31cIj57e2NvbHMubGFiZWx9fe+8mjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvcm0taXRlbS1zcGFuXCIgdi1pZj1cImNvbHMuZGlzYWJsZWRcIj57e2NvbHMudmFsdWV9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidW5pLWlucHV0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHYtaWY9XCIhY29scy5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6dHlwZT1cImNvbHMubmFtZT09J0lucHV0TnVtYmVyJz8nbnVtYmVyJzondGV4dCdcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDp2YWx1ZT1cImNvbHMudmFsdWVcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDpkaXNhYmxlZD1cImNvbHMuZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OnBsYWNlaG9sZGVyPVwiY29scy5wbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktY29sPlxyXG5cdFx0XHRcdFx0XHRcdDwvdW5pLXJvdz5cclxuXHRcdFx0XHQgICAgICAgIDwvZGl2PlxyXG5cdFx0XHRcdCAgICAgPC9kaXY+XHJcblx0XHRcdFx0ICAgIDxkaXYgY2xhc3M9XCJkdi1wYW5lbC1idXR0b25cIj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwid2FyblwiIEB0YXA9XCJkZWxJdGVtKDApXCI+5Yig6ZmkPC9idXR0b24+XHJcblx0XHRcdFx0ICAgIDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwhLS0g5bey56CB55uYIC0tPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInZpZXctdGFicGFnZTJcIiB2LWlmPVwiY3VycmVudD09MVwiPlxyXG5cdFx0XHRcdDxpbWFnZSBjbGFzcz1cImxvZ29cIiB2LWlmPVwiZGV0YWlsMlN0eWxlRGVmTGlzdC5sZW5ndGg9PTBcIiBzcmM9XCIuLi8uLi9pbWFnZXMvbW9ib3hfbG9nXzIwMHg0MC5wbmdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJkdi1wYW5lbFwiIHYtZm9yPVwiKHN0eWxlLGlpKSBpbiBkZXRhaWwyU3R5bGVEZWZMaXN0XCI+XHJcblx0XHRcdFx0ICAgIDxkaXYgY2xhc3M9XCJkdi1wYW5lbC1pbnB1dFwiPlxyXG5cdFx0XHRcdCAgICAgICAgPGRpdiB2LWZvcj1cIihpdGVtLGluZGV4KSBpbiBzdHlsZS5mb3JtLml0ZW1zXCI+XHJcblx0XHRcdFx0ICAgICAgICAgICAgPCEtLSDmma7pgJrluIPlsYAgLS0+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cIml0ZW0ubmFtZSE9J0xheW91dCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHh0X3RpdGxlXCIgOnN0eWxlPVwieyd3aWR0aCc6aXRlbS5sYWJlbFdpZHRoKydweCd9XCI+e3tpdGVtLmxhYmVsfX3vvJo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvcm0taXRlbS1zcGFuXCI+e3tpdGVtLnZhbHVlfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdCAgICAgICAgICAgIDwhLS0g5qCF5qC85biD5bGAIC0tPlxyXG5cdFx0XHRcdFx0XHRcdDx1bmktcm93IGNsYXNzPVwiZGVtby11bmktcm93XCIgdi1pZj1cIml0ZW0ubmFtZT09J0xheW91dCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktY29sIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6c3Bhbj1cIjI0IC8gaXRlbS5zZXR0aW5nLmNvbFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdHYtZm9yPVwiKGNvbHMsa2V5KSBpbiBpdGVtLnNldHRpbmcuY29sTGlzdFwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY29scyE9bnVsbFwiID5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4dF90aXRsZVwiIDpzdHlsZT1cInsnd2lkdGgnOmNvbHMubGFiZWxXaWR0aCsncHgnfVwiPnt7Y29scy5sYWJlbH1977yaPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9ybS1pdGVtLXNwYW5cIj57e2NvbHMudmFsdWV9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktY29sPlxyXG5cdFx0XHRcdFx0XHRcdDwvdW5pLXJvdz5cclxuXHRcdFx0XHQgICAgICAgIDwvZGl2PlxyXG5cdFx0XHRcdCAgICA8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJkdi1wYW5lbC1idXR0b25cIj5cclxuXHRcdFx0XHRcdCBcdDxidXR0b24gdHlwZT1cIndhcm5cIiBAdGFwPVwiZGVsRGF0YU9iaihzdHlsZSxpaSlcIj7liKDpmaQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldz5cclxuXHRcdFx0PGJ1dHRvbiB0eXBlPVwiZGVmYXVsdFwiIEB0YXA9XCJjYW5jZWxcIiBjbGFzcz1cImJ0bl9jYW5jZWxcIj7lj5bmtog8L2J1dHRvbj5cclxuXHRcdCAgICA8YnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgQHRhcD1cIm9rXCIgY2xhc3M9XCJidG5fYWRkXCI+56Gu5a6aPC9idXR0b24+XHJcblx0XHQ8L3ZpZXc+XG4gICAgPC92aWV3PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cclxuaW1wb3J0IEJhc2U2NCBmcm9tICcuLi8uLi9jb21wb25lbnRzL2pzLWJhc2U2NC9iYXNlNjQuanMnXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBtb2R1bGVzOntcclxuXHRCYXNlNjQsXHJcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xyXG5cdCAgdGl0bGU6J+eggeebmCcsXG4gICAgICBwYXJhbToge30sXHJcblx0ICBmb2N1c01hdGVyaWE6ZmFsc2UsXHJcblx0ICBoZWFkX3N0eWxlZGVmOntcclxuXHRcdGZvcm06e1xyXG5cdFx0XHRpdGVtczpbXVxyXG5cdFx0fVxyXG5cdCAgfSxcbiAgICAgIGRldGFpbDFfc3R5bGVkZWY6e30sXG4gICAgICBkZXRhaWwxU3R5bGVEZWZMaXN0OltdLFxuICAgICAgZGV0YWlsMl9zdHlsZWRlZjp7fSxcbiAgICAgIGRldGFpbDJTdHlsZURlZkxpc3Q6W10sXHJcblx0ICAvLyDliIbmrrXlmajmlbDmja5cclxuXHQgIGN1cnJlbnQ6IDAsXHJcblx0ICBpdGVtczogWyfmraPlnKjnoIHnm5gnLCAn5bey56CB55uYJ10sXG4gICAgfTtcbiAgfSxcclxuICBvbkxvYWQob3B0aW9ucykge1xyXG5cdC8vIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG5cdHVuaS5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoeyB0aXRsZTogb3B0aW9ucy50aXRsZW5hbWV9KTsgLy/orr7nva7pobbpg6jmoIfpopggXHJcblx0dGhpcy4kZGF0YS5wYXJhbSA9IEpTT04ucGFyc2Uob3B0aW9ucy5wYXJhbSk7XHJcblx0Ly8gY29uc29sZS5sb2codGhpcy4kZGF0YS5wYXJhbSk7XHJcblx0IC8v6I635Y+WQ0dfRGV0YWls77yI5omY55uY6LSn5ZOB6KGo77yJ5pWw5o2u57G755qE6Ieq5a6a5LmJ6KGo5Y2V5Y+C5pWwXHJcblx0dGhpcy5IZWFkX1VJU3R5bGVHZXRJbmZvKCdDR19EZXRhaWwnLHRoaXMuJGRhdGEucGFyYW0uSGVhZF9QYW5lbF9TdHlsZS5JRCk7XHJcblx0dGhpcy5EZXRhaWwxX1VJc3R5bGVHZXRJbmZvKCdDR19EZXRhaWwnLHRoaXMuJGRhdGEucGFyYW0uRGV0YWlsX0xpc3RfUGFuZWwxX1N0eWxlLklEKTtcclxuXHR0aGlzLkRldGFpbDJfVUlzdHlsZUdldEluZm8oJ0NHX0RldGFpbCcsdGhpcy4kZGF0YS5wYXJhbS5EZXRhaWxfTGlzdF9QYW5lbDJfU3R5bGUuSUQpO1xyXG5cdC8v6aG16Z2i5Yid5aeL5YyW6I635Y+W54Sm54K5XHJcblx0Ly8gdGhpcy5mb2N1c01hdGVyaWE9dHJ1ZTsgXHJcbiAgfSxcdFxuICBtZXRob2RzOiB7XG4gICAgYXN5bmMgSGVhZF9VSVN0eWxlR2V0SW5mbyhjbGFzc19pZCxzdHlsZV9pZCl7ICAgLy/ojrflj5boh6rlrprkuYnooajljZXmoLflvI9cclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZGF0YUluZm89e1xyXG5cdFx0XHRjbGFzc19pZDpjbGFzc19pZCxcclxuXHRcdFx0dWlfc3R5bGVfaWQ6c3R5bGVfaWQsXHJcblx0XHR9O1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ1VJU3R5bGVHZXRJbmZvJyxkYXRhSW5mbykudGhlbihyZXQ9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIHN0eWxlZGVmPVwiXCI7XHJcblx0XHRcdFx0aWYocmV0LnJlc3VsdC5zdHlsZV9kZWYpe1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDLnmoRzdHlsZV9kZWbmmK9qc29u5a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBzdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmLnJlcGxhY2UoL1xcXFwvZyxcIlwiKTtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gz55qEc3R5bGVfZGVm5pivYmFzZTY05a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBpZighcmV0LnJlc3VsdC5zdHlsZV9kZWYuaW5jbHVkZXMoJ1wiJykpIHN0eWxlZGVmID0gQmFzZTY0LmRlY29kZShyZXQucmVzdWx0LnN0eWxlX2RlZik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdCR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZj8gSlNPTi5wYXJzZShzdHlsZWRlZik6IHt9O1xyXG5cdFx0XHRcdC8vIHRoaXMuZm9ybSA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzFcIixjb250ZW50OnJldC5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHR9KTtcclxuICAgICAgICBcclxuICAgIH0sXG4gICAgYXN5bmMgRGV0YWlsMV9VSXN0eWxlR2V0SW5mbyhjbGFzc19pZCxzdHlsZV9pZCl7ICAgLy/ojrflj5boh6rlrprkuYnooajljZXmoLflvI9cclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZGF0YUluZm89e1xyXG5cdFx0XHRjbGFzc19pZDpjbGFzc19pZCxcclxuXHRcdFx0dWlfc3R5bGVfaWQ6c3R5bGVfaWQsXHJcblx0XHR9O1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ1VJU3R5bGVHZXRJbmZvJyxkYXRhSW5mbykudGhlbihyZXQ9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIHN0eWxlZGVmPVwiXCI7XHJcblx0XHRcdFx0aWYocmV0LnJlc3VsdC5zdHlsZV9kZWYpe1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDLnmoRzdHlsZV9kZWbmmK9qc29u5a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBzdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmLnJlcGxhY2UoL1xcXFwvZyxcIlwiKTtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gz55qEc3R5bGVfZGVm5pivYmFzZTY05a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBpZighcmV0LnJlc3VsdC5zdHlsZV9kZWYuaW5jbHVkZXMoJ1wiJykpIHN0eWxlZGVmID0gQmFzZTY0LmRlY29kZShyZXQucmVzdWx0LnN0eWxlX2RlZik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdCR0aGlzLiRkYXRhLmRldGFpbDFfc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZj8gSlNPTi5wYXJzZShzdHlsZWRlZik6IHt9O1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLmRldGFpbDFfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdC8vICR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaCgkdGhpcy4kZGF0YS5kZXRhaWwxX3N0eWxlZGVmKTtcclxuXHRcdFx0XHQvLyBsZXQgYWEgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmRldGFpbDFfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdC8vICR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaChKU09OLnBhcnNlKGFhKSk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdCk7XHJcblx0XHRcdFx0XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMlwiLGNvbnRlbnQ6cmV0LmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG4gICAgICAgIFxyXG4gICAgfSxcbiAgICBhc3luYyBEZXRhaWwyX1VJc3R5bGVHZXRJbmZvKGNsYXNzX2lkLHN0eWxlX2lkKXsgICAvL+iOt+WPluiHquWumuS5ieihqOWNleagt+W8j1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdGNsYXNzX2lkOmNsYXNzX2lkLFxyXG5cdFx0XHR1aV9zdHlsZV9pZDpzdHlsZV9pZCxcclxuXHRcdH07XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnVUlTdHlsZUdldEluZm8nLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgc3R5bGVkZWY9XCJcIjtcclxuXHRcdFx0XHRpZihyZXQucmVzdWx0LnN0eWxlX2RlZil7XHJcblx0XHRcdFx0ICAgICAvL21vYm94MueahHN0eWxlX2RlZuaYr2pzb27lrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIHN0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWYucmVwbGFjZSgvXFxcXC9nLFwiXCIpO1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDPnmoRzdHlsZV9kZWbmmK9iYXNlNjTlrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIGlmKCFyZXQucmVzdWx0LnN0eWxlX2RlZi5pbmNsdWRlcygnXCInKSkgc3R5bGVkZWYgPSBCYXNlNjQuZGVjb2RlKHJldC5yZXN1bHQuc3R5bGVfZGVmKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0JHRoaXMuJGRhdGEuZGV0YWlsMl9zdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmPyBKU09OLnBhcnNlKHN0eWxlZGVmKToge307XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEuZGV0YWlsMl9zdHlsZWRlZik7XHJcblx0XHRcdFx0XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vM1wiLGNvbnRlbnQ6cmV0LmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuXHRcclxuXHRvbnRhcChpdGVtKXsgLy/miavnoIHlip/og71cclxuXHRcdC8vIHZhciAkZWxlID0gZTtcclxuXHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXHJcblx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCk9PntcclxuXHRcdFx0Y29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xyXG5cdFx0XHRpdGVtLnZhbHVlID0gcmVzdWx0LmRlY29kZWRhdGE7XHJcblx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcclxuXHRcdFx0XHJcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdGNvbnNvbGUubG9nKGl0ZW0pO1xyXG5cdFx0XHRpZihpdGVtLm9sZHZhbHVlICE9IGl0ZW0udmFsdWUpe1xyXG5cdFx0XHQgICAgaXRlbS5vbGR2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0dmFyIGF0dHIgPSBpdGVtLmZpZWxkSWQ7XHJcblx0XHRcdFx0dGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0cl0gPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRcdHZhciBvbkNoYW5nZUV2ZW50ID0gaXRlbS5iaW5kLm9uQ2hhbmdlRXZlbnQ7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdFx0XHR2YXIgb25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQgPSBpdGVtLmJpbmQub25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQ7ICAgLy/lkI7lm77moIfngrnlh7vkuovku7ZcclxuXHRcdFx0XHR2YXIgb25TdWZmaXhDbGlja0V2ZW50ID0gaXRlbS5iaW5kLm9uU3VmZml4Q2xpY2tFdmVudDsgICAvL+WQjuWbvuagh+eCueWHu+Wbnuiwg1xyXG5cdFx0XHRcdHZhciBpc2ZsYWcgPSBmYWxzZTtcclxuXHRcdFx0XHRcclxuXHRcdFx0ICAgIGlmKG9uQ2hhbmdlRXZlbnQuaWQpeyAgIC8v5YaF5a655Y+Y5YyW5ZCO5LqL5Lu2XHJcblx0XHRcdCAgICAgICR0aGlzLm9uQ2hhbmdlKG9uQ2hhbmdlRXZlbnQpOyBcclxuXHRcdFx0ICAgIH1cclxuXHRcdFx0XHRpZihpdGVtLnZhbHVlKXsgLy/nrKzkuIDkuKrovpPlhaXmoYbkuI3kuLrnqbpcclxuXHRcdFx0XHRcdCR0aGlzLmZvY3VzTWF0ZXJpYSA9IHRydWU7IC8v5Yid5aeL5YyW77yM56ys5LqM5Liq6L6T5YWl5qGGZm9jdXPlsZ7mgKdcclxuXHRcdFx0XHRcdC8vIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcclxuXHRcdFx0XHRcdC8vIFx0JHRoaXMuZm9jdXNNYXRlcmlhPXRydWU7IC8v56ys5LqM5Liq6L6T5YWl5qGG6I635Y+W54Sm54K5XHJcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcclxuXHRcdFx0XHRcdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XHJcblx0XHRcdFx0XHRcdH0sMTAwKTtcclxuXHRcdFx0XHRcdC8vIH0sNTAwKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCAgICAvLyBpZihvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudC5pZCl7ICAgLy/lkI7lm77moIfngrnlh7vkuovku7ZcclxuXHRcdFx0ICAgIC8vICAgdGhpcy5vblN1ZmZpeENsaWNrKG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50KTtcclxuXHRcdFx0ICAgIC8vIH1cclxuXHRcdFx0ICAgIC8vIGlmKG9uU3VmZml4Q2xpY2tFdmVudC5pZCl7ICAgLy/lkI7lm77moIfngrnlh7vlm57osINcclxuXHRcdFx0ICAgIC8vICAgdGhpcy5vblN1ZmZpeENsaWNrQ2FsbGJhY2sob25TdWZmaXhDbGlja0V2ZW50KTtcclxuXHRcdFx0ICAgIC8vIH1cclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdG9uRW50ZXJDaGFuZ2UoaXRlbSl7IC8v5Zue6L2m77yM54K55Ye75oyJ6ZKu77yM5Y+W5raI6IqC54K55LqL5Lu2XHJcblx0XHQvLyBjb25zb2xlLmxvZyhpdGVtKTtcclxuXHRcdGlmKGl0ZW0ub2xkdmFsdWUgIT0gaXRlbS52YWx1ZSl7XHJcblx0XHQgICAgaXRlbS5vbGR2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdHZhciBhdHRyID0gaXRlbS5maWVsZElkO1xyXG5cdFx0XHR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdHZhciBvbkNoYW5nZUV2ZW50ID0gaXRlbS5iaW5kLm9uQ2hhbmdlRXZlbnQ7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdFx0dmFyIG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50ID0gaXRlbS5iaW5kLm9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50OyAgIC8v5ZCO5Zu+5qCH54K55Ye75LqL5Lu2XHJcblx0XHRcdHZhciBvblN1ZmZpeENsaWNrRXZlbnQgPSBpdGVtLmJpbmQub25TdWZmaXhDbGlja0V2ZW50OyAgIC8v5ZCO5Zu+5qCH54K55Ye75Zue6LCDXHJcblx0XHRcdHZhciBpc2ZsYWcgPSBmYWxzZTtcclxuXHRcdFx0XHJcblx0XHQgICAgaWYob25DaGFuZ2VFdmVudC5pZCl7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdCAgICAgIHRoaXMub25DaGFuZ2Uob25DaGFuZ2VFdmVudCk7IFxyXG5cdFx0ICAgIH1cclxuXHRcdCAgICAvLyBpZihvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudC5pZCl7ICAgLy/lkI7lm77moIfngrnlh7vkuovku7ZcclxuXHRcdCAgICAvLyAgIHRoaXMub25TdWZmaXhDbGljayhvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudCk7XHJcblx0XHQgICAgLy8gfVxyXG5cdFx0ICAgIC8vIGlmKG9uU3VmZml4Q2xpY2tFdmVudC5pZCl7ICAgLy/lkI7lm77moIfngrnlh7vlm57osINcclxuXHRcdCAgICAvLyAgIHRoaXMub25TdWZmaXhDbGlja0NhbGxiYWNrKG9uU3VmZml4Q2xpY2tFdmVudCk7XHJcblx0XHQgICAgLy8gfVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0Ly8g5YaF5a655Y+Y5YyW5ZCO5LqL5Lu2XHJcblx0YXN5bmMgb25DaGFuZ2UoZXZlbnQpIHtcclxuXHQgICAgdHJ5IHtcclxuXHQgICAgICAgIGlmIChldmVudC5pZCkge1xyXG5cdCAgICAgICAgICB2YXIgb2JqX2F0dHIgPSB0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbDtcclxuXHQgICAgICAgICAgLy8gY29uc29sZS5sb2cob2JqX2F0dHIpO1xyXG5cdCAgICAgICAgICB2YXIgaW5wdXRfcGFyYW0gPSBCYXNlNjQuZW5jb2RlKFxyXG5cdCAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KFxyXG5cdCAgICAgICAgICAgICAgT2JqZWN0LmtleXMob2JqX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHQgICAgICAgICAgICAgICAgYXR0cjogYSxcclxuXHQgICAgICAgICAgICAgICAgdmFsdWU6IG9ial9hdHRyW2FdIHx8IFwiXCIsXHJcblx0ICAgICAgICAgICAgICB9KSlcclxuXHQgICAgICAgICAgICApXHJcblx0ICAgICAgICAgICk7XHJcblx0XHRcdCAgdmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0ICB2YXIgZGF0YUluZm89e1xyXG5cdCAgICAgICAgICAgIGVkX3R5cGU6IDAsXHJcblx0XHRcdFx0c3RhcnRfdHJhbnNhY3Rpb246ICcnLFxyXG5cdCAgICAgICAgICAgIGNsYXNzX2lkOiB0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5jbHNJZCxcclxuXHRcdFx0XHRjbGFzc19uYW1lOiAnJyxcclxuXHQgICAgICAgICAgICBldmVudF9pZDogZXZlbnQuaWQsXHJcblx0XHRcdFx0ZXZlbnRfbmFtZTogJycsXHJcblx0XHRcdFx0ZGF0YV9vYmpfaWQ6ICcnLFxyXG5cdCAgICAgICAgICAgIG9ial9hdHRyOiBvYmpfYXR0cixcclxuXHRcdFx0XHRwcmpfaWQ6ICcnLFxyXG5cdFx0XHRcdHJlZl9jbHNfaWQ6ICcnLFxyXG5cdFx0XHRcdHJlbF9vYmpfaWQ6ICcnLFxyXG5cdFx0XHRcdHVzZXJfbG9naW46ICcnLFxyXG5cdFx0XHRcdGRhdGFfanNvbjogJycsXHJcblx0XHRcdFx0Y29tcG9zZV9pbmZvOiAnJyxcclxuXHRcdFx0XHRleHRfaW5mbzogJycsXHJcblx0XHRcdFx0Z2xvYmFsX2F0dHI6ICcnLFxyXG5cdCAgICAgICAgICAgIGlucHV0X3BhcmFtOiBpbnB1dF9wYXJhbSxcclxuXHQgICAgICAgICAgfTtcclxuXHRcdFx0ICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncnVuQ3VzdG9tRXZlbnQnLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdFx0XHQgIFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0ICBcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0dmFyIHJlc3VsdCA9IHJldC5yZXN1bHQ7IFxyXG5cdFx0XHRcdFx0aWYgKHJlc3VsdC5yZXQgIT0gMCkge1xyXG5cdFx0XHRcdFx0ICAgIHZhciB0aXAgPSByZXN1bHQuZXJyX2luZm8gPyB0eXBlb2YgcmVzdWx0LmVycl9pbmZvID09ICdzdHJpbmcnID8gcmVzdWx0LmVycl9pbmZvIDogcmVzdWx0LmVycl9pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHRcdCAgICBpZiAocmVzdWx0LnJldCA9PSA4MDEpIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0ICAgIGVsc2UgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXArJyzmj5DnpLo6JytyZXN1bHQucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2VcclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRsZXQgdGlwID0gcmVzdWx0LmluZm8gPyB0eXBlb2YgcmVzdWx0LmluZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuaW5mbyA6IHJlc3VsdC5pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHRcdFx0aWYgKHRpcCkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0aWYocmVzdWx0LnJlc3VsdF90eXBlID09IDAgJiYgcmVzdWx0LmFjdGlvbil7XHJcblx0XHRcdFx0XHRcdFx0cmVzdWx0LmFjdGlvbi5mb3JFYWNoKGl0ZW09PntcclxuXHRcdFx0XHRcdFx0XHRcdGlmKGl0ZW0uYWN0aW9uX3R5cGUgPT0gXCJpbnNlcnRfc3VidGFibGVfcGFnZV9yb3dcIil7IC8v56CB55uY5LitXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLnZpZXdBY2Vpb25Sb3codmFsdWUpO1xyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKGl0ZW0uYWN0aW9uX3R5cGUgPT0gXCJzZXRfc3VidGFibGVfcGFnZV9jb250ZW50XCIpeyAgLy/lt7LnoIHnm5hcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYodmFsdWUuY2xlYXIgPT0gdHJ1ZSAmJiAkdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0Lmxlbmd0aD4wKXsgLy/liKTmlq3mmK/lkKbmuIXnqbrpobXnrb7lhoXlrrks5q2j5Zyo56CB55uY5piv5ZCm5pyJ5pWw5o2uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ+aPkOekuicsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiAn57O757uf5qOA5rWL5Yiw5pyJ5q2j5Zyo56CB55uY5Lit55qE6LSn5ZOB77yM57un57ut5pON5L2c5Lya5riF56m677yM5piv5ZCm57un57ut77yfJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlcy5jb25maXJtKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgJHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAkdGhpcy4kZGF0YS5kZXRhaWwyU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICR0aGlzLnZpZXdBY2Vpb25Db250ZW50KHZhbHVlKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChyZXMuY2FuY2VsKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgJHRoaXMuJGRhdGEuZGV0YWlsMlN0eWxlRGVmTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAkdGhpcy52aWV3QWNlaW9uQ29udGVudCh2YWx1ZSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5kZXRhaWwyU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLnZpZXdBY2Vpb25Db250ZW50KHZhbHVlKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0XHQvLyB0aGlzLmRldGFpbDJTdHlsZURlZkxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0aWYocmVzdWx0LmluZm8pe1xyXG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor680LjNcIixjb250ZW50OnJlc3VsdC5pbmZvLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHQgIFx0XHRcclxuXHRcdFx0ICBcdH1lbHNle1xyXG5cdFx0XHQgIFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzRcIixjb250ZW50OnJldC5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHQgIFx0fVxyXG5cdFx0XHQgIH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdCAgXHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdCAgXHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzQuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHQgIH0pO1xyXG5cdCAgICAgICAgfVxyXG5cdCAgICB9IGNhdGNoIChleCkge1xyXG5cdCAgICAgICAgdmFyIHRpcCA9IHR5cGVvZiBleCA9PSBcInN0cmluZ1wiID8gZXggOiBleC5tZXNzYWdlO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzQuMlwiLGNvbnRlbnQ6XCLmiafooYzigJzlhoXlrrnlj5jljJblkI7igJ3kuovku7blpLHotKXvvJpcIiArIHRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHJcblx0ICAgIH1cclxuXHR9LFxyXG5cdC8v5Yqg6L295q2j5Zyo56CB55uY5YaF5a65XHJcblx0dmlld0FjZWlvblJvdyhkYXRhLHR5cGUpe1xyXG5cdFx0Ly8gY29uc29sZS5sb2coZGF0YSk7XHJcblx0ICAgIHZhciBzdHlsZVN0ciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZGV0YWlsMV9zdHlsZWRlZik7XHJcblx0XHRpZih0eXBlKXsgLy/noa7lrprlkI7ohJrmnKzov5vlhaXliqDovb3lt7LnoIHnm5jmlbDmja5cclxuXHRcdCAgICBzdHlsZVN0ciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZGV0YWlsMl9zdHlsZWRlZik7XHJcblx0XHR9XHJcblx0ICAgIHZhciBkZXRhaWxTdHlsZSA9IEpTT04ucGFyc2Uoc3R5bGVTdHIpO1xyXG5cdCAgICBkYXRhLnJvdy5hdHRycy5mb3JFYWNoKGF0dHI9PntcclxuXHQgICAgICAgIGRldGFpbFN0eWxlLmZvcm0uaXRlbXMuZm9yRWFjaChlbGU9PntcclxuXHQgICAgICAgICAgICBpZihlbGUubmFtZSE9J0xheW91dCcpe1xyXG5cdCAgICAgICAgICAgICAgaWYoZWxlLmZpZWxkSWQgPT0gYXR0ci5hdHRyKSBlbGUudmFsdWUgPSBhdHRyLnZhbHVlO1xyXG5cdCAgICAgICAgICAgIH0gZWxzZSBpZihlbGUubmFtZT09J0xheW91dCcpe1xyXG5cdCAgICAgICAgICAgICAgZWxlLnNldHRpbmcuY29sTGlzdC5mb3JFYWNoKGNvbD0+e1xyXG5cdCAgICAgICAgICAgICAgICBpZihjb2wpe1xyXG5cdCAgICAgICAgICAgICAgICAgIGlmKGNvbC5maWVsZElkID09IGF0dHIuYXR0cikgY29sLnZhbHVlID0gYXR0ci52YWx1ZTtcclxuXHQgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgfSk7XHJcblx0ICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgfSk7XHJcblx0ICAgIH0pO1xyXG5cdFx0aWYodHlwZSl7IC8v56Gu5a6a5ZCO6ISa5pys6L+b5YWl5Yqg6L295bey56CB55uY5pWw5o2uXHJcblx0XHQgICAgZGV0YWlsU3R5bGUuZm9ybS5vYmpJZCA9IGRhdGEucm93LmlkO1xyXG5cdFx0ICAgIHRoaXMuJGRhdGEuZGV0YWlsMlN0eWxlRGVmTGlzdC5wdXNoKGRldGFpbFN0eWxlKTtcclxuXHRcdCAgICAvLyBjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmRldGFpbDJTdHlsZURlZkxpc3QpO1xyXG5cdFx0fWVsc2V7XHJcblx0XHRcdGRldGFpbFN0eWxlLmZvcm0uYXR0cnMgPSBkYXRhLnJvdy5hdHRycztcclxuXHRcdFx0dGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0LnB1c2goZGV0YWlsU3R5bGUpO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QpO1xyXG5cdFx0fVxyXG5cdH0sXHJcblx0Ly/liqDovb3lt7LnoIHnm5jlhoXlrrlcclxuXHR2aWV3QWNlaW9uQ29udGVudChkYXRhKXtcclxuXHQgICAgZGF0YS5jb250ZW50LmZvckVhY2goY29udD0+e1xyXG5cdCAgICAgICAgdmFyIHN0eWxlU3RyID0gSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5kZXRhaWwyX3N0eWxlZGVmKTtcclxuXHQgICAgICAgIHZhciBkZXRhaWxTdHlsZSA9IEpTT04ucGFyc2Uoc3R5bGVTdHIpO1xyXG5cdCAgICAgICAgZGV0YWlsU3R5bGUuZm9ybS5vYmpJZCA9IGNvbnQuaWQ7XHJcblx0ICAgICAgICBjb250LmF0dHJzLmZvckVhY2goYXR0cj0+e1xyXG5cdCAgICAgICAgICBkZXRhaWxTdHlsZS5mb3JtLml0ZW1zLmZvckVhY2goZWxlPT57IFxyXG5cdCAgICAgICAgICAgIGlmKGVsZS5uYW1lIT0nTGF5b3V0Jyl7XHJcblx0ICAgICAgICAgICAgICBpZihlbGUuZmllbGRJZCA9PSBhdHRyLmF0dHIpIGVsZS52YWx1ZSA9IGF0dHIudmFsdWU7XHJcblx0ICAgICAgICAgICAgfSBlbHNlIGlmKGVsZS5uYW1lPT0nTGF5b3V0Jyl7XHJcblx0ICAgICAgICAgICAgICBlbGUuc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0ICAgICAgICAgICAgICAgIGlmKGNvbCl7XHJcblx0ICAgICAgICAgICAgICAgICAgaWYoY29sLmZpZWxkSWQgPT0gYXR0ci5hdHRyKSBjb2wudmFsdWUgPSBhdHRyLnZhbHVlO1xyXG5cdCAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICB9KTtcclxuXHQgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgIH0pO1xyXG5cdCAgICAgICAgfSk7XHJcblx0ICAgICAgICB0aGlzLiRkYXRhLmRldGFpbDJTdHlsZURlZkxpc3QucHVzaChkZXRhaWxTdHlsZSk7XHJcblx0ICAgIH0pO1xyXG5cdCAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZGV0YWlsMlN0eWxlRGVmTGlzdCk7XHJcblx0fSxcblx0b25DbGlja0l0ZW0oZSkgeyAvL+mAieaLqemhteetvlxyXG5cdFx0Ly8gY29uc29sZS5sb2coZSk7XHJcblx0XHR0aGlzLmN1cnJlbnQgPSBlLmN1cnJlbnRJbmRleFxyXG5cdH0sXHJcblx0b25EZXRhaWwxRW50ZXJDaGFuZ2UoaXRlbSl7ICAvL+eggeebmOS4reagt+W8j+Wbnui9puS6i+S7tlxyXG5cdCAgICBjb25zb2xlLmxvZyhpdGVtKTtcclxuXHR9LFxyXG5cdGRlbEl0ZW0oaW5kZXgpeyAgLy/liKDpmaTnoIHnm5jkuK3moLflvI/pnaLmnb9cclxuXHQgICAgdGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0LnNwbGljZShpbmRleCwxKTtcclxuXHR9LFxuICAgIGRlbERhdGFPYmooc3R5bGUsaW5kZXgpeyAgLy/liKDpmaTlt7LnoIHnm5jmlbBcbiAgICAgIC8vIGNvbnNvbGUubG9nKHN0eWxlKTtcclxuXHQgIHZhciAkdGhpcyA9IHRoaXM7XHJcblx0ICB1bmkuc2hvd01vZGFsKHtcclxuXHQgIFx0dGl0bGU6ICfmj5DnpLonLFxyXG5cdCAgXHRjb250ZW50OiAn56Gu5a6a5Yig6Zmk6K+l5bey56CB55uY5pWw5o2u77yBJyxcclxuXHQgIFx0c3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xyXG5cdCAgXHRcdGlmIChyZXMuY29uZmlybSkge1xyXG5cdFx0XHRcdHZhciBvYmpJRD1zdHlsZS5mb3JtLm9iaklkO1xyXG5cdFx0XHRcdGlmKCFzdHlsZS5mb3JtLm9iaklkLmluY2x1ZGVzKCd7JykpIG9iaklEID0gJ3snK3N0eWxlLmZvcm0ub2JqSWQrJ30nO1xyXG5cdFx0XHRcdCAgICAgICAgICBcclxuXHRcdFx0XHR2YXIgZGF0YUluZm89e1xuXHRcdFx0XHRcdGNsYXNzX2lkOnN0eWxlLmZvcm0uY2xzSWQsXHJcblx0XHRcdFx0XHRjbGFzc19uYW1lOicnLFxyXG5cdFx0XHRcdFx0b2JqX2lkOm9iaklEXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZGF0YU9iakRlbCcsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdCR0aGlzLmRldGFpbDJTdHlsZURlZkxpc3Quc3BsaWNlKGluZGV4LDEpO1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLliKDpmaTmiJDlip/vvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor681XCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor681LjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHR9KTtcclxuXHQgIFx0XHR9IGVsc2UgaWYgKHJlcy5jYW5jZWwpIHtcclxuXHRcdFx0XHRcclxuXHQgIFx0XHR9XHJcblx0ICBcdH1cclxuXHQgIH0pO1xuICAgICAgXG4gICAgfSxcclxuXHRcclxuXHRvaygpeyAvL+ehruWumlxyXG5cdFx0Ly8gdmFyICR0aGlzID0gdGhpcztcclxuXHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50KTtcclxuXHQgLy8gICAgY29uc29sZS5sb2codGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudCk7XHJcblx0ICAgIGlmKHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50KSAvL+aYr+WQpuacieehruWumuWJjeS6i+S7tlxyXG5cdCAgICAgICAgdGhpcy5zYXZhKHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50KTtcclxuXHQgICAgZWxzZSBpZih0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX09LX0V2ZW50KSAgLy/mmK/lkKbmnInnoa7lrprlkI7kuovku7ZcclxuXHQgICAgICAgIHRoaXMuc2F2YSh0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX09LX0V2ZW50KTtcclxuXHR9LFxyXG5cdHNhdmEoZXZlbnQpe1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHQgICAgaWYodGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0Lmxlbmd0aD09MCl7XHJcblx0ICAgICAgdW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi5rKh5pyJ5q2j5Zyo56CB55uY55qE5pWw5o2u77yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0ICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cdCAgICB9XHJcblx0ICAgIC8v6I635Y+W6KGo5aS05bGe5oCnXHJcblx0ICAgIHZhciBoZWFkX2F0dHIgPSB7fTtcclxuXHQgICAgdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuXHQgICAgICBoZWFkX2F0dHJbaXRlbS5maWVsZElkXSA9IGl0ZW0udmFsdWU7XHJcblx0ICAgIH0pO1xyXG5cdCAgICAvLyBjb25zb2xlLmxvZyhoZWFkX2F0dHIpO1xyXG5cdCAgICAvL+iOt+WPluato+WcqOeggeebmOWxnuaAp1xyXG5cdCAgICB2YXIgZGV0YWlsQXR0ckxpc3QgPSBbXTtcclxuXHQgICAgdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0LmZvckVhY2goc3R5bGU9PntcclxuXHQgICAgICB2YXIgZGV0YWlsX2F0dHI9e307XHJcblx0XHQgIHN0eWxlLmZvcm0uaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuXHQgICAgICAgIGlmKGl0ZW0ubmFtZSA9PSBcIkxheW91dFwiKXsgIC8v5Yik5pat5piv5ZCm5piv5qCF5qCP5qC85byPXHJcblx0ICAgICAgICAgIGl0ZW0uc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29scyA9PiB7XHJcblx0ICAgICAgICAgICAgaWYoY29scyE9bnVsbCkgZGV0YWlsX2F0dHJbY29scy5maWVsZElkXSA9IGNvbHMudmFsdWU7XHJcblx0ICAgICAgICAgIH0pO1xyXG5cdCAgICAgICAgfWVsc2VcclxuXHQgICAgICAgICAgZGV0YWlsX2F0dHJbaXRlbS5maWVsZElkXSA9IGl0ZW0udmFsdWU7XHJcblx0ICAgICAgfSk7XHJcblx0ICAgICAgZGV0YWlsQXR0ckxpc3QucHVzaChkZXRhaWxfYXR0cik7XHJcblx0ICAgIH0pO1xyXG5cdCAgICAvLyBjb25zb2xlLmxvZyhkZXRhaWxBdHRyTGlzdCk7XHJcblx0XHQvL+iOt+WPluato+WcqOeggeebmOmHjOayoeacieaYvuekuueahOWtl+autVxyXG5cdFx0dGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0LmZvckVhY2goc3R5bGU9PntcclxuXHRcdCAgc3R5bGUuZm9ybS5hdHRycy5mb3JFYWNoKGF0dHIgPT4ge1xyXG5cdFx0ICAgIGZvcih2YXIga2V5IGluIGRldGFpbEF0dHJMaXN0KXtcclxuXHRcdCAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMoZGV0YWlsQXR0ckxpc3Rba2V5XSk7XHJcblx0XHQgICAgICBsZXQgaXNmbGFnID0gdHJ1ZTtcclxuXHRcdCAgICAgIGtleXMuZm9yRWFjaCgoZWxlKSA9PiB7XHJcblx0XHQgICAgICAgIGlmKGVsZSA9PSBhdHRyLmF0dHIpIGlzZmxhZyA9IGZhbHNlO1xyXG5cdFx0ICAgICAgfSk7XHJcblx0XHQgICAgICBpZihpc2ZsYWcpIHtcclxuXHRcdCAgICAgICAgZGV0YWlsQXR0ckxpc3RbYXR0ci5hdHRyXSA9IGF0dHIudmFsdWU7XHJcblx0XHQgICAgICB9XHJcblx0XHQgICAgfSBcclxuXHRcdCAgfSk7XHJcblx0XHR9KTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKGRldGFpbEF0dHJMaXN0KTtcclxuXHQgLy8gICAgcmV0dXJuO1xyXG5cdFx0dmFyIGlucHV0X3BhcmFtID0gQmFzZTY0LmVuY29kZShcclxuXHRcdCAgICBKU09OLnN0cmluZ2lmeShcclxuXHRcdCAgICAgIE9iamVjdC5rZXlzKGhlYWRfYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdFx0ICAgICAgICBhdHRyOiBhLFxyXG5cdFx0ICAgICAgICB2YWx1ZTogaGVhZF9hdHRyW2FdIHx8IFwiXCIsXHJcblx0XHQgICAgICB9KSlcclxuXHRcdCAgICApXHJcblx0XHQpO1xyXG5cdFx0IHZhciBqc29ubGlzdD1bXTtcclxuXHRcdGRldGFpbEF0dHJMaXN0LmZvckVhY2goYXR0cj0+e1xyXG5cdFx0ICAgIGpzb25saXN0LnB1c2goe1xyXG5cdFx0ICAgICAgaWQ6JycsXHJcblx0XHQgICAgICBhdHRyczogT2JqZWN0LmtleXMoYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdFx0ICAgICAgICBhdHRyOiBhLFxyXG5cdFx0ICAgICAgICB2YWx1ZTogYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0ICAgICAgfSkpXHJcblx0XHQgICAgfSk7XHJcblx0XHR9KTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKGpzb25saXN0KTtcclxuXHRcdGpzb25saXN0LmZvckVhY2goYXN5bmMgKGpzb24sa2V5KT0+e1xyXG5cdFx0XHRhd2FpdCAkdGhpcy5ydW5DdXN0b21FdmVudChldmVudCxpbnB1dF9wYXJhbSxqc29uKTtcclxuXHRcdH0pO1xyXG5cdH0sXG4gICAgLy/miafooYznoa7lrprohJrmnKxcbiAgICBhc3luYyBydW5DdXN0b21FdmVudChldmVudCxpbnB1dF9wYXJhbSxqc29uKXtcclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZGF0YV9qc29uID0gQmFzZTY0LmVuY29kZShcclxuXHRcdCAgICBKU09OLnN0cmluZ2lmeShqc29uKVxyXG5cdFx0KTtcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHQgIGVkX3R5cGU6IDAsXHJcblx0XHQgIHN0YXJ0X3RyYW5zYWN0aW9uOiAnJyxcclxuXHRcdCAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLmNsc0lkLFxyXG5cdFx0ICBjbGFzc19uYW1lOiAnJyxcclxuXHRcdCAgZXZlbnRfaWQ6IHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQuSUQsXHJcblx0XHQgIGV2ZW50X25hbWU6ICcnLFxyXG5cdFx0ICBkYXRhX29ial9pZDogJycsXHJcblx0XHQgIG9ial9hdHRyOiAnJyxcclxuXHRcdCAgcHJqX2lkOiAnJyxcclxuXHRcdCAgcmVmX2Nsc19pZDogJycsXHJcblx0XHQgIHJlbF9vYmpfaWQ6ICcnLFxyXG5cdFx0ICB1c2VyX2xvZ2luOiAnJyxcclxuXHRcdCAgZGF0YV9qc29uOiBkYXRhX2pzb24sXHJcblx0XHQgIGNvbXBvc2VfaW5mbzogJycsXHJcblx0XHQgIGV4dF9pbmZvOiAnJyxcclxuXHRcdCAgZ2xvYmFsX2F0dHI6ICcnLFxyXG5cdFx0ICBpbnB1dF9wYXJhbTogaW5wdXRfcGFyYW0sXHJcblx0XHR9O1xyXG5cdFx0Ly8gY29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3J1bkN1c3RvbUV2ZW50JyxkYXRhSW5mbykudGhlbihyZXM9PntcclxuXHRcdFx0Y29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0aWYgKHJlcy5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIHJlc3VsdCA9IHJlcy5yZXN1bHQ7IFxyXG5cdFx0XHRcdGlmIChyZXN1bHQucmV0ICE9IDApIHtcclxuXHRcdFx0XHQgICAgdmFyIHRpcCA9IHJlc3VsdC5lcnJfaW5mbyA/IHR5cGVvZiByZXN1bHQuZXJyX2luZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuZXJyX2luZm8gOiByZXN1bHQuZXJyX2luZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdCAgICBpZiAocmVzdWx0LnJldCA9PSA4MDEpIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdCAgICBlbHNlIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwKycs5o+Q56S6OicrcmVzdWx0LnJldCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybiBmYWxzZVxyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0bGV0IHRpcCA9IHJlc3VsdC5pbmZvID8gdHlwZW9mIHJlc3VsdC5pbmZvID09ICdzdHJpbmcnID8gcmVzdWx0LmluZm8gOiByZXN1bHQuaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0XHRpZiAodGlwKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcdGlmKHJlc3VsdC5yZXN1bHRfdHlwZSA9PSAwKXtcclxuXHRcdFx0XHRcdCAgaWYocmVzdWx0LmFjdGlvbil7XHJcblx0XHRcdFx0XHRcdHJlc3VsdC5hY3Rpb24uZm9yRWFjaChpdGVtPT57XHJcblx0XHRcdFx0XHRcdCAgaWYoaXRlbS5hY3Rpb25fdHlwZSA9PSBcImluc2VydF9zdWJ0YWJsZV9wYWdlX3Jvd1wiKXsgLy/noIHnm5jkuK1cclxuXHRcdFx0XHRcdFx0XHR2YXIgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdC8v5Yqg6L295bey57uP56CB55uY5pWw5o2uXHJcblx0XHRcdFx0XHRcdFx0JHRoaXMudmlld0FjZWlvblJvdyh2YWx1ZSwnYWRkJyk7XHJcblx0XHRcdFx0XHRcdFx0Ly/muIXnqbrmnaHnoIHlhoXlrrlcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXMuZm9yRWFjaCgoaXRlbSxpbmRleCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYoaXRlbS5maWVsZElkICE9IFwiU19DTlRSX0NPREVcIil7XHJcblx0XHRcdFx0XHRcdFx0XHQgIGl0ZW0udmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdCAgaXRlbS5vbGR2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbaXRlbS5maWVsZElkXSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHQvL+a4hemZpOato+WcqOeggeebmOS4reaIkOWKn+eahOaVsOaNrlxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0LmZvckVhY2goKHN0eWxlLGluZGV4KT0+e1xuXHRcdFx0XHRcdFx0XHQgIGlmKHN0eWxlLmZvcm0uaXRlbXNbMF0uZmllbGRJZCA9PSBqc29uLmF0dHJzWzBdLmF0dHIgJiYgc3R5bGUuZm9ybS5pdGVtc1swXS52YWx1ZSA9PSBqc29uLmF0dHJzWzBdLnZhbHVlKXsgXG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdC5zcGxpY2UoaW5kZXgsMSk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHQgIH1cblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0Ly8gdGhpcy5kZXRhaWwyU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIueggeebmOaIkOWKn1wiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHQgIH1lbHNle1xyXG5cdFx0XHRcdFx0XHRpZigkdGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudC5JRCAhPSBldmVudC5JRCl7IC8v5Yik5pat5b2T5YmN5LqL5Lu25piv5ZCm5piv56Gu5a6a5ZCO5LqL5Lu2XHJcblx0XHRcdFx0XHRcdFx0JHRoaXMuc2F2YSgkdGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudCk7IC8v5omn6KGM56Gu5a6a5ZCO5LqL5Lu2XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdCAgfVxyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdC8vICR0aGlzLiRkYXRhLmRldGFpbDJTdHlsZURlZkxpc3Q9W107XHJcblx0XHRcdFx0XHRcdGlmKHJlc3VsdC5pbmZvKXtcclxuXHRcdFx0XHRcdFx0ICB1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6cmVzdWx0LmluZm8sc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vOFwiLGNvbnRlbnQ6cmVzLmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHQgICAgbGV0IHRpcCA9IHR5cGVvZiBleCA9PSBcInN0cmluZ1wiID8gZXggOiBleC5lcnJNc2c7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vOC4xXCIsY29udGVudDpcIuaJp+ihjOKAnOehruWumuWQjuKAneS6i+S7tuWksei0pe+8mlwiICsgdGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0fSxcclxuXHRcclxuXHRjYW5jZWwoZSl7IC8v5Y+W5raIXHJcblx0XHR1bmkubmF2aWdhdGVCYWNrKHtcclxuXHRcdFx0ZGVsdGE6MSAvL+i/lOWbnuWxguaVsO+8jDLliJnkuIrkuIrpobVcclxuXHRcdH0pO1xyXG5cdH0sXHJcbiAgfSxcbn07XG48L3NjcmlwdD5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///136\n");
+eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 57));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 59));\nvar _base = _interopRequireDefault(__webpack_require__(/*! ../../components/js-base64/base64.js */ 65));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  modules: {\n    Base64: _base.default\n  },\n  data: function data() {\n    return {\n      title: '鐮佺洏',\n      param: {},\n      focusMateria: false,\n      head_styledef: {\n        form: {\n          items: []\n        }\n      },\n      detail1_styledef: {},\n      detail1StyleDefList: [],\n      detail2_styledef: {},\n      detail2StyleDefList: [],\n      // 鍒嗘鍣ㄦ暟鎹甛n      current: 0,\n      items: ['姝e湪鐮佺洏', '宸茬爜鐩�]\n    };\n  },\n  onLoad: function onLoad(options) {\n    // console.log(options);\n    uni.setNavigationBarTitle({\n      title: options.titlename\n    }); //璁剧疆椤堕儴鏍囬 \n    this.$data.param = JSON.parse(options.param);\n    // console.log(this.$data.param);\n    //鑾峰彇CG_Detail锛堟墭鐩樿揣鍝佽〃锛夋暟鎹被鐨勮嚜瀹氫箟琛ㄥ崟鍙傛暟\n    this.Head_UIStyleGetInfo('CG_Detail', this.$data.param.Head_Panel_Style.ID);\n    this.Detail1_UIstyleGetInfo('CG_Detail', this.$data.param.Detail_List_Panel1_Style.ID);\n    this.Detail2_UIstyleGetInfo('CG_Detail', this.$data.param.Detail_List_Panel2_Style.ID);\n    //椤甸潰鍒濆鍖栬幏鍙栫劍鐐筡n    // this.focusMateria=true; \n  },\n\n  methods: {\n    Head_UIStyleGetInfo: function Head_UIStyleGetInfo(class_id, style_id) {\n      var _this = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n        var $this, dataInfo;\n        return _regenerator.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                //鑾峰彇鑷畾涔夎〃鍗曟牱寮廫n                $this = _this;\n                dataInfo = {\n                  class_id: class_id,\n                  ui_style_id: style_id\n                };\n                _this.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n                  // console.log(ret);\n                  if (ret.err_code == 0) {\n                    var styledef = \"\";\n                    if (ret.result.style_def) {\n                      //mobox2鐨剆tyle_def鏄痡son瀛楃涓瞈n                      styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n                      //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓瞈n                      if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n                    }\n                    $this.$data.head_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n                    // this.form = this.head_styledef.form.model;\n                    // console.log($this.$data.head_styledef);\n                  } else {\n                    uni.showModal({\n                      title: \"閿欒1\",\n                      content: ret.err_msg,\n                      showCancel: false,\n                      confirmText: \"鍙栨秷\"\n                    });\n                  }\n                }).catch(function (ex) {\n                  // console.log(ex);\n                  uni.showModal({\n                    title: \"閿欒1.1\",\n                    content: ex.errMsg,\n                    showCancel: false,\n                    confirmText: \"鍙栨秷\"\n                  });\n                });\n              case 3:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }))();\n    },\n    Detail1_UIstyleGetInfo: function Detail1_UIstyleGetInfo(class_id, style_id) {\n      var _this2 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n        var $this, dataInfo;\n        return _regenerator.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                //鑾峰彇鑷畾涔夎〃鍗曟牱寮廫n                $this = _this2;\n                dataInfo = {\n                  class_id: class_id,\n                  ui_style_id: style_id\n                };\n                _this2.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n                  // console.log(ret);\n                  if (ret.err_code == 0) {\n                    var styledef = \"\";\n                    if (ret.result.style_def) {\n                      //mobox2鐨剆tyle_def鏄痡son瀛楃涓瞈n                      styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n                      //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓瞈n                      if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n                    }\n                    $this.$data.detail1_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n                    // console.log($this.$data.detail1_styledef);\n                    // $this.$data.detail1StyleDefList.push($this.$data.detail1_styledef);\n                    // let aa = JSON.stringify(this.detail1_styledef);\n                    // $this.$data.detail1StyleDefList.push(JSON.parse(aa));\n                    // console.log($this.$data.detail1StyleDefList);\n                  } else {\n                    uni.showModal({\n                      title: \"閿欒2\",\n                      content: ret.err_msg,\n                      showCancel: false,\n                      confirmText: \"鍙栨秷\"\n                    });\n                  }\n                }).catch(function (ex) {\n                  // console.log(ex);\n                  uni.showModal({\n                    title: \"閿欒2.1\",\n                    content: ex.errMsg,\n                    showCancel: false,\n                    confirmText: \"鍙栨秷\"\n                  });\n                });\n              case 3:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2);\n      }))();\n    },\n    Detail2_UIstyleGetInfo: function Detail2_UIstyleGetInfo(class_id, style_id) {\n      var _this3 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n        var $this, dataInfo;\n        return _regenerator.default.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                //鑾峰彇鑷畾涔夎〃鍗曟牱寮廫n                $this = _this3;\n                dataInfo = {\n                  class_id: class_id,\n                  ui_style_id: style_id\n                };\n                _this3.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n                  // console.log(ret);\n                  if (ret.err_code == 0) {\n                    var styledef = \"\";\n                    if (ret.result.style_def) {\n                      //mobox2鐨剆tyle_def鏄痡son瀛楃涓瞈n                      styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n                      //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓瞈n                      if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n                    }\n                    $this.$data.detail2_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n                    // console.log($this.$data.detail2_styledef);\n                  } else {\n                    uni.showModal({\n                      title: \"閿欒3\",\n                      content: ret.err_msg,\n                      showCancel: false,\n                      confirmText: \"鍙栨秷\"\n                    });\n                  }\n                }).catch(function (ex) {\n                  // console.log(ex);\n                  uni.showModal({\n                    title: \"閿欒3.1\",\n                    content: ex.errMsg,\n                    showCancel: false,\n                    confirmText: \"鍙栨秷\"\n                  });\n                });\n              case 3:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3);\n      }))();\n    },\n    ontap: function ontap(item) {\n      var _this4 = this;\n      //鎵爜鍔熻兘\n      // var $ele = e;\n      //console.log(e.target)\n      getApp().onScan(function (result) {\n        __f__(\"log\", result.decodedata, \" at pages/modal/5600.vue:462\");\n        item.value = result.decodedata;\n        uni.hideKeyboard();\n        var $this = _this4;\n        __f__(\"log\", item, \" at pages/modal/5600.vue:467\");\n        if (item.oldvalue != item.value) {\n          item.oldvalue = item.value;\n          var attr = item.fieldId;\n          _this4.head_styledef.form.model[attr] = item.value;\n          var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠禱n          var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠禱n          var onSuffixClickEvent = item.bind.onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋僜n          var isflag = false;\n          if (onChangeEvent.id) {\n            //鍐呭鍙樺寲鍚庝簨浠禱n            $this.onChange(onChangeEvent);\n          }\n          if (item.value) {\n            //绗竴涓緭鍏ユ涓嶄负绌篭n            $this.focusMateria = true; //鍒濆鍖栵紝绗簩涓緭鍏ユfocus灞炴�\n            // setTimeout(function(){\n            // \t$this.focusMateria=true; //绗簩涓緭鍏ユ鑾峰彇鐒︾偣\n            setTimeout(function () {\n              uni.hideKeyboard();\n            }, 100);\n            // },500);\n          }\n          // if(onSuffixClickCallbackEvent.id){   //鍚庡浘鏍囩偣鍑讳簨浠禱n          //   this.onSuffixClick(onSuffixClickCallbackEvent);\n          // }\n          // if(onSuffixClickEvent.id){   //鍚庡浘鏍囩偣鍑诲洖璋僜n          //   this.onSuffixClickCallback(onSuffixClickEvent);\n          // }\n        }\n      });\n    },\n    onEnterChange: function onEnterChange(item) {\n      //鍥炶溅锛岀偣鍑绘寜閽紝鍙栨秷鑺傜偣浜嬩欢\n      // console.log(item);\n      if (item.oldvalue != item.value) {\n        item.oldvalue = item.value;\n        var attr = item.fieldId;\n        this.head_styledef.form.model[attr] = item.value;\n        var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠禱n        var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠禱n        var onSuffixClickEvent = item.bind.onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋僜n        var isflag = false;\n        if (onChangeEvent.id) {\n          //鍐呭鍙樺寲鍚庝簨浠禱n          this.onChange(onChangeEvent);\n        }\n        // if(onSuffixClickCallbackEvent.id){   //鍚庡浘鏍囩偣鍑讳簨浠禱n        //   this.onSuffixClick(onSuffixClickCallbackEvent);\n        // }\n        // if(onSuffixClickEvent.id){   //鍚庡浘鏍囩偣鍑诲洖璋僜n        //   this.onSuffixClickCallback(onSuffixClickEvent);\n        // }\n      }\n    },\n    // 鍐呭鍙樺寲鍚庝簨浠禱n    onChange: function onChange(event) {\n      var _this5 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n        var obj_attr, input_param, $this, dataInfo, tip;\n        return _regenerator.default.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                try {\n                  if (event.id) {\n                    obj_attr = _this5.head_styledef.form.model; // console.log(obj_attr);\n                    input_param = _base.default.encode(JSON.stringify(Object.keys(obj_attr).map(function (a) {\n                      return {\n                        attr: a,\n                        value: obj_attr[a] || \"\"\n                      };\n                    })));\n                    $this = _this5;\n                    dataInfo = {\n                      ed_type: 0,\n                      start_transaction: '',\n                      class_id: _this5.$data.head_styledef.form.clsId,\n                      class_name: '',\n                      event_id: event.id,\n                      event_name: '',\n                      data_obj_id: '',\n                      obj_attr: obj_attr,\n                      prj_id: '',\n                      ref_cls_id: '',\n                      rel_obj_id: '',\n                      user_login: '',\n                      data_json: '',\n                      compose_info: '',\n                      ext_info: '',\n                      global_attr: '',\n                      input_param: input_param\n                    };\n                    _this5.$store.dispatch('runCustomEvent', dataInfo).then(function (ret) {\n                      // console.log(ret);\n                      if (ret.err_code == 0) {\n                        var result = ret.result;\n                        if (result.ret != 0) {\n                          var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n                          if (result.ret == 801) uni.showModal({\n                            title: '鎻愮ず',\n                            content: tip,\n                            showCancel: false,\n                            confirmText: \"鍙栨秷\"\n                          });else uni.showModal({\n                            title: '鎻愮ず',\n                            content: tip + ',鎻愮ず:' + result.ret,\n                            showCancel: false,\n                            confirmText: \"鍙栨秷\"\n                          });\n                          return false;\n                        } else {\n                          var _tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n                          if (_tip) uni.showModal({\n                            title: '鎻愮ず',\n                            content: _tip,\n                            showCancel: false,\n                            confirmText: \"鍙栨秷\"\n                          });\n                          if (result.result_type == 0 && result.action) {\n                            result.action.forEach(function (item) {\n                              if (item.action_type == \"insert_subtable_page_row\") {\n                                //鐮佺洏涓璡n                                var value = item.value;\n                                $this.viewAceionRow(value);\n                              } else if (item.action_type == \"set_subtable_page_content\") {\n                                //宸茬爜鐩榎n                                var value = item.value;\n                                if (value.clear == true && $this.$data.detail1StyleDefList.length > 0) {\n                                  //鍒ゆ柇鏄惁娓呯┖椤电鍐呭,姝e湪鐮佺洏鏄惁鏈夋暟鎹甛n                                  uni.showModal({\n                                    title: '鎻愮ず',\n                                    content: '绯荤粺妫�祴鍒版湁姝e湪鐮佺洏涓殑璐у搧锛岀户缁搷浣滀細娓呯┖锛屾槸鍚︾户缁紵',\n                                    success: function success(res) {\n                                      if (res.confirm) {\n                                        $this.$data.detail1StyleDefList = [];\n                                        $this.$data.detail2StyleDefList = [];\n                                        $this.viewAceionContent(value);\n                                      } else if (res.cancel) {\n                                        $this.$data.detail2StyleDefList = [];\n                                        $this.viewAceionContent(value);\n                                      }\n                                    }\n                                  });\n                                } else {\n                                  $this.$data.detail2StyleDefList = [];\n                                  $this.viewAceionContent(value);\n                                }\n                              }\n                            });\n                          } else {\n                            // this.detail2StyleDefList=[];\n                            if (result.info) {\n                              uni.showModal({\n                                title: \"閿欒4.3\",\n                                content: result.info,\n                                showCancel: false,\n                                confirmText: \"鍙栨秷\"\n                              });\n                            }\n                          }\n                        }\n                      } else {\n                        uni.showModal({\n                          title: \"閿欒4\",\n                          content: ret.err_msg,\n                          showCancel: false,\n                          confirmText: \"鍙栨秷\"\n                        });\n                      }\n                    }).catch(function (ex) {\n                      // console.log(ex);\n                      uni.showModal({\n                        title: \"閿欒4.1\",\n                        content: ex.errMsg,\n                        showCancel: false,\n                        confirmText: \"鍙栨秷\"\n                      });\n                    });\n                  }\n                } catch (ex) {\n                  tip = typeof ex == \"string\" ? ex : ex.message;\n                  uni.showModal({\n                    title: \"閿欒4.2\",\n                    content: \"鎵ц鈥滃唴瀹瑰彉鍖栧悗鈥濅簨浠跺け璐ワ細\" + tip,\n                    showCancel: false,\n                    confirmText: \"鍙栨秷\"\n                  });\n                }\n              case 1:\n              case \"end\":\n                return _context4.stop();\n            }\n          }\n        }, _callee4);\n      }))();\n    },\n    //鍔犺浇姝e湪鐮佺洏鍐呭\n    viewAceionRow: function viewAceionRow(data, type) {\n      // console.log(data);\n      var styleStr = JSON.stringify(this.$data.detail1_styledef);\n      if (type) {\n        //纭畾鍚庤剼鏈繘鍏ュ姞杞藉凡鐮佺洏鏁版嵁\n        styleStr = JSON.stringify(this.$data.detail2_styledef);\n      }\n      var detailStyle = JSON.parse(styleStr);\n      data.row.attrs.forEach(function (attr) {\n        detailStyle.form.items.forEach(function (ele) {\n          if (ele.name != 'Layout') {\n            if (ele.fieldId == attr.attr) ele.value = attr.value;\n          } else if (ele.name == 'Layout') {\n            ele.setting.colList.forEach(function (col) {\n              if (col) {\n                if (col.fieldId == attr.attr) col.value = attr.value;\n              }\n            });\n          }\n        });\n      });\n      if (type) {\n        //纭畾鍚庤剼鏈繘鍏ュ姞杞藉凡鐮佺洏鏁版嵁\n        detailStyle.form.objId = data.row.id;\n        this.$data.detail2StyleDefList.push(detailStyle);\n        // console.log(this.$data.detail2StyleDefList);\n      } else {\n        detailStyle.form.attrs = data.row.attrs;\n        this.$data.detail1StyleDefList.push(detailStyle);\n        // console.log(this.$data.detail1StyleDefList);\n      }\n    },\n    //鍔犺浇宸茬爜鐩樺唴瀹筡n    viewAceionContent: function viewAceionContent(data) {\n      var _this6 = this;\n      data.content.forEach(function (cont) {\n        var styleStr = JSON.stringify(_this6.$data.detail2_styledef);\n        var detailStyle = JSON.parse(styleStr);\n        detailStyle.form.objId = cont.id;\n        cont.attrs.forEach(function (attr) {\n          detailStyle.form.items.forEach(function (ele) {\n            if (ele.name != 'Layout') {\n              if (ele.fieldId == attr.attr) ele.value = attr.value;\n            } else if (ele.name == 'Layout') {\n              ele.setting.colList.forEach(function (col) {\n                if (col) {\n                  if (col.fieldId == attr.attr) col.value = attr.value;\n                }\n              });\n            }\n          });\n        });\n        _this6.$data.detail2StyleDefList.push(detailStyle);\n      });\n      // console.log(this.detail2StyleDefList);\n    },\n    onClickItem: function onClickItem(e) {\n      //閫夋嫨椤电\n      // console.log(e);\n      this.current = e.currentIndex;\n    },\n    onDetail1EnterChange: function onDetail1EnterChange(item) {\n      //鐮佺洏涓牱寮忓洖杞︿簨浠禱n      __f__(\"log\", item, \" at pages/modal/5600.vue:676\");\n    },\n    delItem: function delItem(index) {\n      //鍒犻櫎鐮佺洏涓牱寮忛潰鏉縗n      this.detail1StyleDefList.splice(index, 1);\n    },\n    delDataObj: function delDataObj(style, index) {\n      //鍒犻櫎宸茬爜鐩樻暟\n      // console.log(style);\n      var $this = this;\n      uni.showModal({\n        title: '鎻愮ず',\n        content: '纭畾鍒犻櫎璇ュ凡鐮佺洏鏁版嵁锛�,\n        success: function success(res) {\n          if (res.confirm) {\n            var objID = style.form.objId;\n            if (!style.form.objId.includes('{')) objID = '{' + style.form.objId + '}';\n            var dataInfo = {\n              class_id: style.form.clsId,\n              class_name: '',\n              obj_id: objID\n            };\n            // console.log(dataInfo);\n            $this.$store.dispatch('dataObjDel', dataInfo).then(function (ret) {\n              // console.log(ret);\n              if (ret.err_code == 0) {\n                $this.detail2StyleDefList.splice(index, 1);\n                uni.showModal({\n                  title: \"鎻愮ず\",\n                  content: \"鍒犻櫎鎴愬姛锛乗",\n                  showCancel: false,\n                  confirmText: \"鍙栨秷\"\n                });\n              } else {\n                uni.showModal({\n                  title: \"閿欒5\",\n                  content: ret.err_msg,\n                  showCancel: false,\n                  confirmText: \"鍙栨秷\"\n                });\n              }\n            }).catch(function (ex) {\n              // console.log(ex);\n              uni.showModal({\n                title: \"閿欒5.1\",\n                content: ex.errMsg,\n                showCancel: false,\n                confirmText: \"鍙栨秷\"\n              });\n            });\n          } else if (res.cancel) {}\n        }\n      });\n    },\n    ok: function ok() {\n      //纭畾\n      // var $this = this;\n      // console.log(this.$data.param.Before_OK_Event);\n      //    console.log(this.$data.param.After_OK_Event);\n      if (this.$data.param.Before_OK_Event)\n        //鏄惁鏈夌‘瀹氬墠浜嬩欢\n        this.sava(this.$data.param.Before_OK_Event);else if (this.$data.param.After_OK_Event)\n        //鏄惁鏈夌‘瀹氬悗浜嬩欢\n        this.sava(this.$data.param.After_OK_Event);\n    },\n    sava: function sava(event) {\n      var $this = this;\n      if (this.$data.detail1StyleDefList.length == 0) {\n        uni.showModal({\n          title: \"鎻愮ず\",\n          content: \"娌℃湁姝e湪鐮佺洏鐨勬暟鎹紒\",\n          showCancel: false,\n          confirmText: \"鍙栨秷\"\n        });\n        return false;\n      }\n      //鑾峰彇琛ㄥご灞炴�\n      var head_attr = {};\n      this.$data.head_styledef.form.items.forEach(function (item) {\n        head_attr[item.fieldId] = item.value;\n      });\n      // console.log(head_attr);\n      //鑾峰彇姝e湪鐮佺洏灞炴�\n      var detailAttrList = [];\n      this.$data.detail1StyleDefList.forEach(function (style) {\n        var detail_attr = {};\n        style.form.items.forEach(function (item) {\n          if (item.name == \"Layout\") {\n            //鍒ゆ柇鏄惁鏄爡鏍忔牸寮廫n            item.setting.colList.forEach(function (cols) {\n              if (cols != null) detail_attr[cols.fieldId] = cols.value;\n            });\n          } else detail_attr[item.fieldId] = item.value;\n        });\n        detailAttrList.push(detail_attr);\n      });\n      // console.log(detailAttrList);\n      //鑾峰彇姝e湪鐮佺洏閲屾病鏈夋樉绀虹殑瀛楁\n      this.$data.detail1StyleDefList.forEach(function (style) {\n        style.form.attrs.forEach(function (attr) {\n          for (var key in detailAttrList) {\n            var keys = Object.keys(detailAttrList[key]);\n            var isflag = true;\n            keys.forEach(function (ele) {\n              if (ele == attr.attr) isflag = false;\n            });\n            if (isflag) {\n              detailAttrList[attr.attr] = attr.value;\n            }\n          }\n        });\n      });\n      // console.log(detailAttrList);\n      //    return;\n      var input_param = _base.default.encode(JSON.stringify(Object.keys(head_attr).map(function (a) {\n        return {\n          attr: a,\n          value: head_attr[a] || \"\"\n        };\n      })));\n      var jsonlist = [];\n      detailAttrList.forEach(function (attr) {\n        jsonlist.push({\n          id: '',\n          attrs: Object.keys(attr).map(function (a) {\n            return {\n              attr: a,\n              value: attr[a] || \"\"\n            };\n          })\n        });\n      });\n      // console.log(jsonlist);\n      jsonlist.forEach( /*#__PURE__*/function () {\n        var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(json, key) {\n          return _regenerator.default.wrap(function _callee5$(_context5) {\n            while (1) {\n              switch (_context5.prev = _context5.next) {\n                case 0:\n                  _context5.next = 2;\n                  return $this.runCustomEvent(event, input_param, json);\n                case 2:\n                case \"end\":\n                  return _context5.stop();\n              }\n            }\n          }, _callee5);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }());\n    },\n    //鎵ц纭畾鑴氭湰\n    runCustomEvent: function runCustomEvent(event, input_param, json) {\n      var _this7 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n        var $this, data_json, dataInfo;\n        return _regenerator.default.wrap(function _callee6$(_context6) {\n          while (1) {\n            switch (_context6.prev = _context6.next) {\n              case 0:\n                $this = _this7;\n                data_json = _base.default.encode(JSON.stringify(json));\n                dataInfo = {\n                  ed_type: 0,\n                  start_transaction: '',\n                  class_id: _this7.$data.head_styledef.form.clsId,\n                  class_name: '',\n                  event_id: _this7.$data.param.After_OK_Event.ID,\n                  event_name: '',\n                  data_obj_id: '',\n                  obj_attr: '',\n                  prj_id: '',\n                  ref_cls_id: '',\n                  rel_obj_id: '',\n                  user_login: '',\n                  data_json: data_json,\n                  compose_info: '',\n                  ext_info: '',\n                  global_attr: '',\n                  input_param: input_param\n                }; // console.log(dataInfo);\n                _this7.$store.dispatch('runCustomEvent', dataInfo).then(function (res) {\n                  __f__(\"log\", res, \" at pages/modal/5600.vue:822\");\n                  if (res.err_code == 0) {\n                    var result = res.result;\n                    if (result.ret != 0) {\n                      var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n                      if (result.ret == 801) uni.showModal({\n                        title: '鎻愮ず',\n                        content: tip,\n                        showCancel: false,\n                        confirmText: \"鍙栨秷\"\n                      });else uni.showModal({\n                        title: '鎻愮ず',\n                        content: tip + ',鎻愮ず:' + result.ret,\n                        showCancel: false,\n                        confirmText: \"鍙栨秷\"\n                      });\n                      return false;\n                    } else {\n                      var _tip2 = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n                      if (_tip2) uni.showModal({\n                        title: '鎻愮ず',\n                        content: _tip2,\n                        showCancel: false,\n                        confirmText: \"鍙栨秷\"\n                      });\n                      if (result.result_type == 0) {\n                        if (result.action) {\n                          result.action.forEach(function (item) {\n                            if (item.action_type == \"insert_subtable_page_row\") {\n                              //鐮佺洏涓璡n                              var value = item.value;\n                              //鍔犺浇宸茬粡鐮佺洏鏁版嵁\n                              $this.viewAceionRow(value, 'add');\n                              //娓呯┖鏉$爜鍐呭\n                              $this.$data.head_styledef.form.items.forEach(function (item, index) {\n                                if (item.fieldId != \"S_CNTR_CODE\") {\n                                  item.value = '';\n                                  item.oldvalue = '';\n                                  $this.$data.head_styledef.form.model[item.fieldId] = '';\n                                }\n                              });\n                              //娓呴櫎姝e湪鐮佺洏涓垚鍔熺殑鏁版嵁\n                              $this.$data.detail1StyleDefList.forEach(function (style, index) {\n                                if (style.form.items[0].fieldId == json.attrs[0].attr && style.form.items[0].value == json.attrs[0].value) {\n                                  $this.$data.detail1StyleDefList.splice(index, 1);\n                                  return;\n                                }\n                              });\n                              // this.detail2StyleDefList=[];\n                              uni.showModal({\n                                title: \"鎻愮ず\",\n                                content: \"鐮佺洏鎴愬姛\",\n                                showCancel: false,\n                                confirmText: \"鍙栨秷\"\n                              });\n                            }\n                          });\n                        } else {\n                          if ($this.$data.param.After_OK_Event.ID != event.ID) {\n                            //鍒ゆ柇褰撳墠浜嬩欢鏄惁鏄‘瀹氬悗浜嬩欢\n                            $this.sava($this.$data.param.After_OK_Event); //鎵ц纭畾鍚庝簨浠禱n                          }\n                        }\n                      } else {\n                        // $this.$data.detail2StyleDefList=[];\n                        if (result.info) {\n                          uni.showModal({\n                            title: \"鎻愮ず\",\n                            content: result.info,\n                            showCancel: false,\n                            confirmText: \"鍙栨秷\"\n                          });\n                        }\n                      }\n                    }\n                  } else {\n                    uni.showModal({\n                      title: \"閿欒8\",\n                      content: res.err_msg,\n                      showCancel: false,\n                      confirmText: \"鍙栨秷\"\n                    });\n                  }\n                }).catch(function (ex) {\n                  var tip = typeof ex == \"string\" ? ex : ex.errMsg;\n                  uni.showModal({\n                    title: \"閿欒8.1\",\n                    content: \"鎵ц鈥滅‘瀹氬悗鈥濅簨浠跺け璐ワ細\" + tip,\n                    showCancel: false,\n                    confirmText: \"鍙栨秷\"\n                  });\n                });\n              case 4:\n              case \"end\":\n                return _context6.stop();\n            }\n          }\n        }, _callee6);\n      }))();\n    },\n    cancel: function cancel(e) {\n      //鍙栨秷\n      uni.navigateBack({\n        delta: 1 //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\n      });\n    }\n  }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvNTYwMC52dWUiXSwibmFtZXMiOlsibW9kdWxlcyIsIkJhc2U2NCIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwiZm9jdXNNYXRlcmlhIiwiaGVhZF9zdHlsZWRlZiIsImZvcm0iLCJpdGVtcyIsImRldGFpbDFfc3R5bGVkZWYiLCJkZXRhaWwxU3R5bGVEZWZMaXN0IiwiZGV0YWlsMl9zdHlsZWRlZiIsImRldGFpbDJTdHlsZURlZkxpc3QiLCJjdXJyZW50Iiwib25Mb2FkIiwib3B0aW9ucyIsInVuaSIsInNldE5hdmlnYXRpb25CYXJUaXRsZSIsInRpdGxlbmFtZSIsIiRkYXRhIiwiSlNPTiIsInBhcnNlIiwiSGVhZF9VSVN0eWxlR2V0SW5mbyIsIkhlYWRfUGFuZWxfU3R5bGUiLCJJRCIsIkRldGFpbDFfVUlzdHlsZUdldEluZm8iLCJEZXRhaWxfTGlzdF9QYW5lbDFfU3R5bGUiLCJEZXRhaWwyX1VJc3R5bGVHZXRJbmZvIiwiRGV0YWlsX0xpc3RfUGFuZWwyX1N0eWxlIiwibWV0aG9kcyIsImNsYXNzX2lkIiwic3R5bGVfaWQiLCIkdGhpcyIsImRhdGFJbmZvIiwidWlfc3R5bGVfaWQiLCIkc3RvcmUiLCJkaXNwYXRjaCIsInRoZW4iLCJyZXQiLCJlcnJfY29kZSIsInN0eWxlZGVmIiwicmVzdWx0Iiwic3R5bGVfZGVmIiwicmVwbGFjZSIsImluY2x1ZGVzIiwiZGVjb2RlIiwic2hvd01vZGFsIiwiY29udGVudCIsImVycl9tc2ciLCJzaG93Q2FuY2VsIiwiY29uZmlybVRleHQiLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwib250YXAiLCJpdGVtIiwiZ2V0QXBwIiwib25TY2FuIiwiZGVjb2RlZGF0YSIsInZhbHVlIiwiaGlkZUtleWJvYXJkIiwib2xkdmFsdWUiLCJhdHRyIiwiZmllbGRJZCIsIm1vZGVsIiwib25DaGFuZ2VFdmVudCIsImJpbmQiLCJvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudCIsIm9uU3VmZml4Q2xpY2tFdmVudCIsImlzZmxhZyIsImlkIiwib25DaGFuZ2UiLCJzZXRUaW1lb3V0Iiwib25FbnRlckNoYW5nZSIsImV2ZW50Iiwib2JqX2F0dHIiLCJpbnB1dF9wYXJhbSIsImVuY29kZSIsInN0cmluZ2lmeSIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJhIiwiZWRfdHlwZSIsInN0YXJ0X3RyYW5zYWN0aW9uIiwiY2xzSWQiLCJjbGFzc19uYW1lIiwiZXZlbnRfaWQiLCJldmVudF9uYW1lIiwiZGF0YV9vYmpfaWQiLCJwcmpfaWQiLCJyZWZfY2xzX2lkIiwicmVsX29ial9pZCIsInVzZXJfbG9naW4iLCJkYXRhX2pzb24iLCJjb21wb3NlX2luZm8iLCJleHRfaW5mbyIsImdsb2JhbF9hdHRyIiwidGlwIiwiZXJyX2luZm8iLCJqb2luIiwiaW5mbyIsInJlc3VsdF90eXBlIiwiYWN0aW9uIiwiZm9yRWFjaCIsImFjdGlvbl90eXBlIiwidmlld0FjZWlvblJvdyIsImNsZWFyIiwibGVuZ3RoIiwic3VjY2VzcyIsInJlcyIsImNvbmZpcm0iLCJ2aWV3QWNlaW9uQ29udGVudCIsImNhbmNlbCIsIm1lc3NhZ2UiLCJ0eXBlIiwic3R5bGVTdHIiLCJkZXRhaWxTdHlsZSIsInJvdyIsImF0dHJzIiwiZWxlIiwibmFtZSIsInNldHRpbmciLCJjb2xMaXN0IiwiY29sIiwib2JqSWQiLCJwdXNoIiwiY29udCIsIm9uQ2xpY2tJdGVtIiwiZSIsImN1cnJlbnRJbmRleCIsIm9uRGV0YWlsMUVudGVyQ2hhbmdlIiwiZGVsSXRlbSIsImluZGV4Iiwic3BsaWNlIiwiZGVsRGF0YU9iaiIsInN0eWxlIiwib2JqSUQiLCJvYmpfaWQiLCJvayIsIkJlZm9yZV9PS19FdmVudCIsInNhdmEiLCJBZnRlcl9PS19FdmVudCIsImhlYWRfYXR0ciIsImRldGFpbEF0dHJMaXN0IiwiZGV0YWlsX2F0dHIiLCJjb2xzIiwia2V5IiwianNvbmxpc3QiLCJqc29uIiwicnVuQ3VzdG9tRXZlbnQiLCJuYXZpZ2F0ZUJhY2siLCJkZWx0YSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBMFVBO0FBMVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSxlQUdlO0VBQ2JBLE9BQU8sRUFBQztJQUNUQyxNQUFNLEVBQU5BO0VBQ0MsQ0FBQztFQUNEQyxJQUFJLGtCQUFHO0lBQ0wsT0FBTztNQUNSQyxLQUFLLEVBQUMsSUFBSTtNQUNQQyxLQUFLLEVBQUUsQ0FBQyxDQUFD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QUFNLENBQUM0RCxJQUFJLEVBQUM7MEJBQ2JyRixHQUFHLENBQUM4QixTQUFTLENBQUM7NEJBQUMzQyxLQUFLLEVBQUMsSUFBSTs0QkFBQzRDLE9BQU8sRUFBQ04sTUFBTSxDQUFDNEQsSUFBSTs0QkFBQ3BELFVBQVUsRUFBQyxLQUFLOzRCQUFDQyxXQUFXLEVBQUM7MEJBQUksQ0FBQyxDQUFDO3dCQUNuRjtzQkFDRDtvQkFDRDtrQkFDRCxDQUFDLE1BQUk7b0JBQ0psQyxHQUFHLENBQUM4QixTQUFTLENBQUM7c0JBQUMzQyxLQUFLLEVBQUMsS0FBSztzQkFBQzRDLE9BQU8sRUFBQytELEdBQUcsQ0FBQzlELE9BQU87c0JBQUNDLFVBQVUsRUFBQyxLQUFLO3NCQUFDQyxXQUFXLEVBQUM7b0JBQUksQ0FBQyxDQUFDO2tCQUNuRjtnQkFDRCxDQUFDLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLFVBQUFDLEVBQUUsRUFBRTtrQkFDVCxJQUFJOEMsR0FBRyxHQUFHLE9BQU85QyxFQUFFLElBQUksUUFBUSxHQUFHQSxFQUFFLEdBQUdBLEVBQUUsQ0FBQ0MsTUFBTTtrQkFDbkRyQyxHQUFHLENBQUM4QixTQUFTLENBQUM7b0JBQUMzQyxLQUFLLEVBQUMsT0FBTztvQkFBQzRDLE9BQU8sRUFBQyxjQUFjLEdBQUdtRCxHQUFHO29CQUFDakQsVUFBVSxFQUFDLEtBQUs7b0JBQUNDLFdBQVcsRUFBQztrQkFBSSxDQUFDLENBQUM7Z0JBQzlGLENBQUMsQ0FBQztjQUFDO2NBQUE7Z0JBQUE7WUFBQTtVQUFBO1FBQUE7TUFBQTtJQUNKLENBQUM7SUFFRCtELE1BQU0sa0JBQUNnQixDQUFDLEVBQUM7TUFBRTtNQUNWakgsR0FBRyxDQUFDdUksWUFBWSxDQUFDO1FBQ2hCQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO01BQ1QsQ0FBQyxDQUFDO0lBQ0g7RUFDQztBQUNGLENBQUM7QUFBQSwyQiIsImZpbGUiOiIxMzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG5cclxuaW1wb3J0IEJhc2U2NCBmcm9tICcuLi8uLi9jb21wb25lbnRzL2pzLWJhc2U2NC9iYXNlNjQuanMnXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBtb2R1bGVzOntcclxuXHRCYXNlNjQsXHJcbiAgfSxcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuXHQgIHRpdGxlOifnoIHnm5gnLFxyXG4gICAgICBwYXJhbToge30sXHJcblx0ICBmb2N1c01hdGVyaWE6ZmFsc2UsXHJcblx0ICBoZWFkX3N0eWxlZGVmOntcclxuXHRcdGZvcm06e1xyXG5cdFx0XHRpdGVtczpbXVxyXG5cdFx0fVxyXG5cdCAgfSxcclxuICAgICAgZGV0YWlsMV9zdHlsZWRlZjp7fSxcclxuICAgICAgZGV0YWlsMVN0eWxlRGVmTGlzdDpbXSxcclxuICAgICAgZGV0YWlsMl9zdHlsZWRlZjp7fSxcclxuICAgICAgZGV0YWlsMlN0eWxlRGVmTGlzdDpbXSxcclxuXHQgIC8vIOWIhuauteWZqOaVsOaNrlxyXG5cdCAgY3VycmVudDogMCxcclxuXHQgIGl0ZW1zOiBbJ+ato+WcqOeggeebmCcsICflt7LnoIHnm5gnXSxcclxuICAgIH07XHJcbiAgfSxcclxuICBvbkxvYWQob3B0aW9ucykge1xyXG5cdC8vIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG5cdHVuaS5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoeyB0aXRsZTogb3B0aW9ucy50aXRsZW5hbWV9KTsgLy/orr7nva7pobbpg6jmoIfpopggXHJcblx0dGhpcy4kZGF0YS5wYXJhbSA9IEpTT04ucGFyc2Uob3B0aW9ucy5wYXJhbSk7XHJcblx0Ly8gY29uc29sZS5sb2codGhpcy4kZGF0YS5wYXJhbSk7XHJcblx0IC8v6I635Y+WQ0dfRGV0YWls77yI5omY55uY6LSn5ZOB6KGo77yJ5pWw5o2u57G755qE6Ieq5a6a5LmJ6KGo5Y2V5Y+C5pWwXHJcblx0dGhpcy5IZWFkX1VJU3R5bGVHZXRJbmZvKCdDR19EZXRhaWwnLHRoaXMuJGRhdGEucGFyYW0uSGVhZF9QYW5lbF9TdHlsZS5JRCk7XHJcblx0dGhpcy5EZXRhaWwxX1VJc3R5bGVHZXRJbmZvKCdDR19EZXRhaWwnLHRoaXMuJGRhdGEucGFyYW0uRGV0YWlsX0xpc3RfUGFuZWwxX1N0eWxlLklEKTtcclxuXHR0aGlzLkRldGFpbDJfVUlzdHlsZUdldEluZm8oJ0NHX0RldGFpbCcsdGhpcy4kZGF0YS5wYXJhbS5EZXRhaWxfTGlzdF9QYW5lbDJfU3R5bGUuSUQpO1xyXG5cdC8v6aG16Z2i5Yid5aeL5YyW6I635Y+W54Sm54K5XHJcblx0Ly8gdGhpcy5mb2N1c01hdGVyaWE9dHJ1ZTsgXHJcbiAgfSxcdFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIGFzeW5jIEhlYWRfVUlTdHlsZUdldEluZm8oY2xhc3NfaWQsc3R5bGVfaWQpeyAgIC8v6I635Y+W6Ieq5a6a5LmJ6KGo5Y2V5qC35byPXHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdFx0Y2xhc3NfaWQ6Y2xhc3NfaWQsXHJcblx0XHRcdHVpX3N0eWxlX2lkOnN0eWxlX2lkLFxyXG5cdFx0fTtcclxuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdVSVN0eWxlR2V0SW5mbycsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHJldCk7XHJcblx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBzdHlsZWRlZj1cIlwiO1xyXG5cdFx0XHRcdGlmKHJldC5yZXN1bHQuc3R5bGVfZGVmKXtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gy55qEc3R5bGVfZGVm5pivanNvbuWtl+espuS4slxyXG5cdFx0XHRcdCAgICAgc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZi5yZXBsYWNlKC9cXFxcL2csXCJcIik7XHJcblx0XHRcdFx0ICAgICAvL21vYm94M+eahHN0eWxlX2RlZuaYr2Jhc2U2NOWtl+espuS4slxyXG5cdFx0XHRcdCAgICAgaWYoIXJldC5yZXN1bHQuc3R5bGVfZGVmLmluY2x1ZGVzKCdcIicpKSBzdHlsZWRlZiA9IEJhc2U2NC5kZWNvZGUocmV0LnJlc3VsdC5zdHlsZV9kZWYpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWY/IEpTT04ucGFyc2Uoc3R5bGVkZWYpOiB7fTtcclxuXHRcdFx0XHQvLyB0aGlzLmZvcm0gPSB0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbDtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmKTtcclxuXHRcdFx0XHRcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xXCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcbiAgICAgICAgXHJcbiAgICB9LFxyXG4gICAgYXN5bmMgRGV0YWlsMV9VSXN0eWxlR2V0SW5mbyhjbGFzc19pZCxzdHlsZV9pZCl7ICAgLy/ojrflj5boh6rlrprkuYnooajljZXmoLflvI9cclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZGF0YUluZm89e1xyXG5cdFx0XHRjbGFzc19pZDpjbGFzc19pZCxcclxuXHRcdFx0dWlfc3R5bGVfaWQ6c3R5bGVfaWQsXHJcblx0XHR9O1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ1VJU3R5bGVHZXRJbmZvJyxkYXRhSW5mbykudGhlbihyZXQ9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIHN0eWxlZGVmPVwiXCI7XHJcblx0XHRcdFx0aWYocmV0LnJlc3VsdC5zdHlsZV9kZWYpe1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDLnmoRzdHlsZV9kZWbmmK9qc29u5a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBzdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmLnJlcGxhY2UoL1xcXFwvZyxcIlwiKTtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gz55qEc3R5bGVfZGVm5pivYmFzZTY05a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBpZighcmV0LnJlc3VsdC5zdHlsZV9kZWYuaW5jbHVkZXMoJ1wiJykpIHN0eWxlZGVmID0gQmFzZTY0LmRlY29kZShyZXQucmVzdWx0LnN0eWxlX2RlZik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdCR0aGlzLiRkYXRhLmRldGFpbDFfc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZj8gSlNPTi5wYXJzZShzdHlsZWRlZik6IHt9O1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLmRldGFpbDFfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdC8vICR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaCgkdGhpcy4kZGF0YS5kZXRhaWwxX3N0eWxlZGVmKTtcclxuXHRcdFx0XHQvLyBsZXQgYWEgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmRldGFpbDFfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdC8vICR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaChKU09OLnBhcnNlKGFhKSk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdCk7XHJcblx0XHRcdFx0XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMlwiLGNvbnRlbnQ6cmV0LmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuICAgIGFzeW5jIERldGFpbDJfVUlzdHlsZUdldEluZm8oY2xhc3NfaWQsc3R5bGVfaWQpeyAgIC8v6I635Y+W6Ieq5a6a5LmJ6KGo5Y2V5qC35byPXHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdFx0Y2xhc3NfaWQ6Y2xhc3NfaWQsXHJcblx0XHRcdHVpX3N0eWxlX2lkOnN0eWxlX2lkLFxyXG5cdFx0fTtcclxuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdVSVN0eWxlR2V0SW5mbycsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHJldCk7XHJcblx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBzdHlsZWRlZj1cIlwiO1xyXG5cdFx0XHRcdGlmKHJldC5yZXN1bHQuc3R5bGVfZGVmKXtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gy55qEc3R5bGVfZGVm5pivanNvbuWtl+espuS4slxyXG5cdFx0XHRcdCAgICAgc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZi5yZXBsYWNlKC9cXFxcL2csXCJcIik7XHJcblx0XHRcdFx0ICAgICAvL21vYm94M+eahHN0eWxlX2RlZuaYr2Jhc2U2NOWtl+espuS4slxyXG5cdFx0XHRcdCAgICAgaWYoIXJldC5yZXN1bHQuc3R5bGVfZGVmLmluY2x1ZGVzKCdcIicpKSBzdHlsZWRlZiA9IEJhc2U2NC5kZWNvZGUocmV0LnJlc3VsdC5zdHlsZV9kZWYpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQkdGhpcy4kZGF0YS5kZXRhaWwyX3N0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWY/IEpTT04ucGFyc2Uoc3R5bGVkZWYpOiB7fTtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kZGF0YS5kZXRhaWwyX3N0eWxlZGVmKTtcclxuXHRcdFx0XHRcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zXCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzMuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcbiAgICAgICAgXHJcbiAgICB9LFxyXG5cdFxyXG5cdG9udGFwKGl0ZW0peyAvL+aJq+eggeWKn+iDvVxyXG5cdFx0Ly8gdmFyICRlbGUgPSBlO1xyXG5cdFx0Ly9jb25zb2xlLmxvZyhlLnRhcmdldClcclxuXHRcdGdldEFwcCgpLm9uU2NhbigocmVzdWx0KT0+e1xyXG5cdFx0XHRjb25zb2xlLmxvZyhyZXN1bHQuZGVjb2RlZGF0YSk7XHJcblx0XHRcdGl0ZW0udmFsdWUgPSByZXN1bHQuZGVjb2RlZGF0YTtcclxuXHRcdFx0dW5pLmhpZGVLZXlib2FyZCgpO1xyXG5cdFx0XHRcclxuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0Y29uc29sZS5sb2coaXRlbSk7XHJcblx0XHRcdGlmKGl0ZW0ub2xkdmFsdWUgIT0gaXRlbS52YWx1ZSl7XHJcblx0XHRcdCAgICBpdGVtLm9sZHZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0XHR2YXIgYXR0ciA9IGl0ZW0uZmllbGRJZDtcclxuXHRcdFx0XHR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0dmFyIG9uQ2hhbmdlRXZlbnQgPSBpdGVtLmJpbmQub25DaGFuZ2VFdmVudDsgICAvL+WGheWuueWPmOWMluWQjuS6i+S7tlxyXG5cdFx0XHRcdHZhciBvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudCA9IGl0ZW0uYmluZC5vblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudDsgICAvL+WQjuWbvuagh+eCueWHu+S6i+S7tlxyXG5cdFx0XHRcdHZhciBvblN1ZmZpeENsaWNrRXZlbnQgPSBpdGVtLmJpbmQub25TdWZmaXhDbGlja0V2ZW50OyAgIC8v5ZCO5Zu+5qCH54K55Ye75Zue6LCDXHJcblx0XHRcdFx0dmFyIGlzZmxhZyA9IGZhbHNlO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHQgICAgaWYob25DaGFuZ2VFdmVudC5pZCl7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdFx0ICAgICAgJHRoaXMub25DaGFuZ2Uob25DaGFuZ2VFdmVudCk7IFxyXG5cdFx0XHQgICAgfVxyXG5cdFx0XHRcdGlmKGl0ZW0udmFsdWUpeyAvL+esrOS4gOS4qui+k+WFpeahhuS4jeS4uuepulxyXG5cdFx0XHRcdFx0JHRoaXMuZm9jdXNNYXRlcmlhID0gdHJ1ZTsgLy/liJ3lp4vljJbvvIznrKzkuozkuKrovpPlhaXmoYZmb2N1c+WxnuaAp1xyXG5cdFx0XHRcdFx0Ly8gc2V0VGltZW91dChmdW5jdGlvbigpe1xyXG5cdFx0XHRcdFx0Ly8gXHQkdGhpcy5mb2N1c01hdGVyaWE9dHJ1ZTsgLy/nrKzkuozkuKrovpPlhaXmoYbojrflj5bnhKbngrlcclxuXHRcdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpe1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcclxuXHRcdFx0XHRcdFx0fSwxMDApO1xyXG5cdFx0XHRcdFx0Ly8gfSw1MDApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0ICAgIC8vIGlmKG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50LmlkKXsgICAvL+WQjuWbvuagh+eCueWHu+S6i+S7tlxyXG5cdFx0XHQgICAgLy8gICB0aGlzLm9uU3VmZml4Q2xpY2sob25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQpO1xyXG5cdFx0XHQgICAgLy8gfVxyXG5cdFx0XHQgICAgLy8gaWYob25TdWZmaXhDbGlja0V2ZW50LmlkKXsgICAvL+WQjuWbvuagh+eCueWHu+Wbnuiwg1xyXG5cdFx0XHQgICAgLy8gICB0aGlzLm9uU3VmZml4Q2xpY2tDYWxsYmFjayhvblN1ZmZpeENsaWNrRXZlbnQpO1xyXG5cdFx0XHQgICAgLy8gfVxyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH0sXHJcblx0b25FbnRlckNoYW5nZShpdGVtKXsgLy/lm57ovabvvIzngrnlh7vmjInpkq7vvIzlj5bmtojoioLngrnkuovku7ZcclxuXHRcdC8vIGNvbnNvbGUubG9nKGl0ZW0pO1xyXG5cdFx0aWYoaXRlbS5vbGR2YWx1ZSAhPSBpdGVtLnZhbHVlKXtcclxuXHRcdCAgICBpdGVtLm9sZHZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0dmFyIGF0dHIgPSBpdGVtLmZpZWxkSWQ7XHJcblx0XHRcdHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0dmFyIG9uQ2hhbmdlRXZlbnQgPSBpdGVtLmJpbmQub25DaGFuZ2VFdmVudDsgICAvL+WGheWuueWPmOWMluWQjuS6i+S7tlxyXG5cdFx0XHR2YXIgb25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQgPSBpdGVtLmJpbmQub25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQ7ICAgLy/lkI7lm77moIfngrnlh7vkuovku7ZcclxuXHRcdFx0dmFyIG9uU3VmZml4Q2xpY2tFdmVudCA9IGl0ZW0uYmluZC5vblN1ZmZpeENsaWNrRXZlbnQ7ICAgLy/lkI7lm77moIfngrnlh7vlm57osINcclxuXHRcdFx0dmFyIGlzZmxhZyA9IGZhbHNlO1xyXG5cdFx0XHRcclxuXHRcdCAgICBpZihvbkNoYW5nZUV2ZW50LmlkKXsgICAvL+WGheWuueWPmOWMluWQjuS6i+S7tlxyXG5cdFx0ICAgICAgdGhpcy5vbkNoYW5nZShvbkNoYW5nZUV2ZW50KTsgXHJcblx0XHQgICAgfVxyXG5cdFx0ICAgIC8vIGlmKG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50LmlkKXsgICAvL+WQjuWbvuagh+eCueWHu+S6i+S7tlxyXG5cdFx0ICAgIC8vICAgdGhpcy5vblN1ZmZpeENsaWNrKG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50KTtcclxuXHRcdCAgICAvLyB9XHJcblx0XHQgICAgLy8gaWYob25TdWZmaXhDbGlja0V2ZW50LmlkKXsgICAvL+WQjuWbvuagh+eCueWHu+Wbnuiwg1xyXG5cdFx0ICAgIC8vICAgdGhpcy5vblN1ZmZpeENsaWNrQ2FsbGJhY2sob25TdWZmaXhDbGlja0V2ZW50KTtcclxuXHRcdCAgICAvLyB9XHJcblx0XHR9XHJcblx0fSxcclxuXHQvLyDlhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRhc3luYyBvbkNoYW5nZShldmVudCkge1xyXG5cdCAgICB0cnkge1xyXG5cdCAgICAgICAgaWYgKGV2ZW50LmlkKSB7XHJcblx0ICAgICAgICAgIHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdCAgICAgICAgICAvLyBjb25zb2xlLmxvZyhvYmpfYXR0cik7XHJcblx0ICAgICAgICAgIHZhciBpbnB1dF9wYXJhbSA9IEJhc2U2NC5lbmNvZGUoXHJcblx0ICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoXHJcblx0ICAgICAgICAgICAgICBPYmplY3Qua2V5cyhvYmpfYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdCAgICAgICAgICAgICAgICBhdHRyOiBhLFxyXG5cdCAgICAgICAgICAgICAgICB2YWx1ZTogb2JqX2F0dHJbYV0gfHwgXCJcIixcclxuXHQgICAgICAgICAgICAgIH0pKVxyXG5cdCAgICAgICAgICAgIClcclxuXHQgICAgICAgICAgKTtcclxuXHRcdFx0ICB2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHQgIHZhciBkYXRhSW5mbz17XHJcblx0ICAgICAgICAgICAgZWRfdHlwZTogMCxcclxuXHRcdFx0XHRzdGFydF90cmFuc2FjdGlvbjogJycsXHJcblx0ICAgICAgICAgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLmNsc0lkLFxyXG5cdFx0XHRcdGNsYXNzX25hbWU6ICcnLFxyXG5cdCAgICAgICAgICAgIGV2ZW50X2lkOiBldmVudC5pZCxcclxuXHRcdFx0XHRldmVudF9uYW1lOiAnJyxcclxuXHRcdFx0XHRkYXRhX29ial9pZDogJycsXHJcblx0ICAgICAgICAgICAgb2JqX2F0dHI6IG9ial9hdHRyLFxyXG5cdFx0XHRcdHByal9pZDogJycsXHJcblx0XHRcdFx0cmVmX2Nsc19pZDogJycsXHJcblx0XHRcdFx0cmVsX29ial9pZDogJycsXHJcblx0XHRcdFx0dXNlcl9sb2dpbjogJycsXHJcblx0XHRcdFx0ZGF0YV9qc29uOiAnJyxcclxuXHRcdFx0XHRjb21wb3NlX2luZm86ICcnLFxyXG5cdFx0XHRcdGV4dF9pbmZvOiAnJyxcclxuXHRcdFx0XHRnbG9iYWxfYXR0cjogJycsXHJcblx0ICAgICAgICAgICAgaW5wdXRfcGFyYW06IGlucHV0X3BhcmFtLFxyXG5cdCAgICAgICAgICB9O1xyXG5cdFx0XHQgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdydW5DdXN0b21FdmVudCcsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdCAgXHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHQgIFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gcmV0LnJlc3VsdDsgXHJcblx0XHRcdFx0XHRpZiAocmVzdWx0LnJldCAhPSAwKSB7XHJcblx0XHRcdFx0XHQgICAgdmFyIHRpcCA9IHJlc3VsdC5lcnJfaW5mbyA/IHR5cGVvZiByZXN1bHQuZXJyX2luZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuZXJyX2luZm8gOiByZXN1bHQuZXJyX2luZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdFx0ICAgIGlmIChyZXN1bHQucmV0ID09IDgwMSkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHQgICAgZWxzZSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCsnLOaPkOekujonK3Jlc3VsdC5yZXQsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZVxyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdGxldCB0aXAgPSByZXN1bHQuaW5mbyA/IHR5cGVvZiByZXN1bHQuaW5mbyA9PSAnc3RyaW5nJyA/IHJlc3VsdC5pbmZvIDogcmVzdWx0LmluZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdFx0XHRpZiAodGlwKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRpZihyZXN1bHQucmVzdWx0X3R5cGUgPT0gMCAmJiByZXN1bHQuYWN0aW9uKXtcclxuXHRcdFx0XHRcdFx0XHRyZXN1bHQuYWN0aW9uLmZvckVhY2goaXRlbT0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYoaXRlbS5hY3Rpb25fdHlwZSA9PSBcImluc2VydF9zdWJ0YWJsZV9wYWdlX3Jvd1wiKXsgLy/noIHnm5jkuK1cclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMudmlld0FjZWlvblJvdyh2YWx1ZSk7XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYoaXRlbS5hY3Rpb25fdHlwZSA9PSBcInNldF9zdWJ0YWJsZV9wYWdlX2NvbnRlbnRcIil7ICAvL+W3sueggeebmFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZih2YWx1ZS5jbGVhciA9PSB0cnVlICYmICR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QubGVuZ3RoPjApeyAvL+WIpOaWreaYr+WQpua4heepuumhteetvuWGheWuuSzmraPlnKjnoIHnm5jmmK/lkKbmnInmlbDmja5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAn5o+Q56S6JyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6ICfns7vnu5/mo4DmtYvliLDmnInmraPlnKjnoIHnm5jkuK3nmoTotKflk4HvvIznu6fnu63mk43kvZzkvJrmuIXnqbrvvIzmmK/lkKbnu6fnu63vvJ8nLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzLmNvbmZpcm0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAkdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICR0aGlzLiRkYXRhLmRldGFpbDJTdHlsZURlZkxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgJHRoaXMudmlld0FjZWlvbkNvbnRlbnQodmFsdWUpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHJlcy5jYW5jZWwpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAkdGhpcy4kZGF0YS5kZXRhaWwyU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICR0aGlzLnZpZXdBY2Vpb25Db250ZW50KHZhbHVlKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmRldGFpbDJTdHlsZURlZkxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMudmlld0FjZWlvbkNvbnRlbnQodmFsdWUpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdC8vIHRoaXMuZGV0YWlsMlN0eWxlRGVmTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRpZihyZXN1bHQuaW5mbyl7XHJcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzQuM1wiLGNvbnRlbnQ6cmVzdWx0LmluZm8sc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdCAgXHRcdFxyXG5cdFx0XHQgIFx0fWVsc2V7XHJcblx0XHRcdCAgXHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNFwiLGNvbnRlbnQ6cmV0LmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdCAgXHR9XHJcblx0XHRcdCAgfSkuY2F0Y2goZXg9PntcclxuXHRcdFx0ICBcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0ICBcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNC4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdCAgfSk7XHJcblx0ICAgICAgICB9XHJcblx0ICAgIH0gY2F0Y2ggKGV4KSB7XHJcblx0ICAgICAgICB2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNC4yXCIsY29udGVudDpcIuaJp+ihjOKAnOWGheWuueWPmOWMluWQjuKAneS6i+S7tuWksei0pe+8mlwiICsgdGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcclxuXHQgICAgfVxyXG5cdH0sXHJcblx0Ly/liqDovb3mraPlnKjnoIHnm5jlhoXlrrlcclxuXHR2aWV3QWNlaW9uUm93KGRhdGEsdHlwZSl7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhkYXRhKTtcclxuXHQgICAgdmFyIHN0eWxlU3RyID0gSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5kZXRhaWwxX3N0eWxlZGVmKTtcclxuXHRcdGlmKHR5cGUpeyAvL+ehruWumuWQjuiEmuacrOi/m+WFpeWKoOi9veW3sueggeebmOaVsOaNrlxyXG5cdFx0ICAgIHN0eWxlU3RyID0gSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5kZXRhaWwyX3N0eWxlZGVmKTtcclxuXHRcdH1cclxuXHQgICAgdmFyIGRldGFpbFN0eWxlID0gSlNPTi5wYXJzZShzdHlsZVN0cik7XHJcblx0ICAgIGRhdGEucm93LmF0dHJzLmZvckVhY2goYXR0cj0+e1xyXG5cdCAgICAgICAgZGV0YWlsU3R5bGUuZm9ybS5pdGVtcy5mb3JFYWNoKGVsZT0+e1xyXG5cdCAgICAgICAgICAgIGlmKGVsZS5uYW1lIT0nTGF5b3V0Jyl7XHJcblx0ICAgICAgICAgICAgICBpZihlbGUuZmllbGRJZCA9PSBhdHRyLmF0dHIpIGVsZS52YWx1ZSA9IGF0dHIudmFsdWU7XHJcblx0ICAgICAgICAgICAgfSBlbHNlIGlmKGVsZS5uYW1lPT0nTGF5b3V0Jyl7XHJcblx0ICAgICAgICAgICAgICBlbGUuc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0ICAgICAgICAgICAgICAgIGlmKGNvbCl7XHJcblx0ICAgICAgICAgICAgICAgICAgaWYoY29sLmZpZWxkSWQgPT0gYXR0ci5hdHRyKSBjb2wudmFsdWUgPSBhdHRyLnZhbHVlO1xyXG5cdCAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICB9KTtcclxuXHQgICAgICAgICAgICB9XHJcblx0ICAgICAgICB9KTtcclxuXHQgICAgfSk7XHJcblx0XHRpZih0eXBlKXsgLy/noa7lrprlkI7ohJrmnKzov5vlhaXliqDovb3lt7LnoIHnm5jmlbDmja5cclxuXHRcdCAgICBkZXRhaWxTdHlsZS5mb3JtLm9iaklkID0gZGF0YS5yb3cuaWQ7XHJcblx0XHQgICAgdGhpcy4kZGF0YS5kZXRhaWwyU3R5bGVEZWZMaXN0LnB1c2goZGV0YWlsU3R5bGUpO1xyXG5cdFx0ICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuZGV0YWlsMlN0eWxlRGVmTGlzdCk7XHJcblx0XHR9ZWxzZXtcclxuXHRcdFx0ZGV0YWlsU3R5bGUuZm9ybS5hdHRycyA9IGRhdGEucm93LmF0dHJzO1xyXG5cdFx0XHR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaChkZXRhaWxTdHlsZSk7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdCk7XHJcblx0XHR9XHJcblx0fSxcclxuXHQvL+WKoOi9veW3sueggeebmOWGheWuuVxyXG5cdHZpZXdBY2Vpb25Db250ZW50KGRhdGEpe1xyXG5cdCAgICBkYXRhLmNvbnRlbnQuZm9yRWFjaChjb250PT57XHJcblx0ICAgICAgICB2YXIgc3R5bGVTdHIgPSBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmRldGFpbDJfc3R5bGVkZWYpO1xyXG5cdCAgICAgICAgdmFyIGRldGFpbFN0eWxlID0gSlNPTi5wYXJzZShzdHlsZVN0cik7XHJcblx0ICAgICAgICBkZXRhaWxTdHlsZS5mb3JtLm9iaklkID0gY29udC5pZDtcclxuXHQgICAgICAgIGNvbnQuYXR0cnMuZm9yRWFjaChhdHRyPT57XHJcblx0ICAgICAgICAgIGRldGFpbFN0eWxlLmZvcm0uaXRlbXMuZm9yRWFjaChlbGU9PnsgXHJcblx0ICAgICAgICAgICAgaWYoZWxlLm5hbWUhPSdMYXlvdXQnKXtcclxuXHQgICAgICAgICAgICAgIGlmKGVsZS5maWVsZElkID09IGF0dHIuYXR0cikgZWxlLnZhbHVlID0gYXR0ci52YWx1ZTtcclxuXHQgICAgICAgICAgICB9IGVsc2UgaWYoZWxlLm5hbWU9PSdMYXlvdXQnKXtcclxuXHQgICAgICAgICAgICAgIGVsZS5zZXR0aW5nLmNvbExpc3QuZm9yRWFjaChjb2w9PntcclxuXHQgICAgICAgICAgICAgICAgaWYoY29sKXtcclxuXHQgICAgICAgICAgICAgICAgICBpZihjb2wuZmllbGRJZCA9PSBhdHRyLmF0dHIpIGNvbC52YWx1ZSA9IGF0dHIudmFsdWU7XHJcblx0ICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgIH0pO1xyXG5cdCAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgfSk7XHJcblx0ICAgICAgICB9KTtcclxuXHQgICAgICAgIHRoaXMuJGRhdGEuZGV0YWlsMlN0eWxlRGVmTGlzdC5wdXNoKGRldGFpbFN0eWxlKTtcclxuXHQgICAgfSk7XHJcblx0ICAgICAgLy8gY29uc29sZS5sb2codGhpcy5kZXRhaWwyU3R5bGVEZWZMaXN0KTtcclxuXHR9LFxyXG5cdG9uQ2xpY2tJdGVtKGUpIHsgLy/pgInmi6npobXnrb5cclxuXHRcdC8vIGNvbnNvbGUubG9nKGUpO1xyXG5cdFx0dGhpcy5jdXJyZW50ID0gZS5jdXJyZW50SW5kZXhcclxuXHR9LFxyXG5cdG9uRGV0YWlsMUVudGVyQ2hhbmdlKGl0ZW0peyAgLy/noIHnm5jkuK3moLflvI/lm57ovabkuovku7ZcclxuXHQgICAgY29uc29sZS5sb2coaXRlbSk7XHJcblx0fSxcclxuXHRkZWxJdGVtKGluZGV4KXsgIC8v5Yig6Zmk56CB55uY5Lit5qC35byP6Z2i5p2/XHJcblx0ICAgIHRoaXMuZGV0YWlsMVN0eWxlRGVmTGlzdC5zcGxpY2UoaW5kZXgsMSk7XHJcblx0fSxcclxuICAgIGRlbERhdGFPYmooc3R5bGUsaW5kZXgpeyAgLy/liKDpmaTlt7LnoIHnm5jmlbBcclxuICAgICAgLy8gY29uc29sZS5sb2coc3R5bGUpO1xyXG5cdCAgdmFyICR0aGlzID0gdGhpcztcclxuXHQgIHVuaS5zaG93TW9kYWwoe1xyXG5cdCAgXHR0aXRsZTogJ+aPkOekuicsXHJcblx0ICBcdGNvbnRlbnQ6ICfnoa7lrprliKDpmaTor6Xlt7LnoIHnm5jmlbDmja7vvIEnLFxyXG5cdCAgXHRzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XHJcblx0ICBcdFx0aWYgKHJlcy5jb25maXJtKSB7XHJcblx0XHRcdFx0dmFyIG9iaklEPXN0eWxlLmZvcm0ub2JqSWQ7XHJcblx0XHRcdFx0aWYoIXN0eWxlLmZvcm0ub2JqSWQuaW5jbHVkZXMoJ3snKSkgb2JqSUQgPSAneycrc3R5bGUuZm9ybS5vYmpJZCsnfSc7XHJcblx0XHRcdFx0ICAgICAgICAgIFxyXG5cdFx0XHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdFx0XHRjbGFzc19pZDpzdHlsZS5mb3JtLmNsc0lkLFxyXG5cdFx0XHRcdFx0Y2xhc3NfbmFtZTonJyxcclxuXHRcdFx0XHRcdG9ial9pZDpvYmpJRFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZGF0YU9iakRlbCcsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdCR0aGlzLmRldGFpbDJTdHlsZURlZkxpc3Quc3BsaWNlKGluZGV4LDEpO1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLliKDpmaTmiJDlip/vvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor681XCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor681LjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHR9KTtcclxuXHQgIFx0XHR9IGVsc2UgaWYgKHJlcy5jYW5jZWwpIHtcclxuXHRcdFx0XHRcclxuXHQgIFx0XHR9XHJcblx0ICBcdH1cclxuXHQgIH0pO1xyXG4gICAgICBcclxuICAgIH0sXHJcblx0XHJcblx0b2soKXsgLy/noa7lrppcclxuXHRcdC8vIHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLiRkYXRhLnBhcmFtLkJlZm9yZV9PS19FdmVudCk7XHJcblx0IC8vICAgIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQpO1xyXG5cdCAgICBpZih0aGlzLiRkYXRhLnBhcmFtLkJlZm9yZV9PS19FdmVudCkgLy/mmK/lkKbmnInnoa7lrprliY3kuovku7ZcclxuXHQgICAgICAgIHRoaXMuc2F2YSh0aGlzLiRkYXRhLnBhcmFtLkJlZm9yZV9PS19FdmVudCk7XHJcblx0ICAgIGVsc2UgaWYodGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudCkgIC8v5piv5ZCm5pyJ56Gu5a6a5ZCO5LqL5Lu2XHJcblx0ICAgICAgICB0aGlzLnNhdmEodGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudCk7XHJcblx0fSxcclxuXHRzYXZhKGV2ZW50KXtcclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0ICAgIGlmKHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdC5sZW5ndGg9PTApe1xyXG5cdCAgICAgIHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuayoeacieato+WcqOeggeebmOeahOaVsOaNru+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCAgICAgIHJldHVybiBmYWxzZTtcclxuXHQgICAgfVxyXG5cdCAgICAvL+iOt+WPluihqOWktOWxnuaAp1xyXG5cdCAgICB2YXIgaGVhZF9hdHRyID0ge307XHJcblx0ICAgIHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcblx0ICAgICAgaGVhZF9hdHRyW2l0ZW0uZmllbGRJZF0gPSBpdGVtLnZhbHVlO1xyXG5cdCAgICB9KTtcclxuXHQgICAgLy8gY29uc29sZS5sb2coaGVhZF9hdHRyKTtcclxuXHQgICAgLy/ojrflj5bmraPlnKjnoIHnm5jlsZ7mgKdcclxuXHQgICAgdmFyIGRldGFpbEF0dHJMaXN0ID0gW107XHJcblx0ICAgIHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdC5mb3JFYWNoKHN0eWxlPT57XHJcblx0ICAgICAgdmFyIGRldGFpbF9hdHRyPXt9O1xyXG5cdFx0ICBzdHlsZS5mb3JtLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcblx0ICAgICAgICBpZihpdGVtLm5hbWUgPT0gXCJMYXlvdXRcIil7ICAvL+WIpOaWreaYr+WQpuaYr+agheagj+agvOW8j1xyXG5cdCAgICAgICAgICBpdGVtLnNldHRpbmcuY29sTGlzdC5mb3JFYWNoKGNvbHMgPT4ge1xyXG5cdCAgICAgICAgICAgIGlmKGNvbHMhPW51bGwpIGRldGFpbF9hdHRyW2NvbHMuZmllbGRJZF0gPSBjb2xzLnZhbHVlO1xyXG5cdCAgICAgICAgICB9KTtcclxuXHQgICAgICAgIH1lbHNlXHJcblx0ICAgICAgICAgIGRldGFpbF9hdHRyW2l0ZW0uZmllbGRJZF0gPSBpdGVtLnZhbHVlO1xyXG5cdCAgICAgIH0pO1xyXG5cdCAgICAgIGRldGFpbEF0dHJMaXN0LnB1c2goZGV0YWlsX2F0dHIpO1xyXG5cdCAgICB9KTtcclxuXHQgICAgLy8gY29uc29sZS5sb2coZGV0YWlsQXR0ckxpc3QpO1xyXG5cdFx0Ly/ojrflj5bmraPlnKjnoIHnm5jph4zmsqHmnInmmL7npLrnmoTlrZfmrrVcclxuXHRcdHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdC5mb3JFYWNoKHN0eWxlPT57XHJcblx0XHQgIHN0eWxlLmZvcm0uYXR0cnMuZm9yRWFjaChhdHRyID0+IHtcclxuXHRcdCAgICBmb3IodmFyIGtleSBpbiBkZXRhaWxBdHRyTGlzdCl7XHJcblx0XHQgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKGRldGFpbEF0dHJMaXN0W2tleV0pO1xyXG5cdFx0ICAgICAgbGV0IGlzZmxhZyA9IHRydWU7XHJcblx0XHQgICAgICBrZXlzLmZvckVhY2goKGVsZSkgPT4ge1xyXG5cdFx0ICAgICAgICBpZihlbGUgPT0gYXR0ci5hdHRyKSBpc2ZsYWcgPSBmYWxzZTtcclxuXHRcdCAgICAgIH0pO1xyXG5cdFx0ICAgICAgaWYoaXNmbGFnKSB7XHJcblx0XHQgICAgICAgIGRldGFpbEF0dHJMaXN0W2F0dHIuYXR0cl0gPSBhdHRyLnZhbHVlO1xyXG5cdFx0ICAgICAgfVxyXG5cdFx0ICAgIH0gXHJcblx0XHQgIH0pO1xyXG5cdFx0fSk7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhkZXRhaWxBdHRyTGlzdCk7XHJcblx0IC8vICAgIHJldHVybjtcclxuXHRcdHZhciBpbnB1dF9wYXJhbSA9IEJhc2U2NC5lbmNvZGUoXHJcblx0XHQgICAgSlNPTi5zdHJpbmdpZnkoXHJcblx0XHQgICAgICBPYmplY3Qua2V5cyhoZWFkX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdCAgICAgICAgYXR0cjogYSxcclxuXHRcdCAgICAgICAgdmFsdWU6IGhlYWRfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0ICAgICAgfSkpXHJcblx0XHQgICAgKVxyXG5cdFx0KTtcclxuXHRcdCB2YXIganNvbmxpc3Q9W107XHJcblx0XHRkZXRhaWxBdHRyTGlzdC5mb3JFYWNoKGF0dHI9PntcclxuXHRcdCAgICBqc29ubGlzdC5wdXNoKHtcclxuXHRcdCAgICAgIGlkOicnLFxyXG5cdFx0ICAgICAgYXR0cnM6IE9iamVjdC5rZXlzKGF0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdCAgICAgICAgYXR0cjogYSxcclxuXHRcdCAgICAgICAgdmFsdWU6IGF0dHJbYV0gfHwgXCJcIixcclxuXHRcdCAgICAgIH0pKVxyXG5cdFx0ICAgIH0pO1xyXG5cdFx0fSk7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhqc29ubGlzdCk7XHJcblx0XHRqc29ubGlzdC5mb3JFYWNoKGFzeW5jIChqc29uLGtleSk9PntcclxuXHRcdFx0YXdhaXQgJHRoaXMucnVuQ3VzdG9tRXZlbnQoZXZlbnQsaW5wdXRfcGFyYW0sanNvbik7XHJcblx0XHR9KTtcclxuXHR9LFxyXG4gICAgLy/miafooYznoa7lrprohJrmnKxcclxuICAgIGFzeW5jIHJ1bkN1c3RvbUV2ZW50KGV2ZW50LGlucHV0X3BhcmFtLGpzb24pe1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBkYXRhX2pzb24gPSBCYXNlNjQuZW5jb2RlKFxyXG5cdFx0ICAgIEpTT04uc3RyaW5naWZ5KGpzb24pXHJcblx0XHQpO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdCAgZWRfdHlwZTogMCxcclxuXHRcdCAgc3RhcnRfdHJhbnNhY3Rpb246ICcnLFxyXG5cdFx0ICBjbGFzc19pZDogdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0uY2xzSWQsXHJcblx0XHQgIGNsYXNzX25hbWU6ICcnLFxyXG5cdFx0ICBldmVudF9pZDogdGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudC5JRCxcclxuXHRcdCAgZXZlbnRfbmFtZTogJycsXHJcblx0XHQgIGRhdGFfb2JqX2lkOiAnJyxcclxuXHRcdCAgb2JqX2F0dHI6ICcnLFxyXG5cdFx0ICBwcmpfaWQ6ICcnLFxyXG5cdFx0ICByZWZfY2xzX2lkOiAnJyxcclxuXHRcdCAgcmVsX29ial9pZDogJycsXHJcblx0XHQgIHVzZXJfbG9naW46ICcnLFxyXG5cdFx0ICBkYXRhX2pzb246IGRhdGFfanNvbixcclxuXHRcdCAgY29tcG9zZV9pbmZvOiAnJyxcclxuXHRcdCAgZXh0X2luZm86ICcnLFxyXG5cdFx0ICBnbG9iYWxfYXR0cjogJycsXHJcblx0XHQgIGlucHV0X3BhcmFtOiBpbnB1dF9wYXJhbSxcclxuXHRcdH07XHJcblx0XHQvLyBjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgncnVuQ3VzdG9tRXZlbnQnLGRhdGFJbmZvKS50aGVuKHJlcz0+e1xyXG5cdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRpZiAocmVzLmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgcmVzdWx0ID0gcmVzLnJlc3VsdDsgXHJcblx0XHRcdFx0aWYgKHJlc3VsdC5yZXQgIT0gMCkge1xyXG5cdFx0XHRcdCAgICB2YXIgdGlwID0gcmVzdWx0LmVycl9pbmZvID8gdHlwZW9mIHJlc3VsdC5lcnJfaW5mbyA9PSAnc3RyaW5nJyA/IHJlc3VsdC5lcnJfaW5mbyA6IHJlc3VsdC5lcnJfaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0ICAgIGlmIChyZXN1bHQucmV0ID09IDgwMSkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0ICAgIGVsc2UgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXArJyzmj5DnpLo6JytyZXN1bHQucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlXHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRsZXQgdGlwID0gcmVzdWx0LmluZm8gPyB0eXBlb2YgcmVzdWx0LmluZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuaW5mbyA6IHJlc3VsdC5pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHRcdGlmICh0aXApIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFx0aWYocmVzdWx0LnJlc3VsdF90eXBlID09IDApe1xyXG5cdFx0XHRcdFx0ICBpZihyZXN1bHQuYWN0aW9uKXtcclxuXHRcdFx0XHRcdFx0cmVzdWx0LmFjdGlvbi5mb3JFYWNoKGl0ZW09PntcclxuXHRcdFx0XHRcdFx0ICBpZihpdGVtLmFjdGlvbl90eXBlID09IFwiaW5zZXJ0X3N1YnRhYmxlX3BhZ2Vfcm93XCIpeyAvL+eggeebmOS4rVxyXG5cdFx0XHRcdFx0XHRcdHZhciB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0Ly/liqDovb3lt7Lnu4/noIHnm5jmlbDmja5cclxuXHRcdFx0XHRcdFx0XHQkdGhpcy52aWV3QWNlaW9uUm93KHZhbHVlLCdhZGQnKTtcclxuXHRcdFx0XHRcdFx0XHQvL+a4heepuuadoeeggeWGheWuuVxyXG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtcy5mb3JFYWNoKChpdGVtLGluZGV4KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZihpdGVtLmZpZWxkSWQgIT0gXCJTX0NOVFJfQ09ERVwiKXtcclxuXHRcdFx0XHRcdFx0XHRcdCAgaXRlbS52YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBpdGVtLm9sZHZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHQgICR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFtpdGVtLmZpZWxkSWRdID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0Ly/muIXpmaTmraPlnKjnoIHnm5jkuK3miJDlip/nmoTmlbDmja5cclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0LmZvckVhY2goKHN0eWxlLGluZGV4KT0+e1xyXG5cdFx0XHRcdFx0XHRcdCAgaWYoc3R5bGUuZm9ybS5pdGVtc1swXS5maWVsZElkID09IGpzb24uYXR0cnNbMF0uYXR0ciAmJiBzdHlsZS5mb3JtLml0ZW1zWzBdLnZhbHVlID09IGpzb24uYXR0cnNbMF0udmFsdWUpeyBcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3Quc3BsaWNlKGluZGV4LDEpO1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHRcdCAgfVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdC8vIHRoaXMuZGV0YWlsMlN0eWxlRGVmTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLnoIHnm5jmiJDlip9cIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0ICB9XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0ICB9ZWxzZXtcclxuXHRcdFx0XHRcdFx0aWYoJHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQuSUQgIT0gZXZlbnQuSUQpeyAvL+WIpOaWreW9k+WJjeS6i+S7tuaYr+WQpuaYr+ehruWumuWQjuS6i+S7tlxyXG5cdFx0XHRcdFx0XHRcdCR0aGlzLnNhdmEoJHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQpOyAvL+aJp+ihjOehruWumuWQjuS6i+S7tlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHQvLyAkdGhpcy4kZGF0YS5kZXRhaWwyU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRpZihyZXN1bHQuaW5mbyl7XHJcblx0XHRcdFx0XHRcdCAgdW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OnJlc3VsdC5pbmZvLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzhcIixjb250ZW50OnJlcy5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0ICAgIGxldCB0aXAgPSB0eXBlb2YgZXggPT0gXCJzdHJpbmdcIiA/IGV4IDogZXguZXJyTXNnO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzguMVwiLGNvbnRlbnQ6XCLmiafooYzigJznoa7lrprlkI7igJ3kuovku7blpLHotKXvvJpcIiArIHRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG5cdH0sXHJcblx0XHJcblx0Y2FuY2VsKGUpeyAvL+WPlua2iFxyXG5cdFx0dW5pLm5hdmlnYXRlQmFjayh7XHJcblx0XHRcdGRlbHRhOjEgLy/ov5Tlm57lsYLmlbDvvIwy5YiZ5LiK5LiK6aG1XHJcblx0XHR9KTtcclxuXHR9LFxyXG4gIH0sXHJcbn07XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///136\n");
 
 /***/ }),
 /* 137 */

--
Gitblit v1.9.1