#
whycq
2023-05-14 c007112b27671a3b44514468a0cf6db8769efdd6
Monitor-APP/unpackage/dist/dev/app-plus/app-service.js
@@ -52,9 +52,14 @@
if (uni.restoreGlobal) {
  uni.restoreGlobal(weex, plus, setTimeout, clearTimeout, setInterval, clearInterval);
}
<<<<<<< HEAD
__definePage('pages/index/index', function () {return Vue.extend(__webpack_require__(/*! pages/index/index.vue?mpType=page */ 21).default);});
=======
__definePage('pages/home/home', function () {return Vue.extend(__webpack_require__(/*! pages/home/home.vue?mpType=page */ 2).default);});
__definePage('pages/index/index', function () {return Vue.extend(__webpack_require__(/*! pages/index/index.vue?mpType=page */ 79).default);});
__definePage('pages/index/index', function () {return Vue.extend(__webpack_require__(/*! pages/index/index.vue?mpType=page */ 80).default);});
>>>>>>> 2af3829f6276675ebe120cda94d628c49c429536
__definePage('pages/index/monitor', function () {return Vue.extend(__webpack_require__(/*! pages/index/monitor.vue?mpType=page */ 102).default);});
__definePage('pages/home/home', function () {return Vue.extend(__webpack_require__(/*! pages/home/home.vue?mpType=page */ 2).default);});
/***/ }),
/* 2 */
@@ -1033,17 +1038,514 @@
        "uni-transition",
        {
          attrs: {
<<<<<<< HEAD
            animation: _vm._$s(0, "a-animation", _vm.animationData),
            _i: 0
          },
          on: { click: _vm.onClick }
        },
        [_vm._t("default", null, { _i: 1 })],
        2
      )
    : _vm._e()
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
/***/ }),
/* 8 */
/*!*********************************************************************************************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?vue&type=script&lang=js& ***!
  \*********************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!../../../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-transition.vue?vue&type=script&lang=js& */ 9);\n/* harmony import */ var _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTh2QixDQUFnQixvdkJBQUcsRUFBQyIsImZpbGUiOiI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi93b3Jrc3BhY3MvaGIvSEJ1aWxkZXJYLjMuMy4xMy4yMDIyMDMxNC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNzL2hiL0hCdWlsZGVyWC4zLjMuMTMuMjAyMjAzMTQuZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjcy9oYi9IQnVpbGRlclguMy4zLjEzLjIwMjIwMzE0LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNzL2hiL0hCdWlsZGVyWC4zLjMuMTMuMjAyMjAzMTQuZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi91bmktdHJhbnNpdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNzL2hiL0hCdWlsZGVyWC4zLjMuMTMuMjAyMjAzMTQuZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjcy9oYi9IQnVpbGRlclguMy4zLjEzLjIwMjIwMzE0LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi93b3Jrc3BhY3MvaGIvSEJ1aWxkZXJYLjMuMy4xMy4yMDIyMDMxNC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjcy9oYi9IQnVpbGRlclguMy4zLjEzLjIwMjIwMzE0LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLXRyYW5zaXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///8\n");
/***/ }),
/* 9 */
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace_uni/private/Monitor-APP/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\nvar _createAnimation = __webpack_require__(/*! ./createAnimation */ 11);function _toConsumableArray(arr) {return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();}function _nonIterableSpread() {throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}function _unsupportedIterableToArray(o, minLen) {if (!o) return;if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);var n = Object.prototype.toString.call(o).slice(8, -1);if (n === \"Object\" && o.constructor) n = o.constructor.name;if (n === \"Map\" || n === \"Set\") return Array.from(o);if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);}function _iterableToArray(iter) {if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);}function _arrayWithoutHoles(arr) {if (Array.isArray(arr)) return _arrayLikeToArray(arr);}function _arrayLikeToArray(arr, len) {if (len == null || len > arr.length) len = arr.length;for (var i = 0, arr2 = new Array(len); i < len; i++) {arr2[i] = arr[i];}return arr2;}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}\n\n/**\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       * Transition 过渡动画\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       * @description 简单过渡动画组件\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       * @tutorial https://ext.dcloud.net.cn/plugin?id=985\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       * @property {Boolean} show = [false|true] 控制组件显示或隐藏\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       * @property {Array|String} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 过渡动画类型\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       *  @value fade 渐隐渐出过渡\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       *  @value slide-top 由上至下过渡\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       *  @value slide-right 由右至左过渡\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       *  @value slide-bottom 由下至上过渡\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       *  @value slide-left 由左至右过渡\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       *  @value zoom-in 由小到大过渡\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       *  @value zoom-out 由大到小过渡\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       * @property {Number} duration 过渡动画持续时间\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       * @property {Object} styles 组件样式,同 css 样式,注意带’-‘连接符的属性需要使用小驼峰写法如:`backgroundColor:red`\r\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       */var _default2 =\n{\n  name: 'uniTransition',\n  emits: ['click', 'change'],\n  props: {\n    show: {\n      type: Boolean,\n      default: false },\n\n    modeClass: {\n      type: [Array, String],\n      default: function _default() {\n        return 'fade';\n      } },\n\n    duration: {\n      type: Number,\n      default: 300 },\n\n    styles: {\n      type: Object,\n      default: function _default() {\n        return {};\n      } },\n\n    customClass: {\n      type: String,\n      default: '' } },\n\n\n  data: function data() {\n    return {\n      isShow: false,\n      transform: '',\n      opacity: 1,\n      animationData: {},\n      durationTime: 300,\n      config: {} };\n\n  },\n  watch: {\n    show: {\n      handler: function handler(newVal) {\n        if (newVal) {\n          this.open();\n        } else {\n          // 避免上来就执行 close,导致动画错乱\n          if (this.isShow) {\n            this.close();\n          }\n        }\n      },\n      immediate: true } },\n\n\n  computed: {\n    // 生成样式数据\n    stylesObject: function stylesObject() {\n      var styles = _objectSpread(_objectSpread({},\n      this.styles), {}, {\n        'transition-duration': this.duration / 1000 + 's' });\n\n      var transform = '';\n      for (var i in styles) {\n        var line = this.toLine(i);\n        transform += line + ':' + styles[i] + ';';\n      }\n      return transform;\n    },\n    // 初始化动画条件\n    transformStyles: function transformStyles() {\n      return 'transform:' + this.transform + ';' + 'opacity:' + this.opacity + ';' + this.stylesObject;\n    } },\n\n  created: function created() {\n    // 动画默认配置\n    this.config = {\n      duration: this.duration,\n      timingFunction: 'ease',\n      transformOrigin: '50% 50%',\n      delay: 0 };\n\n    this.durationTime = this.duration;\n  },\n  methods: {\n    /**\r\n              *  ref 触发 初始化动画\r\n              */\n    init: function init() {var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      if (obj.duration) {\n        this.durationTime = obj.duration;\n      }\n      this.animation = (0, _createAnimation.createAnimation)(Object.assign(this.config, obj), this);\n    },\n    /**\r\n        * 点击组件触发回调\r\n        */\n    onClick: function onClick() {\n      this.$emit('click', {\n        detail: this.isShow });\n\n    },\n    /**\r\n        * ref 触发 动画分组\r\n        * @param {Object} obj\r\n        */\n    step: function step(obj) {var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (!this.animation) return;\n      for (var i in obj) {\n        try {\n          if (typeof obj[i] === 'object') {var _this$animation;\n            (_this$animation = this.animation)[i].apply(_this$animation, _toConsumableArray(obj[i]));\n          } else {\n            this.animation[i](obj[i]);\n          }\n        } catch (e) {\n          __f__(\"error\", \"\\u65B9\\u6CD5 \".concat(i, \" \\u4E0D\\u5B58\\u5728\"), \" at uni_modules/uni-transition/components/uni-transition/uni-transition.vue:139\");\n        }\n      }\n      this.animation.step(config);\n      return this;\n    },\n    /**\r\n        *  ref 触发 执行动画\r\n        */\n    run: function run(fn) {\n      if (!this.animation) return;\n      this.animation.run(fn);\n    },\n    // 开始过度动画\n    open: function open() {var _this = this;\n      clearTimeout(this.timer);\n      this.transform = '';\n      this.isShow = true;var _this$styleInit =\n      this.styleInit(false),opacity = _this$styleInit.opacity,transform = _this$styleInit.transform;\n      if (typeof opacity !== 'undefined') {\n        this.opacity = opacity;\n      }\n      this.transform = transform;\n      // 确保动态样式已经生效后,执行动画,如果不加 nextTick ,会导致 wx 动画执行异常\n      this.$nextTick(function () {\n        // TODO 定时器保证动画完全执行,目前有些问题,后面会取消定时器\n        _this.timer = setTimeout(function () {\n          _this.animation = (0, _createAnimation.createAnimation)(_this.config, _this);\n          _this.tranfromInit(false).step();\n          _this.animation.run();\n          _this.$emit('change', {\n            detail: _this.isShow });\n\n        }, 20);\n      });\n    },\n    // 关闭过度动画\n    close: function close(type) {var _this2 = this;\n      if (!this.animation) return;\n      this.tranfromInit(true).\n      step().\n      run(function () {\n        _this2.isShow = false;\n        _this2.animationData = null;\n        _this2.animation = null;var _this2$styleInit =\n        _this2.styleInit(false),opacity = _this2$styleInit.opacity,transform = _this2$styleInit.transform;\n        _this2.opacity = opacity || 1;\n        _this2.transform = transform;\n        _this2.$emit('change', {\n          detail: _this2.isShow });\n\n      });\n    },\n    // 处理动画开始前的默认样式\n    styleInit: function styleInit(type) {var _this3 = this;\n      var styles = {\n        transform: '' };\n\n      var buildStyle = function buildStyle(type, mode) {\n        if (mode === 'fade') {\n          styles.opacity = _this3.animationType(type)[mode];\n        } else {\n          styles.transform += _this3.animationType(type)[mode] + ' ';\n        }\n      };\n      if (typeof this.modeClass === 'string') {\n        buildStyle(type, this.modeClass);\n      } else {\n        this.modeClass.forEach(function (mode) {\n          buildStyle(type, mode);\n        });\n      }\n      return styles;\n    },\n    // 处理内置组合动画\n    tranfromInit: function tranfromInit(type) {var _this4 = this;\n      var buildTranfrom = function buildTranfrom(type, mode) {\n        var aniNum = null;\n        if (mode === 'fade') {\n          aniNum = type ? 0 : 1;\n        } else {\n          aniNum = type ? '-100%' : '0';\n          if (mode === 'zoom-in') {\n            aniNum = type ? 0.8 : 1;\n          }\n          if (mode === 'zoom-out') {\n            aniNum = type ? 1.2 : 1;\n          }\n          if (mode === 'slide-right') {\n            aniNum = type ? '100%' : '0';\n          }\n          if (mode === 'slide-bottom') {\n            aniNum = type ? '100%' : '0';\n          }\n        }\n        _this4.animation[_this4.animationMode()[mode]](aniNum);\n      };\n      if (typeof this.modeClass === 'string') {\n        buildTranfrom(type, this.modeClass);\n      } else {\n        this.modeClass.forEach(function (mode) {\n          buildTranfrom(type, mode);\n        });\n      }\n\n      return this.animation;\n    },\n    animationType: function animationType(type) {\n      return {\n        fade: type ? 1 : 0,\n        'slide-top': \"translateY(\".concat(type ? '0' : '-100%', \")\"),\n        'slide-right': \"translateX(\".concat(type ? '0' : '100%', \")\"),\n        'slide-bottom': \"translateY(\".concat(type ? '0' : '100%', \")\"),\n        'slide-left': \"translateX(\".concat(type ? '0' : '-100%', \")\"),\n        'zoom-in': \"scaleX(\".concat(type ? 1 : 0.8, \") scaleY(\").concat(type ? 1 : 0.8, \")\"),\n        'zoom-out': \"scaleX(\".concat(type ? 1 : 1.2, \") scaleY(\").concat(type ? 1 : 1.2, \")\") };\n\n    },\n    // 内置动画类型与实际动画对应字典\n    animationMode: function animationMode() {\n      return {\n        fade: 'opacity',\n        'slide-top': 'translateY',\n        'slide-right': 'translateX',\n        'slide-bottom': 'translateY',\n        'slide-left': 'translateX',\n        'zoom-in': 'scale',\n        'zoom-out': 'scale' };\n\n    },\n    // 驼峰转中横线\n    toLine: function toLine(name) {\n      return name.replace(/([A-Z])/g, '-$1').toLowerCase();\n    } } };exports.default = _default2;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 10)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXRyYW5zaXRpb24vY29tcG9uZW50cy91bmktdHJhbnNpdGlvbi91bmktdHJhbnNpdGlvbi52dWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLQSx3RTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUNBLHVCQURBO0FBRUEsNEJBRkE7QUFHQTtBQUNBO0FBQ0EsbUJBREE7QUFFQSxvQkFGQSxFQURBOztBQUtBO0FBQ0EsMkJBREE7QUFFQSxhQUZBLHNCQUVBO0FBQ0E7QUFDQSxPQUpBLEVBTEE7O0FBV0E7QUFDQSxrQkFEQTtBQUVBLGtCQUZBLEVBWEE7O0FBZUE7QUFDQSxrQkFEQTtBQUVBLGFBRkEsc0JBRUE7QUFDQTtBQUNBLE9BSkEsRUFmQTs7QUFxQkE7QUFDQSxrQkFEQTtBQUVBLGlCQUZBLEVBckJBLEVBSEE7OztBQTZCQSxNQTdCQSxrQkE2QkE7QUFDQTtBQUNBLG1CQURBO0FBRUEsbUJBRkE7QUFHQSxnQkFIQTtBQUlBLHVCQUpBO0FBS0EsdUJBTEE7QUFNQSxnQkFOQTs7QUFRQSxHQXRDQTtBQXVDQTtBQUNBO0FBQ0EsYUFEQSxtQkFDQSxNQURBLEVBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FGQSxNQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BVkE7QUFXQSxxQkFYQSxFQURBLEVBdkNBOzs7QUFzREE7QUFDQTtBQUNBLGdCQUZBLDBCQUVBO0FBQ0E7QUFDQSxpQkFEQTtBQUVBLHlEQUZBOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBYkE7QUFjQTtBQUNBLG1CQWZBLDZCQWVBO0FBQ0E7QUFDQSxLQWpCQSxFQXREQTs7QUF5RUEsU0F6RUEscUJBeUVBO0FBQ0E7QUFDQTtBQUNBLDZCQURBO0FBRUEsNEJBRkE7QUFHQSxnQ0FIQTtBQUlBLGNBSkE7O0FBTUE7QUFDQSxHQWxGQTtBQW1GQTtBQUNBOzs7QUFHQSxRQUpBLGtCQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQVRBO0FBVUE7OztBQUdBLFdBYkEscUJBYUE7QUFDQTtBQUNBLDJCQURBOztBQUdBLEtBakJBO0FBa0JBOzs7O0FBSUEsUUF0QkEsZ0JBc0JBLEdBdEJBLEVBc0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBRkEsTUFFQTtBQUNBO0FBQ0E7QUFDQSxTQU5BLENBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FyQ0E7QUFzQ0E7OztBQUdBLE9BekNBLGVBeUNBLEVBekNBLEVBeUNBO0FBQ0E7QUFDQTtBQUNBLEtBNUNBO0FBNkNBO0FBQ0EsUUE5Q0Esa0JBOENBO0FBQ0E7QUFDQTtBQUNBLHlCQUhBO0FBSUEsMkJBSkEsQ0FJQSxPQUpBLG1CQUlBLE9BSkEsQ0FJQSxTQUpBLG1CQUlBLFNBSkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FEQTs7QUFHQSxTQVBBLEVBT0EsRUFQQTtBQVFBLE9BVkE7QUFXQSxLQW5FQTtBQW9FQTtBQUNBLFNBckVBLGlCQXFFQSxJQXJFQSxFQXFFQTtBQUNBO0FBQ0E7QUFDQSxVQURBO0FBRUEsU0FGQSxDQUVBO0FBQ0E7QUFDQTtBQUNBLGdDQUhBO0FBSUEsK0JBSkEsQ0FJQSxPQUpBLG9CQUlBLE9BSkEsQ0FJQSxTQUpBLG9CQUlBLFNBSkE7QUFLQTtBQUNBO0FBQ0E7QUFDQSwrQkFEQTs7QUFHQSxPQVpBO0FBYUEsS0FwRkE7QUFxRkE7QUFDQSxhQXRGQSxxQkFzRkEsSUF0RkEsRUFzRkE7QUFDQTtBQUNBLHFCQURBOztBQUdBO0FBQ0E7QUFDQTtBQUNBLFNBRkEsTUFFQTtBQUNBO0FBQ0E7QUFDQSxPQU5BO0FBT0E7QUFDQTtBQUNBLE9BRkEsTUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUZBO0FBR0E7QUFDQTtBQUNBLEtBekdBO0FBMEdBO0FBQ0EsZ0JBM0dBLHdCQTJHQSxJQTNHQSxFQTJHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FGQSxNQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FwQkE7QUFxQkE7QUFDQTtBQUNBLE9BRkEsTUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUZBO0FBR0E7O0FBRUE7QUFDQSxLQTFJQTtBQTJJQSxpQkEzSUEseUJBMklBLElBM0lBLEVBMklBO0FBQ0E7QUFDQSwwQkFEQTtBQUVBLG9FQUZBO0FBR0EscUVBSEE7QUFJQSxzRUFKQTtBQUtBLHFFQUxBO0FBTUEsNEZBTkE7QUFPQSw2RkFQQTs7QUFTQSxLQXJKQTtBQXNKQTtBQUNBLGlCQXZKQSwyQkF1SkE7QUFDQTtBQUNBLHVCQURBO0FBRUEsaUNBRkE7QUFHQSxtQ0FIQTtBQUlBLG9DQUpBO0FBS0Esa0NBTEE7QUFNQSwwQkFOQTtBQU9BLDJCQVBBOztBQVNBLEtBaktBO0FBa0tBO0FBQ0EsVUFuS0Esa0JBbUtBLElBbktBLEVBbUtBO0FBQ0E7QUFDQSxLQXJLQSxFQW5GQSxFIiwiZmlsZSI6IjkuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcblx0PHZpZXcgdi1pZj1cImlzU2hvd1wiIHJlZj1cImFuaVwiIDphbmltYXRpb249XCJhbmltYXRpb25EYXRhXCIgOmNsYXNzPVwiY3VzdG9tQ2xhc3NcIiA6c3R5bGU9XCJ0cmFuc2Zvcm1TdHlsZXNcIiBAY2xpY2s9XCJvbkNsaWNrXCI+PHNsb3Q+PC9zbG90Pjwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcbmltcG9ydCB7IGNyZWF0ZUFuaW1hdGlvbiB9IGZyb20gJy4vY3JlYXRlQW5pbWF0aW9uJ1xyXG5cclxuLyoqXHJcbiAqIFRyYW5zaXRpb24g6L+H5rih5Yqo55S7XHJcbiAqIEBkZXNjcmlwdGlvbiDnroDljZXov4fmuKHliqjnlLvnu4Tku7ZcclxuICogQHR1dG9yaWFsIGh0dHBzOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTk4NVxyXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHNob3cgPSBbZmFsc2V8dHJ1ZV0g5o6n5Yi257uE5Lu25pi+56S65oiW6ZqQ6JePXHJcbiAqIEBwcm9wZXJ0eSB7QXJyYXl8U3RyaW5nfSBtb2RlQ2xhc3MgPSBbZmFkZXxzbGlkZS10b3B8c2xpZGUtcmlnaHR8c2xpZGUtYm90dG9tfHNsaWRlLWxlZnR8em9vbS1pbnx6b29tLW91dF0g6L+H5rih5Yqo55S757G75Z6LXHJcbiAqICBAdmFsdWUgZmFkZSDmuJDpmpDmuJDlh7rov4fmuKFcclxuICogIEB2YWx1ZSBzbGlkZS10b3Ag55Sx5LiK6Iez5LiL6L+H5rihXHJcbiAqICBAdmFsdWUgc2xpZGUtcmlnaHQg55Sx5Y+z6Iez5bem6L+H5rihXHJcbiAqICBAdmFsdWUgc2xpZGUtYm90dG9tIOeUseS4i+iHs+S4iui/h+a4oVxyXG4gKiAgQHZhbHVlIHNsaWRlLWxlZnQg55Sx5bem6Iez5Y+z6L+H5rihXHJcbiAqICBAdmFsdWUgem9vbS1pbiDnlLHlsI/liLDlpKfov4fmuKFcclxuICogIEB2YWx1ZSB6b29tLW91dCDnlLHlpKfliLDlsI/ov4fmuKFcclxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGR1cmF0aW9uIOi/h+a4oeWKqOeUu+aMgee7reaXtumXtFxyXG4gKiBAcHJvcGVydHkge09iamVjdH0gc3R5bGVzIOe7hOS7tuagt+W8j++8jOWQjCBjc3Mg5qC35byP77yM5rOo5oSP5bim4oCZLeKAmOi/nuaOpeespueahOWxnuaAp+mcgOimgeS9v+eUqOWwj+mpvOWzsOWGmeazleWmgu+8mmBiYWNrZ3JvdW5kQ29sb3I6cmVkYFxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cdG5hbWU6ICd1bmlUcmFuc2l0aW9uJyxcclxuXHRlbWl0czpbJ2NsaWNrJywnY2hhbmdlJ10sXHJcblx0cHJvcHM6IHtcclxuXHRcdHNob3c6IHtcclxuXHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0ZGVmYXVsdDogZmFsc2VcclxuXHRcdH0sXHJcblx0XHRtb2RlQ2xhc3M6IHtcclxuXHRcdFx0dHlwZTogW0FycmF5LCBTdHJpbmddLFxyXG5cdFx0XHRkZWZhdWx0KCkge1xyXG5cdFx0XHRcdHJldHVybiAnZmFkZSdcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGR1cmF0aW9uOiB7XHJcblx0XHRcdHR5cGU6IE51bWJlcixcclxuXHRcdFx0ZGVmYXVsdDogMzAwXHJcblx0XHR9LFxyXG5cdFx0c3R5bGVzOiB7XHJcblx0XHRcdHR5cGU6IE9iamVjdCxcclxuXHRcdFx0ZGVmYXVsdCgpIHtcclxuXHRcdFx0XHRyZXR1cm4ge31cclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGN1c3RvbUNsYXNzOntcclxuXHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0fVxyXG5cdH0sXHJcblx0ZGF0YSgpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGlzU2hvdzogZmFsc2UsXHJcblx0XHRcdHRyYW5zZm9ybTogJycsXHJcblx0XHRcdG9wYWNpdHk6IDEsXHJcblx0XHRcdGFuaW1hdGlvbkRhdGE6IHt9LFxyXG5cdFx0XHRkdXJhdGlvblRpbWU6IDMwMCxcclxuXHRcdFx0Y29uZmlnOiB7fVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0d2F0Y2g6IHtcclxuXHRcdHNob3c6IHtcclxuXHRcdFx0aGFuZGxlcihuZXdWYWwpIHtcclxuXHRcdFx0XHRpZiAobmV3VmFsKSB7XHJcblx0XHRcdFx0XHR0aGlzLm9wZW4oKVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHQvLyDpgb/lhY3kuIrmnaXlsLHmiafooYwgY2xvc2Us5a+86Ie05Yqo55S76ZSZ5LmxXHJcblx0XHRcdFx0XHRpZiAodGhpcy5pc1Nob3cpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5jbG9zZSgpXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRpbW1lZGlhdGU6IHRydWVcclxuXHRcdH1cclxuXHR9LFxyXG5cdGNvbXB1dGVkOiB7XHJcblx0XHQvLyDnlJ/miJDmoLflvI/mlbDmja5cclxuXHRcdHN0eWxlc09iamVjdCgpIHtcclxuXHRcdFx0bGV0IHN0eWxlcyA9IHtcclxuXHRcdFx0XHQuLi50aGlzLnN0eWxlcyxcclxuXHRcdFx0XHQndHJhbnNpdGlvbi1kdXJhdGlvbic6IHRoaXMuZHVyYXRpb24gLyAxMDAwICsgJ3MnXHJcblx0XHRcdH1cclxuXHRcdFx0bGV0IHRyYW5zZm9ybSA9ICcnXHJcblx0XHRcdGZvciAobGV0IGkgaW4gc3R5bGVzKSB7XHJcblx0XHRcdFx0bGV0IGxpbmUgPSB0aGlzLnRvTGluZShpKVxyXG5cdFx0XHRcdHRyYW5zZm9ybSArPSBsaW5lICsgJzonICsgc3R5bGVzW2ldICsgJzsnXHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHRyYW5zZm9ybVxyXG5cdFx0fSxcclxuXHRcdC8vIOWIneWni+WMluWKqOeUu+adoeS7tlxyXG5cdFx0dHJhbnNmb3JtU3R5bGVzKCkge1xyXG5cdFx0XHRyZXR1cm4gJ3RyYW5zZm9ybTonICsgdGhpcy50cmFuc2Zvcm0gKyAnOycgKyAnb3BhY2l0eTonICsgdGhpcy5vcGFjaXR5ICsgJzsnICsgdGhpcy5zdHlsZXNPYmplY3RcclxuXHRcdH1cclxuXHR9LFxyXG5cdGNyZWF0ZWQoKSB7XHJcblx0XHQvLyDliqjnlLvpu5jorqTphY3nva5cclxuXHRcdHRoaXMuY29uZmlnID0ge1xyXG5cdFx0XHRkdXJhdGlvbjogdGhpcy5kdXJhdGlvbixcclxuXHRcdFx0dGltaW5nRnVuY3Rpb246ICdlYXNlJyxcclxuXHRcdFx0dHJhbnNmb3JtT3JpZ2luOiAnNTAlIDUwJScsXHJcblx0XHRcdGRlbGF5OiAwXHJcblx0XHR9XHJcblx0XHR0aGlzLmR1cmF0aW9uVGltZSA9IHRoaXMuZHVyYXRpb25cclxuXHR9LFxyXG5cdG1ldGhvZHM6IHtcclxuXHRcdC8qKlxyXG5cdFx0ICogIHJlZiDop6blj5Eg5Yid5aeL5YyW5Yqo55S7XHJcblx0XHQgKi9cclxuXHRcdGluaXQob2JqID0ge30pIHtcclxuXHRcdFx0aWYgKG9iai5kdXJhdGlvbikge1xyXG5cdFx0XHRcdHRoaXMuZHVyYXRpb25UaW1lID0gb2JqLmR1cmF0aW9uXHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5hbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24oT2JqZWN0LmFzc2lnbih0aGlzLmNvbmZpZywgb2JqKSx0aGlzKVxyXG5cdFx0fSxcclxuXHRcdC8qKlxyXG5cdFx0ICog54K55Ye757uE5Lu26Kem5Y+R5Zue6LCDXHJcblx0XHQgKi9cclxuXHRcdG9uQ2xpY2soKSB7XHJcblx0XHRcdHRoaXMuJGVtaXQoJ2NsaWNrJywge1xyXG5cdFx0XHRcdGRldGFpbDogdGhpcy5pc1Nob3dcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHQvKipcclxuXHRcdCAqIHJlZiDop6blj5Eg5Yqo55S75YiG57uEXHJcblx0XHQgKiBAcGFyYW0ge09iamVjdH0gb2JqXHJcblx0XHQgKi9cclxuXHRcdHN0ZXAob2JqLCBjb25maWcgPSB7fSkge1xyXG5cdFx0XHRpZiAoIXRoaXMuYW5pbWF0aW9uKSByZXR1cm5cclxuXHRcdFx0Zm9yIChsZXQgaSBpbiBvYmopIHtcclxuXHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0aWYodHlwZW9mIG9ialtpXSA9PT0gJ29iamVjdCcpe1xyXG5cdFx0XHRcdFx0XHR0aGlzLmFuaW1hdGlvbltpXSguLi5vYmpbaV0pXHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dGhpcy5hbmltYXRpb25baV0ob2JqW2ldKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoYOaWueazlSAke2l9IOS4jeWtmOWcqGApXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuYW5pbWF0aW9uLnN0ZXAoY29uZmlnKVxyXG5cdFx0XHRyZXR1cm4gdGhpc1xyXG5cdFx0fSxcclxuXHRcdC8qKlxyXG5cdFx0ICogIHJlZiDop6blj5Eg5omn6KGM5Yqo55S7XHJcblx0XHQgKi9cclxuXHRcdHJ1bihmbikge1xyXG5cdFx0XHRpZiAoIXRoaXMuYW5pbWF0aW9uKSByZXR1cm5cclxuXHRcdFx0dGhpcy5hbmltYXRpb24ucnVuKGZuKVxyXG5cdFx0fSxcclxuXHRcdC8vIOW8gOWni+i/h+W6puWKqOeUu1xyXG5cdFx0b3BlbigpIHtcclxuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpXHJcblx0XHRcdHRoaXMudHJhbnNmb3JtID0gJydcclxuXHRcdFx0dGhpcy5pc1Nob3cgPSB0cnVlXHJcblx0XHRcdGxldCB7IG9wYWNpdHksIHRyYW5zZm9ybSB9ID0gdGhpcy5zdHlsZUluaXQoZmFsc2UpXHJcblx0XHRcdGlmICh0eXBlb2Ygb3BhY2l0eSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuXHRcdFx0XHR0aGlzLm9wYWNpdHkgPSBvcGFjaXR5XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1cclxuXHRcdFx0Ly8g56Gu5L+d5Yqo5oCB5qC35byP5bey57uP55Sf5pWI5ZCO77yM5omn6KGM5Yqo55S777yM5aaC5p6c5LiN5YqgIG5leHRUaWNrIO+8jOS8muWvvOiHtCB3eCDliqjnlLvmiafooYzlvILluLhcclxuXHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xyXG5cdFx0XHRcdC8vIFRPRE8g5a6a5pe25Zmo5L+d6K+B5Yqo55S75a6M5YWo5omn6KGM77yM55uu5YmN5pyJ5Lqb6Zeu6aKY77yM5ZCO6Z2i5Lya5Y+W5raI5a6a5pe25ZmoXHJcblx0XHRcdFx0dGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5hbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24odGhpcy5jb25maWcsIHRoaXMpXHJcblx0XHRcdFx0XHR0aGlzLnRyYW5mcm9tSW5pdChmYWxzZSkuc3RlcCgpXHJcblx0XHRcdFx0XHR0aGlzLmFuaW1hdGlvbi5ydW4oKVxyXG5cdFx0XHRcdFx0dGhpcy4kZW1pdCgnY2hhbmdlJywge1xyXG5cdFx0XHRcdFx0XHRkZXRhaWw6IHRoaXMuaXNTaG93XHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH0sIDIwKVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdC8vIOWFs+mXrei/h+W6puWKqOeUu1xyXG5cdFx0Y2xvc2UodHlwZSkge1xyXG5cdFx0XHRpZiAoIXRoaXMuYW5pbWF0aW9uKSByZXR1cm5cclxuXHRcdFx0dGhpcy50cmFuZnJvbUluaXQodHJ1ZSlcclxuXHRcdFx0XHQuc3RlcCgpXHJcblx0XHRcdFx0LnJ1bigoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmlzU2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHR0aGlzLmFuaW1hdGlvbkRhdGEgPSBudWxsXHJcblx0XHRcdFx0XHR0aGlzLmFuaW1hdGlvbiA9IG51bGxcclxuXHRcdFx0XHRcdGxldCB7IG9wYWNpdHksIHRyYW5zZm9ybSB9ID0gdGhpcy5zdHlsZUluaXQoZmFsc2UpXHJcblx0XHRcdFx0XHR0aGlzLm9wYWNpdHkgPSBvcGFjaXR5IHx8IDFcclxuXHRcdFx0XHRcdHRoaXMudHJhbnNmb3JtID0gdHJhbnNmb3JtXHJcblx0XHRcdFx0XHR0aGlzLiRlbWl0KCdjaGFuZ2UnLCB7XHJcblx0XHRcdFx0XHRcdGRldGFpbDogdGhpcy5pc1Nob3dcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHQvLyDlpITnkIbliqjnlLvlvIDlp4vliY3nmoTpu5jorqTmoLflvI9cclxuXHRcdHN0eWxlSW5pdCh0eXBlKSB7XHJcblx0XHRcdGxldCBzdHlsZXMgPSB7XHJcblx0XHRcdFx0dHJhbnNmb3JtOiAnJ1xyXG5cdFx0XHR9XHJcblx0XHRcdGxldCBidWlsZFN0eWxlID0gKHR5cGUsIG1vZGUpID0+IHtcclxuXHRcdFx0XHRpZiAobW9kZSA9PT0gJ2ZhZGUnKSB7XHJcblx0XHRcdFx0XHRzdHlsZXMub3BhY2l0eSA9IHRoaXMuYW5pbWF0aW9uVHlwZSh0eXBlKVttb2RlXVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRzdHlsZXMudHJhbnNmb3JtICs9IHRoaXMuYW5pbWF0aW9uVHlwZSh0eXBlKVttb2RlXSArICcgJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAodHlwZW9mIHRoaXMubW9kZUNsYXNzID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRcdGJ1aWxkU3R5bGUodHlwZSwgdGhpcy5tb2RlQ2xhc3MpXHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5tb2RlQ2xhc3MuZm9yRWFjaChtb2RlID0+IHtcclxuXHRcdFx0XHRcdGJ1aWxkU3R5bGUodHlwZSwgbW9kZSlcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBzdHlsZXNcclxuXHRcdH0sXHJcblx0XHQvLyDlpITnkIblhoXnva7nu4TlkIjliqjnlLtcclxuXHRcdHRyYW5mcm9tSW5pdCh0eXBlKSB7XHJcblx0XHRcdGxldCBidWlsZFRyYW5mcm9tID0gKHR5cGUsIG1vZGUpID0+IHtcclxuXHRcdFx0XHRsZXQgYW5pTnVtID0gbnVsbFxyXG5cdFx0XHRcdGlmIChtb2RlID09PSAnZmFkZScpIHtcclxuXHRcdFx0XHRcdGFuaU51bSA9IHR5cGUgPyAwIDogMVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRhbmlOdW0gPSB0eXBlID8gJy0xMDAlJyA6ICcwJ1xyXG5cdFx0XHRcdFx0aWYgKG1vZGUgPT09ICd6b29tLWluJykge1xyXG5cdFx0XHRcdFx0XHRhbmlOdW0gPSB0eXBlID8gMC44IDogMVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKG1vZGUgPT09ICd6b29tLW91dCcpIHtcclxuXHRcdFx0XHRcdFx0YW5pTnVtID0gdHlwZSA/IDEuMiA6IDFcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmIChtb2RlID09PSAnc2xpZGUtcmlnaHQnKSB7XHJcblx0XHRcdFx0XHRcdGFuaU51bSA9IHR5cGUgPyAnMTAwJScgOiAnMCdcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmIChtb2RlID09PSAnc2xpZGUtYm90dG9tJykge1xyXG5cdFx0XHRcdFx0XHRhbmlOdW0gPSB0eXBlID8gJzEwMCUnIDogJzAnXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuYW5pbWF0aW9uW3RoaXMuYW5pbWF0aW9uTW9kZSgpW21vZGVdXShhbmlOdW0pXHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHR5cGVvZiB0aGlzLm1vZGVDbGFzcyA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0XHRidWlsZFRyYW5mcm9tKHR5cGUsIHRoaXMubW9kZUNsYXNzKVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMubW9kZUNsYXNzLmZvckVhY2gobW9kZSA9PiB7XHJcblx0XHRcdFx0XHRidWlsZFRyYW5mcm9tKHR5cGUsIG1vZGUpXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIHRoaXMuYW5pbWF0aW9uXHJcblx0XHR9LFxyXG5cdFx0YW5pbWF0aW9uVHlwZSh0eXBlKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0ZmFkZTogdHlwZSA/IDEgOiAwLFxyXG5cdFx0XHRcdCdzbGlkZS10b3AnOiBgdHJhbnNsYXRlWSgke3R5cGUgPyAnMCcgOiAnLTEwMCUnfSlgLFxyXG5cdFx0XHRcdCdzbGlkZS1yaWdodCc6IGB0cmFuc2xhdGVYKCR7dHlwZSA/ICcwJyA6ICcxMDAlJ30pYCxcclxuXHRcdFx0XHQnc2xpZGUtYm90dG9tJzogYHRyYW5zbGF0ZVkoJHt0eXBlID8gJzAnIDogJzEwMCUnfSlgLFxyXG5cdFx0XHRcdCdzbGlkZS1sZWZ0JzogYHRyYW5zbGF0ZVgoJHt0eXBlID8gJzAnIDogJy0xMDAlJ30pYCxcclxuXHRcdFx0XHQnem9vbS1pbic6IGBzY2FsZVgoJHt0eXBlID8gMSA6IDAuOH0pIHNjYWxlWSgke3R5cGUgPyAxIDogMC44fSlgLFxyXG5cdFx0XHRcdCd6b29tLW91dCc6IGBzY2FsZVgoJHt0eXBlID8gMSA6IDEuMn0pIHNjYWxlWSgke3R5cGUgPyAxIDogMS4yfSlgXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHQvLyDlhoXnva7liqjnlLvnsbvlnovkuI7lrp7pmYXliqjnlLvlr7nlupTlrZflhbhcclxuXHRcdGFuaW1hdGlvbk1vZGUoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0ZmFkZTogJ29wYWNpdHknLFxyXG5cdFx0XHRcdCdzbGlkZS10b3AnOiAndHJhbnNsYXRlWScsXHJcblx0XHRcdFx0J3NsaWRlLXJpZ2h0JzogJ3RyYW5zbGF0ZVgnLFxyXG5cdFx0XHRcdCdzbGlkZS1ib3R0b20nOiAndHJhbnNsYXRlWScsXHJcblx0XHRcdFx0J3NsaWRlLWxlZnQnOiAndHJhbnNsYXRlWCcsXHJcblx0XHRcdFx0J3pvb20taW4nOiAnc2NhbGUnLFxyXG5cdFx0XHRcdCd6b29tLW91dCc6ICdzY2FsZSdcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdC8vIOmpvOWzsOi9rOS4reaoque6v1xyXG5cdFx0dG9MaW5lKG5hbWUpIHtcclxuXHRcdFx0cmV0dXJuIG5hbWUucmVwbGFjZSgvKFtBLVpdKS9nLCAnLSQxJykudG9Mb3dlckNhc2UoKVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZT48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///9\n");
/***/ }),
/* 10 */
/*!*********************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js ***!
  \*********************************************************************/
/*! exports provided: log, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log", function() { return log; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return formatLog; });
function typof (v) {
  var s = Object.prototype.toString.call(v)
  return s.substring(8, s.length - 1)
}
function isDebugMode () {
  /* eslint-disable no-undef */
  return typeof __channelId__ === 'string' && __channelId__
}
function jsonStringifyReplacer (k, p) {
  switch (typof(p)) {
    case 'Function':
      return 'function() { [native code] }'
    default :
      return p
  }
}
function log (type) {
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
    args[_key - 1] = arguments[_key]
  }
  console[type].apply(console, args)
}
function formatLog () {
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
    args[_key] = arguments[_key]
  }
  var type = args.shift()
  if (isDebugMode()) {
    args.push(args.pop().replace('at ', 'uni-app:///'))
    return console[type].apply(console, args)
  }
  var msgs = args.map(function (v) {
    var type = Object.prototype.toString.call(v).toLowerCase()
    if (type === '[object object]' || type === '[object array]') {
      try {
        v = '---BEGIN:JSON---' + JSON.stringify(v, jsonStringifyReplacer) + '---END:JSON---'
      } catch (e) {
        v = type
      }
    } else {
      if (v === null) {
        v = '---NULL---'
      } else if (v === undefined) {
        v = '---UNDEFINED---'
      } else {
        var vType = typof(v).toUpperCase()
        if (vType === 'NUMBER' || vType === 'BOOLEAN') {
          v = '---BEGIN:' + vType + '---' + v + '---END:' + vType + '---'
        } else {
          v = String(v)
        }
      }
    }
    return v
  })
  var msg = ''
  if (msgs.length > 1) {
    var lastMsg = msgs.pop()
    msg = msgs.join('---COMMA---')
    if (lastMsg.indexOf(' at ') === 0) {
      msg += lastMsg
    } else {
      msg += '---COMMA---' + lastMsg
    }
  } else {
    msg = msgs[0]
  }
  console[type](msg)
}
/***/ }),
/* 11 */
/*!********************************************************************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/uni_modules/uni-transition/components/uni-transition/createAnimation.js ***!
  \********************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.createAnimation = createAnimation;function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError(\"Cannot call a class as a function\");}}function _defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}function _createClass(Constructor, protoProps, staticProps) {if (protoProps) _defineProperties(Constructor.prototype, protoProps);if (staticProps) _defineProperties(Constructor, staticProps);return Constructor;} // const defaultOption = {\n// \tduration: 300,\n// \ttimingFunction: 'linear',\n// \tdelay: 0,\n// \ttransformOrigin: '50% 50% 0'\n// }\nvar\n\n\nMPAnimation = /*#__PURE__*/function () {\n  function MPAnimation(options, _this) {_classCallCheck(this, MPAnimation);\n    this.options = options;\n    this.animation = uni.createAnimation(options);\n    this.currentStepAnimates = {};\n    this.next = 0;\n    this.$ = _this;\n\n  }_createClass(MPAnimation, [{ key: \"_nvuePushAnimates\", value: function _nvuePushAnimates(\n\n    type, args) {\n      var aniObj = this.currentStepAnimates[this.next];\n      var styles = {};\n      if (!aniObj) {\n        styles = {\n          styles: {},\n          config: {} };\n\n      } else {\n        styles = aniObj;\n      }\n      if (animateTypes1.includes(type)) {\n        if (!styles.styles.transform) {\n          styles.styles.transform = '';\n        }\n        var unit = '';\n        if (type === 'rotate') {\n          unit = 'deg';\n        }\n        styles.styles.transform += \"\".concat(type, \"(\").concat(args + unit, \") \");\n      } else {\n        styles.styles[type] = \"\".concat(args);\n      }\n      this.currentStepAnimates[this.next] = styles;\n    } }, { key: \"_animateRun\", value: function _animateRun()\n    {var styles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var ref = this.$.$refs['ani'].ref;\n      if (!ref) return;\n      return new Promise(function (resolve, reject) {\n        nvueAnimation.transition(ref, _objectSpread({\n          styles: styles },\n        config),\n        function (res) {\n          resolve();\n        });\n      });\n    } }, { key: \"_nvueNextAnimate\", value: function _nvueNextAnimate(\n\n    animates) {var _this2 = this;var step = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;var fn = arguments.length > 2 ? arguments[2] : undefined;\n      var obj = animates[step];\n      if (obj) {var\n\n        styles =\n\n        obj.styles,config = obj.config;\n        this._animateRun(styles, config).then(function () {\n          step += 1;\n          _this2._nvueNextAnimate(animates, step, fn);\n        });\n      } else {\n        this.currentStepAnimates = {};\n        typeof fn === 'function' && fn();\n        this.isEnd = true;\n      }\n    } }, { key: \"step\", value: function step()\n\n    {var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      this.animation.step(config);\n\n\n\n\n\n\n      return this;\n    } }, { key: \"run\", value: function run(\n\n    fn) {\n\n      this.$.animationData = this.animation.export();\n      this.$.timer = setTimeout(function () {\n        typeof fn === 'function' && fn();\n      }, this.$.durationTime);\n\n\n\n\n\n\n\n\n    } }]);return MPAnimation;}();\n\n\n\nvar animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d',\n'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY',\n'translateZ'];\n\nvar animateTypes2 = ['opacity', 'backgroundColor'];\nvar animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom'];\nanimateTypes1.concat(animateTypes2, animateTypes3).forEach(function (type) {\n  MPAnimation.prototype[type] = function () {var _this$animation;\n\n    (_this$animation = this.animation)[type].apply(_this$animation, arguments);\n\n\n\n\n    return this;\n  };\n});\n\nfunction createAnimation(option, _this) {\n  if (!_this) return;\n  clearTimeout(_this.timer);\n  return new MPAnimation(option, _this);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXRyYW5zaXRpb24vY29tcG9uZW50cy91bmktdHJhbnNpdGlvbi9jcmVhdGVBbmltYXRpb24uanMiXSwibmFtZXMiOlsiTVBBbmltYXRpb24iLCJvcHRpb25zIiwiX3RoaXMiLCJhbmltYXRpb24iLCJ1bmkiLCJjcmVhdGVBbmltYXRpb24iLCJjdXJyZW50U3RlcEFuaW1hdGVzIiwibmV4dCIsIiQiLCJ0eXBlIiwiYXJncyIsImFuaU9iaiIsInN0eWxlcyIsImNvbmZpZyIsImFuaW1hdGVUeXBlczEiLCJpbmNsdWRlcyIsInRyYW5zZm9ybSIsInVuaXQiLCJyZWYiLCIkcmVmcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwibnZ1ZUFuaW1hdGlvbiIsInRyYW5zaXRpb24iLCJyZXMiLCJhbmltYXRlcyIsInN0ZXAiLCJmbiIsIm9iaiIsIl9hbmltYXRlUnVuIiwidGhlbiIsIl9udnVlTmV4dEFuaW1hdGUiLCJpc0VuZCIsImFuaW1hdGlvbkRhdGEiLCJleHBvcnQiLCJ0aW1lciIsInNldFRpbWVvdXQiLCJkdXJhdGlvblRpbWUiLCJhbmltYXRlVHlwZXMyIiwiYW5pbWF0ZVR5cGVzMyIsImNvbmNhdCIsImZvckVhY2giLCJwcm90b3R5cGUiLCJvcHRpb24iLCJjbGVhclRpbWVvdXQiXSwibWFwcGluZ3MiOiJpeURBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSU1BLFc7QUFDTCx1QkFBWUMsT0FBWixFQUFxQkMsS0FBckIsRUFBNEI7QUFDM0IsU0FBS0QsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsU0FBS0UsU0FBTCxHQUFpQkMsR0FBRyxDQUFDQyxlQUFKLENBQW9CSixPQUFwQixDQUFqQjtBQUNBLFNBQUtLLG1CQUFMLEdBQTJCLEVBQTNCO0FBQ0EsU0FBS0MsSUFBTCxHQUFZLENBQVo7QUFDQSxTQUFLQyxDQUFMLEdBQVNOLEtBQVQ7O0FBRUEsRzs7QUFFaUJPLFEsRUFBTUMsSSxFQUFN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QSxLOzs7O0FBSUYsSUFBTXhCLGFBQWEsR0FBRyxDQUFDLFFBQUQsRUFBVyxVQUFYLEVBQXVCLFFBQXZCLEVBQWlDLFVBQWpDLEVBQTZDLFNBQTdDLEVBQXdELFNBQXhELEVBQW1FLFNBQW5FLEVBQThFLE9BQTlFLEVBQXVGLFNBQXZGO0FBQ3JCLFFBRHFCLEVBQ1gsUUFEVyxFQUNELFFBREMsRUFDUyxNQURULEVBQ2lCLE9BRGpCLEVBQzBCLE9BRDFCLEVBQ21DLFdBRG5DLEVBQ2dELGFBRGhELEVBQytELFlBRC9ELEVBQzZFLFlBRDdFO0FBRXJCLFlBRnFCLENBQXRCOztBQUlBLElBQU15QixhQUFhLEdBQUcsQ0FBQyxTQUFELEVBQVksaUJBQVosQ0FBdEI7QUFDQSxJQUFNQyxhQUFhLEdBQUcsQ0FBQyxPQUFELEVBQVUsUUFBVixFQUFvQixNQUFwQixFQUE0QixPQUE1QixFQUFxQyxLQUFyQyxFQUE0QyxRQUE1QyxDQUF0QjtBQUNBMUIsYUFBYSxDQUFDMkIsTUFBZCxDQUFxQkYsYUFBckIsRUFBb0NDLGFBQXBDLEVBQW1ERSxPQUFuRCxDQUEyRCxVQUFBakMsSUFBSSxFQUFJO0FBQ2xFVCxhQUFXLENBQUMyQyxTQUFaLENBQXNCbEMsSUFBdEIsSUFBOEIsWUFBa0I7O0FBRS9DLDRCQUFLTixTQUFMLEVBQWVNLElBQWY7Ozs7O0FBS0EsV0FBTyxJQUFQO0FBQ0EsR0FSRDtBQVNBLENBVkQ7O0FBWU8sU0FBU0osZUFBVCxDQUF5QnVDLE1BQXpCLEVBQWlDMUMsS0FBakMsRUFBd0M7QUFDOUMsTUFBRyxDQUFDQSxLQUFKLEVBQVc7QUFDWDJDLGNBQVksQ0FBQzNDLEtBQUssQ0FBQ2tDLEtBQVAsQ0FBWjtBQUNBLFNBQU8sSUFBSXBDLFdBQUosQ0FBZ0I0QyxNQUFoQixFQUF3QjFDLEtBQXhCLENBQVA7QUFDQSIsImZpbGUiOiIxMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGNvbnN0IGRlZmF1bHRPcHRpb24gPSB7XHJcbi8vIFx0ZHVyYXRpb246IDMwMCxcclxuLy8gXHR0aW1pbmdGdW5jdGlvbjogJ2xpbmVhcicsXHJcbi8vIFx0ZGVsYXk6IDAsXHJcbi8vIFx0dHJhbnNmb3JtT3JpZ2luOiAnNTAlIDUwJSAwJ1xyXG4vLyB9XHJcblxyXG5cclxuXHJcbmNsYXNzIE1QQW5pbWF0aW9uIHtcclxuXHRjb25zdHJ1Y3RvcihvcHRpb25zLCBfdGhpcykge1xyXG5cdFx0dGhpcy5vcHRpb25zID0gb3B0aW9uc1xyXG5cdFx0dGhpcy5hbmltYXRpb24gPSB1bmkuY3JlYXRlQW5pbWF0aW9uKG9wdGlvbnMpXHJcblx0XHR0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMgPSB7fVxyXG5cdFx0dGhpcy5uZXh0ID0gMFxyXG5cdFx0dGhpcy4kID0gX3RoaXNcclxuXHJcblx0fVxyXG5cclxuXHRfbnZ1ZVB1c2hBbmltYXRlcyh0eXBlLCBhcmdzKSB7XHJcblx0XHRsZXQgYW5pT2JqID0gdGhpcy5jdXJyZW50U3RlcEFuaW1hdGVzW3RoaXMubmV4dF1cclxuXHRcdGxldCBzdHlsZXMgPSB7fVxyXG5cdFx0aWYgKCFhbmlPYmopIHtcclxuXHRcdFx0c3R5bGVzID0ge1xyXG5cdFx0XHRcdHN0eWxlczoge30sXHJcblx0XHRcdFx0Y29uZmlnOiB7fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRzdHlsZXMgPSBhbmlPYmpcclxuXHRcdH1cclxuXHRcdGlmIChhbmltYXRlVHlwZXMxLmluY2x1ZGVzKHR5cGUpKSB7XHJcblx0XHRcdGlmICghc3R5bGVzLnN0eWxlcy50cmFuc2Zvcm0pIHtcclxuXHRcdFx0XHRzdHlsZXMuc3R5bGVzLnRyYW5zZm9ybSA9ICcnXHJcblx0XHRcdH1cclxuXHRcdFx0bGV0IHVuaXQgPSAnJ1xyXG5cdFx0XHRpZih0eXBlID09PSAncm90YXRlJyl7XHJcblx0XHRcdFx0dW5pdCA9ICdkZWcnXHJcblx0XHRcdH1cclxuXHRcdFx0c3R5bGVzLnN0eWxlcy50cmFuc2Zvcm0gKz0gYCR7dHlwZX0oJHthcmdzK3VuaXR9KSBgXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRzdHlsZXMuc3R5bGVzW3R5cGVdID0gYCR7YXJnc31gXHJcblx0XHR9XHJcblx0XHR0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXNbdGhpcy5uZXh0XSA9IHN0eWxlc1xyXG5cdH1cclxuXHRfYW5pbWF0ZVJ1bihzdHlsZXMgPSB7fSwgY29uZmlnID0ge30pIHtcclxuXHRcdGxldCByZWYgPSB0aGlzLiQuJHJlZnNbJ2FuaSddLnJlZlxyXG5cdFx0aWYgKCFyZWYpIHJldHVyblxyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0bnZ1ZUFuaW1hdGlvbi50cmFuc2l0aW9uKHJlZiwge1xyXG5cdFx0XHRcdHN0eWxlcyxcclxuXHRcdFx0XHQuLi5jb25maWdcclxuXHRcdFx0fSwgcmVzID0+IHtcclxuXHRcdFx0XHRyZXNvbHZlKClcclxuXHRcdFx0fSlcclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHRfbnZ1ZU5leHRBbmltYXRlKGFuaW1hdGVzLCBzdGVwID0gMCwgZm4pIHtcclxuXHRcdGxldCBvYmogPSBhbmltYXRlc1tzdGVwXVxyXG5cdFx0aWYgKG9iaikge1xyXG5cdFx0XHRsZXQge1xyXG5cdFx0XHRcdHN0eWxlcyxcclxuXHRcdFx0XHRjb25maWdcclxuXHRcdFx0fSA9IG9ialxyXG5cdFx0XHR0aGlzLl9hbmltYXRlUnVuKHN0eWxlcywgY29uZmlnKS50aGVuKCgpID0+IHtcclxuXHRcdFx0XHRzdGVwICs9IDFcclxuXHRcdFx0XHR0aGlzLl9udnVlTmV4dEFuaW1hdGUoYW5pbWF0ZXMsIHN0ZXAsIGZuKVxyXG5cdFx0XHR9KVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5jdXJyZW50U3RlcEFuaW1hdGVzID0ge31cclxuXHRcdFx0dHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICYmIGZuKClcclxuXHRcdFx0dGhpcy5pc0VuZCA9IHRydWVcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHN0ZXAoY29uZmlnID0ge30pIHtcclxuXHJcblx0XHR0aGlzLmFuaW1hdGlvbi5zdGVwKGNvbmZpZylcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHRcdHJldHVybiB0aGlzXHJcblx0fVxyXG5cclxuXHRydW4oZm4pIHtcclxuXHJcblx0XHR0aGlzLiQuYW5pbWF0aW9uRGF0YSA9IHRoaXMuYW5pbWF0aW9uLmV4cG9ydCgpXHJcblx0XHR0aGlzLiQudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICYmIGZuKClcclxuXHRcdH0sIHRoaXMuJC5kdXJhdGlvblRpbWUpXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHR9XHJcbn1cclxuXHJcblxyXG5jb25zdCBhbmltYXRlVHlwZXMxID0gWydtYXRyaXgnLCAnbWF0cml4M2QnLCAncm90YXRlJywgJ3JvdGF0ZTNkJywgJ3JvdGF0ZVgnLCAncm90YXRlWScsICdyb3RhdGVaJywgJ3NjYWxlJywgJ3NjYWxlM2QnLFxyXG5cdCdzY2FsZVgnLCAnc2NhbGVZJywgJ3NjYWxlWicsICdza2V3JywgJ3NrZXdYJywgJ3NrZXdZJywgJ3RyYW5zbGF0ZScsICd0cmFuc2xhdGUzZCcsICd0cmFuc2xhdGVYJywgJ3RyYW5zbGF0ZVknLFxyXG5cdCd0cmFuc2xhdGVaJ1xyXG5dXHJcbmNvbnN0IGFuaW1hdGVUeXBlczIgPSBbJ29wYWNpdHknLCAnYmFja2dyb3VuZENvbG9yJ11cclxuY29uc3QgYW5pbWF0ZVR5cGVzMyA9IFsnd2lkdGgnLCAnaGVpZ2h0JywgJ2xlZnQnLCAncmlnaHQnLCAndG9wJywgJ2JvdHRvbSddXHJcbmFuaW1hdGVUeXBlczEuY29uY2F0KGFuaW1hdGVUeXBlczIsIGFuaW1hdGVUeXBlczMpLmZvckVhY2godHlwZSA9PiB7XHJcblx0TVBBbmltYXRpb24ucHJvdG90eXBlW3R5cGVdID0gZnVuY3Rpb24oLi4uYXJncykge1xyXG5cclxuXHRcdHRoaXMuYW5pbWF0aW9uW3R5cGVdKC4uLmFyZ3MpXHJcblxyXG5cclxuXHJcblxyXG5cdFx0cmV0dXJuIHRoaXNcclxuXHR9XHJcbn0pXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQW5pbWF0aW9uKG9wdGlvbiwgX3RoaXMpIHtcclxuXHRpZighX3RoaXMpIHJldHVyblxyXG5cdGNsZWFyVGltZW91dChfdGhpcy50aW1lcilcclxuXHRyZXR1cm4gbmV3IE1QQW5pbWF0aW9uKG9wdGlvbiwgX3RoaXMpXHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///11\n");
/***/ }),
/* 12 */
/*!**********************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js ***!
  \**********************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return normalizeComponent; });
/* globals __VUE_SSR_CONTEXT__ */
// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
// This module is a runtime utility for cleaner component module output and will
// be included in the final webpack user bundle.
function normalizeComponent (
  scriptExports,
  render,
  staticRenderFns,
  functionalTemplate,
  injectStyles,
  scopeId,
  moduleIdentifier, /* server only */
  shadowMode, /* vue-cli only */
  components, // fixed by xxxxxx auto components
  renderjs // fixed by xxxxxx renderjs
) {
  // Vue.extend constructor export interop
  var options = typeof scriptExports === 'function'
    ? scriptExports.options
    : scriptExports
  // fixed by xxxxxx auto components
  if (components) {
    if (!options.components) {
      options.components = {}
    }
    var hasOwn = Object.prototype.hasOwnProperty
    for (var name in components) {
      if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {
        options.components[name] = components[name]
      }
    }
  }
  // fixed by xxxxxx renderjs
  if (renderjs) {
    (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {
      this[renderjs.__module] = this
    });
    (options.mixins || (options.mixins = [])).push(renderjs)
  }
  // render functions
  if (render) {
    options.render = render
    options.staticRenderFns = staticRenderFns
    options._compiled = true
  }
  // functional template
  if (functionalTemplate) {
    options.functional = true
  }
  // scopedId
  if (scopeId) {
    options._scopeId = 'data-v-' + scopeId
  }
  var hook
  if (moduleIdentifier) { // server build
    hook = function (context) {
      // 2.3 injection
      context =
        context || // cached call
        (this.$vnode && this.$vnode.ssrContext) || // stateful
        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
      // 2.2 with runInNewContext: true
      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
        context = __VUE_SSR_CONTEXT__
      }
      // inject component styles
      if (injectStyles) {
        injectStyles.call(this, context)
      }
      // register component module identifier for async chunk inferrence
      if (context && context._registeredComponents) {
        context._registeredComponents.add(moduleIdentifier)
      }
    }
    // used by ssr in case component is cached and beforeCreate
    // never gets called
    options._ssrRegister = hook
  } else if (injectStyles) {
    hook = shadowMode
      ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
      : injectStyles
  }
  if (hook) {
    if (options.functional) {
      // for template-only hot-reload because in that case the render fn doesn't
      // go through the normalizer
      options._injectStyles = hook
      // register for functioal component in vue file
      var originalRender = options.render
      options.render = function renderWithStyleInjection (h, context) {
        hook.call(context)
        return originalRender(h, context)
      }
    } else {
      // inject component registration as beforeCreate hook
      var existing = options.beforeCreate
      options.beforeCreate = existing
        ? [].concat(existing, hook)
        : [hook]
    }
  }
  return {
    exports: scriptExports,
    options: options
  }
}
/***/ }),
/* 13 */
/*!***********************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/components/y-box/y-box.vue ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./y-box.vue?vue&type=template&id=799f6118& */ 14);\n/* harmony import */ var _y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./y-box.vue?vue&type=script&lang=js& */ 16);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 12);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"components/y-box/y-box.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0g7QUFDbEg7QUFDeUQ7QUFDTDs7O0FBR3BEO0FBQ2tOO0FBQ2xOLGdCQUFnQix5TkFBVTtBQUMxQixFQUFFLDJFQUFNO0FBQ1IsRUFBRSxnRkFBTTtBQUNSLEVBQUUseUZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsb0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3ktYm94LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OTlmNjExOCZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL3ktYm94LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4veS1ib3gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi93b3Jrc3BhY3MvaGIvSEJ1aWxkZXJYLjMuMy4xMy4yMDIyMDMxNC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwiY29tcG9uZW50cy95LWJveC95LWJveC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///13\n");
/***/ }),
/* 14 */
/*!******************************************************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/components/y-box/y-box.vue?vue&type=template&id=799f6118& ***!
  \******************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./y-box.vue?vue&type=template&id=799f6118& */ 15);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__["components"]; });
/***/ }),
/* 15 */
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace_uni/private/Monitor-APP/components/y-box/y-box.vue?vue&type=template&id=799f6118& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function() {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    { staticClass: _vm._$s(0, "sc", "list"), attrs: { _i: 0 } },
    [
      _c("view", {
        staticClass: _vm._$s(1, "sc", "box-border box-border1"),
        attrs: { _i: 1 }
      }),
      _c("view", {
        staticClass: _vm._$s(2, "sc", "box-border box-border2"),
        attrs: { _i: 2 }
      }),
      _c("view", {
        staticClass: _vm._$s(3, "sc", "box-border box-border3"),
        attrs: { _i: 3 }
      }),
      _c("view", {
        staticClass: _vm._$s(4, "sc", "box-border box-border4"),
        attrs: { _i: 4 }
      }),
      _vm._t("default", null, { _i: 5 })
    ],
    2
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
/***/ }),
/* 16 */
/*!************************************************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/components/y-box/y-box.vue?vue&type=script&lang=js& ***!
  \************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./y-box.vue?vue&type=script&lang=js& */ 17);\n/* harmony import */ var _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZ0QixDQUFnQiwydUJBQUcsRUFBQyIsImZpbGUiOiIxNi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNzL2hiL0hCdWlsZGVyWC4zLjMuMTMuMjAyMjAzMTQuZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjcy9oYi9IQnVpbGRlclguMy4zLjEzLjIwMjIwMzE0LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtMSEuLi8uLi8uLi8uLi8uLi93b3Jrc3BhY3MvaGIvSEJ1aWxkZXJYLjMuMy4xMy4yMDIyMDMxNC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjcy9oYi9IQnVpbGRlclguMy4zLjEzLjIwMjIwMzE0LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4veS1ib3gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjcy9oYi9IQnVpbGRlclguMy4zLjEzLjIwMjIwMzE0LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi93b3Jrc3BhY3MvaGIvSEJ1aWxkZXJYLjMuMy4xMy4yMDIyMDMxNC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LTEhLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNzL2hiL0hCdWlsZGVyWC4zLjMuMTMuMjAyMjAzMTQuZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi93b3Jrc3BhY3MvaGIvSEJ1aWxkZXJYLjMuMy4xMy4yMDIyMDMxNC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3ktYm94LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///16\n");
/***/ }),
/* 17 */
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace_uni/private/Monitor-APP/components/y-box/y-box.vue?vue&type=script&lang=js& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; //\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default =\n{\n  props: {\n    title: {\n      type: [String, Number],\n      default: '标题' } },\n\n\n  computed: {\n    titleText: function titleText() {\n      return this.title;\n    } },\n\n  data: function data() {\n    return {};\n\n\n  } };exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vY29tcG9uZW50cy95LWJveC95LWJveC52dWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFXQTtBQUNBO0FBQ0E7QUFDQSw0QkFEQTtBQUVBLG1CQUZBLEVBREEsRUFEQTs7O0FBT0E7QUFDQSxhQURBLHVCQUNBO0FBQ0E7QUFDQSxLQUhBLEVBUEE7O0FBWUEsTUFaQSxrQkFZQTtBQUNBOzs7QUFHQSxHQWhCQSxFIiwiZmlsZSI6IjE3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwibGlzdFwiPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXIxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXIyXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXIzXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXI0XCI+PC92aWV3PlxyXG5cdFx0PHNsb3QvPlxyXG5cdDwvdmlldz5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0cHJvcHM6IHtcclxuXHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHR0eXBlOiBbU3RyaW5nLE51bWJlcl0sXHJcblx0XHRcdFx0ZGVmYXVsdDogJ+agh+mimCdcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0XHRjb21wdXRlZDoge1xyXG5cdFx0XHR0aXRsZVRleHQoKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMudGl0bGUgXHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHRcdFxyXG5cdH1cbjwvc2NyaXB0PlxuXG48c3R5bGU+XHJcblx0Lmxpc3Qge1xyXG5cdFx0d2lkdGg6IGNhbGMoMTAwJSAtIDAuMnZoKTtcclxuXHRcdGhlaWdodDogY2FsYygxMDAlIC0gMC4ydmgpO1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0Ym9yZGVyOiAwLjF2aCBzb2xpZCByZ2JhKDIwLCA4MCwgMTM2LCAxKTtcclxuXHR9XHJcblx0LmJveC1ib3JkZXIge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzRDRDk2NDsgKi9cclxuXHRcdHdpZHRoOiAxLjV2aDtcclxuXHRcdGhlaWdodDogMS41dmg7XHJcblx0fVxyXG5cdC5ib3gtYm9yZGVyMSB7XHJcblx0XHR0b3A6IDA7XHJcblx0XHRsZWZ0OiAwO1xyXG5cdFx0Ym9yZGVyLWxlZnQ6IDAuMXZoIHNvbGlkICMzMWM0YzQ7XHJcblx0XHRib3JkZXItdG9wOiAwLjF2aCBzb2xpZCAjMzFjNGM0O1xyXG5cdH1cclxuXHQuYm94LWJvcmRlcjIge1xyXG5cdFx0dG9wOiAwO1xyXG5cdFx0cmlnaHQ6IDA7XHJcblx0XHRib3JkZXItcmlnaHQ6IDAuMXZoIHNvbGlkICMzMWM0YzQ7XHJcblx0XHRib3JkZXItdG9wOiAwLjF2aCBzb2xpZCAjMzFjNGM0O1xyXG5cdH1cclxuXHQuYm94LWJvcmRlcjMge1xyXG5cdFx0Ym90dG9tOiAwO1xyXG5cdFx0bGVmdDogMDtcclxuXHRcdGJvcmRlci1ib3R0b206IDAuMXZoIHNvbGlkICMzMWM0YzQ7XHJcblx0XHRib3JkZXItbGVmdDogMC4xdmggc29saWQgIzMxYzRjNDtcclxuXHR9XHJcblx0LmJveC1ib3JkZXI0IHtcclxuXHRcdGJvdHRvbTogMDtcclxuXHRcdHJpZ2h0OiAwO1xyXG5cdFx0Ym9yZGVyLXJpZ2h0OiAwLjF2aCBzb2xpZCAjMzFjNGM0O1xyXG5cdFx0Ym9yZGVyLWJvdHRvbTogMC4xdmggc29saWQgIzMxYzRjNDtcclxuXHR9XG48L3N0eWxlPiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///17\n");
/***/ }),
/* 18 */
/*!**********************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/static/a1.png ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = \"/static/a1.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjE4LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvYTEucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///18\n");
/***/ }),
/* 19 */
/*!****************************************************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/pages/home/home.vue?vue&type=script&lang=js&mpType=page ***!
  \****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./home.vue?vue&type=script&lang=js&mpType=page */ 20);\n/* harmony import */ var _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXV1QixDQUFnQixxdkJBQUcsRUFBQyIsImZpbGUiOiIxOS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNzL2hiL0hCdWlsZGVyWC4zLjMuMTMuMjAyMjAzMTQuZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjcy9oYi9IQnVpbGRlclguMy4zLjEzLjIwMjIwMzE0LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtMSEuLi8uLi8uLi8uLi8uLi93b3Jrc3BhY3MvaGIvSEJ1aWxkZXJYLjMuMy4xMy4yMDIyMDMxNC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjcy9oYi9IQnVpbGRlclguMy4zLjEzLjIwMjIwMzE0LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vaG9tZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi93b3Jrc3BhY3MvaGIvSEJ1aWxkZXJYLjMuMy4xMy4yMDIyMDMxNC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNzL2hiL0hCdWlsZGVyWC4zLjMuMTMuMjAyMjAzMTQuZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi0xIS4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjcy9oYi9IQnVpbGRlclguMy4zLjEzLjIwMjIwMzE0LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNzL2hiL0hCdWlsZGVyWC4zLjMuMTMuMjAyMjAzMTQuZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ob21lLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///19\n");
/***/ }),
/* 20 */
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace_uni/private/Monitor-APP/pages/home/home.vue?vue&type=script&lang=js&mpType=page ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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{\n  data: function data() {\n    return {\n      homeViewShow: true,\n      modeClass: ['fade', 'slide-top'],\n      homeView: {\n        justifyContent: 'center',\n        alignItems: 'center',\n        width: '100vw',\n        height: '100vh',\n        borderRadius: '5px',\n        textAlign: 'center',\n        backgroundColor: '#4cd964',\n        boxShadow: '0 0 5px 1px rgba(0,0,0,0.2)' },\n\n      duration: 1000,\n      calendar: '',\n      xDistance: '',\n      yDistance: '',\n      xDuration: '',\n      yDuration: '' };\n\n  },\n  onShow: function onShow() {\n    // 隐藏时间,电量,信号等\n    plus.navigator.setFullscreen(true);\n  },\n  onLoad: function onLoad() {var _this = this;\n    this.getDate();\n    setInterval(function () {\n      _this.getDate();\n    }, 1000);\n    setInterval(function () {\n      // this.handle(['fade', 'slide-top'])\n    }, 4000);\n  },\n  methods: {\n    handle: function handle(type) {\n      this.homeViewShow = !this.homeViewShow;\n      this.modeClass = type;\n    },\n    // 日历\n    getDate: function getDate() {\n      var dt = new Date();\n      var year, month, day, hours, minutes, seconds, weeks;\n      year = dt.getFullYear();\n      month = dt.getMonth() + 1 < 10 ? '0' + (dt.getMonth() + 1) : dt.getMonth() + 1;\n      day = dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate();\n      hours = dt.getHours() < 10 ? '0' + dt.getHours() : dt.getHours();\n      minutes = dt.getMinutes() < 10 ? '0' + dt.getMinutes() : dt.getMinutes();\n      seconds = dt.getSeconds() < 10 ? '0' + dt.getSeconds() : dt.getSeconds();\n      weeks = dt.getDay();\n      switch (weeks) {\n        case 0:weeks = \"星期日\";break;\n        case 1:weeks = \"星期一\";break;\n        case 2:weeks = \"星期二\";break;\n        case 3:weeks = \"星期三\";break;\n        case 4:weeks = \"星期四\";break;\n        case 5:weeks = \"星期五\";break;\n        default:weeks = \"星期六\";}\n\n      this.calendar = year + \"年\" + month + \"月\" + day + \"日 \" + hours + \":\" + minutes + \":\" + seconds + \" \" + weeks;\n    } } };exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaG9tZS9ob21lLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVFQTtBQUNBLE1BREEsa0JBQ0E7QUFDQTtBQUNBLHdCQURBO0FBRUEsc0NBRkE7QUFHQTtBQUNBLGdDQURBO0FBRUEsNEJBRkE7QUFHQSxzQkFIQTtBQUlBLHVCQUpBO0FBS0EsMkJBTEE7QUFNQSwyQkFOQTtBQU9BLGtDQVBBO0FBUUEsZ0RBUkEsRUFIQTs7QUFhQSxvQkFiQTtBQWNBLGtCQWRBO0FBZUEsbUJBZkE7QUFnQkEsbUJBaEJBO0FBaUJBLG1CQWpCQTtBQWtCQSxtQkFsQkE7O0FBb0JBLEdBdEJBO0FBdUJBLFFBdkJBLG9CQXVCQTtBQUNBO0FBQ0E7QUFDQSxHQTFCQTtBQTJCQSxRQTNCQSxvQkEyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUZBLEVBRUEsSUFGQTtBQUdBO0FBQ0E7QUFDQSxLQUZBLEVBRUEsSUFGQTtBQUdBLEdBbkNBO0FBb0NBO0FBQ0EsVUFEQSxrQkFDQSxJQURBLEVBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FKQTtBQUtBO0FBQ0EsV0FOQSxxQkFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBUEE7O0FBU0E7QUFDQSxLQTFCQSxFQXBDQSxFIiwiZmlsZSI6IjIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblx0XHQ8IS0tIOS4u+inhuWbviAtLT5cclxuXHRcdDx1bmktdHJhbnNpdGlvbiA6ZHVyYXRpb249XCJkdXJhdGlvblwiIDptb2RlLWNsYXNzPVwibW9kZUNsYXNzXCIgOnN0eWxlcz1cImhvbWVWaWV3XCIgOnNob3c9XCJob21lVmlld1Nob3dcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJob21lLXZpZXdcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImhlYWRcIj5cclxuXHRcdFx0XHRcdDx0ZXh0PuiHquWKqOS7k+W6k1dDU+ebkeaOp+W5s+WPsDwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSDml6XljoYgLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aW1lLXRvb2xzXCI+e3tjYWxlbmRhcn19PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLWxlZnRcIj48L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24tcmlnaHRcIj48L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSDkuLvkvZMgLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtYWluXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm1pYW4taXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm1pYW4taXRlbS1ib3hcIj5cclxuXHRcdFx0XHRcdFx0XHQ8eS1ib3g+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImNvbnRlbnQtaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dD7oh6rliqjljJbnq4vkvZPku5PlupM8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwiZW5nbGlzaFwiPkF1dG9tYXRpYyBTdG9yYWdlYW5kIFJldHJpZXZhbCBTeXN0ZW08L3A+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwiaW50cm9kdWNlLWNvbnRlbnRcIj4gIOWIqeeUqOeri+S9k+S7k+W6k+iuvuWkh+WPr+WunueOsOS7k+W6k+mrmOWxguWQiOeQhuWMluOAgeWtmOWPluiHquWKqOWMluOAgeaTjeS9nOeugOS+v+WMlu+8m1xyXG5cdFx0XHRcdFx0XHRcdFx0XHToh6rliqjljJbnq4vkvZPku5PlupPmmK/lvZPliY3mioDmnK/msLTlubPovoPpq5jnmoTlvaLlvI/jgIJcclxuXHRcdFx0XHRcdFx0XHRcdFx06Ieq5Yqo5YyW56uL5L2T5LuT5bqT55qE5Li75L2T55Sx6LSn5p6244CB5be36YGT5byP5aCG5Z6b6LW36YeN5py644CB5YWl77yI5Ye677yJ5bqT5bel5L2c5Y+w5ZKM6Ieq5Yqo6L+Q6L+b77yI5Ye677yJ5Y+K5pON5L2c5o6n5Yi257O757uf57uE5oiQ44CCXHJcblx0XHRcdFx0XHRcdFx0XHRcdOi0p+aetuaYr+mSoue7k+aehOaIlumSoueti+a3t+WHneWcn+e7k+aehOeahOW7uuetkeeJqeaIlue7k+aehOS9k++8jOi0p+aetuWGheaYr+agh+WHhuWwuuWvuOeahOi0p+S9jeepuumXtO+8jOW3t+mBk+WghuWem+i1t+mHjeacuuepv+ihjOS6jui0p1xyXG5cdFx0XHRcdFx0XHRcdFx0XHTmnrbkuYvpl7TnmoTlt7fpgZPkuK3vvIzlrozmiJDlrZjjgIHlj5botKfnmoTlt6XkvZzjgILnrqHnkIbkuIrph4fnlKjorqHnrpfmnLrlj4rmnaHlvaLnoIHmioDmnK/jgII8L3A+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImNvbnRlbnQtaXRlbSBpbWdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQ+5LuT5bqT5pWw5o2uPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cImVuZ2xpc2hcIj53YXJlaG91c2UgZGF0YTwvcD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJjaGFyZ2UtaW5mby1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2ExLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiY291bnRcIj57e3hEaXN0YW5jZX19PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInVuaXRcIj5tPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXc+57Sv6K6h6LWw6KGM6Led56a7KOexsyk8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC95LWJveD5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtaWFuLWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtaWFuLWl0ZW0tYm94XCI+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDM4JTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx5LWJveD48L3ktYm94PlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDogMiU7XCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiAzOCU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8eS1ib3g+PC95LWJveD5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDIlO1wiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDogMjAlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHktYm94PjwveS1ib3g+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3VuaS10cmFuc2l0aW9uPlxyXG5cdFx0PCEtLSDlhajmnb8v5ouj5paZ5L+h5oGvIC0tPlxyXG5cdFx0PCEtLSA8dmlldyBjbGFzcz1cImluZm9cIj5cclxuXHRcdFx0XHJcblx0XHQ8L3ZpZXc+IC0tPlxyXG5cdFx0PCEtLSDlvILluLjkv6Hmga8gLS0+XHJcblx0XHQ8IS0tIDx2aWV3IGNsYXNzPVwiZXJyb3ItaW5mb1wiPjwvdmlldz4gLS0+XHJcblx0PC92aWV3PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGhvbWVWaWV3U2hvdzogdHJ1ZSxcclxuXHRcdFx0XHRtb2RlQ2xhc3M6IFsnZmFkZScsICdzbGlkZS10b3AnXSxcclxuXHRcdFx0XHRob21lVmlldzoge1xyXG5cdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxyXG5cdFx0XHRcdFx0YWxpZ25JdGVtczogJ2NlbnRlcicsXHJcblx0XHRcdFx0XHR3aWR0aDogJzEwMHZ3JyxcclxuXHRcdFx0XHRcdGhlaWdodDogJzEwMHZoJyxcclxuXHRcdFx0XHRcdGJvcmRlclJhZGl1czogJzVweCcsXHJcblx0XHRcdFx0XHR0ZXh0QWxpZ246ICdjZW50ZXInLFxyXG5cdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiAnIzRjZDk2NCcsXHJcblx0XHRcdFx0XHRib3hTaGFkb3c6ICcwIDAgNXB4IDFweCByZ2JhKDAsMCwwLDAuMiknXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRkdXJhdGlvbjogMTAwMCxcclxuXHRcdFx0XHRjYWxlbmRhcjogJycsXHJcblx0XHRcdFx0eERpc3RhbmNlOiAnJyxcclxuXHRcdFx0XHR5RGlzdGFuY2U6ICcnLFxyXG5cdFx0XHRcdHhEdXJhdGlvbjogJycsXHJcblx0XHRcdFx0eUR1cmF0aW9uOiAnJyxcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG9uU2hvdygpIHtcclxuXHRcdFx0Ly8g6ZqQ6JeP5pe26Ze0LOeUtemHjyzkv6Hlj7fnrYlcclxuXHRcdFx0cGx1cy5uYXZpZ2F0b3Iuc2V0RnVsbHNjcmVlbih0cnVlKVxyXG5cdFx0fSxcclxuXHRcdG9uTG9hZCgpIHtcclxuXHRcdFx0dGhpcy5nZXREYXRlKClcclxuXHRcdFx0c2V0SW50ZXJ2YWwoKCk9PntcclxuXHRcdFx0XHR0aGlzLmdldERhdGUoKVxyXG5cdFx0XHR9LDEwMDApXHJcblx0XHRcdHNldEludGVydmFsKCgpPT57XHJcblx0XHRcdFx0Ly8gdGhpcy5oYW5kbGUoWydmYWRlJywgJ3NsaWRlLXRvcCddKVxyXG5cdFx0XHR9LDQwMDApXHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRoYW5kbGUodHlwZSkge1xyXG5cdFx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gIXRoaXMuaG9tZVZpZXdTaG93XHJcblx0XHRcdFx0dGhpcy5tb2RlQ2xhc3MgPSB0eXBlXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOaXpeWOhlxyXG5cdFx0XHRnZXREYXRlKCkge1xyXG5cdFx0XHRcdHZhciBkdCA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdFx0dmFyIHllYXIsbW9udGgsZGF5LGhvdXJzLG1pbnV0ZXMsc2Vjb25kcyx3ZWVrc1xyXG5cdFx0XHRcdHllYXIgPSBkdC5nZXRGdWxsWWVhcigpO1xyXG5cdFx0XHRcdG1vbnRoID0gKGR0LmdldE1vbnRoKCkrMSkgPCAxMCA/ICcwJysgKGR0LmdldE1vbnRoKCkrMSkgOiAoZHQuZ2V0TW9udGgoKSsxKTtcclxuXHRcdFx0XHRkYXkgPSBkdC5nZXREYXRlKCkgPCAxMCA/ICcwJytkdC5nZXREYXRlKCkgOiBkdC5nZXREYXRlKCk7XHJcblx0XHRcdFx0aG91cnMgPSBkdC5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkdC5nZXRIb3VycygpIDogZHQuZ2V0SG91cnMoKTtcclxuXHRcdFx0XHRtaW51dGVzID0gZHQuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBkdC5nZXRNaW51dGVzKCkgOiBkdC5nZXRNaW51dGVzKCk7XHJcblx0XHRcdFx0c2Vjb25kcyA9IGR0LmdldFNlY29uZHMoKSA8IDEwID8gJzAnICsgZHQuZ2V0U2Vjb25kcygpIDogZHQuZ2V0U2Vjb25kcygpOyBcclxuXHRcdFx0XHR3ZWVrcyA9IGR0LmdldERheSgpOyBcclxuXHRcdFx0XHRzd2l0Y2ggKHdlZWtzKSB7XHJcblx0XHRcdFx0XHRjYXNlIDA6IHdlZWtzID0gXCLmmJ/mnJ/ml6VcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDE6IHdlZWtzID0gXCLmmJ/mnJ/kuIBcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDI6IHdlZWtzID0gXCLmmJ/mnJ/kuoxcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDM6IHdlZWtzID0gXCLmmJ/mnJ/kuIlcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDQ6IHdlZWtzID0gXCLmmJ/mnJ/lm5tcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDU6IHdlZWtzID0gXCLmmJ/mnJ/kupRcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRkZWZhdWx0IDogd2Vla3MgPSBcIuaYn+acn+WFrVwiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmNhbGVuZGFyID0geWVhciArIFwi5bm0XCIgKyBtb250aCArIFwi5pyIXCIgKyBkYXkgKyBcIuaXpSBcIiArIGhvdXJzICsgXCI6XCIgKyBtaW51dGVzICsgXCI6XCIgKyBzZWNvbmRzICsgXCIgXCIgKyB3ZWVrc1xyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdFx0XHJcblx0fVxuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cclxuXHQuY29udGFpbmVye1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0bWluLWhlaWdodDogMTAwdmg7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBibHVlO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0Y29sb3I6ICNmZmY7XHJcblx0fVxyXG5cdC8qIOS4u+inhuWbviAqL1xyXG5cdC5ob21lLXZpZXcge1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0bWluLWhlaWdodDogMTAwdmg7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL2JhY2tncm91bmQucG5nKTtcclxuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwdncgMTAwdmg7XHJcblx0fVxyXG5cdC5ob21lLXJpZ2h0IHtcclxuXHRcdHdpZHRoOiA1MHZ3O1xyXG5cdFx0aGVpZ2h0OiA4OXZoO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogY2FkZXRibHVlOyAqL1xyXG5cdH1cclxuXHQuaG9tZS1yaWdodC1ib3gge1xyXG5cdFx0d2lkdGg6IDk4JTtcclxuXHRcdGhlaWdodDogOTglO1xyXG5cdH1cclxuXHQuaGVhZCB7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRoZWlnaHQ6IDExdmg7XHJcblx0XHRmb250LXNpemU6IDR2aDtcclxuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdH1cclxuXHQudGltZS10b29scyB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRyaWdodDogMiU7XHJcblx0XHR0b3A6IDIlO1xyXG5cdFx0Zm9udC1zaXplOiAxLjV2aDtcclxuXHR9XHJcblx0LmJ1dHRvbi1sZWZ0IHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvcmlnaHQucG5nKTtcclxuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xyXG5cdFx0dG9wOiAxLjglO1xyXG5cdFx0bGVmdDogMjEuMyU7XHJcblx0XHR3aWR0aDogMTMuNSU7XHJcblx0XHRoZWlnaHQ6IDguNSU7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XHJcblx0fVxyXG5cdC5idXR0b24tcmlnaHQge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL3N0YXRpYy9yaWdodC5wbmcpO1xyXG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XHJcblx0XHR0b3A6IDEuOCU7XHJcblx0XHRsZWZ0OiA2NSU7XHJcblx0XHR3aWR0aDogMTMuNSU7XHJcblx0XHRoZWlnaHQ6IDguNSU7XHJcblx0fVxyXG5cdC5jaGFyZ2UtaW5mby1pdGVtIHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdH1cclxuXHQuY2hhcmdlLWluZm8taXRlbSBpbWFnZSB7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHR9XHJcblx0XHJcblx0XHJcblx0XHJcblx0Lyog5YWx55SoICovXHJcblx0Lm1haW4ge1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0aGVpZ2h0OiA4OHZoO1xyXG5cdFx0bWFyZ2luLXRvcDogMXZoO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFxyXG5cdH1cclxuXHQubWlhbi1pdGVtIHtcclxuXHRcdHdpZHRoOiA1MCU7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHR9XHJcblx0Lm1pYW4taXRlbTpsYXN0LWNoaWxkIHtcclxuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG5cdH1cclxuXHQubWlhbi1pdGVtLWJveCB7XHJcblx0XHR3aWR0aDogOTglO1xyXG5cdFx0aGVpZ2h0OiA5OCU7XHJcblx0fVxyXG5cdC5jb250ZW50LWl0ZW0ge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuXHRcdG1hcmdpbi10b3A6IDF2aDtcclxuXHRcdG1hcmdpbi1sZWZ0OiA0JTtcclxuXHRcdG1hcmdpbi1yaWdodDogNCU7XHJcblx0fVxyXG5cdC5lbmdsaXNoIHtcclxuXHRcdGZvbnQtc2l6ZTogMC4xdmg7XHJcblx0fVxyXG5cdC5pbnRyb2R1Y2UtY29udGVudCB7XHJcblx0XHRmb250LXNpemU6IDAuM3ZoO1xyXG5cdFx0cGFkZGluZy10b3A6IDJ2aDtcclxuXHRcdHRleHQtaW5kZW50OiAzdmg7XHJcblx0XHRsZXR0ZXItc3BhY2luZzogMC4zdmg7XHJcblx0fVxyXG5cdFxyXG5cdFxyXG5cdFxyXG5cdFxyXG5cdC8qIOWFqOadvy/mi6Pmlpnkv6Hmga8gKi9cclxuXHQuaW5mbyB7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRtaW4taGVpZ2h0OiAxMDB2aDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICM2NjY2NjY7XHJcblx0fVxyXG5cdC8qIOW8guW4uOS/oeaBryAqL1xyXG5cdC5lcnJvci1pbmZvIHtcclxuXHRcdHdpZHRoOiAxMDB2dztcclxuXHRcdG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzAwZmZmZjtcclxuXHR9XHJcbjwvc3R5bGU+Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///20\n");
/***/ }),
/* 21 */
/*!******************************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/pages/index/index.vue?mpType=page ***!
  \******************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=2be84a3c&mpType=page */ 22);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 98);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 12);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"pages/index/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ2tOO0FBQ2xOLGdCQUFnQix5TkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yYmU4NGEzYyZtcFR5cGU9cGFnZVwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi93b3Jrc3BhY3MvaGIvSEJ1aWxkZXJYLjMuMy4xMy4yMDIyMDMxNC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFnZXMvaW5kZXgvaW5kZXgudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///21\n");
/***/ }),
/* 22 */
/*!************************************************************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/pages/index/index.vue?vue&type=template&id=2be84a3c&mpType=page ***!
  \************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../workspacs/hb/HBuilderX.3.3.13.20220314.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=2be84a3c&mpType=page */ 23);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_workspacs_hb_HBuilderX_3_3_13_20220314_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
/***/ }),
/* 23 */
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace_uni/private/Monitor-APP/pages/index/index.vue?vue&type=template&id=2be84a3c&mpType=page ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
try {
  components = {
    qiunDataCharts: __webpack_require__(/*! @/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue */ 24)
      .default,
    uniPopup: __webpack_require__(/*! @/uni_modules/uni-popup/components/uni-popup/uni-popup.vue */ 77)
      .default,
    uniPopupDialog: __webpack_require__(/*! @/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue */ 82)
      .default
  }
} catch (e) {
  if (
    e.message.indexOf("Cannot find module") !== -1 &&
    e.message.indexOf(".vue") !== -1
  ) {
    console.error(e.message)
    console.error("1. 排查组件名称拼写是否正确")
    console.error(
      "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
    )
    console.error(
      "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
    )
  } else {
    throw e
  }
}
var render = function() {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    { staticClass: _vm._$s(0, "sc", "container"), attrs: { _i: 0 } },
    [
      _c(
        "view",
        {
          staticClass: _vm._$s(1, "sc", "floor-screen"),
          class: _vm._$s(1, "c", _vm.floorMove),
          attrs: { _i: 1 }
=======
            duration: _vm.duration,
            "mode-class": _vm.infoMode,
            show: _vm.infoViewShow,
            _i: 110
          }
>>>>>>> 2af3829f6276675ebe120cda94d628c49c429536
        },
        [
          _c(
            "view",
            {
              staticClass: _vm._$s(111, "sc", "info-view"),
              staticClass: _vm._$s(111, "sc", "home-view"),
              attrs: { _i: 111 }
            },
            [
@@ -1062,11 +1564,21 @@
              ),
              _c("view", {
                staticClass: _vm._$s(115, "sc", "button-left"),
                attrs: { _i: 115 }
                attrs: { _i: 115 },
                on: {
                  click: function($event) {
                    return _vm.ejected()
                  }
                }
              }),
              _c("view", {
                staticClass: _vm._$s(116, "sc", "button-right"),
                attrs: { _i: 116 }
                attrs: { _i: 116 },
                on: {
                  click: function($event) {
                    return _vm.ejected()
                  }
                }
              }),
              _c(
                "view",
@@ -1146,7 +1658,11 @@
                      staticClass: _vm._$s(128, "sc", "info-box"),
                      attrs: { _i: 128 }
                    },
                    [_c("y-box", { attrs: { _i: 129 } })],
                    [
                      _c("y-box", { attrs: { _i: 129 } }, [
                        _vm._v(_vm._$s(129, "t0-0", _vm._s(_vm.text1)))
                      ])
                    ],
                    1
                  )
                ]
@@ -4879,6 +5395,15 @@
  }
  return chain;
}
<<<<<<< HEAD
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ 65)))
/***/ }),
/* 72 */
/*!************************************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/pages.json?{"type":"origin-pages-json"} ***!
  \************************************************************************************/
=======
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ 59)))
/***/ }),
@@ -4886,10 +5411,20 @@
/*!***********************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/pages.json?{"type":"origin-pages-json"} ***!
  \***********************************************************************************/
>>>>>>> 2af3829f6276675ebe120cda94d628c49c429536
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
<<<<<<< HEAD
Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _default = { "pages": [{ "path": "pages/index/index", "style": { "navigationStyle": "custom" } }, { "path": "pages/index/monitor", "style": { "navigationStyle": "custom" } }, { "path": "pages/home/home", "style": { "navigationStyle": "home", "app-plus": { "titleNView": false } } }], "globalStyle": { "navigationBarTextStyle": "black", "navigationBarTitleText": "uni-app", "navigationBarBackgroundColor": "#F8F8F8", "backgroundColor": "#F8F8F8", "pageOrientation": "landscape" } };exports.default = _default;
/***/ }),
/* 73 */
/*!***********************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/pages.json?{"type":"stat"} ***!
  \***********************************************************************/
=======
Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _default = { "pages": [{ "path": "pages/home/home", "style": { "navigationStyle": "custom", "app-plus": { "titleNView": false } } }, { "path": "pages/index/index", "style": { "navigationStyle": "custom" } }, { "path": "pages/index/monitor", "style": { "navigationStyle": "custom" } }], "globalStyle": { "navigationBarTextStyle": "black", "navigationBarTitleText": "uni-app", "navigationBarBackgroundColor": "#F8F8F8", "backgroundColor": "#F8F8F8", "pageOrientation": "landscape" } };exports.default = _default;
/***/ }),
@@ -4897,6 +5432,7 @@
/*!**********************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/pages.json?{"type":"stat"} ***!
  \**********************************************************************/
>>>>>>> 2af3829f6276675ebe120cda94d628c49c429536
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
@@ -4904,6 +5440,12 @@
Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _default = { "appid": "__UNI__CA903B7" };exports.default = _default;
/***/ }),
<<<<<<< HEAD
/* 74 */
/*!*****************************************************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js ***!
  \*****************************************************************************************************/
=======
/* 68 */
/*!****************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js ***!
@@ -4919,10 +5461,20 @@
/*!**********************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js ***!
  \**********************************************************************************************************/
>>>>>>> 2af3829f6276675ebe120cda94d628c49c429536
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
<<<<<<< HEAD
eval("/* WEBPACK VAR INJECTION */(function(__f__) {/*\r\n * uCharts®\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\r\n * \r\n * uCharts®官方网站\r\n * https://www.uCharts.cn\r\n * \r\n * 开源地址:\r\n * https://gitee.com/uCharts/uCharts\r\n * \r\n * uni-app插件市场地址:\r\n * http://ext.dcloud.net.cn/plugin?id=271\r\n * \r\n */\n\nObject.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;function _slicedToArray(arr, i) {return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();}function _nonIterableRest() {throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}function _unsupportedIterableToArray(o, minLen) {if (!o) return;if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);var n = Object.prototype.toString.call(o).slice(8, -1);if (n === \"Object\" && o.constructor) n = o.constructor.name;if (n === \"Map\" || n === \"Set\") return Array.from(o);if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);}function _arrayLikeToArray(arr, len) {if (len == null || len > arr.length) len = arr.length;for (var i = 0, arr2 = new Array(len); i < len; i++) {arr2[i] = arr[i];}return arr2;}function _iterableToArrayLimit(arr, i) {if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;var _arr = [];var _n = true;var _d = false;var _e = undefined;try {for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {_arr.push(_s.value);if (i && _arr.length === i) break;}} catch (err) {_d = true;_e = err;} finally {try {if (!_n && _i[\"return\"] != null) _i[\"return\"]();} finally {if (_d) throw _e;}}return _arr;}function _arrayWithHoles(arr) {if (Array.isArray(arr)) return arr;}\n\nvar config = {\n  version: 'v2.3.7-20220122',\n  yAxisWidth: 15,\n  yAxisSplit: 5,\n  xAxisHeight: 22,\n  xAxisLineHeight: 22,\n  legendHeight: 15,\n  yAxisTitleWidth: 15,\n  padding: [10, 10, 10, 10],\n  pixelRatio: 1,\n  rotate: false,\n  columePadding: 3,\n  fontSize: 13,\n  fontColor: '#666666',\n  dataPointShape: ['circle', 'circle', 'circle', 'circle'],\n  color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'],\n  linearColor: ['#0EE2F8', '#2BDCA8', '#FA7D8D', '#EB88E2', '#2AE3A0', '#0EE2F8', '#EB88E2', '#6773E3', '#F78A85'],\n  pieChartLinePadding: 15,\n  pieChartTextPadding: 5,\n  xAxisTextPadding: 3,\n  titleColor: '#333333',\n  titleFontSize: 20,\n  subtitleColor: '#999999',\n  subtitleFontSize: 15,\n  toolTipPadding: 3,\n  toolTipBackground: '#000000',\n  toolTipOpacity: 0.7,\n  toolTipLineHeight: 20,\n  radarLabelTextMargin: 13,\n  gaugeLabelTextMargin: 13 };\n\n\nvar assign = function assign(target) {for (var _len2 = arguments.length, varArgs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {varArgs[_key2 - 1] = arguments[_key2];}\n  if (target == null) {\n    throw new TypeError('[uCharts] Cannot convert undefined or null to object');\n  }\n  if (!varArgs || varArgs.length <= 0) {\n    return target;\n  }\n  // 深度合并对象\n  function deepAssign(obj1, obj2) {\n    for (var key in obj2) {\n      obj1[key] = obj1[key] && obj1[key].toString() === \"[object Object]\" ?\n      deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key];\n    }\n    return obj1;\n  }\n  varArgs.forEach(function (val) {\n    target = deepAssign(target, val);\n  });\n  return target;\n};\n\nvar util = {\n  toFixed: function toFixed(num, limit) {\n    limit = limit || 2;\n    if (this.isFloat(num)) {\n      num = num.toFixed(limit);\n    }\n    return num;\n  },\n  isFloat: function isFloat(num) {\n    return num % 1 !== 0;\n  },\n  approximatelyEqual: function approximatelyEqual(num1, num2) {\n    return Math.abs(num1 - num2) < 1e-10;\n  },\n  isSameSign: function isSameSign(num1, num2) {\n    return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2;\n  },\n  isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) {\n    return this.isSameSign(p1.x, p2.x);\n  },\n  isCollision: function isCollision(obj1, obj2) {\n    obj1.end = {};\n    obj1.end.x = obj1.start.x + obj1.width;\n    obj1.end.y = obj1.start.y - obj1.height;\n    obj2.end = {};\n    obj2.end.x = obj2.start.x + obj2.width;\n    obj2.end.y = obj2.start.y - obj2.height;\n    var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y;\n    return !flag;\n  } };\n\n\n//兼容H5点击事件\nfunction getH5Offset(e) {\n  e.mp = {\n    changedTouches: [] };\n\n  e.mp.changedTouches.push({\n    x: e.offsetX,\n    y: e.offsetY });\n\n  return e;\n}\n\n// 经纬度转墨卡托\nfunction lonlat2mercator(longitude, latitude) {\n  var mercator = Array(2);\n  var x = longitude * 20037508.34 / 180;\n  var y = Math.log(Math.tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180);\n  y = y * 20037508.34 / 180;\n  mercator[0] = x;\n  mercator[1] = y;\n  return mercator;\n}\n\n// 墨卡托转经纬度\nfunction mercator2lonlat(longitude, latitude) {\n  var lonlat = Array(2);\n  var x = longitude / 20037508.34 * 180;\n  var y = latitude / 20037508.34 * 180;\n  y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2);\n  lonlat[0] = x;\n  lonlat[1] = y;\n  return lonlat;\n}\n\n// hex 转 rgba\nfunction hexToRgb(hexValue, opc) {\n  var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n  var hex = hexValue.replace(rgx, function (m, r, g, b) {\n    return r + r + g + g + b + b;\n  });\n  var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n  var r = parseInt(rgb[1], 16);\n  var g = parseInt(rgb[2], 16);\n  var b = parseInt(rgb[3], 16);\n  return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')';\n}\n\nfunction findRange(num, type, limit) {\n  if (isNaN(num)) {\n    throw new Error('[uCharts] series数据需为Number格式');\n  }\n  limit = limit || 10;\n  type = type ? type : 'upper';\n  var multiple = 1;\n  while (limit < 1) {\n    limit *= 10;\n    multiple *= 10;\n  }\n  if (type === 'upper') {\n    num = Math.ceil(num * multiple);\n  } else {\n    num = Math.floor(num * multiple);\n  }\n  while (num % limit !== 0) {\n    if (type === 'upper') {\n      num++;\n    } else {\n      num--;\n    }\n  }\n  return num / multiple;\n}\n\nfunction calCandleMA(dayArr, nameArr, colorArr, kdata) {\n  var seriesTemp = [];\n  for (var k = 0; k < dayArr.length; k++) {\n    var seriesItem = {\n      data: [],\n      name: nameArr[k],\n      color: colorArr[k] };\n\n    for (var i = 0, len = kdata.length; i < len; i++) {\n      if (i < dayArr[k]) {\n        seriesItem.data.push(null);\n        continue;\n      }\n      var sum = 0;\n      for (var j = 0; j < dayArr[k]; j++) {\n        sum += kdata[i - j][1];\n      }\n      seriesItem.data.push(+(sum / dayArr[k]).toFixed(3));\n    }\n    seriesTemp.push(seriesItem);\n  }\n  return seriesTemp;\n}\n\nfunction calValidDistance(self, distance, chartData, config, opts) {\n  var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3];\n  var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length - 1);\n  var validDistance = distance;\n  if (distance >= 0) {\n    validDistance = 0;\n    self.uevent.trigger('scrollLeft');\n    self.scrollOption.position = 'left';\n    opts.xAxis.scrollPosition = 'left';\n  } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {\n    validDistance = dataChartAreaWidth - dataChartWidth;\n    self.uevent.trigger('scrollRight');\n    self.scrollOption.position = 'right';\n    opts.xAxis.scrollPosition = 'right';\n  } else {\n    self.scrollOption.position = distance;\n    opts.xAxis.scrollPosition = distance;\n  }\n  return validDistance;\n}\n\nfunction isInAngleRange(angle, startAngle, endAngle) {\n  function adjust(angle) {\n    while (angle < 0) {\n      angle += 2 * Math.PI;\n    }\n    while (angle > 2 * Math.PI) {\n      angle -= 2 * Math.PI;\n    }\n    return angle;\n  }\n  angle = adjust(angle);\n  startAngle = adjust(startAngle);\n  endAngle = adjust(endAngle);\n  if (startAngle > endAngle) {\n    endAngle += 2 * Math.PI;\n    if (angle < startAngle) {\n      angle += 2 * Math.PI;\n    }\n  }\n  return angle >= startAngle && angle <= endAngle;\n}\n\nfunction calRotateTranslate(x, y, h) {\n  var xv = x;\n  var yv = h - y;\n  var transX = xv + (h - yv - xv) / Math.sqrt(2);\n  transX *= -1;\n  var transY = (h - yv) * (Math.sqrt(2) - 1) - (h - yv - xv) / Math.sqrt(2);\n  return {\n    transX: transX,\n    transY: transY };\n\n}\n\nfunction createCurveControlPoints(points, i) {\n  function isNotMiddlePoint(points, i) {\n    if (points[i - 1] && points[i + 1]) {\n      return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y,\n      points[i + 1].y);\n    } else {\n      return false;\n    }\n  }\n  function isNotMiddlePointX(points, i) {\n    if (points[i - 1] && points[i + 1]) {\n      return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x,\n      points[i + 1].x);\n    } else {\n      return false;\n    }\n  }\n  var a = 0.2;\n  var b = 0.2;\n  var pAx = null;\n  var pAy = null;\n  var pBx = null;\n  var pBy = null;\n  if (i < 1) {\n    pAx = points[0].x + (points[1].x - points[0].x) * a;\n    pAy = points[0].y + (points[1].y - points[0].y) * a;\n  } else {\n    pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a;\n    pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a;\n  }\n\n  if (i > points.length - 3) {\n    var last = points.length - 1;\n    pBx = points[last].x - (points[last].x - points[last - 1].x) * b;\n    pBy = points[last].y - (points[last].y - points[last - 1].y) * b;\n  } else {\n    pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b;\n    pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b;\n  }\n  if (isNotMiddlePoint(points, i + 1)) {\n    pBy = points[i + 1].y;\n  }\n  if (isNotMiddlePoint(points, i)) {\n    pAy = points[i].y;\n  }\n  if (isNotMiddlePointX(points, i + 1)) {\n    pBx = points[i + 1].x;\n  }\n  if (isNotMiddlePointX(points, i)) {\n    pAx = points[i].x;\n  }\n  if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) {\n    pAy = points[i].y;\n  }\n  if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) {\n    pBy = points[i + 1].y;\n  }\n  if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) {\n    pAx = points[i].x;\n  }\n  if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) {\n    pBx = points[i + 1].x;\n  }\n  return {\n    ctrA: {\n      x: pAx,\n      y: pAy },\n\n    ctrB: {\n      x: pBx,\n      y: pBy } };\n\n\n}\n\nfunction convertCoordinateOrigin(x, y, center) {\n  return {\n    x: center.x + x,\n    y: center.y - y };\n\n}\n\nfunction avoidCollision(obj, target) {\n  if (target) {\n    // is collision test\n    while (util.isCollision(obj, target)) {\n      if (obj.start.x > 0) {\n        obj.start.y--;\n      } else if (obj.start.x < 0) {\n        obj.start.y++;\n      } else {\n        if (obj.start.y > 0) {\n          obj.start.y++;\n        } else {\n          obj.start.y--;\n        }\n      }\n    }\n  }\n  return obj;\n}\n\nfunction fixPieSeries(series, opts, config) {\n  var pieSeriesArr = [];\n  if (series.length > 0 && series[0].data.constructor.toString().indexOf('Array') > -1) {\n    opts._pieSeries_ = series;\n    var oldseries = series[0].data;\n    for (var i = 0; i < oldseries.length; i++) {\n      oldseries[i].formatter = series[0].formatter;\n      oldseries[i].data = oldseries[i].value;\n      pieSeriesArr.push(oldseries[i]);\n    }\n    opts.series = pieSeriesArr;\n  } else {\n    pieSeriesArr = series;\n  }\n  return pieSeriesArr;\n}\n\nfunction fillSeries(series, opts, config) {\n  var index = 0;\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    if (!item.color) {\n      item.color = config.color[index];\n      index = (index + 1) % config.color.length;\n    }\n    if (!item.linearIndex) {\n      item.linearIndex = i;\n    }\n    if (!item.index) {\n      item.index = 0;\n    }\n    if (!item.type) {\n      item.type = opts.type;\n    }\n    if (typeof item.show == \"undefined\") {\n      item.show = true;\n    }\n    if (!item.type) {\n      item.type = opts.type;\n    }\n    if (!item.pointShape) {\n      item.pointShape = \"circle\";\n    }\n    if (!item.legendShape) {\n      switch (item.type) {\n        case 'line':\n          item.legendShape = \"line\";\n          break;\n        case 'column':\n          item.legendShape = \"rect\";\n          break;\n        case 'area':\n          item.legendShape = \"triangle\";\n          break;\n        case 'bar':\n          item.legendShape = \"rect\";\n          break;\n        default:\n          item.legendShape = \"circle\";}\n\n    }\n  }\n  return series;\n}\n\nfunction fillCustomColor(linearType, customColor, series, config) {\n  var newcolor = customColor || [];\n  if (linearType == 'custom' && newcolor.length == 0) {\n    newcolor = config.linearColor;\n  }\n  if (linearType == 'custom' && newcolor.length < series.length) {\n    var chazhi = series.length - newcolor.length;\n    for (var i = 0; i < chazhi; i++) {\n      newcolor.push(config.linearColor[(i + 1) % config.linearColor.length]);\n    }\n  }\n  return newcolor;\n}\n\nfunction getDataRange(minData, maxData) {\n  var limit = 0;\n  var range = maxData - minData;\n  if (range >= 10000) {\n    limit = 1000;\n  } else if (range >= 1000) {\n    limit = 100;\n  } else if (range >= 100) {\n    limit = 10;\n  } else if (range >= 10) {\n    limit = 5;\n  } else if (range >= 1) {\n    limit = 1;\n  } else if (range >= 0.1) {\n    limit = 0.1;\n  } else if (range >= 0.01) {\n    limit = 0.01;\n  } else if (range >= 0.001) {\n    limit = 0.001;\n  } else if (range >= 0.0001) {\n    limit = 0.0001;\n  } else if (range >= 0.00001) {\n    limit = 0.00001;\n  } else {\n    limit = 0.000001;\n  }\n  return {\n    minRange: findRange(minData, 'lower', limit),\n    maxRange: findRange(maxData, 'upper', limit) };\n\n}\n\nfunction measureText(text, fontSize, context) {\n  var width = 0;\n  text = String(text);\n\n\n\n  if (context !== false && context !== undefined && context.setFontSize && context.measureText) {\n    context.setFontSize(fontSize);\n    return context.measureText(text).width;\n  } else {\n    var text = text.split('');\n    for (var i = 0; i < text.length; i++) {\n      var item = text[i];\n      if (/[a-zA-Z]/.test(item)) {\n        width += 7;\n      } else if (/[0-9]/.test(item)) {\n        width += 5.5;\n      } else if (/\\./.test(item)) {\n        width += 2.7;\n      } else if (/-/.test(item)) {\n        width += 3.25;\n      } else if (/:/.test(item)) {\n        width += 2.5;\n      } else if (/[\\u4e00-\\u9fa5]/.test(item)) {\n        width += 10;\n      } else if (/\\(|\\)/.test(item)) {\n        width += 3.73;\n      } else if (/\\s/.test(item)) {\n        width += 2.5;\n      } else if (/%/.test(item)) {\n        width += 8;\n      } else {\n        width += 10;\n      }\n    }\n    return width * fontSize / 10;\n  }\n}\n\nfunction dataCombine(series) {\n  return series.reduce(function (a, b) {\n    return (a.data ? a.data : a).concat(b.data);\n  }, []);\n}\n\nfunction dataCombineStack(series, len) {\n  var sum = new Array(len);\n  for (var j = 0; j < sum.length; j++) {\n    sum[j] = 0;\n  }\n  for (var i = 0; i < series.length; i++) {\n    for (var j = 0; j < sum.length; j++) {\n      sum[j] += series[i].data[j];\n    }\n  }\n  return series.reduce(function (a, b) {\n    return (a.data ? a.data : a).concat(b.data).concat(sum);\n  }, []);\n}\n\nfunction getTouches(touches, opts, e) {\n  var x, y;\n  if (touches.clientX) {\n    if (opts.rotate) {\n      y = opts.height - touches.clientX * opts.pix;\n      x = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;\n    } else {\n      x = touches.clientX * opts.pix;\n      y = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;\n    }\n  } else {\n    if (opts.rotate) {\n      y = opts.height - touches.x * opts.pix;\n      x = touches.y * opts.pix;\n    } else {\n      x = touches.x * opts.pix;\n      y = touches.y * opts.pix;\n    }\n  }\n  return {\n    x: x,\n    y: y };\n\n}\n\nfunction getSeriesDataItem(series, index, group) {\n  var data = [];\n  var newSeries = [];\n  var indexIsArr = index.constructor.toString().indexOf('Array') > -1;\n  if (indexIsArr) {\n    var tempSeries = filterSeries(series);\n    for (var i = 0; i < group.length; i++) {\n      newSeries.push(tempSeries[group[i]]);\n    }\n  } else {\n    newSeries = series;\n  };\n  for (var _i = 0; _i < newSeries.length; _i++) {\n    var item = newSeries[_i];\n    var tmpindex = -1;\n    if (indexIsArr) {\n      tmpindex = index[_i];\n    } else {\n      tmpindex = index;\n    }\n    if (item.data[tmpindex] !== null && typeof item.data[tmpindex] !== 'undefined' && item.show) {\n      var seriesItem = {};\n      seriesItem.color = item.color;\n      seriesItem.type = item.type;\n      seriesItem.style = item.style;\n      seriesItem.pointShape = item.pointShape;\n      seriesItem.disableLegend = item.disableLegend;\n      seriesItem.name = item.name;\n      seriesItem.show = item.show;\n      seriesItem.data = item.formatter ? item.formatter(item.data[tmpindex]) : item.data[tmpindex];\n      data.push(seriesItem);\n    }\n  }\n  return data;\n}\n\nfunction getMaxTextListLength(list, fontSize, context) {\n  var lengthList = list.map(function (item) {\n    return measureText(item, fontSize, context);\n  });\n  return Math.max.apply(null, lengthList);\n}\n\nfunction getRadarCoordinateSeries(length) {\n  var eachAngle = 2 * Math.PI / length;\n  var CoordinateSeries = [];\n  for (var i = 0; i < length; i++) {\n    CoordinateSeries.push(eachAngle * i);\n  }\n  return CoordinateSeries.map(function (item) {\n    return -1 * item + Math.PI / 2;\n  });\n}\n\nfunction getToolTipData(seriesData, opts, index, group, categories) {\n  var option = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n  var calPoints = opts.chartData.calPoints ? opts.chartData.calPoints : [];\n  var points = {};\n  if (group.length > 0) {\n    var filterPoints = [];\n    for (var i = 0; i < group.length; i++) {\n      filterPoints.push(calPoints[group[i]]);\n    }\n    points = filterPoints[0][index[0]];\n  } else {\n    points = calPoints[0][index];\n  };\n  var textList = seriesData.map(function (item) {\n    var titleText = null;\n    if (opts.categories && opts.categories.length > 0) {\n      titleText = categories[index];\n    };\n    return {\n      text: option.formatter ? option.formatter(item, titleText, index, opts) : item.name + ': ' + item.data,\n      color: item.color };\n\n  });\n  var offset = {\n    x: Math.round(points.x),\n    y: Math.round(points.y) };\n\n  return {\n    textList: textList,\n    offset: offset };\n\n}\n\nfunction getMixToolTipData(seriesData, opts, index, categories) {\n  var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n  var points = opts.chartData.xAxisPoints[index] + opts.chartData.eachSpacing / 2;\n  var textList = seriesData.map(function (item) {\n    return {\n      text: option.formatter ? option.formatter(item, categories[index], index, opts) : item.name + ': ' + item.data,\n      color: item.color,\n      disableLegend: item.disableLegend ? true : false };\n\n  });\n  textList = textList.filter(function (item) {\n    if (item.disableLegend !== true) {\n      return item;\n    }\n  });\n  var offset = {\n    x: Math.round(points),\n    y: 0 };\n\n  return {\n    textList: textList,\n    offset: offset };\n\n}\n\nfunction getCandleToolTipData(series, seriesData, opts, index, categories, extra) {\n  var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};\n  var calPoints = opts.chartData.calPoints;\n  var upColor = extra.color.upFill;\n  var downColor = extra.color.downFill;\n  //颜色顺序为开盘,收盘,最低,最高\n  var color = [upColor, upColor, downColor, upColor];\n  var textList = [];\n  seriesData.map(function (item) {\n    if (index == 0) {\n      if (item.data[1] - item.data[0] < 0) {\n        color[1] = downColor;\n      } else {\n        color[1] = upColor;\n      }\n    } else {\n      if (item.data[0] < series[index - 1][1]) {\n        color[0] = downColor;\n      }\n      if (item.data[1] < item.data[0]) {\n        color[1] = downColor;\n      }\n      if (item.data[2] > series[index - 1][1]) {\n        color[2] = upColor;\n      }\n      if (item.data[3] < series[index - 1][1]) {\n        color[3] = downColor;\n      }\n    }\n    var text1 = {\n      text: '开盘:' + item.data[0],\n      color: color[0] };\n\n    var text2 = {\n      text: '收盘:' + item.data[1],\n      color: color[1] };\n\n    var text3 = {\n      text: '最低:' + item.data[2],\n      color: color[2] };\n\n    var text4 = {\n      text: '最高:' + item.data[3],\n      color: color[3] };\n\n    textList.push(text1, text2, text3, text4);\n  });\n  var validCalPoints = [];\n  var offset = {\n    x: 0,\n    y: 0 };\n\n  for (var i = 0; i < calPoints.length; i++) {\n    var points = calPoints[i];\n    if (typeof points[index] !== 'undefined' && points[index] !== null) {\n      validCalPoints.push(points[index]);\n    }\n  }\n  offset.x = Math.round(validCalPoints[0][0].x);\n  return {\n    textList: textList,\n    offset: offset };\n\n}\n\nfunction filterSeries(series) {\n  var tempSeries = [];\n  for (var i = 0; i < series.length; i++) {\n    if (series[i].show == true) {\n      tempSeries.push(series[i]);\n    }\n  }\n  return tempSeries;\n}\n\nfunction findCurrentIndex(currentPoints, calPoints, opts, config) {\n  var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n  var current = { index: -1, group: [] };\n  var spacing = opts.chartData.eachSpacing / 2;\n  var xAxisPoints = [];\n  if (calPoints && calPoints.length > 0) {\n    if (!opts.categories) {\n      spacing = 0;\n    } else {\n      for (var i = 1; i < opts.chartData.xAxisPoints.length; i++) {\n        xAxisPoints.push(opts.chartData.xAxisPoints[i] - spacing);\n      }\n      if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') {\n        xAxisPoints = opts.chartData.xAxisPoints;\n      }\n    }\n    if (isInExactChartArea(currentPoints, opts, config)) {\n      if (!opts.categories) {\n        var timePoints = Array(calPoints.length);\n        for (var _i2 = 0; _i2 < calPoints.length; _i2++) {\n          timePoints[_i2] = Array(calPoints[_i2].length);\n          for (var j = 0; j < calPoints[_i2].length; j++) {\n            timePoints[_i2][j] = Math.abs(calPoints[_i2][j].x - currentPoints.x);\n          }\n        };\n        var pointValue = Array(timePoints.length);\n        var pointIndex = Array(timePoints.length);\n        for (var _i3 = 0; _i3 < timePoints.length; _i3++) {\n          pointValue[_i3] = Math.min.apply(null, timePoints[_i3]);\n          pointIndex[_i3] = timePoints[_i3].indexOf(pointValue[_i3]);\n        }\n        var minValue = Math.min.apply(null, pointValue);\n        current.index = [];\n        for (var _i4 = 0; _i4 < pointValue.length; _i4++) {\n          if (pointValue[_i4] == minValue) {\n            current.group.push(_i4);\n            current.index.push(pointIndex[_i4]);\n          }\n        };\n      } else {\n        xAxisPoints.forEach(function (item, index) {\n          if (currentPoints.x + offset + spacing > item) {\n            current.index = index;\n          }\n        });\n      }\n    }\n  }\n  return current;\n}\n\nfunction findBarChartCurrentIndex(currentPoints, calPoints, opts, config) {\n  var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n  var current = { index: -1, group: [] };\n  var spacing = opts.chartData.eachSpacing / 2;\n  var yAxisPoints = opts.chartData.yAxisPoints;\n  if (calPoints && calPoints.length > 0) {\n    if (isInExactChartArea(currentPoints, opts, config)) {\n      yAxisPoints.forEach(function (item, index) {\n        if (currentPoints.y + offset + spacing > item) {\n          current.index = index;\n        }\n      });\n    }\n  }\n  return current;\n}\n\nfunction findLegendIndex(currentPoints, legendData, opts) {\n  var currentIndex = -1;\n  var gap = 0;\n  if (isInExactLegendArea(currentPoints, legendData.area)) {\n    var points = legendData.points;\n    var index = -1;\n    for (var i = 0, len = points.length; i < len; i++) {\n      var item = points[i];\n      for (var j = 0; j < item.length; j++) {\n        index += 1;\n        var area = item[j]['area'];\n        if (area && currentPoints.x > area[0] - gap && currentPoints.x < area[2] + gap && currentPoints.y > area[1] - gap && currentPoints.y < area[3] + gap) {\n          currentIndex = index;\n          break;\n        }\n      }\n    }\n    return currentIndex;\n  }\n  return currentIndex;\n}\n\nfunction isInExactLegendArea(currentPoints, area) {\n  return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && currentPoints.y < area.end.y;\n}\n\nfunction isInExactChartArea(currentPoints, opts, config) {\n  return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] - 10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2];\n}\n\nfunction findRadarChartCurrentIndex(currentPoints, radarData, count) {\n  var eachAngleArea = 2 * Math.PI / count;\n  var currentIndex = -1;\n  if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) {\n    var fixAngle = function fixAngle(angle) {\n      if (angle < 0) {\n        angle += 2 * Math.PI;\n      }\n      if (angle > 2 * Math.PI) {\n        angle -= 2 * Math.PI;\n      }\n      return angle;\n    };\n    var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x);\n    angle = -1 * angle;\n    if (angle < 0) {\n      angle += 2 * Math.PI;\n    }\n    var angleList = radarData.angleList.map(function (item) {\n      item = fixAngle(-1 * item);\n      return item;\n    });\n    angleList.forEach(function (item, index) {\n      var rangeStart = fixAngle(item - eachAngleArea / 2);\n      var rangeEnd = fixAngle(item + eachAngleArea / 2);\n      if (rangeEnd < rangeStart) {\n        rangeEnd += 2 * Math.PI;\n      }\n      if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) {\n        currentIndex = index;\n      }\n    });\n  }\n  return currentIndex;\n}\n\nfunction findFunnelChartCurrentIndex(currentPoints, funnelData) {\n  var currentIndex = -1;\n  for (var i = 0, len = funnelData.series.length; i < len; i++) {\n    var item = funnelData.series[i];\n    if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) {\n      currentIndex = i;\n      break;\n    }\n  }\n  return currentIndex;\n}\n\nfunction findWordChartCurrentIndex(currentPoints, wordData) {\n  var currentIndex = -1;\n  for (var i = 0, len = wordData.length; i < len; i++) {\n    var item = wordData[i];\n    if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) {\n      currentIndex = i;\n      break;\n    }\n  }\n  return currentIndex;\n}\n\nfunction findMapChartCurrentIndex(currentPoints, opts) {\n  var currentIndex = -1;\n  var cData = opts.chartData.mapData;\n  var data = opts.series;\n  var tmp = pointToCoordinate(currentPoints.y, currentPoints.x, cData.bounds, cData.scale, cData.xoffset, cData.yoffset);\n  var poi = [tmp.x, tmp.y];\n  for (var i = 0, len = data.length; i < len; i++) {\n    var item = data[i].geometry.coordinates;\n    if (isPoiWithinPoly(poi, item, opts.chartData.mapData.mercator)) {\n      currentIndex = i;\n      break;\n    }\n  }\n  return currentIndex;\n}\n\nfunction findRoseChartCurrentIndex(currentPoints, pieData, opts) {\n  var currentIndex = -1;\n  var series = getRoseDataPoints(opts._series_, opts.extra.rose.type, pieData.radius, pieData.radius);\n  if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {\n    var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);\n    angle = -angle;\n    if (opts.extra.rose && opts.extra.rose.offsetAngle) {\n      angle = angle - opts.extra.rose.offsetAngle * Math.PI / 180;\n    }\n    for (var i = 0, len = series.length; i < len; i++) {\n      if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI)) {\n        currentIndex = i;\n        break;\n      }\n    }\n  }\n  return currentIndex;\n}\n\nfunction findPieChartCurrentIndex(currentPoints, pieData, opts) {\n  var currentIndex = -1;\n  var series = getPieDataPoints(pieData.series);\n  if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {\n    var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);\n    angle = -angle;\n    if (opts.extra.pie && opts.extra.pie.offsetAngle) {\n      angle = angle - opts.extra.pie.offsetAngle * Math.PI / 180;\n    }\n    if (opts.extra.ring && opts.extra.ring.offsetAngle) {\n      angle = angle - opts.extra.ring.offsetAngle * Math.PI / 180;\n    }\n    for (var i = 0, len = series.length; i < len; i++) {\n      if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._proportion_ * 2 * Math.PI)) {\n        currentIndex = i;\n        break;\n      }\n    }\n  }\n  return currentIndex;\n}\n\nfunction isInExactPieChartArea(currentPoints, center, radius) {\n  return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2);\n}\n\nfunction splitPoints(points, eachSeries) {\n  var newPoints = [];\n  var items = [];\n  points.forEach(function (item, index) {\n    if (eachSeries.connectNulls) {\n      if (item !== null) {\n        items.push(item);\n      }\n    } else {\n      if (item !== null) {\n        items.push(item);\n      } else {\n        if (items.length) {\n          newPoints.push(items);\n        }\n        items = [];\n      }\n    }\n\n  });\n  if (items.length) {\n    newPoints.push(items);\n  }\n  return newPoints;\n}\n\nfunction calLegendData(series, opts, config, chartData, context) {\n  var legendData = {\n    area: {\n      start: {\n        x: 0,\n        y: 0 },\n\n      end: {\n        x: 0,\n        y: 0 },\n\n      width: 0,\n      height: 0,\n      wholeWidth: 0,\n      wholeHeight: 0 },\n\n    points: [],\n    widthArr: [],\n    heightArr: [] };\n\n  if (opts.legend.show === false) {\n    chartData.legendData = legendData;\n    return legendData;\n  }\n  var padding = opts.legend.padding * opts.pix;\n  var margin = opts.legend.margin * opts.pix;\n  var fontSize = opts.legend.fontSize ? opts.legend.fontSize * opts.pix : config.fontSize;\n  var shapeWidth = 15 * opts.pix;\n  var shapeRight = 5 * opts.pix;\n  var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);\n  if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\n    var legendList = [];\n    var widthCount = 0;\n    var widthCountArr = [];\n    var currentRow = [];\n    for (var i = 0; i < series.length; i++) {\n      var item = series[i];\n      var itemWidth = shapeWidth + shapeRight + measureText(item.name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;\n      if (widthCount + itemWidth > opts.width - opts.area[1] - opts.area[3]) {\n        legendList.push(currentRow);\n        widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);\n        widthCount = itemWidth;\n        currentRow = [item];\n      } else {\n        widthCount += itemWidth;\n        currentRow.push(item);\n      }\n    }\n    if (currentRow.length) {\n      legendList.push(currentRow);\n      widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);\n      legendData.widthArr = widthCountArr;\n      var legendWidth = Math.max.apply(null, widthCountArr);\n      switch (opts.legend.float) {\n        case 'left':\n          legendData.area.start.x = opts.area[3];\n          legendData.area.end.x = opts.area[3] + legendWidth + 2 * padding;\n          break;\n        case 'right':\n          legendData.area.start.x = opts.width - opts.area[1] - legendWidth - 2 * padding;\n          legendData.area.end.x = opts.width - opts.area[1];\n          break;\n        default:\n          legendData.area.start.x = (opts.width - legendWidth) / 2 - padding;\n          legendData.area.end.x = (opts.width + legendWidth) / 2 + padding;}\n\n      legendData.area.width = legendWidth + 2 * padding;\n      legendData.area.wholeWidth = legendWidth + 2 * padding;\n      legendData.area.height = legendList.length * lineHeight + 2 * padding;\n      legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin;\n      legendData.points = legendList;\n    }\n  } else {\n    var len = series.length;\n    var maxHeight = opts.height - opts.area[0] - opts.area[2] - 2 * margin - 2 * padding;\n    var maxLength = Math.min(Math.floor(maxHeight / lineHeight), len);\n    legendData.area.height = maxLength * lineHeight + padding * 2;\n    legendData.area.wholeHeight = maxLength * lineHeight + padding * 2;\n    switch (opts.legend.float) {\n      case 'top':\n        legendData.area.start.y = opts.area[0] + margin;\n        legendData.area.end.y = opts.area[0] + margin + legendData.area.height;\n        break;\n      case 'bottom':\n        legendData.area.start.y = opts.height - opts.area[2] - margin - legendData.area.height;\n        legendData.area.end.y = opts.height - opts.area[2] - margin;\n        break;\n      default:\n        legendData.area.start.y = (opts.height - legendData.area.height) / 2;\n        legendData.area.end.y = (opts.height + legendData.area.height) / 2;}\n\n    var lineNum = len % maxLength === 0 ? len / maxLength : Math.floor(len / maxLength + 1);\n    var _currentRow = [];\n    for (var _i5 = 0; _i5 < lineNum; _i5++) {\n      var temp = series.slice(_i5 * maxLength, _i5 * maxLength + maxLength);\n      _currentRow.push(temp);\n    }\n    legendData.points = _currentRow;\n    if (_currentRow.length) {\n      for (var _i6 = 0; _i6 < _currentRow.length; _i6++) {\n        var _item = _currentRow[_i6];\n        var maxWidth = 0;\n        for (var j = 0; j < _item.length; j++) {\n          var _itemWidth = shapeWidth + shapeRight + measureText(_item[j].name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;\n          if (_itemWidth > maxWidth) {\n            maxWidth = _itemWidth;\n          }\n        }\n        legendData.widthArr.push(maxWidth);\n        legendData.heightArr.push(_item.length * lineHeight + padding * 2);\n      }\n      var _legendWidth = 0;\n      for (var _i7 = 0; _i7 < legendData.widthArr.length; _i7++) {\n        _legendWidth += legendData.widthArr[_i7];\n      }\n      legendData.area.width = _legendWidth - opts.legend.itemGap * opts.pix + 2 * padding;\n      legendData.area.wholeWidth = legendData.area.width + padding;\n    }\n  }\n  switch (opts.legend.position) {\n    case 'top':\n      legendData.area.start.y = opts.area[0] + margin;\n      legendData.area.end.y = opts.area[0] + margin + legendData.area.height;\n      break;\n    case 'bottom':\n      legendData.area.start.y = opts.height - opts.area[2] - legendData.area.height - margin;\n      legendData.area.end.y = opts.height - opts.area[2] - margin;\n      break;\n    case 'left':\n      legendData.area.start.x = opts.area[3];\n      legendData.area.end.x = opts.area[3] + legendData.area.width;\n      break;\n    case 'right':\n      legendData.area.start.x = opts.width - opts.area[1] - legendData.area.width;\n      legendData.area.end.x = opts.width - opts.area[1];\n      break;}\n\n  chartData.legendData = legendData;\n  return legendData;\n}\n\nfunction calCategoriesData(categories, opts, config, eachSpacing, context) {\n  var result = {\n    angle: 0,\n    xAxisHeight: config.xAxisHeight };\n\n  var categoriesTextLenth = categories.map(function (item) {\n    return measureText(item, opts.xAxis.fontSize * opts.pix || config.fontSize, context);\n  });\n  var maxTextLength = Math.max.apply(this, categoriesTextLenth);\n\n  if (opts.xAxis.rotateLabel == true && maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) {\n    result.angle = 45 * Math.PI / 180;\n    result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle);\n  }\n  return result;\n}\n\nfunction getXAxisTextList(series, opts, config, stack) {\n  var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;\n  var data;\n  if (stack == 'stack') {\n    data = dataCombineStack(series, opts.categories.length);\n  } else {\n    data = dataCombine(series);\n  }\n  var sorted = [];\n  // remove null from data\n  data = data.filter(function (item) {\n    //return item !== null;\n    if (typeof item === 'object' && item !== null) {\n      if (item.constructor.toString().indexOf('Array') > -1) {\n        return item !== null;\n      } else {\n        return item.value !== null;\n      }\n    } else {\n      return item !== null;\n    }\n  });\n  data.map(function (item) {\n    if (typeof item === 'object') {\n      if (item.constructor.toString().indexOf('Array') > -1) {\n        if (opts.type == 'candle') {\n          item.map(function (subitem) {\n            sorted.push(subitem);\n          });\n        } else {\n          sorted.push(item[0]);\n        }\n      } else {\n        sorted.push(item.value);\n      }\n    } else {\n      sorted.push(item);\n    }\n  });\n\n  var minData = 0;\n  var maxData = 0;\n  if (sorted.length > 0) {\n    minData = Math.min.apply(this, sorted);\n    maxData = Math.max.apply(this, sorted);\n  }\n  //为了兼容v1.9.0之前的项目\n  if (index > -1) {\n    if (typeof opts.xAxis.data[index].min === 'number') {\n      minData = Math.min(opts.xAxis.data[index].min, minData);\n    }\n    if (typeof opts.xAxis.data[index].max === 'number') {\n      maxData = Math.max(opts.xAxis.data[index].max, maxData);\n    }\n  } else {\n    if (typeof opts.xAxis.min === 'number') {\n      minData = Math.min(opts.xAxis.min, minData);\n    }\n    if (typeof opts.xAxis.max === 'number') {\n      maxData = Math.max(opts.xAxis.max, maxData);\n    }\n  }\n  if (minData === maxData) {\n    var rangeSpan = maxData || 10;\n    maxData += rangeSpan;\n  }\n  //var dataRange = getDataRange(minData, maxData);\n  var minRange = minData;\n  var maxRange = maxData;\n  var range = [];\n  var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber;\n  for (var i = 0; i <= opts.xAxis.splitNumber; i++) {\n    range.push(minRange + eachRange * i);\n  }\n  return range;\n}\n\nfunction calXAxisData(series, opts, config, context) {\n  //堆叠图重算Y轴\n  var columnstyle = assign({}, {\n    type: \"\" },\n  opts.extra.bar);\n  var result = {\n    angle: 0,\n    xAxisHeight: config.xAxisHeight };\n\n  result.ranges = getXAxisTextList(series, opts, config, columnstyle.type);\n  result.rangesFormat = result.ranges.map(function (item) {\n    //item = opts.xAxis.formatter ? opts.xAxis.formatter(item) : util.toFixed(item, 2);\n    item = util.toFixed(item, 2);\n    return item;\n  });\n  var xAxisScaleValues = result.ranges.map(function (item) {\n    // 如果刻度值是浮点数,则保留两位小数\n    item = util.toFixed(item, 2);\n    // 若有自定义格式则调用自定义的格式化函数\n    //item = opts.xAxis.formatter ? opts.xAxis.formatter(Number(item)) : item;\n    return item;\n  });\n  result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config));\n  // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\\结束点以及总长\n  var eachSpacing = result.eachSpacing;\n  var textLength = xAxisScaleValues.map(function (item) {\n    return measureText(item, opts.xAxis.fontSize * opts.pix || config.fontSize, context);\n  });\n  // get max length of categories text\n  var maxTextLength = Math.max.apply(this, textLength);\n  // 如果刻度值文本内容过长,则将其逆时针旋转45°\n  if (maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) {\n    result.angle = 45 * Math.PI / 180;\n    result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle);\n  }\n  if (opts.xAxis.disabled === true) {\n    result.xAxisHeight = 0;\n  }\n  return result;\n}\n\nfunction getRadarDataPoints(angleList, center, radius, series, opts) {\n  var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n  var radarOption = opts.extra.radar || {};\n  radarOption.max = radarOption.max || 0;\n  var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));\n  var data = [];var _loop2 = function _loop2(\n  i) {\n    var each = series[i];\n    var listItem = {};\n    listItem.color = each.color;\n    listItem.legendShape = each.legendShape;\n    listItem.pointShape = each.pointShape;\n    listItem.data = [];\n    each.data.forEach(function (item, index) {\n      var tmp = {};\n      tmp.angle = angleList[index];\n      tmp.proportion = item / maxData;\n      tmp.value = item;\n      tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center);\n      listItem.data.push(tmp);\n    });\n    data.push(listItem);};for (var i = 0; i < series.length; i++) {_loop2(i);\n  }\n  return data;\n}\n\nfunction getPieDataPoints(series, radius) {\n  var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n  var count = 0;\n  var _start_ = 0;\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    item.data = item.data === null ? 0 : item.data;\n    count += item.data;\n  }\n  for (var _i8 = 0; _i8 < series.length; _i8++) {\n    var _item2 = series[_i8];\n    _item2.data = _item2.data === null ? 0 : _item2.data;\n    if (count === 0) {\n      _item2._proportion_ = 1 / series.length * process;\n    } else {\n      _item2._proportion_ = _item2.data / count * process;\n    }\n    _item2._radius_ = radius;\n  }\n  for (var _i9 = 0; _i9 < series.length; _i9++) {\n    var _item3 = series[_i9];\n    _item3._start_ = _start_;\n    _start_ += 2 * _item3._proportion_ * Math.PI;\n  }\n  return series;\n}\n\nfunction getFunnelDataPoints(series, radius, type, eachSpacing) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  series = series.sort(function (a, b) {\n    return parseInt(b.data) - parseInt(a.data);\n  });\n  for (var i = 0; i < series.length; i++) {\n    if (type == 'funnel') {\n      series[i].radius = series[i].data / series[0].data * radius * process;\n    } else {\n      series[i].radius = eachSpacing * (series.length - i) / (eachSpacing * series.length) * radius * process;\n    }\n    series[i]._proportion_ = series[i].data / series[0].data;\n  }\n  if (type !== 'pyramid') {\n    series.reverse();\n  }\n  return series;\n}\n\nfunction getRoseDataPoints(series, type, minRadius, radius) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var count = 0;\n  var _start_ = 0;\n  var dataArr = [];\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    item.data = item.data === null ? 0 : item.data;\n    count += item.data;\n    dataArr.push(item.data);\n  }\n  var minData = Math.min.apply(null, dataArr);\n  var maxData = Math.max.apply(null, dataArr);\n  var radiusLength = radius - minRadius;\n  for (var _i10 = 0; _i10 < series.length; _i10++) {\n    var _item4 = series[_i10];\n    _item4.data = _item4.data === null ? 0 : _item4.data;\n    if (count === 0) {\n      _item4._proportion_ = 1 / series.length * process;\n      _item4._rose_proportion_ = 1 / series.length * process;\n    } else {\n      _item4._proportion_ = _item4.data / count * process;\n      if (type == 'area') {\n        _item4._rose_proportion_ = 1 / series.length * process;\n      } else {\n        _item4._rose_proportion_ = _item4.data / count * process;\n      }\n    }\n    _item4._radius_ = minRadius + radiusLength * ((_item4.data - minData) / (maxData - minData)) || radius;\n  }\n  for (var _i11 = 0; _i11 < series.length; _i11++) {\n    var _item5 = series[_i11];\n    _item5._start_ = _start_;\n    _start_ += 2 * _item5._rose_proportion_ * Math.PI;\n  }\n  return series;\n}\n\nfunction getArcbarDataPoints(series, arcbarOption) {\n  var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n  if (process == 1) {\n    process = 0.999999;\n  }\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    item.data = item.data === null ? 0 : item.data;\n    var totalAngle = void 0;\n    if (arcbarOption.type == 'circle') {\n      totalAngle = 2;\n    } else {\n      if (arcbarOption.endAngle < arcbarOption.startAngle) {\n        totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;\n      } else {\n        totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\n      }\n    }\n    item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;\n    if (item._proportion_ >= 2) {\n      item._proportion_ = item._proportion_ % 2;\n    }\n  }\n  return series;\n}\n\nfunction getGaugeAxisPoints(categories, startAngle, endAngle) {\n  var totalAngle = startAngle - endAngle + 1;\n  var tempStartAngle = startAngle;\n  for (var i = 0; i < categories.length; i++) {\n    categories[i].value = categories[i].value === null ? 0 : categories[i].value;\n    categories[i]._startAngle_ = tempStartAngle;\n    categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle;\n    if (categories[i]._endAngle_ >= 2) {\n      categories[i]._endAngle_ = categories[i]._endAngle_ % 2;\n    }\n    tempStartAngle = categories[i]._endAngle_;\n  }\n  return categories;\n}\n\nfunction getGaugeDataPoints(series, categories, gaugeOption) {\n  var process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    item.data = item.data === null ? 0 : item.data;\n    if (gaugeOption.pointer.color == 'auto') {\n      for (var _i12 = 0; _i12 < categories.length; _i12++) {\n        if (item.data <= categories[_i12].value) {\n          item.color = categories[_i12].color;\n          break;\n        }\n      }\n    } else {\n      item.color = gaugeOption.pointer.color;\n    }\n    var totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\n    item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle;\n    item._oldAngle_ = gaugeOption.oldAngle;\n    if (gaugeOption.oldAngle < gaugeOption.endAngle) {\n      item._oldAngle_ += 2;\n    }\n    if (item.data >= gaugeOption.oldData) {\n      item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle;\n    } else {\n      item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process;\n    }\n    if (item._proportion_ >= 2) {\n      item._proportion_ = item._proportion_ % 2;\n    }\n  }\n  return series;\n}\n\nfunction getPieTextMaxLength(series, config, context, opts) {\n  series = getPieDataPoints(series);\n  var maxLength = 0;\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    var text = item.formatter ? item.formatter(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';\n    maxLength = Math.max(maxLength, measureText(text, item.textSize * opts.pix || config.fontSize, context));\n  }\n  return maxLength;\n}\n\nfunction fixColumeData(points, eachSpacing, columnLen, index, config, opts) {\n  return points.map(function (item) {\n    if (item === null) {\n      return null;\n    }\n    var seriesGap = 0;\n    var categoryGap = 0;\n    if (opts.type == 'mix') {\n      seriesGap = opts.extra.mix.column.seriesGap * opts.pix || 0;\n      categoryGap = opts.extra.mix.column.categoryGap * opts.pix || 0;\n    } else {\n      seriesGap = opts.extra.column.seriesGap * opts.pix || 0;\n      categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\n    }\n    seriesGap = Math.min(seriesGap, eachSpacing / columnLen);\n    categoryGap = Math.min(categoryGap, eachSpacing / columnLen);\n    item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);\n    if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) {\n      item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix);\n    }\n    if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\n      item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\n    }\n    if (item.width <= 0) {\n      item.width = 1;\n    }\n    item.x += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);\n    return item;\n  });\n}\n\nfunction fixBarData(points, eachSpacing, columnLen, index, config, opts) {\n  return points.map(function (item) {\n    if (item === null) {\n      return null;\n    }\n    var seriesGap = 0;\n    var categoryGap = 0;\n    seriesGap = opts.extra.bar.seriesGap * opts.pix || 0;\n    categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;\n    seriesGap = Math.min(seriesGap, eachSpacing / columnLen);\n    categoryGap = Math.min(categoryGap, eachSpacing / columnLen);\n    item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);\n    if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {\n      item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);\n    }\n    if (item.width <= 0) {\n      item.width = 1;\n    }\n    item.y += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);\n    return item;\n  });\n}\n\nfunction fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) {\n  var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\n  return points.map(function (item) {\n    if (item === null) {\n      return null;\n    }\n    item.width = Math.ceil(eachSpacing - 2 * categoryGap);\n    if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\n      item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\n    }\n    if (index > 0) {\n      item.width -= 2 * border;\n    }\n    return item;\n  });\n}\n\nfunction fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) {\n  var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\n  return points.map(function (item, indexn) {\n    if (item === null) {\n      return null;\n    }\n    item.width = Math.ceil(eachSpacing - 2 * categoryGap);\n    if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\n      item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\n    }\n    if (item.width <= 0) {\n      item.width = 1;\n    }\n    return item;\n  });\n}\n\nfunction fixBarStackData(points, eachSpacing, columnLen, index, config, opts, series) {\n  var categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;\n  return points.map(function (item, indexn) {\n    if (item === null) {\n      return null;\n    }\n    item.width = Math.ceil(eachSpacing - 2 * categoryGap);\n    if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {\n      item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);\n    }\n    if (item.width <= 0) {\n      item.width = 1;\n    }\n    return item;\n  });\n}\n\nfunction getXAxisPoints(categories, opts, config) {\n  var spacingValid = opts.width - opts.area[1] - opts.area[3];\n  var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length;\n  if ((opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' || opts.type == 'bar') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') {\n    dataCount -= 1;\n  }\n  var eachSpacing = spacingValid / dataCount;\n  var xAxisPoints = [];\n  var startX = opts.area[3];\n  var endX = opts.width - opts.area[1];\n  categories.forEach(function (item, index) {\n    xAxisPoints.push(startX + index * eachSpacing);\n  });\n  if (opts.xAxis.boundaryGap !== 'justify') {\n    if (opts.enableScroll === true) {\n      xAxisPoints.push(startX + categories.length * eachSpacing);\n    } else {\n      xAxisPoints.push(endX);\n    }\n  }\n  return {\n    xAxisPoints: xAxisPoints,\n    startX: startX,\n    endX: endX,\n    eachSpacing: eachSpacing };\n\n}\n\nfunction getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {\n  var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\n  var points = [];\n  var validHeight = opts.height - opts.area[0] - opts.area[2];\n  data.forEach(function (item, index) {\n    if (item === null) {\n      points.push(null);\n    } else {\n      var cPoints = [];\n      item.forEach(function (items, indexs) {\n        var point = {};\n        point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);\n        var value = items.value || items;\n        var height = validHeight * (value - minRange) / (maxRange - minRange);\n        height *= process;\n        point.y = opts.height - Math.round(height) - opts.area[2];\n        cPoints.push(point);\n      });\n      points.push(cPoints);\n    }\n  });\n  return points;\n}\n\nfunction getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {\n  var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\n  var boundaryGap = 'center';\n  if (opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {\n    boundaryGap = opts.xAxis.boundaryGap;\n  }\n  var points = [];\n  var validHeight = opts.height - opts.area[0] - opts.area[2];\n  var validWidth = opts.width - opts.area[1] - opts.area[3];\n  data.forEach(function (item, index) {\n    if (item === null) {\n      points.push(null);\n    } else {\n      var point = {};\n      point.color = item.color;\n      point.x = xAxisPoints[index];\n      var value = item;\n      if (typeof item === 'object' && item !== null) {\n        if (item.constructor.toString().indexOf('Array') > -1) {\n          var xranges, xminRange, xmaxRange;\n          xranges = [].concat(opts.chartData.xAxisData.ranges);\n          xminRange = xranges.shift();\n          xmaxRange = xranges.pop();\n          value = item[1];\n          point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);\n          if (opts.type == 'bubble') {\n            point.r = item[2];\n            point.t = item[3];\n          }\n        } else {\n          value = item.value;\n        }\n      }\n      if (boundaryGap == 'center') {\n        point.x += eachSpacing / 2;\n      }\n      var height = validHeight * (value - minRange) / (maxRange - minRange);\n      height *= process;\n      point.y = opts.height - height - opts.area[2];\n      points.push(point);\n    }\n  });\n  return points;\n}\n\nfunction getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config) {\n  var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\n  var points = [];\n  var validHeight = opts.height - opts.area[0] - opts.area[2];\n  var validWidth = opts.width - opts.area[1] - opts.area[3];\n  data.forEach(function (item, index) {\n    if (item === null) {\n      points.push(null);\n    } else {\n      var point = {};\n      point.color = item.color;\n      point.y = yAxisPoints[index];\n      var value = item;\n      if (typeof item === 'object' && item !== null) {\n        value = item.value;\n      }\n      var height = validWidth * (value - minRange) / (maxRange - minRange);\n      height *= process;\n      point.height = height;\n      point.value = value;\n      point.x = height + opts.area[3];\n      points.push(point);\n    }\n  });\n  return points;\n}\n\nfunction getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {\n  var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;\n  var points = [];\n  var validHeight = opts.height - opts.area[0] - opts.area[2];\n  data.forEach(function (item, index) {\n    if (item === null) {\n      points.push(null);\n    } else {\n      var point = {};\n      point.color = item.color;\n      point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);\n\n      if (seriesIndex > 0) {\n        var value = 0;\n        for (var i = 0; i <= seriesIndex; i++) {\n          value += stackSeries[i].data[index];\n        }\n        var value0 = value - item;\n        var height = validHeight * (value - minRange) / (maxRange - minRange);\n        var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);\n      } else {\n        var value = item;\n        var height = validHeight * (value - minRange) / (maxRange - minRange);\n        var height0 = 0;\n      }\n      var heightc = height0;\n      height *= process;\n      heightc *= process;\n      point.y = opts.height - Math.round(height) - opts.area[2];\n      point.y0 = opts.height - Math.round(heightc) - opts.area[2];\n      points.push(point);\n    }\n  });\n  return points;\n}\n\nfunction getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {\n  var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;\n  var points = [];\n  var validHeight = opts.width - opts.area[1] - opts.area[3];\n  data.forEach(function (item, index) {\n    if (item === null) {\n      points.push(null);\n    } else {\n      var point = {};\n      point.color = item.color;\n      point.y = yAxisPoints[index];\n      if (seriesIndex > 0) {\n        var value = 0;\n        for (var i = 0; i <= seriesIndex; i++) {\n          value += stackSeries[i].data[index];\n        }\n        var value0 = value - item;\n        var height = validHeight * (value - minRange) / (maxRange - minRange);\n        var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);\n      } else {\n        var value = item;\n        var height = validHeight * (value - minRange) / (maxRange - minRange);\n        var height0 = 0;\n      }\n      var heightc = height0;\n      height *= process;\n      heightc *= process;\n      point.height = height - heightc;\n      point.x = opts.area[3] + height;\n      point.x0 = opts.area[3] + heightc;\n      points.push(point);\n    }\n  });\n  return points;\n}\n\nfunction getYAxisTextList(series, opts, config, stack, yData) {\n  var index = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -1;\n  var data;\n  if (stack == 'stack') {\n    data = dataCombineStack(series, opts.categories.length);\n  } else {\n    data = dataCombine(series);\n  }\n  var sorted = [];\n  // remove null from data\n  data = data.filter(function (item) {\n    //return item !== null;\n    if (typeof item === 'object' && item !== null) {\n      if (item.constructor.toString().indexOf('Array') > -1) {\n        return item !== null;\n      } else {\n        return item.value !== null;\n      }\n    } else {\n      return item !== null;\n    }\n  });\n  data.map(function (item) {\n    if (typeof item === 'object') {\n      if (item.constructor.toString().indexOf('Array') > -1) {\n        if (opts.type == 'candle') {\n          item.map(function (subitem) {\n            sorted.push(subitem);\n          });\n        } else {\n          sorted.push(item[1]);\n        }\n      } else {\n        sorted.push(item.value);\n      }\n    } else {\n      sorted.push(item);\n    }\n  });\n  var minData = yData.min || 0;\n  var maxData = yData.max || 0;\n  if (sorted.length > 0) {\n    minData = Math.min.apply(this, sorted);\n    maxData = Math.max.apply(this, sorted);\n  }\n  //为了兼容v1.9.0之前的项目\n  // if (index > -1) {\n  //   if (typeof opts.yAxis.data[index].min === 'number') {\n  //     minData = Math.min(opts.yAxis.data[index].min, minData);\n  //   }\n  //   if (typeof opts.yAxis.data[index].max === 'number') {\n  //     maxData = Math.max(opts.yAxis.data[index].max, maxData);\n  //   }\n  // } else {\n  //   if (typeof opts.yAxis.min === 'number') {\n  //     minData = Math.min(opts.yAxis.min, minData);\n  //   }\n  //   if (typeof opts.yAxis.max === 'number') {\n  //     maxData = Math.max(opts.yAxis.max, maxData);\n  //   }\n  // }\n  if (minData === maxData) {\n    var rangeSpan = maxData || 10;\n    maxData += rangeSpan;\n  }\n  var dataRange = getDataRange(minData, maxData);\n  var minRange = yData.min === undefined || yData.min === null ? dataRange.minRange : yData.min;\n  var maxRange = yData.max === undefined || yData.min === null ? dataRange.maxRange : yData.max;\n  var range = [];\n  var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber;\n  for (var i = 0; i <= opts.yAxis.splitNumber; i++) {\n    range.push(minRange + eachRange * i);\n  }\n  return range.reverse();\n}\n\nfunction calYAxisData(series, opts, config, context) {\n  //堆叠图重算Y轴\n  var columnstyle = assign({}, {\n    type: \"\" },\n  opts.extra.column);\n  //如果是多Y轴,重新计算\n  var YLength = opts.yAxis.data.length;\n  var newSeries = new Array(YLength);\n  if (YLength > 0) {\n    for (var i = 0; i < YLength; i++) {\n      newSeries[i] = [];\n      for (var j = 0; j < series.length; j++) {\n        if (series[j].index == i) {\n          newSeries[i].push(series[j]);\n        }\n      }\n    }\n    var rangesArr = new Array(YLength);\n    var rangesFormatArr = new Array(YLength);\n    var yAxisWidthArr = new Array(YLength);var _loop3 = function _loop3(\n\n    _i13) {\n      var yData = opts.yAxis.data[_i13];\n      //如果总开关不显示,强制每个Y轴为不显示\n      if (opts.yAxis.disabled == true) {\n        yData.disabled = true;\n      }\n      if (yData.type === 'categories') {\n        if (!yData.formatter) {\n          yData.formatter = function (val) {return val + (yData.unit || '');};\n        }\n        yData.categories = yData.categories || opts.categories;\n        rangesArr[_i13] = yData.categories;\n      } else {\n        if (!yData.formatter) {\n          yData.formatter = function (val) {return val.toFixed(yData.tofix) + (yData.unit || '');};\n        }\n        rangesArr[_i13] = getYAxisTextList(newSeries[_i13], opts, config, columnstyle.type, yData, _i13);\n      }\n      var yAxisFontSizes = yData.fontSize * opts.pix || config.fontSize;\n      yAxisWidthArr[_i13] = {\n        position: yData.position ? yData.position : 'left',\n        width: 0 };\n\n      rangesFormatArr[_i13] = rangesArr[_i13].map(function (items) {\n        items = yData.formatter(items);\n        yAxisWidthArr[_i13].width = Math.max(yAxisWidthArr[_i13].width, measureText(items, yAxisFontSizes, context) + 5);\n        return items;\n      });\n      var calibration = yData.calibration ? 4 * opts.pix : 0;\n      yAxisWidthArr[_i13].width += calibration + 3 * opts.pix;\n      if (yData.disabled === true) {\n        yAxisWidthArr[_i13].width = 0;\n      }};for (var _i13 = 0; _i13 < YLength; _i13++) {_loop3(_i13);\n    }\n  } else {\n    var rangesArr = new Array(1);\n    var rangesFormatArr = new Array(1);\n    var yAxisWidthArr = new Array(1);\n    if (opts.type === 'bar') {\n      rangesArr[0] = opts.categories;\n      if (!opts.yAxis.formatter) {\n        opts.yAxis.formatter = function (val) {return val + (opts.yAxis.unit || '');};\n      }\n    } else {\n      if (!opts.yAxis.formatter) {\n        opts.yAxis.formatter = function (val) {return val.toFixed(opts.yAxis.tofix) + (opts.yAxis.unit || '');};\n      }\n      rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type, {});\n    }\n    yAxisWidthArr[0] = {\n      position: 'left',\n      width: 0 };\n\n    var yAxisFontSize = opts.yAxis.fontSize * opts.pix || config.fontSize;\n    rangesFormatArr[0] = rangesArr[0].map(function (item) {\n      item = opts.yAxis.formatter(item);\n      yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize, context) + 5);\n      return item;\n    });\n    yAxisWidthArr[0].width += 3 * opts.pix;\n    if (opts.yAxis.disabled === true) {\n      yAxisWidthArr[0] = {\n        position: 'left',\n        width: 0 };\n\n      opts.yAxis.data[0] = {\n        disabled: true };\n\n    } else {\n      opts.yAxis.data[0] = {\n        disabled: false,\n        position: 'left',\n        max: opts.yAxis.max,\n        min: opts.yAxis.min,\n        formatter: opts.yAxis.formatter };\n\n      if (opts.type === 'bar') {\n        opts.yAxis.data[0].categories = opts.categories;\n        opts.yAxis.data[0].type = 'categories';\n      }\n    }\n  }\n  return {\n    rangesFormat: rangesFormatArr,\n    ranges: rangesArr,\n    yAxisWidth: yAxisWidthArr };\n\n}\n\nfunction calTooltipYAxisData(point, series, opts, config, eachSpacing) {\n  var ranges = [].concat(opts.chartData.yAxisData.ranges);\n  var spacingValid = opts.height - opts.area[0] - opts.area[2];\n  var minAxis = opts.area[0];\n  var items = [];\n  for (var i = 0; i < ranges.length; i++) {\n    var maxVal = ranges[i].shift();\n    var minVal = ranges[i].pop();\n    var item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid;\n    item = opts.yAxis.data[i].formatter ? opts.yAxis.data[i].formatter(item) : item.toFixed(0);\n    items.push(String(item));\n  }\n  return items;\n}\n\nfunction calMarkLineData(points, opts) {\n  var minRange, maxRange;\n  var spacingValid = opts.height - opts.area[0] - opts.area[2];\n  for (var i = 0; i < points.length; i++) {\n    points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex : 0;\n    var range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]);\n    minRange = range.pop();\n    maxRange = range.shift();\n    var height = spacingValid * (points[i].value - minRange) / (maxRange - minRange);\n    points[i].y = opts.height - Math.round(height) - opts.area[2];\n  }\n  return points;\n}\n\nfunction contextRotate(context, opts) {\n  if (opts.rotateLock !== true) {\n    context.translate(opts.height, 0);\n    context.rotate(90 * Math.PI / 180);\n  } else if (opts._rotate_ !== true) {\n    context.translate(opts.height, 0);\n    context.rotate(90 * Math.PI / 180);\n    opts._rotate_ = true;\n  }\n}\n\nfunction drawPointShape(points, color, shape, context, opts) {\n  context.beginPath();\n  if (opts.dataPointShapeType == 'hollow') {\n    context.setStrokeStyle(color);\n    context.setFillStyle(opts.background);\n    context.setLineWidth(2 * opts.pix);\n  } else {\n    context.setStrokeStyle(\"#ffffff\");\n    context.setFillStyle(color);\n    context.setLineWidth(1 * opts.pix);\n  }\n  if (shape === 'diamond') {\n    points.forEach(function (item, index) {\n      if (item !== null) {\n        context.moveTo(item.x, item.y - 4.5);\n        context.lineTo(item.x - 4.5, item.y);\n        context.lineTo(item.x, item.y + 4.5);\n        context.lineTo(item.x + 4.5, item.y);\n        context.lineTo(item.x, item.y - 4.5);\n      }\n    });\n  } else if (shape === 'circle') {\n    points.forEach(function (item, index) {\n      if (item !== null) {\n        context.moveTo(item.x + 2.5 * opts.pix, item.y);\n        context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\n      }\n    });\n  } else if (shape === 'square') {\n    points.forEach(function (item, index) {\n      if (item !== null) {\n        context.moveTo(item.x - 3.5, item.y - 3.5);\n        context.rect(item.x - 3.5, item.y - 3.5, 7, 7);\n      }\n    });\n  } else if (shape === 'triangle') {\n    points.forEach(function (item, index) {\n      if (item !== null) {\n        context.moveTo(item.x, item.y - 4.5);\n        context.lineTo(item.x - 4.5, item.y + 4.5);\n        context.lineTo(item.x + 4.5, item.y + 4.5);\n        context.lineTo(item.x, item.y - 4.5);\n      }\n    });\n  } else if (shape === 'triangle') {\n    return;\n  }\n  context.closePath();\n  context.fill();\n  context.stroke();\n}\n\nfunction drawRingTitle(opts, config, context, center) {\n  var titlefontSize = opts.title.fontSize || config.titleFontSize;\n  var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize;\n  var title = opts.title.name || '';\n  var subtitle = opts.subtitle.name || '';\n  var titleFontColor = opts.title.color || opts.fontColor;\n  var subtitleFontColor = opts.subtitle.color || opts.fontColor;\n  var titleHeight = title ? titlefontSize : 0;\n  var subtitleHeight = subtitle ? subtitlefontSize : 0;\n  var margin = 5;\n  if (subtitle) {\n    var textWidth = measureText(subtitle, subtitlefontSize * opts.pix, context);\n    var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX || 0) * opts.pix;\n    var startY = center.y + subtitlefontSize * opts.pix / 2 + (opts.subtitle.offsetY || 0) * opts.pix;\n    if (title) {\n      startY += (titleHeight * opts.pix + margin) / 2;\n    }\n    context.beginPath();\n    context.setFontSize(subtitlefontSize * opts.pix);\n    context.setFillStyle(subtitleFontColor);\n    context.fillText(subtitle, startX, startY);\n    context.closePath();\n    context.stroke();\n  }\n  if (title) {\n    var _textWidth = measureText(title, titlefontSize * opts.pix, context);\n    var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0);\n    var _startY = center.y + titlefontSize * opts.pix / 2 + (opts.title.offsetY || 0) * opts.pix;\n    if (subtitle) {\n      _startY -= (subtitleHeight * opts.pix + margin) / 2;\n    }\n    context.beginPath();\n    context.setFontSize(titlefontSize * opts.pix);\n    context.setFillStyle(titleFontColor);\n    context.fillText(title, _startX, _startY);\n    context.closePath();\n    context.stroke();\n  }\n}\n\nfunction drawPointText(points, series, config, context, opts) {\n  // 绘制数据文案\n  var data = series.data;\n  var textOffset = series.textOffset ? series.textOffset : 0;\n  points.forEach(function (item, index) {\n    if (item !== null) {\n      context.beginPath();\n      var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\n      context.setFontSize(fontSize);\n      context.setFillStyle(series.textColor || opts.fontColor);\n      var value = data[index];\n      if (typeof data[index] === 'object' && data[index] !== null) {\n        if (data[index].constructor.toString().indexOf('Array') > -1) {\n          value = data[index][1];\n        } else {\n          value = data[index].value;\n        }\n      }\n      var formatVal = series.formatter ? series.formatter(value, index) : value;\n      context.setTextAlign('center');\n      context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix);\n      context.closePath();\n      context.stroke();\n      context.setTextAlign('left');\n    }\n  });\n}\n\nfunction drawBarPointText(points, series, config, context, opts) {\n  // 绘制数据文案\n  var data = series.data;\n  var textOffset = series.textOffset ? series.textOffset : 0;\n  points.forEach(function (item, index) {\n    if (item !== null) {\n      context.beginPath();\n      var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\n      context.setFontSize(fontSize);\n      context.setFillStyle(series.textColor || opts.fontColor);\n      var value = data[index];\n      if (typeof data[index] === 'object' && data[index] !== null) {\n        value = data[index].value;\n      }\n      var formatVal = series.formatter ? series.formatter(value, index) : value;\n      context.setTextAlign('left');\n      context.fillText(String(formatVal), item.x + 4 * opts.pix, item.y + fontSize / 2 - 3);\n      context.closePath();\n      context.stroke();\n    }\n  });\n}\n\nfunction drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) {\n  radius -= gaugeOption.width / 2 + gaugeOption.labelOffset * opts.pix;\n  var totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\n  var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\n  var totalNumber = gaugeOption.endNumber - gaugeOption.startNumber;\n  var splitNumber = totalNumber / gaugeOption.splitLine.splitNumber;\n  var nowAngle = gaugeOption.startAngle;\n  var nowNumber = gaugeOption.startNumber;\n  for (var i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {\n    var pos = {\n      x: radius * Math.cos(nowAngle * Math.PI),\n      y: radius * Math.sin(nowAngle * Math.PI) };\n\n    var labelText = gaugeOption.formatter ? gaugeOption.formatter(nowNumber) : nowNumber;\n    pos.x += centerPosition.x - measureText(labelText, config.fontSize, context) / 2;\n    pos.y += centerPosition.y;\n    var startX = pos.x;\n    var startY = pos.y;\n    context.beginPath();\n    context.setFontSize(config.fontSize);\n    context.setFillStyle(gaugeOption.labelColor || opts.fontColor);\n    context.fillText(labelText, startX, startY + config.fontSize / 2);\n    context.closePath();\n    context.stroke();\n    nowAngle += splitAngle;\n    if (nowAngle >= 2) {\n      nowAngle = nowAngle % 2;\n    }\n    nowNumber += splitNumber;\n  }\n\n}\n\nfunction drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {\n  var radarOption = opts.extra.radar || {};\n  radius += config.radarLabelTextMargin * opts.pix;\n  angleList.forEach(function (angle, index) {\n    var pos = {\n      x: radius * Math.cos(angle),\n      y: radius * Math.sin(angle) };\n\n    var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition);\n    var startX = posRelativeCanvas.x;\n    var startY = posRelativeCanvas.y;\n    if (util.approximatelyEqual(pos.x, 0)) {\n      startX -= measureText(opts.categories[index] || '', config.fontSize, context) / 2;\n    } else if (pos.x < 0) {\n      startX -= measureText(opts.categories[index] || '', config.fontSize, context);\n    }\n    context.beginPath();\n    context.setFontSize(config.fontSize);\n    context.setFillStyle(radarOption.labelColor || opts.fontColor);\n    context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2);\n    context.closePath();\n    context.stroke();\n  });\n\n}\n\nfunction drawPieText(series, opts, config, context, radius, center) {\n  var lineRadius = config.pieChartLinePadding;\n  var textObjectCollection = [];\n  var lastTextObject = null;\n  var seriesConvert = series.map(function (item, index, series) {\n    var text = item.formatter ? item.formatter(item, index, series) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%';\n    var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);\n    if (item._rose_proportion_) {\n      arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._rose_proportion_ / 2);\n    }\n    var color = item.color;\n    var radius = item._radius_;\n    return {\n      arc: arc,\n      text: text,\n      color: color,\n      radius: radius,\n      textColor: item.textColor,\n      textSize: item.textSize };\n\n  });\n  for (var i = 0; i < seriesConvert.length; i++) {\n    var item = seriesConvert[i];\n    // line end\n    var orginX1 = Math.cos(item.arc) * (item.radius + lineRadius);\n    var orginY1 = Math.sin(item.arc) * (item.radius + lineRadius);\n    // line start\n    var orginX2 = Math.cos(item.arc) * item.radius;\n    var orginY2 = Math.sin(item.arc) * item.radius;\n    // text start\n    var orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding;\n    var orginY3 = orginY1;\n    var textWidth = measureText(item.text, item.textSize * opts.pix || config.fontSize, context);\n    var startY = orginY3;\n    if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, {\n      x: orginX3 }))\n    {\n      if (orginX3 > 0) {\n        startY = Math.min(orginY3, lastTextObject.start.y);\n      } else if (orginX1 < 0) {\n        startY = Math.max(orginY3, lastTextObject.start.y);\n      } else {\n        if (orginY3 > 0) {\n          startY = Math.max(orginY3, lastTextObject.start.y);\n        } else {\n          startY = Math.min(orginY3, lastTextObject.start.y);\n        }\n      }\n    }\n    if (orginX3 < 0) {\n      orginX3 -= textWidth;\n    }\n    var textObject = {\n      lineStart: {\n        x: orginX2,\n        y: orginY2 },\n\n      lineEnd: {\n        x: orginX1,\n        y: orginY1 },\n\n      start: {\n        x: orginX3,\n        y: startY },\n\n      width: textWidth,\n      height: config.fontSize,\n      text: item.text,\n      color: item.color,\n      textColor: item.textColor,\n      textSize: item.textSize };\n\n    lastTextObject = avoidCollision(textObject, lastTextObject);\n    textObjectCollection.push(lastTextObject);\n  }\n  for (var _i14 = 0; _i14 < textObjectCollection.length; _i14++) {\n    var _item6 = textObjectCollection[_i14];\n    var lineStartPoistion = convertCoordinateOrigin(_item6.lineStart.x, _item6.lineStart.y, center);\n    var lineEndPoistion = convertCoordinateOrigin(_item6.lineEnd.x, _item6.lineEnd.y, center);\n    var textPosition = convertCoordinateOrigin(_item6.start.x, _item6.start.y, center);\n    context.setLineWidth(1 * opts.pix);\n    context.setFontSize(_item6.textSize * opts.pix || config.fontSize);\n    context.beginPath();\n    context.setStrokeStyle(_item6.color);\n    context.setFillStyle(_item6.color);\n    context.moveTo(lineStartPoistion.x, lineStartPoistion.y);\n    var curveStartX = _item6.start.x < 0 ? textPosition.x + _item6.width : textPosition.x;\n    var textStartX = _item6.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5;\n    context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y);\n    context.moveTo(lineStartPoistion.x, lineStartPoistion.y);\n    context.stroke();\n    context.closePath();\n    context.beginPath();\n    context.moveTo(textPosition.x + _item6.width, textPosition.y);\n    context.arc(curveStartX, textPosition.y, 2, 0, 2 * Math.PI);\n    context.closePath();\n    context.fill();\n    context.beginPath();\n    context.setFontSize(_item6.textSize * opts.pix || config.fontSize);\n    context.setFillStyle(_item6.textColor || opts.fontColor);\n    context.fillText(_item6.text, textStartX, textPosition.y + 3);\n    context.closePath();\n    context.stroke();\n    context.closePath();\n  }\n}\n\nfunction drawToolTipSplitLine(offsetX, opts, config, context) {\n  var toolTipOption = opts.extra.tooltip || {};\n  toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType;\n  toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength;\n  var startY = opts.area[0];\n  var endY = opts.height - opts.area[2];\n  if (toolTipOption.gridType == 'dash') {\n    context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);\n  }\n  context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');\n  context.setLineWidth(1 * opts.pix);\n  context.beginPath();\n  context.moveTo(offsetX, startY);\n  context.lineTo(offsetX, endY);\n  context.stroke();\n  context.setLineDash([]);\n  if (toolTipOption.xAxisLabel) {\n    var labelText = opts.categories[opts.tooltip.index];\n    context.setFontSize(config.fontSize);\n    var textWidth = measureText(labelText, config.fontSize, context);\n    var textX = offsetX - 0.5 * textWidth;\n    var textY = endY;\n    context.beginPath();\n    context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));\n    context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);\n    context.setLineWidth(1 * opts.pix);\n    context.rect(textX - config.toolTipPadding, textY, textWidth + 2 * config.toolTipPadding, config.fontSize + 2 * config.toolTipPadding);\n    context.closePath();\n    context.stroke();\n    context.fill();\n    context.beginPath();\n    context.setFontSize(config.fontSize);\n    context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);\n    context.fillText(String(labelText), textX, textY + config.toolTipPadding + config.fontSize);\n    context.closePath();\n    context.stroke();\n  }\n}\n\nfunction drawMarkLine(opts, config, context) {\n  var markLineOption = assign({}, {\n    type: 'solid',\n    dashLength: 4,\n    data: [] },\n  opts.extra.markLine);\n  var startX = opts.area[3];\n  var endX = opts.width - opts.area[1];\n  var points = calMarkLineData(markLineOption.data, opts);\n  for (var i = 0; i < points.length; i++) {\n    var item = assign({}, {\n      lineColor: '#DE4A42',\n      showLabel: false,\n      labelFontColor: '#666666',\n      labelBgColor: '#DFE8FF',\n      labelBgOpacity: 0.8,\n      yAxisIndex: 0 },\n    points[i]);\n    if (markLineOption.type == 'dash') {\n      context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]);\n    }\n    context.setStrokeStyle(item.lineColor);\n    context.setLineWidth(1 * opts.pix);\n    context.beginPath();\n    context.moveTo(startX, item.y);\n    context.lineTo(endX, item.y);\n    context.stroke();\n    context.setLineDash([]);\n    if (item.showLabel) {\n      var labelText = opts.yAxis.formatter ? opts.yAxis.formatter(item.value) : item.value;\n      context.setFontSize(config.fontSize);\n      var textWidth = measureText(labelText, config.fontSize, context);\n      var yAxisWidth = opts.chartData.yAxisData.yAxisWidth[0].width;\n      var bgStartX = opts.area[3] - textWidth - config.toolTipPadding * 2;\n      var bgEndX = opts.area[3];\n      var bgWidth = bgEndX - bgStartX;\n      var textX = bgEndX - config.toolTipPadding;\n      var textY = item.y;\n      context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity));\n      context.setStrokeStyle(item.labelBgColor);\n      context.setLineWidth(1 * opts.pix);\n      context.beginPath();\n      context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding);\n      context.closePath();\n      context.stroke();\n      context.fill();\n      context.setFontSize(config.fontSize);\n      context.setTextAlign('right');\n      context.setFillStyle(item.labelFontColor);\n      context.fillText(String(labelText), textX, textY + 0.5 * config.fontSize);\n      context.stroke();\n      context.setTextAlign('left');\n    }\n  }\n}\n\nfunction drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) {\n  var toolTipOption = assign({}, {\n    gridType: 'solid',\n    dashLength: 4 },\n  opts.extra.tooltip);\n  var startX = opts.area[3];\n  var endX = opts.width - opts.area[1];\n  if (toolTipOption.gridType == 'dash') {\n    context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);\n  }\n  context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');\n  context.setLineWidth(1 * opts.pix);\n  context.beginPath();\n  context.moveTo(startX, opts.tooltip.offset.y);\n  context.lineTo(endX, opts.tooltip.offset.y);\n  context.stroke();\n  context.setLineDash([]);\n  if (toolTipOption.yAxisLabel) {\n    var labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing);\n    var widthArr = opts.chartData.yAxisData.yAxisWidth;\n    var tStartLeft = opts.area[3];\n    var tStartRight = opts.width - opts.area[1];\n    for (var i = 0; i < labelText.length; i++) {\n      context.setFontSize(config.fontSize);\n      var textWidth = measureText(labelText[i], config.fontSize, context);\n      var bgStartX = void 0,bgEndX = void 0,bgWidth = void 0;\n      if (widthArr[i].position == 'left') {\n        bgStartX = tStartLeft - widthArr[i].width;\n        bgEndX = Math.max(bgStartX, bgStartX + textWidth + config.toolTipPadding * 2);\n      } else {\n        bgStartX = tStartRight;\n        bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + config.toolTipPadding * 2);\n      }\n      bgWidth = bgEndX - bgStartX;\n      var textX = bgStartX + (bgWidth - textWidth) / 2;\n      var textY = opts.tooltip.offset.y;\n      context.beginPath();\n      context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));\n      context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);\n      context.setLineWidth(1 * opts.pix);\n      context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 *\n      config.toolTipPadding);\n      context.closePath();\n      context.stroke();\n      context.fill();\n      context.beginPath();\n      context.setFontSize(config.fontSize);\n      context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);\n      context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize);\n      context.closePath();\n      context.stroke();\n      if (widthArr[i].position == 'left') {\n        tStartLeft -= widthArr[i].width + opts.yAxis.padding * opts.pix;\n      } else {\n        tStartRight += widthArr[i].width + opts.yAxis.padding * opts.pix;\n      }\n    }\n  }\n}\n\nfunction drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {\n  var toolTipOption = assign({}, {\n    activeBgColor: '#000000',\n    activeBgOpacity: 0.08 },\n  opts.extra.column);\n  var startY = opts.area[0];\n  var endY = opts.height - opts.area[2];\n  context.beginPath();\n  context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));\n  context.rect(offsetX - eachSpacing / 2, startY, eachSpacing, endY - startY);\n  context.closePath();\n  context.fill();\n  context.setFillStyle(\"#FFFFFF\");\n}\n\nfunction drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {\n  var toolTipOption = assign({}, {\n    activeBgColor: '#000000',\n    activeBgOpacity: 0.08 },\n  opts.extra.bar);\n  var startX = opts.area[3];\n  var endX = opts.width - opts.area[1];\n  context.beginPath();\n  context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));\n  context.rect(startX, offsetX - eachSpacing / 2, endX - startX, eachSpacing);\n  context.closePath();\n  context.fill();\n  context.setFillStyle(\"#FFFFFF\");\n}\n\nfunction drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) {\n  var toolTipOption = assign({}, {\n    showBox: true,\n    showArrow: true,\n    showCategory: false,\n    bgColor: '#000000',\n    bgOpacity: 0.7,\n    borderColor: '#000000',\n    borderWidth: 0,\n    borderRadius: 0,\n    borderOpacity: 0.7,\n    fontColor: '#FFFFFF',\n    splitLine: true },\n  opts.extra.tooltip);\n  if (toolTipOption.showCategory == true && opts.categories) {\n    textList.unshift({ text: opts.categories[opts.tooltip.index], color: null });\n  }\n  var legendWidth = 4 * opts.pix;\n  var legendMarginRight = 5 * opts.pix;\n  var arrowWidth = toolTipOption.showArrow ? 8 * opts.pix : 0;\n  var isOverRightBorder = false;\n  if (opts.type == 'line' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') {\n    if (toolTipOption.splitLine == true) {\n      drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);\n    }\n  }\n  offset = assign({\n    x: 0,\n    y: 0 },\n  offset);\n  offset.y -= 8 * opts.pix;\n  var textWidth = textList.map(function (item) {\n    return measureText(item.text, config.fontSize, context);\n  });\n  var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth);\n  var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight;\n  if (toolTipOption.showBox == false) {\n    return;\n  }\n  // if beyond the right border\n  if (offset.x - Math.abs(opts._scrollDistance_ || 0) + arrowWidth + toolTipWidth > opts.width) {\n    isOverRightBorder = true;\n  }\n  if (toolTipHeight + offset.y > opts.height) {\n    offset.y = opts.height - toolTipHeight;\n  }\n  // draw background rect\n  context.beginPath();\n  context.setFillStyle(hexToRgb(toolTipOption.bgColor || config.toolTipBackground, toolTipOption.bgOpacity || config.toolTipOpacity));\n  context.setLineWidth(toolTipOption.borderWidth * opts.pix);\n  context.setStrokeStyle(hexToRgb(toolTipOption.borderColor, toolTipOption.borderOpacity));\n  var radius = toolTipOption.borderRadius;\n  if (isOverRightBorder) {\n    if (toolTipOption.showArrow) {\n      context.moveTo(offset.x, offset.y + 10 * opts.pix);\n      context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);\n    }\n    context.arc(offset.x - arrowWidth - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);\n    context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + toolTipHeight - radius, radius,\n    Math.PI / 2, Math.PI, false);\n    context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);\n    context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);\n    if (toolTipOption.showArrow) {\n      context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);\n      context.lineTo(offset.x, offset.y + 10 * opts.pix);\n    }\n  } else {\n    if (toolTipOption.showArrow) {\n      context.moveTo(offset.x, offset.y + 10 * opts.pix);\n      context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);\n    }\n    context.arc(offset.x + arrowWidth + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);\n    context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + radius, radius, -Math.PI / 2, 0,\n    false);\n    context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + toolTipHeight - radius, radius, 0,\n    Math.PI / 2, false);\n    context.arc(offset.x + arrowWidth + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);\n    if (toolTipOption.showArrow) {\n      context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);\n      context.lineTo(offset.x, offset.y + 10 * opts.pix);\n    }\n  }\n  context.closePath();\n  context.fill();\n  if (toolTipOption.borderWidth > 0) {\n    context.stroke();\n  }\n  // draw legend\n  textList.forEach(function (item, index) {\n    if (item.color !== null) {\n      context.beginPath();\n      context.setFillStyle(item.color);\n      var startX = offset.x + arrowWidth + 2 * config.toolTipPadding;\n      var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding + 1;\n      if (isOverRightBorder) {\n        startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding;\n      }\n      context.fillRect(startX, startY, legendWidth, config.fontSize);\n      context.closePath();\n    }\n  });\n  // draw text list\n  textList.forEach(function (item, index) {\n    var startX = offset.x + arrowWidth + 2 * config.toolTipPadding + legendWidth + legendMarginRight;\n    if (isOverRightBorder) {\n      startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding + +legendWidth + legendMarginRight;\n    }\n    var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding;\n    context.beginPath();\n    context.setFontSize(config.fontSize);\n    context.setFillStyle(toolTipOption.fontColor);\n    context.fillText(item.text, startX, startY + config.fontSize);\n    context.closePath();\n    context.stroke();\n  });\n}\n\nfunction drawColumnDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var xAxisData = opts.chartData.xAxisData,\n  xAxisPoints = xAxisData.xAxisPoints,\n  eachSpacing = xAxisData.eachSpacing;\n  var columnOption = assign({}, {\n    type: 'group',\n    width: eachSpacing / 2,\n    meterBorder: 4,\n    meterFillColor: '#FFFFFF',\n    barBorderCircle: false,\n    barBorderRadius: [],\n    seriesGap: 2,\n    linearType: 'none',\n    linearOpacity: 1,\n    customColor: [],\n    colorStop: 0 },\n  opts.extra.column);\n  var calPoints = [];\n  context.save();\n  var leftNum = -2;\n  var rightNum = xAxisPoints.length + 2;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n    rightNum = leftNum + opts.xAxis.itemCount + 4;\n  }\n  if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\n    drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing);\n  }\n  columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    switch (columnOption.type) {\n      case 'group':\n        var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n        var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n        calPoints.push(tooltipPoints);\n        points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);\n        for (var i = 0; i < points.length; i++) {\n          var item = points[i];\n          //fix issues/I27B1N yyoinge & Joeshu\n          if (item !== null && i > leftNum && i < rightNum) {\n            var startX = item.x - item.width / 2;\n            var height = opts.height - item.y - opts.area[2];\n            context.beginPath();\n            var fillColor = item.color || eachSeries.color;\n            var strokeColor = item.color || eachSeries.color;\n            if (columnOption.linearType !== 'none') {\n              var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\n              //透明渐变\n              if (columnOption.linearType == 'opacity') {\n                grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\n                grd.addColorStop(1, hexToRgb(fillColor, 1));\n              } else {\n                grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n                grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n                grd.addColorStop(1, hexToRgb(fillColor, 1));\n              }\n              fillColor = grd;\n            }\n            // 圆角边框\n            if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {\n              var left = startX;\n              var top = item.y;\n              var width = item.width;\n              var _height = opts.height - opts.area[2] - item.y;\n              if (columnOption.barBorderCircle) {\n                columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n              }var _columnOption$barBord = _slicedToArray(\n              columnOption.barBorderRadius, 4),r0 = _columnOption$barBord[0],r1 = _columnOption$barBord[1],r2 = _columnOption$barBord[2],r3 = _columnOption$barBord[3];\n              var minRadius = Math.min(width / 2, _height / 2);\n              r0 = r0 > minRadius ? minRadius : r0;\n              r1 = r1 > minRadius ? minRadius : r1;\n              r2 = r2 > minRadius ? minRadius : r2;\n              r3 = r3 > minRadius ? minRadius : r3;\n              r0 = r0 < 0 ? 0 : r0;\n              r1 = r1 < 0 ? 0 : r1;\n              r2 = r2 < 0 ? 0 : r2;\n              r3 = r3 < 0 ? 0 : r3;\n              context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\n              context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\n              context.arc(left + width - r2, top + _height - r2, r2, 0, Math.PI / 2);\n              context.arc(left + r3, top + _height - r3, r3, Math.PI / 2, Math.PI);\n            } else {\n              context.moveTo(startX, item.y);\n              context.lineTo(startX + item.width - 2, item.y);\n              context.lineTo(startX + item.width - 2, opts.height - opts.area[2]);\n              context.lineTo(startX, opts.height - opts.area[2]);\n              context.lineTo(startX, item.y);\n              context.setLineWidth(1);\n              context.setStrokeStyle(strokeColor);\n            }\n            context.setFillStyle(fillColor);\n            context.closePath();\n            //context.stroke();\n            context.fill();\n          }\n        };\n        break;\n      case 'stack':\n        // 绘制堆叠数据图\n        var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n        calPoints.push(points);\n        points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);\n        for (var _i15 = 0; _i15 < points.length; _i15++) {\n          var _item7 = points[_i15];\n          if (_item7 !== null && _i15 > leftNum && _i15 < rightNum) {\n            context.beginPath();\n            var fillColor = _item7.color || eachSeries.color;\n            var startX = _item7.x - _item7.width / 2 + 1;\n            var height = opts.height - _item7.y - opts.area[2];\n            var height0 = opts.height - _item7.y0 - opts.area[2];\n            if (seriesIndex > 0) {\n              height -= height0;\n            }\n            context.setFillStyle(fillColor);\n            context.moveTo(startX, _item7.y);\n            context.fillRect(startX, _item7.y, _item7.width - 2, height);\n            context.closePath();\n            context.fill();\n          }\n        };\n        break;\n      case 'meter':\n        // 绘制温度计数据图\n        var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n        calPoints.push(points);\n        points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meterBorder);\n        if (seriesIndex == 0) {\n          for (var _i16 = 0; _i16 < points.length; _i16++) {\n            var _item8 = points[_i16];\n            if (_item8 !== null && _i16 > leftNum && _i16 < rightNum) {\n              //画背景颜色\n              context.beginPath();\n              context.setFillStyle(columnOption.meterFillColor);\n              var startX = _item8.x - _item8.width / 2;\n              var height = opts.height - _item8.y - opts.area[2];\n              if (columnOption.barBorderCircle) {\n                var barBorderRadius = (_item8.width - columnOption.meterBorder * 2) / 2;\n                if (barBorderRadius > height) {\n                  barBorderRadius = height;\n                }\n                context.moveTo(startX + columnOption.meterBorder, opts.height - opts.area[2]);\n                context.lineTo(startX + columnOption.meterBorder, _item8.y + barBorderRadius);\n                context.arc(startX + _item8.width / 2, _item8.y + barBorderRadius, barBorderRadius, -Math.PI, 0);\n                context.lineTo(startX + _item8.width - columnOption.meterBorder, opts.height - opts.area[2]);\n                context.lineTo(startX, opts.height - opts.area[2]);\n                context.fill();\n              } else {\n                context.moveTo(startX, _item8.y);\n                context.fillRect(startX, _item8.y, _item8.width, height);\n                context.closePath();\n                context.fill();\n              }\n              //画边框线\n              if (columnOption.meterBorder > 0) {\n                context.beginPath();\n                context.setStrokeStyle(eachSeries.color);\n                context.setLineWidth(columnOption.meterBorder * opts.pix);\n                if (columnOption.barBorderCircle) {\n                  var barBorderRadius = (_item8.width - columnOption.meterBorder) / 2;\n                  if (barBorderRadius > height) {\n                    barBorderRadius = height;\n                  }\n                  context.moveTo(startX + columnOption.meterBorder * 0.5, opts.height - opts.area[2]);\n                  context.lineTo(startX + columnOption.meterBorder * 0.5, _item8.y + barBorderRadius);\n                  context.arc(startX + _item8.width / 2, _item8.y + barBorderRadius - columnOption.meterBorder * 0.5, barBorderRadius, -Math.PI, 0);\n                  context.lineTo(startX + _item8.width - columnOption.meterBorder * 0.5, opts.height - opts.area[2]);\n                } else {\n                  context.moveTo(startX + columnOption.meterBorder * 0.5, _item8.y + height);\n                  context.lineTo(startX + columnOption.meterBorder * 0.5, _item8.y + columnOption.meterBorder * 0.5);\n                  context.lineTo(startX + _item8.width - columnOption.meterBorder * 0.5, _item8.y + columnOption.meterBorder * 0.5);\n                  context.lineTo(startX + _item8.width - columnOption.meterBorder * 0.5, _item8.y + height);\n                }\n                context.stroke();\n              }\n            }\n          };\n        } else {\n          for (var _i17 = 0; _i17 < points.length; _i17++) {\n            var _item9 = points[_i17];\n            if (_item9 !== null && _i17 > leftNum && _i17 < rightNum) {\n              context.beginPath();\n              context.setFillStyle(_item9.color || eachSeries.color);\n              var startX = _item9.x - _item9.width / 2;\n              var height = opts.height - _item9.y - opts.area[2];\n              if (columnOption.barBorderCircle) {\n                var barBorderRadius = _item9.width / 2;\n                if (barBorderRadius > height) {\n                  barBorderRadius = height;\n                }\n                context.moveTo(startX, opts.height - opts.area[2]);\n                context.arc(startX + barBorderRadius, _item9.y + barBorderRadius, barBorderRadius, -Math.PI, -Math.PI / 2);\n                context.arc(startX + _item9.width - barBorderRadius, _item9.y + barBorderRadius, barBorderRadius, -Math.PI / 2, 0);\n                context.lineTo(startX + _item9.width, opts.height - opts.area[2]);\n                context.lineTo(startX, opts.height - opts.area[2]);\n                context.fill();\n              } else {\n                context.moveTo(startX, _item9.y);\n                context.fillRect(startX, _item9.y, _item9.width, height);\n                context.closePath();\n                context.fill();\n              }\n            }\n          };\n        }\n        break;}\n\n  });\n\n  if (opts.dataLabel !== false && process === 1) {\n    series.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n      minRange = ranges.pop();\n      maxRange = ranges.shift();\n      var data = eachSeries.data;\n      switch (columnOption.type) {\n        case 'group':\n          var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n          points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);\n          drawPointText(points, eachSeries, config, context, opts);\n          break;\n        case 'stack':\n          var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n          drawPointText(points, eachSeries, config, context, opts);\n          break;\n        case 'meter':\n          var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n          drawPointText(points, eachSeries, config, context, opts);\n          break;}\n\n    });\n  }\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing };\n\n}\n\nfunction drawBarDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var yAxisPoints = [];\n  var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / opts.categories.length;\n  for (var i = 0; i < opts.categories.length; i++) {\n    yAxisPoints.push(opts.area[0] + eachSpacing / 2 + eachSpacing * i);\n  }\n  var columnOption = assign({}, {\n    type: 'group',\n    width: eachSpacing / 2,\n    meterBorder: 4,\n    meterFillColor: '#FFFFFF',\n    barBorderCircle: false,\n    barBorderRadius: [],\n    seriesGap: 2,\n    linearType: 'none',\n    linearOpacity: 1,\n    customColor: [],\n    colorStop: 0 },\n  opts.extra.bar);\n  var calPoints = [];\n  context.save();\n  var leftNum = -2;\n  var rightNum = yAxisPoints.length + 2;\n  if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\n    drawBarToolTipSplitArea(opts.tooltip.offset.y, opts, config, context, eachSpacing);\n  }\n  columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.xAxisData.ranges);\n    maxRange = ranges.pop();\n    minRange = ranges.shift();\n    var data = eachSeries.data;\n    switch (columnOption.type) {\n      case 'group':\n        var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);\n        var tooltipPoints = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n        calPoints.push(tooltipPoints);\n        points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);\n        for (var _i18 = 0; _i18 < points.length; _i18++) {\n          var item = points[_i18];\n          //fix issues/I27B1N yyoinge & Joeshu\n          if (item !== null && _i18 > leftNum && _i18 < rightNum) {\n            //var startX = item.x - item.width / 2;\n            var startX = opts.area[3];\n            var startY = item.y - item.width / 2;\n            var height = item.height;\n            context.beginPath();\n            var fillColor = item.color || eachSeries.color;\n            var strokeColor = item.color || eachSeries.color;\n            if (columnOption.linearType !== 'none') {\n              var grd = context.createLinearGradient(startX, item.y, item.x, item.y);\n              //透明渐变\n              if (columnOption.linearType == 'opacity') {\n                grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\n                grd.addColorStop(1, hexToRgb(fillColor, 1));\n              } else {\n                grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n                grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n                grd.addColorStop(1, hexToRgb(fillColor, 1));\n              }\n              fillColor = grd;\n            }\n            // 圆角边框\n            if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {\n              var left = startX;\n              var width = item.width;\n              var top = item.y - item.width / 2;\n              var _height2 = item.heigh;\n              if (columnOption.barBorderCircle) {\n                columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n              }var _columnOption$barBord2 = _slicedToArray(\n              columnOption.barBorderRadius, 4),r0 = _columnOption$barBord2[0],r1 = _columnOption$barBord2[1],r2 = _columnOption$barBord2[2],r3 = _columnOption$barBord2[3];\n              var minRadius = Math.min(width / 2, _height2 / 2);\n              r0 = r0 > minRadius ? minRadius : r0;\n              r1 = r1 > minRadius ? minRadius : r1;\n              r2 = r2 > minRadius ? minRadius : r2;\n              r3 = r3 > minRadius ? minRadius : r3;\n              r0 = r0 < 0 ? 0 : r0;\n              r1 = r1 < 0 ? 0 : r1;\n              r2 = r2 < 0 ? 0 : r2;\n              r3 = r3 < 0 ? 0 : r3;\n\n              context.arc(left + r3, top + r3, r3, -Math.PI, -Math.PI / 2);\n              context.arc(item.x - r0, top + r0, r0, -Math.PI / 2, 0);\n              context.arc(item.x - r1, top + width - r1, r1, 0, Math.PI / 2);\n              context.arc(left + r2, top + width - r2, r2, Math.PI / 2, Math.PI);\n            } else {\n              context.moveTo(startX, startY);\n              context.lineTo(item.x, startY);\n              context.lineTo(item.x, startY + item.width - 2);\n              context.lineTo(startX, startY + item.width - 2);\n              context.lineTo(startX, startY);\n              context.setLineWidth(1);\n              context.setStrokeStyle(strokeColor);\n            }\n            context.setFillStyle(fillColor);\n            context.closePath();\n            //context.stroke();\n            context.fill();\n          }\n        };\n        break;\n      case 'stack':\n        // 绘制堆叠数据图\n        var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n        calPoints.push(points);\n        points = fixBarStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);\n        for (var _i19 = 0; _i19 < points.length; _i19++) {\n          var _item10 = points[_i19];\n          if (_item10 !== null && _i19 > leftNum && _i19 < rightNum) {\n            context.beginPath();\n            var fillColor = _item10.color || eachSeries.color;\n            var startX = _item10.x0;\n            context.setFillStyle(fillColor);\n            context.moveTo(startX, _item10.y - _item10.width / 2);\n            context.fillRect(startX, _item10.y - _item10.width / 2, _item10.height, _item10.width - 2);\n            context.closePath();\n            context.fill();\n          }\n        };\n        break;}\n\n  });\n\n  if (opts.dataLabel !== false && process === 1) {\n    series.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.xAxisData.ranges);\n      maxRange = ranges.pop();\n      minRange = ranges.shift();\n      var data = eachSeries.data;\n      switch (columnOption.type) {\n        case 'group':\n          var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);\n          points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);\n          drawBarPointText(points, eachSeries, config, context, opts);\n          break;\n        case 'stack':\n          var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n          drawBarPointText(points, eachSeries, config, context, opts);\n          break;}\n\n    });\n  }\n  return {\n    yAxisPoints: yAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing };\n\n}\n\nfunction drawCandleDataPoints(series, seriesMA, opts, config, context) {\n  var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n  var candleOption = assign({}, {\n    color: {},\n    average: {} },\n  opts.extra.candle);\n  candleOption.color = assign({}, {\n    upLine: '#f04864',\n    upFill: '#f04864',\n    downLine: '#2fc25b',\n    downFill: '#2fc25b' },\n  candleOption.color);\n  candleOption.average = assign({}, {\n    show: false,\n    name: [],\n    day: [],\n    color: config.color },\n  candleOption.average);\n  opts.extra.candle = candleOption;\n  var xAxisData = opts.chartData.xAxisData,\n  xAxisPoints = xAxisData.xAxisPoints,\n  eachSpacing = xAxisData.eachSpacing;\n  var calPoints = [];\n  context.save();\n  var leftNum = -2;\n  var rightNum = xAxisPoints.length + 2;\n  var leftSpace = 0;\n  var rightSpace = opts.width + eachSpacing;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n    rightNum = leftNum + opts.xAxis.itemCount + 4;\n    leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n    rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n  }\n  //画均线\n  if (candleOption.average.show || seriesMA) {//Merge pull request !12 from 邱贵翔\n    seriesMA.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n      minRange = ranges.pop();\n      maxRange = ranges.shift();\n      var data = eachSeries.data;\n      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n      var splitPointList = splitPoints(points, eachSeries);\n      for (var i = 0; i < splitPointList.length; i++) {\n        var _points = splitPointList[i];\n        context.beginPath();\n        context.setStrokeStyle(eachSeries.color);\n        context.setLineWidth(1);\n        if (_points.length === 1) {\n          context.moveTo(_points[0].x, _points[0].y);\n          context.arc(_points[0].x, _points[0].y, 1, 0, 2 * Math.PI);\n        } else {\n          context.moveTo(_points[0].x, _points[0].y);\n          var startPoint = 0;\n          for (var j = 0; j < _points.length; j++) {\n            var item = _points[j];\n            if (startPoint == 0 && item.x > leftSpace) {\n              context.moveTo(item.x, item.y);\n              startPoint = 1;\n            }\n            if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\n              var ctrlPoint = createCurveControlPoints(_points, j - 1);\n              context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x,\n              item.y);\n            }\n          }\n          context.moveTo(_points[0].x, _points[0].y);\n        }\n        context.closePath();\n        context.stroke();\n      }\n    });\n  }\n  //画K线\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n    calPoints.push(points);\n    var splitPointList = splitPoints(points, eachSeries);\n    for (var i = 0; i < splitPointList[0].length; i++) {\n      if (i > leftNum && i < rightNum) {\n        var item = splitPointList[0][i];\n        context.beginPath();\n        //如果上涨\n        if (data[i][1] - data[i][0] > 0) {\n          context.setStrokeStyle(candleOption.color.upLine);\n          context.setFillStyle(candleOption.color.upFill);\n          context.setLineWidth(1 * opts.pix);\n          context.moveTo(item[3].x, item[3].y); //顶点\n          context.lineTo(item[1].x, item[1].y); //收盘中间点\n          context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\n          context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\n          context.lineTo(item[0].x, item[0].y); //开盘中间点\n          context.lineTo(item[2].x, item[2].y); //底点\n          context.lineTo(item[0].x, item[0].y); //开盘中间点\n          context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\n          context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\n          context.lineTo(item[1].x, item[1].y); //收盘中间点\n          context.moveTo(item[3].x, item[3].y); //顶点\n        } else {\n          context.setStrokeStyle(candleOption.color.downLine);\n          context.setFillStyle(candleOption.color.downFill);\n          context.setLineWidth(1 * opts.pix);\n          context.moveTo(item[3].x, item[3].y); //顶点\n          context.lineTo(item[0].x, item[0].y); //开盘中间点\n          context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\n          context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\n          context.lineTo(item[1].x, item[1].y); //收盘中间点\n          context.lineTo(item[2].x, item[2].y); //底点\n          context.lineTo(item[1].x, item[1].y); //收盘中间点\n          context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\n          context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\n          context.lineTo(item[0].x, item[0].y); //开盘中间点\n          context.moveTo(item[3].x, item[3].y); //顶点\n        }\n        context.closePath();\n        context.fill();\n        context.stroke();\n      }\n    }\n  });\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing };\n\n}\n\nfunction drawAreaDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var areaOption = assign({}, {\n    type: 'straight',\n    opacity: 0.2,\n    addLine: false,\n    width: 2,\n    gradient: false },\n  opts.extra.area);\n  var xAxisData = opts.chartData.xAxisData,\n  xAxisPoints = xAxisData.xAxisPoints,\n  eachSpacing = xAxisData.eachSpacing;\n  var endY = opts.height - opts.area[2];\n  var calPoints = [];\n  context.save();\n  var leftSpace = 0;\n  var rightSpace = opts.width + eachSpacing;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n    rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n  }\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n    calPoints.push(points);\n    var splitPointList = splitPoints(points, eachSeries);\n    for (var i = 0; i < splitPointList.length; i++) {\n      var _points2 = splitPointList[i];\n      // 绘制区域数\n      context.beginPath();\n      context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n      if (areaOption.gradient) {\n        var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);\n        gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));\n        gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\n        context.setFillStyle(gradient);\n      } else {\n        context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n      }\n      context.setLineWidth(areaOption.width * opts.pix);\n      if (_points2.length > 1) {\n        var firstPoint = _points2[0];\n        var lastPoint = _points2[_points2.length - 1];\n        context.moveTo(firstPoint.x, firstPoint.y);\n        var startPoint = 0;\n        if (areaOption.type === 'curve') {\n          for (var j = 0; j < _points2.length; j++) {\n            var item = _points2[j];\n            if (startPoint == 0 && item.x > leftSpace) {\n              context.moveTo(item.x, item.y);\n              startPoint = 1;\n            }\n            if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\n              var ctrlPoint = createCurveControlPoints(_points2, j - 1);\n              context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\n            }\n          };\n        }\n        if (areaOption.type === 'straight') {\n          for (var _j = 0; _j < _points2.length; _j++) {\n            var _item11 = _points2[_j];\n            if (startPoint == 0 && _item11.x > leftSpace) {\n              context.moveTo(_item11.x, _item11.y);\n              startPoint = 1;\n            }\n            if (_j > 0 && _item11.x > leftSpace && _item11.x < rightSpace) {\n              context.lineTo(_item11.x, _item11.y);\n            }\n          };\n        }\n        if (areaOption.type === 'step') {\n          for (var _j2 = 0; _j2 < _points2.length; _j2++) {\n            var _item12 = _points2[_j2];\n            if (startPoint == 0 && _item12.x > leftSpace) {\n              context.moveTo(_item12.x, _item12.y);\n              startPoint = 1;\n            }\n            if (_j2 > 0 && _item12.x > leftSpace && _item12.x < rightSpace) {\n              context.lineTo(_item12.x, _points2[_j2 - 1].y);\n              context.lineTo(_item12.x, _item12.y);\n            }\n          };\n        }\n        context.lineTo(lastPoint.x, endY);\n        context.lineTo(firstPoint.x, endY);\n        context.lineTo(firstPoint.x, firstPoint.y);\n      } else {\n        var _item13 = _points2[0];\n        context.moveTo(_item13.x - eachSpacing / 2, _item13.y);\n        context.lineTo(_item13.x + eachSpacing / 2, _item13.y);\n        context.lineTo(_item13.x + eachSpacing / 2, endY);\n        context.lineTo(_item13.x - eachSpacing / 2, endY);\n        context.moveTo(_item13.x - eachSpacing / 2, _item13.y);\n      }\n      context.closePath();\n      context.fill();\n      //画连线\n      if (areaOption.addLine) {\n        if (eachSeries.lineType == 'dash') {\n          var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\n          dashLength *= opts.pix;\n          context.setLineDash([dashLength, dashLength]);\n        }\n        context.beginPath();\n        context.setStrokeStyle(eachSeries.color);\n        context.setLineWidth(areaOption.width * opts.pix);\n        if (_points2.length === 1) {\n          context.moveTo(_points2[0].x, _points2[0].y);\n          context.arc(_points2[0].x, _points2[0].y, 1, 0, 2 * Math.PI);\n        } else {\n          context.moveTo(_points2[0].x, _points2[0].y);\n          var _startPoint = 0;\n          if (areaOption.type === 'curve') {\n            for (var _j3 = 0; _j3 < _points2.length; _j3++) {\n              var _item14 = _points2[_j3];\n              if (_startPoint == 0 && _item14.x > leftSpace) {\n                context.moveTo(_item14.x, _item14.y);\n                _startPoint = 1;\n              }\n              if (_j3 > 0 && _item14.x > leftSpace && _item14.x < rightSpace) {\n                var _ctrlPoint = createCurveControlPoints(_points2, _j3 - 1);\n                context.bezierCurveTo(_ctrlPoint.ctrA.x, _ctrlPoint.ctrA.y, _ctrlPoint.ctrB.x, _ctrlPoint.ctrB.y, _item14.x, _item14.y);\n              }\n            };\n          }\n          if (areaOption.type === 'straight') {\n            for (var _j4 = 0; _j4 < _points2.length; _j4++) {\n              var _item15 = _points2[_j4];\n              if (_startPoint == 0 && _item15.x > leftSpace) {\n                context.moveTo(_item15.x, _item15.y);\n                _startPoint = 1;\n              }\n              if (_j4 > 0 && _item15.x > leftSpace && _item15.x < rightSpace) {\n                context.lineTo(_item15.x, _item15.y);\n              }\n            };\n          }\n          if (areaOption.type === 'step') {\n            for (var _j5 = 0; _j5 < _points2.length; _j5++) {\n              var _item16 = _points2[_j5];\n              if (_startPoint == 0 && _item16.x > leftSpace) {\n                context.moveTo(_item16.x, _item16.y);\n                _startPoint = 1;\n              }\n              if (_j5 > 0 && _item16.x > leftSpace && _item16.x < rightSpace) {\n                context.lineTo(_item16.x, _points2[_j5 - 1].y);\n                context.lineTo(_item16.x, _item16.y);\n              }\n            };\n          }\n          context.moveTo(_points2[0].x, _points2[0].y);\n        }\n        context.stroke();\n        context.setLineDash([]);\n      }\n    }\n    //画点\n    if (opts.dataPointShape !== false) {\n      drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n    }\n  });\n\n  if (opts.dataLabel !== false && process === 1) {\n    series.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n      minRange = ranges.pop();\n      maxRange = ranges.shift();\n      var data = eachSeries.data;\n      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n      drawPointText(points, eachSeries, config, context, opts);\n    });\n  }\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing };\n\n}\n\nfunction drawScatterDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var scatterOption = assign({}, {\n    type: 'circle' },\n  opts.extra.scatter);\n  var xAxisData = opts.chartData.xAxisData,\n  xAxisPoints = xAxisData.xAxisPoints,\n  eachSpacing = xAxisData.eachSpacing;\n  var calPoints = [];\n  context.save();\n  var leftSpace = 0;\n  var rightSpace = opts.width + eachSpacing;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n    rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n  }\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n    context.beginPath();\n    context.setStrokeStyle(eachSeries.color);\n    context.setFillStyle(eachSeries.color);\n    context.setLineWidth(1 * opts.pix);\n    var shape = eachSeries.pointShape;\n    if (shape === 'diamond') {\n      points.forEach(function (item, index) {\n        if (item !== null) {\n          context.moveTo(item.x, item.y - 4.5);\n          context.lineTo(item.x - 4.5, item.y);\n          context.lineTo(item.x, item.y + 4.5);\n          context.lineTo(item.x + 4.5, item.y);\n          context.lineTo(item.x, item.y - 4.5);\n        }\n      });\n    } else if (shape === 'circle') {\n      points.forEach(function (item, index) {\n        if (item !== null) {\n          context.moveTo(item.x + 2.5 * opts.pix, item.y);\n          context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\n        }\n      });\n    } else if (shape === 'square') {\n      points.forEach(function (item, index) {\n        if (item !== null) {\n          context.moveTo(item.x - 3.5, item.y - 3.5);\n          context.rect(item.x - 3.5, item.y - 3.5, 7, 7);\n        }\n      });\n    } else if (shape === 'triangle') {\n      points.forEach(function (item, index) {\n        if (item !== null) {\n          context.moveTo(item.x, item.y - 4.5);\n          context.lineTo(item.x - 4.5, item.y + 4.5);\n          context.lineTo(item.x + 4.5, item.y + 4.5);\n          context.lineTo(item.x, item.y - 4.5);\n        }\n      });\n    } else if (shape === 'triangle') {\n      return;\n    }\n    context.closePath();\n    context.fill();\n    context.stroke();\n  });\n  if (opts.dataLabel !== false && process === 1) {\n    series.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n      minRange = ranges.pop();\n      maxRange = ranges.shift();\n      var data = eachSeries.data;\n      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n      drawPointText(points, eachSeries, config, context, opts);\n    });\n  }\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing };\n\n}\n\nfunction drawBubbleDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var bubbleOption = assign({}, {\n    opacity: 1,\n    border: 2 },\n  opts.extra.bubble);\n  var xAxisData = opts.chartData.xAxisData,\n  xAxisPoints = xAxisData.xAxisPoints,\n  eachSpacing = xAxisData.eachSpacing;\n  var calPoints = [];\n  context.save();\n  var leftSpace = 0;\n  var rightSpace = opts.width + eachSpacing;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n    rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n  }\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n    context.beginPath();\n    context.setStrokeStyle(eachSeries.color);\n    context.setLineWidth(bubbleOption.border * opts.pix);\n    context.setFillStyle(hexToRgb(eachSeries.color, bubbleOption.opacity));\n    points.forEach(function (item, index) {\n      context.moveTo(item.x + item.r, item.y);\n      context.arc(item.x, item.y, item.r * opts.pix, 0, 2 * Math.PI, false);\n    });\n    context.closePath();\n    context.fill();\n    context.stroke();\n\n    if (opts.dataLabel !== false && process === 1) {\n      points.forEach(function (item, index) {\n        context.beginPath();\n        var fontSize = series.textSize * opts.pix || config.fontSize;\n        context.setFontSize(fontSize);\n        context.setFillStyle(series.textColor || \"#FFFFFF\");\n        context.setTextAlign('center');\n        context.fillText(String(item.t), item.x, item.y + fontSize / 2);\n        context.closePath();\n        context.stroke();\n        context.setTextAlign('left');\n      });\n    }\n  });\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing };\n\n}\n\n\nfunction drawLineDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var lineOption = assign({}, {\n    type: 'straight',\n    width: 2 },\n  opts.extra.line);\n  lineOption.width *= opts.pix;\n  var xAxisData = opts.chartData.xAxisData,\n  xAxisPoints = xAxisData.xAxisPoints,\n  eachSpacing = xAxisData.eachSpacing;\n  var calPoints = [];\n  context.save();\n  var leftSpace = 0;\n  var rightSpace = opts.width + eachSpacing;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n    rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n  }\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n    calPoints.push(points);\n    var splitPointList = splitPoints(points, eachSeries);\n    if (eachSeries.lineType == 'dash') {\n      var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\n      dashLength *= opts.pix;\n      context.setLineDash([dashLength, dashLength]);\n    }\n    context.beginPath();\n    context.setStrokeStyle(eachSeries.color);\n    context.setLineWidth(lineOption.width);\n    splitPointList.forEach(function (points, index) {\n      if (points.length === 1) {\n        context.moveTo(points[0].x, points[0].y);\n        context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\n      } else {\n        context.moveTo(points[0].x, points[0].y);\n        var startPoint = 0;\n        if (lineOption.type === 'curve') {\n          for (var j = 0; j < points.length; j++) {\n            var item = points[j];\n            if (startPoint == 0 && item.x > leftSpace) {\n              context.moveTo(item.x, item.y);\n              startPoint = 1;\n            }\n            if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\n              var ctrlPoint = createCurveControlPoints(points, j - 1);\n              context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\n            }\n          };\n        }\n        if (lineOption.type === 'straight') {\n          for (var _j6 = 0; _j6 < points.length; _j6++) {\n            var _item17 = points[_j6];\n            if (startPoint == 0 && _item17.x > leftSpace) {\n              context.moveTo(_item17.x, _item17.y);\n              startPoint = 1;\n            }\n            if (_j6 > 0 && _item17.x > leftSpace && _item17.x < rightSpace) {\n              context.lineTo(_item17.x, _item17.y);\n            }\n          };\n        }\n        if (lineOption.type === 'step') {\n          for (var _j7 = 0; _j7 < points.length; _j7++) {\n            var _item18 = points[_j7];\n            if (startPoint == 0 && _item18.x > leftSpace) {\n              context.moveTo(_item18.x, _item18.y);\n              startPoint = 1;\n            }\n            if (_j7 > 0 && _item18.x > leftSpace && _item18.x < rightSpace) {\n              context.lineTo(_item18.x, points[_j7 - 1].y);\n              context.lineTo(_item18.x, _item18.y);\n            }\n          };\n        }\n        context.moveTo(points[0].x, points[0].y);\n      }\n    });\n    context.stroke();\n    context.setLineDash([]);\n    if (opts.dataPointShape !== false) {\n      drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n    }\n  });\n  if (opts.dataLabel !== false && process === 1) {\n    series.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n      minRange = ranges.pop();\n      maxRange = ranges.shift();\n      var data = eachSeries.data;\n      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n      drawPointText(points, eachSeries, config, context, opts);\n    });\n  }\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing };\n\n}\n\nfunction drawMixDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var columnOption = assign({}, {\n    width: eachSpacing / 2,\n    barBorderCircle: false,\n    barBorderRadius: [],\n    seriesGap: 2,\n    linearType: 'none',\n    linearOpacity: 1,\n    customColor: [],\n    colorStop: 0 },\n  opts.extra.mix.column);\n  var xAxisData = opts.chartData.xAxisData,\n  xAxisPoints = xAxisData.xAxisPoints,\n  eachSpacing = xAxisData.eachSpacing;\n  var endY = opts.height - opts.area[2];\n  var calPoints = [];\n  var columnIndex = 0;\n  var columnLength = 0;\n  series.forEach(function (eachSeries, seriesIndex) {\n    if (eachSeries.type == 'column') {\n      columnLength += 1;\n    }\n  });\n  context.save();\n  var leftNum = -2;\n  var rightNum = xAxisPoints.length + 2;\n  var leftSpace = 0;\n  var rightSpace = opts.width + eachSpacing;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n    rightNum = leftNum + opts.xAxis.itemCount + 4;\n    leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n    rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n  }\n  columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n    calPoints.push(points);\n    // 绘制柱状数据图\n    if (eachSeries.type == 'column') {\n      points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);\n      for (var i = 0; i < points.length; i++) {\n        var item = points[i];\n        if (item !== null && i > leftNum && i < rightNum) {\n          var startX = item.x - item.width / 2;\n          var height = opts.height - item.y - opts.area[2];\n          context.beginPath();\n          var fillColor = item.color || eachSeries.color;\n          var strokeColor = item.color || eachSeries.color;\n          if (columnOption.linearType !== 'none') {\n            var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\n            //透明渐变\n            if (columnOption.linearType == 'opacity') {\n              grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\n              grd.addColorStop(1, hexToRgb(fillColor, 1));\n            } else {\n              grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n              grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n              grd.addColorStop(1, hexToRgb(fillColor, 1));\n            }\n            fillColor = grd;\n          }\n          // 圆角边框\n          if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle) {\n            var left = startX;\n            var top = item.y;\n            var width = item.width;\n            var _height3 = opts.height - opts.area[2] - item.y;\n            if (columnOption.barBorderCircle) {\n              columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n            }var _columnOption$barBord3 = _slicedToArray(\n            columnOption.barBorderRadius, 4),r0 = _columnOption$barBord3[0],r1 = _columnOption$barBord3[1],r2 = _columnOption$barBord3[2],r3 = _columnOption$barBord3[3];\n            var minRadius = Math.min(width / 2, _height3 / 2);\n            r0 = r0 > minRadius ? minRadius : r0;\n            r1 = r1 > minRadius ? minRadius : r1;\n            r2 = r2 > minRadius ? minRadius : r2;\n            r3 = r3 > minRadius ? minRadius : r3;\n            r0 = r0 < 0 ? 0 : r0;\n            r1 = r1 < 0 ? 0 : r1;\n            r2 = r2 < 0 ? 0 : r2;\n            r3 = r3 < 0 ? 0 : r3;\n            context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\n            context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\n            context.arc(left + width - r2, top + _height3 - r2, r2, 0, Math.PI / 2);\n            context.arc(left + r3, top + _height3 - r3, r3, Math.PI / 2, Math.PI);\n          } else {\n            context.moveTo(startX, item.y);\n            context.lineTo(startX + item.width - 2, item.y);\n            context.lineTo(startX + item.width - 2, opts.height - opts.area[2]);\n            context.lineTo(startX, opts.height - opts.area[2]);\n            context.lineTo(startX, item.y);\n            context.setLineWidth(1);\n            context.setStrokeStyle(strokeColor);\n          }\n          context.setFillStyle(fillColor);\n          context.closePath();\n          context.fill();\n        }\n      }\n      columnIndex += 1;\n    }\n    //绘制区域图数据\n    if (eachSeries.type == 'area') {\n      var _splitPointList = splitPoints(points, eachSeries);\n      for (var _i20 = 0; _i20 < _splitPointList.length; _i20++) {\n        var _points3 = _splitPointList[_i20];\n        // 绘制区域数据\n        context.beginPath();\n        context.setStrokeStyle(eachSeries.color);\n        context.setFillStyle(hexToRgb(eachSeries.color, 0.2));\n        context.setLineWidth(2 * opts.pix);\n        if (_points3.length > 1) {\n          var firstPoint = _points3[0];\n          var lastPoint = _points3[_points3.length - 1];\n          context.moveTo(firstPoint.x, firstPoint.y);\n          var startPoint = 0;\n          if (eachSeries.style === 'curve') {\n            for (var j = 0; j < _points3.length; j++) {\n              var _item19 = _points3[j];\n              if (startPoint == 0 && _item19.x > leftSpace) {\n                context.moveTo(_item19.x, _item19.y);\n                startPoint = 1;\n              }\n              if (j > 0 && _item19.x > leftSpace && _item19.x < rightSpace) {\n                var ctrlPoint = createCurveControlPoints(_points3, j - 1);\n                context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item19.x, _item19.y);\n              }\n            };\n          } else {\n            for (var _j8 = 0; _j8 < _points3.length; _j8++) {\n              var _item20 = _points3[_j8];\n              if (startPoint == 0 && _item20.x > leftSpace) {\n                context.moveTo(_item20.x, _item20.y);\n                startPoint = 1;\n              }\n              if (_j8 > 0 && _item20.x > leftSpace && _item20.x < rightSpace) {\n                context.lineTo(_item20.x, _item20.y);\n              }\n            };\n          }\n          context.lineTo(lastPoint.x, endY);\n          context.lineTo(firstPoint.x, endY);\n          context.lineTo(firstPoint.x, firstPoint.y);\n        } else {\n          var _item21 = _points3[0];\n          context.moveTo(_item21.x - eachSpacing / 2, _item21.y);\n          context.lineTo(_item21.x + eachSpacing / 2, _item21.y);\n          context.lineTo(_item21.x + eachSpacing / 2, endY);\n          context.lineTo(_item21.x - eachSpacing / 2, endY);\n          context.moveTo(_item21.x - eachSpacing / 2, _item21.y);\n        }\n        context.closePath();\n        context.fill();\n      }\n    }\n    // 绘制折线数据图\n    if (eachSeries.type == 'line') {\n      var splitPointList = splitPoints(points, eachSeries);\n      splitPointList.forEach(function (points, index) {\n        if (eachSeries.lineType == 'dash') {\n          var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\n          dashLength *= opts.pix;\n          context.setLineDash([dashLength, dashLength]);\n        }\n        context.beginPath();\n        context.setStrokeStyle(eachSeries.color);\n        context.setLineWidth(2 * opts.pix);\n        if (points.length === 1) {\n          context.moveTo(points[0].x, points[0].y);\n          context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\n        } else {\n          context.moveTo(points[0].x, points[0].y);\n          var _startPoint2 = 0;\n          if (eachSeries.style == 'curve') {\n            for (var _j9 = 0; _j9 < points.length; _j9++) {\n              var _item22 = points[_j9];\n              if (_startPoint2 == 0 && _item22.x > leftSpace) {\n                context.moveTo(_item22.x, _item22.y);\n                _startPoint2 = 1;\n              }\n              if (_j9 > 0 && _item22.x > leftSpace && _item22.x < rightSpace) {\n                var ctrlPoint = createCurveControlPoints(points, _j9 - 1);\n                context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,\n                _item22.x, _item22.y);\n              }\n            }\n          } else {\n            for (var _j10 = 0; _j10 < points.length; _j10++) {\n              var _item23 = points[_j10];\n              if (_startPoint2 == 0 && _item23.x > leftSpace) {\n                context.moveTo(_item23.x, _item23.y);\n                _startPoint2 = 1;\n              }\n              if (_j10 > 0 && _item23.x > leftSpace && _item23.x < rightSpace) {\n                context.lineTo(_item23.x, _item23.y);\n              }\n            }\n          }\n          context.moveTo(points[0].x, points[0].y);\n        }\n        context.stroke();\n        context.setLineDash([]);\n      });\n    }\n    // 绘制点数据图\n    if (eachSeries.type == 'point') {\n      eachSeries.addPoint = true;\n    }\n    if (eachSeries.addPoint == true && eachSeries.type !== 'column') {\n      drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n    }\n  });\n  if (opts.dataLabel !== false && process === 1) {\n    var columnIndex = 0;\n    series.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n      minRange = ranges.pop();\n      maxRange = ranges.shift();\n      var data = eachSeries.data;\n      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n      if (eachSeries.type !== 'column') {\n        drawPointText(points, eachSeries, config, context, opts);\n      } else {\n        points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);\n        drawPointText(points, eachSeries, config, context, opts);\n        columnIndex += 1;\n      }\n    });\n  }\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing };\n\n}\n\nfunction drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) {\n  var toolTipOption = opts.extra.tooltip || {};\n  if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'candle' || opts.type == 'mix')) {\n    drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints);\n  }\n  context.save();\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n  }\n  if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\n    drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints);\n  }\n  context.restore();\n\n}\n\nfunction drawXAxis(categories, opts, config, context) {\n\n  var xAxisData = opts.chartData.xAxisData,\n  xAxisPoints = xAxisData.xAxisPoints,\n  startX = xAxisData.startX,\n  endX = xAxisData.endX,\n  eachSpacing = xAxisData.eachSpacing;\n  var boundaryGap = 'center';\n  if (opts.type == 'bar' || opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {\n    boundaryGap = opts.xAxis.boundaryGap;\n  }\n  var startY = opts.height - opts.area[2];\n  var endY = opts.area[0];\n\n  //绘制滚动条\n  if (opts.enableScroll && opts.xAxis.scrollShow) {\n    var scrollY = opts.height - opts.area[2] + config.xAxisHeight;\n    var scrollScreenWidth = endX - startX;\n    var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1);\n    var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth;\n    var scrollLeft = 0;\n    if (opts._scrollDistance_) {\n      scrollLeft = -opts._scrollDistance_ * scrollScreenWidth / scrollTotalWidth;\n    }\n    context.beginPath();\n    context.setLineCap('round');\n    context.setLineWidth(6 * opts.pix);\n    context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || \"#EFEBEF\");\n    context.moveTo(startX, scrollY);\n    context.lineTo(endX, scrollY);\n    context.stroke();\n    context.closePath();\n    context.beginPath();\n    context.setLineCap('round');\n    context.setLineWidth(6 * opts.pix);\n    context.setStrokeStyle(opts.xAxis.scrollColor || \"#A6A6A6\");\n    context.moveTo(startX + scrollLeft, scrollY);\n    context.lineTo(startX + scrollLeft + scrollWidth, scrollY);\n    context.stroke();\n    context.closePath();\n    context.setLineCap('butt');\n  }\n  context.save();\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {\n    context.translate(opts._scrollDistance_, 0);\n  }\n  //绘制X轴刻度线\n  if (opts.xAxis.calibration === true) {\n    context.setStrokeStyle(opts.xAxis.gridColor || \"#cccccc\");\n    context.setLineCap('butt');\n    context.setLineWidth(1 * opts.pix);\n    xAxisPoints.forEach(function (item, index) {\n      if (index > 0) {\n        context.beginPath();\n        context.moveTo(item - eachSpacing / 2, startY);\n        context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pix);\n        context.closePath();\n        context.stroke();\n      }\n    });\n  }\n  //绘制X轴网格\n  if (opts.xAxis.disableGrid !== true) {\n    context.setStrokeStyle(opts.xAxis.gridColor || \"#cccccc\");\n    context.setLineCap('butt');\n    context.setLineWidth(1 * opts.pix);\n    if (opts.xAxis.gridType == 'dash') {\n      context.setLineDash([opts.xAxis.dashLength * opts.pix, opts.xAxis.dashLength * opts.pix]);\n    }\n    opts.xAxis.gridEval = opts.xAxis.gridEval || 1;\n    xAxisPoints.forEach(function (item, index) {\n      if (index % opts.xAxis.gridEval == 0) {\n        context.beginPath();\n        context.moveTo(item, startY);\n        context.lineTo(item, endY);\n        context.stroke();\n      }\n    });\n    context.setLineDash([]);\n  }\n  //绘制X轴文案\n  if (opts.xAxis.disabled !== true) {\n    // 对X轴列表做抽稀处理\n    //默认全部显示X轴标签\n    var maxXAxisListLength = categories.length;\n    //如果设置了X轴单屏数量\n    if (opts.xAxis.labelCount) {\n      //如果设置X轴密度\n      if (opts.xAxis.itemCount) {\n        maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount);\n      } else {\n        maxXAxisListLength = opts.xAxis.labelCount;\n      }\n      maxXAxisListLength -= 1;\n    }\n\n    var ratio = Math.ceil(categories.length / maxXAxisListLength);\n\n    var newCategories = [];\n    var cgLength = categories.length;\n    for (var i = 0; i < cgLength; i++) {\n      if (i % ratio !== 0) {\n        newCategories.push(\"\");\n      } else {\n        newCategories.push(categories[i]);\n      }\n    }\n    newCategories[cgLength - 1] = categories[cgLength - 1];\n    var xAxisFontSize = opts.xAxis.fontSize * opts.pix || config.fontSize;\n    if (config._xAxisTextAngle_ === 0) {\n      newCategories.forEach(function (item, index) {\n        var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item;\n        var offset = -measureText(String(xitem), xAxisFontSize, context) / 2;\n        if (boundaryGap == 'center') {\n          offset += eachSpacing / 2;\n        }\n        var scrollHeight = 0;\n        if (opts.xAxis.scrollShow) {\n          scrollHeight = 6 * opts.pix;\n        }\n        context.beginPath();\n        context.setFontSize(xAxisFontSize);\n        context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);\n        context.fillText(String(xitem), xAxisPoints[index] + offset, startY + xAxisFontSize + (config.xAxisHeight - scrollHeight - xAxisFontSize) / 2);\n        context.closePath();\n        context.stroke();\n      });\n    } else {\n      newCategories.forEach(function (item, index) {\n        var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item;\n        context.save();\n        context.beginPath();\n        context.setFontSize(xAxisFontSize);\n        context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);\n        var textWidth = measureText(String(xitem), xAxisFontSize, context);\n        var offset = -textWidth;\n        if (boundaryGap == 'center') {\n          offset += eachSpacing / 2;\n        }\n        var _calRotateTranslate = calRotateTranslate(xAxisPoints[index] + eachSpacing / 2, startY + xAxisFontSize / 2 + 5, opts.height),\n        transX = _calRotateTranslate.transX,\n        transY = _calRotateTranslate.transY;\n\n        context.rotate(-1 * config._xAxisTextAngle_);\n        context.translate(transX, transY);\n        context.fillText(String(xitem), xAxisPoints[index] + offset, startY + xAxisFontSize + 5);\n        context.closePath();\n        context.stroke();\n        context.restore();\n      });\n    }\n  }\n  context.restore();\n  //绘制X轴轴线\n  if (opts.xAxis.axisLine) {\n    context.beginPath();\n    context.setStrokeStyle(opts.xAxis.axisLineColor);\n    context.setLineWidth(1 * opts.pix);\n    context.moveTo(startX, opts.height - opts.area[2]);\n    context.lineTo(endX, opts.height - opts.area[2]);\n    context.stroke();\n  }\n}\n\nfunction drawYAxisGrid(categories, opts, config, context) {\n  if (opts.yAxis.disableGrid === true) {\n    return;\n  }\n  var spacingValid = opts.height - opts.area[0] - opts.area[2];\n  var eachSpacing = spacingValid / opts.yAxis.splitNumber;\n  var startX = opts.area[3];\n  var xAxisPoints = opts.chartData.xAxisData.xAxisPoints,\n  xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing;\n  var TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1);\n  var endX = startX + TotalWidth;\n  var points = [];\n  var startY = 1;\n  if (opts.xAxis.axisLine === false) {\n    startY = 0;\n  }\n  for (var i = startY; i < opts.yAxis.splitNumber + 1; i++) {\n    points.push(opts.height - opts.area[2] - eachSpacing * i);\n  }\n  context.save();\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {\n    context.translate(opts._scrollDistance_, 0);\n  }\n  if (opts.yAxis.gridType == 'dash') {\n    context.setLineDash([opts.yAxis.dashLength * opts.pix, opts.yAxis.dashLength * opts.pix]);\n  }\n  context.setStrokeStyle(opts.yAxis.gridColor);\n  context.setLineWidth(1 * opts.pix);\n  points.forEach(function (item, index) {\n    context.beginPath();\n    context.moveTo(startX, item);\n    context.lineTo(endX, item);\n    context.stroke();\n  });\n  context.setLineDash([]);\n  context.restore();\n}\n\nfunction drawYAxis(series, opts, config, context) {\n  if (opts.yAxis.disabled === true) {\n    return;\n  }\n  var spacingValid = opts.height - opts.area[0] - opts.area[2];\n  var eachSpacing = spacingValid / opts.yAxis.splitNumber;\n  var startX = opts.area[3];\n  var endX = opts.width - opts.area[1];\n  var endY = opts.height - opts.area[2];\n  var fillEndY = endY + config.xAxisHeight;\n  if (opts.xAxis.scrollShow) {\n    fillEndY -= 3 * opts.pix;\n  }\n  if (opts.xAxis.rotateLabel) {\n    fillEndY = opts.height - opts.area[2] + opts.fontSize * opts.pix / 2;\n  }\n  // set YAxis background\n  context.beginPath();\n  context.setFillStyle(opts.background);\n  if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'left') {\n    context.fillRect(0, 0, startX, fillEndY);\n  }\n  if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'right') {\n    context.fillRect(endX, 0, opts.width, fillEndY);\n  }\n  context.closePath();\n  context.stroke();\n\n  var tStartLeft = opts.area[3];\n  var tStartRight = opts.width - opts.area[1];\n  var tStartCenter = opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2;\n  if (opts.yAxis.data) {var _loop4 = function _loop4(\n    i) {\n      var yData = opts.yAxis.data[i];\n      points = [];\n      if (yData.type === 'categories') {\n        for (var _i21 = 0; _i21 <= yData.categories.length; _i21++) {\n          points.push(opts.area[0] + spacingValid / yData.categories.length / 2 + spacingValid / yData.categories.length * _i21);\n        }\n      } else {\n        for (var _i22 = 0; _i22 <= opts.yAxis.splitNumber; _i22++) {\n          points.push(opts.area[0] + eachSpacing * _i22);\n        }\n      }\n      if (yData.disabled !== true) {\n        var rangesFormat = opts.chartData.yAxisData.rangesFormat[i];\n        var yAxisFontSize = yData.fontSize ? yData.fontSize * opts.pix : config.fontSize;\n        var yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i];\n        var textAlign = yData.textAlign || \"right\";\n        //画Y轴刻度及文案\n        rangesFormat.forEach(function (item, index) {\n          var pos = points[index] ? points[index] : endY;\n          context.beginPath();\n          context.setFontSize(yAxisFontSize);\n          context.setLineWidth(1 * opts.pix);\n          context.setStrokeStyle(yData.axisLineColor || '#cccccc');\n          context.setFillStyle(yData.fontColor || opts.fontColor);\n          var tmpstrat = 0;\n          var gapwidth = 4 * opts.pix;\n          if (yAxisWidth.position == 'left') {\n            //画刻度线\n            if (yData.calibration == true) {\n              context.moveTo(tStartLeft, pos);\n              context.lineTo(tStartLeft - 3 * opts.pix, pos);\n              gapwidth += 3 * opts.pix;\n            }\n            //画文字\n            switch (textAlign) {\n              case \"left\":\n                context.setTextAlign('left');\n                tmpstrat = tStartLeft - yAxisWidth.width;\n                break;\n              case \"right\":\n                context.setTextAlign('right');\n                tmpstrat = tStartLeft - gapwidth;\n                break;\n              default:\n                context.setTextAlign('center');\n                tmpstrat = tStartLeft - yAxisWidth.width / 2;}\n\n            context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\n\n          } else if (yAxisWidth.position == 'right') {\n            //画刻度线\n            if (yData.calibration == true) {\n              context.moveTo(tStartRight, pos);\n              context.lineTo(tStartRight + 3 * opts.pix, pos);\n              gapwidth += 3 * opts.pix;\n            }\n            switch (textAlign) {\n              case \"left\":\n                context.setTextAlign('left');\n                tmpstrat = tStartRight + gapwidth;\n                break;\n              case \"right\":\n                context.setTextAlign('right');\n                tmpstrat = tStartRight + yAxisWidth.width;\n                break;\n              default:\n                context.setTextAlign('center');\n                tmpstrat = tStartRight + yAxisWidth.width / 2;}\n\n            context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\n          } else if (yAxisWidth.position == 'center') {\n            //画刻度线\n            if (yData.calibration == true) {\n              context.moveTo(tStartCenter, pos);\n              context.lineTo(tStartCenter - 3 * opts.pix, pos);\n              gapwidth += 3 * opts.pix;\n            }\n            //画文字\n            switch (textAlign) {\n              case \"left\":\n                context.setTextAlign('left');\n                tmpstrat = tStartCenter - yAxisWidth.width;\n                break;\n              case \"right\":\n                context.setTextAlign('right');\n                tmpstrat = tStartCenter - gapwidth;\n                break;\n              default:\n                context.setTextAlign('center');\n                tmpstrat = tStartCenter - yAxisWidth.width / 2;}\n\n            context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\n          }\n          context.closePath();\n          context.stroke();\n          context.setTextAlign('left');\n        });\n        //画Y轴轴线\n        if (yData.axisLine !== false) {\n          context.beginPath();\n          context.setStrokeStyle(yData.axisLineColor || '#cccccc');\n          context.setLineWidth(1 * opts.pix);\n          if (yAxisWidth.position == 'left') {\n            context.moveTo(tStartLeft, opts.height - opts.area[2]);\n            context.lineTo(tStartLeft, opts.area[0]);\n          } else if (yAxisWidth.position == 'right') {\n            context.moveTo(tStartRight, opts.height - opts.area[2]);\n            context.lineTo(tStartRight, opts.area[0]);\n          } else if (yAxisWidth.position == 'center') {\n            context.moveTo(tStartCenter, opts.height - opts.area[2]);\n            context.lineTo(tStartCenter, opts.area[0]);\n          }\n          context.stroke();\n        }\n        //画Y轴标题\n        if (opts.yAxis.showTitle) {\n          var titleFontSize = yData.titleFontSize * opts.pix || config.fontSize;\n          var title = yData.title;\n          context.beginPath();\n          context.setFontSize(titleFontSize);\n          context.setFillStyle(yData.titleFontColor || opts.fontColor);\n          if (yAxisWidth.position == 'left') {\n            context.fillText(title, tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\n          } else if (yAxisWidth.position == 'right') {\n            context.fillText(title, tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\n          } else if (yAxisWidth.position == 'center') {\n            context.fillText(title, tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\n          }\n          context.closePath();\n          context.stroke();\n        }\n        if (yAxisWidth.position == 'left') {\n          tStartLeft -= yAxisWidth.width + opts.yAxis.padding * opts.pix;\n        } else {\n          tStartRight += yAxisWidth.width + opts.yAxis.padding * opts.pix;\n        }\n      }};for (var i = 0; i < opts.yAxis.data.length; i++) {var points;_loop4(i);\n    }\n  }\n\n}\n\nfunction drawLegend(series, opts, config, context, chartData) {\n  if (opts.legend.show === false) {\n    return;\n  }\n  var legendData = chartData.legendData;\n  var legendList = legendData.points;\n  var legendArea = legendData.area;\n  var padding = opts.legend.padding * opts.pix;\n  var fontSize = opts.legend.fontSize * opts.pix;\n  var shapeWidth = 15 * opts.pix;\n  var shapeRight = 5 * opts.pix;\n  var itemGap = opts.legend.itemGap * opts.pix;\n  var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);\n  //画背景及边框\n  context.beginPath();\n  context.setLineWidth(opts.legend.borderWidth * opts.pix);\n  context.setStrokeStyle(opts.legend.borderColor);\n  context.setFillStyle(opts.legend.backgroundColor);\n  context.moveTo(legendArea.start.x, legendArea.start.y);\n  context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height);\n  context.closePath();\n  context.fill();\n  context.stroke();\n  legendList.forEach(function (itemList, listIndex) {\n    var width = 0;\n    var height = 0;\n    width = legendData.widthArr[listIndex];\n    height = legendData.heightArr[listIndex];\n    var startX = 0;\n    var startY = 0;\n    if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\n      switch (opts.legend.float) {\n        case 'left':\n          startX = legendArea.start.x + padding;\n          break;\n        case 'right':\n          startX = legendArea.start.x + legendArea.width - width;\n          break;\n        default:\n          startX = legendArea.start.x + (legendArea.width - width) / 2;}\n\n      startY = legendArea.start.y + padding + listIndex * lineHeight;\n    } else {\n      if (listIndex == 0) {\n        width = 0;\n      } else {\n        width = legendData.widthArr[listIndex - 1];\n      }\n      startX = legendArea.start.x + padding + width;\n      startY = legendArea.start.y + padding + (legendArea.height - height) / 2;\n    }\n    context.setFontSize(config.fontSize);\n    for (var i = 0; i < itemList.length; i++) {\n      var item = itemList[i];\n      item.area = [0, 0, 0, 0];\n      item.area[0] = startX;\n      item.area[1] = startY;\n      item.area[3] = startY + lineHeight;\n      context.beginPath();\n      context.setLineWidth(1 * opts.pix);\n      context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor);\n      context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor);\n      switch (item.legendShape) {\n        case 'line':\n          context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pix);\n          context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, 4 * opts.pix);\n          break;\n        case 'triangle':\n          context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n          context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\n          context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\n          context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n          break;\n        case 'diamond':\n          context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n          context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight);\n          context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\n          context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight);\n          context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n          break;\n        case 'circle':\n          context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight);\n          context.arc(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight, 5 * opts.pix, 0, 2 * Math.PI);\n          break;\n        case 'rect':\n          context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);\n          context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\n          break;\n        case 'square':\n          context.moveTo(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n          context.fillRect(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix);\n          break;\n        case 'none':\n          break;\n        default:\n          context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);\n          context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);}\n\n      context.closePath();\n      context.fill();\n      context.stroke();\n      startX += shapeWidth + shapeRight;\n      var fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2;\n      context.beginPath();\n      context.setFontSize(fontSize);\n      context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor);\n      context.fillText(item.name, startX, startY + fontTrans);\n      context.closePath();\n      context.stroke();\n      if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\n        startX += measureText(item.name, fontSize, context) + itemGap;\n        item.area[2] = startX;\n      } else {\n        item.area[2] = startX + measureText(item.name, fontSize, context) + itemGap;;\n        startX -= shapeWidth + shapeRight;\n        startY += lineHeight;\n      }\n    }\n  });\n}\n\nfunction drawPieDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var pieOption = assign({}, {\n    activeOpacity: 0.5,\n    activeRadius: 10,\n    offsetAngle: 0,\n    labelWidth: 15,\n    ringWidth: 30,\n    customRadius: 0,\n    border: false,\n    borderWidth: 2,\n    borderColor: '#FFFFFF',\n    centerColor: '#FFFFFF',\n    linearType: 'none',\n    customColor: [] },\n  opts.type == \"pie\" ? opts.extra.pie : opts.extra.ring);\n  var centerPosition = {\n    x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n    y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 };\n\n  if (config.pieChartLinePadding == 0) {\n    config.pieChartLinePadding = pieOption.activeRadius * opts.pix;\n  }\n\n  var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);\n  if (pieOption.customRadius > 0) {\n    radius = pieOption.customRadius * opts.pix;\n  }\n  series = getPieDataPoints(series, radius, process);\n  var activeRadius = pieOption.activeRadius * opts.pix;\n  pieOption.customColor = fillCustomColor(pieOption.linearType, pieOption.customColor, series, config);\n  series = series.map(function (eachSeries) {\n    eachSeries._start_ += pieOption.offsetAngle * Math.PI / 180;\n    return eachSeries;\n  });\n  series.forEach(function (eachSeries, seriesIndex) {\n    if (opts.tooltip) {\n      if (opts.tooltip.index == seriesIndex) {\n        context.beginPath();\n        context.setFillStyle(hexToRgb(eachSeries.color, pieOption.activeOpacity || 0.5));\n        context.moveTo(centerPosition.x, centerPosition.y);\n        context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);\n        context.closePath();\n        context.fill();\n      }\n    }\n    context.beginPath();\n    context.setLineWidth(pieOption.borderWidth * opts.pix);\n    context.lineJoin = \"round\";\n    context.setStrokeStyle(pieOption.borderColor);\n    var fillcolor = eachSeries.color;\n    if (pieOption.linearType == 'custom') {\n      var grd;\n      if (context.createCircularGradient) {\n        grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);\n      } else {\n        grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);\n      }\n      grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1));\n      grd.addColorStop(1, hexToRgb(eachSeries.color, 1));\n      fillcolor = grd;\n    }\n    context.setFillStyle(fillcolor);\n    context.moveTo(centerPosition.x, centerPosition.y);\n    context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);\n    context.closePath();\n    context.fill();\n    if (pieOption.border == true) {\n      context.stroke();\n    }\n  });\n  if (opts.type === 'ring') {\n    var innerPieWidth = radius * 0.6;\n    if (typeof pieOption.ringWidth === 'number' && pieOption.ringWidth > 0) {\n      innerPieWidth = Math.max(0, radius - pieOption.ringWidth * opts.pix);\n    }\n    context.beginPath();\n    context.setFillStyle(pieOption.centerColor);\n    context.moveTo(centerPosition.x, centerPosition.y);\n    context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI);\n    context.closePath();\n    context.fill();\n  }\n  if (opts.dataLabel !== false && process === 1) {\n    var valid = false;\n    for (var i = 0, len = series.length; i < len; i++) {\n      if (series[i].data > 0) {\n        valid = true;\n        break;\n      }\n    }\n    if (valid) {\n      drawPieText(series, opts, config, context, radius, centerPosition);\n    }\n  }\n  if (process === 1 && opts.type === 'ring') {\n    drawRingTitle(opts, config, context, centerPosition);\n  }\n  return {\n    center: centerPosition,\n    radius: radius,\n    series: series };\n\n}\n\nfunction drawRoseDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var roseOption = assign({}, {\n    type: 'area',\n    activeOpacity: 0.5,\n    activeRadius: 10,\n    offsetAngle: 0,\n    labelWidth: 15,\n    border: false,\n    borderWidth: 2,\n    borderColor: '#FFFFFF',\n    linearType: 'none',\n    customColor: [] },\n  opts.extra.rose);\n  if (config.pieChartLinePadding == 0) {\n    config.pieChartLinePadding = roseOption.activeRadius * opts.pix;\n  }\n  var centerPosition = {\n    x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n    y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 };\n\n  var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);\n  var minRadius = roseOption.minRadius || radius * 0.5;\n  series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process);\n  var activeRadius = roseOption.activeRadius * opts.pix;\n  roseOption.customColor = fillCustomColor(roseOption.linearType, roseOption.customColor, series, config);\n  series = series.map(function (eachSeries) {\n    eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180;\n    return eachSeries;\n  });\n  series.forEach(function (eachSeries, seriesIndex) {\n    if (opts.tooltip) {\n      if (opts.tooltip.index == seriesIndex) {\n        context.beginPath();\n        context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5));\n        context.moveTo(centerPosition.x, centerPosition.y);\n        context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);\n        context.closePath();\n        context.fill();\n      }\n    }\n    context.beginPath();\n    context.setLineWidth(roseOption.borderWidth * opts.pix);\n    context.lineJoin = \"round\";\n    context.setStrokeStyle(roseOption.borderColor);\n    var fillcolor = eachSeries.color;\n    if (roseOption.linearType == 'custom') {\n      var grd;\n      if (context.createCircularGradient) {\n        grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);\n      } else {\n        grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);\n      }\n      grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1));\n      grd.addColorStop(1, hexToRgb(eachSeries.color, 1));\n      fillcolor = grd;\n    }\n    context.setFillStyle(fillcolor);\n    context.moveTo(centerPosition.x, centerPosition.y);\n    context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);\n    context.closePath();\n    context.fill();\n    if (roseOption.border == true) {\n      context.stroke();\n    }\n  });\n\n  if (opts.dataLabel !== false && process === 1) {\n    var valid = false;\n    for (var i = 0, len = series.length; i < len; i++) {\n      if (series[i].data > 0) {\n        valid = true;\n        break;\n      }\n    }\n    if (valid) {\n      drawPieText(series, opts, config, context, radius, centerPosition);\n    }\n  }\n  return {\n    center: centerPosition,\n    radius: radius,\n    series: series };\n\n}\n\nfunction drawArcbarDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var arcbarOption = assign({}, {\n    startAngle: 0.75,\n    endAngle: 0.25,\n    type: 'default',\n    width: 12,\n    gap: 2,\n    linearType: 'none',\n    customColor: [] },\n  opts.extra.arcbar);\n  series = getArcbarDataPoints(series, arcbarOption, process);\n  var centerPosition;\n  if (arcbarOption.centerX || arcbarOption.centerY) {\n    centerPosition = {\n      x: arcbarOption.centerX ? arcbarOption.centerX : opts.width / 2,\n      y: arcbarOption.centerY ? arcbarOption.centerY : opts.height / 2 };\n\n  } else {\n    centerPosition = {\n      x: opts.width / 2,\n      y: opts.height / 2 };\n\n  }\n  var radius;\n  if (arcbarOption.radius) {\n    radius = arcbarOption.radius;\n  } else {\n    radius = Math.min(centerPosition.x, centerPosition.y);\n    radius -= 5 * opts.pix;\n    radius -= arcbarOption.width / 2;\n  }\n  arcbarOption.customColor = fillCustomColor(arcbarOption.linearType, arcbarOption.customColor, series, config);\n\n  for (var i = 0; i < series.length; i++) {\n    var eachSeries = series[i];\n    //背景颜色\n    context.setLineWidth(arcbarOption.width * opts.pix);\n    context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9');\n    context.setLineCap('round');\n    context.beginPath();\n    if (arcbarOption.type == 'default') {\n      context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, false);\n    } else {\n      context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, false);\n    }\n    context.stroke();\n    //进度条\n    var fillColor = eachSeries.color;\n    if (arcbarOption.linearType == 'custom') {\n      var grd = context.createLinearGradient(centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, centerPosition.y);\n      grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1));\n      grd.addColorStop(0, hexToRgb(eachSeries.color, 1));\n      fillColor = grd;\n    }\n    context.setLineWidth(arcbarOption.width * opts.pix);\n    context.setStrokeStyle(fillColor);\n    context.setLineCap('round');\n    context.beginPath();\n    context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, false);\n    context.stroke();\n  }\n  drawRingTitle(opts, config, context, centerPosition);\n  return {\n    center: centerPosition,\n    radius: radius,\n    series: series };\n\n}\n\nfunction drawGaugeDataPoints(categories, series, opts, config, context) {\n  var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n  var gaugeOption = assign({}, {\n    type: 'default',\n    startAngle: 0.75,\n    endAngle: 0.25,\n    width: 15,\n    labelOffset: 13,\n    splitLine: {\n      fixRadius: 0,\n      splitNumber: 10,\n      width: 15,\n      color: '#FFFFFF',\n      childNumber: 5,\n      childWidth: 5 },\n\n    pointer: {\n      width: 15,\n      color: 'auto' } },\n\n  opts.extra.gauge);\n  if (gaugeOption.oldAngle == undefined) {\n    gaugeOption.oldAngle = gaugeOption.startAngle;\n  }\n  if (gaugeOption.oldData == undefined) {\n    gaugeOption.oldData = 0;\n  }\n  categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle);\n  var centerPosition = {\n    x: opts.width / 2,\n    y: opts.height / 2 };\n\n  var radius = Math.min(centerPosition.x, centerPosition.y);\n  radius -= 5 * opts.pix;\n  radius -= gaugeOption.width / 2;\n  var innerRadius = radius - gaugeOption.width;\n  var totalAngle = 0;\n  //判断仪表盘的样式:default百度样式,progress新样式\n  if (gaugeOption.type == 'progress') {\n    //## 第一步画中心圆形背景和进度条背景\n    //中心圆形背景\n    var pieRadius = radius - gaugeOption.width * 3;\n    context.beginPath();\n    var gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius);\n    //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径)\n    gradient.addColorStop('0', hexToRgb(series[0].color, 0.3));\n    gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\n    context.setFillStyle(gradient);\n    context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false);\n    context.fill();\n    //画进度条背景\n    context.setLineWidth(gaugeOption.width);\n    context.setStrokeStyle(hexToRgb(series[0].color, 0.3));\n    context.setLineCap('round');\n    context.beginPath();\n    context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false);\n    context.stroke();\n    //## 第二步画刻度线\n    totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\n    var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\n    var childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\n    var startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\n    var endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\n    context.save();\n    context.translate(centerPosition.x, centerPosition.y);\n    context.rotate((gaugeOption.startAngle - 1) * Math.PI);\n    var len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1;\n    var proc = series[0].data * process;\n    for (var i = 0; i < len; i++) {\n      context.beginPath();\n      //刻度线随进度变色\n      if (proc > i / len) {\n        context.setStrokeStyle(hexToRgb(series[0].color, 1));\n      } else {\n        context.setStrokeStyle(hexToRgb(series[0].color, 0.3));\n      }\n      context.setLineWidth(3 * opts.pix);\n      context.moveTo(startX, 0);\n      context.lineTo(endX, 0);\n      context.stroke();\n      context.rotate(childAngle * Math.PI);\n    }\n    context.restore();\n    //## 第三步画进度条\n    series = getArcbarDataPoints(series, gaugeOption, process);\n    context.setLineWidth(gaugeOption.width);\n    context.setStrokeStyle(series[0].color);\n    context.setLineCap('round');\n    context.beginPath();\n    context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false);\n    context.stroke();\n    //## 第四步画指针\n    var pointerRadius = radius - gaugeOption.width * 2.5;\n    context.save();\n    context.translate(centerPosition.x, centerPosition.y);\n    context.rotate((series[0]._proportion_ - 1) * Math.PI);\n    context.beginPath();\n    context.setLineWidth(gaugeOption.width / 3);\n    var gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6);\n    gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0));\n    gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1));\n    gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0));\n    context.setStrokeStyle(gradient3);\n    context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false);\n    context.stroke();\n    context.beginPath();\n    context.setLineWidth(1);\n    context.setStrokeStyle(series[0].color);\n    context.setFillStyle(series[0].color);\n    context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);\n    context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0);\n    context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4);\n    context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);\n    context.stroke();\n    context.fill();\n    context.restore();\n    //default百度样式\n  } else {\n    //画背景\n    context.setLineWidth(gaugeOption.width);\n    context.setLineCap('butt');\n    for (var _i23 = 0; _i23 < categories.length; _i23++) {\n      var eachCategories = categories[_i23];\n      context.beginPath();\n      context.setStrokeStyle(eachCategories.color);\n      context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false);\n      context.stroke();\n    }\n    context.save();\n    //画刻度线\n    totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\n    var _splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\n    var _childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\n    var _startX2 = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\n    var _endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\n    var childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth;\n    context.translate(centerPosition.x, centerPosition.y);\n    context.rotate((gaugeOption.startAngle - 1) * Math.PI);\n    for (var _i24 = 0; _i24 < gaugeOption.splitLine.splitNumber + 1; _i24++) {\n      context.beginPath();\n      context.setStrokeStyle(gaugeOption.splitLine.color);\n      context.setLineWidth(2 * opts.pix);\n      context.moveTo(_startX2, 0);\n      context.lineTo(_endX, 0);\n      context.stroke();\n      context.rotate(_splitAngle * Math.PI);\n    }\n    context.restore();\n    context.save();\n    context.translate(centerPosition.x, centerPosition.y);\n    context.rotate((gaugeOption.startAngle - 1) * Math.PI);\n    for (var _i25 = 0; _i25 < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; _i25++) {\n      context.beginPath();\n      context.setStrokeStyle(gaugeOption.splitLine.color);\n      context.setLineWidth(1 * opts.pix);\n      context.moveTo(_startX2, 0);\n      context.lineTo(childendX, 0);\n      context.stroke();\n      context.rotate(_childAngle * Math.PI);\n    }\n    context.restore();\n    //画指针\n    series = getGaugeDataPoints(series, categories, gaugeOption, process);\n    for (var _i26 = 0; _i26 < series.length; _i26++) {\n      var eachSeries = series[_i26];\n      context.save();\n      context.translate(centerPosition.x, centerPosition.y);\n      context.rotate((eachSeries._proportion_ - 1) * Math.PI);\n      context.beginPath();\n      context.setFillStyle(eachSeries.color);\n      context.moveTo(gaugeOption.pointer.width, 0);\n      context.lineTo(0, -gaugeOption.pointer.width / 2);\n      context.lineTo(-innerRadius, 0);\n      context.lineTo(0, gaugeOption.pointer.width / 2);\n      context.lineTo(gaugeOption.pointer.width, 0);\n      context.closePath();\n      context.fill();\n      context.beginPath();\n      context.setFillStyle('#FFFFFF');\n      context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false);\n      context.fill();\n      context.restore();\n    }\n    if (opts.dataLabel !== false) {\n      drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context);\n    }\n  }\n  //画仪表盘标题,副标题\n  drawRingTitle(opts, config, context, centerPosition);\n  if (process === 1 && opts.type === 'gauge') {\n    opts.extra.gauge.oldAngle = series[0]._proportion_;\n    opts.extra.gauge.oldData = series[0].data;\n  }\n  return {\n    center: centerPosition,\n    radius: radius,\n    innerRadius: innerRadius,\n    categories: categories,\n    totalAngle: totalAngle };\n\n}\n\nfunction drawRadarDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var radarOption = assign({}, {\n    gridColor: '#cccccc',\n    gridType: 'radar',\n    opacity: 0.2,\n    gridCount: 3,\n    border: false,\n    borderWidth: 2 },\n  opts.extra.radar);\n  var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);\n  var centerPosition = {\n    x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n    y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 };\n\n  var xr = (opts.width - opts.area[1] - opts.area[3]) / 2;\n  var yr = (opts.height - opts.area[0] - opts.area[2]) / 2;\n  var radius = Math.min(xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), yr - config.radarLabelTextMargin);\n  radius -= config.radarLabelTextMargin * opts.pix;\n  // 画分割线\n  context.beginPath();\n  context.setLineWidth(1 * opts.pix);\n  context.setStrokeStyle(radarOption.gridColor);\n  coordinateAngle.forEach(function (angle) {\n    var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);\n    context.moveTo(centerPosition.x, centerPosition.y);\n    context.lineTo(pos.x, pos.y);\n  });\n  context.stroke();\n  context.closePath();\n\n  // 画背景网格\n  var _loop = function _loop(i) {\n    var startPos = {};\n    context.beginPath();\n    context.setLineWidth(1 * opts.pix);\n    context.setStrokeStyle(radarOption.gridColor);\n    if (radarOption.gridType == 'radar') {\n      coordinateAngle.forEach(function (angle, index) {\n        var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius /\n        radarOption.gridCount * i * Math.sin(angle), centerPosition);\n        if (index === 0) {\n          startPos = pos;\n          context.moveTo(pos.x, pos.y);\n        } else {\n          context.lineTo(pos.x, pos.y);\n        }\n      });\n      context.lineTo(startPos.x, startPos.y);\n    } else {\n      var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition);\n      context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false);\n    }\n    context.stroke();\n    context.closePath();\n  };\n  for (var i = 1; i <= radarOption.gridCount; i++) {\n    _loop(i);\n  }\n  var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);\n  radarDataPoints.forEach(function (eachSeries, seriesIndex) {\n    // 绘制区域数据\n    context.beginPath();\n    context.setLineWidth(radarOption.borderWidth * opts.pix);\n    context.setStrokeStyle(eachSeries.color);\n    context.setFillStyle(hexToRgb(eachSeries.color, radarOption.opacity));\n    eachSeries.data.forEach(function (item, index) {\n      if (index === 0) {\n        context.moveTo(item.position.x, item.position.y);\n      } else {\n        context.lineTo(item.position.x, item.position.y);\n      }\n    });\n    context.closePath();\n    context.fill();\n    if (radarOption.border === true) {\n      context.stroke();\n    }\n    context.closePath();\n    if (opts.dataPointShape !== false) {\n      var points = eachSeries.data.map(function (item) {\n        return item.position;\n      });\n      drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n    }\n  });\n  // draw label text\n  drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);\n\n  // draw dataLabel\n  if (opts.dataLabel !== false && process === 1) {\n    radarDataPoints.forEach(function (eachSeries, seriesIndex) {\n      context.beginPath();\n      var fontSize = eachSeries.textSize * opts.pix || config.fontSize;\n      context.setFontSize(fontSize);\n      context.setFillStyle(eachSeries.textColor || opts.fontColor);\n      eachSeries.data.forEach(function (item, index) {\n        //如果是中心点垂直的上下点位\n        if (Math.abs(item.position.x - centerPosition.x) < 2) {\n          //如果在上面\n          if (item.position.y < centerPosition.y) {\n            context.setTextAlign('center');\n            context.fillText(item.value, item.position.x, item.position.y - 4);\n          } else {\n            context.setTextAlign('center');\n            context.fillText(item.value, item.position.x, item.position.y + fontSize + 2);\n          }\n        } else {\n          //如果在左侧\n          if (item.position.x < centerPosition.x) {\n            context.setTextAlign('right');\n            context.fillText(item.value, item.position.x - 4, item.position.y + fontSize / 2 - 2);\n          } else {\n            context.setTextAlign('left');\n            context.fillText(item.value, item.position.x + 4, item.position.y + fontSize / 2 - 2);\n          }\n        }\n      });\n      context.closePath();\n      context.stroke();\n    });\n    context.setTextAlign('left');\n  }\n\n  return {\n    center: centerPosition,\n    radius: radius,\n    angleList: coordinateAngle };\n\n}\n\nfunction normalInt(min, max, iter) {\n  iter = iter == 0 ? 1 : iter;\n  var arr = [];\n  for (var i = 0; i < iter; i++) {\n    arr[i] = Math.random();\n  };\n  return Math.floor(arr.reduce(function (i, j) {\n    return i + j;\n  }) / iter * (max - min)) + min;\n};\n\nfunction collisionNew(area, points, width, height) {\n  var isIn = false;\n  for (var i = 0; i < points.length; i++) {\n    if (points[i].area) {\n      if (area[3] < points[i].area[1] || area[0] > points[i].area[2] || area[1] > points[i].area[3] || area[2] < points[i].area[0]) {\n        if (area[0] < 0 || area[1] < 0 || area[2] > width || area[3] > height) {\n          isIn = true;\n          break;\n        } else {\n          isIn = false;\n        }\n      } else {\n        isIn = true;\n        break;\n      }\n    }\n  }\n  return isIn;\n};\n\nfunction getBoundingBox(data) {\n  var bounds = {},coords;\n  bounds.xMin = 180;\n  bounds.xMax = 0;\n  bounds.yMin = 90;\n  bounds.yMax = 0;\n  for (var i = 0; i < data.length; i++) {\n    var coorda = data[i].geometry.coordinates;\n    for (var k = 0; k < coorda.length; k++) {\n      coords = coorda[k];\n      if (coords.length == 1) {\n        coords = coords[0];\n      }\n      for (var j = 0; j < coords.length; j++) {\n        var longitude = coords[j][0];\n        var latitude = coords[j][1];\n        var point = {\n          x: longitude,\n          y: latitude };\n\n        bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x;\n        bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x;\n        bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y;\n        bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y;\n      }\n    }\n  }\n  return bounds;\n}\n\nfunction coordinateToPoint(latitude, longitude, bounds, scale, xoffset, yoffset) {\n  return {\n    x: (longitude - bounds.xMin) * scale + xoffset,\n    y: (bounds.yMax - latitude) * scale + yoffset };\n\n}\n\nfunction pointToCoordinate(pointY, pointX, bounds, scale, xoffset, yoffset) {\n  return {\n    x: (pointX - xoffset) / scale + bounds.xMin,\n    y: bounds.yMax - (pointY - yoffset) / scale };\n\n}\n\nfunction isRayIntersectsSegment(poi, s_poi, e_poi) {\n  if (s_poi[1] == e_poi[1]) {\n    return false;\n  }\n  if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) {\n    return false;\n  }\n  if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) {\n    return false;\n  }\n  if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) {\n    return false;\n  }\n  if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) {\n    return false;\n  }\n  if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) {\n    return false;\n  }\n  var xseg = e_poi[0] - (e_poi[0] - s_poi[0]) * (e_poi[1] - poi[1]) / (e_poi[1] - s_poi[1]);\n  if (xseg < poi[0]) {\n    return false;\n  } else {\n    return true;\n  }\n}\n\nfunction isPoiWithinPoly(poi, poly, mercator) {\n  var sinsc = 0;\n  for (var i = 0; i < poly.length; i++) {\n    var epoly = poly[i][0];\n    if (poly.length == 1) {\n      epoly = poly[i][0];\n    }\n    for (var j = 0; j < epoly.length - 1; j++) {\n      var s_poi = epoly[j];\n      var e_poi = epoly[j + 1];\n      if (mercator) {\n        s_poi = lonlat2mercator(epoly[j][0], epoly[j][1]);\n        e_poi = lonlat2mercator(epoly[j + 1][0], epoly[j + 1][1]);\n      }\n      if (isRayIntersectsSegment(poi, s_poi, e_poi)) {\n        sinsc += 1;\n      }\n    }\n  }\n  if (sinsc % 2 == 1) {\n    return true;\n  } else {\n    return false;\n  }\n}\n\n\nfunction drawMapDataPoints(series, opts, config, context) {\n  var mapOption = assign({}, {\n    border: true,\n    mercator: false,\n    borderWidth: 1,\n    borderColor: '#666666',\n    fillOpacity: 0.6,\n    activeBorderColor: '#f04864',\n    activeFillColor: '#facc14',\n    activeFillOpacity: 1 },\n  opts.extra.map);\n  var coords, point;\n  var data = series;\n  var bounds = getBoundingBox(data);\n  if (mapOption.mercator) {\n    var max = lonlat2mercator(bounds.xMax, bounds.yMax);\n    var min = lonlat2mercator(bounds.xMin, bounds.yMin);\n    bounds.xMax = max[0];\n    bounds.yMax = max[1];\n    bounds.xMin = min[0];\n    bounds.yMin = min[1];\n  }\n  var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin);\n  var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin);\n  var scale = xScale < yScale ? xScale : yScale;\n  var xoffset = opts.width / 2 - Math.abs(bounds.xMax - bounds.xMin) / 2 * scale;\n  var yoffset = opts.height / 2 - Math.abs(bounds.yMax - bounds.yMin) / 2 * scale;\n  for (var i = 0; i < data.length; i++) {\n    context.beginPath();\n    context.setLineWidth(mapOption.borderWidth * opts.pix);\n    context.setStrokeStyle(mapOption.borderColor);\n    context.setFillStyle(hexToRgb(series[i].color, mapOption.fillOpacity));\n    if (opts.tooltip) {\n      if (opts.tooltip.index == i) {\n        context.setStrokeStyle(mapOption.activeBorderColor);\n        context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity));\n      }\n    }\n    var coorda = data[i].geometry.coordinates;\n    for (var k = 0; k < coorda.length; k++) {\n      coords = coorda[k];\n      if (coords.length == 1) {\n        coords = coords[0];\n      }\n      for (var j = 0; j < coords.length; j++) {\n        var gaosi = Array(2);\n        if (mapOption.mercator) {\n          gaosi = lonlat2mercator(coords[j][0], coords[j][1]);\n        } else {\n          gaosi = coords[j];\n        }\n        point = coordinateToPoint(gaosi[1], gaosi[0], bounds, scale, xoffset, yoffset);\n        if (j === 0) {\n          context.beginPath();\n          context.moveTo(point.x, point.y);\n        } else {\n          context.lineTo(point.x, point.y);\n        }\n      }\n      context.fill();\n      if (mapOption.border == true) {\n        context.stroke();\n      }\n    }\n    if (opts.dataLabel == true) {\n      var centerPoint = data[i].properties.centroid;\n      if (centerPoint) {\n        if (mapOption.mercator) {\n          centerPoint = lonlat2mercator(data[i].properties.centroid[0], data[i].properties.centroid[1]);\n        }\n        point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset);\n        var fontSize = data[i].textSize * opts.pix || config.fontSize;\n        var text = data[i].properties.name;\n        context.beginPath();\n        context.setFontSize(fontSize);\n        context.setFillStyle(data[i].textColor || opts.fontColor);\n        context.fillText(text, point.x - measureText(text, fontSize, context) / 2, point.y + fontSize / 2);\n        context.closePath();\n        context.stroke();\n      }\n    }\n  }\n  opts.chartData.mapData = {\n    bounds: bounds,\n    scale: scale,\n    xoffset: xoffset,\n    yoffset: yoffset,\n    mercator: mapOption.mercator };\n\n  drawToolTipBridge(opts, config, context, 1);\n  context.draw();\n}\n\nfunction getWordCloudPoint(opts, type, context) {\n  var points = opts.series;\n  switch (type) {\n    case 'normal':\n      for (var i = 0; i < points.length; i++) {\n        var text = points[i].name;\n        var tHeight = points[i].textSize * opts.pix;\n        var tWidth = measureText(text, tHeight, context);\n        var x = void 0,y = void 0;\n        var area = void 0;\n        var breaknum = 0;\n        while (true) {\n          breaknum++;\n          x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2;\n          y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2;\n          area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 +\n          opts.height / 2];\n\n          var isCollision = collisionNew(area, points, opts.width, opts.height);\n          if (!isCollision) break;\n          if (breaknum == 1000) {\n            area = [-100, -100, -100, -100];\n            break;\n          }\n        };\n        points[i].area = area;\n      }\n      break;\n    case 'vertical':var\n      Spin = function Spin() {\n        //获取均匀随机值,是否旋转,旋转的概率为(1-0.5)\n        if (Math.random() > 0.7) {\n          return true;\n        } else {\n          return false;\n        };\n      };;\n      for (var _i27 = 0; _i27 < points.length; _i27++) {\n        var _text = points[_i27].name;\n        var _tHeight = points[_i27].textSize * opts.pix;\n        var _tWidth = measureText(_text, _tHeight, context);\n        var isSpin = Spin();\n        var _x = void 0,_y = void 0,_area = void 0,areav = void 0;\n        var _breaknum = 0;\n        while (true) {\n          _breaknum++;\n          var _isCollision = void 0;\n          if (isSpin) {\n            _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;\n            _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;\n            _area = [_y - 5 - _tWidth + opts.width / 2, -_x - 5 + opts.height / 2, _y + 5 + opts.width / 2, -_x + _tHeight + 5 + opts.height / 2];\n            areav = [opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) - 5, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) - 5, opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) + _tHeight, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) + _tWidth + 5];\n            _isCollision = collisionNew(areav, points, opts.height, opts.width);\n          } else {\n            _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;\n            _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;\n            _area = [_x - 5 + opts.width / 2, _y - 5 - _tHeight + opts.height / 2, _x + _tWidth + 5 + opts.width / 2, _y + 5 + opts.height / 2];\n            _isCollision = collisionNew(_area, points, opts.width, opts.height);\n          }\n          if (!_isCollision) break;\n          if (_breaknum == 1000) {\n            _area = [-1000, -1000, -1000, -1000];\n            break;\n          }\n        };\n        if (isSpin) {\n          points[_i27].area = areav;\n          points[_i27].areav = _area;\n        } else {\n          points[_i27].area = _area;\n        }\n        points[_i27].rotate = isSpin;\n      };\n      break;}\n\n  return points;\n}\n\n\nfunction drawWordCloudDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var wordOption = assign({}, {\n    type: 'normal',\n    autoColors: true },\n  opts.extra.word);\n  if (!opts.chartData.wordCloudData) {\n    opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context);\n  }\n  context.beginPath();\n  context.setFillStyle(opts.background);\n  context.rect(0, 0, opts.width, opts.height);\n  context.fill();\n  context.save();\n  var points = opts.chartData.wordCloudData;\n  context.translate(opts.width / 2, opts.height / 2);\n  for (var i = 0; i < points.length; i++) {\n    context.save();\n    if (points[i].rotate) {\n      context.rotate(90 * Math.PI / 180);\n    }\n    var text = points[i].name;\n    var tHeight = points[i].textSize * opts.pix;\n    var tWidth = measureText(text, tHeight, context);\n    context.beginPath();\n    context.setStrokeStyle(points[i].color);\n    context.setFillStyle(points[i].color);\n    context.setFontSize(tHeight);\n    if (points[i].rotate) {\n      if (points[i].areav[0] > 0) {\n        if (opts.tooltip) {\n          if (opts.tooltip.index == i) {\n            context.strokeText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\n          } else {\n            context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\n          }\n        } else {\n          context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\n        }\n      }\n    } else {\n      if (points[i].area[0] > 0) {\n        if (opts.tooltip) {\n          if (opts.tooltip.index == i) {\n            context.strokeText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\n          } else {\n            context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\n          }\n        } else {\n          context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\n        }\n      }\n    }\n    context.stroke();\n    context.restore();\n  }\n  context.restore();\n}\n\nfunction drawFunnelDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var funnelOption = assign({}, {\n    type: 'funnel',\n    activeWidth: 10,\n    activeOpacity: 0.3,\n    border: false,\n    borderWidth: 2,\n    borderColor: '#FFFFFF',\n    fillOpacity: 1,\n    labelAlign: 'right',\n    linearType: 'none',\n    customColor: [] },\n  opts.extra.funnel);\n  var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length;\n  var centerPosition = {\n    x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n    y: opts.height - opts.area[2] };\n\n  var activeWidth = funnelOption.activeWidth * opts.pix;\n  var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth);\n  series = getFunnelDataPoints(series, radius, funnelOption.type, eachSpacing, process);\n  context.save();\n  context.translate(centerPosition.x, centerPosition.y);\n  funnelOption.customColor = fillCustomColor(funnelOption.linearType, funnelOption.customColor, series, config);\n  if (funnelOption.type == 'pyramid') {\n    for (var i = 0; i < series.length; i++) {\n      if (i == series.length - 1) {\n        if (opts.tooltip) {\n          if (opts.tooltip.index == i) {\n            context.beginPath();\n            context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));\n            context.moveTo(-activeWidth, -eachSpacing);\n            context.lineTo(-series[i].radius - activeWidth, 0);\n            context.lineTo(series[i].radius + activeWidth, 0);\n            context.lineTo(activeWidth, -eachSpacing);\n            context.lineTo(-activeWidth, -eachSpacing);\n            context.closePath();\n            context.fill();\n          }\n        }\n        series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + series[i].radius, centerPosition.y - eachSpacing * i];\n        context.beginPath();\n        context.setLineWidth(funnelOption.borderWidth * opts.pix);\n        context.setStrokeStyle(funnelOption.borderColor);\n        var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity);\n        if (funnelOption.linearType == 'custom') {\n          var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing);\n          grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity));\n          grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity));\n          grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity));\n          fillColor = grd;\n        }\n        context.setFillStyle(fillColor);\n        context.moveTo(0, -eachSpacing);\n        context.lineTo(-series[i].radius, 0);\n        context.lineTo(series[i].radius, 0);\n        context.lineTo(0, -eachSpacing);\n        context.closePath();\n        context.fill();\n        if (funnelOption.border == true) {\n          context.stroke();\n        }\n      } else {\n        if (opts.tooltip) {\n          if (opts.tooltip.index == i) {\n            context.beginPath();\n            context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));\n            context.moveTo(0, 0);\n            context.lineTo(-series[i].radius - activeWidth, 0);\n            context.lineTo(-series[i + 1].radius - activeWidth, -eachSpacing);\n            context.lineTo(series[i + 1].radius + activeWidth, -eachSpacing);\n            context.lineTo(series[i].radius + activeWidth, 0);\n            context.lineTo(0, 0);\n            context.closePath();\n            context.fill();\n          }\n        }\n        series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + series[i].radius, centerPosition.y - eachSpacing * i];\n        context.beginPath();\n        context.setLineWidth(funnelOption.borderWidth * opts.pix);\n        context.setStrokeStyle(funnelOption.borderColor);\n        var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity);\n        if (funnelOption.linearType == 'custom') {\n          var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing);\n          grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity));\n          grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity));\n          grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity));\n          fillColor = grd;\n        }\n        context.setFillStyle(fillColor);\n        context.moveTo(0, 0);\n        context.lineTo(-series[i].radius, 0);\n        context.lineTo(-series[i + 1].radius, -eachSpacing);\n        context.lineTo(series[i + 1].radius, -eachSpacing);\n        context.lineTo(series[i].radius, 0);\n        context.lineTo(0, 0);\n        context.closePath();\n        context.fill();\n        if (funnelOption.border == true) {\n          context.stroke();\n        }\n      }\n      context.translate(0, -eachSpacing);\n    }\n  } else {\n    for (var _i28 = 0; _i28 < series.length; _i28++) {\n      if (_i28 == 0) {\n        if (opts.tooltip) {\n          if (opts.tooltip.index == _i28) {\n            context.beginPath();\n            context.setFillStyle(hexToRgb(series[_i28].color, funnelOption.activeOpacity));\n            context.moveTo(-activeWidth, 0);\n            context.lineTo(-series[_i28].radius - activeWidth, -eachSpacing);\n            context.lineTo(series[_i28].radius + activeWidth, -eachSpacing);\n            context.lineTo(activeWidth, 0);\n            context.lineTo(-activeWidth, 0);\n            context.closePath();\n            context.fill();\n          }\n        }\n        series[_i28].funnelArea = [centerPosition.x - series[_i28].radius, centerPosition.y - eachSpacing, centerPosition.x + series[_i28].radius, centerPosition.y];\n        context.beginPath();\n        context.setLineWidth(funnelOption.borderWidth * opts.pix);\n        context.setStrokeStyle(funnelOption.borderColor);\n        var fillColor = hexToRgb(series[_i28].color, funnelOption.fillOpacity);\n        if (funnelOption.linearType == 'custom') {\n          var grd = context.createLinearGradient(series[_i28].radius, -eachSpacing, -series[_i28].radius, -eachSpacing);\n          grd.addColorStop(0, hexToRgb(series[_i28].color, funnelOption.fillOpacity));\n          grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[_i28].linearIndex], funnelOption.fillOpacity));\n          grd.addColorStop(1, hexToRgb(series[_i28].color, funnelOption.fillOpacity));\n          fillColor = grd;\n        }\n        context.setFillStyle(fillColor);\n        context.moveTo(0, 0);\n        context.lineTo(-series[_i28].radius, -eachSpacing);\n        context.lineTo(series[_i28].radius, -eachSpacing);\n        context.lineTo(0, 0);\n        context.closePath();\n        context.fill();\n        if (funnelOption.border == true) {\n          context.stroke();\n        }\n      } else {\n        if (opts.tooltip) {\n          if (opts.tooltip.index == _i28) {\n            context.beginPath();\n            context.setFillStyle(hexToRgb(series[_i28].color, funnelOption.activeOpacity));\n            context.moveTo(0, 0);\n            context.lineTo(-series[_i28 - 1].radius - activeWidth, 0);\n            context.lineTo(-series[_i28].radius - activeWidth, -eachSpacing);\n            context.lineTo(series[_i28].radius + activeWidth, -eachSpacing);\n            context.lineTo(series[_i28 - 1].radius + activeWidth, 0);\n            context.lineTo(0, 0);\n            context.closePath();\n            context.fill();\n          }\n        }\n        series[_i28].funnelArea = [centerPosition.x - series[_i28].radius, centerPosition.y - eachSpacing * (_i28 + 1), centerPosition.x + series[_i28].radius, centerPosition.y - eachSpacing * _i28];\n        context.beginPath();\n        context.setLineWidth(funnelOption.borderWidth * opts.pix);\n        context.setStrokeStyle(funnelOption.borderColor);\n        var fillColor = hexToRgb(series[_i28].color, funnelOption.fillOpacity);\n        if (funnelOption.linearType == 'custom') {\n          var grd = context.createLinearGradient(series[_i28].radius, -eachSpacing, -series[_i28].radius, -eachSpacing);\n          grd.addColorStop(0, hexToRgb(series[_i28].color, funnelOption.fillOpacity));\n          grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[_i28].linearIndex], funnelOption.fillOpacity));\n          grd.addColorStop(1, hexToRgb(series[_i28].color, funnelOption.fillOpacity));\n          fillColor = grd;\n        }\n        context.setFillStyle(fillColor);\n        context.moveTo(0, 0);\n        context.lineTo(-series[_i28 - 1].radius, 0);\n        context.lineTo(-series[_i28].radius, -eachSpacing);\n        context.lineTo(series[_i28].radius, -eachSpacing);\n        context.lineTo(series[_i28 - 1].radius, 0);\n        context.lineTo(0, 0);\n        context.closePath();\n        context.fill();\n        if (funnelOption.border == true) {\n          context.stroke();\n        }\n      }\n      context.translate(0, -eachSpacing);\n    }\n  }\n\n  context.restore();\n  if (opts.dataLabel !== false && process === 1) {\n    drawFunnelText(series, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);\n  }\n  return {\n    center: centerPosition,\n    radius: radius,\n    series: series };\n\n}\n\nfunction drawFunnelText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    var startX = void 0,endX = void 0,startY = void 0,fontSize = void 0;\n    var text = item.formatter ? item.formatter(item, i, series) : util.toFixed(item._proportion_ * 100) + '%';\n    if (labelAlign == 'right') {\n      if (opts.extra.funnel.type === 'pyramid') {\n        if (i == series.length - 1) {\n          startX = (item.funnelArea[2] + centerPosition.x) / 2;\n        } else {\n          startX = (item.funnelArea[2] + series[i + 1].funnelArea[2]) / 2;\n        }\n      } else {\n        if (i == 0) {\n          startX = (item.funnelArea[2] + centerPosition.x) / 2;\n        } else {\n          startX = (item.funnelArea[2] + series[i - 1].funnelArea[2]) / 2;\n        }\n      }\n      endX = startX + activeWidth * 2;\n      startY = item.funnelArea[1] + eachSpacing / 2;\n      fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;\n      context.setLineWidth(1 * opts.pix);\n      context.setStrokeStyle(item.color);\n      context.setFillStyle(item.color);\n      context.beginPath();\n      context.moveTo(startX, startY);\n      context.lineTo(endX, startY);\n      context.stroke();\n      context.closePath();\n      context.beginPath();\n      context.moveTo(endX, startY);\n      context.arc(endX, startY, 2, 0, 2 * Math.PI);\n      context.closePath();\n      context.fill();\n      context.beginPath();\n      context.setFontSize(fontSize);\n      context.setFillStyle(item.textColor || opts.fontColor);\n      context.fillText(text, endX + 5, startY + fontSize / 2 - 2);\n      context.closePath();\n      context.stroke();\n      context.closePath();\n    } else {\n      if (opts.extra.funnel.type === 'pyramid') {\n        if (i == series.length - 1) {\n          startX = (item.funnelArea[0] + centerPosition.x) / 2;\n        } else {\n          startX = (item.funnelArea[0] + series[i + 1].funnelArea[0]) / 2;\n        }\n      } else {\n        if (i == 0) {\n          startX = (item.funnelArea[0] + centerPosition.x) / 2;\n        } else {\n          startX = (item.funnelArea[0] + series[i - 1].funnelArea[0]) / 2;\n        }\n      }\n      endX = startX - activeWidth * 2;\n      startY = item.funnelArea[1] + eachSpacing / 2;\n      fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;\n      context.setLineWidth(1 * opts.pix);\n      context.setStrokeStyle(item.color);\n      context.setFillStyle(item.color);\n      context.beginPath();\n      context.moveTo(startX, startY);\n      context.lineTo(endX, startY);\n      context.stroke();\n      context.closePath();\n      context.beginPath();\n      context.moveTo(endX, startY);\n      context.arc(endX, startY, 2, 0, 2 * Math.PI);\n      context.closePath();\n      context.fill();\n      context.beginPath();\n      context.setFontSize(fontSize);\n      context.setFillStyle(item.textColor || opts.fontColor);\n      context.fillText(text, endX - 5 - measureText(text, fontSize, context), startY + fontSize / 2 - 2);\n      context.closePath();\n      context.stroke();\n      context.closePath();\n    }\n\n  }\n}\n\nfunction drawCanvas(opts, context) {\n  context.draw();\n}\n\nvar Timing = {\n  easeIn: function easeIn(pos) {\n    return Math.pow(pos, 3);\n  },\n  easeOut: function easeOut(pos) {\n    return Math.pow(pos - 1, 3) + 1;\n  },\n  easeInOut: function easeInOut(pos) {\n    if ((pos /= 0.5) < 1) {\n      return 0.5 * Math.pow(pos, 3);\n    } else {\n      return 0.5 * (Math.pow(pos - 2, 3) + 2);\n    }\n  },\n  linear: function linear(pos) {\n    return pos;\n  } };\n\n\nfunction Animation(opts) {\n  this.isStop = false;\n  opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration;\n  opts.timing = opts.timing || 'easeInOut';\n  var delay = 17;\n  function createAnimationFrame() {\n    if (typeof setTimeout !== 'undefined') {\n      return function (step, delay) {\n        setTimeout(function () {\n          var timeStamp = +new Date();\n          step(timeStamp);\n        }, delay);\n      };\n    } else if (typeof requestAnimationFrame !== 'undefined') {\n      return requestAnimationFrame;\n    } else {\n      return function (step) {\n        step(null);\n      };\n    }\n  };\n  var animationFrame = createAnimationFrame();\n  var startTimeStamp = null;\n  var _step = function step(timestamp) {\n    if (timestamp === null || this.isStop === true) {\n      opts.onProcess && opts.onProcess(1);\n      opts.onAnimationFinish && opts.onAnimationFinish();\n      return;\n    }\n    if (startTimeStamp === null) {\n      startTimeStamp = timestamp;\n    }\n    if (timestamp - startTimeStamp < opts.duration) {\n      var process = (timestamp - startTimeStamp) / opts.duration;\n      var timingFunction = Timing[opts.timing];\n      process = timingFunction(process);\n      opts.onProcess && opts.onProcess(process);\n      animationFrame(_step, delay);\n    } else {\n      opts.onProcess && opts.onProcess(1);\n      opts.onAnimationFinish && opts.onAnimationFinish();\n    }\n  };\n  _step = _step.bind(this);\n  animationFrame(_step, delay);\n}\n\nAnimation.prototype.stop = function () {\n  this.isStop = true;\n};\n\nfunction drawCharts(type, opts, config, context) {\n  var _this = this;\n  var series = opts.series;\n  //兼容ECharts饼图类数据格式\n  if (type === 'pie' || type === 'ring' || type === 'rose' || type === 'funnel') {\n    series = fixPieSeries(series, opts, config);\n  }\n  var categories = opts.categories;\n  series = fillSeries(series, opts, config);\n  var duration = opts.animation ? opts.duration : 0;\n  _this.animationInstance && _this.animationInstance.stop();\n  var seriesMA = null;\n  if (type == 'candle') {\n    var average = assign({}, opts.extra.candle.average);\n    if (average.show) {\n      seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data);\n      seriesMA = fillSeries(seriesMA, opts, config);\n      opts.seriesMA = seriesMA;\n    } else if (opts.seriesMA) {\n      seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config);\n    } else {\n      seriesMA = series;\n    }\n  } else {\n    seriesMA = series;\n  }\n  /* 过滤掉show=false的series */\n  opts._series_ = series = filterSeries(series);\n  //重新计算图表区域\n  opts.area = new Array(4);\n  //复位绘图区域\n  for (var j = 0; j < 4; j++) {\n    opts.area[j] = opts.padding[j] * opts.pix;\n  }\n  //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域\n  var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData, context),\n  legendHeight = _calLegendData.area.wholeHeight,\n  legendWidth = _calLegendData.area.wholeWidth;\n\n  switch (opts.legend.position) {\n    case 'top':\n      opts.area[0] += legendHeight;\n      break;\n    case 'bottom':\n      opts.area[2] += legendHeight;\n      break;\n    case 'left':\n      opts.area[3] += legendWidth;\n      break;\n    case 'right':\n      opts.area[1] += legendWidth;\n      break;}\n\n\n  var _calYAxisData = {},\n  yAxisWidth = 0;\n  if (opts.type === 'line' || opts.type === 'column' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {\n    _calYAxisData = calYAxisData(series, opts, config, context);\n    yAxisWidth = _calYAxisData.yAxisWidth;\n    //如果显示Y轴标题\n    if (opts.yAxis.showTitle) {\n      var maxTitleHeight = 0;\n      for (var i = 0; i < opts.yAxis.data.length; i++) {\n        maxTitleHeight = Math.max(maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize * opts.pix : config.fontSize);\n      }\n      opts.area[0] += maxTitleHeight;\n    }\n    var rightIndex = 0,\n    leftIndex = 0;\n    //计算主绘图区域左右位置\n    for (var _i29 = 0; _i29 < yAxisWidth.length; _i29++) {\n      if (yAxisWidth[_i29].position == 'left') {\n        if (leftIndex > 0) {\n          opts.area[3] += yAxisWidth[_i29].width + opts.yAxis.padding * opts.pix;\n        } else {\n          opts.area[3] += yAxisWidth[_i29].width;\n        }\n        leftIndex += 1;\n      } else if (yAxisWidth[_i29].position == 'right') {\n        if (rightIndex > 0) {\n          opts.area[1] += yAxisWidth[_i29].width + opts.yAxis.padding * opts.pix;\n        } else {\n          opts.area[1] += yAxisWidth[_i29].width;\n        }\n        rightIndex += 1;\n      }\n    }\n  } else {\n    config.yAxisWidth = yAxisWidth;\n  }\n  opts.chartData.yAxisData = _calYAxisData;\n\n  if (opts.categories && opts.categories.length && opts.type !== 'radar' && opts.type !== 'gauge' && opts.type !== 'bar') {\n    opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config);\n    var _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),\n    xAxisHeight = _calCategoriesData.xAxisHeight,\n    angle = _calCategoriesData.angle;\n    config.xAxisHeight = xAxisHeight;\n    config._xAxisTextAngle_ = angle;\n    opts.area[2] += xAxisHeight;\n    opts.chartData.categoriesData = _calCategoriesData;\n  } else {\n    if (opts.type === 'line' || opts.type === 'area' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {\n      opts.chartData.xAxisData = calXAxisData(series, opts, config, context);\n      categories = opts.chartData.xAxisData.rangesFormat;\n      var _calCategoriesData2 = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),\n      _xAxisHeight = _calCategoriesData2.xAxisHeight,\n      _angle = _calCategoriesData2.angle;\n      config.xAxisHeight = _xAxisHeight;\n      config._xAxisTextAngle_ = _angle;\n      opts.area[2] += _xAxisHeight;\n      opts.chartData.categoriesData = _calCategoriesData2;\n    } else {\n      opts.chartData.xAxisData = {\n        xAxisPoints: [] };\n\n    }\n  }\n  //计算右对齐偏移距离\n  if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) {\n    var offsetLeft = 0,\n    xAxisPoints = opts.chartData.xAxisData.xAxisPoints,\n    startX = opts.chartData.xAxisData.startX,\n    endX = opts.chartData.xAxisData.endX,\n    eachSpacing = opts.chartData.xAxisData.eachSpacing;\n    var totalWidth = eachSpacing * (xAxisPoints.length - 1);\n    var screenWidth = endX - startX;\n    offsetLeft = screenWidth - totalWidth;\n    _this.scrollOption = {\n      currentOffset: offsetLeft,\n      startTouchX: offsetLeft,\n      distance: 0,\n      lastMoveTime: 0 };\n\n    opts._scrollDistance_ = offsetLeft;\n  }\n\n  if (type === 'pie' || type === 'ring' || type === 'rose') {\n    config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA, config, context, opts);\n  }\n  switch (type) {\n    case 'word':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawWordCloudDataPoints(series, opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'map':\n      context.clearRect(0, 0, opts.width, opts.height);\n      drawMapDataPoints(series, opts, config, context);\n      break;\n    case 'funnel':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process);\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'line':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process),\n          xAxisPoints = _drawLineDataPoints.xAxisPoints,\n          calPoints = _drawLineDataPoints.calPoints,\n          eachSpacing = _drawLineDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'scatter':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawScatterDataPoints = drawScatterDataPoints(series, opts, config, context, process),\n          xAxisPoints = _drawScatterDataPoints.xAxisPoints,\n          calPoints = _drawScatterDataPoints.calPoints,\n          eachSpacing = _drawScatterDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'bubble':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawBubbleDataPoints = drawBubbleDataPoints(series, opts, config, context, process),\n          xAxisPoints = _drawBubbleDataPoints.xAxisPoints,\n          calPoints = _drawBubbleDataPoints.calPoints,\n          eachSpacing = _drawBubbleDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'mix':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process),\n          xAxisPoints = _drawMixDataPoints.xAxisPoints,\n          calPoints = _drawMixDataPoints.calPoints,\n          eachSpacing = _drawMixDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'column':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process),\n          xAxisPoints = _drawColumnDataPoints.xAxisPoints,\n          calPoints = _drawColumnDataPoints.calPoints,\n          eachSpacing = _drawColumnDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'bar':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawXAxis(categories, opts, config, context);\n          var _drawBarDataPoints = drawBarDataPoints(series, opts, config, context, process),\n          yAxisPoints = _drawBarDataPoints.yAxisPoints,\n          calPoints = _drawBarDataPoints.calPoints,\n          eachSpacing = _drawBarDataPoints.eachSpacing;\n          opts.chartData.yAxisPoints = yAxisPoints;\n          opts.chartData.xAxisPoints = opts.chartData.xAxisData.xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, yAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'area':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process),\n          xAxisPoints = _drawAreaDataPoints.xAxisPoints,\n          calPoints = _drawAreaDataPoints.calPoints,\n          eachSpacing = _drawAreaDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'ring':\n    case 'pie':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'rose':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process);\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'radar':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process);\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'arcbar':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'gauge':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;\n    case 'candle':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process),\n          xAxisPoints = _drawCandleDataPoints.xAxisPoints,\n          calPoints = _drawCandleDataPoints.calPoints,\n          eachSpacing = _drawCandleDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          if (seriesMA) {\n            drawLegend(seriesMA, opts, config, context, opts.chartData);\n          } else {\n            drawLegend(opts.series, opts, config, context, opts.chartData);\n          }\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        } });\n\n      break;}\n\n}\n\nfunction uChartsEvent() {\n  this.events = {};\n}\n\nuChartsEvent.prototype.addEventListener = function (type, listener) {\n  this.events[type] = this.events[type] || [];\n  this.events[type].push(listener);\n};\n\nuChartsEvent.prototype.delEventListener = function (type) {\n  this.events[type] = [];\n};\n\nuChartsEvent.prototype.trigger = function () {\n  for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  var type = args[0];\n  var params = args.slice(1);\n  if (!!this.events[type]) {\n    this.events[type].forEach(function (listener) {\n      try {\n        listener.apply(null, params);\n      } catch (e) {\n        //console.log('[uCharts] '+e);\n      }\n    });\n  }\n};\n\nvar uCharts = function uCharts(opts) {\n  opts.pix = opts.pixelRatio ? opts.pixelRatio : 1;\n  opts.fontSize = opts.fontSize ? opts.fontSize : 13;\n  opts.fontColor = opts.fontColor ? opts.fontColor : config.fontColor;\n  if (opts.background == \"\" || opts.background == \"none\") {\n    opts.background = \"#FFFFFF\";\n  }\n  opts.title = assign({}, opts.title);\n  opts.subtitle = assign({}, opts.subtitle);\n  opts.duration = opts.duration ? opts.duration : 1000;\n  opts.yAxis = assign({}, {\n    data: [],\n    showTitle: false,\n    disabled: false,\n    disableGrid: false,\n    splitNumber: 5,\n    gridType: 'solid',\n    dashLength: 4 * opts.pix,\n    gridColor: '#cccccc',\n    padding: 10,\n    fontColor: '#666666' },\n  opts.yAxis);\n  opts.xAxis = assign({}, {\n    rotateLabel: false,\n    disabled: false,\n    disableGrid: false,\n    splitNumber: 5,\n    calibration: false,\n    gridType: 'solid',\n    dashLength: 4,\n    scrollAlign: 'left',\n    boundaryGap: 'center',\n    axisLine: true,\n    axisLineColor: '#cccccc' },\n  opts.xAxis);\n  opts.xAxis.scrollPosition = opts.xAxis.scrollAlign;\n  opts.legend = assign({}, {\n    show: true,\n    position: 'bottom',\n    float: 'center',\n    backgroundColor: 'rgba(0,0,0,0)',\n    borderColor: 'rgba(0,0,0,0)',\n    borderWidth: 0,\n    padding: 5,\n    margin: 5,\n    itemGap: 10,\n    fontSize: opts.fontSize,\n    lineHeight: opts.fontSize,\n    fontColor: opts.fontColor,\n    formatter: {},\n    hiddenColor: '#CECECE' },\n  opts.legend);\n  opts.extra = assign({}, opts.extra);\n  opts.rotate = opts.rotate ? true : false;\n  opts.animation = opts.animation ? true : false;\n  opts.rotate = opts.rotate ? true : false;\n  opts.canvas2d = opts.canvas2d ? true : false;\n\n  var config$$1 = JSON.parse(JSON.stringify(config));\n  config$$1.color = opts.color ? opts.color : config$$1.color;\n  config$$1.yAxisTitleWidth = opts.yAxis.disabled !== true && opts.yAxis.title ? config$$1.yAxisTitleWidth : 0;\n  if (opts.type == 'pie') {\n    config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\n  }\n  if (opts.type == 'ring') {\n    config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.ring.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\n  }\n  if (opts.type == 'rose') {\n    config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\n  }\n  config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pix;\n  config$$1.yAxisSplit = opts.yAxis.splitNumber ? opts.yAxis.splitNumber : config.yAxisSplit;\n\n  //屏幕旋转\n  config$$1.rotate = opts.rotate;\n  if (opts.rotate) {\n    var tempWidth = opts.width;\n    var tempHeight = opts.height;\n    opts.width = tempHeight;\n    opts.height = tempWidth;\n  }\n\n  //适配高分屏\n  opts.padding = opts.padding ? opts.padding : config$$1.padding;\n  config$$1.yAxisWidth = config.yAxisWidth * opts.pix;\n  config$$1.xAxisHeight = config.xAxisHeight * opts.pix;\n  if (opts.enableScroll && opts.xAxis.scrollShow) {\n    config$$1.xAxisHeight += 6 * opts.pix;\n  }\n  config$$1.xAxisLineHeight = config.xAxisLineHeight * opts.pix;\n  config$$1.fontSize = opts.fontSize * opts.pix;\n  config$$1.titleFontSize = config.titleFontSize * opts.pix;\n  config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix;\n  config$$1.toolTipPadding = config.toolTipPadding * opts.pix;\n  config$$1.toolTipLineHeight = config.toolTipLineHeight * opts.pix;\n  config$$1.columePadding = config.columePadding * opts.pix;\n  //this.context = opts.context ? opts.context : uni.createCanvasContext(opts.canvasId, opts.$this);\n  //v2.0版本后需要自行获取context并传入opts进行初始化,这么做是为了确保uCharts可以跨更多端使用,并保证了自定义组件this实例不被循环嵌套。如果您觉得不便请取消上面注释,采用v1.0版本的方式使用,对此给您带来的不便敬请谅解!\n  if (!opts.context) {\n    throw new Error('[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!');\n  }\n  this.context = opts.context;\n  if (!this.context.setTextAlign) {\n    this.context.setStrokeStyle = function (e) {\n      return this.strokeStyle = e;\n    };\n    this.context.setLineWidth = function (e) {\n      return this.lineWidth = e;\n    };\n    this.context.setLineCap = function (e) {\n      return this.lineCap = e;\n    };\n    this.context.setFontSize = function (e) {\n      return this.font = e + \"px sans-serif\";\n    };\n    this.context.setFillStyle = function (e) {\n      return this.fillStyle = e;\n    };\n    this.context.setTextAlign = function (e) {\n      return this.textAlign = e;\n    };\n    this.context.draw = function () {};\n  }\n  //兼容NVUEsetLineDash\n  if (!this.context.setLineDash) {\n    this.context.setLineDash = function (e) {};\n  }\n  opts.chartData = {};\n  this.uevent = new uChartsEvent();\n  this.scrollOption = {\n    currentOffset: 0,\n    startTouchX: 0,\n    distance: 0,\n    lastMoveTime: 0 };\n\n  this.opts = opts;\n  this.config = config$$1;\n  drawCharts.call(this, opts.type, opts, config$$1, this.context);\n};\n\nuCharts.prototype.updateData = function () {\n  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  this.opts = assign({}, this.opts, data);\n  this.opts.updateData = true;\n  var scrollPosition = data.scrollPosition || 'current';\n  switch (scrollPosition) {\n    case 'current':\n      //this.opts._scrollDistance_ = this.scrollOption.currentOffset;\n      break;\n    case 'left':\n      this.opts._scrollDistance_ = 0;\n      this.scrollOption = {\n        currentOffset: 0,\n        startTouchX: 0,\n        distance: 0,\n        lastMoveTime: 0 };\n\n      break;\n    case 'right':\n      var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),yAxisWidth = _calYAxisData.yAxisWidth;\n      this.config.yAxisWidth = yAxisWidth;\n      var offsetLeft = 0;\n      var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),xAxisPoints = _getXAxisPoints0.xAxisPoints,\n      startX = _getXAxisPoints0.startX,\n      endX = _getXAxisPoints0.endX,\n      eachSpacing = _getXAxisPoints0.eachSpacing;\n      var totalWidth = eachSpacing * (xAxisPoints.length - 1);\n      var screenWidth = endX - startX;\n      offsetLeft = screenWidth - totalWidth;\n      this.scrollOption = {\n        currentOffset: offsetLeft,\n        startTouchX: offsetLeft,\n        distance: 0,\n        lastMoveTime: 0 };\n\n      this.opts._scrollDistance_ = offsetLeft;\n      break;}\n\n  drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n};\n\nuCharts.prototype.zoom = function () {\n  var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount;\n  if (this.opts.enableScroll !== true) {\n    __f__(\"log\", '[uCharts] 请启用滚动条后使用', \" at uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js:6386\");\n    return;\n  }\n  //当前屏幕中间点\n  var centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(this.opts.xAxis.itemCount / 2);\n  this.opts.animation = false;\n  this.opts.xAxis.itemCount = val.itemCount;\n  //重新计算x轴偏移距离\n  var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),\n  yAxisWidth = _calYAxisData.yAxisWidth;\n  this.config.yAxisWidth = yAxisWidth;\n  var offsetLeft = 0;\n  var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\n  xAxisPoints = _getXAxisPoints0.xAxisPoints,\n  startX = _getXAxisPoints0.startX,\n  endX = _getXAxisPoints0.endX,\n  eachSpacing = _getXAxisPoints0.eachSpacing;\n  var centerLeft = eachSpacing * centerPoint;\n  var screenWidth = endX - startX;\n  var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);\n  offsetLeft = screenWidth / 2 - centerLeft;\n  if (offsetLeft > 0) {\n    offsetLeft = 0;\n  }\n  if (offsetLeft < MaxLeft) {\n    offsetLeft = MaxLeft;\n  }\n  this.scrollOption = {\n    currentOffset: offsetLeft,\n    startTouchX: offsetLeft,\n    distance: 0,\n    lastMoveTime: 0 };\n\n  this.opts._scrollDistance_ = offsetLeft;\n  drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n};\n\nuCharts.prototype.stopAnimation = function () {\n  this.animationInstance && this.animationInstance.stop();\n};\n\nuCharts.prototype.addEventListener = function (type, listener) {\n  this.uevent.addEventListener(type, listener);\n};\n\nuCharts.prototype.delEventListener = function (type) {\n  this.uevent.delEventListener(type);\n};\n\nuCharts.prototype.getCurrentDataIndex = function (e) {\n  var touches = null;\n  if (e.changedTouches) {\n    touches = e.changedTouches[0];\n  } else {\n    touches = e.mp.changedTouches[0];\n  }\n  if (touches) {\n    var _touches$ = getTouches(touches, this.opts, e);\n    if (this.opts.type === 'pie' || this.opts.type === 'ring') {\n      return findPieChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y },\n      this.opts.chartData.pieData, this.opts);\n    } else if (this.opts.type === 'rose') {\n      return findRoseChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y },\n      this.opts.chartData.pieData, this.opts);\n    } else if (this.opts.type === 'radar') {\n      return findRadarChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y },\n      this.opts.chartData.radarData, this.opts.categories.length);\n    } else if (this.opts.type === 'funnel') {\n      return findFunnelChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y },\n      this.opts.chartData.funnelData);\n    } else if (this.opts.type === 'map') {\n      return findMapChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y },\n      this.opts);\n    } else if (this.opts.type === 'word') {\n      return findWordChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y },\n      this.opts.chartData.wordCloudData);\n    } else if (this.opts.type === 'bar') {\n      return findBarChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y },\n      this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));\n    } else {\n      return findCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y },\n      this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));\n    }\n  }\n  return -1;\n};\n\nuCharts.prototype.getLegendDataIndex = function (e) {\n  var touches = null;\n  if (e.changedTouches) {\n    touches = e.changedTouches[0];\n  } else {\n    touches = e.mp.changedTouches[0];\n  }\n  if (touches) {\n    var _touches$ = getTouches(touches, this.opts, e);\n    return findLegendIndex({\n      x: _touches$.x,\n      y: _touches$.y },\n    this.opts.chartData.legendData);\n  }\n  return -1;\n};\n\nuCharts.prototype.touchLegend = function (e) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var touches = null;\n  if (e.changedTouches) {\n    touches = e.changedTouches[0];\n  } else {\n    touches = e.mp.changedTouches[0];\n  }\n  if (touches) {\n    var _touches$ = getTouches(touches, this.opts, e);\n    var index = this.getLegendDataIndex(e);\n    if (index >= 0) {\n      if (this.opts.type == 'candle') {\n        this.opts.seriesMA[index].show = !this.opts.seriesMA[index].show;\n      } else {\n        this.opts.series[index].show = !this.opts.series[index].show;\n      }\n      this.opts.animation = option.animation ? true : false;\n      this.opts._scrollDistance_ = this.scrollOption.currentOffset;\n      drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n    }\n  }\n\n};\n\nuCharts.prototype.showToolTip = function (e) {var _this2 = this;\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var touches = null;\n  if (e.changedTouches) {\n    touches = e.changedTouches[0];\n  } else {\n    touches = e.mp.changedTouches[0];\n  }\n  if (!touches) {\n    __f__(\"log\", \"[uCharts] 未获取到event坐标信息\", \" at uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js:6540\");\n  }\n  var _touches$ = getTouches(touches, this.opts, e);\n  var currentOffset = this.scrollOption.currentOffset;\n  var opts = assign({}, this.opts, {\n    _scrollDistance_: currentOffset,\n    animation: false });\n\n  if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column' || this.opts.type === 'scatter' || this.opts.type === 'bubble') {\n    var current = this.getCurrentDataIndex(e);\n    var index = option.index == undefined ? current.index : option.index;\n    if (index > -1 || index.length > 0) {\n      var seriesData = getSeriesDataItem(this.opts.series, index, current.group);\n      if (seriesData.length !== 0) {\n        var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),\n        textList = _getToolTipData.textList,\n        offset = _getToolTipData.offset;\n        offset.y = _touches$.y;\n        opts.tooltip = {\n          textList: option.textList !== undefined ? option.textList : textList,\n          offset: option.offset !== undefined ? option.offset : offset,\n          option: option,\n          index: index };\n\n      }\n    }\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'bar') {\n    var current = this.getCurrentDataIndex(e);\n    var index = option.index == undefined ? current.index : option.index;\n    if (index > -1 || index.length > 0) {\n      var seriesData = getSeriesDataItem(this.opts.series, index, current.group);\n      if (seriesData.length !== 0) {\n        var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),\n        textList = _getToolTipData.textList,\n        offset = _getToolTipData.offset;\n        offset.x = _touches$.x;\n        opts.tooltip = {\n          textList: option.textList !== undefined ? option.textList : textList,\n          offset: option.offset !== undefined ? option.offset : offset,\n          option: option,\n          index: index };\n\n      }\n    }\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'mix') {\n    var current = this.getCurrentDataIndex(e);\n    var index = option.index == undefined ? current.index : option.index;\n    if (index > -1) {\n      var currentOffset = this.scrollOption.currentOffset;\n      var opts = assign({}, this.opts, {\n        _scrollDistance_: currentOffset,\n        animation: false });\n\n      var seriesData = getSeriesDataItem(this.opts.series, index);\n      if (seriesData.length !== 0) {\n        var _getMixToolTipData = getMixToolTipData(seriesData, this.opts, index, this.opts.categories, option),\n        textList = _getMixToolTipData.textList,\n        offset = _getMixToolTipData.offset;\n        offset.y = _touches$.y;\n        opts.tooltip = {\n          textList: option.textList ? option.textList : textList,\n          offset: option.offset !== undefined ? option.offset : offset,\n          option: option,\n          index: index };\n\n      }\n    }\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'candle') {\n    var current = this.getCurrentDataIndex(e);\n    var index = option.index == undefined ? current.index : option.index;\n    if (index > -1) {\n      var currentOffset = this.scrollOption.currentOffset;\n      var opts = assign({}, this.opts, {\n        _scrollDistance_: currentOffset,\n        animation: false });\n\n      var seriesData = getSeriesDataItem(this.opts.series, index);\n      if (seriesData.length !== 0) {\n        var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts, index, this.opts.categories, this.opts.extra.candle, option),\n        textList = _getToolTipData.textList,\n        offset = _getToolTipData.offset;\n        offset.y = _touches$.y;\n        opts.tooltip = {\n          textList: option.textList ? option.textList : textList,\n          offset: option.offset !== undefined ? option.offset : offset,\n          option: option,\n          index: index };\n\n      }\n    }\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose' || this.opts.type === 'funnel') {\n    var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n    if (index > -1) {\n      var opts = assign({}, this.opts, { animation: false });\n      var seriesData = assign({}, opts._series_[index]);\n      var textList = [{\n        text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,\n        color: seriesData.color }];\n\n      var offset = {\n        x: _touches$.x,\n        y: _touches$.y };\n\n      opts.tooltip = {\n        textList: option.textList ? option.textList : textList,\n        offset: option.offset !== undefined ? option.offset : offset,\n        option: option,\n        index: index };\n\n    }\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'map') {\n    var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n    if (index > -1) {\n      var opts = assign({}, this.opts, { animation: false });\n      var seriesData = assign({}, this.opts.series[index]);\n      seriesData.name = seriesData.properties.name;\n      var textList = [{\n        text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,\n        color: seriesData.color }];\n\n      var offset = {\n        x: _touches$.x,\n        y: _touches$.y };\n\n      opts.tooltip = {\n        textList: option.textList ? option.textList : textList,\n        offset: option.offset !== undefined ? option.offset : offset,\n        option: option,\n        index: index };\n\n    }\n    opts.updateData = false;\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'word') {\n    var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n    if (index > -1) {\n      var opts = assign({}, this.opts, { animation: false });\n      var seriesData = assign({}, this.opts.series[index]);\n      var textList = [{\n        text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,\n        color: seriesData.color }];\n\n      var offset = {\n        x: _touches$.x,\n        y: _touches$.y };\n\n      opts.tooltip = {\n        textList: option.textList ? option.textList : textList,\n        offset: option.offset !== undefined ? option.offset : offset,\n        option: option,\n        index: index };\n\n    }\n    opts.updateData = false;\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'radar') {\n    var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n    if (index > -1) {\n      var opts = assign({}, this.opts, { animation: false });\n      var seriesData = getSeriesDataItem(this.opts.series, index);\n      if (seriesData.length !== 0) {\n        var textList = seriesData.map(function (item) {\n          return {\n            text: option.formatter ? option.formatter(item, _this2.opts.categories[index], index, _this2.opts) : item.name + ': ' + item.data,\n            color: item.color };\n\n        });\n        var offset = {\n          x: _touches$.x,\n          y: _touches$.y };\n\n        opts.tooltip = {\n          textList: option.textList ? option.textList : textList,\n          offset: option.offset !== undefined ? option.offset : offset,\n          option: option,\n          index: index };\n\n      }\n    }\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n};\n\nuCharts.prototype.translate = function (distance) {\n  this.scrollOption = {\n    currentOffset: distance,\n    startTouchX: distance,\n    distance: 0,\n    lastMoveTime: 0 };\n\n  var opts = assign({}, this.opts, {\n    _scrollDistance_: distance,\n    animation: false });\n\n  drawCharts.call(this, this.opts.type, opts, this.config, this.context);\n};\n\nuCharts.prototype.scrollStart = function (e) {\n  var touches = null;\n  if (e.changedTouches) {\n    touches = e.changedTouches[0];\n  } else {\n    touches = e.mp.changedTouches[0];\n  }\n  var _touches$ = getTouches(touches, this.opts, e);\n  if (touches && this.opts.enableScroll === true) {\n    this.scrollOption.startTouchX = _touches$.x;\n  }\n};\n\nuCharts.prototype.scroll = function (e) {\n  if (this.scrollOption.lastMoveTime === 0) {\n    this.scrollOption.lastMoveTime = Date.now();\n  }\n  var Limit = this.opts.touchMoveLimit || 60;\n  var currMoveTime = Date.now();\n  var duration = currMoveTime - this.scrollOption.lastMoveTime;\n  if (duration < Math.floor(1000 / Limit)) return;\n  this.scrollOption.lastMoveTime = currMoveTime;\n  var touches = null;\n  if (e.changedTouches) {\n    touches = e.changedTouches[0];\n  } else {\n    touches = e.mp.changedTouches[0];\n  }\n  if (touches && this.opts.enableScroll === true) {\n    var _touches$ = getTouches(touches, this.opts, e);\n    var _distance;\n    _distance = _touches$.x - this.scrollOption.startTouchX;\n    var currentOffset = this.scrollOption.currentOffset;\n    var validDistance = calValidDistance(this, currentOffset + _distance, this.opts.chartData, this.config, this.opts);\n    this.scrollOption.distance = _distance = validDistance - currentOffset;\n    var opts = assign({}, this.opts, {\n      _scrollDistance_: currentOffset + _distance,\n      animation: false });\n\n    this.opts = opts;\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n    return currentOffset + _distance;\n  }\n};\n\nuCharts.prototype.scrollEnd = function (e) {\n  if (this.opts.enableScroll === true) {\n    var _scrollOption = this.scrollOption,\n    currentOffset = _scrollOption.currentOffset,\n    distance = _scrollOption.distance;\n    this.scrollOption.currentOffset = currentOffset + distance;\n    this.scrollOption.distance = 0;\n  }\n};var _default =\n\nuCharts;exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 10)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9qc19zZGsvdS1jaGFydHMvdS1jaGFydHMuanMiXSwibmFtZXMiOlsiY29uZmlnIiwidmVyc2lvbiIsInlBeGlzV2lkdGgiLCJ5QXhpc1NwbGl0IiwieEF4aXNIZWlnaHQiLCJ4QXhpc0xpbmVIZWlnaHQiLCJsZWdlbmRIZWlnaHQiLCJ5QXhpc1RpdGxlV2lkdGgiLCJwYWRkaW5nIiwicGl4ZWxSYXRpbyIsInJvdGF0ZSIsImNvbHVtZVBhZGRpbmciLCJmb250U2l6ZSIsImZvbnRDb2xvciIsImRhdGFQb2ludFNoYXBlIiwiY29sb3IiLCJsaW5lYXJDb2xvciIsInBpZUNoYXJ0TGluZVBhZGRpbmciLCJwaWVDaGFydFRleHRQYWRkaW5nIiwieEF4aXNUZXh0UGFkZGluZyIsInRpdGxlQ29sb3IiLCJ0aXRsZUZvbnRTaXplIiwic3VidGl0bGVDb2xvciIsInN1YnRpdGxlRm9udFNpemUiLCJ0b29sVGlwUGFkZGluZyIsInRvb2xUaXBCYWNrZ3JvdW5kIiwidG9vbFRpcE9wYWNpdHkiLCJ0b29sVGlwTGluZUhlaWdodCIsInJhZGFyTGFiZWxUZXh0TWFyZ2luIiwiZ2F1Z2VMYWJlbFRleHRNYXJnaW4iLCJhc3NpZ24iLCJ0YXJnZXQiLCJ2YXJBcmdzIiwiVHlwZUVycm9yIiwibGVuZ3RoIiwiZGVlcEFzc2lnbiIsIm9iajEiLCJvYmoyIiwia2V5IiwidG9TdHJpbmciLCJmb3JFYWNoIiwidmFsIiwidXRpbCIsInRvRml4ZWQiLCJudW0iLCJsaW1pdCIsImlzRmxvYXQiLCJhcHByb3hpbWF0ZWx5RXF1YWwiLCJudW0xIiwibnVtMiIsIk1hdGgiLCJhYnMiLCJpc1NhbWVTaWduIiwiaXNTYW1lWENvb3JkaW5hdGVBcmVhIiwicDEiLCJwMiIsIngiLCJpc0NvbGxpc2lvbiIsImVuZCIsInN0YXJ0Iiwid2lkdGgiLCJ5IiwiaGVpZ2h0IiwiZmxhZyIsImdldEg1T2Zmc2V0IiwiZSIsIm1wIiwiY2hhbmdlZFRvdWNoZXMiLCJwdXNoIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJsb25sYXQybWVyY2F0b3IiLCJsb25naXR1ZGUiLCJsYXRpdHVkZSIsIm1lcmNhdG9yIiwiQXJyYXkiLCJsb2ciLCJ0YW4iLCJQSSIsIm1lcmNhdG9yMmxvbmxhdCIsImxvbmxhdCIsImF0YW4iLCJleHAiLCJoZXhUb1JnYiIsImhleFZhbHVlIiwib3BjIiwicmd4IiwiaGV4IiwicmVwbGFjZSIsIm0iLCJyIiwiZyIsImIiLCJyZ2IiLCJleGVjIiwicGFyc2VJbnQiLCJmaW5kUmFuZ2UiLCJ0eXBlIiwiaXNOYU4iLCJFcnJvciIsIm11bHRpcGxlIiwiY2VpbCIsImZsb29yIiwiY2FsQ2FuZGxlTUEiLCJkYXlBcnIiLCJuYW1lQXJyIiwiY29sb3JBcnIiLCJrZGF0YSIsInNlcmllc1RlbXAiLCJrIiwic2VyaWVzSXRlbSIsImRhdGEiLCJuYW1lIiwiaSIsImxlbiIsInN1bSIsImoiLCJjYWxWYWxpZERpc3RhbmNlIiwic2VsZiIsImRpc3RhbmNlIiwiY2hhcnREYXRhIiwib3B0cyIsImRhdGFDaGFydEFyZWFXaWR0aCIsImFyZWEiLCJkYXRhQ2hhcnRXaWR0aCIsImVhY2hTcGFjaW5nIiwieEF4aXNEYXRhIiwieEF4aXNQb2ludHMiLCJ2YWxpZERpc3RhbmNlIiwidWV2ZW50IiwidHJpZ2dlciIsInNjcm9sbE9wdGlvbiIsInBvc2l0aW9uIiwieEF4aXMiLCJzY3JvbGxQb3NpdGlvbiIsImlzSW5BbmdsZVJhbmdlIiwiYW5nbGUiLCJzdGFydEFuZ2xlIiwiZW5kQW5nbGUiLCJhZGp1c3QiLCJjYWxSb3RhdGVUcmFuc2xhdGUiLCJoIiwieHYiLCJ5diIsInRyYW5zWCIsInNxcnQiLCJ0cmFuc1kiLCJjcmVhdGVDdXJ2ZUNvbnRyb2xQb2ludHMiLCJwb2ludHMiLCJpc05vdE1pZGRsZVBvaW50IiwibWF4IiwibWluIiwiaXNOb3RNaWRkbGVQb2ludFgiLCJhIiwicEF4IiwicEF5IiwicEJ4IiwicEJ5IiwibGFzdCIsImN0ckEiLCJjdHJCIiwiY29udmVydENvb3JkaW5hdGVPcmlnaW4iLCJjZW50ZXIiLCJhdm9pZENvbGxpc2lvbiIsIm9iaiIsImZpeFBpZVNlcmllcyIsInNlcmllcyIsInBpZVNlcmllc0FyciIsImNvbnN0cnVjdG9yIiwiaW5kZXhPZiIsIl9waWVTZXJpZXNfIiwib2xkc2VyaWVzIiwiZm9ybWF0dGVyIiwidmFsdWUiLCJmaWxsU2VyaWVzIiwiaW5kZXgiLCJpdGVtIiwibGluZWFySW5kZXgiLCJzaG93IiwicG9pbnRTaGFwZSIsImxlZ2VuZFNoYXBlIiwiZmlsbEN1c3RvbUNvbG9yIiwibGluZWFyVHlwZSIsImN1c3RvbUNvbG9yIiwibmV3Y29sb3IiLCJjaGF6aGkiLCJnZXREYXRhUmFuZ2UiLCJtaW5EYXRhIiwibWF4RGF0YSIsInJhbmdlIiwibWluUmFuZ2UiLCJtYXhSYW5nZSIsIm1lYXN1cmVUZXh0IiwidGV4dCIsImNvbnRleHQiLCJTdHJpbmciLCJ1bmRlZmluZWQiLCJzZXRGb250U2l6ZSIsInNwbGl0IiwidGVzdCIsImRhdGFDb21iaW5lIiwicmVkdWNlIiwiY29uY2F0IiwiZGF0YUNvbWJpbmVTdGFjayIsImdldFRvdWNoZXMiLCJ0b3VjaGVzIiwiY2xpZW50WCIsInBpeCIsInBhZ2VZIiwiY3VycmVudFRhcmdldCIsIm9mZnNldFRvcCIsImdldFNlcmllc0RhdGFJdGVtIiwiZ3JvdXAiLCJuZXdTZXJpZXMiLCJpbmRleElzQXJyIiwidGVtcFNlcmllcyIsImZpbHRlclNlcmllcyIsInRtcGluZGV4Iiwic3R5bGUiLCJkaXNhYmxlTGVnZW5kIiwiZ2V0TWF4VGV4dExpc3RMZW5ndGgiLCJsaXN0IiwibGVuZ3RoTGlzdCIsIm1hcCIsImFwcGx5IiwiZ2V0UmFkYXJDb29yZGluYXRlU2VyaWVzIiwiZWFjaEFuZ2xlIiwiQ29vcmRpbmF0ZVNlcmllcyIsImdldFRvb2xUaXBEYXRhIiwic2VyaWVzRGF0YSIsImNhdGVnb3JpZXMiLCJvcHRpb24iLCJhcmd1bWVudHMiLCJjYWxQb2ludHMiLCJmaWx0ZXJQb2ludHMiLCJ0ZXh0TGlzdCIsInRpdGxlVGV4dCIsIm9mZnNldCIsInJvdW5kIiwiZ2V0TWl4VG9vbFRpcERhdGEiLCJmaWx0ZXIiLCJnZXRDYW5kbGVUb29sVGlwRGF0YSIsImV4dHJhIiwidXBDb2xvciIsInVwRmlsbCIsImRvd25Db2xvciIsImRvd25GaWxsIiwidGV4dDEiLCJ0ZXh0MiIsInRleHQzIiwidGV4dDQiLCJ2YWxpZENhbFBvaW50cyIsImZpbmRDdXJyZW50SW5kZXgiLCJjdXJyZW50UG9pbnRzIiwiY3VycmVudCIsInNwYWNpbmciLCJib3VuZGFyeUdhcCIsImlzSW5FeGFjdENoYXJ0QXJlYSIsInRpbWVQb2ludHMiLCJwb2ludFZhbHVlIiwicG9pbnRJbmRleCIsIm1pblZhbHVlIiwiZmluZEJhckNoYXJ0Q3VycmVudEluZGV4IiwieUF4aXNQb2ludHMiLCJmaW5kTGVnZW5kSW5kZXgiLCJsZWdlbmREYXRhIiwiY3VycmVudEluZGV4IiwiZ2FwIiwiaXNJbkV4YWN0TGVnZW5kQXJlYSIsImZpbmRSYWRhckNoYXJ0Q3VycmVudEluZGV4IiwicmFkYXJEYXRhIiwiY291bnQiLCJlYWNoQW5nbGVBcmVhIiwiaXNJbkV4YWN0UGllQ2hhcnRBcmVhIiwicmFkaXVzIiwiZml4QW5nbGUiLCJhdGFuMiIsImFuZ2xlTGlzdCIsInJhbmdlU3RhcnQiLCJyYW5nZUVuZCIsImZpbmRGdW5uZWxDaGFydEN1cnJlbnRJbmRleCIsImZ1bm5lbERhdGEiLCJmdW5uZWxBcmVhIiwiZmluZFdvcmRDaGFydEN1cnJlbnRJbmRleCIsIndvcmREYXRhIiwiZmluZE1hcENoYXJ0Q3VycmVudEluZGV4IiwiY0RhdGEiLCJtYXBEYXRhIiwidG1wIiwicG9pbnRUb0Nvb3JkaW5hdGUiLCJib3VuZHMiLCJzY2FsZSIsInhvZmZzZXQiLCJ5b2Zmc2V0IiwicG9pIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImlzUG9pV2l0aGluUG9seSIsImZpbmRSb3NlQ2hhcnRDdXJyZW50SW5kZXgiLCJwaWVEYXRhIiwiZ2V0Um9zZURhdGFQb2ludHMiLCJfc2VyaWVzXyIsInJvc2UiLCJvZmZzZXRBbmdsZSIsIl9zdGFydF8iLCJfcm9zZV9wcm9wb3J0aW9uXyIsImZpbmRQaWVDaGFydEN1cnJlbnRJbmRleCIsImdldFBpZURhdGFQb2ludHMiLCJwaWUiLCJyaW5nIiwiX3Byb3BvcnRpb25fIiwicG93Iiwic3BsaXRQb2ludHMiLCJlYWNoU2VyaWVzIiwibmV3UG9pbnRzIiwiaXRlbXMiLCJjb25uZWN0TnVsbHMiLCJjYWxMZWdlbmREYXRhIiwid2hvbGVXaWR0aCIsIndob2xlSGVpZ2h0Iiwid2lkdGhBcnIiLCJoZWlnaHRBcnIiLCJsZWdlbmQiLCJtYXJnaW4iLCJzaGFwZVdpZHRoIiwic2hhcGVSaWdodCIsImxpbmVIZWlnaHQiLCJsZWdlbmRMaXN0Iiwid2lkdGhDb3VudCIsIndpZHRoQ291bnRBcnIiLCJjdXJyZW50Um93IiwiaXRlbVdpZHRoIiwiaXRlbUdhcCIsImxlZ2VuZFdpZHRoIiwiZmxvYXQiLCJtYXhIZWlnaHQiLCJtYXhMZW5ndGgiLCJsaW5lTnVtIiwidGVtcCIsInNsaWNlIiwibWF4V2lkdGgiLCJjYWxDYXRlZ29yaWVzRGF0YSIsInJlc3VsdCIsImNhdGVnb3JpZXNUZXh0TGVudGgiLCJtYXhUZXh0TGVuZ3RoIiwicm90YXRlTGFiZWwiLCJzaW4iLCJnZXRYQXhpc1RleHRMaXN0Iiwic3RhY2siLCJzb3J0ZWQiLCJzdWJpdGVtIiwicmFuZ2VTcGFuIiwiZWFjaFJhbmdlIiwic3BsaXROdW1iZXIiLCJjYWxYQXhpc0RhdGEiLCJjb2x1bW5zdHlsZSIsImJhciIsInJhbmdlcyIsInJhbmdlc0Zvcm1hdCIsInhBeGlzU2NhbGVWYWx1ZXMiLCJPYmplY3QiLCJnZXRYQXhpc1BvaW50cyIsInRleHRMZW5ndGgiLCJkaXNhYmxlZCIsImdldFJhZGFyRGF0YVBvaW50cyIsInByb2Nlc3MiLCJyYWRhck9wdGlvbiIsInJhZGFyIiwiZWFjaCIsImxpc3RJdGVtIiwicHJvcG9ydGlvbiIsImNvcyIsIl9yYWRpdXNfIiwiZ2V0RnVubmVsRGF0YVBvaW50cyIsInNvcnQiLCJyZXZlcnNlIiwibWluUmFkaXVzIiwiZGF0YUFyciIsInJhZGl1c0xlbmd0aCIsImdldEFyY2JhckRhdGFQb2ludHMiLCJhcmNiYXJPcHRpb24iLCJ0b3RhbEFuZ2xlIiwiZ2V0R2F1Z2VBeGlzUG9pbnRzIiwidGVtcFN0YXJ0QW5nbGUiLCJfc3RhcnRBbmdsZV8iLCJfZW5kQW5nbGVfIiwiZ2V0R2F1Z2VEYXRhUG9pbnRzIiwiZ2F1Z2VPcHRpb24iLCJwb2ludGVyIiwiX29sZEFuZ2xlXyIsIm9sZEFuZ2xlIiwib2xkRGF0YSIsImdldFBpZVRleHRNYXhMZW5ndGgiLCJ0ZXh0U2l6ZSIsImZpeENvbHVtZURhdGEiLCJjb2x1bW5MZW4iLCJzZXJpZXNHYXAiLCJjYXRlZ29yeUdhcCIsIm1peCIsImNvbHVtbiIsImZpeEJhckRhdGEiLCJmaXhDb2x1bWVNZXRlckRhdGEiLCJib3JkZXIiLCJmaXhDb2x1bWVTdGFja0RhdGEiLCJpbmRleG4iLCJmaXhCYXJTdGFja0RhdGEiLCJzcGFjaW5nVmFsaWQiLCJkYXRhQ291bnQiLCJlbmFibGVTY3JvbGwiLCJpdGVtQ291bnQiLCJzdGFydFgiLCJlbmRYIiwiZ2V0Q2FuZGxlRGF0YVBvaW50cyIsInZhbGlkSGVpZ2h0IiwiY1BvaW50cyIsImluZGV4cyIsInBvaW50IiwiZ2V0RGF0YVBvaW50cyIsInZhbGlkV2lkdGgiLCJ4cmFuZ2VzIiwieG1pblJhbmdlIiwieG1heFJhbmdlIiwic2hpZnQiLCJwb3AiLCJ0IiwiZ2V0QmFyRGF0YVBvaW50cyIsImdldFN0YWNrRGF0YVBvaW50cyIsInNlcmllc0luZGV4Iiwic3RhY2tTZXJpZXMiLCJ2YWx1ZTAiLCJoZWlnaHQwIiwiaGVpZ2h0YyIsInkwIiwiZ2V0QmFyU3RhY2tEYXRhUG9pbnRzIiwieDAiLCJnZXRZQXhpc1RleHRMaXN0IiwieURhdGEiLCJkYXRhUmFuZ2UiLCJ5QXhpcyIsImNhbFlBeGlzRGF0YSIsIllMZW5ndGgiLCJyYW5nZXNBcnIiLCJyYW5nZXNGb3JtYXRBcnIiLCJ5QXhpc1dpZHRoQXJyIiwidW5pdCIsInRvZml4IiwieUF4aXNGb250U2l6ZXMiLCJjYWxpYnJhdGlvbiIsInlBeGlzRm9udFNpemUiLCJjYWxUb29sdGlwWUF4aXNEYXRhIiwieUF4aXNEYXRhIiwibWluQXhpcyIsIm1heFZhbCIsIm1pblZhbCIsImNhbE1hcmtMaW5lRGF0YSIsInlBeGlzSW5kZXgiLCJjb250ZXh0Um90YXRlIiwicm90YXRlTG9jayIsInRyYW5zbGF0ZSIsIl9yb3RhdGVfIiwiZHJhd1BvaW50U2hhcGUiLCJzaGFwZSIsImJlZ2luUGF0aCIsImRhdGFQb2ludFNoYXBlVHlwZSIsInNldFN0cm9rZVN0eWxlIiwic2V0RmlsbFN0eWxlIiwiYmFja2dyb3VuZCIsInNldExpbmVXaWR0aCIsIm1vdmVUbyIsImxpbmVUbyIsImFyYyIsInJlY3QiLCJjbG9zZVBhdGgiLCJmaWxsIiwic3Ryb2tlIiwiZHJhd1JpbmdUaXRsZSIsInRpdGxlZm9udFNpemUiLCJ0aXRsZSIsInN1YnRpdGxlZm9udFNpemUiLCJzdWJ0aXRsZSIsInRpdGxlRm9udENvbG9yIiwic3VidGl0bGVGb250Q29sb3IiLCJ0aXRsZUhlaWdodCIsInN1YnRpdGxlSGVpZ2h0IiwidGV4dFdpZHRoIiwic3RhcnRZIiwiZmlsbFRleHQiLCJfdGV4dFdpZHRoIiwiX3N0YXJ0WCIsIl9zdGFydFkiLCJkcmF3UG9pbnRUZXh0IiwidGV4dE9mZnNldCIsInRleHRDb2xvciIsImZvcm1hdFZhbCIsInNldFRleHRBbGlnbiIsImRyYXdCYXJQb2ludFRleHQiLCJkcmF3R2F1Z2VMYWJlbCIsImNlbnRlclBvc2l0aW9uIiwibGFiZWxPZmZzZXQiLCJzcGxpdEFuZ2xlIiwic3BsaXRMaW5lIiwidG90YWxOdW1iZXIiLCJlbmROdW1iZXIiLCJzdGFydE51bWJlciIsIm5vd0FuZ2xlIiwibm93TnVtYmVyIiwicG9zIiwibGFiZWxUZXh0IiwibGFiZWxDb2xvciIsImRyYXdSYWRhckxhYmVsIiwicG9zUmVsYXRpdmVDYW52YXMiLCJkcmF3UGllVGV4dCIsImxpbmVSYWRpdXMiLCJ0ZXh0T2JqZWN0Q29sbGVjdGlvbiIsImxhc3RUZXh0T2JqZWN0Iiwic2VyaWVzQ29udmVydCIsIm9yZ2luWDEiLCJvcmdpblkxIiwib3JnaW5YMiIsIm9yZ2luWTIiLCJvcmdpblgzIiwib3JnaW5ZMyIsInRleHRPYmplY3QiLCJsaW5lU3RhcnQiLCJsaW5lRW5kIiwibGluZVN0YXJ0UG9pc3Rpb24iLCJsaW5lRW5kUG9pc3Rpb24iLCJ0ZXh0UG9zaXRpb24iLCJjdXJ2ZVN0YXJ0WCIsInRleHRTdGFydFgiLCJxdWFkcmF0aWNDdXJ2ZVRvIiwiZHJhd1Rvb2xUaXBTcGxpdExpbmUiLCJ0b29sVGlwT3B0aW9uIiwidG9vbHRpcCIsImdyaWRUeXBlIiwiZGFzaExlbmd0aCIsImVuZFkiLCJzZXRMaW5lRGFzaCIsImdyaWRDb2xvciIsInhBeGlzTGFiZWwiLCJ0ZXh0WCIsInRleHRZIiwibGFiZWxCZ0NvbG9yIiwibGFiZWxCZ09wYWNpdHkiLCJsYWJlbEZvbnRDb2xvciIsImRyYXdNYXJrTGluZSIsIm1hcmtMaW5lT3B0aW9uIiwibWFya0xpbmUiLCJsaW5lQ29sb3IiLCJzaG93TGFiZWwiLCJiZ1N0YXJ0WCIsImJnRW5kWCIsImJnV2lkdGgiLCJkcmF3VG9vbFRpcEhvcml6ZW50YWxMaW5lIiwieUF4aXNMYWJlbCIsInRTdGFydExlZnQiLCJ0U3RhcnRSaWdodCIsImRyYXdUb29sVGlwU3BsaXRBcmVhIiwiYWN0aXZlQmdDb2xvciIsImFjdGl2ZUJnT3BhY2l0eSIsImRyYXdCYXJUb29sVGlwU3BsaXRBcmVhIiwiZHJhd1Rvb2xUaXAiLCJzaG93Qm94Iiwic2hvd0Fycm93Iiwic2hvd0NhdGVnb3J5IiwiYmdDb2xvciIsImJnT3BhY2l0eSIsImJvcmRlckNvbG9yIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJPcGFjaXR5IiwidW5zaGlmdCIsImxlZ2VuZE1hcmdpblJpZ2h0IiwiYXJyb3dXaWR0aCIsImlzT3ZlclJpZ2h0Qm9yZGVyIiwidG9vbFRpcFdpZHRoIiwidG9vbFRpcEhlaWdodCIsIl9zY3JvbGxEaXN0YW5jZV8iLCJmaWxsUmVjdCIsImRyYXdDb2x1bW5EYXRhUG9pbnRzIiwiY29sdW1uT3B0aW9uIiwibWV0ZXJCb3JkZXIiLCJtZXRlckZpbGxDb2xvciIsImJhckJvcmRlckNpcmNsZSIsImJhckJvcmRlclJhZGl1cyIsImxpbmVhck9wYWNpdHkiLCJjb2xvclN0b3AiLCJzYXZlIiwibGVmdE51bSIsInJpZ2h0TnVtIiwidG9vbHRpcFBvaW50cyIsImZpbGxDb2xvciIsInN0cm9rZUNvbG9yIiwiZ3JkIiwiY3JlYXRlTGluZWFyR3JhZGllbnQiLCJhZGRDb2xvclN0b3AiLCJsZWZ0IiwidG9wIiwicjAiLCJyMSIsInIyIiwicjMiLCJkYXRhTGFiZWwiLCJyZXN0b3JlIiwiZHJhd0JhckRhdGFQb2ludHMiLCJoZWlnaCIsImRyYXdDYW5kbGVEYXRhUG9pbnRzIiwic2VyaWVzTUEiLCJjYW5kbGVPcHRpb24iLCJhdmVyYWdlIiwiY2FuZGxlIiwidXBMaW5lIiwiZG93bkxpbmUiLCJkYXkiLCJsZWZ0U3BhY2UiLCJyaWdodFNwYWNlIiwic3BsaXRQb2ludExpc3QiLCJzdGFydFBvaW50IiwiY3RybFBvaW50IiwiYmV6aWVyQ3VydmVUbyIsImRyYXdBcmVhRGF0YVBvaW50cyIsImFyZWFPcHRpb24iLCJvcGFjaXR5IiwiYWRkTGluZSIsImdyYWRpZW50IiwiZmlyc3RQb2ludCIsImxhc3RQb2ludCIsImxpbmVUeXBlIiwiZHJhd1NjYXR0ZXJEYXRhUG9pbnRzIiwic2NhdHRlck9wdGlvbiIsInNjYXR0ZXIiLCJkcmF3QnViYmxlRGF0YVBvaW50cyIsImJ1YmJsZU9wdGlvbiIsImJ1YmJsZSIsImRyYXdMaW5lRGF0YVBvaW50cyIsImxpbmVPcHRpb24iLCJsaW5lIiwiZHJhd01peERhdGFQb2ludHMiLCJjb2x1bW5JbmRleCIsImNvbHVtbkxlbmd0aCIsImFkZFBvaW50IiwiZHJhd1Rvb2xUaXBCcmlkZ2UiLCJob3JpemVudGFsTGluZSIsImRyYXdYQXhpcyIsInNjcm9sbFNob3ciLCJzY3JvbGxZIiwic2Nyb2xsU2NyZWVuV2lkdGgiLCJzY3JvbGxUb3RhbFdpZHRoIiwic2Nyb2xsV2lkdGgiLCJzY3JvbGxMZWZ0Iiwic2V0TGluZUNhcCIsInNjcm9sbEJhY2tncm91bmRDb2xvciIsInNjcm9sbENvbG9yIiwiZGlzYWJsZUdyaWQiLCJncmlkRXZhbCIsIm1heFhBeGlzTGlzdExlbmd0aCIsImxhYmVsQ291bnQiLCJyYXRpbyIsIm5ld0NhdGVnb3JpZXMiLCJjZ0xlbmd0aCIsInhBeGlzRm9udFNpemUiLCJfeEF4aXNUZXh0QW5nbGVfIiwieGl0ZW0iLCJzY3JvbGxIZWlnaHQiLCJfY2FsUm90YXRlVHJhbnNsYXRlIiwiYXhpc0xpbmUiLCJheGlzTGluZUNvbG9yIiwiZHJhd1lBeGlzR3JpZCIsInhBeGlzZWFjaFNwYWNpbmciLCJUb3RhbFdpZHRoIiwiZHJhd1lBeGlzIiwiZmlsbEVuZFkiLCJ0U3RhcnRDZW50ZXIiLCJ0ZXh0QWxpZ24iLCJ0bXBzdHJhdCIsImdhcHdpZHRoIiwic2hvd1RpdGxlIiwidGl0bGVPZmZzZXRYIiwidGl0bGVPZmZzZXRZIiwiZHJhd0xlZ2VuZCIsImxlZ2VuZEFyZWEiLCJiYWNrZ3JvdW5kQ29sb3IiLCJpdGVtTGlzdCIsImxpc3RJbmRleCIsImhpZGRlbkNvbG9yIiwiZm9udFRyYW5zIiwiZHJhd1BpZURhdGFQb2ludHMiLCJwaWVPcHRpb24iLCJhY3RpdmVPcGFjaXR5IiwiYWN0aXZlUmFkaXVzIiwibGFiZWxXaWR0aCIsInJpbmdXaWR0aCIsImN1c3RvbVJhZGl1cyIsImNlbnRlckNvbG9yIiwiX3BpZVRleHRNYXhMZW5ndGhfIiwibGluZUpvaW4iLCJmaWxsY29sb3IiLCJjcmVhdGVDaXJjdWxhckdyYWRpZW50IiwiY3JlYXRlUmFkaWFsR3JhZGllbnQiLCJpbm5lclBpZVdpZHRoIiwidmFsaWQiLCJkcmF3Um9zZURhdGFQb2ludHMiLCJyb3NlT3B0aW9uIiwiZHJhd0FyY2JhckRhdGFQb2ludHMiLCJhcmNiYXIiLCJjZW50ZXJYIiwiY2VudGVyWSIsImRyYXdHYXVnZURhdGFQb2ludHMiLCJmaXhSYWRpdXMiLCJjaGlsZE51bWJlciIsImNoaWxkV2lkdGgiLCJnYXVnZSIsImlubmVyUmFkaXVzIiwicGllUmFkaXVzIiwiY2hpbGRBbmdsZSIsInByb2MiLCJwb2ludGVyUmFkaXVzIiwiZ3JhZGllbnQzIiwiZWFjaENhdGVnb3JpZXMiLCJjaGlsZGVuZFgiLCJkcmF3UmFkYXJEYXRhUG9pbnRzIiwiZ3JpZENvdW50IiwiY29vcmRpbmF0ZUFuZ2xlIiwieHIiLCJ5ciIsIl9sb29wIiwic3RhcnRQb3MiLCJyYWRhckRhdGFQb2ludHMiLCJub3JtYWxJbnQiLCJpdGVyIiwiYXJyIiwicmFuZG9tIiwiY29sbGlzaW9uTmV3IiwiaXNJbiIsImdldEJvdW5kaW5nQm94IiwiY29vcmRzIiwieE1pbiIsInhNYXgiLCJ5TWluIiwieU1heCIsImNvb3JkYSIsImNvb3JkaW5hdGVUb1BvaW50IiwicG9pbnRZIiwicG9pbnRYIiwiaXNSYXlJbnRlcnNlY3RzU2VnbWVudCIsInNfcG9pIiwiZV9wb2kiLCJ4c2VnIiwicG9seSIsInNpbnNjIiwiZXBvbHkiLCJkcmF3TWFwRGF0YVBvaW50cyIsIm1hcE9wdGlvbiIsImZpbGxPcGFjaXR5IiwiYWN0aXZlQm9yZGVyQ29sb3IiLCJhY3RpdmVGaWxsQ29sb3IiLCJhY3RpdmVGaWxsT3BhY2l0eSIsInhTY2FsZSIsInlTY2FsZSIsImdhb3NpIiwiY2VudGVyUG9pbnQiLCJwcm9wZXJ0aWVzIiwiY2VudHJvaWQiLCJkcmF3IiwiZ2V0V29yZENsb3VkUG9pbnQiLCJ0SGVpZ2h0IiwidFdpZHRoIiwiYnJlYWtudW0iLCJTcGluIiwiaXNTcGluIiwiYXJlYXYiLCJkcmF3V29yZENsb3VkRGF0YVBvaW50cyIsIndvcmRPcHRpb24iLCJhdXRvQ29sb3JzIiwid29yZCIsIndvcmRDbG91ZERhdGEiLCJzdHJva2VUZXh0IiwiZHJhd0Z1bm5lbERhdGFQb2ludHMiLCJmdW5uZWxPcHRpb24iLCJhY3RpdmVXaWR0aCIsImxhYmVsQWxpZ24iLCJmdW5uZWwiLCJkcmF3RnVubmVsVGV4dCIsImRyYXdDYW52YXMiLCJUaW1pbmciLCJlYXNlSW4iLCJlYXNlT3V0IiwiZWFzZUluT3V0IiwibGluZWFyIiwiQW5pbWF0aW9uIiwiaXNTdG9wIiwiZHVyYXRpb24iLCJ0aW1pbmciLCJkZWxheSIsImNyZWF0ZUFuaW1hdGlvbkZyYW1lIiwic2V0VGltZW91dCIsInN0ZXAiLCJ0aW1lU3RhbXAiLCJEYXRlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYW5pbWF0aW9uRnJhbWUiLCJzdGFydFRpbWVTdGFtcCIsIl9zdGVwIiwidGltZXN0YW1wIiwib25Qcm9jZXNzIiwib25BbmltYXRpb25GaW5pc2giLCJ0aW1pbmdGdW5jdGlvbiIsImJpbmQiLCJwcm90b3R5cGUiLCJzdG9wIiwiZHJhd0NoYXJ0cyIsIl90aGlzIiwiYW5pbWF0aW9uIiwiYW5pbWF0aW9uSW5zdGFuY2UiLCJfY2FsTGVnZW5kRGF0YSIsIl9jYWxZQXhpc0RhdGEiLCJtYXhUaXRsZUhlaWdodCIsInJpZ2h0SW5kZXgiLCJsZWZ0SW5kZXgiLCJfY2FsQ2F0ZWdvcmllc0RhdGEiLCJjYXRlZ29yaWVzRGF0YSIsInNjcm9sbEFsaWduIiwib2Zmc2V0TGVmdCIsInRvdGFsV2lkdGgiLCJzY3JlZW5XaWR0aCIsImN1cnJlbnRPZmZzZXQiLCJzdGFydFRvdWNoWCIsImxhc3RNb3ZlVGltZSIsImNsZWFyUmVjdCIsIl9kcmF3TGluZURhdGFQb2ludHMiLCJlbmFibGVNYXJrTGluZSIsIl9kcmF3U2NhdHRlckRhdGFQb2ludHMiLCJfZHJhd0J1YmJsZURhdGFQb2ludHMiLCJfZHJhd01peERhdGFQb2ludHMiLCJfZHJhd0NvbHVtbkRhdGFQb2ludHMiLCJfZHJhd0JhckRhdGFQb2ludHMiLCJfZHJhd0FyZWFEYXRhUG9pbnRzIiwiYXJjYmFyRGF0YSIsImdhdWdlRGF0YSIsIl9kcmF3Q2FuZGxlRGF0YVBvaW50cyIsInVDaGFydHNFdmVudCIsImV2ZW50cyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5lciIsImRlbEV2ZW50TGlzdGVuZXIiLCJfbGVuIiwiYXJncyIsIl9rZXkiLCJwYXJhbXMiLCJ1Q2hhcnRzIiwiY2FudmFzMmQiLCJjb25maWckJDEiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJ0ZW1wV2lkdGgiLCJ0ZW1wSGVpZ2h0Iiwic3Ryb2tlU3R5bGUiLCJsaW5lV2lkdGgiLCJsaW5lQ2FwIiwiZm9udCIsImZpbGxTdHlsZSIsImNhbGwiLCJ1cGRhdGVEYXRhIiwiX2dldFhBeGlzUG9pbnRzMCIsInpvb20iLCJjZW50ZXJMZWZ0IiwiTWF4TGVmdCIsInN0b3BBbmltYXRpb24iLCJnZXRDdXJyZW50RGF0YUluZGV4IiwiX3RvdWNoZXMkIiwiZ2V0TGVnZW5kRGF0YUluZGV4IiwidG91Y2hMZWdlbmQiLCJzaG93VG9vbFRpcCIsIl9nZXRUb29sVGlwRGF0YSIsIl9nZXRNaXhUb29sVGlwRGF0YSIsInNjcm9sbFN0YXJ0Iiwic2Nyb2xsIiwibm93IiwiTGltaXQiLCJ0b3VjaE1vdmVMaW1pdCIsImN1cnJNb3ZlVGltZSIsIl9kaXN0YW5jZSIsInNjcm9sbEVuZCIsIl9zY3JvbGxPcHRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFJQSxNQUFNLEdBQUc7QUFDWEMsU0FBTyxFQUFFLGlCQURFO0FBRVhDLFlBQVUsRUFBRSxFQUZEO0FBR1hDLFlBQVUsRUFBRSxDQUhEO0FBSVhDLGFBQVcsRUFBRSxFQUpGO0FBS1hDLGlCQUFlLEVBQUUsRUFMTjtBQU1YQyxjQUFZLEVBQUUsRUFOSDtBQU9YQyxpQkFBZSxFQUFFLEVBUE47QUFRWEMsU0FBTyxFQUFFLENBQUMsRUFBRCxFQUFLLEVBQUwsRUFBUyxFQUFULEVBQWEsRUFBYixDQVJFO0FBU1hDLFlBQVUsRUFBRSxDQVREO0FBVVhDLFFBQU0sRUFBRSxLQVZHO0FBV1hDLGVBQWEsRUFBRSxDQVhKO0FBWVhDLFVB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L0J0RSxlQUFTLEVBQUUsS0FGb0IsRUFBaEIsQ0FBakI7O0FBSUYsU0FBS25yQixJQUFMLEdBQVlBLElBQVo7QUFDRWlyQixjQUFVLENBQUNvRCxJQUFYLENBQWdCLElBQWhCLEVBQXNCcnVCLElBQUksQ0FBQ3hCLElBQTNCLEVBQWlDd0IsSUFBakMsRUFBdUMsS0FBS3pILE1BQTVDLEVBQW9ELEtBQUtrTSxPQUF6RDtBQUNBLFdBQU91bkIsYUFBYSxHQUFHeUQsU0FBdkI7QUFDRDtBQUNGLENBOUJEOztBQWdDQWpDLE9BQU8sQ0FBQ3pDLFNBQVIsQ0FBa0IyRSxTQUFsQixHQUE4QixVQUFTbHpCLENBQVQsRUFBWTtBQUN4QyxNQUFJLEtBQUt3RCxJQUFMLENBQVUrUixZQUFWLEtBQTJCLElBQS9CLEVBQXFDO0FBQ25DLFFBQUk0ZCxhQUFhLEdBQUcsS0FBS2p2QixZQUF6QjtBQUNFc3JCLGlCQUFhLEdBQUcyRCxhQUFhLENBQUMzRCxhQURoQztBQUVFbHNCLFlBQVEsR0FBRzZ2QixhQUFhLENBQUM3dkIsUUFGM0I7QUFHQSxTQUFLWSxZQUFMLENBQWtCc3JCLGFBQWxCLEdBQWtDQSxhQUFhLEdBQUdsc0IsUUFBbEQ7QUFDQSxTQUFLWSxZQUFMLENBQWtCWixRQUFsQixHQUE2QixDQUE3QjtBQUNEO0FBQ0YsQ0FSRCxDOztBQVVlMHRCLE8iLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiB1Q2hhcnRzwq5cclxuICog6auY5oCn6IO96Leo5bmz5Y+w5Zu+6KGo5bqT77yM5pSv5oyBSDXjgIFBUFDjgIHlsI/nqIvluo/vvIjlvq7kv6Ev5pSv5LuY5a6dL+eZvuW6pi/lpLTmnaEvUVEvMzYw77yJ44CBVnVl44CBVGFyb+etieaUr+aMgWNhbnZhc+eahOahhuaetuW5s+WPsFxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEgUUlVTsKu56eL5LqRIGh0dHBzOi8vd3d3LnVjaGFydHMuY24gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgKCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgKVxyXG4gKiDlpI3liLbkvb/nlKjor7fkv53nlZnmnKzmrrXms6jph4rvvIzmhJ/osKLmlK/mjIHlvIDmupDvvIFcclxuICogXHJcbiAqIHVDaGFydHPCruWumOaWuee9keermVxyXG4gKiBodHRwczovL3d3dy51Q2hhcnRzLmNuXHJcbiAqIFxyXG4gKiDlvIDmupDlnLDlnYA6XHJcbiAqIGh0dHBzOi8vZ2l0ZWUuY29tL3VDaGFydHMvdUNoYXJ0c1xyXG4gKiBcclxuICogdW5pLWFwcOaPkuS7tuW4guWcuuWcsOWdgO+8mlxyXG4gKiBodHRwOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTI3MVxyXG4gKiBcclxuICovXHJcblxyXG4ndXNlIHN0cmljdCc7XHJcblxyXG52YXIgY29uZmlnID0ge1xyXG4gIHZlcnNpb246ICd2Mi4zLjctMjAyMjAxMjInLFxyXG4gIHlBeGlzV2lkdGg6IDE1LFxyXG4gIHlBeGlzU3BsaXQ6IDUsXHJcbiAgeEF4aXNIZWlnaHQ6IDIyLFxyXG4gIHhBeGlzTGluZUhlaWdodDogMjIsXHJcbiAgbGVnZW5kSGVpZ2h0OiAxNSxcclxuICB5QXhpc1RpdGxlV2lkdGg6IDE1LFxyXG4gIHBhZGRpbmc6IFsxMCwgMTAsIDEwLCAxMF0sXHJcbiAgcGl4ZWxSYXRpbzogMSxcclxuICByb3RhdGU6IGZhbHNlLFxyXG4gIGNvbHVtZVBhZGRpbmc6IDMsXHJcbiAgZm9udFNpemU6IDEzLFxyXG4gIGZvbnRDb2xvcjogJyM2NjY2NjYnLFxyXG4gIGRhdGFQb2ludFNoYXBlOiBbJ2NpcmNsZScsICdjaXJjbGUnLCAnY2lyY2xlJywgJ2NpcmNsZSddLFxyXG4gIGNvbG9yOiBbJyMxODkwRkYnLCAnIzkxQ0I3NCcsICcjRkFDODU4JywgJyNFRTY2NjYnLCAnIzczQzBERScsICcjM0NBMjcyJywgJyNGQzg0NTInLCAnIzlBNjBCNCcsICcjZWE3Y2NjJ10sXHJcbiAgbGluZWFyQ29sb3I6IFsnIzBFRTJGOCcsICcjMkJEQ0E4JywgJyNGQTdEOEQnLCAnI0VCODhFMicsICcjMkFFM0EwJywgJyMwRUUyRjgnLCAnI0VCODhFMicsICcjNjc3M0UzJywgJyNGNzhBODUnXSxcclxuICBwaWVDaGFydExpbmVQYWRkaW5nOiAxNSxcclxuICBwaWVDaGFydFRleHRQYWRkaW5nOiA1LFxyXG4gIHhBeGlzVGV4dFBhZGRpbmc6IDMsXHJcbiAgdGl0bGVDb2xvcjogJyMzMzMzMzMnLFxyXG4gIHRpdGxlRm9udFNpemU6IDIwLFxyXG4gIHN1YnRpdGxlQ29sb3I6ICcjOTk5OTk5JyxcclxuICBzdWJ0aXRsZUZvbnRTaXplOiAxNSxcclxuICB0b29sVGlwUGFkZGluZzogMyxcclxuICB0b29sVGlwQmFja2dyb3VuZDogJyMwMDAwMDAnLFxyXG4gIHRvb2xUaXBPcGFjaXR5OiAwLjcsXHJcbiAgdG9vbFRpcExpbmVIZWlnaHQ6IDIwLFxyXG4gIHJhZGFyTGFiZWxUZXh0TWFyZ2luOiAxMyxcclxuICBnYXVnZUxhYmVsVGV4dE1hcmdpbjogMTNcclxufTtcclxuXHJcbnZhciBhc3NpZ24gPSBmdW5jdGlvbih0YXJnZXQsIC4uLnZhckFyZ3MpIHtcclxuICBpZiAodGFyZ2V0ID09IG51bGwpIHtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1t1Q2hhcnRzXSBDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QnKTtcclxuICB9XHJcbiAgaWYgKCF2YXJBcmdzIHx8IHZhckFyZ3MubGVuZ3RoIDw9IDApIHtcclxuICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgfVxyXG4gIC8vIOa3seW6puWQiOW5tuWvueixoVxyXG4gIGZ1bmN0aW9uIGRlZXBBc3NpZ24ob2JqMSwgb2JqMikge1xyXG4gICAgZm9yIChsZXQga2V5IGluIG9iajIpIHtcclxuICAgICAgb2JqMVtrZXldID0gb2JqMVtrZXldICYmIG9iajFba2V5XS50b1N0cmluZygpID09PSBcIltvYmplY3QgT2JqZWN0XVwiID9cclxuICAgICAgICBkZWVwQXNzaWduKG9iajFba2V5XSwgb2JqMltrZXldKSA6IG9iajFba2V5XSA9IG9iajJba2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmoxO1xyXG4gIH1cclxuICB2YXJBcmdzLmZvckVhY2godmFsID0+IHtcclxuICAgIHRhcmdldCA9IGRlZXBBc3NpZ24odGFyZ2V0LCB2YWwpO1xyXG4gIH0pO1xyXG4gIHJldHVybiB0YXJnZXQ7XHJcbn07XHJcblxyXG52YXIgdXRpbCA9IHtcclxuICB0b0ZpeGVkOiBmdW5jdGlvbiB0b0ZpeGVkKG51bSwgbGltaXQpIHtcclxuICAgIGxpbWl0ID0gbGltaXQgfHwgMjtcclxuICAgIGlmICh0aGlzLmlzRmxvYXQobnVtKSkge1xyXG4gICAgICBudW0gPSBudW0udG9GaXhlZChsaW1pdCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVtO1xyXG4gIH0sXHJcbiAgaXNGbG9hdDogZnVuY3Rpb24gaXNGbG9hdChudW0pIHtcclxuICAgIHJldHVybiBudW0gJSAxICE9PSAwO1xyXG4gIH0sXHJcbiAgYXBwcm94aW1hdGVseUVxdWFsOiBmdW5jdGlvbiBhcHByb3hpbWF0ZWx5RXF1YWwobnVtMSwgbnVtMikge1xyXG4gICAgcmV0dXJuIE1hdGguYWJzKG51bTEgLSBudW0yKSA8IDFlLTEwO1xyXG4gIH0sXHJcbiAgaXNTYW1lU2lnbjogZnVuY3Rpb24gaXNTYW1lU2lnbihudW0xLCBudW0yKSB7XHJcbiAgICByZXR1cm4gTWF0aC5hYnMobnVtMSkgPT09IG51bTEgJiYgTWF0aC5hYnMobnVtMikgPT09IG51bTIgfHwgTWF0aC5hYnMobnVtMSkgIT09IG51bTEgJiYgTWF0aC5hYnMobnVtMikgIT09IG51bTI7XHJcbiAgfSxcclxuICBpc1NhbWVYQ29vcmRpbmF0ZUFyZWE6IGZ1bmN0aW9uIGlzU2FtZVhDb29yZGluYXRlQXJlYShwMSwgcDIpIHtcclxuICAgIHJldHVybiB0aGlzLmlzU2FtZVNpZ24ocDEueCwgcDIueCk7XHJcbiAgfSxcclxuICBpc0NvbGxpc2lvbjogZnVuY3Rpb24gaXNDb2xsaXNpb24ob2JqMSwgb2JqMikge1xyXG4gICAgb2JqMS5lbmQgPSB7fTtcclxuICAgIG9iajEuZW5kLnggPSBvYmoxLnN0YXJ0LnggKyBvYmoxLndpZHRoO1xyXG4gICAgb2JqMS5lbmQueSA9IG9iajEuc3RhcnQueSAtIG9iajEuaGVpZ2h0O1xyXG4gICAgb2JqMi5lbmQgPSB7fTtcclxuICAgIG9iajIuZW5kLnggPSBvYmoyLnN0YXJ0LnggKyBvYmoyLndpZHRoO1xyXG4gICAgb2JqMi5lbmQueSA9IG9iajIuc3RhcnQueSAtIG9iajIuaGVpZ2h0O1xyXG4gICAgdmFyIGZsYWcgPSBvYmoyLnN0YXJ0LnggPiBvYmoxLmVuZC54IHx8IG9iajIuZW5kLnggPCBvYmoxLnN0YXJ0LnggfHwgb2JqMi5lbmQueSA+IG9iajEuc3RhcnQueSB8fCBvYmoyLnN0YXJ0LnkgPCBvYmoxLmVuZC55O1xyXG4gICAgcmV0dXJuICFmbGFnO1xyXG4gIH1cclxufTtcclxuXHJcbi8v5YW85a65SDXngrnlh7vkuovku7ZcclxuZnVuY3Rpb24gZ2V0SDVPZmZzZXQoZSkge1xyXG4gIGUubXAgPSB7XHJcbiAgICBjaGFuZ2VkVG91Y2hlczogW11cclxuICB9O1xyXG4gIGUubXAuY2hhbmdlZFRvdWNoZXMucHVzaCh7XHJcbiAgICB4OiBlLm9mZnNldFgsXHJcbiAgICB5OiBlLm9mZnNldFlcclxuICB9KTtcclxuICByZXR1cm4gZTtcclxufVxyXG5cclxuLy8g57uP57qs5bqm6L2s5aKo5Y2h5omYXHJcbmZ1bmN0aW9uIGxvbmxhdDJtZXJjYXRvcihsb25naXR1ZGUsIGxhdGl0dWRlKSB7XHJcbiAgdmFyIG1lcmNhdG9yID0gQXJyYXkoMik7XHJcbiAgdmFyIHggPSBsb25naXR1ZGUgKiAyMDAzNzUwOC4zNCAvIDE4MDtcclxuICB2YXIgeSA9IE1hdGgubG9nKE1hdGgudGFuKCg5MCArIGxhdGl0dWRlKSAqIE1hdGguUEkgLyAzNjApKSAvIChNYXRoLlBJIC8gMTgwKTtcclxuICB5ID0geSAqIDIwMDM3NTA4LjM0IC8gMTgwO1xyXG4gIG1lcmNhdG9yWzBdID0geDtcclxuICBtZXJjYXRvclsxXSA9IHk7XHJcbiAgcmV0dXJuIG1lcmNhdG9yO1xyXG59XHJcblxyXG4vLyDloqjljaHmiZjovaznu4/nuqzluqZcclxuZnVuY3Rpb24gbWVyY2F0b3IybG9ubGF0KGxvbmdpdHVkZSwgbGF0aXR1ZGUpIHtcclxuICB2YXIgbG9ubGF0ID0gQXJyYXkoMilcclxuICB2YXIgeCA9IGxvbmdpdHVkZSAvIDIwMDM3NTA4LjM0ICogMTgwO1xyXG4gIHZhciB5ID0gbGF0aXR1ZGUgLyAyMDAzNzUwOC4zNCAqIDE4MDtcclxuICB5ID0gMTgwIC8gTWF0aC5QSSAqICgyICogTWF0aC5hdGFuKE1hdGguZXhwKHkgKiBNYXRoLlBJIC8gMTgwKSkgLSBNYXRoLlBJIC8gMik7XHJcbiAgbG9ubGF0WzBdID0geDtcclxuICBsb25sYXRbMV0gPSB5O1xyXG4gIHJldHVybiBsb25sYXQ7XHJcbn1cclxuXHJcbi8vIGhleCDovawgcmdiYVxyXG5mdW5jdGlvbiBoZXhUb1JnYihoZXhWYWx1ZSwgb3BjKSB7XHJcbiAgdmFyIHJneCA9IC9eIz8oW2EtZlxcZF0pKFthLWZcXGRdKShbYS1mXFxkXSkkL2k7XHJcbiAgdmFyIGhleCA9IGhleFZhbHVlLnJlcGxhY2Uocmd4LCBmdW5jdGlvbihtLCByLCBnLCBiKSB7XHJcbiAgICByZXR1cm4gciArIHIgKyBnICsgZyArIGIgKyBiO1xyXG4gIH0pO1xyXG4gIHZhciByZ2IgPSAvXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLmV4ZWMoaGV4KTtcclxuICB2YXIgciA9IHBhcnNlSW50KHJnYlsxXSwgMTYpO1xyXG4gIHZhciBnID0gcGFyc2VJbnQocmdiWzJdLCAxNik7XHJcbiAgdmFyIGIgPSBwYXJzZUludChyZ2JbM10sIDE2KTtcclxuICByZXR1cm4gJ3JnYmEoJyArIHIgKyAnLCcgKyBnICsgJywnICsgYiArICcsJyArIG9wYyArICcpJztcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZFJhbmdlKG51bSwgdHlwZSwgbGltaXQpIHtcclxuICBpZiAoaXNOYU4obnVtKSkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdbdUNoYXJ0c10gc2VyaWVz5pWw5o2u6ZyA5Li6TnVtYmVy5qC85byPJyk7XHJcbiAgfVxyXG4gIGxpbWl0ID0gbGltaXQgfHwgMTA7XHJcbiAgdHlwZSA9IHR5cGUgPyB0eXBlIDogJ3VwcGVyJztcclxuICB2YXIgbXVsdGlwbGUgPSAxO1xyXG4gIHdoaWxlIChsaW1pdCA8IDEpIHtcclxuICAgIGxpbWl0ICo9IDEwO1xyXG4gICAgbXVsdGlwbGUgKj0gMTA7XHJcbiAgfVxyXG4gIGlmICh0eXBlID09PSAndXBwZXInKSB7XHJcbiAgICBudW0gPSBNYXRoLmNlaWwobnVtICogbXVsdGlwbGUpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBudW0gPSBNYXRoLmZsb29yKG51bSAqIG11bHRpcGxlKTtcclxuICB9XHJcbiAgd2hpbGUgKG51bSAlIGxpbWl0ICE9PSAwKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gJ3VwcGVyJykge1xyXG4gICAgICBudW0rKztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG51bS0tO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gbnVtIC8gbXVsdGlwbGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbENhbmRsZU1BKGRheUFyciwgbmFtZUFyciwgY29sb3JBcnIsIGtkYXRhKSB7XHJcbiAgbGV0IHNlcmllc1RlbXAgPSBbXTtcclxuICBmb3IgKGxldCBrID0gMDsgayA8IGRheUFyci5sZW5ndGg7IGsrKykge1xyXG4gICAgbGV0IHNlcmllc0l0ZW0gPSB7XHJcbiAgICAgIGRhdGE6IFtdLFxyXG4gICAgICBuYW1lOiBuYW1lQXJyW2tdLFxyXG4gICAgICBjb2xvcjogY29sb3JBcnJba11cclxuICAgIH07XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0ga2RhdGEubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgaWYgKGkgPCBkYXlBcnJba10pIHtcclxuICAgICAgICBzZXJpZXNJdGVtLmRhdGEucHVzaChudWxsKTtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgc3VtID0gMDtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkYXlBcnJba107IGorKykge1xyXG4gICAgICAgIHN1bSArPSBrZGF0YVtpIC0gal1bMV07XHJcbiAgICAgIH1cclxuICAgICAgc2VyaWVzSXRlbS5kYXRhLnB1c2goKyhzdW0gLyBkYXlBcnJba10pLnRvRml4ZWQoMykpO1xyXG4gICAgfVxyXG4gICAgc2VyaWVzVGVtcC5wdXNoKHNlcmllc0l0ZW0pO1xyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzVGVtcDtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FsVmFsaWREaXN0YW5jZShzZWxmLCBkaXN0YW5jZSwgY2hhcnREYXRhLCBjb25maWcsIG9wdHMpIHtcclxuICB2YXIgZGF0YUNoYXJ0QXJlYVdpZHRoID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICB2YXIgZGF0YUNoYXJ0V2lkdGggPSBjaGFydERhdGEuZWFjaFNwYWNpbmcgKiAob3B0cy5jaGFydERhdGEueEF4aXNEYXRhLnhBeGlzUG9pbnRzLmxlbmd0aCAtIDEpO1xyXG4gIHZhciB2YWxpZERpc3RhbmNlID0gZGlzdGFuY2U7XHJcbiAgaWYgKGRpc3RhbmNlID49IDApIHtcclxuICAgIHZhbGlkRGlzdGFuY2UgPSAwO1xyXG4gICAgc2VsZi51ZXZlbnQudHJpZ2dlcignc2Nyb2xsTGVmdCcpO1xyXG4gICAgc2VsZi5zY3JvbGxPcHRpb24ucG9zaXRpb24gPSAnbGVmdCdcclxuICAgIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gPSAnbGVmdCc7XHJcbiAgfSBlbHNlIGlmIChNYXRoLmFicyhkaXN0YW5jZSkgPj0gZGF0YUNoYXJ0V2lkdGggLSBkYXRhQ2hhcnRBcmVhV2lkdGgpIHtcclxuICAgIHZhbGlkRGlzdGFuY2UgPSBkYXRhQ2hhcnRBcmVhV2lkdGggLSBkYXRhQ2hhcnRXaWR0aDtcclxuICAgIHNlbGYudWV2ZW50LnRyaWdnZXIoJ3Njcm9sbFJpZ2h0Jyk7XHJcbiAgICBzZWxmLnNjcm9sbE9wdGlvbi5wb3NpdGlvbiA9ICdyaWdodCdcclxuICAgIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gPSAncmlnaHQnO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBzZWxmLnNjcm9sbE9wdGlvbi5wb3NpdGlvbiA9IGRpc3RhbmNlXHJcbiAgICBvcHRzLnhBeGlzLnNjcm9sbFBvc2l0aW9uID0gZGlzdGFuY2U7XHJcbiAgfVxyXG4gIHJldHVybiB2YWxpZERpc3RhbmNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0luQW5nbGVSYW5nZShhbmdsZSwgc3RhcnRBbmdsZSwgZW5kQW5nbGUpIHtcclxuICBmdW5jdGlvbiBhZGp1c3QoYW5nbGUpIHtcclxuICAgIHdoaWxlIChhbmdsZSA8IDApIHtcclxuICAgICAgYW5nbGUgKz0gMiAqIE1hdGguUEk7XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoYW5nbGUgPiAyICogTWF0aC5QSSkge1xyXG4gICAgICBhbmdsZSAtPSAyICogTWF0aC5QSTtcclxuICAgIH1cclxuICAgIHJldHVybiBhbmdsZTtcclxuICB9XHJcbiAgYW5nbGUgPSBhZGp1c3QoYW5nbGUpO1xyXG4gIHN0YXJ0QW5nbGUgPSBhZGp1c3Qoc3RhcnRBbmdsZSk7XHJcbiAgZW5kQW5nbGUgPSBhZGp1c3QoZW5kQW5nbGUpO1xyXG4gIGlmIChzdGFydEFuZ2xlID4gZW5kQW5nbGUpIHtcclxuICAgIGVuZEFuZ2xlICs9IDIgKiBNYXRoLlBJO1xyXG4gICAgaWYgKGFuZ2xlIDwgc3RhcnRBbmdsZSkge1xyXG4gICAgICBhbmdsZSArPSAyICogTWF0aC5QSTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGFuZ2xlID49IHN0YXJ0QW5nbGUgJiYgYW5nbGUgPD0gZW5kQW5nbGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbFJvdGF0ZVRyYW5zbGF0ZSh4LCB5LCBoKSB7XHJcbiAgdmFyIHh2ID0geDtcclxuICB2YXIgeXYgPSBoIC0geTtcclxuICB2YXIgdHJhbnNYID0geHYgKyAoaCAtIHl2IC0geHYpIC8gTWF0aC5zcXJ0KDIpO1xyXG4gIHRyYW5zWCAqPSAtMTtcclxuICB2YXIgdHJhbnNZID0gKGggLSB5dikgKiAoTWF0aC5zcXJ0KDIpIC0gMSkgLSAoaCAtIHl2IC0geHYpIC8gTWF0aC5zcXJ0KDIpO1xyXG4gIHJldHVybiB7XHJcbiAgICB0cmFuc1g6IHRyYW5zWCxcclxuICAgIHRyYW5zWTogdHJhbnNZXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlQ3VydmVDb250cm9sUG9pbnRzKHBvaW50cywgaSkge1xyXG4gIGZ1bmN0aW9uIGlzTm90TWlkZGxlUG9pbnQocG9pbnRzLCBpKSB7XHJcbiAgICBpZiAocG9pbnRzW2kgLSAxXSAmJiBwb2ludHNbaSArIDFdKSB7XHJcbiAgICAgIHJldHVybiBwb2ludHNbaV0ueSA+PSBNYXRoLm1heChwb2ludHNbaSAtIDFdLnksIHBvaW50c1tpICsgMV0ueSkgfHwgcG9pbnRzW2ldLnkgPD0gTWF0aC5taW4ocG9pbnRzW2kgLSAxXS55LFxyXG4gICAgICAgIHBvaW50c1tpICsgMV0ueSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIGlzTm90TWlkZGxlUG9pbnRYKHBvaW50cywgaSkge1xyXG4gICAgaWYgKHBvaW50c1tpIC0gMV0gJiYgcG9pbnRzW2kgKyAxXSkge1xyXG4gICAgICByZXR1cm4gcG9pbnRzW2ldLnggPj0gTWF0aC5tYXgocG9pbnRzW2kgLSAxXS54LCBwb2ludHNbaSArIDFdLngpIHx8IHBvaW50c1tpXS54IDw9IE1hdGgubWluKHBvaW50c1tpIC0gMV0ueCxcclxuICAgICAgICBwb2ludHNbaSArIDFdLngpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICB2YXIgYSA9IDAuMjtcclxuICB2YXIgYiA9IDAuMjtcclxuICB2YXIgcEF4ID0gbnVsbDtcclxuICB2YXIgcEF5ID0gbnVsbDtcclxuICB2YXIgcEJ4ID0gbnVsbDtcclxuICB2YXIgcEJ5ID0gbnVsbDtcclxuICBpZiAoaSA8IDEpIHtcclxuICAgIHBBeCA9IHBvaW50c1swXS54ICsgKHBvaW50c1sxXS54IC0gcG9pbnRzWzBdLngpICogYTtcclxuICAgIHBBeSA9IHBvaW50c1swXS55ICsgKHBvaW50c1sxXS55IC0gcG9pbnRzWzBdLnkpICogYTtcclxuICB9IGVsc2Uge1xyXG4gICAgcEF4ID0gcG9pbnRzW2ldLnggKyAocG9pbnRzW2kgKyAxXS54IC0gcG9pbnRzW2kgLSAxXS54KSAqIGE7XHJcbiAgICBwQXkgPSBwb2ludHNbaV0ueSArIChwb2ludHNbaSArIDFdLnkgLSBwb2ludHNbaSAtIDFdLnkpICogYTtcclxuICB9XHJcblxyXG4gIGlmIChpID4gcG9pbnRzLmxlbmd0aCAtIDMpIHtcclxuICAgIHZhciBsYXN0ID0gcG9pbnRzLmxlbmd0aCAtIDE7XHJcbiAgICBwQnggPSBwb2ludHNbbGFzdF0ueCAtIChwb2ludHNbbGFzdF0ueCAtIHBvaW50c1tsYXN0IC0gMV0ueCkgKiBiO1xyXG4gICAgcEJ5ID0gcG9pbnRzW2xhc3RdLnkgLSAocG9pbnRzW2xhc3RdLnkgLSBwb2ludHNbbGFzdCAtIDFdLnkpICogYjtcclxuICB9IGVsc2Uge1xyXG4gICAgcEJ4ID0gcG9pbnRzW2kgKyAxXS54IC0gKHBvaW50c1tpICsgMl0ueCAtIHBvaW50c1tpXS54KSAqIGI7XHJcbiAgICBwQnkgPSBwb2ludHNbaSArIDFdLnkgLSAocG9pbnRzW2kgKyAyXS55IC0gcG9pbnRzW2ldLnkpICogYjtcclxuICB9XHJcbiAgaWYgKGlzTm90TWlkZGxlUG9pbnQocG9pbnRzLCBpICsgMSkpIHtcclxuICAgIHBCeSA9IHBvaW50c1tpICsgMV0ueTtcclxuICB9XHJcbiAgaWYgKGlzTm90TWlkZGxlUG9pbnQocG9pbnRzLCBpKSkge1xyXG4gICAgcEF5ID0gcG9pbnRzW2ldLnk7XHJcbiAgfVxyXG4gIGlmIChpc05vdE1pZGRsZVBvaW50WChwb2ludHMsIGkgKyAxKSkge1xyXG4gICAgcEJ4ID0gcG9pbnRzW2kgKyAxXS54O1xyXG4gIH1cclxuICBpZiAoaXNOb3RNaWRkbGVQb2ludFgocG9pbnRzLCBpKSkge1xyXG4gICAgcEF4ID0gcG9pbnRzW2ldLng7XHJcbiAgfVxyXG4gIGlmIChwQXkgPj0gTWF0aC5tYXgocG9pbnRzW2ldLnksIHBvaW50c1tpICsgMV0ueSkgfHwgcEF5IDw9IE1hdGgubWluKHBvaW50c1tpXS55LCBwb2ludHNbaSArIDFdLnkpKSB7XHJcbiAgICBwQXkgPSBwb2ludHNbaV0ueTtcclxuICB9XHJcbiAgaWYgKHBCeSA+PSBNYXRoLm1heChwb2ludHNbaV0ueSwgcG9pbnRzW2kgKyAxXS55KSB8fCBwQnkgPD0gTWF0aC5taW4ocG9pbnRzW2ldLnksIHBvaW50c1tpICsgMV0ueSkpIHtcclxuICAgIHBCeSA9IHBvaW50c1tpICsgMV0ueTtcclxuICB9XHJcbiAgaWYgKHBBeCA+PSBNYXRoLm1heChwb2ludHNbaV0ueCwgcG9pbnRzW2kgKyAxXS54KSB8fCBwQXggPD0gTWF0aC5taW4ocG9pbnRzW2ldLngsIHBvaW50c1tpICsgMV0ueCkpIHtcclxuICAgIHBBeCA9IHBvaW50c1tpXS54O1xyXG4gIH1cclxuICBpZiAocEJ4ID49IE1hdGgubWF4KHBvaW50c1tpXS54LCBwb2ludHNbaSArIDFdLngpIHx8IHBCeCA8PSBNYXRoLm1pbihwb2ludHNbaV0ueCwgcG9pbnRzW2kgKyAxXS54KSkge1xyXG4gICAgcEJ4ID0gcG9pbnRzW2kgKyAxXS54O1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgY3RyQToge1xyXG4gICAgICB4OiBwQXgsXHJcbiAgICAgIHk6IHBBeVxyXG4gICAgfSxcclxuICAgIGN0ckI6IHtcclxuICAgICAgeDogcEJ4LFxyXG4gICAgICB5OiBwQnlcclxuICAgIH1cclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbih4LCB5LCBjZW50ZXIpIHtcclxuICByZXR1cm4ge1xyXG4gICAgeDogY2VudGVyLnggKyB4LFxyXG4gICAgeTogY2VudGVyLnkgLSB5XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gYXZvaWRDb2xsaXNpb24ob2JqLCB0YXJnZXQpIHtcclxuICBpZiAodGFyZ2V0KSB7XHJcbiAgICAvLyBpcyBjb2xsaXNpb24gdGVzdFxyXG4gICAgd2hpbGUgKHV0aWwuaXNDb2xsaXNpb24ob2JqLCB0YXJnZXQpKSB7XHJcbiAgICAgIGlmIChvYmouc3RhcnQueCA+IDApIHtcclxuICAgICAgICBvYmouc3RhcnQueS0tO1xyXG4gICAgICB9IGVsc2UgaWYgKG9iai5zdGFydC54IDwgMCkge1xyXG4gICAgICAgIG9iai5zdGFydC55Kys7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKG9iai5zdGFydC55ID4gMCkge1xyXG4gICAgICAgICAgb2JqLnN0YXJ0LnkrKztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb2JqLnN0YXJ0LnktLTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG9iajtcclxufVxyXG5cclxuZnVuY3Rpb24gZml4UGllU2VyaWVzKHNlcmllcywgb3B0cywgY29uZmlnKXtcclxuICBsZXQgcGllU2VyaWVzQXJyID0gW107XHJcbiAgaWYoc2VyaWVzLmxlbmd0aD4wICYmIHNlcmllc1swXS5kYXRhLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkuaW5kZXhPZignQXJyYXknKSA+IC0xKXtcclxuICAgIG9wdHMuX3BpZVNlcmllc18gPSBzZXJpZXM7XHJcbiAgICBsZXQgb2xkc2VyaWVzID0gc2VyaWVzWzBdLmRhdGE7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9sZHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBvbGRzZXJpZXNbaV0uZm9ybWF0dGVyID0gc2VyaWVzWzBdLmZvcm1hdHRlcjtcclxuICAgICAgb2xkc2VyaWVzW2ldLmRhdGEgPSBvbGRzZXJpZXNbaV0udmFsdWU7XHJcbiAgICAgIHBpZVNlcmllc0Fyci5wdXNoKG9sZHNlcmllc1tpXSk7XHJcbiAgICB9XHJcbiAgICBvcHRzLnNlcmllcyA9IHBpZVNlcmllc0FycjtcclxuICB9ZWxzZXtcclxuICAgIHBpZVNlcmllc0FyciA9IHNlcmllcztcclxuICB9XHJcbiAgcmV0dXJuIHBpZVNlcmllc0FycjtcclxufVxyXG5cclxuZnVuY3Rpb24gZmlsbFNlcmllcyhzZXJpZXMsIG9wdHMsIGNvbmZpZykge1xyXG4gIHZhciBpbmRleCA9IDA7XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBpdGVtID0gc2VyaWVzW2ldO1xyXG4gICAgaWYgKCFpdGVtLmNvbG9yKSB7XHJcbiAgICAgIGl0ZW0uY29sb3IgPSBjb25maWcuY29sb3JbaW5kZXhdO1xyXG4gICAgICBpbmRleCA9IChpbmRleCArIDEpICUgY29uZmlnLmNvbG9yLmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmICghaXRlbS5saW5lYXJJbmRleCkge1xyXG4gICAgICBpdGVtLmxpbmVhckluZGV4ID0gaTtcclxuICAgIH1cclxuICAgIGlmICghaXRlbS5pbmRleCkge1xyXG4gICAgICBpdGVtLmluZGV4ID0gMDtcclxuICAgIH1cclxuICAgIGlmICghaXRlbS50eXBlKSB7XHJcbiAgICAgIGl0ZW0udHlwZSA9IG9wdHMudHlwZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgaXRlbS5zaG93ID09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgaXRlbS5zaG93ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICghaXRlbS50eXBlKSB7XHJcbiAgICAgIGl0ZW0udHlwZSA9IG9wdHMudHlwZTtcclxuICAgIH1cclxuICAgIGlmICghaXRlbS5wb2ludFNoYXBlKSB7XHJcbiAgICAgIGl0ZW0ucG9pbnRTaGFwZSA9IFwiY2lyY2xlXCI7XHJcbiAgICB9XHJcbiAgICBpZiAoIWl0ZW0ubGVnZW5kU2hhcGUpIHtcclxuICAgICAgc3dpdGNoIChpdGVtLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdsaW5lJzpcclxuICAgICAgICAgIGl0ZW0ubGVnZW5kU2hhcGUgPSBcImxpbmVcIjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2NvbHVtbic6XHJcbiAgICAgICAgICBpdGVtLmxlZ2VuZFNoYXBlID0gXCJyZWN0XCI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdhcmVhJzpcclxuICAgICAgICAgIGl0ZW0ubGVnZW5kU2hhcGUgPSBcInRyaWFuZ2xlXCI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdiYXInOlxyXG4gICAgICAgICAgaXRlbS5sZWdlbmRTaGFwZSA9IFwicmVjdFwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGl0ZW0ubGVnZW5kU2hhcGUgPSBcImNpcmNsZVwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBzZXJpZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbGxDdXN0b21Db2xvcihsaW5lYXJUeXBlLCBjdXN0b21Db2xvciwgc2VyaWVzLCBjb25maWcpIHtcclxuICB2YXIgbmV3Y29sb3IgPSBjdXN0b21Db2xvciB8fCBbXTtcclxuICBpZiAobGluZWFyVHlwZSA9PSAnY3VzdG9tJyAmJiBuZXdjb2xvci5sZW5ndGggPT0gMCApIHtcclxuICAgIG5ld2NvbG9yID0gY29uZmlnLmxpbmVhckNvbG9yO1xyXG4gIH1cclxuICBpZiAobGluZWFyVHlwZSA9PSAnY3VzdG9tJyAmJiBuZXdjb2xvci5sZW5ndGggPCBzZXJpZXMubGVuZ3RoKSB7XHJcbiAgICBsZXQgY2hhemhpID0gc2VyaWVzLmxlbmd0aCAtIG5ld2NvbG9yLmxlbmd0aDtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhemhpOyBpKyspIHtcclxuICAgICAgbmV3Y29sb3IucHVzaChjb25maWcubGluZWFyQ29sb3JbKGkgKyAxKSAlIGNvbmZpZy5saW5lYXJDb2xvci5sZW5ndGhdKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG5ld2NvbG9yO1xyXG59XHJcbiAgXHJcbmZ1bmN0aW9uIGdldERhdGFSYW5nZShtaW5EYXRhLCBtYXhEYXRhKSB7XHJcbiAgdmFyIGxpbWl0ID0gMDtcclxuICB2YXIgcmFuZ2UgPSBtYXhEYXRhIC0gbWluRGF0YTtcclxuICBpZiAocmFuZ2UgPj0gMTAwMDApIHtcclxuICAgIGxpbWl0ID0gMTAwMDtcclxuICB9IGVsc2UgaWYgKHJhbmdlID49IDEwMDApIHtcclxuICAgIGxpbWl0ID0gMTAwO1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMTAwKSB7XHJcbiAgICBsaW1pdCA9IDEwO1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMTApIHtcclxuICAgIGxpbWl0ID0gNTtcclxuICB9IGVsc2UgaWYgKHJhbmdlID49IDEpIHtcclxuICAgIGxpbWl0ID0gMTtcclxuICB9IGVsc2UgaWYgKHJhbmdlID49IDAuMSkge1xyXG4gICAgbGltaXQgPSAwLjE7XHJcbiAgfSBlbHNlIGlmIChyYW5nZSA+PSAwLjAxKSB7XHJcbiAgICBsaW1pdCA9IDAuMDE7XHJcbiAgfSBlbHNlIGlmIChyYW5nZSA+PSAwLjAwMSkge1xyXG4gICAgbGltaXQgPSAwLjAwMTtcclxuICB9IGVsc2UgaWYgKHJhbmdlID49IDAuMDAwMSkge1xyXG4gICAgbGltaXQgPSAwLjAwMDE7XHJcbiAgfSBlbHNlIGlmIChyYW5nZSA+PSAwLjAwMDAxKSB7XHJcbiAgICBsaW1pdCA9IDAuMDAwMDE7XHJcbiAgfSBlbHNlIHtcclxuICAgIGxpbWl0ID0gMC4wMDAwMDE7XHJcbiAgfVxyXG4gIHJldHVybiB7XHJcbiAgICBtaW5SYW5nZTogZmluZFJhbmdlKG1pbkRhdGEsICdsb3dlcicsIGxpbWl0KSxcclxuICAgIG1heFJhbmdlOiBmaW5kUmFuZ2UobWF4RGF0YSwgJ3VwcGVyJywgbGltaXQpXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gbWVhc3VyZVRleHQodGV4dCwgZm9udFNpemUsIGNvbnRleHQpIHtcclxuICB2YXIgd2lkdGggPSAwO1xyXG4gIHRleHQgPSBTdHJpbmcodGV4dCk7XHJcblxyXG5cclxuXHJcbiAgaWYgKGNvbnRleHQgIT09IGZhbHNlICYmIGNvbnRleHQgIT09IHVuZGVmaW5lZCAmJiBjb250ZXh0LnNldEZvbnRTaXplICYmIGNvbnRleHQubWVhc3VyZVRleHQpIHtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgcmV0dXJuIGNvbnRleHQubWVhc3VyZVRleHQodGV4dCkud2lkdGg7XHJcbiAgfSBlbHNlIHtcclxuICAgIHZhciB0ZXh0ID0gdGV4dC5zcGxpdCgnJyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGl0ZW0gPSB0ZXh0W2ldO1xyXG4gICAgICBpZiAoL1thLXpBLVpdLy50ZXN0KGl0ZW0pKSB7XHJcbiAgICAgICAgd2lkdGggKz0gNztcclxuICAgICAgfSBlbHNlIGlmICgvWzAtOV0vLnRlc3QoaXRlbSkpIHtcclxuICAgICAgICB3aWR0aCArPSA1LjU7XHJcbiAgICAgIH0gZWxzZSBpZiAoL1xcLi8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDIuNztcclxuICAgICAgfSBlbHNlIGlmICgvLS8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDMuMjU7XHJcbiAgICAgIH0gZWxzZSBpZiAoLzovLnRlc3QoaXRlbSkpIHtcclxuICAgICAgICB3aWR0aCArPSAyLjU7XHJcbiAgICAgIH0gZWxzZSBpZiAoL1tcXHU0ZTAwLVxcdTlmYTVdLy50ZXN0KGl0ZW0pKSB7XHJcbiAgICAgICAgd2lkdGggKz0gMTA7XHJcbiAgICAgIH0gZWxzZSBpZiAoL1xcKHxcXCkvLnRlc3QoaXRlbSkpIHtcclxuICAgICAgICB3aWR0aCArPSAzLjczO1xyXG4gICAgICB9IGVsc2UgaWYgKC9cXHMvLnRlc3QoaXRlbSkpIHtcclxuICAgICAgICB3aWR0aCArPSAyLjU7XHJcbiAgICAgIH0gZWxzZSBpZiAoLyUvLnRlc3QoaXRlbSkpIHtcclxuICAgICAgICB3aWR0aCArPSA4O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHdpZHRoICs9IDEwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gd2lkdGggKiBmb250U2l6ZSAvIDEwO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZGF0YUNvbWJpbmUoc2VyaWVzKSB7XHJcbiAgcmV0dXJuIHNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSwgYikge1xyXG4gICAgcmV0dXJuIChhLmRhdGEgPyBhLmRhdGEgOiBhKS5jb25jYXQoYi5kYXRhKTtcclxuICB9LCBbXSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRhdGFDb21iaW5lU3RhY2soc2VyaWVzLCBsZW4pIHtcclxuICB2YXIgc3VtID0gbmV3IEFycmF5KGxlbik7XHJcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBzdW0ubGVuZ3RoOyBqKyspIHtcclxuICAgIHN1bVtqXSA9IDA7XHJcbiAgfVxyXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN1bS5sZW5ndGg7IGorKykge1xyXG4gICAgICBzdW1bal0gKz0gc2VyaWVzW2ldLmRhdGFbal07XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBzZXJpZXMucmVkdWNlKGZ1bmN0aW9uKGEsIGIpIHtcclxuICAgIHJldHVybiAoYS5kYXRhID8gYS5kYXRhIDogYSkuY29uY2F0KGIuZGF0YSkuY29uY2F0KHN1bSk7XHJcbiAgfSwgW10pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRUb3VjaGVzKHRvdWNoZXMsIG9wdHMsIGUpIHtcclxuICBsZXQgeCwgeTtcclxuICBpZiAodG91Y2hlcy5jbGllbnRYKSB7XHJcbiAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgeSA9IG9wdHMuaGVpZ2h0IC0gdG91Y2hlcy5jbGllbnRYICogb3B0cy5waXg7XHJcbiAgICAgIHggPSAodG91Y2hlcy5wYWdlWSAtIGUuY3VycmVudFRhcmdldC5vZmZzZXRUb3AgLSAob3B0cy5oZWlnaHQgLyBvcHRzLnBpeCAvIDIpICogKG9wdHMucGl4IC0gMSkpICogb3B0cy5waXg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB4ID0gdG91Y2hlcy5jbGllbnRYICogb3B0cy5waXg7XHJcbiAgICAgIHkgPSAodG91Y2hlcy5wYWdlWSAtIGUuY3VycmVudFRhcmdldC5vZmZzZXRUb3AgLSAob3B0cy5oZWlnaHQgLyBvcHRzLnBpeCAvIDIpICogKG9wdHMucGl4IC0gMSkpICogb3B0cy5waXg7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICB5ID0gb3B0cy5oZWlnaHQgLSB0b3VjaGVzLnggKiBvcHRzLnBpeDtcclxuICAgICAgeCA9IHRvdWNoZXMueSAqIG9wdHMucGl4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgeCA9IHRvdWNoZXMueCAqIG9wdHMucGl4O1xyXG4gICAgICB5ID0gdG91Y2hlcy55ICogb3B0cy5waXg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB7XHJcbiAgICB4OiB4LFxyXG4gICAgeTogeVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0U2VyaWVzRGF0YUl0ZW0oc2VyaWVzLCBpbmRleCwgZ3JvdXApIHtcclxuICB2YXIgZGF0YSA9IFtdO1xyXG4gIHZhciBuZXdTZXJpZXMgPSBbXTtcclxuICB2YXIgaW5kZXhJc0FyciA9IGluZGV4LmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkuaW5kZXhPZignQXJyYXknKSA+IC0xO1xyXG4gIGlmKGluZGV4SXNBcnIpe1xyXG4gICAgbGV0IHRlbXBTZXJpZXMgPSBmaWx0ZXJTZXJpZXMoc2VyaWVzKTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbmV3U2VyaWVzLnB1c2godGVtcFNlcmllc1tncm91cFtpXV0pO1xyXG4gICAgfVxyXG4gIH1lbHNle1xyXG4gICAgbmV3U2VyaWVzID0gc2VyaWVzO1xyXG4gIH07XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdTZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBpdGVtID0gbmV3U2VyaWVzW2ldO1xyXG4gICAgbGV0IHRtcGluZGV4ID0gLTE7XHJcbiAgICBpZihpbmRleElzQXJyKXtcclxuICAgICAgdG1waW5kZXggPSBpbmRleFtpXTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0bXBpbmRleCA9IGluZGV4O1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0uZGF0YVt0bXBpbmRleF0gIT09IG51bGwgJiYgdHlwZW9mIGl0ZW0uZGF0YVt0bXBpbmRleF0gIT09ICd1bmRlZmluZWQnICYmIGl0ZW0uc2hvdykge1xyXG4gICAgICBsZXQgc2VyaWVzSXRlbSA9IHt9O1xyXG4gICAgICBzZXJpZXNJdGVtLmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgc2VyaWVzSXRlbS50eXBlID0gaXRlbS50eXBlO1xyXG4gICAgICBzZXJpZXNJdGVtLnN0eWxlID0gaXRlbS5zdHlsZTtcclxuICAgICAgc2VyaWVzSXRlbS5wb2ludFNoYXBlID0gaXRlbS5wb2ludFNoYXBlO1xyXG4gICAgICBzZXJpZXNJdGVtLmRpc2FibGVMZWdlbmQgPSBpdGVtLmRpc2FibGVMZWdlbmQ7XHJcbiAgICAgIHNlcmllc0l0ZW0ubmFtZSA9IGl0ZW0ubmFtZTtcclxuICAgICAgc2VyaWVzSXRlbS5zaG93ID0gaXRlbS5zaG93O1xyXG4gICAgICBzZXJpZXNJdGVtLmRhdGEgPSBpdGVtLmZvcm1hdHRlciA/IGl0ZW0uZm9ybWF0dGVyKGl0ZW0uZGF0YVt0bXBpbmRleF0pIDogaXRlbS5kYXRhW3RtcGluZGV4XTtcclxuICAgICAgZGF0YS5wdXNoKHNlcmllc0l0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gZGF0YTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TWF4VGV4dExpc3RMZW5ndGgobGlzdCwgZm9udFNpemUsIGNvbnRleHQpIHtcclxuICB2YXIgbGVuZ3RoTGlzdCA9IGxpc3QubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIHJldHVybiBtZWFzdXJlVGV4dChpdGVtLCBmb250U2l6ZSwgY29udGV4dCk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsIGxlbmd0aExpc3QpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRSYWRhckNvb3JkaW5hdGVTZXJpZXMobGVuZ3RoKSB7XHJcbiAgdmFyIGVhY2hBbmdsZSA9IDIgKiBNYXRoLlBJIC8gbGVuZ3RoO1xyXG4gIHZhciBDb29yZGluYXRlU2VyaWVzID0gW107XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgQ29vcmRpbmF0ZVNlcmllcy5wdXNoKGVhY2hBbmdsZSAqIGkpO1xyXG4gIH1cclxuICByZXR1cm4gQ29vcmRpbmF0ZVNlcmllcy5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgcmV0dXJuIC0xICogaXRlbSArIE1hdGguUEkgLyAyO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRUb29sVGlwRGF0YShzZXJpZXNEYXRhLCBvcHRzLCBpbmRleCwgZ3JvdXAsIGNhdGVnb3JpZXMpIHtcclxuICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiB7fTtcclxuICB2YXIgY2FsUG9pbnRzID0gb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzP29wdHMuY2hhcnREYXRhLmNhbFBvaW50czpbXTtcclxuICBsZXQgcG9pbnRzID0ge307XHJcbiAgaWYoZ3JvdXAubGVuZ3RoID4gMCl7XHJcbiAgICBsZXQgZmlsdGVyUG9pbnRzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZpbHRlclBvaW50cy5wdXNoKGNhbFBvaW50c1tncm91cFtpXV0pXHJcbiAgICB9XHJcbiAgICBwb2ludHMgPSBmaWx0ZXJQb2ludHNbMF1baW5kZXhbMF1dO1xyXG4gIH1lbHNle1xyXG4gICAgcG9pbnRzID0gY2FsUG9pbnRzWzBdW2luZGV4XTtcclxuICB9O1xyXG4gIHZhciB0ZXh0TGlzdCA9IHNlcmllc0RhdGEubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIGxldCB0aXRsZVRleHQgPSBudWxsO1xyXG4gICAgaWYgKG9wdHMuY2F0ZWdvcmllcyAmJiBvcHRzLmNhdGVnb3JpZXMubGVuZ3RoPjApIHtcclxuICAgICAgdGl0bGVUZXh0ID0gY2F0ZWdvcmllc1tpbmRleF07XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGV4dDogb3B0aW9uLmZvcm1hdHRlciA/IG9wdGlvbi5mb3JtYXR0ZXIoaXRlbSwgdGl0bGVUZXh0LCBpbmRleCwgb3B0cykgOiBpdGVtLm5hbWUgKyAnOiAnICsgaXRlbS5kYXRhLFxyXG4gICAgICBjb2xvcjogaXRlbS5jb2xvclxyXG4gICAgfTtcclxuICB9KTtcclxuICB2YXIgb2Zmc2V0ID0ge1xyXG4gICAgeDogTWF0aC5yb3VuZChwb2ludHMueCksXHJcbiAgICB5OiBNYXRoLnJvdW5kKHBvaW50cy55KVxyXG4gIH07XHJcbiAgcmV0dXJuIHtcclxuICAgIHRleHRMaXN0OiB0ZXh0TGlzdCxcclxuICAgIG9mZnNldDogb2Zmc2V0XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TWl4VG9vbFRpcERhdGEoc2VyaWVzRGF0YSwgb3B0cywgaW5kZXgsIGNhdGVnb3JpZXMpIHtcclxuICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiB7fTtcclxuICB2YXIgcG9pbnRzID0gb3B0cy5jaGFydERhdGEueEF4aXNQb2ludHNbaW5kZXhdICsgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgLyAyO1xyXG4gIHZhciB0ZXh0TGlzdCA9IHNlcmllc0RhdGEubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKGl0ZW0sIGNhdGVnb3JpZXNbaW5kZXhdLCBpbmRleCwgb3B0cykgOiBpdGVtLm5hbWUgKyAnOiAnICsgaXRlbS5kYXRhLFxyXG4gICAgICBjb2xvcjogaXRlbS5jb2xvcixcclxuICAgICAgZGlzYWJsZUxlZ2VuZDogaXRlbS5kaXNhYmxlTGVnZW5kID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICB9O1xyXG4gIH0pO1xyXG4gIHRleHRMaXN0ID0gdGV4dExpc3QuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIGlmIChpdGVtLmRpc2FibGVMZWdlbmQgIT09IHRydWUpIHtcclxuICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgdmFyIG9mZnNldCA9IHtcclxuICAgIHg6IE1hdGgucm91bmQocG9pbnRzKSxcclxuICAgIHk6IDBcclxuICB9O1xyXG4gIHJldHVybiB7XHJcbiAgICB0ZXh0TGlzdDogdGV4dExpc3QsXHJcbiAgICBvZmZzZXQ6IG9mZnNldFxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldENhbmRsZVRvb2xUaXBEYXRhKHNlcmllcywgc2VyaWVzRGF0YSwgb3B0cywgaW5kZXgsIGNhdGVnb3JpZXMsIGV4dHJhKSB7XHJcbiAgdmFyIG9wdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiA2ICYmIGFyZ3VtZW50c1s2XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzZdIDoge307XHJcbiAgdmFyIGNhbFBvaW50cyA9IG9wdHMuY2hhcnREYXRhLmNhbFBvaW50cztcclxuICBsZXQgdXBDb2xvciA9IGV4dHJhLmNvbG9yLnVwRmlsbDtcclxuICBsZXQgZG93bkNvbG9yID0gZXh0cmEuY29sb3IuZG93bkZpbGw7XHJcbiAgLy/popzoibLpobrluo/kuLrlvIDnm5jvvIzmlLbnm5jvvIzmnIDkvY7vvIzmnIDpq5hcclxuICBsZXQgY29sb3IgPSBbdXBDb2xvciwgdXBDb2xvciwgZG93bkNvbG9yLCB1cENvbG9yXTtcclxuICB2YXIgdGV4dExpc3QgPSBbXTtcclxuICBzZXJpZXNEYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICBpZiAoaW5kZXggPT0gMCkge1xyXG4gICAgICBpZiAoaXRlbS5kYXRhWzFdIC0gaXRlbS5kYXRhWzBdIDwgMCkge1xyXG4gICAgICAgIGNvbG9yWzFdID0gZG93bkNvbG9yO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbG9yWzFdID0gdXBDb2xvcjtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGl0ZW0uZGF0YVswXSA8IHNlcmllc1tpbmRleCAtIDFdWzFdKSB7XHJcbiAgICAgICAgY29sb3JbMF0gPSBkb3duQ29sb3I7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW0uZGF0YVsxXSA8IGl0ZW0uZGF0YVswXSkge1xyXG4gICAgICAgIGNvbG9yWzFdID0gZG93bkNvbG9yO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpdGVtLmRhdGFbMl0gPiBzZXJpZXNbaW5kZXggLSAxXVsxXSkge1xyXG4gICAgICAgIGNvbG9yWzJdID0gdXBDb2xvcjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5kYXRhWzNdIDwgc2VyaWVzW2luZGV4IC0gMV1bMV0pIHtcclxuICAgICAgICBjb2xvclszXSA9IGRvd25Db2xvcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHRleHQxID0ge1xyXG4gICAgICB0ZXh0OiAn5byA55uY77yaJyArIGl0ZW0uZGF0YVswXSxcclxuICAgICAgY29sb3I6IGNvbG9yWzBdXHJcbiAgICB9O1xyXG4gICAgbGV0IHRleHQyID0ge1xyXG4gICAgICB0ZXh0OiAn5pS255uY77yaJyArIGl0ZW0uZGF0YVsxXSxcclxuICAgICAgY29sb3I6IGNvbG9yWzFdXHJcbiAgICB9O1xyXG4gICAgbGV0IHRleHQzID0ge1xyXG4gICAgICB0ZXh0OiAn5pyA5L2O77yaJyArIGl0ZW0uZGF0YVsyXSxcclxuICAgICAgY29sb3I6IGNvbG9yWzJdXHJcbiAgICB9O1xyXG4gICAgbGV0IHRleHQ0ID0ge1xyXG4gICAgICB0ZXh0OiAn5pyA6auY77yaJyArIGl0ZW0uZGF0YVszXSxcclxuICAgICAgY29sb3I6IGNvbG9yWzNdXHJcbiAgICB9O1xyXG4gICAgdGV4dExpc3QucHVzaCh0ZXh0MSwgdGV4dDIsIHRleHQzLCB0ZXh0NCk7XHJcbiAgfSk7XHJcbiAgdmFyIHZhbGlkQ2FsUG9pbnRzID0gW107XHJcbiAgdmFyIG9mZnNldCA9IHtcclxuICAgIHg6IDAsXHJcbiAgICB5OiAwXHJcbiAgfTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbFBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IHBvaW50cyA9IGNhbFBvaW50c1tpXTtcclxuICAgIGlmICh0eXBlb2YgcG9pbnRzW2luZGV4XSAhPT0gJ3VuZGVmaW5lZCcgJiYgcG9pbnRzW2luZGV4XSAhPT0gbnVsbCkge1xyXG4gICAgICB2YWxpZENhbFBvaW50cy5wdXNoKHBvaW50c1tpbmRleF0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBvZmZzZXQueCA9IE1hdGgucm91bmQodmFsaWRDYWxQb2ludHNbMF1bMF0ueCk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHRleHRMaXN0OiB0ZXh0TGlzdCxcclxuICAgIG9mZnNldDogb2Zmc2V0XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZmlsdGVyU2VyaWVzKHNlcmllcykge1xyXG4gIGxldCB0ZW1wU2VyaWVzID0gW107XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmIChzZXJpZXNbaV0uc2hvdyA9PSB0cnVlKSB7XHJcbiAgICAgIHRlbXBTZXJpZXMucHVzaChzZXJpZXNbaV0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB0ZW1wU2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kQ3VycmVudEluZGV4KGN1cnJlbnRQb2ludHMsIGNhbFBvaW50cywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIG9mZnNldCA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMDtcclxuICB2YXIgY3VycmVudD17IGluZGV4Oi0xLCBncm91cDpbXSB9O1xyXG4gIHZhciBzcGFjaW5nID0gb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgLyAyO1xyXG4gIGxldCB4QXhpc1BvaW50cyA9IFtdO1xyXG4gIGlmIChjYWxQb2ludHMgJiYgY2FsUG9pbnRzLmxlbmd0aCA+IDApIHtcclxuICAgIGlmICghb3B0cy5jYXRlZ29yaWVzKSB7XHJcbiAgICAgIHNwYWNpbmcgPSAwO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgb3B0cy5jaGFydERhdGEueEF4aXNQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB4QXhpc1BvaW50cy5wdXNoKG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzW2ldIC0gc3BhY2luZyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKChvcHRzLnR5cGUgPT0gJ2xpbmUnIHx8IG9wdHMudHlwZSA9PSAnYXJlYScpICYmIG9wdHMueEF4aXMuYm91bmRhcnlHYXAgPT0gJ2p1c3RpZnknKSB7XHJcbiAgICAgICAgeEF4aXNQb2ludHMgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGlzSW5FeGFjdENoYXJ0QXJlYShjdXJyZW50UG9pbnRzLCBvcHRzLCBjb25maWcpKSB7XHJcbiAgICAgIGlmICghb3B0cy5jYXRlZ29yaWVzKSB7XHJcbiAgICAgICAgbGV0IHRpbWVQb2ludHMgPSBBcnJheShjYWxQb2ludHMubGVuZ3RoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbFBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGltZVBvaW50c1tpXSA9IEFycmF5KGNhbFBvaW50c1tpXS5sZW5ndGgpXHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNhbFBvaW50c1tpXS5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICB0aW1lUG9pbnRzW2ldW2pdID0gKE1hdGguYWJzKGNhbFBvaW50c1tpXVtqXS54IC0gY3VycmVudFBvaW50cy54KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgcG9pbnRWYWx1ZSA9ICBBcnJheSh0aW1lUG9pbnRzLmxlbmd0aCk7XHJcbiAgICAgICAgbGV0IHBvaW50SW5kZXggPSAgQXJyYXkodGltZVBvaW50cy5sZW5ndGgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGltZVBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgcG9pbnRWYWx1ZVtpXSA9IE1hdGgubWluLmFwcGx5KG51bGwsIHRpbWVQb2ludHNbaV0pO1xyXG4gICAgICAgICAgcG9pbnRJbmRleFtpXSA9IHRpbWVQb2ludHNbaV0uaW5kZXhPZihwb2ludFZhbHVlW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG1pblZhbHVlID0gTWF0aC5taW4uYXBwbHkobnVsbCwgcG9pbnRWYWx1ZSk7XHJcbiAgICAgICAgY3VycmVudC5pbmRleCA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRWYWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYocG9pbnRWYWx1ZVtpXSA9PSBtaW5WYWx1ZSl7XHJcbiAgICAgICAgICAgIGN1cnJlbnQuZ3JvdXAucHVzaChpKTtcclxuICAgICAgICAgICAgY3VycmVudC5pbmRleC5wdXNoKHBvaW50SW5kZXhbaV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHhBeGlzUG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICAgIGlmIChjdXJyZW50UG9pbnRzLnggKyBvZmZzZXQgKyBzcGFjaW5nID4gaXRlbSkge1xyXG4gICAgICAgICAgICBjdXJyZW50LmluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRCYXJDaGFydEN1cnJlbnRJbmRleChjdXJyZW50UG9pbnRzLCBjYWxQb2ludHMsIG9wdHMsIGNvbmZpZykge1xyXG4gIHZhciBvZmZzZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDA7XHJcbiAgdmFyIGN1cnJlbnQ9eyBpbmRleDotMSwgZ3JvdXA6W10gfTtcclxuICB2YXIgc3BhY2luZyA9IG9wdHMuY2hhcnREYXRhLmVhY2hTcGFjaW5nIC8gMjtcclxuICBsZXQgeUF4aXNQb2ludHMgPSBvcHRzLmNoYXJ0RGF0YS55QXhpc1BvaW50cztcclxuICBpZiAoY2FsUG9pbnRzICYmIGNhbFBvaW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICBpZiAoaXNJbkV4YWN0Q2hhcnRBcmVhKGN1cnJlbnRQb2ludHMsIG9wdHMsIGNvbmZpZykpIHtcclxuICAgICAgeUF4aXNQb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChjdXJyZW50UG9pbnRzLnkgKyBvZmZzZXQgKyBzcGFjaW5nID4gaXRlbSkge1xyXG4gICAgICAgICAgY3VycmVudC5pbmRleCA9IGluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBjdXJyZW50O1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kTGVnZW5kSW5kZXgoY3VycmVudFBvaW50cywgbGVnZW5kRGF0YSwgb3B0cykge1xyXG4gIGxldCBjdXJyZW50SW5kZXggPSAtMTtcclxuICBsZXQgZ2FwID0gMDtcclxuICBpZiAoaXNJbkV4YWN0TGVnZW5kQXJlYShjdXJyZW50UG9pbnRzLCBsZWdlbmREYXRhLmFyZWEpKSB7XHJcbiAgICBsZXQgcG9pbnRzID0gbGVnZW5kRGF0YS5wb2ludHM7XHJcbiAgICBsZXQgaW5kZXggPSAtMTtcclxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBwb2ludHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbaV07XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaXRlbS5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGluZGV4ICs9IDE7XHJcbiAgICAgICAgbGV0IGFyZWEgPSBpdGVtW2pdWydhcmVhJ107XHJcbiAgICAgICAgaWYgKGFyZWEgJiYgY3VycmVudFBvaW50cy54ID4gYXJlYVswXSAtIGdhcCAmJiBjdXJyZW50UG9pbnRzLnggPCBhcmVhWzJdICsgZ2FwICYmIGN1cnJlbnRQb2ludHMueSA+IGFyZWFbMV0gLSBnYXAgJiYgY3VycmVudFBvaW50cy55IDwgYXJlYVszXSArIGdhcCkge1xyXG4gICAgICAgICAgY3VycmVudEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjdXJyZW50SW5kZXg7XHJcbiAgfVxyXG4gIHJldHVybiBjdXJyZW50SW5kZXg7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSW5FeGFjdExlZ2VuZEFyZWEoY3VycmVudFBvaW50cywgYXJlYSkge1xyXG4gIHJldHVybiBjdXJyZW50UG9pbnRzLnggPiBhcmVhLnN0YXJ0LnggJiYgY3VycmVudFBvaW50cy54IDwgYXJlYS5lbmQueCAmJiBjdXJyZW50UG9pbnRzLnkgPiBhcmVhLnN0YXJ0LnkgJiYgY3VycmVudFBvaW50cy55IDwgYXJlYS5lbmQueTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNJbkV4YWN0Q2hhcnRBcmVhKGN1cnJlbnRQb2ludHMsIG9wdHMsIGNvbmZpZykge1xyXG4gIHJldHVybiBjdXJyZW50UG9pbnRzLnggPD0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSArIDEwICYmIGN1cnJlbnRQb2ludHMueCA+PSBvcHRzLmFyZWFbM10gLSAxMCAmJiBjdXJyZW50UG9pbnRzLnkgPj0gb3B0cy5hcmVhWzBdICYmIGN1cnJlbnRQb2ludHMueSA8PSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZFJhZGFyQ2hhcnRDdXJyZW50SW5kZXgoY3VycmVudFBvaW50cywgcmFkYXJEYXRhLCBjb3VudCkge1xyXG4gIHZhciBlYWNoQW5nbGVBcmVhID0gMiAqIE1hdGguUEkgLyBjb3VudDtcclxuICB2YXIgY3VycmVudEluZGV4ID0gLTE7XHJcbiAgaWYgKGlzSW5FeGFjdFBpZUNoYXJ0QXJlYShjdXJyZW50UG9pbnRzLCByYWRhckRhdGEuY2VudGVyLCByYWRhckRhdGEucmFkaXVzKSkge1xyXG4gICAgdmFyIGZpeEFuZ2xlID0gZnVuY3Rpb24gZml4QW5nbGUoYW5nbGUpIHtcclxuICAgICAgaWYgKGFuZ2xlIDwgMCkge1xyXG4gICAgICAgIGFuZ2xlICs9IDIgKiBNYXRoLlBJO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChhbmdsZSA+IDIgKiBNYXRoLlBJKSB7XHJcbiAgICAgICAgYW5nbGUgLT0gMiAqIE1hdGguUEk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGFuZ2xlO1xyXG4gICAgfTtcclxuICAgIHZhciBhbmdsZSA9IE1hdGguYXRhbjIocmFkYXJEYXRhLmNlbnRlci55IC0gY3VycmVudFBvaW50cy55LCBjdXJyZW50UG9pbnRzLnggLSByYWRhckRhdGEuY2VudGVyLngpO1xyXG4gICAgYW5nbGUgPSAtMSAqIGFuZ2xlO1xyXG4gICAgaWYgKGFuZ2xlIDwgMCkge1xyXG4gICAgICBhbmdsZSArPSAyICogTWF0aC5QSTtcclxuICAgIH1cclxuICAgIHZhciBhbmdsZUxpc3QgPSByYWRhckRhdGEuYW5nbGVMaXN0Lm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICAgIGl0ZW0gPSBmaXhBbmdsZSgtMSAqIGl0ZW0pO1xyXG4gICAgICByZXR1cm4gaXRlbTtcclxuICAgIH0pO1xyXG4gICAgYW5nbGVMaXN0LmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgdmFyIHJhbmdlU3RhcnQgPSBmaXhBbmdsZShpdGVtIC0gZWFjaEFuZ2xlQXJlYSAvIDIpO1xyXG4gICAgICB2YXIgcmFuZ2VFbmQgPSBmaXhBbmdsZShpdGVtICsgZWFjaEFuZ2xlQXJlYSAvIDIpO1xyXG4gICAgICBpZiAocmFuZ2VFbmQgPCByYW5nZVN0YXJ0KSB7XHJcbiAgICAgICAgcmFuZ2VFbmQgKz0gMiAqIE1hdGguUEk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGFuZ2xlID49IHJhbmdlU3RhcnQgJiYgYW5nbGUgPD0gcmFuZ2VFbmQgfHwgYW5nbGUgKyAyICogTWF0aC5QSSA+PSByYW5nZVN0YXJ0ICYmIGFuZ2xlICsgMiAqIE1hdGguUEkgPD0gcmFuZ2VFbmQpIHtcclxuICAgICAgICBjdXJyZW50SW5kZXggPSBpbmRleDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBjdXJyZW50SW5kZXg7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRGdW5uZWxDaGFydEN1cnJlbnRJbmRleChjdXJyZW50UG9pbnRzLCBmdW5uZWxEYXRhKSB7XHJcbiAgdmFyIGN1cnJlbnRJbmRleCA9IC0xO1xyXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBmdW5uZWxEYXRhLnNlcmllcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgdmFyIGl0ZW0gPSBmdW5uZWxEYXRhLnNlcmllc1tpXTtcclxuICAgIGlmIChjdXJyZW50UG9pbnRzLnggPiBpdGVtLmZ1bm5lbEFyZWFbMF0gJiYgY3VycmVudFBvaW50cy54IDwgaXRlbS5mdW5uZWxBcmVhWzJdICYmIGN1cnJlbnRQb2ludHMueSA+IGl0ZW0uZnVubmVsQXJlYVsxXSAmJiBjdXJyZW50UG9pbnRzLnkgPCBpdGVtLmZ1bm5lbEFyZWFbM10pIHtcclxuICAgICAgY3VycmVudEluZGV4ID0gaTtcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBjdXJyZW50SW5kZXg7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRXb3JkQ2hhcnRDdXJyZW50SW5kZXgoY3VycmVudFBvaW50cywgd29yZERhdGEpIHtcclxuICB2YXIgY3VycmVudEluZGV4ID0gLTE7XHJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHdvcmREYXRhLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICB2YXIgaXRlbSA9IHdvcmREYXRhW2ldO1xyXG4gICAgaWYgKGN1cnJlbnRQb2ludHMueCA+IGl0ZW0uYXJlYVswXSAmJiBjdXJyZW50UG9pbnRzLnggPCBpdGVtLmFyZWFbMl0gJiYgY3VycmVudFBvaW50cy55ID4gaXRlbS5hcmVhWzFdICYmIGN1cnJlbnRQb2ludHMueSA8IGl0ZW0uYXJlYVszXSkge1xyXG4gICAgICBjdXJyZW50SW5kZXggPSBpO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZE1hcENoYXJ0Q3VycmVudEluZGV4KGN1cnJlbnRQb2ludHMsIG9wdHMpIHtcclxuICB2YXIgY3VycmVudEluZGV4ID0gLTE7XHJcbiAgdmFyIGNEYXRhID0gb3B0cy5jaGFydERhdGEubWFwRGF0YTtcclxuICB2YXIgZGF0YSA9IG9wdHMuc2VyaWVzO1xyXG4gIHZhciB0bXAgPSBwb2ludFRvQ29vcmRpbmF0ZShjdXJyZW50UG9pbnRzLnksIGN1cnJlbnRQb2ludHMueCwgY0RhdGEuYm91bmRzLCBjRGF0YS5zY2FsZSwgY0RhdGEueG9mZnNldCwgY0RhdGEueW9mZnNldCk7XHJcbiAgdmFyIHBvaSA9IFt0bXAueCwgdG1wLnldO1xyXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBkYXRhLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICB2YXIgaXRlbSA9IGRhdGFbaV0uZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XHJcbiAgICBpZiAoaXNQb2lXaXRoaW5Qb2x5KHBvaSwgaXRlbSwgb3B0cy5jaGFydERhdGEubWFwRGF0YS5tZXJjYXRvcikpIHtcclxuICAgICAgY3VycmVudEluZGV4ID0gaTtcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBjdXJyZW50SW5kZXg7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRSb3NlQ2hhcnRDdXJyZW50SW5kZXgoY3VycmVudFBvaW50cywgcGllRGF0YSwgb3B0cykge1xyXG4gIHZhciBjdXJyZW50SW5kZXggPSAtMTtcclxuICB2YXIgc2VyaWVzID0gZ2V0Um9zZURhdGFQb2ludHMob3B0cy5fc2VyaWVzXywgb3B0cy5leHRyYS5yb3NlLnR5cGUsIHBpZURhdGEucmFkaXVzLCBwaWVEYXRhLnJhZGl1cyk7XHJcbiAgaWYgKHBpZURhdGEgJiYgcGllRGF0YS5jZW50ZXIgJiYgaXNJbkV4YWN0UGllQ2hhcnRBcmVhKGN1cnJlbnRQb2ludHMsIHBpZURhdGEuY2VudGVyLCBwaWVEYXRhLnJhZGl1cykpIHtcclxuICAgIHZhciBhbmdsZSA9IE1hdGguYXRhbjIocGllRGF0YS5jZW50ZXIueSAtIGN1cnJlbnRQb2ludHMueSwgY3VycmVudFBvaW50cy54IC0gcGllRGF0YS5jZW50ZXIueCk7XHJcbiAgICBhbmdsZSA9IC1hbmdsZTtcclxuICAgIGlmKG9wdHMuZXh0cmEucm9zZSAmJiBvcHRzLmV4dHJhLnJvc2Uub2Zmc2V0QW5nbGUpe1xyXG4gICAgICBhbmdsZSA9IGFuZ2xlIC0gb3B0cy5leHRyYS5yb3NlLm9mZnNldEFuZ2xlICogTWF0aC5QSSAvIDE4MDtcclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzZXJpZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgaWYgKGlzSW5BbmdsZVJhbmdlKGFuZ2xlLCBzZXJpZXNbaV0uX3N0YXJ0Xywgc2VyaWVzW2ldLl9zdGFydF8gKyBzZXJpZXNbaV0uX3Jvc2VfcHJvcG9ydGlvbl8gKiAyICogTWF0aC5QSSkpIHtcclxuICAgICAgICBjdXJyZW50SW5kZXggPSBpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBjdXJyZW50SW5kZXg7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRQaWVDaGFydEN1cnJlbnRJbmRleChjdXJyZW50UG9pbnRzLCBwaWVEYXRhLCBvcHRzKSB7XHJcbiAgdmFyIGN1cnJlbnRJbmRleCA9IC0xO1xyXG4gIHZhciBzZXJpZXMgPSBnZXRQaWVEYXRhUG9pbnRzKHBpZURhdGEuc2VyaWVzKTtcclxuICBpZiAocGllRGF0YSAmJiBwaWVEYXRhLmNlbnRlciAmJiBpc0luRXhhY3RQaWVDaGFydEFyZWEoY3VycmVudFBvaW50cywgcGllRGF0YS5jZW50ZXIsIHBpZURhdGEucmFkaXVzKSkge1xyXG4gICAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuMihwaWVEYXRhLmNlbnRlci55IC0gY3VycmVudFBvaW50cy55LCBjdXJyZW50UG9pbnRzLnggLSBwaWVEYXRhLmNlbnRlci54KTtcclxuICAgIGFuZ2xlID0gLWFuZ2xlO1xyXG4gICAgaWYob3B0cy5leHRyYS5waWUgJiYgb3B0cy5leHRyYS5waWUub2Zmc2V0QW5nbGUpe1xyXG4gICAgICBhbmdsZSA9IGFuZ2xlIC0gb3B0cy5leHRyYS5waWUub2Zmc2V0QW5nbGUgKiBNYXRoLlBJIC8gMTgwO1xyXG4gICAgfVxyXG4gICAgaWYob3B0cy5leHRyYS5yaW5nICYmIG9wdHMuZXh0cmEucmluZy5vZmZzZXRBbmdsZSl7XHJcbiAgICAgIGFuZ2xlID0gYW5nbGUgLSBvcHRzLmV4dHJhLnJpbmcub2Zmc2V0QW5nbGUgKiBNYXRoLlBJIC8gMTgwO1xyXG4gICAgfVxyXG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHNlcmllcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBpZiAoaXNJbkFuZ2xlUmFuZ2UoYW5nbGUsIHNlcmllc1tpXS5fc3RhcnRfLCBzZXJpZXNbaV0uX3N0YXJ0XyArIHNlcmllc1tpXS5fcHJvcG9ydGlvbl8gKiAyICogTWF0aC5QSSkpIHtcclxuICAgICAgICBjdXJyZW50SW5kZXggPSBpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBjdXJyZW50SW5kZXg7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSW5FeGFjdFBpZUNoYXJ0QXJlYShjdXJyZW50UG9pbnRzLCBjZW50ZXIsIHJhZGl1cykge1xyXG4gIHJldHVybiBNYXRoLnBvdyhjdXJyZW50UG9pbnRzLnggLSBjZW50ZXIueCwgMikgKyBNYXRoLnBvdyhjdXJyZW50UG9pbnRzLnkgLSBjZW50ZXIueSwgMikgPD0gTWF0aC5wb3cocmFkaXVzLCAyKTtcclxufVxyXG5cclxuZnVuY3Rpb24gc3BsaXRQb2ludHMocG9pbnRzLGVhY2hTZXJpZXMpIHtcclxuICB2YXIgbmV3UG9pbnRzID0gW107XHJcbiAgdmFyIGl0ZW1zID0gW107XHJcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmKGVhY2hTZXJpZXMuY29ubmVjdE51bGxzKXtcclxuICAgICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChpdGVtcy5sZW5ndGgpIHtcclxuICAgICAgICAgIG5ld1BvaW50cy5wdXNoKGl0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaXRlbXMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgfSk7XHJcbiAgaWYgKGl0ZW1zLmxlbmd0aCkge1xyXG4gICAgbmV3UG9pbnRzLnB1c2goaXRlbXMpO1xyXG4gIH1cclxuICByZXR1cm4gbmV3UG9pbnRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxMZWdlbmREYXRhKHNlcmllcywgb3B0cywgY29uZmlnLCBjaGFydERhdGEsIGNvbnRleHQpIHtcclxuICBsZXQgbGVnZW5kRGF0YSA9IHtcclxuICAgIGFyZWE6IHtcclxuICAgICAgc3RhcnQ6IHtcclxuICAgICAgICB4OiAwLFxyXG4gICAgICAgIHk6IDBcclxuICAgICAgfSxcclxuICAgICAgZW5kOiB7XHJcbiAgICAgICAgeDogMCxcclxuICAgICAgICB5OiAwXHJcbiAgICAgIH0sXHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgICBoZWlnaHQ6IDAsXHJcbiAgICAgIHdob2xlV2lkdGg6IDAsXHJcbiAgICAgIHdob2xlSGVpZ2h0OiAwXHJcbiAgICB9LFxyXG4gICAgcG9pbnRzOiBbXSxcclxuICAgIHdpZHRoQXJyOiBbXSxcclxuICAgIGhlaWdodEFycjogW11cclxuICB9O1xyXG4gIGlmIChvcHRzLmxlZ2VuZC5zaG93ID09PSBmYWxzZSkge1xyXG4gICAgY2hhcnREYXRhLmxlZ2VuZERhdGEgPSBsZWdlbmREYXRhO1xyXG4gICAgcmV0dXJuIGxlZ2VuZERhdGE7XHJcbiAgfVxyXG4gIGxldCBwYWRkaW5nID0gb3B0cy5sZWdlbmQucGFkZGluZyAqIG9wdHMucGl4O1xyXG4gIGxldCBtYXJnaW4gPSBvcHRzLmxlZ2VuZC5tYXJnaW4gKiBvcHRzLnBpeDtcclxuICBsZXQgZm9udFNpemUgPSBvcHRzLmxlZ2VuZC5mb250U2l6ZSA/IG9wdHMubGVnZW5kLmZvbnRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemU7XHJcbiAgbGV0IHNoYXBlV2lkdGggPSAxNSAqIG9wdHMucGl4O1xyXG4gIGxldCBzaGFwZVJpZ2h0ID0gNSAqIG9wdHMucGl4O1xyXG4gIGxldCBsaW5lSGVpZ2h0ID0gTWF0aC5tYXgob3B0cy5sZWdlbmQubGluZUhlaWdodCAqIG9wdHMucGl4LCBmb250U2l6ZSk7XHJcbiAgaWYgKG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICd0b3AnIHx8IG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICdib3R0b20nKSB7XHJcbiAgICBsZXQgbGVnZW5kTGlzdCA9IFtdO1xyXG4gICAgbGV0IHdpZHRoQ291bnQgPSAwO1xyXG4gICAgbGV0IHdpZHRoQ291bnRBcnIgPSBbXTtcclxuICAgIGxldCBjdXJyZW50Um93ID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgICAgbGV0IGl0ZW1XaWR0aCA9IHNoYXBlV2lkdGggKyBzaGFwZVJpZ2h0ICsgbWVhc3VyZVRleHQoaXRlbS5uYW1lIHx8ICd1bmRlZmluZWQnLCBmb250U2l6ZSwgY29udGV4dCkgKyBvcHRzLmxlZ2VuZC5pdGVtR2FwICogb3B0cy5waXg7XHJcbiAgICAgIGlmICh3aWR0aENvdW50ICsgaXRlbVdpZHRoID4gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXSkge1xyXG4gICAgICAgIGxlZ2VuZExpc3QucHVzaChjdXJyZW50Um93KTtcclxuICAgICAgICB3aWR0aENvdW50QXJyLnB1c2god2lkdGhDb3VudCAtIG9wdHMubGVnZW5kLml0ZW1HYXAgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgd2lkdGhDb3VudCA9IGl0ZW1XaWR0aDtcclxuICAgICAgICBjdXJyZW50Um93ID0gW2l0ZW1dO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHdpZHRoQ291bnQgKz0gaXRlbVdpZHRoO1xyXG4gICAgICAgIGN1cnJlbnRSb3cucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGN1cnJlbnRSb3cubGVuZ3RoKSB7XHJcbiAgICAgIGxlZ2VuZExpc3QucHVzaChjdXJyZW50Um93KTtcclxuICAgICAgd2lkdGhDb3VudEFyci5wdXNoKHdpZHRoQ291bnQgLSBvcHRzLmxlZ2VuZC5pdGVtR2FwICogb3B0cy5waXgpO1xyXG4gICAgICBsZWdlbmREYXRhLndpZHRoQXJyID0gd2lkdGhDb3VudEFycjtcclxuICAgICAgbGV0IGxlZ2VuZFdpZHRoID0gTWF0aC5tYXguYXBwbHkobnVsbCwgd2lkdGhDb3VudEFycik7XHJcbiAgICAgIHN3aXRjaCAob3B0cy5sZWdlbmQuZmxvYXQpIHtcclxuICAgICAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC54ID0gb3B0cy5hcmVhWzNdO1xyXG4gICAgICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC54ID0gb3B0cy5hcmVhWzNdICsgbGVnZW5kV2lkdGggKyAyICogcGFkZGluZztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcclxuICAgICAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC54ID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIGxlZ2VuZFdpZHRoIC0gMiAqIHBhZGRpbmc7XHJcbiAgICAgICAgICBsZWdlbmREYXRhLmFyZWEuZW5kLnggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC54ID0gKG9wdHMud2lkdGggLSBsZWdlbmRXaWR0aCkgLyAyIC0gcGFkZGluZztcclxuICAgICAgICAgIGxlZ2VuZERhdGEuYXJlYS5lbmQueCA9IChvcHRzLndpZHRoICsgbGVnZW5kV2lkdGgpIC8gMiArIHBhZGRpbmc7XHJcbiAgICAgIH1cclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLndpZHRoID0gbGVnZW5kV2lkdGggKyAyICogcGFkZGluZztcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLndob2xlV2lkdGggPSBsZWdlbmRXaWR0aCArIDIgKiBwYWRkaW5nO1xyXG4gICAgICBsZWdlbmREYXRhLmFyZWEuaGVpZ2h0ID0gbGVnZW5kTGlzdC5sZW5ndGggKiBsaW5lSGVpZ2h0ICsgMiAqIHBhZGRpbmc7XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS53aG9sZUhlaWdodCA9IGxlZ2VuZExpc3QubGVuZ3RoICogbGluZUhlaWdodCArIDIgKiBwYWRkaW5nICsgMiAqIG1hcmdpbjtcclxuICAgICAgbGVnZW5kRGF0YS5wb2ludHMgPSBsZWdlbmRMaXN0O1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBsZXQgbGVuID0gc2VyaWVzLmxlbmd0aDtcclxuICAgIGxldCBtYXhIZWlnaHQgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXSAtIDIgKiBtYXJnaW4gLSAyICogcGFkZGluZztcclxuICAgIGxldCBtYXhMZW5ndGggPSBNYXRoLm1pbihNYXRoLmZsb29yKG1heEhlaWdodCAvIGxpbmVIZWlnaHQpLCBsZW4pO1xyXG4gICAgbGVnZW5kRGF0YS5hcmVhLmhlaWdodCA9IG1heExlbmd0aCAqIGxpbmVIZWlnaHQgKyBwYWRkaW5nICogMjtcclxuICAgIGxlZ2VuZERhdGEuYXJlYS53aG9sZUhlaWdodCA9IG1heExlbmd0aCAqIGxpbmVIZWlnaHQgKyBwYWRkaW5nICogMjtcclxuICAgIHN3aXRjaCAob3B0cy5sZWdlbmQuZmxvYXQpIHtcclxuICAgICAgY2FzZSAndG9wJzpcclxuICAgICAgICBsZWdlbmREYXRhLmFyZWEuc3RhcnQueSA9IG9wdHMuYXJlYVswXSArIG1hcmdpbjtcclxuICAgICAgICBsZWdlbmREYXRhLmFyZWEuZW5kLnkgPSBvcHRzLmFyZWFbMF0gKyBtYXJnaW4gKyBsZWdlbmREYXRhLmFyZWEuaGVpZ2h0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdib3R0b20nOlxyXG4gICAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC55ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0gLSBtYXJnaW4gLSBsZWdlbmREYXRhLmFyZWEuaGVpZ2h0O1xyXG4gICAgICAgIGxlZ2VuZERhdGEuYXJlYS5lbmQueSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdIC0gbWFyZ2luO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC55ID0gKG9wdHMuaGVpZ2h0IC0gbGVnZW5kRGF0YS5hcmVhLmhlaWdodCkgLyAyO1xyXG4gICAgICAgIGxlZ2VuZERhdGEuYXJlYS5lbmQueSA9IChvcHRzLmhlaWdodCArIGxlZ2VuZERhdGEuYXJlYS5oZWlnaHQpIC8gMjtcclxuICAgIH1cclxuICAgIGxldCBsaW5lTnVtID0gbGVuICUgbWF4TGVuZ3RoID09PSAwID8gbGVuIC8gbWF4TGVuZ3RoIDogTWF0aC5mbG9vcigobGVuIC8gbWF4TGVuZ3RoKSArIDEpO1xyXG4gICAgbGV0IGN1cnJlbnRSb3cgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZU51bTsgaSsrKSB7XHJcbiAgICAgIGxldCB0ZW1wID0gc2VyaWVzLnNsaWNlKGkgKiBtYXhMZW5ndGgsIGkgKiBtYXhMZW5ndGggKyBtYXhMZW5ndGgpO1xyXG4gICAgICBjdXJyZW50Um93LnB1c2godGVtcCk7XHJcbiAgICB9XHJcbiAgICBsZWdlbmREYXRhLnBvaW50cyA9IGN1cnJlbnRSb3c7XHJcbiAgICBpZiAoY3VycmVudFJvdy5sZW5ndGgpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyZW50Um93Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGl0ZW0gPSBjdXJyZW50Um93W2ldO1xyXG4gICAgICAgIGxldCBtYXhXaWR0aCA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpdGVtLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICBsZXQgaXRlbVdpZHRoID0gc2hhcGVXaWR0aCArIHNoYXBlUmlnaHQgKyBtZWFzdXJlVGV4dChpdGVtW2pdLm5hbWUgfHwgJ3VuZGVmaW5lZCcsIGZvbnRTaXplLCBjb250ZXh0KSArIG9wdHMubGVnZW5kLml0ZW1HYXAgKiBvcHRzLnBpeDtcclxuICAgICAgICAgIGlmIChpdGVtV2lkdGggPiBtYXhXaWR0aCkge1xyXG4gICAgICAgICAgICBtYXhXaWR0aCA9IGl0ZW1XaWR0aDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbGVnZW5kRGF0YS53aWR0aEFyci5wdXNoKG1heFdpZHRoKTtcclxuICAgICAgICBsZWdlbmREYXRhLmhlaWdodEFyci5wdXNoKGl0ZW0ubGVuZ3RoICogbGluZUhlaWdodCArIHBhZGRpbmcgKiAyKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbGVnZW5kV2lkdGggPSAwXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVnZW5kRGF0YS53aWR0aEFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxlZ2VuZFdpZHRoICs9IGxlZ2VuZERhdGEud2lkdGhBcnJbaV07XHJcbiAgICAgIH1cclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLndpZHRoID0gbGVnZW5kV2lkdGggLSBvcHRzLmxlZ2VuZC5pdGVtR2FwICogb3B0cy5waXggKyAyICogcGFkZGluZztcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLndob2xlV2lkdGggPSBsZWdlbmREYXRhLmFyZWEud2lkdGggKyBwYWRkaW5nO1xyXG4gICAgfVxyXG4gIH1cclxuICBzd2l0Y2ggKG9wdHMubGVnZW5kLnBvc2l0aW9uKSB7XHJcbiAgICBjYXNlICd0b3AnOlxyXG4gICAgICBsZWdlbmREYXRhLmFyZWEuc3RhcnQueSA9IG9wdHMuYXJlYVswXSArIG1hcmdpbjtcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC55ID0gb3B0cy5hcmVhWzBdICsgbWFyZ2luICsgbGVnZW5kRGF0YS5hcmVhLmhlaWdodDtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdib3R0b20nOlxyXG4gICAgICBsZWdlbmREYXRhLmFyZWEuc3RhcnQueSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdIC0gbGVnZW5kRGF0YS5hcmVhLmhlaWdodCAtIG1hcmdpbjtcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC55ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0gLSBtYXJnaW47XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnbGVmdCc6XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC54ID0gb3B0cy5hcmVhWzNdO1xyXG4gICAgICBsZWdlbmREYXRhLmFyZWEuZW5kLnggPSBvcHRzLmFyZWFbM10gKyBsZWdlbmREYXRhLmFyZWEud2lkdGg7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICBsZWdlbmREYXRhLmFyZWEuc3RhcnQueCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBsZWdlbmREYXRhLmFyZWEud2lkdGg7XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5lbmQueCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgICAgIGJyZWFrO1xyXG4gIH1cclxuICBjaGFydERhdGEubGVnZW5kRGF0YSA9IGxlZ2VuZERhdGE7XHJcbiAgcmV0dXJuIGxlZ2VuZERhdGE7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbENhdGVnb3JpZXNEYXRhKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgZWFjaFNwYWNpbmcsIGNvbnRleHQpIHtcclxuICB2YXIgcmVzdWx0ID0ge1xyXG4gICAgYW5nbGU6IDAsXHJcbiAgICB4QXhpc0hlaWdodDogY29uZmlnLnhBeGlzSGVpZ2h0XHJcbiAgfTtcclxuICB2YXIgY2F0ZWdvcmllc1RleHRMZW50aCA9IGNhdGVnb3JpZXMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIHJldHVybiBtZWFzdXJlVGV4dChpdGVtLCBvcHRzLnhBeGlzLmZvbnRTaXplICogb3B0cy5waXggfHwgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KTtcclxuICB9KTtcclxuICB2YXIgbWF4VGV4dExlbmd0aCA9IE1hdGgubWF4LmFwcGx5KHRoaXMsIGNhdGVnb3JpZXNUZXh0TGVudGgpO1xyXG5cclxuICBpZiAob3B0cy54QXhpcy5yb3RhdGVMYWJlbCA9PSB0cnVlICYmIG1heFRleHRMZW5ndGggKyAyICogY29uZmlnLnhBeGlzVGV4dFBhZGRpbmcgPiBlYWNoU3BhY2luZykge1xyXG4gICAgcmVzdWx0LmFuZ2xlID0gNDUgKiBNYXRoLlBJIC8gMTgwO1xyXG4gICAgcmVzdWx0LnhBeGlzSGVpZ2h0ID0gMiAqIGNvbmZpZy54QXhpc1RleHRQYWRkaW5nICsgbWF4VGV4dExlbmd0aCAqIE1hdGguc2luKHJlc3VsdC5hbmdsZSk7XHJcbiAgfVxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFhBeGlzVGV4dExpc3Qoc2VyaWVzLCBvcHRzLCBjb25maWcsIHN0YWNrKSB7XHJcbiAgdmFyIGluZGV4ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAtMTtcclxuICB2YXIgZGF0YTtcclxuICBpZiAoc3RhY2sgPT0gJ3N0YWNrJykge1xyXG4gICAgZGF0YSA9IGRhdGFDb21iaW5lU3RhY2soc2VyaWVzLCBvcHRzLmNhdGVnb3JpZXMubGVuZ3RoKTtcclxuICB9IGVsc2Uge1xyXG4gICAgZGF0YSA9IGRhdGFDb21iaW5lKHNlcmllcyk7XHJcbiAgfVxyXG4gIHZhciBzb3J0ZWQgPSBbXTtcclxuICAvLyByZW1vdmUgbnVsbCBmcm9tIGRhdGFcclxuICBkYXRhID0gZGF0YS5maWx0ZXIoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgLy9yZXR1cm4gaXRlbSAhPT0gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAoaXRlbS5jb25zdHJ1Y3Rvci50b1N0cmluZygpLmluZGV4T2YoJ0FycmF5JykgPiAtMSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtICE9PSBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBpdGVtLnZhbHVlICE9PSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaXRlbSAhPT0gbnVsbDtcclxuICAgIH1cclxuICB9KTtcclxuICBkYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIGlmIChpdGVtLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkuaW5kZXhPZignQXJyYXknKSA+IC0xKSB7XHJcbiAgICAgICAgaWYgKG9wdHMudHlwZSA9PSAnY2FuZGxlJykge1xyXG4gICAgICAgICAgaXRlbS5tYXAoZnVuY3Rpb24oc3ViaXRlbSkge1xyXG4gICAgICAgICAgICBzb3J0ZWQucHVzaChzdWJpdGVtKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNvcnRlZC5wdXNoKGl0ZW1bMF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzb3J0ZWQucHVzaChpdGVtLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc29ydGVkLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbiAgdmFyIG1pbkRhdGEgPSAwO1xyXG4gIHZhciBtYXhEYXRhID0gMDtcclxuICBpZiAoc29ydGVkLmxlbmd0aCA+IDApIHtcclxuICAgIG1pbkRhdGEgPSBNYXRoLm1pbi5hcHBseSh0aGlzLCBzb3J0ZWQpO1xyXG4gICAgbWF4RGF0YSA9IE1hdGgubWF4LmFwcGx5KHRoaXMsIHNvcnRlZCk7XHJcbiAgfVxyXG4gIC8v5Li65LqG5YW85a65djEuOS4w5LmL5YmN55qE6aG555uuXHJcbiAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgIGlmICh0eXBlb2Ygb3B0cy54QXhpcy5kYXRhW2luZGV4XS5taW4gPT09ICdudW1iZXInKSB7XHJcbiAgICAgIG1pbkRhdGEgPSBNYXRoLm1pbihvcHRzLnhBeGlzLmRhdGFbaW5kZXhdLm1pbiwgbWluRGF0YSk7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIG9wdHMueEF4aXMuZGF0YVtpbmRleF0ubWF4ID09PSAnbnVtYmVyJykge1xyXG4gICAgICBtYXhEYXRhID0gTWF0aC5tYXgob3B0cy54QXhpcy5kYXRhW2luZGV4XS5tYXgsIG1heERhdGEpO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAodHlwZW9mIG9wdHMueEF4aXMubWluID09PSAnbnVtYmVyJykge1xyXG4gICAgICBtaW5EYXRhID0gTWF0aC5taW4ob3B0cy54QXhpcy5taW4sIG1pbkRhdGEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBvcHRzLnhBeGlzLm1heCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgbWF4RGF0YSA9IE1hdGgubWF4KG9wdHMueEF4aXMubWF4LCBtYXhEYXRhKTtcclxuICAgIH1cclxuICB9XHJcbiAgaWYgKG1pbkRhdGEgPT09IG1heERhdGEpIHtcclxuICAgIHZhciByYW5nZVNwYW4gPSBtYXhEYXRhIHx8IDEwO1xyXG4gICAgbWF4RGF0YSArPSByYW5nZVNwYW47XHJcbiAgfVxyXG4gIC8vdmFyIGRhdGFSYW5nZSA9IGdldERhdGFSYW5nZShtaW5EYXRhLCBtYXhEYXRhKTtcclxuICB2YXIgbWluUmFuZ2UgPSBtaW5EYXRhO1xyXG4gIHZhciBtYXhSYW5nZSA9IG1heERhdGE7XHJcbiAgdmFyIHJhbmdlID0gW107XHJcbiAgdmFyIGVhY2hSYW5nZSA9IChtYXhSYW5nZSAtIG1pblJhbmdlKSAvIG9wdHMueEF4aXMuc3BsaXROdW1iZXI7XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gb3B0cy54QXhpcy5zcGxpdE51bWJlcjsgaSsrKSB7XHJcbiAgICByYW5nZS5wdXNoKG1pblJhbmdlICsgZWFjaFJhbmdlICogaSk7XHJcbiAgfVxyXG4gIHJldHVybiByYW5nZTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FsWEF4aXNEYXRhKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgLy/loIblj6Dlm77ph43nrpdZ6L20XHJcbiAgdmFyIGNvbHVtbnN0eWxlID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOiBcIlwiXHJcbiAgfSwgb3B0cy5leHRyYS5iYXIpO1xyXG4gIHZhciByZXN1bHQgPSB7XHJcbiAgICBhbmdsZTogMCxcclxuICAgIHhBeGlzSGVpZ2h0OiBjb25maWcueEF4aXNIZWlnaHRcclxuICB9O1xyXG4gIHJlc3VsdC5yYW5nZXMgPSBnZXRYQXhpc1RleHRMaXN0KHNlcmllcywgb3B0cywgY29uZmlnLCBjb2x1bW5zdHlsZS50eXBlKTtcclxuICByZXN1bHQucmFuZ2VzRm9ybWF0ID0gcmVzdWx0LnJhbmdlcy5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgLy9pdGVtID0gb3B0cy54QXhpcy5mb3JtYXR0ZXIgPyBvcHRzLnhBeGlzLmZvcm1hdHRlcihpdGVtKSA6IHV0aWwudG9GaXhlZChpdGVtLCAyKTtcclxuICAgIGl0ZW0gPSB1dGlsLnRvRml4ZWQoaXRlbSwgMik7XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9KTtcclxuICB2YXIgeEF4aXNTY2FsZVZhbHVlcyA9IHJlc3VsdC5yYW5nZXMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIC8vIOWmguaenOWIu+W6puWAvOaYr+a1rueCueaVsCzliJnkv53nlZnkuKTkvY3lsI/mlbBcclxuICAgIGl0ZW0gPSB1dGlsLnRvRml4ZWQoaXRlbSwgMik7XHJcbiAgICAvLyDoi6XmnInoh6rlrprkuYnmoLzlvI/liJnosIPnlKjoh6rlrprkuYnnmoTmoLzlvI/ljJblh73mlbBcclxuICAgIC8vaXRlbSA9IG9wdHMueEF4aXMuZm9ybWF0dGVyID8gb3B0cy54QXhpcy5mb3JtYXR0ZXIoTnVtYmVyKGl0ZW0pKSA6IGl0ZW07XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9KTtcclxuICByZXN1bHQgPSBPYmplY3QuYXNzaWduKHJlc3VsdCwgZ2V0WEF4aXNQb2ludHMoeEF4aXNTY2FsZVZhbHVlcywgb3B0cywgY29uZmlnKSk7XHJcbiAgLy8g6K6h566XWOi9tOWIu+W6pueahOWxnuaAp+itrOWmguavj+S4quWIu+W6pueahOmXtOmalCzliLvluqbnmoTotbflp4vngrlcXOe7k+adn+eCueS7peWPiuaAu+mVv1xyXG4gIHZhciBlYWNoU3BhY2luZyA9IHJlc3VsdC5lYWNoU3BhY2luZztcclxuICB2YXIgdGV4dExlbmd0aCA9IHhBeGlzU2NhbGVWYWx1ZXMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIHJldHVybiBtZWFzdXJlVGV4dChpdGVtLCBvcHRzLnhBeGlzLmZvbnRTaXplICogb3B0cy5waXggfHwgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KTtcclxuICB9KTtcclxuICAvLyBnZXQgbWF4IGxlbmd0aCBvZiBjYXRlZ29yaWVzIHRleHRcclxuICB2YXIgbWF4VGV4dExlbmd0aCA9IE1hdGgubWF4LmFwcGx5KHRoaXMsIHRleHRMZW5ndGgpO1xyXG4gIC8vIOWmguaenOWIu+W6puWAvOaWh+acrOWGheWuuei/h+mVvyzliJnlsIblhbbpgIbml7bpkojml4vovaw0NcKwXHJcbiAgaWYgKG1heFRleHRMZW5ndGggKyAyICogY29uZmlnLnhBeGlzVGV4dFBhZGRpbmcgPiBlYWNoU3BhY2luZykge1xyXG4gICAgcmVzdWx0LmFuZ2xlID0gNDUgKiBNYXRoLlBJIC8gMTgwO1xyXG4gICAgcmVzdWx0LnhBeGlzSGVpZ2h0ID0gMiAqIGNvbmZpZy54QXhpc1RleHRQYWRkaW5nICsgbWF4VGV4dExlbmd0aCAqIE1hdGguc2luKHJlc3VsdC5hbmdsZSk7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnhBeGlzLmRpc2FibGVkID09PSB0cnVlKSB7XHJcbiAgICByZXN1bHQueEF4aXNIZWlnaHQgPSAwO1xyXG4gIH1cclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRSYWRhckRhdGFQb2ludHMoYW5nbGVMaXN0LCBjZW50ZXIsIHJhZGl1cywgc2VyaWVzLCBvcHRzKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IDE7XHJcbiAgdmFyIHJhZGFyT3B0aW9uID0gb3B0cy5leHRyYS5yYWRhciB8fCB7fTtcclxuICByYWRhck9wdGlvbi5tYXggPSByYWRhck9wdGlvbi5tYXggfHwgMDtcclxuICB2YXIgbWF4RGF0YSA9IE1hdGgubWF4KHJhZGFyT3B0aW9uLm1heCwgTWF0aC5tYXguYXBwbHkobnVsbCwgZGF0YUNvbWJpbmUoc2VyaWVzKSkpO1xyXG4gIHZhciBkYXRhID0gW107XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBlYWNoID0gc2VyaWVzW2ldO1xyXG4gICAgbGV0IGxpc3RJdGVtID0ge307XHJcbiAgICBsaXN0SXRlbS5jb2xvciA9IGVhY2guY29sb3I7XHJcbiAgICBsaXN0SXRlbS5sZWdlbmRTaGFwZSA9IGVhY2gubGVnZW5kU2hhcGU7XHJcbiAgICBsaXN0SXRlbS5wb2ludFNoYXBlID0gZWFjaC5wb2ludFNoYXBlO1xyXG4gICAgbGlzdEl0ZW0uZGF0YSA9IFtdO1xyXG4gICAgZWFjaC5kYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgbGV0IHRtcCA9IHt9O1xyXG4gICAgICB0bXAuYW5nbGUgPSBhbmdsZUxpc3RbaW5kZXhdO1xyXG4gICAgICB0bXAucHJvcG9ydGlvbiA9IGl0ZW0gLyBtYXhEYXRhO1xyXG4gICAgICB0bXAudmFsdWUgPSBpdGVtO1xyXG4gICAgICB0bXAucG9zaXRpb24gPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihyYWRpdXMgKiB0bXAucHJvcG9ydGlvbiAqIHByb2Nlc3MgKiBNYXRoLmNvcyh0bXAuYW5nbGUpLCByYWRpdXMgKiB0bXAucHJvcG9ydGlvbiAqIHByb2Nlc3MgKiBNYXRoLnNpbih0bXAuYW5nbGUpLCBjZW50ZXIpO1xyXG4gICAgICBsaXN0SXRlbS5kYXRhLnB1c2godG1wKTtcclxuICAgIH0pO1xyXG4gICAgZGF0YS5wdXNoKGxpc3RJdGVtKTtcclxuICB9XHJcbiAgcmV0dXJuIGRhdGE7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFBpZURhdGFQb2ludHMoc2VyaWVzLCByYWRpdXMpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMTtcclxuICB2YXIgY291bnQgPSAwO1xyXG4gIHZhciBfc3RhcnRfID0gMDtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLmRhdGEgPSBpdGVtLmRhdGEgPT09IG51bGwgPyAwIDogaXRlbS5kYXRhO1xyXG4gICAgY291bnQgKz0gaXRlbS5kYXRhO1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLmRhdGEgPSBpdGVtLmRhdGEgPT09IG51bGwgPyAwIDogaXRlbS5kYXRhO1xyXG4gICAgaWYgKGNvdW50ID09PSAwKSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gMSAvIHNlcmllcy5sZW5ndGggKiBwcm9jZXNzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbS5fcHJvcG9ydGlvbl8gPSBpdGVtLmRhdGEgLyBjb3VudCAqIHByb2Nlc3M7XHJcbiAgICB9XHJcbiAgICBpdGVtLl9yYWRpdXNfID0gcmFkaXVzO1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLl9zdGFydF8gPSBfc3RhcnRfO1xyXG4gICAgX3N0YXJ0XyArPSAyICogaXRlbS5fcHJvcG9ydGlvbl8gKiBNYXRoLlBJO1xyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRGdW5uZWxEYXRhUG9pbnRzKHNlcmllcywgcmFkaXVzLCB0eXBlLCBlYWNoU3BhY2luZykge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHNlcmllcyA9IHNlcmllcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcclxuICAgIHJldHVybiBwYXJzZUludChiLmRhdGEpIC0gcGFyc2VJbnQoYS5kYXRhKTtcclxuICB9KTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYodHlwZSA9PSAnZnVubmVsJyl7XHJcbiAgICAgIHNlcmllc1tpXS5yYWRpdXMgPSBzZXJpZXNbaV0uZGF0YSAvIHNlcmllc1swXS5kYXRhICogcmFkaXVzICogcHJvY2VzcztcclxuICAgIH1lbHNle1xyXG4gICAgICBzZXJpZXNbaV0ucmFkaXVzID0gIChlYWNoU3BhY2luZyAqIChzZXJpZXMubGVuZ3RoIC0gaSkpIC8gKGVhY2hTcGFjaW5nICogc2VyaWVzLmxlbmd0aCkgKiByYWRpdXMgKiBwcm9jZXNzO1xyXG4gICAgfVxyXG4gICAgc2VyaWVzW2ldLl9wcm9wb3J0aW9uXyA9IHNlcmllc1tpXS5kYXRhIC8gc2VyaWVzWzBdLmRhdGE7XHJcbiAgfVxyXG4gIGlmKHR5cGUgIT09ICdweXJhbWlkJyl7XHJcbiAgICBzZXJpZXMucmV2ZXJzZSgpO1xyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRSb3NlRGF0YVBvaW50cyhzZXJpZXMsIHR5cGUsIG1pblJhZGl1cywgcmFkaXVzKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgdmFyIGNvdW50ID0gMDtcclxuICB2YXIgX3N0YXJ0XyA9IDA7XHJcbiAgdmFyIGRhdGFBcnIgPSBbXTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLmRhdGEgPSBpdGVtLmRhdGEgPT09IG51bGwgPyAwIDogaXRlbS5kYXRhO1xyXG4gICAgY291bnQgKz0gaXRlbS5kYXRhO1xyXG4gICAgZGF0YUFyci5wdXNoKGl0ZW0uZGF0YSk7XHJcbiAgfVxyXG4gIHZhciBtaW5EYXRhID0gTWF0aC5taW4uYXBwbHkobnVsbCwgZGF0YUFycik7XHJcbiAgdmFyIG1heERhdGEgPSBNYXRoLm1heC5hcHBseShudWxsLCBkYXRhQXJyKTtcclxuICB2YXIgcmFkaXVzTGVuZ3RoID0gcmFkaXVzIC0gbWluUmFkaXVzO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGl0ZW0uZGF0YSA9IGl0ZW0uZGF0YSA9PT0gbnVsbCA/IDAgOiBpdGVtLmRhdGE7XHJcbiAgICBpZiAoY291bnQgPT09IDApIHtcclxuICAgICAgaXRlbS5fcHJvcG9ydGlvbl8gPSAxIC8gc2VyaWVzLmxlbmd0aCAqIHByb2Nlc3M7XHJcbiAgICAgIGl0ZW0uX3Jvc2VfcHJvcG9ydGlvbl8gPSAxIC8gc2VyaWVzLmxlbmd0aCAqIHByb2Nlc3M7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IGl0ZW0uZGF0YSAvIGNvdW50ICogcHJvY2VzcztcclxuICAgICAgaWYodHlwZSA9PSAnYXJlYScpe1xyXG4gICAgICAgIGl0ZW0uX3Jvc2VfcHJvcG9ydGlvbl8gPSAxIC8gc2VyaWVzLmxlbmd0aCAqIHByb2Nlc3M7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGl0ZW0uX3Jvc2VfcHJvcG9ydGlvbl8gPSBpdGVtLmRhdGEgLyBjb3VudCAqIHByb2Nlc3M7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGl0ZW0uX3JhZGl1c18gPSBtaW5SYWRpdXMgKyByYWRpdXNMZW5ndGggKiAoKGl0ZW0uZGF0YSAtIG1pbkRhdGEpIC8gKG1heERhdGEgLSBtaW5EYXRhKSkgfHwgcmFkaXVzO1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLl9zdGFydF8gPSBfc3RhcnRfO1xyXG4gICAgX3N0YXJ0XyArPSAyICogaXRlbS5fcm9zZV9wcm9wb3J0aW9uXyAqIE1hdGguUEk7XHJcbiAgfVxyXG4gIHJldHVybiBzZXJpZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEFyY2JhckRhdGFQb2ludHMoc2VyaWVzLCBhcmNiYXJPcHRpb24pIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMTtcclxuICBpZiAocHJvY2VzcyA9PSAxKSB7XHJcbiAgICBwcm9jZXNzID0gMC45OTk5OTk7XHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGl0ZW0uZGF0YSA9IGl0ZW0uZGF0YSA9PT0gbnVsbCA/IDAgOiBpdGVtLmRhdGE7XHJcbiAgICBsZXQgdG90YWxBbmdsZTtcclxuICAgIGlmIChhcmNiYXJPcHRpb24udHlwZSA9PSAnY2lyY2xlJykge1xyXG4gICAgICB0b3RhbEFuZ2xlID0gMjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChhcmNiYXJPcHRpb24uZW5kQW5nbGUgPCBhcmNiYXJPcHRpb24uc3RhcnRBbmdsZSkge1xyXG4gICAgICAgIHRvdGFsQW5nbGUgPSAyICsgYXJjYmFyT3B0aW9uLmVuZEFuZ2xlIC0gYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdG90YWxBbmdsZSA9IGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlIC0gYXJjYmFyT3B0aW9uLmVuZEFuZ2xlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IHRvdGFsQW5nbGUgKiBpdGVtLmRhdGEgKiBwcm9jZXNzICsgYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgICBpZiAoaXRlbS5fcHJvcG9ydGlvbl8gPj0gMikge1xyXG4gICAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IGl0ZW0uX3Byb3BvcnRpb25fICUgMjtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHNlcmllcztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0R2F1Z2VBeGlzUG9pbnRzKGNhdGVnb3JpZXMsIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlKSB7XHJcbiAgbGV0IHRvdGFsQW5nbGUgPSBzdGFydEFuZ2xlIC0gZW5kQW5nbGUgKyAxO1xyXG4gIGxldCB0ZW1wU3RhcnRBbmdsZSA9IHN0YXJ0QW5nbGU7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjYXRlZ29yaWVzW2ldLnZhbHVlID0gY2F0ZWdvcmllc1tpXS52YWx1ZSA9PT0gbnVsbCA/IDAgOiBjYXRlZ29yaWVzW2ldLnZhbHVlO1xyXG4gICAgY2F0ZWdvcmllc1tpXS5fc3RhcnRBbmdsZV8gPSB0ZW1wU3RhcnRBbmdsZTtcclxuICAgIGNhdGVnb3JpZXNbaV0uX2VuZEFuZ2xlXyA9IHRvdGFsQW5nbGUgKiBjYXRlZ29yaWVzW2ldLnZhbHVlICsgc3RhcnRBbmdsZTtcclxuICAgIGlmIChjYXRlZ29yaWVzW2ldLl9lbmRBbmdsZV8gPj0gMikge1xyXG4gICAgICBjYXRlZ29yaWVzW2ldLl9lbmRBbmdsZV8gPSBjYXRlZ29yaWVzW2ldLl9lbmRBbmdsZV8gJSAyO1xyXG4gICAgfVxyXG4gICAgdGVtcFN0YXJ0QW5nbGUgPSBjYXRlZ29yaWVzW2ldLl9lbmRBbmdsZV87XHJcbiAgfVxyXG4gIHJldHVybiBjYXRlZ29yaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRHYXVnZURhdGFQb2ludHMoc2VyaWVzLCBjYXRlZ29yaWVzLCBnYXVnZU9wdGlvbikge1xyXG4gIGxldCBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiAxO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGl0ZW0uZGF0YSA9IGl0ZW0uZGF0YSA9PT0gbnVsbCA/IDAgOiBpdGVtLmRhdGE7XHJcbiAgICBpZiAoZ2F1Z2VPcHRpb24ucG9pbnRlci5jb2xvciA9PSAnYXV0bycpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uZGF0YSA8PSBjYXRlZ29yaWVzW2ldLnZhbHVlKSB7XHJcbiAgICAgICAgICBpdGVtLmNvbG9yID0gY2F0ZWdvcmllc1tpXS5jb2xvcjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbS5jb2xvciA9IGdhdWdlT3B0aW9uLnBvaW50ZXIuY29sb3I7XHJcbiAgICB9XHJcbiAgICBsZXQgdG90YWxBbmdsZSA9IGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgLSBnYXVnZU9wdGlvbi5lbmRBbmdsZSArIDE7XHJcbiAgICBpdGVtLl9lbmRBbmdsZV8gPSB0b3RhbEFuZ2xlICogaXRlbS5kYXRhICsgZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZTtcclxuICAgIGl0ZW0uX29sZEFuZ2xlXyA9IGdhdWdlT3B0aW9uLm9sZEFuZ2xlO1xyXG4gICAgaWYgKGdhdWdlT3B0aW9uLm9sZEFuZ2xlIDwgZ2F1Z2VPcHRpb24uZW5kQW5nbGUpIHtcclxuICAgICAgaXRlbS5fb2xkQW5nbGVfICs9IDI7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbS5kYXRhID49IGdhdWdlT3B0aW9uLm9sZERhdGEpIHtcclxuICAgICAgaXRlbS5fcHJvcG9ydGlvbl8gPSAoaXRlbS5fZW5kQW5nbGVfIC0gaXRlbS5fb2xkQW5nbGVfKSAqIHByb2Nlc3MgKyBnYXVnZU9wdGlvbi5vbGRBbmdsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gaXRlbS5fb2xkQW5nbGVfIC0gKGl0ZW0uX29sZEFuZ2xlXyAtIGl0ZW0uX2VuZEFuZ2xlXykgKiBwcm9jZXNzO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0uX3Byb3BvcnRpb25fID49IDIpIHtcclxuICAgICAgaXRlbS5fcHJvcG9ydGlvbl8gPSBpdGVtLl9wcm9wb3J0aW9uXyAlIDI7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBzZXJpZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFBpZVRleHRNYXhMZW5ndGgoc2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpIHtcclxuICBzZXJpZXMgPSBnZXRQaWVEYXRhUG9pbnRzKHNlcmllcyk7XHJcbiAgbGV0IG1heExlbmd0aCA9IDA7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBpdGVtID0gc2VyaWVzW2ldO1xyXG4gICAgbGV0IHRleHQgPSBpdGVtLmZvcm1hdHRlciA/IGl0ZW0uZm9ybWF0dGVyKCtpdGVtLl9wcm9wb3J0aW9uXy50b0ZpeGVkKDIpKSA6IHV0aWwudG9GaXhlZChpdGVtLl9wcm9wb3J0aW9uXyAqIDEwMCkgKyAnJSc7XHJcbiAgICBtYXhMZW5ndGggPSBNYXRoLm1heChtYXhMZW5ndGgsIG1lYXN1cmVUZXh0KHRleHQsIGl0ZW0udGV4dFNpemUgKiBvcHRzLnBpeCB8fCBjb25maWcuZm9udFNpemUsIGNvbnRleHQpKTtcclxuICB9XHJcbiAgcmV0dXJuIG1heExlbmd0aDtcclxufVxyXG5cclxuZnVuY3Rpb24gZml4Q29sdW1lRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBjb2x1bW5MZW4sIGluZGV4LCBjb25maWcsIG9wdHMpIHtcclxuICByZXR1cm4gcG9pbnRzLm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICBpZiAoaXRlbSA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHZhciBzZXJpZXNHYXAgPSAwO1xyXG4gICAgdmFyIGNhdGVnb3J5R2FwID0gMDtcclxuICAgIGlmIChvcHRzLnR5cGUgPT0gJ21peCcpIHtcclxuICAgICAgc2VyaWVzR2FwID0gb3B0cy5leHRyYS5taXguY29sdW1uLnNlcmllc0dhcCAqIG9wdHMucGl4IHx8IDA7XHJcbiAgICAgIGNhdGVnb3J5R2FwID0gb3B0cy5leHRyYS5taXguY29sdW1uLmNhdGVnb3J5R2FwICogb3B0cy5waXggfHwgMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlcmllc0dhcCA9IG9wdHMuZXh0cmEuY29sdW1uLnNlcmllc0dhcCAqIG9wdHMucGl4IHx8IDA7XHJcbiAgICAgIGNhdGVnb3J5R2FwID0gb3B0cy5leHRyYS5jb2x1bW4uY2F0ZWdvcnlHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gICAgfVxyXG4gICAgc2VyaWVzR2FwID0gIE1hdGgubWluKHNlcmllc0dhcCwgZWFjaFNwYWNpbmcgLyBjb2x1bW5MZW4pXHJcbiAgICBjYXRlZ29yeUdhcCA9ICBNYXRoLm1pbihjYXRlZ29yeUdhcCwgZWFjaFNwYWNpbmcgLyBjb2x1bW5MZW4pXHJcbiAgICBpdGVtLndpZHRoID0gTWF0aC5jZWlsKChlYWNoU3BhY2luZyAtIDIgKiBjYXRlZ29yeUdhcCAtIHNlcmllc0dhcCAqIChjb2x1bW5MZW4gLSAxKSkgLyBjb2x1bW5MZW4pO1xyXG4gICAgaWYgKG9wdHMuZXh0cmEubWl4ICYmIG9wdHMuZXh0cmEubWl4LmNvbHVtbi53aWR0aCAmJiArb3B0cy5leHRyYS5taXguY29sdW1uLndpZHRoID4gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gTWF0aC5taW4oaXRlbS53aWR0aCwgK29wdHMuZXh0cmEubWl4LmNvbHVtbi53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgIH1cclxuICAgIGlmIChvcHRzLmV4dHJhLmNvbHVtbiAmJiBvcHRzLmV4dHJhLmNvbHVtbi53aWR0aCAmJiArb3B0cy5leHRyYS5jb2x1bW4ud2lkdGggPiAwKSB7XHJcbiAgICAgIGl0ZW0ud2lkdGggPSBNYXRoLm1pbihpdGVtLndpZHRoLCArb3B0cy5leHRyYS5jb2x1bW4ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbS53aWR0aCA8PSAwKSB7XHJcbiAgICAgIGl0ZW0ud2lkdGggPSAxO1xyXG4gICAgfVxyXG4gICAgaXRlbS54ICs9IChpbmRleCArIDAuNSAtIGNvbHVtbkxlbiAvIDIpICogKGl0ZW0ud2lkdGggKyBzZXJpZXNHYXApO1xyXG4gICAgcmV0dXJuIGl0ZW07XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpeEJhckRhdGEocG9pbnRzLCBlYWNoU3BhY2luZywgY29sdW1uTGVuLCBpbmRleCwgY29uZmlnLCBvcHRzKSB7XHJcbiAgcmV0dXJuIHBvaW50cy5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB2YXIgc2VyaWVzR2FwID0gMDtcclxuICAgIHZhciBjYXRlZ29yeUdhcCA9IDA7XHJcbiAgICBzZXJpZXNHYXAgPSBvcHRzLmV4dHJhLmJhci5zZXJpZXNHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gICAgY2F0ZWdvcnlHYXAgPSBvcHRzLmV4dHJhLmJhci5jYXRlZ29yeUdhcCAqIG9wdHMucGl4IHx8IDA7XHJcbiAgICBzZXJpZXNHYXAgPSAgTWF0aC5taW4oc2VyaWVzR2FwLCBlYWNoU3BhY2luZyAvIGNvbHVtbkxlbilcclxuICAgIGNhdGVnb3J5R2FwID0gIE1hdGgubWluKGNhdGVnb3J5R2FwLCBlYWNoU3BhY2luZyAvIGNvbHVtbkxlbilcclxuICAgIGl0ZW0ud2lkdGggPSBNYXRoLmNlaWwoKGVhY2hTcGFjaW5nIC0gMiAqIGNhdGVnb3J5R2FwIC0gc2VyaWVzR2FwICogKGNvbHVtbkxlbiAtIDEpKSAvIGNvbHVtbkxlbik7XHJcbiAgICBpZiAob3B0cy5leHRyYS5iYXIgJiYgb3B0cy5leHRyYS5iYXIud2lkdGggJiYgK29wdHMuZXh0cmEuYmFyLndpZHRoID4gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gTWF0aC5taW4oaXRlbS53aWR0aCwgK29wdHMuZXh0cmEuYmFyLndpZHRoICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0ud2lkdGggPD0gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gMTtcclxuICAgIH1cclxuICAgIGl0ZW0ueSArPSAoaW5kZXggKyAwLjUgLSBjb2x1bW5MZW4gLyAyKSAqIChpdGVtLndpZHRoICsgc2VyaWVzR2FwKTtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaXhDb2x1bWVNZXRlckRhdGEocG9pbnRzLCBlYWNoU3BhY2luZywgY29sdW1uTGVuLCBpbmRleCwgY29uZmlnLCBvcHRzLCBib3JkZXIpIHtcclxuICB2YXIgY2F0ZWdvcnlHYXAgPSBvcHRzLmV4dHJhLmNvbHVtbi5jYXRlZ29yeUdhcCAqIG9wdHMucGl4IHx8IDA7XHJcbiAgcmV0dXJuIHBvaW50cy5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpdGVtLndpZHRoID0gTWF0aC5jZWlsKGVhY2hTcGFjaW5nIC0gMiAqIGNhdGVnb3J5R2FwKTtcclxuICAgIGlmIChvcHRzLmV4dHJhLmNvbHVtbiAmJiBvcHRzLmV4dHJhLmNvbHVtbi53aWR0aCAmJiArb3B0cy5leHRyYS5jb2x1bW4ud2lkdGggPiAwKSB7XHJcbiAgICAgIGl0ZW0ud2lkdGggPSBNYXRoLm1pbihpdGVtLndpZHRoLCArb3B0cy5leHRyYS5jb2x1bW4ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXggPiAwKSB7XHJcbiAgICAgIGl0ZW0ud2lkdGggLT0gMiAqIGJvcmRlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaXhDb2x1bWVTdGFja0RhdGEocG9pbnRzLCBlYWNoU3BhY2luZywgY29sdW1uTGVuLCBpbmRleCwgY29uZmlnLCBvcHRzLCBzZXJpZXMpIHtcclxuICB2YXIgY2F0ZWdvcnlHYXAgPSBvcHRzLmV4dHJhLmNvbHVtbi5jYXRlZ29yeUdhcCAqIG9wdHMucGl4IHx8IDA7XHJcbiAgcmV0dXJuIHBvaW50cy5tYXAoZnVuY3Rpb24oaXRlbSwgaW5kZXhuKSB7XHJcbiAgICBpZiAoaXRlbSA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGl0ZW0ud2lkdGggPSBNYXRoLmNlaWwoZWFjaFNwYWNpbmcgLSAyICogY2F0ZWdvcnlHYXApO1xyXG4gICAgaWYgKG9wdHMuZXh0cmEuY29sdW1uICYmIG9wdHMuZXh0cmEuY29sdW1uLndpZHRoICYmICtvcHRzLmV4dHJhLmNvbHVtbi53aWR0aCA+IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IE1hdGgubWluKGl0ZW0ud2lkdGgsICtvcHRzLmV4dHJhLmNvbHVtbi53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgIH1cclxuICAgIGlmIChpdGVtLndpZHRoIDw9IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IDE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZml4QmFyU3RhY2tEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbiwgaW5kZXgsIGNvbmZpZywgb3B0cywgc2VyaWVzKSB7XHJcbiAgdmFyIGNhdGVnb3J5R2FwID0gb3B0cy5leHRyYS5iYXIuY2F0ZWdvcnlHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gIHJldHVybiBwb2ludHMubWFwKGZ1bmN0aW9uKGl0ZW0sIGluZGV4bikge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpdGVtLndpZHRoID0gTWF0aC5jZWlsKGVhY2hTcGFjaW5nIC0gMiAqIGNhdGVnb3J5R2FwKTtcclxuICAgIGlmIChvcHRzLmV4dHJhLmJhciAmJiBvcHRzLmV4dHJhLmJhci53aWR0aCAmJiArb3B0cy5leHRyYS5iYXIud2lkdGggPiAwKSB7XHJcbiAgICAgIGl0ZW0ud2lkdGggPSBNYXRoLm1pbihpdGVtLndpZHRoLCArb3B0cy5leHRyYS5iYXIud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbS53aWR0aCA8PSAwKSB7XHJcbiAgICAgIGl0ZW0ud2lkdGggPSAxO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW07XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFhBeGlzUG9pbnRzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZykge1xyXG4gIHZhciBzcGFjaW5nVmFsaWQgPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdO1xyXG4gIHZhciBkYXRhQ291bnQgPSBvcHRzLmVuYWJsZVNjcm9sbCA/IE1hdGgubWluKG9wdHMueEF4aXMuaXRlbUNvdW50LCBjYXRlZ29yaWVzLmxlbmd0aCkgOiBjYXRlZ29yaWVzLmxlbmd0aDtcclxuICBpZiAoKG9wdHMudHlwZSA9PSAnbGluZScgfHwgb3B0cy50eXBlID09ICdhcmVhJyB8fCBvcHRzLnR5cGUgPT0gJ3NjYXR0ZXInIHx8IG9wdHMudHlwZSA9PSAnYnViYmxlJyB8fCBvcHRzLnR5cGUgPT0gJ2JhcicpICYmIGRhdGFDb3VudCA+IDEgJiYgb3B0cy54QXhpcy5ib3VuZGFyeUdhcCA9PSAnanVzdGlmeScpIHtcclxuICAgIGRhdGFDb3VudCAtPSAxO1xyXG4gIH1cclxuICB2YXIgZWFjaFNwYWNpbmcgPSBzcGFjaW5nVmFsaWQgLyBkYXRhQ291bnQ7XHJcbiAgdmFyIHhBeGlzUG9pbnRzID0gW107XHJcbiAgdmFyIHN0YXJ0WCA9IG9wdHMuYXJlYVszXTtcclxuICB2YXIgZW5kWCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgY2F0ZWdvcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICB4QXhpc1BvaW50cy5wdXNoKHN0YXJ0WCArIGluZGV4ICogZWFjaFNwYWNpbmcpO1xyXG4gIH0pO1xyXG4gIGlmIChvcHRzLnhBeGlzLmJvdW5kYXJ5R2FwICE9PSAnanVzdGlmeScpIHtcclxuICAgIGlmIChvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgICB4QXhpc1BvaW50cy5wdXNoKHN0YXJ0WCArIGNhdGVnb3JpZXMubGVuZ3RoICogZWFjaFNwYWNpbmcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgeEF4aXNQb2ludHMucHVzaChlbmRYKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIHhBeGlzUG9pbnRzOiB4QXhpc1BvaW50cyxcclxuICAgIHN0YXJ0WDogc3RhcnRYLFxyXG4gICAgZW5kWDogZW5kWCxcclxuICAgIGVhY2hTcGFjaW5nOiBlYWNoU3BhY2luZ1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldENhbmRsZURhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZykge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDcgJiYgYXJndW1lbnRzWzddICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbN10gOiAxO1xyXG4gIHZhciBwb2ludHMgPSBbXTtcclxuICB2YXIgdmFsaWRIZWlnaHQgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIGNQb2ludHMgPSBbXTtcclxuICAgICAgaXRlbS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW1zLCBpbmRleHMpIHtcclxuICAgICAgICB2YXIgcG9pbnQgPSB7fTtcclxuICAgICAgICBwb2ludC54ID0geEF4aXNQb2ludHNbaW5kZXhdICsgTWF0aC5yb3VuZChlYWNoU3BhY2luZyAvIDIpO1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zLnZhbHVlIHx8IGl0ZW1zO1xyXG4gICAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgICBoZWlnaHQgKj0gcHJvY2VzcztcclxuICAgICAgICBwb2ludC55ID0gb3B0cy5oZWlnaHQgLSBNYXRoLnJvdW5kKGhlaWdodCkgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgY1BvaW50cy5wdXNoKHBvaW50KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHBvaW50cy5wdXNoKGNQb2ludHMpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBwb2ludHM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldERhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZykge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDcgJiYgYXJndW1lbnRzWzddICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbN10gOiAxO1xyXG4gIHZhciBib3VuZGFyeUdhcCA9ICdjZW50ZXInO1xyXG4gIGlmIChvcHRzLnR5cGUgPT0gJ2xpbmUnIHx8IG9wdHMudHlwZSA9PSAnYXJlYScgfHwgb3B0cy50eXBlID09ICdzY2F0dGVyJyB8fCBvcHRzLnR5cGUgPT0gJ2J1YmJsZScgKSB7XHJcbiAgICBib3VuZGFyeUdhcCA9IG9wdHMueEF4aXMuYm91bmRhcnlHYXA7XHJcbiAgfVxyXG4gIHZhciBwb2ludHMgPSBbXTtcclxuICB2YXIgdmFsaWRIZWlnaHQgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXTtcclxuICB2YXIgdmFsaWRXaWR0aCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM107XHJcbiAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICBpZiAoaXRlbSA9PT0gbnVsbCkge1xyXG4gICAgICBwb2ludHMucHVzaChudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBwb2ludCA9IHt9O1xyXG4gICAgICBwb2ludC5jb2xvciA9IGl0ZW0uY29sb3I7XHJcbiAgICAgIHBvaW50LnggPSB4QXhpc1BvaW50c1tpbmRleF07XHJcbiAgICAgIHZhciB2YWx1ZSA9IGl0ZW07XHJcbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChpdGVtLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkuaW5kZXhPZignQXJyYXknKSA+IC0xKSB7XHJcbiAgICAgICAgICBsZXQgeHJhbmdlcywgeG1pblJhbmdlLCB4bWF4UmFuZ2U7XHJcbiAgICAgICAgICB4cmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5yYW5nZXMpO1xyXG4gICAgICAgICAgeG1pblJhbmdlID0geHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgICAgICAgeG1heFJhbmdlID0geHJhbmdlcy5wb3AoKTtcclxuICAgICAgICAgIHZhbHVlID0gaXRlbVsxXTtcclxuICAgICAgICAgIHBvaW50LnggPSBvcHRzLmFyZWFbM10gKyB2YWxpZFdpZHRoICogKGl0ZW1bMF0gLSB4bWluUmFuZ2UpIC8gKHhtYXhSYW5nZSAtIHhtaW5SYW5nZSk7XHJcbiAgICAgICAgICBpZihvcHRzLnR5cGUgPT0gJ2J1YmJsZScpe1xyXG4gICAgICAgICAgICBwb2ludC5yID0gaXRlbVsyXTtcclxuICAgICAgICAgICAgcG9pbnQudCA9IGl0ZW1bM107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhbHVlID0gaXRlbS52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGJvdW5kYXJ5R2FwID09ICdjZW50ZXInKSB7XHJcbiAgICAgICAgcG9pbnQueCArPSBlYWNoU3BhY2luZyAvIDI7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIGhlaWdodCA9IHZhbGlkSGVpZ2h0ICogKHZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICBoZWlnaHQgKj0gcHJvY2VzcztcclxuICAgICAgcG9pbnQueSA9IG9wdHMuaGVpZ2h0IC0gaGVpZ2h0IC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICBwb2ludHMucHVzaChwb2ludCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0QmFyRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNyAmJiBhcmd1bWVudHNbN10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s3XSA6IDE7XHJcbiAgdmFyIHBvaW50cyA9IFtdO1xyXG4gIHZhciB2YWxpZEhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gIHZhciB2YWxpZFdpZHRoID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueSA9IHlBeGlzUG9pbnRzW2luZGV4XTtcclxuICAgICAgdmFyIHZhbHVlID0gaXRlbTtcclxuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBoZWlnaHQgPSB2YWxpZFdpZHRoICogKHZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICBoZWlnaHQgKj0gcHJvY2VzcztcclxuICAgICAgcG9pbnQuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICBwb2ludC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICBwb2ludC54ID0gaGVpZ2h0ICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgICBwb2ludHMucHVzaChwb2ludCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0U3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzdGFja1Nlcmllcykge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDkgJiYgYXJndW1lbnRzWzldICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbOV0gOiAxO1xyXG4gIHZhciBwb2ludHMgPSBbXTtcclxuICB2YXIgdmFsaWRIZWlnaHQgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueCA9IHhBeGlzUG9pbnRzW2luZGV4XSArIE1hdGgucm91bmQoZWFjaFNwYWNpbmcgLyAyKTtcclxuXHJcbiAgICAgIGlmIChzZXJpZXNJbmRleCA+IDApIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNlcmllc0luZGV4OyBpKyspIHtcclxuICAgICAgICAgIHZhbHVlICs9IHN0YWNrU2VyaWVzW2ldLmRhdGFbaW5kZXhdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgdmFsdWUwID0gdmFsdWUgLSBpdGVtO1xyXG4gICAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgICB2YXIgaGVpZ2h0MCA9IHZhbGlkSGVpZ2h0ICogKHZhbHVlMCAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSBpdGVtO1xyXG4gICAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgICB2YXIgaGVpZ2h0MCA9IDA7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIGhlaWdodGMgPSBoZWlnaHQwO1xyXG4gICAgICBoZWlnaHQgKj0gcHJvY2VzcztcclxuICAgICAgaGVpZ2h0YyAqPSBwcm9jZXNzO1xyXG4gICAgICBwb2ludC55ID0gb3B0cy5oZWlnaHQgLSBNYXRoLnJvdW5kKGhlaWdodCkgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgIHBvaW50LnkwID0gb3B0cy5oZWlnaHQgLSBNYXRoLnJvdW5kKGhlaWdodGMpIC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICBwb2ludHMucHVzaChwb2ludCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0QmFyU3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeUF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzdGFja1Nlcmllcykge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDkgJiYgYXJndW1lbnRzWzldICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbOV0gOiAxO1xyXG4gIHZhciBwb2ludHMgPSBbXTtcclxuICB2YXIgdmFsaWRIZWlnaHQgPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdO1xyXG4gIGRhdGEuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcG9pbnRzLnB1c2gobnVsbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgcG9pbnQgPSB7fTtcclxuICAgICAgcG9pbnQuY29sb3IgPSBpdGVtLmNvbG9yO1xyXG4gICAgICBwb2ludC55ID0geUF4aXNQb2ludHNbaW5kZXhdO1xyXG4gICAgICBpZiAoc2VyaWVzSW5kZXggPiAwKSB7XHJcbiAgICAgICAgdmFyIHZhbHVlID0gMDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBzZXJpZXNJbmRleDsgaSsrKSB7XHJcbiAgICAgICAgICB2YWx1ZSArPSBzdGFja1Nlcmllc1tpXS5kYXRhW2luZGV4XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHZhbHVlMCA9IHZhbHVlIC0gaXRlbTtcclxuICAgICAgICB2YXIgaGVpZ2h0ID0gdmFsaWRIZWlnaHQgKiAodmFsdWUgLSBtaW5SYW5nZSkgLyAobWF4UmFuZ2UgLSBtaW5SYW5nZSk7XHJcbiAgICAgICAgdmFyIGhlaWdodDAgPSB2YWxpZEhlaWdodCAqICh2YWx1ZTAgLSBtaW5SYW5nZSkgLyAobWF4UmFuZ2UgLSBtaW5SYW5nZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFyIHZhbHVlID0gaXRlbTtcclxuICAgICAgICB2YXIgaGVpZ2h0ID0gdmFsaWRIZWlnaHQgKiAodmFsdWUgLSBtaW5SYW5nZSkgLyAobWF4UmFuZ2UgLSBtaW5SYW5nZSk7XHJcbiAgICAgICAgdmFyIGhlaWdodDAgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBoZWlnaHRjID0gaGVpZ2h0MDtcclxuICAgICAgaGVpZ2h0ICo9IHByb2Nlc3M7XHJcbiAgICAgIGhlaWdodGMgKj0gcHJvY2VzcztcclxuICAgICAgcG9pbnQuaGVpZ2h0ID0gaGVpZ2h0IC0gaGVpZ2h0YztcclxuICAgICAgcG9pbnQueCA9IG9wdHMuYXJlYVszXSArIGhlaWdodDtcclxuICAgICAgcG9pbnQueDAgPSBvcHRzLmFyZWFbM10gKyBoZWlnaHRjO1xyXG4gICAgICBwb2ludHMucHVzaChwb2ludCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0WUF4aXNUZXh0TGlzdChzZXJpZXMsIG9wdHMsIGNvbmZpZywgc3RhY2ssIHlEYXRhKSB7XHJcbiAgdmFyIGluZGV4ID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiAtMTtcclxuICB2YXIgZGF0YTtcclxuICBpZiAoc3RhY2sgPT0gJ3N0YWNrJykge1xyXG4gICAgZGF0YSA9IGRhdGFDb21iaW5lU3RhY2soc2VyaWVzLCBvcHRzLmNhdGVnb3JpZXMubGVuZ3RoKTtcclxuICB9IGVsc2Uge1xyXG4gICAgZGF0YSA9IGRhdGFDb21iaW5lKHNlcmllcyk7XHJcbiAgfVxyXG4gIHZhciBzb3J0ZWQgPSBbXTtcclxuICAvLyByZW1vdmUgbnVsbCBmcm9tIGRhdGFcclxuICBkYXRhID0gZGF0YS5maWx0ZXIoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgLy9yZXR1cm4gaXRlbSAhPT0gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAoaXRlbS5jb25zdHJ1Y3Rvci50b1N0cmluZygpLmluZGV4T2YoJ0FycmF5JykgPiAtMSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtICE9PSBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBpdGVtLnZhbHVlICE9PSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaXRlbSAhPT0gbnVsbDtcclxuICAgIH1cclxuICB9KTtcclxuICBkYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIGlmIChpdGVtLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkuaW5kZXhPZignQXJyYXknKSA+IC0xKSB7XHJcbiAgICAgICAgaWYgKG9wdHMudHlwZSA9PSAnY2FuZGxlJykge1xyXG4gICAgICAgICAgaXRlbS5tYXAoZnVuY3Rpb24oc3ViaXRlbSkge1xyXG4gICAgICAgICAgICBzb3J0ZWQucHVzaChzdWJpdGVtKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNvcnRlZC5wdXNoKGl0ZW1bMV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzb3J0ZWQucHVzaChpdGVtLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc29ydGVkLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcbiAgfSlcclxuICB2YXIgbWluRGF0YSA9IHlEYXRhLm1pbiB8fCAwO1xyXG4gIHZhciBtYXhEYXRhID0geURhdGEubWF4IHx8IDA7XHJcbiAgaWYgKHNvcnRlZC5sZW5ndGggPiAwKSB7XHJcbiAgICBtaW5EYXRhID0gTWF0aC5taW4uYXBwbHkodGhpcywgc29ydGVkKTtcclxuICAgIG1heERhdGEgPSBNYXRoLm1heC5hcHBseSh0aGlzLCBzb3J0ZWQpO1xyXG4gIH1cclxuICAvL+S4uuS6huWFvOWuuXYxLjkuMOS5i+WJjeeahOmhueebrlxyXG4gIC8vIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgLy8gICBpZiAodHlwZW9mIG9wdHMueUF4aXMuZGF0YVtpbmRleF0ubWluID09PSAnbnVtYmVyJykge1xyXG4gIC8vICAgICBtaW5EYXRhID0gTWF0aC5taW4ob3B0cy55QXhpcy5kYXRhW2luZGV4XS5taW4sIG1pbkRhdGEpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgaWYgKHR5cGVvZiBvcHRzLnlBeGlzLmRhdGFbaW5kZXhdLm1heCA9PT0gJ251bWJlcicpIHtcclxuICAvLyAgICAgbWF4RGF0YSA9IE1hdGgubWF4KG9wdHMueUF4aXMuZGF0YVtpbmRleF0ubWF4LCBtYXhEYXRhKTtcclxuICAvLyAgIH1cclxuICAvLyB9IGVsc2Uge1xyXG4gIC8vICAgaWYgKHR5cGVvZiBvcHRzLnlBeGlzLm1pbiA9PT0gJ251bWJlcicpIHtcclxuICAvLyAgICAgbWluRGF0YSA9IE1hdGgubWluKG9wdHMueUF4aXMubWluLCBtaW5EYXRhKTtcclxuICAvLyAgIH1cclxuICAvLyAgIGlmICh0eXBlb2Ygb3B0cy55QXhpcy5tYXggPT09ICdudW1iZXInKSB7XHJcbiAgLy8gICAgIG1heERhdGEgPSBNYXRoLm1heChvcHRzLnlBeGlzLm1heCwgbWF4RGF0YSk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG4gIGlmIChtaW5EYXRhID09PSBtYXhEYXRhKSB7XHJcbiAgICB2YXIgcmFuZ2VTcGFuID0gbWF4RGF0YSB8fCAxMDtcclxuICAgIG1heERhdGEgKz0gcmFuZ2VTcGFuO1xyXG4gIH1cclxuICB2YXIgZGF0YVJhbmdlID0gZ2V0RGF0YVJhbmdlKG1pbkRhdGEsIG1heERhdGEpO1xyXG4gIHZhciBtaW5SYW5nZSA9IHlEYXRhLm1pbiA9PT0gdW5kZWZpbmVkIHx8IHlEYXRhLm1pbiA9PT0gbnVsbCA/IGRhdGFSYW5nZS5taW5SYW5nZSA6IHlEYXRhLm1pbjtcclxuICB2YXIgbWF4UmFuZ2UgPSB5RGF0YS5tYXggPT09IHVuZGVmaW5lZCB8fCB5RGF0YS5taW4gPT09IG51bGwgPyBkYXRhUmFuZ2UubWF4UmFuZ2UgOiB5RGF0YS5tYXg7XHJcbiAgdmFyIHJhbmdlID0gW107XHJcbiAgdmFyIGVhY2hSYW5nZSA9IChtYXhSYW5nZSAtIG1pblJhbmdlKSAvIG9wdHMueUF4aXMuc3BsaXROdW1iZXI7XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gb3B0cy55QXhpcy5zcGxpdE51bWJlcjsgaSsrKSB7XHJcbiAgICByYW5nZS5wdXNoKG1pblJhbmdlICsgZWFjaFJhbmdlICogaSk7XHJcbiAgfVxyXG4gIHJldHVybiByYW5nZS5yZXZlcnNlKCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbFlBeGlzRGF0YShzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIC8v5aCG5Y+g5Zu+6YeN566XWei9tFxyXG4gIHZhciBjb2x1bW5zdHlsZSA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogXCJcIlxyXG4gIH0sIG9wdHMuZXh0cmEuY29sdW1uKTtcclxuICAvL+WmguaenOaYr+WkmlnovbTvvIzph43mlrDorqHnrpdcclxuICB2YXIgWUxlbmd0aCA9IG9wdHMueUF4aXMuZGF0YS5sZW5ndGg7XHJcbiAgdmFyIG5ld1NlcmllcyA9IG5ldyBBcnJheShZTGVuZ3RoKTtcclxuICBpZiAoWUxlbmd0aCA+IDApIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgWUxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG5ld1Nlcmllc1tpXSA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNlcmllcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmIChzZXJpZXNbal0uaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgbmV3U2VyaWVzW2ldLnB1c2goc2VyaWVzW2pdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHZhciByYW5nZXNBcnIgPSBuZXcgQXJyYXkoWUxlbmd0aCk7XHJcbiAgICB2YXIgcmFuZ2VzRm9ybWF0QXJyID0gbmV3IEFycmF5KFlMZW5ndGgpO1xyXG4gICAgdmFyIHlBeGlzV2lkdGhBcnIgPSBuZXcgQXJyYXkoWUxlbmd0aCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBZTGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHlEYXRhID0gb3B0cy55QXhpcy5kYXRhW2ldO1xyXG4gICAgICAvL+WmguaenOaAu+W8gOWFs+S4jeaYvuekuu+8jOW8uuWItuavj+S4qlnovbTkuLrkuI3mmL7npLpcclxuICAgICAgaWYgKG9wdHMueUF4aXMuZGlzYWJsZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHlEYXRhLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZih5RGF0YS50eXBlID09PSAnY2F0ZWdvcmllcycpe1xyXG4gICAgICAgIGlmKCF5RGF0YS5mb3JtYXR0ZXIpe1xyXG4gICAgICAgICAgeURhdGEuZm9ybWF0dGVyID0gKHZhbCkgPT4ge3JldHVybiB2YWwgKyAoeURhdGEudW5pdCB8fCAnJyl9O1xyXG4gICAgICAgIH1cclxuICAgICAgICB5RGF0YS5jYXRlZ29yaWVzID0geURhdGEuY2F0ZWdvcmllcyB8fCBvcHRzLmNhdGVnb3JpZXM7XHJcbiAgICAgICAgcmFuZ2VzQXJyW2ldID0geURhdGEuY2F0ZWdvcmllcztcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgaWYoIXlEYXRhLmZvcm1hdHRlcil7XHJcbiAgICAgICAgICB5RGF0YS5mb3JtYXR0ZXIgPSAodmFsKSA9PiB7cmV0dXJuIHZhbC50b0ZpeGVkKHlEYXRhLnRvZml4KSArICh5RGF0YS51bml0IHx8ICcnKX07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJhbmdlc0FycltpXSA9IGdldFlBeGlzVGV4dExpc3QobmV3U2VyaWVzW2ldLCBvcHRzLCBjb25maWcsIGNvbHVtbnN0eWxlLnR5cGUsIHlEYXRhLCBpKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgeUF4aXNGb250U2l6ZXMgPSB5RGF0YS5mb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgICAgeUF4aXNXaWR0aEFycltpXSA9IHtcclxuICAgICAgICBwb3NpdGlvbjogeURhdGEucG9zaXRpb24gPyB5RGF0YS5wb3NpdGlvbiA6ICdsZWZ0JyxcclxuICAgICAgICB3aWR0aDogMFxyXG4gICAgICB9O1xyXG4gICAgICByYW5nZXNGb3JtYXRBcnJbaV0gPSByYW5nZXNBcnJbaV0ubWFwKGZ1bmN0aW9uKGl0ZW1zKSB7XHJcbiAgICAgICAgaXRlbXMgPSB5RGF0YS5mb3JtYXR0ZXIoaXRlbXMpO1xyXG4gICAgICAgIHlBeGlzV2lkdGhBcnJbaV0ud2lkdGggPSBNYXRoLm1heCh5QXhpc1dpZHRoQXJyW2ldLndpZHRoLCBtZWFzdXJlVGV4dChpdGVtcywgeUF4aXNGb250U2l6ZXMsIGNvbnRleHQpICsgNSk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xyXG4gICAgICB9KTtcclxuICAgICAgbGV0IGNhbGlicmF0aW9uID0geURhdGEuY2FsaWJyYXRpb24gPyA0ICogb3B0cy5waXggOiAwO1xyXG4gICAgICB5QXhpc1dpZHRoQXJyW2ldLndpZHRoICs9IGNhbGlicmF0aW9uICsgMyAqIG9wdHMucGl4O1xyXG4gICAgICBpZiAoeURhdGEuZGlzYWJsZWQgPT09IHRydWUpIHtcclxuICAgICAgICB5QXhpc1dpZHRoQXJyW2ldLndpZHRoID0gMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICB2YXIgcmFuZ2VzQXJyID0gbmV3IEFycmF5KDEpO1xyXG4gICAgdmFyIHJhbmdlc0Zvcm1hdEFyciA9IG5ldyBBcnJheSgxKTtcclxuICAgIHZhciB5QXhpc1dpZHRoQXJyID0gbmV3IEFycmF5KDEpO1xyXG4gICAgaWYob3B0cy50eXBlID09PSAnYmFyJyl7XHJcbiAgICAgIHJhbmdlc0FyclswXSA9IG9wdHMuY2F0ZWdvcmllcztcclxuICAgICAgaWYoIW9wdHMueUF4aXMuZm9ybWF0dGVyKXtcclxuICAgICAgICBvcHRzLnlBeGlzLmZvcm1hdHRlciA9ICh2YWwpID0+IHtyZXR1cm4gdmFsICsgKG9wdHMueUF4aXMudW5pdCB8fCAnJyl9XHJcbiAgICAgIH1cclxuICAgIH1lbHNle1xyXG4gICAgICBpZighb3B0cy55QXhpcy5mb3JtYXR0ZXIpe1xyXG4gICAgICAgIG9wdHMueUF4aXMuZm9ybWF0dGVyID0gKHZhbCkgPT4ge3JldHVybiB2YWwudG9GaXhlZChvcHRzLnlBeGlzLnRvZml4ICkgKyAob3B0cy55QXhpcy51bml0IHx8ICcnKX1cclxuICAgICAgfVxyXG4gICAgICByYW5nZXNBcnJbMF0gPSBnZXRZQXhpc1RleHRMaXN0KHNlcmllcywgb3B0cywgY29uZmlnLCBjb2x1bW5zdHlsZS50eXBlLCB7fSk7XHJcbiAgICB9XHJcbiAgICB5QXhpc1dpZHRoQXJyWzBdID0ge1xyXG4gICAgICBwb3NpdGlvbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMFxyXG4gICAgfTtcclxuICAgIHZhciB5QXhpc0ZvbnRTaXplID0gb3B0cy55QXhpcy5mb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgIHJhbmdlc0Zvcm1hdEFyclswXSA9IHJhbmdlc0FyclswXS5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgICBpdGVtID0gb3B0cy55QXhpcy5mb3JtYXR0ZXIoaXRlbSk7XHJcbiAgICAgIHlBeGlzV2lkdGhBcnJbMF0ud2lkdGggPSBNYXRoLm1heCh5QXhpc1dpZHRoQXJyWzBdLndpZHRoLCBtZWFzdXJlVGV4dChpdGVtLCB5QXhpc0ZvbnRTaXplLCBjb250ZXh0KSArIDUpO1xyXG4gICAgICByZXR1cm4gaXRlbTtcclxuICAgIH0pO1xyXG4gICAgeUF4aXNXaWR0aEFyclswXS53aWR0aCArPSAzICogb3B0cy5waXg7XHJcbiAgICBpZiAob3B0cy55QXhpcy5kaXNhYmxlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICB5QXhpc1dpZHRoQXJyWzBdID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXHJcbiAgICAgICAgd2lkdGg6IDBcclxuICAgICAgfTtcclxuICAgICAgb3B0cy55QXhpcy5kYXRhWzBdID0ge1xyXG4gICAgICAgIGRpc2FibGVkOiB0cnVlXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvcHRzLnlBeGlzLmRhdGFbMF0gPSB7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXHJcbiAgICAgICAgbWF4OiBvcHRzLnlBeGlzLm1heCxcclxuICAgICAgICBtaW46IG9wdHMueUF4aXMubWluLFxyXG4gICAgICAgIGZvcm1hdHRlcjogb3B0cy55QXhpcy5mb3JtYXR0ZXJcclxuICAgICAgfTtcclxuICAgICAgaWYob3B0cy50eXBlID09PSAnYmFyJyl7XHJcbiAgICAgICAgb3B0cy55QXhpcy5kYXRhWzBdLmNhdGVnb3JpZXMgPSBvcHRzLmNhdGVnb3JpZXM7XHJcbiAgICAgICAgb3B0cy55QXhpcy5kYXRhWzBdLnR5cGUgPSAnY2F0ZWdvcmllcyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIHJhbmdlc0Zvcm1hdDogcmFuZ2VzRm9ybWF0QXJyLFxyXG4gICAgcmFuZ2VzOiByYW5nZXNBcnIsXHJcbiAgICB5QXhpc1dpZHRoOiB5QXhpc1dpZHRoQXJyXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FsVG9vbHRpcFlBeGlzRGF0YShwb2ludCwgc2VyaWVzLCBvcHRzLCBjb25maWcsIGVhY2hTcGFjaW5nKSB7XHJcbiAgbGV0IHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzKTtcclxuICBsZXQgc3BhY2luZ1ZhbGlkID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgbGV0IG1pbkF4aXMgPSBvcHRzLmFyZWFbMF07XHJcbiAgbGV0IGl0ZW1zID0gW107XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBtYXhWYWwgPSByYW5nZXNbaV0uc2hpZnQoKTtcclxuICAgIGxldCBtaW5WYWwgPSByYW5nZXNbaV0ucG9wKCk7XHJcbiAgICBsZXQgaXRlbSA9IG1heFZhbCAtIChtYXhWYWwgLSBtaW5WYWwpICogKHBvaW50IC0gbWluQXhpcykgLyBzcGFjaW5nVmFsaWQ7XHJcbiAgICBpdGVtID0gb3B0cy55QXhpcy5kYXRhW2ldLmZvcm1hdHRlciA/IG9wdHMueUF4aXMuZGF0YVtpXS5mb3JtYXR0ZXIoaXRlbSkgOiBpdGVtLnRvRml4ZWQoMCk7XHJcbiAgICBpdGVtcy5wdXNoKFN0cmluZyhpdGVtKSlcclxuICB9XHJcbiAgcmV0dXJuIGl0ZW1zO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxNYXJrTGluZURhdGEocG9pbnRzLCBvcHRzKSB7XHJcbiAgbGV0IG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICBsZXQgc3BhY2luZ1ZhbGlkID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgIHBvaW50c1tpXS55QXhpc0luZGV4ID0gcG9pbnRzW2ldLnlBeGlzSW5kZXggPyBwb2ludHNbaV0ueUF4aXNJbmRleCA6IDA7XHJcbiAgICBsZXQgcmFuZ2UgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1twb2ludHNbaV0ueUF4aXNJbmRleF0pO1xyXG4gICAgbWluUmFuZ2UgPSByYW5nZS5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2Uuc2hpZnQoKTtcclxuICAgIGxldCBoZWlnaHQgPSBzcGFjaW5nVmFsaWQgKiAocG9pbnRzW2ldLnZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgcG9pbnRzW2ldLnkgPSBvcHRzLmhlaWdodCAtIE1hdGgucm91bmQoaGVpZ2h0KSAtIG9wdHMuYXJlYVsyXTtcclxuICB9XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKSB7XHJcbiAgaWYgKG9wdHMucm90YXRlTG9jayAhPT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5oZWlnaHQsIDApO1xyXG4gICAgY29udGV4dC5yb3RhdGUoOTAgKiBNYXRoLlBJIC8gMTgwKTtcclxuICB9IGVsc2UgaWYgKG9wdHMuX3JvdGF0ZV8gIT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuaGVpZ2h0LCAwKTtcclxuICAgIGNvbnRleHQucm90YXRlKDkwICogTWF0aC5QSSAvIDE4MCk7XHJcbiAgICBvcHRzLl9yb3RhdGVfID0gdHJ1ZTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdQb2ludFNoYXBlKHBvaW50cywgY29sb3IsIHNoYXBlLCBjb250ZXh0LCBvcHRzKSB7XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBpZiAob3B0cy5kYXRhUG9pbnRTaGFwZVR5cGUgPT0gJ2hvbGxvdycpIHtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoY29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUob3B0cy5iYWNrZ3JvdW5kKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDIgKiBvcHRzLnBpeCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoXCIjZmZmZmZmXCIpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoY29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICB9XHJcbiAgaWYgKHNoYXBlID09PSAnZGlhbW9uZCcpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkgLSA0LjUpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCAtIDQuNSwgaXRlbS55KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54ICsgNC41LCBpdGVtLnkpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55IC0gNC41KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ2NpcmNsZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54ICsgMi41ICogb3B0cy5waXgsIGl0ZW0ueSk7XHJcbiAgICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIDMgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3NxdWFyZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54IC0gMy41LCBpdGVtLnkgLSAzLjUpO1xyXG4gICAgICAgIGNvbnRleHQucmVjdChpdGVtLnggLSAzLjUsIGl0ZW0ueSAtIDMuNSwgNywgNyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gZWxzZSBpZiAoc2hhcGUgPT09ICd0cmlhbmdsZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkgLSA0LjUpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCAtIDQuNSwgaXRlbS55ICsgNC41KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkgLSA0LjUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9IGVsc2UgaWYgKHNoYXBlID09PSAndHJpYW5nbGUnKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgY29udGV4dC5maWxsKCk7XHJcbiAgY29udGV4dC5zdHJva2UoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1JpbmdUaXRsZShvcHRzLCBjb25maWcsIGNvbnRleHQsIGNlbnRlcikge1xyXG4gIHZhciB0aXRsZWZvbnRTaXplID0gb3B0cy50aXRsZS5mb250U2l6ZSB8fCBjb25maWcudGl0bGVGb250U2l6ZTtcclxuICB2YXIgc3VidGl0bGVmb250U2l6ZSA9IG9wdHMuc3VidGl0bGUuZm9udFNpemUgfHwgY29uZmlnLnN1YnRpdGxlRm9udFNpemU7XHJcbiAgdmFyIHRpdGxlID0gb3B0cy50aXRsZS5uYW1lIHx8ICcnO1xyXG4gIHZhciBzdWJ0aXRsZSA9IG9wdHMuc3VidGl0bGUubmFtZSB8fCAnJztcclxuICB2YXIgdGl0bGVGb250Q29sb3IgPSBvcHRzLnRpdGxlLmNvbG9yIHx8IG9wdHMuZm9udENvbG9yO1xyXG4gIHZhciBzdWJ0aXRsZUZvbnRDb2xvciA9IG9wdHMuc3VidGl0bGUuY29sb3IgfHwgb3B0cy5mb250Q29sb3I7XHJcbiAgdmFyIHRpdGxlSGVpZ2h0ID0gdGl0bGUgPyB0aXRsZWZvbnRTaXplIDogMDtcclxuICB2YXIgc3VidGl0bGVIZWlnaHQgPSBzdWJ0aXRsZSA/IHN1YnRpdGxlZm9udFNpemUgOiAwO1xyXG4gIHZhciBtYXJnaW4gPSA1O1xyXG4gIGlmIChzdWJ0aXRsZSkge1xyXG4gICAgdmFyIHRleHRXaWR0aCA9IG1lYXN1cmVUZXh0KHN1YnRpdGxlLCBzdWJ0aXRsZWZvbnRTaXplICogb3B0cy5waXgsIGNvbnRleHQpO1xyXG4gICAgdmFyIHN0YXJ0WCA9IGNlbnRlci54IC0gdGV4dFdpZHRoIC8gMiArIChvcHRzLnN1YnRpdGxlLm9mZnNldFh8fCAwKSAqIG9wdHMucGl4IDtcclxuICAgIHZhciBzdGFydFkgPSBjZW50ZXIueSArIHN1YnRpdGxlZm9udFNpemUgKiBvcHRzLnBpeCAvIDIgKyAob3B0cy5zdWJ0aXRsZS5vZmZzZXRZIHx8IDApICogb3B0cy5waXg7XHJcbiAgICBpZiAodGl0bGUpIHtcclxuICAgICAgc3RhcnRZICs9ICh0aXRsZUhlaWdodCAqIG9wdHMucGl4ICsgbWFyZ2luKSAvIDI7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShzdWJ0aXRsZWZvbnRTaXplICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoc3VidGl0bGVGb250Q29sb3IpO1xyXG4gICAgY29udGV4dC5maWxsVGV4dChzdWJ0aXRsZSwgc3RhcnRYLCBzdGFydFkpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfVxyXG4gIGlmICh0aXRsZSkge1xyXG4gICAgdmFyIF90ZXh0V2lkdGggPSBtZWFzdXJlVGV4dCh0aXRsZSwgdGl0bGVmb250U2l6ZSAqIG9wdHMucGl4LCBjb250ZXh0KTtcclxuICAgIHZhciBfc3RhcnRYID0gY2VudGVyLnggLSBfdGV4dFdpZHRoIC8gMiArIChvcHRzLnRpdGxlLm9mZnNldFggfHwgMCk7XHJcbiAgICB2YXIgX3N0YXJ0WSA9IGNlbnRlci55ICsgdGl0bGVmb250U2l6ZSAqIG9wdHMucGl4IC8gMiArIChvcHRzLnRpdGxlLm9mZnNldFkgfHwgMCkgKiBvcHRzLnBpeDtcclxuICAgIGlmIChzdWJ0aXRsZSkge1xyXG4gICAgICBfc3RhcnRZIC09IChzdWJ0aXRsZUhlaWdodCAqIG9wdHMucGl4ICsgbWFyZ2luKSAvIDI7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZSh0aXRsZWZvbnRTaXplICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUodGl0bGVGb250Q29sb3IpO1xyXG4gICAgY29udGV4dC5maWxsVGV4dCh0aXRsZSwgX3N0YXJ0WCwgX3N0YXJ0WSk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdQb2ludFRleHQocG9pbnRzLCBzZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cykge1xyXG4gIC8vIOe7mOWItuaVsOaNruaWh+ahiFxyXG4gIHZhciBkYXRhID0gc2VyaWVzLmRhdGE7XHJcbiAgdmFyIHRleHRPZmZzZXQgPSBzZXJpZXMudGV4dE9mZnNldCA/IHNlcmllcy50ZXh0T2Zmc2V0IDogMDtcclxuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgdmFyIGZvbnRTaXplID0gc2VyaWVzLnRleHRTaXplID8gc2VyaWVzLnRleHRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemU7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShzZXJpZXMudGV4dENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgdmFyIHZhbHVlID0gZGF0YVtpbmRleF1cclxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2luZGV4XSA9PT0gJ29iamVjdCcgJiYgZGF0YVtpbmRleF0gIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoZGF0YVtpbmRleF0uY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpPi0xKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbaW5kZXhdWzFdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbaW5kZXhdLnZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHZhciBmb3JtYXRWYWwgPSBzZXJpZXMuZm9ybWF0dGVyID8gc2VyaWVzLmZvcm1hdHRlcih2YWx1ZSxpbmRleCkgOiB2YWx1ZTtcclxuICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhmb3JtYXRWYWwpLCBpdGVtLngsIGl0ZW0ueSAtIDQgKyB0ZXh0T2Zmc2V0ICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3QmFyUG9pbnRUZXh0KHBvaW50cywgc2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpIHtcclxuICAvLyDnu5jliLbmlbDmja7mlofmoYhcclxuICB2YXIgZGF0YSA9IHNlcmllcy5kYXRhO1xyXG4gIHZhciB0ZXh0T2Zmc2V0ID0gc2VyaWVzLnRleHRPZmZzZXQgPyBzZXJpZXMudGV4dE9mZnNldCA6IDA7XHJcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIHZhciBmb250U2l6ZSA9IHNlcmllcy50ZXh0U2l6ZSA/IHNlcmllcy50ZXh0U2l6ZSAqIG9wdHMucGl4IDogY29uZmlnLmZvbnRTaXplO1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoc2VyaWVzLnRleHRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgIHZhciB2YWx1ZSA9IGRhdGFbaW5kZXhdXHJcbiAgICAgIGlmICh0eXBlb2YgZGF0YVtpbmRleF0gPT09ICdvYmplY3QnICYmIGRhdGFbaW5kZXhdICE9PSBudWxsKSB7XHJcbiAgICAgICAgdmFsdWUgPSBkYXRhW2luZGV4XS52YWx1ZSA7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIGZvcm1hdFZhbCA9IHNlcmllcy5mb3JtYXR0ZXIgPyBzZXJpZXMuZm9ybWF0dGVyKHZhbHVlLGluZGV4KSA6IHZhbHVlO1xyXG4gICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhmb3JtYXRWYWwpLCBpdGVtLnggKyA0ICogb3B0cy5waXggLCBpdGVtLnkgKyBmb250U2l6ZSAvIDIgLSAzICk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdHYXVnZUxhYmVsKGdhdWdlT3B0aW9uLCByYWRpdXMsIGNlbnRlclBvc2l0aW9uLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICByYWRpdXMgLT0gZ2F1Z2VPcHRpb24ud2lkdGggLyAyICsgZ2F1Z2VPcHRpb24ubGFiZWxPZmZzZXQgKiBvcHRzLnBpeDtcclxuICBsZXQgdG90YWxBbmdsZSA9IGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgLSBnYXVnZU9wdGlvbi5lbmRBbmdsZSArIDE7XHJcbiAgbGV0IHNwbGl0QW5nbGUgPSB0b3RhbEFuZ2xlIC8gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLnNwbGl0TnVtYmVyO1xyXG4gIGxldCB0b3RhbE51bWJlciA9IGdhdWdlT3B0aW9uLmVuZE51bWJlciAtIGdhdWdlT3B0aW9uLnN0YXJ0TnVtYmVyO1xyXG4gIGxldCBzcGxpdE51bWJlciA9IHRvdGFsTnVtYmVyIC8gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLnNwbGl0TnVtYmVyO1xyXG4gIGxldCBub3dBbmdsZSA9IGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgbGV0IG5vd051bWJlciA9IGdhdWdlT3B0aW9uLnN0YXJ0TnVtYmVyO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLnNwbGl0TnVtYmVyICsgMTsgaSsrKSB7XHJcbiAgICB2YXIgcG9zID0ge1xyXG4gICAgICB4OiByYWRpdXMgKiBNYXRoLmNvcyhub3dBbmdsZSAqIE1hdGguUEkpLFxyXG4gICAgICB5OiByYWRpdXMgKiBNYXRoLnNpbihub3dBbmdsZSAqIE1hdGguUEkpXHJcbiAgICB9O1xyXG4gICAgdmFyIGxhYmVsVGV4dCA9IGdhdWdlT3B0aW9uLmZvcm1hdHRlciA/IGdhdWdlT3B0aW9uLmZvcm1hdHRlcihub3dOdW1iZXIpIDogbm93TnVtYmVyO1xyXG4gICAgcG9zLnggKz0gY2VudGVyUG9zaXRpb24ueCAtIG1lYXN1cmVUZXh0KGxhYmVsVGV4dCwgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KSAvIDI7XHJcbiAgICBwb3MueSArPSBjZW50ZXJQb3NpdGlvbi55O1xyXG4gICAgdmFyIHN0YXJ0WCA9IHBvcy54O1xyXG4gICAgdmFyIHN0YXJ0WSA9IHBvcy55O1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGdhdWdlT3B0aW9uLmxhYmVsQ29sb3IgfHwgb3B0cy5mb250Q29sb3IpO1xyXG4gICAgY29udGV4dC5maWxsVGV4dChsYWJlbFRleHQsIHN0YXJ0WCwgc3RhcnRZICsgY29uZmlnLmZvbnRTaXplIC8gMik7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIG5vd0FuZ2xlICs9IHNwbGl0QW5nbGU7XHJcbiAgICBpZiAobm93QW5nbGUgPj0gMikge1xyXG4gICAgICBub3dBbmdsZSA9IG5vd0FuZ2xlICUgMjtcclxuICAgIH1cclxuICAgIG5vd051bWJlciArPSBzcGxpdE51bWJlcjtcclxuICB9XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3UmFkYXJMYWJlbChhbmdsZUxpc3QsIHJhZGl1cywgY2VudGVyUG9zaXRpb24sIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciByYWRhck9wdGlvbiA9IG9wdHMuZXh0cmEucmFkYXIgfHwge307XHJcbiAgcmFkaXVzICs9IGNvbmZpZy5yYWRhckxhYmVsVGV4dE1hcmdpbiAqIG9wdHMucGl4O1xyXG4gIGFuZ2xlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGFuZ2xlLCBpbmRleCkge1xyXG4gICAgdmFyIHBvcyA9IHtcclxuICAgICAgeDogcmFkaXVzICogTWF0aC5jb3MoYW5nbGUpLFxyXG4gICAgICB5OiByYWRpdXMgKiBNYXRoLnNpbihhbmdsZSlcclxuICAgIH07XHJcbiAgICB2YXIgcG9zUmVsYXRpdmVDYW52YXMgPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihwb3MueCwgcG9zLnksIGNlbnRlclBvc2l0aW9uKTtcclxuICAgIHZhciBzdGFydFggPSBwb3NSZWxhdGl2ZUNhbnZhcy54O1xyXG4gICAgdmFyIHN0YXJ0WSA9IHBvc1JlbGF0aXZlQ2FudmFzLnk7XHJcbiAgICBpZiAodXRpbC5hcHByb3hpbWF0ZWx5RXF1YWwocG9zLngsIDApKSB7XHJcbiAgICAgIHN0YXJ0WCAtPSBtZWFzdXJlVGV4dChvcHRzLmNhdGVnb3JpZXNbaW5kZXhdIHx8ICcnLCBjb25maWcuZm9udFNpemUsIGNvbnRleHQpIC8gMjtcclxuICAgIH0gZWxzZSBpZiAocG9zLnggPCAwKSB7XHJcbiAgICAgIHN0YXJ0WCAtPSBtZWFzdXJlVGV4dChvcHRzLmNhdGVnb3JpZXNbaW5kZXhdIHx8ICcnLCBjb25maWcuZm9udFNpemUsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHJhZGFyT3B0aW9uLmxhYmVsQ29sb3IgfHwgb3B0cy5mb250Q29sb3IpO1xyXG4gICAgY29udGV4dC5maWxsVGV4dChvcHRzLmNhdGVnb3JpZXNbaW5kZXhdIHx8ICcnLCBzdGFydFgsIHN0YXJ0WSArIGNvbmZpZy5mb250U2l6ZSAvIDIpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfSk7XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3UGllVGV4dChzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcmFkaXVzLCBjZW50ZXIpIHtcclxuICB2YXIgbGluZVJhZGl1cyA9IGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nO1xyXG4gIHZhciB0ZXh0T2JqZWN0Q29sbGVjdGlvbiA9IFtdO1xyXG4gIHZhciBsYXN0VGV4dE9iamVjdCA9IG51bGw7XHJcbiAgdmFyIHNlcmllc0NvbnZlcnQgPSBzZXJpZXMubWFwKGZ1bmN0aW9uKGl0ZW0saW5kZXgsc2VyaWVzKSB7XHJcbiAgICB2YXIgdGV4dCA9IGl0ZW0uZm9ybWF0dGVyID8gaXRlbS5mb3JtYXR0ZXIoaXRlbSxpbmRleCxzZXJpZXMpIDogdXRpbC50b0ZpeGVkKGl0ZW0uX3Byb3BvcnRpb25fLnRvRml4ZWQoNCkgKiAxMDApICsgJyUnO1xyXG4gICAgdmFyIGFyYyA9IDIgKiBNYXRoLlBJIC0gKGl0ZW0uX3N0YXJ0XyArIDIgKiBNYXRoLlBJICogaXRlbS5fcHJvcG9ydGlvbl8gLyAyKTtcclxuICAgIGlmIChpdGVtLl9yb3NlX3Byb3BvcnRpb25fKSB7XHJcbiAgICAgIGFyYyA9IDIgKiBNYXRoLlBJIC0gKGl0ZW0uX3N0YXJ0XyArIDIgKiBNYXRoLlBJICogaXRlbS5fcm9zZV9wcm9wb3J0aW9uXyAvIDIpO1xyXG4gICAgfVxyXG4gICAgdmFyIGNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgIHZhciByYWRpdXMgPSBpdGVtLl9yYWRpdXNfO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYXJjOiBhcmMsXHJcbiAgICAgIHRleHQ6IHRleHQsXHJcbiAgICAgIGNvbG9yOiBjb2xvcixcclxuICAgICAgcmFkaXVzOiByYWRpdXMsXHJcbiAgICAgIHRleHRDb2xvcjogaXRlbS50ZXh0Q29sb3IsXHJcbiAgICAgIHRleHRTaXplOiBpdGVtLnRleHRTaXplLFxyXG4gICAgfTtcclxuICB9KTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllc0NvbnZlcnQubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBpdGVtID0gc2VyaWVzQ29udmVydFtpXTtcclxuICAgIC8vIGxpbmUgZW5kXHJcbiAgICBsZXQgb3JnaW5YMSA9IE1hdGguY29zKGl0ZW0uYXJjKSAqIChpdGVtLnJhZGl1cyArIGxpbmVSYWRpdXMpO1xyXG4gICAgbGV0IG9yZ2luWTEgPSBNYXRoLnNpbihpdGVtLmFyYykgKiAoaXRlbS5yYWRpdXMgKyBsaW5lUmFkaXVzKTtcclxuICAgIC8vIGxpbmUgc3RhcnRcclxuICAgIGxldCBvcmdpblgyID0gTWF0aC5jb3MoaXRlbS5hcmMpICogaXRlbS5yYWRpdXM7XHJcbiAgICBsZXQgb3JnaW5ZMiA9IE1hdGguc2luKGl0ZW0uYXJjKSAqIGl0ZW0ucmFkaXVzO1xyXG4gICAgLy8gdGV4dCBzdGFydFxyXG4gICAgbGV0IG9yZ2luWDMgPSBvcmdpblgxID49IDAgPyBvcmdpblgxICsgY29uZmlnLnBpZUNoYXJ0VGV4dFBhZGRpbmcgOiBvcmdpblgxIC0gY29uZmlnLnBpZUNoYXJ0VGV4dFBhZGRpbmc7XHJcbiAgICBsZXQgb3JnaW5ZMyA9IG9yZ2luWTE7XHJcbiAgICBsZXQgdGV4dFdpZHRoID0gbWVhc3VyZVRleHQoaXRlbS50ZXh0LCBpdGVtLnRleHRTaXplICogb3B0cy5waXggfHwgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KTtcclxuICAgIGxldCBzdGFydFkgPSBvcmdpblkzO1xyXG4gICAgaWYgKGxhc3RUZXh0T2JqZWN0ICYmIHV0aWwuaXNTYW1lWENvb3JkaW5hdGVBcmVhKGxhc3RUZXh0T2JqZWN0LnN0YXJ0LCB7XHJcbiAgICAgICAgeDogb3JnaW5YM1xyXG4gICAgICB9KSkge1xyXG4gICAgICBpZiAob3JnaW5YMyA+IDApIHtcclxuICAgICAgICBzdGFydFkgPSBNYXRoLm1pbihvcmdpblkzLCBsYXN0VGV4dE9iamVjdC5zdGFydC55KTtcclxuICAgICAgfSBlbHNlIGlmIChvcmdpblgxIDwgMCkge1xyXG4gICAgICAgIHN0YXJ0WSA9IE1hdGgubWF4KG9yZ2luWTMsIGxhc3RUZXh0T2JqZWN0LnN0YXJ0LnkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChvcmdpblkzID4gMCkge1xyXG4gICAgICAgICAgc3RhcnRZID0gTWF0aC5tYXgob3JnaW5ZMywgbGFzdFRleHRPYmplY3Quc3RhcnQueSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHN0YXJ0WSA9IE1hdGgubWluKG9yZ2luWTMsIGxhc3RUZXh0T2JqZWN0LnN0YXJ0LnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG9yZ2luWDMgPCAwKSB7XHJcbiAgICAgIG9yZ2luWDMgLT0gdGV4dFdpZHRoO1xyXG4gICAgfVxyXG4gICAgbGV0IHRleHRPYmplY3QgPSB7XHJcbiAgICAgIGxpbmVTdGFydDoge1xyXG4gICAgICAgIHg6IG9yZ2luWDIsXHJcbiAgICAgICAgeTogb3JnaW5ZMlxyXG4gICAgICB9LFxyXG4gICAgICBsaW5lRW5kOiB7XHJcbiAgICAgICAgeDogb3JnaW5YMSxcclxuICAgICAgICB5OiBvcmdpblkxXHJcbiAgICAgIH0sXHJcbiAgICAgIHN0YXJ0OiB7XHJcbiAgICAgICAgeDogb3JnaW5YMyxcclxuICAgICAgICB5OiBzdGFydFlcclxuICAgICAgfSxcclxuICAgICAgd2lkdGg6IHRleHRXaWR0aCxcclxuICAgICAgaGVpZ2h0OiBjb25maWcuZm9udFNpemUsXHJcbiAgICAgIHRleHQ6IGl0ZW0udGV4dCxcclxuICAgICAgY29sb3I6IGl0ZW0uY29sb3IsXHJcbiAgICAgIHRleHRDb2xvcjogaXRlbS50ZXh0Q29sb3IsXHJcbiAgICAgIHRleHRTaXplOiBpdGVtLnRleHRTaXplXHJcbiAgICB9O1xyXG4gICAgbGFzdFRleHRPYmplY3QgPSBhdm9pZENvbGxpc2lvbih0ZXh0T2JqZWN0LCBsYXN0VGV4dE9iamVjdCk7XHJcbiAgICB0ZXh0T2JqZWN0Q29sbGVjdGlvbi5wdXNoKGxhc3RUZXh0T2JqZWN0KTtcclxuICB9XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0T2JqZWN0Q29sbGVjdGlvbi5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSB0ZXh0T2JqZWN0Q29sbGVjdGlvbltpXTtcclxuICAgIGxldCBsaW5lU3RhcnRQb2lzdGlvbiA9IGNvbnZlcnRDb29yZGluYXRlT3JpZ2luKGl0ZW0ubGluZVN0YXJ0LngsIGl0ZW0ubGluZVN0YXJ0LnksIGNlbnRlcik7XHJcbiAgICBsZXQgbGluZUVuZFBvaXN0aW9uID0gY29udmVydENvb3JkaW5hdGVPcmlnaW4oaXRlbS5saW5lRW5kLngsIGl0ZW0ubGluZUVuZC55LCBjZW50ZXIpO1xyXG4gICAgbGV0IHRleHRQb3NpdGlvbiA9IGNvbnZlcnRDb29yZGluYXRlT3JpZ2luKGl0ZW0uc3RhcnQueCwgaXRlbS5zdGFydC55LCBjZW50ZXIpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoaXRlbS50ZXh0U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZSk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0uY29sb3IpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8obGluZVN0YXJ0UG9pc3Rpb24ueCwgbGluZVN0YXJ0UG9pc3Rpb24ueSk7XHJcbiAgICBsZXQgY3VydmVTdGFydFggPSBpdGVtLnN0YXJ0LnggPCAwID8gdGV4dFBvc2l0aW9uLnggKyBpdGVtLndpZHRoIDogdGV4dFBvc2l0aW9uLng7XHJcbiAgICBsZXQgdGV4dFN0YXJ0WCA9IGl0ZW0uc3RhcnQueCA8IDAgPyB0ZXh0UG9zaXRpb24ueCAtIDUgOiB0ZXh0UG9zaXRpb24ueCArIDU7XHJcbiAgICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8obGluZUVuZFBvaXN0aW9uLngsIGxpbmVFbmRQb2lzdGlvbi55LCBjdXJ2ZVN0YXJ0WCwgdGV4dFBvc2l0aW9uLnkpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8obGluZVN0YXJ0UG9pc3Rpb24ueCwgbGluZVN0YXJ0UG9pc3Rpb24ueSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0Lm1vdmVUbyh0ZXh0UG9zaXRpb24ueCArIGl0ZW0ud2lkdGgsIHRleHRQb3NpdGlvbi55KTtcclxuICAgIGNvbnRleHQuYXJjKGN1cnZlU3RhcnRYLCB0ZXh0UG9zaXRpb24ueSwgMiwgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoaXRlbS50ZXh0U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZSk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLnRleHRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KGl0ZW0udGV4dCwgdGV4dFN0YXJ0WCwgdGV4dFBvc2l0aW9uLnkgKyAzKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdUb29sVGlwU3BsaXRMaW5lKG9mZnNldFgsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gb3B0cy5leHRyYS50b29sdGlwIHx8IHt9O1xyXG4gIHRvb2xUaXBPcHRpb24uZ3JpZFR5cGUgPSB0b29sVGlwT3B0aW9uLmdyaWRUeXBlID09IHVuZGVmaW5lZCA/ICdzb2xpZCcgOiB0b29sVGlwT3B0aW9uLmdyaWRUeXBlO1xyXG4gIHRvb2xUaXBPcHRpb24uZGFzaExlbmd0aCA9IHRvb2xUaXBPcHRpb24uZGFzaExlbmd0aCA9PSB1bmRlZmluZWQgPyA0IDogdG9vbFRpcE9wdGlvbi5kYXNoTGVuZ3RoO1xyXG4gIHZhciBzdGFydFkgPSBvcHRzLmFyZWFbMF07XHJcbiAgdmFyIGVuZFkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxuICBpZiAodG9vbFRpcE9wdGlvbi5ncmlkVHlwZSA9PSAnZGFzaCcpIHtcclxuICAgIGNvbnRleHQuc2V0TGluZURhc2goW3Rvb2xUaXBPcHRpb24uZGFzaExlbmd0aCwgdG9vbFRpcE9wdGlvbi5kYXNoTGVuZ3RoXSk7XHJcbiAgfVxyXG4gIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodG9vbFRpcE9wdGlvbi5ncmlkQ29sb3IgfHwgJyNjY2NjY2MnKTtcclxuICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgY29udGV4dC5tb3ZlVG8ob2Zmc2V0WCwgc3RhcnRZKTtcclxuICBjb250ZXh0LmxpbmVUbyhvZmZzZXRYLCBlbmRZKTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gIGlmICh0b29sVGlwT3B0aW9uLnhBeGlzTGFiZWwpIHtcclxuICAgIGxldCBsYWJlbFRleHQgPSBvcHRzLmNhdGVnb3JpZXNbb3B0cy50b29sdGlwLmluZGV4XTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGxldCB0ZXh0V2lkdGggPSBtZWFzdXJlVGV4dChsYWJlbFRleHQsIGNvbmZpZy5mb250U2l6ZSwgY29udGV4dCk7XHJcbiAgICBsZXQgdGV4dFggPSBvZmZzZXRYIC0gMC41ICogdGV4dFdpZHRoO1xyXG4gICAgbGV0IHRleHRZID0gZW5kWTtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYih0b29sVGlwT3B0aW9uLmxhYmVsQmdDb2xvciB8fCBjb25maWcudG9vbFRpcEJhY2tncm91bmQsIHRvb2xUaXBPcHRpb24ubGFiZWxCZ09wYWNpdHkgfHwgY29uZmlnLnRvb2xUaXBPcGFjaXR5KSk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHRvb2xUaXBPcHRpb24ubGFiZWxCZ0NvbG9yIHx8IGNvbmZpZy50b29sVGlwQmFja2dyb3VuZCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5yZWN0KHRleHRYIC0gY29uZmlnLnRvb2xUaXBQYWRkaW5nLCB0ZXh0WSwgdGV4dFdpZHRoICsgMiAqIGNvbmZpZy50b29sVGlwUGFkZGluZywgY29uZmlnLmZvbnRTaXplICsgMiAqIGNvbmZpZy50b29sVGlwUGFkZGluZyk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHRvb2xUaXBPcHRpb24ubGFiZWxGb250Q29sb3IgfHwgb3B0cy5mb250Q29sb3IpO1xyXG4gICAgY29udGV4dC5maWxsVGV4dChTdHJpbmcobGFiZWxUZXh0KSwgdGV4dFgsIHRleHRZICsgY29uZmlnLnRvb2xUaXBQYWRkaW5nICsgY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd01hcmtMaW5lKG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIGxldCBtYXJrTGluZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ3NvbGlkJyxcclxuICAgIGRhc2hMZW5ndGg6IDQsXHJcbiAgICBkYXRhOiBbXVxyXG4gIH0sIG9wdHMuZXh0cmEubWFya0xpbmUpO1xyXG4gIGxldCBzdGFydFggPSBvcHRzLmFyZWFbM107XHJcbiAgbGV0IGVuZFggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdO1xyXG4gIGxldCBwb2ludHMgPSBjYWxNYXJrTGluZURhdGEobWFya0xpbmVPcHRpb24uZGF0YSwgb3B0cyk7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBpdGVtID0gYXNzaWduKHt9LCB7XHJcbiAgICAgIGxpbmVDb2xvcjogJyNERTRBNDInLFxyXG4gICAgICBzaG93TGFiZWw6IGZhbHNlLFxyXG4gICAgICBsYWJlbEZvbnRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICBsYWJlbEJnQ29sb3I6ICcjREZFOEZGJyxcclxuICAgICAgbGFiZWxCZ09wYWNpdHk6IDAuOCxcclxuICAgICAgeUF4aXNJbmRleDogMFxyXG4gICAgfSwgcG9pbnRzW2ldKTtcclxuICAgIGlmIChtYXJrTGluZU9wdGlvbi50eXBlID09ICdkYXNoJykge1xyXG4gICAgICBjb250ZXh0LnNldExpbmVEYXNoKFttYXJrTGluZU9wdGlvbi5kYXNoTGVuZ3RoLCBtYXJrTGluZU9wdGlvbi5kYXNoTGVuZ3RoXSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGl0ZW0ubGluZUNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgY29udGV4dC5saW5lVG8oZW5kWCwgaXRlbS55KTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcclxuICAgIGlmIChpdGVtLnNob3dMYWJlbCkge1xyXG4gICAgICBsZXQgbGFiZWxUZXh0ID0gb3B0cy55QXhpcy5mb3JtYXR0ZXIgPyBvcHRzLnlBeGlzLmZvcm1hdHRlcihpdGVtLnZhbHVlKSA6IGl0ZW0udmFsdWU7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgICAgbGV0IHRleHRXaWR0aCA9IG1lYXN1cmVUZXh0KGxhYmVsVGV4dCwgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KTtcclxuICAgICAgbGV0IHlBeGlzV2lkdGggPSBvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEueUF4aXNXaWR0aFswXS53aWR0aDtcclxuICAgICAgbGV0IGJnU3RhcnRYID0gb3B0cy5hcmVhWzNdIC0gdGV4dFdpZHRoIC0gY29uZmlnLnRvb2xUaXBQYWRkaW5nICogMjtcclxuICAgICAgbGV0IGJnRW5kWCA9IG9wdHMuYXJlYVszXTtcclxuICAgICAgbGV0IGJnV2lkdGggPSBiZ0VuZFggLSBiZ1N0YXJ0WDtcclxuICAgICAgbGV0IHRleHRYID0gYmdFbmRYIC0gY29uZmlnLnRvb2xUaXBQYWRkaW5nO1xyXG4gICAgICBsZXQgdGV4dFkgPSBpdGVtLnk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKGl0ZW0ubGFiZWxCZ0NvbG9yLCBpdGVtLmxhYmVsQmdPcGFjaXR5KSk7XHJcbiAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaXRlbS5sYWJlbEJnQ29sb3IpO1xyXG4gICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnJlY3QoYmdTdGFydFgsIHRleHRZIC0gMC41ICogY29uZmlnLmZvbnRTaXplIC0gY29uZmlnLnRvb2xUaXBQYWRkaW5nLCBiZ1dpZHRoLCBjb25maWcuZm9udFNpemUgKyAyICogY29uZmlnLnRvb2xUaXBQYWRkaW5nKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ3JpZ2h0Jyk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0ubGFiZWxGb250Q29sb3IpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhsYWJlbFRleHQpLCB0ZXh0WCwgdGV4dFkgKyAwLjUgKiBjb25maWcuZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1Rvb2xUaXBIb3JpemVudGFsTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBncmlkVHlwZTogJ3NvbGlkJyxcclxuICAgIGRhc2hMZW5ndGg6IDRcclxuICB9LCBvcHRzLmV4dHJhLnRvb2x0aXApO1xyXG4gIHZhciBzdGFydFggPSBvcHRzLmFyZWFbM107XHJcbiAgdmFyIGVuZFggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdO1xyXG4gIGlmICh0b29sVGlwT3B0aW9uLmdyaWRUeXBlID09ICdkYXNoJykge1xyXG4gICAgY29udGV4dC5zZXRMaW5lRGFzaChbdG9vbFRpcE9wdGlvbi5kYXNoTGVuZ3RoLCB0b29sVGlwT3B0aW9uLmRhc2hMZW5ndGhdKTtcclxuICB9XHJcbiAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0b29sVGlwT3B0aW9uLmdyaWRDb2xvciB8fCAnI2NjY2NjYycpO1xyXG4gIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIG9wdHMudG9vbHRpcC5vZmZzZXQueSk7XHJcbiAgY29udGV4dC5saW5lVG8oZW5kWCwgb3B0cy50b29sdGlwLm9mZnNldC55KTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gIGlmICh0b29sVGlwT3B0aW9uLnlBeGlzTGFiZWwpIHtcclxuICAgIGxldCBsYWJlbFRleHQgPSBjYWxUb29sdGlwWUF4aXNEYXRhKG9wdHMudG9vbHRpcC5vZmZzZXQueSwgb3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgZWFjaFNwYWNpbmcpO1xyXG4gICAgbGV0IHdpZHRoQXJyID0gb3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnlBeGlzV2lkdGg7XHJcbiAgICBsZXQgdFN0YXJ0TGVmdCA9IG9wdHMuYXJlYVszXTtcclxuICAgIGxldCB0U3RhcnRSaWdodCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxhYmVsVGV4dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKGNvbmZpZy5mb250U2l6ZSk7XHJcbiAgICAgIGxldCB0ZXh0V2lkdGggPSBtZWFzdXJlVGV4dChsYWJlbFRleHRbaV0sIGNvbmZpZy5mb250U2l6ZSwgY29udGV4dCk7XHJcbiAgICAgIGxldCBiZ1N0YXJ0WCwgYmdFbmRYLCBiZ1dpZHRoO1xyXG4gICAgICBpZiAod2lkdGhBcnJbaV0ucG9zaXRpb24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgYmdTdGFydFggPSB0U3RhcnRMZWZ0IC0gd2lkdGhBcnJbaV0ud2lkdGg7XHJcbiAgICAgICAgYmdFbmRYID0gTWF0aC5tYXgoYmdTdGFydFgsIGJnU3RhcnRYICsgdGV4dFdpZHRoICsgY29uZmlnLnRvb2xUaXBQYWRkaW5nICogMik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYmdTdGFydFggPSB0U3RhcnRSaWdodDtcclxuICAgICAgICBiZ0VuZFggPSBNYXRoLm1heChiZ1N0YXJ0WCArIHdpZHRoQXJyW2ldLndpZHRoLCBiZ1N0YXJ0WCArIHRleHRXaWR0aCArIGNvbmZpZy50b29sVGlwUGFkZGluZyAqIDIpO1xyXG4gICAgICB9XHJcbiAgICAgIGJnV2lkdGggPSBiZ0VuZFggLSBiZ1N0YXJ0WDtcclxuICAgICAgbGV0IHRleHRYID0gYmdTdGFydFggKyAoYmdXaWR0aCAtIHRleHRXaWR0aCkgLyAyO1xyXG4gICAgICBsZXQgdGV4dFkgPSBvcHRzLnRvb2x0aXAub2Zmc2V0Lnk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKHRvb2xUaXBPcHRpb24ubGFiZWxCZ0NvbG9yIHx8IGNvbmZpZy50b29sVGlwQmFja2dyb3VuZCwgdG9vbFRpcE9wdGlvbi5sYWJlbEJnT3BhY2l0eSB8fCBjb25maWcudG9vbFRpcE9wYWNpdHkpKTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0b29sVGlwT3B0aW9uLmxhYmVsQmdDb2xvciB8fCBjb25maWcudG9vbFRpcEJhY2tncm91bmQpO1xyXG4gICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LnJlY3QoYmdTdGFydFgsIHRleHRZIC0gMC41ICogY29uZmlnLmZvbnRTaXplIC0gY29uZmlnLnRvb2xUaXBQYWRkaW5nLCBiZ1dpZHRoLCBjb25maWcuZm9udFNpemUgKyAyICpcclxuICAgICAgICBjb25maWcudG9vbFRpcFBhZGRpbmcpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRGb250U2l6ZShjb25maWcuZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZSh0b29sVGlwT3B0aW9uLmxhYmVsRm9udENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgY29udGV4dC5maWxsVGV4dChsYWJlbFRleHRbaV0sIHRleHRYLCB0ZXh0WSArIDAuNSAqIGNvbmZpZy5mb250U2l6ZSk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGlmICh3aWR0aEFycltpXS5wb3NpdGlvbiA9PSAnbGVmdCcpIHtcclxuICAgICAgICB0U3RhcnRMZWZ0IC09ICh3aWR0aEFycltpXS53aWR0aCArIG9wdHMueUF4aXMucGFkZGluZyAqIG9wdHMucGl4KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0U3RhcnRSaWdodCArPSB3aWR0aEFycltpXS53aWR0aCArIG9wdHMueUF4aXMucGFkZGluZyAqIG9wdHMucGl4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3VG9vbFRpcFNwbGl0QXJlYShvZmZzZXRYLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIGVhY2hTcGFjaW5nKSB7XHJcbiAgdmFyIHRvb2xUaXBPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIGFjdGl2ZUJnQ29sb3I6ICcjMDAwMDAwJyxcclxuICAgIGFjdGl2ZUJnT3BhY2l0eTogMC4wOFxyXG4gIH0sIG9wdHMuZXh0cmEuY29sdW1uKTtcclxuICB2YXIgc3RhcnRZID0gb3B0cy5hcmVhWzBdO1xyXG4gIHZhciBlbmRZID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYih0b29sVGlwT3B0aW9uLmFjdGl2ZUJnQ29sb3IsIHRvb2xUaXBPcHRpb24uYWN0aXZlQmdPcGFjaXR5KSk7XHJcbiAgY29udGV4dC5yZWN0KG9mZnNldFggLSBlYWNoU3BhY2luZyAvIDIsIHN0YXJ0WSwgZWFjaFNwYWNpbmcsIGVuZFkgLSBzdGFydFkpO1xyXG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgY29udGV4dC5maWxsKCk7XHJcbiAgY29udGV4dC5zZXRGaWxsU3R5bGUoXCIjRkZGRkZGXCIpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3QmFyVG9vbFRpcFNwbGl0QXJlYShvZmZzZXRYLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIGVhY2hTcGFjaW5nKSB7XHJcbiAgdmFyIHRvb2xUaXBPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIGFjdGl2ZUJnQ29sb3I6ICcjMDAwMDAwJyxcclxuICAgIGFjdGl2ZUJnT3BhY2l0eTogMC4wOFxyXG4gIH0sIG9wdHMuZXh0cmEuYmFyKTtcclxuICB2YXIgc3RhcnRYID0gb3B0cy5hcmVhWzNdO1xyXG4gIHZhciBlbmRYID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXTtcclxuICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKHRvb2xUaXBPcHRpb24uYWN0aXZlQmdDb2xvciwgdG9vbFRpcE9wdGlvbi5hY3RpdmVCZ09wYWNpdHkpKTtcclxuICBjb250ZXh0LnJlY3QoIHN0YXJ0WCAsb2Zmc2V0WCAtIGVhY2hTcGFjaW5nIC8gMiAsICBlbmRYIC0gc3RhcnRYLGVhY2hTcGFjaW5nKTtcclxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gIGNvbnRleHQuZmlsbCgpO1xyXG4gIGNvbnRleHQuc2V0RmlsbFN0eWxlKFwiI0ZGRkZGRlwiKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1Rvb2xUaXAodGV4dExpc3QsIG9mZnNldCwgb3B0cywgY29uZmlnLCBjb250ZXh0LCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpIHtcclxuICB2YXIgdG9vbFRpcE9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgc2hvd0JveDogdHJ1ZSxcclxuICAgIHNob3dBcnJvdzogdHJ1ZSxcclxuICAgIHNob3dDYXRlZ29yeTogZmFsc2UsXHJcbiAgICBiZ0NvbG9yOiAnIzAwMDAwMCcsXHJcbiAgICBiZ09wYWNpdHk6IDAuNyxcclxuICAgIGJvcmRlckNvbG9yOiAnIzAwMDAwMCcsXHJcbiAgICBib3JkZXJXaWR0aDogMCxcclxuICAgIGJvcmRlclJhZGl1czogMCxcclxuICAgIGJvcmRlck9wYWNpdHk6IDAuNyxcclxuICAgIGZvbnRDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgc3BsaXRMaW5lOiB0cnVlLFxyXG4gIH0sIG9wdHMuZXh0cmEudG9vbHRpcCk7XHJcbiAgaWYodG9vbFRpcE9wdGlvbi5zaG93Q2F0ZWdvcnk9PXRydWUgJiYgb3B0cy5jYXRlZ29yaWVzKXtcclxuICAgIHRleHRMaXN0LnVuc2hpZnQoe3RleHQ6b3B0cy5jYXRlZ29yaWVzW29wdHMudG9vbHRpcC5pbmRleF0sY29sb3I6bnVsbH0pXHJcbiAgfVxyXG4gIHZhciBsZWdlbmRXaWR0aCA9IDQgKiBvcHRzLnBpeDtcclxuICB2YXIgbGVnZW5kTWFyZ2luUmlnaHQgPSA1ICogb3B0cy5waXg7XHJcbiAgdmFyIGFycm93V2lkdGggPSB0b29sVGlwT3B0aW9uLnNob3dBcnJvdyA/IDggKiBvcHRzLnBpeCA6IDA7XHJcbiAgdmFyIGlzT3ZlclJpZ2h0Qm9yZGVyID0gZmFsc2U7XHJcbiAgaWYgKG9wdHMudHlwZSA9PSAnbGluZScgfHwgb3B0cy50eXBlID09ICdhcmVhJyB8fCBvcHRzLnR5cGUgPT0gJ2NhbmRsZScgfHwgb3B0cy50eXBlID09ICdtaXgnKSB7XHJcbiAgICBpZiAodG9vbFRpcE9wdGlvbi5zcGxpdExpbmUgPT0gdHJ1ZSkge1xyXG4gICAgICBkcmF3VG9vbFRpcFNwbGl0TGluZShvcHRzLnRvb2x0aXAub2Zmc2V0LngsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9mZnNldCA9IGFzc2lnbih7XHJcbiAgICB4OiAwLFxyXG4gICAgeTogMFxyXG4gIH0sIG9mZnNldCk7XHJcbiAgb2Zmc2V0LnkgLT0gOCAqIG9wdHMucGl4O1xyXG4gIHZhciB0ZXh0V2lkdGggPSB0ZXh0TGlzdC5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgcmV0dXJuIG1lYXN1cmVUZXh0KGl0ZW0udGV4dCwgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KTtcclxuICB9KTtcclxuICB2YXIgdG9vbFRpcFdpZHRoID0gbGVnZW5kV2lkdGggKyBsZWdlbmRNYXJnaW5SaWdodCArIDQgKiBjb25maWcudG9vbFRpcFBhZGRpbmcgKyBNYXRoLm1heC5hcHBseShudWxsLCB0ZXh0V2lkdGgpO1xyXG4gIHZhciB0b29sVGlwSGVpZ2h0ID0gMiAqIGNvbmZpZy50b29sVGlwUGFkZGluZyArIHRleHRMaXN0Lmxlbmd0aCAqIGNvbmZpZy50b29sVGlwTGluZUhlaWdodDtcclxuICBpZiAodG9vbFRpcE9wdGlvbi5zaG93Qm94ID09IGZhbHNlKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgLy8gaWYgYmV5b25kIHRoZSByaWdodCBib3JkZXJcclxuICBpZiAob2Zmc2V0LnggLSBNYXRoLmFicyhvcHRzLl9zY3JvbGxEaXN0YW5jZV8gfHwgMCkgKyBhcnJvd1dpZHRoICsgdG9vbFRpcFdpZHRoID4gb3B0cy53aWR0aCkge1xyXG4gICAgaXNPdmVyUmlnaHRCb3JkZXIgPSB0cnVlO1xyXG4gIH1cclxuICBpZiAodG9vbFRpcEhlaWdodCArIG9mZnNldC55ID4gb3B0cy5oZWlnaHQpIHtcclxuICAgIG9mZnNldC55ID0gb3B0cy5oZWlnaHQgLSB0b29sVGlwSGVpZ2h0O1xyXG4gIH1cclxuICAvLyBkcmF3IGJhY2tncm91bmQgcmVjdFxyXG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2IodG9vbFRpcE9wdGlvbi5iZ0NvbG9yIHx8IGNvbmZpZy50b29sVGlwQmFja2dyb3VuZCwgdG9vbFRpcE9wdGlvbi5iZ09wYWNpdHkgfHwgY29uZmlnLnRvb2xUaXBPcGFjaXR5KSk7XHJcbiAgY29udGV4dC5zZXRMaW5lV2lkdGgodG9vbFRpcE9wdGlvbi5ib3JkZXJXaWR0aCAqIG9wdHMucGl4KTtcclxuICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGhleFRvUmdiKHRvb2xUaXBPcHRpb24uYm9yZGVyQ29sb3IsIHRvb2xUaXBPcHRpb24uYm9yZGVyT3BhY2l0eSkpO1xyXG4gIHZhciByYWRpdXMgPSB0b29sVGlwT3B0aW9uLmJvcmRlclJhZGl1cztcclxuICBpZiAoaXNPdmVyUmlnaHRCb3JkZXIpIHtcclxuICAgIGlmICh0b29sVGlwT3B0aW9uLnNob3dBcnJvdykge1xyXG4gICAgICBjb250ZXh0Lm1vdmVUbyhvZmZzZXQueCwgb2Zmc2V0LnkgKyAxMCAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5saW5lVG8ob2Zmc2V0LnggLSBhcnJvd1dpZHRoLCBvZmZzZXQueSArIDEwICogb3B0cy5waXggKyA1ICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5hcmMob2Zmc2V0LnggLSBhcnJvd1dpZHRoIC0gcmFkaXVzLCBvZmZzZXQueSArIHRvb2xUaXBIZWlnaHQgLSByYWRpdXMsIHJhZGl1cywgMCwgTWF0aC5QSSAvIDIsIGZhbHNlKTtcclxuICAgIGNvbnRleHQuYXJjKG9mZnNldC54IC0gYXJyb3dXaWR0aCAtIE1hdGgucm91bmQodG9vbFRpcFdpZHRoKSArIHJhZGl1cywgb2Zmc2V0LnkgKyB0b29sVGlwSGVpZ2h0IC0gcmFkaXVzLCByYWRpdXMsXHJcbiAgICAgIE1hdGguUEkgLyAyLCBNYXRoLlBJLCBmYWxzZSk7XHJcbiAgICBjb250ZXh0LmFyYyhvZmZzZXQueCAtIGFycm93V2lkdGggLSBNYXRoLnJvdW5kKHRvb2xUaXBXaWR0aCkgKyByYWRpdXMsIG9mZnNldC55ICsgcmFkaXVzLCByYWRpdXMsIC1NYXRoLlBJLCAtTWF0aC5QSSAvIDIsIGZhbHNlKTtcclxuICAgIGNvbnRleHQuYXJjKG9mZnNldC54IC0gYXJyb3dXaWR0aCAtIHJhZGl1cywgb2Zmc2V0LnkgKyByYWRpdXMsIHJhZGl1cywgLU1hdGguUEkgLyAyLCAwLCBmYWxzZSk7XHJcbiAgICBpZiAodG9vbFRpcE9wdGlvbi5zaG93QXJyb3cpIHtcclxuICAgICAgY29udGV4dC5saW5lVG8ob2Zmc2V0LnggLSBhcnJvd1dpZHRoLCBvZmZzZXQueSArIDEwICogb3B0cy5waXggLSA1ICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhvZmZzZXQueCwgb2Zmc2V0LnkgKyAxMCAqIG9wdHMucGl4KTtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgaWYgKHRvb2xUaXBPcHRpb24uc2hvd0Fycm93KSB7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKG9mZnNldC54LCBvZmZzZXQueSArIDEwICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhvZmZzZXQueCArIGFycm93V2lkdGgsIG9mZnNldC55ICsgMTAgKiBvcHRzLnBpeCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmFyYyhvZmZzZXQueCArIGFycm93V2lkdGggKyByYWRpdXMsIG9mZnNldC55ICsgcmFkaXVzLCByYWRpdXMsIC1NYXRoLlBJLCAtTWF0aC5QSSAvIDIsIGZhbHNlKTtcclxuICAgIGNvbnRleHQuYXJjKG9mZnNldC54ICsgYXJyb3dXaWR0aCArIE1hdGgucm91bmQodG9vbFRpcFdpZHRoKSAtIHJhZGl1cywgb2Zmc2V0LnkgKyByYWRpdXMsIHJhZGl1cywgLU1hdGguUEkgLyAyLCAwLFxyXG4gICAgICBmYWxzZSk7XHJcbiAgICBjb250ZXh0LmFyYyhvZmZzZXQueCArIGFycm93V2lkdGggKyBNYXRoLnJvdW5kKHRvb2xUaXBXaWR0aCkgLSByYWRpdXMsIG9mZnNldC55ICsgdG9vbFRpcEhlaWdodCAtIHJhZGl1cywgcmFkaXVzLCAwLFxyXG4gICAgICBNYXRoLlBJIC8gMiwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5hcmMob2Zmc2V0LnggKyBhcnJvd1dpZHRoICsgcmFkaXVzLCBvZmZzZXQueSArIHRvb2xUaXBIZWlnaHQgLSByYWRpdXMsIHJhZGl1cywgTWF0aC5QSSAvIDIsIE1hdGguUEksIGZhbHNlKTtcclxuICAgIGlmICh0b29sVGlwT3B0aW9uLnNob3dBcnJvdykge1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhvZmZzZXQueCArIGFycm93V2lkdGgsIG9mZnNldC55ICsgMTAgKiBvcHRzLnBpeCArIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKG9mZnNldC54LCBvZmZzZXQueSArIDEwICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gIGNvbnRleHQuZmlsbCgpO1xyXG4gIGlmICh0b29sVGlwT3B0aW9uLmJvcmRlcldpZHRoID4gMCkge1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICB9XHJcbiAgLy8gZHJhdyBsZWdlbmRcclxuICB0ZXh0TGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICBpZiAoaXRlbS5jb2xvciAhPT0gbnVsbCkge1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgICAgdmFyIHN0YXJ0WCA9IG9mZnNldC54ICsgYXJyb3dXaWR0aCArIDIgKiBjb25maWcudG9vbFRpcFBhZGRpbmc7XHJcbiAgICAgIHZhciBzdGFydFkgPSBvZmZzZXQueSArIChjb25maWcudG9vbFRpcExpbmVIZWlnaHQgLSBjb25maWcuZm9udFNpemUpIC8gMiArIGNvbmZpZy50b29sVGlwTGluZUhlaWdodCAqIGluZGV4ICsgY29uZmlnLnRvb2xUaXBQYWRkaW5nICsgMTtcclxuICAgICAgaWYgKGlzT3ZlclJpZ2h0Qm9yZGVyKSB7XHJcbiAgICAgICAgc3RhcnRYID0gb2Zmc2V0LnggLSB0b29sVGlwV2lkdGggLSBhcnJvd1dpZHRoICsgMiAqIGNvbmZpZy50b29sVGlwUGFkZGluZztcclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LmZpbGxSZWN0KHN0YXJ0WCwgc3RhcnRZLCBsZWdlbmRXaWR0aCwgY29uZmlnLmZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIH1cclxuICB9KTtcclxuICAvLyBkcmF3IHRleHQgbGlzdFxyXG4gIHRleHRMaXN0LmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIHZhciBzdGFydFggPSBvZmZzZXQueCArIGFycm93V2lkdGggKyAyICogY29uZmlnLnRvb2xUaXBQYWRkaW5nICsgbGVnZW5kV2lkdGggKyBsZWdlbmRNYXJnaW5SaWdodDtcclxuICAgIGlmIChpc092ZXJSaWdodEJvcmRlcikge1xyXG4gICAgICBzdGFydFggPSBvZmZzZXQueCAtIHRvb2xUaXBXaWR0aCAtIGFycm93V2lkdGggKyAyICogY29uZmlnLnRvb2xUaXBQYWRkaW5nICsgK2xlZ2VuZFdpZHRoICsgbGVnZW5kTWFyZ2luUmlnaHQ7XHJcbiAgICB9XHJcbiAgICB2YXIgc3RhcnRZID0gb2Zmc2V0LnkgKyAoY29uZmlnLnRvb2xUaXBMaW5lSGVpZ2h0IC0gY29uZmlnLmZvbnRTaXplKSAvIDIgKyBjb25maWcudG9vbFRpcExpbmVIZWlnaHQgKiBpbmRleCArIGNvbmZpZy50b29sVGlwUGFkZGluZztcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldEZvbnRTaXplKGNvbmZpZy5mb250U2l6ZSk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZSh0b29sVGlwT3B0aW9uLmZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KGl0ZW0udGV4dCwgc3RhcnRYLCBzdGFydFkgKyBjb25maWcuZm9udFNpemUpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdDb2x1bW5EYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IGNvbHVtbk9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ2dyb3VwJyxcclxuICAgIHdpZHRoOiBlYWNoU3BhY2luZyAvIDIsXHJcbiAgICBtZXRlckJvcmRlcjogNCxcclxuICAgIG1ldGVyRmlsbENvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICBiYXJCb3JkZXJDaXJjbGU6IGZhbHNlLFxyXG4gICAgYmFyQm9yZGVyUmFkaXVzOiBbXSxcclxuICAgIHNlcmllc0dhcDogMixcclxuICAgIGxpbmVhclR5cGU6ICdub25lJyxcclxuICAgIGxpbmVhck9wYWNpdHk6IDEsXHJcbiAgICBjdXN0b21Db2xvcjogW10sXHJcbiAgICBjb2xvclN0b3A6IDAsXHJcbiAgfSwgb3B0cy5leHRyYS5jb2x1bW4pO1xyXG4gIGxldCBjYWxQb2ludHMgPSBbXTtcclxuICBjb250ZXh0LnNhdmUoKTtcclxuICBsZXQgbGVmdE51bSA9IC0yO1xyXG4gIGxldCByaWdodE51bSA9IHhBeGlzUG9pbnRzLmxlbmd0aCArIDI7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0TnVtID0gTWF0aC5mbG9vcigtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC8gZWFjaFNwYWNpbmcpIC0gMjtcclxuICAgIHJpZ2h0TnVtID0gbGVmdE51bSArIG9wdHMueEF4aXMuaXRlbUNvdW50ICsgNDtcclxuICB9XHJcbiAgaWYgKG9wdHMudG9vbHRpcCAmJiBvcHRzLnRvb2x0aXAudGV4dExpc3QgJiYgb3B0cy50b29sdGlwLnRleHRMaXN0Lmxlbmd0aCAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3VG9vbFRpcFNwbGl0QXJlYShvcHRzLnRvb2x0aXAub2Zmc2V0LngsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcpO1xyXG4gIH1cclxuICBjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3IgPSBmaWxsQ3VzdG9tQ29sb3IoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUsIGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvciwgc2VyaWVzLCBjb25maWcpO1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHN3aXRjaCAoY29sdW1uT3B0aW9uLnR5cGUpIHtcclxuICAgICAgY2FzZSAnZ3JvdXAnOlxyXG4gICAgICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICAgIHZhciB0b29sdGlwUG9pbnRzID0gZ2V0U3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzZXJpZXMsIHByb2Nlc3MpO1xyXG4gICAgICAgIGNhbFBvaW50cy5wdXNoKHRvb2x0aXBQb2ludHMpO1xyXG4gICAgICAgIHBvaW50cyA9IGZpeENvbHVtZURhdGEocG9pbnRzLCBlYWNoU3BhY2luZywgc2VyaWVzLmxlbmd0aCwgc2VyaWVzSW5kZXgsIGNvbmZpZywgb3B0cyk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgLy9maXggaXNzdWVzL0kyN0IxTiB5eW9pbmdlICYgSm9lc2h1XHJcbiAgICAgICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiBpID4gbGVmdE51bSAmJiBpIDwgcmlnaHROdW0pIHtcclxuICAgICAgICAgICAgdmFyIHN0YXJ0WCA9IGl0ZW0ueCAtIGl0ZW0ud2lkdGggLyAyO1xyXG4gICAgICAgICAgICB2YXIgaGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBpdGVtLnkgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIHZhciBmaWxsQ29sb3IgPSBpdGVtLmNvbG9yIHx8IGVhY2hTZXJpZXMuY29sb3JcclxuICAgICAgICAgICAgdmFyIHN0cm9rZUNvbG9yID0gaXRlbS5jb2xvciB8fCBlYWNoU2VyaWVzLmNvbG9yXHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24ubGluZWFyVHlwZSAhPT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGdyZCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoc3RhcnRYLCBpdGVtLnksIHN0YXJ0WCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICAgIC8v6YCP5piO5riQ5Y+YXHJcbiAgICAgICAgICAgICAgaWYgKGNvbHVtbk9wdGlvbi5saW5lYXJUeXBlID09ICdvcGFjaXR5Jykge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihmaWxsQ29sb3IsIGNvbHVtbk9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvcltlYWNoU2VyaWVzLmxpbmVhckluZGV4XSwgY29sdW1uT3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoY29sdW1uT3B0aW9uLmNvbG9yU3RvcCwgaGV4VG9SZ2IoY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLGNvbHVtbk9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmaWxsQ29sb3IgPSBncmRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDlnIbop5LovrnmoYZcclxuICAgICAgICAgICAgaWYgKChjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzICYmIGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXMubGVuZ3RoID09PSA0KSB8fCBjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IHN0YXJ0WDtcclxuICAgICAgICAgICAgICBjb25zdCB0b3AgPSBpdGVtLnk7XHJcbiAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBpdGVtLndpZHRoO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdIC0gaXRlbS55O1xyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlKSB7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzID0gW3dpZHRoIC8gMiwgd2lkdGggLyAyLCAwLCAwXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgbGV0IFtyMCwgcjEsIHIyLCByM10gPSBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzO1xyXG4gICAgICAgICAgICAgIGxldCBtaW5SYWRpdXMgPSBNYXRoLm1pbih3aWR0aC8yLGhlaWdodC8yKTtcclxuICAgICAgICAgICAgICByMCA9IHIwID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjA7XHJcbiAgICAgICAgICAgICAgcjEgPSByMSA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIxO1xyXG4gICAgICAgICAgICAgIHIyID0gcjIgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMjtcclxuICAgICAgICAgICAgICByMyA9IHIzID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjM7XHJcbiAgICAgICAgICAgICAgcjAgPSByMCA8IDAgPyAwIDogcjA7XHJcbiAgICAgICAgICAgICAgcjEgPSByMSA8IDAgPyAwIDogcjE7XHJcbiAgICAgICAgICAgICAgcjIgPSByMiA8IDAgPyAwIDogcjI7XHJcbiAgICAgICAgICAgICAgcjMgPSByMyA8IDAgPyAwIDogcjM7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHIwLCB0b3AgKyByMCwgcjAsIC1NYXRoLlBJLCAtTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyB3aWR0aCAtIHIxLCB0b3AgKyByMSwgcjEsIC1NYXRoLlBJIC8gMiwgMCk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHdpZHRoIC0gcjIsIHRvcCArIGhlaWdodCAtIHIyLCByMiwgMCwgTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyByMywgdG9wICsgaGVpZ2h0IC0gcjMsIHIzLCBNYXRoLlBJIC8gMiwgTWF0aC5QSSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIGl0ZW0ud2lkdGggLSAyLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIGl0ZW0ud2lkdGggLSAyLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEpXHJcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShzdHJva2VDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgICAgLy9jb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdzdGFjayc6XHJcbiAgICAgICAgLy8g57uY5Yi25aCG5Y+g5pWw5o2u5Zu+XHJcbiAgICAgICAgdmFyIHBvaW50cyA9IGdldFN0YWNrRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBzZXJpZXNJbmRleCwgc2VyaWVzLCBwcm9jZXNzKTtcclxuICAgICAgICBjYWxQb2ludHMucHVzaChwb2ludHMpO1xyXG4gICAgICAgIHBvaW50cyA9IGZpeENvbHVtZVN0YWNrRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBzZXJpZXMubGVuZ3RoLCBzZXJpZXNJbmRleCwgY29uZmlnLCBvcHRzLCBzZXJpZXMpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tpXTtcclxuICAgICAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIGkgPiBsZWZ0TnVtICYmIGkgPCByaWdodE51bSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICB2YXIgZmlsbENvbG9yID0gaXRlbS5jb2xvciB8fCBlYWNoU2VyaWVzLmNvbG9yO1xyXG4gICAgICAgICAgICB2YXIgc3RhcnRYID0gaXRlbS54IC0gaXRlbS53aWR0aCAvIDIgKyAxO1xyXG4gICAgICAgICAgICB2YXIgaGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBpdGVtLnkgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQwID0gb3B0cy5oZWlnaHQgLSBpdGVtLnkwIC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICAgICAgICBpZiAoc2VyaWVzSW5kZXggPiAwKSB7XHJcbiAgICAgICAgICAgICAgaGVpZ2h0IC09IGhlaWdodDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHN0YXJ0WCwgaXRlbS55LCBpdGVtLndpZHRoIC0gMiwgaGVpZ2h0KTtcclxuICAgICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbWV0ZXInOlxyXG4gICAgICAgIC8vIOe7mOWItua4qeW6puiuoeaVsOaNruWbvlxyXG4gICAgICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICAgIGNhbFBvaW50cy5wdXNoKHBvaW50cyk7XHJcbiAgICAgICAgcG9pbnRzID0gZml4Q29sdW1lTWV0ZXJEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIHNlcmllcy5sZW5ndGgsIHNlcmllc0luZGV4LCBjb25maWcsIG9wdHMsIGNvbHVtbk9wdGlvbi5tZXRlckJvcmRlcik7XHJcbiAgICAgICAgaWYgKHNlcmllc0luZGV4ID09IDApIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiBpID4gbGVmdE51bSAmJiBpIDwgcmlnaHROdW0pIHtcclxuICAgICAgICAgICAgICAvL+eUu+iDjOaZr+minOiJslxyXG4gICAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoY29sdW1uT3B0aW9uLm1ldGVyRmlsbENvbG9yKTtcclxuICAgICAgICAgICAgICB2YXIgc3RhcnRYID0gaXRlbS54IC0gaXRlbS53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gaXRlbS55IC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmFyQm9yZGVyUmFkaXVzID0gKGl0ZW0ud2lkdGggLSBjb2x1bW5PcHRpb24ubWV0ZXJCb3JkZXIqMikgLyAyO1xyXG4gICAgICAgICAgICAgICAgaWYoYmFyQm9yZGVyUmFkaXVzPmhlaWdodCl7XHJcbiAgICAgICAgICAgICAgICAgIGJhckJvcmRlclJhZGl1cyA9IGhlaWdodDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCArIGNvbHVtbk9wdGlvbi5tZXRlckJvcmRlciwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgY29sdW1uT3B0aW9uLm1ldGVyQm9yZGVyLCBpdGVtLnkgKyBiYXJCb3JkZXJSYWRpdXMpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5hcmMoc3RhcnRYICsgaXRlbS53aWR0aC8yLCBpdGVtLnkgKyBiYXJCb3JkZXJSYWRpdXMsIGJhckJvcmRlclJhZGl1cywgLU1hdGguUEksIDApO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgaXRlbS53aWR0aCAtIGNvbHVtbk9wdGlvbi5tZXRlckJvcmRlciAsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHN0YXJ0WCwgaXRlbS55LCBpdGVtLndpZHRoLCBoZWlnaHQpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvL+eUu+i+ueahhue6v1xyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24ubWV0ZXJCb3JkZXIgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGNvbHVtbk9wdGlvbi5tZXRlckJvcmRlciAqIG9wdHMucGl4KTtcclxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHZhciBiYXJCb3JkZXJSYWRpdXMgPSAoaXRlbS53aWR0aCAtIGNvbHVtbk9wdGlvbi5tZXRlckJvcmRlcikvIDI7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGJhckJvcmRlclJhZGl1cz5oZWlnaHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGJhckJvcmRlclJhZGl1cyA9IGhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFggICsgY29sdW1uT3B0aW9uLm1ldGVyQm9yZGVyICogMC41LCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIGNvbHVtbk9wdGlvbi5tZXRlckJvcmRlciAqIDAuNSwgaXRlbS55ICsgYmFyQm9yZGVyUmFkaXVzKTtcclxuICAgICAgICAgICAgICAgICAgY29udGV4dC5hcmMoc3RhcnRYICsgaXRlbS53aWR0aC8yLCBpdGVtLnkgKyBiYXJCb3JkZXJSYWRpdXMgLSBjb2x1bW5PcHRpb24ubWV0ZXJCb3JkZXIgKiAwLjUsIGJhckJvcmRlclJhZGl1cywgLU1hdGguUEksIDApO1xyXG4gICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoIC0gY29sdW1uT3B0aW9uLm1ldGVyQm9yZGVyICogMC41LCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYICsgY29sdW1uT3B0aW9uLm1ldGVyQm9yZGVyICogMC41LCBpdGVtLnkgKyBoZWlnaHQpO1xyXG4gICAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBjb2x1bW5PcHRpb24ubWV0ZXJCb3JkZXIgKiAwLjUsIGl0ZW0ueSArIGNvbHVtbk9wdGlvbi5tZXRlckJvcmRlciAqIDAuNSk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIGl0ZW0ud2lkdGggLSBjb2x1bW5PcHRpb24ubWV0ZXJCb3JkZXIgKiAwLjUsIGl0ZW0ueSArIGNvbHVtbk9wdGlvbi5tZXRlckJvcmRlciAqIDAuNSk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIGl0ZW0ud2lkdGggLSBjb2x1bW5PcHRpb24ubWV0ZXJCb3JkZXIgKiAwLjUsIGl0ZW0ueSArIGhlaWdodCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbaV07XHJcbiAgICAgICAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIGkgPiBsZWZ0TnVtICYmIGkgPCByaWdodE51bSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaXRlbS5jb2xvciB8fCBlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgICAgICAgICAgICB2YXIgc3RhcnRYID0gaXRlbS54IC0gaXRlbS53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gaXRlbS55IC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmFyQm9yZGVyUmFkaXVzID0gaXRlbS53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgICAgICBpZihiYXJCb3JkZXJSYWRpdXM+aGVpZ2h0KXtcclxuICAgICAgICAgICAgICAgICAgYmFyQm9yZGVyUmFkaXVzID0gaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmFyYyhzdGFydFggKyBiYXJCb3JkZXJSYWRpdXMsIGl0ZW0ueSArIGJhckJvcmRlclJhZGl1cywgYmFyQm9yZGVyUmFkaXVzLCAtTWF0aC5QSSwgLU1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuYXJjKHN0YXJ0WCArIGl0ZW0ud2lkdGggLSBiYXJCb3JkZXJSYWRpdXMsIGl0ZW0ueSArIGJhckJvcmRlclJhZGl1cywgYmFyQm9yZGVyUmFkaXVzLCAtTWF0aC5QSSAvIDIsIDApO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgaXRlbS53aWR0aCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYLCBpdGVtLnksIGl0ZW0ud2lkdGgsIGhlaWdodCk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgICBzd2l0Y2ggKGNvbHVtbk9wdGlvbi50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnZ3JvdXAnOlxyXG4gICAgICAgICAgdmFyIHBvaW50cyA9IGdldERhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBwb2ludHMgPSBmaXhDb2x1bWVEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIHNlcmllcy5sZW5ndGgsIHNlcmllc0luZGV4LCBjb25maWcsIG9wdHMpO1xyXG4gICAgICAgICAgZHJhd1BvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzdGFjayc6XHJcbiAgICAgICAgICB2YXIgcG9pbnRzID0gZ2V0U3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzZXJpZXMsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd1BvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtZXRlcic6XHJcbiAgICAgICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdQb2ludFRleHQocG9pbnRzLCBlYWNoU2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3QmFyRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIGxldCBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIGxldCB5QXhpc1BvaW50cyA9IFtdO1xyXG4gIGxldCBlYWNoU3BhY2luZyA9IChvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXSkvb3B0cy5jYXRlZ29yaWVzLmxlbmd0aDtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdHMuY2F0ZWdvcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgeUF4aXNQb2ludHMucHVzaChvcHRzLmFyZWFbMF0gKyBlYWNoU3BhY2luZyAvIDIgKyBlYWNoU3BhY2luZyAqIGkpO1xyXG4gIH1cclxuICBsZXQgY29sdW1uT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOiAnZ3JvdXAnLFxyXG4gICAgd2lkdGg6IGVhY2hTcGFjaW5nIC8gMixcclxuICAgIG1ldGVyQm9yZGVyOiA0LFxyXG4gICAgbWV0ZXJGaWxsQ29sb3I6ICcjRkZGRkZGJyxcclxuICAgIGJhckJvcmRlckNpcmNsZTogZmFsc2UsXHJcbiAgICBiYXJCb3JkZXJSYWRpdXM6IFtdLFxyXG4gICAgc2VyaWVzR2FwOiAyLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgbGluZWFyT3BhY2l0eTogMSxcclxuICAgIGN1c3RvbUNvbG9yOiBbXSxcclxuICAgIGNvbG9yU3RvcDogMCxcclxuICB9LCBvcHRzLmV4dHJhLmJhcik7XHJcbiAgbGV0IGNhbFBvaW50cyA9IFtdO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBsZWZ0TnVtID0gLTI7XHJcbiAgbGV0IHJpZ2h0TnVtID0geUF4aXNQb2ludHMubGVuZ3RoICsgMjtcclxuICBpZiAob3B0cy50b29sdGlwICYmIG9wdHMudG9vbHRpcC50ZXh0TGlzdCAmJiBvcHRzLnRvb2x0aXAudGV4dExpc3QubGVuZ3RoICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIGRyYXdCYXJUb29sVGlwU3BsaXRBcmVhKG9wdHMudG9vbHRpcC5vZmZzZXQueSwgb3B0cywgY29uZmlnLCBjb250ZXh0LCBlYWNoU3BhY2luZyk7XHJcbiAgfVxyXG4gIGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihjb2x1bW5PcHRpb24ubGluZWFyVHlwZSwgY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yLCBzZXJpZXMsIGNvbmZpZyk7XHJcbiAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEucmFuZ2VzKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgbWluUmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgc3dpdGNoIChjb2x1bW5PcHRpb24udHlwZSkge1xyXG4gICAgICBjYXNlICdncm91cCc6XHJcbiAgICAgICAgdmFyIHBvaW50cyA9IGdldEJhckRhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB5QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgcHJvY2Vzcyk7XHJcbiAgICAgICAgdmFyIHRvb2x0aXBQb2ludHMgPSBnZXRCYXJTdGFja0RhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB5QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgc2VyaWVzSW5kZXgsIHNlcmllcywgcHJvY2Vzcyk7XHJcbiAgICAgICAgY2FsUG9pbnRzLnB1c2godG9vbHRpcFBvaW50cyk7XHJcbiAgICAgICAgcG9pbnRzID0gZml4QmFyRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBzZXJpZXMubGVuZ3RoLCBzZXJpZXNJbmRleCwgY29uZmlnLCBvcHRzKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbaV07XHJcbiAgICAgICAgICAvL2ZpeCBpc3N1ZXMvSTI3QjFOIHl5b2luZ2UgJiBKb2VzaHVcclxuICAgICAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIGkgPiBsZWZ0TnVtICYmIGkgPCByaWdodE51bSkge1xyXG4gICAgICAgICAgICAvL3ZhciBzdGFydFggPSBpdGVtLnggLSBpdGVtLndpZHRoIC8gMjtcclxuICAgICAgICAgICAgdmFyIHN0YXJ0WCA9IG9wdHMuYXJlYVszXTtcclxuICAgICAgICAgICAgdmFyIHN0YXJ0WSA9IGl0ZW0ueSAtIGl0ZW0ud2lkdGggLyAyO1xyXG4gICAgICAgICAgICB2YXIgaGVpZ2h0ID0gaXRlbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIHZhciBmaWxsQ29sb3IgPSBpdGVtLmNvbG9yIHx8IGVhY2hTZXJpZXMuY29sb3JcclxuICAgICAgICAgICAgdmFyIHN0cm9rZUNvbG9yID0gaXRlbS5jb2xvciB8fCBlYWNoU2VyaWVzLmNvbG9yXHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24ubGluZWFyVHlwZSAhPT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGdyZCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoc3RhcnRYLCBpdGVtLnksIGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICAvL+mAj+aYjua4kOWPmFxyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24ubGluZWFyVHlwZSA9PSAnb3BhY2l0eScpIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoZmlsbENvbG9yLCBjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3JbZWFjaFNlcmllcy5saW5lYXJJbmRleF0sIGNvbHVtbk9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKGNvbHVtbk9wdGlvbi5jb2xvclN0b3AsIGhleFRvUmdiKGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvcltlYWNoU2VyaWVzLmxpbmVhckluZGV4XSxjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5ZyG6KeS6L655qGGXHJcbiAgICAgICAgICAgIGlmICgoY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyAmJiBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzLmxlbmd0aCA9PT0gNCkgfHwgY29sdW1uT3B0aW9uLmJhckJvcmRlckNpcmNsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBzdGFydFg7XHJcbiAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBpdGVtLndpZHRoO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRvcCA9IGl0ZW0ueSAtIGl0ZW0ud2lkdGggLyAyO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGl0ZW0uaGVpZ2g7XHJcbiAgICAgICAgICAgICAgaWYgKGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJDaXJjbGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXMgPSBbd2lkdGggLyAyLCB3aWR0aCAvIDIsIDAsIDBdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgW3IwLCByMSwgcjIsIHIzXSA9IGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXM7XHJcbiAgICAgICAgICAgICAgbGV0IG1pblJhZGl1cyA9IE1hdGgubWluKHdpZHRoLzIsaGVpZ2h0LzIpO1xyXG4gICAgICAgICAgICAgIHIwID0gcjAgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMDtcclxuICAgICAgICAgICAgICByMSA9IHIxID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjE7XHJcbiAgICAgICAgICAgICAgcjIgPSByMiA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIyO1xyXG4gICAgICAgICAgICAgIHIzID0gcjMgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMztcclxuICAgICAgICAgICAgICByMCA9IHIwIDwgMCA/IDAgOiByMDtcclxuICAgICAgICAgICAgICByMSA9IHIxIDwgMCA/IDAgOiByMTtcclxuICAgICAgICAgICAgICByMiA9IHIyIDwgMCA/IDAgOiByMjtcclxuICAgICAgICAgICAgICByMyA9IHIzIDwgMCA/IDAgOiByMztcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjMsIHRvcCArIHIzLCByMywgLU1hdGguUEksIC1NYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5hcmMoaXRlbS54IC0gcjAsIHRvcCArIHIwLCByMCwgLU1hdGguUEkgLyAyLCAwKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhpdGVtLnggLSByMSwgdG9wICsgd2lkdGggLSByMSwgcjEsIDAsIE1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjIsIHRvcCArIHdpZHRoIC0gcjIsIHIyLCBNYXRoLlBJIC8gMiwgTWF0aC5QSSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBzdGFydFkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgc3RhcnRZKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIHN0YXJ0WSArIGl0ZW0ud2lkdGggLSAyKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIHN0YXJ0WSArIGl0ZW0ud2lkdGggLSAyKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIHN0YXJ0WSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSlcclxuICAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHN0cm9rZUNvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICAvL2NvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3N0YWNrJzpcclxuICAgICAgICAvLyDnu5jliLbloIblj6DmlbDmja7lm75cclxuICAgICAgICB2YXIgcG9pbnRzID0gZ2V0QmFyU3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeUF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzZXJpZXMsIHByb2Nlc3MpO1xyXG4gICAgICAgIGNhbFBvaW50cy5wdXNoKHBvaW50cyk7XHJcbiAgICAgICAgcG9pbnRzID0gZml4QmFyU3RhY2tEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIHNlcmllcy5sZW5ndGgsIHNlcmllc0luZGV4LCBjb25maWcsIG9wdHMsIHNlcmllcyk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIHZhciBmaWxsQ29sb3IgPSBpdGVtLmNvbG9yIHx8IGVhY2hTZXJpZXMuY29sb3I7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLngwO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIGl0ZW0ueSAtIGl0ZW0ud2lkdGgvMik7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYLCBpdGVtLnkgLSBpdGVtLndpZHRoLzIsIGl0ZW0uaGVpZ2h0ICwgaXRlbS53aWR0aCAtIDIpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5yYW5nZXMpO1xyXG4gICAgICBtYXhSYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgICAgdmFyIGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICAgIHN3aXRjaCAoY29sdW1uT3B0aW9uLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdncm91cCc6XHJcbiAgICAgICAgICB2YXIgcG9pbnRzID0gZ2V0QmFyRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgICAgIHBvaW50cyA9IGZpeEJhckRhdGEocG9pbnRzLCBlYWNoU3BhY2luZywgc2VyaWVzLmxlbmd0aCwgc2VyaWVzSW5kZXgsIGNvbmZpZywgb3B0cyk7XHJcbiAgICAgICAgICBkcmF3QmFyUG9pbnRUZXh0KHBvaW50cywgZWFjaFNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3N0YWNrJzpcclxuICAgICAgICAgIHZhciBwb2ludHMgPSBnZXRCYXJTdGFja0RhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB5QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgc2VyaWVzSW5kZXgsIHNlcmllcywgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3QmFyUG9pbnRUZXh0KHBvaW50cywgZWFjaFNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIHlBeGlzUG9pbnRzOiB5QXhpc1BvaW50cyxcclxuICAgIGNhbFBvaW50czogY2FsUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0NhbmRsZURhdGFQb2ludHMoc2VyaWVzLCBzZXJpZXNNQSwgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IDE7XHJcbiAgdmFyIGNhbmRsZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgY29sb3I6IHt9LFxyXG4gICAgYXZlcmFnZToge31cclxuICB9LCBvcHRzLmV4dHJhLmNhbmRsZSk7XHJcbiAgY2FuZGxlT3B0aW9uLmNvbG9yID0gYXNzaWduKHt9LCB7XHJcbiAgICB1cExpbmU6ICcjZjA0ODY0JyxcclxuICAgIHVwRmlsbDogJyNmMDQ4NjQnLFxyXG4gICAgZG93bkxpbmU6ICcjMmZjMjViJyxcclxuICAgIGRvd25GaWxsOiAnIzJmYzI1YidcclxuICB9LCBjYW5kbGVPcHRpb24uY29sb3IpO1xyXG4gIGNhbmRsZU9wdGlvbi5hdmVyYWdlID0gYXNzaWduKHt9LCB7XHJcbiAgICBzaG93OiBmYWxzZSxcclxuICAgIG5hbWU6IFtdLFxyXG4gICAgZGF5OiBbXSxcclxuICAgIGNvbG9yOiBjb25maWcuY29sb3JcclxuICB9LCBjYW5kbGVPcHRpb24uYXZlcmFnZSk7XHJcbiAgb3B0cy5leHRyYS5jYW5kbGUgPSBjYW5kbGVPcHRpb247XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IGNhbFBvaW50cyA9IFtdO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBsZWZ0TnVtID0gLTI7XHJcbiAgbGV0IHJpZ2h0TnVtID0geEF4aXNQb2ludHMubGVuZ3RoICsgMjtcclxuICBsZXQgbGVmdFNwYWNlID0gMDtcclxuICBsZXQgcmlnaHRTcGFjZSA9IG9wdHMud2lkdGggKyBlYWNoU3BhY2luZztcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICAgIGxlZnROdW0gPSBNYXRoLmZsb29yKC1vcHRzLl9zY3JvbGxEaXN0YW5jZV8gLyBlYWNoU3BhY2luZykgLSAyO1xyXG4gICAgcmlnaHROdW0gPSBsZWZ0TnVtICsgb3B0cy54QXhpcy5pdGVtQ291bnQgKyA0O1xyXG4gICAgbGVmdFNwYWNlID0gLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAtIGVhY2hTcGFjaW5nICogMiArIG9wdHMuYXJlYVszXTtcclxuICAgIHJpZ2h0U3BhY2UgPSBsZWZ0U3BhY2UgKyAob3B0cy54QXhpcy5pdGVtQ291bnQgKyA0KSAqIGVhY2hTcGFjaW5nO1xyXG4gIH1cclxuICAvL+eUu+Wdh+e6v1xyXG4gIGlmIChjYW5kbGVPcHRpb24uYXZlcmFnZS5zaG93IHx8IHNlcmllc01BKSB7IC8vTWVyZ2UgcHVsbCByZXF1ZXN0ICExMiBmcm9tIOmCsei0tee/lFxyXG4gICAgc2VyaWVzTUEuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgdmFyIHNwbGl0UG9pbnRMaXN0ID0gc3BsaXRQb2ludHMocG9pbnRzLGVhY2hTZXJpZXMpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNwbGl0UG9pbnRMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHBvaW50cyA9IHNwbGl0UG9pbnRMaXN0W2ldO1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxKTtcclxuICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICAgIGNvbnRleHQuYXJjKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSwgMSwgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgICAgbGV0IHN0YXJ0UG9pbnQgPSAwO1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbal07XHJcbiAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgIHZhciBjdHJsUG9pbnQgPSBjcmVhdGVDdXJ2ZUNvbnRyb2xQb2ludHMocG9pbnRzLCBqIC0gMSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKGN0cmxQb2ludC5jdHJBLngsIGN0cmxQb2ludC5jdHJBLnksIGN0cmxQb2ludC5jdHJCLngsIGN0cmxQb2ludC5jdHJCLnksIGl0ZW0ueCxcclxuICAgICAgICAgICAgICAgIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v55S7S+e6v1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXRDYW5kbGVEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY2FsUG9pbnRzLnB1c2gocG9pbnRzKTtcclxuICAgIHZhciBzcGxpdFBvaW50TGlzdCA9IHNwbGl0UG9pbnRzKHBvaW50cyxlYWNoU2VyaWVzKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXRQb2ludExpc3RbMF0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGkgPiBsZWZ0TnVtICYmIGkgPCByaWdodE51bSkge1xyXG4gICAgICAgIGxldCBpdGVtID0gc3BsaXRQb2ludExpc3RbMF1baV07XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAvL+WmguaenOS4iua2qFxyXG4gICAgICAgIGlmIChkYXRhW2ldWzFdIC0gZGF0YVtpXVswXSA+IDApIHtcclxuICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoY2FuZGxlT3B0aW9uLmNvbG9yLnVwTGluZSk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShjYW5kbGVPcHRpb24uY29sb3IudXBGaWxsKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtWzNdLngsIGl0ZW1bM10ueSk7IC8v6aG254K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLngsIGl0ZW1bMV0ueSk7IC8v5pS255uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLnggLSBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMV0ueSk7IC8v5pS255uY5bem5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLnggLSBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMF0ueSk7IC8v5byA55uY5bem5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLngsIGl0ZW1bMF0ueSk7IC8v5byA55uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzJdLngsIGl0ZW1bMl0ueSk7IC8v5bqV54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLngsIGl0ZW1bMF0ueSk7IC8v5byA55uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLnggKyBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMF0ueSk7IC8v5byA55uY5Y+z5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLnggKyBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMV0ueSk7IC8v5pS255uY5Y+z5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLngsIGl0ZW1bMV0ueSk7IC8v5pS255uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtWzNdLngsIGl0ZW1bM10ueSk7IC8v6aG254K5XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoY2FuZGxlT3B0aW9uLmNvbG9yLmRvd25MaW5lKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGNhbmRsZU9wdGlvbi5jb2xvci5kb3duRmlsbCk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbVszXS54LCBpdGVtWzNdLnkpOyAvL+mhtueCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVswXS54LCBpdGVtWzBdLnkpOyAvL+W8gOebmOS4remXtOeCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVswXS54IC0gZWFjaFNwYWNpbmcgLyA0LCBpdGVtWzBdLnkpOyAvL+W8gOebmOW3puS+p+eCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVsxXS54IC0gZWFjaFNwYWNpbmcgLyA0LCBpdGVtWzFdLnkpOyAvL+aUtuebmOW3puS+p+eCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVsxXS54LCBpdGVtWzFdLnkpOyAvL+aUtuebmOS4remXtOeCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVsyXS54LCBpdGVtWzJdLnkpOyAvL+W6leeCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVsxXS54LCBpdGVtWzFdLnkpOyAvL+aUtuebmOS4remXtOeCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVsxXS54ICsgZWFjaFNwYWNpbmcgLyA0LCBpdGVtWzFdLnkpOyAvL+aUtuebmOWPs+S+p+eCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVswXS54ICsgZWFjaFNwYWNpbmcgLyA0LCBpdGVtWzBdLnkpOyAvL+W8gOebmOWPs+S+p+eCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVswXS54LCBpdGVtWzBdLnkpOyAvL+W8gOebmOS4remXtOeCuVxyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbVszXS54LCBpdGVtWzNdLnkpOyAvL+mhtueCuVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KTtcclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3QXJlYURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICB2YXIgYXJlYU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ3N0cmFpZ2h0JyxcclxuICAgIG9wYWNpdHk6IDAuMixcclxuICAgIGFkZExpbmU6IGZhbHNlLFxyXG4gICAgd2lkdGg6IDIsXHJcbiAgICBncmFkaWVudDogZmFsc2VcclxuICB9LCBvcHRzLmV4dHJhLmFyZWEpO1xyXG4gIGxldCB4QXhpc0RhdGEgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEsXHJcbiAgICB4QXhpc1BvaW50cyA9IHhBeGlzRGF0YS54QXhpc1BvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nID0geEF4aXNEYXRhLmVhY2hTcGFjaW5nO1xyXG4gIGxldCBlbmRZID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgbGV0IGNhbFBvaW50cyA9IFtdO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBsZWZ0U3BhY2UgPSAwO1xyXG4gIGxldCByaWdodFNwYWNlID0gb3B0cy53aWR0aCArIGVhY2hTcGFjaW5nO1xyXG4gIGlmIChvcHRzLl9zY3JvbGxEaXN0YW5jZV8gJiYgb3B0cy5fc2Nyb2xsRGlzdGFuY2VfICE9PSAwICYmIG9wdHMuZW5hYmxlU2Nyb2xsID09PSB0cnVlKSB7XHJcbiAgICBjb250ZXh0LnRyYW5zbGF0ZShvcHRzLl9zY3JvbGxEaXN0YW5jZV8sIDApO1xyXG4gICAgbGVmdFNwYWNlID0gLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAtIGVhY2hTcGFjaW5nICogMiArIG9wdHMuYXJlYVszXTtcclxuICAgIHJpZ2h0U3BhY2UgPSBsZWZ0U3BhY2UgKyAob3B0cy54QXhpcy5pdGVtQ291bnQgKyA0KSAqIGVhY2hTcGFjaW5nO1xyXG4gIH1cclxuICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbZWFjaFNlcmllcy5pbmRleF0pO1xyXG4gICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICBtYXhSYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgbGV0IGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICBsZXQgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgIGNhbFBvaW50cy5wdXNoKHBvaW50cyk7XHJcbiAgICBsZXQgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNwbGl0UG9pbnRMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwb2ludHMgPSBzcGxpdFBvaW50TGlzdFtpXTtcclxuICAgICAgLy8g57uY5Yi25Yy65Z+f5pWwXHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgYXJlYU9wdGlvbi5vcGFjaXR5KSk7XHJcbiAgICAgIGlmIChhcmVhT3B0aW9uLmdyYWRpZW50KSB7XHJcbiAgICAgICAgbGV0IGdyYWRpZW50ID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCBvcHRzLmFyZWFbMF0sIDAsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdKTtcclxuICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoJzAnLCBoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCBhcmVhT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoJzEuMCcsIGhleFRvUmdiKFwiI0ZGRkZGRlwiLCAwLjEpKTtcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShncmFkaWVudCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgYXJlYU9wdGlvbi5vcGFjaXR5KSk7XHJcbiAgICAgIH1cclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoYXJlYU9wdGlvbi53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgICAgaWYgKHBvaW50cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgbGV0IGZpcnN0UG9pbnQgPSBwb2ludHNbMF07XHJcbiAgICAgICAgbGV0IGxhc3RQb2ludCA9IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oZmlyc3RQb2ludC54LCBmaXJzdFBvaW50LnkpO1xyXG4gICAgICAgIGxldCBzdGFydFBvaW50ID0gMDtcclxuICAgICAgICBpZiAoYXJlYU9wdGlvbi50eXBlID09PSAnY3VydmUnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGN0cmxQb2ludCA9IGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGogLSAxKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmJlemllckN1cnZlVG8oY3RybFBvaW50LmN0ckEueCwgY3RybFBvaW50LmN0ckEueSwgY3RybFBvaW50LmN0ckIueCwgY3RybFBvaW50LmN0ckIueSwgaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgaWYgKGFyZWFPcHRpb24udHlwZSA9PT0gJ3N0cmFpZ2h0Jykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbal07XHJcbiAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGFyZWFPcHRpb24udHlwZSA9PT0gJ3N0ZXAnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBwb2ludHNbaiAtIDFdLnkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8obGFzdFBvaW50LngsIGVuZFkpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGZpcnN0UG9pbnQueCwgZW5kWSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oZmlyc3RQb2ludC54LCBmaXJzdFBvaW50LnkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBpdGVtID0gcG9pbnRzWzBdO1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCAtIGVhY2hTcGFjaW5nIC8gMiwgaXRlbS55KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyBlYWNoU3BhY2luZyAvIDIsIGl0ZW0ueSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54ICsgZWFjaFNwYWNpbmcgLyAyLCBlbmRZKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSBlYWNoU3BhY2luZyAvIDIsIGVuZFkpO1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCAtIGVhY2hTcGFjaW5nIC8gMiwgaXRlbS55KTtcclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgLy/nlLvov57nur9cclxuICAgICAgaWYgKGFyZWFPcHRpb24uYWRkTGluZSkge1xyXG4gICAgICAgIGlmIChlYWNoU2VyaWVzLmxpbmVUeXBlID09ICdkYXNoJykge1xyXG4gICAgICAgICAgbGV0IGRhc2hMZW5ndGggPSBlYWNoU2VyaWVzLmRhc2hMZW5ndGggPyBlYWNoU2VyaWVzLmRhc2hMZW5ndGggOiA4O1xyXG4gICAgICAgICAgZGFzaExlbmd0aCAqPSBvcHRzLnBpeDtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW2Rhc2hMZW5ndGgsIGRhc2hMZW5ndGhdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGFyZWFPcHRpb24ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XHJcbiAgICAgICAgICBjb250ZXh0LmFyYyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnksIDEsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICAgIGxldCBzdGFydFBvaW50ID0gMDtcclxuICAgICAgICAgIGlmIChhcmVhT3B0aW9uLnR5cGUgPT09ICdjdXJ2ZScpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGN0cmxQb2ludCA9IGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGogLSAxKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuYmV6aWVyQ3VydmVUbyhjdHJsUG9pbnQuY3RyQS54LCBjdHJsUG9pbnQuY3RyQS55LCBjdHJsUG9pbnQuY3RyQi54LCBjdHJsUG9pbnQuY3RyQi55LCBpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGFyZWFPcHRpb24udHlwZSA9PT0gJ3N0cmFpZ2h0Jykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGFyZWFPcHRpb24udHlwZSA9PT0gJ3N0ZXAnKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9pbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbal07XHJcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoaiA+IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlICYmIGl0ZW0ueCA8IHJpZ2h0U3BhY2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgcG9pbnRzW2ogLSAxXS55KTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+eUu+eCuVxyXG4gICAgaWYgKG9wdHMuZGF0YVBvaW50U2hhcGUgIT09IGZhbHNlKSB7XHJcbiAgICAgIGRyYXdQb2ludFNoYXBlKHBvaW50cywgZWFjaFNlcmllcy5jb2xvciwgZWFjaFNlcmllcy5wb2ludFNoYXBlLCBjb250ZXh0LCBvcHRzKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgZHJhd1BvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHhBeGlzUG9pbnRzOiB4QXhpc1BvaW50cyxcclxuICAgIGNhbFBvaW50czogY2FsUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1NjYXR0ZXJEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgdmFyIHNjYXR0ZXJPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIHR5cGU6ICdjaXJjbGUnXHJcbiAgfSwgb3B0cy5leHRyYS5zY2F0dGVyKTtcclxuICBsZXQgeEF4aXNEYXRhID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLFxyXG4gICAgeEF4aXNQb2ludHMgPSB4QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnRTcGFjZSA9IDA7XHJcbiAgbGV0IHJpZ2h0U3BhY2UgPSBvcHRzLndpZHRoICsgZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICB2YXIgc2hhcGUgPSBlYWNoU2VyaWVzLnBvaW50U2hhcGU7XHJcbiAgICBpZiAoc2hhcGUgPT09ICdkaWFtb25kJykge1xyXG4gICAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSA0LjUsIGl0ZW0ueSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyA0LjUsIGl0ZW0ueSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2hhcGUgPT09ICdjaXJjbGUnKSB7XHJcbiAgICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCArIDIuNSAqIG9wdHMucGl4LCBpdGVtLnkpO1xyXG4gICAgICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIDMgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3NxdWFyZScpIHtcclxuICAgICAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICBpZiAoaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54IC0gMy41LCBpdGVtLnkgLSAzLjUpO1xyXG4gICAgICAgICAgY29udGV4dC5yZWN0KGl0ZW0ueCAtIDMuNSwgaXRlbS55IC0gMy41LCA3LCA3KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3RyaWFuZ2xlJykge1xyXG4gICAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2hhcGUgPT09ICd0cmlhbmdsZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICB9KTtcclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbZWFjaFNlcmllcy5pbmRleF0pO1xyXG4gICAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgICAgbWF4UmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgICAgdmFyIGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICBkcmF3UG9pbnRUZXh0KHBvaW50cywgZWFjaFNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3QnViYmxlRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciBidWJibGVPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIG9wYWNpdHk6IDEsXHJcbiAgICBib3JkZXI6MlxyXG4gIH0sIG9wdHMuZXh0cmEuYnViYmxlKTtcclxuICBsZXQgeEF4aXNEYXRhID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLFxyXG4gICAgeEF4aXNQb2ludHMgPSB4QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnRTcGFjZSA9IDA7XHJcbiAgbGV0IHJpZ2h0U3BhY2UgPSBvcHRzLndpZHRoICsgZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChidWJibGVPcHRpb24uYm9yZGVyICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgYnViYmxlT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCArIGl0ZW0uciwgaXRlbS55KTtcclxuICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIGl0ZW0uciAqIG9wdHMucGl4LCAwLCAyICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5maWxsKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgXHJcbiAgICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgICAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIHZhciBmb250U2l6ZSA9IHNlcmllcy50ZXh0U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShzZXJpZXMudGV4dENvbG9yIHx8IFwiI0ZGRkZGRlwiKTtcclxuICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignY2VudGVyJyk7XHJcbiAgICAgICAgY29udGV4dC5maWxsVGV4dChTdHJpbmcoaXRlbS50KSwgaXRlbS54LCBpdGVtLnkgKyBmb250U2l6ZS8yKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2xlZnQnKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHhBeGlzUG9pbnRzOiB4QXhpc1BvaW50cyxcclxuICAgIGNhbFBvaW50czogY2FsUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIGRyYXdMaW5lRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciBsaW5lT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOiAnc3RyYWlnaHQnLFxyXG4gICAgd2lkdGg6IDJcclxuICB9LCBvcHRzLmV4dHJhLmxpbmUpO1xyXG4gIGxpbmVPcHRpb24ud2lkdGggKj0gb3B0cy5waXg7XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgdmFyIGNhbFBvaW50cyA9IFtdO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBsZWZ0U3BhY2UgPSAwO1xyXG4gIGxldCByaWdodFNwYWNlID0gb3B0cy53aWR0aCArIGVhY2hTcGFjaW5nO1xyXG4gIGlmIChvcHRzLl9zY3JvbGxEaXN0YW5jZV8gJiYgb3B0cy5fc2Nyb2xsRGlzdGFuY2VfICE9PSAwICYmIG9wdHMuZW5hYmxlU2Nyb2xsID09PSB0cnVlKSB7XHJcbiAgICBjb250ZXh0LnRyYW5zbGF0ZShvcHRzLl9zY3JvbGxEaXN0YW5jZV8sIDApO1xyXG4gICAgbGVmdFNwYWNlID0gLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAtIGVhY2hTcGFjaW5nICogMiArIG9wdHMuYXJlYVszXTtcclxuICAgIHJpZ2h0U3BhY2UgPSBsZWZ0U3BhY2UgKyAob3B0cy54QXhpcy5pdGVtQ291bnQgKyA0KSAqIGVhY2hTcGFjaW5nO1xyXG4gIH1cclxuICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbZWFjaFNlcmllcy5pbmRleF0pO1xyXG4gICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICBtYXhSYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgdmFyIGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgIGNhbFBvaW50cy5wdXNoKHBvaW50cyk7XHJcbiAgICB2YXIgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICBpZiAoZWFjaFNlcmllcy5saW5lVHlwZSA9PSAnZGFzaCcpIHtcclxuICAgICAgbGV0IGRhc2hMZW5ndGggPSBlYWNoU2VyaWVzLmRhc2hMZW5ndGggPyBlYWNoU2VyaWVzLmRhc2hMZW5ndGggOiA4O1xyXG4gICAgICBkYXNoTGVuZ3RoICo9IG9wdHMucGl4O1xyXG4gICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtkYXNoTGVuZ3RoLCBkYXNoTGVuZ3RoXSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGxpbmVPcHRpb24ud2lkdGgpO1xyXG4gICAgc3BsaXRQb2ludExpc3QuZm9yRWFjaChmdW5jdGlvbihwb2ludHMsIGluZGV4KSB7XHJcbiAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICBjb250ZXh0LmFyYyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnksIDEsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgIGxldCBzdGFydFBvaW50ID0gMDtcclxuICAgICAgICBpZiAobGluZU9wdGlvbi50eXBlID09PSAnY3VydmUnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGN0cmxQb2ludCA9IGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGogLSAxKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmJlemllckN1cnZlVG8oY3RybFBvaW50LmN0ckEueCwgY3RybFBvaW50LmN0ckEueSwgY3RybFBvaW50LmN0ckIueCwgY3RybFBvaW50LmN0ckIueSwgaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGluZU9wdGlvbi50eXBlID09PSAnc3RyYWlnaHQnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGluZU9wdGlvbi50eXBlID09PSAnc3RlcCcpIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9pbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaiA+IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlICYmIGl0ZW0ueCA8IHJpZ2h0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIHBvaW50c1tqIC0gMV0ueSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcclxuICAgIGlmIChvcHRzLmRhdGFQb2ludFNoYXBlICE9PSBmYWxzZSkge1xyXG4gICAgICBkcmF3UG9pbnRTaGFwZShwb2ludHMsIGVhY2hTZXJpZXMuY29sb3IsIGVhY2hTZXJpZXMucG9pbnRTaGFwZSwgY29udGV4dCwgb3B0cyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgZHJhd1BvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHhBeGlzUG9pbnRzOiB4QXhpc1BvaW50cyxcclxuICAgIGNhbFBvaW50czogY2FsUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd01peERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICBsZXQgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICBsZXQgY29sdW1uT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICB3aWR0aDogZWFjaFNwYWNpbmcgLyAyLFxyXG4gICAgYmFyQm9yZGVyQ2lyY2xlOiBmYWxzZSxcclxuICAgIGJhckJvcmRlclJhZGl1czogW10sXHJcbiAgICBzZXJpZXNHYXA6IDIsXHJcbiAgICBsaW5lYXJUeXBlOiAnbm9uZScsXHJcbiAgICBsaW5lYXJPcGFjaXR5OiAxLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gICAgY29sb3JTdG9wOiAwLFxyXG4gIH0sIG9wdHMuZXh0cmEubWl4LmNvbHVtbik7XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IGVuZFkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxuICBsZXQgY2FsUG9pbnRzID0gW107XHJcbiAgdmFyIGNvbHVtbkluZGV4ID0gMDtcclxuICB2YXIgY29sdW1uTGVuZ3RoID0gMDtcclxuICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgaWYgKGVhY2hTZXJpZXMudHlwZSA9PSAnY29sdW1uJykge1xyXG4gICAgICBjb2x1bW5MZW5ndGggKz0gMTtcclxuICAgIH1cclxuICB9KTtcclxuICBjb250ZXh0LnNhdmUoKTtcclxuICBsZXQgbGVmdE51bSA9IC0yO1xyXG4gIGxldCByaWdodE51bSA9IHhBeGlzUG9pbnRzLmxlbmd0aCArIDI7XHJcbiAgbGV0IGxlZnRTcGFjZSA9IDA7XHJcbiAgbGV0IHJpZ2h0U3BhY2UgPSBvcHRzLndpZHRoICsgZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0TnVtID0gTWF0aC5mbG9vcigtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC8gZWFjaFNwYWNpbmcpIC0gMjtcclxuICAgIHJpZ2h0TnVtID0gbGVmdE51bSArIG9wdHMueEF4aXMuaXRlbUNvdW50ICsgNDtcclxuICAgIGxlZnRTcGFjZSA9IC1vcHRzLl9zY3JvbGxEaXN0YW5jZV8gLSBlYWNoU3BhY2luZyAqIDIgKyBvcHRzLmFyZWFbM107XHJcbiAgICByaWdodFNwYWNlID0gbGVmdFNwYWNlICsgKG9wdHMueEF4aXMuaXRlbUNvdW50ICsgNCkgKiBlYWNoU3BhY2luZztcclxuICB9XHJcbiAgY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yID0gZmlsbEN1c3RvbUNvbG9yKGNvbHVtbk9wdGlvbi5saW5lYXJUeXBlLCBjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3IsIHNlcmllcywgY29uZmlnKTtcclxuICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbZWFjaFNlcmllcy5pbmRleF0pO1xyXG4gICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICBtYXhSYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgdmFyIGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgIGNhbFBvaW50cy5wdXNoKHBvaW50cyk7XHJcbiAgICAvLyDnu5jliLbmn7HnirbmlbDmja7lm75cclxuICAgIGlmIChlYWNoU2VyaWVzLnR5cGUgPT0gJ2NvbHVtbicpIHtcclxuICAgICAgcG9pbnRzID0gZml4Q29sdW1lRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBjb2x1bW5MZW5ndGgsIGNvbHVtbkluZGV4LCBjb25maWcsIG9wdHMpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIGkgPiBsZWZ0TnVtICYmIGkgPCByaWdodE51bSkge1xyXG4gICAgICAgICAgdmFyIHN0YXJ0WCA9IGl0ZW0ueCAtIGl0ZW0ud2lkdGggLyAyO1xyXG4gICAgICAgICAgdmFyIGhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gaXRlbS55IC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgIHZhciBmaWxsQ29sb3IgPSBpdGVtLmNvbG9yIHx8IGVhY2hTZXJpZXMuY29sb3JcclxuICAgICAgICAgIHZhciBzdHJva2VDb2xvciA9IGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvclxyXG4gICAgICAgICAgaWYgKGNvbHVtbk9wdGlvbi5saW5lYXJUeXBlICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgdmFyIGdyZCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoc3RhcnRYLCBpdGVtLnksIHN0YXJ0WCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICAvL+mAj+aYjua4kOWPmFxyXG4gICAgICAgICAgICBpZiAoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUgPT0gJ29wYWNpdHknKSB7XHJcbiAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihmaWxsQ29sb3IsIGNvbHVtbk9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvcltlYWNoU2VyaWVzLmxpbmVhckluZGV4XSwgY29sdW1uT3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKGNvbHVtbk9wdGlvbi5jb2xvclN0b3AsIGhleFRvUmdiKGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvcltlYWNoU2VyaWVzLmxpbmVhckluZGV4XSwgY29sdW1uT3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbGxDb2xvciA9IGdyZFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8g5ZyG6KeS6L655qGGXHJcbiAgICAgICAgICBpZiAoKGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXMgJiYgY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cy5sZW5ndGggPT09IDQpIHx8IGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJDaXJjbGUpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVmdCA9IHN0YXJ0WDtcclxuICAgICAgICAgICAgY29uc3QgdG9wID0gaXRlbS55O1xyXG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IGl0ZW0ud2lkdGg7XHJcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdIC0gaXRlbS55O1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uT3B0aW9uLmJhckJvcmRlckNpcmNsZSkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXMgPSBbd2lkdGggLyAyLCB3aWR0aCAvIDIsIDAsIDBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBbcjAsIHIxLCByMiwgcjNdID0gY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cztcclxuICAgICAgICAgICAgbGV0IG1pblJhZGl1cyA9IE1hdGgubWluKHdpZHRoLzIsaGVpZ2h0LzIpO1xyXG4gICAgICAgICAgICByMCA9IHIwID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjA7XHJcbiAgICAgICAgICAgIHIxID0gcjEgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMTtcclxuICAgICAgICAgICAgcjIgPSByMiA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIyO1xyXG4gICAgICAgICAgICByMyA9IHIzID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjM7XHJcbiAgICAgICAgICAgIHIwID0gcjAgPCAwID8gMCA6IHIwO1xyXG4gICAgICAgICAgICByMSA9IHIxIDwgMCA/IDAgOiByMTtcclxuICAgICAgICAgICAgcjIgPSByMiA8IDAgPyAwIDogcjI7XHJcbiAgICAgICAgICAgIHIzID0gcjMgPCAwID8gMCA6IHIzO1xyXG4gICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjAsIHRvcCArIHIwLCByMCwgLU1hdGguUEksIC1NYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyB3aWR0aCAtIHIxLCB0b3AgKyByMSwgcjEsIC1NYXRoLlBJIC8gMiwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyB3aWR0aCAtIHIyLCB0b3AgKyBoZWlnaHQgLSByMiwgcjIsIDAsIE1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHIzLCB0b3AgKyBoZWlnaHQgLSByMywgcjMsIE1hdGguUEkgLyAyLCBNYXRoLlBJKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgaXRlbS55KTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgaXRlbS53aWR0aCAtIDIsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIGl0ZW0ud2lkdGggLSAyLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEpXHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc3Ryb2tlQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29sdW1uSW5kZXggKz0gMTtcclxuICAgIH1cclxuICAgIC8v57uY5Yi25Yy65Z+f5Zu+5pWw5o2uXHJcbiAgICBpZiAoZWFjaFNlcmllcy50eXBlID09ICdhcmVhJykge1xyXG4gICAgICBsZXQgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXRQb2ludExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9pbnRzID0gc3BsaXRQb2ludExpc3RbaV07XHJcbiAgICAgICAgLy8g57uY5Yi25Yy65Z+f5pWw5o2uXHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKGVhY2hTZXJpZXMuY29sb3IsIDAuMikpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDIgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICB2YXIgZmlyc3RQb2ludCA9IHBvaW50c1swXTtcclxuICAgICAgICAgIGxldCBsYXN0UG9pbnQgPSBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oZmlyc3RQb2ludC54LCBmaXJzdFBvaW50LnkpO1xyXG4gICAgICAgICAgbGV0IHN0YXJ0UG9pbnQgPSAwO1xyXG4gICAgICAgICAgaWYgKGVhY2hTZXJpZXMuc3R5bGUgPT09ICdjdXJ2ZScpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGN0cmxQb2ludCA9IGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGogLSAxKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuYmV6aWVyQ3VydmVUbyhjdHJsUG9pbnQuY3RyQS54LCBjdHJsUG9pbnQuY3RyQS55LCBjdHJsUG9pbnQuY3RyQi54LCBjdHJsUG9pbnQuY3RyQi55LCBpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGxhc3RQb2ludC54LCBlbmRZKTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGZpcnN0UG9pbnQueCwgZW5kWSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhmaXJzdFBvaW50LngsIGZpcnN0UG9pbnQueSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzWzBdO1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54IC0gZWFjaFNwYWNpbmcgLyAyLCBpdGVtLnkpO1xyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54ICsgZWFjaFNwYWNpbmcgLyAyLCBpdGVtLnkpO1xyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54ICsgZWFjaFNwYWNpbmcgLyAyLCBlbmRZKTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCAtIGVhY2hTcGFjaW5nIC8gMiwgZW5kWSk7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLnggLSBlYWNoU3BhY2luZyAvIDIsIGl0ZW0ueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIOe7mOWItuaKmOe6v+aVsOaNruWbvlxyXG4gICAgaWYgKGVhY2hTZXJpZXMudHlwZSA9PSAnbGluZScpIHtcclxuICAgICAgdmFyIHNwbGl0UG9pbnRMaXN0ID0gc3BsaXRQb2ludHMocG9pbnRzLGVhY2hTZXJpZXMpO1xyXG4gICAgICBzcGxpdFBvaW50TGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHBvaW50cywgaW5kZXgpIHtcclxuICAgICAgICBpZiAoZWFjaFNlcmllcy5saW5lVHlwZSA9PSAnZGFzaCcpIHtcclxuICAgICAgICAgIGxldCBkYXNoTGVuZ3RoID0gZWFjaFNlcmllcy5kYXNoTGVuZ3RoID8gZWFjaFNlcmllcy5kYXNoTGVuZ3RoIDogODtcclxuICAgICAgICAgIGRhc2hMZW5ndGggKj0gb3B0cy5waXg7XHJcbiAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtkYXNoTGVuZ3RoLCBkYXNoTGVuZ3RoXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgyICogb3B0cy5waXgpO1xyXG4gICAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgICAgY29udGV4dC5hcmMocG9pbnRzWzBdLngsIHBvaW50c1swXS55LCAxLCAwLCAyICogTWF0aC5QSSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XHJcbiAgICAgICAgICBsZXQgc3RhcnRQb2ludCA9IDA7XHJcbiAgICAgICAgICBpZiAoZWFjaFNlcmllcy5zdHlsZSA9PSAnY3VydmUnKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9pbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbal07XHJcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoaiA+IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlICYmIGl0ZW0ueCA8IHJpZ2h0U3BhY2UpIHtcclxuICAgICAgICAgICAgICAgIHZhciBjdHJsUG9pbnQgPSBjcmVhdGVDdXJ2ZUNvbnRyb2xQb2ludHMocG9pbnRzLCBqIC0gMSk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmJlemllckN1cnZlVG8oY3RybFBvaW50LmN0ckEueCwgY3RybFBvaW50LmN0ckEueSwgY3RybFBvaW50LmN0ckIueCwgY3RybFBvaW50LmN0ckIueSxcclxuICAgICAgICAgICAgICAgICAgaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyDnu5jliLbngrnmlbDmja7lm75cclxuICAgIGlmIChlYWNoU2VyaWVzLnR5cGUgPT0gJ3BvaW50Jykge1xyXG4gICAgICBlYWNoU2VyaWVzLmFkZFBvaW50ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChlYWNoU2VyaWVzLmFkZFBvaW50ID09IHRydWUgJiYgZWFjaFNlcmllcy50eXBlICE9PSAnY29sdW1uJykge1xyXG4gICAgICBkcmF3UG9pbnRTaGFwZShwb2ludHMsIGVhY2hTZXJpZXMuY29sb3IsIGVhY2hTZXJpZXMucG9pbnRTaGFwZSwgY29udGV4dCwgb3B0cyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICB2YXIgY29sdW1uSW5kZXggPSAwO1xyXG4gICAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICAgIG1pblJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgICBtYXhSYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgICAgdmFyIHBvaW50cyA9IGdldERhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgcHJvY2Vzcyk7XHJcbiAgICAgIGlmIChlYWNoU2VyaWVzLnR5cGUgIT09ICdjb2x1bW4nKSB7XHJcbiAgICAgICAgZHJhd1BvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcG9pbnRzID0gZml4Q29sdW1lRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBjb2x1bW5MZW5ndGgsIGNvbHVtbkluZGV4LCBjb25maWcsIG9wdHMpO1xyXG4gICAgICAgIGRyYXdQb2ludFRleHQocG9pbnRzLCBlYWNoU2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgIGNvbHVtbkluZGV4ICs9IDE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmcsXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gb3B0cy5leHRyYS50b29sdGlwIHx8IHt9O1xyXG4gIGlmICh0b29sVGlwT3B0aW9uLmhvcml6ZW50YWxMaW5lICYmIG9wdHMudG9vbHRpcCAmJiBwcm9jZXNzID09PSAxICYmIChvcHRzLnR5cGUgPT0gJ2xpbmUnIHx8IG9wdHMudHlwZSA9PSAnYXJlYScgfHwgb3B0cy50eXBlID09ICdjb2x1bW4nIHx8IG9wdHMudHlwZSA9PSAnY2FuZGxlJyB8fCBvcHRzLnR5cGUgPT0gJ21peCcpKSB7XHJcbiAgICBkcmF3VG9vbFRpcEhvcml6ZW50YWxMaW5lKG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcsIHhBeGlzUG9pbnRzKVxyXG4gIH1cclxuICBjb250ZXh0LnNhdmUoKTtcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICB9XHJcbiAgaWYgKG9wdHMudG9vbHRpcCAmJiBvcHRzLnRvb2x0aXAudGV4dExpc3QgJiYgb3B0cy50b29sdGlwLnRleHRMaXN0Lmxlbmd0aCAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3VG9vbFRpcChvcHRzLnRvb2x0aXAudGV4dExpc3QsIG9wdHMudG9vbHRpcC5vZmZzZXQsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcsIHhBeGlzUG9pbnRzKTtcclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcblxyXG4gIGxldCB4QXhpc0RhdGEgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEsXHJcbiAgICB4QXhpc1BvaW50cyA9IHhBeGlzRGF0YS54QXhpc1BvaW50cyxcclxuICAgIHN0YXJ0WCA9IHhBeGlzRGF0YS5zdGFydFgsXHJcbiAgICBlbmRYID0geEF4aXNEYXRhLmVuZFgsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgYm91bmRhcnlHYXAgPSAnY2VudGVyJztcclxuICBpZiAob3B0cy50eXBlID09ICdiYXInIHx8IG9wdHMudHlwZSA9PSAnbGluZScgfHwgb3B0cy50eXBlID09ICdhcmVhJ3x8IG9wdHMudHlwZSA9PSAnc2NhdHRlcicgfHwgb3B0cy50eXBlID09ICdidWJibGUnKSB7XHJcbiAgICBib3VuZGFyeUdhcCA9IG9wdHMueEF4aXMuYm91bmRhcnlHYXA7XHJcbiAgfVxyXG4gIHZhciBzdGFydFkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxuICB2YXIgZW5kWSA9IG9wdHMuYXJlYVswXTtcclxuXHJcbiAgLy/nu5jliLbmu5rliqjmnaFcclxuICBpZiAob3B0cy5lbmFibGVTY3JvbGwgJiYgb3B0cy54QXhpcy5zY3JvbGxTaG93KSB7XHJcbiAgICB2YXIgc2Nyb2xsWSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdICsgY29uZmlnLnhBeGlzSGVpZ2h0O1xyXG4gICAgdmFyIHNjcm9sbFNjcmVlbldpZHRoID0gZW5kWCAtIHN0YXJ0WDtcclxuICAgIHZhciBzY3JvbGxUb3RhbFdpZHRoID0gZWFjaFNwYWNpbmcgKiAoeEF4aXNQb2ludHMubGVuZ3RoIC0gMSk7XHJcbiAgICB2YXIgc2Nyb2xsV2lkdGggPSBzY3JvbGxTY3JlZW5XaWR0aCAqIHNjcm9sbFNjcmVlbldpZHRoIC8gc2Nyb2xsVG90YWxXaWR0aDtcclxuICAgIHZhciBzY3JvbGxMZWZ0ID0gMDtcclxuICAgIGlmIChvcHRzLl9zY3JvbGxEaXN0YW5jZV8pIHtcclxuICAgICAgc2Nyb2xsTGVmdCA9IC1vcHRzLl9zY3JvbGxEaXN0YW5jZV8gKiAoc2Nyb2xsU2NyZWVuV2lkdGgpIC8gc2Nyb2xsVG90YWxXaWR0aDtcclxuICAgIH1cclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoJ3JvdW5kJyk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aCg2ICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShvcHRzLnhBeGlzLnNjcm9sbEJhY2tncm91bmRDb2xvciB8fCBcIiNFRkVCRUZcIik7XHJcbiAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHNjcm9sbFkpO1xyXG4gICAgY29udGV4dC5saW5lVG8oZW5kWCwgc2Nyb2xsWSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoJ3JvdW5kJyk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aCg2ICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShvcHRzLnhBeGlzLnNjcm9sbENvbG9yIHx8IFwiI0E2QTZBNlwiKTtcclxuICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCArIHNjcm9sbExlZnQsIHNjcm9sbFkpO1xyXG4gICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgc2Nyb2xsTGVmdCArIHNjcm9sbFdpZHRoLCBzY3JvbGxZKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lQ2FwKCdidXR0Jyk7XHJcbiAgfVxyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGlmIChvcHRzLl9zY3JvbGxEaXN0YW5jZV8gJiYgb3B0cy5fc2Nyb2xsRGlzdGFuY2VfICE9PSAwKSB7XHJcbiAgICBjb250ZXh0LnRyYW5zbGF0ZShvcHRzLl9zY3JvbGxEaXN0YW5jZV8sIDApO1xyXG4gIH1cclxuICAvL+e7mOWItljovbTliLvluqbnur9cclxuICBpZiAob3B0cy54QXhpcy5jYWxpYnJhdGlvbiA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShvcHRzLnhBeGlzLmdyaWRDb2xvciB8fCBcIiNjY2NjY2NcIik7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoJ2J1dHQnKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICB4QXhpc1BvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpbmRleCA+IDApIHtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0gLSBlYWNoU3BhY2luZyAvIDIsIHN0YXJ0WSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbSAtIGVhY2hTcGFjaW5nIC8gMiwgc3RhcnRZICsgMyAqIG9wdHMucGl4KTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+e7mOWItljovbTnvZHmoLxcclxuICBpZiAob3B0cy54QXhpcy5kaXNhYmxlR3JpZCAhPT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShvcHRzLnhBeGlzLmdyaWRDb2xvciB8fCBcIiNjY2NjY2NcIik7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoJ2J1dHQnKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICBpZiAob3B0cy54QXhpcy5ncmlkVHlwZSA9PSAnZGFzaCcpIHtcclxuICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbb3B0cy54QXhpcy5kYXNoTGVuZ3RoICogb3B0cy5waXgsIG9wdHMueEF4aXMuZGFzaExlbmd0aCAqIG9wdHMucGl4XSk7XHJcbiAgICB9XHJcbiAgICBvcHRzLnhBeGlzLmdyaWRFdmFsID0gb3B0cy54QXhpcy5ncmlkRXZhbCB8fCAxO1xyXG4gICAgeEF4aXNQb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICBpZiAoaW5kZXggJSBvcHRzLnhBeGlzLmdyaWRFdmFsID09IDApIHtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0sIHN0YXJ0WSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbSwgZW5kWSk7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcclxuICB9XHJcbiAgLy/nu5jliLZY6L205paH5qGIXHJcbiAgaWYgKG9wdHMueEF4aXMuZGlzYWJsZWQgIT09IHRydWUpIHtcclxuICAgIC8vIOWvuVjovbTliJfooajlgZrmir3nqIDlpITnkIZcclxuICAgIC8v6buY6K6k5YWo6YOo5pi+56S6WOi9tOagh+etvlxyXG4gICAgbGV0IG1heFhBeGlzTGlzdExlbmd0aCA9IGNhdGVnb3JpZXMubGVuZ3RoO1xyXG4gICAgLy/lpoLmnpzorr7nva7kuoZY6L205Y2V5bGP5pWw6YePXHJcbiAgICBpZiAob3B0cy54QXhpcy5sYWJlbENvdW50KSB7XHJcbiAgICAgIC8v5aaC5p6c6K6+572uWOi9tOWvhuW6plxyXG4gICAgICBpZiAob3B0cy54QXhpcy5pdGVtQ291bnQpIHtcclxuICAgICAgICBtYXhYQXhpc0xpc3RMZW5ndGggPSBNYXRoLmNlaWwoY2F0ZWdvcmllcy5sZW5ndGggLyBvcHRzLnhBeGlzLml0ZW1Db3VudCAqIG9wdHMueEF4aXMubGFiZWxDb3VudCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbWF4WEF4aXNMaXN0TGVuZ3RoID0gb3B0cy54QXhpcy5sYWJlbENvdW50O1xyXG4gICAgICB9XHJcbiAgICAgIG1heFhBeGlzTGlzdExlbmd0aCAtPSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCByYXRpbyA9IE1hdGguY2VpbChjYXRlZ29yaWVzLmxlbmd0aCAvIG1heFhBeGlzTGlzdExlbmd0aCk7XHJcblxyXG4gICAgbGV0IG5ld0NhdGVnb3JpZXMgPSBbXTtcclxuICAgIGxldCBjZ0xlbmd0aCA9IGNhdGVnb3JpZXMubGVuZ3RoO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjZ0xlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChpICUgcmF0aW8gIT09IDApIHtcclxuICAgICAgICBuZXdDYXRlZ29yaWVzLnB1c2goXCJcIik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3Q2F0ZWdvcmllcy5wdXNoKGNhdGVnb3JpZXNbaV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBuZXdDYXRlZ29yaWVzW2NnTGVuZ3RoIC0gMV0gPSBjYXRlZ29yaWVzW2NnTGVuZ3RoIC0gMV07XHJcbiAgICB2YXIgeEF4aXNGb250U2l6ZSA9IG9wdHMueEF4aXMuZm9udFNpemUgKiBvcHRzLnBpeCB8fCBjb25maWcuZm9udFNpemU7XHJcbiAgICBpZiAoY29uZmlnLl94QXhpc1RleHRBbmdsZV8gPT09IDApIHtcclxuICAgICAgbmV3Q2F0ZWdvcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIHhpdGVtID0gb3B0cy54QXhpcy5mb3JtYXR0ZXIgPyBvcHRzLnhBeGlzLmZvcm1hdHRlcihpdGVtKSA6IGl0ZW07XHJcbiAgICAgICAgdmFyIG9mZnNldCA9IC1tZWFzdXJlVGV4dChTdHJpbmcoeGl0ZW0pLCB4QXhpc0ZvbnRTaXplLCBjb250ZXh0KSAvIDI7XHJcbiAgICAgICAgaWYgKGJvdW5kYXJ5R2FwID09ICdjZW50ZXInKSB7XHJcbiAgICAgICAgICBvZmZzZXQgKz0gZWFjaFNwYWNpbmcgLyAyO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgc2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgICBpZiAob3B0cy54QXhpcy5zY3JvbGxTaG93KSB7XHJcbiAgICAgICAgICBzY3JvbGxIZWlnaHQgPSA2ICogb3B0cy5waXg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRGb250U2l6ZSh4QXhpc0ZvbnRTaXplKTtcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShvcHRzLnhBeGlzLmZvbnRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgICAgY29udGV4dC5maWxsVGV4dChTdHJpbmcoeGl0ZW0pLCB4QXhpc1BvaW50c1tpbmRleF0gKyBvZmZzZXQsIHN0YXJ0WSArIHhBeGlzRm9udFNpemUgKyAoY29uZmlnLnhBeGlzSGVpZ2h0IC0gc2Nyb2xsSGVpZ2h0IC0geEF4aXNGb250U2l6ZSkgLyAyKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3Q2F0ZWdvcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIHhpdGVtID0gb3B0cy54QXhpcy5mb3JtYXR0ZXIgPyBvcHRzLnhBeGlzLmZvcm1hdHRlcihpdGVtKSA6IGl0ZW07XHJcbiAgICAgICAgY29udGV4dC5zYXZlKCk7XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldEZvbnRTaXplKHhBeGlzRm9udFNpemUpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKG9wdHMueEF4aXMuZm9udENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgICB2YXIgdGV4dFdpZHRoID0gbWVhc3VyZVRleHQoU3RyaW5nKHhpdGVtKSwgeEF4aXNGb250U2l6ZSwgY29udGV4dCk7XHJcbiAgICAgICAgdmFyIG9mZnNldCA9IC10ZXh0V2lkdGg7XHJcbiAgICAgICAgaWYgKGJvdW5kYXJ5R2FwID09ICdjZW50ZXInKSB7XHJcbiAgICAgICAgICBvZmZzZXQgKz0gZWFjaFNwYWNpbmcgLyAyO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgX2NhbFJvdGF0ZVRyYW5zbGF0ZSA9IGNhbFJvdGF0ZVRyYW5zbGF0ZSh4QXhpc1BvaW50c1tpbmRleF0gKyBlYWNoU3BhY2luZyAvIDIsIHN0YXJ0WSArIHhBeGlzRm9udFNpemUgLyAyICsgNSwgb3B0cy5oZWlnaHQpLFxyXG4gICAgICAgICAgdHJhbnNYID0gX2NhbFJvdGF0ZVRyYW5zbGF0ZS50cmFuc1gsXHJcbiAgICAgICAgICB0cmFuc1kgPSBfY2FsUm90YXRlVHJhbnNsYXRlLnRyYW5zWTtcclxuXHJcbiAgICAgICAgY29udGV4dC5yb3RhdGUoLTEgKiBjb25maWcuX3hBeGlzVGV4dEFuZ2xlXyk7XHJcbiAgICAgICAgY29udGV4dC50cmFuc2xhdGUodHJhbnNYLCB0cmFuc1kpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsbFRleHQoU3RyaW5nKHhpdGVtKSwgeEF4aXNQb2ludHNbaW5kZXhdICsgb2Zmc2V0LCBzdGFydFkgKyB4QXhpc0ZvbnRTaXplICsgNSk7XHJcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgLy/nu5jliLZY6L206L2057q/XHJcbiAgaWYgKG9wdHMueEF4aXMuYXhpc0xpbmUpIHtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuYXhpc0xpbmVDb2xvcik7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICBjb250ZXh0LmxpbmVUbyhlbmRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICBpZiAob3B0cy55QXhpcy5kaXNhYmxlR3JpZCA9PT0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBsZXQgc3BhY2luZ1ZhbGlkID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgbGV0IGVhY2hTcGFjaW5nID0gc3BhY2luZ1ZhbGlkIC8gb3B0cy55QXhpcy5zcGxpdE51bWJlcjtcclxuICBsZXQgc3RhcnRYID0gb3B0cy5hcmVhWzNdO1xyXG4gIGxldCB4QXhpc1BvaW50cyA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS54QXhpc1BvaW50cyxcclxuICAgIHhBeGlzZWFjaFNwYWNpbmcgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IFRvdGFsV2lkdGggPSB4QXhpc2VhY2hTcGFjaW5nICogKHhBeGlzUG9pbnRzLmxlbmd0aCAtIDEpO1xyXG4gIGxldCBlbmRYID0gc3RhcnRYICsgVG90YWxXaWR0aDtcclxuICBsZXQgcG9pbnRzID0gW107XHJcbiAgbGV0IHN0YXJ0WSA9IDFcclxuICBpZiAob3B0cy54QXhpcy5heGlzTGluZSA9PT0gZmFsc2UpIHtcclxuICAgIHN0YXJ0WSA9IDBcclxuICB9XHJcbiAgZm9yIChsZXQgaSA9IHN0YXJ0WTsgaSA8IG9wdHMueUF4aXMuc3BsaXROdW1iZXIgKyAxOyBpKyspIHtcclxuICAgIHBvaW50cy5wdXNoKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdIC0gZWFjaFNwYWNpbmcgKiBpKTtcclxuICB9XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDApIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnlBeGlzLmdyaWRUeXBlID09ICdkYXNoJykge1xyXG4gICAgY29udGV4dC5zZXRMaW5lRGFzaChbb3B0cy55QXhpcy5kYXNoTGVuZ3RoICogb3B0cy5waXgsIG9wdHMueUF4aXMuZGFzaExlbmd0aCAqIG9wdHMucGl4XSk7XHJcbiAgfVxyXG4gIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUob3B0cy55QXhpcy5ncmlkQ29sb3IpO1xyXG4gIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIGl0ZW0pO1xyXG4gICAgY29udGV4dC5saW5lVG8oZW5kWCwgaXRlbSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIH0pO1xyXG4gIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3WUF4aXMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICBpZiAob3B0cy55QXhpcy5kaXNhYmxlZCA9PT0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICB2YXIgc3BhY2luZ1ZhbGlkID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgdmFyIGVhY2hTcGFjaW5nID0gc3BhY2luZ1ZhbGlkIC8gb3B0cy55QXhpcy5zcGxpdE51bWJlcjtcclxuICB2YXIgc3RhcnRYID0gb3B0cy5hcmVhWzNdO1xyXG4gIHZhciBlbmRYID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXTtcclxuICB2YXIgZW5kWSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdO1xyXG4gIHZhciBmaWxsRW5kWSA9IGVuZFkgKyBjb25maWcueEF4aXNIZWlnaHQ7XHJcbiAgaWYgKG9wdHMueEF4aXMuc2Nyb2xsU2hvdykge1xyXG4gICAgZmlsbEVuZFkgLT0gMyAqIG9wdHMucGl4O1xyXG4gIH1cclxuICBpZiAob3B0cy54QXhpcy5yb3RhdGVMYWJlbCkge1xyXG4gICAgZmlsbEVuZFkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSArIG9wdHMuZm9udFNpemUgKiBvcHRzLnBpeCAvIDI7XHJcbiAgfVxyXG4gIC8vIHNldCBZQXhpcyBiYWNrZ3JvdW5kXHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShvcHRzLmJhY2tncm91bmQpO1xyXG4gIGlmIChvcHRzLmVuYWJsZVNjcm9sbCA9PSB0cnVlICYmIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gJiYgb3B0cy54QXhpcy5zY3JvbGxQb3NpdGlvbiAhPT0gJ2xlZnQnKSB7XHJcbiAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHN0YXJ0WCwgZmlsbEVuZFkpO1xyXG4gIH1cclxuICBpZiAob3B0cy5lbmFibGVTY3JvbGwgPT0gdHJ1ZSAmJiBvcHRzLnhBeGlzLnNjcm9sbFBvc2l0aW9uICYmIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gIT09ICdyaWdodCcpIHtcclxuICAgIGNvbnRleHQuZmlsbFJlY3QoZW5kWCwgMCwgb3B0cy53aWR0aCwgZmlsbEVuZFkpO1xyXG4gIH1cclxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgXHJcbiAgbGV0IHRTdGFydExlZnQgPSBvcHRzLmFyZWFbM107XHJcbiAgbGV0IHRTdGFydFJpZ2h0ID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXTtcclxuICBsZXQgdFN0YXJ0Q2VudGVyID0gb3B0cy5hcmVhWzNdICsgKG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM10pIC8gMjtcclxuICBpZiAob3B0cy55QXhpcy5kYXRhKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdHMueUF4aXMuZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgeURhdGEgPSBvcHRzLnlBeGlzLmRhdGFbaV07XHJcbiAgICAgIHZhciBwb2ludHMgPSBbXTtcclxuICAgICAgaWYoeURhdGEudHlwZSA9PT0gJ2NhdGVnb3JpZXMnKXtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB5RGF0YS5jYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBwb2ludHMucHVzaChvcHRzLmFyZWFbMF0gKyBzcGFjaW5nVmFsaWQgLyB5RGF0YS5jYXRlZ29yaWVzLmxlbmd0aCAvIDIgKyBzcGFjaW5nVmFsaWQgLyB5RGF0YS5jYXRlZ29yaWVzLmxlbmd0aCAqIGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gb3B0cy55QXhpcy5zcGxpdE51bWJlcjsgaSsrKSB7XHJcbiAgICAgICAgICBwb2ludHMucHVzaChvcHRzLmFyZWFbMF0gKyBlYWNoU3BhY2luZyAqIGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoeURhdGEuZGlzYWJsZWQgIT09IHRydWUpIHtcclxuICAgICAgICBsZXQgcmFuZ2VzRm9ybWF0ID0gb3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc0Zvcm1hdFtpXTtcclxuICAgICAgICBsZXQgeUF4aXNGb250U2l6ZSA9IHlEYXRhLmZvbnRTaXplID8geURhdGEuZm9udFNpemUgKiBvcHRzLnBpeCA6IGNvbmZpZy5mb250U2l6ZTtcclxuICAgICAgICBsZXQgeUF4aXNXaWR0aCA9IG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS55QXhpc1dpZHRoW2ldO1xyXG4gICAgICAgIGxldCB0ZXh0QWxpZ24gPSB5RGF0YS50ZXh0QWxpZ24gfHwgXCJyaWdodFwiO1xyXG4gICAgICAgIC8v55S7Wei9tOWIu+W6puWPiuaWh+ahiFxyXG4gICAgICAgIHJhbmdlc0Zvcm1hdC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgICB2YXIgcG9zID0gcG9pbnRzW2luZGV4XSA/IHBvaW50c1tpbmRleF0gOiBlbmRZO1xyXG4gICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoeUF4aXNGb250U2l6ZSk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh5RGF0YS5heGlzTGluZUNvbG9yIHx8ICcjY2NjY2NjJyk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZSh5RGF0YS5mb250Q29sb3IgfHwgb3B0cy5mb250Q29sb3IpO1xyXG4gICAgICAgICAgbGV0IHRtcHN0cmF0ID0gMDtcclxuICAgICAgICAgIGxldCBnYXB3aWR0aCA9IDQgKiBvcHRzLnBpeDtcclxuICAgICAgICAgIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdsZWZ0Jykge1xyXG4gICAgICAgICAgICAvL+eUu+WIu+W6pue6v1xyXG4gICAgICAgICAgICBpZiAoeURhdGEuY2FsaWJyYXRpb24gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHRTdGFydExlZnQsIHBvcyk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8odFN0YXJ0TGVmdCAtIDMgKiBvcHRzLnBpeCwgcG9zKTtcclxuICAgICAgICAgICAgICBnYXB3aWR0aCArPSAzICogb3B0cy5waXg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy/nlLvmloflrZdcclxuICAgICAgICAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHtcclxuICAgICAgICAgICAgICBjYXNlIFwibGVmdFwiOlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2xlZnQnKTtcclxuICAgICAgICAgICAgICAgIHRtcHN0cmF0ID0gdFN0YXJ0TGVmdCAtIHlBeGlzV2lkdGgud2lkdGhcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ3JpZ2h0Jyk7XHJcbiAgICAgICAgICAgICAgICB0bXBzdHJhdCA9IHRTdGFydExlZnQgLSBnYXB3aWR0aFxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdjZW50ZXInKTtcclxuICAgICAgICAgICAgICAgIHRtcHN0cmF0ID0gdFN0YXJ0TGVmdCAtIHlBeGlzV2lkdGgud2lkdGggLyAyXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dChTdHJpbmcoaXRlbSksIHRtcHN0cmF0LCBwb3MgKyB5QXhpc0ZvbnRTaXplIC8gMiAtIDMgKiBvcHRzLnBpeCk7XHJcblxyXG4gICAgICAgICAgfSBlbHNlIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgLy/nlLvliLvluqbnur9cclxuICAgICAgICAgICAgaWYgKHlEYXRhLmNhbGlicmF0aW9uID09IHRydWUpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyh0U3RhcnRSaWdodCwgcG9zKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh0U3RhcnRSaWdodCArIDMgKiBvcHRzLnBpeCwgcG9zKTtcclxuICAgICAgICAgICAgICBnYXB3aWR0aCArPSAzICogb3B0cy5waXg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHtcclxuICAgICAgICAgICAgICBjYXNlIFwibGVmdFwiOlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2xlZnQnKTtcclxuICAgICAgICAgICAgICAgIHRtcHN0cmF0ID0gdFN0YXJ0UmlnaHQgKyBnYXB3aWR0aFxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSBcInJpZ2h0XCI6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbigncmlnaHQnKTtcclxuICAgICAgICAgICAgICAgIHRtcHN0cmF0ID0gdFN0YXJ0UmlnaHQgKyB5QXhpc1dpZHRoLndpZHRoXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRSaWdodCArIHlBeGlzV2lkdGgud2lkdGggLyAyXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dChTdHJpbmcoaXRlbSksIHRtcHN0cmF0LCBwb3MgKyB5QXhpc0ZvbnRTaXplIC8gMiAtIDMgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ2NlbnRlcicpIHtcclxuICAgICAgICAgICAgLy/nlLvliLvluqbnur9cclxuICAgICAgICAgICAgaWYgKHlEYXRhLmNhbGlicmF0aW9uID09IHRydWUpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyh0U3RhcnRDZW50ZXIsIHBvcyk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8odFN0YXJ0Q2VudGVyIC0gMyAqIG9wdHMucGl4LCBwb3MpO1xyXG4gICAgICAgICAgICAgIGdhcHdpZHRoICs9IDMgKiBvcHRzLnBpeDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL+eUu+aWh+Wtl1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHRleHRBbGlnbikge1xyXG4gICAgICAgICAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRDZW50ZXIgLSB5QXhpc1dpZHRoLndpZHRoXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIFwicmlnaHRcIjpcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdyaWdodCcpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRDZW50ZXIgLSBnYXB3aWR0aFxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdjZW50ZXInKTtcclxuICAgICAgICAgICAgICAgIHRtcHN0cmF0ID0gdFN0YXJ0Q2VudGVyIC0geUF4aXNXaWR0aC53aWR0aCAvIDJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhpdGVtKSwgdG1wc3RyYXQsIHBvcyArIHlBeGlzRm9udFNpemUgLyAyIC0gMyAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2xlZnQnKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvL+eUu1novbTovbTnur9cclxuICAgICAgICBpZiAoeURhdGEuYXhpc0xpbmUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh5RGF0YS5heGlzTGluZUNvbG9yIHx8ICcjY2NjY2NjJyk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHRTdGFydExlZnQsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8odFN0YXJ0TGVmdCwgb3B0cy5hcmVhWzBdKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoeUF4aXNXaWR0aC5wb3NpdGlvbiA9PSAncmlnaHQnKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHRTdGFydFJpZ2h0LCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHRTdGFydFJpZ2h0LCBvcHRzLmFyZWFbMF0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdjZW50ZXInKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHRTdGFydENlbnRlciwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh0U3RhcnRDZW50ZXIsIG9wdHMuYXJlYVswXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL+eUu1novbTmoIfpophcclxuICAgICAgICBpZiAob3B0cy55QXhpcy5zaG93VGl0bGUpIHtcclxuICAgICAgICAgIGxldCB0aXRsZUZvbnRTaXplID0geURhdGEudGl0bGVGb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgICAgICAgIGxldCB0aXRsZSA9IHlEYXRhLnRpdGxlO1xyXG4gICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUodGl0bGVGb250U2l6ZSk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZSh5RGF0YS50aXRsZUZvbnRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgICAgICBpZiAoeUF4aXNXaWR0aC5wb3NpdGlvbiA9PSAnbGVmdCcpIHtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0aXRsZSwgdFN0YXJ0TGVmdCAtIG1lYXN1cmVUZXh0KHRpdGxlLCB0aXRsZUZvbnRTaXplLCBjb250ZXh0KSAvIDIgKyAoeURhdGEudGl0bGVPZmZzZXRYIHx8IDApLCBvcHRzLmFyZWFbMF0gLSAoMTAgLSAoeURhdGEudGl0bGVPZmZzZXRZIHx8IDApKSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoeUF4aXNXaWR0aC5wb3NpdGlvbiA9PSAncmlnaHQnKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQodGl0bGUsIHRTdGFydFJpZ2h0IC0gbWVhc3VyZVRleHQodGl0bGUsIHRpdGxlRm9udFNpemUsIGNvbnRleHQpIC8gMiArICh5RGF0YS50aXRsZU9mZnNldFggfHwgMCksIG9wdHMuYXJlYVswXSAtICgxMCAtICh5RGF0YS50aXRsZU9mZnNldFkgfHwgMCkpICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdjZW50ZXInKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQodGl0bGUsIHRTdGFydENlbnRlciAtIG1lYXN1cmVUZXh0KHRpdGxlLCB0aXRsZUZvbnRTaXplLCBjb250ZXh0KSAvIDIgKyAoeURhdGEudGl0bGVPZmZzZXRYIHx8IDApLCBvcHRzLmFyZWFbMF0gLSAoMTAgLSAoeURhdGEudGl0bGVPZmZzZXRZIHx8IDApKSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoeUF4aXNXaWR0aC5wb3NpdGlvbiA9PSAnbGVmdCcpIHtcclxuICAgICAgICAgIHRTdGFydExlZnQgLT0gKHlBeGlzV2lkdGgud2lkdGggKyBvcHRzLnlBeGlzLnBhZGRpbmcgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRTdGFydFJpZ2h0ICs9IHlBeGlzV2lkdGgud2lkdGggKyBvcHRzLnlBeGlzLnBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3TGVnZW5kKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBjaGFydERhdGEpIHtcclxuICBpZiAob3B0cy5sZWdlbmQuc2hvdyA9PT0gZmFsc2UpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgbGV0IGxlZ2VuZERhdGEgPSBjaGFydERhdGEubGVnZW5kRGF0YTtcclxuICBsZXQgbGVnZW5kTGlzdCA9IGxlZ2VuZERhdGEucG9pbnRzO1xyXG4gIGxldCBsZWdlbmRBcmVhID0gbGVnZW5kRGF0YS5hcmVhO1xyXG4gIGxldCBwYWRkaW5nID0gb3B0cy5sZWdlbmQucGFkZGluZyAqIG9wdHMucGl4O1xyXG4gIGxldCBmb250U2l6ZSA9IG9wdHMubGVnZW5kLmZvbnRTaXplICogb3B0cy5waXg7XHJcbiAgbGV0IHNoYXBlV2lkdGggPSAxNSAqIG9wdHMucGl4O1xyXG4gIGxldCBzaGFwZVJpZ2h0ID0gNSAqIG9wdHMucGl4O1xyXG4gIGxldCBpdGVtR2FwID0gb3B0cy5sZWdlbmQuaXRlbUdhcCAqIG9wdHMucGl4O1xyXG4gIGxldCBsaW5lSGVpZ2h0ID0gTWF0aC5tYXgob3B0cy5sZWdlbmQubGluZUhlaWdodCAqIG9wdHMucGl4LCBmb250U2l6ZSk7XHJcbiAgLy/nlLvog4zmma/lj4rovrnmoYZcclxuICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gIGNvbnRleHQuc2V0TGluZVdpZHRoKG9wdHMubGVnZW5kLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUob3B0cy5sZWdlbmQuYm9yZGVyQ29sb3IpO1xyXG4gIGNvbnRleHQuc2V0RmlsbFN0eWxlKG9wdHMubGVnZW5kLmJhY2tncm91bmRDb2xvcik7XHJcbiAgY29udGV4dC5tb3ZlVG8obGVnZW5kQXJlYS5zdGFydC54LCBsZWdlbmRBcmVhLnN0YXJ0LnkpO1xyXG4gIGNvbnRleHQucmVjdChsZWdlbmRBcmVhLnN0YXJ0LngsIGxlZ2VuZEFyZWEuc3RhcnQueSwgbGVnZW5kQXJlYS53aWR0aCwgbGVnZW5kQXJlYS5oZWlnaHQpO1xyXG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgY29udGV4dC5maWxsKCk7XHJcbiAgY29udGV4dC5zdHJva2UoKTtcclxuICBsZWdlbmRMaXN0LmZvckVhY2goZnVuY3Rpb24oaXRlbUxpc3QsIGxpc3RJbmRleCkge1xyXG4gICAgbGV0IHdpZHRoID0gMDtcclxuICAgIGxldCBoZWlnaHQgPSAwO1xyXG4gICAgd2lkdGggPSBsZWdlbmREYXRhLndpZHRoQXJyW2xpc3RJbmRleF07XHJcbiAgICBoZWlnaHQgPSBsZWdlbmREYXRhLmhlaWdodEFycltsaXN0SW5kZXhdO1xyXG4gICAgbGV0IHN0YXJ0WCA9IDA7XHJcbiAgICBsZXQgc3RhcnRZID0gMDtcclxuICAgIGlmIChvcHRzLmxlZ2VuZC5wb3NpdGlvbiA9PSAndG9wJyB8fCBvcHRzLmxlZ2VuZC5wb3NpdGlvbiA9PSAnYm90dG9tJykge1xyXG4gICAgICBzd2l0Y2ggKG9wdHMubGVnZW5kLmZsb2F0KSB7XHJcbiAgICAgICAgY2FzZSAnbGVmdCc6XHJcbiAgICAgICAgICBzdGFydFggPSBsZWdlbmRBcmVhLnN0YXJ0LnggKyBwYWRkaW5nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcclxuICAgICAgICAgIHN0YXJ0WCA9IGxlZ2VuZEFyZWEuc3RhcnQueCArIGxlZ2VuZEFyZWEud2lkdGggLSB3aWR0aDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHN0YXJ0WCA9IGxlZ2VuZEFyZWEuc3RhcnQueCArIChsZWdlbmRBcmVhLndpZHRoIC0gd2lkdGgpIC8gMjtcclxuICAgICAgfVxyXG4gICAgICBzdGFydFkgPSBsZWdlbmRBcmVhLnN0YXJ0LnkgKyBwYWRkaW5nICsgbGlzdEluZGV4ICogbGluZUhlaWdodDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChsaXN0SW5kZXggPT0gMCkge1xyXG4gICAgICAgIHdpZHRoID0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB3aWR0aCA9IGxlZ2VuZERhdGEud2lkdGhBcnJbbGlzdEluZGV4IC0gMV07XHJcbiAgICAgIH1cclxuICAgICAgc3RhcnRYID0gbGVnZW5kQXJlYS5zdGFydC54ICsgcGFkZGluZyArIHdpZHRoO1xyXG4gICAgICBzdGFydFkgPSBsZWdlbmRBcmVhLnN0YXJ0LnkgKyBwYWRkaW5nICsgKGxlZ2VuZEFyZWEuaGVpZ2h0IC0gaGVpZ2h0KSAvIDI7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldEZvbnRTaXplKGNvbmZpZy5mb250U2l6ZSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1MaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBpdGVtID0gaXRlbUxpc3RbaV07XHJcbiAgICAgIGl0ZW0uYXJlYSA9IFswLCAwLCAwLCAwXTtcclxuICAgICAgaXRlbS5hcmVhWzBdID0gc3RhcnRYO1xyXG4gICAgICBpdGVtLmFyZWFbMV0gPSBzdGFydFk7XHJcbiAgICAgIGl0ZW0uYXJlYVszXSA9IHN0YXJ0WSArIGxpbmVIZWlnaHQ7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaXRlbS5zaG93ID8gaXRlbS5jb2xvciA6IG9wdHMubGVnZW5kLmhpZGRlbkNvbG9yKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaXRlbS5zaG93ID8gaXRlbS5jb2xvciA6IG9wdHMubGVnZW5kLmhpZGRlbkNvbG9yKTtcclxuICAgICAgc3dpdGNoIChpdGVtLmxlZ2VuZFNoYXBlKSB7XHJcbiAgICAgICAgY2FzZSAnbGluZSc6XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSAyICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgY29udGV4dC5maWxsUmVjdChzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSAyICogb3B0cy5waXgsIDE1ICogb3B0cy5waXgsIDQgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICd0cmlhbmdsZSc6XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFggKyA3LjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyAyLjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCArIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyAxMi41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgKyA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZGlhbW9uZCc6XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFggKyA3LjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyAyLjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyA3LjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCArIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyAxMi41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQpO1xyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnY2lyY2xlJzpcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCArIDcuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0KTtcclxuICAgICAgICAgIGNvbnRleHQuYXJjKHN0YXJ0WCArIDcuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0LCA1ICogb3B0cy5waXgsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3JlY3QnOlxyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0IC0gNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0IC0gNSAqIG9wdHMucGl4LCAxNSAqIG9wdHMucGl4LCAxMCAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3NxdWFyZSc6XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFggKyA1ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgY29udGV4dC5maWxsUmVjdChzdGFydFggKyA1ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgsIDEwICogb3B0cy5waXgsIDEwICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbm9uZSc6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0IC0gNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0IC0gNSAqIG9wdHMucGl4LCAxNSAqIG9wdHMucGl4LCAxMCAqIG9wdHMucGl4KTtcclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgc3RhcnRYICs9IHNoYXBlV2lkdGggKyBzaGFwZVJpZ2h0O1xyXG4gICAgICBsZXQgZm9udFRyYW5zID0gMC41ICogbGluZUhlaWdodCArIDAuNSAqIGZvbnRTaXplIC0gMjtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0uc2hvdyA/IG9wdHMubGVnZW5kLmZvbnRDb2xvciA6IG9wdHMubGVnZW5kLmhpZGRlbkNvbG9yKTtcclxuICAgICAgY29udGV4dC5maWxsVGV4dChpdGVtLm5hbWUsIHN0YXJ0WCwgc3RhcnRZICsgZm9udFRyYW5zKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgaWYgKG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICd0b3AnIHx8IG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICdib3R0b20nKSB7XHJcbiAgICAgICAgc3RhcnRYICs9IG1lYXN1cmVUZXh0KGl0ZW0ubmFtZSwgZm9udFNpemUsIGNvbnRleHQpICsgaXRlbUdhcDtcclxuICAgICAgICBpdGVtLmFyZWFbMl0gPSBzdGFydFg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXRlbS5hcmVhWzJdID0gc3RhcnRYICsgbWVhc3VyZVRleHQoaXRlbS5uYW1lLCBmb250U2l6ZSwgY29udGV4dCkgKyBpdGVtR2FwOztcclxuICAgICAgICBzdGFydFggLT0gc2hhcGVXaWR0aCArIHNoYXBlUmlnaHQ7XHJcbiAgICAgICAgc3RhcnRZICs9IGxpbmVIZWlnaHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1BpZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICB2YXIgcGllT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBhY3RpdmVPcGFjaXR5OiAwLjUsXHJcbiAgICBhY3RpdmVSYWRpdXM6IDEwLFxyXG4gICAgb2Zmc2V0QW5nbGU6IDAsXHJcbiAgICBsYWJlbFdpZHRoOiAxNSxcclxuICAgIHJpbmdXaWR0aDogMzAsXHJcbiAgICBjdXN0b21SYWRpdXM6IDAsXHJcbiAgICBib3JkZXI6IGZhbHNlLFxyXG4gICAgYm9yZGVyV2lkdGg6IDIsXHJcbiAgICBib3JkZXJDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgY2VudGVyQ29sb3I6ICcjRkZGRkZGJyxcclxuICAgIGxpbmVhclR5cGU6ICdub25lJyxcclxuICAgIGN1c3RvbUNvbG9yOiBbXSxcclxuICB9LCBvcHRzLnR5cGUgPT0gXCJwaWVcIiA/IG9wdHMuZXh0cmEucGllIDogb3B0cy5leHRyYS5yaW5nKTtcclxuICB2YXIgY2VudGVyUG9zaXRpb24gPSB7XHJcbiAgICB4OiBvcHRzLmFyZWFbM10gKyAob3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXSkgLyAyLFxyXG4gICAgeTogb3B0cy5hcmVhWzBdICsgKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdKSAvIDJcclxuICB9O1xyXG4gIGlmIChjb25maWcucGllQ2hhcnRMaW5lUGFkZGluZyA9PSAwKSB7XHJcbiAgICBjb25maWcucGllQ2hhcnRMaW5lUGFkZGluZyA9IHBpZU9wdGlvbi5hY3RpdmVSYWRpdXMgKiBvcHRzLnBpeDtcclxuICB9XHJcblxyXG4gIHZhciByYWRpdXMgPSBNYXRoLm1pbigob3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXSkgLyAyIC0gY29uZmlnLnBpZUNoYXJ0TGluZVBhZGRpbmcgLSBjb25maWcucGllQ2hhcnRUZXh0UGFkZGluZyAtIGNvbmZpZy5fcGllVGV4dE1heExlbmd0aF8sIChvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXSkgLyAyIC0gY29uZmlnLnBpZUNoYXJ0TGluZVBhZGRpbmcgLSBjb25maWcucGllQ2hhcnRUZXh0UGFkZGluZyk7XHJcbiAgaWYgKHBpZU9wdGlvbi5jdXN0b21SYWRpdXMgPiAwKSB7XHJcbiAgICByYWRpdXMgPSBwaWVPcHRpb24uY3VzdG9tUmFkaXVzICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIHNlcmllcyA9IGdldFBpZURhdGFQb2ludHMoc2VyaWVzLCByYWRpdXMsIHByb2Nlc3MpO1xyXG4gIHZhciBhY3RpdmVSYWRpdXMgPSBwaWVPcHRpb24uYWN0aXZlUmFkaXVzICogb3B0cy5waXg7XHJcbiAgcGllT3B0aW9uLmN1c3RvbUNvbG9yID0gZmlsbEN1c3RvbUNvbG9yKHBpZU9wdGlvbi5saW5lYXJUeXBlLCBwaWVPcHRpb24uY3VzdG9tQ29sb3IsIHNlcmllcywgY29uZmlnKTtcclxuICBzZXJpZXMgPSBzZXJpZXMubWFwKGZ1bmN0aW9uKGVhY2hTZXJpZXMpIHtcclxuICAgIGVhY2hTZXJpZXMuX3N0YXJ0XyArPSAocGllT3B0aW9uLm9mZnNldEFuZ2xlKSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICByZXR1cm4gZWFjaFNlcmllcztcclxuICB9KTtcclxuICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgaWYgKG9wdHMudG9vbHRpcCkge1xyXG4gICAgICBpZiAob3B0cy50b29sdGlwLmluZGV4ID09IHNlcmllc0luZGV4KSB7XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCBwaWVPcHRpb24uYWN0aXZlT3BhY2l0eSB8fCAwLjUpKTtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICAgICAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBlYWNoU2VyaWVzLl9yYWRpdXNfICsgYWN0aXZlUmFkaXVzLCBlYWNoU2VyaWVzLl9zdGFydF8sIGVhY2hTZXJpZXMuX3N0YXJ0XyArIDIgKiBlYWNoU2VyaWVzLl9wcm9wb3J0aW9uXyAqIE1hdGguUEkpO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChwaWVPcHRpb24uYm9yZGVyV2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LmxpbmVKb2luID0gXCJyb3VuZFwiO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShwaWVPcHRpb24uYm9yZGVyQ29sb3IpO1xyXG4gICAgdmFyIGZpbGxjb2xvciA9IGVhY2hTZXJpZXMuY29sb3I7XHJcbiAgICBpZiAocGllT3B0aW9uLmxpbmVhclR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgdmFyIGdyZDtcclxuICAgICAgaWYoY29udGV4dC5jcmVhdGVDaXJjdWxhckdyYWRpZW50KXtcclxuICAgICAgICBncmQgPSBjb250ZXh0LmNyZWF0ZUNpcmN1bGFyR3JhZGllbnQoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgZWFjaFNlcmllcy5fcmFkaXVzXylcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgZ3JkID0gY29udGV4dC5jcmVhdGVSYWRpYWxHcmFkaWVudChjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCAwLGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGVhY2hTZXJpZXMuX3JhZGl1c18pXHJcbiAgICAgIH1cclxuICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihwaWVPcHRpb24uY3VzdG9tQ29sb3JbZWFjaFNlcmllcy5saW5lYXJJbmRleF0sIDEpKVxyXG4gICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGVhY2hTZXJpZXMuY29sb3IsIDEpKVxyXG4gICAgICBmaWxsY29sb3IgPSBncmRcclxuICAgIH1cclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxjb2xvcik7XHJcbiAgICBjb250ZXh0Lm1vdmVUbyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICAgIGNvbnRleHQuYXJjKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGVhY2hTZXJpZXMuX3JhZGl1c18sIGVhY2hTZXJpZXMuX3N0YXJ0XywgZWFjaFNlcmllcy5fc3RhcnRfICsgMiAqIGVhY2hTZXJpZXMuX3Byb3BvcnRpb25fICogTWF0aC5QSSk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5maWxsKCk7XHJcbiAgICBpZiAocGllT3B0aW9uLmJvcmRlciA9PSB0cnVlKSB7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgaWYgKG9wdHMudHlwZSA9PT0gJ3JpbmcnKSB7XHJcbiAgICB2YXIgaW5uZXJQaWVXaWR0aCA9IHJhZGl1cyAqIDAuNjtcclxuICAgIGlmICh0eXBlb2YgcGllT3B0aW9uLnJpbmdXaWR0aCA9PT0gJ251bWJlcicgJiYgcGllT3B0aW9uLnJpbmdXaWR0aCA+IDApIHtcclxuICAgICAgaW5uZXJQaWVXaWR0aCA9IE1hdGgubWF4KDAsIHJhZGl1cyAtIHBpZU9wdGlvbi5yaW5nV2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUocGllT3B0aW9uLmNlbnRlckNvbG9yKTtcclxuICAgIGNvbnRleHQubW92ZVRvKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgaW5uZXJQaWVXaWR0aCwgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gIH1cclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIHZhciB2YWxpZCA9IGZhbHNlO1xyXG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHNlcmllcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBpZiAoc2VyaWVzW2ldLmRhdGEgPiAwKSB7XHJcbiAgICAgICAgdmFsaWQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodmFsaWQpIHtcclxuICAgICAgZHJhd1BpZVRleHQoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHJhZGl1cywgY2VudGVyUG9zaXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAocHJvY2VzcyA9PT0gMSAmJiBvcHRzLnR5cGUgPT09ICdyaW5nJykge1xyXG4gICAgZHJhd1JpbmdUaXRsZShvcHRzLCBjb25maWcsIGNvbnRleHQsIGNlbnRlclBvc2l0aW9uKTtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIGNlbnRlcjogY2VudGVyUG9zaXRpb24sXHJcbiAgICByYWRpdXM6IHJhZGl1cyxcclxuICAgIHNlcmllczogc2VyaWVzXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1Jvc2VEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgdmFyIHJvc2VPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIHR5cGU6ICdhcmVhJyxcclxuICAgIGFjdGl2ZU9wYWNpdHk6IDAuNSxcclxuICAgIGFjdGl2ZVJhZGl1czogMTAsXHJcbiAgICBvZmZzZXRBbmdsZTogMCxcclxuICAgIGxhYmVsV2lkdGg6IDE1LFxyXG4gICAgYm9yZGVyOiBmYWxzZSxcclxuICAgIGJvcmRlcldpZHRoOiAyLFxyXG4gICAgYm9yZGVyQ29sb3I6ICcjRkZGRkZGJyxcclxuICAgIGxpbmVhclR5cGU6ICdub25lJyxcclxuICAgIGN1c3RvbUNvbG9yOiBbXSxcclxuICB9LCBvcHRzLmV4dHJhLnJvc2UpO1xyXG4gIGlmIChjb25maWcucGllQ2hhcnRMaW5lUGFkZGluZyA9PSAwKSB7XHJcbiAgICBjb25maWcucGllQ2hhcnRMaW5lUGFkZGluZyA9IHJvc2VPcHRpb24uYWN0aXZlUmFkaXVzICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIHZhciBjZW50ZXJQb3NpdGlvbiA9IHtcclxuICAgIHg6IG9wdHMuYXJlYVszXSArIChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDIsXHJcbiAgICB5OiBvcHRzLmFyZWFbMF0gKyAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pIC8gMlxyXG4gIH07XHJcbiAgdmFyIHJhZGl1cyA9IE1hdGgubWluKChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDIgLSBjb25maWcucGllQ2hhcnRMaW5lUGFkZGluZyAtIGNvbmZpZy5waWVDaGFydFRleHRQYWRkaW5nIC0gY29uZmlnLl9waWVUZXh0TWF4TGVuZ3RoXywgKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdKSAvIDIgLSBjb25maWcucGllQ2hhcnRMaW5lUGFkZGluZyAtIGNvbmZpZy5waWVDaGFydFRleHRQYWRkaW5nKTtcclxuICB2YXIgbWluUmFkaXVzID0gcm9zZU9wdGlvbi5taW5SYWRpdXMgfHwgcmFkaXVzICogMC41O1xyXG4gIHNlcmllcyA9IGdldFJvc2VEYXRhUG9pbnRzKHNlcmllcywgcm9zZU9wdGlvbi50eXBlLCBtaW5SYWRpdXMsIHJhZGl1cywgcHJvY2Vzcyk7XHJcbiAgdmFyIGFjdGl2ZVJhZGl1cyA9IHJvc2VPcHRpb24uYWN0aXZlUmFkaXVzICogb3B0cy5waXg7XHJcbiAgcm9zZU9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihyb3NlT3B0aW9uLmxpbmVhclR5cGUsIHJvc2VPcHRpb24uY3VzdG9tQ29sb3IsIHNlcmllcywgY29uZmlnKTtcclxuICBzZXJpZXMgPSBzZXJpZXMubWFwKGZ1bmN0aW9uKGVhY2hTZXJpZXMpIHtcclxuICAgIGVhY2hTZXJpZXMuX3N0YXJ0XyArPSAocm9zZU9wdGlvbi5vZmZzZXRBbmdsZSB8fCAwKSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICByZXR1cm4gZWFjaFNlcmllcztcclxuICB9KTtcclxuICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgaWYgKG9wdHMudG9vbHRpcCkge1xyXG4gICAgICBpZiAob3B0cy50b29sdGlwLmluZGV4ID09IHNlcmllc0luZGV4KSB7XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCByb3NlT3B0aW9uLmFjdGl2ZU9wYWNpdHkgfHwgMC41KSk7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICAgICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgYWN0aXZlUmFkaXVzICsgZWFjaFNlcmllcy5fcmFkaXVzXywgZWFjaFNlcmllcy5fc3RhcnRfLCBlYWNoU2VyaWVzLl9zdGFydF8gKyAyICogZWFjaFNlcmllcy5fcm9zZV9wcm9wb3J0aW9uXyAqIE1hdGguUEkpO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChyb3NlT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5saW5lSm9pbiA9IFwicm91bmRcIjtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUocm9zZU9wdGlvbi5ib3JkZXJDb2xvcik7XHJcbiAgICB2YXIgZmlsbGNvbG9yID0gZWFjaFNlcmllcy5jb2xvcjtcclxuICAgIGlmIChyb3NlT3B0aW9uLmxpbmVhclR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgdmFyIGdyZDtcclxuICAgICAgaWYoY29udGV4dC5jcmVhdGVDaXJjdWxhckdyYWRpZW50KXtcclxuICAgICAgICBncmQgPSBjb250ZXh0LmNyZWF0ZUNpcmN1bGFyR3JhZGllbnQoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgZWFjaFNlcmllcy5fcmFkaXVzXylcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgZ3JkID0gY29udGV4dC5jcmVhdGVSYWRpYWxHcmFkaWVudChjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCAwLGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGVhY2hTZXJpZXMuX3JhZGl1c18pXHJcbiAgICAgIH1cclxuICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihyb3NlT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCAxKSlcclxuICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCAxKSlcclxuICAgICAgZmlsbGNvbG9yID0gZ3JkXHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsY29sb3IpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBlYWNoU2VyaWVzLl9yYWRpdXNfLCBlYWNoU2VyaWVzLl9zdGFydF8sIGVhY2hTZXJpZXMuX3N0YXJ0XyArIDIgKiBlYWNoU2VyaWVzLl9yb3NlX3Byb3BvcnRpb25fICogTWF0aC5QSSk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5maWxsKCk7XHJcbiAgICBpZiAocm9zZU9wdGlvbi5ib3JkZXIgPT0gdHJ1ZSkge1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIHZhciB2YWxpZCA9IGZhbHNlO1xyXG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHNlcmllcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBpZiAoc2VyaWVzW2ldLmRhdGEgPiAwKSB7XHJcbiAgICAgICAgdmFsaWQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodmFsaWQpIHtcclxuICAgICAgZHJhd1BpZVRleHQoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHJhZGl1cywgY2VudGVyUG9zaXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgY2VudGVyOiBjZW50ZXJQb3NpdGlvbixcclxuICAgIHJhZGl1czogcmFkaXVzLFxyXG4gICAgc2VyaWVzOiBzZXJpZXNcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3QXJjYmFyRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciBhcmNiYXJPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIHN0YXJ0QW5nbGU6IDAuNzUsXHJcbiAgICBlbmRBbmdsZTogMC4yNSxcclxuICAgIHR5cGU6ICdkZWZhdWx0JyxcclxuICAgIHdpZHRoOiAxMiAsXHJcbiAgICBnYXA6IDIgLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gIH0sIG9wdHMuZXh0cmEuYXJjYmFyKTtcclxuICBzZXJpZXMgPSBnZXRBcmNiYXJEYXRhUG9pbnRzKHNlcmllcywgYXJjYmFyT3B0aW9uLCBwcm9jZXNzKTtcclxuICB2YXIgY2VudGVyUG9zaXRpb247XHJcbiAgaWYgKGFyY2Jhck9wdGlvbi5jZW50ZXJYIHx8IGFyY2Jhck9wdGlvbi5jZW50ZXJZKSB7XHJcbiAgICBjZW50ZXJQb3NpdGlvbiA9IHtcclxuICAgICAgeDogYXJjYmFyT3B0aW9uLmNlbnRlclggPyBhcmNiYXJPcHRpb24uY2VudGVyWCA6IG9wdHMud2lkdGggLyAyLFxyXG4gICAgICB5OiBhcmNiYXJPcHRpb24uY2VudGVyWSA/IGFyY2Jhck9wdGlvbi5jZW50ZXJZIDogb3B0cy5oZWlnaHQgLyAyXHJcbiAgICB9O1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjZW50ZXJQb3NpdGlvbiA9IHtcclxuICAgICAgeDogb3B0cy53aWR0aCAvIDIsXHJcbiAgICAgIHk6IG9wdHMuaGVpZ2h0IC8gMlxyXG4gICAgfTtcclxuICB9XHJcbiAgdmFyIHJhZGl1cztcclxuICBpZiAoYXJjYmFyT3B0aW9uLnJhZGl1cykge1xyXG4gICAgcmFkaXVzID0gYXJjYmFyT3B0aW9uLnJhZGl1cztcclxuICB9IGVsc2Uge1xyXG4gICAgcmFkaXVzID0gTWF0aC5taW4oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICByYWRpdXMgLT0gNSAqIG9wdHMucGl4O1xyXG4gICAgcmFkaXVzIC09IGFyY2Jhck9wdGlvbi53aWR0aCAvIDI7XHJcbiAgfVxyXG4gIGFyY2Jhck9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihhcmNiYXJPcHRpb24ubGluZWFyVHlwZSwgYXJjYmFyT3B0aW9uLmN1c3RvbUNvbG9yLCBzZXJpZXMsIGNvbmZpZyk7XHJcbiAgXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBlYWNoU2VyaWVzID0gc2VyaWVzW2ldO1xyXG4gICAgLy/og4zmma/popzoibJcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGFyY2Jhck9wdGlvbi53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoYXJjYmFyT3B0aW9uLmJhY2tncm91bmRDb2xvciB8fCAnI0U5RTlFOScpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lQ2FwKCdyb3VuZCcpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGlmIChhcmNiYXJPcHRpb24udHlwZSA9PSAnZGVmYXVsdCcpIHtcclxuICAgICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgcmFkaXVzIC0gKGFyY2Jhck9wdGlvbi53aWR0aCAqIG9wdHMucGl4ICsgYXJjYmFyT3B0aW9uLmdhcCAqIG9wdHMucGl4KSAqIGksIGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlICogTWF0aC5QSSwgYXJjYmFyT3B0aW9uLmVuZEFuZ2xlICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgcmFkaXVzIC0gKGFyY2Jhck9wdGlvbi53aWR0aCAqIG9wdHMucGl4ICsgYXJjYmFyT3B0aW9uLmdhcCAqIG9wdHMucGl4KSAqIGksIDAsIDIgKiBNYXRoLlBJLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgLy/ov5vluqbmnaFcclxuICAgIHZhciBmaWxsQ29sb3IgPSBlYWNoU2VyaWVzLmNvbG9yXHJcbiAgICBpZihhcmNiYXJPcHRpb24ubGluZWFyVHlwZSA9PSAnY3VzdG9tJyl7XHJcbiAgICAgIHZhciBncmQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KGNlbnRlclBvc2l0aW9uLnggLSByYWRpdXMsIGNlbnRlclBvc2l0aW9uLnksIGNlbnRlclBvc2l0aW9uLnggKyByYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGFyY2Jhck9wdGlvbi5jdXN0b21Db2xvcltlYWNoU2VyaWVzLmxpbmVhckluZGV4XSwgMSkpXHJcbiAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgMSkpXHJcbiAgICAgIGZpbGxDb2xvciA9IGdyZDtcclxuICAgIH1cclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGFyY2Jhck9wdGlvbi53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZmlsbENvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgncm91bmQnKTtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCByYWRpdXMgLSAoYXJjYmFyT3B0aW9uLndpZHRoICogb3B0cy5waXggKyBhcmNiYXJPcHRpb24uZ2FwICogb3B0cy5waXgpICogaSwgYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGUgKiBNYXRoLlBJLCBlYWNoU2VyaWVzLl9wcm9wb3J0aW9uXyAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfVxyXG4gIGRyYXdSaW5nVGl0bGUob3B0cywgY29uZmlnLCBjb250ZXh0LCBjZW50ZXJQb3NpdGlvbik7XHJcbiAgcmV0dXJuIHtcclxuICAgIGNlbnRlcjogY2VudGVyUG9zaXRpb24sXHJcbiAgICByYWRpdXM6IHJhZGl1cyxcclxuICAgIHNlcmllczogc2VyaWVzXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0dhdWdlRGF0YVBvaW50cyhjYXRlZ29yaWVzLCBzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiAxO1xyXG4gIHZhciBnYXVnZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ2RlZmF1bHQnLFxyXG4gICAgc3RhcnRBbmdsZTogMC43NSxcclxuICAgIGVuZEFuZ2xlOiAwLjI1LFxyXG4gICAgd2lkdGg6IDE1LFxyXG4gICAgbGFiZWxPZmZzZXQ6MTMsXHJcbiAgICBzcGxpdExpbmU6IHtcclxuICAgICAgZml4UmFkaXVzOiAwLFxyXG4gICAgICBzcGxpdE51bWJlcjogMTAsXHJcbiAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgY29sb3I6ICcjRkZGRkZGJyxcclxuICAgICAgY2hpbGROdW1iZXI6IDUsXHJcbiAgICAgIGNoaWxkV2lkdGg6IDVcclxuICAgIH0sXHJcbiAgICBwb2ludGVyOiB7XHJcbiAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgY29sb3I6ICdhdXRvJ1xyXG4gICAgfVxyXG4gIH0sIG9wdHMuZXh0cmEuZ2F1Z2UpO1xyXG4gIGlmIChnYXVnZU9wdGlvbi5vbGRBbmdsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgIGdhdWdlT3B0aW9uLm9sZEFuZ2xlID0gZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZTtcclxuICB9XHJcbiAgaWYgKGdhdWdlT3B0aW9uLm9sZERhdGEgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICBnYXVnZU9wdGlvbi5vbGREYXRhID0gMDtcclxuICB9XHJcbiAgY2F0ZWdvcmllcyA9IGdldEdhdWdlQXhpc1BvaW50cyhjYXRlZ29yaWVzLCBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlLCBnYXVnZU9wdGlvbi5lbmRBbmdsZSk7XHJcbiAgdmFyIGNlbnRlclBvc2l0aW9uID0ge1xyXG4gICAgeDogb3B0cy53aWR0aCAvIDIsXHJcbiAgICB5OiBvcHRzLmhlaWdodCAvIDJcclxuICB9O1xyXG4gIHZhciByYWRpdXMgPSBNYXRoLm1pbihjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICByYWRpdXMgLT0gNSAqIG9wdHMucGl4O1xyXG4gIHJhZGl1cyAtPSBnYXVnZU9wdGlvbi53aWR0aCAvIDI7XHJcbiAgdmFyIGlubmVyUmFkaXVzID0gcmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGg7XHJcbiAgdmFyIHRvdGFsQW5nbGUgPSAwO1xyXG4gIC8v5Yik5pat5Luq6KGo55uY55qE5qC35byP77yaZGVmYXVsdOeZvuW6puagt+W8j++8jHByb2dyZXNz5paw5qC35byPXHJcbiAgaWYgKGdhdWdlT3B0aW9uLnR5cGUgPT0gJ3Byb2dyZXNzJykge1xyXG4gICAgLy8jIyDnrKzkuIDmraXnlLvkuK3lv4PlnIblvaLog4zmma/lkozov5vluqbmnaHog4zmma9cclxuICAgIC8v5Lit5b+D5ZyG5b2i6IOM5pmvXHJcbiAgICB2YXIgcGllUmFkaXVzID0gcmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggKiAzO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGxldCBncmFkaWVudCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSAtIHBpZVJhZGl1cywgY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSArIHBpZVJhZGl1cyk7XHJcbiAgICAvL+mFjee9rua4kOWPmOWhq+WFhe+8iOi1t+eCue+8muS4reW/g+eCueWQkeS4iuWHj+WNiuW+hO+8m+e7k+adn+eCueS4reW/g+eCueWQkeS4i+WKoOWNiuW+hO+8iVxyXG4gICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKCcwJywgaGV4VG9SZ2Ioc2VyaWVzWzBdLmNvbG9yLCAwLjMpKTtcclxuICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgnMS4wJywgaGV4VG9SZ2IoXCIjRkZGRkZGXCIsIDAuMSkpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZ3JhZGllbnQpO1xyXG4gICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgcGllUmFkaXVzLCAwLCAyICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAvL+eUu+i/m+W6puadoeiDjOaZr1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoZ2F1Z2VPcHRpb24ud2lkdGgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShoZXhUb1JnYihzZXJpZXNbMF0uY29sb3IsIDAuMykpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lQ2FwKCdyb3VuZCcpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuYXJjKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGlubmVyUmFkaXVzLCBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlICogTWF0aC5QSSwgZ2F1Z2VPcHRpb24uZW5kQW5nbGUgKiBNYXRoLlBJLCBmYWxzZSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgLy8jIyDnrKzkuozmraXnlLvliLvluqbnur9cclxuICAgIHRvdGFsQW5nbGUgPSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlIC0gZ2F1Z2VPcHRpb24uZW5kQW5nbGUgKyAxO1xyXG4gICAgbGV0IHNwbGl0QW5nbGUgPSB0b3RhbEFuZ2xlIC8gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLnNwbGl0TnVtYmVyO1xyXG4gICAgbGV0IGNoaWxkQW5nbGUgPSB0b3RhbEFuZ2xlIC8gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLnNwbGl0TnVtYmVyIC8gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmNoaWxkTnVtYmVyO1xyXG4gICAgbGV0IHN0YXJ0WCA9IC1yYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAqIDAuNSAtIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5maXhSYWRpdXM7XHJcbiAgICBsZXQgZW5kWCA9IC1yYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAtIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5maXhSYWRpdXMgKyBnYXVnZU9wdGlvbi5zcGxpdExpbmUud2lkdGg7XHJcbiAgICBjb250ZXh0LnNhdmUoKTtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgY29udGV4dC5yb3RhdGUoKGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgLSAxKSAqIE1hdGguUEkpO1xyXG4gICAgbGV0IGxlbiA9IGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlciAqIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5jaGlsZE51bWJlciArIDE7XHJcbiAgICBsZXQgcHJvYyA9IHNlcmllc1swXS5kYXRhICogcHJvY2VzcztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgLy/liLvluqbnur/pmo/ov5vluqblj5joibJcclxuICAgICAgaWYgKHByb2MgPiAoaSAvIGxlbikpIHtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGhleFRvUmdiKHNlcmllc1swXS5jb2xvciwgMSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaGV4VG9SZ2Ioc2VyaWVzWzBdLmNvbG9yLCAwLjMpKTtcclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgzICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIDApO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhlbmRYLCAwKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5yb3RhdGUoY2hpbGRBbmdsZSAqIE1hdGguUEkpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgICAvLyMjIOesrOS4ieatpeeUu+i/m+W6puadoVxyXG4gICAgc2VyaWVzID0gZ2V0QXJjYmFyRGF0YVBvaW50cyhzZXJpZXMsIGdhdWdlT3B0aW9uLCBwcm9jZXNzKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGdhdWdlT3B0aW9uLndpZHRoKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc2VyaWVzWzBdLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgncm91bmQnKTtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBpbm5lclJhZGl1cywgZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZSAqIE1hdGguUEksIHNlcmllc1swXS5fcHJvcG9ydGlvbl8gKiBNYXRoLlBJLCBmYWxzZSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgLy8jIyDnrKzlm5vmraXnlLvmjIfpkohcclxuICAgIGxldCBwb2ludGVyUmFkaXVzID0gcmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggKiAyLjU7XHJcbiAgICBjb250ZXh0LnNhdmUoKTtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgY29udGV4dC5yb3RhdGUoKHNlcmllc1swXS5fcHJvcG9ydGlvbl8gLSAxKSAqIE1hdGguUEkpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGdhdWdlT3B0aW9uLndpZHRoIC8gMyk7XHJcbiAgICBsZXQgZ3JhZGllbnQzID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAtcG9pbnRlclJhZGl1cyAqIDAuNiwgMCwgcG9pbnRlclJhZGl1cyAqIDAuNik7XHJcbiAgICBncmFkaWVudDMuYWRkQ29sb3JTdG9wKCcwJywgaGV4VG9SZ2IoJyNGRkZGRkYnLCAwKSk7XHJcbiAgICBncmFkaWVudDMuYWRkQ29sb3JTdG9wKCcwLjUnLCBoZXhUb1JnYihzZXJpZXNbMF0uY29sb3IsIDEpKTtcclxuICAgIGdyYWRpZW50My5hZGRDb2xvclN0b3AoJzEuMCcsIGhleFRvUmdiKCcjRkZGRkZGJywgMCkpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShncmFkaWVudDMpO1xyXG4gICAgY29udGV4dC5hcmMoMCwgMCwgcG9pbnRlclJhZGl1cywgMC44NSAqIE1hdGguUEksIDEuMTUgKiBNYXRoLlBJLCBmYWxzZSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShzZXJpZXNbMF0uY29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoc2VyaWVzWzBdLmNvbG9yKTtcclxuICAgIGNvbnRleHQubW92ZVRvKC1wb2ludGVyUmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggLyAzIC8gMiwgLTQpO1xyXG4gICAgY29udGV4dC5saW5lVG8oLXBvaW50ZXJSYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAvIDMgLyAyIC0gNCwgMCk7XHJcbiAgICBjb250ZXh0LmxpbmVUbygtcG9pbnRlclJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoIC8gMyAvIDIsIDQpO1xyXG4gICAgY29udGV4dC5saW5lVG8oLXBvaW50ZXJSYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAvIDMgLyAyLCAtNCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgY29udGV4dC5maWxsKCk7XHJcbiAgICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICAgIC8vZGVmYXVsdOeZvuW6puagt+W8j1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvL+eUu+iDjOaZr1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoZ2F1Z2VPcHRpb24ud2lkdGgpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lQ2FwKCdidXR0Jyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhdGVnb3JpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGVhY2hDYXRlZ29yaWVzID0gY2F0ZWdvcmllc1tpXTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShlYWNoQ2F0ZWdvcmllcy5jb2xvcik7XHJcbiAgICAgIGNvbnRleHQuYXJjKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIHJhZGl1cywgZWFjaENhdGVnb3JpZXMuX3N0YXJ0QW5nbGVfICogTWF0aC5QSSwgZWFjaENhdGVnb3JpZXMuX2VuZEFuZ2xlXyAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIH1cclxuICAgIGNvbnRleHQuc2F2ZSgpO1xyXG4gICAgLy/nlLvliLvluqbnur9cclxuICAgIHRvdGFsQW5nbGUgPSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlIC0gZ2F1Z2VPcHRpb24uZW5kQW5nbGUgKyAxO1xyXG4gICAgbGV0IHNwbGl0QW5nbGUgPSB0b3RhbEFuZ2xlIC8gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLnNwbGl0TnVtYmVyO1xyXG4gICAgbGV0IGNoaWxkQW5nbGUgPSB0b3RhbEFuZ2xlIC8gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLnNwbGl0TnVtYmVyIC8gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmNoaWxkTnVtYmVyO1xyXG4gICAgbGV0IHN0YXJ0WCA9IC1yYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAqIDAuNSAtIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5maXhSYWRpdXM7XHJcbiAgICBsZXQgZW5kWCA9IC1yYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAqIDAuNSAtIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5maXhSYWRpdXMgKyBnYXVnZU9wdGlvbi5zcGxpdExpbmUud2lkdGg7XHJcbiAgICBsZXQgY2hpbGRlbmRYID0gLXJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoICogMC41IC0gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmZpeFJhZGl1cyArIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5jaGlsZFdpZHRoO1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICBjb250ZXh0LnJvdGF0ZSgoZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZSAtIDEpICogTWF0aC5QSSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlciArIDE7IGkrKykge1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGdhdWdlT3B0aW9uLnNwbGl0TGluZS5jb2xvcik7XHJcbiAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDIgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgMCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKGVuZFgsIDApO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LnJvdGF0ZShzcGxpdEFuZ2xlICogTWF0aC5QSSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICAgIGNvbnRleHQuc2F2ZSgpO1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICBjb250ZXh0LnJvdGF0ZSgoZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZSAtIDEpICogTWF0aC5QSSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlciAqIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5jaGlsZE51bWJlciArIDE7IGkrKykge1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGdhdWdlT3B0aW9uLnNwbGl0TGluZS5jb2xvcik7XHJcbiAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgMCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKGNoaWxkZW5kWCwgMCk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQucm90YXRlKGNoaWxkQW5nbGUgKiBNYXRoLlBJKTtcclxuICAgIH1cclxuICAgIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gICAgLy/nlLvmjIfpkohcclxuICAgIHNlcmllcyA9IGdldEdhdWdlRGF0YVBvaW50cyhzZXJpZXMsIGNhdGVnb3JpZXMsIGdhdWdlT3B0aW9uLCBwcm9jZXNzKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBlYWNoU2VyaWVzID0gc2VyaWVzW2ldO1xyXG4gICAgICBjb250ZXh0LnNhdmUoKTtcclxuICAgICAgY29udGV4dC50cmFuc2xhdGUoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICAgIGNvbnRleHQucm90YXRlKChlYWNoU2VyaWVzLl9wcm9wb3J0aW9uXyAtIDEpICogTWF0aC5QSSk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICBjb250ZXh0Lm1vdmVUbyhnYXVnZU9wdGlvbi5wb2ludGVyLndpZHRoLCAwKTtcclxuICAgICAgY29udGV4dC5saW5lVG8oMCwgLWdhdWdlT3B0aW9uLnBvaW50ZXIud2lkdGggLyAyKTtcclxuICAgICAgY29udGV4dC5saW5lVG8oLWlubmVyUmFkaXVzLCAwKTtcclxuICAgICAgY29udGV4dC5saW5lVG8oMCwgZ2F1Z2VPcHRpb24ucG9pbnRlci53aWR0aCAvIDIpO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhnYXVnZU9wdGlvbi5wb2ludGVyLndpZHRoLCAwKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKCcjRkZGRkZGJyk7XHJcbiAgICAgIGNvbnRleHQuYXJjKDAsIDAsIGdhdWdlT3B0aW9uLnBvaW50ZXIud2lkdGggLyA2LCAwLCAyICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlKSB7XHJcbiAgICAgIGRyYXdHYXVnZUxhYmVsKGdhdWdlT3B0aW9uLCByYWRpdXMsIGNlbnRlclBvc2l0aW9uLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvL+eUu+S7quihqOebmOagh+mimO+8jOWJr+agh+mimFxyXG4gIGRyYXdSaW5nVGl0bGUob3B0cywgY29uZmlnLCBjb250ZXh0LCBjZW50ZXJQb3NpdGlvbik7XHJcbiAgaWYgKHByb2Nlc3MgPT09IDEgJiYgb3B0cy50eXBlID09PSAnZ2F1Z2UnKSB7XHJcbiAgICBvcHRzLmV4dHJhLmdhdWdlLm9sZEFuZ2xlID0gc2VyaWVzWzBdLl9wcm9wb3J0aW9uXztcclxuICAgIG9wdHMuZXh0cmEuZ2F1Z2Uub2xkRGF0YSA9IHNlcmllc1swXS5kYXRhO1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgY2VudGVyOiBjZW50ZXJQb3NpdGlvbixcclxuICAgIHJhZGl1czogcmFkaXVzLFxyXG4gICAgaW5uZXJSYWRpdXM6IGlubmVyUmFkaXVzLFxyXG4gICAgY2F0ZWdvcmllczogY2F0ZWdvcmllcyxcclxuICAgIHRvdGFsQW5nbGU6IHRvdGFsQW5nbGVcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3UmFkYXJEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgdmFyIHJhZGFyT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBncmlkQ29sb3I6ICcjY2NjY2NjJyxcclxuICAgIGdyaWRUeXBlOiAncmFkYXInLFxyXG4gICAgb3BhY2l0eTogMC4yLFxyXG4gICAgZ3JpZENvdW50OiAzLFxyXG4gICAgYm9yZGVyOmZhbHNlLFxyXG4gICAgYm9yZGVyV2lkdGg6MlxyXG4gIH0sIG9wdHMuZXh0cmEucmFkYXIpO1xyXG4gIHZhciBjb29yZGluYXRlQW5nbGUgPSBnZXRSYWRhckNvb3JkaW5hdGVTZXJpZXMob3B0cy5jYXRlZ29yaWVzLmxlbmd0aCk7XHJcbiAgdmFyIGNlbnRlclBvc2l0aW9uID0ge1xyXG4gICAgeDogb3B0cy5hcmVhWzNdICsgKG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM10pIC8gMixcclxuICAgIHk6IG9wdHMuYXJlYVswXSArIChvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXSkgLyAyXHJcbiAgfTtcclxuICB2YXIgeHIgPSAob3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXSkgLyAyXHJcbiAgdmFyIHlyID0gKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdKSAvIDJcclxuICB2YXIgcmFkaXVzID0gTWF0aC5taW4oeHIgLSAoZ2V0TWF4VGV4dExpc3RMZW5ndGgob3B0cy5jYXRlZ29yaWVzLCBjb25maWcuZm9udFNpemUsIGNvbnRleHQpICsgY29uZmlnLnJhZGFyTGFiZWxUZXh0TWFyZ2luKSwgeXIgLSBjb25maWcucmFkYXJMYWJlbFRleHRNYXJnaW4pO1xyXG4gIHJhZGl1cyAtPSBjb25maWcucmFkYXJMYWJlbFRleHRNYXJnaW4gKiBvcHRzLnBpeDtcclxuICAvLyDnlLvliIblibLnur9cclxuICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgY29udGV4dC5zZXRTdHJva2VTdHlsZShyYWRhck9wdGlvbi5ncmlkQ29sb3IpO1xyXG4gIGNvb3JkaW5hdGVBbmdsZS5mb3JFYWNoKGZ1bmN0aW9uKGFuZ2xlKSB7XHJcbiAgICB2YXIgcG9zID0gY29udmVydENvb3JkaW5hdGVPcmlnaW4ocmFkaXVzICogTWF0aC5jb3MoYW5nbGUpLCByYWRpdXMgKiBNYXRoLnNpbihhbmdsZSksIGNlbnRlclBvc2l0aW9uKTtcclxuICAgIGNvbnRleHQubW92ZVRvKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgY29udGV4dC5saW5lVG8ocG9zLngsIHBvcy55KTtcclxuICB9KTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgXHJcbiAgLy8g55S76IOM5pmv572R5qC8XHJcbiAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoaSkge1xyXG4gICAgdmFyIHN0YXJ0UG9zID0ge307XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUocmFkYXJPcHRpb24uZ3JpZENvbG9yKTtcclxuICAgIGlmIChyYWRhck9wdGlvbi5ncmlkVHlwZSA9PSAncmFkYXInKSB7XHJcbiAgICAgIGNvb3JkaW5hdGVBbmdsZS5mb3JFYWNoKGZ1bmN0aW9uKGFuZ2xlLCBpbmRleCkge1xyXG4gICAgICAgIHZhciBwb3MgPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihyYWRpdXMgLyByYWRhck9wdGlvbi5ncmlkQ291bnQgKiBpICogTWF0aC5jb3MoYW5nbGUpLCByYWRpdXMgL1xyXG4gICAgICAgICAgcmFkYXJPcHRpb24uZ3JpZENvdW50ICogaSAqIE1hdGguc2luKGFuZ2xlKSwgY2VudGVyUG9zaXRpb24pO1xyXG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xyXG4gICAgICAgICAgc3RhcnRQb3MgPSBwb3M7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb3MueCwgcG9zLnkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhwb3MueCwgcG9zLnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0UG9zLngsIHN0YXJ0UG9zLnkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvcyA9IGNvbnZlcnRDb29yZGluYXRlT3JpZ2luKHJhZGl1cyAvIHJhZGFyT3B0aW9uLmdyaWRDb3VudCAqIGkgKiBNYXRoLmNvcygxLjUpLCByYWRpdXMgLyByYWRhck9wdGlvbi5ncmlkQ291bnQgKiBpICogTWF0aC5zaW4oMS41KSwgY2VudGVyUG9zaXRpb24pO1xyXG4gICAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBjZW50ZXJQb3NpdGlvbi55IC0gcG9zLnksIDAsIDIgKiBNYXRoLlBJLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICB9O1xyXG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHJhZGFyT3B0aW9uLmdyaWRDb3VudDsgaSsrKSB7XHJcbiAgICBfbG9vcChpKTtcclxuICB9XHJcbiAgdmFyIHJhZGFyRGF0YVBvaW50cyA9IGdldFJhZGFyRGF0YVBvaW50cyhjb29yZGluYXRlQW5nbGUsIGNlbnRlclBvc2l0aW9uLCByYWRpdXMsIHNlcmllcywgb3B0cywgcHJvY2Vzcyk7XHJcbiAgcmFkYXJEYXRhUG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgIC8vIOe7mOWItuWMuuWfn+aVsOaNrlxyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKHJhZGFyT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKGVhY2hTZXJpZXMuY29sb3IsIHJhZGFyT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgIGVhY2hTZXJpZXMuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ucG9zaXRpb24ueCwgaXRlbS5wb3NpdGlvbi55KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnBvc2l0aW9uLngsIGl0ZW0ucG9zaXRpb24ueSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgaWYocmFkYXJPcHRpb24uYm9yZGVyID09PSB0cnVlKXtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIH1cclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBpZiAob3B0cy5kYXRhUG9pbnRTaGFwZSAhPT0gZmFsc2UpIHtcclxuICAgICAgdmFyIHBvaW50cyA9IGVhY2hTZXJpZXMuZGF0YS5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtLnBvc2l0aW9uO1xyXG4gICAgICB9KTtcclxuICAgICAgZHJhd1BvaW50U2hhcGUocG9pbnRzLCBlYWNoU2VyaWVzLmNvbG9yLCBlYWNoU2VyaWVzLnBvaW50U2hhcGUsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIC8vIGRyYXcgbGFiZWwgdGV4dFxyXG4gIGRyYXdSYWRhckxhYmVsKGNvb3JkaW5hdGVBbmdsZSwgcmFkaXVzLCBjZW50ZXJQb3NpdGlvbiwgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICBcclxuICAvLyBkcmF3IGRhdGFMYWJlbFxyXG4gIGlmIChvcHRzLmRhdGFMYWJlbCAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgcmFkYXJEYXRhUG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgdmFyIGZvbnRTaXplID0gZWFjaFNlcmllcy50ZXh0U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGVhY2hTZXJpZXMudGV4dENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgZWFjaFNlcmllcy5kYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICAvL+WmguaenOaYr+S4reW/g+eCueWeguebtOeahOS4iuS4i+eCueS9jVxyXG4gICAgICAgIGlmKE1hdGguYWJzKGl0ZW0ucG9zaXRpb24ueCAtIGNlbnRlclBvc2l0aW9uLngpPDIpe1xyXG4gICAgICAgICAgLy/lpoLmnpzlnKjkuIrpnaJcclxuICAgICAgICAgIGlmKGl0ZW0ucG9zaXRpb24ueSA8IGNlbnRlclBvc2l0aW9uLnkpe1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignY2VudGVyJyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoaXRlbS52YWx1ZSwgaXRlbS5wb3NpdGlvbi54LCBpdGVtLnBvc2l0aW9uLnkgLSA0KTtcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignY2VudGVyJyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoaXRlbS52YWx1ZSwgaXRlbS5wb3NpdGlvbi54LCBpdGVtLnBvc2l0aW9uLnkgKyBmb250U2l6ZSArIDIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgLy/lpoLmnpzlnKjlt6bkvqdcclxuICAgICAgICAgIGlmKGl0ZW0ucG9zaXRpb24ueCA8IGNlbnRlclBvc2l0aW9uLngpe1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbigncmlnaHQnKTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dChpdGVtLnZhbHVlLCBpdGVtLnBvc2l0aW9uLnggLSA0LCBpdGVtLnBvc2l0aW9uLnkgKyBmb250U2l6ZSAvIDIgLSAyKTtcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KGl0ZW0udmFsdWUsIGl0ZW0ucG9zaXRpb24ueCArIDQsIGl0ZW0ucG9zaXRpb24ueSArIGZvbnRTaXplIC8gMiAtIDIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICB9KTtcclxuICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgfVxyXG4gIFxyXG4gIHJldHVybiB7XHJcbiAgICBjZW50ZXI6IGNlbnRlclBvc2l0aW9uLFxyXG4gICAgcmFkaXVzOiByYWRpdXMsXHJcbiAgICBhbmdsZUxpc3Q6IGNvb3JkaW5hdGVBbmdsZVxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG5vcm1hbEludChtaW4sIG1heCwgaXRlcikge1xyXG4gIGl0ZXIgPSBpdGVyID09IDAgPyAxIDogaXRlcjtcclxuICB2YXIgYXJyID0gW107XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyOyBpKyspIHtcclxuICAgIGFycltpXSA9IE1hdGgucmFuZG9tKCk7XHJcbiAgfTtcclxuICByZXR1cm4gTWF0aC5mbG9vcihhcnIucmVkdWNlKGZ1bmN0aW9uKGksIGopIHtcclxuICAgIHJldHVybiBpICsgalxyXG4gIH0pIC8gaXRlciAqIChtYXggLSBtaW4pKSArIG1pbjtcclxufTtcclxuXHJcbmZ1bmN0aW9uIGNvbGxpc2lvbk5ldyhhcmVhLCBwb2ludHMsIHdpZHRoLCBoZWlnaHQpIHtcclxuICB2YXIgaXNJbiA9IGZhbHNlO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAocG9pbnRzW2ldLmFyZWEpIHtcclxuICAgICAgaWYgKGFyZWFbM10gPCBwb2ludHNbaV0uYXJlYVsxXSB8fCBhcmVhWzBdID4gcG9pbnRzW2ldLmFyZWFbMl0gfHwgYXJlYVsxXSA+IHBvaW50c1tpXS5hcmVhWzNdIHx8IGFyZWFbMl0gPCBwb2ludHNbaV0uYXJlYVswXSkge1xyXG4gICAgICAgIGlmIChhcmVhWzBdIDwgMCB8fCBhcmVhWzFdIDwgMCB8fCBhcmVhWzJdID4gd2lkdGggfHwgYXJlYVszXSA+IGhlaWdodCkge1xyXG4gICAgICAgICAgaXNJbiA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaXNJbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpc0luID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gaXNJbjtcclxufTtcclxuXHJcbmZ1bmN0aW9uIGdldEJvdW5kaW5nQm94KGRhdGEpIHtcclxuICB2YXIgYm91bmRzID0ge30sY29vcmRzO1xyXG4gIGJvdW5kcy54TWluID0gMTgwO1xyXG4gIGJvdW5kcy54TWF4ID0gMDtcclxuICBib3VuZHMueU1pbiA9IDkwO1xyXG4gIGJvdW5kcy55TWF4ID0gMFxyXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgdmFyIGNvb3JkYSA9IGRhdGFbaV0uZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgY29vcmRhLmxlbmd0aDsgaysrKSB7XHJcbiAgICAgIGNvb3JkcyA9IGNvb3JkYVtrXTtcclxuICAgICAgaWYgKGNvb3Jkcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIGNvb3JkcyA9IGNvb3Jkc1swXVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29vcmRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgdmFyIGxvbmdpdHVkZSA9IGNvb3Jkc1tqXVswXTtcclxuICAgICAgICB2YXIgbGF0aXR1ZGUgPSBjb29yZHNbal1bMV07XHJcbiAgICAgICAgdmFyIHBvaW50ID0ge1xyXG4gICAgICAgICAgeDogbG9uZ2l0dWRlLFxyXG4gICAgICAgICAgeTogbGF0aXR1ZGVcclxuICAgICAgICB9XHJcbiAgICAgICAgYm91bmRzLnhNaW4gPSBib3VuZHMueE1pbiA8IHBvaW50LnggPyBib3VuZHMueE1pbiA6IHBvaW50Lng7XHJcbiAgICAgICAgYm91bmRzLnhNYXggPSBib3VuZHMueE1heCA+IHBvaW50LnggPyBib3VuZHMueE1heCA6IHBvaW50Lng7XHJcbiAgICAgICAgYm91bmRzLnlNaW4gPSBib3VuZHMueU1pbiA8IHBvaW50LnkgPyBib3VuZHMueU1pbiA6IHBvaW50Lnk7XHJcbiAgICAgICAgYm91bmRzLnlNYXggPSBib3VuZHMueU1heCA+IHBvaW50LnkgPyBib3VuZHMueU1heCA6IHBvaW50Lnk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGJvdW5kcztcclxufVxyXG5cclxuZnVuY3Rpb24gY29vcmRpbmF0ZVRvUG9pbnQobGF0aXR1ZGUsIGxvbmdpdHVkZSwgYm91bmRzLCBzY2FsZSwgeG9mZnNldCwgeW9mZnNldCkge1xyXG4gIHJldHVybiB7XHJcbiAgICB4OiAobG9uZ2l0dWRlIC0gYm91bmRzLnhNaW4pICogc2NhbGUgKyB4b2Zmc2V0LFxyXG4gICAgeTogKGJvdW5kcy55TWF4IC0gbGF0aXR1ZGUpICogc2NhbGUgKyB5b2Zmc2V0XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gcG9pbnRUb0Nvb3JkaW5hdGUocG9pbnRZLCBwb2ludFgsIGJvdW5kcywgc2NhbGUsIHhvZmZzZXQsIHlvZmZzZXQpIHtcclxuICByZXR1cm4ge1xyXG4gICAgeDogKHBvaW50WCAtIHhvZmZzZXQpIC8gc2NhbGUgKyBib3VuZHMueE1pbixcclxuICAgIHk6IGJvdW5kcy55TWF4IC0gKHBvaW50WSAtIHlvZmZzZXQpIC8gc2NhbGVcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1JheUludGVyc2VjdHNTZWdtZW50KHBvaSwgc19wb2ksIGVfcG9pKSB7XHJcbiAgaWYgKHNfcG9pWzFdID09IGVfcG9pWzFdKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGlmIChzX3BvaVsxXSA+IHBvaVsxXSAmJiBlX3BvaVsxXSA+IHBvaVsxXSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBpZiAoc19wb2lbMV0gPCBwb2lbMV0gJiYgZV9wb2lbMV0gPCBwb2lbMV0pIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgaWYgKHNfcG9pWzFdID09IHBvaVsxXSAmJiBlX3BvaVsxXSA+IHBvaVsxXSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBpZiAoZV9wb2lbMV0gPT0gcG9pWzFdICYmIHNfcG9pWzFdID4gcG9pWzFdKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGlmIChzX3BvaVswXSA8IHBvaVswXSAmJiBlX3BvaVsxXSA8IHBvaVsxXSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBsZXQgeHNlZyA9IGVfcG9pWzBdIC0gKGVfcG9pWzBdIC0gc19wb2lbMF0pICogKGVfcG9pWzFdIC0gcG9pWzFdKSAvIChlX3BvaVsxXSAtIHNfcG9pWzFdKTtcclxuICBpZiAoeHNlZyA8IHBvaVswXSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzUG9pV2l0aGluUG9seShwb2ksIHBvbHksIG1lcmNhdG9yKSB7XHJcbiAgbGV0IHNpbnNjID0gMDtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvbHkubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBlcG9seSA9IHBvbHlbaV1bMF07XHJcbiAgICBpZiAocG9seS5sZW5ndGggPT0gMSkge1xyXG4gICAgICBlcG9seSA9IHBvbHlbaV1bMF1cclxuICAgIH1cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgZXBvbHkubGVuZ3RoIC0gMTsgaisrKSB7XHJcbiAgICAgIGxldCBzX3BvaSA9IGVwb2x5W2pdO1xyXG4gICAgICBsZXQgZV9wb2kgPSBlcG9seVtqICsgMV07XHJcbiAgICAgIGlmIChtZXJjYXRvcikge1xyXG4gICAgICAgIHNfcG9pID0gbG9ubGF0Mm1lcmNhdG9yKGVwb2x5W2pdWzBdLCBlcG9seVtqXVsxXSk7XHJcbiAgICAgICAgZV9wb2kgPSBsb25sYXQybWVyY2F0b3IoZXBvbHlbaiArIDFdWzBdLCBlcG9seVtqICsgMV1bMV0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc1JheUludGVyc2VjdHNTZWdtZW50KHBvaSwgc19wb2ksIGVfcG9pKSkge1xyXG4gICAgICAgIHNpbnNjICs9IDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgaWYgKHNpbnNjICUgMiA9PSAxKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIGRyYXdNYXBEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgdmFyIG1hcE9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgYm9yZGVyOiB0cnVlLFxyXG4gICAgbWVyY2F0b3I6IGZhbHNlLFxyXG4gICAgYm9yZGVyV2lkdGg6IDEsXHJcbiAgICBib3JkZXJDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgZmlsbE9wYWNpdHk6IDAuNixcclxuICAgIGFjdGl2ZUJvcmRlckNvbG9yOiAnI2YwNDg2NCcsXHJcbiAgICBhY3RpdmVGaWxsQ29sb3I6ICcjZmFjYzE0JyxcclxuICAgIGFjdGl2ZUZpbGxPcGFjaXR5OiAxXHJcbiAgfSwgb3B0cy5leHRyYS5tYXApO1xyXG4gIHZhciBjb29yZHMsIHBvaW50O1xyXG4gIHZhciBkYXRhID0gc2VyaWVzO1xyXG4gIHZhciBib3VuZHMgPSBnZXRCb3VuZGluZ0JveChkYXRhKTtcclxuICBpZiAobWFwT3B0aW9uLm1lcmNhdG9yKSB7XHJcbiAgICB2YXIgbWF4ID0gbG9ubGF0Mm1lcmNhdG9yKGJvdW5kcy54TWF4LCBib3VuZHMueU1heClcclxuICAgIHZhciBtaW4gPSBsb25sYXQybWVyY2F0b3IoYm91bmRzLnhNaW4sIGJvdW5kcy55TWluKVxyXG4gICAgYm91bmRzLnhNYXggPSBtYXhbMF1cclxuICAgIGJvdW5kcy55TWF4ID0gbWF4WzFdXHJcbiAgICBib3VuZHMueE1pbiA9IG1pblswXVxyXG4gICAgYm91bmRzLnlNaW4gPSBtaW5bMV1cclxuICB9XHJcbiAgdmFyIHhTY2FsZSA9IG9wdHMud2lkdGggLyBNYXRoLmFicyhib3VuZHMueE1heCAtIGJvdW5kcy54TWluKTtcclxuICB2YXIgeVNjYWxlID0gb3B0cy5oZWlnaHQgLyBNYXRoLmFicyhib3VuZHMueU1heCAtIGJvdW5kcy55TWluKTtcclxuICB2YXIgc2NhbGUgPSB4U2NhbGUgPCB5U2NhbGUgPyB4U2NhbGUgOiB5U2NhbGU7XHJcbiAgdmFyIHhvZmZzZXQgPSBvcHRzLndpZHRoIC8gMiAtIE1hdGguYWJzKGJvdW5kcy54TWF4IC0gYm91bmRzLnhNaW4pIC8gMiAqIHNjYWxlO1xyXG4gIHZhciB5b2Zmc2V0ID0gb3B0cy5oZWlnaHQgLyAyIC0gTWF0aC5hYnMoYm91bmRzLnlNYXggLSBib3VuZHMueU1pbikgLyAyICogc2NhbGU7XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgobWFwT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShtYXBPcHRpb24uYm9yZGVyQ29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2Ioc2VyaWVzW2ldLmNvbG9yLCBtYXBPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBpKSB7XHJcbiAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShtYXBPcHRpb24uYWN0aXZlQm9yZGVyQ29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKG1hcE9wdGlvbi5hY3RpdmVGaWxsQ29sb3IsIG1hcE9wdGlvbi5hY3RpdmVGaWxsT3BhY2l0eSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB2YXIgY29vcmRhID0gZGF0YVtpXS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBjb29yZGEubGVuZ3RoOyBrKyspIHtcclxuICAgICAgY29vcmRzID0gY29vcmRhW2tdO1xyXG4gICAgICBpZiAoY29vcmRzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgY29vcmRzID0gY29vcmRzWzBdXHJcbiAgICAgIH1cclxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjb29yZHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICB2YXIgZ2Fvc2kgPSBBcnJheSgyKTtcclxuICAgICAgICBpZiAobWFwT3B0aW9uLm1lcmNhdG9yKSB7XHJcbiAgICAgICAgICBnYW9zaSA9IGxvbmxhdDJtZXJjYXRvcihjb29yZHNbal1bMF0sIGNvb3Jkc1tqXVsxXSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZ2Fvc2kgPSBjb29yZHNbal1cclxuICAgICAgICB9XHJcbiAgICAgICAgcG9pbnQgPSBjb29yZGluYXRlVG9Qb2ludChnYW9zaVsxXSwgZ2Fvc2lbMF0sIGJvdW5kcywgc2NhbGUsIHhvZmZzZXQsIHlvZmZzZXQpXHJcbiAgICAgICAgaWYgKGogPT09IDApIHtcclxuICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludC54LCBwb2ludC55KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8ocG9pbnQueCwgcG9pbnQueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICBpZiAobWFwT3B0aW9uLmJvcmRlciA9PSB0cnVlKSB7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG9wdHMuZGF0YUxhYmVsID09IHRydWUpIHtcclxuICAgICAgdmFyIGNlbnRlclBvaW50ID0gZGF0YVtpXS5wcm9wZXJ0aWVzLmNlbnRyb2lkO1xyXG4gICAgICBpZiAoY2VudGVyUG9pbnQpIHtcclxuICAgICAgICBpZiAobWFwT3B0aW9uLm1lcmNhdG9yKSB7XHJcbiAgICAgICAgICBjZW50ZXJQb2ludCA9IGxvbmxhdDJtZXJjYXRvcihkYXRhW2ldLnByb3BlcnRpZXMuY2VudHJvaWRbMF0sIGRhdGFbaV0ucHJvcGVydGllcy5jZW50cm9pZFsxXSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcG9pbnQgPSBjb29yZGluYXRlVG9Qb2ludChjZW50ZXJQb2ludFsxXSwgY2VudGVyUG9pbnRbMF0sIGJvdW5kcywgc2NhbGUsIHhvZmZzZXQsIHlvZmZzZXQpO1xyXG4gICAgICAgIGxldCBmb250U2l6ZSA9IGRhdGFbaV0udGV4dFNpemUgKiBvcHRzLnBpeCB8fCBjb25maWcuZm9udFNpemU7XHJcbiAgICAgICAgbGV0IHRleHQgPSBkYXRhW2ldLnByb3BlcnRpZXMubmFtZTtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpXHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZGF0YVtpXS50ZXh0Q29sb3IgfHwgb3B0cy5mb250Q29sb3IpXHJcbiAgICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCBwb2ludC54IC0gbWVhc3VyZVRleHQodGV4dCwgZm9udFNpemUsIGNvbnRleHQpIC8gMiwgcG9pbnQueSArIGZvbnRTaXplIC8gMik7XHJcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9wdHMuY2hhcnREYXRhLm1hcERhdGEgPSB7XHJcbiAgICBib3VuZHM6IGJvdW5kcyxcclxuICAgIHNjYWxlOiBzY2FsZSxcclxuICAgIHhvZmZzZXQ6IHhvZmZzZXQsXHJcbiAgICB5b2Zmc2V0OiB5b2Zmc2V0LFxyXG4gICAgbWVyY2F0b3I6IG1hcE9wdGlvbi5tZXJjYXRvclxyXG4gIH1cclxuICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIDEpO1xyXG4gIGNvbnRleHQuZHJhdygpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRXb3JkQ2xvdWRQb2ludChvcHRzLCB0eXBlLCBjb250ZXh0KSB7XHJcbiAgbGV0IHBvaW50cyA9IG9wdHMuc2VyaWVzO1xyXG4gIHN3aXRjaCAodHlwZSkge1xyXG4gICAgY2FzZSAnbm9ybWFsJzpcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgdGV4dCA9IHBvaW50c1tpXS5uYW1lO1xyXG4gICAgICAgIGxldCB0SGVpZ2h0ID0gcG9pbnRzW2ldLnRleHRTaXplICogb3B0cy5waXg7XHJcbiAgICAgICAgbGV0IHRXaWR0aCA9IG1lYXN1cmVUZXh0KHRleHQsIHRIZWlnaHQsIGNvbnRleHQpO1xyXG4gICAgICAgIGxldCB4LCB5O1xyXG4gICAgICAgIGxldCBhcmVhO1xyXG4gICAgICAgIGxldCBicmVha251bSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgIGJyZWFrbnVtKys7XHJcbiAgICAgICAgICB4ID0gbm9ybWFsSW50KC1vcHRzLndpZHRoIC8gMiwgb3B0cy53aWR0aCAvIDIsIDUpIC0gdFdpZHRoIC8gMjtcclxuICAgICAgICAgIHkgPSBub3JtYWxJbnQoLW9wdHMuaGVpZ2h0IC8gMiwgb3B0cy5oZWlnaHQgLyAyLCA1KSArIHRIZWlnaHQgLyAyO1xyXG4gICAgICAgICAgYXJlYSA9IFt4IC0gNSArIG9wdHMud2lkdGggLyAyLCB5IC0gNSAtIHRIZWlnaHQgKyBvcHRzLmhlaWdodCAvIDIsIHggKyB0V2lkdGggKyA1ICsgb3B0cy53aWR0aCAvIDIsIHkgKyA1ICtcclxuICAgICAgICAgICAgb3B0cy5oZWlnaHQgLyAyXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgICAgbGV0IGlzQ29sbGlzaW9uID0gY29sbGlzaW9uTmV3KGFyZWEsIHBvaW50cywgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKCFpc0NvbGxpc2lvbikgYnJlYWs7XHJcbiAgICAgICAgICBpZiAoYnJlYWtudW0gPT0gMTAwMCkge1xyXG4gICAgICAgICAgICBhcmVhID0gWy0xMDAsIC0xMDAsIC0xMDAsIC0xMDBdO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHBvaW50c1tpXS5hcmVhID0gYXJlYTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3ZlcnRpY2FsJzpcclxuICAgICAgZnVuY3Rpb24gU3BpbigpIHtcclxuICAgICAgICAvL+iOt+WPluWdh+WMgOmaj+acuuWAvO+8jOaYr+WQpuaXi+i9rO+8jOaXi+i9rOeahOamgueOh+S4uu+8iDEtMC4177yJXHJcbiAgICAgICAgaWYgKE1hdGgucmFuZG9tKCkgPiAwLjcpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgICB9O1xyXG4gICAgICB9O1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCB0ZXh0ID0gcG9pbnRzW2ldLm5hbWU7XHJcbiAgICAgICAgbGV0IHRIZWlnaHQgPSBwb2ludHNbaV0udGV4dFNpemUgKiBvcHRzLnBpeDtcclxuICAgICAgICBsZXQgdFdpZHRoID0gbWVhc3VyZVRleHQodGV4dCwgdEhlaWdodCwgY29udGV4dCk7XHJcbiAgICAgICAgbGV0IGlzU3BpbiA9IFNwaW4oKTtcclxuICAgICAgICBsZXQgeCwgeSwgYXJlYSwgYXJlYXY7XHJcbiAgICAgICAgbGV0IGJyZWFrbnVtID0gMDtcclxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgYnJlYWtudW0rKztcclxuICAgICAgICAgIGxldCBpc0NvbGxpc2lvbjtcclxuICAgICAgICAgIGlmIChpc1NwaW4pIHtcclxuICAgICAgICAgICAgeCA9IG5vcm1hbEludCgtb3B0cy53aWR0aCAvIDIsIG9wdHMud2lkdGggLyAyLCA1KSAtIHRXaWR0aCAvIDI7XHJcbiAgICAgICAgICAgIHkgPSBub3JtYWxJbnQoLW9wdHMuaGVpZ2h0IC8gMiwgb3B0cy5oZWlnaHQgLyAyLCA1KSArIHRIZWlnaHQgLyAyO1xyXG4gICAgICAgICAgICBhcmVhID0gW3kgLSA1IC0gdFdpZHRoICsgb3B0cy53aWR0aCAvIDIsICgteCAtIDUgKyBvcHRzLmhlaWdodCAvIDIpLCB5ICsgNSArIG9wdHMud2lkdGggLyAyLCAoLXggKyB0SGVpZ2h0ICsgNSArIG9wdHMuaGVpZ2h0IC8gMildO1xyXG4gICAgICAgICAgICBhcmVhdiA9IFtvcHRzLndpZHRoIC0gKG9wdHMud2lkdGggLyAyIC0gb3B0cy5oZWlnaHQgLyAyKSAtICgteCArIHRIZWlnaHQgKyA1ICsgb3B0cy5oZWlnaHQgLyAyKSAtIDUsIChvcHRzLmhlaWdodCAvIDIgLSBvcHRzLndpZHRoIC8gMikgKyAoeSAtIDUgLSB0V2lkdGggKyBvcHRzLndpZHRoIC8gMikgLSA1LCBvcHRzLndpZHRoIC0gKG9wdHMud2lkdGggLyAyIC0gb3B0cy5oZWlnaHQgLyAyKSAtICgteCArIHRIZWlnaHQgKyA1ICsgb3B0cy5oZWlnaHQgLyAyKSArIHRIZWlnaHQsIChvcHRzLmhlaWdodCAvIDIgLSBvcHRzLndpZHRoIC8gMikgKyAoeSAtIDUgLSB0V2lkdGggKyBvcHRzLndpZHRoIC8gMikgKyB0V2lkdGggKyA1XTtcclxuICAgICAgICAgICAgaXNDb2xsaXNpb24gPSBjb2xsaXNpb25OZXcoYXJlYXYsIHBvaW50cywgb3B0cy5oZWlnaHQsIG9wdHMud2lkdGgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgeCA9IG5vcm1hbEludCgtb3B0cy53aWR0aCAvIDIsIG9wdHMud2lkdGggLyAyLCA1KSAtIHRXaWR0aCAvIDI7XHJcbiAgICAgICAgICAgIHkgPSBub3JtYWxJbnQoLW9wdHMuaGVpZ2h0IC8gMiwgb3B0cy5oZWlnaHQgLyAyLCA1KSArIHRIZWlnaHQgLyAyO1xyXG4gICAgICAgICAgICBhcmVhID0gW3ggLSA1ICsgb3B0cy53aWR0aCAvIDIsIHkgLSA1IC0gdEhlaWdodCArIG9wdHMuaGVpZ2h0IC8gMiwgeCArIHRXaWR0aCArIDUgKyBvcHRzLndpZHRoIC8gMiwgeSArIDUgKyBvcHRzLmhlaWdodCAvIDJdO1xyXG4gICAgICAgICAgICBpc0NvbGxpc2lvbiA9IGNvbGxpc2lvbk5ldyhhcmVhLCBwb2ludHMsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghaXNDb2xsaXNpb24pIGJyZWFrO1xyXG4gICAgICAgICAgaWYgKGJyZWFrbnVtID09IDEwMDApIHtcclxuICAgICAgICAgICAgYXJlYSA9IFstMTAwMCwgLTEwMDAsIC0xMDAwLCAtMTAwMF07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKGlzU3Bpbikge1xyXG4gICAgICAgICAgcG9pbnRzW2ldLmFyZWEgPSBhcmVhdjtcclxuICAgICAgICAgIHBvaW50c1tpXS5hcmVhdiA9IGFyZWE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHBvaW50c1tpXS5hcmVhID0gYXJlYTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcG9pbnRzW2ldLnJvdGF0ZSA9IGlzU3BpbjtcclxuICAgICAgfTtcclxuICAgICAgYnJlYWs7XHJcbiAgfVxyXG4gIHJldHVybiBwb2ludHM7XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBkcmF3V29yZENsb3VkRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIGxldCBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIGxldCB3b3JkT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOiAnbm9ybWFsJyxcclxuICAgIGF1dG9Db2xvcnM6IHRydWVcclxuICB9LCBvcHRzLmV4dHJhLndvcmQpO1xyXG4gIGlmICghb3B0cy5jaGFydERhdGEud29yZENsb3VkRGF0YSkge1xyXG4gICAgb3B0cy5jaGFydERhdGEud29yZENsb3VkRGF0YSA9IGdldFdvcmRDbG91ZFBvaW50KG9wdHMsIHdvcmRPcHRpb24udHlwZSwgY29udGV4dCk7XHJcbiAgfVxyXG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgY29udGV4dC5zZXRGaWxsU3R5bGUob3B0cy5iYWNrZ3JvdW5kKTtcclxuICBjb250ZXh0LnJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gIGNvbnRleHQuZmlsbCgpO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBwb2ludHMgPSBvcHRzLmNoYXJ0RGF0YS53b3JkQ2xvdWREYXRhO1xyXG4gIGNvbnRleHQudHJhbnNsYXRlKG9wdHMud2lkdGggLyAyLCBvcHRzLmhlaWdodCAvIDIpO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb250ZXh0LnNhdmUoKTtcclxuICAgIGlmIChwb2ludHNbaV0ucm90YXRlKSB7XHJcbiAgICAgIGNvbnRleHQucm90YXRlKDkwICogTWF0aC5QSSAvIDE4MCk7XHJcbiAgICB9XHJcbiAgICBsZXQgdGV4dCA9IHBvaW50c1tpXS5uYW1lO1xyXG4gICAgbGV0IHRIZWlnaHQgPSBwb2ludHNbaV0udGV4dFNpemUgKiBvcHRzLnBpeDtcclxuICAgIGxldCB0V2lkdGggPSBtZWFzdXJlVGV4dCh0ZXh0LCB0SGVpZ2h0LCBjb250ZXh0KTtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHBvaW50c1tpXS5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShwb2ludHNbaV0uY29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZSh0SGVpZ2h0KTtcclxuICAgIGlmIChwb2ludHNbaV0ucm90YXRlKSB7XHJcbiAgICAgIGlmIChwb2ludHNbaV0uYXJlYXZbMF0gPiAwKSB7XHJcbiAgICAgICAgaWYgKG9wdHMudG9vbHRpcCkge1xyXG4gICAgICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBpKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlVGV4dCh0ZXh0LCAocG9pbnRzW2ldLmFyZWF2WzBdICsgNSAtIG9wdHMud2lkdGggLyAyKSAqIHByb2Nlc3MgLSB0V2lkdGggKiAoMSAtIHByb2Nlc3MpIC8gMiwgKHBvaW50c1tpXS5hcmVhdlsxXSArIDUgKyB0SGVpZ2h0IC0gb3B0cy5oZWlnaHQgLyAyKSAqIHByb2Nlc3MpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCAocG9pbnRzW2ldLmFyZWF2WzBdICsgNSAtIG9wdHMud2lkdGggLyAyKSAqIHByb2Nlc3MgLSB0V2lkdGggKiAoMSAtIHByb2Nlc3MpIC8gMiwgKHBvaW50c1tpXS5hcmVhdlsxXSArIDUgKyB0SGVpZ2h0IC0gb3B0cy5oZWlnaHQgLyAyKSAqIHByb2Nlc3MpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIChwb2ludHNbaV0uYXJlYXZbMF0gKyA1IC0gb3B0cy53aWR0aCAvIDIpICogcHJvY2VzcyAtIHRXaWR0aCAqICgxIC0gcHJvY2VzcykgLyAyLCAocG9pbnRzW2ldLmFyZWF2WzFdICsgNSArIHRIZWlnaHQgLSBvcHRzLmhlaWdodCAvIDIpICogcHJvY2Vzcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAocG9pbnRzW2ldLmFyZWFbMF0gPiAwKSB7XHJcbiAgICAgICAgaWYgKG9wdHMudG9vbHRpcCkge1xyXG4gICAgICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBpKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlVGV4dCh0ZXh0LCAocG9pbnRzW2ldLmFyZWFbMF0gKyA1IC0gb3B0cy53aWR0aCAvIDIpICogcHJvY2VzcyAtIHRXaWR0aCAqICgxIC0gcHJvY2VzcykgLyAyLCAocG9pbnRzW2ldLmFyZWFbMV0gKyA1ICsgdEhlaWdodCAtIG9wdHMuaGVpZ2h0IC8gMikgKiBwcm9jZXNzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQodGV4dCwgKHBvaW50c1tpXS5hcmVhWzBdICsgNSAtIG9wdHMud2lkdGggLyAyKSAqIHByb2Nlc3MgLSB0V2lkdGggKiAoMSAtIHByb2Nlc3MpIC8gMiwgKHBvaW50c1tpXS5hcmVhWzFdICsgNSArIHRIZWlnaHQgLSBvcHRzLmhlaWdodCAvIDIpICogcHJvY2Vzcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQodGV4dCwgKHBvaW50c1tpXS5hcmVhWzBdICsgNSAtIG9wdHMud2lkdGggLyAyKSAqIHByb2Nlc3MgLSB0V2lkdGggKiAoMSAtIHByb2Nlc3MpIC8gMiwgKHBvaW50c1tpXS5hcmVhWzFdICsgNSArIHRIZWlnaHQgLSBvcHRzLmhlaWdodCAvIDIpICogcHJvY2Vzcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgfVxyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3RnVubmVsRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIGxldCBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIGxldCBmdW5uZWxPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIHR5cGU6J2Z1bm5lbCcsXHJcbiAgICBhY3RpdmVXaWR0aDogMTAsXHJcbiAgICBhY3RpdmVPcGFjaXR5OiAwLjMsXHJcbiAgICBib3JkZXI6IGZhbHNlLFxyXG4gICAgYm9yZGVyV2lkdGg6IDIsXHJcbiAgICBib3JkZXJDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgZmlsbE9wYWNpdHk6IDEsXHJcbiAgICBsYWJlbEFsaWduOiAncmlnaHQnLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gIH0sIG9wdHMuZXh0cmEuZnVubmVsKTtcclxuICBsZXQgZWFjaFNwYWNpbmcgPSAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pIC8gc2VyaWVzLmxlbmd0aDtcclxuICBsZXQgY2VudGVyUG9zaXRpb24gPSB7XHJcbiAgICB4OiBvcHRzLmFyZWFbM10gKyAob3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXSkgLyAyLFxyXG4gICAgeTogb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl1cclxuICB9O1xyXG4gIGxldCBhY3RpdmVXaWR0aCA9IGZ1bm5lbE9wdGlvbi5hY3RpdmVXaWR0aCAqIG9wdHMucGl4O1xyXG4gIGxldCByYWRpdXMgPSBNYXRoLm1pbigob3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXSkgLyAyIC0gYWN0aXZlV2lkdGgsIChvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXSkgLyAyIC0gYWN0aXZlV2lkdGgpO1xyXG4gIHNlcmllcyA9IGdldEZ1bm5lbERhdGFQb2ludHMoc2VyaWVzLCByYWRpdXMsIGZ1bm5lbE9wdGlvbi50eXBlLCBlYWNoU3BhY2luZywgcHJvY2Vzcyk7XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgY29udGV4dC50cmFuc2xhdGUoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgZnVubmVsT3B0aW9uLmN1c3RvbUNvbG9yID0gZmlsbEN1c3RvbUNvbG9yKGZ1bm5lbE9wdGlvbi5saW5lYXJUeXBlLCBmdW5uZWxPcHRpb24uY3VzdG9tQ29sb3IsIHNlcmllcywgY29uZmlnKTtcclxuICBpZihmdW5uZWxPcHRpb24udHlwZSA9PSAncHlyYW1pZCcpe1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGkgPT0gc2VyaWVzLmxlbmd0aCAtMSkge1xyXG4gICAgICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgICAgIGlmIChvcHRzLnRvb2x0aXAuaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihzZXJpZXNbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5hY3RpdmVPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKC1hY3RpdmVXaWR0aCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc1tpXS5yYWRpdXMgLSBhY3RpdmVXaWR0aCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc1tpXS5yYWRpdXMgKyBhY3RpdmVXaWR0aCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGFjdGl2ZVdpZHRoLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbygtYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXJpZXNbaV0uZnVubmVsQXJlYSA9IFtjZW50ZXJQb3NpdGlvbi54IC0gc2VyaWVzW2ldLnJhZGl1cywgY2VudGVyUG9zaXRpb24ueSAtIGVhY2hTcGFjaW5nICogKGkgKyAxKSwgY2VudGVyUG9zaXRpb24ueCArIHNlcmllc1tpXS5yYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkgLSBlYWNoU3BhY2luZyAqIGldO1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoZnVubmVsT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZnVubmVsT3B0aW9uLmJvcmRlckNvbG9yKTtcclxuICAgICAgICB2YXIgZmlsbENvbG9yID0gaGV4VG9SZ2Ioc2VyaWVzW2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpO1xyXG4gICAgICAgIGlmIChmdW5uZWxPcHRpb24ubGluZWFyVHlwZSA9PSAnY3VzdG9tJykge1xyXG4gICAgICAgICAgdmFyIGdyZCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoc2VyaWVzW2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nLCAtc2VyaWVzW2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2Ioc2VyaWVzW2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMC41LCBoZXhUb1JnYihmdW5uZWxPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW2ldLmxpbmVhckluZGV4XSwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKHNlcmllc1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBmaWxsQ29sb3IgPSBncmRcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbygwLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNbaV0ucmFkaXVzLCAwKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNbaV0ucmFkaXVzLCAwKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygwLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgaWYgKGZ1bm5lbE9wdGlvbi5ib3JkZXIgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKG9wdHMudG9vbHRpcCkge1xyXG4gICAgICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBpKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKHNlcmllc1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmFjdGl2ZU9wYWNpdHkpKTtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oMCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNbaV0ucmFkaXVzIC0gYWN0aXZlV2lkdGgsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzW2kgKyAxXS5yYWRpdXMgLSBhY3RpdmVXaWR0aCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzW2kgKyAxXS5yYWRpdXMgKyBhY3RpdmVXaWR0aCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzW2ldLnJhZGl1cyArIGFjdGl2ZVdpZHRoLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oMCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXJpZXNbaV0uZnVubmVsQXJlYSA9IFtjZW50ZXJQb3NpdGlvbi54IC0gc2VyaWVzW2ldLnJhZGl1cywgY2VudGVyUG9zaXRpb24ueSAtIGVhY2hTcGFjaW5nICogKGkgKyAxKSwgY2VudGVyUG9zaXRpb24ueCArIHNlcmllc1tpXS5yYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkgLSBlYWNoU3BhY2luZyAqIGldO1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoZnVubmVsT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZnVubmVsT3B0aW9uLmJvcmRlckNvbG9yKTtcclxuICAgICAgICB2YXIgZmlsbENvbG9yID0gaGV4VG9SZ2Ioc2VyaWVzW2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpO1xyXG4gICAgICAgIGlmIChmdW5uZWxPcHRpb24ubGluZWFyVHlwZSA9PSAnY3VzdG9tJykge1xyXG4gICAgICAgICAgdmFyIGdyZCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoc2VyaWVzW2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nLCAtc2VyaWVzW2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2Ioc2VyaWVzW2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMC41LCBoZXhUb1JnYihmdW5uZWxPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW2ldLmxpbmVhckluZGV4XSwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKHNlcmllc1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBmaWxsQ29sb3IgPSBncmRcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbygwLCAwKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzW2ldLnJhZGl1cywgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc1tpICsgMV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc1tpICsgMV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc1tpXS5yYWRpdXMsIDApO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKDAsIDApO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgaWYgKGZ1bm5lbE9wdGlvbi5ib3JkZXIgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWVhY2hTcGFjaW5nKVxyXG4gICAgfVxyXG4gIH1lbHNle1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGkgPT0gMCkge1xyXG4gICAgICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgICAgIGlmIChvcHRzLnRvb2x0aXAuaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihzZXJpZXNbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5hY3RpdmVPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKC1hY3RpdmVXaWR0aCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNbaV0ucmFkaXVzIC0gYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc1tpXS5yYWRpdXMgKyBhY3RpdmVXaWR0aCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oYWN0aXZlV2lkdGgsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbygtYWN0aXZlV2lkdGgsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2VyaWVzW2ldLmZ1bm5lbEFyZWEgPSBbY2VudGVyUG9zaXRpb24ueCAtIHNlcmllc1tpXS5yYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkgLSBlYWNoU3BhY2luZywgY2VudGVyUG9zaXRpb24ueCArIHNlcmllc1tpXS5yYWRpdXMsIGNlbnRlclBvc2l0aW9uLnldO1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoZnVubmVsT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZnVubmVsT3B0aW9uLmJvcmRlckNvbG9yKTtcclxuICAgICAgICB2YXIgZmlsbENvbG9yID0gaGV4VG9SZ2Ioc2VyaWVzW2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpO1xyXG4gICAgICAgIGlmIChmdW5uZWxPcHRpb24ubGluZWFyVHlwZSA9PSAnY3VzdG9tJykge1xyXG4gICAgICAgICAgdmFyIGdyZCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoc2VyaWVzW2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nLCAtc2VyaWVzW2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2Ioc2VyaWVzW2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMC41LCBoZXhUb1JnYihmdW5uZWxPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW2ldLmxpbmVhckluZGV4XSwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKHNlcmllc1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBmaWxsQ29sb3IgPSBncmRcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbygwLCAwKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzW2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNbaV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKDAsIDApO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgaWYgKGZ1bm5lbE9wdGlvbi5ib3JkZXIgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKG9wdHMudG9vbHRpcCkge1xyXG4gICAgICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBpKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKHNlcmllc1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmFjdGl2ZU9wYWNpdHkpKTtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oMCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNbaSAtIDFdLnJhZGl1cyAtIGFjdGl2ZVdpZHRoLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc1tpXS5yYWRpdXMgLSBhY3RpdmVXaWR0aCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzW2ldLnJhZGl1cyArIGFjdGl2ZVdpZHRoLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNbaSAtIDFdLnJhZGl1cyArIGFjdGl2ZVdpZHRoLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oMCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXJpZXNbaV0uZnVubmVsQXJlYSA9IFtjZW50ZXJQb3NpdGlvbi54IC0gc2VyaWVzW2ldLnJhZGl1cywgY2VudGVyUG9zaXRpb24ueSAtIGVhY2hTcGFjaW5nICogKGkgKyAxKSwgY2VudGVyUG9zaXRpb24ueCArIHNlcmllc1tpXS5yYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkgLSBlYWNoU3BhY2luZyAqIGldO1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoZnVubmVsT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZnVubmVsT3B0aW9uLmJvcmRlckNvbG9yKTtcclxuICAgICAgICB2YXIgZmlsbENvbG9yID0gaGV4VG9SZ2Ioc2VyaWVzW2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpO1xyXG4gICAgICAgIGlmIChmdW5uZWxPcHRpb24ubGluZWFyVHlwZSA9PSAnY3VzdG9tJykge1xyXG4gICAgICAgICAgdmFyIGdyZCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoc2VyaWVzW2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nLCAtc2VyaWVzW2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2Ioc2VyaWVzW2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMC41LCBoZXhUb1JnYihmdW5uZWxPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW2ldLmxpbmVhckluZGV4XSwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKHNlcmllc1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBmaWxsQ29sb3IgPSBncmRcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbygwLCAwKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzW2kgLSAxXS5yYWRpdXMsIDApO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNbaV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzW2kgLSAxXS5yYWRpdXMsIDApO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKDAsIDApO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgaWYgKGZ1bm5lbE9wdGlvbi5ib3JkZXIgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWVhY2hTcGFjaW5nKVxyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIGRyYXdGdW5uZWxUZXh0KHNlcmllcywgb3B0cywgY29udGV4dCwgZWFjaFNwYWNpbmcsIGZ1bm5lbE9wdGlvbi5sYWJlbEFsaWduLCBhY3RpdmVXaWR0aCwgY2VudGVyUG9zaXRpb24pO1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgY2VudGVyOiBjZW50ZXJQb3NpdGlvbixcclxuICAgIHJhZGl1czogcmFkaXVzLFxyXG4gICAgc2VyaWVzOiBzZXJpZXNcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3RnVubmVsVGV4dChzZXJpZXMsIG9wdHMsIGNvbnRleHQsIGVhY2hTcGFjaW5nLCBsYWJlbEFsaWduLCBhY3RpdmVXaWR0aCwgY2VudGVyUG9zaXRpb24pIHtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBsZXQgc3RhcnRYLCBlbmRYLCBzdGFydFksIGZvbnRTaXplO1xyXG4gICAgbGV0IHRleHQgPSBpdGVtLmZvcm1hdHRlciA/IGl0ZW0uZm9ybWF0dGVyKGl0ZW0saSxzZXJpZXMpIDogdXRpbC50b0ZpeGVkKGl0ZW0uX3Byb3BvcnRpb25fICogMTAwKSArICclJztcclxuICAgIGlmIChsYWJlbEFsaWduID09ICdyaWdodCcpIHtcclxuICAgICAgaWYob3B0cy5leHRyYS5mdW5uZWwudHlwZSA9PT0gJ3B5cmFtaWQnKXtcclxuICAgICAgICBpZiAoaSA9PSBzZXJpZXMubGVuZ3RoIC0xKSB7XHJcbiAgICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzJdICsgY2VudGVyUG9zaXRpb24ueCkgLyAyO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzJdICsgc2VyaWVzW2kgKyAxXS5mdW5uZWxBcmVhWzJdKSAvIDI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBpZiAoaSA9PSAwKSB7XHJcbiAgICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzJdICsgY2VudGVyUG9zaXRpb24ueCkgLyAyO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzJdICsgc2VyaWVzW2kgLSAxXS5mdW5uZWxBcmVhWzJdKSAvIDI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVuZFggPSBzdGFydFggKyBhY3RpdmVXaWR0aCAqIDI7XHJcbiAgICAgIHN0YXJ0WSA9IGl0ZW0uZnVubmVsQXJlYVsxXSArIGVhY2hTcGFjaW5nIC8gMjtcclxuICAgICAgZm9udFNpemUgPSBpdGVtLnRleHRTaXplICogb3B0cy5waXggfHwgb3B0cy5mb250U2l6ZSAqIG9wdHMucGl4O1xyXG4gICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGl0ZW0uY29sb3IpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBzdGFydFkpO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhlbmRYLCBzdGFydFkpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0Lm1vdmVUbyhlbmRYLCBzdGFydFkpO1xyXG4gICAgICBjb250ZXh0LmFyYyhlbmRYLCBzdGFydFksIDIsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLnRleHRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQodGV4dCwgZW5kWCArIDUsIHN0YXJ0WSArIGZvbnRTaXplIC8gMiAtIDIpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYob3B0cy5leHRyYS5mdW5uZWwudHlwZSA9PT0gJ3B5cmFtaWQnKXtcclxuICAgICAgICBpZiAoaSA9PSBzZXJpZXMubGVuZ3RoIC0xKSB7XHJcbiAgICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzBdICsgY2VudGVyUG9zaXRpb24ueCkgLyAyO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzBdICsgc2VyaWVzW2kgKyAxXS5mdW5uZWxBcmVhWzBdKSAvIDI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBpZiAoaSA9PSAwKSB7XHJcbiAgICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzBdICsgY2VudGVyUG9zaXRpb24ueCkgLyAyO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzBdICsgc2VyaWVzW2kgLSAxXS5mdW5uZWxBcmVhWzBdKSAvIDI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVuZFggPSBzdGFydFggLSBhY3RpdmVXaWR0aCAqIDI7XHJcbiAgICAgIHN0YXJ0WSA9IGl0ZW0uZnVubmVsQXJlYVsxXSArIGVhY2hTcGFjaW5nIC8gMjtcclxuICAgICAgZm9udFNpemUgPSBpdGVtLnRleHRTaXplICogb3B0cy5waXggfHwgb3B0cy5mb250U2l6ZSAqIG9wdHMucGl4O1xyXG4gICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGl0ZW0uY29sb3IpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBzdGFydFkpO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhlbmRYLCBzdGFydFkpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0Lm1vdmVUbyhlbmRYLCBzdGFydFkpO1xyXG4gICAgICBjb250ZXh0LmFyYyhlbmRYLCBzdGFydFksIDIsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLnRleHRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQodGV4dCwgZW5kWCAtIDUgLSBtZWFzdXJlVGV4dCh0ZXh0LCBmb250U2l6ZSwgY29udGV4dCksIHN0YXJ0WSArIGZvbnRTaXplIC8gMiAtIDIpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdDYW52YXMob3B0cywgY29udGV4dCkge1xyXG4gIGNvbnRleHQuZHJhdygpO1xyXG59XHJcblxyXG52YXIgVGltaW5nID0ge1xyXG4gIGVhc2VJbjogZnVuY3Rpb24gZWFzZUluKHBvcykge1xyXG4gICAgcmV0dXJuIE1hdGgucG93KHBvcywgMyk7XHJcbiAgfSxcclxuICBlYXNlT3V0OiBmdW5jdGlvbiBlYXNlT3V0KHBvcykge1xyXG4gICAgcmV0dXJuIE1hdGgucG93KHBvcyAtIDEsIDMpICsgMTtcclxuICB9LFxyXG4gIGVhc2VJbk91dDogZnVuY3Rpb24gZWFzZUluT3V0KHBvcykge1xyXG4gICAgaWYgKChwb3MgLz0gMC41KSA8IDEpIHtcclxuICAgICAgcmV0dXJuIDAuNSAqIE1hdGgucG93KHBvcywgMyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMC41ICogKE1hdGgucG93KHBvcyAtIDIsIDMpICsgMik7XHJcbiAgICB9XHJcbiAgfSxcclxuICBsaW5lYXI6IGZ1bmN0aW9uIGxpbmVhcihwb3MpIHtcclxuICAgIHJldHVybiBwb3M7XHJcbiAgfVxyXG59O1xyXG5cclxuZnVuY3Rpb24gQW5pbWF0aW9uKG9wdHMpIHtcclxuICB0aGlzLmlzU3RvcCA9IGZhbHNlO1xyXG4gIG9wdHMuZHVyYXRpb24gPSB0eXBlb2Ygb3B0cy5kdXJhdGlvbiA9PT0gJ3VuZGVmaW5lZCcgPyAxMDAwIDogb3B0cy5kdXJhdGlvbjtcclxuICBvcHRzLnRpbWluZyA9IG9wdHMudGltaW5nIHx8ICdlYXNlSW5PdXQnO1xyXG4gIHZhciBkZWxheSA9IDE3O1xyXG4gIGZ1bmN0aW9uIGNyZWF0ZUFuaW1hdGlvbkZyYW1lKCkge1xyXG4gICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICByZXR1cm4gZnVuY3Rpb24oc3RlcCwgZGVsYXkpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgdmFyIHRpbWVTdGFtcCA9ICtuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgc3RlcCh0aW1lU3RhbXApO1xyXG4gICAgICAgIH0sIGRlbGF5KTtcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdGVwKSB7XHJcbiAgICAgICAgc3RlcChudWxsKTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9O1xyXG4gIHZhciBhbmltYXRpb25GcmFtZSA9IGNyZWF0ZUFuaW1hdGlvbkZyYW1lKCk7XHJcbiAgdmFyIHN0YXJ0VGltZVN0YW1wID0gbnVsbDtcclxuICB2YXIgX3N0ZXAgPSBmdW5jdGlvbiBzdGVwKHRpbWVzdGFtcCkge1xyXG4gICAgaWYgKHRpbWVzdGFtcCA9PT0gbnVsbCB8fCB0aGlzLmlzU3RvcCA9PT0gdHJ1ZSkge1xyXG4gICAgICBvcHRzLm9uUHJvY2VzcyAmJiBvcHRzLm9uUHJvY2VzcygxKTtcclxuICAgICAgb3B0cy5vbkFuaW1hdGlvbkZpbmlzaCAmJiBvcHRzLm9uQW5pbWF0aW9uRmluaXNoKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChzdGFydFRpbWVTdGFtcCA9PT0gbnVsbCkge1xyXG4gICAgICBzdGFydFRpbWVTdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgIH1cclxuICAgIGlmICh0aW1lc3RhbXAgLSBzdGFydFRpbWVTdGFtcCA8IG9wdHMuZHVyYXRpb24pIHtcclxuICAgICAgdmFyIHByb2Nlc3MgPSAodGltZXN0YW1wIC0gc3RhcnRUaW1lU3RhbXApIC8gb3B0cy5kdXJhdGlvbjtcclxuICAgICAgdmFyIHRpbWluZ0Z1bmN0aW9uID0gVGltaW5nW29wdHMudGltaW5nXTtcclxuICAgICAgcHJvY2VzcyA9IHRpbWluZ0Z1bmN0aW9uKHByb2Nlc3MpO1xyXG4gICAgICBvcHRzLm9uUHJvY2VzcyAmJiBvcHRzLm9uUHJvY2Vzcyhwcm9jZXNzKTtcclxuICAgICAgYW5pbWF0aW9uRnJhbWUoX3N0ZXAsIGRlbGF5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9wdHMub25Qcm9jZXNzICYmIG9wdHMub25Qcm9jZXNzKDEpO1xyXG4gICAgICBvcHRzLm9uQW5pbWF0aW9uRmluaXNoICYmIG9wdHMub25BbmltYXRpb25GaW5pc2goKTtcclxuICAgIH1cclxuICB9O1xyXG4gIF9zdGVwID0gX3N0ZXAuYmluZCh0aGlzKTtcclxuICBhbmltYXRpb25GcmFtZShfc3RlcCwgZGVsYXkpO1xyXG59XHJcblxyXG5BbmltYXRpb24ucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbigpIHtcclxuICB0aGlzLmlzU3RvcCA9IHRydWU7XHJcbn07XHJcblxyXG5mdW5jdGlvbiBkcmF3Q2hhcnRzKHR5cGUsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgdmFyIHNlcmllcyA9IG9wdHMuc2VyaWVzO1xyXG4gIC8v5YW85a65RUNoYXJ0c+mlvOWbvuexu+aVsOaNruagvOW8j1xyXG4gIGlmICh0eXBlID09PSAncGllJyB8fCB0eXBlID09PSAncmluZycgfHwgdHlwZSA9PT0gJ3Jvc2UnIHx8IHR5cGUgPT09ICdmdW5uZWwnKSB7XHJcbiAgICBzZXJpZXMgPSBmaXhQaWVTZXJpZXMoc2VyaWVzLCBvcHRzLCBjb25maWcpO1xyXG4gIH1cclxuICB2YXIgY2F0ZWdvcmllcyA9IG9wdHMuY2F0ZWdvcmllcztcclxuICBzZXJpZXMgPSBmaWxsU2VyaWVzKHNlcmllcywgb3B0cywgY29uZmlnKTtcclxuICB2YXIgZHVyYXRpb24gPSBvcHRzLmFuaW1hdGlvbiA/IG9wdHMuZHVyYXRpb24gOiAwO1xyXG4gIF90aGlzLmFuaW1hdGlvbkluc3RhbmNlICYmIF90aGlzLmFuaW1hdGlvbkluc3RhbmNlLnN0b3AoKTtcclxuICB2YXIgc2VyaWVzTUEgPSBudWxsO1xyXG4gIGlmICh0eXBlID09ICdjYW5kbGUnKSB7XHJcbiAgICBsZXQgYXZlcmFnZSA9IGFzc2lnbih7fSwgb3B0cy5leHRyYS5jYW5kbGUuYXZlcmFnZSk7XHJcbiAgICBpZiAoYXZlcmFnZS5zaG93KSB7XHJcbiAgICAgIHNlcmllc01BID0gY2FsQ2FuZGxlTUEoYXZlcmFnZS5kYXksIGF2ZXJhZ2UubmFtZSwgYXZlcmFnZS5jb2xvciwgc2VyaWVzWzBdLmRhdGEpO1xyXG4gICAgICBzZXJpZXNNQSA9IGZpbGxTZXJpZXMoc2VyaWVzTUEsIG9wdHMsIGNvbmZpZyk7XHJcbiAgICAgIG9wdHMuc2VyaWVzTUEgPSBzZXJpZXNNQTtcclxuICAgIH0gZWxzZSBpZiAob3B0cy5zZXJpZXNNQSkge1xyXG4gICAgICBzZXJpZXNNQSA9IG9wdHMuc2VyaWVzTUEgPSBmaWxsU2VyaWVzKG9wdHMuc2VyaWVzTUEsIG9wdHMsIGNvbmZpZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXJpZXNNQSA9IHNlcmllcztcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgc2VyaWVzTUEgPSBzZXJpZXM7XHJcbiAgfVxyXG4gIC8qIOi/h+a7pOaOiXNob3c9ZmFsc2XnmoRzZXJpZXMgKi9cclxuICBvcHRzLl9zZXJpZXNfID0gc2VyaWVzID0gZmlsdGVyU2VyaWVzKHNlcmllcyk7XHJcbiAgLy/ph43mlrDorqHnrpflm77ooajljLrln59cclxuICBvcHRzLmFyZWEgPSBuZXcgQXJyYXkoNCk7XHJcbiAgLy/lpI3kvY3nu5jlm77ljLrln59cclxuICBmb3IgKGxldCBqID0gMDsgaiA8IDQ7IGorKykge1xyXG4gICAgb3B0cy5hcmVhW2pdID0gb3B0cy5wYWRkaW5nW2pdICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIC8v6YCa6L+H6K6h566X5LiJ5aSn5Yy65Z+f77ya5Zu+5L6L44CBWOi9tOOAgVnovbTnmoTlpKflsI/vvIznoa7lrprnu5jlm77ljLrln59cclxuICB2YXIgX2NhbExlZ2VuZERhdGEgPSBjYWxMZWdlbmREYXRhKHNlcmllc01BLCBvcHRzLCBjb25maWcsIG9wdHMuY2hhcnREYXRhLCBjb250ZXh0KSxcclxuICAgIGxlZ2VuZEhlaWdodCA9IF9jYWxMZWdlbmREYXRhLmFyZWEud2hvbGVIZWlnaHQsXHJcbiAgICBsZWdlbmRXaWR0aCA9IF9jYWxMZWdlbmREYXRhLmFyZWEud2hvbGVXaWR0aDtcclxuXHJcbiAgc3dpdGNoIChvcHRzLmxlZ2VuZC5wb3NpdGlvbikge1xyXG4gICAgY2FzZSAndG9wJzpcclxuICAgICAgb3B0cy5hcmVhWzBdICs9IGxlZ2VuZEhlaWdodDtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdib3R0b20nOlxyXG4gICAgICBvcHRzLmFyZWFbMl0gKz0gbGVnZW5kSGVpZ2h0O1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgICBvcHRzLmFyZWFbM10gKz0gbGVnZW5kV2lkdGg7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICBvcHRzLmFyZWFbMV0gKz0gbGVnZW5kV2lkdGg7XHJcbiAgICAgIGJyZWFrO1xyXG4gIH1cclxuXHJcbiAgbGV0IF9jYWxZQXhpc0RhdGEgPSB7fSxcclxuICAgIHlBeGlzV2lkdGggPSAwO1xyXG4gIGlmIChvcHRzLnR5cGUgPT09ICdsaW5lJyB8fCBvcHRzLnR5cGUgPT09ICdjb2x1bW4nIHx8IG9wdHMudHlwZSA9PT0gJ2FyZWEnIHx8IG9wdHMudHlwZSA9PT0gJ21peCcgfHwgb3B0cy50eXBlID09PSAnY2FuZGxlJyB8fCBvcHRzLnR5cGUgPT09ICdzY2F0dGVyJyAgfHwgb3B0cy50eXBlID09PSAnYnViYmxlJyB8fCBvcHRzLnR5cGUgPT09ICdiYXInKSB7XHJcbiAgICAgIF9jYWxZQXhpc0RhdGEgPSBjYWxZQXhpc0RhdGEoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICB5QXhpc1dpZHRoID0gX2NhbFlBeGlzRGF0YS55QXhpc1dpZHRoO1xyXG4gICAgLy/lpoLmnpzmmL7npLpZ6L205qCH6aKYXHJcbiAgICBpZiAob3B0cy55QXhpcy5zaG93VGl0bGUpIHtcclxuICAgICAgbGV0IG1heFRpdGxlSGVpZ2h0ID0gMDtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRzLnlBeGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBtYXhUaXRsZUhlaWdodCA9IE1hdGgubWF4KG1heFRpdGxlSGVpZ2h0LCBvcHRzLnlBeGlzLmRhdGFbaV0udGl0bGVGb250U2l6ZSA/IG9wdHMueUF4aXMuZGF0YVtpXS50aXRsZUZvbnRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemUpXHJcbiAgICAgIH1cclxuICAgICAgb3B0cy5hcmVhWzBdICs9IG1heFRpdGxlSGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgbGV0IHJpZ2h0SW5kZXggPSAwLFxyXG4gICAgICBsZWZ0SW5kZXggPSAwO1xyXG4gICAgLy/orqHnrpfkuLvnu5jlm77ljLrln5/lt6blj7PkvY3nva5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeUF4aXNXaWR0aC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoeUF4aXNXaWR0aFtpXS5wb3NpdGlvbiA9PSAnbGVmdCcpIHtcclxuICAgICAgICBpZiAobGVmdEluZGV4ID4gMCkge1xyXG4gICAgICAgICAgb3B0cy5hcmVhWzNdICs9IHlBeGlzV2lkdGhbaV0ud2lkdGggKyBvcHRzLnlBeGlzLnBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3B0cy5hcmVhWzNdICs9IHlBeGlzV2lkdGhbaV0ud2lkdGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxlZnRJbmRleCArPSAxO1xyXG4gICAgICB9IGVsc2UgaWYgKHlBeGlzV2lkdGhbaV0ucG9zaXRpb24gPT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgIGlmIChyaWdodEluZGV4ID4gMCkge1xyXG4gICAgICAgICAgb3B0cy5hcmVhWzFdICs9IHlBeGlzV2lkdGhbaV0ud2lkdGggKyBvcHRzLnlBeGlzLnBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3B0cy5hcmVhWzFdICs9IHlBeGlzV2lkdGhbaV0ud2lkdGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJpZ2h0SW5kZXggKz0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25maWcueUF4aXNXaWR0aCA9IHlBeGlzV2lkdGg7XHJcbiAgfVxyXG4gIG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YSA9IF9jYWxZQXhpc0RhdGE7XHJcblxyXG4gIGlmIChvcHRzLmNhdGVnb3JpZXMgJiYgb3B0cy5jYXRlZ29yaWVzLmxlbmd0aCAmJiBvcHRzLnR5cGUgIT09ICdyYWRhcicgJiYgb3B0cy50eXBlICE9PSAnZ2F1Z2UnICYmIG9wdHMudHlwZSAhPT0gJ2JhcicpIHtcclxuICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSA9IGdldFhBeGlzUG9pbnRzKG9wdHMuY2F0ZWdvcmllcywgb3B0cywgY29uZmlnKTtcclxuICAgIGxldCBfY2FsQ2F0ZWdvcmllc0RhdGEgPSBjYWxDYXRlZ29yaWVzRGF0YShvcHRzLmNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLmVhY2hTcGFjaW5nLCBjb250ZXh0KSxcclxuICAgICAgeEF4aXNIZWlnaHQgPSBfY2FsQ2F0ZWdvcmllc0RhdGEueEF4aXNIZWlnaHQsXHJcbiAgICAgIGFuZ2xlID0gX2NhbENhdGVnb3JpZXNEYXRhLmFuZ2xlO1xyXG4gICAgY29uZmlnLnhBeGlzSGVpZ2h0ID0geEF4aXNIZWlnaHQ7XHJcbiAgICBjb25maWcuX3hBeGlzVGV4dEFuZ2xlXyA9IGFuZ2xlO1xyXG4gICAgb3B0cy5hcmVhWzJdICs9IHhBeGlzSGVpZ2h0O1xyXG4gICAgb3B0cy5jaGFydERhdGEuY2F0ZWdvcmllc0RhdGEgPSBfY2FsQ2F0ZWdvcmllc0RhdGE7XHJcbiAgfSBlbHNlIHtcclxuICAgIGlmIChvcHRzLnR5cGUgPT09ICdsaW5lJyB8fCBvcHRzLnR5cGUgPT09ICdhcmVhJyB8fCBvcHRzLnR5cGUgPT09ICdzY2F0dGVyJyB8fCBvcHRzLnR5cGUgPT09ICdidWJibGUnIHx8IG9wdHMudHlwZSA9PT0gJ2JhcicpIHtcclxuICAgICAgb3B0cy5jaGFydERhdGEueEF4aXNEYXRhID0gY2FsWEF4aXNEYXRhKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgY2F0ZWdvcmllcyA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5yYW5nZXNGb3JtYXQ7XHJcbiAgICAgIGxldCBfY2FsQ2F0ZWdvcmllc0RhdGEgPSBjYWxDYXRlZ29yaWVzRGF0YShjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5lYWNoU3BhY2luZywgY29udGV4dCksXHJcbiAgICAgICAgeEF4aXNIZWlnaHQgPSBfY2FsQ2F0ZWdvcmllc0RhdGEueEF4aXNIZWlnaHQsXHJcbiAgICAgICAgYW5nbGUgPSBfY2FsQ2F0ZWdvcmllc0RhdGEuYW5nbGU7XHJcbiAgICAgIGNvbmZpZy54QXhpc0hlaWdodCA9IHhBeGlzSGVpZ2h0O1xyXG4gICAgICBjb25maWcuX3hBeGlzVGV4dEFuZ2xlXyA9IGFuZ2xlO1xyXG4gICAgICBvcHRzLmFyZWFbMl0gKz0geEF4aXNIZWlnaHQ7XHJcbiAgICAgIG9wdHMuY2hhcnREYXRhLmNhdGVnb3JpZXNEYXRhID0gX2NhbENhdGVnb3JpZXNEYXRhO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb3B0cy5jaGFydERhdGEueEF4aXNEYXRhID0ge1xyXG4gICAgICAgIHhBeGlzUG9pbnRzOiBbXVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuICAvL+iuoeeul+WPs+Wvuem9kOWBj+enu+i3neemu1xyXG4gIGlmIChvcHRzLmVuYWJsZVNjcm9sbCAmJiBvcHRzLnhBeGlzLnNjcm9sbEFsaWduID09ICdyaWdodCcgJiYgb3B0cy5fc2Nyb2xsRGlzdGFuY2VfID09PSB1bmRlZmluZWQpIHtcclxuICAgIGxldCBvZmZzZXRMZWZ0ID0gMCxcclxuICAgICAgeEF4aXNQb2ludHMgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICAgIHN0YXJ0WCA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5zdGFydFgsXHJcbiAgICAgIGVuZFggPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEuZW5kWCxcclxuICAgICAgZWFjaFNwYWNpbmcgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgICBsZXQgdG90YWxXaWR0aCA9IGVhY2hTcGFjaW5nICogKHhBeGlzUG9pbnRzLmxlbmd0aCAtIDEpO1xyXG4gICAgbGV0IHNjcmVlbldpZHRoID0gZW5kWCAtIHN0YXJ0WDtcclxuICAgIG9mZnNldExlZnQgPSBzY3JlZW5XaWR0aCAtIHRvdGFsV2lkdGg7XHJcbiAgICBfdGhpcy5zY3JvbGxPcHRpb24gPSB7XHJcbiAgICAgIGN1cnJlbnRPZmZzZXQ6IG9mZnNldExlZnQsXHJcbiAgICAgIHN0YXJ0VG91Y2hYOiBvZmZzZXRMZWZ0LFxyXG4gICAgICBkaXN0YW5jZTogMCxcclxuICAgICAgbGFzdE1vdmVUaW1lOiAwXHJcbiAgICB9O1xyXG4gICAgb3B0cy5fc2Nyb2xsRGlzdGFuY2VfID0gb2Zmc2V0TGVmdDtcclxuICB9XHJcblxyXG4gIGlmICh0eXBlID09PSAncGllJyB8fCB0eXBlID09PSAncmluZycgfHwgdHlwZSA9PT0gJ3Jvc2UnKSB7XHJcbiAgICBjb25maWcuX3BpZVRleHRNYXhMZW5ndGhfID0gb3B0cy5kYXRhTGFiZWwgPT09IGZhbHNlID8gMCA6IGdldFBpZVRleHRNYXhMZW5ndGgoc2VyaWVzTUEsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgfVxyXG4gIHN3aXRjaCAodHlwZSkge1xyXG4gICAgY2FzZSAnd29yZCc6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1dvcmRDbG91ZERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnbWFwJzpcclxuICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICBkcmF3TWFwRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnZnVubmVsJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24ocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5mdW5uZWxEYXRhID0gZHJhd0Z1bm5lbERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnbGluZSc6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdZQXhpc0dyaWQoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGRyYXdYQXhpcyhjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgdmFyIF9kcmF3TGluZURhdGFQb2ludHMgPSBkcmF3TGluZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3TGluZURhdGFQb2ludHMueEF4aXNQb2ludHMsXHJcbiAgICAgICAgICAgIGNhbFBvaW50cyA9IF9kcmF3TGluZURhdGFQb2ludHMuY2FsUG9pbnRzLFxyXG4gICAgICAgICAgICBlYWNoU3BhY2luZyA9IF9kcmF3TGluZURhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnc2NhdHRlcic6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdZQXhpc0dyaWQoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGRyYXdYQXhpcyhjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgdmFyIF9kcmF3U2NhdHRlckRhdGFQb2ludHMgPSBkcmF3U2NhdHRlckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3U2NhdHRlckRhdGFQb2ludHMueEF4aXNQb2ludHMsXHJcbiAgICAgICAgICAgIGNhbFBvaW50cyA9IF9kcmF3U2NhdHRlckRhdGFQb2ludHMuY2FsUG9pbnRzLFxyXG4gICAgICAgICAgICBlYWNoU3BhY2luZyA9IF9kcmF3U2NhdHRlckRhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYnViYmxlJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdCdWJibGVEYXRhUG9pbnRzID0gZHJhd0J1YmJsZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3QnViYmxlRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdCdWJibGVEYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd0J1YmJsZURhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnbWl4JzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdNaXhEYXRhUG9pbnRzID0gZHJhd01peERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3TWl4RGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdNaXhEYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd01peERhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnY29sdW1uJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdDb2x1bW5EYXRhUG9pbnRzID0gZHJhd0NvbHVtbkRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3Q29sdW1uRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdDb2x1bW5EYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd0NvbHVtbkRhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYmFyJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdCYXJEYXRhUG9pbnRzID0gZHJhd0JhckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB5QXhpc1BvaW50cyA9IF9kcmF3QmFyRGF0YVBvaW50cy55QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdCYXJEYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd0JhckRhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS55QXhpc1BvaW50cyA9IHlBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEueEF4aXNQb2ludHMgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEueEF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMgPSBjYWxQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyA9IGVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgZHJhd1lBeGlzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGlmIChvcHRzLmVuYWJsZU1hcmtMaW5lICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRyYXdNYXJrTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB5QXhpc1BvaW50cyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdhcmVhJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdBcmVhRGF0YVBvaW50cyA9IGRyYXdBcmVhRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2VzcyksXHJcbiAgICAgICAgICAgIHhBeGlzUG9pbnRzID0gX2RyYXdBcmVhRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdBcmVhRGF0YVBvaW50cy5jYWxQb2ludHMsXHJcbiAgICAgICAgICAgIGVhY2hTcGFjaW5nID0gX2RyYXdBcmVhRGF0YVBvaW50cy5lYWNoU3BhY2luZztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzID0geEF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMgPSBjYWxQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyA9IGVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgZHJhd1lBeGlzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGlmIChvcHRzLmVuYWJsZU1hcmtMaW5lICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRyYXdNYXJrTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdyaW5nJzpcclxuICAgIGNhc2UgJ3BpZSc6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnBpZURhdGEgPSBkcmF3UGllRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3TGVnZW5kKG9wdHMuc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIG9wdHMuY2hhcnREYXRhKTtcclxuICAgICAgICAgIGRyYXdUb29sVGlwQnJpZGdlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdyb3NlJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEucGllRGF0YSA9IGRyYXdSb3NlRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3TGVnZW5kKG9wdHMuc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIG9wdHMuY2hhcnREYXRhKTtcclxuICAgICAgICAgIGRyYXdUb29sVGlwQnJpZGdlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdyYWRhcic6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnJhZGFyRGF0YSA9IGRyYXdSYWRhckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYXJjYmFyJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuYXJjYmFyRGF0YSA9IGRyYXdBcmNiYXJEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdDYW52YXMob3B0cywgY29udGV4dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFuaW1hdGlvbkZpbmlzaDogZnVuY3Rpb24gb25BbmltYXRpb25GaW5pc2goKSB7XHJcbiAgICAgICAgICBfdGhpcy51ZXZlbnQudHJpZ2dlcigncmVuZGVyQ29tcGxldGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2dhdWdlJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZ2F1Z2VEYXRhID0gZHJhd0dhdWdlRGF0YVBvaW50cyhjYXRlZ29yaWVzLCBzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdjYW5kbGUnOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3WUF4aXNHcmlkKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIHZhciBfZHJhd0NhbmRsZURhdGFQb2ludHMgPSBkcmF3Q2FuZGxlRGF0YVBvaW50cyhzZXJpZXMsIHNlcmllc01BLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3Q2FuZGxlRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdDYW5kbGVEYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd0NhbmRsZURhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChzZXJpZXNNQSkge1xyXG4gICAgICAgICAgICBkcmF3TGVnZW5kKHNlcmllc01BLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIG9wdHMuY2hhcnREYXRhKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdUNoYXJ0c0V2ZW50KCkge1xyXG4gIHRoaXMuZXZlbnRzID0ge307XHJcbn1cclxuXHJcbnVDaGFydHNFdmVudC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7XHJcbiAgdGhpcy5ldmVudHNbdHlwZV0gPSB0aGlzLmV2ZW50c1t0eXBlXSB8fCBbXTtcclxuICB0aGlzLmV2ZW50c1t0eXBlXS5wdXNoKGxpc3RlbmVyKTtcclxufTtcclxuXHJcbnVDaGFydHNFdmVudC5wcm90b3R5cGUuZGVsRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUpIHtcclxuICB0aGlzLmV2ZW50c1t0eXBlXSA9IFtdO1xyXG59O1xyXG5cclxudUNoYXJ0c0V2ZW50LnByb3RvdHlwZS50cmlnZ2VyID0gZnVuY3Rpb24oKSB7XHJcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcclxuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XHJcbiAgfVxyXG4gIHZhciB0eXBlID0gYXJnc1swXTtcclxuICB2YXIgcGFyYW1zID0gYXJncy5zbGljZSgxKTtcclxuICBpZiAoISF0aGlzLmV2ZW50c1t0eXBlXSkge1xyXG4gICAgdGhpcy5ldmVudHNbdHlwZV0uZm9yRWFjaChmdW5jdGlvbihsaXN0ZW5lcikge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxpc3RlbmVyLmFwcGx5KG51bGwsIHBhcmFtcyk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coJ1t1Q2hhcnRzXSAnK2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn07XHJcblxyXG52YXIgdUNoYXJ0cyA9IGZ1bmN0aW9uIHVDaGFydHMob3B0cykge1xyXG4gIG9wdHMucGl4ID0gb3B0cy5waXhlbFJhdGlvID8gb3B0cy5waXhlbFJhdGlvIDogMTtcclxuICBvcHRzLmZvbnRTaXplID0gb3B0cy5mb250U2l6ZSA/IG9wdHMuZm9udFNpemUgOiAxMztcclxuICBvcHRzLmZvbnRDb2xvciA9IG9wdHMuZm9udENvbG9yID8gb3B0cy5mb250Q29sb3IgOiBjb25maWcuZm9udENvbG9yO1xyXG4gIGlmIChvcHRzLmJhY2tncm91bmQgPT0gXCJcIiB8fCBvcHRzLmJhY2tncm91bmQgPT0gXCJub25lXCIpIHtcclxuICAgIG9wdHMuYmFja2dyb3VuZCA9IFwiI0ZGRkZGRlwiXHJcbiAgfVxyXG4gIG9wdHMudGl0bGUgPSBhc3NpZ24oe30sIG9wdHMudGl0bGUpO1xyXG4gIG9wdHMuc3VidGl0bGUgPSBhc3NpZ24oe30sIG9wdHMuc3VidGl0bGUpO1xyXG4gIG9wdHMuZHVyYXRpb24gPSBvcHRzLmR1cmF0aW9uID8gb3B0cy5kdXJhdGlvbiA6IDEwMDA7XHJcbiAgb3B0cy55QXhpcyA9IGFzc2lnbih7fSwge1xyXG4gICAgZGF0YTogW10sXHJcbiAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgZGlzYWJsZUdyaWQ6IGZhbHNlLFxyXG4gICAgc3BsaXROdW1iZXI6IDUsXHJcbiAgICBncmlkVHlwZTogJ3NvbGlkJyxcclxuICAgIGRhc2hMZW5ndGg6IDQgKiBvcHRzLnBpeCxcclxuICAgIGdyaWRDb2xvcjogJyNjY2NjY2MnLFxyXG4gICAgcGFkZGluZzogMTAsXHJcbiAgICBmb250Q29sb3I6ICcjNjY2NjY2J1xyXG4gIH0sIG9wdHMueUF4aXMpO1xyXG4gIG9wdHMueEF4aXMgPSBhc3NpZ24oe30sIHtcclxuICAgIHJvdGF0ZUxhYmVsOiBmYWxzZSxcclxuICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgIGRpc2FibGVHcmlkOiBmYWxzZSxcclxuICAgIHNwbGl0TnVtYmVyOiA1LFxyXG4gICAgY2FsaWJyYXRpb246ZmFsc2UsXHJcbiAgICBncmlkVHlwZTogJ3NvbGlkJyxcclxuICAgIGRhc2hMZW5ndGg6IDQsXHJcbiAgICBzY3JvbGxBbGlnbjogJ2xlZnQnLFxyXG4gICAgYm91bmRhcnlHYXA6ICdjZW50ZXInLFxyXG4gICAgYXhpc0xpbmU6IHRydWUsXHJcbiAgICBheGlzTGluZUNvbG9yOiAnI2NjY2NjYydcclxuICB9LCBvcHRzLnhBeGlzKTtcclxuICBvcHRzLnhBeGlzLnNjcm9sbFBvc2l0aW9uID0gb3B0cy54QXhpcy5zY3JvbGxBbGlnbjtcclxuICBvcHRzLmxlZ2VuZCA9IGFzc2lnbih7fSwge1xyXG4gICAgc2hvdzogdHJ1ZSxcclxuICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAgIGZsb2F0OiAnY2VudGVyJyxcclxuICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsMCknLFxyXG4gICAgYm9yZGVyQ29sb3I6ICdyZ2JhKDAsMCwwLDApJyxcclxuICAgIGJvcmRlcldpZHRoOiAwLFxyXG4gICAgcGFkZGluZzogNSxcclxuICAgIG1hcmdpbjogNSxcclxuICAgIGl0ZW1HYXA6IDEwLFxyXG4gICAgZm9udFNpemU6IG9wdHMuZm9udFNpemUsXHJcbiAgICBsaW5lSGVpZ2h0OiBvcHRzLmZvbnRTaXplLFxyXG4gICAgZm9udENvbG9yOiBvcHRzLmZvbnRDb2xvcixcclxuICAgIGZvcm1hdHRlcjoge30sXHJcbiAgICBoaWRkZW5Db2xvcjogJyNDRUNFQ0UnXHJcbiAgfSwgb3B0cy5sZWdlbmQpO1xyXG4gIG9wdHMuZXh0cmEgPSBhc3NpZ24oe30sIG9wdHMuZXh0cmEpO1xyXG4gIG9wdHMucm90YXRlID0gb3B0cy5yb3RhdGUgPyB0cnVlIDogZmFsc2U7XHJcbiAgb3B0cy5hbmltYXRpb24gPSBvcHRzLmFuaW1hdGlvbiA/IHRydWUgOiBmYWxzZTtcclxuICBvcHRzLnJvdGF0ZSA9IG9wdHMucm90YXRlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIG9wdHMuY2FudmFzMmQgPSBvcHRzLmNhbnZhczJkID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIFxyXG4gIGxldCBjb25maWckJDEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbmZpZykpO1xyXG4gIGNvbmZpZyQkMS5jb2xvciA9IG9wdHMuY29sb3IgPyBvcHRzLmNvbG9yIDogY29uZmlnJCQxLmNvbG9yO1xyXG4gIGNvbmZpZyQkMS55QXhpc1RpdGxlV2lkdGggPSBvcHRzLnlBeGlzLmRpc2FibGVkICE9PSB0cnVlICYmIG9wdHMueUF4aXMudGl0bGUgPyBjb25maWckJDEueUF4aXNUaXRsZVdpZHRoIDogMDtcclxuICBpZiAob3B0cy50eXBlID09ICdwaWUnKSB7XHJcbiAgICBjb25maWckJDEucGllQ2hhcnRMaW5lUGFkZGluZyA9IG9wdHMuZGF0YUxhYmVsID09PSBmYWxzZSA/IDAgOiBvcHRzLmV4dHJhLnBpZS5sYWJlbFdpZHRoICogb3B0cy5waXggfHwgY29uZmlnJCQxLnBpZUNoYXJ0TGluZVBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICB9XHJcbiAgaWYgKG9wdHMudHlwZSA9PSAncmluZycpIHtcclxuICAgIGNvbmZpZyQkMS5waWVDaGFydExpbmVQYWRkaW5nID0gb3B0cy5kYXRhTGFiZWwgPT09IGZhbHNlID8gMCA6IG9wdHMuZXh0cmEucmluZy5sYWJlbFdpZHRoICogb3B0cy5waXggfHwgY29uZmlnJCQxLnBpZUNoYXJ0TGluZVBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICB9XHJcbiAgaWYgKG9wdHMudHlwZSA9PSAncm9zZScpIHtcclxuICAgIGNvbmZpZyQkMS5waWVDaGFydExpbmVQYWRkaW5nID0gb3B0cy5kYXRhTGFiZWwgPT09IGZhbHNlID8gMCA6IG9wdHMuZXh0cmEucm9zZS5sYWJlbFdpZHRoICogb3B0cy5waXggfHwgY29uZmlnJCQxLnBpZUNoYXJ0TGluZVBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICB9XHJcbiAgY29uZmlnJCQxLnBpZUNoYXJ0VGV4dFBhZGRpbmcgPSBvcHRzLmRhdGFMYWJlbCA9PT0gZmFsc2UgPyAwIDogY29uZmlnJCQxLnBpZUNoYXJ0VGV4dFBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICBjb25maWckJDEueUF4aXNTcGxpdCA9IG9wdHMueUF4aXMuc3BsaXROdW1iZXIgPyBvcHRzLnlBeGlzLnNwbGl0TnVtYmVyIDogY29uZmlnLnlBeGlzU3BsaXQ7XHJcblxyXG4gIC8v5bGP5bmV5peL6L2sXHJcbiAgY29uZmlnJCQxLnJvdGF0ZSA9IG9wdHMucm90YXRlO1xyXG4gIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgbGV0IHRlbXBXaWR0aCA9IG9wdHMud2lkdGg7XHJcbiAgICBsZXQgdGVtcEhlaWdodCA9IG9wdHMuaGVpZ2h0O1xyXG4gICAgb3B0cy53aWR0aCA9IHRlbXBIZWlnaHQ7XHJcbiAgICBvcHRzLmhlaWdodCA9IHRlbXBXaWR0aDtcclxuICB9XHJcblxyXG4gIC8v6YCC6YWN6auY5YiG5bGPXHJcbiAgb3B0cy5wYWRkaW5nID0gb3B0cy5wYWRkaW5nID8gb3B0cy5wYWRkaW5nIDogY29uZmlnJCQxLnBhZGRpbmc7XHJcbiAgY29uZmlnJCQxLnlBeGlzV2lkdGggPSBjb25maWcueUF4aXNXaWR0aCAqIG9wdHMucGl4O1xyXG4gIGNvbmZpZyQkMS54QXhpc0hlaWdodCA9IGNvbmZpZy54QXhpc0hlaWdodCAqIG9wdHMucGl4O1xyXG4gIGlmIChvcHRzLmVuYWJsZVNjcm9sbCAmJiBvcHRzLnhBeGlzLnNjcm9sbFNob3cpIHtcclxuICAgIGNvbmZpZyQkMS54QXhpc0hlaWdodCArPSA2ICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIGNvbmZpZyQkMS54QXhpc0xpbmVIZWlnaHQgPSBjb25maWcueEF4aXNMaW5lSGVpZ2h0ICogb3B0cy5waXg7XHJcbiAgY29uZmlnJCQxLmZvbnRTaXplID0gb3B0cy5mb250U2l6ZSAqIG9wdHMucGl4O1xyXG4gIGNvbmZpZyQkMS50aXRsZUZvbnRTaXplID0gY29uZmlnLnRpdGxlRm9udFNpemUgKiBvcHRzLnBpeDtcclxuICBjb25maWckJDEuc3VidGl0bGVGb250U2l6ZSA9IGNvbmZpZy5zdWJ0aXRsZUZvbnRTaXplICogb3B0cy5waXg7XHJcbiAgY29uZmlnJCQxLnRvb2xUaXBQYWRkaW5nID0gY29uZmlnLnRvb2xUaXBQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgY29uZmlnJCQxLnRvb2xUaXBMaW5lSGVpZ2h0ID0gY29uZmlnLnRvb2xUaXBMaW5lSGVpZ2h0ICogb3B0cy5waXg7XHJcbiAgY29uZmlnJCQxLmNvbHVtZVBhZGRpbmcgPSBjb25maWcuY29sdW1lUGFkZGluZyAqIG9wdHMucGl4O1xyXG4gIC8vdGhpcy5jb250ZXh0ID0gb3B0cy5jb250ZXh0ID8gb3B0cy5jb250ZXh0IDogdW5pLmNyZWF0ZUNhbnZhc0NvbnRleHQob3B0cy5jYW52YXNJZCwgb3B0cy4kdGhpcyk7XHJcbiAgLy92Mi4w54mI5pys5ZCO6ZyA6KaB6Ieq6KGM6I635Y+WY29udGV4dOW5tuS8oOWFpW9wdHPov5vooYzliJ3lp4vljJbvvIzov5nkuYjlgZrmmK/kuLrkuobnoa7kv511Q2hhcnRz5Y+v5Lul6Leo5pu05aSa56uv5L2/55So77yM5bm25L+d6K+B5LqG6Ieq5a6a5LmJ57uE5Lu2dGhpc+WunuS+i+S4jeiiq+W+queOr+W1jOWll+OAguWmguaenOaCqOinieW+l+S4jeS+v+ivt+WPlua2iOS4iumdouazqOmHiu+8jOmHh+eUqHYxLjDniYjmnKznmoTmlrnlvI/kvb/nlKjvvIzlr7nmraTnu5nmgqjluKbmnaXnmoTkuI3kvr/mlazor7fosIXop6PvvIFcclxuICBpZighb3B0cy5jb250ZXh0KXtcclxuICAgIHRocm93IG5ldyBFcnJvcignW3VDaGFydHNdIOacquiOt+WPluWIsGNvbnRleHTvvIHms6jmhI/vvJp2Mi4w54mI5pys5ZCO77yM6ZyA6KaB6Ieq6KGM6I635Y+WY2FudmFz55qE57uY5Zu+5LiK5LiL5paH5bm25Lyg5YWlb3B0cy5jb250ZXh077yBJyk7XHJcbiAgfVxyXG4gIHRoaXMuY29udGV4dCA9IG9wdHMuY29udGV4dDtcclxuICBpZiAoIXRoaXMuY29udGV4dC5zZXRUZXh0QWxpZ24pIHtcclxuICAgIHRoaXMuY29udGV4dC5zZXRTdHJva2VTdHlsZSA9IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3Ryb2tlU3R5bGUgPSBlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0LnNldExpbmVXaWR0aCA9IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubGluZVdpZHRoID0gZTtcclxuICAgIH1cclxuICAgIHRoaXMuY29udGV4dC5zZXRMaW5lQ2FwID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5saW5lQ2FwID0gZTtcclxuICAgIH1cclxuICAgIHRoaXMuY29udGV4dC5zZXRGb250U2l6ZSA9IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZm9udCA9IGUgKyBcInB4IHNhbnMtc2VyaWZcIjtcclxuICAgIH1cclxuICAgIHRoaXMuY29udGV4dC5zZXRGaWxsU3R5bGUgPSBmdW5jdGlvbihlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpbGxTdHlsZSA9IGU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnRleHQuc2V0VGV4dEFsaWduID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy50ZXh0QWxpZ24gPSBlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0LmRyYXcgPSBmdW5jdGlvbigpIHt9XHJcbiAgfVxyXG4gIC8v5YW85a65TlZVRXNldExpbmVEYXNoXHJcbiAgaWYoIXRoaXMuY29udGV4dC5zZXRMaW5lRGFzaCl7XHJcbiAgICB0aGlzLmNvbnRleHQuc2V0TGluZURhc2ggPSBmdW5jdGlvbihlKSB7fVxyXG4gIH1cclxuICBvcHRzLmNoYXJ0RGF0YSA9IHt9O1xyXG4gIHRoaXMudWV2ZW50ID0gbmV3IHVDaGFydHNFdmVudCgpO1xyXG4gIHRoaXMuc2Nyb2xsT3B0aW9uID0ge1xyXG4gICAgY3VycmVudE9mZnNldDogMCxcclxuICAgIHN0YXJ0VG91Y2hYOiAwLFxyXG4gICAgZGlzdGFuY2U6IDAsXHJcbiAgICBsYXN0TW92ZVRpbWU6IDBcclxuICB9O1xyXG4gIHRoaXMub3B0cyA9IG9wdHM7XHJcbiAgdGhpcy5jb25maWcgPSBjb25maWckJDE7XHJcbiAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgY29uZmlnJCQxLCB0aGlzLmNvbnRleHQpO1xyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUudXBkYXRlRGF0YSA9IGZ1bmN0aW9uKCkge1xyXG4gIGxldCBkYXRhID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcclxuICB0aGlzLm9wdHMgPSBhc3NpZ24oe30sIHRoaXMub3B0cywgZGF0YSk7XHJcbiAgdGhpcy5vcHRzLnVwZGF0ZURhdGEgPSB0cnVlO1xyXG4gIGxldCBzY3JvbGxQb3NpdGlvbiA9IGRhdGEuc2Nyb2xsUG9zaXRpb24gfHwgJ2N1cnJlbnQnO1xyXG4gIHN3aXRjaCAoc2Nyb2xsUG9zaXRpb24pIHtcclxuICAgIGNhc2UgJ2N1cnJlbnQnOlxyXG4gICAgICAvL3RoaXMub3B0cy5fc2Nyb2xsRGlzdGFuY2VfID0gdGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldDtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgdGhpcy5vcHRzLl9zY3JvbGxEaXN0YW5jZV8gPSAwO1xyXG4gICAgICB0aGlzLnNjcm9sbE9wdGlvbiA9IHtcclxuICAgICAgICBjdXJyZW50T2Zmc2V0OiAwLFxyXG4gICAgICAgIHN0YXJ0VG91Y2hYOiAwLFxyXG4gICAgICAgIGRpc3RhbmNlOiAwLFxyXG4gICAgICAgIGxhc3RNb3ZlVGltZTogMFxyXG4gICAgICB9O1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3JpZ2h0JzpcclxuICAgICAgbGV0IF9jYWxZQXhpc0RhdGEgPSBjYWxZQXhpc0RhdGEodGhpcy5vcHRzLnNlcmllcywgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KSwgeUF4aXNXaWR0aCA9IF9jYWxZQXhpc0RhdGEueUF4aXNXaWR0aDtcclxuICAgICAgdGhpcy5jb25maWcueUF4aXNXaWR0aCA9IHlBeGlzV2lkdGg7XHJcbiAgICAgIGxldCBvZmZzZXRMZWZ0ID0gMDtcclxuICAgICAgbGV0IF9nZXRYQXhpc1BvaW50czAgPSBnZXRYQXhpc1BvaW50cyh0aGlzLm9wdHMuY2F0ZWdvcmllcywgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZyksIHhBeGlzUG9pbnRzID0gX2dldFhBeGlzUG9pbnRzMC54QXhpc1BvaW50cyxcclxuICAgICAgICBzdGFydFggPSBfZ2V0WEF4aXNQb2ludHMwLnN0YXJ0WCxcclxuICAgICAgICBlbmRYID0gX2dldFhBeGlzUG9pbnRzMC5lbmRYLFxyXG4gICAgICAgIGVhY2hTcGFjaW5nID0gX2dldFhBeGlzUG9pbnRzMC5lYWNoU3BhY2luZztcclxuICAgICAgbGV0IHRvdGFsV2lkdGggPSBlYWNoU3BhY2luZyAqICh4QXhpc1BvaW50cy5sZW5ndGggLSAxKTtcclxuICAgICAgbGV0IHNjcmVlbldpZHRoID0gZW5kWCAtIHN0YXJ0WDtcclxuICAgICAgb2Zmc2V0TGVmdCA9IHNjcmVlbldpZHRoIC0gdG90YWxXaWR0aDtcclxuICAgICAgdGhpcy5zY3JvbGxPcHRpb24gPSB7XHJcbiAgICAgICAgY3VycmVudE9mZnNldDogb2Zmc2V0TGVmdCxcclxuICAgICAgICBzdGFydFRvdWNoWDogb2Zmc2V0TGVmdCxcclxuICAgICAgICBkaXN0YW5jZTogMCxcclxuICAgICAgICBsYXN0TW92ZVRpbWU6IDBcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5vcHRzLl9zY3JvbGxEaXN0YW5jZV8gPSBvZmZzZXRMZWZ0O1xyXG4gICAgICBicmVhaztcclxuICB9XHJcbiAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIHRoaXMub3B0cy50eXBlLCB0aGlzLm9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuem9vbSA9IGZ1bmN0aW9uKCkge1xyXG4gIHZhciB2YWwgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHRoaXMub3B0cy54QXhpcy5pdGVtQ291bnQ7XHJcbiAgaWYgKHRoaXMub3B0cy5lbmFibGVTY3JvbGwgIT09IHRydWUpIHtcclxuICAgIGNvbnNvbGUubG9nKCdbdUNoYXJ0c10g6K+35ZCv55So5rua5Yqo5p2h5ZCO5L2/55SoJylcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgLy/lvZPliY3lsY/luZXkuK3pl7TngrlcclxuICBsZXQgY2VudGVyUG9pbnQgPSBNYXRoLnJvdW5kKE1hdGguYWJzKHRoaXMuc2Nyb2xsT3B0aW9uLmN1cnJlbnRPZmZzZXQpIC8gdGhpcy5vcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZykgKyBNYXRoLnJvdW5kKHRoaXMub3B0cy54QXhpcy5pdGVtQ291bnQgLyAyKTtcclxuICB0aGlzLm9wdHMuYW5pbWF0aW9uID0gZmFsc2U7XHJcbiAgdGhpcy5vcHRzLnhBeGlzLml0ZW1Db3VudCA9IHZhbC5pdGVtQ291bnQ7XHJcbiAgLy/ph43mlrDorqHnrpd46L205YGP56e76Led56a7XHJcbiAgbGV0IF9jYWxZQXhpc0RhdGEgPSBjYWxZQXhpc0RhdGEodGhpcy5vcHRzLnNlcmllcywgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KSxcclxuICAgIHlBeGlzV2lkdGggPSBfY2FsWUF4aXNEYXRhLnlBeGlzV2lkdGg7XHJcbiAgdGhpcy5jb25maWcueUF4aXNXaWR0aCA9IHlBeGlzV2lkdGg7XHJcbiAgbGV0IG9mZnNldExlZnQgPSAwO1xyXG4gIGxldCBfZ2V0WEF4aXNQb2ludHMwID0gZ2V0WEF4aXNQb2ludHModGhpcy5vcHRzLmNhdGVnb3JpZXMsIHRoaXMub3B0cywgdGhpcy5jb25maWcpLFxyXG4gICAgeEF4aXNQb2ludHMgPSBfZ2V0WEF4aXNQb2ludHMwLnhBeGlzUG9pbnRzLFxyXG4gICAgc3RhcnRYID0gX2dldFhBeGlzUG9pbnRzMC5zdGFydFgsXHJcbiAgICBlbmRYID0gX2dldFhBeGlzUG9pbnRzMC5lbmRYLFxyXG4gICAgZWFjaFNwYWNpbmcgPSBfZ2V0WEF4aXNQb2ludHMwLmVhY2hTcGFjaW5nO1xyXG4gIGxldCBjZW50ZXJMZWZ0ID0gZWFjaFNwYWNpbmcgKiBjZW50ZXJQb2ludDtcclxuICBsZXQgc2NyZWVuV2lkdGggPSBlbmRYIC0gc3RhcnRYO1xyXG4gIGxldCBNYXhMZWZ0ID0gc2NyZWVuV2lkdGggLSBlYWNoU3BhY2luZyAqICh4QXhpc1BvaW50cy5sZW5ndGggLSAxKTtcclxuICBvZmZzZXRMZWZ0ID0gc2NyZWVuV2lkdGggLyAyIC0gY2VudGVyTGVmdDtcclxuICBpZiAob2Zmc2V0TGVmdCA+IDApIHtcclxuICAgIG9mZnNldExlZnQgPSAwO1xyXG4gIH1cclxuICBpZiAob2Zmc2V0TGVmdCA8IE1heExlZnQpIHtcclxuICAgIG9mZnNldExlZnQgPSBNYXhMZWZ0O1xyXG4gIH1cclxuICB0aGlzLnNjcm9sbE9wdGlvbiA9IHtcclxuICAgIGN1cnJlbnRPZmZzZXQ6IG9mZnNldExlZnQsXHJcbiAgICBzdGFydFRvdWNoWDogb2Zmc2V0TGVmdCxcclxuICAgIGRpc3RhbmNlOiAwLFxyXG4gICAgbGFzdE1vdmVUaW1lOiAwXHJcbiAgfTtcclxuICB0aGlzLm9wdHMuX3Njcm9sbERpc3RhbmNlXyA9IG9mZnNldExlZnQ7XHJcbiAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIHRoaXMub3B0cy50eXBlLCB0aGlzLm9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc3RvcEFuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xyXG4gIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgJiYgdGhpcy5hbmltYXRpb25JbnN0YW5jZS5zdG9wKCk7XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcclxuICB0aGlzLnVldmVudC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLmRlbEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlKSB7XHJcbiAgdGhpcy51ZXZlbnQuZGVsRXZlbnRMaXN0ZW5lcih0eXBlKTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLmdldEN1cnJlbnREYXRhSW5kZXggPSBmdW5jdGlvbihlKSB7XHJcbiAgdmFyIHRvdWNoZXMgPSBudWxsO1xyXG4gIGlmIChlLmNoYW5nZWRUb3VjaGVzKSB7XHJcbiAgICB0b3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9IGVsc2Uge1xyXG4gICAgdG91Y2hlcyA9IGUubXAuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfVxyXG4gIGlmICh0b3VjaGVzKSB7XHJcbiAgICBsZXQgX3RvdWNoZXMkID0gZ2V0VG91Y2hlcyh0b3VjaGVzLCB0aGlzLm9wdHMsIGUpO1xyXG4gICAgaWYgKHRoaXMub3B0cy50eXBlID09PSAncGllJyB8fCB0aGlzLm9wdHMudHlwZSA9PT0gJ3JpbmcnKSB7XHJcbiAgICAgIHJldHVybiBmaW5kUGllQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEucGllRGF0YSwgdGhpcy5vcHRzKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdyb3NlJykge1xyXG4gICAgICByZXR1cm4gZmluZFJvc2VDaGFydEN1cnJlbnRJbmRleCh7XHJcbiAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgeTogX3RvdWNoZXMkLnlcclxuICAgICAgfSwgdGhpcy5vcHRzLmNoYXJ0RGF0YS5waWVEYXRhLCB0aGlzLm9wdHMpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ3JhZGFyJykge1xyXG4gICAgICByZXR1cm4gZmluZFJhZGFyQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEucmFkYXJEYXRhLCB0aGlzLm9wdHMuY2F0ZWdvcmllcy5sZW5ndGgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ2Z1bm5lbCcpIHtcclxuICAgICAgcmV0dXJuIGZpbmRGdW5uZWxDaGFydEN1cnJlbnRJbmRleCh7XHJcbiAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgeTogX3RvdWNoZXMkLnlcclxuICAgICAgfSwgdGhpcy5vcHRzLmNoYXJ0RGF0YS5mdW5uZWxEYXRhKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdtYXAnKSB7XHJcbiAgICAgIHJldHVybiBmaW5kTWFwQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy50eXBlID09PSAnd29yZCcpIHtcclxuICAgICAgcmV0dXJuIGZpbmRXb3JkQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEud29yZENsb3VkRGF0YSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy50eXBlID09PSAnYmFyJykge1xyXG4gICAgICByZXR1cm4gZmluZEJhckNoYXJ0Q3VycmVudEluZGV4KHtcclxuICAgICAgICB4OiBfdG91Y2hlcyQueCxcclxuICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICB9LCB0aGlzLm9wdHMuY2hhcnREYXRhLmNhbFBvaW50cywgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgTWF0aC5hYnModGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZpbmRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEuY2FsUG9pbnRzLCB0aGlzLm9wdHMsIHRoaXMuY29uZmlnLCBNYXRoLmFicyh0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiAtMTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLmdldExlZ2VuZERhdGFJbmRleCA9IGZ1bmN0aW9uKGUpIHtcclxuICB2YXIgdG91Y2hlcyA9IG51bGw7XHJcbiAgaWYgKGUuY2hhbmdlZFRvdWNoZXMpIHtcclxuICAgIHRvdWNoZXMgPSBlLmNoYW5nZWRUb3VjaGVzWzBdO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0b3VjaGVzID0gZS5tcC5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9XHJcbiAgaWYgKHRvdWNoZXMpIHtcclxuICAgIGxldCBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgICByZXR1cm4gZmluZExlZ2VuZEluZGV4KHtcclxuICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICB9LCB0aGlzLm9wdHMuY2hhcnREYXRhLmxlZ2VuZERhdGEpO1xyXG4gIH1cclxuICByZXR1cm4gLTE7XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS50b3VjaExlZ2VuZCA9IGZ1bmN0aW9uKGUpIHtcclxuICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcclxuICB2YXIgdG91Y2hlcyA9IG51bGw7XHJcbiAgaWYgKGUuY2hhbmdlZFRvdWNoZXMpIHtcclxuICAgIHRvdWNoZXMgPSBlLmNoYW5nZWRUb3VjaGVzWzBdO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0b3VjaGVzID0gZS5tcC5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9XHJcbiAgaWYgKHRvdWNoZXMpIHtcclxuICAgIHZhciBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLmdldExlZ2VuZERhdGFJbmRleChlKTtcclxuICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdHMudHlwZSA9PSAnY2FuZGxlJykge1xyXG4gICAgICAgIHRoaXMub3B0cy5zZXJpZXNNQVtpbmRleF0uc2hvdyA9ICF0aGlzLm9wdHMuc2VyaWVzTUFbaW5kZXhdLnNob3c7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vcHRzLnNlcmllc1tpbmRleF0uc2hvdyA9ICF0aGlzLm9wdHMuc2VyaWVzW2luZGV4XS5zaG93O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3B0cy5hbmltYXRpb24gPSBvcHRpb24uYW5pbWF0aW9uID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICB0aGlzLm9wdHMuX3Njcm9sbERpc3RhbmNlXyA9IHRoaXMuc2Nyb2xsT3B0aW9uLmN1cnJlbnRPZmZzZXQ7XHJcbiAgICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCB0aGlzLm9wdHMudHlwZSwgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc2hvd1Rvb2xUaXAgPSBmdW5jdGlvbihlKSB7XHJcbiAgdmFyIG9wdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XHJcbiAgdmFyIHRvdWNoZXMgPSBudWxsO1xyXG4gIGlmIChlLmNoYW5nZWRUb3VjaGVzKSB7XHJcbiAgICB0b3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9IGVsc2Uge1xyXG4gICAgdG91Y2hlcyA9IGUubXAuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfVxyXG4gIGlmICghdG91Y2hlcykge1xyXG4gICAgY29uc29sZS5sb2coXCJbdUNoYXJ0c10g5pyq6I635Y+W5YiwZXZlbnTlnZDmoIfkv6Hmga9cIik7XHJcbiAgfVxyXG4gIHZhciBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgdmFyIGN1cnJlbnRPZmZzZXQgPSB0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0O1xyXG4gIHZhciBvcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtcclxuICAgIF9zY3JvbGxEaXN0YW5jZV86IGN1cnJlbnRPZmZzZXQsXHJcbiAgICBhbmltYXRpb246IGZhbHNlXHJcbiAgfSk7XHJcbiAgaWYgKHRoaXMub3B0cy50eXBlID09PSAnbGluZScgfHwgdGhpcy5vcHRzLnR5cGUgPT09ICdhcmVhJyB8fCB0aGlzLm9wdHMudHlwZSA9PT0gJ2NvbHVtbicgfHwgdGhpcy5vcHRzLnR5cGUgPT09ICdzY2F0dGVyJyB8fCB0aGlzLm9wdHMudHlwZSA9PT0gJ2J1YmJsZScpIHtcclxuICAgIHZhciBjdXJyZW50ID0gdGhpcy5nZXRDdXJyZW50RGF0YUluZGV4KGUpO1xyXG4gICAgdmFyIGluZGV4ID0gb3B0aW9uLmluZGV4ID09IHVuZGVmaW5lZCA/IGN1cnJlbnQuaW5kZXggOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSB8fCBpbmRleC5sZW5ndGg+MCkge1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGdldFNlcmllc0RhdGFJdGVtKHRoaXMub3B0cy5zZXJpZXMsIGluZGV4LCBjdXJyZW50Lmdyb3VwKTtcclxuICAgICAgaWYgKHNlcmllc0RhdGEubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgdmFyIF9nZXRUb29sVGlwRGF0YSA9IGdldFRvb2xUaXBEYXRhKHNlcmllc0RhdGEsIHRoaXMub3B0cywgaW5kZXgsIGN1cnJlbnQuZ3JvdXAsIHRoaXMub3B0cy5jYXRlZ29yaWVzLCBvcHRpb24pLFxyXG4gICAgICAgICAgdGV4dExpc3QgPSBfZ2V0VG9vbFRpcERhdGEudGV4dExpc3QsXHJcbiAgICAgICAgICBvZmZzZXQgPSBfZ2V0VG9vbFRpcERhdGEub2Zmc2V0O1xyXG4gICAgICAgIG9mZnNldC55ID0gX3RvdWNoZXMkLnk7XHJcbiAgICAgICAgb3B0cy50b29sdGlwID0ge1xyXG4gICAgICAgICAgdGV4dExpc3Q6IG9wdGlvbi50ZXh0TGlzdCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gIH1cclxuICBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdiYXInKSB7XHJcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChlKTtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyBjdXJyZW50LmluZGV4IDogb3B0aW9uLmluZGV4O1xyXG4gICAgaWYgKGluZGV4ID4gLTEgfHwgaW5kZXgubGVuZ3RoPjApIHtcclxuICAgICAgdmFyIHNlcmllc0RhdGEgPSBnZXRTZXJpZXNEYXRhSXRlbSh0aGlzLm9wdHMuc2VyaWVzLCBpbmRleCwgY3VycmVudC5ncm91cCk7XHJcbiAgICAgIGlmIChzZXJpZXNEYXRhLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICAgIHZhciBfZ2V0VG9vbFRpcERhdGEgPSBnZXRUb29sVGlwRGF0YShzZXJpZXNEYXRhLCB0aGlzLm9wdHMsIGluZGV4LCBjdXJyZW50Lmdyb3VwLCB0aGlzLm9wdHMuY2F0ZWdvcmllcywgb3B0aW9uKSxcclxuICAgICAgICAgIHRleHRMaXN0ID0gX2dldFRvb2xUaXBEYXRhLnRleHRMaXN0LFxyXG4gICAgICAgICAgb2Zmc2V0ID0gX2dldFRvb2xUaXBEYXRhLm9mZnNldDtcclxuICAgICAgICBvZmZzZXQueCA9IF90b3VjaGVzJC54O1xyXG4gICAgICAgIG9wdHMudG9vbHRpcCA9IHtcclxuICAgICAgICAgIHRleHRMaXN0OiBvcHRpb24udGV4dExpc3QgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi50ZXh0TGlzdCA6IHRleHRMaXN0LFxyXG4gICAgICAgICAgb2Zmc2V0OiBvcHRpb24ub2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24ub2Zmc2V0IDogb2Zmc2V0LFxyXG4gICAgICAgICAgb3B0aW9uOiBvcHRpb24sXHJcbiAgICAgICAgICBpbmRleDogaW5kZXhcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgb3B0cy50eXBlLCBvcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxuICB9XHJcbiAgaWYgKHRoaXMub3B0cy50eXBlID09PSAnbWl4Jykge1xyXG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSk7XHJcbiAgICB2YXIgaW5kZXggPSBvcHRpb24uaW5kZXggPT0gdW5kZWZpbmVkID8gY3VycmVudC5pbmRleCA6IG9wdGlvbi5pbmRleDtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gdGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldDtcclxuICAgICAgdmFyIG9wdHMgPSBhc3NpZ24oe30sIHRoaXMub3B0cywge1xyXG4gICAgICAgIF9zY3JvbGxEaXN0YW5jZV86IGN1cnJlbnRPZmZzZXQsXHJcbiAgICAgICAgYW5pbWF0aW9uOiBmYWxzZVxyXG4gICAgICB9KTtcclxuICAgICAgdmFyIHNlcmllc0RhdGEgPSBnZXRTZXJpZXNEYXRhSXRlbSh0aGlzLm9wdHMuc2VyaWVzLCBpbmRleCk7XHJcbiAgICAgIGlmIChzZXJpZXNEYXRhLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICAgIHZhciBfZ2V0TWl4VG9vbFRpcERhdGEgPSBnZXRNaXhUb29sVGlwRGF0YShzZXJpZXNEYXRhLCB0aGlzLm9wdHMsIGluZGV4LCB0aGlzLm9wdHMuY2F0ZWdvcmllcywgb3B0aW9uKSxcclxuICAgICAgICAgIHRleHRMaXN0ID0gX2dldE1peFRvb2xUaXBEYXRhLnRleHRMaXN0LFxyXG4gICAgICAgICAgb2Zmc2V0ID0gX2dldE1peFRvb2xUaXBEYXRhLm9mZnNldDtcclxuICAgICAgICBvZmZzZXQueSA9IF90b3VjaGVzJC55O1xyXG4gICAgICAgIG9wdHMudG9vbHRpcCA9IHtcclxuICAgICAgICAgIHRleHRMaXN0OiBvcHRpb24udGV4dExpc3QgPyBvcHRpb24udGV4dExpc3QgOiB0ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldDogb3B0aW9uLm9mZnNldCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLm9mZnNldCA6IG9mZnNldCxcclxuICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxyXG4gICAgICAgICAgaW5kZXg6IGluZGV4XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgfVxyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ2NhbmRsZScpIHtcclxuICAgIHZhciBjdXJyZW50ID0gdGhpcy5nZXRDdXJyZW50RGF0YUluZGV4KGUpO1xyXG4gICAgdmFyIGluZGV4ID0gb3B0aW9uLmluZGV4ID09IHVuZGVmaW5lZCA/IGN1cnJlbnQuaW5kZXggOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgY3VycmVudE9mZnNldCA9IHRoaXMuc2Nyb2xsT3B0aW9uLmN1cnJlbnRPZmZzZXQ7XHJcbiAgICAgIHZhciBvcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtcclxuICAgICAgICBfc2Nyb2xsRGlzdGFuY2VfOiBjdXJyZW50T2Zmc2V0LFxyXG4gICAgICAgIGFuaW1hdGlvbjogZmFsc2VcclxuICAgICAgfSk7XHJcbiAgICAgIHZhciBzZXJpZXNEYXRhID0gZ2V0U2VyaWVzRGF0YUl0ZW0odGhpcy5vcHRzLnNlcmllcywgaW5kZXgpO1xyXG4gICAgICBpZiAoc2VyaWVzRGF0YS5sZW5ndGggIT09IDApIHtcclxuICAgICAgICB2YXIgX2dldFRvb2xUaXBEYXRhID0gZ2V0Q2FuZGxlVG9vbFRpcERhdGEodGhpcy5vcHRzLnNlcmllc1swXS5kYXRhLCBzZXJpZXNEYXRhLCB0aGlzLm9wdHMsIGluZGV4LCB0aGlzLm9wdHMuY2F0ZWdvcmllcywgdGhpcy5vcHRzLmV4dHJhLmNhbmRsZSwgb3B0aW9uKSxcclxuICAgICAgICAgIHRleHRMaXN0ID0gX2dldFRvb2xUaXBEYXRhLnRleHRMaXN0LFxyXG4gICAgICAgICAgb2Zmc2V0ID0gX2dldFRvb2xUaXBEYXRhLm9mZnNldDtcclxuICAgICAgICBvZmZzZXQueSA9IF90b3VjaGVzJC55O1xyXG4gICAgICAgIG9wdHMudG9vbHRpcCA9IHtcclxuICAgICAgICAgIHRleHRMaXN0OiBvcHRpb24udGV4dExpc3QgPyBvcHRpb24udGV4dExpc3QgOiB0ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldDogb3B0aW9uLm9mZnNldCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLm9mZnNldCA6IG9mZnNldCxcclxuICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxyXG4gICAgICAgICAgaW5kZXg6IGluZGV4XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgfVxyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ3BpZScgfHwgdGhpcy5vcHRzLnR5cGUgPT09ICdyaW5nJyB8fCB0aGlzLm9wdHMudHlwZSA9PT0gJ3Jvc2UnIHx8IHRoaXMub3B0cy50eXBlID09PSAnZnVubmVsJykge1xyXG4gICAgdmFyIGluZGV4ID0gb3B0aW9uLmluZGV4ID09IHVuZGVmaW5lZCA/IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChlKSA6IG9wdGlvbi5pbmRleDtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHZhciBvcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIHthbmltYXRpb246IGZhbHNlfSk7XHJcbiAgICAgIHZhciBzZXJpZXNEYXRhID0gYXNzaWduKHt9LCBvcHRzLl9zZXJpZXNfW2luZGV4XSk7XHJcbiAgICAgIHZhciB0ZXh0TGlzdCA9IFt7XHJcbiAgICAgICAgdGV4dDogb3B0aW9uLmZvcm1hdHRlciA/IG9wdGlvbi5mb3JtYXR0ZXIoc2VyaWVzRGF0YSwgdW5kZWZpbmVkLCBpbmRleCwgb3B0cykgOiBzZXJpZXNEYXRhLm5hbWUgKyAnOiAnICsgc2VyaWVzRGF0YS5kYXRhLFxyXG4gICAgICAgIGNvbG9yOiBzZXJpZXNEYXRhLmNvbG9yXHJcbiAgICAgIH1dO1xyXG4gICAgICB2YXIgb2Zmc2V0ID0ge1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH07XHJcbiAgICAgIG9wdHMudG9vbHRpcCA9IHtcclxuICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgb2Zmc2V0OiBvcHRpb24ub2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24ub2Zmc2V0IDogb2Zmc2V0LFxyXG4gICAgICAgIG9wdGlvbjogb3B0aW9uLFxyXG4gICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgfVxyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ21hcCcpIHtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSkgOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7YW5pbWF0aW9uOiBmYWxzZX0pO1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLnNlcmllc1tpbmRleF0pO1xyXG4gICAgICBzZXJpZXNEYXRhLm5hbWUgPSBzZXJpZXNEYXRhLnByb3BlcnRpZXMubmFtZVxyXG4gICAgICB2YXIgdGV4dExpc3QgPSBbe1xyXG4gICAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKHNlcmllc0RhdGEsIHVuZGVmaW5lZCwgaW5kZXgsIHRoaXMub3B0cykgOiBzZXJpZXNEYXRhLm5hbWUsXHJcbiAgICAgICAgY29sb3I6IHNlcmllc0RhdGEuY29sb3JcclxuICAgICAgfV07XHJcbiAgICAgIHZhciBvZmZzZXQgPSB7XHJcbiAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgeTogX3RvdWNoZXMkLnlcclxuICAgICAgfTtcclxuICAgICAgb3B0cy50b29sdGlwID0ge1xyXG4gICAgICAgIHRleHRMaXN0OiBvcHRpb24udGV4dExpc3QgPyBvcHRpb24udGV4dExpc3QgOiB0ZXh0TGlzdCxcclxuICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgb3B0aW9uOiBvcHRpb24sXHJcbiAgICAgICAgaW5kZXg6IGluZGV4XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBvcHRzLnVwZGF0ZURhdGEgPSBmYWxzZTtcclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gIH1cclxuICBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICd3b3JkJykge1xyXG4gICAgdmFyIGluZGV4ID0gb3B0aW9uLmluZGV4ID09IHVuZGVmaW5lZCA/IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChlKSA6IG9wdGlvbi5pbmRleDtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHZhciBvcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIHthbmltYXRpb246IGZhbHNlfSk7XHJcbiAgICAgIHZhciBzZXJpZXNEYXRhID0gYXNzaWduKHt9LCB0aGlzLm9wdHMuc2VyaWVzW2luZGV4XSk7XHJcbiAgICAgIHZhciB0ZXh0TGlzdCA9IFt7XHJcbiAgICAgICAgdGV4dDogb3B0aW9uLmZvcm1hdHRlciA/IG9wdGlvbi5mb3JtYXR0ZXIoc2VyaWVzRGF0YSwgdW5kZWZpbmVkLCBpbmRleCwgdGhpcy5vcHRzKSA6IHNlcmllc0RhdGEubmFtZSxcclxuICAgICAgICBjb2xvcjogc2VyaWVzRGF0YS5jb2xvclxyXG4gICAgICB9XTtcclxuICAgICAgdmFyIG9mZnNldCA9IHtcclxuICAgICAgICB4OiBfdG91Y2hlcyQueCxcclxuICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICB9O1xyXG4gICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgdGV4dExpc3Q6IG9wdGlvbi50ZXh0TGlzdCA/IG9wdGlvbi50ZXh0TGlzdCA6IHRleHRMaXN0LFxyXG4gICAgICAgIG9mZnNldDogb3B0aW9uLm9mZnNldCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLm9mZnNldCA6IG9mZnNldCxcclxuICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICBpbmRleDogaW5kZXhcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIG9wdHMudXBkYXRlRGF0YSA9IGZhbHNlO1xyXG4gICAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgfVxyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ3JhZGFyJykge1xyXG4gICAgdmFyIGluZGV4ID0gb3B0aW9uLmluZGV4ID09IHVuZGVmaW5lZCA/IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChlKSA6IG9wdGlvbi5pbmRleDtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHZhciBvcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIHthbmltYXRpb246IGZhbHNlfSk7XHJcbiAgICAgIHZhciBzZXJpZXNEYXRhID0gZ2V0U2VyaWVzRGF0YUl0ZW0odGhpcy5vcHRzLnNlcmllcywgaW5kZXgpO1xyXG4gICAgICBpZiAoc2VyaWVzRGF0YS5sZW5ndGggIT09IDApIHtcclxuICAgICAgICB2YXIgdGV4dExpc3QgPSBzZXJpZXNEYXRhLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGV4dDogb3B0aW9uLmZvcm1hdHRlciA/IG9wdGlvbi5mb3JtYXR0ZXIoaXRlbSwgdGhpcy5vcHRzLmNhdGVnb3JpZXNbaW5kZXhdLCBpbmRleCwgdGhpcy5vcHRzKSA6IGl0ZW0ubmFtZSArICc6ICcgKyBpdGVtLmRhdGEsXHJcbiAgICAgICAgICAgIGNvbG9yOiBpdGVtLmNvbG9yXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHZhciBvZmZzZXQgPSB7XHJcbiAgICAgICAgICB4OiBfdG91Y2hlcyQueCxcclxuICAgICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgICAgfTtcclxuICAgICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gIH1cclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uKGRpc3RhbmNlKSB7XHJcbiAgdGhpcy5zY3JvbGxPcHRpb24gPSB7XHJcbiAgICBjdXJyZW50T2Zmc2V0OiBkaXN0YW5jZSxcclxuICAgIHN0YXJ0VG91Y2hYOiBkaXN0YW5jZSxcclxuICAgIGRpc3RhbmNlOiAwLFxyXG4gICAgbGFzdE1vdmVUaW1lOiAwXHJcbiAgfTtcclxuICBsZXQgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7XHJcbiAgICBfc2Nyb2xsRGlzdGFuY2VfOiBkaXN0YW5jZSxcclxuICAgIGFuaW1hdGlvbjogZmFsc2VcclxuICB9KTtcclxuICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgdGhpcy5vcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc2Nyb2xsU3RhcnQgPSBmdW5jdGlvbihlKSB7XHJcbiAgdmFyIHRvdWNoZXMgPSBudWxsO1xyXG4gIGlmIChlLmNoYW5nZWRUb3VjaGVzKSB7XHJcbiAgICB0b3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9IGVsc2Uge1xyXG4gICAgdG91Y2hlcyA9IGUubXAuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfVxyXG4gIHZhciBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgaWYgKHRvdWNoZXMgJiYgdGhpcy5vcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgdGhpcy5zY3JvbGxPcHRpb24uc3RhcnRUb3VjaFggPSBfdG91Y2hlcyQueDtcclxuICB9XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS5zY3JvbGwgPSBmdW5jdGlvbihlKSB7XHJcbiAgaWYgKHRoaXMuc2Nyb2xsT3B0aW9uLmxhc3RNb3ZlVGltZSA9PT0gMCkge1xyXG4gICAgdGhpcy5zY3JvbGxPcHRpb24ubGFzdE1vdmVUaW1lID0gRGF0ZS5ub3coKTtcclxuICB9XHJcbiAgbGV0IExpbWl0ID0gdGhpcy5vcHRzLnRvdWNoTW92ZUxpbWl0IHx8IDYwO1xyXG4gIGxldCBjdXJyTW92ZVRpbWUgPSBEYXRlLm5vdygpO1xyXG4gIGxldCBkdXJhdGlvbiA9IGN1cnJNb3ZlVGltZSAtIHRoaXMuc2Nyb2xsT3B0aW9uLmxhc3RNb3ZlVGltZTtcclxuICBpZiAoZHVyYXRpb24gPCBNYXRoLmZsb29yKDEwMDAgLyBMaW1pdCkpIHJldHVybjtcclxuICB0aGlzLnNjcm9sbE9wdGlvbi5sYXN0TW92ZVRpbWUgPSBjdXJyTW92ZVRpbWU7XHJcbiAgdmFyIHRvdWNoZXMgPSBudWxsO1xyXG4gIGlmIChlLmNoYW5nZWRUb3VjaGVzKSB7XHJcbiAgICB0b3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9IGVsc2Uge1xyXG4gICAgdG91Y2hlcyA9IGUubXAuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfVxyXG4gIGlmICh0b3VjaGVzICYmIHRoaXMub3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIHZhciBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgICB2YXIgX2Rpc3RhbmNlO1xyXG4gICAgX2Rpc3RhbmNlID0gX3RvdWNoZXMkLnggLSB0aGlzLnNjcm9sbE9wdGlvbi5zdGFydFRvdWNoWDtcclxuICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gdGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldDtcclxuICAgIHZhciB2YWxpZERpc3RhbmNlID0gY2FsVmFsaWREaXN0YW5jZSh0aGlzLCBjdXJyZW50T2Zmc2V0ICsgX2Rpc3RhbmNlLCB0aGlzLm9wdHMuY2hhcnREYXRhLCB0aGlzLmNvbmZpZywgdGhpcy5vcHRzKTtcclxuICAgIHRoaXMuc2Nyb2xsT3B0aW9uLmRpc3RhbmNlID0gX2Rpc3RhbmNlID0gdmFsaWREaXN0YW5jZSAtIGN1cnJlbnRPZmZzZXQ7XHJcbiAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7XHJcbiAgICAgIF9zY3JvbGxEaXN0YW5jZV86IGN1cnJlbnRPZmZzZXQgKyBfZGlzdGFuY2UsXHJcbiAgICAgIGFuaW1hdGlvbjogZmFsc2VcclxuICAgIH0pO1xyXG5cdFx0dGhpcy5vcHRzID0gb3B0cztcclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQgKyBfZGlzdGFuY2U7XHJcbiAgfVxyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc2Nyb2xsRW5kID0gZnVuY3Rpb24oZSkge1xyXG4gIGlmICh0aGlzLm9wdHMuZW5hYmxlU2Nyb2xsID09PSB0cnVlKSB7XHJcbiAgICB2YXIgX3Njcm9sbE9wdGlvbiA9IHRoaXMuc2Nyb2xsT3B0aW9uLFxyXG4gICAgICBjdXJyZW50T2Zmc2V0ID0gX3Njcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0LFxyXG4gICAgICBkaXN0YW5jZSA9IF9zY3JvbGxPcHRpb24uZGlzdGFuY2U7XHJcbiAgICB0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0ID0gY3VycmVudE9mZnNldCArIGRpc3RhbmNlO1xyXG4gICAgdGhpcy5zY3JvbGxPcHRpb24uZGlzdGFuY2UgPSAwO1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHVDaGFydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///74\n");
/***/ }),
/* 75 */
/*!***********************************************************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js ***!
  \***********************************************************************************************************/
=======
eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; /*\r\n                                                                                                      * uCharts®\r\n                                                                                                      * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台\r\n                                                                                                      * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.\r\n                                                                                                      * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n                                                                                                      * 复制使用请保留本段注释,感谢支持开源!\r\n                                                                                                      * \r\n                                                                                                      * uCharts®官方网站\r\n                                                                                                      * https://www.uCharts.cn\r\n                                                                                                      * \r\n                                                                                                      * 开源地址:\r\n                                                                                                      * https://gitee.com/uCharts/uCharts\r\n                                                                                                      * \r\n                                                                                                      * uni-app插件市场地址:\r\n                                                                                                      * http://ext.dcloud.net.cn/plugin?id=271\r\n                                                                                                      * \r\n                                                                                                      */\n\n// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性\nvar color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];\n\n//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改\nvar formatDateTime = function formatDateTime(timeStamp, returnType) {\n  var date = new Date();\n  date.setTime(timeStamp * 1000);\n  var y = date.getFullYear();\n  var m = date.getMonth() + 1;\n  m = m < 10 ? '0' + m : m;\n  var d = date.getDate();\n  d = d < 10 ? '0' + d : d;\n  var h = date.getHours();\n  h = h < 10 ? '0' + h : h;\n  var minute = date.getMinutes();\n  var second = date.getSeconds();\n  minute = minute < 10 ? '0' + minute : minute;\n  second = second < 10 ? '0' + second : second;\n  if (returnType == 'full') {return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;}\n  if (returnType == 'y-m-d') {return y + '-' + m + '-' + d;}\n  if (returnType == 'h:m') {return h + ':' + minute;}\n  if (returnType == 'h:m:s') {return h + ':' + minute + ':' + second;}\n  return [y, m, d, h, minute, second];\n};\n\nvar cfu = {\n  //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可\n  \"type\": [\"pie\", \"ring\", \"rose\", \"word\", \"funnel\", \"map\", \"arcbar\", \"line\", \"column\", \"mount\", \"bar\", \"area\", \"radar\", \"gauge\", \"candle\", \"mix\", \"tline\", \"tarea\", \"scatter\", \"bubble\", \"demotype\"],\n  \"range\": [\"饼状图\", \"圆环图\", \"玫瑰图\", \"词云图\", \"漏斗图\", \"地图\", \"圆弧进度条\", \"折线图\", \"柱状图\", \"山峰图\", \"条状图\", \"区域图\", \"雷达图\", \"仪表盘\", \"K线图\", \"混合图\", \"时间轴折线\", \"时间轴区域\", \"散点图\", \"气泡图\", \"自定义类型\"],\n  //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的\"demotype\"\n  //自定义类型时需要注意\"tline\",\"tarea\",\"scatter\",\"bubble\"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories\n  \"categories\": [\"line\", \"column\", \"mount\", \"bar\", \"area\", \"radar\", \"gauge\", \"candle\", \"mix\", \"demotype\"],\n  //instance为实例变量承载属性,不要删除\n  \"instance\": {},\n  //option为opts及eopts承载属性,不要删除\n  \"option\": {},\n  //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换\n  \"formatter\": {\n    \"yAxisDemo1\": function yAxisDemo1(val, index, opts) {return val + '元';},\n    \"yAxisDemo2\": function yAxisDemo2(val, index, opts) {return val.toFixed(2);},\n    \"xAxisDemo1\": function xAxisDemo1(val, index, opts) {return val + '年';},\n    \"xAxisDemo2\": function xAxisDemo2(val, index, opts) {return formatDateTime(val, 'h:m');},\n    \"seriesDemo1\": function seriesDemo1(val, index, series, opts) {return val + '元';},\n    \"tooltipDemo1\": function tooltipDemo1(item, category, index, opts) {\n      if (index == 0) {\n        return '随便用' + item.data + '年';\n      } else {\n        return '其他我没改' + item.data + '天';\n      }\n    },\n    \"pieDemo\": function pieDemo(val, index, series, opts) {\n      if (index !== undefined) {\n        return series[index].name + ':' + series[index].data + '元';\n      }\n    } },\n\n  //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type=\"demotype\" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。\n  \"demotype\": {\n    //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置\n    \"type\": \"line\",\n    \"color\": color,\n    \"padding\": [15, 10, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true },\n\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2 },\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"line\": {\n        \"type\": \"curve\",\n        \"width\": 2 } } },\n\n\n\n  //下面是自定义配置,请添加项目所需的通用配置\n  \"pie\": {\n    \"type\": \"pie\",\n    \"color\": color,\n    \"padding\": [5, 5, 5, 5],\n    \"extra\": {\n      \"pie\": {\n        \"activeOpacity\": 0.5,\n        \"activeRadius\": 10,\n        \"offsetAngle\": 0,\n        \"labelWidth\": 15,\n        \"border\": true,\n        \"borderWidth\": 3,\n        \"borderColor\": \"#FFFFFF\" } } },\n\n\n\n  \"ring\": {\n    \"type\": \"ring\",\n    \"color\": color,\n    \"padding\": [5, 5, 5, 5],\n    \"rotate\": false,\n    \"dataLabel\": true,\n    \"legend\": {\n      \"show\": true,\n      \"position\": \"right\",\n      \"lineHeight\": 25 },\n\n    \"title\": {\n      \"name\": \"收益率\",\n      \"fontSize\": 15,\n      \"color\": \"#666666\" },\n\n    \"subtitle\": {\n      \"name\": \"70%\",\n      \"fontSize\": 25,\n      \"color\": \"#7cb5ec\" },\n\n    \"extra\": {\n      \"ring\": {\n        \"ringWidth\": 30,\n        \"activeOpacity\": 0.5,\n        \"activeRadius\": 10,\n        \"offsetAngle\": 0,\n        \"labelWidth\": 15,\n        \"border\": true,\n        \"borderWidth\": 3,\n        \"borderColor\": \"#FFFFFF\" } } },\n\n\n\n  \"rose\": {\n    \"type\": \"rose\",\n    \"color\": color,\n    \"padding\": [5, 5, 5, 5],\n    \"legend\": {\n      \"show\": true,\n      \"position\": \"left\",\n      \"lineHeight\": 25 },\n\n    \"extra\": {\n      \"rose\": {\n        \"type\": \"area\",\n        \"minRadius\": 50,\n        \"activeOpacity\": 0.5,\n        \"activeRadius\": 10,\n        \"offsetAngle\": 0,\n        \"labelWidth\": 15,\n        \"border\": false,\n        \"borderWidth\": 2,\n        \"borderColor\": \"#FFFFFF\" } } },\n\n\n\n  \"word\": {\n    \"type\": \"word\",\n    \"color\": color,\n    \"extra\": {\n      \"word\": {\n        \"type\": \"normal\",\n        \"autoColors\": false } } },\n\n\n\n  \"funnel\": {\n    \"type\": \"funnel\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"extra\": {\n      \"funnel\": {\n        \"activeOpacity\": 0.3,\n        \"activeWidth\": 10,\n        \"border\": true,\n        \"borderWidth\": 2,\n        \"borderColor\": \"#FFFFFF\",\n        \"fillOpacity\": 1,\n        \"labelAlign\": \"right\" } } },\n\n\n\n  \"map\": {\n    \"type\": \"map\",\n    \"color\": color,\n    \"padding\": [0, 0, 0, 0],\n    \"dataLabel\": true,\n    \"extra\": {\n      \"map\": {\n        \"border\": true,\n        \"borderWidth\": 1,\n        \"borderColor\": \"#666666\",\n        \"fillOpacity\": 0.6,\n        \"activeBorderColor\": \"#F04864\",\n        \"activeFillColor\": \"#FACC14\",\n        \"activeFillOpacity\": 1 } } },\n\n\n\n  \"arcbar\": {\n    \"type\": \"arcbar\",\n    \"color\": color,\n    \"title\": {\n      \"name\": \"百分比\",\n      \"fontSize\": 25,\n      \"color\": \"#00FF00\" },\n\n    \"subtitle\": {\n      \"name\": \"默认标题\",\n      \"fontSize\": 15,\n      \"color\": \"#666666\" },\n\n    \"extra\": {\n      \"arcbar\": {\n        \"type\": \"default\",\n        \"width\": 12,\n        \"backgroundColor\": \"#E9E9E9\",\n        \"startAngle\": 0.75,\n        \"endAngle\": 0.25,\n        \"gap\": 2 } } },\n\n\n\n  \"line\": {\n    \"type\": \"line\",\n    \"color\": color,\n    \"padding\": [15, 10, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true },\n\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2 },\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"line\": {\n        \"type\": \"straight\",\n        \"width\": 2 } } },\n\n\n\n  \"tline\": {\n    \"type\": \"line\",\n    \"color\": color,\n    \"padding\": [15, 10, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": false,\n      \"boundaryGap\": \"justify\" },\n\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2,\n      \"data\": [\n      {\n        \"min\": 0,\n        \"max\": 80 }] },\n\n\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"line\": {\n        \"type\": \"curve\",\n        \"width\": 2 } } },\n\n\n\n  \"tarea\": {\n    \"type\": \"area\",\n    \"color\": color,\n    \"padding\": [15, 10, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true,\n      \"boundaryGap\": \"justify\" },\n\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2,\n      \"data\": [\n      {\n        \"min\": 0,\n        \"max\": 80 }] },\n\n\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"area\": {\n        \"type\": \"curve\",\n        \"opacity\": 0.2,\n        \"addLine\": true,\n        \"width\": 2,\n        \"gradient\": true } } },\n\n\n\n  \"column\": {\n    \"type\": \"column\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 5],\n    \"xAxis\": {\n      \"disableGrid\": true },\n\n    \"yAxis\": {\n      \"data\": [{ \"min\": 0 }] },\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"column\": {\n        \"type\": \"group\",\n        \"width\": 30,\n        \"activeBgColor\": \"#000000\",\n        \"activeBgOpacity\": 0.08 } } },\n\n\n\n  \"mount\": {\n    \"type\": \"mount\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 5],\n    \"xAxis\": {\n      \"disableGrid\": true },\n\n    \"yAxis\": {\n      \"data\": [{ \"min\": 0 }] },\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"mount\": {\n        \"type\": \"mount\",\n        \"widthRatio\": 1.5 } } },\n\n\n\n  \"bar\": {\n    \"type\": \"bar\",\n    \"color\": color,\n    \"padding\": [15, 30, 0, 5],\n    \"xAxis\": {\n      \"boundaryGap\": \"justify\",\n      \"disableGrid\": false,\n      \"min\": 0,\n      \"axisLine\": false },\n\n    \"yAxis\": {},\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"bar\": {\n        \"type\": \"group\",\n        \"width\": 30,\n        \"meterBorde\": 1,\n        \"meterFillColor\": \"#FFFFFF\",\n        \"activeBgColor\": \"#000000\",\n        \"activeBgOpacity\": 0.08 } } },\n\n\n\n  \"area\": {\n    \"type\": \"area\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true },\n\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2 },\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"area\": {\n        \"type\": \"straight\",\n        \"opacity\": 0.2,\n        \"addLine\": true,\n        \"width\": 2,\n        \"gradient\": false } } },\n\n\n\n  \"radar\": {\n    \"type\": \"radar\",\n    \"color\": color,\n    \"padding\": [5, 5, 5, 5],\n    \"dataLabel\": false,\n    \"legend\": {\n      \"show\": true,\n      \"position\": \"right\",\n      \"lineHeight\": 25 },\n\n    \"extra\": {\n      \"radar\": {\n        \"gridType\": \"radar\",\n        \"gridColor\": \"#CCCCCC\",\n        \"gridCount\": 3,\n        \"opacity\": 0.2,\n        \"max\": 200 } } },\n\n\n\n  \"gauge\": {\n    \"type\": \"gauge\",\n    \"color\": color,\n    \"title\": {\n      \"name\": \"66Km/H\",\n      \"fontSize\": 25,\n      \"color\": \"#2fc25b\",\n      \"offsetY\": 50 },\n\n    \"subtitle\": {\n      \"name\": \"实时速度\",\n      \"fontSize\": 15,\n      \"color\": \"#1890ff\",\n      \"offsetY\": -50 },\n\n    \"extra\": {\n      \"gauge\": {\n        \"type\": \"default\",\n        \"width\": 30,\n        \"labelColor\": \"#666666\",\n        \"startAngle\": 0.75,\n        \"endAngle\": 0.25,\n        \"startNumber\": 0,\n        \"endNumber\": 100,\n        \"labelFormat\": \"\",\n        \"splitLine\": {\n          \"fixRadius\": 0,\n          \"splitNumber\": 10,\n          \"width\": 30,\n          \"color\": \"#FFFFFF\",\n          \"childNumber\": 5,\n          \"childWidth\": 12 },\n\n        \"pointer\": {\n          \"width\": 24,\n          \"color\": \"auto\" } } } },\n\n\n\n\n  \"candle\": {\n    \"type\": \"candle\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"enableScroll\": true,\n    \"enableMarkLine\": true,\n    \"dataLabel\": false,\n    \"xAxis\": {\n      \"labelCount\": 4,\n      \"itemCount\": 40,\n      \"disableGrid\": true,\n      \"gridColor\": \"#CCCCCC\",\n      \"gridType\": \"solid\",\n      \"dashLength\": 4,\n      \"scrollShow\": true,\n      \"scrollAlign\": \"left\",\n      \"scrollColor\": \"#A6A6A6\",\n      \"scrollBackgroundColor\": \"#EFEBEF\" },\n\n    \"yAxis\": {},\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"candle\": {\n        \"color\": {\n          \"upLine\": \"#f04864\",\n          \"upFill\": \"#f04864\",\n          \"downLine\": \"#2fc25b\",\n          \"downFill\": \"#2fc25b\" },\n\n        \"average\": {\n          \"show\": true,\n          \"name\": [\"MA5\", \"MA10\", \"MA30\"],\n          \"day\": [5, 10, 20],\n          \"color\": [\"#1890ff\", \"#2fc25b\", \"#facc14\"] } },\n\n\n      \"markLine\": {\n        \"type\": \"dash\",\n        \"dashLength\": 5,\n        \"data\": [\n        {\n          \"value\": 2150,\n          \"lineColor\": \"#f04864\",\n          \"showLabel\": true },\n\n        {\n          \"value\": 2350,\n          \"lineColor\": \"#f04864\",\n          \"showLabel\": true }] } } },\n\n\n\n\n\n  \"mix\": {\n    \"type\": \"mix\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true },\n\n    \"yAxis\": {\n      \"disabled\": false,\n      \"disableGrid\": false,\n      \"splitNumber\": 5,\n      \"gridType\": \"dash\",\n      \"dashLength\": 4,\n      \"gridColor\": \"#CCCCCC\",\n      \"padding\": 10,\n      \"showTitle\": true,\n      \"data\": [] },\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"mix\": {\n        \"column\": {\n          \"width\": 20 } } } },\n\n\n\n\n  \"scatter\": {\n    \"type\": \"scatter\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"dataLabel\": false,\n    \"xAxis\": {\n      \"disableGrid\": false,\n      \"gridType\": \"dash\",\n      \"splitNumber\": 5,\n      \"boundaryGap\": \"justify\",\n      \"min\": 0 },\n\n    \"yAxis\": {\n      \"disableGrid\": false,\n      \"gridType\": \"dash\" },\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"scatter\": {} } },\n\n\n\n  \"bubble\": {\n    \"type\": \"bubble\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": false,\n      \"gridType\": \"dash\",\n      \"splitNumber\": 5,\n      \"boundaryGap\": \"justify\",\n      \"min\": 0,\n      \"max\": 250 },\n\n    \"yAxis\": {\n      \"disableGrid\": false,\n      \"gridType\": \"dash\",\n      \"data\": [{\n        \"min\": 0,\n        \"max\": 150 }] },\n\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"bubble\": {\n        \"border\": 2,\n        \"opacity\": 0.5 } } } };var _default =\n\n\n\n\n\ncfu;exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9qc19zZGsvdS1jaGFydHMvY29uZmlnLXVjaGFydHMuanMiXSwibmFtZXMiOlsiY29sb3IiLCJmb3JtYXREYXRlVGltZSIsInRpbWVTdGFtcCIsInJldHVyblR5cGUiLCJkYXRlIiwiRGF0ZSIsInNldFRpbWUiLCJ5IiwiZ2V0RnVsbFllYXIiLCJtIiwiZ2V0TW9udGgiLCJkIiwiZ2V0RGF0ZSIsImgiLCJnZXRIb3VycyIsIm1pbnV0ZSIsImdldE1pbnV0ZXMiLCJzZWNvbmQiLCJnZXRTZWNvbmRzIiwiY2Z1IiwidmFsIiwiaW5kZXgiLCJvcHRzIiwidG9GaXhlZCIsInNlcmllcyIsIml0ZW0iLCJjYXRlZ29yeSIsImRhdGEiLCJ1bmRlZmluZWQiLCJuYW1lIl0sIm1hcHBpbmdzIjoid0ZBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQTtBQUNBLElBQU1BLEtBQUssR0FBRyxDQUFDLFNBQUQsRUFBWSxTQUFaLEVBQXVCLFNBQXZCLEVBQWtDLFNBQWxDLEVBQTZDLFNBQTdDLEVBQXdELFNBQXhELEVBQW1FLFNBQW5FLEVBQThFLFNBQTlFLEVBQXlGLFNBQXpGLENBQWQ7O0FBRUE7QUFDQSxJQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLENBQUNDLFNBQUQsRUFBWUMsVUFBWixFQUF5QjtBQUM5QyxNQUFJQyxJQUFJLEdBQUcsSUFBSUMsSUFBSixFQUFYO0FBQ0FELE1BQUksQ0FBQ0UsT0FBTCxDQUFhSixTQUFTLEdBQUcsSUFBekI7QUFDQSxNQUFJSyxDQUFDLEdBQUdILElBQUksQ0FBQ0ksV0FBTCxFQUFSO0FBQ0EsTUFBSUMsQ0FBQyxHQUFHTCxJQUFJLENBQUNNLFFBQUwsS0FBa0IsQ0FBMUI7QUFDQUQsR0FBQyxHQUFHQSxDQUFDLEdBQUcsRUFBSixHQUFVLE1BQU1BLENBQWhCLEdBQXFCQSxDQUF6QjtBQUNBLE1BQUlFLENBQUMsR0FBR1AsSUFBSSxDQUFDUSxPQUFMLEVBQVI7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RixFQXRCSCxFQTlnQkUsRUFBWixDOzs7Ozs7QUE2aUJlbUIsRyIsImZpbGUiOiI2OS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIHVDaGFydHPCrlxyXG4gKiDpq5jmgKfog73ot6jlubPlj7Dlm77ooajlupPvvIzmlK/mjIFINeOAgUFQUOOAgeWwj+eoi+W6j++8iOW+ruS/oS/mlK/ku5jlrp0v55m+5bqmL+WktOadoS9RUS8zNjDvvInjgIFWdWXjgIFUYXJv562J5pSv5oyBY2FudmFz55qE5qGG5p625bmz5Y+wXHJcbiAqIENvcHlyaWdodCAoYykgMjAyMSBRSVVOwq7np4vkupEgaHR0cHM6Ly93d3cudWNoYXJ0cy5jbiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCAoIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCApXHJcbiAqIOWkjeWItuS9v+eUqOivt+S/neeVmeacrOauteazqOmHiu+8jOaEn+iwouaUr+aMgeW8gOa6kO+8gVxyXG4gKiBcclxuICogdUNoYXJ0c8Ku5a6Y5pa5572R56uZXHJcbiAqIGh0dHBzOi8vd3d3LnVDaGFydHMuY25cclxuICogXHJcbiAqIOW8gOa6kOWcsOWdgDpcclxuICogaHR0cHM6Ly9naXRlZS5jb20vdUNoYXJ0cy91Q2hhcnRzXHJcbiAqIFxyXG4gKiB1bmktYXBw5o+S5Lu25biC5Zy65Zyw5Z2A77yaXHJcbiAqIGh0dHA6Ly9leHQuZGNsb3VkLm5ldC5jbi9wbHVnaW4/aWQ9MjcxXHJcbiAqIFxyXG4gKi9cclxuXHJcbi8vIOS4u+mimOminOiJsumFjee9ru+8muWmguavj+S4quWbvuihqOexu+Wei+mcgOimgeS4jeWQjOS4u+mimO+8jOivt+WcqOWvueW6lOWbvuihqOexu+Wei+S4iuabtOaUuWNvbG9y5bGe5oCnXHJcbmNvbnN0IGNvbG9yID0gWycjMTg5MEZGJywgJyM5MUNCNzQnLCAnI0ZBQzg1OCcsICcjRUU2NjY2JywgJyM3M0MwREUnLCAnIzNDQTI3MicsICcjRkM4NDUyJywgJyM5QTYwQjQnLCAnI2VhN2NjYyddO1xyXG5cclxuLy/kuovku7bovazmjaLlh73mlbDvvIzkuLvopoHnlKjkvZzmoLzlvI/ljJZ46L205Li65pe26Ze06L2077yM5qC55o2u6ZyA5rGC6Ieq6KGM5L+u5pS5XHJcbmNvbnN0IGZvcm1hdERhdGVUaW1lID0gKHRpbWVTdGFtcCwgcmV0dXJuVHlwZSk9PntcclxuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgZGF0ZS5zZXRUaW1lKHRpbWVTdGFtcCAqIDEwMDApO1xyXG4gIHZhciB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gIHZhciBtID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICBtID0gbSA8IDEwID8gKCcwJyArIG0pIDogbTtcclxuICB2YXIgZCA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gIGQgPSBkIDwgMTAgPyAoJzAnICsgZCkgOiBkO1xyXG4gIHZhciBoID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gIGggPSBoIDwgMTAgPyAoJzAnICsgaCkgOiBoO1xyXG4gIHZhciBtaW51dGUgPSBkYXRlLmdldE1pbnV0ZXMoKTtcclxuICB2YXIgc2Vjb25kID0gZGF0ZS5nZXRTZWNvbmRzKCk7XHJcbiAgbWludXRlID0gbWludXRlIDwgMTAgPyAoJzAnICsgbWludXRlKSA6IG1pbnV0ZTtcclxuICBzZWNvbmQgPSBzZWNvbmQgPCAxMCA/ICgnMCcgKyBzZWNvbmQpIDogc2Vjb25kO1xyXG4gIGlmKHJldHVyblR5cGUgPT0gJ2Z1bGwnKXtyZXR1cm4geSArICctJyArIG0gKyAnLScgKyBkICsgJyAnKyBoICsnOicgKyBtaW51dGUgKyAnOicgKyBzZWNvbmQ7fVxyXG4gIGlmKHJldHVyblR5cGUgPT0gJ3ktbS1kJyl7cmV0dXJuIHkgKyAnLScgKyBtICsgJy0nICsgZDt9XHJcbiAgaWYocmV0dXJuVHlwZSA9PSAnaDptJyl7cmV0dXJuICBoICsnOicgKyBtaW51dGU7fVxyXG4gIGlmKHJldHVyblR5cGUgPT0gJ2g6bTpzJyl7cmV0dXJuICBoICsnOicgKyBtaW51dGUgKyc6JyArIHNlY29uZDt9XHJcbiAgcmV0dXJuIFt5LCBtLCBkLCBoLCBtaW51dGUsIHNlY29uZF07XHJcbn1cclxuXHJcbmNvbnN0IGNmdSA9IHtcclxuICAvL2RlbW90eXBl5Li66Ieq5a6a5LmJ5Zu+6KGo57G75Z6L77yM5LiA6Iis5LiN6ZyA6KaB6Ieq5a6a5LmJ5Zu+6KGo57G75Z6L77yM5Y+q6ZyA6KaB5pS55qC56IqC54K55LiK5a+55bqU55qE57G75Z6L5Y2z5Y+vXHJcblx0XCJ0eXBlXCI6W1wicGllXCIsXCJyaW5nXCIsXCJyb3NlXCIsXCJ3b3JkXCIsXCJmdW5uZWxcIixcIm1hcFwiLFwiYXJjYmFyXCIsXCJsaW5lXCIsXCJjb2x1bW5cIixcIm1vdW50XCIsXCJiYXJcIixcImFyZWFcIixcInJhZGFyXCIsXCJnYXVnZVwiLFwiY2FuZGxlXCIsXCJtaXhcIixcInRsaW5lXCIsXCJ0YXJlYVwiLFwic2NhdHRlclwiLFwiYnViYmxlXCIsXCJkZW1vdHlwZVwiXSxcclxuXHRcInJhbmdlXCI6W1wi6aW854q25Zu+XCIsXCLlnIbnjq/lm75cIixcIueOq+eRsOWbvlwiLFwi6K+N5LqR5Zu+XCIsXCLmvI/mlpflm75cIixcIuWcsOWbvlwiLFwi5ZyG5byn6L+b5bqm5p2hXCIsXCLmipjnur/lm75cIixcIuafseeKtuWbvlwiLFwi5bGx5bOw5Zu+XCIsXCLmnaHnirblm75cIixcIuWMuuWfn+WbvlwiLFwi6Zu36L6+5Zu+XCIsXCLku6rooajnm5hcIixcIkvnur/lm75cIixcIua3t+WQiOWbvlwiLFwi5pe26Ze06L205oqY57q/XCIsXCLml7bpl7TovbTljLrln59cIixcIuaVo+eCueWbvlwiLFwi5rCU5rOh5Zu+XCIsXCLoh6rlrprkuYnnsbvlnotcIl0sXHJcbiAgLy/lop7liqDoh6rlrprkuYnlm77ooajnsbvlnovvvIzlpoLmnpzpnIDopoFjYXRlZ29yaWVz77yM6K+35Zyo6L+Z6YeM5Yqg5YWl5oKo55qE5Zu+6KGo57G75Z6L77yM5L6L5aaC5pyA5ZCO55qEXCJkZW1vdHlwZVwiXHJcbiAgLy/oh6rlrprkuYnnsbvlnovml7bpnIDopoHms6jmhI9cInRsaW5lXCIsXCJ0YXJlYVwiLFwic2NhdHRlclwiLFwiYnViYmxlXCLnrYnml7bpl7TovbTvvIjnn6Lph4946L2077yJ57G75Zu+6KGo77yM5rKh5pyJY2F0ZWdvcmllc++8jOS4jemcgOimgeWKoOWFpWNhdGVnb3JpZXNcclxuXHRcImNhdGVnb3JpZXNcIjpbXCJsaW5lXCIsXCJjb2x1bW5cIixcIm1vdW50XCIsXCJiYXJcIixcImFyZWFcIixcInJhZGFyXCIsXCJnYXVnZVwiLFwiY2FuZGxlXCIsXCJtaXhcIixcImRlbW90eXBlXCJdLFxyXG4gIC8vaW5zdGFuY2XkuLrlrp7kvovlj5jph4/mib/ovb3lsZ7mgKfvvIzkuI3opoHliKDpmaRcclxuICBcImluc3RhbmNlXCI6e30sXHJcbiAgLy9vcHRpb27kuLpvcHRz5Y+KZW9wdHPmib/ovb3lsZ7mgKfvvIzkuI3opoHliKDpmaRcclxuICBcIm9wdGlvblwiOnt9LFxyXG4gIC8v5LiL6Z2i5piv6Ieq5a6a5LmJZm9ybWF06YWN572u77yM5Zug6ZmkSDXnq6/lpJbnmoTlhbbku5bnq6/ml6Dms5XpgJrov4dwcm9wc+S8oOmAkuWHveaVsO+8jOWPquiDvemAmui/h+atpOWxnuaAp+WvueW6lOS4i+agh+eahOaWueW8j+adpeabv+aNolxyXG4gIFwiZm9ybWF0dGVyXCI6e1xyXG4gICAgXCJ5QXhpc0RlbW8xXCI6ZnVuY3Rpb24odmFsLCBpbmRleCwgb3B0cyl7cmV0dXJuIHZhbCsn5YWDJ30sXHJcbiAgICBcInlBeGlzRGVtbzJcIjpmdW5jdGlvbih2YWwsIGluZGV4LCBvcHRzKXtyZXR1cm4gdmFsLnRvRml4ZWQoMil9LFxyXG4gICAgXCJ4QXhpc0RlbW8xXCI6ZnVuY3Rpb24odmFsLCBpbmRleCwgb3B0cyl7cmV0dXJuIHZhbCsn5bm0Jzt9LFxyXG4gICAgXCJ4QXhpc0RlbW8yXCI6ZnVuY3Rpb24odmFsLCBpbmRleCwgb3B0cyl7cmV0dXJuIGZvcm1hdERhdGVUaW1lKHZhbCwnaDptJyl9LFxyXG4gICAgXCJzZXJpZXNEZW1vMVwiOmZ1bmN0aW9uKHZhbCwgaW5kZXgsIHNlcmllcywgb3B0cyl7cmV0dXJuIHZhbCsn5YWDJ30sXHJcbiAgICBcInRvb2x0aXBEZW1vMVwiOmZ1bmN0aW9uKGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cyl7XHJcbiAgICAgIGlmKGluZGV4PT0wKXtcclxuICAgICAgXHRyZXR1cm4gJ+maj+S+v+eUqCcraXRlbS5kYXRhKyflubQnXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICBcdHJldHVybiAn5YW25LuW5oiR5rKh5pS5JytpdGVtLmRhdGErJ+WkqSdcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIFwicGllRGVtb1wiOmZ1bmN0aW9uKHZhbCwgaW5kZXgsIHNlcmllcywgb3B0cyl7XHJcbiAgICAgIGlmKGluZGV4ICE9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgIHJldHVybiBzZXJpZXNbaW5kZXhdLm5hbWUrJ++8micrc2VyaWVzW2luZGV4XS5kYXRhKyflhYMnXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgfSxcclxuICAvL+i/memHjOa8lOekuuS6huiHquWumuS5ieaCqOeahOWbvuihqOexu+Wei+eahG9wdGlvbu+8jOWPr+S7pemaj+aEj+WRveWQje+8jOS5i+WQjuWcqOe7hOS7tuS4iiB0eXBlPVwiZGVtb3R5cGVcIiDlkI7vvIznu4Tku7bkvJrosIPnlKjov5nkuKroirHmi6zlj7fph4znmoRvcHRpb27vvIzlpoLmnpznu4Tku7bkuIrov5jlrZjlnKhvcHRz5Y+C5pWw77yM5Lya5bCGZGVtb3R5cGXkuI5vcHRz5Litb3B0aW9u5ZCI5bm25ZCO5riy5p+T5Zu+6KGo44CCXHJcbiAgXCJkZW1vdHlwZVwiOntcclxuICAgIC8v5oiR6L+Z6YeM5oqK5puy57q/5Zu+5b2T5YGa5LqG6Ieq5a6a5LmJ5Zu+6KGo57G75Z6L77yM5oKo5Y+v5Lul5qC55o2u6ZyA6KaB6ZqP5oSP5oyH5a6a57G75Z6L5oiW6YWN572uXHJcbiAgICBcInR5cGVcIjogXCJsaW5lXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gICAgXCJwYWRkaW5nXCI6IFsxNSwxMCwwLDE1XSxcclxuICAgIFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcbiAgICB9LFxyXG4gICAgXCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZ3JpZFR5cGVcIjogXCJkYXNoXCIsXHJcbiAgICAgIFwiZGFzaExlbmd0aFwiOiAyLFxyXG4gICAgfSxcclxuICAgIFwibGVnZW5kXCI6IHtcclxuICAgIH0sXHJcbiAgICBcImV4dHJhXCI6IHtcclxuICAgIFx0XCJsaW5lXCI6IHtcclxuICAgIFx0XHRcInR5cGVcIjogXCJjdXJ2ZVwiLFxyXG4gICAgXHRcdFwid2lkdGhcIjogMlxyXG4gICAgXHR9LFxyXG4gICAgfVxyXG4gIH0sXHJcbiAgLy/kuIvpnaLmmK/oh6rlrprkuYnphY3nva7vvIzor7fmt7vliqDpobnnm67miYDpnIDnmoTpgJrnlKjphY3nva5cclxuXHRcInBpZVwiOntcclxuXHRcdFwidHlwZVwiOiBcInBpZVwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbNSw1LDUsNV0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJwaWVcIjoge1xyXG5cdFx0XHRcdFwiYWN0aXZlT3BhY2l0eVwiOiAwLjUsXHJcblx0XHRcdFx0XCJhY3RpdmVSYWRpdXNcIjogMTAsXHJcblx0XHRcdFx0XCJvZmZzZXRBbmdsZVwiOiAwLFxyXG5cdFx0XHRcdFwibGFiZWxXaWR0aFwiOiAxNSxcclxuXHRcdFx0XHRcImJvcmRlclwiOiB0cnVlLFxyXG5cdFx0XHRcdFwiYm9yZGVyV2lkdGhcIjogMyxcclxuXHRcdFx0XHRcImJvcmRlckNvbG9yXCI6IFwiI0ZGRkZGRlwiXHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuXHRcInJpbmdcIjp7XHJcblx0XHRcInR5cGVcIjogXCJyaW5nXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFs1LDUsNSw1XSxcclxuXHRcdFwicm90YXRlXCI6IGZhbHNlLFxyXG5cdFx0XCJkYXRhTGFiZWxcIjogdHJ1ZSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJzaG93XCI6IHRydWUsXHJcblx0XHRcdFwicG9zaXRpb25cIjogXCJyaWdodFwiLFxyXG4gICAgICBcImxpbmVIZWlnaHRcIjogMjUsXHJcblx0XHR9LFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwibmFtZVwiOiBcIuaUtuebiueOh1wiLFxyXG5cdFx0XHRcImZvbnRTaXplXCI6IDE1LFxyXG5cdFx0XHRcImNvbG9yXCI6IFwiIzY2NjY2NlwiXHJcblx0XHR9LFxyXG5cdFx0XCJzdWJ0aXRsZVwiOiB7XHJcblx0XHRcdFwibmFtZVwiOiBcIjcwJVwiLFxyXG5cdFx0XHRcImZvbnRTaXplXCI6IDI1LFxyXG5cdFx0XHRcImNvbG9yXCI6IFwiIzdjYjVlY1wiXHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwicmluZ1wiOiB7XHJcblx0XHRcdFx0XCJyaW5nV2lkdGhcIjozMCxcclxuXHRcdFx0XHRcImFjdGl2ZU9wYWNpdHlcIjogMC41LFxyXG5cdFx0XHRcdFwiYWN0aXZlUmFkaXVzXCI6IDEwLFxyXG5cdFx0XHRcdFwib2Zmc2V0QW5nbGVcIjogMCxcclxuXHRcdFx0XHRcImxhYmVsV2lkdGhcIjogMTUsXHJcblx0XHRcdFx0XCJib3JkZXJcIjogdHJ1ZSxcclxuXHRcdFx0XHRcImJvcmRlcldpZHRoXCI6IDMsXHJcblx0XHRcdFx0XCJib3JkZXJDb2xvclwiOiBcIiNGRkZGRkZcIlxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdFwicm9zZVwiOntcclxuXHRcdFwidHlwZVwiOiBcInJvc2VcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzUsNSw1LDVdLFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcInNob3dcIjogdHJ1ZSxcclxuXHRcdFx0XCJwb3NpdGlvblwiOiBcImxlZnRcIixcclxuICAgICAgXCJsaW5lSGVpZ2h0XCI6IDI1LFxyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcInJvc2VcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcImFyZWFcIixcclxuXHRcdFx0XHRcIm1pblJhZGl1c1wiOiA1MCxcclxuXHRcdFx0XHRcImFjdGl2ZU9wYWNpdHlcIjogMC41LFxyXG5cdFx0XHRcdFwiYWN0aXZlUmFkaXVzXCI6IDEwLFxyXG5cdFx0XHRcdFwib2Zmc2V0QW5nbGVcIjogMCxcclxuXHRcdFx0XHRcImxhYmVsV2lkdGhcIjogMTUsXHJcblx0XHRcdFx0XCJib3JkZXJcIjogZmFsc2UsXHJcblx0XHRcdFx0XCJib3JkZXJXaWR0aFwiOiAyLFxyXG5cdFx0XHRcdFwiYm9yZGVyQ29sb3JcIjogXCIjRkZGRkZGXCJcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwid29yZFwiOntcclxuXHRcdFwidHlwZVwiOiBcIndvcmRcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJ3b3JkXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJub3JtYWxcIixcclxuXHRcdFx0XHRcImF1dG9Db2xvcnNcIjogZmFsc2VcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJmdW5uZWxcIjp7XHJcblx0XHRcInR5cGVcIjogXCJmdW5uZWxcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzE1LDE1LDAsMTVdLFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwiZnVubmVsXCI6IHtcclxuXHRcdFx0XHRcImFjdGl2ZU9wYWNpdHlcIjogMC4zLFxyXG5cdFx0XHRcdFwiYWN0aXZlV2lkdGhcIjogMTAsXHJcblx0XHRcdFx0XCJib3JkZXJcIjogdHJ1ZSxcclxuXHRcdFx0XHRcImJvcmRlcldpZHRoXCI6IDIsXHJcblx0XHRcdFx0XCJib3JkZXJDb2xvclwiOiBcIiNGRkZGRkZcIixcclxuXHRcdFx0XHRcImZpbGxPcGFjaXR5XCI6IDEsXHJcblx0XHRcdFx0XCJsYWJlbEFsaWduXCI6IFwicmlnaHRcIlxyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJtYXBcIjp7XHJcblx0XHRcInR5cGVcIjogXCJtYXBcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzAsMCwwLDBdLFxyXG4gICAgXCJkYXRhTGFiZWxcIjogdHJ1ZSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcIm1hcFwiOiB7XHJcblx0XHRcdFx0XCJib3JkZXJcIjogdHJ1ZSxcclxuXHRcdFx0XHRcImJvcmRlcldpZHRoXCI6IDEsXHJcblx0XHRcdFx0XCJib3JkZXJDb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcImZpbGxPcGFjaXR5XCI6IDAuNixcclxuXHRcdFx0XHRcImFjdGl2ZUJvcmRlckNvbG9yXCI6IFwiI0YwNDg2NFwiLFxyXG5cdFx0XHRcdFwiYWN0aXZlRmlsbENvbG9yXCI6IFwiI0ZBQ0MxNFwiLFxyXG5cdFx0XHRcdFwiYWN0aXZlRmlsbE9wYWNpdHlcIjogMVxyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJhcmNiYXJcIjp7XHJcblx0XHRcInR5cGVcIjogXCJhcmNiYXJcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInRpdGxlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6IFwi55m+5YiG5q+UXCIsXHJcblx0XHRcdFwiZm9udFNpemVcIjogMjUsXHJcblx0XHRcdFwiY29sb3JcIjogXCIjMDBGRjAwXCJcclxuXHRcdH0sXHJcblx0XHRcInN1YnRpdGxlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6IFwi6buY6K6k5qCH6aKYXCIsXHJcblx0XHRcdFwiZm9udFNpemVcIjogMTUsXHJcblx0XHRcdFwiY29sb3JcIjogXCIjNjY2NjY2XCJcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJhcmNiYXJcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcImRlZmF1bHRcIixcclxuXHRcdFx0XHRcIndpZHRoXCI6IDEyLFxyXG5cdFx0XHRcdFwiYmFja2dyb3VuZENvbG9yXCI6IFwiI0U5RTlFOVwiLFxyXG5cdFx0XHRcdFwic3RhcnRBbmdsZVwiOiAwLjc1LFxyXG5cdFx0XHRcdFwiZW5kQW5nbGVcIjogMC4yNSxcclxuXHRcdFx0XHRcImdhcFwiOiAyXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9LFxyXG5cdFwibGluZVwiOntcclxuXHRcdFwidHlwZVwiOiBcImxpbmVcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzE1LDEwLDAsMTVdLFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuICAgICAgXCJncmlkVHlwZVwiOiBcImRhc2hcIixcclxuICAgICAgXCJkYXNoTGVuZ3RoXCI6IDIsXHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcImxpbmVcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcInN0cmFpZ2h0XCIsXHJcblx0XHRcdFx0XCJ3aWR0aFwiOiAyXHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuICBcInRsaW5lXCI6e1xyXG4gIFx0XCJ0eXBlXCI6IFwibGluZVwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuICBcdFwicGFkZGluZ1wiOiBbMTUsMTAsMCwxNV0sXHJcbiAgXHRcInhBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuICAgICAgXCJib3VuZGFyeUdhcFwiOlwianVzdGlmeVwiLFxyXG4gIFx0fSxcclxuICBcdFwieUF4aXNcIjoge1xyXG4gICAgICBcImdyaWRUeXBlXCI6IFwiZGFzaFwiLFxyXG4gICAgICBcImRhc2hMZW5ndGhcIjogMixcclxuICAgICAgXCJkYXRhXCI6W1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIFwibWluXCI6MCxcclxuICAgICAgICAgIFwibWF4XCI6ODBcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICBcdH0sXHJcbiAgXHRcImxlZ2VuZFwiOiB7XHJcbiAgXHR9LFxyXG4gIFx0XCJleHRyYVwiOiB7XHJcbiAgXHRcdFwibGluZVwiOiB7XHJcbiAgXHRcdFx0XCJ0eXBlXCI6IFwiY3VydmVcIixcclxuICBcdFx0XHRcIndpZHRoXCI6IDJcclxuICBcdFx0fSxcclxuICBcdH1cclxuICB9LFxyXG4gIFwidGFyZWFcIjp7XHJcbiAgXHRcInR5cGVcIjogXCJhcmVhXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gIFx0XCJwYWRkaW5nXCI6IFsxNSwxMCwwLDE1XSxcclxuICBcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcbiAgICAgIFwiYm91bmRhcnlHYXBcIjpcImp1c3RpZnlcIixcclxuICBcdH0sXHJcbiAgXHRcInlBeGlzXCI6IHtcclxuICAgICAgXCJncmlkVHlwZVwiOiBcImRhc2hcIixcclxuICAgICAgXCJkYXNoTGVuZ3RoXCI6IDIsXHJcbiAgICAgIFwiZGF0YVwiOltcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcIm1pblwiOjAsXHJcbiAgICAgICAgICBcIm1heFwiOjgwXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgXHR9LFxyXG4gIFx0XCJsZWdlbmRcIjoge1xyXG4gIFx0fSxcclxuICBcdFwiZXh0cmFcIjoge1xyXG4gIFx0XHRcImFyZWFcIjoge1xyXG4gIFx0XHRcdFwidHlwZVwiOiBcImN1cnZlXCIsXHJcbiAgXHRcdFx0XCJvcGFjaXR5XCI6IDAuMixcclxuICBcdFx0XHRcImFkZExpbmVcIjogdHJ1ZSxcclxuICBcdFx0XHRcIndpZHRoXCI6IDIsXHJcbiAgXHRcdFx0XCJncmFkaWVudFwiOiB0cnVlXHJcbiAgXHRcdH0sXHJcbiAgXHR9XHJcbiAgfSxcclxuXHRcImNvbHVtblwiOntcclxuXHRcdFwidHlwZVwiOiBcImNvbHVtblwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbMTUsMTUsMCw1XSxcclxuXHRcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcblx0XHR9LFxyXG5cdFx0XCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZGF0YVwiOlt7XCJtaW5cIjowfV1cclxuXHRcdH0sXHJcblx0XHRcImxlZ2VuZFwiOiB7XHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwiY29sdW1uXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJncm91cFwiLFxyXG5cdFx0XHRcdFwid2lkdGhcIjogMzAsXHJcblx0XHRcdFx0XCJhY3RpdmVCZ0NvbG9yXCI6IFwiIzAwMDAwMFwiLFxyXG5cdFx0XHRcdFwiYWN0aXZlQmdPcGFjaXR5XCI6IDAuMDhcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG4gIFwibW91bnRcIjp7XHJcbiAgXHRcInR5cGVcIjogXCJtb3VudFwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuICBcdFwicGFkZGluZ1wiOiBbMTUsMTUsMCw1XSxcclxuICBcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcbiAgXHR9LFxyXG4gIFx0XCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZGF0YVwiOlt7XCJtaW5cIjowfV1cclxuICBcdH0sXHJcbiAgXHRcImxlZ2VuZFwiOiB7XHJcbiAgXHR9LFxyXG4gIFx0XCJleHRyYVwiOiB7XHJcbiAgXHRcdFwibW91bnRcIjoge1xyXG4gIFx0XHRcdFwidHlwZVwiOiBcIm1vdW50XCIsXHJcbiAgXHRcdFx0XCJ3aWR0aFJhdGlvXCI6IDEuNSxcclxuICBcdFx0fSxcclxuICBcdH1cclxuICB9LFxyXG4gIFwiYmFyXCI6e1xyXG4gIFx0XCJ0eXBlXCI6IFwiYmFyXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gIFx0XCJwYWRkaW5nXCI6IFsxNSwzMCwwLDVdLFxyXG4gIFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiYm91bmRhcnlHYXBcIjpcImp1c3RpZnlcIixcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOmZhbHNlLFxyXG4gICAgICBcIm1pblwiOjAsXHJcbiAgICAgIFwiYXhpc0xpbmVcIjpmYWxzZVxyXG4gIFx0fSxcclxuICBcdFwieUF4aXNcIjoge1xyXG4gIFx0fSxcclxuICBcdFwibGVnZW5kXCI6IHtcclxuICBcdH0sXHJcbiAgXHRcImV4dHJhXCI6IHtcclxuICBcdFx0XCJiYXJcIjoge1xyXG4gIFx0XHRcdFwidHlwZVwiOiBcImdyb3VwXCIsXHJcbiAgXHRcdFx0XCJ3aWR0aFwiOiAzMCxcclxuICBcdFx0XHRcIm1ldGVyQm9yZGVcIjogMSxcclxuICBcdFx0XHRcIm1ldGVyRmlsbENvbG9yXCI6IFwiI0ZGRkZGRlwiLFxyXG4gIFx0XHRcdFwiYWN0aXZlQmdDb2xvclwiOiBcIiMwMDAwMDBcIixcclxuICBcdFx0XHRcImFjdGl2ZUJnT3BhY2l0eVwiOiAwLjA4XHJcbiAgXHRcdH0sXHJcbiAgXHR9XHJcbiAgfSxcclxuXHRcImFyZWFcIjp7XHJcblx0XHRcInR5cGVcIjogXCJhcmVhXCIsXHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFsxNSwxNSwwLDE1XSxcclxuXHRcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcblx0XHR9LFxyXG5cdFx0XCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZ3JpZFR5cGVcIjogXCJkYXNoXCIsXHJcbiAgICAgIFwiZGFzaExlbmd0aFwiOiAyLFxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJhcmVhXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJzdHJhaWdodFwiLFxyXG5cdFx0XHRcdFwib3BhY2l0eVwiOiAwLjIsXHJcblx0XHRcdFx0XCJhZGRMaW5lXCI6IHRydWUsXHJcblx0XHRcdFx0XCJ3aWR0aFwiOiAyLFxyXG5cdFx0XHRcdFwiZ3JhZGllbnRcIjogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwicmFkYXJcIjp7XHJcblx0XHRcInR5cGVcIjogXCJyYWRhclwiLFxyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbNSw1LDUsNV0sXHJcbiAgICBcImRhdGFMYWJlbFwiOiBmYWxzZSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJzaG93XCI6IHRydWUsXHJcblx0XHRcdFwicG9zaXRpb25cIjogXCJyaWdodFwiLFxyXG4gICAgICBcImxpbmVIZWlnaHRcIjogMjUsXHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwicmFkYXJcIjoge1xyXG5cdFx0XHRcdFwiZ3JpZFR5cGVcIjogXCJyYWRhclwiLFxyXG5cdFx0XHRcdFwiZ3JpZENvbG9yXCI6IFwiI0NDQ0NDQ1wiLFxyXG5cdFx0XHRcdFwiZ3JpZENvdW50XCI6IDMsXHJcblx0XHRcdFx0XCJvcGFjaXR5XCI6IDAuMixcclxuXHRcdFx0XHRcIm1heFwiOiAyMDBcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwiZ2F1Z2VcIjp7XHJcblx0XHRcInR5cGVcIjogXCJnYXVnZVwiLFxyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogXCI2NkttL0hcIixcclxuXHRcdFx0XCJmb250U2l6ZVwiOiAyNSxcclxuXHRcdFx0XCJjb2xvclwiOiBcIiMyZmMyNWJcIixcclxuXHRcdFx0XCJvZmZzZXRZXCI6IDUwXHJcblx0XHR9LFxyXG5cdFx0XCJzdWJ0aXRsZVwiOiB7XHJcblx0XHRcdFwibmFtZVwiOiBcIuWunuaXtumAn+W6plwiLFxyXG5cdFx0XHRcImZvbnRTaXplXCI6IDE1LFxyXG5cdFx0XHRcImNvbG9yXCI6IFwiIzE4OTBmZlwiLFxyXG5cdFx0XHRcIm9mZnNldFlcIjogLTUwXHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwiZ2F1Z2VcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcImRlZmF1bHRcIixcclxuXHRcdFx0XHRcIndpZHRoXCI6IDMwLFxyXG5cdFx0XHRcdFwibGFiZWxDb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcInN0YXJ0QW5nbGVcIjogMC43NSxcclxuXHRcdFx0XHRcImVuZEFuZ2xlXCI6IDAuMjUsXHJcblx0XHRcdFx0XCJzdGFydE51bWJlclwiOiAwLFxyXG5cdFx0XHRcdFwiZW5kTnVtYmVyXCI6IDEwMCxcclxuXHRcdFx0XHRcImxhYmVsRm9ybWF0XCI6IFwiXCIsXHJcblx0XHRcdFx0XCJzcGxpdExpbmVcIjoge1xyXG5cdFx0XHRcdFx0XCJmaXhSYWRpdXNcIjogMCxcclxuXHRcdFx0XHRcdFwic3BsaXROdW1iZXJcIjogMTAsXHJcblx0XHRcdFx0XHRcIndpZHRoXCI6IDMwLFxyXG5cdFx0XHRcdFx0XCJjb2xvclwiOiBcIiNGRkZGRkZcIixcclxuXHRcdFx0XHRcdFwiY2hpbGROdW1iZXJcIjogNSxcclxuXHRcdFx0XHRcdFwiY2hpbGRXaWR0aFwiOiAxMlxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0XCJwb2ludGVyXCI6IHtcclxuXHRcdFx0XHRcdFwid2lkdGhcIjogMjQsXHJcblx0XHRcdFx0XHRcImNvbG9yXCI6IFwiYXV0b1wiXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fSxcclxuXHRcImNhbmRsZVwiOntcclxuXHRcdFwidHlwZVwiOiBcImNhbmRsZVwiLFxyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbMTUsMTUsMCwxNV0sXHJcblx0XHRcImVuYWJsZVNjcm9sbFwiOiB0cnVlLFxyXG5cdFx0XCJlbmFibGVNYXJrTGluZVwiOiB0cnVlLFxyXG5cdFx0XCJkYXRhTGFiZWxcIjogZmFsc2UsXHJcblx0XHRcInhBeGlzXCI6IHtcclxuXHRcdFx0XCJsYWJlbENvdW50XCI6IDQsXHJcblx0XHRcdFwiaXRlbUNvdW50XCI6IDQwLFxyXG5cdFx0XHRcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcblx0XHRcdFwiZ3JpZENvbG9yXCI6IFwiI0NDQ0NDQ1wiLFxyXG5cdFx0XHRcImdyaWRUeXBlXCI6IFwic29saWRcIixcclxuXHRcdFx0XCJkYXNoTGVuZ3RoXCI6IDQsXHJcblx0XHRcdFwic2Nyb2xsU2hvd1wiOiB0cnVlLFxyXG5cdFx0XHRcInNjcm9sbEFsaWduXCI6IFwibGVmdFwiLFxyXG5cdFx0XHRcInNjcm9sbENvbG9yXCI6IFwiI0E2QTZBNlwiLFxyXG5cdFx0XHRcInNjcm9sbEJhY2tncm91bmRDb2xvclwiOiBcIiNFRkVCRUZcIlxyXG5cdFx0fSxcclxuXHRcdFwieUF4aXNcIjoge1xyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJjYW5kbGVcIjoge1xyXG5cdFx0XHRcdFwiY29sb3JcIjoge1xyXG5cdFx0XHRcdFx0XCJ1cExpbmVcIjogXCIjZjA0ODY0XCIsXHJcblx0XHRcdFx0XHRcInVwRmlsbFwiOiBcIiNmMDQ4NjRcIixcclxuXHRcdFx0XHRcdFwiZG93bkxpbmVcIjogXCIjMmZjMjViXCIsXHJcblx0XHRcdFx0XHRcImRvd25GaWxsXCI6IFwiIzJmYzI1YlwiXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRcImF2ZXJhZ2VcIjoge1xyXG5cdFx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcblx0XHRcdFx0XHRcIm5hbWVcIjogW1wiTUE1XCIsXCJNQTEwXCIsXCJNQTMwXCJdLFxyXG5cdFx0XHRcdFx0XCJkYXlcIjogWzUsMTAsMjBdLFxyXG5cdFx0XHRcdFx0XCJjb2xvclwiOiBbXCIjMTg5MGZmXCIsXCIjMmZjMjViXCIsXCIjZmFjYzE0XCJdXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcIm1hcmtMaW5lXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJkYXNoXCIsXHJcblx0XHRcdFx0XCJkYXNoTGVuZ3RoXCI6IDUsXHJcblx0XHRcdFx0XCJkYXRhXCI6IFtcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiAyMTUwLFxyXG5cdFx0XHRcdFx0XHRcImxpbmVDb2xvclwiOiBcIiNmMDQ4NjRcIixcclxuXHRcdFx0XHRcdFx0XCJzaG93TGFiZWxcIjogdHJ1ZVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiAyMzUwLFxyXG5cdFx0XHRcdFx0XHRcImxpbmVDb2xvclwiOiBcIiNmMDQ4NjRcIixcclxuXHRcdFx0XHRcdFx0XCJzaG93TGFiZWxcIjogdHJ1ZVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdF1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJtaXhcIjp7XHJcblx0XHRcInR5cGVcIjogXCJtaXhcIixcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzE1LDE1LDAsMTVdLFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuXHRcdFx0XCJkaXNhYmxlZFwiOiBmYWxzZSxcclxuXHRcdFx0XCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuXHRcdFx0XCJzcGxpdE51bWJlclwiOiA1LFxyXG5cdFx0XHRcImdyaWRUeXBlXCI6IFwiZGFzaFwiLFxyXG5cdFx0XHRcImRhc2hMZW5ndGhcIjogNCxcclxuXHRcdFx0XCJncmlkQ29sb3JcIjogXCIjQ0NDQ0NDXCIsXHJcblx0XHRcdFwicGFkZGluZ1wiOiAxMCxcclxuXHRcdFx0XCJzaG93VGl0bGVcIjogdHJ1ZSxcclxuXHRcdFx0XCJkYXRhXCI6IFtdXHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcIm1peFwiOiB7XHJcblx0XHRcdFx0XCJjb2x1bW5cIjoge1xyXG5cdFx0XHRcdFx0XCJ3aWR0aFwiOiAyMFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwic2NhdHRlclwiOntcclxuXHRcdFwidHlwZVwiOiBcInNjYXR0ZXJcIixcclxuXHRcdFwiY29sb3JcIjpjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOlsxNSwxNSwwLDE1XSxcclxuICAgIFwiZGF0YUxhYmVsXCI6ZmFsc2UsXHJcbiAgICBcInhBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuICAgICAgXCJncmlkVHlwZVwiOlwiZGFzaFwiLFxyXG4gICAgICBcInNwbGl0TnVtYmVyXCI6NSxcclxuICAgICAgXCJib3VuZGFyeUdhcFwiOlwianVzdGlmeVwiLFxyXG4gICAgICBcIm1pblwiOjBcclxuICAgIH0sXHJcbiAgICBcInlBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuICAgICAgXCJncmlkVHlwZVwiOlwiZGFzaFwiLFxyXG4gICAgfSxcclxuICAgIFwibGVnZW5kXCI6IHtcclxuICAgIH0sXHJcbiAgICBcImV4dHJhXCI6IHtcclxuICAgIFx0XCJzY2F0dGVyXCI6IHtcclxuICAgIFx0fSxcclxuICAgIH1cclxuXHR9LFxyXG5cdFwiYnViYmxlXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwiYnViYmxlXCIsXHJcblx0XHRcImNvbG9yXCI6Y29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjpbMTUsMTUsMCwxNV0sXHJcbiAgICBcInhBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuICAgICAgXCJncmlkVHlwZVwiOlwiZGFzaFwiLFxyXG4gICAgICBcInNwbGl0TnVtYmVyXCI6NSxcclxuICAgICAgXCJib3VuZGFyeUdhcFwiOlwianVzdGlmeVwiLFxyXG4gICAgICBcIm1pblwiOjAsXHJcbiAgICAgIFwibWF4XCI6MjUwXHJcbiAgICB9LFxyXG4gICAgXCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogZmFsc2UsXHJcbiAgICAgIFwiZ3JpZFR5cGVcIjpcImRhc2hcIixcclxuICAgICAgXCJkYXRhXCI6W3tcclxuICAgICAgICBcIm1pblwiOjAsXHJcbiAgICAgICAgXCJtYXhcIjoxNTBcclxuICAgICAgfV1cclxuICAgIH0sXHJcbiAgICBcImxlZ2VuZFwiOiB7XHJcbiAgICB9LFxyXG4gICAgXCJleHRyYVwiOiB7XHJcbiAgICBcdFwiYnViYmxlXCI6IHtcclxuICAgICAgICBcImJvcmRlclwiOjIsXHJcbiAgICAgICAgXCJvcGFjaXR5XCI6IDAuNSxcclxuICAgIFx0fSxcclxuICAgIH1cclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNmdTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///69\n");
/***/ }),
@@ -5002,11 +5554,15 @@
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Workspace/zy/private/Monitor-APP/pages/home/home.vue?vue&type=script&lang=js&mpType=page ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
>>>>>>> 2af3829f6276675ebe120cda94d628c49c429536
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 _demodata = _interopRequireDefault(__webpack_require__(/*! @/mockdata/demodata.json */ 78));\nvar _data = _interopRequireDefault(__webpack_require__(/*! @/pages/index/data.json */ 101));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 = { data: function data() {return { series: [], homeViewShow: true, infoViewShow: false, errorInfoViewShow: false, homeMode: [], infoMode: [], errorInfoMode: [], baseInfo: { xDistance: 1, yDistance: 2, xDuration: 3, yDuration: 4, usedPr: 50, used: 3537 }, chartsData: { \"Line\": { \"categories\": [], \"series\": [] }, \"Pie\": { \"series\": [{ \"data\": [] }] } }, duration: 1000, calendar: '', ringOpts: {}, chartsDataLine1: {}, chartsDataPie2: {}, fontSize: '', height: '', showCharts: false, ejectShow: false, baseIP: '', basePort: '', baseLedId: '', baseCrnId: '', info: null, error: null, infoType: 0, text: '' };}, onShow: function onShow() {// 隐藏时间,电量,信号等\n    plus.navigator.setFullscreen(true);}, onLoad: function onLoad() {var _this = this;this.getServerData();this.getDate();setInterval(function () {_this.getDate();_this.getInfo();_this.getError();_this.controller();}, 1000); // setInterval(()=>{\n    // \tthis.controller()\n    // },5000)\n  }, methods: { getUrl: function getUrl() {this.commonUrl = this.baseHttp + this.baseIP + ':' + this.basePort + this.baseUrl;}, getServerData: function getServerData() {this.chartsDataLine1 = JSON.parse(JSON.stringify(_demodata.default.Line));this.chartsDataPie2 = JSON.parse(JSON.stringify(_demodata.default.PieA));}, getInfo: function getInfo() {var that = this;var result = _data.default.dataYYY;var res = result.data;__f__(\"log\", res, \" at pages/home/home.vue:365\");if (res.data && res.data !== \"\") {if (this.infoType == 2) {return;}this.infoType = 1;this.text = res;__f__(\"log\", '*******', \" at pages/home/home.vue:372\");} else {this.infoType = 0;}}, getError: function getError() {var that = this;var result = _data.default.dataEEE;var res = result.data;__f__(\"log\", res, \" at pages/home/home.vue:381\");if (res.data && res.data !== \"\") {this.infoType = 2;this.text = res;} else {if (this.infoType == 1) {return;}this.infoType = 0;}}, // 控制器\n    controller: function controller() {__f__(\"log\", this.infoType, \" at pages/home/home.vue:394\");switch (this.infoType) {case 1:this.homeViewShow = false;this.infoViewShow = true;this.errorInfoViewShow = false;this.infoMode = ['fade', 'slide-bottom'];return;case 2:this.homeViewShow = false;this.infoViewShow = false;this.errorInfoViewShow = true;this.infoMode = ['fade', 'slide-bottom'];return;default:this.homeViewShow = true;this.infoViewShow = false;this.errorInfoViewShow = false;this.infoMode = ['fade', 'slide-bottom'];return;}}, // 主屏幕\n    handle: function handle(type) {this.homeViewShow = !this.homeViewShow;this.modeClass = type;}, // 拣料\n    handle1: function handle1(type) {this.infoViewShow = !this.infoViewShow;this.modeClass = type;}, // 异常\n    handle2: function handle2(type) {this.errorInfoViewShow = !this.errorInfoViewShow;this.modeClass = type;}, // 配置\n    ejected: function ejected() {this.ejectShow = true;}, // 取消配置\n    ejectClose: function ejectClose() {this.ejectShow = false;}, // 确认配置\n    ejectConfirm: function ejectConfirm() {uni.setStorageSync('BaseIp', this.baseIP);uni.setStorageSync('BaseLedId', this.baseLedId);uni.setStorageSync('BasePort', this.basePort);uni.setStorageSync('BaseCrnId', this.baseCrnId);this.getUrl();this.ejectShow = false;}, // 日历\n    getDate: function getDate() {var dt = new Date();var year, month, day, hours, minutes, seconds, weeks;year = dt.getFullYear();month = dt.getMonth() + 1 < 10 ? '0' + (dt.getMonth() + 1) : dt.getMonth() + 1;day = dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate();hours = dt.getHours() < 10 ? '0' + dt.getHours() : dt.getHours();minutes = dt.getMinutes() < 10 ? '0' + dt.getMinutes() : dt.getMinutes();seconds = dt.getSeconds() < 10 ? '0' + dt.getSeconds() : dt.getSeconds();weeks = dt.getDay();switch (weeks) {case 0:weeks = \"星期日\";break;case 1:weeks = \"星期一\";break;case 2:weeks = \"星期二\";break;case 3:weeks = \"星期三\";break;case 4:weeks = \"星期四\";break;case 5:weeks = \"星期五\";break;default:weeks = \"星期六\";}this.calendar = year + \"年\" + month + \"月\" + day + \"日 \" + hours + \":\" + minutes + \":\" + seconds + \" \" + weeks;}, getDateFormat: function getDateFormat(value) {var date = new Date(); // 获取当前时间\n      date.setDate(date.getDate() + value); // 设置天数 -1 天\n      var m = date.getMonth() + 1;var d = date.getDate();var newDate = m + '-' + d;return newDate;}, /*************** 折线图 *****************************************************************************************************/initlineChart: function initlineChart() {var that = this;uni.request({ url: that.commonUrl + \"/monitor/line/charts\", method: 'GET', success: function success(result) {var res = result.data;if (res.code === 200) {that.chartsData.Line.categories = [that.getDateFormat(-11), that.getDateFormat(-10), that.getDateFormat(-9), that.getDateFormat(-8), that.getDateFormat(-7), that.getDateFormat(-6), that.getDateFormat(-5), that.getDateFormat(-4), that.getDateFormat(-3), that.getDateFormat(-2), that.getDateFormat(-1), that.getDateFormat(0)];that.chartsData.Line.series = res.data.rows;}} });}, /*************** 饼图 *****************************************************************************************************/initPieChart: function initPieChart() {var that = this;uni.request({ url: that.commonUrl + \"/monitor/loc/rep\", method: 'GET', success: function success(result) {var res = result.data;if (res.code === 200) {that.chartsData.Pie.series[0].data = res.data.pie;that.stockCount = res.data.stockCunt;that.emptyCount = res.data.emptyCount;that.noneCount = res.data.noneCount;that.used = res.data.used;that.usedPr = res.data.usedPr;}} });}, getOther: function getOther() {var that = this;uni.request({ // http://10.10.0.222:9090/jkwcs/monitor/led?ledId=186\n        url: that.commonUrl + \"/monitor/other\", data: { crnId: that.baseCrnId, ledId: 1 }, success: function success(result) {__f__(\"log\", result, \" at pages/home/home.vue:526\");var res = result.data;if (res.code === 200) {that.xDistance = res.data.xDistance;that.yDistance = res.data.yDistance;that.xDuration = res.data.xDuration;that.yDuration = res.data.yDuration;} else if (res.code === 403) {} else {}} });} } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 10)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaG9tZS9ob21lLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1UkE7QUFDQSw0Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFDQSxFQUNBLElBREEsa0JBQ0EsQ0FDQSxTQUNBLFVBREEsRUFFQSxrQkFGQSxFQUdBLG1CQUhBLEVBSUEsd0JBSkEsRUFLQSxZQUxBLEVBTUEsWUFOQSxFQU9BLGlCQVBBLEVBUUEsWUFDQSxZQURBLEVBRUEsWUFGQSxFQUdBLFlBSEEsRUFJQSxZQUpBLEVBS0EsVUFMQSxFQU1BLFVBTkEsRUFSQSxFQWdCQSxjQUNBLFVBQ0EsZ0JBREEsRUFFQSxZQUZBLEVBREEsRUFLQSxTQUNBLGFBQ0EsVUFEQSxHQURBLEVBTEEsRUFoQkEsRUEyQkEs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OEJBQ0EsQ0FDQSxDQWJBLElBZUEsQ0FuS0EsRUFvS0EsUUFwS0Esc0JBb0tBLENBQ0EsZ0JBQ0EsY0FDQTtBQUNBLDhDQUZBLEVBR0EsUUFDQSxxQkFEQSxFQUVBLFFBRkEsRUFIQSxFQU9BLE9BUEEsbUJBT0EsTUFQQSxFQU9BLENBQ0Esb0RBQ0Esc0JBQ0EsdUJBQ0Esb0NBQ0Esb0NBQ0Esb0NBQ0Esb0NBQ0EsQ0FMQSxNQUtBLHVCQUVBLENBRkEsTUFFQSxDQUVBLENBQ0EsQ0FwQkEsSUFzQkEsQ0E1TEEsRUF0RUEsRSIsImZpbGUiOiI3Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG5cdFx0PCEtLSDkuLvop4blm74gLS0+XHJcblx0XHQ8dW5pLXRyYW5zaXRpb24gOmR1cmF0aW9uPVwiZHVyYXRpb25cIiA6bW9kZS1jbGFzcz1cImhvbWVNb2RlXCIgOnNob3c9XCJob21lVmlld1Nob3dcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJob21lLXZpZXdcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImhlYWRcIj5cclxuXHRcdFx0XHRcdDx0ZXh0PuiHquWKqOS7k+W6k1dDU+ebkeaOp+W5s+WPsDwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSDml6XljoYgLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aW1lLXRvb2xzXCI+e3tjYWxlbmRhcn19PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLWxlZnRcIiBAY2xpY2s9XCJlamVjdGVkKClcIj48L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24tcmlnaHRcIiBAY2xpY2s9XCJlamVjdGVkKClcIj48L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSDkuLvkvZMgLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtYWluXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm1pYW4taXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm1pYW4taXRlbS1ib3hcIj5cclxuXHRcdFx0XHRcdFx0XHQ8eS1ib3g+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS10aXRsZVwiPuiHquWKqOWMlueri+S9k+S7k+W6kzwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+QXV0b21hdGljIFN0b3JhZ2VhbmQgUmV0cmlldmFsIFN5c3RlbTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRleHRcIiBzdHlsZT1cInRleHQtYWxpZ246IGxlZnQ7XCI+5Yip55So56uL5L2T5LuT5bqT6K6+5aSH5Y+v5a6e546w5LuT5bqT6auY5bGC5ZCI55CG5YyW44CB5a2Y5Y+W6Ieq5Yqo5YyW44CB5pON5L2c566A5L6/5YyW77yb6Ieq5Yqo5YyW56uL5L2T5LuT5bqT5piv5b2T5YmN5oqA5pyv5rC05bmz6L6D6auY55qE5b2i5byP44CC6Ieq5Yqo5YyW56uL5L2T5LuT5bqT55qE5Li75L2T55Sx6LSn5p6244CB5be36YGT5byP5aCG5Z6b6LW36YeN5py644CB5YWl77yI5Ye677yJ5bqT5bel5L2c5Y+w5ZKM6Ieq5Yqo6L+Q6L+b77yI5Ye677yJ5Y+K5pON5L2c5o6n5Yi257O757uf57uE5oiQ44CC6LSn5p625piv6ZKi57uT5p6E5oiW6ZKi562L5re35Yed5Zyf57uT5p6E55qE5bu6562R54mp5oiW57uT5p6E5L2T77yM6LSn5p625YaF5piv5qCH5YeG5bC65a+455qE6LSn5L2N56m66Ze077yM5be36YGT5aCG5Z6b6LW36YeN5py656m/6KGM5LqO6LSn5p625LmL6Ze055qE5be36YGT5Lit77yM5a6M5oiQ5a2Y44CB5Y+W6LSn55qE5bel5L2c44CC566h55CG5LiK6YeH55So6K6h566X5py65Y+K5p2h5b2i56CB5oqA5pyv44CCPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tdGl0bGVcIj7ku5PlupPmlbDmja48L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS1zdWJUaXRsZVwiPndhcmVob3VzZSBkYXRhPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImltZy1ib3hcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW0taW1nXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2ExLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwid2lkdGg6IGNhbGMoMTAwJSAtIDV2dyk7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3dcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIiA+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMnZ3O3BhZGRpbmctbGVmdDogNXZ3Oztmb250LXNpemU6IDJ2dztcIj57e2Jhc2VJbmZvLnhEaXN0YW5jZX19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO2JvdHRvbTogMDtsZWZ0OiA3dnc7XCI+bTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDogMTAwJTt0ZXh0LWFsaWduOiBsZWZ0O3RleHQtaW5kZW50OiAyZW07XCI+57Sv6K6h6LWw6KGM6Led56a7KOexsyk8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbS1pbWdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvYjEucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJ3aWR0aDogY2FsYygxMDAlIC0gNXZ3KTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvd1wiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiID5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAydnc7cGFkZGluZy1sZWZ0OiA1dnc7O2ZvbnQtc2l6ZTogMnZ3O1wiPnt7YmFzZUluZm8ueURpc3RhbmNlfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7Ym90dG9tOiAwO2xlZnQ6IDd2dztcIj5tPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiAxMDAlO3RleHQtYWxpZ246IGxlZnQ7dGV4dC1pbmRlbnQ6IDJlbTtcIj7ntK/orqHljYfpmY3ot53nprso57GzKTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtLWltZ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9jMS5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1jb2xcIiBzdHlsZT1cIndpZHRoOiBjYWxjKDEwMCUgLSA1dncpO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93XCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDJ2dztwYWRkaW5nLWxlZnQ6IDV2dzs7Zm9udC1zaXplOiAydnc7XCI+e3tiYXNlSW5mby54RHVyYXRpb259fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtib3R0b206IDA7bGVmdDogN3Z3O1wiPnM8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7dGV4dC1hbGlnbjogbGVmdDt0ZXh0LWluZGVudDogMmVtO1wiPue0r+iuoei1sOihjOaXtumVvyjnp5IpPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW0taW1nXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2QxLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwid2lkdGg6IGNhbGMoMTAwJSAtIDV2dyk7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3dcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIiA+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMnZ3O3BhZGRpbmctbGVmdDogNXZ3Oztmb250LXNpemU6IDJ2dztcIj57e2Jhc2VJbmZvLnlEdXJhdGlvbn19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO2JvdHRvbTogMDtsZWZ0OiA3dnc7XCI+czwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDogMTAwJTt0ZXh0LWFsaWduOiBsZWZ0O3RleHQtaW5kZW50OiAyZW07XCI+57Sv6K6h5Y2H6ZmN5pe26ZW/KOenkik8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3dcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5bem5L6nIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1jb2xcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O2p1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS10aXRsZVwiPuW6k+S9jeS9v+eUqOeOhzwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS1zdWJUaXRsZVwiPkVRVUlQTUVOVCBVU0FHRSBUSElTIE1PTlRIPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOWPs+S+pyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIm1hcmdpbi1sZWZ0OiBhdXRvO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDnmb7liIbmr5QgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1lbmQ7anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcIiA+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gc3R5bGU9XCJqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDA7cmlnaHQ6IDF2dzt0ZXh0LWFsaWduOiByaWdodDtcIiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+e3tiYXNlSW5mby51c2VkUHJ9fSU8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS1zdWJUaXRsZVwiPuWQjOavlOS4iuaciCArIDUlPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7cG9zaXRpb246IHJlbGF0aXZlO2ZvbnQtc2l6ZTogMXZ3XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDov5vluqbmnaEgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvd1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7cG9zaXRpb246IHJlbGF0aXZlO21hcmdpbi10b3A6IDUlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwcm9ncmVzc0JhclwiIHN0eWxlPVwid2lkdGg6IDgwJTtoZWlnaHQ6IDJ2dztcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwcm9ncmVzc1wiIDpzdHlsZT1cIid3aWR0aDonKyBiYXNlSW5mby51c2VkUHIgKyAnJSdcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtib3R0b206IDA7cmlnaHQ6IDA7Zm9udC1zaXplOiAyLjV2dztjb2xvcjogI0ZGNTcyMjs7XCI+e3tiYXNlSW5mby51c2VkfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC95LWJveD5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtaWFuLWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtaWFuLWl0ZW0tYm94XCI+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDogMzUlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOaKmOe6v+WbviAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHktYm94PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3dcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOW3puS+pyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS10aXRsZVwiPuWFpeWHuuW6k+e7n+iuoTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tc3ViVGl0bGVcIj5PUkRFUiBTVEFUSVNUSUNTPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5Y+z5L6nIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIm1hcmdpbi1sZWZ0OiBhdXRvO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g55m+5YiG5q+UIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1jb2xcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LWVuZDtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1wiID5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gc3R5bGU9XCJqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDA7cmlnaHQ6IDF2dzt0ZXh0LWFsaWduOiByaWdodDtcIiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS10aXRsZVwiPjMxPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+5LuK5pel6K6i5Y2V5pWwPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJjaGFydHMtYm94XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxxaXVuLWRhdGEtY2hhcnRzIHR5cGU9XCJsaW5lXCIgOmNoYXJ0RGF0YT1cImNoYXJ0c0RhdGFMaW5lMVwiIDplY2hhcnRzSDU9XCJ0cnVlXCIgOmVjaGFydHNBcHA9XCJ0cnVlXCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC95LWJveD5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIG51bGwgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDogMiU7XCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiA0MyU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx5LWJveD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDlt6bkvqcgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1jb2xcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O2p1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tdGl0bGVcIj7lupPlrZjnsbvlnos8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+SU5DT01FIERBVEU8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDlj7PkvqcgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDnmb7liIbmr5QgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtZW5kO2p1c3RpZnktY29udGVudDogZmxleC1lbmQ7XCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+5LuK5aSpPC90ZXh0PiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS1zdWJUaXRsZVwiPlRvZGF5PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvd1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5bemIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImNoYXJ0cy1ib3gtcmluZ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxxaXVuLWRhdGEtY2hhcnRzIHR5cGU9XCJyaW5nXCIgOm9wdHM9XCJ7bGVnZW5kOntwb3NpdGlvbjonYm90dG9tJ319XCIgOmVvcHRzPVwicmluZ09wdHNcIiA6Y2hhcnREYXRhPVwiY2hhcnRzRGF0YVBpZTJcIiA6ZWNoYXJ0c0g1PVwidHJ1ZVwiIDplY2hhcnRzQXBwPVwidHJ1ZVwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOWPsyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvdyBzdWItaW5mb1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9nMS5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDh2dztoZWlnaHQ6IDR2dztsaW5lLWhlaWdodDogNHZ3O1wiPuWcqOW6kzwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDh2dztoZWlnaHQ6IDR2dztsaW5lLWhlaWdodDogNHZ3O2ZvbnQtc2l6ZTogMnZ3O1wiPjEwMDAwPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93IHN1Yi1pbmZvXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAydmg7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2cxLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogOHZ3O2hlaWdodDogNHZ3O2xpbmUtaGVpZ2h0OiA0dnc7XCI+5Zyo5bqTPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogOHZ3O2hlaWdodDogNHZ3O2xpbmUtaGVpZ2h0OiA0dnc7Zm9udC1zaXplOiAydnc7XCI+MTAwMDA8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3cgc3ViLWluZm9cIiBzdHlsZT1cIm1hcmdpbi10b3A6IDJ2aDtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvZzEucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA4dnc7aGVpZ2h0OiA0dnc7bGluZS1oZWlnaHQ6IDR2dztcIj7lnKjlupM8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA4dnc7aGVpZ2h0OiA0dnc7bGluZS1oZWlnaHQ6IDR2dztmb250LXNpemU6IDJ2dztcIj4xMDAwMDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwveS1ib3g+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDogMiU7XCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDE4JTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHktYm94PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1jb2xcIiBzdHlsZT1cIndpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtmb250LXNpemU6IDR2aDtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtsZXR0ZXItc3BhY2luZzogMXZoO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx05ZiJ5ZaE6L656ZSL5py65qKw6IKh5Lu95pyJ6ZmQ5YWs5Y+4XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ktYm94PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC91bmktdHJhbnNpdGlvbj5cclxuXHRcdDwhLS0g5YWo5p2/L+aLo+aWmeS/oeaBryAtLT5cclxuXHRcdDx1bmktdHJhbnNpdGlvbiA6ZHVyYXRpb249XCJkdXJhdGlvblwiIDptb2RlLWNsYXNzPVwiaW5mb01vZGVcIiA6c2hvdz1cImluZm9WaWV3U2hvd1wiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImluZm8tdmlld1wiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaGVhZFwiPlxyXG5cdFx0XHRcdFx0PHRleHQ+5oujIOaWmTwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSDml6XljoYgLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aW1lLXRvb2xzXCI+e3tjYWxlbmRhcn19PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLWxlZnRcIj48L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24tcmlnaHRcIj48L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSDkuLvkvZMgLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbmZvLW1haW5cIiA+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImluZm8tYm94XCI+XHJcblx0XHRcdFx0XHRcdDx5LWJveD57e3RleHR9fTwveS1ib3g+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3VuaS10cmFuc2l0aW9uPlxyXG5cdFx0PCEtLSDlvILluLjkv6Hmga8gLS0+XHJcblx0XHQ8dW5pLXRyYW5zaXRpb24gOmR1cmF0aW9uPVwiZHVyYXRpb25cIiA6bW9kZS1jbGFzcz1cImVycm9ySW5mb01vZGVcIiA6c2hvdz1cImVycm9ySW5mb1ZpZXdTaG93XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiZXJyb3ItaW5mby12aWV3XCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoZWFkXCI+XHJcblx0XHRcdFx0XHQ8dGV4dD7lvILluLg8L3RleHQ+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwhLS0g5pel5Y6GIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidGltZS10b29sc1wiPnt7Y2FsZW5kYXJ9fTwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1sZWZ0XCI+PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLXJpZ2h0XCI+PC92aWV3PlxyXG5cdFx0XHRcdDwhLS0g5Li75L2TIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5mby1tYWluXCIgPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbmZvLWJveFwiPlxyXG5cdFx0XHRcdFx0XHQ8eS1ib3g+PC95LWJveD5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdW5pLXRyYW5zaXRpb24+XHJcblx0XHRcclxuXHRcdDwhLS0g6Ieq5a6a5LmJ5by55Ye65bGCIC0tPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJlamVjdC1tYXNrXCIgdi1zaG93PVwiZWplY3RTaG93XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiZWplY3RcIj5cclxuXHRcdFx0XHQ8IS0tIOW8ueWHunRpdGxlIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiZWplY3QtdGl0bGVcIj7kv67mlLkgLyDphY3nva48L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSBpbnB1dCAtLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImVqZWN0LWlucHV0XCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW1cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkZXNjXCI+aXDvvJo8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiYmFzZUlQXCI+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj5wb3J077yaPC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCI+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cImJhc2VQb3J0XCI+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj5sZWRJZO+8mjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJiYXNlTGVkSWRcIj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY1wiPkNybklk77yaPC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCI+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cImJhc2VDcm5JZFwiPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwhLS0gYnV0dG9uIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiZWplY3QtYnV0dG9uXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1pdGVtXCIgQGNsaWNrPVwiZWplY3RDbG9zZVwiPuWPliDmtog8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1pdGVtXCIgQGNsaWNrPVwiZWplY3RDb25maXJtXCI+56GuIOiupDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCBkZW1vZGF0YSBmcm9tICdAL21vY2tkYXRhL2RlbW9kYXRhLmpzb24nO1xyXG5cdGltcG9ydCB5Y3FkYXRhIGZyb20gJ0AvcGFnZXMvaW5kZXgvZGF0YS5qc29uJztcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHNlcmllczogW10sXHJcblx0XHRcdFx0aG9tZVZpZXdTaG93OiB0cnVlLFxyXG5cdFx0XHRcdGluZm9WaWV3U2hvdzogZmFsc2UsXHJcblx0XHRcdFx0ZXJyb3JJbmZvVmlld1Nob3c6IGZhbHNlLFxyXG5cdFx0XHRcdGhvbWVNb2RlOiBbXSxcclxuXHRcdFx0XHRpbmZvTW9kZTogW10sXHJcblx0XHRcdFx0ZXJyb3JJbmZvTW9kZTogW10sXHJcblx0XHRcdFx0YmFzZUluZm86IHtcclxuXHRcdFx0XHRcdHhEaXN0YW5jZTogMSxcclxuXHRcdFx0XHRcdHlEaXN0YW5jZTogMixcclxuXHRcdFx0XHRcdHhEdXJhdGlvbjogMyxcclxuXHRcdFx0XHRcdHlEdXJhdGlvbjogNCxcclxuXHRcdFx0XHRcdHVzZWRQcjogNTAsXHJcblx0XHRcdFx0XHR1c2VkOiAzNTM3XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRjaGFydHNEYXRhOiB7XHJcblx0XHRcdFx0XHRcIkxpbmVcIjoge1xyXG5cdFx0XHRcdFx0XHRcImNhdGVnb3JpZXNcIjogW10sXHJcblx0XHRcdFx0XHRcdFwic2VyaWVzXCI6IFtdXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XCJQaWVcIjoge1xyXG5cdFx0XHRcdFx0XHRcInNlcmllc1wiOiBbe1xyXG5cdFx0XHRcdFx0XHRcdFwiZGF0YVwiOiBbXVxyXG5cdFx0XHRcdFx0XHR9XVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGR1cmF0aW9uOiAxMDAwLFxyXG5cdFx0XHRcdGNhbGVuZGFyOiAnJyxcclxuXHRcdFx0XHRyaW5nT3B0czp7fSxcclxuXHRcdFx0XHRjaGFydHNEYXRhTGluZTE6IHt9LFxyXG5cdFx0XHRcdGNoYXJ0c0RhdGFQaWUyOiB7fSxcclxuXHRcdFx0XHRmb250U2l6ZTogJycsXHJcblx0XHRcdFx0aGVpZ2h0OiAnJyxcclxuXHRcdFx0XHRzaG93Q2hhcnRzOiBmYWxzZSxcclxuXHRcdFx0XHRlamVjdFNob3c6IGZhbHNlLFxyXG5cdFx0XHRcdGJhc2VJUDogJycsXHJcblx0XHRcdFx0YmFzZVBvcnQ6ICcnLFxyXG5cdFx0XHRcdGJhc2VMZWRJZDogJycsXHJcblx0XHRcdFx0YmFzZUNybklkOiAnJyxcclxuXHRcdFx0XHRpbmZvOiBudWxsLFxyXG5cdFx0XHRcdGVycm9yOiBudWxsLFxyXG5cdFx0XHRcdGluZm9UeXBlOiAwLFxyXG5cdFx0XHRcdHRleHQ6ICcnLFxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0b25TaG93KCkge1xyXG5cdFx0XHQvLyDpmpDol4/ml7bpl7Qs55S16YePLOS/oeWPt+etiVxyXG5cdFx0XHQvLyAjaWZkZWYgQVBQLVBMVVNcclxuXHRcdFx0cGx1cy5uYXZpZ2F0b3Iuc2V0RnVsbHNjcmVlbih0cnVlKVxyXG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdH0sXHJcblx0XHRvbkxvYWQoKSB7XHJcblx0XHRcdHRoaXMuZ2V0U2VydmVyRGF0YSgpXHJcblx0XHRcdHRoaXMuZ2V0RGF0ZSgpXHJcblx0XHRcdHNldEludGVydmFsKCgpPT57XHJcblx0XHRcdFx0dGhpcy5nZXREYXRlKClcclxuXHRcdFx0XHR0aGlzLmdldEluZm8oKVxyXG5cdFx0XHRcdHRoaXMuZ2V0RXJyb3IoKVxyXG5cdFx0XHRcdHRoaXMuY29udHJvbGxlcigpXHJcblx0XHRcdH0sMTAwMClcclxuXHRcdFx0Ly8gc2V0SW50ZXJ2YWwoKCk9PntcclxuXHRcdFx0Ly8gXHR0aGlzLmNvbnRyb2xsZXIoKVxyXG5cdFx0XHQvLyB9LDUwMDApXHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRnZXRVcmwoKSB7XHJcblx0XHRcdFx0dGhpcy5jb21tb25VcmwgPSB0aGlzLmJhc2VIdHRwICsgdGhpcy5iYXNlSVAgKyAnOicgK3RoaXMuYmFzZVBvcnQgKyB0aGlzLmJhc2VVcmxcclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0U2VydmVyRGF0YSgpIHtcclxuXHRcdFx0XHR0aGlzLmNoYXJ0c0RhdGFMaW5lMT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRlbW9kYXRhLkxpbmUpKVxyXG5cdFx0XHRcdHRoaXMuY2hhcnRzRGF0YVBpZTI9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkZW1vZGF0YS5QaWVBKSlcclxuXHRcdFx0fSxcclxuXHRcdFx0XHJcblx0XHRcdGdldEluZm8oKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dmFyIHJlc3VsdCA9IHljcWRhdGEuZGF0YVlZWVxyXG5cdFx0XHRcdHZhclx0cmVzID0gcmVzdWx0LmRhdGFcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gXCJcIikge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuaW5mb1R5cGUgPT0gMikge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLmluZm9UeXBlID0gMVxyXG5cdFx0XHRcdFx0dGhpcy50ZXh0ID0gcmVzXHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnKioqKioqKicpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aGlzLmluZm9UeXBlID0gMFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0RXJyb3IoKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dmFyIHJlc3VsdCA9IHljcWRhdGEuZGF0YUVFRVxyXG5cdFx0XHRcdHZhclx0cmVzID0gcmVzdWx0LmRhdGFcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gXCJcIikge1xyXG5cdFx0XHRcdFx0dGhpcy5pbmZvVHlwZSA9IDJcclxuXHRcdFx0XHRcdHRoaXMudGV4dCA9IHJlc1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5pbmZvVHlwZSA9PSAxKSB7XHJcblx0XHRcdFx0XHRcdHJldHVyblxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5pbmZvVHlwZSA9IDBcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOaOp+WItuWZqFxyXG5cdFx0XHRjb250cm9sbGVyKCkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuaW5mb1R5cGUpO1xyXG5cdFx0XHRcdHN3aXRjaCh0aGlzLmluZm9UeXBlKSB7XHJcblx0XHRcdFx0XHRjYXNlIDE6IFxyXG5cdFx0XHRcdFx0XHR0aGlzLmhvbWVWaWV3U2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdHRoaXMuaW5mb1ZpZXdTaG93ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0dGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRjYXNlIDI6XHJcblx0XHRcdFx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0dGhpcy5pbmZvVmlld1Nob3cgPSBmYWxzZVxyXG5cdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHR0aGlzLmluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdGRlZmF1bHQgOlxyXG5cdFx0XHRcdFx0XHR0aGlzLmhvbWVWaWV3U2hvdyA9IHRydWVcclxuXHRcdFx0XHRcdFx0dGhpcy5pbmZvVmlld1Nob3cgPSBmYWxzZVxyXG5cdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0dGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDkuLvlsY/luZVcclxuXHRcdFx0aGFuZGxlKHR5cGUpIHtcclxuXHRcdFx0XHR0aGlzLmhvbWVWaWV3U2hvdyA9ICF0aGlzLmhvbWVWaWV3U2hvd1xyXG5cdFx0XHRcdHRoaXMubW9kZUNsYXNzID0gdHlwZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDmi6PmlplcclxuXHRcdFx0aGFuZGxlMSh0eXBlKSB7XHJcblx0XHRcdFx0dGhpcy5pbmZvVmlld1Nob3cgPSAhdGhpcy5pbmZvVmlld1Nob3dcclxuXHRcdFx0XHR0aGlzLm1vZGVDbGFzcyA9IHR5cGVcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5byC5bi4XHJcblx0XHRcdGhhbmRsZTIodHlwZSkge1xyXG5cdFx0XHRcdHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSAhdGhpcy5lcnJvckluZm9WaWV3U2hvd1xyXG5cdFx0XHRcdHRoaXMubW9kZUNsYXNzID0gdHlwZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDphY3nva5cclxuXHRcdFx0ZWplY3RlZCAoKSB7XHJcblx0XHRcdFx0dGhpcy5lamVjdFNob3cgPSB0cnVlXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOWPlua2iOmFjee9rlxyXG5cdFx0XHRlamVjdENsb3NlKCkge1xyXG5cdFx0XHRcdHRoaXMuZWplY3RTaG93ID0gZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g56Gu6K6k6YWN572uXHJcblx0XHRcdGVqZWN0Q29uZmlybSgpIHtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VJcCcsIHRoaXMuYmFzZUlQKTtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VMZWRJZCcsIHRoaXMuYmFzZUxlZElkKTtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VQb3J0Jyx0aGlzLmJhc2VQb3J0KTtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VDcm5JZCcsdGhpcy5iYXNlQ3JuSWQpO1xyXG5cdFx0XHRcdHRoaXMuZ2V0VXJsKClcclxuXHRcdFx0XHR0aGlzLmVqZWN0U2hvdyA9IGZhbHNlXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOaXpeWOhlxyXG5cdFx0XHRnZXREYXRlKCkge1xyXG5cdFx0XHRcdHZhciBkdCA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdFx0dmFyIHllYXIsbW9udGgsZGF5LGhvdXJzLG1pbnV0ZXMsc2Vjb25kcyx3ZWVrc1xyXG5cdFx0XHRcdHllYXIgPSBkdC5nZXRGdWxsWWVhcigpO1xyXG5cdFx0XHRcdG1vbnRoID0gKGR0LmdldE1vbnRoKCkrMSkgPCAxMCA/ICcwJysgKGR0LmdldE1vbnRoKCkrMSkgOiAoZHQuZ2V0TW9udGgoKSsxKTtcclxuXHRcdFx0XHRkYXkgPSBkdC5nZXREYXRlKCkgPCAxMCA/ICcwJytkdC5nZXREYXRlKCkgOiBkdC5nZXREYXRlKCk7XHJcblx0XHRcdFx0aG91cnMgPSBkdC5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkdC5nZXRIb3VycygpIDogZHQuZ2V0SG91cnMoKTtcclxuXHRcdFx0XHRtaW51dGVzID0gZHQuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBkdC5nZXRNaW51dGVzKCkgOiBkdC5nZXRNaW51dGVzKCk7XHJcblx0XHRcdFx0c2Vjb25kcyA9IGR0LmdldFNlY29uZHMoKSA8IDEwID8gJzAnICsgZHQuZ2V0U2Vjb25kcygpIDogZHQuZ2V0U2Vjb25kcygpOyBcclxuXHRcdFx0XHR3ZWVrcyA9IGR0LmdldERheSgpOyBcclxuXHRcdFx0XHRzd2l0Y2ggKHdlZWtzKSB7XHJcblx0XHRcdFx0XHRjYXNlIDA6IHdlZWtzID0gXCLmmJ/mnJ/ml6VcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDE6IHdlZWtzID0gXCLmmJ/mnJ/kuIBcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDI6IHdlZWtzID0gXCLmmJ/mnJ/kuoxcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDM6IHdlZWtzID0gXCLmmJ/mnJ/kuIlcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDQ6IHdlZWtzID0gXCLmmJ/mnJ/lm5tcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDU6IHdlZWtzID0gXCLmmJ/mnJ/kupRcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRkZWZhdWx0IDogd2Vla3MgPSBcIuaYn+acn+WFrVwiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmNhbGVuZGFyID0geWVhciArIFwi5bm0XCIgKyBtb250aCArIFwi5pyIXCIgKyBkYXkgKyBcIuaXpSBcIiArIGhvdXJzICsgXCI6XCIgKyBtaW51dGVzICsgXCI6XCIgKyBzZWNvbmRzICsgXCIgXCIgKyB3ZWVrc1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXREYXRlRm9ybWF0KHZhbHVlKSB7XHJcblx0XHRcdFx0XHRcdFx0dmFyIGRhdGUgPSBuZXcgRGF0ZSgpOy8vIOiOt+WPluW9k+WJjeaXtumXtFxyXG5cdFx0XHRcdFx0XHRcdGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIHZhbHVlKTsvLyDorr7nva7lpKnmlbAgLTEg5aSpXHJcblx0XHRcdFx0XHRcdFx0dmFyIG0gPSBkYXRlLmdldE1vbnRoKCkgKyAxXHJcblx0XHRcdFx0XHRcdFx0dmFyIGQgPSBkYXRlLmdldERhdGUoKVxyXG5cdFx0XHRcdFx0XHRcdHZhciBuZXdEYXRlID0gbSArICctJyArIGRcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3RGF0ZVxyXG5cdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHQvKioqKioqKioqKioqKioqIOaKmOe6v+WbviAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHRcdFx0XHRcdFx0aW5pdGxpbmVDaGFydCgpIHtcclxuXHRcdFx0XHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9saW5lL2NoYXJ0c1wiLFxyXG5cdFx0XHRcdFx0XHRcdFx0bWV0aG9kOidHRVQnLFxyXG5cdFx0XHRcdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5jaGFydHNEYXRhLkxpbmUuY2F0ZWdvcmllcyA9IFtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMTEpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMTApLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtOSksdGhhdC5nZXREYXRlRm9ybWF0KC04KSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNyksdGhhdC5nZXREYXRlRm9ybWF0KC02KSx0aGF0LmdldERhdGVGb3JtYXQoLTUpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNCksXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LmdldERhdGVGb3JtYXQoLTMpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMiksdGhhdC5nZXREYXRlRm9ybWF0KC0xKSx0aGF0LmdldERhdGVGb3JtYXQoMCksXVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuY2hhcnRzRGF0YS5MaW5lLnNlcmllcyA9IHJlcy5kYXRhLnJvd3NcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdC8qKioqKioqKioqKioqKiog6aW85Zu+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5cdFx0XHRcdFx0XHRpbml0UGllQ2hhcnQoKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbG9jL3JlcFwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0bWV0aG9kOidHRVQnLFxyXG5cdFx0XHRcdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5jaGFydHNEYXRhLlBpZS5zZXJpZXNbMF0uZGF0YSA9IHJlcy5kYXRhLnBpZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuc3RvY2tDb3VudCA9IHJlcy5kYXRhLnN0b2NrQ3VudFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuZW1wdHlDb3VudCA9IHJlcy5kYXRhLmVtcHR5Q291bnRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0Lm5vbmVDb3VudCA9IHJlcy5kYXRhLm5vbmVDb3VudFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQudXNlZCA9IHJlcy5kYXRhLnVzZWRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnVzZWRQciA9IHJlcy5kYXRhLnVzZWRQclxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0Z2V0T3RoZXIoKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cDovLzEwLjEwLjAuMjIyOjkwOTAvamt3Y3MvbW9uaXRvci9sZWQ/bGVkSWQ9MTg2XHJcblx0XHRcdFx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9vdGhlclwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRjcm5JZDogdGhhdC5iYXNlQ3JuSWQsIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRsZWRJZDogMSxcclxuXHRcdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzID0gcmVzdWx0LmRhdGFcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnhEaXN0YW5jZSA9IHJlcy5kYXRhLnhEaXN0YW5jZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQueURpc3RhbmNlID0gcmVzLmRhdGEueURpc3RhbmNlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdC54RHVyYXRpb24gPSByZXMuZGF0YS54RHVyYXRpb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnlEdXJhdGlvbiA9IHJlcy5kYXRhLnlEdXJhdGlvblxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHJlcy5jb2RlID09PSA0MDMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHR9XHJcblx0XHRcclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlPlxyXG5cdEBpbXBvcnQgdXJsKFwiLi4vLi4vc3RhdGljL2Nzcy9jb21tb24uY3NzXCIpO1xyXG5cdC8qIOWIlyAqL1xyXG5cdC5mbGV4LWNvbCB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHR9XHJcblx0Lyog6KGMICovXHJcblx0LmZsZXgtcm93IHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdH1cclxuXHRcclxuXHQuY29udGFpbmVye1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0bWluLWhlaWdodDogMTAwdmg7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDAxNjNFO1xyXG5cdFx0Y29sb3I6ICNmZmY7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcclxuXHR9XHJcblx0Lyog5Li76KeG5Zu+ICovXHJcblx0LmhvbWUtdmlldyB7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRtaW4taGVpZ2h0OiAxMDB2aDtcclxuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvYmFja2dyb3VuZC5wbmcpO1xyXG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDB2dyAxMDB2aDtcclxuXHR9XHJcblx0LmhvbWUtcmlnaHQge1xyXG5cdFx0d2lkdGg6IDUwdnc7XHJcblx0XHRoZWlnaHQ6IDg5dmg7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiBjYWRldGJsdWU7ICovXHJcblx0fVxyXG5cdC5ob21lLXJpZ2h0LWJveCB7XHJcblx0XHR3aWR0aDogOTglO1xyXG5cdFx0aGVpZ2h0OiA5OCU7XHJcblx0fVxyXG5cdC5oZWFkIHtcclxuXHRcdHdpZHRoOiAxMDB2dztcclxuXHRcdGhlaWdodDogMTF2aDtcclxuXHRcdGZvbnQtc2l6ZTo0dnc7XHJcblx0XHRmb250LXdlaWdodDogNzAwO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdHRyYW5zZm9ybTogc2NhbGUoMC43KTtcclxuXHR9XHJcblx0LnRpbWUtdG9vbHMge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0cmlnaHQ6IDIlO1xyXG5cdFx0dG9wOiAyJTtcclxuXHRcdGZvbnQtc2l6ZToxdnc7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XHJcblx0fVxyXG5cdC5idXR0b24tbGVmdCB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL3JpZ2h0LnBuZyk7XHJcblx0XHRiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcclxuXHRcdHRvcDogMS44JTtcclxuXHRcdGxlZnQ6IDIxLjMlO1xyXG5cdFx0d2lkdGg6IDEzLjUlO1xyXG5cdFx0aGVpZ2h0OiA4LjUlO1xyXG5cdFx0dHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xyXG5cdH1cclxuXHQuYnV0dG9uLXJpZ2h0IHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvcmlnaHQucG5nKTtcclxuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xyXG5cdFx0dG9wOiAxLjglO1xyXG5cdFx0bGVmdDogNjUlO1xyXG5cdFx0d2lkdGg6IDEzLjUlO1xyXG5cdFx0aGVpZ2h0OiA4LjUlO1xyXG5cdH1cclxuXHQuaW1nLWJveCB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICM2NjY2NjY7ICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuXHRcdGZsZXgtd3JhcDogd3JhcDtcclxuXHRcdGZvbnQtc2l6ZTogMXZ3O1xyXG5cdH1cclxuXHQuaXRlbS1pbWcge1xyXG5cdFx0d2lkdGg6IDUwJTtcclxuXHRcdG1hcmdpbi10b3A6IDUlO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmZmZmOyAqL1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcblx0fVxyXG5cdC5kaXN0YW5jZSB7XHJcblx0XHRcclxuXHR9XHJcblx0Lml0ZW0taW1nIGltYWdlIHtcclxuXHRcdGhlaWdodDogNXZ3O1xyXG5cdFx0d2lkdGg6IDV2dztcclxuXHR9XHJcblx0LnByb2dyZXNzQmFyIHtcclxuXHRcdG1hcmdpbi10b3A6IDklO1xyXG5cdFx0Lyogd2lkdGg6IDEwMCU7ICovXHJcblx0XHRoZWlnaHQ6IDIwJTtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICMyMzM3NTE7XHJcblx0XHRib3JkZXItcmFkaXVzOiA1dnc7XHJcblx0fVxyXG5cdC5wcm9ncmVzcyB7XHJcblx0XHQvKiB3aWR0aDogOTAlOyAqL1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI0ZGNTcyMjtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDV2dztcclxuXHR9XHJcblx0LmNoYXJ0cy1ib3gge1xyXG5cdCAgd2lkdGg6IDgwJTtcclxuXHQgIGhlaWdodDogMjR2aDtcclxuXHQgIG1hcmdpbi1sZWZ0OiAxMCU7XHJcblx0fSBcclxuXHQuY2hhcnRzLWJveC1yaW5nIHtcclxuXHRcdHdpZHRoOiA1MCU7XHJcblx0XHRoZWlnaHQ6IDI0dmg7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmZmZmOyAqL1xyXG5cdH1cclxuXHQuc3ViLWluZm8ge1xyXG5cdFx0Zm9udC1zaXplOiAxLjV2dztcclxuXHR9XHJcblx0LnN1Yi1pbmZvIGltYWdlIHtcclxuXHRcdHdpZHRoOiAzLjV2dztcclxuXHRcdGhlaWdodDogMy41dnc7XHJcblx0fVxyXG5cdFxyXG5cdFxyXG5cdFxyXG5cdFxyXG5cdC8qIOWFseeUqCAqL1xyXG5cdC5tYWluIHtcclxuXHRcdHdpZHRoOiAxMDB2dztcclxuXHRcdGhlaWdodDogODh2aDtcclxuXHRcdG1hcmdpbi10b3A6IDF2aDtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcclxuXHR9XHJcblx0Lm1pYW4taXRlbSB7XHJcblx0XHR3aWR0aDogNTAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0fVxyXG5cdC5taWFuLWl0ZW0tYm94IHtcclxuXHRcdHdpZHRoOiA5OCU7XHJcblx0XHRoZWlnaHQ6IDk4JTtcclxuXHR9XHJcblx0LmJveC1pdGVtIHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0bWFyZ2luLXRvcDogNCU7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG5cdH1cclxuXHQuaXRlbS10aXRsZSB7XHJcblx0XHRmb250LXNpemU6MS41dnc7XHJcblx0XHRmb250LXdlaWdodDogNzAwO1xyXG5cdH1cclxuXHQuaXRlbS1zdWJUaXRsZSB7XHJcblx0XHRmb250LXNpemU6MC41dnc7XHJcblx0XHR0ZXh0LWluZGVudDogMGVtO1xyXG5cdH1cclxuXHQuaXRlbS10ZXh0IHtcclxuXHRcdGZvbnQtc2l6ZTogMXZ3O1xyXG5cdFx0dGV4dC1pbmRlbnQ6IDJlbTtcclxuXHRcdGxldHRlci1zcGFjaW5nOiAxcHg7XHJcblx0XHRsaW5lLWhlaWdodDogM3ZoO1xyXG5cdH1cclxuXHRcclxuXHQvKiDlhajmnb8v5ouj5paZ5L+h5oGvICovXHJcblx0LmluZm8tdmlldyB7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRtaW4taGVpZ2h0OiAxMDB2aDtcclxuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvYmFja2dyb3VuZC5wbmcpO1xyXG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDB2dyAxMDB2aDtcclxuXHR9XHJcblx0LmluZm8tbWFpbiB7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRoZWlnaHQ6IDg4dmg7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdH1cclxuXHQuaW5mby1ib3gge1xyXG5cdFx0d2lkdGg6IDk4JTtcclxuXHRcdGhlaWdodDogOTglO1xyXG5cdH1cclxuXHQvKiDlvILluLjkv6Hmga8gKi9cclxuXHQuZXJyb3ItaW5mby12aWV3IHtcclxuXHRcdHdpZHRoOiAxMDB2dztcclxuXHRcdG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL3N0YXRpYy9iYWNrZ3JvdW5kLnBuZyk7XHJcblx0XHRiYWNrZ3JvdW5kLXNpemU6IDEwMHZ3IDEwMHZoO1xyXG5cdH1cclxuXHRcclxuXHQvKiDlvLnlh7o66YWN572u5Yy65Z+fICovXHJcblx0LmVqZWN0LW1hc2sge1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XHJcblx0XHRwb3NpdGlvbjogZml4ZWQ7XHJcblx0XHR0b3A6IDA7XHJcblx0XHRsZWZ0OiAwO1xyXG5cdFx0ei1pbmRleDogOTk5O1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcdFxyXG5cdH1cclxuXHQuZWplY3R7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHR3aWR0aDogNDB2dztcclxuXHRcdGhlaWdodDogNDB2aDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcblx0XHRib3JkZXItcmFkaXVzOiAycmVtO1xyXG5cdH1cclxuXHQuZWplY3QtdGl0bGUge1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRoZWlnaHQ6IDEwdmg7XHJcblx0XHRsaW5lLWhlaWdodDogMTB2aDtcclxuXHRcdGZvbnQtc2l6ZTogMnZ3O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcclxuXHRcdGNvbG9yOiBcdCM2MDYyNjY7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0fVxyXG5cdC5lamVjdC1pbnB1dCB7XHJcblx0XHRcclxuXHR9XHJcblx0Lml0ZW0ge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRtYXJnaW46IDJ2aCAwIDAgMDtcclxuXHRcdGZvbnQtc2l6ZTogMS41dnc7XHJcblx0XHRjb2xvcjogIzM2MzYzNjtcclxuXHR9XHJcblx0LmRlc2Mge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0d2lkdGg6IDQwJTtcclxuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xyXG5cdFx0Y29sb3I6ICM2MDYyNjY7XHJcblx0XHRcclxuXHR9XHJcblx0LmlucHV0IHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0cGFkZGluZy1sZWZ0OiA1cHg7XHJcblx0XHRwYWRkaW5nLXJpZ2h0OiA1cHg7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogM3ZoO1xyXG5cdFx0Ym9yZGVyOiAwLjF2aCBzb2xpZCAjY2ZkNGRjO1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiAyMCU7XHJcblx0XHR0ZXh0LWFsaWduOiBzdGFydDtcclxuXHR9XHJcblx0LmVqZWN0LWlucHV0IGlucHV0IHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAzdmg7XHJcblx0XHRmb250LXNpemU6IDF2dztcclxuXHRcdFxyXG5cdFx0XHJcblx0fVxyXG5cdC5lamVjdC1idXR0b24ge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRib3R0b206IDA7XHJcblx0XHRoZWlnaHQ6IDZ2aDtcclxuXHRcdGxpbmUtaGVpZ2h0OiA2dmg7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjO1xyXG5cdH1cclxuXHQuYnV0dG9uLWl0ZW0ge1xyXG5cdFx0d2lkdGg6IDUwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdGZvbnQtc2l6ZTogMS41dnc7XHJcblx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGNvbG9yOiAjOTA5Mzk5O1xyXG5cdH1cclxuXHQuYnV0dG9uLWl0ZW06bGFzdC1jaGlsZCB7XHJcblx0XHRjb2xvcjogIzY3QzIzQTtcclxuXHRcdFxyXG5cdFx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjO1xyXG5cdH1cclxuPC9zdHlsZT4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///77\n");
<<<<<<< HEAD
eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; /*\r\n                                                                                                      * uCharts®\r\n                                                                                                      * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台\r\n                                                                                                      * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.\r\n                                                                                                      * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n                                                                                                      * 复制使用请保留本段注释,感谢支持开源!\r\n                                                                                                      * \r\n                                                                                                      * uCharts®官方网站\r\n                                                                                                      * https://www.uCharts.cn\r\n                                                                                                      * \r\n                                                                                                      * 开源地址:\r\n                                                                                                      * https://gitee.com/uCharts/uCharts\r\n                                                                                                      * \r\n                                                                                                      * uni-app插件市场地址:\r\n                                                                                                      * http://ext.dcloud.net.cn/plugin?id=271\r\n                                                                                                      * \r\n                                                                                                      */\n\n// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性\nvar color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];\n\n//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改\nvar formatDateTime = function formatDateTime(timeStamp, returnType) {\n  var date = new Date();\n  date.setTime(timeStamp * 1000);\n  var y = date.getFullYear();\n  var m = date.getMonth() + 1;\n  m = m < 10 ? '0' + m : m;\n  var d = date.getDate();\n  d = d < 10 ? '0' + d : d;\n  var h = date.getHours();\n  h = h < 10 ? '0' + h : h;\n  var minute = date.getMinutes();\n  var second = date.getSeconds();\n  minute = minute < 10 ? '0' + minute : minute;\n  second = second < 10 ? '0' + second : second;\n  if (returnType == 'full') {return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;}\n  if (returnType == 'y-m-d') {return y + '-' + m + '-' + d;}\n  if (returnType == 'h:m') {return h + ':' + minute;}\n  if (returnType == 'h:m:s') {return h + ':' + minute + ':' + second;}\n  return [y, m, d, h, minute, second];\n};\n\nvar cfu = {\n  //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可\n  \"type\": [\"pie\", \"ring\", \"rose\", \"word\", \"funnel\", \"map\", \"arcbar\", \"line\", \"column\", \"bar\", \"area\", \"radar\", \"gauge\", \"candle\", \"mix\", \"tline\", \"tarea\", \"scatter\", \"bubble\", \"demotype\"],\n  \"range\": [\"饼状图\", \"圆环图\", \"玫瑰图\", \"词云图\", \"漏斗图\", \"地图\", \"圆弧进度条\", \"折线图\", \"柱状图\", \"条状图\", \"区域图\", \"雷达图\", \"仪表盘\", \"K线图\", \"混合图\", \"时间轴折线\", \"时间轴区域\", \"散点图\", \"气泡图\", \"自定义类型\"],\n  //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的\"demotype\"\n  //自定义类型时需要注意\"tline\",\"tarea\",\"scatter\",\"bubble\"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories\n  \"categories\": [\"line\", \"column\", \"bar\", \"area\", \"radar\", \"gauge\", \"candle\", \"mix\", \"demotype\"],\n  //instance为实例变量承载属性,不要删除\n  \"instance\": {},\n  //option为opts及eopts承载属性,不要删除\n  \"option\": {},\n  //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换\n  \"formatter\": {\n    \"yAxisDemo1\": function yAxisDemo1(val) {return val + '元';},\n    \"yAxisDemo2\": function yAxisDemo2(val) {return val.toFixed(2);},\n    \"xAxisDemo1\": function xAxisDemo1(val) {return val + '年';},\n    \"xAxisDemo2\": function xAxisDemo2(val) {return formatDateTime(val, 'h:m');},\n    \"seriesDemo1\": function seriesDemo1(val) {return val + '元';},\n    \"tooltipDemo1\": function tooltipDemo1(item, category, index, opts) {\n      if (index == 0) {\n        return '随便用' + item.data + '年';\n      } else {\n        return '其他我没改' + item.data + '天';\n      }\n    },\n    \"pieDemo\": function pieDemo(val, index, series) {\n      if (index !== undefined) {\n        return series[index].name + ':' + series[index].data + '元';\n      }\n    } },\n\n  //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type=\"demotype\" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。\n  \"demotype\": {\n    //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置\n    \"type\": \"line\",\n    \"color\": color,\n    \"padding\": [15, 10, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true },\n\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2 },\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"line\": {\n        \"type\": \"curve\",\n        \"width\": 2 } } },\n\n\n\n  //下面是自定义配置,请添加项目所需的通用配置\n  \"pie\": {\n    \"type\": \"pie\",\n    \"color\": color,\n    \"padding\": [5, 5, 5, 5],\n    \"extra\": {\n      \"pie\": {\n        \"activeOpacity\": 0.5,\n        \"activeRadius\": 10,\n        \"offsetAngle\": 0,\n        \"labelWidth\": 15,\n        \"border\": true,\n        \"borderWidth\": 3,\n        \"borderColor\": \"#FFFFFF\" } } },\n\n\n\n  \"ring\": {\n    \"type\": \"ring\",\n    \"color\": color,\n    \"padding\": [5, 5, 5, 5],\n    \"rotate\": false,\n    \"dataLabel\": true,\n    \"legend\": {\n      \"show\": true,\n      \"position\": \"right\",\n      \"lineHeight\": 25 },\n\n    \"title\": {\n      \"name\": \"收益率\",\n      \"fontSize\": 15,\n      \"color\": \"#666666\" },\n\n    \"subtitle\": {\n      \"name\": \"70%\",\n      \"fontSize\": 25,\n      \"color\": \"#7cb5ec\" },\n\n    \"extra\": {\n      \"ring\": {\n        \"ringWidth\": 30,\n        \"activeOpacity\": 0.5,\n        \"activeRadius\": 10,\n        \"offsetAngle\": 0,\n        \"labelWidth\": 15,\n        \"border\": true,\n        \"borderWidth\": 3,\n        \"borderColor\": \"#FFFFFF\" } } },\n\n\n\n  \"rose\": {\n    \"type\": \"rose\",\n    \"color\": color,\n    \"padding\": [5, 5, 5, 5],\n    \"legend\": {\n      \"show\": true,\n      \"position\": \"left\",\n      \"lineHeight\": 25 },\n\n    \"extra\": {\n      \"rose\": {\n        \"type\": \"area\",\n        \"minRadius\": 50,\n        \"activeOpacity\": 0.5,\n        \"activeRadius\": 10,\n        \"offsetAngle\": 0,\n        \"labelWidth\": 15,\n        \"border\": false,\n        \"borderWidth\": 2,\n        \"borderColor\": \"#FFFFFF\" } } },\n\n\n\n  \"word\": {\n    \"type\": \"word\",\n    \"color\": color,\n    \"extra\": {\n      \"word\": {\n        \"type\": \"normal\",\n        \"autoColors\": false } } },\n\n\n\n  \"funnel\": {\n    \"type\": \"funnel\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"extra\": {\n      \"funnel\": {\n        \"activeOpacity\": 0.3,\n        \"activeWidth\": 10,\n        \"border\": true,\n        \"borderWidth\": 2,\n        \"borderColor\": \"#FFFFFF\",\n        \"fillOpacity\": 1,\n        \"labelAlign\": \"right\" } } },\n\n\n\n  \"map\": {\n    \"type\": \"map\",\n    \"color\": color,\n    \"padding\": [0, 0, 0, 0],\n    \"dataLabel\": true,\n    \"extra\": {\n      \"map\": {\n        \"border\": true,\n        \"borderWidth\": 1,\n        \"borderColor\": \"#666666\",\n        \"fillOpacity\": 0.6,\n        \"activeBorderColor\": \"#F04864\",\n        \"activeFillColor\": \"#FACC14\",\n        \"activeFillOpacity\": 1 } } },\n\n\n\n  \"arcbar\": {\n    \"type\": \"arcbar\",\n    \"color\": color,\n    \"title\": {\n      \"name\": \"百分比\",\n      \"fontSize\": 25,\n      \"color\": \"#00FF00\" },\n\n    \"subtitle\": {\n      \"name\": \"默认标题\",\n      \"fontSize\": 15,\n      \"color\": \"#666666\" },\n\n    \"extra\": {\n      \"arcbar\": {\n        \"type\": \"default\",\n        \"width\": 12,\n        \"backgroundColor\": \"#E9E9E9\",\n        \"startAngle\": 0.75,\n        \"endAngle\": 0.25,\n        \"gap\": 2 } } },\n\n\n\n  \"line\": {\n    \"type\": \"line\",\n    \"color\": color,\n    \"padding\": [15, 10, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true },\n\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2 },\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"line\": {\n        \"type\": \"straight\",\n        \"width\": 2 } } },\n\n\n\n  \"tline\": {\n    \"type\": \"line\",\n    \"color\": color,\n    \"padding\": [15, 10, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": false,\n      \"boundaryGap\": \"justify\" },\n\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2,\n      \"data\": [\n      {\n        \"min\": 0,\n        \"max\": 80 }] },\n\n\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"line\": {\n        \"type\": \"curve\",\n        \"width\": 2 } } },\n\n\n\n  \"tarea\": {\n    \"type\": \"area\",\n    \"color\": color,\n    \"padding\": [15, 10, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true,\n      \"boundaryGap\": \"justify\" },\n\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2,\n      \"data\": [\n      {\n        \"min\": 0,\n        \"max\": 80 }] },\n\n\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"area\": {\n        \"type\": \"curve\",\n        \"opacity\": 0.2,\n        \"addLine\": true,\n        \"width\": 2,\n        \"gradient\": true } } },\n\n\n\n  \"column\": {\n    \"type\": \"column\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 5],\n    \"xAxis\": {\n      \"disableGrid\": true },\n\n    \"yAxis\": {\n      \"data\": [{ \"min\": 0 }] },\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"column\": {\n        \"type\": \"group\",\n        \"width\": 30,\n        \"activeBgColor\": \"#000000\",\n        \"activeBgOpacity\": 0.08 } } },\n\n\n\n  \"bar\": {\n    \"type\": \"bar\",\n    \"color\": color,\n    \"padding\": [15, 30, 0, 5],\n    \"xAxis\": {\n      \"boundaryGap\": \"justify\",\n      \"disableGrid\": false,\n      \"min\": 0,\n      \"axisLine\": false },\n\n    \"yAxis\": {},\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"bar\": {\n        \"type\": \"group\",\n        \"width\": 30,\n        \"meterBorde\": 1,\n        \"meterFillColor\": \"#FFFFFF\",\n        \"activeBgColor\": \"#000000\",\n        \"activeBgOpacity\": 0.08 } } },\n\n\n\n  \"area\": {\n    \"type\": \"area\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true },\n\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2 },\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"area\": {\n        \"type\": \"straight\",\n        \"opacity\": 0.2,\n        \"addLine\": true,\n        \"width\": 2,\n        \"gradient\": false } } },\n\n\n\n  \"radar\": {\n    \"type\": \"radar\",\n    \"color\": color,\n    \"padding\": [5, 5, 5, 5],\n    \"dataLabel\": false,\n    \"legend\": {\n      \"show\": true,\n      \"position\": \"right\",\n      \"lineHeight\": 25 },\n\n    \"extra\": {\n      \"radar\": {\n        \"gridType\": \"radar\",\n        \"gridColor\": \"#CCCCCC\",\n        \"gridCount\": 3,\n        \"opacity\": 0.2,\n        \"max\": 200 } } },\n\n\n\n  \"gauge\": {\n    \"type\": \"gauge\",\n    \"color\": color,\n    \"title\": {\n      \"name\": \"66Km/H\",\n      \"fontSize\": 25,\n      \"color\": \"#2fc25b\",\n      \"offsetY\": 50 },\n\n    \"subtitle\": {\n      \"name\": \"实时速度\",\n      \"fontSize\": 15,\n      \"color\": \"#1890ff\",\n      \"offsetY\": -50 },\n\n    \"extra\": {\n      \"gauge\": {\n        \"type\": \"default\",\n        \"width\": 30,\n        \"labelColor\": \"#666666\",\n        \"startAngle\": 0.75,\n        \"endAngle\": 0.25,\n        \"startNumber\": 0,\n        \"endNumber\": 100,\n        \"labelFormat\": \"\",\n        \"splitLine\": {\n          \"fixRadius\": 0,\n          \"splitNumber\": 10,\n          \"width\": 30,\n          \"color\": \"#FFFFFF\",\n          \"childNumber\": 5,\n          \"childWidth\": 12 },\n\n        \"pointer\": {\n          \"width\": 24,\n          \"color\": \"auto\" } } } },\n\n\n\n\n  \"candle\": {\n    \"type\": \"candle\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"enableScroll\": true,\n    \"enableMarkLine\": true,\n    \"dataLabel\": false,\n    \"xAxis\": {\n      \"labelCount\": 4,\n      \"itemCount\": 40,\n      \"disableGrid\": true,\n      \"gridColor\": \"#CCCCCC\",\n      \"gridType\": \"solid\",\n      \"dashLength\": 4,\n      \"scrollShow\": true,\n      \"scrollAlign\": \"left\",\n      \"scrollColor\": \"#A6A6A6\",\n      \"scrollBackgroundColor\": \"#EFEBEF\" },\n\n    \"yAxis\": {},\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"candle\": {\n        \"color\": {\n          \"upLine\": \"#f04864\",\n          \"upFill\": \"#f04864\",\n          \"downLine\": \"#2fc25b\",\n          \"downFill\": \"#2fc25b\" },\n\n        \"average\": {\n          \"show\": true,\n          \"name\": [\"MA5\", \"MA10\", \"MA30\"],\n          \"day\": [5, 10, 20],\n          \"color\": [\"#1890ff\", \"#2fc25b\", \"#facc14\"] } },\n\n\n      \"markLine\": {\n        \"type\": \"dash\",\n        \"dashLength\": 5,\n        \"data\": [\n        {\n          \"value\": 2150,\n          \"lineColor\": \"#f04864\",\n          \"showLabel\": true },\n\n        {\n          \"value\": 2350,\n          \"lineColor\": \"#f04864\",\n          \"showLabel\": true }] } } },\n\n\n\n\n\n  \"mix\": {\n    \"type\": \"mix\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true },\n\n    \"yAxis\": {\n      \"disabled\": false,\n      \"disableGrid\": false,\n      \"splitNumber\": 5,\n      \"gridType\": \"dash\",\n      \"dashLength\": 4,\n      \"gridColor\": \"#CCCCCC\",\n      \"padding\": 10,\n      \"showTitle\": true,\n      \"data\": [] },\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"mix\": {\n        \"column\": {\n          \"width\": 20 } } } },\n\n\n\n\n  \"scatter\": {\n    \"type\": \"scatter\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"dataLabel\": false,\n    \"xAxis\": {\n      \"disableGrid\": false,\n      \"gridType\": \"dash\",\n      \"splitNumber\": 5,\n      \"boundaryGap\": \"justify\",\n      \"min\": 0 },\n\n    \"yAxis\": {\n      \"disableGrid\": false,\n      \"gridType\": \"dash\" },\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"scatter\": {} } },\n\n\n\n  \"bubble\": {\n    \"type\": \"bubble\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": false,\n      \"gridType\": \"dash\",\n      \"splitNumber\": 5,\n      \"boundaryGap\": \"justify\",\n      \"min\": 0,\n      \"max\": 250 },\n\n    \"yAxis\": {\n      \"disableGrid\": false,\n      \"gridType\": \"dash\",\n      \"data\": [{\n        \"min\": 0,\n        \"max\": 150 }] },\n\n\n    \"legend\": {},\n\n    \"extra\": {\n      \"bubble\": {\n        \"border\": 2,\n        \"opacity\": 0.5 } } } };var _default =\n\n\n\n\n\ncfu;exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9qc19zZGsvdS1jaGFydHMvY29uZmlnLXVjaGFydHMuanMiXSwibmFtZXMiOlsiY29sb3IiLCJmb3JtYXREYXRlVGltZSIsInRpbWVTdGFtcCIsInJldHVyblR5cGUiLCJkYXRlIiwiRGF0ZSIsInNldFRpbWUiLCJ5IiwiZ2V0RnVsbFllYXIiLCJtIiwiZ2V0TW9udGgiLCJkIiwiZ2V0RGF0ZSIsImgiLCJnZXRIb3VycyIsIm1pbnV0ZSIsImdldE1pbnV0ZXMiLCJzZWNvbmQiLCJnZXRTZWNvbmRzIiwiY2Z1IiwidmFsIiwidG9GaXhlZCIsIml0ZW0iLCJjYXRlZ29yeSIsImluZGV4Iiwib3B0cyIsImRhdGEiLCJzZXJpZXMiLCJ1bmRlZmluZWQiLCJuYW1lIl0sIm1hcHBpbmdzIjoid0ZBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQTtBQUNBLElBQU1BLEtBQUssR0FBRyxDQUFDLFNBQUQsRUFBWSxTQUFaLEVBQXVCLFNBQXZCLEVBQWtDLFNBQWxDLEVBQTZDLFNBQTdDLEVBQXdELFNBQXhELEVBQW1FLFNBQW5FLEVBQThFLFNBQTlFLEVBQXlGLFNBQXpGLENBQWQ7O0FBRUE7QUFDQSxJQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLENBQUNDLFNBQUQsRUFBWUMsVUFBWixFQUF5QjtBQUM5QyxNQUFJQyxJQUFJLEdBQUcsSUFBSUMsSUFBSixFQUFYO0FBQ0FELE1BQUksQ0FBQ0UsT0FBTCxDQUFhSixTQUFTLEdBQUcsSUFBekI7QUFDQSxNQUFJSyxDQUFDLEdBQUdILElBQUksQ0FBQ0ksV0FBTCxFQUFSO0FBQ0EsTUFBSUMsQ0FBQyxHQUFHTCxJQUFJLENBQUNNLFFBQUwsS0FBa0IsQ0FBMUI7QUFDQUQsR0FBQyxHQUFHQSxDQUFDLEdBQUcsRUFBSixHQUFVLE1BQU1BLENBQWhCLEdBQXFCQSxDQUF6QjtBQUNBLE1BQUlFLENBQUMsR0FBR1AsSUFBSSxDQUFDUSxPQUFMLEVBQVI7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QUFVLEVBaEJIOztBQWtCUCxhQUFTO0FBQ1IsaUJBQVcsRUFESCxFQWxCRixFQXBlQzs7OztBQTJmWCxZQUFTO0FBQ1IsWUFBUSxRQURBO0FBRVIsYUFBUUEsS0FGQTtBQUdSLGVBQVUsQ0FBQyxFQUFELEVBQUksRUFBSixFQUFPLENBQVAsRUFBUyxFQUFULENBSEY7QUFJTixhQUFTO0FBQ1AscUJBQWUsS0FEUjtBQUVQLGtCQUFXLE1BRko7QUFHUCxxQkFBYyxDQUhQO0FBSVAscUJBQWMsU0FKUDtBQUtQLGFBQU0sQ0FMQztBQU1QLGFBQU0sR0FOQyxFQUpIOztBQVlOLGFBQVM7QUFDUCxxQkFBZSxLQURSO0FBRVAsa0JBQVcsTUFGSjtBQUdQLGNBQU8sQ0FBQztBQUNOLGVBQU0sQ0FEQTtBQUVOLGVBQU0sR0FGQSxFQUFELENBSEEsRUFaSDs7O0FBb0JOLGNBQVUsRUFwQko7O0FBc0JOLGFBQVM7QUFDUixnQkFBVTtBQUNQLGtCQUFTLENBREY7QUFFUCxtQkFBVyxHQUZKLEVBREYsRUF0QkgsRUEzZkUsRUFBWixDOzs7Ozs7QUEwaEJlbUIsRyIsImZpbGUiOiI3NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIHVDaGFydHPCrlxyXG4gKiDpq5jmgKfog73ot6jlubPlj7Dlm77ooajlupPvvIzmlK/mjIFINeOAgUFQUOOAgeWwj+eoi+W6j++8iOW+ruS/oS/mlK/ku5jlrp0v55m+5bqmL+WktOadoS9RUS8zNjDvvInjgIFWdWXjgIFUYXJv562J5pSv5oyBY2FudmFz55qE5qGG5p625bmz5Y+wXHJcbiAqIENvcHlyaWdodCAoYykgMjAyMSBRSVVOwq7np4vkupEgaHR0cHM6Ly93d3cudWNoYXJ0cy5jbiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCAoIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCApXHJcbiAqIOWkjeWItuS9v+eUqOivt+S/neeVmeacrOauteazqOmHiu+8jOaEn+iwouaUr+aMgeW8gOa6kO+8gVxyXG4gKiBcclxuICogdUNoYXJ0c8Ku5a6Y5pa5572R56uZXHJcbiAqIGh0dHBzOi8vd3d3LnVDaGFydHMuY25cclxuICogXHJcbiAqIOW8gOa6kOWcsOWdgDpcclxuICogaHR0cHM6Ly9naXRlZS5jb20vdUNoYXJ0cy91Q2hhcnRzXHJcbiAqIFxyXG4gKiB1bmktYXBw5o+S5Lu25biC5Zy65Zyw5Z2A77yaXHJcbiAqIGh0dHA6Ly9leHQuZGNsb3VkLm5ldC5jbi9wbHVnaW4/aWQ9MjcxXHJcbiAqIFxyXG4gKi9cclxuXHJcbi8vIOS4u+mimOminOiJsumFjee9ru+8muWmguavj+S4quWbvuihqOexu+Wei+mcgOimgeS4jeWQjOS4u+mimO+8jOivt+WcqOWvueW6lOWbvuihqOexu+Wei+S4iuabtOaUuWNvbG9y5bGe5oCnXHJcbmNvbnN0IGNvbG9yID0gWycjMTg5MEZGJywgJyM5MUNCNzQnLCAnI0ZBQzg1OCcsICcjRUU2NjY2JywgJyM3M0MwREUnLCAnIzNDQTI3MicsICcjRkM4NDUyJywgJyM5QTYwQjQnLCAnI2VhN2NjYyddO1xyXG5cclxuLy/kuovku7bovazmjaLlh73mlbDvvIzkuLvopoHnlKjkvZzmoLzlvI/ljJZ46L205Li65pe26Ze06L2077yM5qC55o2u6ZyA5rGC6Ieq6KGM5L+u5pS5XHJcbmNvbnN0IGZvcm1hdERhdGVUaW1lID0gKHRpbWVTdGFtcCwgcmV0dXJuVHlwZSk9PntcclxuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgZGF0ZS5zZXRUaW1lKHRpbWVTdGFtcCAqIDEwMDApO1xyXG4gIHZhciB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gIHZhciBtID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICBtID0gbSA8IDEwID8gKCcwJyArIG0pIDogbTtcclxuICB2YXIgZCA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gIGQgPSBkIDwgMTAgPyAoJzAnICsgZCkgOiBkO1xyXG4gIHZhciBoID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gIGggPSBoIDwgMTAgPyAoJzAnICsgaCkgOiBoO1xyXG4gIHZhciBtaW51dGUgPSBkYXRlLmdldE1pbnV0ZXMoKTtcclxuICB2YXIgc2Vjb25kID0gZGF0ZS5nZXRTZWNvbmRzKCk7XHJcbiAgbWludXRlID0gbWludXRlIDwgMTAgPyAoJzAnICsgbWludXRlKSA6IG1pbnV0ZTtcclxuICBzZWNvbmQgPSBzZWNvbmQgPCAxMCA/ICgnMCcgKyBzZWNvbmQpIDogc2Vjb25kO1xyXG4gIGlmKHJldHVyblR5cGUgPT0gJ2Z1bGwnKXtyZXR1cm4geSArICctJyArIG0gKyAnLScgKyBkICsgJyAnKyBoICsnOicgKyBtaW51dGUgKyAnOicgKyBzZWNvbmQ7fVxyXG4gIGlmKHJldHVyblR5cGUgPT0gJ3ktbS1kJyl7cmV0dXJuIHkgKyAnLScgKyBtICsgJy0nICsgZDt9XHJcbiAgaWYocmV0dXJuVHlwZSA9PSAnaDptJyl7cmV0dXJuICBoICsnOicgKyBtaW51dGU7fVxyXG4gIGlmKHJldHVyblR5cGUgPT0gJ2g6bTpzJyl7cmV0dXJuICBoICsnOicgKyBtaW51dGUgKyc6JyArIHNlY29uZDt9XHJcbiAgcmV0dXJuIFt5LCBtLCBkLCBoLCBtaW51dGUsIHNlY29uZF07XHJcbn1cclxuXHJcbmNvbnN0IGNmdSA9IHtcclxuICAvL2RlbW90eXBl5Li66Ieq5a6a5LmJ5Zu+6KGo57G75Z6L77yM5LiA6Iis5LiN6ZyA6KaB6Ieq5a6a5LmJ5Zu+6KGo57G75Z6L77yM5Y+q6ZyA6KaB5pS55qC56IqC54K55LiK5a+55bqU55qE57G75Z6L5Y2z5Y+vXHJcblx0XCJ0eXBlXCI6W1wicGllXCIsXCJyaW5nXCIsXCJyb3NlXCIsXCJ3b3JkXCIsXCJmdW5uZWxcIixcIm1hcFwiLFwiYXJjYmFyXCIsXCJsaW5lXCIsXCJjb2x1bW5cIixcImJhclwiLFwiYXJlYVwiLFwicmFkYXJcIixcImdhdWdlXCIsXCJjYW5kbGVcIixcIm1peFwiLFwidGxpbmVcIixcInRhcmVhXCIsXCJzY2F0dGVyXCIsXCJidWJibGVcIixcImRlbW90eXBlXCJdLFxyXG5cdFwicmFuZ2VcIjpbXCLppbznirblm75cIixcIuWchueOr+WbvlwiLFwi546r55Gw5Zu+XCIsXCLor43kupHlm75cIixcIua8j+aWl+WbvlwiLFwi5Zyw5Zu+XCIsXCLlnIblvKfov5vluqbmnaFcIixcIuaKmOe6v+WbvlwiLFwi5p+x54q25Zu+XCIsXCLmnaHnirblm75cIixcIuWMuuWfn+WbvlwiLFwi6Zu36L6+5Zu+XCIsXCLku6rooajnm5hcIixcIkvnur/lm75cIixcIua3t+WQiOWbvlwiLFwi5pe26Ze06L205oqY57q/XCIsXCLml7bpl7TovbTljLrln59cIixcIuaVo+eCueWbvlwiLFwi5rCU5rOh5Zu+XCIsXCLoh6rlrprkuYnnsbvlnotcIl0sXHJcbiAgLy/lop7liqDoh6rlrprkuYnlm77ooajnsbvlnovvvIzlpoLmnpzpnIDopoFjYXRlZ29yaWVz77yM6K+35Zyo6L+Z6YeM5Yqg5YWl5oKo55qE5Zu+6KGo57G75Z6L77yM5L6L5aaC5pyA5ZCO55qEXCJkZW1vdHlwZVwiXHJcbiAgLy/oh6rlrprkuYnnsbvlnovml7bpnIDopoHms6jmhI9cInRsaW5lXCIsXCJ0YXJlYVwiLFwic2NhdHRlclwiLFwiYnViYmxlXCLnrYnml7bpl7TovbTvvIjnn6Lph4946L2077yJ57G75Zu+6KGo77yM5rKh5pyJY2F0ZWdvcmllc++8jOS4jemcgOimgeWKoOWFpWNhdGVnb3JpZXNcclxuXHRcImNhdGVnb3JpZXNcIjpbXCJsaW5lXCIsXCJjb2x1bW5cIixcImJhclwiLFwiYXJlYVwiLFwicmFkYXJcIixcImdhdWdlXCIsXCJjYW5kbGVcIixcIm1peFwiLFwiZGVtb3R5cGVcIl0sXHJcbiAgLy9pbnN0YW5jZeS4uuWunuS+i+WPmOmHj+aJv+i9veWxnuaAp++8jOS4jeimgeWIoOmZpFxyXG4gIFwiaW5zdGFuY2VcIjp7fSxcclxuICAvL29wdGlvbuS4um9wdHPlj4plb3B0c+aJv+i9veWxnuaAp++8jOS4jeimgeWIoOmZpFxyXG4gIFwib3B0aW9uXCI6e30sXHJcbiAgLy/kuIvpnaLmmK/oh6rlrprkuYlmb3JtYXTphY3nva7vvIzlm6DpmaRINeerr+WklueahOWFtuS7luerr+aXoOazlemAmui/h3Byb3Bz5Lyg6YCS5Ye95pWw77yM5Y+q6IO96YCa6L+H5q2k5bGe5oCn5a+55bqU5LiL5qCH55qE5pa55byP5p2l5pu/5o2iXHJcbiAgXCJmb3JtYXR0ZXJcIjp7XHJcbiAgICBcInlBeGlzRGVtbzFcIjpmdW5jdGlvbih2YWwpe3JldHVybiB2YWwrJ+WFgyd9LFxyXG4gICAgXCJ5QXhpc0RlbW8yXCI6ZnVuY3Rpb24odmFsKXtyZXR1cm4gdmFsLnRvRml4ZWQoMil9LFxyXG4gICAgXCJ4QXhpc0RlbW8xXCI6ZnVuY3Rpb24odmFsKXtyZXR1cm4gdmFsKyflubQnfSxcclxuICAgIFwieEF4aXNEZW1vMlwiOmZ1bmN0aW9uKHZhbCl7cmV0dXJuIGZvcm1hdERhdGVUaW1lKHZhbCwnaDptJyl9LFxyXG4gICAgXCJzZXJpZXNEZW1vMVwiOmZ1bmN0aW9uKHZhbCl7cmV0dXJuIHZhbCsn5YWDJ30sXHJcbiAgICBcInRvb2x0aXBEZW1vMVwiOmZ1bmN0aW9uKGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cyl7XHJcbiAgICAgIGlmKGluZGV4PT0wKXtcclxuICAgICAgXHRyZXR1cm4gJ+maj+S+v+eUqCcraXRlbS5kYXRhKyflubQnXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICBcdHJldHVybiAn5YW25LuW5oiR5rKh5pS5JytpdGVtLmRhdGErJ+WkqSdcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIFwicGllRGVtb1wiOmZ1bmN0aW9uKHZhbCwgaW5kZXgsIHNlcmllcyl7XHJcbiAgICAgIGlmKGluZGV4ICE9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgIHJldHVybiBzZXJpZXNbaW5kZXhdLm5hbWUrJ++8micrc2VyaWVzW2luZGV4XS5kYXRhKyflhYMnXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgfSxcclxuICAvL+i/memHjOa8lOekuuS6huiHquWumuS5ieaCqOeahOWbvuihqOexu+Wei+eahG9wdGlvbu+8jOWPr+S7pemaj+aEj+WRveWQje+8jOS5i+WQjuWcqOe7hOS7tuS4iiB0eXBlPVwiZGVtb3R5cGVcIiDlkI7vvIznu4Tku7bkvJrosIPnlKjov5nkuKroirHmi6zlj7fph4znmoRvcHRpb27vvIzlpoLmnpznu4Tku7bkuIrov5jlrZjlnKhvcHRz5Y+C5pWw77yM5Lya5bCGZGVtb3R5cGXkuI5vcHRz5Litb3B0aW9u5ZCI5bm25ZCO5riy5p+T5Zu+6KGo44CCXHJcbiAgXCJkZW1vdHlwZVwiOntcclxuICAgIC8v5oiR6L+Z6YeM5oqK5puy57q/5Zu+5b2T5YGa5LqG6Ieq5a6a5LmJ5Zu+6KGo57G75Z6L77yM5oKo5Y+v5Lul5qC55o2u6ZyA6KaB6ZqP5oSP5oyH5a6a57G75Z6L5oiW6YWN572uXHJcbiAgICBcInR5cGVcIjogXCJsaW5lXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gICAgXCJwYWRkaW5nXCI6IFsxNSwxMCwwLDE1XSxcclxuICAgIFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcbiAgICB9LFxyXG4gICAgXCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZ3JpZFR5cGVcIjogXCJkYXNoXCIsXHJcbiAgICAgIFwiZGFzaExlbmd0aFwiOiAyLFxyXG4gICAgfSxcclxuICAgIFwibGVnZW5kXCI6IHtcclxuICAgIH0sXHJcbiAgICBcImV4dHJhXCI6IHtcclxuICAgIFx0XCJsaW5lXCI6IHtcclxuICAgIFx0XHRcInR5cGVcIjogXCJjdXJ2ZVwiLFxyXG4gICAgXHRcdFwid2lkdGhcIjogMlxyXG4gICAgXHR9LFxyXG4gICAgfVxyXG4gIH0sXHJcbiAgLy/kuIvpnaLmmK/oh6rlrprkuYnphY3nva7vvIzor7fmt7vliqDpobnnm67miYDpnIDnmoTpgJrnlKjphY3nva5cclxuXHRcInBpZVwiOntcclxuXHRcdFwidHlwZVwiOiBcInBpZVwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbNSw1LDUsNV0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJwaWVcIjoge1xyXG5cdFx0XHRcdFwiYWN0aXZlT3BhY2l0eVwiOiAwLjUsXHJcblx0XHRcdFx0XCJhY3RpdmVSYWRpdXNcIjogMTAsXHJcblx0XHRcdFx0XCJvZmZzZXRBbmdsZVwiOiAwLFxyXG5cdFx0XHRcdFwibGFiZWxXaWR0aFwiOiAxNSxcclxuXHRcdFx0XHRcImJvcmRlclwiOiB0cnVlLFxyXG5cdFx0XHRcdFwiYm9yZGVyV2lkdGhcIjogMyxcclxuXHRcdFx0XHRcImJvcmRlckNvbG9yXCI6IFwiI0ZGRkZGRlwiXHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuXHRcInJpbmdcIjp7XHJcblx0XHRcInR5cGVcIjogXCJyaW5nXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFs1LDUsNSw1XSxcclxuXHRcdFwicm90YXRlXCI6IGZhbHNlLFxyXG5cdFx0XCJkYXRhTGFiZWxcIjogdHJ1ZSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJzaG93XCI6IHRydWUsXHJcblx0XHRcdFwicG9zaXRpb25cIjogXCJyaWdodFwiLFxyXG4gICAgICBcImxpbmVIZWlnaHRcIjogMjUsXHJcblx0XHR9LFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwibmFtZVwiOiBcIuaUtuebiueOh1wiLFxyXG5cdFx0XHRcImZvbnRTaXplXCI6IDE1LFxyXG5cdFx0XHRcImNvbG9yXCI6IFwiIzY2NjY2NlwiXHJcblx0XHR9LFxyXG5cdFx0XCJzdWJ0aXRsZVwiOiB7XHJcblx0XHRcdFwibmFtZVwiOiBcIjcwJVwiLFxyXG5cdFx0XHRcImZvbnRTaXplXCI6IDI1LFxyXG5cdFx0XHRcImNvbG9yXCI6IFwiIzdjYjVlY1wiXHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwicmluZ1wiOiB7XHJcblx0XHRcdFx0XCJyaW5nV2lkdGhcIjozMCxcclxuXHRcdFx0XHRcImFjdGl2ZU9wYWNpdHlcIjogMC41LFxyXG5cdFx0XHRcdFwiYWN0aXZlUmFkaXVzXCI6IDEwLFxyXG5cdFx0XHRcdFwib2Zmc2V0QW5nbGVcIjogMCxcclxuXHRcdFx0XHRcImxhYmVsV2lkdGhcIjogMTUsXHJcblx0XHRcdFx0XCJib3JkZXJcIjogdHJ1ZSxcclxuXHRcdFx0XHRcImJvcmRlcldpZHRoXCI6IDMsXHJcblx0XHRcdFx0XCJib3JkZXJDb2xvclwiOiBcIiNGRkZGRkZcIlxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdFwicm9zZVwiOntcclxuXHRcdFwidHlwZVwiOiBcInJvc2VcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzUsNSw1LDVdLFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcInNob3dcIjogdHJ1ZSxcclxuXHRcdFx0XCJwb3NpdGlvblwiOiBcImxlZnRcIixcclxuICAgICAgXCJsaW5lSGVpZ2h0XCI6IDI1LFxyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcInJvc2VcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcImFyZWFcIixcclxuXHRcdFx0XHRcIm1pblJhZGl1c1wiOiA1MCxcclxuXHRcdFx0XHRcImFjdGl2ZU9wYWNpdHlcIjogMC41LFxyXG5cdFx0XHRcdFwiYWN0aXZlUmFkaXVzXCI6IDEwLFxyXG5cdFx0XHRcdFwib2Zmc2V0QW5nbGVcIjogMCxcclxuXHRcdFx0XHRcImxhYmVsV2lkdGhcIjogMTUsXHJcblx0XHRcdFx0XCJib3JkZXJcIjogZmFsc2UsXHJcblx0XHRcdFx0XCJib3JkZXJXaWR0aFwiOiAyLFxyXG5cdFx0XHRcdFwiYm9yZGVyQ29sb3JcIjogXCIjRkZGRkZGXCJcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwid29yZFwiOntcclxuXHRcdFwidHlwZVwiOiBcIndvcmRcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJ3b3JkXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJub3JtYWxcIixcclxuXHRcdFx0XHRcImF1dG9Db2xvcnNcIjogZmFsc2VcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJmdW5uZWxcIjp7XHJcblx0XHRcInR5cGVcIjogXCJmdW5uZWxcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzE1LDE1LDAsMTVdLFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwiZnVubmVsXCI6IHtcclxuXHRcdFx0XHRcImFjdGl2ZU9wYWNpdHlcIjogMC4zLFxyXG5cdFx0XHRcdFwiYWN0aXZlV2lkdGhcIjogMTAsXHJcblx0XHRcdFx0XCJib3JkZXJcIjogdHJ1ZSxcclxuXHRcdFx0XHRcImJvcmRlcldpZHRoXCI6IDIsXHJcblx0XHRcdFx0XCJib3JkZXJDb2xvclwiOiBcIiNGRkZGRkZcIixcclxuXHRcdFx0XHRcImZpbGxPcGFjaXR5XCI6IDEsXHJcblx0XHRcdFx0XCJsYWJlbEFsaWduXCI6IFwicmlnaHRcIlxyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJtYXBcIjp7XHJcblx0XHRcInR5cGVcIjogXCJtYXBcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzAsMCwwLDBdLFxyXG4gICAgXCJkYXRhTGFiZWxcIjogdHJ1ZSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcIm1hcFwiOiB7XHJcblx0XHRcdFx0XCJib3JkZXJcIjogdHJ1ZSxcclxuXHRcdFx0XHRcImJvcmRlcldpZHRoXCI6IDEsXHJcblx0XHRcdFx0XCJib3JkZXJDb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcImZpbGxPcGFjaXR5XCI6IDAuNixcclxuXHRcdFx0XHRcImFjdGl2ZUJvcmRlckNvbG9yXCI6IFwiI0YwNDg2NFwiLFxyXG5cdFx0XHRcdFwiYWN0aXZlRmlsbENvbG9yXCI6IFwiI0ZBQ0MxNFwiLFxyXG5cdFx0XHRcdFwiYWN0aXZlRmlsbE9wYWNpdHlcIjogMVxyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJhcmNiYXJcIjp7XHJcblx0XHRcInR5cGVcIjogXCJhcmNiYXJcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInRpdGxlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6IFwi55m+5YiG5q+UXCIsXHJcblx0XHRcdFwiZm9udFNpemVcIjogMjUsXHJcblx0XHRcdFwiY29sb3JcIjogXCIjMDBGRjAwXCJcclxuXHRcdH0sXHJcblx0XHRcInN1YnRpdGxlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6IFwi6buY6K6k5qCH6aKYXCIsXHJcblx0XHRcdFwiZm9udFNpemVcIjogMTUsXHJcblx0XHRcdFwiY29sb3JcIjogXCIjNjY2NjY2XCJcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJhcmNiYXJcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcImRlZmF1bHRcIixcclxuXHRcdFx0XHRcIndpZHRoXCI6IDEyLFxyXG5cdFx0XHRcdFwiYmFja2dyb3VuZENvbG9yXCI6IFwiI0U5RTlFOVwiLFxyXG5cdFx0XHRcdFwic3RhcnRBbmdsZVwiOiAwLjc1LFxyXG5cdFx0XHRcdFwiZW5kQW5nbGVcIjogMC4yNSxcclxuXHRcdFx0XHRcImdhcFwiOiAyXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9LFxyXG5cdFwibGluZVwiOntcclxuXHRcdFwidHlwZVwiOiBcImxpbmVcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzE1LDEwLDAsMTVdLFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuICAgICAgXCJncmlkVHlwZVwiOiBcImRhc2hcIixcclxuICAgICAgXCJkYXNoTGVuZ3RoXCI6IDIsXHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcImxpbmVcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcInN0cmFpZ2h0XCIsXHJcblx0XHRcdFx0XCJ3aWR0aFwiOiAyXHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuICBcInRsaW5lXCI6e1xyXG4gIFx0XCJ0eXBlXCI6IFwibGluZVwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuICBcdFwicGFkZGluZ1wiOiBbMTUsMTAsMCwxNV0sXHJcbiAgXHRcInhBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuICAgICAgXCJib3VuZGFyeUdhcFwiOlwianVzdGlmeVwiLFxyXG4gIFx0fSxcclxuICBcdFwieUF4aXNcIjoge1xyXG4gICAgICBcImdyaWRUeXBlXCI6IFwiZGFzaFwiLFxyXG4gICAgICBcImRhc2hMZW5ndGhcIjogMixcclxuICAgICAgXCJkYXRhXCI6W1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIFwibWluXCI6MCxcclxuICAgICAgICAgIFwibWF4XCI6ODBcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICBcdH0sXHJcbiAgXHRcImxlZ2VuZFwiOiB7XHJcbiAgXHR9LFxyXG4gIFx0XCJleHRyYVwiOiB7XHJcbiAgXHRcdFwibGluZVwiOiB7XHJcbiAgXHRcdFx0XCJ0eXBlXCI6IFwiY3VydmVcIixcclxuICBcdFx0XHRcIndpZHRoXCI6IDJcclxuICBcdFx0fSxcclxuICBcdH1cclxuICB9LFxyXG4gIFwidGFyZWFcIjp7XHJcbiAgXHRcInR5cGVcIjogXCJhcmVhXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gIFx0XCJwYWRkaW5nXCI6IFsxNSwxMCwwLDE1XSxcclxuICBcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcbiAgICAgIFwiYm91bmRhcnlHYXBcIjpcImp1c3RpZnlcIixcclxuICBcdH0sXHJcbiAgXHRcInlBeGlzXCI6IHtcclxuICAgICAgXCJncmlkVHlwZVwiOiBcImRhc2hcIixcclxuICAgICAgXCJkYXNoTGVuZ3RoXCI6IDIsXHJcbiAgICAgIFwiZGF0YVwiOltcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcIm1pblwiOjAsXHJcbiAgICAgICAgICBcIm1heFwiOjgwXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgXHR9LFxyXG4gIFx0XCJsZWdlbmRcIjoge1xyXG4gIFx0fSxcclxuICBcdFwiZXh0cmFcIjoge1xyXG4gIFx0XHRcImFyZWFcIjoge1xyXG4gIFx0XHRcdFwidHlwZVwiOiBcImN1cnZlXCIsXHJcbiAgXHRcdFx0XCJvcGFjaXR5XCI6IDAuMixcclxuICBcdFx0XHRcImFkZExpbmVcIjogdHJ1ZSxcclxuICBcdFx0XHRcIndpZHRoXCI6IDIsXHJcbiAgXHRcdFx0XCJncmFkaWVudFwiOiB0cnVlXHJcbiAgXHRcdH0sXHJcbiAgXHR9XHJcbiAgfSxcclxuXHRcImNvbHVtblwiOntcclxuXHRcdFwidHlwZVwiOiBcImNvbHVtblwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbMTUsMTUsMCw1XSxcclxuXHRcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcblx0XHR9LFxyXG5cdFx0XCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZGF0YVwiOlt7XCJtaW5cIjowfV1cclxuXHRcdH0sXHJcblx0XHRcImxlZ2VuZFwiOiB7XHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwiY29sdW1uXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJncm91cFwiLFxyXG5cdFx0XHRcdFwid2lkdGhcIjogMzAsXHJcblx0XHRcdFx0XCJhY3RpdmVCZ0NvbG9yXCI6IFwiIzAwMDAwMFwiLFxyXG5cdFx0XHRcdFwiYWN0aXZlQmdPcGFjaXR5XCI6IDAuMDhcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG4gIFwiYmFyXCI6e1xyXG4gIFx0XCJ0eXBlXCI6IFwiYmFyXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gIFx0XCJwYWRkaW5nXCI6IFsxNSwzMCwwLDVdLFxyXG4gIFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiYm91bmRhcnlHYXBcIjpcImp1c3RpZnlcIixcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOmZhbHNlLFxyXG4gICAgICBcIm1pblwiOjAsXHJcbiAgICAgIFwiYXhpc0xpbmVcIjpmYWxzZVxyXG4gIFx0fSxcclxuICBcdFwieUF4aXNcIjoge1xyXG4gIFx0fSxcclxuICBcdFwibGVnZW5kXCI6IHtcclxuICBcdH0sXHJcbiAgXHRcImV4dHJhXCI6IHtcclxuICBcdFx0XCJiYXJcIjoge1xyXG4gIFx0XHRcdFwidHlwZVwiOiBcImdyb3VwXCIsXHJcbiAgXHRcdFx0XCJ3aWR0aFwiOiAzMCxcclxuICBcdFx0XHRcIm1ldGVyQm9yZGVcIjogMSxcclxuICBcdFx0XHRcIm1ldGVyRmlsbENvbG9yXCI6IFwiI0ZGRkZGRlwiLFxyXG4gIFx0XHRcdFwiYWN0aXZlQmdDb2xvclwiOiBcIiMwMDAwMDBcIixcclxuICBcdFx0XHRcImFjdGl2ZUJnT3BhY2l0eVwiOiAwLjA4XHJcbiAgXHRcdH0sXHJcbiAgXHR9XHJcbiAgfSxcclxuXHRcImFyZWFcIjp7XHJcblx0XHRcInR5cGVcIjogXCJhcmVhXCIsXHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFsxNSwxNSwwLDE1XSxcclxuXHRcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcblx0XHR9LFxyXG5cdFx0XCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZ3JpZFR5cGVcIjogXCJkYXNoXCIsXHJcbiAgICAgIFwiZGFzaExlbmd0aFwiOiAyLFxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJhcmVhXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJzdHJhaWdodFwiLFxyXG5cdFx0XHRcdFwib3BhY2l0eVwiOiAwLjIsXHJcblx0XHRcdFx0XCJhZGRMaW5lXCI6IHRydWUsXHJcblx0XHRcdFx0XCJ3aWR0aFwiOiAyLFxyXG5cdFx0XHRcdFwiZ3JhZGllbnRcIjogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwicmFkYXJcIjp7XHJcblx0XHRcInR5cGVcIjogXCJyYWRhclwiLFxyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbNSw1LDUsNV0sXHJcbiAgICBcImRhdGFMYWJlbFwiOiBmYWxzZSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJzaG93XCI6IHRydWUsXHJcblx0XHRcdFwicG9zaXRpb25cIjogXCJyaWdodFwiLFxyXG4gICAgICBcImxpbmVIZWlnaHRcIjogMjUsXHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwicmFkYXJcIjoge1xyXG5cdFx0XHRcdFwiZ3JpZFR5cGVcIjogXCJyYWRhclwiLFxyXG5cdFx0XHRcdFwiZ3JpZENvbG9yXCI6IFwiI0NDQ0NDQ1wiLFxyXG5cdFx0XHRcdFwiZ3JpZENvdW50XCI6IDMsXHJcblx0XHRcdFx0XCJvcGFjaXR5XCI6IDAuMixcclxuXHRcdFx0XHRcIm1heFwiOiAyMDBcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwiZ2F1Z2VcIjp7XHJcblx0XHRcInR5cGVcIjogXCJnYXVnZVwiLFxyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogXCI2NkttL0hcIixcclxuXHRcdFx0XCJmb250U2l6ZVwiOiAyNSxcclxuXHRcdFx0XCJjb2xvclwiOiBcIiMyZmMyNWJcIixcclxuXHRcdFx0XCJvZmZzZXRZXCI6IDUwXHJcblx0XHR9LFxyXG5cdFx0XCJzdWJ0aXRsZVwiOiB7XHJcblx0XHRcdFwibmFtZVwiOiBcIuWunuaXtumAn+W6plwiLFxyXG5cdFx0XHRcImZvbnRTaXplXCI6IDE1LFxyXG5cdFx0XHRcImNvbG9yXCI6IFwiIzE4OTBmZlwiLFxyXG5cdFx0XHRcIm9mZnNldFlcIjogLTUwXHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwiZ2F1Z2VcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcImRlZmF1bHRcIixcclxuXHRcdFx0XHRcIndpZHRoXCI6IDMwLFxyXG5cdFx0XHRcdFwibGFiZWxDb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcInN0YXJ0QW5nbGVcIjogMC43NSxcclxuXHRcdFx0XHRcImVuZEFuZ2xlXCI6IDAuMjUsXHJcblx0XHRcdFx0XCJzdGFydE51bWJlclwiOiAwLFxyXG5cdFx0XHRcdFwiZW5kTnVtYmVyXCI6IDEwMCxcclxuXHRcdFx0XHRcImxhYmVsRm9ybWF0XCI6IFwiXCIsXHJcblx0XHRcdFx0XCJzcGxpdExpbmVcIjoge1xyXG5cdFx0XHRcdFx0XCJmaXhSYWRpdXNcIjogMCxcclxuXHRcdFx0XHRcdFwic3BsaXROdW1iZXJcIjogMTAsXHJcblx0XHRcdFx0XHRcIndpZHRoXCI6IDMwLFxyXG5cdFx0XHRcdFx0XCJjb2xvclwiOiBcIiNGRkZGRkZcIixcclxuXHRcdFx0XHRcdFwiY2hpbGROdW1iZXJcIjogNSxcclxuXHRcdFx0XHRcdFwiY2hpbGRXaWR0aFwiOiAxMlxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0XCJwb2ludGVyXCI6IHtcclxuXHRcdFx0XHRcdFwid2lkdGhcIjogMjQsXHJcblx0XHRcdFx0XHRcImNvbG9yXCI6IFwiYXV0b1wiXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fSxcclxuXHRcImNhbmRsZVwiOntcclxuXHRcdFwidHlwZVwiOiBcImNhbmRsZVwiLFxyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbMTUsMTUsMCwxNV0sXHJcblx0XHRcImVuYWJsZVNjcm9sbFwiOiB0cnVlLFxyXG5cdFx0XCJlbmFibGVNYXJrTGluZVwiOiB0cnVlLFxyXG5cdFx0XCJkYXRhTGFiZWxcIjogZmFsc2UsXHJcblx0XHRcInhBeGlzXCI6IHtcclxuXHRcdFx0XCJsYWJlbENvdW50XCI6IDQsXHJcblx0XHRcdFwiaXRlbUNvdW50XCI6IDQwLFxyXG5cdFx0XHRcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcblx0XHRcdFwiZ3JpZENvbG9yXCI6IFwiI0NDQ0NDQ1wiLFxyXG5cdFx0XHRcImdyaWRUeXBlXCI6IFwic29saWRcIixcclxuXHRcdFx0XCJkYXNoTGVuZ3RoXCI6IDQsXHJcblx0XHRcdFwic2Nyb2xsU2hvd1wiOiB0cnVlLFxyXG5cdFx0XHRcInNjcm9sbEFsaWduXCI6IFwibGVmdFwiLFxyXG5cdFx0XHRcInNjcm9sbENvbG9yXCI6IFwiI0E2QTZBNlwiLFxyXG5cdFx0XHRcInNjcm9sbEJhY2tncm91bmRDb2xvclwiOiBcIiNFRkVCRUZcIlxyXG5cdFx0fSxcclxuXHRcdFwieUF4aXNcIjoge1xyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJjYW5kbGVcIjoge1xyXG5cdFx0XHRcdFwiY29sb3JcIjoge1xyXG5cdFx0XHRcdFx0XCJ1cExpbmVcIjogXCIjZjA0ODY0XCIsXHJcblx0XHRcdFx0XHRcInVwRmlsbFwiOiBcIiNmMDQ4NjRcIixcclxuXHRcdFx0XHRcdFwiZG93bkxpbmVcIjogXCIjMmZjMjViXCIsXHJcblx0XHRcdFx0XHRcImRvd25GaWxsXCI6IFwiIzJmYzI1YlwiXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRcImF2ZXJhZ2VcIjoge1xyXG5cdFx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcblx0XHRcdFx0XHRcIm5hbWVcIjogW1wiTUE1XCIsXCJNQTEwXCIsXCJNQTMwXCJdLFxyXG5cdFx0XHRcdFx0XCJkYXlcIjogWzUsMTAsMjBdLFxyXG5cdFx0XHRcdFx0XCJjb2xvclwiOiBbXCIjMTg5MGZmXCIsXCIjMmZjMjViXCIsXCIjZmFjYzE0XCJdXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcIm1hcmtMaW5lXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJkYXNoXCIsXHJcblx0XHRcdFx0XCJkYXNoTGVuZ3RoXCI6IDUsXHJcblx0XHRcdFx0XCJkYXRhXCI6IFtcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiAyMTUwLFxyXG5cdFx0XHRcdFx0XHRcImxpbmVDb2xvclwiOiBcIiNmMDQ4NjRcIixcclxuXHRcdFx0XHRcdFx0XCJzaG93TGFiZWxcIjogdHJ1ZVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiAyMzUwLFxyXG5cdFx0XHRcdFx0XHRcImxpbmVDb2xvclwiOiBcIiNmMDQ4NjRcIixcclxuXHRcdFx0XHRcdFx0XCJzaG93TGFiZWxcIjogdHJ1ZVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdF1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJtaXhcIjp7XHJcblx0XHRcInR5cGVcIjogXCJtaXhcIixcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzE1LDE1LDAsMTVdLFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuXHRcdFx0XCJkaXNhYmxlZFwiOiBmYWxzZSxcclxuXHRcdFx0XCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuXHRcdFx0XCJzcGxpdE51bWJlclwiOiA1LFxyXG5cdFx0XHRcImdyaWRUeXBlXCI6IFwiZGFzaFwiLFxyXG5cdFx0XHRcImRhc2hMZW5ndGhcIjogNCxcclxuXHRcdFx0XCJncmlkQ29sb3JcIjogXCIjQ0NDQ0NDXCIsXHJcblx0XHRcdFwicGFkZGluZ1wiOiAxMCxcclxuXHRcdFx0XCJzaG93VGl0bGVcIjogdHJ1ZSxcclxuXHRcdFx0XCJkYXRhXCI6IFtdXHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcIm1peFwiOiB7XHJcblx0XHRcdFx0XCJjb2x1bW5cIjoge1xyXG5cdFx0XHRcdFx0XCJ3aWR0aFwiOiAyMFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwic2NhdHRlclwiOntcclxuXHRcdFwidHlwZVwiOiBcInNjYXR0ZXJcIixcclxuXHRcdFwiY29sb3JcIjpjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOlsxNSwxNSwwLDE1XSxcclxuICAgIFwiZGF0YUxhYmVsXCI6ZmFsc2UsXHJcbiAgICBcInhBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuICAgICAgXCJncmlkVHlwZVwiOlwiZGFzaFwiLFxyXG4gICAgICBcInNwbGl0TnVtYmVyXCI6NSxcclxuICAgICAgXCJib3VuZGFyeUdhcFwiOlwianVzdGlmeVwiLFxyXG4gICAgICBcIm1pblwiOjBcclxuICAgIH0sXHJcbiAgICBcInlBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuICAgICAgXCJncmlkVHlwZVwiOlwiZGFzaFwiLFxyXG4gICAgfSxcclxuICAgIFwibGVnZW5kXCI6IHtcclxuICAgIH0sXHJcbiAgICBcImV4dHJhXCI6IHtcclxuICAgIFx0XCJzY2F0dGVyXCI6IHtcclxuICAgIFx0fSxcclxuICAgIH1cclxuXHR9LFxyXG5cdFwiYnViYmxlXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwiYnViYmxlXCIsXHJcblx0XHRcImNvbG9yXCI6Y29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjpbMTUsMTUsMCwxNV0sXHJcbiAgICBcInhBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuICAgICAgXCJncmlkVHlwZVwiOlwiZGFzaFwiLFxyXG4gICAgICBcInNwbGl0TnVtYmVyXCI6NSxcclxuICAgICAgXCJib3VuZGFyeUdhcFwiOlwianVzdGlmeVwiLFxyXG4gICAgICBcIm1pblwiOjAsXHJcbiAgICAgIFwibWF4XCI6MjUwXHJcbiAgICB9LFxyXG4gICAgXCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogZmFsc2UsXHJcbiAgICAgIFwiZ3JpZFR5cGVcIjpcImRhc2hcIixcclxuICAgICAgXCJkYXRhXCI6W3tcclxuICAgICAgICBcIm1pblwiOjAsXHJcbiAgICAgICAgXCJtYXhcIjoxNTBcclxuICAgICAgfV1cclxuICAgIH0sXHJcbiAgICBcImxlZ2VuZFwiOiB7XHJcbiAgICB9LFxyXG4gICAgXCJleHRyYVwiOiB7XHJcbiAgICBcdFwiYnViYmxlXCI6IHtcclxuICAgICAgICBcImJvcmRlclwiOjIsXHJcbiAgICAgICAgXCJvcGFjaXR5XCI6IDAuNSxcclxuICAgIFx0fSxcclxuICAgIH1cclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNmdTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///75\n");
=======
eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 _demodata = _interopRequireDefault(__webpack_require__(/*! @/mockdata/demodata.json */ 78));\nvar _data = _interopRequireDefault(__webpack_require__(/*! @/pages/index/data.json */ 79));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 = { data: function data() {return { series: [], homeViewShow: true, infoViewShow: false, errorInfoViewShow: false, homeMode: [], infoMode: [], errorInfoMode: [], baseInfo: { xDistance: 1, yDistance: 2, xDuration: 3, yDuration: 4, usedPr: 50, used: 3537 }, chartsData: { \"Line\": { \"categories\": [], \"series\": [] }, \"Pie\": { \"series\": [{ \"data\": [] }] } }, duration: 1000, calendar: '', ringOpts: {}, chartsDataLine1: {}, chartsDataPie2: {}, fontSize: '', height: '', showCharts: false, ejectShow: false, baseIP: '', basePort: '', baseLedId: '', baseCrnId: '', info: null, error: null, infoType: 0, text: '', text1: '' };}, onShow: function onShow() {// 隐藏时间,电量,信号等\n    plus.navigator.setFullscreen(true);}, onLoad: function onLoad() {var _this = this;this.getServerData();this.getDate();setInterval(function () {_this.getDate();_this.getInfo();_this.getError();_this.controller();}, 1000);setInterval(function () {// this.controller()\n    }, 2000);}, methods: { getUrl: function getUrl() {this.commonUrl = this.baseHttp + this.baseIP + ':' + this.basePort + this.baseUrl;}, getServerData: function getServerData() {this.chartsDataLine1 = JSON.parse(JSON.stringify(_demodata.default.Line));this.chartsDataPie2 = JSON.parse(JSON.stringify(_demodata.default.PieA));}, getInfo: function getInfo() {var that = this;uni.request({ url: \"http://192.168.1.111:8088/sxjzwms/system/error\", method: \"GET\", success: function success(result) {var res = result.data;if (res.data && res.data !== \"\") {if (that.infoType == 2 || that.infoType == 3) {return;}that.infoType = 1;that.text = res;} else {if (that.infoType == 2 || that.infoType == 3) {return;}that.infoType = 0;}} });}, getError: function getError() {var that = this;uni.request({ url: \"http://192.168.1.111:8088/sxjzwms/mat/info\", method: \"GET\", success: function success(result) {var res = result.data;if (res.data && res.data !== \"\") {if (that.infoType == 1) {that.infoType = 3;that.text1 = res;return;}that.infoType = 2;that.text1 = res;} else {if (that.infoType == 1) {return;}that.infoType = 0;}} });}, // 控制器\n    controller: function controller() {var _this2 = this;switch (this.infoType) {// 有信息 但 没有错误信息\n        case 1:if (this.homeViewShow) {this.homeViewShow = false;this.homeMode = ['fade', 'slide-bottom'];setTimeout(function () {_this2.infoViewShow = true;_this2.infoMode = ['fade', 'slide-bottom'];}, 1000);} else if (this.errorInfoViewShow) {this.errorInfoViewShow = false;this.errorInfoMode = ['fade', 'slide-bottom'];setTimeout(function () {_this2.infoViewShow = true;_this2.infoMode = ['fade', 'slide-bottom'];}, 1000);}return; // 有信息 且 有错误信息\n        case 2:if (this.homeViewShow) {this.homeViewShow = false;this.homeMode = ['fade', 'slide-bottom'];setTimeout(function () {_this2.errorInfoViewShow = true;_this2.errorInfoMode = ['fade', 'slide-bottom'];}, 1000);} else if (this.infoViewShow) {this.infoViewShow = false;this.infoMode = ['fade', 'slide-bottom'];setTimeout(function () {_this2.errorInfoViewShow = true;_this2.errorInfoMode = ['fade', 'slide-bottom'];}, 1000);}return; // 有信息 且 有错误信息\n        case 3:if (this.homeViewShow) {this.homeViewShow = false;this.homeMode = ['fade', 'slide-bottom'];setTimeout(function () {_this2.errorInfoViewShow = true;_this2.errorInfoMode = ['fade', 'slide-bottom'];}, 1000);} else if (this.infoViewShow) {this.infoViewShow = false;this.infoMode = ['fade', 'slide-bottom'];setTimeout(function () {_this2.errorInfoViewShow = true;_this2.errorInfoMode = ['fade', 'slide-bottom'];}, 1000);}return;default:if (this.errorInfoViewShow) {this.errorInfoViewShow = false;this.errorInfoMode = ['fade', 'slide-bottom'];setTimeout(function () {_this2.homeViewShow = true;_this2.homeMode = ['fade', 'slide-bottom'];}, 1000);} else if (this.infoViewShow) {this.infoViewShow = false;this.infoMode = ['fade', 'slide-bottom'];setTimeout(function () {_this2.homeViewShow = true;_this2.homeMode = ['fade', 'slide-bottom'];}, 1000);}return;}}, // 主屏幕\n    handle: function handle(type) {this.homeViewShow = !this.homeViewShow;this.modeClass = type;}, // 拣料\n    handle1: function handle1(type) {this.infoViewShow = !this.infoViewShow;this.modeClass = type;}, // 异常\n    handle2: function handle2(type) {this.errorInfoViewShow = !this.errorInfoViewShow;this.modeClass = type;}, // 配置\n    ejected: function ejected() {this.ejectShow = true;}, // 取消配置\n    ejectClose: function ejectClose() {this.ejectShow = false;}, // 确认配置\n    ejectConfirm: function ejectConfirm() {uni.setStorageSync('BaseIp', this.baseIP);uni.setStorageSync('BaseLedId', this.baseLedId);uni.setStorageSync('BasePort', this.basePort);uni.setStorageSync('BaseCrnId', this.baseCrnId);this.getUrl();this.ejectShow = false;}, // 日历\n    getDate: function getDate() {var dt = new Date();var year, month, day, hours, minutes, seconds, weeks;year = dt.getFullYear();month = dt.getMonth() + 1 < 10 ? '0' + (dt.getMonth() + 1) : dt.getMonth() + 1;day = dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate();hours = dt.getHours() < 10 ? '0' + dt.getHours() : dt.getHours();minutes = dt.getMinutes() < 10 ? '0' + dt.getMinutes() : dt.getMinutes();seconds = dt.getSeconds() < 10 ? '0' + dt.getSeconds() : dt.getSeconds();weeks = dt.getDay();switch (weeks) {case 0:weeks = \"星期日\";break;case 1:weeks = \"星期一\";break;case 2:weeks = \"星期二\";break;case 3:weeks = \"星期三\";break;case 4:weeks = \"星期四\";break;case 5:weeks = \"星期五\";break;default:weeks = \"星期六\";}this.calendar = year + \"年\" + month + \"月\" + day + \"日 \" + hours + \":\" + minutes + \":\" + seconds + \" \" + weeks;}, getDateFormat: function getDateFormat(value) {var date = new Date(); // 获取当前时间\n      date.setDate(date.getDate() + value); // 设置天数 -1 天\n      var m = date.getMonth() + 1;var d = date.getDate();var newDate = m + '-' + d;return newDate;}, /*************** 折线图 *****************************************************************************************************/initlineChart: function initlineChart() {var that = this;uni.request({ url: that.commonUrl + \"/monitor/line/charts\", method: 'GET', success: function success(result) {var res = result.data;if (res.code === 200) {that.chartsData.Line.categories = [that.getDateFormat(-11), that.getDateFormat(-10), that.getDateFormat(-9), that.getDateFormat(-8), that.getDateFormat(-7), that.getDateFormat(-6), that.getDateFormat(-5), that.getDateFormat(-4), that.getDateFormat(-3), that.getDateFormat(-2), that.getDateFormat(-1), that.getDateFormat(0)];that.chartsData.Line.series = res.data.rows;}} });}, /*************** 饼图 *****************************************************************************************************/initPieChart: function initPieChart() {var that = this;uni.request({ url: that.commonUrl + \"/monitor/loc/rep\", method: 'GET', success: function success(result) {var res = result.data;\n          if (res.code === 200) {\n            that.chartsData.Pie.series[0].data = res.data.pie;\n            that.stockCount = res.data.stockCunt;\n            that.emptyCount = res.data.emptyCount;\n            that.noneCount = res.data.noneCount;\n            that.used = res.data.used;\n            that.usedPr = res.data.usedPr;\n          }\n        } });\n\n    },\n    getOther: function getOther() {\n      var that = this;\n      uni.request({\n        // http://10.10.0.222:9090/jkwcs/monitor/led?ledId=186\n        url: that.commonUrl + \"/monitor/other\",\n        data: {\n          crnId: that.baseCrnId,\n          ledId: 1 },\n\n        success: function success(result) {\n          __f__(\"log\", result, \" at pages/home/home.vue:598\");\n          var res = result.data;\n          if (res.code === 200) {\n            that.xDistance = res.data.xDistance;\n            that.yDistance = res.data.yDistance;\n            that.xDuration = res.data.xDuration;\n            that.yDuration = res.data.yDuration;\n          } else if (res.code === 403) {\n\n          } else {\n\n          }\n        } });\n\n    } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 10)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaG9tZS9ob21lLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd1JBO0FBQ0EsMkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQUNBLEVBQ0EsSUFEQSxrQkFDQSxDQUNBLFNBQ0EsVUFEQSxFQUVBLGtCQUZBLEVBR0EsbUJBSEEsRUFJQSx3QkFKQSxFQUtBLFlBTEEsRUFNQSxZQU5BLEVBT0EsaUJBUEEsRUFRQSxZQUNBLFlBREEsRUFFQSxZQUZBLEVBR0EsWUFIQSxFQUlBLFlBSkEsRUFLQSxVQUxBLEVBTUEsVUFOQSxFQVJBLEVBZ0JBLGNBQ0EsVUFDQSxnQkFEQSxFQUVBLFlBRkEsRUFEQSxFQUtBLFNBQ0EsYUFDQSxVQURBLEdBREEsRUFMQSxFQWhCQSxFQTJC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PHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblx0XHRcclxuXHRcdDx1bmktdHJhbnNpdGlvbiA6ZHVyYXRpb249XCJkdXJhdGlvblwiIDptb2RlLWNsYXNzPVwiaG9tZU1vZGVcIiA6c2hvdz1cImhvbWVWaWV3U2hvd1wiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImhvbWUtdmlld1wiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaGVhZFwiPlxyXG5cdFx0XHRcdFx0PHRleHQ+6Ieq5Yqo5LuT5bqTV0NT55uR5o6n5bmz5Y+wPC90ZXh0PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8IS0tIOaXpeWOhiAtLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInRpbWUtdG9vbHNcIj57e2NhbGVuZGFyfX08L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24tbGVmdFwiIEBjbGljaz1cImVqZWN0ZWQoKVwiPjwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1yaWdodFwiIEBjbGljaz1cImVqZWN0ZWQoKVwiPjwvdmlldz5cclxuXHRcdFx0XHQ8IS0tIOS4u+inhuWbviAtLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cIm1haW5cIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibWlhbi1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibWlhbi1pdGVtLWJveFwiPlxyXG5cdFx0XHRcdFx0XHRcdDx5LWJveD5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+6Ieq5Yqo5YyW56uL5L2T5LuT5bqTPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tc3ViVGl0bGVcIj5BdXRvbWF0aWMgU3RvcmFnZWFuZCBSZXRyaWV2YWwgU3lzdGVtPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tdGV4dFwiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIj7liKnnlKjnq4vkvZPku5PlupPorr7lpIflj6/lrp7njrDku5PlupPpq5jlsYLlkIjnkIbljJbjgIHlrZjlj5boh6rliqjljJbjgIHmk43kvZznroDkvr/ljJbvvJvoh6rliqjljJbnq4vkvZPku5PlupPmmK/lvZPliY3mioDmnK/msLTlubPovoPpq5jnmoTlvaLlvI/jgILoh6rliqjljJbnq4vkvZPku5PlupPnmoTkuLvkvZPnlLHotKfmnrbjgIHlt7fpgZPlvI/loIblnpvotbfph43mnLrjgIHlhaXvvIjlh7rvvInlupPlt6XkvZzlj7Dlkozoh6rliqjov5Dov5vvvIjlh7rvvInlj4rmk43kvZzmjqfliLbns7vnu5/nu4TmiJDjgILotKfmnrbmmK/pkqLnu5PmnoTmiJbpkqLnrYvmt7flh53lnJ/nu5PmnoTnmoTlu7rnrZHnianmiJbnu5PmnoTkvZPvvIzotKfmnrblhoXmmK/moIflh4blsLrlr7jnmoTotKfkvY3nqbrpl7TvvIzlt7fpgZPloIblnpvotbfph43mnLrnqb/ooYzkuo7otKfmnrbkuYvpl7TnmoTlt7fpgZPkuK3vvIzlrozmiJDlrZjjgIHlj5botKfnmoTlt6XkvZzjgILnrqHnkIbkuIrph4fnlKjorqHnrpfmnLrlj4rmnaHlvaLnoIHmioDmnK/jgII8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS10aXRsZVwiPuS7k+W6k+aVsOaNrjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+d2FyZWhvdXNlIGRhdGE8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW1nLWJveFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbS1pbWdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvYTEucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJ3aWR0aDogY2FsYygxMDAlIC0gNXZ3KTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvd1wiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiID5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAydnc7cGFkZGluZy1sZWZ0OiA1dnc7O2ZvbnQtc2l6ZTogMnZ3O1wiPnt7YmFzZUluZm8ueERpc3RhbmNlfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7Ym90dG9tOiAwO2xlZnQ6IDd2dztcIj5tPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiAxMDAlO3RleHQtYWxpZ246IGxlZnQ7dGV4dC1pbmRlbnQ6IDJlbTtcIj7ntK/orqHotbDooYzot53nprso57GzKTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtLWltZ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9iMS5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1jb2xcIiBzdHlsZT1cIndpZHRoOiBjYWxjKDEwMCUgLSA1dncpO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93XCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDJ2dztwYWRkaW5nLWxlZnQ6IDV2dzs7Zm9udC1zaXplOiAydnc7XCI+e3tiYXNlSW5mby55RGlzdGFuY2V9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtib3R0b206IDA7bGVmdDogN3Z3O1wiPm08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7dGV4dC1hbGlnbjogbGVmdDt0ZXh0LWluZGVudDogMmVtO1wiPue0r+iuoeWNh+mZjei3neemuyjnsbMpPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW0taW1nXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2MxLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwid2lkdGg6IGNhbGMoMTAwJSAtIDV2dyk7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3dcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIiA+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMnZ3O3BhZGRpbmctbGVmdDogNXZ3Oztmb250LXNpemU6IDJ2dztcIj57e2Jhc2VJbmZvLnhEdXJhdGlvbn19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO2JvdHRvbTogMDtsZWZ0OiA3dnc7XCI+czwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDogMTAwJTt0ZXh0LWFsaWduOiBsZWZ0O3RleHQtaW5kZW50OiAyZW07XCI+57Sv6K6h6LWw6KGM5pe26ZW/KOenkik8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbS1pbWdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvZDEucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJ3aWR0aDogY2FsYygxMDAlIC0gNXZ3KTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvd1wiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiID5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAydnc7cGFkZGluZy1sZWZ0OiA1dnc7O2ZvbnQtc2l6ZTogMnZ3O1wiPnt7YmFzZUluZm8ueUR1cmF0aW9ufX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7Ym90dG9tOiAwO2xlZnQ6IDd2dztcIj5zPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiAxMDAlO3RleHQtYWxpZ246IGxlZnQ7dGV4dC1pbmRlbnQ6IDJlbTtcIj7ntK/orqHljYfpmY3ml7bplb8o56eSKTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvd1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDlt6bkvqcgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+5bqT5L2N5L2/55So546HPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+RVFVSVBNRU5UIFVTQUdFIFRISVMgTU9OVEg8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5Y+z5L6nIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOeZvuWIhuavlCAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1jb2xcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LWVuZDtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1wiID5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSBzdHlsZT1cImp1c3RpZnktY29udGVudDogZmxleC1lbmQ7cG9zaXRpb246IGFic29sdXRlO3RvcDogMDtyaWdodDogMXZ3O3RleHQtYWxpZ246IHJpZ2h0O1wiIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tdGl0bGVcIj57e2Jhc2VJbmZvLnVzZWRQcn19JTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+5ZCM5q+U5LiK5pyIICsgNSU8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTthbGlnbi1pdGVtczogZmxleC1zdGFydDtwb3NpdGlvbjogcmVsYXRpdmU7Zm9udC1zaXplOiAxdndcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOi/m+W6puadoSAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtwb3NpdGlvbjogcmVsYXRpdmU7bWFyZ2luLXRvcDogNSU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInByb2dyZXNzQmFyXCIgc3R5bGU9XCJ3aWR0aDogODAlO2hlaWdodDogMnZ3O1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInByb2dyZXNzXCIgOnN0eWxlPVwiJ3dpZHRoOicrIGJhc2VJbmZvLnVzZWRQciArICclJ1wiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO2JvdHRvbTogMDtyaWdodDogMDtmb250LXNpemU6IDIuNXZ3O2NvbG9yOiAjRkY1NzIyOztcIj57e2Jhc2VJbmZvLnVzZWR9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ktYm94PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm1pYW4taXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm1pYW4taXRlbS1ib3hcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiAzNSU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5oqY57q/5Zu+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8eS1ib3g+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvd1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5bem5L6nIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+5YWl5Ye65bqT57uf6K6hPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS1zdWJUaXRsZVwiPk9SREVSIFNUQVRJU1RJQ1M8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDlj7PkvqcgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDnmb7liIbmr5QgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtZW5kO2p1c3RpZnktY29udGVudDogZmxleC1lbmQ7XCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSBzdHlsZT1cImp1c3RpZnktY29udGVudDogZmxleC1lbmQ7cG9zaXRpb246IGFic29sdXRlO3RvcDogMDtyaWdodDogMXZ3O3RleHQtYWxpZ246IHJpZ2h0O1wiIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+MzE8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tc3ViVGl0bGVcIj7ku4rml6XorqLljZXmlbA8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImNoYXJ0cy1ib3hcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHFpdW4tZGF0YS1jaGFydHMgdHlwZT1cImxpbmVcIiA6Y2hhcnREYXRhPVwiY2hhcnRzRGF0YUxpbmUxXCIgOmVjaGFydHNINT1cInRydWVcIiA6ZWNoYXJ0c0FwcD1cInRydWVcIi8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ktYm94PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0gbnVsbCAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiAyJTtcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDQzJTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHktYm94PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3dcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOW3puS+pyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS10aXRsZVwiPuW6k+WtmOexu+WeizwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tc3ViVGl0bGVcIj5JTkNPTUUgREFURTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOWPs+S+pyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bztcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOeZvuWIhuavlCAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1lbmQ7anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcIiA+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tdGl0bGVcIj7ku4rlpKk8L3RleHQ+IFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+VG9kYXk8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDlt6YgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiY2hhcnRzLWJveC1yaW5nXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHFpdW4tZGF0YS1jaGFydHMgdHlwZT1cInJpbmdcIiA6b3B0cz1cIntsZWdlbmQ6e3Bvc2l0aW9uOidib3R0b20nfX1cIiA6ZW9wdHM9XCJyaW5nT3B0c1wiIDpjaGFydERhdGE9XCJjaGFydHNEYXRhUGllMlwiIDplY2hhcnRzSDU9XCJ0cnVlXCIgOmVjaGFydHNBcHA9XCJ0cnVlXCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5Y+zIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93IHN1Yi1pbmZvXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2cxLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogOHZ3O2hlaWdodDogNHZ3O2xpbmUtaGVpZ2h0OiA0dnc7XCI+5Zyo5bqTPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogOHZ3O2hlaWdodDogNHZ3O2xpbmUtaGVpZ2h0OiA0dnc7Zm9udC1zaXplOiAydnc7XCI+MTAwMDA8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3cgc3ViLWluZm9cIiBzdHlsZT1cIm1hcmdpbi10b3A6IDJ2aDtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvZzEucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA4dnc7aGVpZ2h0OiA0dnc7bGluZS1oZWlnaHQ6IDR2dztcIj7lnKjlupM8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA4dnc7aGVpZ2h0OiA0dnc7bGluZS1oZWlnaHQ6IDR2dztmb250LXNpemU6IDJ2dztcIj4xMDAwMDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvdyBzdWItaW5mb1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMnZoO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9nMS5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDh2dztoZWlnaHQ6IDR2dztsaW5lLWhlaWdodDogNHZ3O1wiPuWcqOW6kzwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDh2dztoZWlnaHQ6IDR2dztsaW5lLWhlaWdodDogNHZ3O2ZvbnQtc2l6ZTogMnZ3O1wiPjEwMDAwPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0PC95LWJveD5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiAyJTtcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDogMTglO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8eS1ib3g+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO2ZvbnQtc2l6ZTogNHZoO2p1c3RpZnktY29udGVudDogY2VudGVyO2xldHRlci1zcGFjaW5nOiAxdmg7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHTlmInlloTovrnplIvmnLrmorDogqHku73mnInpmZDlhazlj7hcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwveS1ib3g+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3VuaS10cmFuc2l0aW9uPlxyXG5cdFx0PCEtLSDlhajmnb8v5ouj5paZ5L+h5oGvIC0tPlxyXG5cdFx0PHVuaS10cmFuc2l0aW9uIDpkdXJhdGlvbj1cImR1cmF0aW9uXCIgOm1vZGUtY2xhc3M9XCJpbmZvTW9kZVwiIDpzaG93PVwiaW5mb1ZpZXdTaG93XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiaG9tZS12aWV3XCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoZWFkXCI+XHJcblx0XHRcdFx0XHQ8dGV4dD7lhajmnb8gLyDmi6Pmlpk8L3RleHQ+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwhLS0g5pel5Y6GIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidGltZS10b29sc1wiPnt7Y2FsZW5kYXJ9fTwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1sZWZ0XCIgQGNsaWNrPVwiZWplY3RlZCgpXCI+PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLXJpZ2h0XCIgQGNsaWNrPVwiZWplY3RlZCgpXCI+PC92aWV3PlxyXG5cdFx0XHRcdDwhLS0g5Li75L2TIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5mby1tYWluXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImluZm8tYm94XCI+XHJcblx0XHRcdFx0XHRcdDx5LWJveD57e3RleHR9fTwveS1ib3g+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3VuaS10cmFuc2l0aW9uPlxyXG5cdFx0PCEtLSDlvILluLjkv6Hmga8gLS0+XHJcblx0XHQ8dW5pLXRyYW5zaXRpb24gOmR1cmF0aW9uPVwiZHVyYXRpb25cIiA6bW9kZS1jbGFzcz1cImVycm9ySW5mb01vZGVcIiA6c2hvdz1cImVycm9ySW5mb1ZpZXdTaG93XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiZXJyb3ItaW5mby12aWV3XCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoZWFkXCI+XHJcblx0XHRcdFx0XHQ8dGV4dD7lvILluLg8L3RleHQ+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwhLS0g5pel5Y6GIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidGltZS10b29sc1wiPnt7Y2FsZW5kYXJ9fTwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1sZWZ0XCI+PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLXJpZ2h0XCI+PC92aWV3PlxyXG5cdFx0XHRcdDwhLS0g5Li75L2TIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5mby1tYWluXCIgPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbmZvLWJveFwiPlxyXG5cdFx0XHRcdFx0XHQ8eS1ib3g+e3t0ZXh0MX19PC95LWJveD5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdW5pLXRyYW5zaXRpb24+XHJcblx0XHRcclxuXHRcdDwhLS0g6Ieq5a6a5LmJ5by55Ye65bGCIC0tPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJlamVjdC1tYXNrXCIgdi1zaG93PVwiZWplY3RTaG93XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiZWplY3RcIj5cclxuXHRcdFx0XHQ8IS0tIOW8ueWHunRpdGxlIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiZWplY3QtdGl0bGVcIj7kv67mlLkgLyDphY3nva48L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSBpbnB1dCAtLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImVqZWN0LWlucHV0XCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW1cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkZXNjXCI+aXDvvJo8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiYmFzZUlQXCI+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj5wb3J077yaPC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCI+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cImJhc2VQb3J0XCI+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj5sZWRJZO+8mjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJiYXNlTGVkSWRcIj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY1wiPkNybklk77yaPC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCI+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cImJhc2VDcm5JZFwiPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwhLS0gYnV0dG9uIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiZWplY3QtYnV0dG9uXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1pdGVtXCIgQGNsaWNrPVwiZWplY3RDbG9zZVwiPuWPliDmtog8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1pdGVtXCIgQGNsaWNrPVwiZWplY3RDb25maXJtXCI+56GuIOiupDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCBkZW1vZGF0YSBmcm9tICdAL21vY2tkYXRhL2RlbW9kYXRhLmpzb24nO1xyXG5cdGltcG9ydCB5Y3FkYXRhIGZyb20gJ0AvcGFnZXMvaW5kZXgvZGF0YS5qc29uJztcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHNlcmllczogW10sXHJcblx0XHRcdFx0aG9tZVZpZXdTaG93OiB0cnVlLFxyXG5cdFx0XHRcdGluZm9WaWV3U2hvdzogZmFsc2UsXHJcblx0XHRcdFx0ZXJyb3JJbmZvVmlld1Nob3c6IGZhbHNlLFxyXG5cdFx0XHRcdGhvbWVNb2RlOiBbXSxcclxuXHRcdFx0XHRpbmZvTW9kZTogW10sXHJcblx0XHRcdFx0ZXJyb3JJbmZvTW9kZTogW10sXHJcblx0XHRcdFx0YmFzZUluZm86IHtcclxuXHRcdFx0XHRcdHhEaXN0YW5jZTogMSxcclxuXHRcdFx0XHRcdHlEaXN0YW5jZTogMixcclxuXHRcdFx0XHRcdHhEdXJhdGlvbjogMyxcclxuXHRcdFx0XHRcdHlEdXJhdGlvbjogNCxcclxuXHRcdFx0XHRcdHVzZWRQcjogNTAsXHJcblx0XHRcdFx0XHR1c2VkOiAzNTM3XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRjaGFydHNEYXRhOiB7XHJcblx0XHRcdFx0XHRcIkxpbmVcIjoge1xyXG5cdFx0XHRcdFx0XHRcImNhdGVnb3JpZXNcIjogW10sXHJcblx0XHRcdFx0XHRcdFwic2VyaWVzXCI6IFtdXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XCJQaWVcIjoge1xyXG5cdFx0XHRcdFx0XHRcInNlcmllc1wiOiBbe1xyXG5cdFx0XHRcdFx0XHRcdFwiZGF0YVwiOiBbXVxyXG5cdFx0XHRcdFx0XHR9XVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGR1cmF0aW9uOiAxMDAwLFxyXG5cdFx0XHRcdGNhbGVuZGFyOiAnJyxcclxuXHRcdFx0XHRyaW5nT3B0czp7fSxcclxuXHRcdFx0XHRjaGFydHNEYXRhTGluZTE6IHt9LFxyXG5cdFx0XHRcdGNoYXJ0c0RhdGFQaWUyOiB7fSxcclxuXHRcdFx0XHRmb250U2l6ZTogJycsXHJcblx0XHRcdFx0aGVpZ2h0OiAnJyxcclxuXHRcdFx0XHRzaG93Q2hhcnRzOiBmYWxzZSxcclxuXHRcdFx0XHRlamVjdFNob3c6IGZhbHNlLFxyXG5cdFx0XHRcdGJhc2VJUDogJycsXHJcblx0XHRcdFx0YmFzZVBvcnQ6ICcnLFxyXG5cdFx0XHRcdGJhc2VMZWRJZDogJycsXHJcblx0XHRcdFx0YmFzZUNybklkOiAnJyxcclxuXHRcdFx0XHRpbmZvOiBudWxsLFxyXG5cdFx0XHRcdGVycm9yOiBudWxsLFxyXG5cdFx0XHRcdGluZm9UeXBlOiAwLFxyXG5cdFx0XHRcdHRleHQ6ICcnLFxyXG5cdFx0XHRcdHRleHQxOiAnJyxcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG9uU2hvdygpIHtcclxuXHRcdFx0Ly8g6ZqQ6JeP5pe26Ze0LOeUtemHjyzkv6Hlj7fnrYlcclxuXHRcdFx0Ly8gI2lmZGVmIEFQUC1QTFVTXHJcblx0XHRcdHBsdXMubmF2aWdhdG9yLnNldEZ1bGxzY3JlZW4odHJ1ZSlcclxuXHRcdFx0Ly8gI2VuZGlmXHJcblx0XHR9LFxyXG5cdFx0b25Mb2FkKCkge1xyXG5cdFx0XHR0aGlzLmdldFNlcnZlckRhdGEoKVxyXG5cdFx0XHR0aGlzLmdldERhdGUoKVxyXG5cdFx0XHRzZXRJbnRlcnZhbCgoKT0+e1xyXG5cdFx0XHRcdHRoaXMuZ2V0RGF0ZSgpXHJcblx0XHRcdFx0dGhpcy5nZXRJbmZvKClcclxuXHRcdFx0XHR0aGlzLmdldEVycm9yKClcclxuXHRcdFx0XHR0aGlzLmNvbnRyb2xsZXIoKVxyXG5cdFx0XHR9LDEwMDApXHJcblx0XHRcdHNldEludGVydmFsKCgpPT57XHJcblx0XHRcdFx0Ly8gdGhpcy5jb250cm9sbGVyKClcclxuXHRcdFx0fSwyMDAwKVxyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0Z2V0VXJsKCkge1xyXG5cdFx0XHRcdHRoaXMuY29tbW9uVXJsID0gdGhpcy5iYXNlSHR0cCArIHRoaXMuYmFzZUlQICsgJzonICt0aGlzLmJhc2VQb3J0ICsgdGhpcy5iYXNlVXJsXHJcblx0XHRcdH0sXHJcblx0XHRcdGdldFNlcnZlckRhdGEoKSB7XHJcblx0XHRcdFx0dGhpcy5jaGFydHNEYXRhTGluZTE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkZW1vZGF0YS5MaW5lKSlcclxuXHRcdFx0XHR0aGlzLmNoYXJ0c0RhdGFQaWUyPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGVtb2RhdGEuUGllQSkpXHJcblx0XHRcdH0sXHJcblx0XHRcdGdldEluZm8oKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBcImh0dHA6Ly8xOTIuMTY4LjEuMTExOjgwODgvc3hqendtcy9zeXN0ZW0vZXJyb3JcIixcclxuXHRcdFx0XHRcdG1ldGhvZDpcIkdFVFwiLFxyXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0dmFyXHRyZXMgPSByZXN1bHQuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEgIT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAyIHx8IHRoYXQuaW5mb1R5cGUgPT0gMykge1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQudGV4dCA9IHJlc1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDIgfHwgdGhhdC5pbmZvVHlwZSA9PSAzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAwXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRFcnJvcigpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6XCJodHRwOi8vMTkyLjE2OC4xLjExMTo4MDg4L3N4anp3bXMvbWF0L2luZm9cIixcclxuXHRcdFx0XHRcdG1ldGhvZDpcIkdFVFwiLFxyXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0dmFyXHRyZXMgPSByZXN1bHQuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEgIT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAxKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gM1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC50ZXh0MSA9IHJlc1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAyXHJcblx0XHRcdFx0XHRcdFx0dGhhdC50ZXh0MSA9IHJlc1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVyblxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMFxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHRcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5o6n5Yi25ZmoXHJcblx0XHRcdGNvbnRyb2xsZXIoKSB7XHJcblx0XHRcdFx0c3dpdGNoKHRoaXMuaW5mb1R5cGUpIHtcclxuXHRcdFx0XHRcdC8vIOacieS/oeaBryDkvYYg5rKh5pyJ6ZSZ6K+v5L+h5oGvXHJcblx0XHRcdFx0XHRjYXNlIDE6IFxyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5ob21lVmlld1Nob3cpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmhvbWVWaWV3U2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaW5mb1ZpZXdTaG93ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdH0sMTAwMClcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmVycm9ySW5mb1ZpZXdTaG93KSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5pbmZvVmlld1Nob3cgPSB0cnVlXHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdFx0XHRcdFx0fSwxMDAwKVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdC8vIOacieS/oeaBryDkuJQg5pyJ6ZSZ6K+v5L+h5oGvXHJcblx0XHRcdFx0XHRjYXNlIDI6XHJcblx0XHRcdFx0XHRcdGlmICh0aGlzLmhvbWVWaWV3U2hvdykge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmhvbWVNb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IHRydWVcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdH0sMTAwMClcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmluZm9WaWV3U2hvdykge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaW5mb1ZpZXdTaG93ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IHRydWVcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdH0sMTAwMClcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHQvLyDmnInkv6Hmga8g5LiUIOaciemUmeivr+S/oeaBr1xyXG5cdFx0XHRcdFx0Y2FzZSAzOlxyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5ob21lVmlld1Nob3cpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmhvbWVWaWV3U2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSB0cnVlXHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuXHRcdFx0XHRcdFx0XHR9LDEwMDApXHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5pbmZvVmlld1Nob3cpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmluZm9WaWV3U2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSB0cnVlXHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuXHRcdFx0XHRcdFx0XHR9LDEwMDApXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0ZGVmYXVsdCA6XHJcblx0XHRcdFx0XHRcdGlmICh0aGlzLmVycm9ySW5mb1ZpZXdTaG93KSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5ob21lVmlld1Nob3cgPSB0cnVlXHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmhvbWVNb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdFx0XHRcdFx0fSwxMDAwKVxyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuaW5mb1ZpZXdTaG93KSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5pbmZvVmlld1Nob3cgPSBmYWxzZVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuXHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpPT57XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmhvbWVWaWV3U2hvdyA9IHRydWVcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaG9tZU1vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuXHRcdFx0XHRcdFx0XHR9LDEwMDApXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5Li75bGP5bmVXHJcblx0XHRcdGhhbmRsZSh0eXBlKSB7XHJcblx0XHRcdFx0dGhpcy5ob21lVmlld1Nob3cgPSAhdGhpcy5ob21lVmlld1Nob3dcclxuXHRcdFx0XHR0aGlzLm1vZGVDbGFzcyA9IHR5cGVcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5ouj5paZXHJcblx0XHRcdGhhbmRsZTEodHlwZSkge1xyXG5cdFx0XHRcdHRoaXMuaW5mb1ZpZXdTaG93ID0gIXRoaXMuaW5mb1ZpZXdTaG93XHJcblx0XHRcdFx0dGhpcy5tb2RlQ2xhc3MgPSB0eXBlXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOW8guW4uFxyXG5cdFx0XHRoYW5kbGUyKHR5cGUpIHtcclxuXHRcdFx0XHR0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gIXRoaXMuZXJyb3JJbmZvVmlld1Nob3dcclxuXHRcdFx0XHR0aGlzLm1vZGVDbGFzcyA9IHR5cGVcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g6YWN572uXHJcblx0XHRcdGVqZWN0ZWQgKCkge1xyXG5cdFx0XHRcdHRoaXMuZWplY3RTaG93ID0gdHJ1ZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDlj5bmtojphY3nva5cclxuXHRcdFx0ZWplY3RDbG9zZSgpIHtcclxuXHRcdFx0XHR0aGlzLmVqZWN0U2hvdyA9IGZhbHNlXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOehruiupOmFjee9rlxyXG5cdFx0XHRlamVjdENvbmZpcm0oKSB7XHJcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdCYXNlSXAnLCB0aGlzLmJhc2VJUCk7XHJcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdCYXNlTGVkSWQnLCB0aGlzLmJhc2VMZWRJZCk7XHJcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdCYXNlUG9ydCcsdGhpcy5iYXNlUG9ydCk7XHJcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdCYXNlQ3JuSWQnLHRoaXMuYmFzZUNybklkKTtcclxuXHRcdFx0XHR0aGlzLmdldFVybCgpXHJcblx0XHRcdFx0dGhpcy5lamVjdFNob3cgPSBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDml6XljoZcclxuXHRcdFx0Z2V0RGF0ZSgpIHtcclxuXHRcdFx0XHR2YXIgZHQgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0XHRcdHZhciB5ZWFyLG1vbnRoLGRheSxob3VycyxtaW51dGVzLHNlY29uZHMsd2Vla3NcclxuXHRcdFx0XHR5ZWFyID0gZHQuZ2V0RnVsbFllYXIoKTtcclxuXHRcdFx0XHRtb250aCA9IChkdC5nZXRNb250aCgpKzEpIDwgMTAgPyAnMCcrIChkdC5nZXRNb250aCgpKzEpIDogKGR0LmdldE1vbnRoKCkrMSk7XHJcblx0XHRcdFx0ZGF5ID0gZHQuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcrZHQuZ2V0RGF0ZSgpIDogZHQuZ2V0RGF0ZSgpO1xyXG5cdFx0XHRcdGhvdXJzID0gZHQuZ2V0SG91cnMoKSA8IDEwID8gJzAnICsgZHQuZ2V0SG91cnMoKSA6IGR0LmdldEhvdXJzKCk7XHJcblx0XHRcdFx0bWludXRlcyA9IGR0LmdldE1pbnV0ZXMoKSA8IDEwID8gJzAnICsgZHQuZ2V0TWludXRlcygpIDogZHQuZ2V0TWludXRlcygpO1xyXG5cdFx0XHRcdHNlY29uZHMgPSBkdC5nZXRTZWNvbmRzKCkgPCAxMCA/ICcwJyArIGR0LmdldFNlY29uZHMoKSA6IGR0LmdldFNlY29uZHMoKTsgXHJcblx0XHRcdFx0d2Vla3MgPSBkdC5nZXREYXkoKTsgXHJcblx0XHRcdFx0c3dpdGNoICh3ZWVrcykge1xyXG5cdFx0XHRcdFx0Y2FzZSAwOiB3ZWVrcyA9IFwi5pif5pyf5pelXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSAxOiB3ZWVrcyA9IFwi5pif5pyf5LiAXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSAyOiB3ZWVrcyA9IFwi5pif5pyf5LqMXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSAzOiB3ZWVrcyA9IFwi5pif5pyf5LiJXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSA0OiB3ZWVrcyA9IFwi5pif5pyf5ZubXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSA1OiB3ZWVrcyA9IFwi5pif5pyf5LqUXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0ZGVmYXVsdCA6IHdlZWtzID0gXCLmmJ/mnJ/lha1cIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5jYWxlbmRhciA9IHllYXIgKyBcIuW5tFwiICsgbW9udGggKyBcIuaciFwiICsgZGF5ICsgXCLml6UgXCIgKyBob3VycyArIFwiOlwiICsgbWludXRlcyArIFwiOlwiICsgc2Vjb25kcyArIFwiIFwiICsgd2Vla3NcclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0RGF0ZUZvcm1hdCh2YWx1ZSkge1xyXG5cdFx0XHRcdFx0XHRcdHZhciBkYXRlID0gbmV3IERhdGUoKTsvLyDojrflj5blvZPliY3ml7bpl7RcclxuXHRcdFx0XHRcdFx0XHRkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyB2YWx1ZSk7Ly8g6K6+572u5aSp5pWwIC0xIOWkqVxyXG5cdFx0XHRcdFx0XHRcdHZhciBtID0gZGF0ZS5nZXRNb250aCgpICsgMVxyXG5cdFx0XHRcdFx0XHRcdHZhciBkID0gZGF0ZS5nZXREYXRlKClcclxuXHRcdFx0XHRcdFx0XHR2YXIgbmV3RGF0ZSA9IG0gKyAnLScgKyBkXHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ld0RhdGVcclxuXHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0LyoqKioqKioqKioqKioqKiDmipjnur/lm74gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblx0XHRcdFx0XHRcdGluaXRsaW5lQ2hhcnQoKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbGluZS9jaGFydHNcIixcclxuXHRcdFx0XHRcdFx0XHRcdG1ldGhvZDonR0VUJyxcclxuXHRcdFx0XHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciByZXMgPSByZXN1bHQuZGF0YVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuY2hhcnRzRGF0YS5MaW5lLmNhdGVnb3JpZXMgPSBbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LmdldERhdGVGb3JtYXQoLTExKSx0aGF0LmdldERhdGVGb3JtYXQoLTEwKSx0aGF0LmdldERhdGVGb3JtYXQoLTkpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtOCksXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LmdldERhdGVGb3JtYXQoLTcpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNiksdGhhdC5nZXREYXRlRm9ybWF0KC01KSx0aGF0LmdldERhdGVGb3JtYXQoLTQpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5nZXREYXRlRm9ybWF0KC0zKSx0aGF0LmdldERhdGVGb3JtYXQoLTIpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMSksdGhhdC5nZXREYXRlRm9ybWF0KDApLF1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LmNoYXJ0c0RhdGEuTGluZS5zZXJpZXMgPSByZXMuZGF0YS5yb3dzXHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHQvKioqKioqKioqKioqKioqIOmlvOWbviAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHRcdFx0XHRcdFx0aW5pdFBpZUNoYXJ0KCkge1xyXG5cdFx0XHRcdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdFx0XHRcdHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9tb25pdG9yL2xvYy9yZXBcIixcclxuXHRcdFx0XHRcdFx0XHRcdG1ldGhvZDonR0VUJyxcclxuXHRcdFx0XHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciByZXMgPSByZXN1bHQuZGF0YVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuY2hhcnRzRGF0YS5QaWUuc2VyaWVzWzBdLmRhdGEgPSByZXMuZGF0YS5waWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnN0b2NrQ291bnQgPSByZXMuZGF0YS5zdG9ja0N1bnRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LmVtcHR5Q291bnQgPSByZXMuZGF0YS5lbXB0eUNvdW50XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5ub25lQ291bnQgPSByZXMuZGF0YS5ub25lQ291bnRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnVzZWQgPSByZXMuZGF0YS51c2VkXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdC51c2VkUHIgPSByZXMuZGF0YS51c2VkUHJcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdGdldE90aGVyKCkge1xyXG5cdFx0XHRcdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGh0dHA6Ly8xMC4xMC4wLjIyMjo5MDkwL2prd2NzL21vbml0b3IvbGVkP2xlZElkPTE4NlxyXG5cdFx0XHRcdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3Ivb3RoZXJcIixcclxuXHRcdFx0XHRcdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y3JuSWQ6IHRoYXQuYmFzZUNybklkLCBcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGVkSWQ6IDEsXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzdWx0KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdC54RGlzdGFuY2UgPSByZXMuZGF0YS54RGlzdGFuY2VcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnlEaXN0YW5jZSA9IHJlcy5kYXRhLnlEaXN0YW5jZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQueER1cmF0aW9uID0gcmVzLmRhdGEueER1cmF0aW9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdC55RHVyYXRpb24gPSByZXMuZGF0YS55RHVyYXRpb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChyZXMuY29kZSA9PT0gNDAzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHR9LFxyXG5cdFx0fVxyXG5cdFx0XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZT5cclxuXHRAaW1wb3J0IHVybChcIi4uLy4uL3N0YXRpYy9jc3MvY29tbW9uLmNzc1wiKTtcclxuXHQvKiDliJcgKi9cclxuXHQuZmxleC1jb2wge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0fVxyXG5cdC8qIOihjCAqL1xyXG5cdC5mbGV4LXJvdyB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHR9XHJcblx0XHJcblx0LmNvbnRhaW5lcntcclxuXHRcdHdpZHRoOiAxMDB2dztcclxuXHRcdG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzAwMTYzRTtcclxuXHRcdGNvbG9yOiAjZmZmO1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0XHJcblx0fVxyXG5cdC8qIOS4u+inhuWbviAqL1xyXG5cdC5ob21lLXZpZXcge1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0bWluLWhlaWdodDogMTAwdmg7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL2JhY2tncm91bmQucG5nKTtcclxuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwdncgMTAwdmg7XHJcblx0fVxyXG5cdC5ob21lLXJpZ2h0IHtcclxuXHRcdHdpZHRoOiA1MHZ3O1xyXG5cdFx0aGVpZ2h0OiA4OXZoO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogY2FkZXRibHVlOyAqL1xyXG5cdH1cclxuXHQuaG9tZS1yaWdodC1ib3gge1xyXG5cdFx0d2lkdGg6IDk4JTtcclxuXHRcdGhlaWdodDogOTglO1xyXG5cdH1cclxuXHQuaGVhZCB7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRoZWlnaHQ6IDExdmg7XHJcblx0XHRmb250LXNpemU6NHZ3O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDAuNyk7XHJcblx0fVxyXG5cdC50aW1lLXRvb2xzIHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdHJpZ2h0OiAyJTtcclxuXHRcdHRvcDogMiU7XHJcblx0XHRmb250LXNpemU6MXZ3O1xyXG5cdFx0dHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xyXG5cdH1cclxuXHQuYnV0dG9uLWxlZnQge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL3N0YXRpYy9yaWdodC5wbmcpO1xyXG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XHJcblx0XHR0b3A6IDEuOCU7XHJcblx0XHRsZWZ0OiAyMS4zJTtcclxuXHRcdHdpZHRoOiAxMy41JTtcclxuXHRcdGhlaWdodDogOC41JTtcclxuXHRcdHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcclxuXHR9XHJcblx0LmJ1dHRvbi1yaWdodCB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL3JpZ2h0LnBuZyk7XHJcblx0XHRiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcclxuXHRcdHRvcDogMS44JTtcclxuXHRcdGxlZnQ6IDY1JTtcclxuXHRcdHdpZHRoOiAxMy41JTtcclxuXHRcdGhlaWdodDogOC41JTtcclxuXHR9XHJcblx0LmltZy1ib3gge1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY2NjY2OyAqL1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcblx0XHRmbGV4LXdyYXA6IHdyYXA7XHJcblx0XHRmb250LXNpemU6IDF2dztcclxuXHR9XHJcblx0Lml0ZW0taW1nIHtcclxuXHRcdHdpZHRoOiA1MCU7XHJcblx0XHRtYXJnaW4tdG9wOiA1JTtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzAwZmZmZjsgKi9cclxuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG5cdH1cclxuXHQuZGlzdGFuY2Uge1xyXG5cdFx0XHJcblx0fVxyXG5cdC5pdGVtLWltZyBpbWFnZSB7XHJcblx0XHRoZWlnaHQ6IDV2dztcclxuXHRcdHdpZHRoOiA1dnc7XHJcblx0fVxyXG5cdC5wcm9ncmVzc0JhciB7XHJcblx0XHRtYXJnaW4tdG9wOiA5JTtcclxuXHRcdC8qIHdpZHRoOiAxMDAlOyAqL1xyXG5cdFx0aGVpZ2h0OiAyMCU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMjMzNzUxO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogNXZ3O1xyXG5cdH1cclxuXHQucHJvZ3Jlc3Mge1xyXG5cdFx0Lyogd2lkdGg6IDkwJTsgKi9cclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNGRjU3MjI7XHJcblx0XHRib3JkZXItcmFkaXVzOiA1dnc7XHJcblx0fVxyXG5cdC5jaGFydHMtYm94IHtcclxuXHQgIHdpZHRoOiA4MCU7XHJcblx0ICBoZWlnaHQ6IDI0dmg7XHJcblx0ICBtYXJnaW4tbGVmdDogMTAlO1xyXG5cdH0gXHJcblx0LmNoYXJ0cy1ib3gtcmluZyB7XHJcblx0XHR3aWR0aDogNTAlO1xyXG5cdFx0aGVpZ2h0OiAyNHZoO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzAwZmZmZjsgKi9cclxuXHR9XHJcblx0LnN1Yi1pbmZvIHtcclxuXHRcdGZvbnQtc2l6ZTogMS41dnc7XHJcblx0fVxyXG5cdC5zdWItaW5mbyBpbWFnZSB7XHJcblx0XHR3aWR0aDogMy41dnc7XHJcblx0XHRoZWlnaHQ6IDMuNXZ3O1xyXG5cdH1cclxuXHRcclxuXHRcclxuXHRcclxuXHRcclxuXHQvKiDlhbHnlKggKi9cclxuXHQubWFpbiB7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRoZWlnaHQ6IDg4dmg7XHJcblx0XHRtYXJnaW4tdG9wOiAxdmg7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHJcblx0fVxyXG5cdC5taWFuLWl0ZW0ge1xyXG5cdFx0d2lkdGg6IDUwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdH1cclxuXHQubWlhbi1pdGVtLWJveCB7XHJcblx0XHR3aWR0aDogOTglO1xyXG5cdFx0aGVpZ2h0OiA5OCU7XHJcblx0fVxyXG5cdC5ib3gtaXRlbSB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdG1hcmdpbi10b3A6IDQlO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuXHR9XHJcblx0Lml0ZW0tdGl0bGUge1xyXG5cdFx0Zm9udC1zaXplOjEuNXZ3O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcclxuXHR9XHJcblx0Lml0ZW0tc3ViVGl0bGUge1xyXG5cdFx0Zm9udC1zaXplOjAuNXZ3O1xyXG5cdFx0dGV4dC1pbmRlbnQ6IDBlbTtcclxuXHR9XHJcblx0Lml0ZW0tdGV4dCB7XHJcblx0XHRmb250LXNpemU6IDF2dztcclxuXHRcdHRleHQtaW5kZW50OiAyZW07XHJcblx0XHRsZXR0ZXItc3BhY2luZzogMXB4O1xyXG5cdFx0bGluZS1oZWlnaHQ6IDN2aDtcclxuXHR9XHJcblx0XHJcblx0Lyog5YWo5p2/L+aLo+aWmeS/oeaBryAqL1xyXG5cdC5pbmZvLXZpZXcge1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0bWluLWhlaWdodDogMTAwdmg7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL2JhY2tncm91bmQucG5nKTtcclxuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwdncgMTAwdmg7XHJcblx0fVxyXG5cdC5pbmZvLW1haW4ge1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0aGVpZ2h0OiA4OHZoO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcblx0LmluZm8tYm94IHtcclxuXHRcdHdpZHRoOiA5OCU7XHJcblx0XHRoZWlnaHQ6IDk4JTtcclxuXHR9XHJcblx0Lyog5byC5bi45L+h5oGvICovXHJcblx0LmVycm9yLWluZm8tdmlldyB7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRtaW4taGVpZ2h0OiAxMDB2aDtcclxuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvYmFja2dyb3VuZC5wbmcpO1xyXG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDB2dyAxMDB2aDtcclxuXHR9XHJcblx0XHJcblx0Lyog5by55Ye6OumFjee9ruWMuuWfnyAqL1xyXG5cdC5lamVjdC1tYXNrIHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xyXG5cdFx0cG9zaXRpb246IGZpeGVkO1xyXG5cdFx0dG9wOiAwO1xyXG5cdFx0bGVmdDogMDtcclxuXHRcdHotaW5kZXg6IDk5OTtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHRcclxuXHR9XHJcblx0LmVqZWN0e1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0d2lkdGg6IDQwdnc7XHJcblx0XHRoZWlnaHQ6IDQwdmg7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMnJlbTtcclxuXHR9XHJcblx0LmVqZWN0LXRpdGxlIHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAxMHZoO1xyXG5cdFx0bGluZS1oZWlnaHQ6IDEwdmg7XHJcblx0XHRmb250LXNpemU6IDJ2dztcclxuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XHJcblx0XHRjb2xvcjogXHQjNjA2MjY2O1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdH1cclxuXHQuZWplY3QtaW5wdXQge1xyXG5cdFx0XHJcblx0fVxyXG5cdC5pdGVtIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0bWFyZ2luOiAydmggMCAwIDA7XHJcblx0XHRmb250LXNpemU6IDEuNXZ3O1xyXG5cdFx0Y29sb3I6ICMzNjM2MzY7XHJcblx0fVxyXG5cdC5kZXNjIHtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdHdpZHRoOiA0MCU7XHJcblx0XHR0ZXh0LWFsaWduOiByaWdodDtcclxuXHRcdGNvbG9yOiAjNjA2MjY2O1xyXG5cdFx0XHJcblx0fVxyXG5cdC5pbnB1dCB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdHBhZGRpbmctbGVmdDogNXB4O1xyXG5cdFx0cGFkZGluZy1yaWdodDogNXB4O1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRoZWlnaHQ6IDN2aDtcclxuXHRcdGJvcmRlcjogMC4xdmggc29saWQgI2NmZDRkYztcclxuXHRcdG1hcmdpbi1yaWdodDogMjAlO1xyXG5cdFx0dGV4dC1hbGlnbjogc3RhcnQ7XHJcblx0fVxyXG5cdC5lamVjdC1pbnB1dCBpbnB1dCB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogM3ZoO1xyXG5cdFx0Zm9udC1zaXplOiAxdnc7XHJcblx0XHRcclxuXHRcdFxyXG5cdH1cclxuXHQuZWplY3QtYnV0dG9uIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0Ym90dG9tOiAwO1xyXG5cdFx0aGVpZ2h0OiA2dmg7XHJcblx0XHRsaW5lLWhlaWdodDogNnZoO1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2NjYztcclxuXHR9XHJcblx0LmJ1dHRvbi1pdGVtIHtcclxuXHRcdHdpZHRoOiA1MCU7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHRmb250LXNpemU6IDEuNXZ3O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRjb2xvcjogIzkwOTM5OTtcclxuXHR9XHJcblx0LmJ1dHRvbi1pdGVtOmxhc3QtY2hpbGQge1xyXG5cdFx0Y29sb3I6ICM2N0MyM0E7XHJcblx0XHRcclxuXHRcdGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2NjYztcclxuXHR9XHJcbjwvc3R5bGU+Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///77\n");
/***/ }),
/* 78 */
@@ -5020,6 +5576,16 @@
/***/ }),
/* 79 */
/*!*****************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/pages/index/data.json ***!
  \*****************************************************************/
/*! exports provided: dataYYY, dataEEE, default */
/***/ (function(module) {
eval("module.exports = JSON.parse(\"{\\\"dataYYY\\\":{\\\"data\\\":{\\\"msg\\\":\\\"操作成功\\\",\\\"code\\\":200,\\\"data\\\":[{\\\"title\\\":\\\"全板出库\\\",\\\"workNo\\\":8046,\\\"staNo\\\":200,\\\"sourceStaNo\\\":null,\\\"locNo\\\":null,\\\"sourceLocNo\\\":\\\"1500502\\\",\\\"matDtos\\\":[{\\\"matnr\\\":\\\"LPJ.SLJ.XG.037\\\",\\\"maknx\\\":\\\"工程塑料下弯头\\\",\\\"batch\\\":null,\\\"count\\\":40}],\\\"emptyMk\\\":false,\\\"ioType\\\":101}]}},\\\"dataEEE\\\":{\\\"data\\\":{\\\"msg\\\":\\\"操作成功\\\",\\\"code\\\":200,\\\"data\\\":\\\"\\\"}}}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI3OS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///79\n");
/***/ }),
/* 80 */
/*!*****************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/pages/index/index.vue?mpType=page ***!
  \*****************************************************************************/
@@ -5027,10 +5593,10 @@
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=2be84a3c&mpType=page */ 80);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 99);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 12);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"pages/index/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ3VNO0FBQ3ZNLGdCQUFnQiwyTUFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yYmU4NGEzYyZtcFR5cGU9cGFnZVwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL2luZGV4L2luZGV4LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///79\n");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=2be84a3c&mpType=page */ 81);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 100);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 12);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"pages/index/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ3VNO0FBQ3ZNLGdCQUFnQiwyTUFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yYmU4NGEzYyZtcFR5cGU9cGFnZVwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL2luZGV4L2luZGV4LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///80\n");
/***/ }),
/* 80 */
/* 81 */
/*!***********************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/pages/index/index.vue?vue&type=template&id=2be84a3c&mpType=page ***!
  \***********************************************************************************************************/
@@ -5039,7 +5605,7 @@
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=2be84a3c&mpType=page */ 81);
/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=2be84a3c&mpType=page */ 82);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -5051,7 +5617,7 @@
/***/ }),
/* 81 */
/* 82 */
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Workspace/zy/private/Monitor-APP/pages/index/index.vue?vue&type=template&id=2be84a3c&mpType=page ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -5069,9 +5635,9 @@
  components = {
    qiunDataCharts: __webpack_require__(/*! @/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue */ 18)
      .default,
    uniPopup: __webpack_require__(/*! @/uni_modules/uni-popup/components/uni-popup/uni-popup.vue */ 82)
    uniPopup: __webpack_require__(/*! @/uni_modules/uni-popup/components/uni-popup/uni-popup.vue */ 83)
      .default,
    uniPopupDialog: __webpack_require__(/*! @/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue */ 87)
    uniPopupDialog: __webpack_require__(/*! @/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue */ 88)
      .default
  }
} catch (e) {
@@ -6062,7 +6628,7 @@
                                          src: _vm._$s(
                                            122,
                                            "a-src",
                                            __webpack_require__(/*! ../../static/f1.png */ 97)
                                            __webpack_require__(/*! ../../static/f1.png */ 98)
                                          ),
                                          _i: 122
                                        }
@@ -6095,7 +6661,7 @@
                                          src: _vm._$s(
                                            126,
                                            "a-src",
                                            __webpack_require__(/*! ../../static/e1.png */ 98)
                                            __webpack_require__(/*! ../../static/e1.png */ 99)
                                          ),
                                          _i: 126
                                        }
@@ -6508,11 +7074,12 @@
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
>>>>>>> 2af3829f6276675ebe120cda94d628c49c429536
/***/ }),
/* 82 */
/* 83 */
/*!****************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/uni-popup.vue ***!
  \****************************************************************************************************/
@@ -6520,10 +7087,10 @@
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-popup.vue?vue&type=template&id=7c43d41b& */ 83);\n/* harmony import */ var _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-popup.vue?vue&type=script&lang=js& */ 85);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 12);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-popup/components/uni-popup/uni-popup.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0g7QUFDdEg7QUFDNkQ7QUFDTDs7O0FBR3hEO0FBQzZNO0FBQzdNLGdCQUFnQiwyTUFBVTtBQUMxQixFQUFFLCtFQUFNO0FBQ1IsRUFBRSxvRkFBTTtBQUNSLEVBQUUsNkZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsd0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1wb3B1cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2M0M2Q0MWImXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi91bmktcG9wdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi91bmktcG9wdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3VuaS1wb3B1cC9jb21wb25lbnRzL3VuaS1wb3B1cC91bmktcG9wdXAudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///82\n");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-popup.vue?vue&type=template&id=7c43d41b& */ 84);\n/* harmony import */ var _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-popup.vue?vue&type=script&lang=js& */ 86);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 12);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-popup/components/uni-popup/uni-popup.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0g7QUFDdEg7QUFDNkQ7QUFDTDs7O0FBR3hEO0FBQzZNO0FBQzdNLGdCQUFnQiwyTUFBVTtBQUMxQixFQUFFLCtFQUFNO0FBQ1IsRUFBRSxvRkFBTTtBQUNSLEVBQUUsNkZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsd0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiODMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1wb3B1cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2M0M2Q0MWImXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi91bmktcG9wdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi91bmktcG9wdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3VuaS1wb3B1cC9jb21wb25lbnRzL3VuaS1wb3B1cC91bmktcG9wdXAudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///83\n");
/***/ }),
/* 83 */
/* 84 */
/*!***********************************************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=template&id=7c43d41b& ***!
  \***********************************************************************************************************************************/
@@ -6532,7 +7099,7 @@
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup.vue?vue&type=template&id=7c43d41b& */ 84);
/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup.vue?vue&type=template&id=7c43d41b& */ 85);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -6544,7 +7111,7 @@
/***/ }),
/* 84 */
/* 85 */
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=template&id=7c43d41b& ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -6664,7 +7231,7 @@
/***/ }),
/* 85 */
/* 86 */
/*!*****************************************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=script&lang=js& ***!
  \*****************************************************************************************************************************/
@@ -6672,10 +7239,10 @@
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup.vue?vue&type=script&lang=js& */ 86);\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZzQixDQUFnQix1ckJBQUcsRUFBQyIsImZpbGUiOiI4NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQVBQL0hCdWlsZGVyWC4zLjQuMTguMjAyMjA2MzAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3VuaS1wb3B1cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQVBQL0hCdWlsZGVyWC4zLjQuMTguMjAyMjA2MzAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3VuaS1wb3B1cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///85\n");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup.vue?vue&type=script&lang=js& */ 87);\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZzQixDQUFnQix1ckJBQUcsRUFBQyIsImZpbGUiOiI4Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQVBQL0hCdWlsZGVyWC4zLjQuMTguMjAyMjA2MzAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3VuaS1wb3B1cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQVBQL0hCdWlsZGVyWC4zLjQuMTguMjAyMjA2MzAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3VuaS1wb3B1cC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///86\n");
/***/ }),
/* 86 */
/* 87 */
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=script&lang=js& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -6683,10 +7250,10 @@
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/**\r\n * PopUp 弹出层\r\n * @description 弹出层组件,为了解决遮罩弹层的问题\r\n * @tutorial https://ext.dcloud.net.cn/plugin?id=329\r\n * @property {String} type = [top|center|bottom|left|right|message|dialog|share] 弹出方式\r\n * \t@value top 顶部弹出\r\n * \t@value center 中间弹出\r\n * \t@value bottom 底部弹出\r\n * \t@value left\t\t左侧弹出\r\n * \t@value right  右侧弹出\r\n * \t@value message 消息提示\r\n * \t@value dialog 对话框\r\n * \t@value share 底部分享示例\r\n * @property {Boolean} animation = [true|false] 是否开启动画\r\n * @property {Boolean} maskClick = [true|false] 蒙版点击是否关闭弹窗(废弃)\r\n * @property {Boolean} isMaskClick = [true|false] 蒙版点击是否关闭弹窗\r\n * @property {String}  backgroundColor 主窗口背景色\r\n * @property {String}  maskBackgroundColor 蒙版颜色\r\n * @property {Boolean} safeArea\t\t   是否适配底部安全区\r\n * @event {Function} change 打开关闭弹窗触发,e={show: false}\r\n * @event {Function} maskClick 点击遮罩触发\r\n */var _default =\n\n{\n  name: 'uniPopup',\n  components: {},\n\n\n\n\n  emits: ['change', 'maskClick'],\n  props: {\n    // 开启动画\n    animation: {\n      type: Boolean,\n      default: true },\n\n    // 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层\n    // message: 消息提示 ; dialog : 对话框\n    type: {\n      type: String,\n      default: 'center' },\n\n    // maskClick\n    isMaskClick: {\n      type: Boolean,\n      default: null },\n\n    // TODO 2 个版本后废弃属性 ,使用 isMaskClick\n    maskClick: {\n      type: Boolean,\n      default: null },\n\n    backgroundColor: {\n      type: String,\n      default: 'none' },\n\n    safeArea: {\n      type: Boolean,\n      default: true },\n\n    maskBackgroundColor: {\n      type: String,\n      default: 'rgba(0, 0, 0, 0.4)' } },\n\n\n\n  watch: {\n    /**\r\n            * 监听type类型\r\n            */\n    type: {\n      handler: function handler(type) {\n        if (!this.config[type]) return;\n        this[this.config[type]](true);\n      },\n      immediate: true },\n\n    isDesktop: {\n      handler: function handler(newVal) {\n        if (!this.config[newVal]) return;\n        this[this.config[this.type]](true);\n      },\n      immediate: true },\n\n    /**\r\n                          * 监听遮罩是否可点击\r\n                          * @param {Object} val\r\n                          */\n    maskClick: {\n      handler: function handler(val) {\n        this.mkclick = val;\n      },\n      immediate: true },\n\n    isMaskClick: {\n      handler: function handler(val) {\n        this.mkclick = val;\n      },\n      immediate: true },\n\n    // H5 下禁止底部滚动\n    showPopup: function showPopup(show) {\n\n\n\n\n    } },\n\n  data: function data() {\n    return {\n      duration: 300,\n      ani: [],\n      showPopup: false,\n      showTrans: false,\n      popupWidth: 0,\n      popupHeight: 0,\n      config: {\n        top: 'top',\n        bottom: 'bottom',\n        center: 'center',\n        left: 'left',\n        right: 'right',\n        message: 'top',\n        dialog: 'center',\n        share: 'bottom' },\n\n      maskClass: {\n        position: 'fixed',\n        bottom: 0,\n        top: 0,\n        left: 0,\n        right: 0,\n        backgroundColor: 'rgba(0, 0, 0, 0.4)' },\n\n      transClass: {\n        position: 'fixed',\n        left: 0,\n        right: 0 },\n\n      maskShow: true,\n      mkclick: true,\n      popupstyle: this.isDesktop ? 'fixforpc-top' : 'top' };\n\n  },\n  computed: {\n    isDesktop: function isDesktop() {\n      return this.popupWidth >= 500 && this.popupHeight >= 500;\n    },\n    bg: function bg() {\n      if (this.backgroundColor === '' || this.backgroundColor === 'none') {\n        return 'transparent';\n      }\n      return this.backgroundColor;\n    } },\n\n  mounted: function mounted() {var _this = this;\n    var fixSize = function fixSize() {var _uni$getSystemInfoSyn =\n      uni.getSystemInfoSync(),windowWidth = _uni$getSystemInfoSyn.windowWidth,windowHeight = _uni$getSystemInfoSyn.windowHeight,windowTop = _uni$getSystemInfoSyn.windowTop,safeArea = _uni$getSystemInfoSyn.safeArea,screenHeight = _uni$getSystemInfoSyn.screenHeight,safeAreaInsets = _uni$getSystemInfoSyn.safeAreaInsets;\n      _this.popupWidth = windowWidth;\n      _this.popupHeight = windowHeight + windowTop;\n      // TODO fix by mehaotian 是否适配底部安全区 ,目前微信ios 、和 app ios 计算有差异,需要框架修复\n      if (safeArea) {\n\n\n\n\n        _this.safeAreaInsets = safeAreaInsets.bottom;\n\n      } else {\n        _this.safeAreaInsets = 0;\n      }\n    };\n    fixSize();\n\n\n\n\n\n\n  },\n  created: function created() {\n    // this.mkclick =  this.isMaskClick || this.maskClick\n    if (this.isMaskClick === null && this.maskClick === null) {\n      this.mkclick = true;\n    } else {\n      this.mkclick = this.isMaskClick !== null ? this.isMaskClick : this.maskClick;\n    }\n    if (this.animation) {\n      this.duration = 300;\n    } else {\n      this.duration = 0;\n    }\n    // TODO 处理 message 组件生命周期异常的问题\n    this.messageChild = null;\n    // TODO 解决头条冒泡的问题\n    this.clearPropagation = false;\n    this.maskClass.backgroundColor = this.maskBackgroundColor;\n  },\n  methods: {\n    /**\r\n              * 公用方法,不显示遮罩层\r\n              */\n    closeMask: function closeMask() {\n      this.maskShow = false;\n    },\n    /**\r\n        * 公用方法,遮罩层禁止点击\r\n        */\n    disableMask: function disableMask() {\n      this.mkclick = false;\n    },\n    // TODO nvue 取消冒泡\n    clear: function clear(e) {\n\n      e.stopPropagation();\n\n      this.clearPropagation = true;\n    },\n\n    open: function open(direction) {\n      var innerType = ['top', 'center', 'bottom', 'left', 'right', 'message', 'dialog', 'share'];\n      if (!(direction && innerType.indexOf(direction) !== -1)) {\n        direction = this.type;\n      }\n      if (!this.config[direction]) {\n        __f__(\"error\", '缺少类型:', direction, \" at uni_modules/uni-popup/components/uni-popup/uni-popup.vue:246\");\n        return;\n      }\n      this[this.config[direction]]();\n      this.$emit('change', {\n        show: true,\n        type: direction });\n\n    },\n    close: function close(type) {var _this2 = this;\n      this.showTrans = false;\n      this.$emit('change', {\n        show: false,\n        type: this.type });\n\n      clearTimeout(this.timer);\n      // // 自定义关闭事件\n      // this.customOpen && this.customClose()\n      this.timer = setTimeout(function () {\n        _this2.showPopup = false;\n      }, 300);\n    },\n    // TODO 处理冒泡事件,头条的冒泡事件有问题 ,先这样兼容\n    touchstart: function touchstart() {\n      this.clearPropagation = false;\n    },\n\n    onTap: function onTap() {\n      if (this.clearPropagation) {\n        // fix by mehaotian 兼容 nvue\n        this.clearPropagation = false;\n        return;\n      }\n      this.$emit('maskClick');\n      if (!this.mkclick) return;\n      this.close();\n    },\n    /**\r\n        * 顶部弹出样式处理\r\n        */\n    top: function top(type) {var _this3 = this;\n      this.popupstyle = this.isDesktop ? 'fixforpc-top' : 'top';\n      this.ani = ['slide-top'];\n      this.transClass = {\n        position: 'fixed',\n        left: 0,\n        right: 0,\n        backgroundColor: this.bg };\n\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n      this.$nextTick(function () {\n        if (_this3.messageChild && _this3.type === 'message') {\n          _this3.messageChild.timerClose();\n        }\n      });\n    },\n    /**\r\n        * 底部弹出样式处理\r\n        */\n    bottom: function bottom(type) {\n      this.popupstyle = 'bottom';\n      this.ani = ['slide-bottom'];\n      this.transClass = {\n        position: 'fixed',\n        left: 0,\n        right: 0,\n        bottom: 0,\n        paddingBottom: this.safeAreaInsets + 'px',\n        backgroundColor: this.bg };\n\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n    },\n    /**\r\n        * 中间弹出样式处理\r\n        */\n    center: function center(type) {\n      this.popupstyle = 'center';\n      this.ani = ['zoom-out', 'fade'];\n      this.transClass = {\n        position: 'fixed',\n\n        display: 'flex',\n        flexDirection: 'column',\n\n        bottom: 0,\n        left: 0,\n        right: 0,\n        top: 0,\n        justifyContent: 'center',\n        alignItems: 'center' };\n\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n    },\n    left: function left(type) {\n      this.popupstyle = 'left';\n      this.ani = ['slide-left'];\n      this.transClass = {\n        position: 'fixed',\n        left: 0,\n        bottom: 0,\n        top: 0,\n        backgroundColor: this.bg,\n\n        display: 'flex',\n        flexDirection: 'column' };\n\n\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n    },\n    right: function right(type) {\n      this.popupstyle = 'right';\n      this.ani = ['slide-right'];\n      this.transClass = {\n        position: 'fixed',\n        bottom: 0,\n        right: 0,\n        top: 0,\n        backgroundColor: this.bg,\n\n        display: 'flex',\n        flexDirection: 'column' };\n\n\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n    } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 10)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXBvcHVwL2NvbXBvbmVudHMvdW5pLXBvcHVwL3VuaS1wb3B1cC52dWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7QUFDQSxrQkFEQTtBQUVBLGdCQUZBOzs7OztBQU9BLGdDQVBBO0FBUUE7QUFDQTtBQUNBO0FBQ0EsbUJBREE7QUFFQSxtQkFGQSxFQUZBOztBQU1BO0FBQ0E7QUFDQTtBQUNBLGtCQURBO0FBRUEsdUJBRkEsRUFSQTs7QUFZQTtBQUNBO0FBQ0EsbUJBREE7QUFFQSxtQkFGQSxFQWJBOztBQWlCQTtBQUNBO0FBQ0EsbUJBREE7QUFFQSxtQkFGQSxFQWxCQTs7QUFzQkE7QUFDQSxrQkFEQTtBQUVBLHFCQUZBLEVBdEJBOztBQTBCQTtBQUNBLG1CQURBO0FBRUEsbUJBRkEsRUExQkE7O0FBOEJBO0FBQ0Esa0JBREE7QUFFQSxtQ0FGQSxFQTlCQSxFQVJBOzs7O0FBNENBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FKQTtBQUtBLHFCQUxBLEVBSkE7O0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUpBO0FBS0EscUJBTEEsRUFYQTs7QUFrQkE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQSxPQUhBO0FBSUEscUJBSkEsRUF0QkE7O0FBNEJBO0FBQ0E7QUFDQTtBQUNBLE9BSEE7QUFJQSxxQkFKQSxFQTVCQTs7QUFrQ0E7QUFDQSxhQW5DQSxxQkFtQ0EsSUFuQ0EsRUFtQ0E7Ozs7O0FBS0EsS0F4Q0EsRUE1Q0E7O0FBc0ZBLE1BdEZBLGtCQXNGQTtBQUNBO0FBQ0EsbUJBREE7QUFFQSxhQUZBO0FBR0Esc0JBSEE7QUFJQSxzQkFKQTtBQUtBLG1CQUxBO0FBTUEsb0JBTkE7QUFPQTtBQUNBLGtCQURBO0FBRUEsd0JBRkE7QUFHQSx3QkFIQTtBQUlBLG9CQUpBO0FBS0Esc0JBTEE7QUFNQSxz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QW5KQTtBQW9KQSxTQXBKQSxpQkFvSkEsSUFwSkEsRUFvSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFEQTtBQUVBLGlCQUZBO0FBR0EsZ0JBSEE7QUFJQSxjQUpBO0FBS0EsZ0NBTEE7O0FBT0EsdUJBUEE7QUFRQSwrQkFSQTs7O0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQXRLQSxFQWhMQSxFIiwiZmlsZSI6Ijg2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IHYtaWY9XCJzaG93UG9wdXBcIiBjbGFzcz1cInVuaS1wb3B1cFwiIDpjbGFzcz1cIltwb3B1cHN0eWxlLCBpc0Rlc2t0b3AgPyAnZml4Zm9ycGMtei1pbmRleCcgOiAnJ11cIiBAdG91Y2htb3ZlLnN0b3AucHJldmVudD1cImNsZWFyXCI+XHJcblx0XHQ8dmlldyBAdG91Y2hzdGFydD1cInRvdWNoc3RhcnRcIiA+XHJcblx0XHRcdDx1bmktdHJhbnNpdGlvbiBrZXk9XCIxXCIgdi1pZj1cIm1hc2tTaG93XCIgbmFtZT1cIm1hc2tcIiBtb2RlLWNsYXNzPVwiZmFkZVwiIDpzdHlsZXM9XCJtYXNrQ2xhc3NcIiA6ZHVyYXRpb249XCJkdXJhdGlvblwiIDpzaG93PVwic2hvd1RyYW5zXCIgQGNsaWNrPVwib25UYXBcIiAvPlxyXG5cdFx0XHQ8dW5pLXRyYW5zaXRpb24ga2V5PVwiMlwiIDptb2RlLWNsYXNzPVwiYW5pXCIgbmFtZT1cImNvbnRlbnRcIiA6c3R5bGVzPVwidHJhbnNDbGFzc1wiIDpkdXJhdGlvbj1cImR1cmF0aW9uXCIgOnNob3c9XCJzaG93VHJhbnNcIiBAY2xpY2s9XCJvblRhcFwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidW5pLXBvcHVwX193cmFwcGVyXCIgOnN0eWxlPVwieyBiYWNrZ3JvdW5kQ29sb3I6IGJnIH1cIiA6Y2xhc3M9XCJbcG9wdXBzdHlsZV1cIiBAY2xpY2s9XCJjbGVhclwiPjxzbG90IC8+PC92aWV3PlxyXG5cdFx0XHQ8L3VuaS10cmFuc2l0aW9uPlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PCEtLSAjaWZkZWYgSDUgLS0+XHJcblx0XHQ8a2V5cHJlc3Mgdi1pZj1cIm1hc2tTaG93XCIgQGVzYz1cIm9uVGFwXCIgLz5cclxuXHRcdDwhLS0gI2VuZGlmIC0tPlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcbi8vICNpZmRlZiBINVxyXG5pbXBvcnQga2V5cHJlc3MgZnJvbSAnLi9rZXlwcmVzcy5qcydcclxuLy8gI2VuZGlmXHJcblxyXG4vKipcclxuICogUG9wVXAg5by55Ye65bGCXHJcbiAqIEBkZXNjcmlwdGlvbiDlvLnlh7rlsYLnu4Tku7bvvIzkuLrkuobop6PlhrPpga7nvanlvLnlsYLnmoTpl67pophcclxuICogQHR1dG9yaWFsIGh0dHBzOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTMyOVxyXG4gKiBAcHJvcGVydHkge1N0cmluZ30gdHlwZSA9IFt0b3B8Y2VudGVyfGJvdHRvbXxsZWZ0fHJpZ2h0fG1lc3NhZ2V8ZGlhbG9nfHNoYXJlXSDlvLnlh7rmlrnlvI9cclxuICogXHRAdmFsdWUgdG9wIOmhtumDqOW8ueWHulxyXG4gKiBcdEB2YWx1ZSBjZW50ZXIg5Lit6Ze05by55Ye6XHJcbiAqIFx0QHZhbHVlIGJvdHRvbSDlupXpg6jlvLnlh7pcclxuICogXHRAdmFsdWUgbGVmdFx0XHTlt6bkvqflvLnlh7pcclxuICogXHRAdmFsdWUgcmlnaHQgIOWPs+S+p+W8ueWHulxyXG4gKiBcdEB2YWx1ZSBtZXNzYWdlIOa2iOaBr+aPkOekulxyXG4gKiBcdEB2YWx1ZSBkaWFsb2cg5a+56K+d5qGGXHJcbiAqIFx0QHZhbHVlIHNoYXJlIOW6lemDqOWIhuS6q+ekuuS+i1xyXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGFuaW1hdGlvbiA9IFt0cnVlfGZhbHNlXSDmmK/lkKblvIDlkK/liqjnlLtcclxuICogQHByb3BlcnR5IHtCb29sZWFufSBtYXNrQ2xpY2sgPSBbdHJ1ZXxmYWxzZV0g6JKZ54mI54K55Ye75piv5ZCm5YWz6Zet5by556qXKOW6n+W8gylcclxuICogQHByb3BlcnR5IHtCb29sZWFufSBpc01hc2tDbGljayA9IFt0cnVlfGZhbHNlXSDokpnniYjngrnlh7vmmK/lkKblhbPpl63lvLnnqpdcclxuICogQHByb3BlcnR5IHtTdHJpbmd9ICBiYWNrZ3JvdW5kQ29sb3Ig5Li756qX5Y+j6IOM5pmv6ImyXHJcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSAgbWFza0JhY2tncm91bmRDb2xvciDokpnniYjpopzoibJcclxuICogQHByb3BlcnR5IHtCb29sZWFufSBzYWZlQXJlYVx0XHQgICDmmK/lkKbpgILphY3lupXpg6jlronlhajljLpcclxuICogQGV2ZW50IHtGdW5jdGlvbn0gY2hhbmdlIOaJk+W8gOWFs+mXreW8ueeql+inpuWPke+8jGU9e3Nob3c6IGZhbHNlfVxyXG4gKiBAZXZlbnQge0Z1bmN0aW9ufSBtYXNrQ2xpY2sg54K55Ye76YGu572p6Kem5Y+RXHJcbiAqL1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cdG5hbWU6ICd1bmlQb3B1cCcsXHJcblx0Y29tcG9uZW50czoge1xyXG5cdFx0Ly8gI2lmZGVmIEg1XHJcblx0XHRrZXlwcmVzc1xyXG5cdFx0Ly8gI2VuZGlmXHJcblx0fSxcclxuXHRlbWl0czpbJ2NoYW5nZScsJ21hc2tDbGljayddLFxyXG5cdHByb3BzOiB7XHJcblx0XHQvLyDlvIDlkK/liqjnlLtcclxuXHRcdGFuaW1hdGlvbjoge1xyXG5cdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRkZWZhdWx0OiB0cnVlXHJcblx0XHR9LFxyXG5cdFx0Ly8g5by55Ye65bGC57G75Z6L77yM5Y+v6YCJ5YC877yMdG9wOiDpobbpg6jlvLnlh7rlsYLvvJtib3R0b23vvJrlupXpg6jlvLnlh7rlsYLvvJtjZW50ZXLvvJrlhajlsY/lvLnlh7rlsYJcclxuXHRcdC8vIG1lc3NhZ2U6IOa2iOaBr+aPkOekuiA7IGRpYWxvZyA6IOWvueivneahhlxyXG5cdFx0dHlwZToge1xyXG5cdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdGRlZmF1bHQ6ICdjZW50ZXInXHJcblx0XHR9LFxyXG5cdFx0Ly8gbWFza0NsaWNrXHJcblx0XHRpc01hc2tDbGljazoge1xyXG5cdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRkZWZhdWx0OiBudWxsXHJcblx0XHR9LFxyXG5cdFx0Ly8gVE9ETyAyIOS4queJiOacrOWQjuW6n+W8g+WxnuaApyDvvIzkvb/nlKggaXNNYXNrQ2xpY2tcclxuXHRcdG1hc2tDbGljazoge1xyXG5cdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRkZWZhdWx0OiBudWxsXHJcblx0XHR9LFxyXG5cdFx0YmFja2dyb3VuZENvbG9yOiB7XHJcblx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0ZGVmYXVsdDogJ25vbmUnXHJcblx0XHR9LFxyXG5cdFx0c2FmZUFyZWE6e1xyXG5cdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRkZWZhdWx0OiB0cnVlXHJcblx0XHR9LFxyXG5cdFx0bWFza0JhY2tncm91bmRDb2xvcjoge1xyXG5cdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdGRlZmF1bHQ6ICdyZ2JhKDAsIDAsIDAsIDAuNCknXHJcblx0XHR9LFxyXG5cdH0sXHJcblxyXG5cdHdhdGNoOiB7XHJcblx0XHQvKipcclxuXHRcdCAqIOebkeWQrHR5cGXnsbvlnotcclxuXHRcdCAqL1xyXG5cdFx0dHlwZToge1xyXG5cdFx0XHRoYW5kbGVyOiBmdW5jdGlvbih0eXBlKSB7XHJcblx0XHRcdFx0aWYgKCF0aGlzLmNvbmZpZ1t0eXBlXSkgcmV0dXJuXHJcblx0XHRcdFx0dGhpc1t0aGlzLmNvbmZpZ1t0eXBlXV0odHJ1ZSlcclxuXHRcdFx0fSxcclxuXHRcdFx0aW1tZWRpYXRlOiB0cnVlXHJcblx0XHR9LFxyXG5cdFx0aXNEZXNrdG9wOiB7XHJcblx0XHRcdGhhbmRsZXI6IGZ1bmN0aW9uKG5ld1ZhbCkge1xyXG5cdFx0XHRcdGlmICghdGhpcy5jb25maWdbbmV3VmFsXSkgcmV0dXJuXHJcblx0XHRcdFx0dGhpc1t0aGlzLmNvbmZpZ1t0aGlzLnR5cGVdXSh0cnVlKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRpbW1lZGlhdGU6IHRydWVcclxuXHRcdH0sXHJcblx0XHQvKipcclxuXHRcdCAqIOebkeWQrOmBrue9qeaYr+WQpuWPr+eCueWHu1xyXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IHZhbFxyXG5cdFx0ICovXHJcblx0XHRtYXNrQ2xpY2s6IHtcclxuXHRcdFx0aGFuZGxlcjogZnVuY3Rpb24odmFsKSB7XHJcblx0XHRcdFx0dGhpcy5ta2NsaWNrID0gdmFsXHJcblx0XHRcdH0sXHJcblx0XHRcdGltbWVkaWF0ZTogdHJ1ZVxyXG5cdFx0fSxcclxuXHRcdGlzTWFza0NsaWNrOiB7XHJcblx0XHRcdGhhbmRsZXI6IGZ1bmN0aW9uKHZhbCkge1xyXG5cdFx0XHRcdHRoaXMubWtjbGljayA9IHZhbFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRpbW1lZGlhdGU6IHRydWVcclxuXHRcdH0sXHJcblx0XHQvLyBINSDkuIvnpoHmraLlupXpg6jmu5rliqhcclxuXHRcdHNob3dQb3B1cChzaG93KSB7XHJcblx0XHRcdC8vICNpZmRlZiBINVxyXG5cdFx0XHQvLyBmaXggYnkgbWVoYW90aWFuIOWkhOeQhiBoNSDmu5rliqjnqb/pgI/nmoTpl67pophcclxuXHRcdFx0ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXS5zdHlsZS5vdmVyZmxvdyA9IHNob3cgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1xyXG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdH1cclxuXHR9LFxyXG5cdGRhdGEoKSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRkdXJhdGlvbjogMzAwLFxyXG5cdFx0XHRhbmk6IFtdLFxyXG5cdFx0XHRzaG93UG9wdXA6IGZhbHNlLFxyXG5cdFx0XHRzaG93VHJhbnM6IGZhbHNlLFxyXG5cdFx0XHRwb3B1cFdpZHRoOiAwLFxyXG5cdFx0XHRwb3B1cEhlaWdodDogMCxcclxuXHRcdFx0Y29uZmlnOiB7XHJcblx0XHRcdFx0dG9wOiAndG9wJyxcclxuXHRcdFx0XHRib3R0b206ICdib3R0b20nLFxyXG5cdFx0XHRcdGNlbnRlcjogJ2NlbnRlcicsXHJcblx0XHRcdFx0bGVmdDogJ2xlZnQnLFxyXG5cdFx0XHRcdHJpZ2h0OiAncmlnaHQnLFxyXG5cdFx0XHRcdG1lc3NhZ2U6ICd0b3AnLFxyXG5cdFx0XHRcdGRpYWxvZzogJ2NlbnRlcicsXHJcblx0XHRcdFx0c2hhcmU6ICdib3R0b20nXHJcblx0XHRcdH0sXHJcblx0XHRcdG1hc2tDbGFzczoge1xyXG5cdFx0XHRcdHBvc2l0aW9uOiAnZml4ZWQnLFxyXG5cdFx0XHRcdGJvdHRvbTogMCxcclxuXHRcdFx0XHR0b3A6IDAsXHJcblx0XHRcdFx0bGVmdDogMCxcclxuXHRcdFx0XHRyaWdodDogMCxcclxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDAuNCknXHJcblx0XHRcdH0sXHJcblx0XHRcdHRyYW5zQ2xhc3M6IHtcclxuXHRcdFx0XHRwb3NpdGlvbjogJ2ZpeGVkJyxcclxuXHRcdFx0XHRsZWZ0OiAwLFxyXG5cdFx0XHRcdHJpZ2h0OiAwXHJcblx0XHRcdH0sXHJcblx0XHRcdG1hc2tTaG93OiB0cnVlLFxyXG5cdFx0XHRta2NsaWNrOiB0cnVlLFxyXG5cdFx0XHRwb3B1cHN0eWxlOiB0aGlzLmlzRGVza3RvcCA/ICdmaXhmb3JwYy10b3AnIDogJ3RvcCdcclxuXHRcdH1cclxuXHR9LFxyXG5cdGNvbXB1dGVkOiB7XHJcblx0XHRpc0Rlc2t0b3AoKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnBvcHVwV2lkdGggPj0gNTAwICYmIHRoaXMucG9wdXBIZWlnaHQgPj0gNTAwXHJcblx0XHR9LFxyXG5cdFx0YmcoKSB7XHJcblx0XHRcdGlmICh0aGlzLmJhY2tncm91bmRDb2xvciA9PT0gJycgfHwgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPT09ICdub25lJykge1xyXG5cdFx0XHRcdHJldHVybiAndHJhbnNwYXJlbnQnXHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHRoaXMuYmFja2dyb3VuZENvbG9yXHJcblx0XHR9XHJcblx0fSxcclxuXHRtb3VudGVkKCkge1xyXG5cdFx0Y29uc3QgZml4U2l6ZSA9ICgpID0+IHtcclxuXHRcdFx0Y29uc3QgeyB3aW5kb3dXaWR0aCwgd2luZG93SGVpZ2h0LCB3aW5kb3dUb3AsIHNhZmVBcmVhLHNjcmVlbkhlaWdodCAsc2FmZUFyZWFJbnNldHMgfSA9IHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpXHJcblx0XHRcdHRoaXMucG9wdXBXaWR0aCA9IHdpbmRvd1dpZHRoXHJcblx0XHRcdHRoaXMucG9wdXBIZWlnaHQgPSB3aW5kb3dIZWlnaHQgKyB3aW5kb3dUb3BcclxuXHRcdFx0Ly8gVE9ETyBmaXggYnkgbWVoYW90aWFuIOaYr+WQpumAgumFjeW6lemDqOWuieWFqOWMuiAs55uu5YmN5b6u5L+haW9zIOOAgeWSjCBhcHAgaW9zIOiuoeeul+acieW3ruW8gu+8jOmcgOimgeahhuaetuS/ruWkjVxyXG5cdFx0XHRpZihzYWZlQXJlYSl7XHJcblx0XHRcdFx0Ly8gI2lmZGVmIE1QLVdFSVhJTlxyXG5cdFx0XHRcdHRoaXMuc2FmZUFyZWFJbnNldHMgPSBzY3JlZW5IZWlnaHQgLSBzYWZlQXJlYS5ib3R0b21cclxuXHRcdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0XHQvLyAjaWZuZGVmIE1QLVdFSVhJTlxyXG5cdFx0XHRcdHRoaXMuc2FmZUFyZWFJbnNldHMgPSBzYWZlQXJlYUluc2V0cy5ib3R0b21cclxuXHRcdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dGhpcy5zYWZlQXJlYUluc2V0cyA9IDBcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Zml4U2l6ZSgpXHJcblx0XHQvLyAjaWZkZWYgSDVcclxuXHRcdC8vIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmaXhTaXplKVxyXG5cdFx0Ly8gdGhpcy4kb25jZSgnaG9vazpiZWZvcmVEZXN0cm95JywgKCkgPT4ge1xyXG5cdFx0Ly8gXHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZml4U2l6ZSlcclxuXHRcdC8vIH0pXHJcblx0XHQvLyAjZW5kaWZcclxuXHR9LFxyXG5cdGNyZWF0ZWQoKSB7XHJcblx0XHQvLyB0aGlzLm1rY2xpY2sgPSAgdGhpcy5pc01hc2tDbGljayB8fCB0aGlzLm1hc2tDbGlja1xyXG5cdFx0aWYodGhpcy5pc01hc2tDbGljayA9PT0gbnVsbCAmJiB0aGlzLm1hc2tDbGljayA9PT0gbnVsbCl7XHJcblx0XHRcdHRoaXMubWtjbGljayAgPSB0cnVlXHJcblx0XHR9ZWxzZXtcclxuXHRcdFx0dGhpcy5ta2NsaWNrID0gdGhpcy5pc01hc2tDbGljayAhPT0gbnVsbCA/IHRoaXMuaXNNYXNrQ2xpY2sgOiB0aGlzLm1hc2tDbGlja1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuYW5pbWF0aW9uKSB7XHJcblx0XHRcdHRoaXMuZHVyYXRpb24gPSAzMDBcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuZHVyYXRpb24gPSAwXHJcblx0XHR9XHJcblx0XHQvLyBUT0RPIOWkhOeQhiBtZXNzYWdlIOe7hOS7tueUn+WRveWRqOacn+W8guW4uOeahOmXrumimFxyXG5cdFx0dGhpcy5tZXNzYWdlQ2hpbGQgPSBudWxsXHJcblx0XHQvLyBUT0RPIOino+WGs+WktOadoeWGkuazoeeahOmXrumimFxyXG5cdFx0dGhpcy5jbGVhclByb3BhZ2F0aW9uID0gZmFsc2VcclxuXHRcdHRoaXMubWFza0NsYXNzLmJhY2tncm91bmRDb2xvciA9IHRoaXMubWFza0JhY2tncm91bmRDb2xvclxyXG5cdH0sXHJcblx0bWV0aG9kczoge1xyXG5cdFx0LyoqXHJcblx0XHQgKiDlhaznlKjmlrnms5XvvIzkuI3mmL7npLrpga7nvanlsYJcclxuXHRcdCAqL1xyXG5cdFx0Y2xvc2VNYXNrKCkge1xyXG5cdFx0XHR0aGlzLm1hc2tTaG93ID0gZmFsc2VcclxuXHRcdH0sXHJcblx0XHQvKipcclxuXHRcdCAqIOWFrOeUqOaWueazle+8jOmBrue9qeWxguemgeatoueCueWHu1xyXG5cdFx0ICovXHJcblx0XHRkaXNhYmxlTWFzaygpIHtcclxuXHRcdFx0dGhpcy5ta2NsaWNrID0gZmFsc2VcclxuXHRcdH0sXHJcblx0XHQvLyBUT0RPIG52dWUg5Y+W5raI5YaS5rOhXHJcblx0XHRjbGVhcihlKSB7XHJcblx0XHRcdC8vICNpZm5kZWYgQVBQLU5WVUVcclxuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKVxyXG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0dGhpcy5jbGVhclByb3BhZ2F0aW9uID0gdHJ1ZVxyXG5cdFx0fSxcclxuXHJcblx0XHRvcGVuKGRpcmVjdGlvbikge1xyXG5cdFx0XHRsZXQgaW5uZXJUeXBlID0gWyd0b3AnLCAnY2VudGVyJywgJ2JvdHRvbScsICdsZWZ0JywgJ3JpZ2h0JywgJ21lc3NhZ2UnLCAnZGlhbG9nJywgJ3NoYXJlJ11cclxuXHRcdFx0aWYgKCEoZGlyZWN0aW9uICYmIGlubmVyVHlwZS5pbmRleE9mKGRpcmVjdGlvbikgIT09IC0xKSkge1xyXG5cdFx0XHRcdGRpcmVjdGlvbiA9IHRoaXMudHlwZVxyXG5cdFx0XHR9XHJcblx0XHRcdGlmICghdGhpcy5jb25maWdbZGlyZWN0aW9uXSkge1xyXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ+e8uuWwkeexu+Wei++8micsIGRpcmVjdGlvbilcclxuXHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzW3RoaXMuY29uZmlnW2RpcmVjdGlvbl1dKClcclxuXHRcdFx0dGhpcy4kZW1pdCgnY2hhbmdlJywge1xyXG5cdFx0XHRcdHNob3c6IHRydWUsXHJcblx0XHRcdFx0dHlwZTogZGlyZWN0aW9uXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0Y2xvc2UodHlwZSkge1xyXG5cdFx0XHR0aGlzLnNob3dUcmFucyA9IGZhbHNlXHJcblx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZScsIHtcclxuXHRcdFx0XHRzaG93OiBmYWxzZSxcclxuXHRcdFx0XHR0eXBlOiB0aGlzLnR5cGVcclxuXHRcdFx0fSlcclxuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpXHJcblx0XHRcdC8vIC8vIOiHquWumuS5ieWFs+mXreS6i+S7tlxyXG5cdFx0XHQvLyB0aGlzLmN1c3RvbU9wZW4gJiYgdGhpcy5jdXN0b21DbG9zZSgpXHJcblx0XHRcdHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLnNob3dQb3B1cCA9IGZhbHNlXHJcblx0XHRcdH0sIDMwMClcclxuXHRcdH0sXHJcblx0XHQvLyBUT0RPIOWkhOeQhuWGkuazoeS6i+S7tu+8jOWktOadoeeahOWGkuazoeS6i+S7tuaciemXrumimCDvvIzlhYjov5nmoLflhbzlrrlcclxuXHRcdHRvdWNoc3RhcnQoKXtcclxuXHRcdFx0dGhpcy5jbGVhclByb3BhZ2F0aW9uID0gZmFsc2VcclxuXHRcdH0sXHJcblxyXG5cdFx0b25UYXAoKSB7XHJcblx0XHRcdGlmICh0aGlzLmNsZWFyUHJvcGFnYXRpb24pIHtcclxuXHRcdFx0XHQvLyBmaXggYnkgbWVoYW90aWFuIOWFvOWuuSBudnVlXHJcblx0XHRcdFx0dGhpcy5jbGVhclByb3BhZ2F0aW9uID0gZmFsc2VcclxuXHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLiRlbWl0KCdtYXNrQ2xpY2snKVxyXG5cdFx0XHRpZiAoIXRoaXMubWtjbGljaykgcmV0dXJuXHJcblx0XHRcdHRoaXMuY2xvc2UoKVxyXG5cdFx0fSxcclxuXHRcdC8qKlxyXG5cdFx0ICog6aG26YOo5by55Ye65qC35byP5aSE55CGXHJcblx0XHQgKi9cclxuXHRcdHRvcCh0eXBlKSB7XHJcblx0XHRcdHRoaXMucG9wdXBzdHlsZSA9IHRoaXMuaXNEZXNrdG9wID8gJ2ZpeGZvcnBjLXRvcCcgOiAndG9wJ1xyXG5cdFx0XHR0aGlzLmFuaSA9IFsnc2xpZGUtdG9wJ11cclxuXHRcdFx0dGhpcy50cmFuc0NsYXNzID0ge1xyXG5cdFx0XHRcdHBvc2l0aW9uOiAnZml4ZWQnLFxyXG5cdFx0XHRcdGxlZnQ6IDAsXHJcblx0XHRcdFx0cmlnaHQ6IDAsXHJcblx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiB0aGlzLmJnXHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gVE9ETyDlhbzlrrkgdHlwZSDlsZ7mgKcg77yM5ZCO57ut5Lya5bqf5byDXHJcblx0XHRcdGlmICh0eXBlKSByZXR1cm5cclxuXHRcdFx0dGhpcy5zaG93UG9wdXAgPSB0cnVlXHJcblx0XHRcdHRoaXMuc2hvd1RyYW5zID0gdHJ1ZVxyXG5cdFx0XHR0aGlzLiRuZXh0VGljaygoKSA9PiB7XHJcblx0XHRcdFx0aWYgKHRoaXMubWVzc2FnZUNoaWxkICYmIHRoaXMudHlwZSA9PT0gJ21lc3NhZ2UnKSB7XHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VDaGlsZC50aW1lckNsb3NlKClcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0LyoqXHJcblx0XHQgKiDlupXpg6jlvLnlh7rmoLflvI/lpITnkIZcclxuXHRcdCAqL1xyXG5cdFx0Ym90dG9tKHR5cGUpIHtcclxuXHRcdFx0dGhpcy5wb3B1cHN0eWxlID0gJ2JvdHRvbSdcclxuXHRcdFx0dGhpcy5hbmkgPSBbJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdHRoaXMudHJhbnNDbGFzcyA9IHtcclxuXHRcdFx0XHRwb3NpdGlvbjogJ2ZpeGVkJyxcclxuXHRcdFx0XHRsZWZ0OiAwLFxyXG5cdFx0XHRcdHJpZ2h0OiAwLFxyXG5cdFx0XHRcdGJvdHRvbTogMCxcclxuXHRcdFx0XHRwYWRkaW5nQm90dG9tOiB0aGlzLnNhZmVBcmVhSW5zZXRzKydweCcsXHJcblx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiB0aGlzLmJnXHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gVE9ETyDlhbzlrrkgdHlwZSDlsZ7mgKcg77yM5ZCO57ut5Lya5bqf5byDXHJcblx0XHRcdGlmICh0eXBlKSByZXR1cm5cclxuXHRcdFx0dGhpcy5zaG93UG9wdXAgPSB0cnVlXHJcblx0XHRcdHRoaXMuc2hvd1RyYW5zID0gdHJ1ZVxyXG5cdFx0fSxcclxuXHRcdC8qKlxyXG5cdFx0ICog5Lit6Ze05by55Ye65qC35byP5aSE55CGXHJcblx0XHQgKi9cclxuXHRcdGNlbnRlcih0eXBlKSB7XHJcblx0XHRcdHRoaXMucG9wdXBzdHlsZSA9ICdjZW50ZXInXHJcblx0XHRcdHRoaXMuYW5pID0gWyd6b29tLW91dCcsICdmYWRlJ11cclxuXHRcdFx0dGhpcy50cmFuc0NsYXNzID0ge1xyXG5cdFx0XHRcdHBvc2l0aW9uOiAnZml4ZWQnLFxyXG5cdFx0XHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdFx0XHRkaXNwbGF5OiAnZmxleCcsXHJcblx0XHRcdFx0ZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXHJcblx0XHRcdFx0LyogI2VuZGlmICovXHJcblx0XHRcdFx0Ym90dG9tOiAwLFxyXG5cdFx0XHRcdGxlZnQ6IDAsXHJcblx0XHRcdFx0cmlnaHQ6IDAsXHJcblx0XHRcdFx0dG9wOiAwLFxyXG5cdFx0XHRcdGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcclxuXHRcdFx0XHRhbGlnbkl0ZW1zOiAnY2VudGVyJ1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIFRPRE8g5YW85a65IHR5cGUg5bGe5oCnIO+8jOWQjue7reS8muW6n+W8g1xyXG5cdFx0XHRpZiAodHlwZSkgcmV0dXJuXHJcblx0XHRcdHRoaXMuc2hvd1BvcHVwID0gdHJ1ZVxyXG5cdFx0XHR0aGlzLnNob3dUcmFucyA9IHRydWVcclxuXHRcdH0sXHJcblx0XHRsZWZ0KHR5cGUpIHtcclxuXHRcdFx0dGhpcy5wb3B1cHN0eWxlID0gJ2xlZnQnXHJcblx0XHRcdHRoaXMuYW5pID0gWydzbGlkZS1sZWZ0J11cclxuXHRcdFx0dGhpcy50cmFuc0NsYXNzID0ge1xyXG5cdFx0XHRcdHBvc2l0aW9uOiAnZml4ZWQnLFxyXG5cdFx0XHRcdGxlZnQ6IDAsXHJcblx0XHRcdFx0Ym90dG9tOiAwLFxyXG5cdFx0XHRcdHRvcDogMCxcclxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuYmcsXHJcblx0XHRcdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0XHRcdGRpc3BsYXk6ICdmbGV4JyxcclxuXHRcdFx0XHRmbGV4RGlyZWN0aW9uOiAnY29sdW1uJ1xyXG5cdFx0XHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIFRPRE8g5YW85a65IHR5cGUg5bGe5oCnIO+8jOWQjue7reS8muW6n+W8g1xyXG5cdFx0XHRpZiAodHlwZSkgcmV0dXJuXHJcblx0XHRcdHRoaXMuc2hvd1BvcHVwID0gdHJ1ZVxyXG5cdFx0XHR0aGlzLnNob3dUcmFucyA9IHRydWVcclxuXHRcdH0sXHJcblx0XHRyaWdodCh0eXBlKSB7XHJcblx0XHRcdHRoaXMucG9wdXBzdHlsZSA9ICdyaWdodCdcclxuXHRcdFx0dGhpcy5hbmkgPSBbJ3NsaWRlLXJpZ2h0J11cclxuXHRcdFx0dGhpcy50cmFuc0NsYXNzID0ge1xyXG5cdFx0XHRcdHBvc2l0aW9uOiAnZml4ZWQnLFxyXG5cdFx0XHRcdGJvdHRvbTogMCxcclxuXHRcdFx0XHRyaWdodDogMCxcclxuXHRcdFx0XHR0b3A6IDAsXHJcblx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiB0aGlzLmJnLFxyXG5cdFx0XHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdFx0XHRkaXNwbGF5OiAnZmxleCcsXHJcblx0XHRcdFx0ZmxleERpcmVjdGlvbjogJ2NvbHVtbidcclxuXHRcdFx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdFx0fVxyXG5cdFx0XHQvLyBUT0RPIOWFvOWuuSB0eXBlIOWxnuaApyDvvIzlkI7nu63kvJrlup/lvINcclxuXHRcdFx0aWYgKHR5cGUpIHJldHVyblxyXG5cdFx0XHR0aGlzLnNob3dQb3B1cCA9IHRydWVcclxuXHRcdFx0dGhpcy5zaG93VHJhbnMgPSB0cnVlXHJcblx0XHR9XHJcblx0fVxyXG59XHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgbGFuZz1cInNjc3NcIiA+XHJcbi51bmktcG9wdXAge1xyXG5cdHBvc2l0aW9uOiBmaXhlZDtcclxuXHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0ei1pbmRleDogOTk7XHJcblx0LyogI2VuZGlmICovXHJcblx0Ji50b3AsXHJcblx0Ji5sZWZ0LFxyXG5cdCYucmlnaHQge1xyXG5cdFx0LyogI2lmZGVmIEg1ICovXHJcblx0XHR0b3A6IHZhcigtLXdpbmRvdy10b3ApO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHQvKiAjaWZuZGVmIEg1ICovXHJcblx0XHR0b3A6IDA7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHR9XHJcblx0LnVuaS1wb3B1cF9fd3JhcHBlciB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0LyogaXBob25leCDnrYnlronlhajljLrorr7nva7vvIzlupXpg6jlronlhajljLrpgILphY0gKi9cclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdC8vIHBhZGRpbmctYm90dG9tOiBjb25zdGFudChzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtcclxuXHRcdC8vIHBhZGRpbmctYm90dG9tOiBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdCYubGVmdCxcclxuXHRcdCYucmlnaHQge1xyXG5cdFx0XHQvKiAjaWZkZWYgSDUgKi9cclxuXHRcdFx0cGFkZGluZy10b3A6IHZhcigtLXdpbmRvdy10b3ApO1xyXG5cdFx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdFx0LyogI2lmbmRlZiBINSAqL1xyXG5cdFx0XHRwYWRkaW5nLXRvcDogMDtcclxuXHRcdFx0LyogI2VuZGlmICovXHJcblx0XHRcdGZsZXg6IDE7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4uZml4Zm9ycGMtei1pbmRleCB7XHJcblx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdHotaW5kZXg6IDk5OTtcclxuXHQvKiAjZW5kaWYgKi9cclxufVxyXG5cclxuLmZpeGZvcnBjLXRvcCB7XHJcblx0dG9wOiAwO1xyXG59XHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///86\n");
eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0; //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/**\r\n * PopUp 弹出层\r\n * @description 弹出层组件,为了解决遮罩弹层的问题\r\n * @tutorial https://ext.dcloud.net.cn/plugin?id=329\r\n * @property {String} type = [top|center|bottom|left|right|message|dialog|share] 弹出方式\r\n * \t@value top 顶部弹出\r\n * \t@value center 中间弹出\r\n * \t@value bottom 底部弹出\r\n * \t@value left\t\t左侧弹出\r\n * \t@value right  右侧弹出\r\n * \t@value message 消息提示\r\n * \t@value dialog 对话框\r\n * \t@value share 底部分享示例\r\n * @property {Boolean} animation = [true|false] 是否开启动画\r\n * @property {Boolean} maskClick = [true|false] 蒙版点击是否关闭弹窗(废弃)\r\n * @property {Boolean} isMaskClick = [true|false] 蒙版点击是否关闭弹窗\r\n * @property {String}  backgroundColor 主窗口背景色\r\n * @property {String}  maskBackgroundColor 蒙版颜色\r\n * @property {Boolean} safeArea\t\t   是否适配底部安全区\r\n * @event {Function} change 打开关闭弹窗触发,e={show: false}\r\n * @event {Function} maskClick 点击遮罩触发\r\n */var _default =\n\n{\n  name: 'uniPopup',\n  components: {},\n\n\n\n\n  emits: ['change', 'maskClick'],\n  props: {\n    // 开启动画\n    animation: {\n      type: Boolean,\n      default: true },\n\n    // 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层\n    // message: 消息提示 ; dialog : 对话框\n    type: {\n      type: String,\n      default: 'center' },\n\n    // maskClick\n    isMaskClick: {\n      type: Boolean,\n      default: null },\n\n    // TODO 2 个版本后废弃属性 ,使用 isMaskClick\n    maskClick: {\n      type: Boolean,\n      default: null },\n\n    backgroundColor: {\n      type: String,\n      default: 'none' },\n\n    safeArea: {\n      type: Boolean,\n      default: true },\n\n    maskBackgroundColor: {\n      type: String,\n      default: 'rgba(0, 0, 0, 0.4)' } },\n\n\n\n  watch: {\n    /**\r\n            * 监听type类型\r\n            */\n    type: {\n      handler: function handler(type) {\n        if (!this.config[type]) return;\n        this[this.config[type]](true);\n      },\n      immediate: true },\n\n    isDesktop: {\n      handler: function handler(newVal) {\n        if (!this.config[newVal]) return;\n        this[this.config[this.type]](true);\n      },\n      immediate: true },\n\n    /**\r\n                          * 监听遮罩是否可点击\r\n                          * @param {Object} val\r\n                          */\n    maskClick: {\n      handler: function handler(val) {\n        this.mkclick = val;\n      },\n      immediate: true },\n\n    isMaskClick: {\n      handler: function handler(val) {\n        this.mkclick = val;\n      },\n      immediate: true },\n\n    // H5 下禁止底部滚动\n    showPopup: function showPopup(show) {\n\n\n\n\n    } },\n\n  data: function data() {\n    return {\n      duration: 300,\n      ani: [],\n      showPopup: false,\n      showTrans: false,\n      popupWidth: 0,\n      popupHeight: 0,\n      config: {\n        top: 'top',\n        bottom: 'bottom',\n        center: 'center',\n        left: 'left',\n        right: 'right',\n        message: 'top',\n        dialog: 'center',\n        share: 'bottom' },\n\n      maskClass: {\n        position: 'fixed',\n        bottom: 0,\n        top: 0,\n        left: 0,\n        right: 0,\n        backgroundColor: 'rgba(0, 0, 0, 0.4)' },\n\n      transClass: {\n        position: 'fixed',\n        left: 0,\n        right: 0 },\n\n      maskShow: true,\n      mkclick: true,\n      popupstyle: this.isDesktop ? 'fixforpc-top' : 'top' };\n\n  },\n  computed: {\n    isDesktop: function isDesktop() {\n      return this.popupWidth >= 500 && this.popupHeight >= 500;\n    },\n    bg: function bg() {\n      if (this.backgroundColor === '' || this.backgroundColor === 'none') {\n        return 'transparent';\n      }\n      return this.backgroundColor;\n    } },\n\n  mounted: function mounted() {var _this = this;\n    var fixSize = function fixSize() {var _uni$getSystemInfoSyn =\n      uni.getSystemInfoSync(),windowWidth = _uni$getSystemInfoSyn.windowWidth,windowHeight = _uni$getSystemInfoSyn.windowHeight,windowTop = _uni$getSystemInfoSyn.windowTop,safeArea = _uni$getSystemInfoSyn.safeArea,screenHeight = _uni$getSystemInfoSyn.screenHeight,safeAreaInsets = _uni$getSystemInfoSyn.safeAreaInsets;\n      _this.popupWidth = windowWidth;\n      _this.popupHeight = windowHeight + windowTop;\n      // TODO fix by mehaotian 是否适配底部安全区 ,目前微信ios 、和 app ios 计算有差异,需要框架修复\n      if (safeArea) {\n\n\n\n\n        _this.safeAreaInsets = safeAreaInsets.bottom;\n\n      } else {\n        _this.safeAreaInsets = 0;\n      }\n    };\n    fixSize();\n\n\n\n\n\n\n  },\n  created: function created() {\n    // this.mkclick =  this.isMaskClick || this.maskClick\n    if (this.isMaskClick === null && this.maskClick === null) {\n      this.mkclick = true;\n    } else {\n      this.mkclick = this.isMaskClick !== null ? this.isMaskClick : this.maskClick;\n    }\n    if (this.animation) {\n      this.duration = 300;\n    } else {\n      this.duration = 0;\n    }\n    // TODO 处理 message 组件生命周期异常的问题\n    this.messageChild = null;\n    // TODO 解决头条冒泡的问题\n    this.clearPropagation = false;\n    this.maskClass.backgroundColor = this.maskBackgroundColor;\n  },\n  methods: {\n    /**\r\n              * 公用方法,不显示遮罩层\r\n              */\n    closeMask: function closeMask() {\n      this.maskShow = false;\n    },\n    /**\r\n        * 公用方法,遮罩层禁止点击\r\n        */\n    disableMask: function disableMask() {\n      this.mkclick = false;\n    },\n    // TODO nvue 取消冒泡\n    clear: function clear(e) {\n\n      e.stopPropagation();\n\n      this.clearPropagation = true;\n    },\n\n    open: function open(direction) {\n      var innerType = ['top', 'center', 'bottom', 'left', 'right', 'message', 'dialog', 'share'];\n      if (!(direction && innerType.indexOf(direction) !== -1)) {\n        direction = this.type;\n      }\n      if (!this.config[direction]) {\n        __f__(\"error\", '缺少类型:', direction, \" at uni_modules/uni-popup/components/uni-popup/uni-popup.vue:246\");\n        return;\n      }\n      this[this.config[direction]]();\n      this.$emit('change', {\n        show: true,\n        type: direction });\n\n    },\n    close: function close(type) {var _this2 = this;\n      this.showTrans = false;\n      this.$emit('change', {\n        show: false,\n        type: this.type });\n\n      clearTimeout(this.timer);\n      // // 自定义关闭事件\n      // this.customOpen && this.customClose()\n      this.timer = setTimeout(function () {\n        _this2.showPopup = false;\n      }, 300);\n    },\n    // TODO 处理冒泡事件,头条的冒泡事件有问题 ,先这样兼容\n    touchstart: function touchstart() {\n      this.clearPropagation = false;\n    },\n\n    onTap: function onTap() {\n      if (this.clearPropagation) {\n        // fix by mehaotian 兼容 nvue\n        this.clearPropagation = false;\n        return;\n      }\n      this.$emit('maskClick');\n      if (!this.mkclick) return;\n      this.close();\n    },\n    /**\r\n        * 顶部弹出样式处理\r\n        */\n    top: function top(type) {var _this3 = this;\n      this.popupstyle = this.isDesktop ? 'fixforpc-top' : 'top';\n      this.ani = ['slide-top'];\n      this.transClass = {\n        position: 'fixed',\n        left: 0,\n        right: 0,\n        backgroundColor: this.bg };\n\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n      this.$nextTick(function () {\n        if (_this3.messageChild && _this3.type === 'message') {\n          _this3.messageChild.timerClose();\n        }\n      });\n    },\n    /**\r\n        * 底部弹出样式处理\r\n        */\n    bottom: function bottom(type) {\n      this.popupstyle = 'bottom';\n      this.ani = ['slide-bottom'];\n      this.transClass = {\n        position: 'fixed',\n        left: 0,\n        right: 0,\n        bottom: 0,\n        paddingBottom: this.safeAreaInsets + 'px',\n        backgroundColor: this.bg };\n\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n    },\n    /**\r\n        * 中间弹出样式处理\r\n        */\n    center: function center(type) {\n      this.popupstyle = 'center';\n      this.ani = ['zoom-out', 'fade'];\n      this.transClass = {\n        position: 'fixed',\n\n        display: 'flex',\n        flexDirection: 'column',\n\n        bottom: 0,\n        left: 0,\n        right: 0,\n        top: 0,\n        justifyContent: 'center',\n        alignItems: 'center' };\n\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n    },\n    left: function left(type) {\n      this.popupstyle = 'left';\n      this.ani = ['slide-left'];\n      this.transClass = {\n        position: 'fixed',\n        left: 0,\n        bottom: 0,\n        top: 0,\n        backgroundColor: this.bg,\n\n        display: 'flex',\n        flexDirection: 'column' };\n\n\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n    },\n    right: function right(type) {\n      this.popupstyle = 'right';\n      this.ani = ['slide-right'];\n      this.transClass = {\n        position: 'fixed',\n        bottom: 0,\n        right: 0,\n        top: 0,\n        backgroundColor: this.bg,\n\n        display: 'flex',\n        flexDirection: 'column' };\n\n\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n    } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 10)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXBvcHVwL2NvbXBvbmVudHMvdW5pLXBvcHVwL3VuaS1wb3B1cC52dWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7QUFDQSxrQkFEQTtBQUVBLGdCQUZBOzs7OztBQU9BLGdDQVBBO0FBUUE7QUFDQTtBQUNBO0FBQ0EsbUJBREE7QUFFQSxtQkFGQSxFQUZBOztBQU1BO0FBQ0E7QUFDQTtBQUNBLGtCQURBO0FBRUEsdUJBRkEsRUFSQTs7QUFZQTtBQUNBO0FBQ0EsbUJBREE7QUFFQSxtQkFGQSxFQWJBOztBQWlCQTtBQUNBO0FBQ0EsbUJBREE7QUFFQSxtQkFGQSxFQWxCQTs7QUFzQkE7QUFDQSxrQkFEQTtBQUVBLHFCQUZBLEVBdEJBOztBQTBCQTtBQUNBLG1CQURBO0FBRUEsbUJBRkEsRUExQkE7O0FBOEJBO0FBQ0Esa0JBREE7QUFFQSxtQ0FGQSxFQTlCQSxFQVJBOzs7O0FBNENBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FKQTtBQUtBLHFCQUxBLEVBSkE7O0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUpBO0FBS0EscUJBTEEsRUFYQTs7QUFrQkE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQSxPQUhBO0FBSUEscUJBSkEsRUF0QkE7O0FBNEJBO0FBQ0E7QUFDQTtBQUNBLE9BSEE7QUFJQSxxQkFKQSxFQTVCQTs7QUFrQ0E7QUFDQSxhQW5DQSxxQkFtQ0EsSUFuQ0EsRUFtQ0E7Ozs7O0FBS0EsS0F4Q0EsRUE1Q0E7O0FBc0ZBLE1BdEZBLGtCQXNGQTtBQUNBO0FBQ0EsbUJBREE7QUFFQSxhQUZBO0FBR0Esc0JBSEE7QUFJQSxzQkFKQTtBQUtBLG1CQUxBO0FBTUEsb0JBTkE7QUFPQTtBQUNBLGtCQURBO0FBRUEsd0JBRkE7QUFHQSx3QkFIQTtBQUlBLG9CQUpBO0FBS0Esc0JBTEE7QUFNQSxz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QW5KQTtBQW9KQSxTQXBKQSxpQkFvSkEsSUFwSkEsRUFvSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFEQTtBQUVBLGlCQUZBO0FBR0EsZ0JBSEE7QUFJQSxjQUpBO0FBS0EsZ0NBTEE7O0FBT0EsdUJBUEE7QUFRQSwrQkFSQTs7O0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQXRLQSxFQWhMQSxFIiwiZmlsZSI6Ijg3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IHYtaWY9XCJzaG93UG9wdXBcIiBjbGFzcz1cInVuaS1wb3B1cFwiIDpjbGFzcz1cIltwb3B1cHN0eWxlLCBpc0Rlc2t0b3AgPyAnZml4Zm9ycGMtei1pbmRleCcgOiAnJ11cIiBAdG91Y2htb3ZlLnN0b3AucHJldmVudD1cImNsZWFyXCI+XHJcblx0XHQ8dmlldyBAdG91Y2hzdGFydD1cInRvdWNoc3RhcnRcIiA+XHJcblx0XHRcdDx1bmktdHJhbnNpdGlvbiBrZXk9XCIxXCIgdi1pZj1cIm1hc2tTaG93XCIgbmFtZT1cIm1hc2tcIiBtb2RlLWNsYXNzPVwiZmFkZVwiIDpzdHlsZXM9XCJtYXNrQ2xhc3NcIiA6ZHVyYXRpb249XCJkdXJhdGlvblwiIDpzaG93PVwic2hvd1RyYW5zXCIgQGNsaWNrPVwib25UYXBcIiAvPlxyXG5cdFx0XHQ8dW5pLXRyYW5zaXRpb24ga2V5PVwiMlwiIDptb2RlLWNsYXNzPVwiYW5pXCIgbmFtZT1cImNvbnRlbnRcIiA6c3R5bGVzPVwidHJhbnNDbGFzc1wiIDpkdXJhdGlvbj1cImR1cmF0aW9uXCIgOnNob3c9XCJzaG93VHJhbnNcIiBAY2xpY2s9XCJvblRhcFwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidW5pLXBvcHVwX193cmFwcGVyXCIgOnN0eWxlPVwieyBiYWNrZ3JvdW5kQ29sb3I6IGJnIH1cIiA6Y2xhc3M9XCJbcG9wdXBzdHlsZV1cIiBAY2xpY2s9XCJjbGVhclwiPjxzbG90IC8+PC92aWV3PlxyXG5cdFx0XHQ8L3VuaS10cmFuc2l0aW9uPlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PCEtLSAjaWZkZWYgSDUgLS0+XHJcblx0XHQ8a2V5cHJlc3Mgdi1pZj1cIm1hc2tTaG93XCIgQGVzYz1cIm9uVGFwXCIgLz5cclxuXHRcdDwhLS0gI2VuZGlmIC0tPlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcbi8vICNpZmRlZiBINVxyXG5pbXBvcnQga2V5cHJlc3MgZnJvbSAnLi9rZXlwcmVzcy5qcydcclxuLy8gI2VuZGlmXHJcblxyXG4vKipcclxuICogUG9wVXAg5by55Ye65bGCXHJcbiAqIEBkZXNjcmlwdGlvbiDlvLnlh7rlsYLnu4Tku7bvvIzkuLrkuobop6PlhrPpga7nvanlvLnlsYLnmoTpl67pophcclxuICogQHR1dG9yaWFsIGh0dHBzOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTMyOVxyXG4gKiBAcHJvcGVydHkge1N0cmluZ30gdHlwZSA9IFt0b3B8Y2VudGVyfGJvdHRvbXxsZWZ0fHJpZ2h0fG1lc3NhZ2V8ZGlhbG9nfHNoYXJlXSDlvLnlh7rmlrnlvI9cclxuICogXHRAdmFsdWUgdG9wIOmhtumDqOW8ueWHulxyXG4gKiBcdEB2YWx1ZSBjZW50ZXIg5Lit6Ze05by55Ye6XHJcbiAqIFx0QHZhbHVlIGJvdHRvbSDlupXpg6jlvLnlh7pcclxuICogXHRAdmFsdWUgbGVmdFx0XHTlt6bkvqflvLnlh7pcclxuICogXHRAdmFsdWUgcmlnaHQgIOWPs+S+p+W8ueWHulxyXG4gKiBcdEB2YWx1ZSBtZXNzYWdlIOa2iOaBr+aPkOekulxyXG4gKiBcdEB2YWx1ZSBkaWFsb2cg5a+56K+d5qGGXHJcbiAqIFx0QHZhbHVlIHNoYXJlIOW6lemDqOWIhuS6q+ekuuS+i1xyXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGFuaW1hdGlvbiA9IFt0cnVlfGZhbHNlXSDmmK/lkKblvIDlkK/liqjnlLtcclxuICogQHByb3BlcnR5IHtCb29sZWFufSBtYXNrQ2xpY2sgPSBbdHJ1ZXxmYWxzZV0g6JKZ54mI54K55Ye75piv5ZCm5YWz6Zet5by556qXKOW6n+W8gylcclxuICogQHByb3BlcnR5IHtCb29sZWFufSBpc01hc2tDbGljayA9IFt0cnVlfGZhbHNlXSDokpnniYjngrnlh7vmmK/lkKblhbPpl63lvLnnqpdcclxuICogQHByb3BlcnR5IHtTdHJpbmd9ICBiYWNrZ3JvdW5kQ29sb3Ig5Li756qX5Y+j6IOM5pmv6ImyXHJcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSAgbWFza0JhY2tncm91bmRDb2xvciDokpnniYjpopzoibJcclxuICogQHByb3BlcnR5IHtCb29sZWFufSBzYWZlQXJlYVx0XHQgICDmmK/lkKbpgILphY3lupXpg6jlronlhajljLpcclxuICogQGV2ZW50IHtGdW5jdGlvbn0gY2hhbmdlIOaJk+W8gOWFs+mXreW8ueeql+inpuWPke+8jGU9e3Nob3c6IGZhbHNlfVxyXG4gKiBAZXZlbnQge0Z1bmN0aW9ufSBtYXNrQ2xpY2sg54K55Ye76YGu572p6Kem5Y+RXHJcbiAqL1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cdG5hbWU6ICd1bmlQb3B1cCcsXHJcblx0Y29tcG9uZW50czoge1xyXG5cdFx0Ly8gI2lmZGVmIEg1XHJcblx0XHRrZXlwcmVzc1xyXG5cdFx0Ly8gI2VuZGlmXHJcblx0fSxcclxuXHRlbWl0czpbJ2NoYW5nZScsJ21hc2tDbGljayddLFxyXG5cdHByb3BzOiB7XHJcblx0XHQvLyDlvIDlkK/liqjnlLtcclxuXHRcdGFuaW1hdGlvbjoge1xyXG5cdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRkZWZhdWx0OiB0cnVlXHJcblx0XHR9LFxyXG5cdFx0Ly8g5by55Ye65bGC57G75Z6L77yM5Y+v6YCJ5YC877yMdG9wOiDpobbpg6jlvLnlh7rlsYLvvJtib3R0b23vvJrlupXpg6jlvLnlh7rlsYLvvJtjZW50ZXLvvJrlhajlsY/lvLnlh7rlsYJcclxuXHRcdC8vIG1lc3NhZ2U6IOa2iOaBr+aPkOekuiA7IGRpYWxvZyA6IOWvueivneahhlxyXG5cdFx0dHlwZToge1xyXG5cdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdGRlZmF1bHQ6ICdjZW50ZXInXHJcblx0XHR9LFxyXG5cdFx0Ly8gbWFza0NsaWNrXHJcblx0XHRpc01hc2tDbGljazoge1xyXG5cdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRkZWZhdWx0OiBudWxsXHJcblx0XHR9LFxyXG5cdFx0Ly8gVE9ETyAyIOS4queJiOacrOWQjuW6n+W8g+WxnuaApyDvvIzkvb/nlKggaXNNYXNrQ2xpY2tcclxuXHRcdG1hc2tDbGljazoge1xyXG5cdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRkZWZhdWx0OiBudWxsXHJcblx0XHR9LFxyXG5cdFx0YmFja2dyb3VuZENvbG9yOiB7XHJcblx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0ZGVmYXVsdDogJ25vbmUnXHJcblx0XHR9LFxyXG5cdFx0c2FmZUFyZWE6e1xyXG5cdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRkZWZhdWx0OiB0cnVlXHJcblx0XHR9LFxyXG5cdFx0bWFza0JhY2tncm91bmRDb2xvcjoge1xyXG5cdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdGRlZmF1bHQ6ICdyZ2JhKDAsIDAsIDAsIDAuNCknXHJcblx0XHR9LFxyXG5cdH0sXHJcblxyXG5cdHdhdGNoOiB7XHJcblx0XHQvKipcclxuXHRcdCAqIOebkeWQrHR5cGXnsbvlnotcclxuXHRcdCAqL1xyXG5cdFx0dHlwZToge1xyXG5cdFx0XHRoYW5kbGVyOiBmdW5jdGlvbih0eXBlKSB7XHJcblx0XHRcdFx0aWYgKCF0aGlzLmNvbmZpZ1t0eXBlXSkgcmV0dXJuXHJcblx0XHRcdFx0dGhpc1t0aGlzLmNvbmZpZ1t0eXBlXV0odHJ1ZSlcclxuXHRcdFx0fSxcclxuXHRcdFx0aW1tZWRpYXRlOiB0cnVlXHJcblx0XHR9LFxyXG5cdFx0aXNEZXNrdG9wOiB7XHJcblx0XHRcdGhhbmRsZXI6IGZ1bmN0aW9uKG5ld1ZhbCkge1xyXG5cdFx0XHRcdGlmICghdGhpcy5jb25maWdbbmV3VmFsXSkgcmV0dXJuXHJcblx0XHRcdFx0dGhpc1t0aGlzLmNvbmZpZ1t0aGlzLnR5cGVdXSh0cnVlKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRpbW1lZGlhdGU6IHRydWVcclxuXHRcdH0sXHJcblx0XHQvKipcclxuXHRcdCAqIOebkeWQrOmBrue9qeaYr+WQpuWPr+eCueWHu1xyXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IHZhbFxyXG5cdFx0ICovXHJcblx0XHRtYXNrQ2xpY2s6IHtcclxuXHRcdFx0aGFuZGxlcjogZnVuY3Rpb24odmFsKSB7XHJcblx0XHRcdFx0dGhpcy5ta2NsaWNrID0gdmFsXHJcblx0XHRcdH0sXHJcblx0XHRcdGltbWVkaWF0ZTogdHJ1ZVxyXG5cdFx0fSxcclxuXHRcdGlzTWFza0NsaWNrOiB7XHJcblx0XHRcdGhhbmRsZXI6IGZ1bmN0aW9uKHZhbCkge1xyXG5cdFx0XHRcdHRoaXMubWtjbGljayA9IHZhbFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRpbW1lZGlhdGU6IHRydWVcclxuXHRcdH0sXHJcblx0XHQvLyBINSDkuIvnpoHmraLlupXpg6jmu5rliqhcclxuXHRcdHNob3dQb3B1cChzaG93KSB7XHJcblx0XHRcdC8vICNpZmRlZiBINVxyXG5cdFx0XHQvLyBmaXggYnkgbWVoYW90aWFuIOWkhOeQhiBoNSDmu5rliqjnqb/pgI/nmoTpl67pophcclxuXHRcdFx0ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXS5zdHlsZS5vdmVyZmxvdyA9IHNob3cgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1xyXG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdH1cclxuXHR9LFxyXG5cdGRhdGEoKSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRkdXJhdGlvbjogMzAwLFxyXG5cdFx0XHRhbmk6IFtdLFxyXG5cdFx0XHRzaG93UG9wdXA6IGZhbHNlLFxyXG5cdFx0XHRzaG93VHJhbnM6IGZhbHNlLFxyXG5cdFx0XHRwb3B1cFdpZHRoOiAwLFxyXG5cdFx0XHRwb3B1cEhlaWdodDogMCxcclxuXHRcdFx0Y29uZmlnOiB7XHJcblx0XHRcdFx0dG9wOiAndG9wJyxcclxuXHRcdFx0XHRib3R0b206ICdib3R0b20nLFxyXG5cdFx0XHRcdGNlbnRlcjogJ2NlbnRlcicsXHJcblx0XHRcdFx0bGVmdDogJ2xlZnQnLFxyXG5cdFx0XHRcdHJpZ2h0OiAncmlnaHQnLFxyXG5cdFx0XHRcdG1lc3NhZ2U6ICd0b3AnLFxyXG5cdFx0XHRcdGRpYWxvZzogJ2NlbnRlcicsXHJcblx0XHRcdFx0c2hhcmU6ICdib3R0b20nXHJcblx0XHRcdH0sXHJcblx0XHRcdG1hc2tDbGFzczoge1xyXG5cdFx0XHRcdHBvc2l0aW9uOiAnZml4ZWQnLFxyXG5cdFx0XHRcdGJvdHRvbTogMCxcclxuXHRcdFx0XHR0b3A6IDAsXHJcblx0XHRcdFx0bGVmdDogMCxcclxuXHRcdFx0XHRyaWdodDogMCxcclxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDAuNCknXHJcblx0XHRcdH0sXHJcblx0XHRcdHRyYW5zQ2xhc3M6IHtcclxuXHRcdFx0XHRwb3NpdGlvbjogJ2ZpeGVkJyxcclxuXHRcdFx0XHRsZWZ0OiAwLFxyXG5cdFx0XHRcdHJpZ2h0OiAwXHJcblx0XHRcdH0sXHJcblx0XHRcdG1hc2tTaG93OiB0cnVlLFxyXG5cdFx0XHRta2NsaWNrOiB0cnVlLFxyXG5cdFx0XHRwb3B1cHN0eWxlOiB0aGlzLmlzRGVza3RvcCA/ICdmaXhmb3JwYy10b3AnIDogJ3RvcCdcclxuXHRcdH1cclxuXHR9LFxyXG5cdGNvbXB1dGVkOiB7XHJcblx0XHRpc0Rlc2t0b3AoKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnBvcHVwV2lkdGggPj0gNTAwICYmIHRoaXMucG9wdXBIZWlnaHQgPj0gNTAwXHJcblx0XHR9LFxyXG5cdFx0YmcoKSB7XHJcblx0XHRcdGlmICh0aGlzLmJhY2tncm91bmRDb2xvciA9PT0gJycgfHwgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPT09ICdub25lJykge1xyXG5cdFx0XHRcdHJldHVybiAndHJhbnNwYXJlbnQnXHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHRoaXMuYmFja2dyb3VuZENvbG9yXHJcblx0XHR9XHJcblx0fSxcclxuXHRtb3VudGVkKCkge1xyXG5cdFx0Y29uc3QgZml4U2l6ZSA9ICgpID0+IHtcclxuXHRcdFx0Y29uc3QgeyB3aW5kb3dXaWR0aCwgd2luZG93SGVpZ2h0LCB3aW5kb3dUb3AsIHNhZmVBcmVhLHNjcmVlbkhlaWdodCAsc2FmZUFyZWFJbnNldHMgfSA9IHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpXHJcblx0XHRcdHRoaXMucG9wdXBXaWR0aCA9IHdpbmRvd1dpZHRoXHJcblx0XHRcdHRoaXMucG9wdXBIZWlnaHQgPSB3aW5kb3dIZWlnaHQgKyB3aW5kb3dUb3BcclxuXHRcdFx0Ly8gVE9ETyBmaXggYnkgbWVoYW90aWFuIOaYr+WQpumAgumFjeW6lemDqOWuieWFqOWMuiAs55uu5YmN5b6u5L+haW9zIOOAgeWSjCBhcHAgaW9zIOiuoeeul+acieW3ruW8gu+8jOmcgOimgeahhuaetuS/ruWkjVxyXG5cdFx0XHRpZihzYWZlQXJlYSl7XHJcblx0XHRcdFx0Ly8gI2lmZGVmIE1QLVdFSVhJTlxyXG5cdFx0XHRcdHRoaXMuc2FmZUFyZWFJbnNldHMgPSBzY3JlZW5IZWlnaHQgLSBzYWZlQXJlYS5ib3R0b21cclxuXHRcdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0XHQvLyAjaWZuZGVmIE1QLVdFSVhJTlxyXG5cdFx0XHRcdHRoaXMuc2FmZUFyZWFJbnNldHMgPSBzYWZlQXJlYUluc2V0cy5ib3R0b21cclxuXHRcdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dGhpcy5zYWZlQXJlYUluc2V0cyA9IDBcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Zml4U2l6ZSgpXHJcblx0XHQvLyAjaWZkZWYgSDVcclxuXHRcdC8vIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmaXhTaXplKVxyXG5cdFx0Ly8gdGhpcy4kb25jZSgnaG9vazpiZWZvcmVEZXN0cm95JywgKCkgPT4ge1xyXG5cdFx0Ly8gXHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZml4U2l6ZSlcclxuXHRcdC8vIH0pXHJcblx0XHQvLyAjZW5kaWZcclxuXHR9LFxyXG5cdGNyZWF0ZWQoKSB7XHJcblx0XHQvLyB0aGlzLm1rY2xpY2sgPSAgdGhpcy5pc01hc2tDbGljayB8fCB0aGlzLm1hc2tDbGlja1xyXG5cdFx0aWYodGhpcy5pc01hc2tDbGljayA9PT0gbnVsbCAmJiB0aGlzLm1hc2tDbGljayA9PT0gbnVsbCl7XHJcblx0XHRcdHRoaXMubWtjbGljayAgPSB0cnVlXHJcblx0XHR9ZWxzZXtcclxuXHRcdFx0dGhpcy5ta2NsaWNrID0gdGhpcy5pc01hc2tDbGljayAhPT0gbnVsbCA/IHRoaXMuaXNNYXNrQ2xpY2sgOiB0aGlzLm1hc2tDbGlja1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuYW5pbWF0aW9uKSB7XHJcblx0XHRcdHRoaXMuZHVyYXRpb24gPSAzMDBcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuZHVyYXRpb24gPSAwXHJcblx0XHR9XHJcblx0XHQvLyBUT0RPIOWkhOeQhiBtZXNzYWdlIOe7hOS7tueUn+WRveWRqOacn+W8guW4uOeahOmXrumimFxyXG5cdFx0dGhpcy5tZXNzYWdlQ2hpbGQgPSBudWxsXHJcblx0XHQvLyBUT0RPIOino+WGs+WktOadoeWGkuazoeeahOmXrumimFxyXG5cdFx0dGhpcy5jbGVhclByb3BhZ2F0aW9uID0gZmFsc2VcclxuXHRcdHRoaXMubWFza0NsYXNzLmJhY2tncm91bmRDb2xvciA9IHRoaXMubWFza0JhY2tncm91bmRDb2xvclxyXG5cdH0sXHJcblx0bWV0aG9kczoge1xyXG5cdFx0LyoqXHJcblx0XHQgKiDlhaznlKjmlrnms5XvvIzkuI3mmL7npLrpga7nvanlsYJcclxuXHRcdCAqL1xyXG5cdFx0Y2xvc2VNYXNrKCkge1xyXG5cdFx0XHR0aGlzLm1hc2tTaG93ID0gZmFsc2VcclxuXHRcdH0sXHJcblx0XHQvKipcclxuXHRcdCAqIOWFrOeUqOaWueazle+8jOmBrue9qeWxguemgeatoueCueWHu1xyXG5cdFx0ICovXHJcblx0XHRkaXNhYmxlTWFzaygpIHtcclxuXHRcdFx0dGhpcy5ta2NsaWNrID0gZmFsc2VcclxuXHRcdH0sXHJcblx0XHQvLyBUT0RPIG52dWUg5Y+W5raI5YaS5rOhXHJcblx0XHRjbGVhcihlKSB7XHJcblx0XHRcdC8vICNpZm5kZWYgQVBQLU5WVUVcclxuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKVxyXG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0dGhpcy5jbGVhclByb3BhZ2F0aW9uID0gdHJ1ZVxyXG5cdFx0fSxcclxuXHJcblx0XHRvcGVuKGRpcmVjdGlvbikge1xyXG5cdFx0XHRsZXQgaW5uZXJUeXBlID0gWyd0b3AnLCAnY2VudGVyJywgJ2JvdHRvbScsICdsZWZ0JywgJ3JpZ2h0JywgJ21lc3NhZ2UnLCAnZGlhbG9nJywgJ3NoYXJlJ11cclxuXHRcdFx0aWYgKCEoZGlyZWN0aW9uICYmIGlubmVyVHlwZS5pbmRleE9mKGRpcmVjdGlvbikgIT09IC0xKSkge1xyXG5cdFx0XHRcdGRpcmVjdGlvbiA9IHRoaXMudHlwZVxyXG5cdFx0XHR9XHJcblx0XHRcdGlmICghdGhpcy5jb25maWdbZGlyZWN0aW9uXSkge1xyXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ+e8uuWwkeexu+Wei++8micsIGRpcmVjdGlvbilcclxuXHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzW3RoaXMuY29uZmlnW2RpcmVjdGlvbl1dKClcclxuXHRcdFx0dGhpcy4kZW1pdCgnY2hhbmdlJywge1xyXG5cdFx0XHRcdHNob3c6IHRydWUsXHJcblx0XHRcdFx0dHlwZTogZGlyZWN0aW9uXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0Y2xvc2UodHlwZSkge1xyXG5cdFx0XHR0aGlzLnNob3dUcmFucyA9IGZhbHNlXHJcblx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZScsIHtcclxuXHRcdFx0XHRzaG93OiBmYWxzZSxcclxuXHRcdFx0XHR0eXBlOiB0aGlzLnR5cGVcclxuXHRcdFx0fSlcclxuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpXHJcblx0XHRcdC8vIC8vIOiHquWumuS5ieWFs+mXreS6i+S7tlxyXG5cdFx0XHQvLyB0aGlzLmN1c3RvbU9wZW4gJiYgdGhpcy5jdXN0b21DbG9zZSgpXHJcblx0XHRcdHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLnNob3dQb3B1cCA9IGZhbHNlXHJcblx0XHRcdH0sIDMwMClcclxuXHRcdH0sXHJcblx0XHQvLyBUT0RPIOWkhOeQhuWGkuazoeS6i+S7tu+8jOWktOadoeeahOWGkuazoeS6i+S7tuaciemXrumimCDvvIzlhYjov5nmoLflhbzlrrlcclxuXHRcdHRvdWNoc3RhcnQoKXtcclxuXHRcdFx0dGhpcy5jbGVhclByb3BhZ2F0aW9uID0gZmFsc2VcclxuXHRcdH0sXHJcblxyXG5cdFx0b25UYXAoKSB7XHJcblx0XHRcdGlmICh0aGlzLmNsZWFyUHJvcGFnYXRpb24pIHtcclxuXHRcdFx0XHQvLyBmaXggYnkgbWVoYW90aWFuIOWFvOWuuSBudnVlXHJcblx0XHRcdFx0dGhpcy5jbGVhclByb3BhZ2F0aW9uID0gZmFsc2VcclxuXHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLiRlbWl0KCdtYXNrQ2xpY2snKVxyXG5cdFx0XHRpZiAoIXRoaXMubWtjbGljaykgcmV0dXJuXHJcblx0XHRcdHRoaXMuY2xvc2UoKVxyXG5cdFx0fSxcclxuXHRcdC8qKlxyXG5cdFx0ICog6aG26YOo5by55Ye65qC35byP5aSE55CGXHJcblx0XHQgKi9cclxuXHRcdHRvcCh0eXBlKSB7XHJcblx0XHRcdHRoaXMucG9wdXBzdHlsZSA9IHRoaXMuaXNEZXNrdG9wID8gJ2ZpeGZvcnBjLXRvcCcgOiAndG9wJ1xyXG5cdFx0XHR0aGlzLmFuaSA9IFsnc2xpZGUtdG9wJ11cclxuXHRcdFx0dGhpcy50cmFuc0NsYXNzID0ge1xyXG5cdFx0XHRcdHBvc2l0aW9uOiAnZml4ZWQnLFxyXG5cdFx0XHRcdGxlZnQ6IDAsXHJcblx0XHRcdFx0cmlnaHQ6IDAsXHJcblx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiB0aGlzLmJnXHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gVE9ETyDlhbzlrrkgdHlwZSDlsZ7mgKcg77yM5ZCO57ut5Lya5bqf5byDXHJcblx0XHRcdGlmICh0eXBlKSByZXR1cm5cclxuXHRcdFx0dGhpcy5zaG93UG9wdXAgPSB0cnVlXHJcblx0XHRcdHRoaXMuc2hvd1RyYW5zID0gdHJ1ZVxyXG5cdFx0XHR0aGlzLiRuZXh0VGljaygoKSA9PiB7XHJcblx0XHRcdFx0aWYgKHRoaXMubWVzc2FnZUNoaWxkICYmIHRoaXMudHlwZSA9PT0gJ21lc3NhZ2UnKSB7XHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VDaGlsZC50aW1lckNsb3NlKClcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0LyoqXHJcblx0XHQgKiDlupXpg6jlvLnlh7rmoLflvI/lpITnkIZcclxuXHRcdCAqL1xyXG5cdFx0Ym90dG9tKHR5cGUpIHtcclxuXHRcdFx0dGhpcy5wb3B1cHN0eWxlID0gJ2JvdHRvbSdcclxuXHRcdFx0dGhpcy5hbmkgPSBbJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdHRoaXMudHJhbnNDbGFzcyA9IHtcclxuXHRcdFx0XHRwb3NpdGlvbjogJ2ZpeGVkJyxcclxuXHRcdFx0XHRsZWZ0OiAwLFxyXG5cdFx0XHRcdHJpZ2h0OiAwLFxyXG5cdFx0XHRcdGJvdHRvbTogMCxcclxuXHRcdFx0XHRwYWRkaW5nQm90dG9tOiB0aGlzLnNhZmVBcmVhSW5zZXRzKydweCcsXHJcblx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiB0aGlzLmJnXHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gVE9ETyDlhbzlrrkgdHlwZSDlsZ7mgKcg77yM5ZCO57ut5Lya5bqf5byDXHJcblx0XHRcdGlmICh0eXBlKSByZXR1cm5cclxuXHRcdFx0dGhpcy5zaG93UG9wdXAgPSB0cnVlXHJcblx0XHRcdHRoaXMuc2hvd1RyYW5zID0gdHJ1ZVxyXG5cdFx0fSxcclxuXHRcdC8qKlxyXG5cdFx0ICog5Lit6Ze05by55Ye65qC35byP5aSE55CGXHJcblx0XHQgKi9cclxuXHRcdGNlbnRlcih0eXBlKSB7XHJcblx0XHRcdHRoaXMucG9wdXBzdHlsZSA9ICdjZW50ZXInXHJcblx0XHRcdHRoaXMuYW5pID0gWyd6b29tLW91dCcsICdmYWRlJ11cclxuXHRcdFx0dGhpcy50cmFuc0NsYXNzID0ge1xyXG5cdFx0XHRcdHBvc2l0aW9uOiAnZml4ZWQnLFxyXG5cdFx0XHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdFx0XHRkaXNwbGF5OiAnZmxleCcsXHJcblx0XHRcdFx0ZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXHJcblx0XHRcdFx0LyogI2VuZGlmICovXHJcblx0XHRcdFx0Ym90dG9tOiAwLFxyXG5cdFx0XHRcdGxlZnQ6IDAsXHJcblx0XHRcdFx0cmlnaHQ6IDAsXHJcblx0XHRcdFx0dG9wOiAwLFxyXG5cdFx0XHRcdGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcclxuXHRcdFx0XHRhbGlnbkl0ZW1zOiAnY2VudGVyJ1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIFRPRE8g5YW85a65IHR5cGUg5bGe5oCnIO+8jOWQjue7reS8muW6n+W8g1xyXG5cdFx0XHRpZiAodHlwZSkgcmV0dXJuXHJcblx0XHRcdHRoaXMuc2hvd1BvcHVwID0gdHJ1ZVxyXG5cdFx0XHR0aGlzLnNob3dUcmFucyA9IHRydWVcclxuXHRcdH0sXHJcblx0XHRsZWZ0KHR5cGUpIHtcclxuXHRcdFx0dGhpcy5wb3B1cHN0eWxlID0gJ2xlZnQnXHJcblx0XHRcdHRoaXMuYW5pID0gWydzbGlkZS1sZWZ0J11cclxuXHRcdFx0dGhpcy50cmFuc0NsYXNzID0ge1xyXG5cdFx0XHRcdHBvc2l0aW9uOiAnZml4ZWQnLFxyXG5cdFx0XHRcdGxlZnQ6IDAsXHJcblx0XHRcdFx0Ym90dG9tOiAwLFxyXG5cdFx0XHRcdHRvcDogMCxcclxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuYmcsXHJcblx0XHRcdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0XHRcdGRpc3BsYXk6ICdmbGV4JyxcclxuXHRcdFx0XHRmbGV4RGlyZWN0aW9uOiAnY29sdW1uJ1xyXG5cdFx0XHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIFRPRE8g5YW85a65IHR5cGUg5bGe5oCnIO+8jOWQjue7reS8muW6n+W8g1xyXG5cdFx0XHRpZiAodHlwZSkgcmV0dXJuXHJcblx0XHRcdHRoaXMuc2hvd1BvcHVwID0gdHJ1ZVxyXG5cdFx0XHR0aGlzLnNob3dUcmFucyA9IHRydWVcclxuXHRcdH0sXHJcblx0XHRyaWdodCh0eXBlKSB7XHJcblx0XHRcdHRoaXMucG9wdXBzdHlsZSA9ICdyaWdodCdcclxuXHRcdFx0dGhpcy5hbmkgPSBbJ3NsaWRlLXJpZ2h0J11cclxuXHRcdFx0dGhpcy50cmFuc0NsYXNzID0ge1xyXG5cdFx0XHRcdHBvc2l0aW9uOiAnZml4ZWQnLFxyXG5cdFx0XHRcdGJvdHRvbTogMCxcclxuXHRcdFx0XHRyaWdodDogMCxcclxuXHRcdFx0XHR0b3A6IDAsXHJcblx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiB0aGlzLmJnLFxyXG5cdFx0XHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdFx0XHRkaXNwbGF5OiAnZmxleCcsXHJcblx0XHRcdFx0ZmxleERpcmVjdGlvbjogJ2NvbHVtbidcclxuXHRcdFx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdFx0fVxyXG5cdFx0XHQvLyBUT0RPIOWFvOWuuSB0eXBlIOWxnuaApyDvvIzlkI7nu63kvJrlup/lvINcclxuXHRcdFx0aWYgKHR5cGUpIHJldHVyblxyXG5cdFx0XHR0aGlzLnNob3dQb3B1cCA9IHRydWVcclxuXHRcdFx0dGhpcy5zaG93VHJhbnMgPSB0cnVlXHJcblx0XHR9XHJcblx0fVxyXG59XHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgbGFuZz1cInNjc3NcIiA+XHJcbi51bmktcG9wdXAge1xyXG5cdHBvc2l0aW9uOiBmaXhlZDtcclxuXHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0ei1pbmRleDogOTk7XHJcblx0LyogI2VuZGlmICovXHJcblx0Ji50b3AsXHJcblx0Ji5sZWZ0LFxyXG5cdCYucmlnaHQge1xyXG5cdFx0LyogI2lmZGVmIEg1ICovXHJcblx0XHR0b3A6IHZhcigtLXdpbmRvdy10b3ApO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHQvKiAjaWZuZGVmIEg1ICovXHJcblx0XHR0b3A6IDA7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHR9XHJcblx0LnVuaS1wb3B1cF9fd3JhcHBlciB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0LyogaXBob25leCDnrYnlronlhajljLrorr7nva7vvIzlupXpg6jlronlhajljLrpgILphY0gKi9cclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdC8vIHBhZGRpbmctYm90dG9tOiBjb25zdGFudChzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtcclxuXHRcdC8vIHBhZGRpbmctYm90dG9tOiBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdCYubGVmdCxcclxuXHRcdCYucmlnaHQge1xyXG5cdFx0XHQvKiAjaWZkZWYgSDUgKi9cclxuXHRcdFx0cGFkZGluZy10b3A6IHZhcigtLXdpbmRvdy10b3ApO1xyXG5cdFx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdFx0LyogI2lmbmRlZiBINSAqL1xyXG5cdFx0XHRwYWRkaW5nLXRvcDogMDtcclxuXHRcdFx0LyogI2VuZGlmICovXHJcblx0XHRcdGZsZXg6IDE7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4uZml4Zm9ycGMtei1pbmRleCB7XHJcblx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdHotaW5kZXg6IDk5OTtcclxuXHQvKiAjZW5kaWYgKi9cclxufVxyXG5cclxuLmZpeGZvcnBjLXRvcCB7XHJcblx0dG9wOiAwO1xyXG59XHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///87\n");
/***/ }),
/* 87 */
/* 88 */
/*!******************************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue ***!
  \******************************************************************************************************************/
@@ -6694,10 +7261,10 @@
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-popup-dialog.vue?vue&type=template&id=6f54520a& */ 88);\n/* harmony import */ var _uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-popup-dialog.vue?vue&type=script&lang=js& */ 90);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 12);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQzZNO0FBQzdNLGdCQUFnQiwyTUFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1wb3B1cC1kaWFsb2cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmNTQ1MjBhJlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLXBvcHVwLWRpYWxvZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3VuaS1wb3B1cC1kaWFsb2cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3VuaS1wb3B1cC9jb21wb25lbnRzL3VuaS1wb3B1cC1kaWFsb2cvdW5pLXBvcHVwLWRpYWxvZy52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///87\n");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-popup-dialog.vue?vue&type=template&id=6f54520a& */ 89);\n/* harmony import */ var _uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-popup-dialog.vue?vue&type=script&lang=js& */ 91);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 12);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQzZNO0FBQzdNLGdCQUFnQiwyTUFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiODguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1wb3B1cC1kaWFsb2cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmNTQ1MjBhJlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLXBvcHVwLWRpYWxvZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3VuaS1wb3B1cC1kaWFsb2cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3VuaS1wb3B1cC9jb21wb25lbnRzL3VuaS1wb3B1cC1kaWFsb2cvdW5pLXBvcHVwLWRpYWxvZy52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///88\n");
/***/ }),
/* 88 */
/* 89 */
/*!*************************************************************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue?vue&type=template&id=6f54520a& ***!
  \*************************************************************************************************************************************************/
@@ -6706,7 +7273,7 @@
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup-dialog.vue?vue&type=template&id=6f54520a& */ 89);
/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup-dialog.vue?vue&type=template&id=6f54520a& */ 90);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_0_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -6718,7 +7285,7 @@
/***/ }),
/* 89 */
/* 90 */
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue?vue&type=template&id=6f54520a& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -6888,7 +7455,7 @@
/***/ }),
/* 90 */
/* 91 */
/*!*******************************************************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************************************************************************/
@@ -6896,10 +7463,10 @@
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup-dialog.vue?vue&type=script&lang=js& */ 91);\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW90QixDQUFnQiw4ckJBQUcsRUFBQyIsImZpbGUiOiI5MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQVBQL0hCdWlsZGVyWC4zLjQuMTguMjAyMjA2MzAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3VuaS1wb3B1cC1kaWFsb2cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQVBQL0hCdWlsZGVyWC4zLjQuMTguMjAyMjA2MzAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi91bmktcG9wdXAtZGlhbG9nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///90\n");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup-dialog.vue?vue&type=script&lang=js& */ 92);\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW90QixDQUFnQiw4ckJBQUcsRUFBQyIsImZpbGUiOiI5MS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQVBQL0hCdWlsZGVyWC4zLjQuMTguMjAyMjA2MzAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3VuaS1wb3B1cC1kaWFsb2cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQVBQL0hCdWlsZGVyWC4zLjQuMTguMjAyMjA2MzAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi91bmktcG9wdXAtZGlhbG9nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///91\n");
/***/ }),
/* 91 */
/* 92 */
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue?vue&type=script&lang=js& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -6907,10 +7474,10 @@
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\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 _popup = _interopRequireDefault(__webpack_require__(/*! ../uni-popup/popup.js */ 92));\nvar _uniI18n = __webpack_require__(/*! @dcloudio/uni-i18n */ 65);\n\n\nvar _index = _interopRequireDefault(__webpack_require__(/*! ../uni-popup/i18n/index.js */ 93));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //\n//\n//\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 _initVueI18n = (0, _uniI18n.initVueI18n)(_index.default),t = _initVueI18n.t; /**\n                                                                                  * PopUp 弹出层-对话框样式\n                                                                                  * @description 弹出层-对话框样式\n                                                                                  * @tutorial https://ext.dcloud.net.cn/plugin?id=329\n                                                                                  * @property {String} value input 模式下的默认值\n                                                                                  * @property {String} placeholder input 模式下输入提示\n                                                                                  * @property {String} type = [success|warning|info|error] 主题样式\n                                                                                  *  @value success 成功\n                                                                                  * \t@value warning 提示\n                                                                                  * \t@value info 消息\n                                                                                  * \t@value error 错误\n                                                                                  * @property {String} mode = [base|input] 模式、\n                                                                                  * \t@value base 基础对话框\n                                                                                  * \t@value input 可输入对话框\n                                                                                  * @property {String} content 对话框内容\n                                                                                  * @property {Boolean} beforeClose 是否拦截取消事件\n                                                                                  * @event {Function} confirm 点击确认按钮触发\n                                                                                  * @event {Function} close 点击取消按钮触发\n                                                                                  */var _default = { name: \"uniPopupDialog\", mixins: [_popup.default], emits: ['confirm', 'close'], props: { value: { type: [String, Number], default: '' }, placeholder: { type: [String, Number], default: '' }, type: { type: String, default: 'error' }, mode: { type: String, default: 'base' }, title: { type: String, default: '' },\n\n    content: {\n      type: String,\n      default: '' },\n\n    beforeClose: {\n      type: Boolean,\n      default: false },\n\n    cancelText: {\n      type: String,\n      default: '' },\n\n    confirmText: {\n      type: String,\n      default: '' } },\n\n\n  data: function data() {\n    return {\n      dialogType: 'error',\n      focus: false,\n      val: \"\" };\n\n  },\n  computed: {\n    okText: function okText() {\n      return this.confirmText || t(\"uni-popup.ok\");\n    },\n    closeText: function closeText() {\n      return this.cancelText || t(\"uni-popup.cancel\");\n    },\n    placeholderText: function placeholderText() {\n      return this.placeholder || t(\"uni-popup.placeholder\");\n    },\n    titleText: function titleText() {\n      return this.title || t(\"uni-popup.title\");\n    } },\n\n  watch: {\n    type: function type(val) {\n      this.dialogType = val;\n    },\n    mode: function mode(val) {\n      if (val === 'input') {\n        this.dialogType = 'info';\n      }\n    },\n    value: function value(val) {\n      this.val = val;\n    } },\n\n  created: function created() {\n    // 对话框遮罩不可点击\n    this.popup.disableMask();\n    // this.popup.closeMask()\n    if (this.mode === 'input') {\n      this.dialogType = 'info';\n      this.val = this.value;\n    } else {\n      this.dialogType = this.type;\n    }\n  },\n  mounted: function mounted() {\n    this.focus = true;\n  },\n  methods: {\n    /**\n              * 点击确认按钮\n              */\n    onOk: function onOk() {\n      if (this.mode === 'input') {\n        this.$emit('confirm', this.val);\n      } else {\n        this.$emit('confirm');\n      }\n      if (this.beforeClose) return;\n      this.popup.close();\n    },\n    /**\n        * 点击取消按钮\n        */\n    closeDialog: function closeDialog() {\n      this.$emit('close');\n      if (this.beforeClose) return;\n      this.popup.close();\n    },\n    close: function close() {\n      this.popup.close();\n    } } };exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXBvcHVwL2NvbXBvbmVudHMvdW5pLXBvcHVwLWRpYWxvZy91bmktcG9wdXAtZGlhbG9nLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBO0FBQ0E7OztBQUdBLCtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUJBQ0EseUMsQ0FBQSxDLGdCQUFBLEMsRUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O21HQW9CQSxFQUNBLHNCQURBLEVBRUEsd0JBRkEsRUFHQSwyQkFIQSxFQUlBLFNBQ0EsU0FDQSxzQkFEQSxFQUVBLFdBRkEsRUFEQSxFQUtBLGVBQ0Esc0JBREEsRUFFQSxXQUZBLEVBTEEsRUFTQSxRQUNBLFlBREEsRUFFQSxnQkFGQSxFQVRBLEVBYUEsUUFDQSxZQURBLEVBRUEsZUFGQSxFQWJBLEVBaUJBLFNBQ0EsWUFEQSxFQUVBLFdBRkEsRUFqQkE7O0FBcUJBO0FBQ0Esa0JBREE7QUFFQSxpQkFGQSxFQXJCQTs7QUF5QkE7QUFDQSxtQkFEQTtBQUVBLG9CQUZBLEVBekJBOztBQTZCQTtBQUNBLGtCQURBO0FBRUEsaUJBRkEsRUE3QkE7O0FBaUNBO0FBQ0Esa0JBREE7QUFFQSxpQkFGQSxFQWpDQSxFQUpBOzs7QUEwQ0EsTUExQ0Esa0JBMENBO0FBQ0E7QUFDQSx5QkFEQTtBQUVBLGtCQUZBO0FBR0EsYUFIQTs7QUFLQSxHQWhEQTtBQWlEQTtBQUNBLFVBREEsb0JBQ0E7QUFDQTtBQUNBLEtBSEE7QUFJQSxhQUpBLHVCQUlBO0FBQ0E7QUFDQSxLQU5BO0FBT0EsbUJBUEEsNkJBT0E7QUFDQTtBQUNBLEtBVEE7QUFVQSxhQVZBLHVCQVVBO0FBQ0E7QUFDQSxLQVpBLEVBakRBOztBQStEQTtBQUNBLFFBREEsZ0JBQ0EsR0FEQSxFQUNBO0FBQ0E7QUFDQSxLQUhBO0FBSUEsUUFKQSxnQkFJQSxHQUpBLEVBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQVJBO0FBU0EsU0FUQSxpQkFTQSxHQVRBLEVBU0E7QUFDQTtBQUNBLEtBWEEsRUEvREE7O0FBNEVBLFNBNUVBLHFCQTRFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBSEEsTUFHQTtBQUNBO0FBQ0E7QUFDQSxHQXRGQTtBQXVGQSxTQXZGQSxxQkF1RkE7QUFDQTtBQUNBLEdBekZBO0FBMEZBO0FBQ0E7OztBQUdBLFFBSkEsa0JBSUE7QUFDQTtBQUNBO0FBQ0EsT0FGQSxNQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQVpBO0FBYUE7OztBQUdBLGVBaEJBLHlCQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBcEJBO0FBcUJBLFNBckJBLG1CQXFCQTtBQUNBO0FBQ0EsS0F2QkEsRUExRkEsRSIsImZpbGUiOiI5MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cInVuaS1wb3B1cC1kaWFsb2dcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwidW5pLWRpYWxvZy10aXRsZVwiPlxyXG5cdFx0XHQ8dGV4dCBjbGFzcz1cInVuaS1kaWFsb2ctdGl0bGUtdGV4dFwiIDpjbGFzcz1cIlsndW5pLXBvcHVwX18nK2RpYWxvZ1R5cGVdXCI+e3t0aXRsZVRleHR9fTwvdGV4dD5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IHYtaWY9XCJtb2RlID09PSAnYmFzZSdcIiBjbGFzcz1cInVuaS1kaWFsb2ctY29udGVudFwiPlxyXG5cdFx0XHQ8c2xvdD5cclxuXHRcdFx0XHQ8dGV4dCBjbGFzcz1cInVuaS1kaWFsb2ctY29udGVudC10ZXh0XCI+e3tjb250ZW50fX08L3RleHQ+XHJcblx0XHRcdDwvc2xvdD5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IHYtZWxzZSBjbGFzcz1cInVuaS1kaWFsb2ctY29udGVudFwiPlxyXG5cdFx0XHQ8c2xvdD5cclxuXHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJ1bmktZGlhbG9nLWlucHV0XCIgdi1tb2RlbD1cInZhbFwiIHR5cGU9XCJ0ZXh0XCIgOnBsYWNlaG9sZGVyPVwicGxhY2Vob2xkZXJUZXh0XCIgOmZvY3VzPVwiZm9jdXNcIiA+XHJcblx0XHRcdDwvc2xvdD5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwidW5pLWRpYWxvZy1idXR0b24tZ3JvdXBcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ1bmktZGlhbG9nLWJ1dHRvblwiIEBjbGljaz1cImNsb3NlRGlhbG9nXCI+XHJcblx0XHRcdFx0PHRleHQgY2xhc3M9XCJ1bmktZGlhbG9nLWJ1dHRvbi10ZXh0XCI+e3tjbG9zZVRleHR9fTwvdGV4dD5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInVuaS1kaWFsb2ctYnV0dG9uIHVuaS1ib3JkZXItbGVmdFwiIEBjbGljaz1cIm9uT2tcIj5cclxuXHRcdFx0XHQ8dGV4dCBjbGFzcz1cInVuaS1kaWFsb2ctYnV0dG9uLXRleHQgdW5pLWJ1dHRvbi1jb2xvclwiPnt7b2tUZXh0fX08L3RleHQ+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuXHRpbXBvcnQgcG9wdXAgZnJvbSAnLi4vdW5pLXBvcHVwL3BvcHVwLmpzJ1xyXG5cdGltcG9ydCB7XHJcblx0aW5pdFZ1ZUkxOG5cclxuXHR9IGZyb20gJ0BkY2xvdWRpby91bmktaTE4bidcclxuXHRpbXBvcnQgbWVzc2FnZXMgZnJvbSAnLi4vdW5pLXBvcHVwL2kxOG4vaW5kZXguanMnXHJcblx0Y29uc3Qge1x0dCB9ID0gaW5pdFZ1ZUkxOG4obWVzc2FnZXMpXHJcblx0LyoqXHJcblx0ICogUG9wVXAg5by55Ye65bGCLeWvueivneahhuagt+W8j1xyXG5cdCAqIEBkZXNjcmlwdGlvbiDlvLnlh7rlsYIt5a+56K+d5qGG5qC35byPXHJcblx0ICogQHR1dG9yaWFsIGh0dHBzOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTMyOVxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB2YWx1ZSBpbnB1dCDmqKHlvI/kuIvnmoTpu5jorqTlgLxcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gcGxhY2Vob2xkZXIgaW5wdXQg5qih5byP5LiL6L6T5YWl5o+Q56S6XHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IHR5cGUgPSBbc3VjY2Vzc3x3YXJuaW5nfGluZm98ZXJyb3JdIOS4u+mimOagt+W8j1xyXG5cdCAqICBAdmFsdWUgc3VjY2VzcyDmiJDlip9cclxuXHQgKiBcdEB2YWx1ZSB3YXJuaW5nIOaPkOekulxyXG5cdCAqIFx0QHZhbHVlIGluZm8g5raI5oGvXHJcblx0ICogXHRAdmFsdWUgZXJyb3Ig6ZSZ6K+vXHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IG1vZGUgPSBbYmFzZXxpbnB1dF0g5qih5byP44CBXHJcblx0ICogXHRAdmFsdWUgYmFzZSDln7rnoYDlr7nor53moYZcclxuXHQgKiBcdEB2YWx1ZSBpbnB1dCDlj6/ovpPlhaXlr7nor53moYZcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gY29udGVudCDlr7nor53moYblhoXlrrlcclxuXHQgKiBAcHJvcGVydHkge0Jvb2xlYW59IGJlZm9yZUNsb3NlIOaYr+WQpuaLpuaIquWPlua2iOS6i+S7tlxyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGNvbmZpcm0g54K55Ye756Gu6K6k5oyJ6ZKu6Kem5Y+RXHJcblx0ICogQGV2ZW50IHtGdW5jdGlvbn0gY2xvc2Ug54K55Ye75Y+W5raI5oyJ6ZKu6Kem5Y+RXHJcblx0ICovXHJcblxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdG5hbWU6IFwidW5pUG9wdXBEaWFsb2dcIixcclxuXHRcdG1peGluczogW3BvcHVwXSxcclxuXHRcdGVtaXRzOlsnY29uZmlybScsJ2Nsb3NlJ10sXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHR2YWx1ZToge1xyXG5cdFx0XHRcdHR5cGU6IFtTdHJpbmcsIE51bWJlcl0sXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0cGxhY2Vob2xkZXI6IHtcclxuXHRcdFx0XHR0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXHJcblx0XHRcdH0sXHJcblx0XHRcdHR5cGU6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJ2Vycm9yJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRtb2RlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICdiYXNlJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjb250ZW50OiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXHJcblx0XHRcdH0sXHJcblx0XHRcdGJlZm9yZUNsb3NlOiB7XHJcblx0XHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjYW5jZWxUZXh0OntcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0Y29uZmlybVRleHQ6e1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRkaWFsb2dUeXBlOiAnZXJyb3InLFxyXG5cdFx0XHRcdGZvY3VzOiBmYWxzZSxcclxuXHRcdFx0XHR2YWw6IFwiXCJcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGNvbXB1dGVkOiB7XHJcblx0XHRcdG9rVGV4dCgpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5jb25maXJtVGV4dCB8fCB0KFwidW5pLXBvcHVwLm9rXCIpXHJcblx0XHRcdH0sXHJcblx0XHRcdGNsb3NlVGV4dCgpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5jYW5jZWxUZXh0IHx8IHQoXCJ1bmktcG9wdXAuY2FuY2VsXCIpXHJcblx0XHRcdH0sXHJcblx0XHRcdHBsYWNlaG9sZGVyVGV4dCgpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5wbGFjZWhvbGRlciB8fCB0KFwidW5pLXBvcHVwLnBsYWNlaG9sZGVyXCIpXHJcblx0XHRcdH0sXHJcblx0XHRcdHRpdGxlVGV4dCgpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy50aXRsZSB8fCB0KFwidW5pLXBvcHVwLnRpdGxlXCIpXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHR3YXRjaDoge1xyXG5cdFx0XHR0eXBlKHZhbCkge1xyXG5cdFx0XHRcdHRoaXMuZGlhbG9nVHlwZSA9IHZhbFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRtb2RlKHZhbCkge1xyXG5cdFx0XHRcdGlmICh2YWwgPT09ICdpbnB1dCcpIHtcclxuXHRcdFx0XHRcdHRoaXMuZGlhbG9nVHlwZSA9ICdpbmZvJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0dmFsdWUodmFsKSB7XHJcblx0XHRcdFx0dGhpcy52YWwgPSB2YWxcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGNyZWF0ZWQoKSB7XHJcblx0XHRcdC8vIOWvueivneahhumBrue9qeS4jeWPr+eCueWHu1xyXG5cdFx0XHR0aGlzLnBvcHVwLmRpc2FibGVNYXNrKClcclxuXHRcdFx0Ly8gdGhpcy5wb3B1cC5jbG9zZU1hc2soKVxyXG5cdFx0XHRpZiAodGhpcy5tb2RlID09PSAnaW5wdXQnKSB7XHJcblx0XHRcdFx0dGhpcy5kaWFsb2dUeXBlID0gJ2luZm8nXHJcblx0XHRcdFx0dGhpcy52YWwgPSB0aGlzLnZhbHVlXHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5kaWFsb2dUeXBlID0gdGhpcy50eXBlXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHR0aGlzLmZvY3VzID0gdHJ1ZVxyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0LyoqXHJcblx0XHRcdCAqIOeCueWHu+ehruiupOaMiemSrlxyXG5cdFx0XHQgKi9cclxuXHRcdFx0b25PaygpIHtcclxuXHRcdFx0XHRpZiAodGhpcy5tb2RlID09PSAnaW5wdXQnKXtcclxuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NvbmZpcm0nLCB0aGlzLnZhbClcclxuXHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NvbmZpcm0nKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZih0aGlzLmJlZm9yZUNsb3NlKSByZXR1cm5cclxuXHRcdFx0XHR0aGlzLnBvcHVwLmNsb3NlKClcclxuXHRcdFx0fSxcclxuXHRcdFx0LyoqXHJcblx0XHRcdCAqIOeCueWHu+WPlua2iOaMiemSrlxyXG5cdFx0XHQgKi9cclxuXHRcdFx0Y2xvc2VEaWFsb2coKSB7XHJcblx0XHRcdFx0dGhpcy4kZW1pdCgnY2xvc2UnKVxyXG5cdFx0XHRcdGlmKHRoaXMuYmVmb3JlQ2xvc2UpIHJldHVyblxyXG5cdFx0XHRcdHRoaXMucG9wdXAuY2xvc2UoKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbG9zZSgpe1xyXG5cdFx0XHRcdHRoaXMucG9wdXAuY2xvc2UoKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiID5cclxuXHQudW5pLXBvcHVwLWRpYWxvZyB7XHJcblx0XHR3aWR0aDogMzAwcHg7XHJcblx0XHRib3JkZXItcmFkaXVzOiAxMXB4O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuXHR9XHJcblxyXG5cdC51bmktZGlhbG9nLXRpdGxlIHtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdHBhZGRpbmctdG9wOiAyNXB4O1xyXG5cdH1cclxuXHJcblx0LnVuaS1kaWFsb2ctdGl0bGUtdGV4dCB7XHJcblx0XHRmb250LXNpemU6IDE2cHg7XHJcblx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cdH1cclxuXHJcblx0LnVuaS1kaWFsb2ctY29udGVudCB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0cGFkZGluZzogMjBweDtcclxuXHR9XHJcblxyXG5cdC51bmktZGlhbG9nLWNvbnRlbnQtdGV4dCB7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRjb2xvcjogIzZDNkM2QztcclxuXHR9XHJcblxyXG5cdC51bmktZGlhbG9nLWJ1dHRvbi1ncm91cCB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0Ym9yZGVyLXRvcC1jb2xvcjogI2Y1ZjVmNTtcclxuXHRcdGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xyXG5cdFx0Ym9yZGVyLXRvcC13aWR0aDogMXB4O1xyXG5cdH1cclxuXHJcblx0LnVuaS1kaWFsb2ctYnV0dG9uIHtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHJcblx0XHRmbGV4OiAxO1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdGhlaWdodDogNDVweDtcclxuXHR9XHJcblxyXG5cdC51bmktYm9yZGVyLWxlZnQge1xyXG5cdFx0Ym9yZGVyLWxlZnQtY29sb3I6ICNmMGYwZjA7XHJcblx0XHRib3JkZXItbGVmdC1zdHlsZTogc29saWQ7XHJcblx0XHRib3JkZXItbGVmdC13aWR0aDogMXB4O1xyXG5cdH1cclxuXHJcblx0LnVuaS1kaWFsb2ctYnV0dG9uLXRleHQge1xyXG5cdFx0Zm9udC1zaXplOiAxNnB4O1xyXG5cdFx0Y29sb3I6ICMzMzM7XHJcblx0fVxyXG5cclxuXHQudW5pLWJ1dHRvbi1jb2xvciB7XHJcblx0XHRjb2xvcjogIzAwN2FmZjtcclxuXHR9XHJcblxyXG5cdC51bmktZGlhbG9nLWlucHV0IHtcclxuXHRcdGZsZXg6IDE7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRib3JkZXI6IDFweCAjZWVlIHNvbGlkO1xyXG5cdFx0aGVpZ2h0OiA0MHB4O1xyXG5cdFx0cGFkZGluZzogMCAxMHB4O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xyXG5cdFx0Y29sb3I6ICM1NTU7XHJcblx0fVxyXG5cclxuXHQudW5pLXBvcHVwX19zdWNjZXNzIHtcclxuXHRcdGNvbG9yOiAjNGNkOTY0O1xyXG5cdH1cclxuXHJcblx0LnVuaS1wb3B1cF9fd2FybiB7XHJcblx0XHRjb2xvcjogI2YwYWQ0ZTtcclxuXHR9XHJcblxyXG5cdC51bmktcG9wdXBfX2Vycm9yIHtcclxuXHRcdGNvbG9yOiAjZGQ1MjRkO1xyXG5cdH1cclxuXHJcblx0LnVuaS1wb3B1cF9faW5mbyB7XHJcblx0XHRjb2xvcjogIzkwOTM5OTtcclxuXHR9XHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///91\n");
eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\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 _popup = _interopRequireDefault(__webpack_require__(/*! ../uni-popup/popup.js */ 93));\nvar _uniI18n = __webpack_require__(/*! @dcloudio/uni-i18n */ 65);\n\n\nvar _index = _interopRequireDefault(__webpack_require__(/*! ../uni-popup/i18n/index.js */ 94));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //\n//\n//\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 _initVueI18n = (0, _uniI18n.initVueI18n)(_index.default),t = _initVueI18n.t; /**\n                                                                                  * PopUp 弹出层-对话框样式\n                                                                                  * @description 弹出层-对话框样式\n                                                                                  * @tutorial https://ext.dcloud.net.cn/plugin?id=329\n                                                                                  * @property {String} value input 模式下的默认值\n                                                                                  * @property {String} placeholder input 模式下输入提示\n                                                                                  * @property {String} type = [success|warning|info|error] 主题样式\n                                                                                  *  @value success 成功\n                                                                                  * \t@value warning 提示\n                                                                                  * \t@value info 消息\n                                                                                  * \t@value error 错误\n                                                                                  * @property {String} mode = [base|input] 模式、\n                                                                                  * \t@value base 基础对话框\n                                                                                  * \t@value input 可输入对话框\n                                                                                  * @property {String} content 对话框内容\n                                                                                  * @property {Boolean} beforeClose 是否拦截取消事件\n                                                                                  * @event {Function} confirm 点击确认按钮触发\n                                                                                  * @event {Function} close 点击取消按钮触发\n                                                                                  */var _default = { name: \"uniPopupDialog\", mixins: [_popup.default], emits: ['confirm', 'close'], props: { value: { type: [String, Number], default: '' }, placeholder: { type: [String, Number], default: '' }, type: { type: String, default: 'error' }, mode: { type: String, default: 'base' }, title: { type: String, default: '' },\n\n    content: {\n      type: String,\n      default: '' },\n\n    beforeClose: {\n      type: Boolean,\n      default: false },\n\n    cancelText: {\n      type: String,\n      default: '' },\n\n    confirmText: {\n      type: String,\n      default: '' } },\n\n\n  data: function data() {\n    return {\n      dialogType: 'error',\n      focus: false,\n      val: \"\" };\n\n  },\n  computed: {\n    okText: function okText() {\n      return this.confirmText || t(\"uni-popup.ok\");\n    },\n    closeText: function closeText() {\n      return this.cancelText || t(\"uni-popup.cancel\");\n    },\n    placeholderText: function placeholderText() {\n      return this.placeholder || t(\"uni-popup.placeholder\");\n    },\n    titleText: function titleText() {\n      return this.title || t(\"uni-popup.title\");\n    } },\n\n  watch: {\n    type: function type(val) {\n      this.dialogType = val;\n    },\n    mode: function mode(val) {\n      if (val === 'input') {\n        this.dialogType = 'info';\n      }\n    },\n    value: function value(val) {\n      this.val = val;\n    } },\n\n  created: function created() {\n    // 对话框遮罩不可点击\n    this.popup.disableMask();\n    // this.popup.closeMask()\n    if (this.mode === 'input') {\n      this.dialogType = 'info';\n      this.val = this.value;\n    } else {\n      this.dialogType = this.type;\n    }\n  },\n  mounted: function mounted() {\n    this.focus = true;\n  },\n  methods: {\n    /**\n              * 点击确认按钮\n              */\n    onOk: function onOk() {\n      if (this.mode === 'input') {\n        this.$emit('confirm', this.val);\n      } else {\n        this.$emit('confirm');\n      }\n      if (this.beforeClose) return;\n      this.popup.close();\n    },\n    /**\n        * 点击取消按钮\n        */\n    closeDialog: function closeDialog() {\n      this.$emit('close');\n      if (this.beforeClose) return;\n      this.popup.close();\n    },\n    close: function close() {\n      this.popup.close();\n    } } };exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXBvcHVwL2NvbXBvbmVudHMvdW5pLXBvcHVwLWRpYWxvZy91bmktcG9wdXAtZGlhbG9nLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBO0FBQ0E7OztBQUdBLCtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUJBQ0EseUMsQ0FBQSxDLGdCQUFBLEMsRUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O21HQW9CQSxFQUNBLHNCQURBLEVBRUEsd0JBRkEsRUFHQSwyQkFIQSxFQUlBLFNBQ0EsU0FDQSxzQkFEQSxFQUVBLFdBRkEsRUFEQSxFQUtBLGVBQ0Esc0JBREEsRUFFQSxXQUZBLEVBTEEsRUFTQSxRQUNBLFlBREEsRUFFQSxnQkFGQSxFQVRBLEVBYUEsUUFDQSxZQURBLEVBRUEsZUFGQSxFQWJBLEVBaUJBLFNBQ0EsWUFEQSxFQUVBLFdBRkEsRUFqQkE7O0FBcUJBO0FBQ0Esa0JBREE7QUFFQSxpQkFGQSxFQXJCQTs7QUF5QkE7QUFDQSxtQkFEQTtBQUVBLG9CQUZBLEVBekJBOztBQTZCQTtBQUNBLGtCQURBO0FBRUEsaUJBRkEsRUE3QkE7O0FBaUNBO0FBQ0Esa0JBREE7QUFFQSxpQkFGQSxFQWpDQSxFQUpBOzs7QUEwQ0EsTUExQ0Esa0JBMENBO0FBQ0E7QUFDQSx5QkFEQTtBQUVBLGtCQUZBO0FBR0EsYUFIQTs7QUFLQSxHQWhEQTtBQWlEQTtBQUNBLFVBREEsb0JBQ0E7QUFDQTtBQUNBLEtBSEE7QUFJQSxhQUpBLHVCQUlBO0FBQ0E7QUFDQSxLQU5BO0FBT0EsbUJBUEEsNkJBT0E7QUFDQTtBQUNBLEtBVEE7QUFVQSxhQVZBLHVCQVVBO0FBQ0E7QUFDQSxLQVpBLEVBakRBOztBQStEQTtBQUNBLFFBREEsZ0JBQ0EsR0FEQSxFQUNBO0FBQ0E7QUFDQSxLQUhBO0FBSUEsUUFKQSxnQkFJQSxHQUpBLEVBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQVJBO0FBU0EsU0FUQSxpQkFTQSxHQVRBLEVBU0E7QUFDQTtBQUNBLEtBWEEsRUEvREE7O0FBNEVBLFNBNUVBLHFCQTRFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBSEEsTUFHQTtBQUNBO0FBQ0E7QUFDQSxHQXRGQTtBQXVGQSxTQXZGQSxxQkF1RkE7QUFDQTtBQUNBLEdBekZBO0FBMEZBO0FBQ0E7OztBQUdBLFFBSkEsa0JBSUE7QUFDQTtBQUNBO0FBQ0EsT0FGQSxNQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQVpBO0FBYUE7OztBQUdBLGVBaEJBLHlCQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBcEJBO0FBcUJBLFNBckJBLG1CQXFCQTtBQUNBO0FBQ0EsS0F2QkEsRUExRkEsRSIsImZpbGUiOiI5Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cInVuaS1wb3B1cC1kaWFsb2dcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwidW5pLWRpYWxvZy10aXRsZVwiPlxyXG5cdFx0XHQ8dGV4dCBjbGFzcz1cInVuaS1kaWFsb2ctdGl0bGUtdGV4dFwiIDpjbGFzcz1cIlsndW5pLXBvcHVwX18nK2RpYWxvZ1R5cGVdXCI+e3t0aXRsZVRleHR9fTwvdGV4dD5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IHYtaWY9XCJtb2RlID09PSAnYmFzZSdcIiBjbGFzcz1cInVuaS1kaWFsb2ctY29udGVudFwiPlxyXG5cdFx0XHQ8c2xvdD5cclxuXHRcdFx0XHQ8dGV4dCBjbGFzcz1cInVuaS1kaWFsb2ctY29udGVudC10ZXh0XCI+e3tjb250ZW50fX08L3RleHQ+XHJcblx0XHRcdDwvc2xvdD5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IHYtZWxzZSBjbGFzcz1cInVuaS1kaWFsb2ctY29udGVudFwiPlxyXG5cdFx0XHQ8c2xvdD5cclxuXHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJ1bmktZGlhbG9nLWlucHV0XCIgdi1tb2RlbD1cInZhbFwiIHR5cGU9XCJ0ZXh0XCIgOnBsYWNlaG9sZGVyPVwicGxhY2Vob2xkZXJUZXh0XCIgOmZvY3VzPVwiZm9jdXNcIiA+XHJcblx0XHRcdDwvc2xvdD5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwidW5pLWRpYWxvZy1idXR0b24tZ3JvdXBcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ1bmktZGlhbG9nLWJ1dHRvblwiIEBjbGljaz1cImNsb3NlRGlhbG9nXCI+XHJcblx0XHRcdFx0PHRleHQgY2xhc3M9XCJ1bmktZGlhbG9nLWJ1dHRvbi10ZXh0XCI+e3tjbG9zZVRleHR9fTwvdGV4dD5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInVuaS1kaWFsb2ctYnV0dG9uIHVuaS1ib3JkZXItbGVmdFwiIEBjbGljaz1cIm9uT2tcIj5cclxuXHRcdFx0XHQ8dGV4dCBjbGFzcz1cInVuaS1kaWFsb2ctYnV0dG9uLXRleHQgdW5pLWJ1dHRvbi1jb2xvclwiPnt7b2tUZXh0fX08L3RleHQ+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuXHRpbXBvcnQgcG9wdXAgZnJvbSAnLi4vdW5pLXBvcHVwL3BvcHVwLmpzJ1xyXG5cdGltcG9ydCB7XHJcblx0aW5pdFZ1ZUkxOG5cclxuXHR9IGZyb20gJ0BkY2xvdWRpby91bmktaTE4bidcclxuXHRpbXBvcnQgbWVzc2FnZXMgZnJvbSAnLi4vdW5pLXBvcHVwL2kxOG4vaW5kZXguanMnXHJcblx0Y29uc3Qge1x0dCB9ID0gaW5pdFZ1ZUkxOG4obWVzc2FnZXMpXHJcblx0LyoqXHJcblx0ICogUG9wVXAg5by55Ye65bGCLeWvueivneahhuagt+W8j1xyXG5cdCAqIEBkZXNjcmlwdGlvbiDlvLnlh7rlsYIt5a+56K+d5qGG5qC35byPXHJcblx0ICogQHR1dG9yaWFsIGh0dHBzOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTMyOVxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB2YWx1ZSBpbnB1dCDmqKHlvI/kuIvnmoTpu5jorqTlgLxcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gcGxhY2Vob2xkZXIgaW5wdXQg5qih5byP5LiL6L6T5YWl5o+Q56S6XHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IHR5cGUgPSBbc3VjY2Vzc3x3YXJuaW5nfGluZm98ZXJyb3JdIOS4u+mimOagt+W8j1xyXG5cdCAqICBAdmFsdWUgc3VjY2VzcyDmiJDlip9cclxuXHQgKiBcdEB2YWx1ZSB3YXJuaW5nIOaPkOekulxyXG5cdCAqIFx0QHZhbHVlIGluZm8g5raI5oGvXHJcblx0ICogXHRAdmFsdWUgZXJyb3Ig6ZSZ6K+vXHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IG1vZGUgPSBbYmFzZXxpbnB1dF0g5qih5byP44CBXHJcblx0ICogXHRAdmFsdWUgYmFzZSDln7rnoYDlr7nor53moYZcclxuXHQgKiBcdEB2YWx1ZSBpbnB1dCDlj6/ovpPlhaXlr7nor53moYZcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gY29udGVudCDlr7nor53moYblhoXlrrlcclxuXHQgKiBAcHJvcGVydHkge0Jvb2xlYW59IGJlZm9yZUNsb3NlIOaYr+WQpuaLpuaIquWPlua2iOS6i+S7tlxyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGNvbmZpcm0g54K55Ye756Gu6K6k5oyJ6ZKu6Kem5Y+RXHJcblx0ICogQGV2ZW50IHtGdW5jdGlvbn0gY2xvc2Ug54K55Ye75Y+W5raI5oyJ6ZKu6Kem5Y+RXHJcblx0ICovXHJcblxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdG5hbWU6IFwidW5pUG9wdXBEaWFsb2dcIixcclxuXHRcdG1peGluczogW3BvcHVwXSxcclxuXHRcdGVtaXRzOlsnY29uZmlybScsJ2Nsb3NlJ10sXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHR2YWx1ZToge1xyXG5cdFx0XHRcdHR5cGU6IFtTdHJpbmcsIE51bWJlcl0sXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0cGxhY2Vob2xkZXI6IHtcclxuXHRcdFx0XHR0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXHJcblx0XHRcdH0sXHJcblx0XHRcdHR5cGU6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJ2Vycm9yJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRtb2RlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICdiYXNlJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjb250ZW50OiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXHJcblx0XHRcdH0sXHJcblx0XHRcdGJlZm9yZUNsb3NlOiB7XHJcblx0XHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjYW5jZWxUZXh0OntcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0Y29uZmlybVRleHQ6e1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRkaWFsb2dUeXBlOiAnZXJyb3InLFxyXG5cdFx0XHRcdGZvY3VzOiBmYWxzZSxcclxuXHRcdFx0XHR2YWw6IFwiXCJcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGNvbXB1dGVkOiB7XHJcblx0XHRcdG9rVGV4dCgpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5jb25maXJtVGV4dCB8fCB0KFwidW5pLXBvcHVwLm9rXCIpXHJcblx0XHRcdH0sXHJcblx0XHRcdGNsb3NlVGV4dCgpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5jYW5jZWxUZXh0IHx8IHQoXCJ1bmktcG9wdXAuY2FuY2VsXCIpXHJcblx0XHRcdH0sXHJcblx0XHRcdHBsYWNlaG9sZGVyVGV4dCgpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5wbGFjZWhvbGRlciB8fCB0KFwidW5pLXBvcHVwLnBsYWNlaG9sZGVyXCIpXHJcblx0XHRcdH0sXHJcblx0XHRcdHRpdGxlVGV4dCgpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy50aXRsZSB8fCB0KFwidW5pLXBvcHVwLnRpdGxlXCIpXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHR3YXRjaDoge1xyXG5cdFx0XHR0eXBlKHZhbCkge1xyXG5cdFx0XHRcdHRoaXMuZGlhbG9nVHlwZSA9IHZhbFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRtb2RlKHZhbCkge1xyXG5cdFx0XHRcdGlmICh2YWwgPT09ICdpbnB1dCcpIHtcclxuXHRcdFx0XHRcdHRoaXMuZGlhbG9nVHlwZSA9ICdpbmZvJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0dmFsdWUodmFsKSB7XHJcblx0XHRcdFx0dGhpcy52YWwgPSB2YWxcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGNyZWF0ZWQoKSB7XHJcblx0XHRcdC8vIOWvueivneahhumBrue9qeS4jeWPr+eCueWHu1xyXG5cdFx0XHR0aGlzLnBvcHVwLmRpc2FibGVNYXNrKClcclxuXHRcdFx0Ly8gdGhpcy5wb3B1cC5jbG9zZU1hc2soKVxyXG5cdFx0XHRpZiAodGhpcy5tb2RlID09PSAnaW5wdXQnKSB7XHJcblx0XHRcdFx0dGhpcy5kaWFsb2dUeXBlID0gJ2luZm8nXHJcblx0XHRcdFx0dGhpcy52YWwgPSB0aGlzLnZhbHVlXHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5kaWFsb2dUeXBlID0gdGhpcy50eXBlXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHR0aGlzLmZvY3VzID0gdHJ1ZVxyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0LyoqXHJcblx0XHRcdCAqIOeCueWHu+ehruiupOaMiemSrlxyXG5cdFx0XHQgKi9cclxuXHRcdFx0b25PaygpIHtcclxuXHRcdFx0XHRpZiAodGhpcy5tb2RlID09PSAnaW5wdXQnKXtcclxuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NvbmZpcm0nLCB0aGlzLnZhbClcclxuXHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NvbmZpcm0nKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZih0aGlzLmJlZm9yZUNsb3NlKSByZXR1cm5cclxuXHRcdFx0XHR0aGlzLnBvcHVwLmNsb3NlKClcclxuXHRcdFx0fSxcclxuXHRcdFx0LyoqXHJcblx0XHRcdCAqIOeCueWHu+WPlua2iOaMiemSrlxyXG5cdFx0XHQgKi9cclxuXHRcdFx0Y2xvc2VEaWFsb2coKSB7XHJcblx0XHRcdFx0dGhpcy4kZW1pdCgnY2xvc2UnKVxyXG5cdFx0XHRcdGlmKHRoaXMuYmVmb3JlQ2xvc2UpIHJldHVyblxyXG5cdFx0XHRcdHRoaXMucG9wdXAuY2xvc2UoKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbG9zZSgpe1xyXG5cdFx0XHRcdHRoaXMucG9wdXAuY2xvc2UoKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiID5cclxuXHQudW5pLXBvcHVwLWRpYWxvZyB7XHJcblx0XHR3aWR0aDogMzAwcHg7XHJcblx0XHRib3JkZXItcmFkaXVzOiAxMXB4O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuXHR9XHJcblxyXG5cdC51bmktZGlhbG9nLXRpdGxlIHtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdHBhZGRpbmctdG9wOiAyNXB4O1xyXG5cdH1cclxuXHJcblx0LnVuaS1kaWFsb2ctdGl0bGUtdGV4dCB7XHJcblx0XHRmb250LXNpemU6IDE2cHg7XHJcblx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cdH1cclxuXHJcblx0LnVuaS1kaWFsb2ctY29udGVudCB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0cGFkZGluZzogMjBweDtcclxuXHR9XHJcblxyXG5cdC51bmktZGlhbG9nLWNvbnRlbnQtdGV4dCB7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRjb2xvcjogIzZDNkM2QztcclxuXHR9XHJcblxyXG5cdC51bmktZGlhbG9nLWJ1dHRvbi1ncm91cCB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0Ym9yZGVyLXRvcC1jb2xvcjogI2Y1ZjVmNTtcclxuXHRcdGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xyXG5cdFx0Ym9yZGVyLXRvcC13aWR0aDogMXB4O1xyXG5cdH1cclxuXHJcblx0LnVuaS1kaWFsb2ctYnV0dG9uIHtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHJcblx0XHRmbGV4OiAxO1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdGhlaWdodDogNDVweDtcclxuXHR9XHJcblxyXG5cdC51bmktYm9yZGVyLWxlZnQge1xyXG5cdFx0Ym9yZGVyLWxlZnQtY29sb3I6ICNmMGYwZjA7XHJcblx0XHRib3JkZXItbGVmdC1zdHlsZTogc29saWQ7XHJcblx0XHRib3JkZXItbGVmdC13aWR0aDogMXB4O1xyXG5cdH1cclxuXHJcblx0LnVuaS1kaWFsb2ctYnV0dG9uLXRleHQge1xyXG5cdFx0Zm9udC1zaXplOiAxNnB4O1xyXG5cdFx0Y29sb3I6ICMzMzM7XHJcblx0fVxyXG5cclxuXHQudW5pLWJ1dHRvbi1jb2xvciB7XHJcblx0XHRjb2xvcjogIzAwN2FmZjtcclxuXHR9XHJcblxyXG5cdC51bmktZGlhbG9nLWlucHV0IHtcclxuXHRcdGZsZXg6IDE7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRib3JkZXI6IDFweCAjZWVlIHNvbGlkO1xyXG5cdFx0aGVpZ2h0OiA0MHB4O1xyXG5cdFx0cGFkZGluZzogMCAxMHB4O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xyXG5cdFx0Y29sb3I6ICM1NTU7XHJcblx0fVxyXG5cclxuXHQudW5pLXBvcHVwX19zdWNjZXNzIHtcclxuXHRcdGNvbG9yOiAjNGNkOTY0O1xyXG5cdH1cclxuXHJcblx0LnVuaS1wb3B1cF9fd2FybiB7XHJcblx0XHRjb2xvcjogI2YwYWQ0ZTtcclxuXHR9XHJcblxyXG5cdC51bmktcG9wdXBfX2Vycm9yIHtcclxuXHRcdGNvbG9yOiAjZGQ1MjRkO1xyXG5cdH1cclxuXHJcblx0LnVuaS1wb3B1cF9faW5mbyB7XHJcblx0XHRjb2xvcjogIzkwOTM5OTtcclxuXHR9XHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///92\n");
/***/ }),
/* 92 */
/* 93 */
/*!***********************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/popup.js ***!
  \***********************************************************************************************/
@@ -6918,10 +7485,10 @@
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _default =\n{\n  data: function data() {\n    return {};\n\n\n  },\n  created: function created() {\n    this.popup = this.getParent();\n  },\n  methods: {\n    /**\r\n              * 获取父元素实例\r\n              */\n    getParent: function getParent() {var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'uniPopup';\n      var parent = this.$parent;\n      var parentName = parent.$options.name;\n      while (parentName !== name) {\n        parent = parent.$parent;\n        if (!parent) return false;\n        parentName = parent.$options.name;\n      }\n      return parent;\n    } } };exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXBvcHVwL2NvbXBvbmVudHMvdW5pLXBvcHVwL3BvcHVwLmpzIl0sIm5hbWVzIjpbImRhdGEiLCJjcmVhdGVkIiwicG9wdXAiLCJnZXRQYXJlbnQiLCJtZXRob2RzIiwibmFtZSIsInBhcmVudCIsIiRwYXJlbnQiLCJwYXJlbnROYW1lIiwiJG9wdGlvbnMiXSwibWFwcGluZ3MiOiI7QUFDZTtBQUNkQSxNQURjLGtCQUNQO0FBQ04sV0FBTyxFQUFQOzs7QUFHQSxHQUxhO0FBTWRDLFNBTmMscUJBTUw7QUFDUixTQUFLQyxLQUFMLEdBQWEsS0FBS0MsU0FBTCxFQUFiO0FBQ0EsR0FSYTtBQVNkQyxTQUFPLEVBQUM7QUFDUDs7O0FBR0FELGFBSk8sdUJBSXNCLEtBQW5CRSxJQUFtQix1RUFBWixVQUFZO0FBQzVCLFVBQUlDLE1BQU0sR0FBRyxLQUFLQyxPQUFsQjtBQUNBLFVBQUlDLFVBQVUsR0FBR0YsTUFBTSxDQUFDRyxRQUFQLENBQWdCSixJQUFqQztBQUNBLGFBQU9HLFVBQVUsS0FBS0gsSUFBdEIsRUFBNEI7QUFDM0JDLGNBQU0sR0FBR0EsTUFBTSxDQUFDQyxPQUFoQjtBQUNBLFlBQUksQ0FBQ0QsTUFBTCxFQUFhLE9BQU8sS0FBUDtBQUNiRSxrQkFBVSxHQUFHRixNQUFNLENBQUNHLFFBQVAsQ0FBZ0JKLElBQTdCO0FBQ0E7QUFDRCxhQUFPQyxNQUFQO0FBQ0EsS0FiTSxFQVRNLEUiLCJmaWxlIjoiOTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cdGRhdGEoKSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcclxuXHRcdH1cclxuXHR9LFxyXG5cdGNyZWF0ZWQoKXtcclxuXHRcdHRoaXMucG9wdXAgPSB0aGlzLmdldFBhcmVudCgpXHJcblx0fSxcclxuXHRtZXRob2RzOntcclxuXHRcdC8qKlxyXG5cdFx0ICog6I635Y+W54i25YWD57Sg5a6e5L6LXHJcblx0XHQgKi9cclxuXHRcdGdldFBhcmVudChuYW1lID0gJ3VuaVBvcHVwJykge1xyXG5cdFx0XHRsZXQgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xyXG5cdFx0XHRsZXQgcGFyZW50TmFtZSA9IHBhcmVudC4kb3B0aW9ucy5uYW1lO1xyXG5cdFx0XHR3aGlsZSAocGFyZW50TmFtZSAhPT0gbmFtZSkge1xyXG5cdFx0XHRcdHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xyXG5cdFx0XHRcdGlmICghcGFyZW50KSByZXR1cm4gZmFsc2VcclxuXHRcdFx0XHRwYXJlbnROYW1lID0gcGFyZW50LiRvcHRpb25zLm5hbWU7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHBhcmVudDtcclxuXHRcdH0sXHJcblx0fVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///92\n");
eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _default =\n{\n  data: function data() {\n    return {};\n\n\n  },\n  created: function created() {\n    this.popup = this.getParent();\n  },\n  methods: {\n    /**\r\n              * 获取父元素实例\r\n              */\n    getParent: function getParent() {var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'uniPopup';\n      var parent = this.$parent;\n      var parentName = parent.$options.name;\n      while (parentName !== name) {\n        parent = parent.$parent;\n        if (!parent) return false;\n        parentName = parent.$options.name;\n      }\n      return parent;\n    } } };exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXBvcHVwL2NvbXBvbmVudHMvdW5pLXBvcHVwL3BvcHVwLmpzIl0sIm5hbWVzIjpbImRhdGEiLCJjcmVhdGVkIiwicG9wdXAiLCJnZXRQYXJlbnQiLCJtZXRob2RzIiwibmFtZSIsInBhcmVudCIsIiRwYXJlbnQiLCJwYXJlbnROYW1lIiwiJG9wdGlvbnMiXSwibWFwcGluZ3MiOiI7QUFDZTtBQUNkQSxNQURjLGtCQUNQO0FBQ04sV0FBTyxFQUFQOzs7QUFHQSxHQUxhO0FBTWRDLFNBTmMscUJBTUw7QUFDUixTQUFLQyxLQUFMLEdBQWEsS0FBS0MsU0FBTCxFQUFiO0FBQ0EsR0FSYTtBQVNkQyxTQUFPLEVBQUM7QUFDUDs7O0FBR0FELGFBSk8sdUJBSXNCLEtBQW5CRSxJQUFtQix1RUFBWixVQUFZO0FBQzVCLFVBQUlDLE1BQU0sR0FBRyxLQUFLQyxPQUFsQjtBQUNBLFVBQUlDLFVBQVUsR0FBR0YsTUFBTSxDQUFDRyxRQUFQLENBQWdCSixJQUFqQztBQUNBLGFBQU9HLFVBQVUsS0FBS0gsSUFBdEIsRUFBNEI7QUFDM0JDLGNBQU0sR0FBR0EsTUFBTSxDQUFDQyxPQUFoQjtBQUNBLFlBQUksQ0FBQ0QsTUFBTCxFQUFhLE9BQU8sS0FBUDtBQUNiRSxrQkFBVSxHQUFHRixNQUFNLENBQUNHLFFBQVAsQ0FBZ0JKLElBQTdCO0FBQ0E7QUFDRCxhQUFPQyxNQUFQO0FBQ0EsS0FiTSxFQVRNLEUiLCJmaWxlIjoiOTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cdGRhdGEoKSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcclxuXHRcdH1cclxuXHR9LFxyXG5cdGNyZWF0ZWQoKXtcclxuXHRcdHRoaXMucG9wdXAgPSB0aGlzLmdldFBhcmVudCgpXHJcblx0fSxcclxuXHRtZXRob2RzOntcclxuXHRcdC8qKlxyXG5cdFx0ICog6I635Y+W54i25YWD57Sg5a6e5L6LXHJcblx0XHQgKi9cclxuXHRcdGdldFBhcmVudChuYW1lID0gJ3VuaVBvcHVwJykge1xyXG5cdFx0XHRsZXQgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xyXG5cdFx0XHRsZXQgcGFyZW50TmFtZSA9IHBhcmVudC4kb3B0aW9ucy5uYW1lO1xyXG5cdFx0XHR3aGlsZSAocGFyZW50TmFtZSAhPT0gbmFtZSkge1xyXG5cdFx0XHRcdHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xyXG5cdFx0XHRcdGlmICghcGFyZW50KSByZXR1cm4gZmFsc2VcclxuXHRcdFx0XHRwYXJlbnROYW1lID0gcGFyZW50LiRvcHRpb25zLm5hbWU7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHBhcmVudDtcclxuXHRcdH0sXHJcblx0fVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///93\n");
/***/ }),
/* 93 */
/* 94 */
/*!****************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/i18n/index.js ***!
  \****************************************************************************************************/
@@ -6929,60 +7496,60 @@
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _en = _interopRequireDefault(__webpack_require__(/*! ./en.json */ 94));\nvar _zhHans = _interopRequireDefault(__webpack_require__(/*! ./zh-Hans.json */ 95));\nvar _zhHant = _interopRequireDefault(__webpack_require__(/*! ./zh-Hant.json */ 96));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}var _default =\n{\n  en: _en.default,\n  'zh-Hans': _zhHans.default,\n  'zh-Hant': _zhHant.default };exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXBvcHVwL2NvbXBvbmVudHMvdW5pLXBvcHVwL2kxOG4vaW5kZXguanMiXSwibmFtZXMiOlsiZW4iLCJ6aEhhbnMiLCJ6aEhhbnQiXSwibWFwcGluZ3MiOiJ1RkFBQTtBQUNBO0FBQ0Esb0Y7QUFDZTtBQUNkQSxJQUFFLEVBQUZBLFdBRGM7QUFFZCxhQUFXQyxlQUZHO0FBR2QsYUFBV0MsZUFIRyxFIiwiZmlsZSI6IjkzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVuIGZyb20gJy4vZW4uanNvbidcclxuaW1wb3J0IHpoSGFucyBmcm9tICcuL3poLUhhbnMuanNvbidcclxuaW1wb3J0IHpoSGFudCBmcm9tICcuL3poLUhhbnQuanNvbidcclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cdGVuLFxyXG5cdCd6aC1IYW5zJzogemhIYW5zLFxyXG5cdCd6aC1IYW50JzogemhIYW50XHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///93\n");
eval("Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;var _en = _interopRequireDefault(__webpack_require__(/*! ./en.json */ 95));\nvar _zhHans = _interopRequireDefault(__webpack_require__(/*! ./zh-Hans.json */ 96));\nvar _zhHant = _interopRequireDefault(__webpack_require__(/*! ./zh-Hant.json */ 97));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}var _default =\n{\n  en: _en.default,\n  'zh-Hans': _zhHans.default,\n  'zh-Hant': _zhHant.default };exports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXBvcHVwL2NvbXBvbmVudHMvdW5pLXBvcHVwL2kxOG4vaW5kZXguanMiXSwibmFtZXMiOlsiZW4iLCJ6aEhhbnMiLCJ6aEhhbnQiXSwibWFwcGluZ3MiOiJ1RkFBQTtBQUNBO0FBQ0Esb0Y7QUFDZTtBQUNkQSxJQUFFLEVBQUZBLFdBRGM7QUFFZCxhQUFXQyxlQUZHO0FBR2QsYUFBV0MsZUFIRyxFIiwiZmlsZSI6Ijk0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVuIGZyb20gJy4vZW4uanNvbidcclxuaW1wb3J0IHpoSGFucyBmcm9tICcuL3poLUhhbnMuanNvbidcclxuaW1wb3J0IHpoSGFudCBmcm9tICcuL3poLUhhbnQuanNvbidcclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cdGVuLFxyXG5cdCd6aC1IYW5zJzogemhIYW5zLFxyXG5cdCd6aC1IYW50JzogemhIYW50XHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///94\n");
/***/ }),
/* 94 */
/* 95 */
/*!***************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/i18n/en.json ***!
  \***************************************************************************************************/
/*! exports provided: uni-popup.cancel, uni-popup.ok, uni-popup.placeholder, uni-popup.title, uni-popup.shareTitle, default */
/***/ (function(module) {
eval("module.exports = JSON.parse(\"{\\\"uni-popup.cancel\\\":\\\"cancel\\\",\\\"uni-popup.ok\\\":\\\"ok\\\",\\\"uni-popup.placeholder\\\":\\\"pleace enter\\\",\\\"uni-popup.title\\\":\\\"Hint\\\",\\\"uni-popup.shareTitle\\\":\\\"Share to\\\"}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI5NC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///94\n");
eval("module.exports = JSON.parse(\"{\\\"uni-popup.cancel\\\":\\\"cancel\\\",\\\"uni-popup.ok\\\":\\\"ok\\\",\\\"uni-popup.placeholder\\\":\\\"pleace enter\\\",\\\"uni-popup.title\\\":\\\"Hint\\\",\\\"uni-popup.shareTitle\\\":\\\"Share to\\\"}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI5NS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///95\n");
/***/ }),
/* 95 */
/* 96 */
/*!********************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json ***!
  \********************************************************************************************************/
/*! exports provided: uni-popup.cancel, uni-popup.ok, uni-popup.placeholder, uni-popup.title, uni-popup.shareTitle, default */
/***/ (function(module) {
eval("module.exports = JSON.parse(\"{\\\"uni-popup.cancel\\\":\\\"取消\\\",\\\"uni-popup.ok\\\":\\\"确定\\\",\\\"uni-popup.placeholder\\\":\\\"请输入\\\",\\\"uni-popup.title\\\":\\\"提示\\\",\\\"uni-popup.shareTitle\\\":\\\"分享到\\\"}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI5NS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///95\n");
eval("module.exports = JSON.parse(\"{\\\"uni-popup.cancel\\\":\\\"取消\\\",\\\"uni-popup.ok\\\":\\\"确定\\\",\\\"uni-popup.placeholder\\\":\\\"请输入\\\",\\\"uni-popup.title\\\":\\\"提示\\\",\\\"uni-popup.shareTitle\\\":\\\"分享到\\\"}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI5Ni5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///96\n");
/***/ }),
/* 96 */
/* 97 */
/*!********************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json ***!
  \********************************************************************************************************/
/*! exports provided: uni-popup.cancel, uni-popup.ok, uni-popup.placeholder, uni-popup.title, uni-popup.shareTitle, default */
/***/ (function(module) {
eval("module.exports = JSON.parse(\"{\\\"uni-popup.cancel\\\":\\\"取消\\\",\\\"uni-popup.ok\\\":\\\"確定\\\",\\\"uni-popup.placeholder\\\":\\\"請輸入\\\",\\\"uni-popup.title\\\":\\\"提示\\\",\\\"uni-popup.shareTitle\\\":\\\"分享到\\\"}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI5Ni5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///96\n");
eval("module.exports = JSON.parse(\"{\\\"uni-popup.cancel\\\":\\\"取消\\\",\\\"uni-popup.ok\\\":\\\"確定\\\",\\\"uni-popup.placeholder\\\":\\\"請輸入\\\",\\\"uni-popup.title\\\":\\\"提示\\\",\\\"uni-popup.shareTitle\\\":\\\"分享到\\\"}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI5Ny5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///97\n");
/***/ }),
/* 97 */
/* 98 */
/*!*********************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/static/f1.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = \"/static/f1.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Ijk3LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvZjEucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///97\n");
eval("module.exports = \"/static/f1.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Ijk4LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvZjEucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///98\n");
/***/ }),
/* 98 */
/* 99 */
/*!*********************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/static/e1.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = \"/static/e1.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Ijk4LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvZTEucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///98\n");
eval("module.exports = \"/static/e1.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Ijk5LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvZTEucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///99\n");
/***/ }),
/* 99 */
/* 100 */
/*!*****************************************************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/pages/index/index.vue?vue&type=script&lang=js&mpType=page ***!
  \*****************************************************************************************************/
@@ -6990,10 +7557,10 @@
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 100);\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRyQixDQUFnQiw4ckJBQUcsRUFBQyIsImZpbGUiOiI5OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vQVBQL0hCdWlsZGVyWC4zLjQuMTguMjAyMjA2MzAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNi0xIS4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vQVBQL0hCdWlsZGVyWC4zLjQuMTguMjAyMjA2MzAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtMSEuLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///99\n");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../APP/HBuilderX.3.4.18.20220630/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 101);\n/* harmony import */ var _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_1_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_APP_HBuilderX_3_4_18_20220630_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRyQixDQUFnQiw4ckJBQUcsRUFBQyIsImZpbGUiOiIxMDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vQVBQL0hCdWlsZGVyWC4zLjQuMTguMjAyMjA2MzAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTYtMSEuLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9BUFAvSEJ1aWxkZXJYLjMuNC4xOC4yMDIyMDYzMC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uL0FQUC9IQnVpbGRlclguMy40LjE4LjIwMjIwNjMwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS02LTEhLi4vLi4vLi4vLi4vLi4vLi4vQVBQL0hCdWlsZGVyWC4zLjQuMTguMjAyMjA2MzAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vLi4vLi4vLi4vQVBQL0hCdWlsZGVyWC4zLjQuMTguMjAyMjA2MzAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///100\n");
/***/ }),
/* 100 */
/* 101 */
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Workspace/zy/private/Monitor-APP/pages/index/index.vue?vue&type=script&lang=js&mpType=page ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -7001,17 +7568,31 @@
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 _data = _interopRequireDefault(__webpack_require__(/*! @/pages/index/data.json */ 101));\nvar _demodata = _interopRequireDefault(__webpack_require__(/*! @/mockdata/demodata.json */ 78));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 = { data: function data() {return { commonUrl: null, // 通用url\n      show: true, modeClass: 'fade', styles: {}, baseIP: '', baseLedId: '', basePort: '', crnId: '', value: '', xDistance: 0, yDistance: 0, xDuration: 0, yDuration: 0, used: 317, usedPr: 90, stockCount: 0, emptyCount: 0, noneCount: 0, chartsData: { \"Line\": { \"categories\": [], \"series\": [] }, \"Pie\": { \"series\": [{ \"data\": [] }] } }, chartsDataLine1: {}, chartsDataPie2: {}, ringOpts: {}, year: 2022, month: 4, day: 14, hours: 13, minutes: 38, seconds: 13, week: '星期四', ani: '', // move: 'upMove 1.5s 1;',\n      move: false, topMove: 'topUp', floorMove: '', version: '', // newspaper:'拣料出库(4426)\\n源库位:1200101\\n目标站:186\\n1101842-10000-22047518517\\n\\n',\t\n      newspaper: '', errorPaper: '', title: '', staNo: '', matnr: '', maknx: '', count: '', orderNo: null, doneOfTray: '', totalOfTray: '', doneOfUnit: '', totalOfUnit: '', errorMsg: null, width: 'full-width', errorShow: '', pakinShow: '', pakinGun: '', orderShow: false, swiper: 'swiper-here', autoplay: true, // 自动循环\n      interval: 1000, // 调用时长\n      duration: 8000, // 移动速度\n      matList: [], // 订单列表\n      ejectShow: false };}, mounted: function mounted() {var that = this;var BaseIP = uni.getStorageSync('BaseIp');var BaseLedId = uni.getStorageSync('BaseLedId');var BasePort = uni.getStorageSync('BasePort');var BaseCrnId = uni.getStorageSync('BaseCrnId');that.baseIP = BaseIP;that.baseLedId = BaseLedId;that.basePort = BasePort;that.baseCrnId = BaseCrnId;this.getUrl();}, onReady: function onReady() {var _this = this;setInterval(function () {// 获得初始数据\n      _this.initlineChart();_this.initPieChart(); // 主页信息\n      _this.getServerData();_this.getOther(); // 其他信息\n      _this.getDate();_this.getPakin();_this.getError(); // this.getYYY();\n      // this.getEEE();\n      _this.animation();}, 1000);}, methods: { // 获取url\n    getUrl: function getUrl() {this.commonUrl = this.baseHttp + this.baseIP + ':' + this.basePort + this.baseUrl;}, // 获取错误信息\n    getYYY: function getYYY() {var that = this;var result = _data.default.dataEEE; // 测试用 ↓\n      var res = result.data; // 测试用 ↑\n      // 返回结果有值 且值不等于空值 就是有错误信息需要展示\n      if (res.data && res.data !== \"\") {that.errorMsg = res.data;that.errorShow = true;that.move = false; // 显示\n      } else {that.errorPaper = '';that.errorShow = false;if (that.pakinShow) {return;} else {that.move = true; // 隐藏\n        }}}, getEEE: function getEEE() {var that = this;var newsData = '';var str = '';var result = _data.default.dataYYY; // 测试用 ↓\n      var res = result.data; // 测试用 ↑\n      if (res.data && res.data !== null) {if (res.data[0].ioType === 101) {that.title = '全板出库';} else if (res.data[0].ioType === 103) {that.title = '检料出库';}that.staNo = '目标站:' + res.data[0].staNo;that.matnr = '商品编号:' + res.data[0].matDtos[0].matnr;that.maknx = '商品名称:' + res.data[0].matDtos[0].maknx;that.count = '出库数量:' + res.data[0].matDtos[0].count;if (res.data[0].orderNo) {that.orderNo = \"订单号:\" + res.data[0].orderNo;that.orderShow = true;that.width = 'half-width';} else {that.orderNo = null;that.orderShow = false;that.width = 'full-width';}that.doneOfTray = '已出托盘数:' + res.data[0].doneOfTray;that.totalOfTray = '托盘总数量:' + res.data[0].totalOfTray;that.doneOfUnit = '已出箱数:' + res.data[0].doneOfUnit;that.totalOfUnit = '总箱数:' + res.data[0].totalOfUnit;if (that.errorShow) {return;} else {that.newspaper = newsData;that.move = false;}} else {that.move = true;}}, // 获取错误信息\n    getError: function getError() {var that = this;var res;uni.request({ url: that.commonUrl + \"/monitor/led/error\", data: { ledId: that.baseLedId }, method: 'GET', success: function success(result) {res = result.data;if (res.data && res.data !== \"\") {that.errorMsg = res.data;that.errorShow = true;that.move = false; // 显示\n          } else {that.errorShow = false; // if (that.pakinShow) {\n            // \treturn;\n            // } else {\n            // \t// that.move = true // 隐藏\n            // }\n          }} });}, getPakin: function getPakin() {var that = this;that.matList = []; // 清空条码列表\n      var newsData = '';var str = '';var res;uni.request({ url: that.commonUrl + \"/monitor/led\", data: { ledId: that.baseLedId }, method: 'GET', success: function success(result) {res = result.data;if (that.errorShow) {return; // 有错误信息\n          }if (res.data && res.data !== null) {if (res.data[0].ioType === 101) {that.title = '全板出库';} else if (res.data[0].ioType === 103) {that.title = '检料出库';} else that.title = res.data[0].title;that.staNo = '目标站:' + res.data[0].staNo;that.matnr = '商品编号:' + res.data[0].matDtos[0].matnr;that.maknx = '商品名称:' + res.data[0].matDtos[0].maknx;that.count = '出库数量:' + res.data[0].matDtos[0].count;if (res.data[0].orderNo) {that.orderNo = \"订单号:\" + res.data[0].orderNo;that.orderShow = true;that.width = 'half-width';} else {that.orderNo = null;that.orderShow = false;that.width = 'full-width';}that.doneOfTray = '已出托盘数:' + res.data[0].doneOfTray;that.totalOfTray = '托盘总数量:' + res.data[0].totalOfTray;that.doneOfUnit = '已出箱数:' + res.data[0].doneOfUnit;that.totalOfUnit = '总箱数:' + res.data[0].totalOfUnit;that.newspaper = newsData;that.move = false;} else {that.move = true;}} });}, animation: function animation() {__f__(\"log\", this.move, \" at pages/index/index.vue:552\");if (this.move) {this.topMove = 'topUp';this.floorMove = 'floorUp';} else {this.topMove = 'topDown';this.floorMove = 'floorDown';}}, getDateFormat: function getDateFormat(value) {var date = new Date(); // 获取当前时间\n      date.setDate(date.getDate() + value); // 设置天数 -1 天\n      var m = date.getMonth() + 1;var d = date.getDate();var newDate = m + '-' + d;return newDate;}, /*************** 折线图 *****************************************************************************************************/initlineChart: function initlineChart() {var that = this;uni.request({ url: that.commonUrl + \"/monitor/line/charts\", method: 'GET', success: function success(result) {var res = result.data;if (res.code === 200) {that.chartsData.Line.categories = [that.getDateFormat(-11), that.getDateFormat(-10), that.getDateFormat(-9), that.getDateFormat(-8), that.getDateFormat(-7), that.getDateFormat(-6), that.getDateFormat(-5), that.getDateFormat(-4), that.getDateFormat(-3), that.getDateFormat(-2), that.getDateFormat(-1), that.getDateFormat(0)];that.chartsData.Line.series = res.data.rows;}} });}, /*************** 饼图 *****************************************************************************************************/initPieChart: function initPieChart() {var that = this;uni.request({ url: that.commonUrl + \"/monitor/loc/rep\", method: 'GET', success: function success(result) {var res = result.data;if (res.code === 200) {that.chartsData.Pie.series[0].data = res.data.pie;that.stockCount = res.data.stockCunt;that.emptyCount = res.data.emptyCount;that.noneCount = res.data.noneCount;that.used = res.data.used;that.usedPr = res.data.usedPr;}} });}, getOther: function getOther() {var that = this;uni.request({ // http://10.10.0.222:9090/jkwcs/monitor/led?ledId=186\n        url: that.commonUrl + \"/monitor/other\", data: { crnId: that.baseCrnId, ledId: 1 }, success: function success(result) {__f__(\"log\", result, \" at pages/index/index.vue:616\");var res = result.data;if (res.code === 200) {that.xDistance = res.data.xDistance;that.yDistance = res.data.yDistance;that.xDuration = res.data.xDuration;that.yDuration = res.data.yDuration;} else if (res.code === 403) {} else {}} });\n\n    },\n    ejected: function ejected() {\n      this.ejectShow = true;\n    },\n    // 弹出层确认\n    ejectConfirm: function ejectConfirm() {\n      uni.setStorageSync('BaseIp', this.baseIP);\n      uni.setStorageSync('BaseLedId', this.baseLedId);\n      uni.setStorageSync('BasePort', this.basePort);\n      uni.setStorageSync('BaseCrnId', this.baseCrnId);\n      this.getUrl();\n      this.ejectShow = false;\n    },\n    // 弹出层取消\n    ejectClose: function ejectClose() {\n      this.ejectShow = false;\n    },\n    getServerData: function getServerData() {\n      this.chartsDataLine1 = JSON.parse(JSON.stringify(this.chartsData.Line));\n      this.chartsDataPie2 = JSON.parse(JSON.stringify(this.chartsData.Pie));\n    },\n    complete: function complete(e) {\n      __f__(\"log\", \"渲染完成事件\", e, \" at pages/index/index.vue:652\");\n    },\n    getDate: function getDate() {\n      var dt = new Date();\n      this.year = dt.getFullYear();\n      this.month = dt.getMonth() + 1 < 10 ? '0' + (dt.getMonth() + 1) : dt.getMonth() + 1;\n      this.day = dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate();\n      this.hours = dt.getHours() < 10 ? '0' + dt.getHours() : dt.getHours();\n      this.minutes = dt.getMinutes() < 10 ? '0' + dt.getMinutes() : dt.getMinutes();\n      this.seconds = dt.getSeconds() < 10 ? '0' + dt.getSeconds() : dt.getSeconds();\n      this.weeks = dt.getDay();\n      switch (this.weeks) {\n        case 0:this.week = \"星期日\";break;\n        case 1:this.week = \"星期一\";break;\n        case 2:this.week = \"星期二\";break;\n        case 3:this.week = \"星期三\";break;\n        case 4:this.week = \"星期四\";break;\n        case 5:this.week = \"星期五\";break;\n        default:this.week = \"星期六\";}\n\n    } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 10)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbImRhdGEiLCJjb21tb25VcmwiLCJzaG93IiwibW9kZUNsYXNzIiwic3R5bGVzIiwiYmFzZUlQIiwiYmFzZUxlZElkIiwiYmFzZVBvcnQiLCJjcm5JZCIsInZhbHVlIiwieERpc3RhbmNlIiwieURpc3RhbmNlIiwieER1cmF0aW9uIiwieUR1cmF0aW9uIiwidXNlZCIsInVzZWRQciIsInN0b2NrQ291bnQiLCJlbXB0eUNvdW50Iiwibm9uZUNvdW50IiwiY2hhcnRzRGF0YSIsImNoYXJ0c0RhdGFMaW5lMSIsImNoYXJ0c0RhdGFQaWUyIiwicmluZ09wdHMiLCJ5ZWFyIiwibW9udGgiLCJkYXkiLCJob3VycyIsIm1pbnV0ZXMiLCJzZWNvbmRzIiwid2VlayIsImFuaSIsIm1vdmUiLCJ0b3BNb3ZlIiwiZmxvb3JNb3ZlIiwidmVyc2lvbiIsIm5ld3NwYXBlciIsImVycm9yUGFwZXIiLCJ0aXRsZSIsInN0YU5vIiwibWF0bnIiLCJtYWtueCIsImNvdW50Iiwib3JkZXJObyIsImRvbmVPZlRyYXkiLCJ0b3RhbE9mVHJheSIsImRvbmVPZlVuaXQiLCJ0b3RhbE9mVW5pdCIsImVycm9yTXNnIiwid2lkdGgiLCJlcnJvclNob3ciLCJwYWtpblNob3ciLCJwYWtpbkd1biIsIm9yZGVyU2hvdyIsInN3aXBlciIsImF1dG9wbGF5IiwiaW50ZXJ2YWwiLCJkdXJhdGlvbiIsIm1hdExpc3QiLCJlamVjdFNob3ciLCJtb3VudGVkIiwidGhhdCIsIkJhc2VJUCIsInVuaSIsImdldFN0b3JhZ2VTeW5jIiwiQmFzZUxlZElkIiwiQmFzZVBvcnQiLCJCYXNlQ3JuSWQiLCJiYXNlQ3JuSWQiLCJnZXRVcmwiLCJvblJlYWR5Iiwic2V0SW50ZXJ2YWwiLCJpbml0bGluZUNoYXJ0IiwiaW5pdFBpZUNoYXJ0IiwiZ2V0U2VydmVyRGF0YSIsImdldE90aGVyIiwiZ2V0RGF0ZSIsImdldFBha2luIiwiZ2V0RXJyb3IiLCJhbmltYXRpb24iLCJtZXRob2RzIiwiYmFzZUh0dHAiLCJiYXNlVXJsIiwiZ2V0WVlZIiwicmVzdWx0IiwieWNxZGF0YSIsImRhdGFFRUUiLCJyZXMiLCJnZXRFRUUiLCJuZXdzRGF0YSIsInN0ciIsImRhdGFZWVkiLCJpb1R5cGUiLCJtYXREdG9zIiwicmVxdWVzdCIsInVybCIsImxlZElkIiwibWV0aG9kIiwic3VjY2VzcyIsImdldERhdGVGb3JtYXQiLCJkYXRlIiwiRGF0ZSIsInNldERhdGUiLCJtIiwiZ2V0TW9udGgiLCJkIiwibmV3RGF0ZSIsImNvZGUiLCJMaW5lIiwiY2F0ZWdvcmllcyIsInNlcmllcyIsInJvd3MiLCJQaWUiLCJwaWUiLCJzdG9ja0N1bnQiLCJlamVjdGVkIiwiZWplY3RDb25maXJtIiwic2V0U3RvcmFnZVN5bmMiLCJlamVjdENsb3NlIiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiY29tcGxldGUiLCJlIiwiZHQiLCJnZXRGdWxsWWVhciIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJ3ZWVrcyIsImdldERheSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeVNDO0FBQ0EsZ0csOEZBMVNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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aEQsT0FBSCxFQUF4QixHQUF1Q2dELEVBQUUsQ0FBQ2hELE9BQUgsRUFBbEQ7QUFDQSxXQUFLakQsS0FBTCxHQUFhaUcsRUFBRSxDQUFDRSxRQUFILEtBQWdCLEVBQWhCLEdBQXFCLE1BQU1GLEVBQUUsQ0FBQ0UsUUFBSCxFQUEzQixHQUEyQ0YsRUFBRSxDQUFDRSxRQUFILEVBQXhEO0FBQ0EsV0FBS2xHLE9BQUwsR0FBZWdHLEVBQUUsQ0FBQ0csVUFBSCxLQUFrQixFQUFsQixHQUF1QixNQUFNSCxFQUFFLENBQUNHLFVBQUgsRUFBN0IsR0FBK0NILEVBQUUsQ0FBQ0csVUFBSCxFQUE5RDtBQUNBLFdBQUtsRyxPQUFMLEdBQWUrRixFQUFFLENBQUNJLFVBQUgsS0FBa0IsRUFBbEIsR0FBdUIsTUFBTUosRUFBRSxDQUFDSSxVQUFILEVBQTdCLEdBQStDSixFQUFFLENBQUNJLFVBQUgsRUFBOUQ7QUFDQSxXQUFLQyxLQUFMLEdBQWFMLEVBQUUsQ0FBQ00sTUFBSCxFQUFiO0FBQ0EsY0FBUSxLQUFLRCxLQUFiO0FBQ0MsYUFBSyxDQUFMLENBQVEsS0FBS25HLElBQUwsR0FBWSxLQUFaLENBQW1CO0FBQzNCLGFBQUssQ0FBTCxDQUFRLEtBQUtBLElBQUwsR0FBWSxLQUFaLENBQW1CO0FBQzNCLGFBQUssQ0FBTCxDQUFRLEtBQUtBLElBQUwsR0FBWSxLQUFaLENBQW1CO0FBQzNCLGFBQUssQ0FBTCxDQUFRLEtBQUtBLElBQUwsR0FBWSxLQUFaLENBQW1CO0FBQzNCLGFBQUssQ0FBTCxDQUFRLEtBQUtBLElBQUwsR0FBWSxLQUFaLENBQW1CO0FBQzNCLGFBQUssQ0FBTCxDQUFRLEtBQUtBLElBQUwsR0FBWSxLQUFaLENBQW1CO0FBQzNCLGdCQUFVLEtBQUtBLElBQUwsR0FBWSxLQUFaLENBUFg7O0FBU0EsS0EzUU8sRUF6R0ssRSIsImZpbGUiOiIxMDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXHRpbXBvcnQgeWNxZGF0YSBmcm9tICdAL3BhZ2VzL2luZGV4L2RhdGEuanNvbic7XG5cdGltcG9ydCBkZW1vZGF0YSBmcm9tICdAL21vY2tkYXRhL2RlbW9kYXRhLmpzb24nO1xuXHRleHBvcnQgZGVmYXVsdCB7XG5cdFx0ZGF0YSgpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGNvbW1vblVybDpudWxsLCAvLyDpgJrnlKh1cmxcblx0XHRcdFx0c2hvdzogdHJ1ZSxcblx0XHRcdFx0bW9kZUNsYXNzOiAnZmFkZScsXG5cdFx0XHRcdHN0eWxlczoge30sXG5cdFx0XHRcdGJhc2VJUDonJyxcblx0XHRcdFx0YmFzZUxlZElkOicnLFxuXHRcdFx0XHRiYXNlUG9ydDonJyxcblx0XHRcdFx0Y3JuSWQ6JycsXG5cdFx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdFx0eERpc3RhbmNlOiAwLFxuXHRcdFx0XHR5RGlzdGFuY2U6MCxcblx0XHRcdFx0eER1cmF0aW9uOjAsXG5cdFx0XHRcdHlEdXJhdGlvbjowLFxuXHRcdFx0XHR1c2VkOjMxNyxcblx0XHRcdFx0dXNlZFByOiA5MCxcblx0XHRcdFx0c3RvY2tDb3VudDowLFxuXHRcdFx0XHRlbXB0eUNvdW50OjAsXG5cdFx0XHRcdG5vbmVDb3VudDowLFxuXHRcdFx0XHRjaGFydHNEYXRhOiB7XG5cdFx0XHRcdFx0XCJMaW5lXCI6IHtcblx0XHRcdFx0XHRcdFwiY2F0ZWdvcmllc1wiOiBbXSxcblx0XHRcdFx0XHRcdFwic2VyaWVzXCI6IFtdXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcIlBpZVwiOiB7XG5cdFx0XHRcdFx0XHRcInNlcmllc1wiOiBbe1xuXHRcdFx0XHRcdFx0XHRcImRhdGFcIjogW11cblx0XHRcdFx0XHRcdH1dXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0Y2hhcnRzRGF0YUxpbmUxOiB7fSxcblx0XHRcdFx0Y2hhcnRzRGF0YVBpZTI6IHt9LFxuXHRcdFx0XHRyaW5nT3B0czp7fSxcblx0XHRcdFx0eWVhcjoyMDIyLFxuXHRcdFx0XHRtb250aDo0LFxuXHRcdFx0XHRkYXk6MTQsXG5cdFx0XHRcdGhvdXJzOjEzLFxuXHRcdFx0XHRtaW51dGVzOjM4LFxuXHRcdFx0XHRzZWNvbmRzOjEzLFxuXHRcdFx0XHR3ZWVrOifmmJ/mnJ/lm5snLFxuXHRcdFx0XHRhbmk6JycsXG5cdFx0XHRcdC8vIG1vdmU6ICd1cE1vdmUgMS41cyAxOycsXG5cdFx0XHRcdG1vdmU6ZmFsc2UsXG5cdFx0XHRcdHRvcE1vdmU6J3RvcFVwJyxcblx0XHRcdFx0Zmxvb3JNb3ZlOicnLFxuXHRcdFx0XHR2ZXJzaW9uOicnLFxuXHRcdFx0XHQvLyBuZXdzcGFwZXI6J+aLo+aWmeWHuuW6k++8iDQ0MjYpXFxu5rqQ5bqT5L2N77yaMTIwMDEwMVxcbuebruagh+erme+8mjE4NlxcbjExMDE4NDItMTAwMDAtMjIwNDc1MTg1MTdcXG5cXG4nLFx0XG5cdFx0XHRcdG5ld3NwYXBlcjonJyxcblx0XHRcdFx0ZXJyb3JQYXBlcjonJyxcblx0XHRcdFx0dGl0bGU6JycsXG5cdFx0XHRcdHN0YU5vOicnLFxuXHRcdFx0XHRtYXRucjonJyxcblx0XHRcdFx0bWFrbng6JycsXG5cdFx0XHRcdGNvdW50OicnLFxuXHRcdFx0XHRvcmRlck5vOm51bGwsXG5cdFx0XHRcdGRvbmVPZlRyYXk6JycsXG5cdFx0XHRcdHRvdGFsT2ZUcmF5OicnLFxuXHRcdFx0XHRkb25lT2ZVbml0OicnLFxuXHRcdFx0XHR0b3RhbE9mVW5pdDonJyxcblx0XHRcdFx0ZXJyb3JNc2c6bnVsbCxcblx0XHRcdFx0d2lkdGg6J2Z1bGwtd2lkdGgnLFxuXHRcdFx0XHRlcnJvclNob3c6JycsXG5cdFx0XHRcdHBha2luU2hvdzonJyxcblx0XHRcdFx0cGFraW5HdW46JycsXG5cdFx0XHRcdG9yZGVyU2hvdzpmYWxzZSxcblx0XHRcdFx0c3dpcGVyOidzd2lwZXItaGVyZScsXG5cdFx0XHRcdGF1dG9wbGF5OnRydWUsIC8vIOiHquWKqOW+queOr1xuXHRcdFx0XHRpbnRlcnZhbDoxMDAwLCAvLyDosIPnlKjml7bplb9cblx0XHRcdFx0ZHVyYXRpb246ODAwMCwgLy8g56e75Yqo6YCf5bqmXG5cdFx0XHRcdG1hdExpc3Q6W10sIC8vIOiuouWNleWIl+ihqFxuXHRcdFx0XHRlamVjdFNob3c6IGZhbHNlLFxuXHRcdFx0XHRcblx0XHRcdH1cblx0XHR9LFxuXHRcdG1vdW50ZWQoKSB7XG5cdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdGNvbnN0IEJhc2VJUCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZUlwJyk7XG5cdFx0XHRjb25zdCBCYXNlTGVkSWQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VMZWRJZCcpO1xuXHRcdFx0Y29uc3QgQmFzZVBvcnQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VQb3J0Jyk7XG5cdFx0XHRjb25zdCBCYXNlQ3JuSWQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VDcm5JZCcpO1xuXHRcdFx0XHR0aGF0LmJhc2VJUCA9IEJhc2VJUFxuXHRcdFx0XHR0aGF0LmJhc2VMZWRJZCA9IEJhc2VMZWRJZFxuXHRcdFx0XHR0aGF0LmJhc2VQb3J0ID0gQmFzZVBvcnRcblx0XHRcdFx0dGhhdC5iYXNlQ3JuSWQgPSBCYXNlQ3JuSWRcblx0XHRcdHRoaXMuZ2V0VXJsKClcblx0XHR9LFxuXHRcdG9uUmVhZHkoKSB7XG5cdFx0XHRzZXRJbnRlcnZhbCgoKSA9PiB7XG5cdFx0XHRcdC8vIOiOt+W+l+WIneWni+aVsOaNrlxuXHRcdFx0XHR0aGlzLmluaXRsaW5lQ2hhcnQoKTtcblx0XHRcdFx0dGhpcy5pbml0UGllQ2hhcnQoKTtcblx0XHRcdFx0Ly8g5Li76aG15L+h5oGvXG5cdFx0XHRcdHRoaXMuZ2V0U2VydmVyRGF0YSgpO1xuXHRcdFx0XHR0aGlzLmdldE90aGVyKCk7XG5cdFx0XHRcdC8vIOWFtuS7luS/oeaBr1xuXHRcdFx0XHR0aGlzLmdldERhdGUoKTtcblx0XHRcdFx0dGhpcy5nZXRQYWtpbigpO1xuXHRcdFx0XHR0aGlzLmdldEVycm9yKCk7XG5cdFx0XHRcdC8vIHRoaXMuZ2V0WVlZKCk7XG5cdFx0XHRcdC8vIHRoaXMuZ2V0RUVFKCk7XG5cdFx0XHRcdHRoaXMuYW5pbWF0aW9uKCk7XG5cdFx0XHR9LDEwMDApXG5cdFx0fSxcblx0XHRtZXRob2RzOiB7XG5cdFx0XHQvLyDojrflj5Z1cmxcblx0XHRcdGdldFVybCgpIHtcblx0XHRcdFx0dGhpcy5jb21tb25VcmwgPSB0aGlzLmJhc2VIdHRwICsgdGhpcy5iYXNlSVAgKyAnOicgK3RoaXMuYmFzZVBvcnQgKyB0aGlzLmJhc2VVcmxcblx0XHRcdH0sXG5cdFx0XHQvLyDojrflj5bplJnor6/kv6Hmga9cblx0XHRcdGdldFlZWSgpIHtcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0XHRcdHZhciByZXN1bHQgPSB5Y3FkYXRhLmRhdGFFRUVcblx0XHRcdFx0Ly8g5rWL6K+V55SoIOKGk1xuXHRcdFx0XHR2YXJcdHJlcyA9IHJlc3VsdC5kYXRhXG5cdFx0XHRcdC8vIOa1i+ivleeUqCDihpFcblx0XHRcdFx0Ly8g6L+U5Zue57uT5p6c5pyJ5YC8IOS4lOWAvOS4jeetieS6juepuuWAvCDlsLHmmK/mnInplJnor6/kv6Hmga/pnIDopoHlsZXnpLpcblx0XHRcdFx0aWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBcIlwiKSB7XG5cdFx0XHRcdFx0dGhhdC5lcnJvck1zZyA9IHJlcy5kYXRhXG5cdFx0XHRcdFx0dGhhdC5lcnJvclNob3cgPSB0cnVlXG5cdFx0XHRcdFx0dGhhdC5tb3ZlID0gZmFsc2UgLy8g5pi+56S6XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhhdC5lcnJvclBhcGVyID0gJydcblx0XHRcdFx0XHR0aGF0LmVycm9yU2hvdyA9IGZhbHNlXG5cdFx0XHRcdFx0aWYgKHRoYXQucGFraW5TaG93KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoYXQubW92ZSA9IHRydWUgLy8g6ZqQ6JePXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Z2V0RUVFICgpIHtcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0XHRcdHZhciBuZXdzRGF0YSA9ICcnXG5cdFx0XHRcdHZhciBzdHIgPSAnJ1xuXHRcdFx0XHRsZXQgcmVzdWx0ID0geWNxZGF0YS5kYXRhWVlZXG5cdFx0XHRcdFx0XHQvLyDmtYvor5XnlKgg4oaTXG5cdFx0XHRcdGxldFx0cmVzID0gcmVzdWx0LmRhdGFcblx0XHRcdFx0XHRcdC8vIOa1i+ivleeUqCDihpFcblx0XHRcdFx0XHRpZihyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAxKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQudGl0bGUgPSAn5YWo5p2/5Ye65bqTJ1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAzKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQudGl0bGUgPSAn5qOA5paZ5Ye65bqTJ1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhhdC5zdGFObyA9ICfnm67moIfnq5k6JyArIHJlcy5kYXRhWzBdLnN0YU5vXG5cdFx0XHRcdFx0XHR0aGF0Lm1hdG5yID0gJ+WVhuWTgee8luWPt++8micgKyByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1hdG5yXG5cdFx0XHRcdFx0XHR0aGF0Lm1ha254ID0gJ+WVhuWTgeWQjeensO+8micgKyByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1ha254XG5cdFx0XHRcdFx0XHR0aGF0LmNvdW50ID0gJ+WHuuW6k+aVsOmHj++8micgKyByZXMuZGF0YVswXS5tYXREdG9zWzBdLmNvdW50XG5cdFx0XHRcdFx0XHRpZiAocmVzLmRhdGFbMF0ub3JkZXJObykge1xuXHRcdFx0XHRcdFx0XHR0aGF0Lm9yZGVyTm8gPSBcIuiuouWNleWPt++8mlwiICsgcmVzLmRhdGFbMF0ub3JkZXJOb1xuXHRcdFx0XHRcdFx0XHR0aGF0Lm9yZGVyU2hvdyA9IHRydWVcblx0XHRcdFx0XHRcdFx0dGhhdC53aWR0aCA9ICdoYWxmLXdpZHRoJ1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5vcmRlck5vID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0dGhhdC5vcmRlclNob3cgPSBmYWxzZVxuXHRcdFx0XHRcdFx0XHR0aGF0LndpZHRoID0gJ2Z1bGwtd2lkdGgnXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGF0LmRvbmVPZlRyYXkgPSAn5bey5Ye65omY55uY5pWwOicgKyByZXMuZGF0YVswXS5kb25lT2ZUcmF5XG5cdFx0XHRcdFx0XHR0aGF0LnRvdGFsT2ZUcmF5ID0gJ+aJmOebmOaAu+aVsOmHj++8micgKyByZXMuZGF0YVswXS50b3RhbE9mVHJheVxuXHRcdFx0XHRcdFx0dGhhdC5kb25lT2ZVbml0ID0gJ+W3suWHuueuseaVsO+8micgKyByZXMuZGF0YVswXS5kb25lT2ZVbml0XG5cdFx0XHRcdFx0XHR0aGF0LnRvdGFsT2ZVbml0ID0gJ+aAu+euseaVsO+8micgKyByZXMuZGF0YVswXS50b3RhbE9mVW5pdFxuXHRcdFx0XHRcdFx0aWYgKHRoYXQuZXJyb3JTaG93KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoYXQubmV3c3BhcGVyID0gbmV3c0RhdGFcblx0XHRcdFx0XHRcdFx0XHRcdHRoYXQubW92ZSA9IGZhbHNlXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1lbHNlIHtcblx0XHRcdFx0XHRcdHRoYXQubW92ZSA9IHRydWVcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0XG5cdFx0XHR9LFxuXHRcdFx0Ly8g6I635Y+W6ZSZ6K+v5L+h5oGvXG5cdFx0XHRnZXRFcnJvcigpIHtcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0XHRcdHZhciByZXNcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9tb25pdG9yL2xlZC9lcnJvclwiLFxuXHRcdFx0XHRcdGRhdGE6IHtcblx0XHRcdFx0XHRcdGxlZElkOnRoYXQuYmFzZUxlZElkXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRtZXRob2Q6J0dFVCcsXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcblx0XHRcdFx0XHRcdHJlcyA9IHJlc3VsdC5kYXRhIFxuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBcIlwiKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQuZXJyb3JNc2cgPSByZXMuZGF0YVxuXHRcdFx0XHRcdFx0XHR0aGF0LmVycm9yU2hvdyA9IHRydWVcblx0XHRcdFx0XHRcdFx0dGhhdC5tb3ZlID0gZmFsc2UgLy8g5pi+56S6XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGF0LmVycm9yU2hvdyA9IGZhbHNlXG5cdFx0XHRcdFx0XHRcdC8vIGlmICh0aGF0LnBha2luU2hvdykge1xuXHRcdFx0XHRcdFx0XHQvLyBcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0Ly8gfSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gXHQvLyB0aGF0Lm1vdmUgPSB0cnVlIC8vIOmakOiXj1xuXHRcdFx0XHRcdFx0XHQvLyB9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHRnZXRQYWtpbiAoKSB7XG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xuXHRcdFx0XHR0aGF0Lm1hdExpc3QgPSBbXSAvLyDmuIXnqbrmnaHnoIHliJfooahcblx0XHRcdFx0dmFyIG5ld3NEYXRhID0gJydcblx0XHRcdFx0dmFyIHN0ciA9ICcnXG5cdFx0XHRcdGxldCByZXMgXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9sZWRcIixcblx0XHRcdFx0XHRkYXRhOiB7XG5cdFx0XHRcdFx0XHRsZWRJZDp0aGF0LmJhc2VMZWRJZFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bWV0aG9kOidHRVQnLFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XG5cdFx0XHRcdFx0XHRyZXMgPSByZXN1bHQuZGF0YVxuXHRcdFx0XHRcdFx0aWYgKHRoYXQuZXJyb3JTaG93KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybjsgIC8vIOaciemUmeivr+S/oeaBr1xuXHRcdFx0XHRcdFx0fSBcblx0XHRcdFx0XHRcdGlmKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwMSkge1xuXHRcdFx0XHRcdFx0XHRcdHRoYXQudGl0bGUgPSAn5YWo5p2/5Ye65bqTJ1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDMpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LnRpdGxlID0gJ+ajgOaWmeWHuuW6kydcblx0XHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdHRoYXQudGl0bGUgPSByZXMuZGF0YVswXS50aXRsZVxuXHRcdFx0XHRcdFx0XHR0aGF0LnN0YU5vID0gJ+ebruagh+ermTonICsgcmVzLmRhdGFbMF0uc3RhTm9cblx0XHRcdFx0XHRcdFx0dGhhdC5tYXRuciA9ICfllYblk4HnvJblj7fvvJonICsgcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYXRuclxuXHRcdFx0XHRcdFx0XHR0aGF0Lm1ha254ID0gJ+WVhuWTgeWQjeensO+8micgKyByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1ha254XG5cdFx0XHRcdFx0XHRcdHRoYXQuY291bnQgPSAn5Ye65bqT5pWw6YeP77yaJyArIHJlcy5kYXRhWzBdLm1hdER0b3NbMF0uY291bnRcblx0XHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhWzBdLm9yZGVyTm8pIHtcblx0XHRcdFx0XHRcdFx0XHR0aGF0Lm9yZGVyTm8gPSBcIuiuouWNleWPt++8mlwiICsgcmVzLmRhdGFbMF0ub3JkZXJOb1xuXHRcdFx0XHRcdFx0XHRcdHRoYXQub3JkZXJTaG93ID0gdHJ1ZVxuXHRcdFx0XHRcdFx0XHRcdHRoYXQud2lkdGggPSAnaGFsZi13aWR0aCdcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR0aGF0Lm9yZGVyTm8gPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRcdHRoYXQub3JkZXJTaG93ID0gZmFsc2Vcblx0XHRcdFx0XHRcdFx0XHR0aGF0LndpZHRoID0gJ2Z1bGwtd2lkdGgnXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGhhdC5kb25lT2ZUcmF5ID0gJ+W3suWHuuaJmOebmOaVsDonICsgcmVzLmRhdGFbMF0uZG9uZU9mVHJheVxuXHRcdFx0XHRcdFx0XHR0aGF0LnRvdGFsT2ZUcmF5ID0gJ+aJmOebmOaAu+aVsOmHj++8micgKyByZXMuZGF0YVswXS50b3RhbE9mVHJheVxuXHRcdFx0XHRcdFx0XHR0aGF0LmRvbmVPZlVuaXQgPSAn5bey5Ye6566x5pWw77yaJyArIHJlcy5kYXRhWzBdLmRvbmVPZlVuaXRcblx0XHRcdFx0XHRcdFx0dGhhdC50b3RhbE9mVW5pdCA9ICfmgLvnrrHmlbDvvJonICsgcmVzLmRhdGFbMF0udG90YWxPZlVuaXRcblx0XHRcdFx0XHRcdFx0dGhhdC5uZXdzcGFwZXIgPSBuZXdzRGF0YVxuXHRcdFx0XHRcdFx0XHR0aGF0Lm1vdmUgPSBmYWxzZVxuXHRcdFx0XHRcdFx0fWVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGF0Lm1vdmUgPSB0cnVlXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHRhbmltYXRpb24oKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMubW92ZSk7XG5cdFx0XHRcdGlmICh0aGlzLm1vdmUpIHsgXG5cdFx0XHRcdFx0dGhpcy50b3BNb3ZlID0gJ3RvcFVwJ1xuXHRcdFx0XHRcdHRoaXMuZmxvb3JNb3ZlID0gJ2Zsb29yVXAnXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy50b3BNb3ZlID0gJ3RvcERvd24nXG5cdFx0XHRcdFx0dGhpcy5mbG9vck1vdmUgPSAnZmxvb3JEb3duJ1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Z2V0RGF0ZUZvcm1hdCh2YWx1ZSkge1xuXHRcdFx0XHR2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7Ly8g6I635Y+W5b2T5YmN5pe26Ze0XG5cdFx0XHRcdGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIHZhbHVlKTsvLyDorr7nva7lpKnmlbAgLTEg5aSpXG5cdFx0XHRcdHZhciBtID0gZGF0ZS5nZXRNb250aCgpICsgMVxuXHRcdFx0XHR2YXIgZCA9IGRhdGUuZ2V0RGF0ZSgpXG5cdFx0XHRcdHZhciBuZXdEYXRlID0gbSArICctJyArIGRcblx0XHRcdFx0cmV0dXJuIG5ld0RhdGVcblx0XHRcdH0sXG4vKioqKioqKioqKioqKioqIOaKmOe6v+WbviAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblx0XHRcdGluaXRsaW5lQ2hhcnQoKSB7XG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xuXHRcdFx0XHR1bmkucmVxdWVzdCh7XG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbGluZS9jaGFydHNcIixcblx0XHRcdFx0XHRtZXRob2Q6J0dFVCcsXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcblx0XHRcdFx0XHRcdHZhciByZXMgPSByZXN1bHQuZGF0YVxuXHRcdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5jaGFydHNEYXRhLkxpbmUuY2F0ZWdvcmllcyA9IFtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmdldERhdGVGb3JtYXQoLTExKSx0aGF0LmdldERhdGVGb3JtYXQoLTEwKSx0aGF0LmdldERhdGVGb3JtYXQoLTkpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtOCksXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5nZXREYXRlRm9ybWF0KC03KSx0aGF0LmdldERhdGVGb3JtYXQoLTYpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNSksdGhhdC5nZXREYXRlRm9ybWF0KC00KSxcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmdldERhdGVGb3JtYXQoLTMpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMiksdGhhdC5nZXREYXRlRm9ybWF0KC0xKSx0aGF0LmdldERhdGVGb3JtYXQoMCksXVxuXHRcdFx0XHRcdFx0XHR0aGF0LmNoYXJ0c0RhdGEuTGluZS5zZXJpZXMgPSByZXMuZGF0YS5yb3dzXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcbi8qKioqKioqKioqKioqKiog6aW85Zu+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXHRcdFx0aW5pdFBpZUNoYXJ0KCkge1xuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9tb25pdG9yL2xvYy9yZXBcIixcblx0XHRcdFx0XHRtZXRob2Q6J0dFVCcsXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcblx0XHRcdFx0XHRcdHZhciByZXMgPSByZXN1bHQuZGF0YVxuXHRcdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5jaGFydHNEYXRhLlBpZS5zZXJpZXNbMF0uZGF0YSA9IHJlcy5kYXRhLnBpZVxuXHRcdFx0XHRcdFx0XHR0aGF0LnN0b2NrQ291bnQgPSByZXMuZGF0YS5zdG9ja0N1bnRcblx0XHRcdFx0XHRcdFx0dGhhdC5lbXB0eUNvdW50ID0gcmVzLmRhdGEuZW1wdHlDb3VudFxuXHRcdFx0XHRcdFx0XHR0aGF0Lm5vbmVDb3VudCA9IHJlcy5kYXRhLm5vbmVDb3VudFxuXHRcdFx0XHRcdFx0XHR0aGF0LnVzZWQgPSByZXMuZGF0YS51c2VkXG5cdFx0XHRcdFx0XHRcdHRoYXQudXNlZFByID0gcmVzLmRhdGEudXNlZFByXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblx0XHRcdGdldE90aGVyKCkge1xuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdC8vIGh0dHA6Ly8xMC4xMC4wLjIyMjo5MDkwL2prd2NzL21vbml0b3IvbGVkP2xlZElkPTE4NlxuXHRcdFx0XHRcdHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9tb25pdG9yL290aGVyXCIsXG5cdFx0XHRcdFx0ZGF0YToge1xuXHRcdFx0XHRcdFx0Y3JuSWQ6IHRoYXQuYmFzZUNybklkLCBcblx0XHRcdFx0XHRcdGxlZElkOiAxLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlc3VsdCk7XG5cdFx0XHRcdFx0XHR2YXIgcmVzID0gcmVzdWx0LmRhdGFcblx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQueERpc3RhbmNlID0gcmVzLmRhdGEueERpc3RhbmNlXG5cdFx0XHRcdFx0XHRcdHRoYXQueURpc3RhbmNlID0gcmVzLmRhdGEueURpc3RhbmNlXG5cdFx0XHRcdFx0XHRcdHRoYXQueER1cmF0aW9uID0gcmVzLmRhdGEueER1cmF0aW9uXG5cdFx0XHRcdFx0XHRcdHRoYXQueUR1cmF0aW9uID0gcmVzLmRhdGEueUR1cmF0aW9uXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHJlcy5jb2RlID09PSA0MDMpIHtcblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0ZWplY3RlZCAoKSB7XG5cdFx0XHRcdHRoaXMuZWplY3RTaG93ID0gdHJ1ZVxuXHRcdFx0fSxcblx0XHRcdC8vIOW8ueWHuuWxguehruiupFxuXHRcdFx0ZWplY3RDb25maXJtKCkge1xuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VJcCcsIHRoaXMuYmFzZUlQKTtcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdCYXNlTGVkSWQnLCB0aGlzLmJhc2VMZWRJZCk7XG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZVBvcnQnLHRoaXMuYmFzZVBvcnQpO1xuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VDcm5JZCcsdGhpcy5iYXNlQ3JuSWQpO1xuXHRcdFx0XHR0aGlzLmdldFVybCgpXG5cdFx0XHRcdHRoaXMuZWplY3RTaG93ID0gZmFsc2Vcblx0XHRcdH0sXG5cdFx0XHQvLyDlvLnlh7rlsYLlj5bmtohcblx0XHRcdGVqZWN0Q2xvc2UoKSB7XG5cdFx0XHRcdHRoaXMuZWplY3RTaG93ID0gZmFsc2Vcblx0XHRcdH0sXG5cdFx0XHRnZXRTZXJ2ZXJEYXRhKCkge1xuXHRcdFx0XHR0aGlzLmNoYXJ0c0RhdGFMaW5lMT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY2hhcnRzRGF0YS5MaW5lKSlcblx0XHRcdFx0dGhpcy5jaGFydHNEYXRhUGllMj1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY2hhcnRzRGF0YS5QaWUpKVxuXHRcdFx0fSxcblx0XHRcdGNvbXBsZXRlKGUpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coXCLmuLLmn5PlrozmiJDkuovku7ZcIixlKTtcblx0XHRcdH0sXG5cdFx0XHRnZXREYXRlKCkge1xuXHRcdFx0XHR2YXIgZHQgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHR0aGlzLnllYXIgPSBkdC5nZXRGdWxsWWVhcigpO1xuXHRcdFx0XHR0aGlzLm1vbnRoID0gKGR0LmdldE1vbnRoKCkrMSkgPCAxMCA/ICcwJysgKGR0LmdldE1vbnRoKCkrMSkgOiAoZHQuZ2V0TW9udGgoKSsxKTtcblx0XHRcdFx0dGhpcy5kYXkgPSBkdC5nZXREYXRlKCkgPCAxMCA/ICcwJytkdC5nZXREYXRlKCkgOiBkdC5nZXREYXRlKCk7XG5cdFx0XHRcdHRoaXMuaG91cnMgPSBkdC5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkdC5nZXRIb3VycygpIDogZHQuZ2V0SG91cnMoKTtcblx0XHRcdFx0dGhpcy5taW51dGVzID0gZHQuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBkdC5nZXRNaW51dGVzKCkgOiBkdC5nZXRNaW51dGVzKCk7XG5cdFx0XHRcdHRoaXMuc2Vjb25kcyA9IGR0LmdldFNlY29uZHMoKSA8IDEwID8gJzAnICsgZHQuZ2V0U2Vjb25kcygpIDogZHQuZ2V0U2Vjb25kcygpOyBcblx0XHRcdFx0dGhpcy53ZWVrcyA9IGR0LmdldERheSgpOyBcblx0XHRcdFx0c3dpdGNoICh0aGlzLndlZWtzKSB7XG5cdFx0XHRcdFx0Y2FzZSAwOiB0aGlzLndlZWsgPSBcIuaYn+acn+aXpVwiOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDE6IHRoaXMud2VlayA9IFwi5pif5pyf5LiAXCI7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgMjogdGhpcy53ZWVrID0gXCLmmJ/mnJ/kuoxcIjsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAzOiB0aGlzLndlZWsgPSBcIuaYn+acn+S4iVwiOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDQ6IHRoaXMud2VlayA9IFwi5pif5pyf5ZubXCI7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgNTogdGhpcy53ZWVrID0gXCLmmJ/mnJ/kupRcIjsgYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdCA6IHRoaXMud2VlayA9IFwi5pif5pyf5YWtXCI7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0fVxuXHR9XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///100\n");
<<<<<<< HEAD
eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 _data = _interopRequireDefault(__webpack_require__(/*! @/pages/index/data.json */ 100));\nvar _demodata = _interopRequireDefault(__webpack_require__(/*! @/mockdata/demodata.json */ 101));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 = { data: function data() {return { commonUrl: null, // 通用url\n      show: true, modeClass: 'fade', styles: {}, baseIP: '', baseLedId: '', basePort: '', crnId: '', value: '', xDistance: 0, yDistance: 0, xDuration: 0, yDuration: 0, used: 317, usedPr: 90, stockCount: 0, emptyCount: 0, noneCount: 0, chartsData: { \"Line\": { \"categories\": [], \"series\": [] }, \"Pie\": { \"series\": [{ \"data\": [] }] } }, chartsDataLine1: {}, chartsDataPie2: {}, ringOpts: {}, year: 2022, month: 4, day: 14, hours: 13, minutes: 38, seconds: 13, week: '星期四', ani: '', // move: 'upMove 1.5s 1;',\n      move: false, topMove: 'topUp', floorMove: '', version: '', // newspaper:'拣料出库(4426)\\n源库位:1200101\\n目标站:186\\n1101842-10000-22047518517\\n\\n',\t\n      newspaper: '', errorPaper: '', title: '', staNo: '', matnr: '', maknx: '', count: '', orderNo: null, doneOfTray: '', totalOfTray: '', doneOfUnit: '', totalOfUnit: '', errorMsg: null, width: 'full-width', errorShow: '', pakinShow: '', pakinGun: '', orderShow: false, swiper: 'swiper-here', autoplay: true, // 自动循环\n      interval: 1000, // 调用时长\n      duration: 8000, // 移动速度\n      matList: [], // 订单列表\n      ejectShow: false };}, mounted: function mounted() {var that = this;var BaseIP = uni.getStorageSync('BaseIp');var BaseLedId = uni.getStorageSync('BaseLedId');var BasePort = uni.getStorageSync('BasePort');var BaseCrnId = uni.getStorageSync('BaseCrnId');that.baseIP = BaseIP;that.baseLedId = BaseLedId;that.basePort = BasePort;that.baseCrnId = BaseCrnId;this.getUrl();}, onLoad: function onLoad() {}, onReady: function onReady() {var _this = this;setInterval(function () {// 获得初始数据\n      // this.initlineChart();\n      _this.initPieChart(); // 主页信息\n      _this.getServerData();_this.getOther(); // 其他信息\n      _this.getDate();_this.getPakin();_this.getError(); // this.getYYY();\n      // this.getEEE();\n      // this.animation\n      _this.getUrl();}, 1000);}, methods: { // 获取url\n    getUrl: function getUrl() {this.commonUrl = this.baseHttp + this.baseIP + ':' + this.basePort + this.baseUrl;this.chartsDataLine1 = JSON.parse(JSON.stringify(_demodata.default.Line));}, // 获取错误信息\n    getYYY: function getYYY() {var that = this;var result = _data.default.dataEEE; // 测试用 ↓\n      var res = result.data; // 测试用 ↑\n      // 返回结果有值 且值不等于空值 就是有错误信息需要展示\n      if (res.data && res.data !== \"\") {that.errorMsg = res.data;that.errorShow = true;that.move = false; // 显示\n      } else {that.errorPaper = '';that.errorShow = false;if (that.pakinShow) {return;} else {that.move = true; // 隐藏\n        }}}, getEEE: function getEEE() {var that = this;var newsData = '';var str = '';var result = _data.default.dataYYY; // 测试用 ↓\n      var res = result.data; // 测试用 ↑\n      if (res.data && res.data !== null) {if (res.data[0].ioType === 101) {that.title = '全板出库';} else if (res.data[0].ioType === 103) {that.title = '检料出库';}that.staNo = '目标站:' + res.data[0].staNo;that.matnr = '商品编号:' + res.data[0].matDtos[0].matnr;that.maknx = '商品名称:' + res.data[0].matDtos[0].maknx;that.count = '出库数量:' + res.data[0].matDtos[0].count;if (res.data[0].orderNo) {that.orderNo = \"订单号:\" + res.data[0].orderNo;that.orderShow = true;that.width = 'half-width';} else {that.orderNo = null;that.orderShow = false;that.width = 'full-width';}that.doneOfTray = '已出托盘数:' + res.data[0].doneOfTray;that.totalOfTray = '托盘总数量:' + res.data[0].totalOfTray;that.doneOfUnit = '已出箱数:' + res.data[0].doneOfUnit;that.totalOfUnit = '总箱数:' + res.data[0].totalOfUnit;if (that.errorShow) {return;} else {that.newspaper = newsData;that.move = false;}} else {that.move = true;}}, // 获取错误信息\n    getError: function getError() {var that = this;var res;uni.request({ url: that.commonUrl + \"/monitor/led/error\", data: { ledId: that.baseLedId }, method: 'GET', success: function success(result) {res = result.data;if (res.data && res.data !== \"\") {that.errorMsg = res.data;that.errorShow = true;that.move = false; // 显示\n          } else {that.errorShow = false; // if (that.pakinShow) {\n            // \treturn;\n            // } else {\n            // \t// that.move = true // 隐藏\n            // }\n          }} });}, getPakin: function getPakin() {var that = this;that.matList = []; // 清空条码列表\n      var newsData = '';var str = '';var res;uni.request({ url: that.commonUrl + \"/monitor/led\", data: { ledId: that.baseLedId }, method: 'GET', success: function success(result) {res = result.data;if (that.errorShow) {return; // 有错误信息\n          }if (res.data && res.data !== null) {if (res.data[0].ioType === 101) {that.title = '全板出库';} else if (res.data[0].ioType === 103) {that.title = '检料出库';} else that.title = res.data[0].title;that.staNo = '目标站:' + res.data[0].staNo;that.matnr = '商品编号:' + res.data[0].matDtos[0].matnr;that.maknx = '商品名称:' + res.data[0].matDtos[0].maknx;that.count = '出库数量:' + res.data[0].matDtos[0].count;if (res.data[0].orderNo) {that.orderNo = \"订单号:\" + res.data[0].orderNo;that.orderShow = true;that.width = 'half-width';} else {that.orderNo = null;that.orderShow = false;that.width = 'full-width';}that.doneOfTray = '已出托盘数:' + res.data[0].doneOfTray;that.totalOfTray = '托盘总数量:' + res.data[0].totalOfTray;that.doneOfUnit = '已出箱数:' + res.data[0].doneOfUnit;that.totalOfUnit = '总箱数:' + res.data[0].totalOfUnit;that.newspaper = newsData;that.move = false;} else {that.move = true;}} });}, animation: function animation() {__f__(\"log\", this.move, \" at pages/index/index.vue:558\");if (this.move) {this.topMove = 'topUp';this.floorMove = 'floorUp';} else {this.topMove = 'topDown';this.floorMove = 'floorDown';}}, getDateFormat: function getDateFormat(value) {var date = new Date(); // 获取当前时间\n      date.setDate(date.getDate() + value); // 设置天数 -1 天\n      var m = date.getMonth() + 1;var d = date.getDate();var newDate = m + '-' + d;return newDate;}, /*************** 折线图 *****************************************************************************************************/initlineChart: function initlineChart() {var that = this;uni.request({ url: that.commonUrl + \"/monitor/line/charts\", method: 'GET', success: function success(result) {var res = result.data;if (res.code === 200) {that.chartsData.Line.categories = [that.getDateFormat(-11), that.getDateFormat(-10), that.getDateFormat(-9), that.getDateFormat(-8), that.getDateFormat(-7), that.getDateFormat(-6), that.getDateFormat(-5), that.getDateFormat(-4), that.getDateFormat(-3), that.getDateFormat(-2), that.getDateFormat(-1), that.getDateFormat(0)];that.chartsData.Line.series = res.data.rows;}} });}, /*************** 饼图 *****************************************************************************************************/initPieChart: function initPieChart() {var that = this;uni.request({ url: that.commonUrl + \"/monitor/loc/rep\", method: 'GET', success: function success(result) {var res = result.data;if (res.code === 200) {that.chartsData.Pie.series[0].data = res.data.pie;that.stockCount = res.data.stockCunt;that.emptyCount = res.data.emptyCount;that.noneCount = res.data.noneCount;that.used = res.data.used;that.usedPr = res.data.usedPr;}} });}, getOther: function getOther() {var that = this;uni.request({ // http://10.10.0.222:9090/jkwcs/monitor/led?ledId=186\n        url: that.commonUrl + \"/monitor/other\", data: { crnId: that.baseCrnId, ledId: 1 }, success: function success(result) {__f__(\"log\", result, \" at pages/index/index.vue:622\");var res = result.data;if (res.code === 200) {that.xDistance = res.data.xDistance;that.yDistance = res.data.yDistance;that.xDuration = res.data.xDuration;that.yDuration = res.data.yDuration;} else if (res.code === 403) {} else {\n          }\n        } });\n\n    },\n    ejected: function ejected() {\n      this.ejectShow = true;\n    },\n    // 弹出层确认\n    ejectConfirm: function ejectConfirm() {\n      uni.setStorageSync('BaseIp', this.baseIP);\n      uni.setStorageSync('BaseLedId', this.baseLedId);\n      uni.setStorageSync('BasePort', this.basePort);\n      uni.setStorageSync('BaseCrnId', this.baseCrnId);\n      this.getUrl();\n      this.ejectShow = false;\n    },\n    // 弹出层取消\n    ejectClose: function ejectClose() {\n      this.ejectShow = false;\n    },\n    getServerData: function getServerData() {\n      this.chartsDataLine1 = JSON.parse(JSON.stringify(this.chartsData.Line));\n      this.chartsDataPie2 = JSON.parse(JSON.stringify(this.chartsData.Pie));\n    },\n    complete: function complete(e) {\n      __f__(\"log\", \"渲染完成事件\", e, \" at pages/index/index.vue:658\");\n    },\n    getDate: function getDate() {\n      var dt = new Date();\n      this.year = dt.getFullYear();\n      this.month = dt.getMonth() + 1 < 10 ? '0' + (dt.getMonth() + 1) : dt.getMonth() + 1;\n      this.day = dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate();\n      this.hours = dt.getHours() < 10 ? '0' + dt.getHours() : dt.getHours();\n      this.minutes = dt.getMinutes() < 10 ? '0' + dt.getMinutes() : dt.getMinutes();\n      this.seconds = dt.getSeconds() < 10 ? '0' + dt.getSeconds() : dt.getSeconds();\n      this.weeks = dt.getDay();\n      switch (this.weeks) {\n        case 0:this.week = \"星期日\";break;\n        case 1:this.week = \"星期一\";break;\n        case 2:this.week = \"星期二\";break;\n        case 3:this.week = \"星期三\";break;\n        case 4:this.week = \"星期四\";break;\n        case 5:this.week = \"星期五\";break;\n        default:this.week = \"星期六\";}\n\n    } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 10)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbImRhdGEiLCJjb21tb25VcmwiLCJzaG93IiwibW9kZUNsYXNzIiwic3R5bGVzIiwiYmFzZUlQIiwiYmFzZUxlZElkIiwiYmFzZVBvcnQiLCJjcm5JZCIsInZhbHVlIiwieERpc3RhbmNlIiwieURpc3RhbmNlIiwieER1cmF0aW9uIiwieUR1cmF0aW9uIiwidXNlZCIsInVzZWRQciIsInN0b2NrQ291bnQiLCJlbXB0eUNvdW50Iiwibm9uZUNvdW50IiwiY2hhcnRzRGF0YSIsImNoYXJ0c0RhdGFMaW5lMSIsImNoYXJ0c0RhdGFQaWUyIiwicmluZ09wdHMiLCJ5ZWFyIiwibW9udGgiLCJkYXkiLCJob3VycyIsIm1pbnV0ZXMiLCJzZWNvbmRzIiwid2VlayIsImFuaSIsIm1vdmUiLCJ0b3BNb3ZlIiwiZmxvb3JNb3ZlIiwidmVyc2lvbiIsIm5ld3NwYXBlciIsImVycm9yUGFwZXIiLCJ0aXRsZSIsInN0YU5vIiwibWF0bnIiLCJtYWtueCIsImNvdW50Iiwib3JkZXJObyIsImRvbmVPZlRyYXkiLCJ0b3RhbE9mVHJheSIsImRvbmVPZlVuaXQiLCJ0b3RhbE9mVW5pdCIsImVycm9yTXNnIiwid2lkdGgiLCJlcnJvclNob3ciLCJwYWtpblNob3ciLCJwYWtpbkd1biIsIm9yZGVyU2hvdyIsInN3aXBlciIsImF1dG9wbGF5IiwiaW50ZXJ2YWwiLCJkdXJhdGlvbiIsIm1hdExpc3QiLCJlamVjdFNob3ciLCJtb3VudGVkIiwidGhhdCIsIkJhc2VJUCIsInVuaSIsImdldFN0b3JhZ2VTeW5jIiwiQmFzZUxlZElkIiwiQmFzZVBvcnQiLCJCYXNlQ3JuSWQiLCJiYXNlQ3JuSWQiLCJnZXRVcmwiLCJvbkxvYWQiLCJvblJlYWR5Iiwic2V0SW50ZXJ2YWwiLCJpbml0UGllQ2hhcnQiLCJnZXRTZXJ2ZXJEYXRhIiwiZ2V0T3RoZXIiLCJnZXREYXRlIiwiZ2V0UGFraW4iLCJnZXRFcnJvciIsIm1ldGhvZHMiLCJiYXNlSHR0cCIsImJhc2VVcmwiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJkZW1vZGF0YSIsIkxpbmUiLCJnZXRZWVkiLCJyZXN1bHQiLCJ5Y3FkYXRhIiwiZGF0YUVFRSIsInJlcyIsImdldEVFRSIsIm5ld3NEYXRhIiwic3RyIiwiZGF0YVlZWSIsImlvVHlwZSIsIm1hdER0b3MiLCJyZXF1ZXN0IiwidXJsIiwibGVkSWQiLCJtZXRob2QiLCJzdWNjZXNzIiwiYW5pbWF0aW9uIiwiZ2V0RGF0ZUZvcm1hdCIsImRhdGUiLCJEYXRlIiwic2V0RGF0ZSIsIm0iLCJnZXRNb250aCIsImQiLCJuZXdEYXRlIiwiaW5pdGxpbmVDaGFydCIsImNvZGUiLCJjYXRlZ29yaWVzIiwic2VyaWVzIiwicm93cyIsIlBpZSIsInBpZSIsInN0b2NrQ3VudCIsImVqZWN0ZWQiLCJlamVjdENvbmZpcm0iLCJzZXRTdG9yYWdlU3luYyIsImVqZWN0Q2xvc2UiLCJjb21wbGV0ZSIsImUiLCJkdCIsImdldEZ1bGxZZWFyIiwiZ2V0SG91cnMiLCJnZXRNaW51dGVzIiwiZ2V0U2Vjb25kcyIsIndlZWtzIiwiZ2V0RGF5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMFNDO0FBQ0EsaUcsOEZBM1NEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QSxJQUFMLEdBQVksS0FBWixDQVBYOztBQVNBLEtBNVFPLEVBN0dLLEUiLCJmaWxlIjoiOTkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cblx0aW1wb3J0IHljcWRhdGEgZnJvbSAnQC9wYWdlcy9pbmRleC9kYXRhLmpzb24nO1xuXHRpbXBvcnQgZGVtb2RhdGEgZnJvbSAnQC9tb2NrZGF0YS9kZW1vZGF0YS5qc29uJztcblx0ZXhwb3J0IGRlZmF1bHQge1xuXHRcdGRhdGEoKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRjb21tb25Vcmw6bnVsbCwgLy8g6YCa55SodXJsXG5cdFx0XHRcdHNob3c6IHRydWUsXG5cdFx0XHRcdG1vZGVDbGFzczogJ2ZhZGUnLFxuXHRcdFx0XHRzdHlsZXM6IHt9LFxuXHRcdFx0XHRiYXNlSVA6JycsXG5cdFx0XHRcdGJhc2VMZWRJZDonJyxcblx0XHRcdFx0YmFzZVBvcnQ6JycsXG5cdFx0XHRcdGNybklkOicnLFxuXHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdHhEaXN0YW5jZTogMCxcblx0XHRcdFx0eURpc3RhbmNlOjAsXG5cdFx0XHRcdHhEdXJhdGlvbjowLFxuXHRcdFx0XHR5RHVyYXRpb246MCxcblx0XHRcdFx0dXNlZDozMTcsXG5cdFx0XHRcdHVzZWRQcjogOTAsXG5cdFx0XHRcdHN0b2NrQ291bnQ6MCxcblx0XHRcdFx0ZW1wdHlDb3VudDowLFxuXHRcdFx0XHRub25lQ291bnQ6MCxcblx0XHRcdFx0Y2hhcnRzRGF0YToge1xuXHRcdFx0XHRcdFwiTGluZVwiOiB7XG5cdFx0XHRcdFx0XHRcImNhdGVnb3JpZXNcIjogW10sXG5cdFx0XHRcdFx0XHRcInNlcmllc1wiOiBbXVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XCJQaWVcIjoge1xuXHRcdFx0XHRcdFx0XCJzZXJpZXNcIjogW3tcblx0XHRcdFx0XHRcdFx0XCJkYXRhXCI6IFtdXG5cdFx0XHRcdFx0XHR9XVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGNoYXJ0c0RhdGFMaW5lMToge30sXG5cdFx0XHRcdGNoYXJ0c0RhdGFQaWUyOiB7fSxcblx0XHRcdFx0cmluZ09wdHM6e30sXG5cdFx0XHRcdHllYXI6MjAyMixcblx0XHRcdFx0bW9udGg6NCxcblx0XHRcdFx0ZGF5OjE0LFxuXHRcdFx0XHRob3VyczoxMyxcblx0XHRcdFx0bWludXRlczozOCxcblx0XHRcdFx0c2Vjb25kczoxMyxcblx0XHRcdFx0d2Vlazon5pif5pyf5ZubJyxcblx0XHRcdFx0YW5pOicnLFxuXHRcdFx0XHQvLyBtb3ZlOiAndXBNb3ZlIDEuNXMgMTsnLFxuXHRcdFx0XHRtb3ZlOmZhbHNlLFxuXHRcdFx0XHR0b3BNb3ZlOid0b3BVcCcsXG5cdFx0XHRcdGZsb29yTW92ZTonJyxcblx0XHRcdFx0dmVyc2lvbjonJyxcblx0XHRcdFx0Ly8gbmV3c3BhcGVyOifmi6Pmlpnlh7rlupPvvIg0NDI2KVxcbua6kOW6k+S9je+8mjEyMDAxMDFcXG7nm67moIfnq5nvvJoxODZcXG4xMTAxODQyLTEwMDAwLTIyMDQ3NTE4NTE3XFxuXFxuJyxcdFxuXHRcdFx0XHRuZXdzcGFwZXI6JycsXG5cdFx0XHRcdGVycm9yUGFwZXI6JycsXG5cdFx0XHRcdHRpdGxlOicnLFxuXHRcdFx0XHRzdGFObzonJyxcblx0XHRcdFx0bWF0bnI6JycsXG5cdFx0XHRcdG1ha254OicnLFxuXHRcdFx0XHRjb3VudDonJyxcblx0XHRcdFx0b3JkZXJObzpudWxsLFxuXHRcdFx0XHRkb25lT2ZUcmF5OicnLFxuXHRcdFx0XHR0b3RhbE9mVHJheTonJyxcblx0XHRcdFx0ZG9uZU9mVW5pdDonJyxcblx0XHRcdFx0dG90YWxPZlVuaXQ6JycsXG5cdFx0XHRcdGVycm9yTXNnOm51bGwsXG5cdFx0XHRcdHdpZHRoOidmdWxsLXdpZHRoJyxcblx0XHRcdFx0ZXJyb3JTaG93OicnLFxuXHRcdFx0XHRwYWtpblNob3c6JycsXG5cdFx0XHRcdHBha2luR3VuOicnLFxuXHRcdFx0XHRvcmRlclNob3c6ZmFsc2UsXG5cdFx0XHRcdHN3aXBlcjonc3dpcGVyLWhlcmUnLFxuXHRcdFx0XHRhdXRvcGxheTp0cnVlLCAvLyDoh6rliqjlvqrnjq9cblx0XHRcdFx0aW50ZXJ2YWw6MTAwMCwgLy8g6LCD55So5pe26ZW/XG5cdFx0XHRcdGR1cmF0aW9uOjgwMDAsIC8vIOenu+WKqOmAn+W6plxuXHRcdFx0XHRtYXRMaXN0OltdLCAvLyDorqLljZXliJfooahcblx0XHRcdFx0ZWplY3RTaG93OiBmYWxzZSxcblx0XHRcdFx0XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRtb3VudGVkKCkge1xuXHRcdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0XHRjb25zdCBCYXNlSVAgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VJcCcpO1xuXHRcdFx0Y29uc3QgQmFzZUxlZElkID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlTGVkSWQnKTtcblx0XHRcdGNvbnN0IEJhc2VQb3J0ID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlUG9ydCcpO1xuXHRcdFx0Y29uc3QgQmFzZUNybklkID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlQ3JuSWQnKTtcblx0XHRcdFx0dGhhdC5iYXNlSVAgPSBCYXNlSVBcblx0XHRcdFx0dGhhdC5iYXNlTGVkSWQgPSBCYXNlTGVkSWRcblx0XHRcdFx0dGhhdC5iYXNlUG9ydCA9IEJhc2VQb3J0XG5cdFx0XHRcdHRoYXQuYmFzZUNybklkID0gQmFzZUNybklkXG5cdFx0XHR0aGlzLmdldFVybCgpXG5cdFx0fSxcblx0XHRvbkxvYWQoKSB7XG5cdFx0XHRcblx0XHR9LFxuXHRcdG9uUmVhZHkoKSB7XG5cdFx0XHRzZXRJbnRlcnZhbCgoKSA9PiB7XG5cdFx0XHRcdC8vIOiOt+W+l+WIneWni+aVsOaNrlxuXHRcdFx0XHQvLyB0aGlzLmluaXRsaW5lQ2hhcnQoKTtcblx0XHRcdFx0dGhpcy5pbml0UGllQ2hhcnQoKTtcblx0XHRcdFx0Ly8g5Li76aG15L+h5oGvXG5cdFx0XHRcdHRoaXMuZ2V0U2VydmVyRGF0YSgpO1xuXHRcdFx0XHR0aGlzLmdldE90aGVyKCk7XG5cdFx0XHRcdC8vIOWFtuS7luS/oeaBr1xuXHRcdFx0XHR0aGlzLmdldERhdGUoKTtcblx0XHRcdFx0dGhpcy5nZXRQYWtpbigpO1xuXHRcdFx0XHR0aGlzLmdldEVycm9yKCk7XG5cdFx0XHRcdC8vIHRoaXMuZ2V0WVlZKCk7XG5cdFx0XHRcdC8vIHRoaXMuZ2V0RUVFKCk7XG5cdFx0XHRcdC8vIHRoaXMuYW5pbWF0aW9uXG5cdFx0XHRcdHRoaXMuZ2V0VXJsKClcblx0XHRcdH0sMTAwMClcblx0XHR9LFxuXHRcdG1ldGhvZHM6IHtcblx0XHRcdC8vIOiOt+WPlnVybFxuXHRcdFx0Z2V0VXJsKCkge1xuXHRcdFx0XHR0aGlzLmNvbW1vblVybCA9IHRoaXMuYmFzZUh0dHAgKyB0aGlzLmJhc2VJUCArICc6JyArdGhpcy5iYXNlUG9ydCArIHRoaXMuYmFzZVVybFxuXHRcdFx0XHR0aGlzLmNoYXJ0c0RhdGFMaW5lMSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGVtb2RhdGEuTGluZSkpXG5cdFx0XHR9LFxuXHRcdFx0Ly8g6I635Y+W6ZSZ6K+v5L+h5oGvXG5cdFx0XHRnZXRZWVkoKSB7XG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xuXHRcdFx0XHR2YXIgcmVzdWx0ID0geWNxZGF0YS5kYXRhRUVFXG5cdFx0XHRcdC8vIOa1i+ivleeUqCDihpNcblx0XHRcdFx0dmFyXHRyZXMgPSByZXN1bHQuZGF0YVxuXHRcdFx0XHQvLyDmtYvor5XnlKgg4oaRXG5cdFx0XHRcdC8vIOi/lOWbnue7k+aenOacieWAvCDkuJTlgLzkuI3nrYnkuo7nqbrlgLwg5bCx5piv5pyJ6ZSZ6K+v5L+h5oGv6ZyA6KaB5bGV56S6XG5cdFx0XHRcdGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gXCJcIikge1xuXHRcdFx0XHRcdHRoYXQuZXJyb3JNc2cgPSByZXMuZGF0YVxuXHRcdFx0XHRcdHRoYXQuZXJyb3JTaG93ID0gdHJ1ZVxuXHRcdFx0XHRcdHRoYXQubW92ZSA9IGZhbHNlIC8vIOaYvuekulxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoYXQuZXJyb3JQYXBlciA9ICcnXG5cdFx0XHRcdFx0dGhhdC5lcnJvclNob3cgPSBmYWxzZVxuXHRcdFx0XHRcdGlmICh0aGF0LnBha2luU2hvdykge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGF0Lm1vdmUgPSB0cnVlIC8vIOmakOiXj1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGdldEVFRSAoKSB7XG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xuXHRcdFx0XHR2YXIgbmV3c0RhdGEgPSAnJ1xuXHRcdFx0XHR2YXIgc3RyID0gJydcblx0XHRcdFx0bGV0IHJlc3VsdCA9IHljcWRhdGEuZGF0YVlZWVxuXHRcdFx0XHRcdFx0Ly8g5rWL6K+V55SoIOKGk1xuXHRcdFx0XHRsZXRcdHJlcyA9IHJlc3VsdC5kYXRhXG5cdFx0XHRcdFx0XHQvLyDmtYvor5XnlKgg4oaRXG5cdFx0XHRcdFx0aWYocmVzLmRhdGEgJiYgcmVzLmRhdGEgIT09IG51bGwpIHtcblx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwMSkge1xuXHRcdFx0XHRcdFx0XHR0aGF0LnRpdGxlID0gJ+WFqOadv+WHuuW6kydcblx0XHRcdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwMykge1xuXHRcdFx0XHRcdFx0XHR0aGF0LnRpdGxlID0gJ+ajgOaWmeWHuuW6kydcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoYXQuc3RhTm8gPSAn55uu5qCH56uZOicgKyByZXMuZGF0YVswXS5zdGFOb1xuXHRcdFx0XHRcdFx0dGhhdC5tYXRuciA9ICfllYblk4HnvJblj7fvvJonICsgcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYXRuclxuXHRcdFx0XHRcdFx0dGhhdC5tYWtueCA9ICfllYblk4HlkI3np7DvvJonICsgcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYWtueFxuXHRcdFx0XHRcdFx0dGhhdC5jb3VudCA9ICflh7rlupPmlbDph4/vvJonICsgcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5jb3VudFxuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhWzBdLm9yZGVyTm8pIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5vcmRlck5vID0gXCLorqLljZXlj7fvvJpcIiArIHJlcy5kYXRhWzBdLm9yZGVyTm9cblx0XHRcdFx0XHRcdFx0dGhhdC5vcmRlclNob3cgPSB0cnVlXG5cdFx0XHRcdFx0XHRcdHRoYXQud2lkdGggPSAnaGFsZi13aWR0aCdcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQub3JkZXJObyA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdHRoYXQub3JkZXJTaG93ID0gZmFsc2Vcblx0XHRcdFx0XHRcdFx0dGhhdC53aWR0aCA9ICdmdWxsLXdpZHRoJ1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhhdC5kb25lT2ZUcmF5ID0gJ+W3suWHuuaJmOebmOaVsDonICsgcmVzLmRhdGFbMF0uZG9uZU9mVHJheVxuXHRcdFx0XHRcdFx0dGhhdC50b3RhbE9mVHJheSA9ICfmiZjnm5jmgLvmlbDph4/vvJonICsgcmVzLmRhdGFbMF0udG90YWxPZlRyYXlcblx0XHRcdFx0XHRcdHRoYXQuZG9uZU9mVW5pdCA9ICflt7Llh7rnrrHmlbDvvJonICsgcmVzLmRhdGFbMF0uZG9uZU9mVW5pdFxuXHRcdFx0XHRcdFx0dGhhdC50b3RhbE9mVW5pdCA9ICfmgLvnrrHmlbDvvJonICsgcmVzLmRhdGFbMF0udG90YWxPZlVuaXRcblx0XHRcdFx0XHRcdGlmICh0aGF0LmVycm9yU2hvdykge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGF0Lm5ld3NwYXBlciA9IG5ld3NEYXRhXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGF0Lm1vdmUgPSBmYWxzZVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9ZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGF0Lm1vdmUgPSB0cnVlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdC8vIOiOt+WPlumUmeivr+S/oeaBr1xuXHRcdFx0Z2V0RXJyb3IoKSB7XG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xuXHRcdFx0XHR2YXIgcmVzXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9sZWQvZXJyb3JcIixcblx0XHRcdFx0XHRkYXRhOiB7XG5cdFx0XHRcdFx0XHRsZWRJZDp0aGF0LmJhc2VMZWRJZFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bWV0aG9kOidHRVQnLFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XG5cdFx0XHRcdFx0XHRyZXMgPSByZXN1bHQuZGF0YSBcblx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gXCJcIikge1xuXHRcdFx0XHRcdFx0XHR0aGF0LmVycm9yTXNnID0gcmVzLmRhdGFcblx0XHRcdFx0XHRcdFx0dGhhdC5lcnJvclNob3cgPSB0cnVlXG5cdFx0XHRcdFx0XHRcdHRoYXQubW92ZSA9IGZhbHNlIC8vIOaYvuekulxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5lcnJvclNob3cgPSBmYWxzZVxuXHRcdFx0XHRcdFx0XHQvLyBpZiAodGhhdC5wYWtpblNob3cpIHtcblx0XHRcdFx0XHRcdFx0Ly8gXHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdC8vIH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIFx0Ly8gdGhhdC5tb3ZlID0gdHJ1ZSAvLyDpmpDol49cblx0XHRcdFx0XHRcdFx0Ly8gfVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0Z2V0UGFraW4gKCkge1xuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdFx0dGhhdC5tYXRMaXN0ID0gW10gLy8g5riF56m65p2h56CB5YiX6KGoXG5cdFx0XHRcdHZhciBuZXdzRGF0YSA9ICcnXG5cdFx0XHRcdHZhciBzdHIgPSAnJ1xuXHRcdFx0XHRsZXQgcmVzIFxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbGVkXCIsXG5cdFx0XHRcdFx0ZGF0YToge1xuXHRcdFx0XHRcdFx0bGVkSWQ6dGhhdC5iYXNlTGVkSWRcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG1ldGhvZDonR0VUJyxcblx0XHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xuXHRcdFx0XHRcdFx0cmVzID0gcmVzdWx0LmRhdGFcblx0XHRcdFx0XHRcdGlmICh0aGF0LmVycm9yU2hvdykge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47ICAvLyDmnInplJnor6/kv6Hmga9cblx0XHRcdFx0XHRcdH0gXG5cdFx0XHRcdFx0XHRpZihyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRpZiAocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDEpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LnRpdGxlID0gJ+WFqOadv+WHuuW6kydcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAzKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC50aXRsZSA9ICfmo4Dmlpnlh7rlupMnXG5cdFx0XHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0XHR0aGF0LnRpdGxlID0gcmVzLmRhdGFbMF0udGl0bGVcblx0XHRcdFx0XHRcdFx0dGhhdC5zdGFObyA9ICfnm67moIfnq5k6JyArIHJlcy5kYXRhWzBdLnN0YU5vXG5cdFx0XHRcdFx0XHRcdHRoYXQubWF0bnIgPSAn5ZWG5ZOB57yW5Y+377yaJyArIHJlcy5kYXRhWzBdLm1hdER0b3NbMF0ubWF0bnJcblx0XHRcdFx0XHRcdFx0dGhhdC5tYWtueCA9ICfllYblk4HlkI3np7DvvJonICsgcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYWtueFxuXHRcdFx0XHRcdFx0XHR0aGF0LmNvdW50ID0gJ+WHuuW6k+aVsOmHj++8micgKyByZXMuZGF0YVswXS5tYXREdG9zWzBdLmNvdW50XG5cdFx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YVswXS5vcmRlck5vKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5vcmRlck5vID0gXCLorqLljZXlj7fvvJpcIiArIHJlcy5kYXRhWzBdLm9yZGVyTm9cblx0XHRcdFx0XHRcdFx0XHR0aGF0Lm9yZGVyU2hvdyA9IHRydWVcblx0XHRcdFx0XHRcdFx0XHR0aGF0LndpZHRoID0gJ2hhbGYtd2lkdGgnXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5vcmRlck5vID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0XHR0aGF0Lm9yZGVyU2hvdyA9IGZhbHNlXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC53aWR0aCA9ICdmdWxsLXdpZHRoJ1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRoYXQuZG9uZU9mVHJheSA9ICflt7Llh7rmiZjnm5jmlbA6JyArIHJlcy5kYXRhWzBdLmRvbmVPZlRyYXlcblx0XHRcdFx0XHRcdFx0dGhhdC50b3RhbE9mVHJheSA9ICfmiZjnm5jmgLvmlbDph4/vvJonICsgcmVzLmRhdGFbMF0udG90YWxPZlRyYXlcblx0XHRcdFx0XHRcdFx0dGhhdC5kb25lT2ZVbml0ID0gJ+W3suWHuueuseaVsO+8micgKyByZXMuZGF0YVswXS5kb25lT2ZVbml0XG5cdFx0XHRcdFx0XHRcdHRoYXQudG90YWxPZlVuaXQgPSAn5oC7566x5pWw77yaJyArIHJlcy5kYXRhWzBdLnRvdGFsT2ZVbml0XG5cdFx0XHRcdFx0XHRcdHRoYXQubmV3c3BhcGVyID0gbmV3c0RhdGFcblx0XHRcdFx0XHRcdFx0dGhhdC5tb3ZlID0gZmFsc2Vcblx0XHRcdFx0XHRcdH1lbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5tb3ZlID0gdHJ1ZVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0YW5pbWF0aW9uKCkge1xuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLm1vdmUpO1xuXHRcdFx0XHRpZiAodGhpcy5tb3ZlKSB7IFxuXHRcdFx0XHRcdHRoaXMudG9wTW92ZSA9ICd0b3BVcCdcblx0XHRcdFx0XHR0aGlzLmZsb29yTW92ZSA9ICdmbG9vclVwJ1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMudG9wTW92ZSA9ICd0b3BEb3duJ1xuXHRcdFx0XHRcdHRoaXMuZmxvb3JNb3ZlID0gJ2Zsb29yRG93bidcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGdldERhdGVGb3JtYXQodmFsdWUpIHtcblx0XHRcdFx0dmFyIGRhdGUgPSBuZXcgRGF0ZSgpOy8vIOiOt+WPluW9k+WJjeaXtumXtFxuXHRcdFx0XHRkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyB2YWx1ZSk7Ly8g6K6+572u5aSp5pWwIC0xIOWkqVxuXHRcdFx0XHR2YXIgbSA9IGRhdGUuZ2V0TW9udGgoKSArIDFcblx0XHRcdFx0dmFyIGQgPSBkYXRlLmdldERhdGUoKVxuXHRcdFx0XHR2YXIgbmV3RGF0ZSA9IG0gKyAnLScgKyBkXG5cdFx0XHRcdHJldHVybiBuZXdEYXRlXG5cdFx0XHR9LFxuLyoqKioqKioqKioqKioqKiDmipjnur/lm74gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cdFx0XHRpbml0bGluZUNoYXJ0KCkge1xuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9tb25pdG9yL2xpbmUvY2hhcnRzXCIsXG5cdFx0XHRcdFx0bWV0aG9kOidHRVQnLFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XG5cdFx0XHRcdFx0XHR2YXIgcmVzID0gcmVzdWx0LmRhdGFcblx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQuY2hhcnRzRGF0YS5MaW5lLmNhdGVnb3JpZXMgPSBbXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5nZXREYXRlRm9ybWF0KC0xMSksdGhhdC5nZXREYXRlRm9ybWF0KC0xMCksdGhhdC5nZXREYXRlRm9ybWF0KC05KSx0aGF0LmdldERhdGVGb3JtYXQoLTgpLFxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNyksdGhhdC5nZXREYXRlRm9ybWF0KC02KSx0aGF0LmdldERhdGVGb3JtYXQoLTUpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNCksXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5nZXREYXRlRm9ybWF0KC0zKSx0aGF0LmdldERhdGVGb3JtYXQoLTIpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMSksdGhhdC5nZXREYXRlRm9ybWF0KDApLF1cblx0XHRcdFx0XHRcdFx0dGhhdC5jaGFydHNEYXRhLkxpbmUuc2VyaWVzID0gcmVzLmRhdGEucm93c1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0sXG4vKioqKioqKioqKioqKioqIOmlvOWbviAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblx0XHRcdGluaXRQaWVDaGFydCgpIHtcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9sb2MvcmVwXCIsXG5cdFx0XHRcdFx0bWV0aG9kOidHRVQnLFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XG5cdFx0XHRcdFx0XHR2YXIgcmVzID0gcmVzdWx0LmRhdGFcblx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQuY2hhcnRzRGF0YS5QaWUuc2VyaWVzWzBdLmRhdGEgPSByZXMuZGF0YS5waWVcblx0XHRcdFx0XHRcdFx0dGhhdC5zdG9ja0NvdW50ID0gcmVzLmRhdGEuc3RvY2tDdW50XG5cdFx0XHRcdFx0XHRcdHRoYXQuZW1wdHlDb3VudCA9IHJlcy5kYXRhLmVtcHR5Q291bnRcblx0XHRcdFx0XHRcdFx0dGhhdC5ub25lQ291bnQgPSByZXMuZGF0YS5ub25lQ291bnRcblx0XHRcdFx0XHRcdFx0dGhhdC51c2VkID0gcmVzLmRhdGEudXNlZFxuXHRcdFx0XHRcdFx0XHR0aGF0LnVzZWRQciA9IHJlcy5kYXRhLnVzZWRQclxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHRnZXRPdGhlcigpIHtcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHQvLyBodHRwOi8vMTAuMTAuMC4yMjI6OTA5MC9qa3djcy9tb25pdG9yL2xlZD9sZWRJZD0xODZcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9vdGhlclwiLFxuXHRcdFx0XHRcdGRhdGE6IHtcblx0XHRcdFx0XHRcdGNybklkOiB0aGF0LmJhc2VDcm5JZCwgXG5cdFx0XHRcdFx0XHRsZWRJZDogMSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXN1bHQpO1xuXHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXG5cdFx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0XHR0aGF0LnhEaXN0YW5jZSA9IHJlcy5kYXRhLnhEaXN0YW5jZVxuXHRcdFx0XHRcdFx0XHR0aGF0LnlEaXN0YW5jZSA9IHJlcy5kYXRhLnlEaXN0YW5jZVxuXHRcdFx0XHRcdFx0XHR0aGF0LnhEdXJhdGlvbiA9IHJlcy5kYXRhLnhEdXJhdGlvblxuXHRcdFx0XHRcdFx0XHR0aGF0LnlEdXJhdGlvbiA9IHJlcy5kYXRhLnlEdXJhdGlvblxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChyZXMuY29kZSA9PT0gNDAzKSB7XG5cdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblx0XHRcdGVqZWN0ZWQgKCkge1xuXHRcdFx0XHR0aGlzLmVqZWN0U2hvdyA9IHRydWVcblx0XHRcdH0sXG5cdFx0XHQvLyDlvLnlh7rlsYLnoa7orqRcblx0XHRcdGVqZWN0Q29uZmlybSgpIHtcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdCYXNlSXAnLCB0aGlzLmJhc2VJUCk7XG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZUxlZElkJywgdGhpcy5iYXNlTGVkSWQpO1xuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VQb3J0Jyx0aGlzLmJhc2VQb3J0KTtcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdCYXNlQ3JuSWQnLHRoaXMuYmFzZUNybklkKTtcblx0XHRcdFx0dGhpcy5nZXRVcmwoKVxuXHRcdFx0XHR0aGlzLmVqZWN0U2hvdyA9IGZhbHNlXG5cdFx0XHR9LFxuXHRcdFx0Ly8g5by55Ye65bGC5Y+W5raIXG5cdFx0XHRlamVjdENsb3NlKCkge1xuXHRcdFx0XHR0aGlzLmVqZWN0U2hvdyA9IGZhbHNlXG5cdFx0XHR9LFxuXHRcdFx0Z2V0U2VydmVyRGF0YSgpIHtcblx0XHRcdFx0dGhpcy5jaGFydHNEYXRhTGluZTE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXJ0c0RhdGEuTGluZSkpXG5cdFx0XHRcdHRoaXMuY2hhcnRzRGF0YVBpZTI9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXJ0c0RhdGEuUGllKSlcblx0XHRcdH0sXG5cdFx0XHRjb21wbGV0ZShlKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKFwi5riy5p+T5a6M5oiQ5LqL5Lu2XCIsZSk7XG5cdFx0XHR9LFxuXHRcdFx0Z2V0RGF0ZSgpIHtcblx0XHRcdFx0dmFyIGR0ID0gbmV3IERhdGUoKTtcblx0XHRcdFx0dGhpcy55ZWFyID0gZHQuZ2V0RnVsbFllYXIoKTtcblx0XHRcdFx0dGhpcy5tb250aCA9IChkdC5nZXRNb250aCgpKzEpIDwgMTAgPyAnMCcrIChkdC5nZXRNb250aCgpKzEpIDogKGR0LmdldE1vbnRoKCkrMSk7XG5cdFx0XHRcdHRoaXMuZGF5ID0gZHQuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcrZHQuZ2V0RGF0ZSgpIDogZHQuZ2V0RGF0ZSgpO1xuXHRcdFx0XHR0aGlzLmhvdXJzID0gZHQuZ2V0SG91cnMoKSA8IDEwID8gJzAnICsgZHQuZ2V0SG91cnMoKSA6IGR0LmdldEhvdXJzKCk7XG5cdFx0XHRcdHRoaXMubWludXRlcyA9IGR0LmdldE1pbnV0ZXMoKSA8IDEwID8gJzAnICsgZHQuZ2V0TWludXRlcygpIDogZHQuZ2V0TWludXRlcygpO1xuXHRcdFx0XHR0aGlzLnNlY29uZHMgPSBkdC5nZXRTZWNvbmRzKCkgPCAxMCA/ICcwJyArIGR0LmdldFNlY29uZHMoKSA6IGR0LmdldFNlY29uZHMoKTsgXG5cdFx0XHRcdHRoaXMud2Vla3MgPSBkdC5nZXREYXkoKTsgXG5cdFx0XHRcdHN3aXRjaCAodGhpcy53ZWVrcykge1xuXHRcdFx0XHRcdGNhc2UgMDogdGhpcy53ZWVrID0gXCLmmJ/mnJ/ml6VcIjsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAxOiB0aGlzLndlZWsgPSBcIuaYn+acn+S4gFwiOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDI6IHRoaXMud2VlayA9IFwi5pif5pyf5LqMXCI7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgMzogdGhpcy53ZWVrID0gXCLmmJ/mnJ/kuIlcIjsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSA0OiB0aGlzLndlZWsgPSBcIuaYn+acn+Wbm1wiOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDU6IHRoaXMud2VlayA9IFwi5pif5pyf5LqUXCI7IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQgOiB0aGlzLndlZWsgPSBcIuaYn+acn+WFrVwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdH1cblx0fVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///99\n");
/***/ }),
/* 101 */
/*!*****************************************************************!*\
  !*** D:/Workspace/zy/private/Monitor-APP/pages/index/data.json ***!
  \*****************************************************************/
/* 100 */
/*!******************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/pages/index/data.json ***!
  \******************************************************************/
/*! exports provided: dataYYY, dataEEE, default */
/***/ (function(module) {
eval("module.exports = JSON.parse(\"{\\\"dataYYY\\\":{\\\"data\\\":{\\\"msg\\\":\\\"操作成功\\\",\\\"code\\\":200,\\\"data\\\":[{\\\"title\\\":\\\"全板出库\\\",\\\"workNo\\\":8046,\\\"staNo\\\":200,\\\"sourceStaNo\\\":null,\\\"locNo\\\":null,\\\"sourceLocNo\\\":\\\"1500502\\\",\\\"matDtos\\\":[{\\\"matnr\\\":\\\"LPJ.SLJ.XG.037\\\",\\\"maknx\\\":\\\"工程塑料下弯头\\\",\\\"batch\\\":null,\\\"count\\\":40}],\\\"emptyMk\\\":false,\\\"ioType\\\":101}]}},\\\"dataEEE\\\":{\\\"data\\\":{\\\"msg\\\":\\\"操作成功\\\",\\\"code\\\":200,\\\"data\\\":\\\"\\\"}}}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiIxMDEuanMiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///101\n");
eval("module.exports = JSON.parse(\"{\\\"dataYYY\\\":{\\\"data\\\":{\\\"msg\\\":\\\"操作成功\\\",\\\"code\\\":200,\\\"data\\\":[{\\\"title\\\":\\\"全板出库\\\",\\\"workNo\\\":8046,\\\"staNo\\\":200,\\\"sourceStaNo\\\":null,\\\"locNo\\\":null,\\\"sourceLocNo\\\":\\\"1500502\\\",\\\"matDtos\\\":[{\\\"matnr\\\":\\\"LPJ.SLJ.XG.037\\\",\\\"maknx\\\":\\\"工程塑料下弯头\\\",\\\"batch\\\":null,\\\"count\\\":40}],\\\"emptyMk\\\":false,\\\"ioType\\\":101}]}},\\\"dataEEE\\\":{\\\"data\\\":{\\\"msg\\\":\\\"操作成功\\\",\\\"code\\\":200,\\\"data\\\":\\\"\\\"}}}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiIxMDAuanMiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///100\n");
/***/ }),
/* 101 */
/*!*******************************************************************!*\
  !*** D:/workspace_uni/private/Monitor-APP/mockdata/demodata.json ***!
  \*******************************************************************/
/*! exports provided: localdata, localdataB, TLine, Scatter, Bubble, Column, ColumnA, Mix, Line, Pie, PieA, Radar, Arcbar1, Arcbar2, Gauge, Candle, CandleColumn, Word, default */
/***/ (function(module) {
eval("module.exports = JSON.parse(\"{\\\"localdata\\\":[{\\\"value\\\":35,\\\"text\\\":\\\"2016\\\",\\\"group\\\":\\\"目标值\\\"},{\\\"value\\\":18,\\\"text\\\":\\\"2016\\\",\\\"group\\\":\\\"完成量\\\"},{\\\"value\\\":36,\\\"text\\\":\\\"2017\\\",\\\"group\\\":\\\"目标值\\\"},{\\\"value\\\":27,\\\"text\\\":\\\"2017\\\",\\\"group\\\":\\\"完成量\\\"},{\\\"value\\\":31,\\\"text\\\":\\\"2018\\\",\\\"group\\\":\\\"目标值\\\"},{\\\"value\\\":21,\\\"text\\\":\\\"2018\\\",\\\"group\\\":\\\"完成量\\\"},{\\\"value\\\":33,\\\"text\\\":\\\"2019\\\",\\\"group\\\":\\\"目标值\\\"},{\\\"value\\\":24,\\\"text\\\":\\\"2019\\\",\\\"group\\\":\\\"完成量\\\"},{\\\"value\\\":13,\\\"text\\\":\\\"2020\\\",\\\"group\\\":\\\"目标值\\\"},{\\\"value\\\":6,\\\"text\\\":\\\"2020\\\",\\\"group\\\":\\\"完成量\\\"},{\\\"value\\\":34,\\\"text\\\":\\\"2021\\\",\\\"group\\\":\\\"目标值\\\"},{\\\"value\\\":28,\\\"text\\\":\\\"2021\\\",\\\"group\\\":\\\"完成量\\\"}],\\\"localdataB\\\":[{\\\"value\\\":50,\\\"text\\\":\\\"一班\\\"},{\\\"value\\\":30,\\\"text\\\":\\\"二班\\\"},{\\\"value\\\":20,\\\"text\\\":\\\"三班\\\"},{\\\"value\\\":18,\\\"text\\\":\\\"四班\\\"},{\\\"value\\\":8,\\\"text\\\":\\\"五班\\\"}],\\\"TLine\\\":{\\\"series\\\":[{\\\"name\\\":\\\"时间轴1\\\",\\\"data\\\":[[10000,55],[30000,25],[50000,55],[70000,25],[90000,55]]},{\\\"name\\\":\\\"时间轴2\\\",\\\"data\\\":[[0,25],[20000,55],[40000,25],[60000,55],[80000,25]]},{\\\"name\\\":\\\"时间轴3\\\",\\\"data\\\":[[0,55],[15000,25],[30000,55],[45000,25],[60000,55]]}]},\\\"Scatter\\\":{\\\"series\\\":[{\\\"name\\\":\\\"散点一\\\",\\\"data\\\":[[10,8.04],[8.07,6.95],[13,7.58],[9.05,8.81],[11,8.33],[14,7.66],[13.4,6.81],[10,6.33],[14,8.96],[12.5,6.82]]},{\\\"name\\\":\\\"散点二\\\",\\\"data\\\":[[9.15,7.2],[11.5,7.2],[3.03,4.23],[12.2,7.83],[2.02,4.47],[1.05,3.33],[4.05,4.96],[6.03,7.24],[12,6.26],[12,8.84],[7.08,5.82],[5.02,5.68]]}]},\\\"Bubble\\\":{\\\"series\\\":[{\\\"name\\\":\\\"气泡一\\\",\\\"data\\\":[[95,95,23,\\\"标题1\\\"],[30,55,33,\\\"标题2\\\"]]},{\\\"name\\\":\\\"气泡二\\\",\\\"data\\\":[[130,30,30,\\\"标题3\\\"],[200,90,40,\\\"标题4\\\"]]}]},\\\"Column\\\":{\\\"categories\\\":[\\\"2016\\\",\\\"2017\\\",\\\"2018\\\",\\\"2019\\\",\\\"2020\\\",\\\"2021\\\"],\\\"series\\\":[{\\\"name\\\":\\\"目标值\\\",\\\"data\\\":[35,36,31,33,13,34]},{\\\"name\\\":\\\"完成量\\\",\\\"data\\\":[18,27,21,24,6,28]}]},\\\"ColumnA\\\":{\\\"categories\\\":[\\\"2016\\\",\\\"2017\\\",\\\"2018\\\",\\\"2019\\\",\\\"2020\\\",\\\"2021\\\"],\\\"series\\\":[{\\\"name\\\":\\\"成交量1\\\",\\\"data\\\":[15,{\\\"value\\\":20,\\\"color\\\":\\\"#f04864\\\"},45,37,43,34]},{\\\"name\\\":\\\"成交量2\\\",\\\"data\\\":[30,{\\\"value\\\":40,\\\"color\\\":\\\"#facc14\\\"},25,14,34,18]}]},\\\"Mix\\\":{\\\"categories\\\":[\\\"2016\\\",\\\"2017\\\",\\\"2018\\\",\\\"2019\\\",\\\"2020\\\",\\\"2021\\\"],\\\"series\\\":[{\\\"name\\\":\\\"曲面\\\",\\\"data\\\":[70,50,85,130,64,88],\\\"type\\\":\\\"area\\\",\\\"style\\\":\\\"curve\\\"},{\\\"name\\\":\\\"柱1\\\",\\\"index\\\":1,\\\"data\\\":[40,{\\\"value\\\":30,\\\"color\\\":\\\"#f04864\\\"},55,110,24,58],\\\"type\\\":\\\"column\\\"},{\\\"name\\\":\\\"柱2\\\",\\\"index\\\":1,\\\"data\\\":[50,20,75,60,34,38],\\\"type\\\":\\\"column\\\"},{\\\"name\\\":\\\"曲线\\\",\\\"data\\\":[70,50,85,130,64,88],\\\"type\\\":\\\"line\\\",\\\"style\\\":\\\"curve\\\",\\\"color\\\":\\\"#1890ff\\\",\\\"disableLegend\\\":true},{\\\"name\\\":\\\"折线\\\",\\\"data\\\":[120,140,105,170,95,160],\\\"type\\\":\\\"line\\\",\\\"color\\\":\\\"#2fc25b\\\"},{\\\"name\\\":\\\"点\\\",\\\"index\\\":2,\\\"data\\\":[100,80,125,150,112,132],\\\"type\\\":\\\"point\\\",\\\"color\\\":\\\"#f04864\\\"}]},\\\"Line\\\":{\\\"categories\\\":[\\\"2016\\\",\\\"2017\\\",\\\"2018\\\",\\\"2019\\\",\\\"2020\\\",\\\"2021\\\"],\\\"series\\\":[{\\\"name\\\":\\\"成交量A\\\",\\\"data\\\":[35,8,25,37,4,20]},{\\\"name\\\":\\\"成交量B\\\",\\\"data\\\":[70,40,65,100,44,68]}]},\\\"Pie\\\":{\\\"series\\\":[{\\\"name\\\":\\\"一班\\\",\\\"data\\\":50},{\\\"name\\\":\\\"二班\\\",\\\"data\\\":30},{\\\"name\\\":\\\"三班\\\",\\\"data\\\":20},{\\\"name\\\":\\\"四班\\\",\\\"data\\\":18},{\\\"name\\\":\\\"五班\\\",\\\"data\\\":8}]},\\\"PieA\\\":{\\\"series\\\":[{\\\"data\\\":[{\\\"name\\\":\\\"在库\\\",\\\"value\\\":314},{\\\"name\\\":\\\"空\\\",\\\"value\\\":1175},{\\\"name\\\":\\\"禁用\\\",\\\"value\\\":96}]}]},\\\"Radar\\\":{\\\"categories\\\":[\\\"维度1\\\",\\\"维度2\\\",\\\"维度3\\\",\\\"维度4\\\",\\\"维度5\\\",\\\"维度6\\\"],\\\"series\\\":[{\\\"name\\\":\\\"成交量1\\\",\\\"data\\\":[90,110,165,195,187,172]},{\\\"name\\\":\\\"成交量2\\\",\\\"data\\\":[190,210,105,35,27,102]}]},\\\"Arcbar1\\\":{\\\"series\\\":[{\\\"name\\\":\\\"正确率\\\",\\\"data\\\":0.8,\\\"color\\\":\\\"#2fc25b\\\"}]},\\\"Arcbar2\\\":{\\\"series\\\":[{\\\"name\\\":\\\"一班\\\",\\\"data\\\":0.8},{\\\"name\\\":\\\"二班\\\",\\\"data\\\":0.6},{\\\"name\\\":\\\"三班\\\",\\\"data\\\":0.45},{\\\"name\\\":\\\"四班\\\",\\\"data\\\":0.3},{\\\"name\\\":\\\"五班\\\",\\\"data\\\":0.15}]},\\\"Gauge\\\":{\\\"categories\\\":[{\\\"value\\\":0.2,\\\"color\\\":\\\"#1890ff\\\"},{\\\"value\\\":0.8,\\\"color\\\":\\\"#2fc25b\\\"},{\\\"value\\\":1,\\\"color\\\":\\\"#f04864\\\"}],\\\"series\\\":[{\\\"name\\\":\\\"完成率\\\",\\\"data\\\":0.66}]},\\\"Candle\\\":{\\\"categories\\\":[\\\"2020/1/24\\\",\\\"2020/1/25\\\",\\\"2020/1/28\\\",\\\"2020/1/29\\\",\\\"2020/1/30\\\",\\\"2020/1/31\\\",\\\"2020/2/1\\\",\\\"2020/2/4\\\",\\\"2020/2/5\\\",\\\"2020/2/6\\\",\\\"2020/2/7\\\",\\\"2020/2/8\\\",\\\"2020/2/18\\\",\\\"2020/2/19\\\",\\\"2020/2/20\\\",\\\"2020/2/21\\\",\\\"2020/2/22\\\",\\\"2020/2/25\\\",\\\"2020/2/26\\\",\\\"2020/2/27\\\",\\\"2020/2/28\\\",\\\"2020/3/1\\\",\\\"2020/3/4\\\",\\\"2020/3/5\\\",\\\"2020/3/6\\\",\\\"2020/3/7\\\",\\\"2020/3/8\\\",\\\"2020/3/11\\\",\\\"2020/3/12\\\",\\\"2020/3/13\\\",\\\"2020/3/14\\\",\\\"2020/3/15\\\",\\\"2020/3/18\\\",\\\"2020/3/19\\\",\\\"2020/3/20\\\",\\\"2020/3/21\\\",\\\"2020/3/22\\\",\\\"2020/3/25\\\",\\\"2020/3/26\\\",\\\"2020/3/27\\\",\\\"2020/3/28\\\",\\\"2020/3/29\\\",\\\"2020/4/1\\\",\\\"2020/4/2\\\",\\\"2020/4/3\\\",\\\"2020/4/8\\\",\\\"2020/4/9\\\",\\\"2020/4/10\\\",\\\"2020/4/11\\\",\\\"2020/4/12\\\",\\\"2020/4/15\\\",\\\"2020/4/16\\\",\\\"2020/4/17\\\",\\\"2020/4/18\\\",\\\"2020/4/19\\\",\\\"2020/4/22\\\",\\\"2020/4/23\\\",\\\"2020/4/24\\\",\\\"2020/4/25\\\",\\\"2020/4/26\\\",\\\"2020/5/2\\\",\\\"2020/5/3\\\",\\\"2020/5/6\\\",\\\"2020/5/7\\\",\\\"2020/5/8\\\",\\\"2020/5/9\\\",\\\"2020/5/10\\\",\\\"2020/5/13\\\",\\\"2020/5/14\\\",\\\"2020/5/15\\\",\\\"2020/5/16\\\",\\\"2020/5/17\\\",\\\"2020/5/20\\\",\\\"2020/5/21\\\",\\\"2020/5/22\\\",\\\"2020/5/23\\\",\\\"2020/5/24\\\",\\\"2020/5/27\\\",\\\"2020/5/28\\\",\\\"2020/5/29\\\",\\\"2020/5/30\\\",\\\"2020/5/31\\\",\\\"2020/6/3\\\",\\\"2020/6/4\\\",\\\"2020/6/5\\\",\\\"2020/6/6\\\",\\\"2020/6/7\\\",\\\"2020/6/13\\\"],\\\"series\\\":[{\\\"name\\\":\\\"上证指数\\\",\\\"data\\\":[[2320.26,2302.6,2287.3,2362.94],[2300,2291.3,2288.26,2308.38],[2295.35,2346.5,2295.35,2346.92],[2347.22,2358.98,2337.35,2363.8],[2360.75,2382.48,2347.89,2383.76],[2383.43,2385.42,2371.23,2391.82],[2377.41,2419.02,2369.57,2421.15],[2425.92,2428.15,2417.58,2440.38],[2411,2433.13,2403.3,2437.42],[2432.68,2434.48,2427.7,2441.73],[2430.69,2418.53,2394.22,2433.89],[2416.62,2432.4,2414.4,2443.03],[2441.91,2421.56,2415.43,2444.8],[2420.26,2382.91,2373.53,2427.07],[2383.49,2397.18,2370.61,2397.94],[2378.82,2325.95,2309.17,2378.82],[2322.94,2314.16,2308.76,2330.88],[2320.62,2325.82,2315.01,2338.78],[2313.74,2293.34,2289.89,2340.71],[2297.77,2313.22,2292.03,2324.63],[2322.32,2365.59,2308.92,2366.16],[2364.54,2359.51,2330.86,2369.65],[2332.08,2273.4,2259.25,2333.54],[2274.81,2326.31,2270.1,2328.14],[2333.61,2347.18,2321.6,2351.44],[2340.44,2324.29,2304.27,2352.02],[2326.42,2318.61,2314.59,2333.67],[2314.68,2310.59,2296.58,2320.96],[2309.16,2286.6,2264.83,2333.29],[2282.17,2263.97,2253.25,2286.33],[2255.77,2270.28,2253.31,2276.22],[2269.31,2278.4,2250,2312.08],[2267.29,2240.02,2239.21,2276.05],[2244.26,2257.43,2232.02,2261.31],[2257.74,2317.37,2257.42,2317.86],[2318.21,2324.24,2311.6,2330.81],[2321.4,2328.28,2314.97,2332],[2334.74,2326.72,2319.91,2344.89],[2318.58,2297.67,2281.12,2319.99],[2299.38,2301.26,2289,2323.48],[2273.55,2236.3,2232.91,2273.55],[2238.49,2236.62,2228.81,2246.87],[2229.46,2234.4,2227.31,2243.95],[2234.9,2227.74,2220.44,2253.42],[2232.69,2225.29,2217.25,2241.34],[2196.24,2211.59,2180.67,2212.59],[2215.47,2225.77,2215.47,2234.73],[2224.93,2226.13,2212.56,2233.04],[2236.98,2219.55,2217.26,2242.48],[2218.09,2206.78,2204.44,2226.26],[2199.91,2181.94,2177.39,2204.99],[2169.63,2194.85,2165.78,2196.43],[2195.03,2193.8,2178.47,2197.51],[2181.82,2197.6,2175.44,2206.03],[2201.12,2244.64,2200.58,2250.11],[2236.4,2242.17,2232.26,2245.12],[2242.62,2184.54,2182.81,2242.62],[2187.35,2218.32,2184.11,2226.12],[2213.19,2199.31,2191.85,2224.63],[2203.89,2177.91,2173.86,2210.58],[2170.78,2174.12,2161.14,2179.65],[2179.05,2205.5,2179.05,2222.81],[2212.5,2231.17,2212.5,2236.07],[2227.86,2235.57,2219.44,2240.26],[2242.39,2246.3,2235.42,2255.21],[2246.96,2232.97,2221.38,2247.86],[2228.82,2246.83,2225.81,2247.67],[2247.68,2241.92,2231.36,2250.85],[2238.9,2217.01,2205.87,2239.93],[2217.09,2224.8,2213.58,2225.19],[2221.34,2251.81,2210.77,2252.87],[2249.81,2282.87,2248.41,2288.09],[2286.33,2299.99,2281.9,2309.39],[2297.11,2305.11,2290.12,2305.3],[2303.75,2302.4,2292.43,2314.18],[2293.81,2275.67,2274.1,2304.95],[2281.45,2288.53,2270.25,2292.59],[2286.66,2293.08,2283.94,2301.7],[2293.4,2321.32,2281.47,2322.1],[2323.54,2324.02,2321.17,2334.33],[2316.25,2317.75,2310.49,2325.72],[2320.74,2300.59,2299.37,2325.53],[2300.21,2299.25,2294.11,2313.43],[2297.1,2272.42,2264.76,2297.1],[2270.71,2270.93,2260.87,2276.86],[2264.43,2242.11,2240.07,2266.69],[2242.26,2210.9,2205.07,2250.63],[2190.1,2148.35,2126.22,2190.1]]}]},\\\"CandleColumn\\\":{\\\"categories\\\":[\\\"2020/1/24\\\",\\\"2020/1/25\\\",\\\"2020/1/28\\\",\\\"2020/1/29\\\",\\\"2020/1/30\\\",\\\"2020/1/31\\\",\\\"2020/2/1\\\",\\\"2020/2/4\\\",\\\"2020/2/5\\\",\\\"2020/2/6\\\",\\\"2020/2/7\\\",\\\"2020/2/8\\\",\\\"2020/2/18\\\",\\\"2020/2/19\\\",\\\"2020/2/20\\\",\\\"2020/2/21\\\",\\\"2020/2/22\\\",\\\"2020/2/25\\\",\\\"2020/2/26\\\",\\\"2020/2/27\\\",\\\"2020/2/28\\\",\\\"2020/3/1\\\",\\\"2020/3/4\\\",\\\"2020/3/5\\\",\\\"2020/3/6\\\",\\\"2020/3/7\\\",\\\"2020/3/8\\\",\\\"2020/3/11\\\",\\\"2020/3/12\\\",\\\"2020/3/13\\\",\\\"2020/3/14\\\",\\\"2020/3/15\\\",\\\"2020/3/18\\\",\\\"2020/3/19\\\",\\\"2020/3/20\\\",\\\"2020/3/21\\\",\\\"2020/3/22\\\",\\\"2020/3/25\\\",\\\"2020/3/26\\\",\\\"2020/3/27\\\",\\\"2020/3/28\\\",\\\"2020/3/29\\\",\\\"2020/4/1\\\",\\\"2020/4/2\\\",\\\"2020/4/3\\\",\\\"2020/4/8\\\",\\\"2020/4/9\\\",\\\"2020/4/10\\\",\\\"2020/4/11\\\",\\\"2020/4/12\\\",\\\"2020/4/15\\\",\\\"2020/4/16\\\",\\\"2020/4/17\\\",\\\"2020/4/18\\\",\\\"2020/4/19\\\",\\\"2020/4/22\\\",\\\"2020/4/23\\\",\\\"2020/4/24\\\",\\\"2020/4/25\\\",\\\"2020/4/26\\\",\\\"2020/5/2\\\",\\\"2020/5/3\\\",\\\"2020/5/6\\\",\\\"2020/5/7\\\",\\\"2020/5/8\\\",\\\"2020/5/9\\\",\\\"2020/5/10\\\",\\\"2020/5/13\\\",\\\"2020/5/14\\\",\\\"2020/5/15\\\",\\\"2020/5/16\\\",\\\"2020/5/17\\\",\\\"2020/5/20\\\",\\\"2020/5/21\\\",\\\"2020/5/22\\\",\\\"2020/5/23\\\",\\\"2020/5/24\\\",\\\"2020/5/27\\\",\\\"2020/5/28\\\",\\\"2020/5/29\\\",\\\"2020/5/30\\\",\\\"2020/5/31\\\",\\\"2020/6/3\\\",\\\"2020/6/4\\\",\\\"2020/6/5\\\",\\\"2020/6/6\\\",\\\"2020/6/7\\\",\\\"2020/6/13\\\"],\\\"series\\\":[{\\\"name\\\":\\\"成交量1\\\",\\\"data\\\":[15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45]}]},\\\"Word\\\":{\\\"series\\\":[{\\\"name\\\":\\\"跨全端图表\\\",\\\"textSize\\\":25},{\\\"name\\\":\\\"微信小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"支付宝小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"百度小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"QQ小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"头条小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"抖音小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"360小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":10},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":12},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":10},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":12},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":10},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":12},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":10},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":12}]}}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiIxMDEuanMiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///101\n");
=======
eval("/* WEBPACK VAR INJECTION */(function(__f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 _data = _interopRequireDefault(__webpack_require__(/*! @/pages/index/data.json */ 79));\nvar _demodata = _interopRequireDefault(__webpack_require__(/*! @/mockdata/demodata.json */ 78));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 = { data: function data() {return { commonUrl: null, // 通用url\n      show: true, modeClass: 'fade', styles: {}, baseIP: '', baseLedId: '', basePort: '', crnId: '', value: '', xDistance: 0, yDistance: 0, xDuration: 0, yDuration: 0, used: 317, usedPr: 90, stockCount: 0, emptyCount: 0, noneCount: 0, chartsData: { \"Line\": { \"categories\": [], \"series\": [] }, \"Pie\": { \"series\": [{ \"data\": [] }] } }, chartsDataLine1: {}, chartsDataPie2: {}, ringOpts: {}, year: 2022, month: 4, day: 14, hours: 13, minutes: 38, seconds: 13, week: '星期四', ani: '', // move: 'upMove 1.5s 1;',\n      move: false, topMove: 'topUp', floorMove: '', version: '', // newspaper:'拣料出库(4426)\\n源库位:1200101\\n目标站:186\\n1101842-10000-22047518517\\n\\n',\t\n      newspaper: '', errorPaper: '', title: '', staNo: '', matnr: '', maknx: '', count: '', orderNo: null, doneOfTray: '', totalOfTray: '', doneOfUnit: '', totalOfUnit: '', errorMsg: null, width: 'full-width', errorShow: '', pakinShow: '', pakinGun: '', orderShow: false, swiper: 'swiper-here', autoplay: true, // 自动循环\n      interval: 1000, // 调用时长\n      duration: 8000, // 移动速度\n      matList: [], // 订单列表\n      ejectShow: false };}, mounted: function mounted() {var that = this;var BaseIP = uni.getStorageSync('BaseIp');var BaseLedId = uni.getStorageSync('BaseLedId');var BasePort = uni.getStorageSync('BasePort');var BaseCrnId = uni.getStorageSync('BaseCrnId');that.baseIP = BaseIP;that.baseLedId = BaseLedId;that.basePort = BasePort;that.baseCrnId = BaseCrnId;this.getUrl();}, onReady: function onReady() {var _this = this;setInterval(function () {// 获得初始数据\n      _this.initlineChart();_this.initPieChart(); // 主页信息\n      _this.getServerData();_this.getOther(); // 其他信息\n      _this.getDate();_this.getPakin();_this.getError(); // this.getYYY();\n      // this.getEEE();\n      _this.animation();}, 1000);}, methods: { // 获取url\n    getUrl: function getUrl() {this.commonUrl = this.baseHttp + this.baseIP + ':' + this.basePort + this.baseUrl;}, // 获取错误信息\n    getYYY: function getYYY() {var that = this;var result = _data.default.dataEEE; // 测试用 ↓\n      var res = result.data; // 测试用 ↑\n      // 返回结果有值 且值不等于空值 就是有错误信息需要展示\n      if (res.data && res.data !== \"\") {that.errorMsg = res.data;that.errorShow = true;that.move = false; // 显示\n      } else {that.errorPaper = '';that.errorShow = false;if (that.pakinShow) {return;} else {that.move = true; // 隐藏\n        }}}, getEEE: function getEEE() {var that = this;var newsData = '';var str = '';var result = _data.default.dataYYY; // 测试用 ↓\n      var res = result.data; // 测试用 ↑\n      if (res.data && res.data !== null) {if (res.data[0].ioType === 101) {that.title = '全板出库';} else if (res.data[0].ioType === 103) {that.title = '检料出库';}that.staNo = '目标站:' + res.data[0].staNo;that.matnr = '商品编号:' + res.data[0].matDtos[0].matnr;that.maknx = '商品名称:' + res.data[0].matDtos[0].maknx;that.count = '出库数量:' + res.data[0].matDtos[0].count;if (res.data[0].orderNo) {that.orderNo = \"订单号:\" + res.data[0].orderNo;that.orderShow = true;that.width = 'half-width';} else {that.orderNo = null;that.orderShow = false;that.width = 'full-width';}that.doneOfTray = '已出托盘数:' + res.data[0].doneOfTray;that.totalOfTray = '托盘总数量:' + res.data[0].totalOfTray;that.doneOfUnit = '已出箱数:' + res.data[0].doneOfUnit;that.totalOfUnit = '总箱数:' + res.data[0].totalOfUnit;if (that.errorShow) {return;} else {that.newspaper = newsData;that.move = false;}} else {that.move = true;}}, // 获取错误信息\n    getError: function getError() {var that = this;var res;uni.request({ url: that.commonUrl + \"/monitor/led/error\", data: { ledId: that.baseLedId }, method: 'GET', success: function success(result) {res = result.data;if (res.data && res.data !== \"\") {that.errorMsg = res.data;that.errorShow = true;that.move = false; // 显示\n          } else {that.errorShow = false; // if (that.pakinShow) {\n            // \treturn;\n            // } else {\n            // \t// that.move = true // 隐藏\n            // }\n          }} });}, getPakin: function getPakin() {var that = this;that.matList = []; // 清空条码列表\n      var newsData = '';var str = '';var res;uni.request({ url: that.commonUrl + \"/monitor/led\", data: { ledId: that.baseLedId }, method: 'GET', success: function success(result) {res = result.data;if (that.errorShow) {return; // 有错误信息\n          }if (res.data && res.data !== null) {if (res.data[0].ioType === 101) {that.title = '全板出库';} else if (res.data[0].ioType === 103) {that.title = '检料出库';} else that.title = res.data[0].title;that.staNo = '目标站:' + res.data[0].staNo;that.matnr = '商品编号:' + res.data[0].matDtos[0].matnr;that.maknx = '商品名称:' + res.data[0].matDtos[0].maknx;that.count = '出库数量:' + res.data[0].matDtos[0].count;if (res.data[0].orderNo) {that.orderNo = \"订单号:\" + res.data[0].orderNo;that.orderShow = true;that.width = 'half-width';} else {that.orderNo = null;that.orderShow = false;that.width = 'full-width';}that.doneOfTray = '已出托盘数:' + res.data[0].doneOfTray;that.totalOfTray = '托盘总数量:' + res.data[0].totalOfTray;that.doneOfUnit = '已出箱数:' + res.data[0].doneOfUnit;that.totalOfUnit = '总箱数:' + res.data[0].totalOfUnit;that.newspaper = newsData;that.move = false;} else {that.move = true;}} });}, animation: function animation() {__f__(\"log\", this.move, \" at pages/index/index.vue:553\");if (this.move) {this.topMove = 'topUp';this.floorMove = 'floorUp';} else {this.topMove = 'topDown';this.floorMove = 'floorDown';}}, getDateFormat: function getDateFormat(value) {var date = new Date(); // 获取当前时间\n      date.setDate(date.getDate() + value); // 设置天数 -1 天\n      var m = date.getMonth() + 1;var d = date.getDate();var newDate = m + '-' + d;return newDate;}, /*************** 折线图 *****************************************************************************************************/initlineChart: function initlineChart() {var that = this;uni.request({ url: that.commonUrl + \"/monitor/line/charts\", method: 'GET', success: function success(result) {var res = result.data;if (res.code === 200) {that.chartsData.Line.categories = [that.getDateFormat(-11), that.getDateFormat(-10), that.getDateFormat(-9), that.getDateFormat(-8), that.getDateFormat(-7), that.getDateFormat(-6), that.getDateFormat(-5), that.getDateFormat(-4), that.getDateFormat(-3), that.getDateFormat(-2), that.getDateFormat(-1), that.getDateFormat(0)];that.chartsData.Line.series = res.data.rows;}} });}, /*************** 饼图 *****************************************************************************************************/initPieChart: function initPieChart() {var that = this;uni.request({ url: that.commonUrl + \"/monitor/loc/rep\", method: 'GET', success: function success(result) {var res = result.data;if (res.code === 200) {that.chartsData.Pie.series[0].data = res.data.pie;that.stockCount = res.data.stockCunt;that.emptyCount = res.data.emptyCount;that.noneCount = res.data.noneCount;that.used = res.data.used;that.usedPr = res.data.usedPr;}} });}, getOther: function getOther() {var that = this;uni.request({ // http://10.10.0.222:9090/jkwcs/monitor/led?ledId=186\n        url: that.commonUrl + \"/monitor/other\", data: { crnId: that.baseCrnId, ledId: 1 }, success: function success(result) {__f__(\"log\", result, \" at pages/index/index.vue:617\");var res = result.data;if (res.code === 200) {that.xDistance = res.data.xDistance;that.yDistance = res.data.yDistance;that.xDuration = res.data.xDuration;that.yDuration = res.data.yDuration;} else if (res.code === 403) {} else {}\n        } });\n\n    },\n    ejected: function ejected() {\n      this.ejectShow = true;\n    },\n    // 弹出层确认\n    ejectConfirm: function ejectConfirm() {\n      uni.setStorageSync('BaseIp', this.baseIP);\n      uni.setStorageSync('BaseLedId', this.baseLedId);\n      uni.setStorageSync('BasePort', this.basePort);\n      uni.setStorageSync('BaseCrnId', this.baseCrnId);\n      this.getUrl();\n      this.ejectShow = false;\n    },\n    // 弹出层取消\n    ejectClose: function ejectClose() {\n      this.ejectShow = false;\n    },\n    getServerData: function getServerData() {\n      this.chartsDataLine1 = JSON.parse(JSON.stringify(this.chartsData.Line));\n      this.chartsDataPie2 = JSON.parse(JSON.stringify(this.chartsData.Pie));\n    },\n    complete: function complete(e) {\n      __f__(\"log\", \"渲染完成事件\", e, \" at pages/index/index.vue:653\");\n    },\n    getDate: function getDate() {\n      var dt = new Date();\n      this.year = dt.getFullYear();\n      this.month = dt.getMonth() + 1 < 10 ? '0' + (dt.getMonth() + 1) : dt.getMonth() + 1;\n      this.day = dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate();\n      this.hours = dt.getHours() < 10 ? '0' + dt.getHours() : dt.getHours();\n      this.minutes = dt.getMinutes() < 10 ? '0' + dt.getMinutes() : dt.getMinutes();\n      this.seconds = dt.getSeconds() < 10 ? '0' + dt.getSeconds() : dt.getSeconds();\n      this.weeks = dt.getDay();\n      switch (this.weeks) {\n        case 0:this.week = \"星期日\";break;\n        case 1:this.week = \"星期一\";break;\n        case 2:this.week = \"星期二\";break;\n        case 3:this.week = \"星期三\";break;\n        case 4:this.week = \"星期四\";break;\n        case 5:this.week = \"星期五\";break;\n        default:this.week = \"星期六\";}\n\n    } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 10)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlTQTtBQUNBLGdHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQUNBLEVBQ0EsSUFEQSxrQkFDQSxDQUNBLFNBQ0EsZUFEQSxFQUNBO0FBQ0EsZ0JBRkEsRUFHQSxpQkFIQSxFQUlBLFVBSkEsRUFLQSxVQUxBLEVBTUEsYUFOQSxFQU9BLFlBUEEsRUFRQSxTQVJBLEVBU0EsU0FUQSxFQVVBLFlBVkEsRUFXQSxZQVhBLEVBWUEsWUFaQSxFQWFBLFlBYkEsRUFjQSxTQWRBLEVBZUEsVUFmQSxFQWdCQSxhQWhCQSxFQWlCQSxhQWpCQSxFQWtC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QUNBLHNEQUNBLHNCQUNBLHVCQUNBLG9DQUNBLG9DQUNBLG9DQUNBLG9DQUNBLENBTEEsTUFLQSx1QkFFQSxDQUZBLE1BRUEsQ0FFQTtBQUNBLFNBcEJBOztBQXNCQSxLQWxPQTtBQW1PQSxXQW5PQSxxQkFtT0E7QUFDQTtBQUNBLEtBck9BO0FBc09BO0FBQ0EsZ0JBdk9BLDBCQXVPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBOU9BO0FBK09BO0FBQ0EsY0FoUEEsd0JBZ1BBO0FBQ0E7QUFDQSxLQWxQQTtBQW1QQSxpQkFuUEEsMkJBbVBBO0FBQ0E7QUFDQTtBQUNBLEtBdFBBO0FBdVBBLFlBdlBBLG9CQXVQQSxDQXZQQSxFQXVQQTtBQUNBO0FBQ0EsS0F6UEE7QUEwUEEsV0ExUEEscUJBMFBBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBUEE7O0FBU0EsS0E1UUEsRUF6R0EsRSIsImZpbGUiOiIxMDEuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJjb250YWluZXJcIj5cclxuXHRcdDwhLS0g6Lez5Yqo5L+h5oGv5p2/IC0tPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJmbG9vci1zY3JlZW5cIiA6Y2xhc3M9XCJmbG9vck1vdmVcIiA+XHJcblx0XHRcdDwhLS0g5aS06YOoIC0tPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImhlYWRcIj5cclxuXHRcdFx0XHQ8dGV4dCBAY2xpY2s9XCJwb3J0KClcIj7oh6rliqjku5PlupNXQ1Pnm5HmjqflubPlj7A8L3RleHQ+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aW1lLXRvb2xzXCI+e3t5ZWFyfX0te3ttb250aH19LXt7ZGF5fX0mbmJzcHt7aG91cnN9fTp7e21pbnV0ZXN9fTp7e3NlY29uZHN9fSZuYnNwe3t3ZWVrfX08L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24tbGVmdFwiIEBjbGljaz1cImVqZWN0ZWQoKVwiPjwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1yaWdodFwiIEBjbGljaz1cImxlZElkKClcIj48L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJtYWluXCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtYWluLXNpZGVzXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94XCIgc3R5bGU9XCJoZWlnaHQ6IDkwJTtcIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXIxXCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjJcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyM1wiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXI0XCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtcIiB2LXNob3c9XCIhZXJyb3JTaG93XCI+XHJcblx0XHRcdFx0XHRcdFx0PCEtLSDliIbmnInml6DorqLljZXliJLliIbkuKTpg6jliIYgLS0+XHJcblx0XHRcdFx0XHRcdFx0PCEtLSDlt6bkvqfkv6Hmga8gLS0+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJcIiA6Y2xhc3M9XCJ3aWR0aFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSDlhajmnb/lh7rlupMgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtc1wiPnt7dGl0bGV9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0g55uu5qCH56uZIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbXNcIj57e3N0YU5vfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIOWVhuWTgee8luWPtyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1zXCI+e3ttYXRucn19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSDllYblk4HlkI3np7AgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtc1wiPnt7bWFrbnh9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0g5Ye65bqT5pWw6YePIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbXNcIj57e2NvdW50fX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDUwJTtoZWlnaHQ6IDEwMCU7ZGlzcGxheTogaW5saW5lLWJsb2NrO2Zsb2F0OiBsZWZ0O1wiIHYtc2hvdz1cIm9yZGVyU2hvd1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSDorqLljZXlj7cgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtc1wiPnt7b3JkZXJOb319PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSDlt7Llh7rmiZjnm5jmlbAgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtc1wiPnt7ZG9uZU9mVHJheX19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSDmiZjnm5jmgLvmlbDph48gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtc1wiPnt7dG90YWxPZlRyYXl9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0g5bey5Ye6566x5pWwIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbXNcIj57e2RvbmVPZlVuaXR9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0g5oC7566x5pWwIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbXNcIj57e3RvdGFsT2ZVbml0fX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO1wiIHYtc2hvdz1cImVycm9yU2hvd1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwibGluZS1oZWlnaHQ6IDcwMHB4O2ZvbnQtc2l6ZTogMTc1cnB4O1wiPnt7ZXJyb3JNc2d9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0PCEtLSDlhajmnb/lh7rlupMgLS0+XHJcblx0XHRcdFx0XHRcdDwhLS0gPHZpZXcgc3R5bGU9XCJ3aWR0aDogMTAlO2hlaWdodDogMTAwJTtkaXNwbGF5OmlubGluZS1ibG9jaztmbG9hdDogbGVmdDt0ZXh0LWFsaWduOiBjZW50ZXI7cGFkZGluZy10b3A6IDE4MHB4O1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0Pnt7dGl0bGV9fTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0PC92aWV3PiAtLT5cclxuXHRcdFx0XHRcdFx0PCEtLSDmu5rliqjljLrln58gLS0+XHJcblx0XHRcdFx0XHRcdDwhLS0gPHZpZXcgc3R5bGU9XCJ3aWR0aDogODAlO2hlaWdodDogMTAwJTtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCI+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS3mmL7npLpvcmRlcuiuouWNlee8luWPtyAtLT5cclxuXHRcdFx0XHRcdFx0XHQ8IS0tIDx0ZXh0IHYtc2hvdz1cIm9yZGVyU2hvd1wiIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7Zm9udC1zaXplOiAxNDBycHg7XCIgPnt7b3JkZXJOb319PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxzd2lwZXIgOmNsYXNzPVwic3dpcGVyXCIgY2lyY3VsYXI9XCJ0cnVlXCIgdmVydGljYWw9XCJ0cnVlXCIgZGlzcGxheS1tdWx0aXBsZS1pdGVtcz1cIjZcIiA6YXV0b3BsYXk9XCJhdXRvcGxheVwiIDppbnRlcnZhbD1cImludGVydmFsXCIgOmR1cmF0aW9uPVwiZHVyYXRpb25cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxzd2lwZXItaXRlbSB2LWZvcj1cIihpdGVtLGluZGV4KSBpbiBtYXRMaXN0XCIgOmtleT1cImluZGV4XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiZm9udC1zaXplOiAxNjBycHg7XCI+e3tpdGVtfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3N3aXBlci1pdGVtPlxyXG5cdFx0XHRcdFx0XHRcdDwvc3dpcGVyPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+IC0tPlxyXG5cdFx0XHRcdFx0XHQ8IS0tIOermeWPsOWPtyAtLT5cclxuXHRcdFx0XHRcdFx0PCEtLSA8dmlldyBzdHlsZT1cIndpZHRoOiAxMCU7aGVpZ2h0OiAxMDAlO2Rpc3BsYXk6IGlubGluZS1ibG9jaztmbG9hdDogcmlnaHQ7cGFkZGluZy10b3A6IDE4MHB4O1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0Pnt7c3RhTm99fTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0PC92aWV3PiAtLT5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwidG9wLXNjcmVlblwiIDpjbGFzcz1cInRvcE1vdmVcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJoZWFkXCI+XHJcblx0XHRcdFx0PHRleHQgQGNsaWNrPVwicG9ydCgpXCI+6Ieq5Yqo5LuT5bqTV0NT55uR5o6n5bmz5Y+wPC90ZXh0PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidGltZS10b29sc1wiPnt7eWVhcn19LXt7bW9udGh9fS17e2RheX19Jm5ic3B7e2hvdXJzfX06e3ttaW51dGVzfX06e3tzZWNvbmRzfX0mbmJzcHt7d2Vla319PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLWxlZnRcIiBAY2xpY2s9XCJlamVjdGVkKClcIj48L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24tcmlnaHRcIiBAY2xpY2s9XCJsZWRJZCgpXCI+PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwibWFpblwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwibWFpbi1zaWRlc1wiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3ggYm94LWxnXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyMVwiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXIyXCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjNcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyNFwiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbSBpbnRyb2R1Y2VcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aDM+6Ieq5Yqo5YyW56uL5L2T5LuT5bqTPC9oMz5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cImVuZ2xpc2hcIj5BdXRvbWF0aWMgU3RvcmFnZWFuZCBSZXRyaWV2YWwgU3lzdGVtPC9wPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwiaW50cm9kdWNlLWNvbnRlbnRcIj4gIOWIqeeUqOeri+S9k+S7k+W6k+iuvuWkh+WPr+WunueOsOS7k+W6k+mrmOWxguWQiOeQhuWMluOAgeWtmOWPluiHquWKqOWMluOAgeaTjeS9nOeugOS+v+WMlu+8m+iHquWKqOWMlueri+S9k+S7k+W6k+aYr+W9k+WJjeaKgOacr+awtOW5s+i+g+mrmOeahOW9ouW8j+OAglxyXG5cdFx0XHRcdFx0XHRcdOiHquWKqOWMlueri+S9k+S7k+W6k+eahOS4u+S9k+eUsei0p+aetuOAgeW3t+mBk+W8j+WghuWem+i1t+mHjeacuuOAgeWFpe+8iOWHuu+8ieW6k+W3peS9nOWPsOWSjOiHquWKqOi/kOi/m++8iOWHuu+8ieWPiuaTjeS9nOaOp+WItuezu+e7n+e7hOaIkOOAglxyXG5cdFx0XHRcdFx0XHRcdOi0p+aetuaYr+mSoue7k+aehOaIlumSoueti+a3t+WHneWcn+e7k+aehOeahOW7uuetkeeJqeaIlue7k+aehOS9k++8jOi0p+aetuWGheaYr+agh+WHhuWwuuWvuOeahOi0p+S9jeepuumXtO+8jOW3t+mBk+WghuWem+i1t+mHjeacuuepv+ihjOS6jui0p+aetuS5i+mXtOeahOW3t+mBk+S4re+8jOWujOaIkOWtmOOAgeWPlui0p+eahOW3peS9nOOAgueuoeeQhuS4iumHh+eUqOiuoeeul+acuuWPiuadoeW9oueggeaKgOacr+OAgjwvcD5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtIGNoYXJnZS1pbmZvXCI+XHJcblx0XHRcdFx0XHRcdFx0PGgzPuS7k+W6k+aVsOaNrjwvaDM+XHJcblx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJlbmdsaXNoXCI+d2FyZWhvdXNlIGRhdGE8L3A+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJjaGFyZ2UtaW5mby1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2ExLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiY291bnRcIj57e3hEaXN0YW5jZX19PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInVuaXRcIj5tPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXc+57Sv6K6h6LWw6KGM6Led56a7KOexsyk8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiY2hhcmdlLWluZm8taXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9iMS5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cImNvdW50XCI+e3t5RGlzdGFuY2V9fTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ1bml0XCI+bTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3Pue0r+iuoeWNh+mZjei3neemuyjnsbMpPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImNoYXJnZS1pbmZvLWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvYzEucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJjb3VudFwiPnt7eER1cmF0aW9ufX08L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidW5pdFwiPm08L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldz7ntK/orqHotbDooYzml7bplb8o56eSKTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJjaGFyZ2UtaW5mby1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2QxLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiY291bnRcIj57e3lEdXJhdGlvbn19PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInVuaXRcIj5tPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXc+57Sv6K6h5Y2H6ZmN5pe26ZW/KOenkik8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW0gdXNlLWluZm9cIj5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInVzZS1sZWZ0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aDM+5bqT5L2N5L2/55So546HPC9oMz5cclxuXHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwiZW5nbGlzaFwiPkVRVUlQTUVOVCBVU0FHRSBUSElTIE1PTlRIPC9wPlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInVzZS1yaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGgzPnt7dXNlZFByfX0lPC9oMz5cclxuXHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwiZW5nbGlzaFwiPuWQjOavlOS4iuaciCArIDUlPC9wPlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInVzZS1tYWluXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImxlZnRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwcm9ncmVzc0JhclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwicHJvZ3Jlc3NcIiA6c3R5bGU9XCInd2lkdGg6JysgdXNlZFByICsgJyUnXCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gPHByb2dyZXNzIHBlcmNlbnQ9XCIyMFwiYWN0aXZlQ29sb3I9XCIjRkY1NzIyXCIgYmFja2dyb3VuZENvbG9yPVwiIzIzMzc1MVwiIHN0cm9rZS13aWR0aD1cIjMwXCI+PC9wcm9ncmVzcz4gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdHt7dXNlZH19XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwibWFpbi1zaWRlc1wiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3ggYm94LXRwXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyMVwiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXIyXCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjNcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyNFwiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbSByaWdodC1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJzdWItbGVmdFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGgzPuWFpeWHuuW6k+e7n+iuoTwvaDM+XHJcblx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cImVuZ2xpc2hcIj5PUkRFUiBTVEFUSVNUSUNTPC9wPlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInN1Yi1yaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGgzPjMxPC9oMz5cclxuXHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwiZW5nbGlzaFwiPuS7iuaXpeiuouWNleaVsDwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJzdWItbWFpblwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJjaGFydHMtYm94XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQgIDxxaXVuLWRhdGEtY2hhcnRzIHR5cGU9XCJsaW5lXCIgOmNoYXJ0RGF0YT1cImNoYXJ0c0RhdGFMaW5lMVwiIDplY2hhcnRzSDU9XCJ0cnVlXCIgOmVjaGFydHNBcHA9XCJ0cnVlXCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3ggYm94LW1kXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyMVwiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXIyXCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjNcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyNFwiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbSByaWdodC1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJzdWItbGVmdFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGgzPuW6k+WtmOexu+WeizwvaDM+XHJcblx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cImVuZ2xpc2hcIj5JTkNPTUUgREFURTwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJzdWItcmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxoMz7ku4rlpKk8L2gzPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJlbmdsaXNoXCI+VG9kYXk8L3A+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwic3ViLW1haW5cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiY2hhcnRzLWJveCByaW5nXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxxaXVuLWRhdGEtY2hhcnRzIHR5cGU9XCJyaW5nXCIgOm9wdHM9XCJ7bGVnZW5kOntwb3NpdGlvbjonYm90dG9tJ319XCIgOmVvcHRzPVwicmluZ09wdHNcIiA6Y2hhcnREYXRhPVwiY2hhcnRzRGF0YVBpZTJcIiA6ZWNoYXJ0c0g1PVwidHJ1ZVwiIDplY2hhcnRzQXBwPVwidHJ1ZVwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwic3ViLW1haW4tcmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJzdWItaW5mb1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvZzEucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQ+5Zyo5bqTPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0Pnt7c3RvY2tDb3VudH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwic3ViLWluZm9cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2YxLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0PuepuuW6kzwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dD57e2VtcHR5Q291bnR9fTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInN1Yi1pbmZvXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9lMS5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dD7npoHnlKg8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQ+e3tub25lQ291bnR9fTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3ggYm94LWJ0XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyMVwiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXIyXCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjNcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyNFwiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PCEtLSA8dGV4dD7mtZnmsZ/kuK3miaznq4vlupPmioDmnK/mnInpmZDlhazlj7g8L3RleHQ+XHJcblx0XHRcdFx0XHRcdDx0ZXh0PuW9k+WJjeeJiOacrOWPtzwvdGV4dD4gLS0+XHJcblx0XHRcdFx0XHRcdDx2aWV3IEBjbGljaz1cImNybigpXCI+5ZiJ5ZaE6L656ZSL5py65qKw6IKh5Lu95pyJ6ZmQ5YWs5Y+4PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8IS0tIDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvYmFyY29kZS5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT4gLS0+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldz5cclxuXHRcdFx0PCEtLSDovpPlhaV1cmwgLS0+XHJcblx0XHRcdDx1bmktcG9wdXAgcmVmPVwidXJsXCIgdHlwZT1cImRpYWxvZ1wiPlxyXG5cdFx0XHRcdDx1bmktcG9wdXAtZGlhbG9nIHJlZj1cImlucHV0Q2xvc2VcIiBtb2RlPVwiaW5wdXRcIiB0aXRsZT1cIumFjee9rnVybFwiIDp2YWx1ZT1cImJhc2VJUFwiXHJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIuekuuS+izoxOTIuMTY4LjEuMVwiIEBjb25maXJtPVwiYmFzZVVybENvbmZpcm1cIj48L3VuaS1wb3B1cC1kaWFsb2c+XHJcblx0XHRcdDwvdW5pLXBvcHVwPlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PHZpZXc+XHJcblx0XHRcdDwhLS0g6L6T5YWlbGVkSWQgLS0+XHJcblx0XHRcdDx1bmktcG9wdXAgcmVmPVwibGVkSWRcIiB0eXBlPVwiZGlhbG9nXCI+XHJcblx0XHRcdFx0PHVuaS1wb3B1cC1kaWFsb2cgcmVmPVwiaW5wdXRDbG9zZVwiIG1vZGU9XCJpbnB1dFwiIHRpdGxlPVwi6YWN572ubGVkSWRcIiA6dmFsdWU9XCJiYXNlTGVkSWRcIlxyXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCLnpLrkvos6MTg4XCIgQGNvbmZpcm09XCJsZWRJZENvbmZpcm1cIj48L3VuaS1wb3B1cC1kaWFsb2c+XHJcblx0XHRcdDwvdW5pLXBvcHVwPlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PHZpZXc+XHJcblx0XHRcdDwhLS0g6L6T5YWlcG9ydCAtLT5cclxuXHRcdFx0PHVuaS1wb3B1cCByZWY9XCJwb3J0XCIgdHlwZT1cImRpYWxvZ1wiPlxyXG5cdFx0XHRcdDx1bmktcG9wdXAtZGlhbG9nIHJlZj1cImlucHV0Q2xvc2VcIiBtb2RlPVwiaW5wdXRcIiB0aXRsZT1cIumFjee9ruerr+WPo+WPt1wiIDp2YWx1ZT1cImJhc2VQb3J0XCJcclxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwi56S65L6LOjkwOTBcIiBAY29uZmlybT1cInBvcnRDb25maXJtXCI+PC91bmktcG9wdXAtZGlhbG9nPlxyXG5cdFx0XHQ8L3VuaS1wb3B1cD5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3PlxyXG5cdFx0XHQ8IS0tIOi+k+WFpWNybklkIC0tPlxyXG5cdFx0XHQ8dW5pLXBvcHVwIHJlZj1cImNybklkXCIgdHlwZT1cImRpYWxvZ1wiPlxyXG5cdFx0XHRcdDx1bmktcG9wdXAtZGlhbG9nIHJlZj1cImlucHV0Q2xvc2VcIiBtb2RlPVwiaW5wdXRcIiB0aXRsZT1cIumFjee9ruWghuWem+aculwiIDp2YWx1ZT1cImNybklkXCJcclxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwi56S65L6LOjFcIiBAY29uZmlybT1cImNybkNvbmZpcm1cIj48L3VuaS1wb3B1cC1kaWFsb2c+XHJcblx0XHRcdDwvdW5pLXBvcHVwPlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PCEtLSDoh6rlrprkuYnlvLnlh7rlsYIgLS0+XHJcblx0XHQ8dmlldyBjbGFzcz1cImVqZWN0LW1hc2tcIiB2LXNob3c9XCJlamVjdFNob3dcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJlamVjdFwiPlxyXG5cdFx0XHRcdDwhLS0g5by55Ye6dGl0bGUgLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJlamVjdC10aXRsZVwiPuS/ruaUuSAvIOmFjee9rjwvdmlldz5cclxuXHRcdFx0XHQ8IS0tIGlucHV0IC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiZWplY3QtaW5wdXRcIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj5pcO+8mjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJiYXNlSVBcIj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY1wiPnBvcnTvvJo8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiYmFzZVBvcnRcIj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY1wiPmxlZElk77yaPC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCI+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cImJhc2VMZWRJZFwiPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW1cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkZXNjXCI+Q3JuSWTvvJo8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiYmFzZUNybklkXCI+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSBidXR0b24gLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJlamVjdC1idXR0b25cIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLWl0ZW1cIiBAY2xpY2s9XCJlamVjdENsb3NlXCI+5Y+WIOa2iDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLWl0ZW1cIiBAY2xpY2s9XCJlamVjdENvbmZpcm1cIj7noa4g6K6kPC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCB5Y3FkYXRhIGZyb20gJ0AvcGFnZXMvaW5kZXgvZGF0YS5qc29uJztcclxuXHRpbXBvcnQgZGVtb2RhdGEgZnJvbSAnQC9tb2NrZGF0YS9kZW1vZGF0YS5qc29uJztcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGNvbW1vblVybDpudWxsLCAvLyDpgJrnlKh1cmxcclxuXHRcdFx0XHRzaG93OiB0cnVlLFxyXG5cdFx0XHRcdG1vZGVDbGFzczogJ2ZhZGUnLFxyXG5cdFx0XHRcdHN0eWxlczoge30sXHJcblx0XHRcdFx0YmFzZUlQOicnLFxyXG5cdFx0XHRcdGJhc2VMZWRJZDonJyxcclxuXHRcdFx0XHRiYXNlUG9ydDonJyxcclxuXHRcdFx0XHRjcm5JZDonJyxcclxuXHRcdFx0XHR2YWx1ZTogJycsXHJcblx0XHRcdFx0eERpc3RhbmNlOiAwLFxyXG5cdFx0XHRcdHlEaXN0YW5jZTowLFxyXG5cdFx0XHRcdHhEdXJhdGlvbjowLFxyXG5cdFx0XHRcdHlEdXJhdGlvbjowLFxyXG5cdFx0XHRcdHVzZWQ6MzE3LFxyXG5cdFx0XHRcdHVzZWRQcjogOTAsXHJcblx0XHRcdFx0c3RvY2tDb3VudDowLFxyXG5cdFx0XHRcdGVtcHR5Q291bnQ6MCxcclxuXHRcdFx0XHRub25lQ291bnQ6MCxcclxuXHRcdFx0XHRjaGFydHNEYXRhOiB7XHJcblx0XHRcdFx0XHRcIkxpbmVcIjoge1xyXG5cdFx0XHRcdFx0XHRcImNhdGVnb3JpZXNcIjogW10sXHJcblx0XHRcdFx0XHRcdFwic2VyaWVzXCI6IFtdXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XCJQaWVcIjoge1xyXG5cdFx0XHRcdFx0XHRcInNlcmllc1wiOiBbe1xyXG5cdFx0XHRcdFx0XHRcdFwiZGF0YVwiOiBbXVxyXG5cdFx0XHRcdFx0XHR9XVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGNoYXJ0c0RhdGFMaW5lMToge30sXHJcblx0XHRcdFx0Y2hhcnRzRGF0YVBpZTI6IHt9LFxyXG5cdFx0XHRcdHJpbmdPcHRzOnt9LFxyXG5cdFx0XHRcdHllYXI6MjAyMixcclxuXHRcdFx0XHRtb250aDo0LFxyXG5cdFx0XHRcdGRheToxNCxcclxuXHRcdFx0XHRob3VyczoxMyxcclxuXHRcdFx0XHRtaW51dGVzOjM4LFxyXG5cdFx0XHRcdHNlY29uZHM6MTMsXHJcblx0XHRcdFx0d2Vlazon5pif5pyf5ZubJyxcclxuXHRcdFx0XHRhbmk6JycsXHJcblx0XHRcdFx0Ly8gbW92ZTogJ3VwTW92ZSAxLjVzIDE7JyxcclxuXHRcdFx0XHRtb3ZlOmZhbHNlLFxyXG5cdFx0XHRcdHRvcE1vdmU6J3RvcFVwJyxcclxuXHRcdFx0XHRmbG9vck1vdmU6JycsXHJcblx0XHRcdFx0dmVyc2lvbjonJyxcclxuXHRcdFx0XHQvLyBuZXdzcGFwZXI6J+aLo+aWmeWHuuW6k++8iDQ0MjYpXFxu5rqQ5bqT5L2N77yaMTIwMDEwMVxcbuebruagh+erme+8mjE4NlxcbjExMDE4NDItMTAwMDAtMjIwNDc1MTg1MTdcXG5cXG4nLFx0XHJcblx0XHRcdFx0bmV3c3BhcGVyOicnLFxyXG5cdFx0XHRcdGVycm9yUGFwZXI6JycsXHJcblx0XHRcdFx0dGl0bGU6JycsXHJcblx0XHRcdFx0c3RhTm86JycsXHJcblx0XHRcdFx0bWF0bnI6JycsXHJcblx0XHRcdFx0bWFrbng6JycsXHJcblx0XHRcdFx0Y291bnQ6JycsXHJcblx0XHRcdFx0b3JkZXJObzpudWxsLFxyXG5cdFx0XHRcdGRvbmVPZlRyYXk6JycsXHJcblx0XHRcdFx0dG90YWxPZlRyYXk6JycsXHJcblx0XHRcdFx0ZG9uZU9mVW5pdDonJyxcclxuXHRcdFx0XHR0b3RhbE9mVW5pdDonJyxcclxuXHRcdFx0XHRlcnJvck1zZzpudWxsLFxyXG5cdFx0XHRcdHdpZHRoOidmdWxsLXdpZHRoJyxcclxuXHRcdFx0XHRlcnJvclNob3c6JycsXHJcblx0XHRcdFx0cGFraW5TaG93OicnLFxyXG5cdFx0XHRcdHBha2luR3VuOicnLFxyXG5cdFx0XHRcdG9yZGVyU2hvdzpmYWxzZSxcclxuXHRcdFx0XHRzd2lwZXI6J3N3aXBlci1oZXJlJyxcclxuXHRcdFx0XHRhdXRvcGxheTp0cnVlLCAvLyDoh6rliqjlvqrnjq9cclxuXHRcdFx0XHRpbnRlcnZhbDoxMDAwLCAvLyDosIPnlKjml7bplb9cclxuXHRcdFx0XHRkdXJhdGlvbjo4MDAwLCAvLyDnp7vliqjpgJ/luqZcclxuXHRcdFx0XHRtYXRMaXN0OltdLCAvLyDorqLljZXliJfooahcclxuXHRcdFx0XHRlamVjdFNob3c6IGZhbHNlLFxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bW91bnRlZCgpIHtcclxuXHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdGNvbnN0IEJhc2VJUCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZUlwJyk7XHJcblx0XHRcdGNvbnN0IEJhc2VMZWRJZCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZUxlZElkJyk7XHJcblx0XHRcdGNvbnN0IEJhc2VQb3J0ID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlUG9ydCcpO1xyXG5cdFx0XHRjb25zdCBCYXNlQ3JuSWQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VDcm5JZCcpO1xyXG5cdFx0XHRcdHRoYXQuYmFzZUlQID0gQmFzZUlQXHJcblx0XHRcdFx0dGhhdC5iYXNlTGVkSWQgPSBCYXNlTGVkSWRcclxuXHRcdFx0XHR0aGF0LmJhc2VQb3J0ID0gQmFzZVBvcnRcclxuXHRcdFx0XHR0aGF0LmJhc2VDcm5JZCA9IEJhc2VDcm5JZFxyXG5cdFx0XHR0aGlzLmdldFVybCgpXHJcblx0XHR9LFxyXG5cdFx0b25SZWFkeSgpIHtcclxuXHRcdFx0c2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG5cdFx0XHRcdC8vIOiOt+W+l+WIneWni+aVsOaNrlxyXG5cdFx0XHRcdHRoaXMuaW5pdGxpbmVDaGFydCgpO1xyXG5cdFx0XHRcdHRoaXMuaW5pdFBpZUNoYXJ0KCk7XHJcblx0XHRcdFx0Ly8g5Li76aG15L+h5oGvXHJcblx0XHRcdFx0dGhpcy5nZXRTZXJ2ZXJEYXRhKCk7XHJcblx0XHRcdFx0dGhpcy5nZXRPdGhlcigpO1xyXG5cdFx0XHRcdC8vIOWFtuS7luS/oeaBr1xyXG5cdFx0XHRcdHRoaXMuZ2V0RGF0ZSgpO1xyXG5cdFx0XHRcdHRoaXMuZ2V0UGFraW4oKTtcclxuXHRcdFx0XHR0aGlzLmdldEVycm9yKCk7XHJcblx0XHRcdFx0Ly8gdGhpcy5nZXRZWVkoKTtcclxuXHRcdFx0XHQvLyB0aGlzLmdldEVFRSgpO1xyXG5cdFx0XHRcdHRoaXMuYW5pbWF0aW9uKCk7XHJcblx0XHRcdH0sMTAwMClcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdC8vIOiOt+WPlnVybFxyXG5cdFx0XHRnZXRVcmwoKSB7XHJcblx0XHRcdFx0dGhpcy5jb21tb25VcmwgPSB0aGlzLmJhc2VIdHRwICsgdGhpcy5iYXNlSVAgKyAnOicgK3RoaXMuYmFzZVBvcnQgKyB0aGlzLmJhc2VVcmxcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g6I635Y+W6ZSZ6K+v5L+h5oGvXHJcblx0XHRcdGdldFlZWSgpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHR2YXIgcmVzdWx0ID0geWNxZGF0YS5kYXRhRUVFXHJcblx0XHRcdFx0Ly8g5rWL6K+V55SoIOKGk1xyXG5cdFx0XHRcdHZhclx0cmVzID0gcmVzdWx0LmRhdGFcclxuXHRcdFx0XHQvLyDmtYvor5XnlKgg4oaRXHJcblx0XHRcdFx0Ly8g6L+U5Zue57uT5p6c5pyJ5YC8IOS4lOWAvOS4jeetieS6juepuuWAvCDlsLHmmK/mnInplJnor6/kv6Hmga/pnIDopoHlsZXnpLpcclxuXHRcdFx0XHRpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEgIT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0dGhhdC5lcnJvck1zZyA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHR0aGF0LmVycm9yU2hvdyA9IHRydWVcclxuXHRcdFx0XHRcdHRoYXQubW92ZSA9IGZhbHNlIC8vIOaYvuekulxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aGF0LmVycm9yUGFwZXIgPSAnJ1xyXG5cdFx0XHRcdFx0dGhhdC5lcnJvclNob3cgPSBmYWxzZVxyXG5cdFx0XHRcdFx0aWYgKHRoYXQucGFraW5TaG93KSB7XHJcblx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRoYXQubW92ZSA9IHRydWUgLy8g6ZqQ6JePXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRFRUUgKCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdHZhciBuZXdzRGF0YSA9ICcnXHJcblx0XHRcdFx0dmFyIHN0ciA9ICcnXHJcblx0XHRcdFx0bGV0IHJlc3VsdCA9IHljcWRhdGEuZGF0YVlZWVxyXG5cdFx0XHRcdFx0XHQvLyDmtYvor5XnlKgg4oaTXHJcblx0XHRcdFx0bGV0XHRyZXMgPSByZXN1bHQuZGF0YVxyXG5cdFx0XHRcdFx0XHQvLyDmtYvor5XnlKgg4oaRXHJcblx0XHRcdFx0XHRpZihyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0XHRpZiAocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDEpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnRpdGxlID0gJ+WFqOadv+WHuuW6kydcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAzKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC50aXRsZSA9ICfmo4Dmlpnlh7rlupMnXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0dGhhdC5zdGFObyA9ICfnm67moIfnq5k6JyArIHJlcy5kYXRhWzBdLnN0YU5vXHJcblx0XHRcdFx0XHRcdHRoYXQubWF0bnIgPSAn5ZWG5ZOB57yW5Y+377yaJyArIHJlcy5kYXRhWzBdLm1hdER0b3NbMF0ubWF0bnJcclxuXHRcdFx0XHRcdFx0dGhhdC5tYWtueCA9ICfllYblk4HlkI3np7DvvJonICsgcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYWtueFxyXG5cdFx0XHRcdFx0XHR0aGF0LmNvdW50ID0gJ+WHuuW6k+aVsOmHj++8micgKyByZXMuZGF0YVswXS5tYXREdG9zWzBdLmNvdW50XHJcblx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YVswXS5vcmRlck5vKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5vcmRlck5vID0gXCLorqLljZXlj7fvvJpcIiArIHJlcy5kYXRhWzBdLm9yZGVyTm9cclxuXHRcdFx0XHRcdFx0XHR0aGF0Lm9yZGVyU2hvdyA9IHRydWVcclxuXHRcdFx0XHRcdFx0XHR0aGF0LndpZHRoID0gJ2hhbGYtd2lkdGgnXHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5vcmRlck5vID0gbnVsbDtcclxuXHRcdFx0XHRcdFx0XHR0aGF0Lm9yZGVyU2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhhdC53aWR0aCA9ICdmdWxsLXdpZHRoJ1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdHRoYXQuZG9uZU9mVHJheSA9ICflt7Llh7rmiZjnm5jmlbA6JyArIHJlcy5kYXRhWzBdLmRvbmVPZlRyYXlcclxuXHRcdFx0XHRcdFx0dGhhdC50b3RhbE9mVHJheSA9ICfmiZjnm5jmgLvmlbDph4/vvJonICsgcmVzLmRhdGFbMF0udG90YWxPZlRyYXlcclxuXHRcdFx0XHRcdFx0dGhhdC5kb25lT2ZVbml0ID0gJ+W3suWHuueuseaVsO+8micgKyByZXMuZGF0YVswXS5kb25lT2ZVbml0XHJcblx0XHRcdFx0XHRcdHRoYXQudG90YWxPZlVuaXQgPSAn5oC7566x5pWw77yaJyArIHJlcy5kYXRhWzBdLnRvdGFsT2ZVbml0XHJcblx0XHRcdFx0XHRcdGlmICh0aGF0LmVycm9yU2hvdykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGF0Lm5ld3NwYXBlciA9IG5ld3NEYXRhXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoYXQubW92ZSA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9ZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRoYXQubW92ZSA9IHRydWVcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOiOt+WPlumUmeivr+S/oeaBr1xyXG5cdFx0XHRnZXRFcnJvcigpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHR2YXIgcmVzXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbGVkL2Vycm9yXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0XHRcdGxlZElkOnRoYXQuYmFzZUxlZElkXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0bWV0aG9kOidHRVQnLFxyXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0cmVzID0gcmVzdWx0LmRhdGEgXHJcblx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gXCJcIikge1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuZXJyb3JNc2cgPSByZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuZXJyb3JTaG93ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQubW92ZSA9IGZhbHNlIC8vIOaYvuekulxyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuZXJyb3JTaG93ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0XHQvLyBpZiAodGhhdC5wYWtpblNob3cpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBcdHJldHVybjtcclxuXHRcdFx0XHRcdFx0XHQvLyB9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdC8vIFx0Ly8gdGhhdC5tb3ZlID0gdHJ1ZSAvLyDpmpDol49cclxuXHRcdFx0XHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0UGFraW4gKCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdHRoYXQubWF0TGlzdCA9IFtdIC8vIOa4heepuuadoeeggeWIl+ihqFxyXG5cdFx0XHRcdHZhciBuZXdzRGF0YSA9ICcnXHJcblx0XHRcdFx0dmFyIHN0ciA9ICcnXHJcblx0XHRcdFx0bGV0IHJlcyBcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9sZWRcIixcclxuXHRcdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdFx0bGVkSWQ6dGhhdC5iYXNlTGVkSWRcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRtZXRob2Q6J0dFVCcsXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0XHRyZXMgPSByZXN1bHQuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAodGhhdC5lcnJvclNob3cpIHtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm47ICAvLyDmnInplJnor6/kv6Hmga9cclxuXHRcdFx0XHRcdFx0fSBcclxuXHRcdFx0XHRcdFx0aWYocmVzLmRhdGEgJiYgcmVzLmRhdGEgIT09IG51bGwpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQudGl0bGUgPSAn5YWo5p2/5Ye65bqTJ1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwMykge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC50aXRsZSA9ICfmo4Dmlpnlh7rlupMnXHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhhdC50aXRsZSA9IHJlcy5kYXRhWzBdLnRpdGxlXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5zdGFObyA9ICfnm67moIfnq5k6JyArIHJlcy5kYXRhWzBdLnN0YU5vXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5tYXRuciA9ICfllYblk4HnvJblj7fvvJonICsgcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYXRuclxyXG5cdFx0XHRcdFx0XHRcdHRoYXQubWFrbnggPSAn5ZWG5ZOB5ZCN56ew77yaJyArIHJlcy5kYXRhWzBdLm1hdER0b3NbMF0ubWFrbnhcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmNvdW50ID0gJ+WHuuW6k+aVsOmHj++8micgKyByZXMuZGF0YVswXS5tYXREdG9zWzBdLmNvdW50XHJcblx0XHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhWzBdLm9yZGVyTm8pIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQub3JkZXJObyA9IFwi6K6i5Y2V5Y+377yaXCIgKyByZXMuZGF0YVswXS5vcmRlck5vXHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0Lm9yZGVyU2hvdyA9IHRydWVcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQud2lkdGggPSAnaGFsZi13aWR0aCdcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5vcmRlck5vID0gbnVsbDtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQub3JkZXJTaG93ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQud2lkdGggPSAnZnVsbC13aWR0aCdcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5kb25lT2ZUcmF5ID0gJ+W3suWHuuaJmOebmOaVsDonICsgcmVzLmRhdGFbMF0uZG9uZU9mVHJheVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQudG90YWxPZlRyYXkgPSAn5omY55uY5oC75pWw6YeP77yaJyArIHJlcy5kYXRhWzBdLnRvdGFsT2ZUcmF5XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5kb25lT2ZVbml0ID0gJ+W3suWHuueuseaVsO+8micgKyByZXMuZGF0YVswXS5kb25lT2ZVbml0XHJcblx0XHRcdFx0XHRcdFx0dGhhdC50b3RhbE9mVW5pdCA9ICfmgLvnrrHmlbDvvJonICsgcmVzLmRhdGFbMF0udG90YWxPZlVuaXRcclxuXHRcdFx0XHRcdFx0XHR0aGF0Lm5ld3NwYXBlciA9IG5ld3NEYXRhXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5tb3ZlID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0fWVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQubW92ZSA9IHRydWVcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRhbmltYXRpb24oKSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2codGhpcy5tb3ZlKTtcclxuXHRcdFx0XHRpZiAodGhpcy5tb3ZlKSB7IFxyXG5cdFx0XHRcdFx0dGhpcy50b3BNb3ZlID0gJ3RvcFVwJ1xyXG5cdFx0XHRcdFx0dGhpcy5mbG9vck1vdmUgPSAnZmxvb3JVcCdcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy50b3BNb3ZlID0gJ3RvcERvd24nXHJcblx0XHRcdFx0XHR0aGlzLmZsb29yTW92ZSA9ICdmbG9vckRvd24nXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXREYXRlRm9ybWF0KHZhbHVlKSB7XHJcblx0XHRcdFx0dmFyIGRhdGUgPSBuZXcgRGF0ZSgpOy8vIOiOt+WPluW9k+WJjeaXtumXtFxyXG5cdFx0XHRcdGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIHZhbHVlKTsvLyDorr7nva7lpKnmlbAgLTEg5aSpXHJcblx0XHRcdFx0dmFyIG0gPSBkYXRlLmdldE1vbnRoKCkgKyAxXHJcblx0XHRcdFx0dmFyIGQgPSBkYXRlLmdldERhdGUoKVxyXG5cdFx0XHRcdHZhciBuZXdEYXRlID0gbSArICctJyArIGRcclxuXHRcdFx0XHRyZXR1cm4gbmV3RGF0ZVxyXG5cdFx0XHR9LFxyXG4vKioqKioqKioqKioqKioqIOaKmOe6v+WbviAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHRcdFx0aW5pdGxpbmVDaGFydCgpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9saW5lL2NoYXJ0c1wiLFxyXG5cdFx0XHRcdFx0bWV0aG9kOidHRVQnLFxyXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5jaGFydHNEYXRhLkxpbmUuY2F0ZWdvcmllcyA9IFtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMTEpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMTApLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtOSksdGhhdC5nZXREYXRlRm9ybWF0KC04KSxcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNyksdGhhdC5nZXREYXRlRm9ybWF0KC02KSx0aGF0LmdldERhdGVGb3JtYXQoLTUpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNCksXHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmdldERhdGVGb3JtYXQoLTMpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMiksdGhhdC5nZXREYXRlRm9ybWF0KC0xKSx0aGF0LmdldERhdGVGb3JtYXQoMCksXVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuY2hhcnRzRGF0YS5MaW5lLnNlcmllcyA9IHJlcy5kYXRhLnJvd3NcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcbi8qKioqKioqKioqKioqKiog6aW85Zu+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5cdFx0XHRpbml0UGllQ2hhcnQoKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbG9jL3JlcFwiLFxyXG5cdFx0XHRcdFx0bWV0aG9kOidHRVQnLFxyXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5jaGFydHNEYXRhLlBpZS5zZXJpZXNbMF0uZGF0YSA9IHJlcy5kYXRhLnBpZVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuc3RvY2tDb3VudCA9IHJlcy5kYXRhLnN0b2NrQ3VudFxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuZW1wdHlDb3VudCA9IHJlcy5kYXRhLmVtcHR5Q291bnRcclxuXHRcdFx0XHRcdFx0XHR0aGF0Lm5vbmVDb3VudCA9IHJlcy5kYXRhLm5vbmVDb3VudFxyXG5cdFx0XHRcdFx0XHRcdHRoYXQudXNlZCA9IHJlcy5kYXRhLnVzZWRcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnVzZWRQciA9IHJlcy5kYXRhLnVzZWRQclxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0T3RoZXIoKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0Ly8gaHR0cDovLzEwLjEwLjAuMjIyOjkwOTAvamt3Y3MvbW9uaXRvci9sZWQ/bGVkSWQ9MTg2XHJcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9vdGhlclwiLFxyXG5cdFx0XHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdFx0XHRjcm5JZDogdGhhdC5iYXNlQ3JuSWQsIFxyXG5cdFx0XHRcdFx0XHRsZWRJZDogMSxcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG5cdFx0XHRcdFx0XHR2YXIgcmVzID0gcmVzdWx0LmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnhEaXN0YW5jZSA9IHJlcy5kYXRhLnhEaXN0YW5jZVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQueURpc3RhbmNlID0gcmVzLmRhdGEueURpc3RhbmNlXHJcblx0XHRcdFx0XHRcdFx0dGhhdC54RHVyYXRpb24gPSByZXMuZGF0YS54RHVyYXRpb25cclxuXHRcdFx0XHRcdFx0XHR0aGF0LnlEdXJhdGlvbiA9IHJlcy5kYXRhLnlEdXJhdGlvblxyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHJlcy5jb2RlID09PSA0MDMpIHtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdGVqZWN0ZWQgKCkge1xyXG5cdFx0XHRcdHRoaXMuZWplY3RTaG93ID0gdHJ1ZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDlvLnlh7rlsYLnoa7orqRcclxuXHRcdFx0ZWplY3RDb25maXJtKCkge1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZUlwJywgdGhpcy5iYXNlSVApO1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZUxlZElkJywgdGhpcy5iYXNlTGVkSWQpO1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZVBvcnQnLHRoaXMuYmFzZVBvcnQpO1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZUNybklkJyx0aGlzLmJhc2VDcm5JZCk7XHJcblx0XHRcdFx0dGhpcy5nZXRVcmwoKVxyXG5cdFx0XHRcdHRoaXMuZWplY3RTaG93ID0gZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5by55Ye65bGC5Y+W5raIXHJcblx0XHRcdGVqZWN0Q2xvc2UoKSB7XHJcblx0XHRcdFx0dGhpcy5lamVjdFNob3cgPSBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRTZXJ2ZXJEYXRhKCkge1xyXG5cdFx0XHRcdHRoaXMuY2hhcnRzRGF0YUxpbmUxPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jaGFydHNEYXRhLkxpbmUpKVxyXG5cdFx0XHRcdHRoaXMuY2hhcnRzRGF0YVBpZTI9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXJ0c0RhdGEuUGllKSlcclxuXHRcdFx0fSxcclxuXHRcdFx0Y29tcGxldGUoZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKFwi5riy5p+T5a6M5oiQ5LqL5Lu2XCIsZSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGdldERhdGUoKSB7XHJcblx0XHRcdFx0dmFyIGR0ID0gbmV3IERhdGUoKTtcclxuXHRcdFx0XHR0aGlzLnllYXIgPSBkdC5nZXRGdWxsWWVhcigpO1xyXG5cdFx0XHRcdHRoaXMubW9udGggPSAoZHQuZ2V0TW9udGgoKSsxKSA8IDEwID8gJzAnKyAoZHQuZ2V0TW9udGgoKSsxKSA6IChkdC5nZXRNb250aCgpKzEpO1xyXG5cdFx0XHRcdHRoaXMuZGF5ID0gZHQuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcrZHQuZ2V0RGF0ZSgpIDogZHQuZ2V0RGF0ZSgpO1xyXG5cdFx0XHRcdHRoaXMuaG91cnMgPSBkdC5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkdC5nZXRIb3VycygpIDogZHQuZ2V0SG91cnMoKTtcclxuXHRcdFx0XHR0aGlzLm1pbnV0ZXMgPSBkdC5nZXRNaW51dGVzKCkgPCAxMCA/ICcwJyArIGR0LmdldE1pbnV0ZXMoKSA6IGR0LmdldE1pbnV0ZXMoKTtcclxuXHRcdFx0XHR0aGlzLnNlY29uZHMgPSBkdC5nZXRTZWNvbmRzKCkgPCAxMCA/ICcwJyArIGR0LmdldFNlY29uZHMoKSA6IGR0LmdldFNlY29uZHMoKTsgXHJcblx0XHRcdFx0dGhpcy53ZWVrcyA9IGR0LmdldERheSgpOyBcclxuXHRcdFx0XHRzd2l0Y2ggKHRoaXMud2Vla3MpIHtcclxuXHRcdFx0XHRcdGNhc2UgMDogdGhpcy53ZWVrID0gXCLmmJ/mnJ/ml6VcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDE6IHRoaXMud2VlayA9IFwi5pif5pyf5LiAXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSAyOiB0aGlzLndlZWsgPSBcIuaYn+acn+S6jFwiOyBicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgMzogdGhpcy53ZWVrID0gXCLmmJ/mnJ/kuIlcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDQ6IHRoaXMud2VlayA9IFwi5pif5pyf5ZubXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSA1OiB0aGlzLndlZWsgPSBcIuaYn+acn+S6lFwiOyBicmVhaztcclxuXHRcdFx0XHRcdGRlZmF1bHQgOiB0aGlzLndlZWsgPSBcIuaYn+acn+WFrVwiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlPlxyXG5cdC8qIOW8ueWHujrphY3nva7ljLrln58gKi9cclxuXHQuZWplY3QtbWFzayB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcclxuXHRcdHBvc2l0aW9uOiBmaXhlZDtcclxuXHRcdHRvcDogMDtcclxuXHRcdGxlZnQ6IDA7XHJcblx0XHR6LWluZGV4OiA5OTk7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1x0XHJcblx0fVxyXG5cdC5lamVjdHtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdHdpZHRoOiA2MDBweDtcclxuXHRcdGhlaWdodDogMzUwcHg7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZWFlYWVhO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMjVycHg7XHJcblx0fVxyXG5cdC5lamVjdC10aXRsZSB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogMTAwcHg7XHJcblx0XHRsaW5lLWhlaWdodDogMTAwcHg7XHJcblx0XHRmb250LXNpemU6IDIwcHg7XHJcblx0XHRmb250LXdlaWdodDogNzAwO1xyXG5cdFx0Y29sb3I6IFx0IzYwNjI2NjtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHR9XHJcblx0LmVqZWN0LWlucHV0IHtcclxuXHRcdFxyXG5cdH1cclxuXHQuaXRlbSB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdG1hcmdpbjogMTBweCAwIDAgMDtcclxuXHR9XHJcblx0LmRlc2Mge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0d2lkdGg6IDQwJTtcclxuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xyXG5cdFx0Y29sb3I6ICM2MDYyNjY7XHJcblx0XHRmb250LXNpemU6IDE4cHg7XHJcblx0fVxyXG5cdC5pbnB1dCB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdHBhZGRpbmctbGVmdDogNXB4O1xyXG5cdFx0cGFkZGluZy1yaWdodDogNXB4O1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRoZWlnaHQ6IDMwcHg7XHJcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjQzBDNENDO1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiA1MHB4O1xyXG5cdH1cclxuXHQuZWplY3QtaW5wdXQgaW5wdXQge1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRcclxuXHRcdFxyXG5cdH1cclxuXHQuZWplY3QtYnV0dG9uIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0Ym90dG9tOiAwO1xyXG5cdFx0aGVpZ2h0OiA2MHB4O1xyXG5cdFx0bGluZS1oZWlnaHQ6IDYwcHg7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjO1xyXG5cdH1cclxuXHQuYnV0dG9uLWl0ZW0ge1xyXG5cdFx0d2lkdGg6IDUwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdGZvbnQtc2l6ZTogMjBweDtcclxuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0Y29sb3I6ICM5MDkzOTk7XHJcblx0fVxyXG5cdC5idXR0b24taXRlbTpsYXN0LWNoaWxkIHtcclxuXHRcdGNvbG9yOiAjNjdDMjNBO1xyXG5cdFx0XHJcblx0XHRib3JkZXItbGVmdDogMXB4IHNvbGlkICNjY2M7XHJcblx0fVxyXG5cdC5mdWxsLXdpZHRoIHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0fVxyXG5cdC5oYWxmLXdpZHRoIHtcclxuXHRcdHdpZHRoOiA1MCU7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRmbG9hdDogbGVmdDtcclxuXHR9XHJcblx0LmJveC1pdGVtcyB7XHJcblx0XHRoZWlnaHQ6IDIwJTtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzIzMzc1MTsgKi9cclxuXHRcdGxpbmUtaGVpZ2h0OiAzMDBycHg7XHJcblx0fVxyXG5cdC8qIOW9k+WJjemhtemdouaXoCBvcmRlck5vICovXHJcblx0LnN3aXBlci1oZXJlIHtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdG1hcmdpbjogMCBhdXRvO1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0fVxyXG5cdC8qIOW9k+WJjemhtemdouaciSBvcmRlck5vICovXHJcblx0LnN3aXBlci1oZXJlLW9Oe1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzA2M0E3QjsgKi9cclxuXHRcdG1hcmdpbjogMCBhdXRvO1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRoZWlnaHQ6IDkwJTtcclxuXHR9XHJcblx0Lyog5b2T5YmN6aG16Z2i5pyJIGVycm9y5o+Q56S6ICovXHJcblx0LnN3aXBlci1oZXJlLWVycm9yIHtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMwNjNBN0I7ICovXHJcblx0XHQvKiBtYXJnaW46IDAgYXV0bzsgKi9cclxuXHRcdG1hcmdpbi10b3A6IDIwJTtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdH1cclxuXHQuYW5pbWF0ZSB7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0ICAgICAgICAgICAgLyogd2hpdGUtc3BhY2U6IG5vd3JhcDsgKi9cclxuXHQgICAgICAgICAgICBhbmltYXRpb246IDI1cyB3b3Jkc0xvb3AgbGluZWFyIGluZmluaXRlIG5vcm1hbDtcclxuXHQgICAgICAgIH1cclxuXHQgXHJcblx0ICAgICAgICBAa2V5ZnJhbWVzIHdvcmRzTG9vcCB7XHJcblx0ICAgICAgICAgICAgMCUge1xyXG5cdCAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwcHgpO1xyXG5cdCAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7XHJcblx0ICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgIDEwMCUge1xyXG5cdCAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xyXG5cdCAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XHJcblx0ICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgfVxyXG5cdCBcclxuXHQgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyB3b3Jkc0xvb3Age1xyXG5cdCAgICAgICAgICAgIDAlIHtcclxuXHQgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTtcclxuXHQgICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwcHgpO1xyXG5cdCAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAxMDAlIHtcclxuXHQgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcclxuXHQgICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xyXG5cdCAgICAgICAgICAgIH1cclxuXHQgICAgICAgIH1cclxuXHQvKiBhbmltYXRpb246dXBNb3ZlIDEuNXMgMTsgKi9cclxuXHQvKiBkb3duTW92ZSAqL1xyXG5cdC8qIOS4iuWxguWQkeS4iiAqL1xyXG5cdC50b3BVcCB7XHJcblx0XHRhbmltYXRpb246IHRvcFVwIDEuNXMgMTtcclxuXHRcdGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XHJcblx0fVxyXG5cdEBrZXlmcmFtZXMgdG9wVXAge1xyXG5cdFx0ZnJvbSB7XHJcblx0XHRcdG9wYWNpdHk6IDAuNTtcclxuXHRcdFx0LyogYmFja2dyb3VuZC1jb2xvcjpibHVlOyAqL1xyXG5cdFx0XHR0b3A6LTEwODBweFxyXG5cdFx0XHR9XHJcblx0XHR0byB7XHJcblx0XHRcdG9wYWNpdHk6IDE7XHJcblx0XHRcdC8qIGJhY2tncm91bmQtY29sb3I6cmVkOyAqL1xyXG5cdFx0XHR0b3A6IDA7XHJcblx0XHR9XHJcblx0fVxyXG5cdC8qIOS4iuWxguWQkeS4iyAqL1xyXG5cdC50b3BEb3duIHtcclxuXHRcdGFuaW1hdGlvbjogdG9wRG93biAxLjVzIDE7XHJcblx0XHRhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xyXG5cdH1cclxuXHRAa2V5ZnJhbWVzIHRvcERvd25cclxuXHRcdHtcclxuXHRcdGZyb20ge1xyXG5cdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOnJlZDsgKi9cclxuXHRcdFx0dG9wOiAwO1xyXG5cdFx0fVxyXG5cdFx0dG8ge1xyXG5cdFx0XHRvcGFjaXR5OiAwLjU7XHJcblx0XHRcdC8qIGJhY2tncm91bmQtY29sb3I6Ymx1ZTsgKi9cclxuXHRcdFx0dG9wOi0xMDgwcHhcclxuXHRcdH1cclxuXHR9XHJcblx0Lyog5LiL5bGC5ZCR5LiKICovXHJcblx0LmZsb29yVXAge1xyXG5cdFx0YW5pbWF0aW9uOiBmbG9vclVwIDEuNXMgMTtcclxuXHRcdGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XHJcblx0fVxyXG5cdEBrZXlmcmFtZXMgZmxvb3JVcCB7XHJcblx0XHRmcm9tIHtcclxuXHRcdFx0b3BhY2l0eTogMC41O1xyXG5cdFx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOmJsdWU7ICovXHJcblx0XHRcdHRvcDogMHB4O1xyXG5cdFx0XHR9XHJcblx0XHR0byB7XHJcblx0XHRcdG9wYWNpdHk6IDE7XHJcblx0XHRcdC8qIGJhY2tncm91bmQtY29sb3I6cmVkOyAqL1xyXG5cdFx0XHR0b3A6IDEwODBweDtcclxuXHRcdH1cclxuXHR9XHJcblx0Lyog5LiL5bGC5ZCR5LiLICovXHJcblx0LmZsb29yRG93biB7XHJcblx0XHRhbmltYXRpb246IGZsb29yRG93biAxLjVzIDE7XHJcblx0XHRhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xyXG5cdH1cclxuXHRAa2V5ZnJhbWVzIGZsb29yRG93biB7XHJcblx0XHRmcm9tIHtcclxuXHRcdFx0b3BhY2l0eTogMC41O1xyXG5cdFx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOmJsdWU7ICovXHJcblx0XHRcdHRvcDogMTA4MHB4O1xyXG5cdFx0XHR9XHJcblx0XHR0byB7XHJcblx0XHRcdG9wYWNpdHk6IDE7XHJcblx0XHRcdC8qIGJhY2tncm91bmQtY29sb3I6cmVkOyAqL1xyXG5cdFx0XHR0b3A6IC0wcHg7XHJcblx0XHR9XHJcblx0fVxyXG5cdC50b3Atc2NyZWVuIHtcclxuXHRcdHBvc2l0aW9uOiBmaXhlZDtcclxuXHRcdHdpZHRoOiAxOTIwcHg7XHJcblx0XHRoZWlnaHQ6IDEwODBweDtcclxuXHRcdC8qIHRvcDogLTEwMDBweDsgKi9cclxuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvYmFja2dyb3VuZC5wbmcpO1xyXG5cdFx0LyogYmFja2dyb3VuZDpyZWQ7ICovXHJcblx0XHQvKiBhbmltYXRpb246dXBNb3ZlIDEuNXMgMTsgKi9cclxuXHRcdHotaW5kZXg6IDk5OTtcclxuXHR9XHJcblx0LmZsb29yLXNjcmVlbiB7XHJcblx0XHR3aWR0aDogMTkyMHB4O1xyXG5cdFx0aGVpZ2h0OiAxMDgwcHg7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRjb2xvcjogI0ZGRkZGRjtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGZvbnQtc2l6ZTogMTIwcnB4O1xyXG5cdFx0bGV0dGVyLXNwYWNpbmc6IDVycHg7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL2JhY2tncm91bmQucG5nKTtcclxuXHR9XHJcblx0LmNvbnRhaW5lciB7XHJcblx0XHR3aWR0aDogMTkyMHB4O1xyXG5cdFx0aGVpZ2h0OiAxMDgwcHg7XHJcblx0XHRcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdC8qIGJhY2tncm91bmQ6ICMwMDA0Mjg7ICBcclxuXHRcdGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMDA0ZTkyLCAjMDAwNDI4KTsgIFxyXG5cdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMDA0ZTkyLCAjMDAwNDI4KTsgKi9cclxuXHR9XHJcblx0LmhlYWQge1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzU1YWFmZjsgKi9cclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAxMCU7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRsaW5lLWhlaWdodDogMTEwcHg7XHJcblx0XHRjb2xvcjogI0ZGRkZGRjtcclxuXHRcdGZvbnQtc2l6ZTogNDBweDtcclxuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XHJcblx0XHRsZXR0ZXItc3BhY2luZzogNXB4O1xyXG5cdH1cclxuXHQuaGVhZCB0ZXh0IHtcclxuXHRcdHRyYW5zZm9ybTogc2NhbGUoMSwwLjkpO1xyXG5cdH1cclxuXHQudGltZS10b29scyB7XHJcblx0XHRoZWlnaHQ6IDUlO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzAwN0FGRjsgKi9cclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdHRvcDogMDtcclxuXHRcdGZsb2F0OiByaWdodDtcclxuXHRcdHJpZ2h0OiA1MHB4O1xyXG5cdFx0Zm9udC1zaXplOiAxNnB4O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDQwMDtcclxuXHRcdGxpbmUtaGVpZ2h0OiA3MHB4O1xyXG5cdFx0bGV0dGVyLXNwYWNpbmc6IDFweDtcclxuXHR9XHJcblx0LmJ1dHRvbi1sZWZ0IHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvcmlnaHQucG5nKTtcclxuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xyXG5cdFx0dG9wOiAxLjglO1xyXG5cdFx0bGVmdDogMjEuMyU7XHJcblx0XHR3aWR0aDogMTMuNSU7XHJcblx0XHRoZWlnaHQ6IDguNSU7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XHJcblx0fVxyXG5cdC5idXR0b24tcmlnaHQge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL3N0YXRpYy9yaWdodC5wbmcpO1xyXG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XHJcblx0XHR0b3A6IDEuOCU7XHJcblx0XHRsZWZ0OiA2NSU7XHJcblx0XHR3aWR0aDogMTMuNSU7XHJcblx0XHRoZWlnaHQ6IDguNSU7XHJcblx0fVxyXG5cdC5tYWluIHtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMzRjUzNkU7ICovXHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogOTAlO1xyXG5cdH1cclxuXHQubWFpbi1zaWRlcyB7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0RTkyOyAqL1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHR3aWR0aDogNTAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0LyogbWFyZ2luOiAyJSBhdXRvIDAgMy4yJTtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjAsIDgwLCAxMzYsIDEpOyAqL1xyXG5cdH1cclxuXHQuYm94IHtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7ICovXHJcblx0XHRtYXJnaW46IDMlIDIlIDAgMiU7XHJcblx0XHR3aWR0aDogOTYlO1xyXG5cdFx0aGVpZ2h0OiAzMCU7XHJcblx0XHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIwLCA4MCwgMTM2LCAxKTtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0fVxyXG5cdC5ib3gtbGcge1xyXG5cdFx0aGVpZ2h0OiA5NCU7XHJcblx0fVxyXG5cdC5ib3gtYm9yZGVyIHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICM0Q0Q5NjQ7ICovXHJcblx0XHR3aWR0aDogMTBweDtcclxuXHRcdGhlaWdodDogMTBweDtcclxuXHR9XHJcblx0LmJveC1ib3JkZXIxIHtcclxuXHRcdHRvcDogMDtcclxuXHRcdGxlZnQ6IDA7XHJcblx0XHRib3JkZXItbGVmdDogMnB4IHNvbGlkICMzMWM0YzQ7XHJcblx0XHRib3JkZXItdG9wOiAycHggc29saWQgIzMxYzRjNDtcclxuXHR9XHJcblx0LmJveC1ib3JkZXIyIHtcclxuXHRcdHRvcDogMDtcclxuXHRcdHJpZ2h0OiAwO1xyXG5cdFx0Ym9yZGVyLXJpZ2h0OiAycHggc29saWQgIzMxYzRjNDtcclxuXHRcdGJvcmRlci10b3A6IDJweCBzb2xpZCAjMzFjNGM0O1xyXG5cdH1cclxuXHQuYm94LWJvcmRlcjMge1xyXG5cdFx0Ym90dG9tOiAwO1xyXG5cdFx0bGVmdDogMDtcclxuXHRcdGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjMzFjNGM0O1xyXG5cdFx0Ym9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMzFjNGM0O1xyXG5cdH1cclxuXHQuYm94LWJvcmRlcjQge1xyXG5cdFx0Ym90dG9tOiAwO1xyXG5cdFx0cmlnaHQ6IDA7XHJcblx0XHRib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjMzFjNGM0O1xyXG5cdFx0Ym9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMzMWM0YzQ7XHJcblx0fVxyXG5cdC5jb250ZW50IHtcclxuXHQgIGRpc3BsYXk6IGZsZXg7XHJcblx0ICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdCAgZmxleDogMTtcclxuXHR9XHJcblx0XHJcblx0LmNoYXJ0cy1ib3gge1xyXG5cdCAgd2lkdGg6IDgwJTtcclxuXHQgIGhlaWdodDogMjMwcHg7XHJcblx0ICBtYXJnaW4tbGVmdDogMTAlO1xyXG5cdCAgLyogYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgKi9cclxuXHR9XHJcblx0LnJpbmcge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHR3aWR0aDogNjAlO1xyXG5cdFx0aGVpZ2h0OiAzMDBweDtcclxuXHRcdG1hcmdpbi1sZWZ0OiAtMTAlO1xyXG5cdH1cclxuXHQuYm94LWl0ZW0ge1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzJDNDA1QTsgKi9cclxuXHRcdHdpZHRoOiA5MiU7XHJcblx0XHRoZWlnaHQ6IDIwJTtcclxuXHRcdG1hcmdpbi1sZWZ0OiA0JTtcclxuXHRcdHBhZGRpbmctdG9wOiAxZW07XHJcblx0XHRjb2xvcjogI0ZGRkZGRjtcclxuXHR9XHJcblx0LmludHJvZHVjZSB7XHJcblx0XHRoZWlnaHQ6IDMwJTtcclxuXHR9XHJcblx0LmludHJvZHVjZSBoMiB7XHJcblx0XHRsZXR0ZXItc3BhY2luZzogNXB4O1xyXG5cdFx0XHJcblx0fVxyXG5cdC5lbmdsaXNoIHtcclxuXHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHR9XHJcblx0LmludHJvZHVjZS1jb250ZW50IHtcclxuXHRcdGZvbnQtc2l6ZTogMjBweDtcclxuXHRcdHBhZGRpbmctdG9wOiAyZW07XHJcblx0XHR0ZXh0LWluZGVudDogMmVtO1xyXG5cdFx0bGluZS1oZWlnaHQ6IDJlbTtcclxuXHR9XHJcblx0LmNoYXJnZS1pbmZvIHtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMyQzQwNUE7ICovXHJcblx0XHRoZWlnaHQ6IDQ1JTtcclxuXHR9XHJcblx0LmNoYXJnZS1pbmZvLWl0ZW0ge1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogI0VFNjY2NjsgKi9cclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdHdpZHRoOiA1MCU7XHJcblx0XHRoZWlnaHQ6IDQwJTtcclxuXHR9XHJcblx0LmNoYXJnZS1pbmZvLWl0ZW0gaW1hZ2Uge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjNENEOTY0OyAqL1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0d2lkdGg6IDIwJTtcclxuXHR9XHJcblx0LmNoYXJnZS1pbmZvLWl0ZW0gdmlldyB7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRtYXJnaW4tbGVmdDogMTAlO1xyXG5cdFx0d2lkdGg6IDcwJTtcclxuXHRcdGhlaWdodDogNDklO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzE4OTBGRjsgKi9cclxuXHR9XHJcblx0LmNoYXJnZS1pbmZvLWl0ZW0gLmNvdW50LCAuY2hhcmdlLWluZm8taXRlbSAudW5pdHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdGZvbnQtc2l6ZTogMzJweDtcclxuXHRcdGJvdHRvbTogMDtcclxuXHRcdHBhZGRpbmctbGVmdDogNSU7XHJcblx0fVxyXG5cdC5jaGFyZ2UtaW5mby1pdGVtIC51bml0IHtcclxuXHRcdGZvbnQtc2l6ZTogMTZweDtcclxuXHRcdGZsb2F0OiByaWdodDtcclxuXHRcdHJpZ2h0OiAyMCU7XHJcblx0fVxyXG5cdC5mb290ZXIge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgyMCwgODAsIDEzNiwgMSk7XHJcblx0XHRoZWlnaHQ6IDE1JTtcclxuXHR9XHJcblx0LnVzZS1pbmZvIHtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMwMDdBRkY7ICovXHJcblx0fVxyXG5cdC51c2UtbGVmdCB7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjMkM0MDVBOyAqL1xyXG5cdFx0d2lkdGg6IDQwJTtcclxuXHR9XHJcblx0LnVzZS1yaWdodCB7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjMkM0MDVBOyAqL1xyXG5cdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0d2lkdGg6IDIwJTtcclxuXHR9XHJcblx0LnVzZS1tYWluIHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiA3NSU7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjNENEOTY0OyAqL1xyXG5cdH1cclxuXHQudXNlLW1haW4gLmxlZnQge1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogI2ZmYWE3ZjsgKi9cclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0d2lkdGg6IDcwJTtcclxuXHRcdGxpbmUtaGVpZ2h0OiAyMHB4O1xyXG5cdH1cclxuXHQubGVmdCAucHJvZ3Jlc3NCYXIge1xyXG5cdFx0LyogbWFyZ2luLWxlZnQ6IDsgKi9cclxuXHRcdG1hcmdpbi10b3A6IDklO1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRoZWlnaHQ6IDIwJTtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICMyMzM3NTE7XHJcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xyXG5cdH1cclxuXHQubGVmdCAucHJvZ3Jlc3Mge1xyXG5cdFx0Lyogd2lkdGg6IDkwJTsgKi9cclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNGRjU3MjI7XHJcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xyXG5cdH1cclxuXHQubGVmdCBwcm9ncmVzcyB7XHJcblx0XHRtYXJnaW4tbGVmdDogMTAlO1xyXG5cdFx0bWFyZ2luLXRvcDogMTAlO1xyXG5cdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0fVxyXG5cdC51c2UtbWFpbiAucmlnaHQge1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogI2ZmYWFmZjsgKi9cclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdGZsb2F0OiByaWdodDtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdHdpZHRoOiAyMCU7XHJcblx0XHRmb250LXNpemU6IDQwcHg7XHJcblx0XHRjb2xvcjogI0ZGNTcyMjtcclxuXHRcdGxpbmUtaGVpZ2h0OiAxMzBweDtcclxuXHR9XHJcblx0LmJveC10cCB7XHJcblx0XHRoZWlnaHQ6IDMwJTtcclxuXHR9XHJcblx0LmJveC10cCAuc3ViLW1haW4ge1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgKi9cclxuXHR9XHJcblx0LmJveC1tZCB7XHJcblx0XHRoZWlnaHQ6IDQzJTtcclxuXHR9XHJcblx0LmJveC1tZCAuc3ViLW1haW4ge1xyXG5cdH1cclxuXHQuc3ViLW1haW4tcmlnaHQge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0d2lkdGg6IDUwJTtcclxuXHR9XHJcblx0LnN1Yi1pbmZvIHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAzMyU7XHJcblx0fVxyXG5cdC5zdWItaW5mbyBpbWFnZSB7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRmbG9hdDogbGVmdDtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdHdpZHRoOiAxNSU7XHJcblx0fVxyXG5cdC5zdWItaW5mbyB0ZXh0IHtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdHdpZHRoOiA0MCU7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRsaW5lLWhlaWdodDogMTIwcHg7XHJcblx0XHRmb250LXNpemU6IDIwcHg7XHJcblx0fVxyXG5cdC5ib3gtYnQge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzA2M0E3QjtcclxuXHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdGhlaWdodDogMTUlO1xyXG5cdFx0Y29sb3I6ICNGRkZGRkY7XHJcblx0fVxyXG5cdC5ib3gtYnQgaW1hZ2Uge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0cmlnaHQ6IDA7XHJcblx0XHR0b3A6IDA7XHJcblx0XHR3aWR0aDogMjAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdH1cclxuXHQuYm94LWJ0IHtcclxuXHRcdGZvbnQtc2l6ZTogMzZweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAxNDBweDtcclxuXHRcdHRleHQtaW5kZW50OiA1ZW07XHJcblx0fVxyXG5cdC5yaWdodC1pdGVtIHtcclxuXHRcdGhlaWdodDogOTQlO1xyXG5cdH1cclxuXHQuc3ViLWxlZnQge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHR3aWR0aDogNDAlO1xyXG5cdH1cclxuXHQuc3ViLXJpZ2h0IHtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdGZsb2F0OiByaWdodDtcclxuXHRcdHdpZHRoOiAyMCU7XHJcblx0fVxyXG5cdC5zdWItbWFpbiB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjMzFDNEM0OyAqL1xyXG5cdFx0d2lkdGg6IDkyJTtcclxuXHRcdGhlaWdodDogODAlO1xyXG5cdFx0Ym90dG9tOiAwO1xyXG5cdH1cclxuPC9zdHlsZT5cclxuPCEtLSB7XCJtYXRuclwiOlwiMTEwMDM0OS0xMDAwMFwiLFwibWFrbnhcIjpcIkM1Uy00LU0wMy8zMzMvS1NcIixcImJhdGNoXCI6XCIyMjAzNzUwMjMwMFwiLFwiY291bnRcIjoxLjB9LFxyXG5cdFx0XHRcdFx0e1wibWF0bnJcIjpcIjExMDAzNDktMTAwMDBcIixcIm1ha254XCI6XCJDNVMtNC1NMDMvMzMzL0tTXCIsXCJiYXRjaFwiOlwiMjIwMzc1MDUxNDZcIixcImNvdW50XCI6MS4wfSxcclxuXHRcdFx0XHRcdHtcIm1hdG5yXCI6XCIxMTAwMzQ5LTEwMDAwXCIsXCJtYWtueFwiOlwiQzVTLTQtTTAzLzMzMy9LU1wiLFwiYmF0Y2hcIjpcIjIyMDI3NTA0ODAxXCIsXCJjb3VudFwiOjEuMH0sXHJcblx0XHRcdFx0XHR7XCJtYXRuclwiOlwiMTEwMDM0OS0xMDAwMFwiLFwibWFrbnhcIjpcIkM1Uy00LU0wMy8zMzMvS1NcIixcImJhdGNoXCI6XCIyMjAyNzUwNzcyOVwiLFwiY291bnRcIjoxLjB9LFxyXG5cdFx0XHRcdFx0e1wibWF0bnJcIjpcIjExMDAzNDktMTAwMDBcIixcIm1ha254XCI6XCJDNVMtNC1NMDMvMzMzL0tTXCIsXCJiYXRjaFwiOlwiMjIwMjc1MDc3MjdcIixcImNvdW50XCI6MS4wfSxcclxuXHRcdFx0XHRcdHtcIm1hdG5yXCI6XCIxMTAwMzQ5LTEwMDAwXCIsXCJtYWtueFwiOlwiQzVTLTQtTTAzLzMzMy9LU1wiLFwiYmF0Y2hcIjpcIjIyMDI3NTA3NzMxXCIsXCJjb3VudFwiOjEuMH0sXHJcblx0XHRcdFx0XHR7XCJtYXRuclwiOlwiMTEwMDM0OS0xMDAwMFwiLFwibWFrbnhcIjpcIkM1Uy00LU0wMy8zMzMvS1NcIixcImJhdGNoXCI6XCIyMjAyNzUwNDgwN1wiLFwiY291bnRcIjoxLjB9LFxyXG5cdFx0XHRcdFx0e1wibWF0bnJcIjpcIjExMDAzNDktMTAwMDBcIixcIm1ha254XCI6XCJDNVMtNC1NMDMvMzMzL0tTXCIsXCJiYXRjaFwiOlwiMjIwMjc1MDQ4MDVcIixcImNvdW50XCI6MS4wfSxcclxuXHRcdFx0XHRcdHtcIm1hdG5yXCI6XCIxMTAwMzQ5LTEwMDAwXCIsXCJtYWtueFwiOlwiQzVTLTQtTTAzLzMzMy9LU1wiLFwiYmF0Y2hcIjpcIjIyMDI3NTA0Nzk3XCIsXCJjb3VudFwiOjEuMH0sXHJcblx0XHRcdFx0XHR7XCJtYXRuclwiOlwiMTEwMDM0OS0xMDAwMFwiLFwibWFrbnhcIjpcIkM1Uy00LU0wMy8zMzMvS1NcIixcImJhdGNoXCI6XCIyMjAyNzUwNDc5NFwiLFwiY291bnRcIjoxLjB9LFxyXG5cdFx0XHRcdFx0e1wibWF0bnJcIjpcIjExMDAzNDktMTAwMDBcIixcIm1ha254XCI6XCJDNVMtNC1NMDMvMzMzL0tTXCIsXCJiYXRjaFwiOlwiMjIwMjc1MDQ3OTFcIixcImNvdW50XCI6MS4wfSxcclxuXHRcdFx0XHRcdHtcIm1hdG5yXCI6XCIxMTAwMzQ5LTEwMDAwXCIsXCJtYWtueFwiOlwiQzVTLTQtTTAzLzMzMy9LU1wiLFwiYmF0Y2hcIjpcIjIyMDI3NTA0NzkzXCIsXCJjb3VudFwiOjEuMH0sXHJcblx0XHRcdFx0XHR7XCJtYXRuclwiOlwiMTEwMDM0OS0xMDAwMFwiLFwibWFrbnhcIjpcIkM1Uy00LU0wMy8zMzMvS1NcIixcImJhdGNoXCI6XCIyMjAzNzUwNTE0MVwiLFwiY291bnRcIjoxLjB9LFxyXG5cdFx0XHRcdFx0e1wibWF0bnJcIjpcIjExMDAzNDktMTAwMDBcIixcIm1ha254XCI6XCJDNVMtNC1NMDMvMzMzL0tTXCIsXCJiYXRjaFwiOlwiMjIwMjc1MDc3MjhcIixcImNvdW50XCI6MS4wfSxcclxuXHRcdFx0XHRcdHtcIm1hdG5yXCI6XCIxMTAwMzQ5LTEwMDAwXCIsXCJtYWtueFwiOlwiQzVTLTQtTTAzLzMzMy9LU1wiLFwiYmF0Y2hcIjpcIjIyMDI3NTA0ODEwXCIsXCJjb3VudFwiOjEuMH0sXHJcblx0XHRcdFx0XHR7XCJtYXRuclwiOlwiMTEwMDM0OS0xMDAwMFwiLFwibWFrbnhcIjpcIkM1Uy00LU0wMy8zMzMvS1NcIixcImJhdGNoXCI6XCIyMjAzNzUwNTE0OFwiLFwiY291bnRcIjoxLjB9IC0tPiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///101\n");
>>>>>>> 2af3829f6276675ebe120cda94d628c49c429536
/***/ }),
/* 102 */