#
zjj
2024-11-21 ec802a952229a9a4d1f9c4daadb16f20fcc64c25
Monitor-APP/unpackage/dist/dev/app-plus/app-service.js
@@ -1110,7 +1110,7 @@
                                              _vm._$s(
                                                "102-" + $31,
                                                "t0-0",
                                                _vm._s(item.batch)
                                                _vm._s(item.maknx)
                                              )
                                            ),
                                          ]),
@@ -1119,7 +1119,7 @@
                                              _vm._$s(
                                                "103-" + $31,
                                                "t0-0",
                                                _vm._s(item.manuDate)
                                                _vm._s(item.specs)
                                              )
                                            ),
                                          ]),
@@ -1128,7 +1128,7 @@
                                              _vm._$s(
                                                "104-" + $31,
                                                "t0-0",
                                                _vm._s(item.model)
                                                _vm._s(item.batch)
                                              )
                                            ),
                                          ]),
@@ -1137,34 +1137,7 @@
                                              _vm._$s(
                                                "105-" + $31,
                                                "t0-0",
                                                _vm._s(item.specs)
                                              )
                                            ),
                                          ]),
                                          _c("view", [
                                            _vm._v(
                                              _vm._$s(
                                                "106-" + $31,
                                                "t0-0",
                                                _vm._s(item.length)
                                              )
                                            ),
                                          ]),
                                          _c("view", [
                                            _vm._v(
                                              _vm._$s(
                                                "107-" + $31,
                                                "t0-0",
                                                _vm._s(item.weight)
                                              )
                                            ),
                                          ]),
                                          _c("view", [
                                            _vm._v(
                                              _vm._$s(
                                                "108-" + $31,
                                                "t0-0",
                                                _vm._s(item.volume)
                                                _vm._s(item.count)
                                              )
                                            ),
                                          ]),
@@ -1195,78 +1168,78 @@
            duration: _vm.duration,
            "mode-class": _vm.errorInfoMode,
            show: _vm.errorInfoViewShow,
            _i: 109,
            _i: 106,
          },
        },
        [
          _c(
            "view",
            {
              staticClass: _vm._$s(110, "sc", "error-info-view"),
              attrs: { _i: 110 },
              staticClass: _vm._$s(107, "sc", "error-info-view"),
              attrs: { _i: 107 },
            },
            [
              _c(
                "view",
                { staticClass: _vm._$s(111, "sc", "head"), attrs: { _i: 111 } },
                { staticClass: _vm._$s(108, "sc", "head"), attrs: { _i: 108 } },
                [
                  _c("text", [
                    _vm._v(_vm._$s(112, "t0-0", _vm._s(_vm.infoText.title))),
                    _vm._v(_vm._$s(109, "t0-0", _vm._s(_vm.infoText.title))),
                  ]),
                ]
              ),
              _c(
                "view",
                {
                  staticClass: _vm._$s(113, "sc", "time-tools"),
                  attrs: { _i: 113 },
                  staticClass: _vm._$s(110, "sc", "time-tools"),
                  attrs: { _i: 110 },
                },
                [_vm._v(_vm._$s(113, "t0-0", _vm._s(_vm.calendar)))]
                [_vm._v(_vm._$s(110, "t0-0", _vm._s(_vm.calendar)))]
              ),
              _c("view", {
                staticClass: _vm._$s(114, "sc", "button-left"),
                attrs: { _i: 114 },
                staticClass: _vm._$s(111, "sc", "button-left"),
                attrs: { _i: 111 },
              }),
              _c("view", {
                staticClass: _vm._$s(115, "sc", "button-right"),
                attrs: { _i: 115 },
                staticClass: _vm._$s(112, "sc", "button-right"),
                attrs: { _i: 112 },
              }),
              _c(
                "view",
                {
                  staticClass: _vm._$s(116, "sc", "info-main"),
                  attrs: { _i: 116 },
                  staticClass: _vm._$s(113, "sc", "info-main"),
                  attrs: { _i: 113 },
                },
                [
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(117, "sc", "info-box"),
                      attrs: { _i: 117 },
                      staticClass: _vm._$s(114, "sc", "info-box"),
                      attrs: { _i: 114 },
                    },
                    [
                      _c("y-box", { attrs: { _i: 118 } }, [
                      _c("y-box", { attrs: { _i: 115 } }, [
                        _c(
                          "view",
                          {
                            staticClass: _vm._$s(119, "sc", "info-box-text"),
                            attrs: { _i: 119 },
                            staticClass: _vm._$s(116, "sc", "info-box-text"),
                            attrs: { _i: 116 },
                          },
                          [
                            _c(
                              "view",
                              {
                                staticClass: _vm._$s(
                                  120,
                                  117,
                                  "sc",
                                  "flex-col info-box-text-item"
                                ),
                                attrs: { _i: 120 },
                                attrs: { _i: 117 },
                              },
                              [
                                _vm._v(
                                  _vm._$s(
                                    120,
                                    117,
                                    "t0-0",
                                    _vm._s(_vm.infoText.error)
                                  )
@@ -1292,45 +1265,45 @@
            {
              name: "show",
              rawName: "v-show",
              value: _vm._$s(121, "v-show", _vm.ejectShow),
              expression: "_$s(121,'v-show',ejectShow)",
              value: _vm._$s(118, "v-show", _vm.ejectShow),
              expression: "_$s(118,'v-show',ejectShow)",
            },
          ],
          staticClass: _vm._$s(121, "sc", "eject-mask"),
          attrs: { _i: 121 },
          staticClass: _vm._$s(118, "sc", "eject-mask"),
          attrs: { _i: 118 },
        },
        [
          _c(
            "view",
            { staticClass: _vm._$s(122, "sc", "eject"), attrs: { _i: 122 } },
            { staticClass: _vm._$s(119, "sc", "eject"), attrs: { _i: 119 } },
            [
              _c("view", {
                staticClass: _vm._$s(123, "sc", "eject-title"),
                attrs: { _i: 123 },
                staticClass: _vm._$s(120, "sc", "eject-title"),
                attrs: { _i: 120 },
              }),
              _c(
                "scroll-view",
                {
                  staticClass: _vm._$s(124, "sc", "eject-input"),
                  attrs: { _i: 124 },
                  staticClass: _vm._$s(121, "sc", "eject-input"),
                  attrs: { _i: 121 },
                },
                [
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(125, "sc", "item"),
                      attrs: { _i: 125 },
                      staticClass: _vm._$s(122, "sc", "item"),
                      attrs: { _i: 122 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(126, "sc", "desc"),
                        attrs: { _i: 126 },
                        staticClass: _vm._$s(123, "sc", "desc"),
                        attrs: { _i: 123 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(127, "sc", "input"),
                          attrs: { _i: 127 },
                          staticClass: _vm._$s(124, "sc", "input"),
                          attrs: { _i: 124 },
                        },
                        [
                          _c("input", {
@@ -1342,9 +1315,9 @@
                                expression: "baseIP",
                              },
                            ],
                            attrs: { _i: 128 },
                            attrs: { _i: 125 },
                            domProps: {
                              value: _vm._$s(128, "v-model", _vm.baseIP),
                              value: _vm._$s(125, "v-model", _vm.baseIP),
                            },
                            on: {
                              input: function ($event) {
@@ -1362,19 +1335,19 @@
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(129, "sc", "item"),
                      attrs: { _i: 129 },
                      staticClass: _vm._$s(126, "sc", "item"),
                      attrs: { _i: 126 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(130, "sc", "desc"),
                        attrs: { _i: 130 },
                        staticClass: _vm._$s(127, "sc", "desc"),
                        attrs: { _i: 127 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(131, "sc", "input"),
                          attrs: { _i: 131 },
                          staticClass: _vm._$s(128, "sc", "input"),
                          attrs: { _i: 128 },
                        },
                        [
                          _c("input", {
@@ -1386,9 +1359,9 @@
                                expression: "basePort",
                              },
                            ],
                            attrs: { _i: 132 },
                            attrs: { _i: 129 },
                            domProps: {
                              value: _vm._$s(132, "v-model", _vm.basePort),
                              value: _vm._$s(129, "v-model", _vm.basePort),
                            },
                            on: {
                              input: function ($event) {
@@ -1406,19 +1379,19 @@
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(133, "sc", "item"),
                      attrs: { _i: 133 },
                      staticClass: _vm._$s(130, "sc", "item"),
                      attrs: { _i: 130 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(134, "sc", "desc"),
                        attrs: { _i: 134 },
                        staticClass: _vm._$s(131, "sc", "desc"),
                        attrs: { _i: 131 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(135, "sc", "input"),
                          attrs: { _i: 135 },
                          staticClass: _vm._$s(132, "sc", "input"),
                          attrs: { _i: 132 },
                        },
                        [
                          _c("input", {
@@ -1430,9 +1403,9 @@
                                expression: "baseLedId",
                              },
                            ],
                            attrs: { _i: 136 },
                            attrs: { _i: 133 },
                            domProps: {
                              value: _vm._$s(136, "v-model", _vm.baseLedId),
                              value: _vm._$s(133, "v-model", _vm.baseLedId),
                            },
                            on: {
                              input: function ($event) {
@@ -1450,19 +1423,19 @@
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(137, "sc", "item"),
                      attrs: { _i: 137 },
                      staticClass: _vm._$s(134, "sc", "item"),
                      attrs: { _i: 134 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(138, "sc", "desc"),
                        attrs: { _i: 138 },
                        staticClass: _vm._$s(135, "sc", "desc"),
                        attrs: { _i: 135 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(139, "sc", "input"),
                          attrs: { _i: 139 },
                          staticClass: _vm._$s(136, "sc", "input"),
                          attrs: { _i: 136 },
                        },
                        [
                          _c("input", {
@@ -1474,9 +1447,9 @@
                                expression: "baseCrnId",
                              },
                            ],
                            attrs: { _i: 140 },
                            attrs: { _i: 137 },
                            domProps: {
                              value: _vm._$s(140, "v-model", _vm.baseCrnId),
                              value: _vm._$s(137, "v-model", _vm.baseCrnId),
                            },
                            on: {
                              input: function ($event) {
@@ -1494,19 +1467,19 @@
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(141, "sc", "item"),
                      attrs: { _i: 141 },
                      staticClass: _vm._$s(138, "sc", "item"),
                      attrs: { _i: 138 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(142, "sc", "desc"),
                        attrs: { _i: 142 },
                        staticClass: _vm._$s(139, "sc", "desc"),
                        attrs: { _i: 139 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(143, "sc", "input"),
                          attrs: { _i: 143 },
                          staticClass: _vm._$s(140, "sc", "input"),
                          attrs: { _i: 140 },
                        },
                        [
                          _c("input", {
@@ -1518,9 +1491,9 @@
                                expression: "baseUrl",
                              },
                            ],
                            attrs: { _i: 144 },
                            attrs: { _i: 141 },
                            domProps: {
                              value: _vm._$s(144, "v-model", _vm.baseUrl),
                              value: _vm._$s(141, "v-model", _vm.baseUrl),
                            },
                            on: {
                              input: function ($event) {
@@ -1540,18 +1513,18 @@
              _c(
                "view",
                {
                  staticClass: _vm._$s(145, "sc", "eject-button"),
                  attrs: { _i: 145 },
                  staticClass: _vm._$s(142, "sc", "eject-button"),
                  attrs: { _i: 142 },
                },
                [
                  _c("view", {
                    staticClass: _vm._$s(146, "sc", "button-item"),
                    attrs: { _i: 146 },
                    staticClass: _vm._$s(143, "sc", "button-item"),
                    attrs: { _i: 143 },
                    on: { click: _vm.ejectClose },
                  }),
                  _c("view", {
                    staticClass: _vm._$s(147, "sc", "button-item"),
                    attrs: { _i: 147 },
                    staticClass: _vm._$s(144, "sc", "button-item"),
                    attrs: { _i: 144 },
                    on: { click: _vm.ejectConfirm },
                  }),
                ]
@@ -1567,13 +1540,13 @@
            {
              name: "show",
              rawName: "v-show",
              value: _vm._$s(148, "v-show", _vm.timeOut),
              expression: "_$s(148,'v-show',timeOut)",
              value: _vm._$s(145, "v-show", _vm.timeOut),
              expression: "_$s(145,'v-show',timeOut)",
            },
          ],
          attrs: { _i: 148 },
          attrs: { _i: 145 },
        },
        [_vm._v(_vm._$s(148, "t0-0", _vm._s(_vm.times)))]
        [_vm._v(_vm._$s(145, "t0-0", _vm._s(_vm.times)))]
      ),
    ],
    1
@@ -12576,7 +12549,7 @@
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _demodata = _interopRequireDefault(__webpack_require__(/*! @/mockdata/demodata.json */ 102));\nvar _data = _interopRequireDefault(__webpack_require__(/*! @/pages/index/data.json */ 103));\nvar _WebSocketClient = __webpack_require__(/*! @/static/js/WebSocketClient */ 104);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 socket;\nvar _default = {\n  data: function data() {\n    return {\n      series: [],\n      homeViewShow: true,\n      infoViewShow: false,\n      errorInfoViewShow: false,\n      homeMode: [],\n      infoMode: [],\n      errorInfoMode: [],\n      baseInfo: {\n        xDistance: 1,\n        yDistance: 2,\n        xDuration: 3,\n        yDuration: 4,\n        usedPr: 50,\n        used: 3537,\n        stockCount: '',\n        emptyCount: '',\n        noneCount: ''\n      },\n      chartsData: {\n        \"Line\": {\n          \"categories\": [],\n          \"series\": []\n        },\n        \"Pie\": {\n          \"series\": [{\n            \"data\": []\n          }]\n        }\n      },\n      duration: 1000,\n      calendar: '',\n      ringOpts: {},\n      chartsDataLine1: {},\n      chartsDataPie2: {},\n      fontSize: '',\n      height: '',\n      showCharts: false,\n      ejectShow: false,\n      baseIP: '',\n      basePort: '',\n      baseLedId: '',\n      baseCrnId: '',\n      baseUrl: '',\n      info: null,\n      error: null,\n      infoType: 0,\n      text: '',\n      infoText: {\n        title: '',\n        staNo: \"\",\n        matnr: \"\",\n        maknx: \"\",\n        specs: \"\",\n        count: \"\",\n        error: \"\",\n        barcode: \"\"\n      },\n      swiperList: [],\n      timeOut: false,\n      times: 0,\n      currDate: '',\n      locList: []\n    };\n  },\n  onShow: function onShow() {\n    // 隐藏时间,电量,信号等\n\n    plus.navigator.setFullscreen(true);\n  },\n  mounted: function mounted() {\n    var that = this;\n    var BaseIP = uni.getStorageSync('BaseIp');\n    var BaseLedId = uni.getStorageSync('BaseLedId');\n    var BasePort = uni.getStorageSync('BasePort');\n    var BaseCrnId = uni.getStorageSync('BaseCrnId');\n    var PROJ = uni.getStorageSync('UPROJ');\n    that.baseUrl = PROJ;\n    that.baseIP = BaseIP;\n    that.baseLedId = BaseLedId;\n    that.basePort = BasePort;\n    that.baseCrnId = BaseCrnId;\n    // this.getUrl()\n  },\n  created: function created() {\n    var that = this;\n    var BaseIP = uni.getStorageSync('BaseIp');\n    var BaseLedId = uni.getStorageSync('BaseLedId');\n    var BasePort = uni.getStorageSync('BasePort');\n    var BaseCrnId = uni.getStorageSync('BaseCrnId');\n    var PROJ = uni.getStorageSync('UPROJ');\n    that.baseUrl = PROJ;\n    that.baseIP = BaseIP;\n    that.baseLedId = BaseLedId;\n    that.basePort = BasePort;\n    that.baseCrnId = BaseCrnId;\n    that.webSockerInit();\n  },\n  onLoad: function onLoad() {\n    var _this = this;\n    setInterval(function () {\n      _this.getServerData();\n      // this.initlineChart()\n      // this.initPieChart()\n      // this.getOther()\n      // // this.getDate()\n      // this.getDate2()\n      // this.getInfo()\n      // this.getError()\n      // // this.getInfo2()\n      // // this.getError2()\n      // this.getUrl()\n      _this.controller();\n      // this.statisticalModel()\n      // 测试用\n    }, 1000);\n  },\n  methods: {\n    webSockerInit: function webSockerInit() {\n      var that = this;\n      that.commonUrl = that.baseIP + ':' + that.basePort + \"/\" + that.baseUrl;\n      var socketUrl = \"ws://\" + that.commonUrl + \"/led/\" + that.baseLedId;\n      var ws = new _WebSocketClient.WebSocketClient(socketUrl);\n      ws.connect();\n      ws.onmessage(function (msg) {\n        var data = JSON.parse(msg.data);\n        if (data.type === \"default\") {\n          that.chartsData.Pie.series[0].data = data.pie;\n          that.baseInfo.stockCount = data.stockCunt;\n          that.baseInfo.emptyCount = data.emptyCount;\n          that.baseInfo.noneCount = data.noneCount;\n          that.baseInfo.used = data.used;\n          that.baseInfo.usedPr = data.usedPr;\n          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)];\n          that.chartsData.Line.series = data.rows;\n          that.calendar = data.year + \"年\" + data.month + \"月\" + data.day + \"日 \" + data.hour + \":\" + data.minute + \":\" + data.second + \" \" + data.week;\n          that.currDate = data.year + \"/\" + data.month + \"/\" + data.day;\n          that.locList = data.inventoryData;\n        } else if (data.type === \"error\") {\n          if (data.errMsg && data.errMsg !== \"\") {\n            var errorInfo = data.errMsg;\n            if (that.infoType == 1) {\n              that.infoType = 3;\n              that.infoText.title = \"其他信息\";\n              // that.infoText.title = \"异常\"\n              that.infoText.error = errorInfo;\n              return;\n            }\n            that.infoType = 2;\n            that.infoText.title = \"其他信息\";\n            // that.infoText.title = \"异常\"\n            that.infoText.error = errorInfo;\n          } else {\n            if (that.infoType == 1) {\n              return;\n            }\n            that.infoType = 0;\n          }\n        } else if (data.type === \"task\") {\n          if (data.taskList && data.taskList !== \"\") {\n            if (that.infoType == 2 || that.infoType == 3) {\n              return;\n            }\n            // infoType1:只有拣料等信息\n            that.infoType = 1;\n            if (data.taskList[0].ioType === 101) {\n              that.infoText.title = '全板出库';\n            } else if (data.taskList[0].ioType === 103) {\n              that.infoText.title = '检料出库';\n            } else if (data.taskList[0].ioType === 107) {\n              that.infoText.title = '盘点出库';\n            } else if (data.taskList[0].ioType === 1) {\n              that.infoText.title = '入库';\n            } else if (data.taskList[0].ioType === 10) {\n              that.infoText.title = '空托入库';\n            } else if (data.taskList[0].ioType === 110) {\n              that.infoText.title = '空托出库';\n            }\n            that.infoText.barcode = data.taskList[0].barcode;\n            that.infoText.workNo = data.taskList[0].workNo;\n            that.infoText.sourceLocNo = data.taskList[0].sourceLocNo;\n            that.infoText.staNo = data.taskList[0].staNo;\n            that.swiperList = data.taskList[0].matDtos;\n            // that.infoText.matnr = res.data[0].matDtos[0].matnr\n            // that.infoText.specs = res.data[0].matDtos[0].specs\n            // that.infoText.maknx = res.data[0].matDtos[0].maknx\n            // that.infoText.count = res.data[0].matDtos[0].count\n          } else {\n            if (that.infoType == 2 || that.infoType == 3) {\n              return;\n            }\n            that.infoType = 0;\n          }\n        }\n      });\n    },\n    statisticalModel: function statisticalModel() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/locDetl/pda/statisticalModel\",\n        method: 'GET',\n        success: function success(result) {\n          var res = result.data;\n          if (res.code === 200) {\n            __f__(\"log\", res.data, \" at pages/home/home.vue:522\");\n            that.locList = res.data;\n          }\n        }\n      });\n    },\n    timeOut: function timeOut() {\n      __f__(\"log\", this.times, \" at pages/home/home.vue:529\");\n    },\n    getUrl: function getUrl() {\n      this.commonUrl = this.baseHttp + this.baseIP + ':' + this.basePort + \"/\" + this.baseUrl;\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    // 获取错误信息\n    getInfo2: function getInfo2() {\n      var that = this;\n      var result = _data.default.dataInfo2;\n      var res = result.data;\n      if (res.data && res.data !== \"\") {\n        if (that.infoType == 2 || that.infoType == 3) {\n          return;\n        }\n        // infoType1:只有拣料等信息\n        that.infoType = 1;\n        if (res.data[0].ioType === 101) {\n          that.infoText.title = '全板出库';\n        } else if (res.data[0].ioType === 103) {\n          that.infoText.title = '检料出库';\n        } else if (res.data[0].ioType === 107) {\n          that.infoText.title = '盘点出库';\n        } else if (res.data[0].ioType === 1) {\n          that.infoText.title = '入库';\n        } else if (res.data[0].ioType === 10) {\n          that.infoText.title = '空托入库';\n        } else if (res.data[0].ioType === 110) {\n          that.infoText.title = '空托出库';\n        }\n        that.infoText.barcode = res.data[0].barcode;\n        that.infoText.workNo = res.data[0].workNo;\n        that.infoText.sourceLocNo = res.data[0].sourceLocNo;\n        that.infoText.staNo = res.data[0].staNo;\n        that.swiperList = res.data[0].matDtos;\n        // that.infoText.matnr = res.data[0].matDtos[0].matnr\n        // that.infoText.specs = res.data[0].matDtos[0].specs\n        // that.infoText.maknx = res.data[0].matDtos[0].maknx\n        // that.infoText.count = res.data[0].matDtos[0].count\n      } else {\n        if (that.infoType == 2 || that.infoType == 3) {\n          return;\n        }\n        that.infoType = 0;\n      }\n    },\n    getError2: function getError2() {\n      var that = this;\n      var result = _data.default.dataError2;\n      var res = result.data;\n      if (res.data && res.data !== \"\") {\n        var errorInfo = res.data;\n        if (that.infoType == 1) {\n          that.infoType = 3;\n          that.infoText.title = \"其他信息\";\n          // that.infoText.title = \"异常\"\n          that.infoText.error = errorInfo;\n          return;\n        }\n        that.infoType = 2;\n        that.infoText.title = \"其他信息\";\n        // that.infoText.title = \"异常\"\n        that.infoText.error = errorInfo;\n      } else {\n        if (that.infoType == 1) {\n          return;\n        }\n        that.infoType = 0;\n      }\n    },\n    getInfo: function getInfo() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/led\",\n        method: \"GET\",\n        data: {\n          ledId: that.baseLedId\n        },\n        success: function success(result) {\n          that.timeOut = false;\n          that.times = 0;\n          var res = result.data;\n          if (res.data && res.data !== \"\") {\n            if (that.infoType == 2 || that.infoType == 3) {\n              return;\n            }\n            // infoType1:只有拣料等信息\n            that.infoType = 1;\n            if (res.data[0].ioType === 101) {\n              that.infoText.title = '全板出库';\n            } else if (res.data[0].ioType === 103) {\n              that.infoText.title = '检料出库';\n            } else if (res.data[0].ioType === 107) {\n              that.infoText.title = '盘点出库';\n            } else if (res.data[0].ioType === 1) {\n              that.infoText.title = '入库';\n            } else if (res.data[0].ioType === 10) {\n              that.infoText.title = '空托入库';\n            } else if (res.data[0].ioType === 110) {\n              that.infoText.title = '空托出库';\n            }\n            that.infoText.barcode = res.data[0].barcode;\n            that.infoText.workNo = res.data[0].workNo;\n            that.infoText.sourceLocNo = res.data[0].sourceLocNo;\n            that.infoText.staNo = res.data[0].staNo;\n            that.swiperList = res.data[0].matDtos;\n            // that.infoText.matnr = res.data[0].matDtos[0].matnr\n            // that.infoText.specs = res.data[0].matDtos[0].specs\n            // that.infoText.maknx = res.data[0].matDtos[0].maknx\n            // that.infoText.count = res.data[0].matDtos[0].count\n          } else {\n            if (that.infoType == 2 || that.infoType == 3) {\n              return;\n            }\n            that.infoType = 0;\n          }\n        },\n        fail: function fail(err) {\n          that.timeOut = true;\n          that.times = that.times + 1;\n          that.infoType = 0;\n        }\n      });\n    },\n    getError: function getError() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/led/error\",\n        data: {\n          ledId: that.baseLedId\n        },\n        method: \"GET\",\n        success: function success(result) {\n          that.timeOut = false;\n          that.times = 0;\n          var res = result.data;\n          if (res.data && res.data !== \"\") {\n            var errorInfo = res.data;\n            if (that.infoType == 1) {\n              that.infoType = 3;\n              that.infoText.title = \"其他信息\";\n              // that.infoText.title = \"异常\"\n              that.infoText.error = errorInfo;\n              return;\n            }\n            that.infoType = 2;\n            that.infoText.title = \"其他信息\";\n            // that.infoText.title = \"异常\"\n            that.infoText.error = errorInfo;\n          } else {\n            if (that.infoType == 1) {\n              return;\n            }\n            that.infoType = 0;\n          }\n        },\n        fail: function fail(err) {\n          that.timeOut = true;\n          that.infoType = 0;\n        }\n      });\n    },\n    // 控制器\n    controller: function controller() {\n      var _this2 = this;\n      switch (this.infoType) {\n        // 有信息 但 没有错误信息\n        case 0:\n          if (this.errorInfoViewShow) {\n            this.errorInfoViewShow = false;\n            this.errorInfoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.homeViewShow = true;\n              _this2.homeMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.infoViewShow) {\n            this.infoViewShow = false;\n            this.infoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.homeViewShow = true;\n              _this2.homeMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.errorInfoViewShow && this.infoViewShow) {\n            this.errorInfoViewShow = false;\n            this.infoViewShow = false;\n            this.infoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.homeViewShow = true;\n              _this2.homeMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          }\n          return;\n        case 1:\n          if (this.homeViewShow) {\n            this.homeViewShow = false;\n            this.homeMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.infoViewShow = true;\n              _this2.infoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.errorInfoViewShow) {\n            this.errorInfoViewShow = false;\n            this.errorInfoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.infoViewShow = true;\n              _this2.infoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          }\n          return;\n        // 有信息 且 有错误信息\n        case 2:\n          if (this.homeViewShow) {\n            this.homeViewShow = false;\n            this.homeMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.errorInfoViewShow = true;\n              _this2.errorInfoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.infoViewShow) {\n            this.infoViewShow = false;\n            this.infoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.errorInfoViewShow = true;\n              _this2.errorInfoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          }\n          return;\n        // 有信息 且 有错误信息\n        case 3:\n          if (this.homeViewShow) {\n            this.homeViewShow = false;\n            this.homeMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.errorInfoViewShow = true;\n              _this2.errorInfoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.infoViewShow) {\n            this.infoViewShow = false;\n            this.infoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.errorInfoViewShow = true;\n              _this2.errorInfoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          }\n          return;\n      }\n    },\n    // 主屏幕\n    handle: function handle(type) {\n      this.homeViewShow = !this.homeViewShow;\n      this.modeClass = type;\n    },\n    // 拣料\n    handle1: function handle1(type) {\n      this.infoViewShow = !this.infoViewShow;\n      this.modeClass = type;\n    },\n    // 异常\n    handle2: function handle2(type) {\n      this.errorInfoViewShow = !this.errorInfoViewShow;\n      this.modeClass = type;\n    },\n    // 配置\n    ejected: function ejected() {\n      this.ejectShow = true;\n    },\n    // 取消配置\n    ejectClose: function ejectClose() {\n      this.ejectShow = false;\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      uni.setStorageSync('UPROJ', this.baseUrl);\n      this.getUrl();\n      this.ejectShow = false;\n    },\n    // 日历 服务器\n    getDate2: function getDate2() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/date\",\n        method: \"GET\",\n        success: function success(result) {\n          var res = result.data.data;\n        }\n      });\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:\n          weeks = \"星期日\";\n          break;\n        case 1:\n          weeks = \"星期一\";\n          break;\n        case 2:\n          weeks = \"星期二\";\n          break;\n        case 3:\n          weeks = \"星期三\";\n          break;\n        case 4:\n          weeks = \"星期四\";\n          break;\n        case 5:\n          weeks = \"星期五\";\n          break;\n        default:\n          weeks = \"星期六\";\n      }\n      this.calendar = year + \"年\" + month + \"月\" + day + \"日 \" + hours + \":\" + minutes + \":\" + seconds + \" \" + weeks;\n    },\n    getDateFormat: function getDateFormat(value) {\n      var date = new Date(this.currDate); // 获取当前时间\n      date.setDate(date.getDate() + value); // 设置天数 -1 天\n      var m = date.getMonth() + 1;\n      var d = date.getDate();\n      var newDate = m + '-' + d;\n      return newDate;\n    },\n    /*************** 折线图 *****************************************************************************************************/initlineChart: function initlineChart() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/line/charts\",\n        method: 'GET',\n        success: function success(result) {\n          var res = result.data;\n          if (res.code === 200) {}\n        }\n      });\n    },\n    /*************** 饼图 *****************************************************************************************************/initPieChart: function initPieChart() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/loc/rep\",\n        method: 'GET',\n        success: function success(result) {\n          var res = result.data;\n          if (res.code === 200) {\n            that.chartsData.Pie.series[0].data = res.data.pie;\n            that.baseInfo.stockCount = res.data.stockCunt;\n            that.baseInfo.emptyCount = res.data.emptyCount;\n            that.baseInfo.noneCount = res.data.noneCount;\n            that.baseInfo.used = res.data.used;\n            that.baseInfo.usedPr = res.data.usedPr;\n          }\n        }\n      });\n    },\n    getOther: function getOther() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/other\",\n        data: {\n          crnId: that.baseCrnId,\n          ledId: that.baseLedId\n        },\n        success: function success(result) {\n          // console.log(result);\n          var res = result.data;\n          if (res.code === 200) {\n            that.baseInfo.xDistance = res.data.xDistance;\n            that.baseInfo.yDistance = res.data.yDistance;\n            that.baseInfo.xDuration = res.data.xDuration;\n            that.baseInfo.yDuration = res.data.yDuration;\n          } else if (res.code === 403) {} else {}\n        }\n      });\n    }\n  }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaG9tZS9ob21lLnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwic2VyaWVzIiwiaG9tZVZpZXdTaG93IiwiaW5mb1ZpZXdTaG93IiwiZXJyb3JJbmZvVmlld1Nob3ciLCJob21lTW9kZSIsImluZm9Nb2RlIiwiZXJyb3JJbmZvTW9kZSIsImJhc2VJbmZvIiwieERpc3RhbmNlIiwieURpc3RhbmNlIiwieER1cmF0aW9uIiwieUR1cmF0aW9uIiwidXNlZFByIiwidXNlZCIsInN0b2NrQ291bnQiLCJlbXB0eUNvdW50Iiwibm9uZUNvdW50IiwiY2hhcnRzRGF0YSIsImR1cmF0aW9uIiwiY2FsZW5kYXIiLCJyaW5nT3B0cyIsImNoYXJ0c0RhdGFMaW5lMSIsImNoYXJ0c0RhdGFQaWUyIiwiZm9udFNpemUiLCJoZWlnaHQiLCJzaG93Q2hhcnRzIiwiZWplY3RTaG93IiwiYmFzZUlQIiwiYmFzZVBvcnQiLCJiYXNlTGVkSWQiLCJiYXNlQ3JuSWQiLCJiYXNlVXJsIiwiaW5mbyIsImVycm9yIiwiaW5mb1R5cGUiLCJ0ZXh0IiwiaW5mb1RleHQiLCJ0aXRsZSIsInN0YU5vIiwibWF0bnIiLCJtYWtueCIsInNwZWNzIiwiY291bnQiLCJiYXJjb2RlIiwic3dpcGVyTGlzdCIsInRpbWVPdXQiLCJ0aW1lcyIsImN1cnJEYXRlIiwibG9jTGlzdCIsIm9uU2hvdyIsInBsdXMiLCJtb3VudGVkIiwidGhhdCIsImNyZWF0ZWQiLCJvbkxvYWQiLCJzZXRJbnRlcnZhbCIsIm1ldGhvZHMiLCJ3ZWJTb2NrZXJJbml0Iiwid3MiLCJzdGF0aXN0aWNhbE1vZGVsIiwidW5pIiwidXJsIiwibWV0aG9kIiwic3VjY2VzcyIsImdldFVybCIsImdldFNlcnZlckRhdGEiLCJnZXRJbmZvMiIsImdldEVycm9yMiIsImdldEluZm8iLCJsZWRJZCIsImZhaWwiLCJnZXRFcnJvciIsImNvbnRyb2xsZXIiLCJzZXRUaW1lb3V0IiwiaGFuZGxlIiwiaGFuZGxlMSIsImhhbmRsZTIiLCJlamVjdGVkIiwiZWplY3RDbG9zZSIsImVqZWN0Q29uZmlybSIsImdldERhdGUyIiwiZ2V0RGF0ZSIsInllYXIiLCJtb250aCIsImRheSIsImhvdXJzIiwibWludXRlcyIsInNlY29uZHMiLCJ3ZWVrcyIsImdldERhdGVGb3JtYXQiLCJkYXRlIiwiaW5pdGxpbmVDaGFydCIsImluaXRQaWVDaGFydCIsImdldE90aGVyIiwiY3JuSWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFnVEE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQUEsZUFDQTtFQUNBQTtJQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO01BQ0E7TUFDQUM7UUFDQTtVQUNBO1VBQ0E7UUFDQTtRQUNBO1VBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBVDtRQUNBVTtNQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO0lBRUE7RUFDQTtFQUNBQztJQUNBOztJQUVBQztFQUVBO0VBQ0FDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0FDO0lBQ0FBO0lBQ0FBO0lBQ0FBO0lBQ0FBO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBRDtJQUNBQTtJQUNBQTtJQUNBQTtJQUNBQTtJQUNBQTtFQUNBO0VBQ0FFO0lBQUE7SUFDQUM7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBRUE7RUFDQTtFQUNBQztJQUNBQztNQUNBO01BQ0FMO01BQ0E7TUFDQTtNQUNBTTtNQUNBQTtRQUNBO1FBQ0E7VUFDQU47VUFDQUE7VUFDQUE7VUFDQUE7VUFDQUE7VUFDQUE7VUFFQUEsbUNBQ0FBLGtHQUNBQSxnR0FDQUE7VUFDQUE7VUFDQUE7VUFDQUE7VUFDQUE7UUFDQTtVQUNBO1lBQ0E7WUFDQTtjQUNBQTtjQUNBQTtjQUNBO2NBQ0FBO2NBQ0E7WUFDQTtZQUNBQTtZQUNBQTtZQUNBO1lBQ0FBO1VBQ0E7WUFDQTtjQUNBO1lBQ0E7WUFDQUE7VUFDQTtRQUNBO1VBQ0E7WUFDQTtjQUNBO1lBQ0E7WUFDQTtZQUNBQTtZQUNBO2NBQ0FBO1lBQ0E7Y0FDQUE7WUFDQTtjQUNBQTtZQUNBO2NBQ0FBO1lBQ0E7Y0FDQUE7WUFDQTtjQUNBQTtZQUNBO1lBQ0FBO1lBQ0FBO1lBQ0FBO1lBQ0FBO1lBQ0FBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7VUFDQTtZQUNBO2NBQ0E7WUFDQTtZQUNBQTtVQUNBO1FBQ0E7TUFFQTtJQUNBO0lBQ0FPO01BQ0E7TUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7VUFDQTtVQUNBO1lBQ0E7WUFDQVg7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBUDtNQUNBO0lBQ0E7SUFDQW1CO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQTtVQUNBO1FBQ0E7UUFDQTtRQUNBZDtRQUNBO1VBQ0FBO1FBQ0E7VUFDQUE7UUFDQTtVQUNBQTtRQUNBO1VBQ0FBO1FBQ0E7VUFDQUE7UUFDQTtVQUNBQTtRQUNBO1FBQ0FBO1FBQ0FBO1FBQ0FBO1FBQ0FBO1FBQ0FBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtRQUNBO1VBQ0E7UUFDQTtRQUNBQTtNQUNBO0lBQ0E7SUFDQWU7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBO1FBQ0E7VUFDQWY7VUFDQUE7VUFDQTtVQUNBQTtVQUNBO1FBQ0E7UUFDQUE7UUFDQUE7UUFDQTtRQUNBQTtNQUNBO1FBQ0E7VUFDQTtRQUNBO1FBQ0FBO01BQ0E7SUFDQTtJQUNBZ0I7TUFDQTtNQUNBUjtRQUNBQztRQUNBQztRQUNBL0Q7VUFBQXNFO1FBQUE7UUFDQU47VUFDQVg7VUFDQUE7VUFDQTtVQUNBO1lBQ0E7Y0FDQTtZQUNBO1lBQ0E7WUFDQUE7WUFDQTtjQUNBQTtZQUNBO2NBQ0FBO1lBQ0E7Y0FDQUE7WUFDQTtjQUNBQTtZQUNBO2NBQ0FBO1lBQ0E7Y0FDQUE7WUFDQTtZQUNBQTtZQUNBQTtZQUNBQTtZQUNBQTtZQUNBQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1VBQ0E7WUFDQTtjQUNBO1lBQ0E7WUFDQUE7VUFDQTtRQUNBO1FBQ0FrQjtVQUNBbEI7VUFDQUE7VUFDQUE7UUFDQTtNQUNBO0lBRUE7SUFDQW1CO01BQ0E7TUFDQVg7UUFDQUM7UUFDQTlEO1VBQUFzRTtRQUFBO1FBQ0FQO1FBQ0FDO1VBQ0FYO1VBQ0FBO1VBQ0E7VUFDQTtZQUNBO1lBQ0E7Y0FDQUE7Y0FDQUE7Y0FDQTtjQUNBQTtjQUNBO1lBQ0E7WUFDQUE7WUFDQUE7WUFDQTtZQUNBQTtVQUNBO1lBQ0E7Y0FDQTtZQUNBO1lBQ0FBO1VBQ0E7UUFDQTtRQUNBa0I7VUFDQWxCO1VBQ0FBO1FBQ0E7TUFDQTtJQUVBO0lBQ0E7SUFDQW9CO01BQUE7TUFDQTtRQUNBO1FBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQUM7Y0FDQTtjQUNBO1lBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQUE7Y0FDQTtjQUNBO1lBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBQTtjQUNBO2NBQ0E7WUFDQTtVQUNBO1VBQ0E7UUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBQTtjQUNBO2NBQ0E7WUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBQTtjQUNBO2NBQ0E7WUFDQTtVQUNBO1VBRUE7UUFDQTtRQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0FBO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0FBO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7VUFDQTtRQUNBO1FBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQUE7Y0FDQTtjQUNBO1lBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQUE7Y0FDQTtjQUNBO1lBQ0E7VUFDQTtVQUNBO01BQUE7SUFJQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQ0FuQjtNQUNBQTtNQUNBQTtNQUNBQTtNQUNBQTtNQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FvQjtNQUNBO01BQ0FwQjtRQUNBQztRQUNBQztRQUNBQztVQUNBO1FBRUE7TUFDQTtJQUNBO0lBRUE7SUFDQWtCO01BQ0E7TUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBO1FBQ0E7VUFBQUE7VUFBQTtRQUNBO1VBQUFBO1VBQUE7UUFDQTtVQUFBQTtVQUFBO1FBQ0E7VUFBQUE7VUFBQTtRQUNBO1VBQUFBO1VBQUE7UUFDQTtVQUFBQTtVQUFBO1FBQ0E7VUFBQUE7TUFBQTtNQUVBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBQztNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQSwySEFDQUM7TUFDQTtNQUNBL0I7UUFDQUM7UUFDQUM7UUFDQUM7VUFDQTtVQUNBLHVCQUVBO1FBQ0E7TUFDQTtJQUNBO0lBQ0EsMEhBQ0E2QjtNQUNBO01BQ0FoQztRQUNBQztRQUNBQztRQUNBQztVQUNBO1VBQ0E7WUFDQVg7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBeUM7TUFDQTtNQUNBakM7UUFDQUM7UUFDQTlEO1VBQ0ErRjtVQUNBekI7UUFDQTtRQUNBTjtVQUNBO1VBQ0E7VUFDQTtZQUNBWDtZQUNBQTtZQUNBQTtZQUNBQTtVQUNBLDhCQUVBLFFBRUE7UUFDQTtNQUNBO0lBQ0E7RUFDQTtBQUVBO0FBQUEsMkIiLCJmaWxlIjoiMTAxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblx0XHQ8dW5pLXRyYW5zaXRpb24gOmR1cmF0aW9uPVwiZHVyYXRpb25cIiA6bW9kZS1jbGFzcz1cImhvbWVNb2RlXCIgOnNob3c9XCJob21lVmlld1Nob3dcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJob21lLXZpZXdcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImhlYWRcIj5cclxuXHRcdFx0XHRcdDx0ZXh0PuaZuuiDveWkp+Wxj+aYvuekuuezu+e7nzwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSDml6XljoYgLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aW1lLXRvb2xzXCI+e3tjYWxlbmRhcn19PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLWxlZnRcIiBAY2xpY2s9XCJlamVjdGVkKClcIj48L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24tcmlnaHRcIiBAY2xpY2s9XCJlamVjdGVkKClcIj48L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSDkuLvop4blm74gLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtYWluXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm1pYW4taXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm1pYW4taXRlbS1ib3hcIj5cclxuXHRcdFx0XHRcdFx0XHQ8eS1ib3g+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS10aXRsZVwiPuaZuuiDveWkp+Wxj+aYvuekuuezu+e7nzwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+SW50ZWxsaWdlbnQgTGFyZ2VTY3JlZW4gRGlzcGxheSBTeXN0ZW08L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+5LuT5bqT5pWw5o2uPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tc3ViVGl0bGVcIj53YXJlaG91c2UgZGF0YTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbWctYm94XCI+XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIHN3aXBlciDkuIDkupvor7TmmI5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjaXJjdWxhciDmmK/lkKbph4fnlKjooZTmjqXmu5HliqjvvIzljbPmkq3mlL7liLDmnKvlsL7lkI7ph43mlrDlm57liLDlvIDlpLRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2ZXJ0aWNhbCDmu5HliqjmlrnlkJHmmK/lkKbkuLrnurXlkJEgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheS1tdWx0aXBsZS1pdGVtcyDlkIzml7bmmL7npLrnmoTmu5HlnZfmlbDph48gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHN3aXBlciBjbGFzcz1cInN3aXBlci1ib2R5LW1haW5cIiB2ZXJ0aWNhbD1cInRydWVcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5LW11bHRpcGxlLWl0ZW1zPVwiNVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2lyY3VsYXI9XCJ0cnVlXCIgOmF1dG9wbGF5PVwidHJ1ZVwiIDppbnRlcnZhbD1cIjMwMDBcIiA6ZHVyYXRpb249XCIyMDAwXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3dpcGVyLWl0ZW0gY2xhc3M9XCJzd2lwZXItaXRlbVwiIHYtZm9yPVwiKGl0ZW0saSkgaW4gbG9jTGlzdFwiIDprZXk9XCJpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gPHZpZXcgc3R5bGU9XCJ3aWR0aDogMzAlO1wiPnt7aSsxfX0gLyB7e3N3aXBlckxpc3QubGVuZ3RofX08L3ZpZXc+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIDx2aWV3IHN0eWxlPVwid2lkdGg6IDMwJTtcIj7mlpnlj7c6IHt7aXRlbS5tYXRucn19PC92aWV3PiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogNTAlOyBmb250LXNpemU6IDF2dztcIj7nianmlpnnoIE6IHt7aXRlbS5tYXRucn19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA1MCU7IGZvbnQtc2l6ZTogMXZ3O1wiPuaVsOmHjzoge3tpdGVtLm1hdG5yQ291bnR9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvc3dpcGVyLWl0ZW0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zd2lwZXI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvd1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDlt6bkvqcgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+5bqT5L2N5L2/55So546HPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+RVFVSVBNRU5UIFVTQUdFIFRISVMgTU9OVEg8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5Y+z5L6nIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOeZvuWIhuavlCAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1jb2xcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LWVuZDtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1wiID5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSBzdHlsZT1cImp1c3RpZnktY29udGVudDogZmxleC1lbmQ7cG9zaXRpb246IGFic29sdXRlO3RvcDogMDtyaWdodDogMXZ3O3RleHQtYWxpZ246IHJpZ2h0O1wiIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tdGl0bGVcIj57e2Jhc2VJbmZvLnVzZWRQcn19JTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSA8dGV4dCBjbGFzcz1cIml0ZW0tc3ViVGl0bGVcIj7lkIzmr5TkuIrmnIggKyA1JTwvdGV4dD4gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTthbGlnbi1pdGVtczogZmxleC1zdGFydDtwb3NpdGlvbjogcmVsYXRpdmU7Zm9udC1zaXplOiAxdndcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOi/m+W6puadoSAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtwb3NpdGlvbjogcmVsYXRpdmU7bWFyZ2luLXRvcDogNSU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInByb2dyZXNzQmFyXCIgc3R5bGU9XCJ3aWR0aDogODAlO2hlaWdodDogMnZ3O1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInByb2dyZXNzXCIgOnN0eWxlPVwiJ3dpZHRoOicrIGJhc2VJbmZvLnVzZWRQciArICclJ1wiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO2JvdHRvbTogMDtyaWdodDogMDtmb250LXNpemU6IDIuNXZ3O2NvbG9yOiAjRkY1NzIyOztcIj57e2Jhc2VJbmZvLnVzZWR9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ktYm94PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm1pYW4taXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm1pYW4taXRlbS1ib3hcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiAzNSU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5oqY57q/5Zu+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8eS1ib3g+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvd1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5bem5L6nIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+5YWl5Ye65bqT57uf6K6hPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS1zdWJUaXRsZVwiPk9SREVSIFNUQVRJU1RJQ1M8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDlj7PkvqcgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDnmb7liIbmr5QgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtZW5kO2p1c3RpZnktY29udGVudDogZmxleC1lbmQ7XCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSBzdHlsZT1cImp1c3RpZnktY29udGVudDogZmxleC1lbmQ7cG9zaXRpb246IGFic29sdXRlO3RvcDogMDtyaWdodDogMXZ3O3RleHQtYWxpZ246IHJpZ2h0O1wiIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSA8dGV4dCBjbGFzcz1cIml0ZW0tdGl0bGVcIj4zMTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS1zdWJUaXRsZVwiPuS7iuaXpeiuouWNleaVsDwvdGV4dD4gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImNoYXJ0cy1ib3hcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHFpdW4tZGF0YS1jaGFydHMgdHlwZT1cImxpbmVcIiA6Y2hhcnREYXRhPVwiY2hhcnRzRGF0YUxpbmUxXCIgOmVjaGFydHNINT1cInRydWVcIiA6ZWNoYXJ0c0FwcD1cInRydWVcIi8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ktYm94PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0gbnVsbCAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiAyJTtcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDQzJTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHktYm94PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3dcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOW3puS+pyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS10aXRsZVwiPuW6k+WtmOexu+WeizwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tc3ViVGl0bGVcIj5JTkNPTUUgREFURTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOWPs+S+pyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bztcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOeZvuWIhuavlCAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1lbmQ7anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcIiA+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tdGl0bGVcIj7ku4rlpKk8L3RleHQ+IFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+VG9kYXk8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDlt6YgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiY2hhcnRzLWJveC1yaW5nXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHFpdW4tZGF0YS1jaGFydHMgdHlwZT1cInJpbmdcIiA6b3B0cz1cIntsZWdlbmQ6e3Bvc2l0aW9uOidib3R0b20nfX1cIiA6ZW9wdHM9XCJyaW5nT3B0c1wiIDpjaGFydERhdGE9XCJjaGFydHNEYXRhUGllMlwiIDplY2hhcnRzSDU9XCJ0cnVlXCIgOmVjaGFydHNBcHA9XCJ0cnVlXCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5Y+zIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93IHN1Yi1pbmZvXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2cxLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogOHZ3O2hlaWdodDogNHZ3O2xpbmUtaGVpZ2h0OiA0dnc7XCI+5Zyo5bqTPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogOHZ3O2hlaWdodDogNHZ3O2xpbmUtaGVpZ2h0OiA0dnc7Zm9udC1zaXplOiAydnc7XCI+e3tiYXNlSW5mby5zdG9ja0NvdW50fX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3cgc3ViLWluZm9cIiBzdHlsZT1cIm1hcmdpbi10b3A6IDJ2aDtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvZjEucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA4dnc7aGVpZ2h0OiA0dnc7bGluZS1oZWlnaHQ6IDR2dztcIj7nqbrlupM8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA4dnc7aGVpZ2h0OiA0dnc7bGluZS1oZWlnaHQ6IDR2dztmb250LXNpemU6IDJ2dztcIj57e2Jhc2VJbmZvLmVtcHR5Q291bnR9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvdyBzdWItaW5mb1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMnZoO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9lMS5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDh2dztoZWlnaHQ6IDR2dztsaW5lLWhlaWdodDogNHZ3O1wiPumUgeWumjwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDh2dztoZWlnaHQ6IDR2dztsaW5lLWhlaWdodDogNHZ3O2ZvbnQtc2l6ZTogMnZ3O1wiPnt7YmFzZUluZm8ubm9uZUNvdW50fX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ktYm94PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDIlO1wiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiAxOCU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx5LWJveD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7Zm9udC1zaXplOiA0dmg7anVzdGlmeS1jb250ZW50OiBjZW50ZXI7bGV0dGVyLXNwYWNpbmc6IDF2aDtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdOaZuuiDveWkp+Wxj+aYvuekuuezu+e7n1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC95LWJveD5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdW5pLXRyYW5zaXRpb24+XHJcblx0XHQ8IS0tIOWFqOadvy/mi6Pmlpnkv6Hmga8gLS0+XHJcblx0XHQ8dW5pLXRyYW5zaXRpb24gOmR1cmF0aW9uPVwiZHVyYXRpb25cIiA6bW9kZS1jbGFzcz1cImluZm9Nb2RlXCIgOnNob3c9XCJpbmZvVmlld1Nob3dcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJob21lLXZpZXdcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImhlYWRcIj5cclxuXHRcdFx0XHRcdDx0ZXh0Pnt7aW5mb1RleHQudGl0bGV9fTwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSDml6XljoYgLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aW1lLXRvb2xzXCI+e3tjYWxlbmRhcn19PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLWxlZnRcIiBAY2xpY2s9XCJlamVjdGVkKClcIj48L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24tcmlnaHRcIiBAY2xpY2s9XCJlamVjdGVkKClcIj48L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSDkuLvkvZMgLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbmZvLW1haW5cIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5mby1ib3hcIj5cclxuXHRcdFx0XHRcdFx0PHktYm94PlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0g5paH5pys5a655ZmoIC0tPlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidGV4dC1jb250ZW50XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIGhlYWQgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInN3aXBlci1oZWFkXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDMwJTtcIj7miZjnm5jnoIE6IHt7aW5mb1RleHQuYmFyY29kZX19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAyMCU7XCI+5bel5L2c5Y+3OiB7e2luZm9UZXh0LndvcmtOb319PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAzMCU7XCI+5rqQ5bqT5L2NOiB7e2luZm9UZXh0LnNvdXJjZUxvY05vfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDIwJTtcIj7nm67moIfnq5k6IHt7aW5mb1RleHQuc3RhTm99fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PCEtLSA8dmlldyBzdHlsZT1cIndpZHRoOiAxMCU7XCI+5pWw6YePPC92aWV3PiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0gYm9keSAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwic3dpcGVyLWJvZHlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PCEtLSBzd2lwZXIg5LiA5Lqb6K+05piOXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNpcmN1bGFyIOaYr+WQpumHh+eUqOihlOaOpea7keWKqO+8jOWNs+aSreaUvuWIsOacq+WwvuWQjumHjeaWsOWbnuWIsOW8gOWktFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2ZXJ0aWNhbCDmu5HliqjmlrnlkJHmmK/lkKbkuLrnurXlkJEgXHJcblx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXktbXVsdGlwbGUtaXRlbXMg5ZCM5pe25pi+56S655qE5ruR5Z2X5pWw6YePIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3dpcGVyIGNsYXNzPVwic3dpcGVyLWJvZHktbWFpblwiIHZlcnRpY2FsPVwidHJ1ZVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5LW11bHRpcGxlLWl0ZW1zPVwiMVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNpcmN1bGFyPVwidHJ1ZVwiIDphdXRvcGxheT1cInRydWVcIiA6aW50ZXJ2YWw9XCIzMDAwXCIgOmR1cmF0aW9uPVwiMjAwMFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzd2lwZXItaXRlbSBjbGFzcz1cInN3aXBlci1pdGVtXCIgdi1mb3I9XCIoaXRlbSxpKSBpbiBzd2lwZXJMaXN0XCIgOmtleT1cImlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gPHZpZXcgc3R5bGU9XCJ3aWR0aDogMzAlO1wiPnt7aSsxfX0gLyB7e3N3aXBlckxpc3QubGVuZ3RofX08L3ZpZXc+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSA8dmlldyBzdHlsZT1cIndpZHRoOiAzMCU7XCI+5paZ5Y+3OiB7e2l0ZW0ubWF0bnJ9fTwvdmlldz4gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA1MCU7IGZvbnQtc2l6ZTogM3Z3O1wiPueJqeaWmee8lueggToge3tpdGVtLm1hdG5yfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA1MCU7IGZvbnQtc2l6ZTogM3Z3O1wiPuaJueWPtzoge3tpdGVtLmJhdGNofX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAzMyU7IGZvbnQtc2l6ZTogM3Z3O1wiPueUn+S6p+aXpeacnzoge3tpdGVtLm1hbnVEYXRlfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDMzJTsgZm9udC1zaXplOiAzdnc7XCI+5Z6L5Y+3OiB7e2l0ZW0ubW9kZWx9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDMzJTsgZm9udC1zaXplOiAzdnc7XCI+6Iac57G75Z6LOiB7e2l0ZW0uc3BlY3N9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMzMlOyBmb250LXNpemU6IDN2dztcIj7plb/luqY6IHt7aXRlbS5sZW5ndGh9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDMzJTsgZm9udC1zaXplOiAzdnc7XCI+5a695bqmOiB7e2l0ZW0ud2VpZ2h0fX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAzMyU7IGZvbnQtc2l6ZTogM3Z3O1wiPumdouenrzoge3tpdGVtLnZvbHVtZX19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3N3aXBlci1pdGVtPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3N3aXBlcj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDwveS1ib3g+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3VuaS10cmFuc2l0aW9uPlxyXG5cdFx0PCEtLSDlvILluLjkv6Hmga8gLS0+XHJcblx0XHQ8dW5pLXRyYW5zaXRpb24gOmR1cmF0aW9uPVwiZHVyYXRpb25cIiA6bW9kZS1jbGFzcz1cImVycm9ySW5mb01vZGVcIiA6c2hvdz1cImVycm9ySW5mb1ZpZXdTaG93XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiZXJyb3ItaW5mby12aWV3XCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoZWFkXCI+XHJcblx0XHRcdFx0XHQ8dGV4dD57e2luZm9UZXh0LnRpdGxlfX08L3RleHQ+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwhLS0g5pel5Y6GIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidGltZS10b29sc1wiPnt7Y2FsZW5kYXJ9fTwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1sZWZ0XCI+PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLXJpZ2h0XCI+PC92aWV3PlxyXG5cdFx0XHRcdDwhLS0g5Li75L2TIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5mby1tYWluXCIgPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbmZvLWJveFwiPlxyXG5cdFx0XHRcdFx0XHQ8eS1ib3g+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbmZvLWJveC10ZXh0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sIGluZm8tYm94LXRleHQtaXRlbVwiPnt7aW5mb1RleHQuZXJyb3J9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDwveS1ib3g+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3VuaS10cmFuc2l0aW9uPlxyXG5cdFx0XHJcblx0XHQ8IS0tIOiHquWumuS5ieW8ueWHuuWxgiAtLT5cclxuXHRcdDx2aWV3IGNsYXNzPVwiZWplY3QtbWFza1wiIHYtc2hvdz1cImVqZWN0U2hvd1wiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImVqZWN0XCI+XHJcblx0XHRcdFx0PCEtLSDlvLnlh7p0aXRsZSAtLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImVqZWN0LXRpdGxlXCI+5L+u5pS5IC8g6YWN572uPC92aWV3PlxyXG5cdFx0XHRcdDwhLS0gaW5wdXQgLS0+XHJcblx0XHRcdFx0PHNjcm9sbC12aWV3IHNjcm9sbC15IGNsYXNzPVwiZWplY3QtaW5wdXRcIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj5pcO+8mjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJiYXNlSVBcIj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY1wiPnBvcnTvvJo8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiYmFzZVBvcnRcIj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY1wiPmxlZElk77yaPC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCI+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cImJhc2VMZWRJZFwiPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW1cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkZXNjXCI+Q3JuSWTvvJo8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiYmFzZUNybklkXCI+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj5VcmzvvJo8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiYmFzZVVybFwiPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC9zY3JvbGwtdmlldz5cclxuXHRcdFx0XHQ8IS0tIGJ1dHRvbiAtLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImVqZWN0LWJ1dHRvblwiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24taXRlbVwiIEBjbGljaz1cImVqZWN0Q2xvc2VcIj7lj5Yg5raIPC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24taXRlbVwiIEBjbGljaz1cImVqZWN0Q29uZmlybVwiPuehriDorqQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldyBzdHlsZT1cImNvbG9yOiAjRkZGO3Bvc2l0aW9uOiBmaXhlZDtib3R0b206IDEwcHg7bGVmdDogMTBweDtcIiB2LXNob3c9XCJ0aW1lT3V0XCI+XHJcblx0XHRcdOi/nuaOpei2heaXtjoge3t0aW1lc319IHNcclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcbjwhLS0ge1wibXNnXCI6XCLmk43kvZzmiJDlip9cIixcImNvZGVcIjoyMDAsXCJkYXRhXCI6W3tcInRpdGxlXCI6XCLlhajmnb/lh7rlupNcIixcIndvcmtOb1wiOjc0NjAsXCJzdGFOb1wiOjExMCxcInNvdXJjZVN0YU5vXCI6bnVsbCxcImxvY05vXCI6bnVsbCxcInNvdXJjZUxvY05vXCI6XCIwODA3MTAyXCIsXCJtYXREdG9zXCI6W3tcIm1hdE5vXCI6XCI1MDQ2MDgzNFwiLFwibWFrbnhcIjpcIjIwMHg2MOahjOmdolwiLFwiY291bnRcIjoyNi4wfV0sXCJlbXB0eU1rXCI6ZmFsc2UsXCJpb1R5cGVcIjoxMDF9XX0gLS0+XHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IGRlbW9kYXRhIGZyb20gJ0AvbW9ja2RhdGEvZGVtb2RhdGEuanNvbic7XHJcblx0aW1wb3J0IHljcWRhdGEgZnJvbSAnQC9wYWdlcy9pbmRleC9kYXRhLmpzb24nO1xyXG5cdGltcG9ydCB7V2ViU29ja2V0Q2xpZW50fSBmcm9tIFwiQC9zdGF0aWMvanMvV2ViU29ja2V0Q2xpZW50XCJcdFxyXG5cdGxldCBzb2NrZXQ7XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRzZXJpZXM6IFtdLFxyXG5cdFx0XHRcdGhvbWVWaWV3U2hvdzogdHJ1ZSxcclxuXHRcdFx0XHRpbmZvVmlld1Nob3c6IGZhbHNlXHQsXHJcblx0XHRcdFx0ZXJyb3JJbmZvVmlld1Nob3c6IGZhbHNlLFxyXG5cdFx0XHRcdGhvbWVNb2RlOiBbXSxcclxuXHRcdFx0XHRpbmZvTW9kZTogW10sXHJcblx0XHRcdFx0ZXJyb3JJbmZvTW9kZTogW10sXHJcblx0XHRcdFx0YmFzZUluZm86IHtcclxuXHRcdFx0XHRcdHhEaXN0YW5jZTogMSxcclxuXHRcdFx0XHRcdHlEaXN0YW5jZTogMixcclxuXHRcdFx0XHRcdHhEdXJhdGlvbjogMyxcclxuXHRcdFx0XHRcdHlEdXJhdGlvbjogNCxcclxuXHRcdFx0XHRcdHVzZWRQcjogNTAsXHJcblx0XHRcdFx0XHR1c2VkOiAzNTM3LFxyXG5cdFx0XHRcdFx0c3RvY2tDb3VudDogJycsXHJcblx0XHRcdFx0XHRlbXB0eUNvdW50OiAnJyxcclxuXHRcdFx0XHRcdG5vbmVDb3VudDogJycsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRjaGFydHNEYXRhOiB7XHJcblx0XHRcdFx0XHRcIkxpbmVcIjoge1xyXG5cdFx0XHRcdFx0XHRcImNhdGVnb3JpZXNcIjogW10sXHJcblx0XHRcdFx0XHRcdFwic2VyaWVzXCI6IFtdXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XCJQaWVcIjoge1xyXG5cdFx0XHRcdFx0XHRcInNlcmllc1wiOiBbe1xyXG5cdFx0XHRcdFx0XHRcdFwiZGF0YVwiOiBbXVxyXG5cdFx0XHRcdFx0XHR9XVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGR1cmF0aW9uOiAxMDAwLFxyXG5cdFx0XHRcdGNhbGVuZGFyOiAnJyxcclxuXHRcdFx0XHRyaW5nT3B0czp7fSxcclxuXHRcdFx0XHRjaGFydHNEYXRhTGluZTE6IHt9LFxyXG5cdFx0XHRcdGNoYXJ0c0RhdGFQaWUyOiB7fSxcclxuXHRcdFx0XHRmb250U2l6ZTogJycsXHJcblx0XHRcdFx0aGVpZ2h0OiAnJyxcclxuXHRcdFx0XHRzaG93Q2hhcnRzOiBmYWxzZSxcclxuXHRcdFx0XHRlamVjdFNob3c6IGZhbHNlLFxyXG5cdFx0XHRcdGJhc2VJUDogJycsXHJcblx0XHRcdFx0YmFzZVBvcnQ6ICcnLFxyXG5cdFx0XHRcdGJhc2VMZWRJZDogJycsXHJcblx0XHRcdFx0YmFzZUNybklkOiAnJyxcclxuXHRcdFx0XHRiYXNlVXJsOiAnJyxcclxuXHRcdFx0XHRpbmZvOiBudWxsLFxyXG5cdFx0XHRcdGVycm9yOiBudWxsLFxyXG5cdFx0XHRcdGluZm9UeXBlOiAwLFxyXG5cdFx0XHRcdHRleHQ6ICcnLFxyXG5cdFx0XHRcdGluZm9UZXh0OiB7XHJcblx0XHRcdFx0XHR0aXRsZTogJycsXHJcblx0XHRcdFx0XHRzdGFObzogXCJcIixcclxuXHRcdFx0XHRcdG1hdG5yOiBcIlwiLFxyXG5cdFx0XHRcdFx0bWFrbng6IFwiXCIsXHJcblx0XHRcdFx0XHRzcGVjczogXCJcIixcclxuXHRcdFx0XHRcdGNvdW50OiBcIlwiLFxyXG5cdFx0XHRcdFx0ZXJyb3I6IFwiXCIsXHJcblx0XHRcdFx0XHRiYXJjb2RlOiBcIlwiXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRzd2lwZXJMaXN0OiBbXSxcclxuXHRcdFx0XHR0aW1lT3V0OiBmYWxzZSxcclxuXHRcdFx0XHR0aW1lczogMCxcclxuXHRcdFx0XHRjdXJyRGF0ZTogJycsXHJcblx0XHRcdFx0bG9jTGlzdDpbXSxcdFx0XHRcdFxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0b25TaG93KCkge1xyXG5cdFx0XHQvLyDpmpDol4/ml7bpl7Qs55S16YePLOS/oeWPt+etiVxyXG5cdFx0XHQvLyAjaWZkZWYgQVBQLVBMVVNcclxuXHRcdFx0cGx1cy5uYXZpZ2F0b3Iuc2V0RnVsbHNjcmVlbih0cnVlKVxyXG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdH0sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0Y29uc3QgQmFzZUlQID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlSXAnKTtcclxuXHRcdFx0Y29uc3QgQmFzZUxlZElkID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlTGVkSWQnKTtcclxuXHRcdFx0Y29uc3QgQmFzZVBvcnQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VQb3J0Jyk7XHJcblx0XHRcdGNvbnN0IEJhc2VDcm5JZCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZUNybklkJyk7XHJcblx0XHRcdGNvbnN0IFBST0ogPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ1VQUk9KJyk7XHJcblx0XHRcdHRoYXQuYmFzZVVybCA9IFBST0pcclxuXHRcdFx0dGhhdC5iYXNlSVAgPSBCYXNlSVBcclxuXHRcdFx0dGhhdC5iYXNlTGVkSWQgPSBCYXNlTGVkSWRcclxuXHRcdFx0dGhhdC5iYXNlUG9ydCA9IEJhc2VQb3J0XHJcblx0XHRcdHRoYXQuYmFzZUNybklkID0gQmFzZUNybklkXHJcblx0XHRcdC8vIHRoaXMuZ2V0VXJsKClcclxuXHRcdH0sXHJcblx0XHRjcmVhdGVkKCkge1xyXG5cdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0Y29uc3QgQmFzZUlQID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlSXAnKTtcclxuXHRcdFx0Y29uc3QgQmFzZUxlZElkID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlTGVkSWQnKTtcclxuXHRcdFx0Y29uc3QgQmFzZVBvcnQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VQb3J0Jyk7XHJcblx0XHRcdGNvbnN0IEJhc2VDcm5JZCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZUNybklkJyk7XHJcblx0XHRcdGNvbnN0IFBST0ogPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ1VQUk9KJyk7XHJcblx0XHRcdHRoYXQuYmFzZVVybCA9IFBST0pcclxuXHRcdFx0dGhhdC5iYXNlSVAgPSBCYXNlSVBcclxuXHRcdFx0dGhhdC5iYXNlTGVkSWQgPSBCYXNlTGVkSWRcclxuXHRcdFx0dGhhdC5iYXNlUG9ydCA9IEJhc2VQb3J0XHJcblx0XHRcdHRoYXQuYmFzZUNybklkID0gQmFzZUNybklkXHJcblx0XHRcdHRoYXQud2ViU29ja2VySW5pdCgpO1xyXG5cdFx0fSxcclxuXHRcdG9uTG9hZCgpIHtcdFx0XHRcclxuXHRcdFx0c2V0SW50ZXJ2YWwoKCk9PntcclxuXHRcdFx0XHR0aGlzLmdldFNlcnZlckRhdGEoKVxyXG5cdFx0XHRcdC8vIHRoaXMuaW5pdGxpbmVDaGFydCgpXHJcblx0XHRcdFx0Ly8gdGhpcy5pbml0UGllQ2hhcnQoKVxyXG5cdFx0XHRcdC8vIHRoaXMuZ2V0T3RoZXIoKVxyXG5cdFx0XHRcdC8vIC8vIHRoaXMuZ2V0RGF0ZSgpXHJcblx0XHRcdFx0Ly8gdGhpcy5nZXREYXRlMigpXHJcblx0XHRcdFx0Ly8gdGhpcy5nZXRJbmZvKClcclxuXHRcdFx0XHQvLyB0aGlzLmdldEVycm9yKClcclxuXHRcdFx0XHQvLyAvLyB0aGlzLmdldEluZm8yKClcclxuXHRcdFx0XHQvLyAvLyB0aGlzLmdldEVycm9yMigpXHJcblx0XHRcdFx0Ly8gdGhpcy5nZXRVcmwoKVxyXG5cdFx0XHRcdHRoaXMuY29udHJvbGxlcigpXHJcblx0XHRcdFx0Ly8gdGhpcy5zdGF0aXN0aWNhbE1vZGVsKClcclxuXHRcdFx0XHQvLyDmtYvor5XnlKhcclxuXHRcdFx0XHRcclxuXHRcdFx0fSwxMDAwKVxyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0d2ViU29ja2VySW5pdCgpe1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpcztcclxuXHRcdFx0XHR0aGF0LmNvbW1vblVybCA9IHRoYXQuYmFzZUlQICsgJzonICt0aGF0LmJhc2VQb3J0ICsgXCIvXCIgK3RoYXQuYmFzZVVybFxyXG5cdFx0XHRcdGxldCBzb2NrZXRVcmwgPSBcIndzOi8vXCIrdGhhdC5jb21tb25VcmwrXCIvbGVkL1wiK3RoYXQuYmFzZUxlZElkXHRcdFx0XHRcclxuXHRcdFx0XHRjb25zdCB3cyA9IG5ldyBXZWJTb2NrZXRDbGllbnQoc29ja2V0VXJsKTtcclxuXHRcdFx0XHR3cy5jb25uZWN0KClcclxuXHRcdFx0XHR3cy5vbm1lc3NhZ2UoKG1zZyk9PntcdFx0XHRcdFx0XHJcblx0XHRcdFx0IGxldCBkYXRhID0gSlNPTi5wYXJzZShtc2cuZGF0YSlcclxuXHRcdFx0XHQgaWYoZGF0YS50eXBlID09PSBcImRlZmF1bHRcIil7XHJcblx0XHRcdFx0IFx0dGhhdC5jaGFydHNEYXRhLlBpZS5zZXJpZXNbMF0uZGF0YSA9IGRhdGEucGllXHJcblx0XHRcdFx0IFx0dGhhdC5iYXNlSW5mby5zdG9ja0NvdW50ID0gZGF0YS5zdG9ja0N1bnRcclxuXHRcdFx0XHQgXHR0aGF0LmJhc2VJbmZvLmVtcHR5Q291bnQgPSBkYXRhLmVtcHR5Q291bnRcclxuXHRcdFx0XHQgXHR0aGF0LmJhc2VJbmZvLm5vbmVDb3VudCA9ZGF0YS5ub25lQ291bnRcclxuXHRcdFx0XHQgXHR0aGF0LmJhc2VJbmZvLnVzZWQgPSBkYXRhLnVzZWRcclxuXHRcdFx0XHQgXHR0aGF0LmJhc2VJbmZvLnVzZWRQciA9IGRhdGEudXNlZFByXHJcblx0XHRcdFx0IFx0XHJcblx0XHRcdFx0IFx0dGhhdC5jaGFydHNEYXRhLkxpbmUuY2F0ZWdvcmllcyA9IFtcclxuXHRcdFx0XHQgXHRcdHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMTEpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMTApLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtOSksdGhhdC5nZXREYXRlRm9ybWF0KC04KSxcclxuXHRcdFx0XHQgXHRcdHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNyksdGhhdC5nZXREYXRlRm9ybWF0KC02KSx0aGF0LmdldERhdGVGb3JtYXQoLTUpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNCksXHJcblx0XHRcdFx0IFx0XHR0aGF0LmdldERhdGVGb3JtYXQoLTMpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMiksdGhhdC5nZXREYXRlRm9ybWF0KC0xKSx0aGF0LmdldERhdGVGb3JtYXQoMCksXVxyXG5cdFx0XHRcdCBcdHRoYXQuY2hhcnRzRGF0YS5MaW5lLnNlcmllcyA9IGRhdGEucm93c1xyXG5cdFx0XHRcdCBcdHRoYXQuY2FsZW5kYXIgPSBkYXRhLnllYXIgKyBcIuW5tFwiICsgZGF0YS5tb250aCArIFwi5pyIXCIgKyBkYXRhLmRheSArIFwi5pelIFwiICsgZGF0YS5ob3VyICsgXCI6XCIgKyBkYXRhLm1pbnV0ZSArIFwiOlwiICsgZGF0YS5zZWNvbmQgKyBcIiBcIiArIGRhdGEud2Vla1xyXG5cdFx0XHRcdCBcdHRoYXQuY3VyckRhdGUgPSBkYXRhLnllYXIgKyBcIi9cIiArIGRhdGEubW9udGggKyBcIi9cIiArIGRhdGEuZGF5XHJcblx0XHRcdFx0IFx0dGhhdC5sb2NMaXN0ID0gZGF0YS5pbnZlbnRvcnlEYXRhXHJcblx0XHRcdFx0IH1lbHNlIGlmKGRhdGEudHlwZSA9PT0gXCJlcnJvclwiKXtcclxuXHRcdFx0XHQgXHRpZiAoZGF0YS5lcnJNc2cgJiYgZGF0YS5lcnJNc2cgIT09IFwiXCIpIHtcclxuXHRcdFx0XHQgXHRcdHZhciBlcnJvckluZm8gPSBkYXRhLmVyck1zZ1xyXG5cdFx0XHRcdCBcdFx0aWYgKHRoYXQuaW5mb1R5cGUgPT0gMSkge1xyXG5cdFx0XHRcdCBcdFx0XHR0aGF0LmluZm9UeXBlID0gM1xyXG5cdFx0XHRcdCBcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlhbbku5bkv6Hmga9cIiBcclxuXHRcdFx0XHQgXHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5byC5bi4XCJcclxuXHRcdFx0XHQgXHRcdFx0dGhhdC5pbmZvVGV4dC5lcnJvciA9IGVycm9ySW5mb1xyXG5cdFx0XHRcdCBcdFx0XHRyZXR1cm5cclxuXHRcdFx0XHQgXHRcdH1cclxuXHRcdFx0XHQgXHRcdHRoYXQuaW5mb1R5cGUgPSAyXHJcblx0XHRcdFx0IFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlhbbku5bkv6Hmga9cIlxyXG5cdFx0XHRcdCBcdFx0Ly8gdGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5byC5bi4XCJcclxuXHRcdFx0XHQgXHRcdHRoYXQuaW5mb1RleHQuZXJyb3IgPSBlcnJvckluZm9cclxuXHRcdFx0XHQgXHR9IGVsc2Uge1xyXG5cdFx0XHRcdCBcdFx0aWYgKHRoYXQuaW5mb1R5cGUgPT0gMSkge1xyXG5cdFx0XHRcdCBcdFx0XHRyZXR1cm5cclxuXHRcdFx0XHQgXHRcdH1cclxuXHRcdFx0XHQgXHRcdHRoYXQuaW5mb1R5cGUgPSAwXHJcblx0XHRcdFx0IFx0fVxyXG5cdFx0XHRcdCB9ZWxzZSBpZihkYXRhLnR5cGUgPT09IFwidGFza1wiKXtcclxuXHRcdFx0XHRcdCBpZiAoZGF0YS50YXNrTGlzdCAmJiBkYXRhLnRhc2tMaXN0ICE9PSBcIlwiKSB7XHJcblx0XHRcdFx0XHQgXHRpZiAodGhhdC5pbmZvVHlwZSA9PSAyIHx8IHRoYXQuaW5mb1R5cGUgPT0gMykge1xyXG5cdFx0XHRcdFx0IFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHQgXHR9XHJcblx0XHRcdFx0XHQgXHQvLyBpbmZvVHlwZTE65Y+q5pyJ5ouj5paZ562J5L+h5oGvXHJcblx0XHRcdFx0XHQgXHR0aGF0LmluZm9UeXBlID0gMVxyXG5cdFx0XHRcdFx0IFx0aWYgKGRhdGEudGFza0xpc3RbMF0uaW9UeXBlID09PSAxMDEpIHtcclxuXHRcdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICflhajmnb/lh7rlupMnXHJcblx0XHRcdFx0XHQgXHR9IGVsc2UgaWYoZGF0YS50YXNrTGlzdFswXS5pb1R5cGUgPT09IDEwMykge1xyXG5cdFx0XHRcdFx0IFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+ajgOaWmeWHuuW6kydcclxuXHRcdFx0XHRcdCBcdH0gZWxzZSBpZihkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMTA3KSB7XHJcblx0XHRcdFx0XHQgXHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn55uY54K55Ye65bqTJ1xyXG5cdFx0XHRcdFx0IFx0fSBlbHNlIGlmKGRhdGEudGFza0xpc3RbMF0uaW9UeXBlID09PSAxKSB7XHJcblx0XHRcdFx0XHQgXHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5YWl5bqTJ1xyXG5cdFx0XHRcdFx0IFx0fSBlbHNlIGlmKGRhdGEudGFza0xpc3RbMF0uaW9UeXBlID09PSAxMCkge1xyXG5cdFx0XHRcdFx0IFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+epuuaJmOWFpeW6kydcclxuXHRcdFx0XHRcdCBcdH0gZWxzZSBpZihkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMTEwKSB7XHJcblx0XHRcdFx0XHQgXHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn56m65omY5Ye65bqTJ1xyXG5cdFx0XHRcdFx0IFx0fVxyXG5cdFx0XHRcdFx0IFx0dGhhdC5pbmZvVGV4dC5iYXJjb2RlID0gZGF0YS50YXNrTGlzdFswXS5iYXJjb2RlXHJcblx0XHRcdFx0XHQgXHR0aGF0LmluZm9UZXh0LndvcmtObyA9IGRhdGEudGFza0xpc3RbMF0ud29ya05vXHJcblx0XHRcdFx0XHQgXHR0aGF0LmluZm9UZXh0LnNvdXJjZUxvY05vID0gZGF0YS50YXNrTGlzdFswXS5zb3VyY2VMb2NOb1xyXG5cdFx0XHRcdFx0IFx0dGhhdC5pbmZvVGV4dC5zdGFObyA9IGRhdGEudGFza0xpc3RbMF0uc3RhTm9cclxuXHRcdFx0XHRcdCBcdHRoYXQuc3dpcGVyTGlzdCA9IGRhdGEudGFza0xpc3RbMF0ubWF0RHRvc1xyXG5cdFx0XHRcdFx0IFx0Ly8gdGhhdC5pbmZvVGV4dC5tYXRuciA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0ubWF0bnJcclxuXHRcdFx0XHRcdCBcdC8vIHRoYXQuaW5mb1RleHQuc3BlY3MgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLnNwZWNzXHJcblx0XHRcdFx0XHQgXHQvLyB0aGF0LmluZm9UZXh0Lm1ha254ID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYWtueFxyXG5cdFx0XHRcdFx0IFx0Ly8gdGhhdC5pbmZvVGV4dC5jb3VudCA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0uY291bnRcclxuXHRcdFx0XHRcdCB9IGVsc2Uge1xyXG5cdFx0XHRcdFx0IFx0aWYgKHRoYXQuaW5mb1R5cGUgPT0gMiB8fCB0aGF0LmluZm9UeXBlID09IDMpIHtcclxuXHRcdFx0XHRcdCBcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0IFx0fVxyXG5cdFx0XHRcdFx0IFx0dGhhdC5pbmZvVHlwZSA9IDBcclxuXHRcdFx0XHRcdCB9XHJcblx0XHRcdFx0IH1cclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0c3RhdGlzdGljYWxNb2RlbCgpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9sb2NEZXRsL3BkYS9zdGF0aXN0aWNhbE1vZGVsXCIsXHJcblx0XHRcdFx0XHRtZXRob2Q6J0dFVCcsXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0XHR2YXIgcmVzID0gcmVzdWx0LmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMuZGF0YSlcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmxvY0xpc3QgPSByZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0dGltZU91dCgpIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLnRpbWVzKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0VXJsKCkge1xyXG5cdFx0XHRcdHRoaXMuY29tbW9uVXJsID0gdGhpcy5iYXNlSHR0cCArIHRoaXMuYmFzZUlQICsgJzonICt0aGlzLmJhc2VQb3J0ICsgXCIvXCIgK3RoaXMuYmFzZVVybFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRTZXJ2ZXJEYXRhKCkge1xyXG5cdFx0XHRcdHRoaXMuY2hhcnRzRGF0YUxpbmUxPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jaGFydHNEYXRhLkxpbmUpKVxyXG5cdFx0XHRcdHRoaXMuY2hhcnRzRGF0YVBpZTI9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXJ0c0RhdGEuUGllKSlcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g6I635Y+W6ZSZ6K+v5L+h5oGvXHJcblx0XHRcdGdldEluZm8yKCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdHZhciByZXN1bHQgPSB5Y3FkYXRhLmRhdGFJbmZvMlxyXG5cdFx0XHRcdHZhclx0cmVzID0gcmVzdWx0LmRhdGFcclxuXHRcdFx0XHRpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEgIT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDIgfHwgdGhhdC5pbmZvVHlwZSA9PSAzKSB7XHJcblx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC8vIGluZm9UeXBlMTrlj6rmnInmi6PmlpnnrYnkv6Hmga9cclxuXHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAxXHJcblx0XHRcdFx0XHRpZiAocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDEpIHtcclxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICflhajmnb/lh7rlupMnXHJcblx0XHRcdFx0XHR9IGVsc2UgaWYocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDMpIHtcclxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfmo4Dmlpnlh7rlupMnXHJcblx0XHRcdFx0XHR9IGVsc2UgaWYocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDcpIHtcclxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnm5jngrnlh7rlupMnXHJcblx0XHRcdFx0XHR9IGVsc2UgaWYocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxKSB7XHJcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5YWl5bqTJ1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTApIHtcclxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnqbrmiZjlhaXlupMnXHJcblx0XHRcdFx0XHR9IGVsc2UgaWYocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMTApIHtcclxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnqbrmiZjlh7rlupMnXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LmJhcmNvZGUgPSByZXMuZGF0YVswXS5iYXJjb2RlXHJcblx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LndvcmtObyA9IHJlcy5kYXRhWzBdLndvcmtOb1xyXG5cdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC5zb3VyY2VMb2NObyA9IHJlcy5kYXRhWzBdLnNvdXJjZUxvY05vXHJcblx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnN0YU5vID0gcmVzLmRhdGFbMF0uc3RhTm9cclxuXHRcdFx0XHRcdHRoYXQuc3dpcGVyTGlzdCA9IHJlcy5kYXRhWzBdLm1hdER0b3NcclxuXHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQubWF0bnIgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1hdG5yXHJcblx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LnNwZWNzID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5zcGVjc1xyXG5cdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC5tYWtueCA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0ubWFrbnhcclxuXHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQuY291bnQgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLmNvdW50XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDIgfHwgdGhhdC5pbmZvVHlwZSA9PSAzKSB7XHJcblx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAwXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRFcnJvcjIgKCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdGxldCByZXN1bHQgPSB5Y3FkYXRhLmRhdGFFcnJvcjJcclxuXHRcdFx0XHR2YXJcdHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0aWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBcIlwiKSB7XHJcblx0XHRcdFx0XHR2YXIgZXJyb3JJbmZvID0gcmVzLmRhdGFcclxuXHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDEpIHtcclxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDNcclxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5YW25LuW5L+h5oGvXCIgXHJcblx0XHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuW8guW4uFwiXHJcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQuZXJyb3IgPSBlcnJvckluZm9cclxuXHRcdFx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMlxyXG5cdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5YW25LuW5L+h5oGvXCJcclxuXHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuW8guW4uFwiXHJcblx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LmVycm9yID0gZXJyb3JJbmZvXHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDEpIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0SW5mbygpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9sZWRcIixcclxuXHRcdFx0XHRcdG1ldGhvZDpcIkdFVFwiLFxyXG5cdFx0XHRcdFx0ZGF0YToge2xlZElkOnRoYXQuYmFzZUxlZElkfSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdHRoYXQudGltZU91dCA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdHRoYXQudGltZXMgPSAwXHJcblx0XHRcdFx0XHRcdHZhclx0cmVzID0gcmVzdWx0LmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBcIlwiKSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoYXQuaW5mb1R5cGUgPT0gMiB8fCB0aGF0LmluZm9UeXBlID09IDMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0Ly8gaW5mb1R5cGUxOuWPquacieaLo+aWmeetieS/oeaBr1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAxXHJcblx0XHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAxKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+WFqOadv+WHuuW6kydcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5qOA5paZ5Ye65bqTJ1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwNykge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnm5jngrnlh7rlupMnXHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICflhaXlupMnXHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTApIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn56m65omY5YWl5bqTJ1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDExMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnqbrmiZjlh7rlupMnXHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQuYmFyY29kZSA9IHJlcy5kYXRhWzBdLmJhcmNvZGVcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LndvcmtObyA9IHJlcy5kYXRhWzBdLndvcmtOb1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQuc291cmNlTG9jTm8gPSByZXMuZGF0YVswXS5zb3VyY2VMb2NOb1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQuc3RhTm8gPSByZXMuZGF0YVswXS5zdGFOb1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuc3dpcGVyTGlzdCA9IHJlcy5kYXRhWzBdLm1hdER0b3NcclxuXHRcdFx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0Lm1hdG5yID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYXRuclxyXG5cdFx0XHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQuc3BlY3MgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLnNwZWNzXHJcblx0XHRcdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC5tYWtueCA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0ubWFrbnhcclxuXHRcdFx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LmNvdW50ID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5jb3VudFxyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDIgfHwgdGhhdC5pbmZvVHlwZSA9PSAzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAwXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsKGVycikge1xyXG5cdFx0XHRcdFx0XHR0aGF0LnRpbWVPdXQgPSB0cnVlXHJcblx0XHRcdFx0XHRcdHRoYXQudGltZXMgPSB0aGF0LnRpbWVzKzFcclxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDBcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRFcnJvcigpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9sZWQvZXJyb3JcIixcclxuXHRcdFx0XHRcdGRhdGE6IHtsZWRJZDp0aGF0LmJhc2VMZWRJZH0sXHJcblx0XHRcdFx0XHRtZXRob2Q6XCJHRVRcIixcclxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdHRoYXQudGltZU91dCA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdHRoYXQudGltZXMgPSAwXHJcblx0XHRcdFx0XHRcdHZhclx0cmVzID0gcmVzdWx0LmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBcIlwiKSB7XHJcblx0XHRcdFx0XHRcdFx0dmFyIGVycm9ySW5mbyA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoYXQuaW5mb1R5cGUgPT0gMSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDNcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuWFtuS7luS/oeaBr1wiIFxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5byC5bi4XCJcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQuZXJyb3IgPSBlcnJvckluZm9cclxuXHRcdFx0XHRcdFx0XHRcdHJldHVyblxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMlxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuWFtuS7luS/oeaBr1wiXHJcblx0XHRcdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5byC5bi4XCJcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LmVycm9yID0gZXJyb3JJbmZvXHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoYXQuaW5mb1R5cGUgPT0gMSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAwXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsKGVycikge1xyXG5cdFx0XHRcdFx0XHR0aGF0LnRpbWVPdXQgPSB0cnVlXHJcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAwXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHRcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5o6n5Yi25ZmoXHJcblx0XHRcdGNvbnRyb2xsZXIoKSB7XHJcblx0XHRcdFx0c3dpdGNoKHRoaXMuaW5mb1R5cGUpIHtcclxuXHRcdFx0XHRcdC8vIOacieS/oeaBryDkvYYg5rKh5pyJ6ZSZ6K+v5L+h5oGvXHJcblx0XHRcdFx0XHRjYXNlIDA6IFxyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5lcnJvckluZm9WaWV3U2hvdykge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSBmYWxzZVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdH0sMTAwMClcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmluZm9WaWV3U2hvdykge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaW5mb1ZpZXdTaG93ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5ob21lVmlld1Nob3cgPSB0cnVlXHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmhvbWVNb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdFx0XHRcdFx0fSwxMDAwKVxyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgJiYgdGhpcy5pbmZvVmlld1Nob3cpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmluZm9WaWV3U2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdH0sMTAwMClcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRjYXNlIDE6IFxyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5ob21lVmlld1Nob3cpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmhvbWVWaWV3U2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaW5mb1ZpZXdTaG93ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdH0sMTAwMClcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmVycm9ySW5mb1ZpZXdTaG93KSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5pbmZvVmlld1Nob3cgPSB0cnVlXHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdFx0XHRcdFx0fSwxMDAwKVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdC8vIOacieS/oeaBryDkuJQg5pyJ6ZSZ6K+v5L+h5oGvXHJcblx0XHRcdFx0XHRjYXNlIDI6XHJcblx0XHRcdFx0XHRcdGlmICh0aGlzLmhvbWVWaWV3U2hvdykge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmhvbWVNb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IHRydWVcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdH0sMTAwMClcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmluZm9WaWV3U2hvdykge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaW5mb1ZpZXdTaG93ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IHRydWVcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdH0sMTAwMClcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHQvLyDmnInkv6Hmga8g5LiUIOaciemUmeivr+S/oeaBr1xyXG5cdFx0XHRcdFx0Y2FzZSAzOlxyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5ob21lVmlld1Nob3cpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmhvbWVWaWV3U2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSB0cnVlXHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuXHRcdFx0XHRcdFx0XHR9LDEwMDApXHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5pbmZvVmlld1Nob3cpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmluZm9WaWV3U2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSB0cnVlXHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuXHRcdFx0XHRcdFx0XHR9LDEwMDApXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDkuLvlsY/luZVcclxuXHRcdFx0aGFuZGxlKHR5cGUpIHtcclxuXHRcdFx0XHR0aGlzLmhvbWVWaWV3U2hvdyA9ICF0aGlzLmhvbWVWaWV3U2hvd1xyXG5cdFx0XHRcdHRoaXMubW9kZUNsYXNzID0gdHlwZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDmi6PmlplcclxuXHRcdFx0aGFuZGxlMSh0eXBlKSB7XHJcblx0XHRcdFx0dGhpcy5pbmZvVmlld1Nob3cgPSAhdGhpcy5pbmZvVmlld1Nob3dcclxuXHRcdFx0XHR0aGlzLm1vZGVDbGFzcyA9IHR5cGVcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5byC5bi4XHJcblx0XHRcdGhhbmRsZTIodHlwZSkge1xyXG5cdFx0XHRcdHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSAhdGhpcy5lcnJvckluZm9WaWV3U2hvd1xyXG5cdFx0XHRcdHRoaXMubW9kZUNsYXNzID0gdHlwZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDphY3nva5cclxuXHRcdFx0ZWplY3RlZCAoKSB7XHJcblx0XHRcdFx0dGhpcy5lamVjdFNob3cgPSB0cnVlXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOWPlua2iOmFjee9rlxyXG5cdFx0XHRlamVjdENsb3NlKCkge1xyXG5cdFx0XHRcdHRoaXMuZWplY3RTaG93ID0gZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g56Gu6K6k6YWN572uXHJcblx0XHRcdGVqZWN0Q29uZmlybSgpIHtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VJcCcsIHRoaXMuYmFzZUlQKTtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VMZWRJZCcsIHRoaXMuYmFzZUxlZElkKTtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VQb3J0Jyx0aGlzLmJhc2VQb3J0KTtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VDcm5JZCcsdGhpcy5iYXNlQ3JuSWQpO1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnVVBST0onLHRoaXMuYmFzZVVybCk7XHJcblx0XHRcdFx0dGhpcy5nZXRVcmwoKVxyXG5cdFx0XHRcdHRoaXMuZWplY3RTaG93ID0gZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5pel5Y6GIOacjeWKoeWZqFxyXG5cdFx0XHRnZXREYXRlMigpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9kYXRlXCIsXHJcblx0XHRcdFx0XHRtZXRob2Q6XCJHRVRcIixcclxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdHZhciByZXMgPSByZXN1bHQuZGF0YS5kYXRhXHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdFxyXG5cdFx0XHQvLyDml6XljoZcclxuXHRcdFx0Z2V0RGF0ZSgpIHtcclxuXHRcdFx0XHR2YXIgZHQgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0XHRcdHZhciB5ZWFyLG1vbnRoLGRheSxob3VycyxtaW51dGVzLHNlY29uZHMsd2Vla3NcclxuXHRcdFx0XHR5ZWFyID0gZHQuZ2V0RnVsbFllYXIoKTtcclxuXHRcdFx0XHRtb250aCA9IChkdC5nZXRNb250aCgpKzEpIDwgMTAgPyAnMCcrIChkdC5nZXRNb250aCgpKzEpIDogKGR0LmdldE1vbnRoKCkrMSk7XHJcblx0XHRcdFx0ZGF5ID0gZHQuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcrZHQuZ2V0RGF0ZSgpIDogZHQuZ2V0RGF0ZSgpO1xyXG5cdFx0XHRcdGhvdXJzID0gZHQuZ2V0SG91cnMoKSA8IDEwID8gJzAnICsgZHQuZ2V0SG91cnMoKSA6IGR0LmdldEhvdXJzKCk7XHJcblx0XHRcdFx0bWludXRlcyA9IGR0LmdldE1pbnV0ZXMoKSA8IDEwID8gJzAnICsgZHQuZ2V0TWludXRlcygpIDogZHQuZ2V0TWludXRlcygpO1xyXG5cdFx0XHRcdHNlY29uZHMgPSBkdC5nZXRTZWNvbmRzKCkgPCAxMCA/ICcwJyArIGR0LmdldFNlY29uZHMoKSA6IGR0LmdldFNlY29uZHMoKTsgXHJcblx0XHRcdFx0d2Vla3MgPSBkdC5nZXREYXkoKTsgXHJcblx0XHRcdFx0c3dpdGNoICh3ZWVrcykge1xyXG5cdFx0XHRcdFx0Y2FzZSAwOiB3ZWVrcyA9IFwi5pif5pyf5pelXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSAxOiB3ZWVrcyA9IFwi5pif5pyf5LiAXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSAyOiB3ZWVrcyA9IFwi5pif5pyf5LqMXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSAzOiB3ZWVrcyA9IFwi5pif5pyf5LiJXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSA0OiB3ZWVrcyA9IFwi5pif5pyf5ZubXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSA1OiB3ZWVrcyA9IFwi5pif5pyf5LqUXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0ZGVmYXVsdCA6IHdlZWtzID0gXCLmmJ/mnJ/lha1cIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5jYWxlbmRhciA9IHllYXIgKyBcIuW5tFwiICsgbW9udGggKyBcIuaciFwiICsgZGF5ICsgXCLml6UgXCIgKyBob3VycyArIFwiOlwiICsgbWludXRlcyArIFwiOlwiICsgc2Vjb25kcyArIFwiIFwiICsgd2Vla3NcclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0RGF0ZUZvcm1hdCh2YWx1ZSkge1xyXG5cdFx0XHRcdHZhciBkYXRlID0gbmV3IERhdGUodGhpcy5jdXJyRGF0ZSk7Ly8g6I635Y+W5b2T5YmN5pe26Ze0XHJcblx0XHRcdFx0ZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgdmFsdWUpOy8vIOiuvue9ruWkqeaVsCAtMSDlpKlcclxuXHRcdFx0XHR2YXIgbSA9IGRhdGUuZ2V0TW9udGgoKSArIDFcclxuXHRcdFx0XHR2YXIgZCA9IGRhdGUuZ2V0RGF0ZSgpXHJcblx0XHRcdFx0dmFyIG5ld0RhdGUgPSBtICsgJy0nICsgZFxyXG5cdFx0XHRcdHJldHVybiBuZXdEYXRlXHJcblx0XHRcdH0sXHJcblx0XHRcdC8qKioqKioqKioqKioqKiog5oqY57q/5Zu+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5cdFx0XHRpbml0bGluZUNoYXJ0KCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9tb25pdG9yL2xpbmUvY2hhcnRzXCIsXHJcblx0XHRcdFx0XHRtZXRob2Q6J0dFVCcsXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0XHR2YXIgcmVzID0gcmVzdWx0LmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdC8qKioqKioqKioqKioqKiog6aW85Zu+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5cdFx0XHRpbml0UGllQ2hhcnQoKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbG9jL3JlcFwiLFxyXG5cdFx0XHRcdFx0bWV0aG9kOidHRVQnLFxyXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5jaGFydHNEYXRhLlBpZS5zZXJpZXNbMF0uZGF0YSA9IHJlcy5kYXRhLnBpZVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8uc3RvY2tDb3VudCA9IHJlcy5kYXRhLnN0b2NrQ3VudFxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8uZW1wdHlDb3VudCA9IHJlcy5kYXRhLmVtcHR5Q291bnRcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmJhc2VJbmZvLm5vbmVDb3VudCA9IHJlcy5kYXRhLm5vbmVDb3VudFxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8udXNlZCA9IHJlcy5kYXRhLnVzZWRcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmJhc2VJbmZvLnVzZWRQciA9IHJlcy5kYXRhLnVzZWRQclxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0T3RoZXIoKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3Ivb3RoZXJcIixcclxuXHRcdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdFx0Y3JuSWQ6IHRoYXQuYmFzZUNybklkLCBcclxuXHRcdFx0XHRcdFx0bGVkSWQ6IHRoYXQuYmFzZUxlZElkLFxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcblx0XHRcdFx0XHRcdHZhciByZXMgPSByZXN1bHQuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8ueERpc3RhbmNlID0gcmVzLmRhdGEueERpc3RhbmNlXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5iYXNlSW5mby55RGlzdGFuY2UgPSByZXMuZGF0YS55RGlzdGFuY2VcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmJhc2VJbmZvLnhEdXJhdGlvbiA9IHJlcy5kYXRhLnhEdXJhdGlvblxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8ueUR1cmF0aW9uID0gcmVzLmRhdGEueUR1cmF0aW9uXHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAocmVzLmNvZGUgPT09IDQwMykge1xyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHRcdFxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGU+XHJcblx0LyogQGltcG9ydCB1cmwoXCIuLi8uLi9zdGF0aWMvY3NzL2NvbW1vbi5jc3NcIik7ICovXHJcblx0QGltcG9ydCB1cmwoXCJob21lLmNzc1wiKTtcclxuXHQvKiDliJcgKi9cclxuXHQuZmxleC1jb2wge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0fVxyXG5cdC8qIOihjCAqL1xyXG5cdC5mbGV4LXJvdyB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHR9XHJcblx0XHJcblx0LmNvbnRhaW5lcntcclxuXHRcdHdpZHRoOiAxMDB2dztcclxuXHRcdG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzAwMTYzRTtcclxuXHRcdGNvbG9yOiAjZmZmO1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0XHJcblx0fVxyXG5cdC8qIOS4u+inhuWbviAqL1xyXG5cdC5ob21lLXZpZXcge1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0bWluLWhlaWdodDogMTAwdmg7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL2JhY2tncm91bmQucG5nKTtcclxuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwdncgMTAwdmg7XHJcblx0fVxyXG5cdC5ob21lLXJpZ2h0IHtcclxuXHRcdHdpZHRoOiA1MHZ3O1xyXG5cdFx0aGVpZ2h0OiA4OXZoO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogY2FkZXRibHVlOyAqL1xyXG5cdH1cclxuXHQuaG9tZS1yaWdodC1ib3gge1xyXG5cdFx0d2lkdGg6IDk4JTtcclxuXHRcdGhlaWdodDogOTglO1xyXG5cdH1cclxuXHQuaGVhZCB7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRoZWlnaHQ6IDExdmg7XHJcblx0XHRmb250LXNpemU6NHZ3O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDAuNyk7XHJcblx0fVxyXG5cdC50aW1lLXRvb2xzIHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdHJpZ2h0OiAyJTtcclxuXHRcdHRvcDogMiU7XHJcblx0XHRmb250LXNpemU6MXZ3O1xyXG5cdFx0dHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xyXG5cdH1cclxuXHQuYnV0dG9uLWxlZnQge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL3N0YXRpYy9yaWdodC5wbmcpO1xyXG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XHJcblx0XHR0b3A6IDEuOCU7XHJcblx0XHRsZWZ0OiAyMS4zJTtcclxuXHRcdHdpZHRoOiAxMy41JTtcclxuXHRcdGhlaWdodDogOC41JTtcclxuXHRcdHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcclxuXHR9XHJcblx0LmJ1dHRvbi1yaWdodCB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL3JpZ2h0LnBuZyk7XHJcblx0XHRiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcclxuXHRcdHRvcDogMS44JTtcclxuXHRcdGxlZnQ6IDY1JTtcclxuXHRcdHdpZHRoOiAxMy41JTtcclxuXHRcdGhlaWdodDogOC41JTtcclxuXHR9XHJcblx0LmltZy1ib3gge1xyXG5cdFx0aGVpZ2h0OiAyM3Z3O1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY2NjY2OyAqL1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcblx0XHRmbGV4LXdyYXA6IHdyYXA7XHJcblx0XHRmb250LXNpemU6IDF2dztcclxuXHR9XHJcblx0Lml0ZW0taW1nIHtcclxuXHRcdHdpZHRoOiA1MCU7XHJcblx0XHRtYXJnaW4tdG9wOiA1JTtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzAwZmZmZjsgKi9cclxuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG5cdH1cclxuXHQuZGlzdGFuY2Uge1xyXG5cdFx0XHJcblx0fVxyXG5cdC5pdGVtLWltZyBpbWFnZSB7XHJcblx0XHRoZWlnaHQ6IDV2dztcclxuXHRcdHdpZHRoOiA1dnc7XHJcblx0fVxyXG5cdC5wcm9ncmVzc0JhciB7XHJcblx0XHRtYXJnaW4tdG9wOiA5JTtcclxuXHRcdC8qIHdpZHRoOiAxMDAlOyAqL1xyXG5cdFx0aGVpZ2h0OiAyMCU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMjMzNzUxO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogNXZ3O1xyXG5cdH1cclxuXHQucHJvZ3Jlc3Mge1xyXG5cdFx0Lyogd2lkdGg6IDkwJTsgKi9cclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNGRjU3MjI7XHJcblx0XHRib3JkZXItcmFkaXVzOiA1dnc7XHJcblx0fVxyXG5cdC5jaGFydHMtYm94IHtcclxuXHQgIHdpZHRoOiA4MCU7XHJcblx0ICBoZWlnaHQ6IDI0dmg7XHJcblx0ICBtYXJnaW4tbGVmdDogMTAlO1xyXG5cdH0gXHJcblx0LmNoYXJ0cy1ib3gtcmluZyB7XHJcblx0XHR3aWR0aDogNjAlO1xyXG5cdFx0aGVpZ2h0OiAyNHZoO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzAwZmZmZjsgKi9cclxuXHR9XHJcblx0LnN1Yi1pbmZvIHtcclxuXHRcdGZvbnQtc2l6ZTogMS41dnc7XHJcblx0fVxyXG5cdC5zdWItaW5mbyBpbWFnZSB7XHJcblx0XHR3aWR0aDogMy41dnc7XHJcblx0XHRoZWlnaHQ6IDMuNXZ3O1xyXG5cdH1cclxuXHRcclxuXHRcclxuXHRcclxuXHRcclxuXHQvKiDlhbHnlKggKi9cclxuXHQubWFpbiB7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRoZWlnaHQ6IDg4dmg7XHJcblx0XHRtYXJnaW4tdG9wOiAxdmg7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHJcblx0fVxyXG5cdC5taWFuLWl0ZW0ge1xyXG5cdFx0d2lkdGg6IDUwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdH1cclxuXHQubWlhbi1pdGVtLWJveCB7XHJcblx0XHR3aWR0aDogOTglO1xyXG5cdFx0aGVpZ2h0OiA5OCU7XHJcblx0fVxyXG5cdC5ib3gtaXRlbSB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdG1hcmdpbi10b3A6IDQlO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuXHR9XHJcblx0Lml0ZW0tdGl0bGUge1xyXG5cdFx0Zm9udC1zaXplOjEuNXZ3O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcclxuXHR9XHJcblx0Lml0ZW0tc3ViVGl0bGUge1xyXG5cdFx0Zm9udC1zaXplOjAuNXZ3O1xyXG5cdFx0dGV4dC1pbmRlbnQ6IDBlbTtcclxuXHR9XHJcblx0Lml0ZW0tdGV4dCB7XHJcblx0XHRmb250LXNpemU6IDF2dztcclxuXHRcdHRleHQtaW5kZW50OiAyZW07XHJcblx0XHRsZXR0ZXItc3BhY2luZzogMXB4O1xyXG5cdFx0bGluZS1oZWlnaHQ6IDN2aDtcclxuXHR9XHJcblx0XHJcblx0Lyog5YWo5p2/L+aLo+aWmeS/oeaBryAqL1xyXG5cdC5pbmZvLXZpZXcge1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0bWluLWhlaWdodDogMTAwdmg7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL2JhY2tncm91bmQucG5nKTtcclxuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwdncgMTAwdmg7XHJcblx0fVxyXG5cdC5pbmZvLW1haW4ge1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0aGVpZ2h0OiA4OHZoO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcblx0LmluZm8tYm94IHtcclxuXHRcdHdpZHRoOiA5OCU7XHJcblx0XHRoZWlnaHQ6IDk4JTtcclxuXHR9XHJcblx0Lyog5byC5bi45L+h5oGvICovXHJcblx0LmVycm9yLWluZm8tdmlldyB7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRtaW4taGVpZ2h0OiAxMDB2aDtcclxuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvYmFja2dyb3VuZC5wbmcpO1xyXG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDB2dyAxMDB2aDtcclxuXHR9XHJcblx0XHJcblx0Lyog5by55Ye6OumFjee9ruWMuuWfnyAqL1xyXG5cdC5lamVjdC1tYXNrIHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xyXG5cdFx0cG9zaXRpb246IGZpeGVkO1xyXG5cdFx0dG9wOiAwO1xyXG5cdFx0bGVmdDogMDtcclxuXHRcdHotaW5kZXg6IDk5OTtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHRcclxuXHR9XHJcblx0LmVqZWN0e1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0d2lkdGg6IDQwdnc7XHJcblx0XHRoZWlnaHQ6IDQwdmg7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMnJlbTtcclxuXHR9XHJcblx0LmVqZWN0LXRpdGxlIHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiA1dmg7XHJcblx0XHRsaW5lLWhlaWdodDogNnZoO1xyXG5cdFx0Zm9udC1zaXplOiAzdmg7XHJcblx0XHRmb250LXdlaWdodDogNzAwO1xyXG5cdFx0Y29sb3I6IFx0IzYwNjI2NjtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHR9XHJcblx0LmVqZWN0LWlucHV0IHtcclxuXHRcdG1hcmdpbi10b3A6IDJ2aDtcclxuXHRcdGhlaWdodDogMjV2aDtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMwMDE2M0U7ICovXHJcblx0XHQ6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX1cclxuXHR9XHJcblx0Lml0ZW0ge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRtYXJnaW46IDF2aCAwIDAgMDtcclxuXHRcdGZvbnQtc2l6ZTogMS41dnc7XHJcblx0XHRjb2xvcjogIzM2MzYzNjtcclxuXHR9XHJcblx0LmRlc2Mge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0d2lkdGg6IDQwJTtcclxuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xyXG5cdFx0Y29sb3I6ICM2MDYyNjY7XHJcblx0XHRcclxuXHR9XHJcblx0LmlucHV0IHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0cGFkZGluZy1sZWZ0OiA1cHg7XHJcblx0XHRwYWRkaW5nLXJpZ2h0OiA1cHg7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogM3ZoO1xyXG5cdFx0Ym9yZGVyOiAwLjF2aCBzb2xpZCAjY2ZkNGRjO1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiAyMCU7XHJcblx0XHR0ZXh0LWFsaWduOiBzdGFydDtcclxuXHR9XHJcblx0LmVqZWN0LWlucHV0IGlucHV0IHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAzdmg7XHJcblx0XHRmb250LXNpemU6IDF2dztcclxuXHRcdFxyXG5cdFx0XHJcblx0fVxyXG5cdC5lamVjdC1idXR0b24ge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRib3R0b206IDA7XHJcblx0XHRoZWlnaHQ6IDZ2aDtcclxuXHRcdGxpbmUtaGVpZ2h0OiA2dmg7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjO1xyXG5cdH1cclxuXHQuYnV0dG9uLWl0ZW0ge1xyXG5cdFx0d2lkdGg6IDUwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdGZvbnQtc2l6ZTogMS41dnc7XHJcblx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGNvbG9yOiAjOTA5Mzk5O1xyXG5cdH1cclxuXHQuYnV0dG9uLWl0ZW06bGFzdC1jaGlsZCB7XHJcblx0XHRjb2xvcjogIzY3QzIzQTtcclxuXHRcdFxyXG5cdFx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjO1xyXG5cdH1cclxuXHQuaW5mby1ib3gtdGV4dCB7XHJcblx0XHR3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7XHJcblx0XHRkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YWxpZ24taXRlbXM6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHR9XHJcblx0LmluZm8tYm94LXRleHQtaXRlbSB7XHJcblx0XHRoZWlnaHQ6IDIwJTtmb250LXNpemU6IDh2aDtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdH1cclxuPC9zdHlsZT4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///101\n");
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _demodata = _interopRequireDefault(__webpack_require__(/*! @/mockdata/demodata.json */ 102));\nvar _data = _interopRequireDefault(__webpack_require__(/*! @/pages/index/data.json */ 103));\nvar _WebSocketClient = __webpack_require__(/*! @/static/js/WebSocketClient */ 104);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 socket;\nvar _default = {\n  data: function data() {\n    return {\n      series: [],\n      homeViewShow: true,\n      infoViewShow: false,\n      errorInfoViewShow: false,\n      homeMode: [],\n      infoMode: [],\n      errorInfoMode: [],\n      baseInfo: {\n        xDistance: 1,\n        yDistance: 2,\n        xDuration: 3,\n        yDuration: 4,\n        usedPr: 50,\n        used: 3537,\n        stockCount: '',\n        emptyCount: '',\n        noneCount: ''\n      },\n      chartsData: {\n        \"Line\": {\n          \"categories\": [],\n          \"series\": []\n        },\n        \"Pie\": {\n          \"series\": [{\n            \"data\": []\n          }]\n        }\n      },\n      duration: 1000,\n      calendar: '',\n      ringOpts: {},\n      chartsDataLine1: {},\n      chartsDataPie2: {},\n      fontSize: '',\n      height: '',\n      showCharts: false,\n      ejectShow: false,\n      baseIP: '',\n      basePort: '',\n      baseLedId: '',\n      baseCrnId: '',\n      baseUrl: '',\n      info: null,\n      error: null,\n      infoType: 0,\n      text: '',\n      infoText: {\n        title: '',\n        staNo: \"\",\n        matnr: \"\",\n        maknx: \"\",\n        specs: \"\",\n        count: \"\",\n        error: \"\",\n        barcode: \"\"\n      },\n      swiperList: [],\n      timeOut: false,\n      times: 0,\n      currDate: '',\n      locList: [],\n      oldHours: '',\n      oldMin: ''\n    };\n  },\n  onShow: function onShow() {\n    // 隐藏时间,电量,信号等\n\n    plus.navigator.setFullscreen(true);\n  },\n  mounted: function mounted() {\n    var that = this;\n    var BaseIP = uni.getStorageSync('BaseIp');\n    var BaseLedId = uni.getStorageSync('BaseLedId');\n    var BasePort = uni.getStorageSync('BasePort');\n    var BaseCrnId = uni.getStorageSync('BaseCrnId');\n    var PROJ = uni.getStorageSync('UPROJ');\n    that.baseUrl = PROJ;\n    that.baseIP = BaseIP;\n    that.baseLedId = BaseLedId;\n    that.basePort = BasePort;\n    that.baseCrnId = BaseCrnId;\n    // this.getUrl()\n  },\n  created: function created() {\n    var that = this;\n    var BaseIP = uni.getStorageSync('BaseIp');\n    var BaseLedId = uni.getStorageSync('BaseLedId');\n    var BasePort = uni.getStorageSync('BasePort');\n    var BaseCrnId = uni.getStorageSync('BaseCrnId');\n    var PROJ = uni.getStorageSync('UPROJ');\n    that.baseUrl = PROJ;\n    that.baseIP = BaseIP;\n    that.baseLedId = BaseLedId;\n    that.basePort = BasePort;\n    that.baseCrnId = BaseCrnId;\n    that.webSockerInit();\n  },\n  onLoad: function onLoad() {\n    var _this = this;\n    setInterval(function () {\n      _this.getServerData();\n      // this.initlineChart()\n      // this.initPieChart()\n      // this.getOther()\n      // // this.getDate()\n      // this.getDate2()\n      // this.getInfo()\n      // this.getError()\n      // // this.getInfo2()\n      // // this.getError2()\n      // this.getUrl()\n      _this.controller();\n      // this.statisticalModel()\n      // 测试用\n    }, 1000);\n    setInterval(function () {\n      setTimeout(function () {\n        plus.runtime.restart();\n      }, 100);\n    }, 1000 * 60 * 60 * 4);\n    setInterval(function () {\n      setTimeout(function () {\n        var time = new Date();\n        var hh = time.getHours();\n        var mm = time.getMinutes();\n        if (hh > _this.oldHours && mm > _this.oldMin && _this.oldMin - mm < 55) {\n          plus.runtime.restart();\n        }\n        if (mm > _this.oldMin && mm - _this.oldMin > 2) {\n          plus.runtime.restart();\n        }\n      }, 100);\n    }, 1000 * 30);\n  },\n  methods: {\n    webSockerInit: function webSockerInit() {\n      var that = this;\n      that.commonUrl = that.baseIP + ':' + that.basePort + \"/\" + that.baseUrl;\n      var socketUrl = \"ws://\" + that.commonUrl + \"/led/\" + that.baseLedId;\n      // socketUrl = \"ws://10.0.100.150:8080/gtctu/led/113\"\n      var ws = new _WebSocketClient.WebSocketClient(socketUrl);\n      ws.connect();\n      ws.onmessage(function (msg) {\n        var data = JSON.parse(msg.data);\n        if (data.type === \"default\") {\n          that.chartsData.Pie.series[0].data = data.pie;\n          that.baseInfo.stockCount = data.stockCunt;\n          that.baseInfo.emptyCount = data.emptyCount;\n          that.baseInfo.noneCount = data.noneCount;\n          that.baseInfo.used = data.used;\n          that.baseInfo.usedPr = data.usedPr;\n          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)];\n          that.chartsData.Line.series = data.rows;\n          that.calendar = data.year + \"年\" + data.month + \"月\" + data.day + \"日 \" + data.hour + \":\" + data.minute + \":\" + data.second + \" \" + data.week;\n          that.currDate = data.year + \"/\" + data.month + \"/\" + data.day;\n          that.locList = data.inventoryData;\n          that.oldHours = data.hour;\n          that.oldMin = data.minute;\n        } else if (data.type === \"error\") {\n          if (data.errMsg && data.errMsg !== \"\") {\n            var errorInfo = data.errMsg;\n            if (that.infoType == 1) {\n              that.infoType = 3;\n              that.infoText.title = \"其他信息\";\n              // that.infoText.title = \"异常\"\n              that.infoText.error = errorInfo;\n              return;\n            }\n            that.infoType = 2;\n            that.infoText.title = \"其他信息\";\n            // that.infoText.title = \"异常\"\n            that.infoText.error = errorInfo;\n          } else {\n            if (that.infoType == 1) {\n              return;\n            }\n            that.infoType = 0;\n          }\n        } else if (data.type === \"task\") {\n          if (data.taskList && data.taskList !== \"\") {\n            if (that.infoType == 2 || that.infoType == 3) {\n              return;\n            }\n            // infoType1:只有拣料等信息\n            that.infoType = 1;\n            if (data.taskList[0].ioType === 101) {\n              that.infoText.title = '全板出库';\n            } else if (data.taskList[0].ioType === 103) {\n              that.infoText.title = '拣料出库';\n            } else if (data.taskList[0].ioType === 107) {\n              that.infoText.title = '盘点出库';\n            } else if (data.taskList[0].ioType === 1) {\n              that.infoText.title = '入库';\n            } else if (data.taskList[0].ioType === 10) {\n              that.infoText.title = '空托入库';\n            } else if (data.taskList[0].ioType === 110) {\n              that.infoText.title = '空托出库';\n            }\n            that.infoText.barcode = data.taskList[0].barcode;\n            that.infoText.workNo = data.taskList[0].workNo;\n            that.infoText.sourceLocNo = data.taskList[0].sourceLocNo;\n            that.infoText.staNo = data.taskList[0].staNo;\n            that.swiperList = data.taskList[0].matDtos;\n            // that.infoText.matnr = res.data[0].matDtos[0].matnr\n            // that.infoText.specs = res.data[0].matDtos[0].specs\n            // that.infoText.maknx = res.data[0].matDtos[0].maknx\n            // that.infoText.count = res.data[0].matDtos[0].count\n          } else {\n            if (that.infoType == 2 || that.infoType == 3) {\n              return;\n            }\n            that.infoType = 0;\n          }\n        }\n      });\n    },\n    statisticalModel: function statisticalModel() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/locDetl/pda/statisticalModel\",\n        method: 'GET',\n        success: function success(result) {\n          var res = result.data;\n          if (res.code === 200) {\n            __f__(\"log\", res.data, \" at pages/home/home.vue:548\");\n            that.locList = res.data;\n          }\n        }\n      });\n    },\n    timeOut: function timeOut() {\n      __f__(\"log\", this.times, \" at pages/home/home.vue:555\");\n    },\n    getUrl: function getUrl() {\n      this.commonUrl = this.baseHttp + this.baseIP + ':' + this.basePort + \"/\" + this.baseUrl;\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    // 获取错误信息\n    getInfo2: function getInfo2() {\n      var that = this;\n      var result = _data.default.dataInfo2;\n      var res = result.data;\n      if (res.data && res.data !== \"\") {\n        if (that.infoType == 2 || that.infoType == 3) {\n          return;\n        }\n        // infoType1:只有拣料等信息\n        that.infoType = 1;\n        if (res.data[0].ioType === 101) {\n          that.infoText.title = '全板出库';\n        } else if (res.data[0].ioType === 103) {\n          that.infoText.title = '检料出库';\n        } else if (res.data[0].ioType === 107) {\n          that.infoText.title = '盘点出库';\n        } else if (res.data[0].ioType === 1) {\n          that.infoText.title = '入库';\n        } else if (res.data[0].ioType === 10) {\n          that.infoText.title = '空托入库';\n        } else if (res.data[0].ioType === 110) {\n          that.infoText.title = '空托出库';\n        }\n        that.infoText.barcode = res.data[0].barcode;\n        that.infoText.workNo = res.data[0].workNo;\n        that.infoText.sourceLocNo = res.data[0].sourceLocNo;\n        that.infoText.staNo = res.data[0].staNo;\n        that.swiperList = res.data[0].matDtos;\n        // that.infoText.matnr = res.data[0].matDtos[0].matnr\n        // that.infoText.specs = res.data[0].matDtos[0].specs\n        // that.infoText.maknx = res.data[0].matDtos[0].maknx\n        // that.infoText.count = res.data[0].matDtos[0].count\n      } else {\n        if (that.infoType == 2 || that.infoType == 3) {\n          return;\n        }\n        that.infoType = 0;\n      }\n    },\n    getError2: function getError2() {\n      var that = this;\n      var result = _data.default.dataError2;\n      var res = result.data;\n      if (res.data && res.data !== \"\") {\n        var errorInfo = res.data;\n        if (that.infoType == 1) {\n          that.infoType = 3;\n          that.infoText.title = \"其他信息\";\n          // that.infoText.title = \"异常\"\n          that.infoText.error = errorInfo;\n          return;\n        }\n        that.infoType = 2;\n        that.infoText.title = \"其他信息\";\n        // that.infoText.title = \"异常\"\n        that.infoText.error = errorInfo;\n      } else {\n        if (that.infoType == 1) {\n          return;\n        }\n        that.infoType = 0;\n      }\n    },\n    getInfo: function getInfo() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/led\",\n        method: \"GET\",\n        data: {\n          ledId: that.baseLedId\n        },\n        success: function success(result) {\n          that.timeOut = false;\n          that.times = 0;\n          var res = result.data;\n          if (res.data && res.data !== \"\") {\n            if (that.infoType == 2 || that.infoType == 3) {\n              return;\n            }\n            // infoType1:只有拣料等信息\n            that.infoType = 1;\n            if (res.data[0].ioType === 101) {\n              that.infoText.title = '全板出库';\n            } else if (res.data[0].ioType === 103) {\n              that.infoText.title = '检料出库';\n            } else if (res.data[0].ioType === 107) {\n              that.infoText.title = '盘点出库';\n            } else if (res.data[0].ioType === 1) {\n              that.infoText.title = '入库';\n            } else if (res.data[0].ioType === 10) {\n              that.infoText.title = '空托入库';\n            } else if (res.data[0].ioType === 110) {\n              that.infoText.title = '空托出库';\n            }\n            that.infoText.barcode = res.data[0].barcode;\n            that.infoText.workNo = res.data[0].workNo;\n            that.infoText.sourceLocNo = res.data[0].sourceLocNo;\n            that.infoText.staNo = res.data[0].staNo;\n            that.swiperList = res.data[0].matDtos;\n            // that.infoText.matnr = res.data[0].matDtos[0].matnr\n            // that.infoText.specs = res.data[0].matDtos[0].specs\n            // that.infoText.maknx = res.data[0].matDtos[0].maknx\n            // that.infoText.count = res.data[0].matDtos[0].count\n          } else {\n            if (that.infoType == 2 || that.infoType == 3) {\n              return;\n            }\n            that.infoType = 0;\n          }\n        },\n        fail: function fail(err) {\n          that.timeOut = true;\n          that.times = that.times + 1;\n          that.infoType = 0;\n        }\n      });\n    },\n    getError: function getError() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/led/error\",\n        data: {\n          ledId: that.baseLedId\n        },\n        method: \"GET\",\n        success: function success(result) {\n          that.timeOut = false;\n          that.times = 0;\n          var res = result.data;\n          if (res.data && res.data !== \"\") {\n            var errorInfo = res.data;\n            if (that.infoType == 1) {\n              that.infoType = 3;\n              that.infoText.title = \"其他信息\";\n              // that.infoText.title = \"异常\"\n              that.infoText.error = errorInfo;\n              return;\n            }\n            that.infoType = 2;\n            that.infoText.title = \"其他信息\";\n            // that.infoText.title = \"异常\"\n            that.infoText.error = errorInfo;\n          } else {\n            if (that.infoType == 1) {\n              return;\n            }\n            that.infoType = 0;\n          }\n        },\n        fail: function fail(err) {\n          that.timeOut = true;\n          that.infoType = 0;\n        }\n      });\n    },\n    // 控制器\n    controller: function controller() {\n      var _this2 = this;\n      switch (this.infoType) {\n        // 有信息 但 没有错误信息\n        case 0:\n          if (this.errorInfoViewShow) {\n            this.errorInfoViewShow = false;\n            this.errorInfoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.homeViewShow = true;\n              _this2.homeMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.infoViewShow) {\n            this.infoViewShow = false;\n            this.infoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.homeViewShow = true;\n              _this2.homeMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.errorInfoViewShow && this.infoViewShow) {\n            this.errorInfoViewShow = false;\n            this.infoViewShow = false;\n            this.infoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.homeViewShow = true;\n              _this2.homeMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          }\n          return;\n        case 1:\n          if (this.homeViewShow) {\n            this.homeViewShow = false;\n            this.homeMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.infoViewShow = true;\n              _this2.infoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.errorInfoViewShow) {\n            this.errorInfoViewShow = false;\n            this.errorInfoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.infoViewShow = true;\n              _this2.infoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          }\n          return;\n        // 有信息 且 有错误信息\n        case 2:\n          if (this.homeViewShow) {\n            this.homeViewShow = false;\n            this.homeMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.errorInfoViewShow = true;\n              _this2.errorInfoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.infoViewShow) {\n            this.infoViewShow = false;\n            this.infoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.errorInfoViewShow = true;\n              _this2.errorInfoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          }\n          return;\n        // 有信息 且 有错误信息\n        case 3:\n          if (this.homeViewShow) {\n            this.homeViewShow = false;\n            this.homeMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.errorInfoViewShow = true;\n              _this2.errorInfoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.infoViewShow) {\n            this.infoViewShow = false;\n            this.infoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.errorInfoViewShow = true;\n              _this2.errorInfoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          }\n          return;\n      }\n    },\n    // 主屏幕\n    handle: function handle(type) {\n      this.homeViewShow = !this.homeViewShow;\n      this.modeClass = type;\n    },\n    // 拣料\n    handle1: function handle1(type) {\n      this.infoViewShow = !this.infoViewShow;\n      this.modeClass = type;\n    },\n    // 异常\n    handle2: function handle2(type) {\n      this.errorInfoViewShow = !this.errorInfoViewShow;\n      this.modeClass = type;\n    },\n    // 配置\n    ejected: function ejected() {\n      this.ejectShow = true;\n    },\n    // 取消配置\n    ejectClose: function ejectClose() {\n      this.ejectShow = false;\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      uni.setStorageSync('UPROJ', this.baseUrl);\n      this.getUrl();\n      this.ejectShow = false;\n    },\n    // 日历 服务器\n    getDate2: function getDate2() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/date\",\n        method: \"GET\",\n        success: function success(result) {\n          var res = result.data.data;\n        }\n      });\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:\n          weeks = \"星期日\";\n          break;\n        case 1:\n          weeks = \"星期一\";\n          break;\n        case 2:\n          weeks = \"星期二\";\n          break;\n        case 3:\n          weeks = \"星期三\";\n          break;\n        case 4:\n          weeks = \"星期四\";\n          break;\n        case 5:\n          weeks = \"星期五\";\n          break;\n        default:\n          weeks = \"星期六\";\n      }\n      this.calendar = year + \"年\" + month + \"月\" + day + \"日 \" + hours + \":\" + minutes + \":\" + seconds + \" \" + weeks;\n    },\n    getDateFormat: function getDateFormat(value) {\n      var date = new Date(this.currDate); // 获取当前时间\n      date.setDate(date.getDate() + value); // 设置天数 -1 天\n      var m = date.getMonth() + 1;\n      var d = date.getDate();\n      var newDate = m + '-' + d;\n      return newDate;\n    },\n    /*************** 折线图 *****************************************************************************************************/initlineChart: function initlineChart() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/line/charts\",\n        method: 'GET',\n        success: function success(result) {\n          var res = result.data;\n          if (res.code === 200) {}\n        }\n      });\n    },\n    /*************** 饼图 *****************************************************************************************************/initPieChart: function initPieChart() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/loc/rep\",\n        method: 'GET',\n        success: function success(result) {\n          var res = result.data;\n          if (res.code === 200) {\n            that.chartsData.Pie.series[0].data = res.data.pie;\n            that.baseInfo.stockCount = res.data.stockCunt;\n            that.baseInfo.emptyCount = res.data.emptyCount;\n            that.baseInfo.noneCount = res.data.noneCount;\n            that.baseInfo.used = res.data.used;\n            that.baseInfo.usedPr = res.data.usedPr;\n          }\n        }\n      });\n    },\n    getOther: function getOther() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/other\",\n        data: {\n          crnId: that.baseCrnId,\n          ledId: that.baseLedId\n        },\n        success: function success(result) {\n          // console.log(result);\n          var res = result.data;\n          if (res.code === 200) {\n            that.baseInfo.xDistance = res.data.xDistance;\n            that.baseInfo.yDistance = res.data.yDistance;\n            that.baseInfo.xDuration = res.data.xDuration;\n            that.baseInfo.yDuration = res.data.yDuration;\n          } else if (res.code === 403) {} else {}\n        }\n      });\n    }\n  }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaG9tZS9ob21lLnZ1ZSJdLCJuYW1lcyI6WyJzb2NrZXQiLCJkYXRhIiwic2VyaWVzIiwiaG9tZVZpZXdTaG93IiwiaW5mb1ZpZXdTaG93IiwiZXJyb3JJbmZvVmlld1Nob3ciLCJob21lTW9kZSIsImluZm9Nb2RlIiwiZXJyb3JJbmZvTW9kZSIsImJhc2VJbmZvIiwieERpc3RhbmNlIiwieURpc3RhbmNlIiwieER1cmF0aW9uIiwieUR1cmF0aW9uIiwidXNlZFByIiwidXNlZCIsInN0b2NrQ291bnQiLCJlbXB0eUNvdW50Iiwibm9uZUNvdW50IiwiY2hhcnRzRGF0YSIsImR1cmF0aW9uIiwiY2FsZW5kYXIiLCJyaW5nT3B0cyIsImNoYXJ0c0RhdGFMaW5lMSIsImNoYXJ0c0RhdGFQaWUyIiwiZm9udFNpemUiLCJoZWlnaHQiLCJzaG93Q2hhcnRzIiwiZWplY3RTaG93IiwiYmFzZUlQIiwiYmFzZVBvcnQiLCJiYXNlTGVkSWQiLCJiYXNlQ3JuSWQiLCJiYXNlVXJsIiwiaW5mbyIsImVycm9yIiwiaW5mb1R5cGUiLCJ0ZXh0IiwiaW5mb1RleHQiLCJ0aXRsZSIsInN0YU5vIiwibWF0bnIiLCJtYWtueCIsInNwZWNzIiwiY291bnQiLCJiYXJjb2RlIiwic3dpcGVyTGlzdCIsInRpbWVPdXQiLCJ0aW1lcyIsImN1cnJEYXRlIiwibG9jTGlzdCIsIm9sZEhvdXJzIiwib2xkTWluIiwib25TaG93IiwicGx1cyIsIm5hdmlnYXRvciIsInNldEZ1bGxzY3JlZW4iLCJtb3VudGVkIiwidGhhdCIsIkJhc2VJUCIsInVuaSIsImdldFN0b3JhZ2VTeW5jIiwiQmFzZUxlZElkIiwiQmFzZVBvcnQiLCJCYXNlQ3JuSWQiLCJQUk9KIiwiY3JlYXRlZCIsIndlYlNvY2tlckluaXQiLCJvbkxvYWQiLCJzZXRJbnRlcnZhbCIsImdldFNlcnZlckRhdGEiLCJjb250cm9sbGVyIiwic2V0VGltZW91dCIsInJ1bnRpbWUiLCJyZXN0YXJ0IiwidGltZSIsIkRhdGUiLCJoaCIsImdldEhvdXJzIiwibW0iLCJnZXRNaW51dGVzIiwibWV0aG9kcyIsImNvbW1vblVybCIsInNvY2tldFVybCIsIndzIiwiV2ViU29ja2V0Q2xpZW50IiwiY29ubmVjdCIsIm9ubWVzc2FnZSIsIm1zZyIsIkpTT04iLCJwYXJzZSIsInR5cGUiLCJQaWUiLCJwaWUiLCJzdG9ja0N1bnQiLCJMaW5lIiwiY2F0ZWdvcmllcyIsImdldERhdGVGb3JtYXQiLCJyb3dzIiwieWVhciIsIm1vbnRoIiwiZGF5IiwiaG91ciIsIm1pbnV0ZSIsInNlY29uZCIsIndlZWsiLCJpbnZlbnRvcnlEYXRhIiwiZXJyTXNnIiwiZXJyb3JJbmZvIiwidGFza0xpc3QiLCJpb1R5cGUiLCJ3b3JrTm8iLCJzb3VyY2VMb2NObyIsIm1hdER0b3MiLCJzdGF0aXN0aWNhbE1vZGVsIiwicmVxdWVzdCIsInVybCIsIm1ldGhvZCIsInN1Y2Nlc3MiLCJyZXN1bHQiLCJyZXMiLCJjb2RlIiwiZ2V0VXJsIiwiYmFzZUh0dHAiLCJzdHJpbmdpZnkiLCJnZXRJbmZvMiIsInljcWRhdGEiLCJkYXRhSW5mbzIiLCJnZXRFcnJvcjIiLCJkYXRhRXJyb3IyIiwiZ2V0SW5mbyIsImxlZElkIiwiZmFpbCIsImVyciIsImdldEVycm9yIiwiaGFuZGxlIiwibW9kZUNsYXNzIiwiaGFuZGxlMSIsImhhbmRsZTIiLCJlamVjdGVkIiwiZWplY3RDbG9zZSIsImVqZWN0Q29uZmlybSIsInNldFN0b3JhZ2VTeW5jIiwiZ2V0RGF0ZTIiLCJnZXREYXRlIiwiZHQiLCJob3VycyIsIm1pbnV0ZXMiLCJzZWNvbmRzIiwid2Vla3MiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0U2Vjb25kcyIsImdldERheSIsInZhbHVlIiwiZGF0ZSIsInNldERhdGUiLCJtIiwiZCIsIm5ld0RhdGUiLCJpbml0bGluZUNoYXJ0IiwiaW5pdFBpZUNoYXJ0IiwiZ2V0T3RoZXIiLCJjcm5JZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQThTQTtBQUNBO0FBQ0E7QUFoVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QUFJLEtBQUssR0FBRyxFQUFFLENBRTdCLENBQUMsTUFBTSxDQUVQO1FBQ0Q7TUFDRCxDQUFDLENBQUM7SUFDSDtFQUNEO0FBRUQsQ0FBQztBQUFBLDJCIiwiZmlsZSI6IjEwMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbmltcG9ydCBkZW1vZGF0YSBmcm9tICdAL21vY2tkYXRhL2RlbW9kYXRhLmpzb24nO1xuaW1wb3J0IHljcWRhdGEgZnJvbSAnQC9wYWdlcy9pbmRleC9kYXRhLmpzb24nO1xuaW1wb3J0IHtXZWJTb2NrZXRDbGllbnR9IGZyb20gXCJAL3N0YXRpYy9qcy9XZWJTb2NrZXRDbGllbnRcIlx0XG5sZXQgc29ja2V0O1xuZXhwb3J0IGRlZmF1bHQge1xuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZXJpZXM6IFtdLFxuXHRcdFx0aG9tZVZpZXdTaG93OiB0cnVlLFxuXHRcdFx0aW5mb1ZpZXdTaG93OiBmYWxzZVx0LFxuXHRcdFx0ZXJyb3JJbmZvVmlld1Nob3c6IGZhbHNlLFxuXHRcdFx0aG9tZU1vZGU6IFtdLFxuXHRcdFx0aW5mb01vZGU6IFtdLFxuXHRcdFx0ZXJyb3JJbmZvTW9kZTogW10sXG5cdFx0XHRiYXNlSW5mbzoge1xuXHRcdFx0XHR4RGlzdGFuY2U6IDEsXG5cdFx0XHRcdHlEaXN0YW5jZTogMixcblx0XHRcdFx0eER1cmF0aW9uOiAzLFxuXHRcdFx0XHR5RHVyYXRpb246IDQsXG5cdFx0XHRcdHVzZWRQcjogNTAsXG5cdFx0XHRcdHVzZWQ6IDM1MzcsXG5cdFx0XHRcdHN0b2NrQ291bnQ6ICcnLFxuXHRcdFx0XHRlbXB0eUNvdW50OiAnJyxcblx0XHRcdFx0bm9uZUNvdW50OiAnJyxcblx0XHRcdH0sXG5cdFx0XHRjaGFydHNEYXRhOiB7XG5cdFx0XHRcdFwiTGluZVwiOiB7XG5cdFx0XHRcdFx0XCJjYXRlZ29yaWVzXCI6IFtdLFxuXHRcdFx0XHRcdFwic2VyaWVzXCI6IFtdXG5cdFx0XHRcdH0sXG5cdFx0XHRcdFwiUGllXCI6IHtcblx0XHRcdFx0XHRcInNlcmllc1wiOiBbe1xuXHRcdFx0XHRcdFx0XCJkYXRhXCI6IFtdXG5cdFx0XHRcdFx0fV1cblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHRkdXJhdGlvbjogMTAwMCxcblx0XHRcdGNhbGVuZGFyOiAnJyxcblx0XHRcdHJpbmdPcHRzOnt9LFxuXHRcdFx0Y2hhcnRzRGF0YUxpbmUxOiB7fSxcblx0XHRcdGNoYXJ0c0RhdGFQaWUyOiB7fSxcblx0XHRcdGZvbnRTaXplOiAnJyxcblx0XHRcdGhlaWdodDogJycsXG5cdFx0XHRzaG93Q2hhcnRzOiBmYWxzZSxcblx0XHRcdGVqZWN0U2hvdzogZmFsc2UsXG5cdFx0XHRiYXNlSVA6ICcnLFxuXHRcdFx0YmFzZVBvcnQ6ICcnLFxuXHRcdFx0YmFzZUxlZElkOiAnJyxcblx0XHRcdGJhc2VDcm5JZDogJycsXG5cdFx0XHRiYXNlVXJsOiAnJyxcblx0XHRcdGluZm86IG51bGwsXG5cdFx0XHRlcnJvcjogbnVsbCxcblx0XHRcdGluZm9UeXBlOiAwLFxuXHRcdFx0dGV4dDogJycsXG5cdFx0XHRpbmZvVGV4dDoge1xuXHRcdFx0XHR0aXRsZTogJycsXG5cdFx0XHRcdHN0YU5vOiBcIlwiLFxuXHRcdFx0XHRtYXRucjogXCJcIixcblx0XHRcdFx0bWFrbng6IFwiXCIsXG5cdFx0XHRcdHNwZWNzOiBcIlwiLFxuXHRcdFx0XHRjb3VudDogXCJcIixcblx0XHRcdFx0ZXJyb3I6IFwiXCIsXG5cdFx0XHRcdGJhcmNvZGU6IFwiXCJcblx0XHRcdH0sXG5cdFx0XHRzd2lwZXJMaXN0OiBbXSxcblx0XHRcdHRpbWVPdXQ6IGZhbHNlLFxuXHRcdFx0dGltZXM6IDAsXG5cdFx0XHRjdXJyRGF0ZTogJycsXG5cdFx0XHRsb2NMaXN0OltdLFx0XG5cdFx0XHRvbGRIb3VyczonJyxcblx0XHRcdG9sZE1pbjonJ1xuICAgICAgIFxuXHRcdFx0XG5cdFx0fVxuXHR9LFxuXHRvblNob3coKSB7XG5cdFx0Ly8g6ZqQ6JeP5pe26Ze0LOeUtemHjyzkv6Hlj7fnrYlcblxuXHRcdHBsdXMubmF2aWdhdG9yLnNldEZ1bGxzY3JlZW4odHJ1ZSlcblxuXHR9LFxuXHRtb3VudGVkKCkge1xuXHRcdGxldCB0aGF0ID0gdGhpc1xuXHRcdGNvbnN0IEJhc2VJUCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZUlwJyk7XG5cdFx0Y29uc3QgQmFzZUxlZElkID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlTGVkSWQnKTtcblx0XHRjb25zdCBCYXNlUG9ydCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZVBvcnQnKTtcblx0XHRjb25zdCBCYXNlQ3JuSWQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VDcm5JZCcpO1xuXHRcdGNvbnN0IFBST0ogPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ1VQUk9KJyk7XG5cdFx0dGhhdC5iYXNlVXJsID0gUFJPSlxuXHRcdHRoYXQuYmFzZUlQID0gQmFzZUlQXG5cdFx0dGhhdC5iYXNlTGVkSWQgPSBCYXNlTGVkSWRcblx0XHR0aGF0LmJhc2VQb3J0ID0gQmFzZVBvcnRcblx0XHR0aGF0LmJhc2VDcm5JZCA9IEJhc2VDcm5JZFxuXHRcdC8vIHRoaXMuZ2V0VXJsKClcblx0fSxcblx0Y3JlYXRlZCgpIHtcblx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRjb25zdCBCYXNlSVAgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VJcCcpO1xuXHRcdGNvbnN0IEJhc2VMZWRJZCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZUxlZElkJyk7XG5cdFx0Y29uc3QgQmFzZVBvcnQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VQb3J0Jyk7XG5cdFx0Y29uc3QgQmFzZUNybklkID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlQ3JuSWQnKTtcblx0XHRjb25zdCBQUk9KID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdVUFJPSicpO1xuXHRcdHRoYXQuYmFzZVVybCA9IFBST0pcblx0XHR0aGF0LmJhc2VJUCA9IEJhc2VJUFxuXHRcdHRoYXQuYmFzZUxlZElkID0gQmFzZUxlZElkXG5cdFx0dGhhdC5iYXNlUG9ydCA9IEJhc2VQb3J0XG5cdFx0dGhhdC5iYXNlQ3JuSWQgPSBCYXNlQ3JuSWRcblx0XHR0aGF0LndlYlNvY2tlckluaXQoKTtcblx0fSxcblx0b25Mb2FkKCkge1x0XHRcdFxuXHRcdHNldEludGVydmFsKCgpPT57XG5cdFx0XHR0aGlzLmdldFNlcnZlckRhdGEoKVxuXHRcdFx0Ly8gdGhpcy5pbml0bGluZUNoYXJ0KClcblx0XHRcdC8vIHRoaXMuaW5pdFBpZUNoYXJ0KClcblx0XHRcdC8vIHRoaXMuZ2V0T3RoZXIoKVxuXHRcdFx0Ly8gLy8gdGhpcy5nZXREYXRlKClcblx0XHRcdC8vIHRoaXMuZ2V0RGF0ZTIoKVxuXHRcdFx0Ly8gdGhpcy5nZXRJbmZvKClcblx0XHRcdC8vIHRoaXMuZ2V0RXJyb3IoKVxuXHRcdFx0Ly8gLy8gdGhpcy5nZXRJbmZvMigpXG5cdFx0XHQvLyAvLyB0aGlzLmdldEVycm9yMigpXG5cdFx0XHQvLyB0aGlzLmdldFVybCgpXG5cdFx0XHR0aGlzLmNvbnRyb2xsZXIoKVxuXHRcdFx0Ly8gdGhpcy5zdGF0aXN0aWNhbE1vZGVsKClcblx0XHRcdC8vIOa1i+ivleeUqFxuXHRcdFx0XG5cdFx0fSwxMDAwKVxuXHRcdFxuXHRcdHNldEludGVydmFsKCgpPT4ge1x0XG5cdFx0XHRzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdHBsdXMucnVudGltZS5yZXN0YXJ0KCk7XG5cdFx0XHR9LDEwMClcblx0XHRcdFxuXHRcdH0sMTAwMCo2MCo2MCo0KVxuXHRcdFxuXHRcdHNldEludGVydmFsKCgpPT4ge1xuXHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHR2YXIgdGltZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHRcdHZhciBoaCA9IHRpbWUuZ2V0SG91cnMoKTtcblx0XHRcdFx0dmFyIG1tID0gdGltZS5nZXRNaW51dGVzKCk7XG5cdFx0XHRcdGlmKGhoID4gdGhpcy5vbGRIb3VycyAmJiBtbSA+dGhpcy5vbGRNaW4gJiYgdGhpcy5vbGRNaW4gLSBtbSA8IDU1KXtcblx0XHRcdFx0XHRwbHVzLnJ1bnRpbWUucmVzdGFydCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKG1tID50aGlzLm9sZE1pbiAmJiBtbSAtIHRoaXMub2xkTWluID4yKXtcblx0XHRcdFx0XHRwbHVzLnJ1bnRpbWUucmVzdGFydCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LDEwMClcblx0XHRcdFxuXHRcdH0sMTAwMCozMClcblx0fSxcblx0bWV0aG9kczoge1xuXHRcdHdlYlNvY2tlckluaXQoKXtcblx0XHRcdGxldCB0aGF0ID0gdGhpcztcblx0XHRcdHRoYXQuY29tbW9uVXJsID0gdGhhdC5iYXNlSVAgKyAnOicgK3RoYXQuYmFzZVBvcnQgKyBcIi9cIiArdGhhdC5iYXNlVXJsXG5cdFx0XHRsZXQgc29ja2V0VXJsID0gXCJ3czovL1wiK3RoYXQuY29tbW9uVXJsK1wiL2xlZC9cIit0aGF0LmJhc2VMZWRJZFxuXHRcdFx0XHRcdC8vIHNvY2tldFVybCA9IFwid3M6Ly8xMC4wLjEwMC4xNTA6ODA4MC9ndGN0dS9sZWQvMTEzXCJcblx0XHRcdGNvbnN0IHdzID0gbmV3IFdlYlNvY2tldENsaWVudChzb2NrZXRVcmwpO1xuXHRcdFx0d3MuY29ubmVjdCgpXG5cdFx0XHR3cy5vbm1lc3NhZ2UoKG1zZyk9PntcdFx0XHRcdFx0XG5cdFx0XHQgbGV0IGRhdGEgPSBKU09OLnBhcnNlKG1zZy5kYXRhKVxuXHRcdFx0IGlmKGRhdGEudHlwZSA9PT0gXCJkZWZhdWx0XCIpe1xuXHRcdFx0IFx0dGhhdC5jaGFydHNEYXRhLlBpZS5zZXJpZXNbMF0uZGF0YSA9IGRhdGEucGllXG5cdFx0XHQgXHR0aGF0LmJhc2VJbmZvLnN0b2NrQ291bnQgPSBkYXRhLnN0b2NrQ3VudFxuXHRcdFx0IFx0dGhhdC5iYXNlSW5mby5lbXB0eUNvdW50ID0gZGF0YS5lbXB0eUNvdW50XG5cdFx0XHQgXHR0aGF0LmJhc2VJbmZvLm5vbmVDb3VudCA9ZGF0YS5ub25lQ291bnRcblx0XHRcdCBcdHRoYXQuYmFzZUluZm8udXNlZCA9IGRhdGEudXNlZFxuXHRcdFx0IFx0dGhhdC5iYXNlSW5mby51c2VkUHIgPSBkYXRhLnVzZWRQclxuXHRcdFx0IFx0XG5cdFx0XHQgXHR0aGF0LmNoYXJ0c0RhdGEuTGluZS5jYXRlZ29yaWVzID0gW1xuXHRcdFx0IFx0XHR0aGF0LmdldERhdGVGb3JtYXQoLTExKSx0aGF0LmdldERhdGVGb3JtYXQoLTEwKSx0aGF0LmdldERhdGVGb3JtYXQoLTkpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtOCksXG5cdFx0XHQgXHRcdHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNyksdGhhdC5nZXREYXRlRm9ybWF0KC02KSx0aGF0LmdldERhdGVGb3JtYXQoLTUpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNCksXG5cdFx0XHQgXHRcdHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMyksdGhhdC5nZXREYXRlRm9ybWF0KC0yKSx0aGF0LmdldERhdGVGb3JtYXQoLTEpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgwKSxdXG5cdFx0XHQgXHR0aGF0LmNoYXJ0c0RhdGEuTGluZS5zZXJpZXMgPSBkYXRhLnJvd3Ncblx0XHRcdCBcdHRoYXQuY2FsZW5kYXIgPSBkYXRhLnllYXIgKyBcIuW5tFwiICsgZGF0YS5tb250aCArIFwi5pyIXCIgKyBkYXRhLmRheSArIFwi5pelIFwiICsgZGF0YS5ob3VyICsgXCI6XCIgKyBkYXRhLm1pbnV0ZSArIFwiOlwiICsgZGF0YS5zZWNvbmQgKyBcIiBcIiArIGRhdGEud2Vla1xuXHRcdFx0IFx0dGhhdC5jdXJyRGF0ZSA9IGRhdGEueWVhciArIFwiL1wiICsgZGF0YS5tb250aCArIFwiL1wiICsgZGF0YS5kYXlcblx0XHRcdCBcdHRoYXQubG9jTGlzdCA9IGRhdGEuaW52ZW50b3J5RGF0YVxuXHRcdFx0XHR0aGF0Lm9sZEhvdXJzID0gZGF0YS5ob3VyXG5cdFx0XHRcdHRoYXQub2xkTWluID0gZGF0YS5taW51dGVcblx0XHRcdCB9ZWxzZSBpZihkYXRhLnR5cGUgPT09IFwiZXJyb3JcIil7XG5cdFx0XHQgXHRpZiAoZGF0YS5lcnJNc2cgJiYgZGF0YS5lcnJNc2cgIT09IFwiXCIpIHtcblx0XHRcdCBcdFx0dmFyIGVycm9ySW5mbyA9IGRhdGEuZXJyTXNnXG5cdFx0XHQgXHRcdGlmICh0aGF0LmluZm9UeXBlID09IDEpIHtcblx0XHRcdCBcdFx0XHR0aGF0LmluZm9UeXBlID0gM1xuXHRcdFx0IFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuWFtuS7luS/oeaBr1wiIFxuXHRcdFx0IFx0XHRcdC8vIHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuW8guW4uFwiXG5cdFx0XHQgXHRcdFx0dGhhdC5pbmZvVGV4dC5lcnJvciA9IGVycm9ySW5mb1xuXHRcdFx0IFx0XHRcdHJldHVyblxuXHRcdFx0IFx0XHR9XG5cdFx0XHQgXHRcdHRoYXQuaW5mb1R5cGUgPSAyXG5cdFx0XHQgXHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuWFtuS7luS/oeaBr1wiXG5cdFx0XHQgXHRcdC8vIHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuW8guW4uFwiXG5cdFx0XHQgXHRcdHRoYXQuaW5mb1RleHQuZXJyb3IgPSBlcnJvckluZm9cblx0XHRcdCBcdH0gZWxzZSB7XG5cdFx0XHQgXHRcdGlmICh0aGF0LmluZm9UeXBlID09IDEpIHtcblx0XHRcdCBcdFx0XHRyZXR1cm5cblx0XHRcdCBcdFx0fVxuXHRcdFx0IFx0XHR0aGF0LmluZm9UeXBlID0gMFxuXHRcdFx0IFx0fVxuXHRcdFx0IH1lbHNlIGlmKGRhdGEudHlwZSA9PT0gXCJ0YXNrXCIpe1xuXHRcdFx0XHQgaWYgKGRhdGEudGFza0xpc3QgJiYgZGF0YS50YXNrTGlzdCAhPT0gXCJcIikge1xuXHRcdFx0XHQgXHRpZiAodGhhdC5pbmZvVHlwZSA9PSAyIHx8IHRoYXQuaW5mb1R5cGUgPT0gMykge1xuXHRcdFx0XHQgXHRcdHJldHVybjtcblx0XHRcdFx0IFx0fVxuXHRcdFx0XHQgXHQvLyBpbmZvVHlwZTE65Y+q5pyJ5ouj5paZ562J5L+h5oGvXG5cdFx0XHRcdCBcdHRoYXQuaW5mb1R5cGUgPSAxXG5cdFx0XHRcdCBcdGlmIChkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMTAxKSB7XG5cdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICflhajmnb/lh7rlupMnXG5cdFx0XHRcdCBcdH0gZWxzZSBpZihkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMTAzKSB7XG5cdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfmi6Pmlpnlh7rlupMnXG5cdFx0XHRcdCBcdH0gZWxzZSBpZihkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMTA3KSB7XG5cdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnm5jngrnlh7rlupMnXG5cdFx0XHRcdCBcdH0gZWxzZSBpZihkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMSkge1xuXHRcdFx0XHQgXHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5YWl5bqTJ1xuXHRcdFx0XHQgXHR9IGVsc2UgaWYoZGF0YS50YXNrTGlzdFswXS5pb1R5cGUgPT09IDEwKSB7XG5cdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnqbrmiZjlhaXlupMnXG5cdFx0XHRcdCBcdH0gZWxzZSBpZihkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMTEwKSB7XG5cdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnqbrmiZjlh7rlupMnXG5cdFx0XHRcdCBcdH1cblx0XHRcdFx0IFx0dGhhdC5pbmZvVGV4dC5iYXJjb2RlID0gZGF0YS50YXNrTGlzdFswXS5iYXJjb2RlXG5cdFx0XHRcdCBcdHRoYXQuaW5mb1RleHQud29ya05vID0gZGF0YS50YXNrTGlzdFswXS53b3JrTm9cblx0XHRcdFx0IFx0dGhhdC5pbmZvVGV4dC5zb3VyY2VMb2NObyA9IGRhdGEudGFza0xpc3RbMF0uc291cmNlTG9jTm9cblx0XHRcdFx0IFx0dGhhdC5pbmZvVGV4dC5zdGFObyA9IGRhdGEudGFza0xpc3RbMF0uc3RhTm9cblx0XHRcdFx0IFx0dGhhdC5zd2lwZXJMaXN0ID0gZGF0YS50YXNrTGlzdFswXS5tYXREdG9zXG5cdFx0XHRcdCBcdC8vIHRoYXQuaW5mb1RleHQubWF0bnIgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1hdG5yXG5cdFx0XHRcdCBcdC8vIHRoYXQuaW5mb1RleHQuc3BlY3MgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLnNwZWNzXG5cdFx0XHRcdCBcdC8vIHRoYXQuaW5mb1RleHQubWFrbnggPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1ha254XG5cdFx0XHRcdCBcdC8vIHRoYXQuaW5mb1RleHQuY291bnQgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLmNvdW50XG5cdFx0XHRcdCB9IGVsc2Uge1xuXHRcdFx0XHQgXHRpZiAodGhhdC5pbmZvVHlwZSA9PSAyIHx8IHRoYXQuaW5mb1R5cGUgPT0gMykge1xuXHRcdFx0XHQgXHRcdHJldHVybjtcblx0XHRcdFx0IFx0fVxuXHRcdFx0XHQgXHR0aGF0LmluZm9UeXBlID0gMFxuXHRcdFx0XHQgfVxuXHRcdFx0IH1cblx0XHRcdCBcblx0XHRcdH0pXG5cdFx0fSxcblx0XHRzdGF0aXN0aWNhbE1vZGVsKCkge1xuXHRcdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0XHR1bmkucmVxdWVzdCh7XG5cdFx0XHRcdHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9tb25pdG9yL2xvY0RldGwvcGRhL3N0YXRpc3RpY2FsTW9kZWxcIixcblx0XHRcdFx0bWV0aG9kOidHRVQnLFxuXHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xuXHRcdFx0XHRcdHZhciByZXMgPSByZXN1bHQuZGF0YVxuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMuZGF0YSlcblx0XHRcdFx0XHRcdHRoYXQubG9jTGlzdCA9IHJlcy5kYXRhXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0sXG5cdFx0dGltZU91dCgpIHtcblx0XHRcdGNvbnNvbGUubG9nKHRoaXMudGltZXMpO1xuXHRcdH0sXG5cdFx0Z2V0VXJsKCkge1xuXHRcdFx0dGhpcy5jb21tb25VcmwgPSB0aGlzLmJhc2VIdHRwICsgdGhpcy5iYXNlSVAgKyAnOicgK3RoaXMuYmFzZVBvcnQgKyBcIi9cIiArdGhpcy5iYXNlVXJsXG5cdFx0fSxcblx0XHRnZXRTZXJ2ZXJEYXRhKCkge1xuXHRcdFx0dGhpcy5jaGFydHNEYXRhTGluZTE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXJ0c0RhdGEuTGluZSkpXG5cdFx0XHR0aGlzLmNoYXJ0c0RhdGFQaWUyPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jaGFydHNEYXRhLlBpZSkpXG5cdFx0fSxcblx0XHQvLyDojrflj5bplJnor6/kv6Hmga9cblx0XHRnZXRJbmZvMigpIHtcblx0XHRcdGxldCB0aGF0ID0gdGhpc1xuXHRcdFx0dmFyIHJlc3VsdCA9IHljcWRhdGEuZGF0YUluZm8yXG5cdFx0XHR2YXJcdHJlcyA9IHJlc3VsdC5kYXRhXG5cdFx0XHRpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEgIT09IFwiXCIpIHtcblx0XHRcdFx0aWYgKHRoYXQuaW5mb1R5cGUgPT0gMiB8fCB0aGF0LmluZm9UeXBlID09IDMpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gaW5mb1R5cGUxOuWPquacieaLo+aWmeetieS/oeaBr1xuXHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMVxuXHRcdFx0XHRpZiAocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDEpIHtcblx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+WFqOadv+WHuuW6kydcblx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAzKSB7XG5cdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfmo4Dmlpnlh7rlupMnXG5cdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwNykge1xuXHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn55uY54K55Ye65bqTJ1xuXHRcdFx0XHR9IGVsc2UgaWYocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxKSB7XG5cdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICflhaXlupMnXG5cdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwKSB7XG5cdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnqbrmiZjlhaXlupMnXG5cdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDExMCkge1xuXHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn56m65omY5Ye65bqTJ1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoYXQuaW5mb1RleHQuYmFyY29kZSA9IHJlcy5kYXRhWzBdLmJhcmNvZGVcblx0XHRcdFx0dGhhdC5pbmZvVGV4dC53b3JrTm8gPSByZXMuZGF0YVswXS53b3JrTm9cblx0XHRcdFx0dGhhdC5pbmZvVGV4dC5zb3VyY2VMb2NObyA9IHJlcy5kYXRhWzBdLnNvdXJjZUxvY05vXG5cdFx0XHRcdHRoYXQuaW5mb1RleHQuc3RhTm8gPSByZXMuZGF0YVswXS5zdGFOb1xuXHRcdFx0XHR0aGF0LnN3aXBlckxpc3QgPSByZXMuZGF0YVswXS5tYXREdG9zXG5cdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQubWF0bnIgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1hdG5yXG5cdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQuc3BlY3MgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLnNwZWNzXG5cdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQubWFrbnggPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1ha254XG5cdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQuY291bnQgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLmNvdW50XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAyIHx8IHRoYXQuaW5mb1R5cGUgPT0gMykge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMFxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Z2V0RXJyb3IyICgpIHtcblx0XHRcdGxldCB0aGF0ID0gdGhpc1xuXHRcdFx0bGV0IHJlc3VsdCA9IHljcWRhdGEuZGF0YUVycm9yMlxuXHRcdFx0dmFyXHRyZXMgPSByZXN1bHQuZGF0YVxuXHRcdFx0aWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBcIlwiKSB7XG5cdFx0XHRcdHZhciBlcnJvckluZm8gPSByZXMuZGF0YVxuXHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAxKSB7XG5cdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDNcblx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlhbbku5bkv6Hmga9cIiBcblx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlvILluLhcIlxuXHRcdFx0XHRcdHRoYXQuaW5mb1RleHQuZXJyb3IgPSBlcnJvckluZm9cblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0fVxuXHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMlxuXHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlhbbku5bkv6Hmga9cIlxuXHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlvILluLhcIlxuXHRcdFx0XHR0aGF0LmluZm9UZXh0LmVycm9yID0gZXJyb3JJbmZvXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAxKSB7XG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdH1cblx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDBcblx0XHRcdH1cblx0XHR9LFxuXHRcdGdldEluZm8oKSB7XG5cdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbGVkXCIsXG5cdFx0XHRcdG1ldGhvZDpcIkdFVFwiLFxuXHRcdFx0XHRkYXRhOiB7bGVkSWQ6dGhhdC5iYXNlTGVkSWR9LFxuXHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xuXHRcdFx0XHRcdHRoYXQudGltZU91dCA9IGZhbHNlXG5cdFx0XHRcdFx0dGhhdC50aW1lcyA9IDBcblx0XHRcdFx0XHR2YXJcdHJlcyA9IHJlc3VsdC5kYXRhXG5cdFx0XHRcdFx0aWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBcIlwiKSB7XG5cdFx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAyIHx8IHRoYXQuaW5mb1R5cGUgPT0gMykge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvLyBpbmZvVHlwZTE65Y+q5pyJ5ouj5paZ562J5L+h5oGvXG5cdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMVxuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAxKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5YWo5p2/5Ye65bqTJ1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAzKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5qOA5paZ5Ye65bqTJ1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTA3KSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn55uY54K55Ye65bqTJ1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMSkge1xuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+WFpeW6kydcblx0XHRcdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn56m65omY5YWl5bqTJ1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTEwKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn56m65omY5Ye65bqTJ1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC5iYXJjb2RlID0gcmVzLmRhdGFbMF0uYmFyY29kZVxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC53b3JrTm8gPSByZXMuZGF0YVswXS53b3JrTm9cblx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQuc291cmNlTG9jTm8gPSByZXMuZGF0YVswXS5zb3VyY2VMb2NOb1xuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC5zdGFObyA9IHJlcy5kYXRhWzBdLnN0YU5vXG5cdFx0XHRcdFx0XHR0aGF0LnN3aXBlckxpc3QgPSByZXMuZGF0YVswXS5tYXREdG9zXG5cdFx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0Lm1hdG5yID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYXRuclxuXHRcdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC5zcGVjcyA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0uc3BlY3Ncblx0XHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQubWFrbnggPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1ha254XG5cdFx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LmNvdW50ID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5jb3VudFxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAyIHx8IHRoYXQuaW5mb1R5cGUgPT0gMykge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0ZmFpbChlcnIpIHtcblx0XHRcdFx0XHR0aGF0LnRpbWVPdXQgPSB0cnVlXG5cdFx0XHRcdFx0dGhhdC50aW1lcyA9IHRoYXQudGltZXMrMVxuXHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAwXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHRcblx0XHR9LFxuXHRcdGdldEVycm9yKCkge1xuXHRcdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0XHR1bmkucmVxdWVzdCh7XG5cdFx0XHRcdHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9tb25pdG9yL2xlZC9lcnJvclwiLFxuXHRcdFx0XHRkYXRhOiB7bGVkSWQ6dGhhdC5iYXNlTGVkSWR9LFxuXHRcdFx0XHRtZXRob2Q6XCJHRVRcIixcblx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcblx0XHRcdFx0XHR0aGF0LnRpbWVPdXQgPSBmYWxzZVxuXHRcdFx0XHRcdHRoYXQudGltZXMgPSAwXG5cdFx0XHRcdFx0dmFyXHRyZXMgPSByZXN1bHQuZGF0YVxuXHRcdFx0XHRcdGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gXCJcIikge1xuXHRcdFx0XHRcdFx0dmFyIGVycm9ySW5mbyA9IHJlcy5kYXRhXG5cdFx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAxKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAzXG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuWFtuS7luS/oeaBr1wiIFxuXHRcdFx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlvILluLhcIlxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LmVycm9yID0gZXJyb3JJbmZvXG5cdFx0XHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDJcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuWFtuS7luS/oeaBr1wiXG5cdFx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlvILluLhcIlxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC5lcnJvciA9IGVycm9ySW5mb1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAxKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZhaWwoZXJyKSB7XG5cdFx0XHRcdFx0dGhhdC50aW1lT3V0ID0gdHJ1ZVxuXHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAwXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHRcblx0XHR9LFxuXHRcdC8vIOaOp+WItuWZqFxuXHRcdGNvbnRyb2xsZXIoKSB7XG5cdFx0XHRzd2l0Y2godGhpcy5pbmZvVHlwZSkge1xuXHRcdFx0XHQvLyDmnInkv6Hmga8g5L2GIOayoeaciemUmeivr+S/oeaBr1xuXHRcdFx0XHRjYXNlIDA6IFxuXHRcdFx0XHRcdGlmICh0aGlzLmVycm9ySW5mb1ZpZXdTaG93KSB7XG5cdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gZmFsc2Vcblx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxuXHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHRcdFx0XHR0aGlzLmhvbWVWaWV3U2hvdyA9IHRydWVcblx0XHRcdFx0XHRcdFx0dGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxuXHRcdFx0XHRcdFx0fSwxMDAwKVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5pbmZvVmlld1Nob3cpIHtcblx0XHRcdFx0XHRcdHRoaXMuaW5mb1ZpZXdTaG93ID0gZmFsc2Vcblx0XHRcdFx0XHRcdHRoaXMuaW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0XHRcdFx0dGhpcy5ob21lVmlld1Nob3cgPSB0cnVlXG5cdFx0XHRcdFx0XHRcdHRoaXMuaG9tZU1vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdH0sMTAwMClcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgJiYgdGhpcy5pbmZvVmlld1Nob3cpIHtcblx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSBmYWxzZVxuXHRcdFx0XHRcdFx0dGhpcy5pbmZvVmlld1Nob3cgPSBmYWxzZVxuXHRcdFx0XHRcdFx0dGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxuXHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHRcdFx0XHR0aGlzLmhvbWVWaWV3U2hvdyA9IHRydWVcblx0XHRcdFx0XHRcdFx0dGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxuXHRcdFx0XHRcdFx0fSwxMDAwKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdGNhc2UgMTogXG5cdFx0XHRcdFx0aWYgKHRoaXMuaG9tZVZpZXdTaG93KSB7XG5cdFx0XHRcdFx0XHR0aGlzLmhvbWVWaWV3U2hvdyA9IGZhbHNlXG5cdFx0XHRcdFx0XHR0aGlzLmhvbWVNb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXG5cdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdFx0XHRcdHRoaXMuaW5mb1ZpZXdTaG93ID0gdHJ1ZVxuXHRcdFx0XHRcdFx0XHR0aGlzLmluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXG5cdFx0XHRcdFx0XHR9LDEwMDApXG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmVycm9ySW5mb1ZpZXdTaG93KSB7XG5cdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gZmFsc2Vcblx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxuXHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHRcdFx0XHR0aGlzLmluZm9WaWV3U2hvdyA9IHRydWVcblx0XHRcdFx0XHRcdFx0dGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxuXHRcdFx0XHRcdFx0fSwxMDAwKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0Ly8g5pyJ5L+h5oGvIOS4lCDmnInplJnor6/kv6Hmga9cblx0XHRcdFx0Y2FzZSAyOlxuXHRcdFx0XHRcdGlmICh0aGlzLmhvbWVWaWV3U2hvdykge1xuXHRcdFx0XHRcdFx0dGhpcy5ob21lVmlld1Nob3cgPSBmYWxzZVxuXHRcdFx0XHRcdFx0dGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxuXHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gdHJ1ZVxuXHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdH0sMTAwMClcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuaW5mb1ZpZXdTaG93KSB7XG5cdFx0XHRcdFx0XHR0aGlzLmluZm9WaWV3U2hvdyA9IGZhbHNlXG5cdFx0XHRcdFx0XHR0aGlzLmluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXG5cdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSB0cnVlXG5cdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxuXHRcdFx0XHRcdFx0fSwxMDAwKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdC8vIOacieS/oeaBryDkuJQg5pyJ6ZSZ6K+v5L+h5oGvXG5cdFx0XHRcdGNhc2UgMzpcblx0XHRcdFx0XHRpZiAodGhpcy5ob21lVmlld1Nob3cpIHtcblx0XHRcdFx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gZmFsc2Vcblx0XHRcdFx0XHRcdHRoaXMuaG9tZU1vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IHRydWVcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXG5cdFx0XHRcdFx0XHR9LDEwMDApXG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmluZm9WaWV3U2hvdykge1xuXHRcdFx0XHRcdFx0dGhpcy5pbmZvVmlld1Nob3cgPSBmYWxzZVxuXHRcdFx0XHRcdFx0dGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxuXHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gdHJ1ZVxuXHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdH0sMTAwMClcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcblx0XHRcdH1cblx0XHRcdFxuXHRcdH0sXG5cdFx0Ly8g5Li75bGP5bmVXG5cdFx0aGFuZGxlKHR5cGUpIHtcblx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gIXRoaXMuaG9tZVZpZXdTaG93XG5cdFx0XHR0aGlzLm1vZGVDbGFzcyA9IHR5cGVcblx0XHR9LFxuXHRcdC8vIOaLo+aWmVxuXHRcdGhhbmRsZTEodHlwZSkge1xuXHRcdFx0dGhpcy5pbmZvVmlld1Nob3cgPSAhdGhpcy5pbmZvVmlld1Nob3dcblx0XHRcdHRoaXMubW9kZUNsYXNzID0gdHlwZVxuXHRcdH0sXG5cdFx0Ly8g5byC5bi4XG5cdFx0aGFuZGxlMih0eXBlKSB7XG5cdFx0XHR0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gIXRoaXMuZXJyb3JJbmZvVmlld1Nob3dcblx0XHRcdHRoaXMubW9kZUNsYXNzID0gdHlwZVxuXHRcdH0sXG5cdFx0Ly8g6YWN572uXG5cdFx0ZWplY3RlZCAoKSB7XG5cdFx0XHR0aGlzLmVqZWN0U2hvdyA9IHRydWVcblx0XHR9LFxuXHRcdC8vIOWPlua2iOmFjee9rlxuXHRcdGVqZWN0Q2xvc2UoKSB7XG5cdFx0XHR0aGlzLmVqZWN0U2hvdyA9IGZhbHNlXG5cdFx0fSxcblx0XHQvLyDnoa7orqTphY3nva5cblx0XHRlamVjdENvbmZpcm0oKSB7XG5cdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VJcCcsIHRoaXMuYmFzZUlQKTtcblx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZUxlZElkJywgdGhpcy5iYXNlTGVkSWQpO1xuXHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdCYXNlUG9ydCcsdGhpcy5iYXNlUG9ydCk7XG5cdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VDcm5JZCcsdGhpcy5iYXNlQ3JuSWQpO1xuXHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdVUFJPSicsdGhpcy5iYXNlVXJsKTtcblx0XHRcdHRoaXMuZ2V0VXJsKClcblx0XHRcdHRoaXMuZWplY3RTaG93ID0gZmFsc2Vcblx0XHR9LFxuXHRcdC8vIOaXpeWOhiDmnI3liqHlmahcblx0XHRnZXREYXRlMigpIHtcblx0XHRcdGxldCB0aGF0ID0gdGhpc1xuXHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9kYXRlXCIsXG5cdFx0XHRcdG1ldGhvZDpcIkdFVFwiLFxuXHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xuXHRcdFx0XHRcdHZhciByZXMgPSByZXN1bHQuZGF0YS5kYXRhXG5cdFx0XHRcdFx0XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0fSxcblx0XHRcblx0XHQvLyDml6XljoZcblx0XHRnZXREYXRlKCkge1xuXHRcdFx0dmFyIGR0ID0gbmV3IERhdGUoKTtcblx0XHRcdHZhciB5ZWFyLG1vbnRoLGRheSxob3VycyxtaW51dGVzLHNlY29uZHMsd2Vla3Ncblx0XHRcdHllYXIgPSBkdC5nZXRGdWxsWWVhcigpO1xuXHRcdFx0bW9udGggPSAoZHQuZ2V0TW9udGgoKSsxKSA8IDEwID8gJzAnKyAoZHQuZ2V0TW9udGgoKSsxKSA6IChkdC5nZXRNb250aCgpKzEpO1xuXHRcdFx0ZGF5ID0gZHQuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcrZHQuZ2V0RGF0ZSgpIDogZHQuZ2V0RGF0ZSgpO1xuXHRcdFx0aG91cnMgPSBkdC5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkdC5nZXRIb3VycygpIDogZHQuZ2V0SG91cnMoKTtcblx0XHRcdG1pbnV0ZXMgPSBkdC5nZXRNaW51dGVzKCkgPCAxMCA/ICcwJyArIGR0LmdldE1pbnV0ZXMoKSA6IGR0LmdldE1pbnV0ZXMoKTtcblx0XHRcdHNlY29uZHMgPSBkdC5nZXRTZWNvbmRzKCkgPCAxMCA/ICcwJyArIGR0LmdldFNlY29uZHMoKSA6IGR0LmdldFNlY29uZHMoKTsgXG5cdFx0XHR3ZWVrcyA9IGR0LmdldERheSgpOyBcblx0XHRcdHN3aXRjaCAod2Vla3MpIHtcblx0XHRcdFx0Y2FzZSAwOiB3ZWVrcyA9IFwi5pif5pyf5pelXCI7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDE6IHdlZWtzID0gXCLmmJ/mnJ/kuIBcIjsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMjogd2Vla3MgPSBcIuaYn+acn+S6jFwiOyBicmVhaztcblx0XHRcdFx0Y2FzZSAzOiB3ZWVrcyA9IFwi5pif5pyf5LiJXCI7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDQ6IHdlZWtzID0gXCLmmJ/mnJ/lm5tcIjsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgNTogd2Vla3MgPSBcIuaYn+acn+S6lFwiOyBicmVhaztcblx0XHRcdFx0ZGVmYXVsdCA6IHdlZWtzID0gXCLmmJ/mnJ/lha1cIjtcblx0XHRcdH1cblx0XHRcdHRoaXMuY2FsZW5kYXIgPSB5ZWFyICsgXCLlubRcIiArIG1vbnRoICsgXCLmnIhcIiArIGRheSArIFwi5pelIFwiICsgaG91cnMgKyBcIjpcIiArIG1pbnV0ZXMgKyBcIjpcIiArIHNlY29uZHMgKyBcIiBcIiArIHdlZWtzXG5cdFx0fSxcblx0XHRnZXREYXRlRm9ybWF0KHZhbHVlKSB7XG5cdFx0XHR2YXIgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VyckRhdGUpOy8vIOiOt+WPluW9k+WJjeaXtumXtFxuXHRcdFx0ZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgdmFsdWUpOy8vIOiuvue9ruWkqeaVsCAtMSDlpKlcblx0XHRcdHZhciBtID0gZGF0ZS5nZXRNb250aCgpICsgMVxuXHRcdFx0dmFyIGQgPSBkYXRlLmdldERhdGUoKVxuXHRcdFx0dmFyIG5ld0RhdGUgPSBtICsgJy0nICsgZFxuXHRcdFx0cmV0dXJuIG5ld0RhdGVcblx0XHR9LFxuXHRcdC8qKioqKioqKioqKioqKiog5oqY57q/5Zu+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXHRcdGluaXRsaW5lQ2hhcnQoKSB7XG5cdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbGluZS9jaGFydHNcIixcblx0XHRcdFx0bWV0aG9kOidHRVQnLFxuXHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xuXHRcdFx0XHRcdHZhciByZXMgPSByZXN1bHQuZGF0YVxuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0fSxcblx0XHQvKioqKioqKioqKioqKioqIOmlvOWbviAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblx0XHRpbml0UGllQ2hhcnQoKSB7XG5cdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbG9jL3JlcFwiLFxuXHRcdFx0XHRtZXRob2Q6J0dFVCcsXG5cdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XG5cdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXG5cdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdHRoYXQuY2hhcnRzRGF0YS5QaWUuc2VyaWVzWzBdLmRhdGEgPSByZXMuZGF0YS5waWVcblx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8uc3RvY2tDb3VudCA9IHJlcy5kYXRhLnN0b2NrQ3VudFxuXHRcdFx0XHRcdFx0dGhhdC5iYXNlSW5mby5lbXB0eUNvdW50ID0gcmVzLmRhdGEuZW1wdHlDb3VudFxuXHRcdFx0XHRcdFx0dGhhdC5iYXNlSW5mby5ub25lQ291bnQgPSByZXMuZGF0YS5ub25lQ291bnRcblx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8udXNlZCA9IHJlcy5kYXRhLnVzZWRcblx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8udXNlZFByID0gcmVzLmRhdGEudXNlZFByXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0sXG5cdFx0Z2V0T3RoZXIoKSB7XG5cdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3Ivb3RoZXJcIixcblx0XHRcdFx0ZGF0YToge1xuXHRcdFx0XHRcdGNybklkOiB0aGF0LmJhc2VDcm5JZCwgXG5cdFx0XHRcdFx0bGVkSWQ6IHRoYXQuYmFzZUxlZElkLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlc3VsdCk7XG5cdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXG5cdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8ueERpc3RhbmNlID0gcmVzLmRhdGEueERpc3RhbmNlXG5cdFx0XHRcdFx0XHR0aGF0LmJhc2VJbmZvLnlEaXN0YW5jZSA9IHJlcy5kYXRhLnlEaXN0YW5jZVxuXHRcdFx0XHRcdFx0dGhhdC5iYXNlSW5mby54RHVyYXRpb24gPSByZXMuZGF0YS54RHVyYXRpb25cblx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8ueUR1cmF0aW9uID0gcmVzLmRhdGEueUR1cmF0aW9uXG5cdFx0XHRcdFx0fSBlbHNlIGlmIChyZXMuY29kZSA9PT0gNDAzKSB7XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0sXG5cdH1cblx0XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///101\n");
/***/ }),
/* 102 */
@@ -12607,7 +12580,7 @@
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.WebSocketClient = void 0;\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 23));\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 24));\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ 81));\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ 83));\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ 85));\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ 86));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\nvar _dispatcher = __webpack_require__(/*! ./dispatcher */ 105);\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar WebSocketClient = /*#__PURE__*/function (_EventDispatcher) {\n  (0, _inherits2.default)(WebSocketClient, _EventDispatcher);\n  var _super = _createSuper(WebSocketClient);\n  // #socket链接\n\n  // #socket实例\n\n  // #重连次数\n\n  // #最大重连数\n\n  // #重连间隔\n  // 10 seconds\n  // #发送心跳数据间隔\n\n  // #计时器id\n\n  // #彻底终止ws\n\n  // *构造函数\n  function WebSocketClient(url) {\n    var _this;\n    (0, _classCallCheck2.default)(this, WebSocketClient);\n    _this = _super.call(this);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"url\", '');\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"socket\", null);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"reconnectAttempts\", 0);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"maxReconnectAttempts\", 5);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"reconnectInterval\", 10000);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"heartbeatInterval\", 1000 * 30);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"heartbeatTimer\", undefined);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"stopWs\", false);\n    _this.url = url;\n    return _this;\n  }\n  // >生命周期钩子\n  (0, _createClass2.default)(WebSocketClient, [{\n    key: \"onopen\",\n    value: function onopen(callBack) {\n      this.addEventListener('open', callBack);\n    }\n  }, {\n    key: \"onmessage\",\n    value: function onmessage(callBack) {\n      this.addEventListener('message', callBack);\n    }\n  }, {\n    key: \"onclose\",\n    value: function onclose(callBack) {\n      this.addEventListener('close', callBack);\n    }\n  }, {\n    key: \"onerror\",\n    value: function onerror(callBack) {\n      this.addEventListener('error', callBack);\n    }\n    // >消息发送\n  }, {\n    key: \"send\",\n    value: function send(message) {\n      if (this.socket && this.socket.readyState === WebSocket.OPEN) {\n        this.socket.send({\n          data: message\n        });\n      } else {\n        __f__(\"error\", '[WebSocket] 未连接', \" at static/js/WebSocketClient.js:45\");\n      }\n    }\n\n    // !初始化连接\n  }, {\n    key: \"connect\",\n    value: function connect() {\n      var _this2 = this;\n      if (this.reconnectAttempts === 0) {\n        this.log('WebSocket', \"\\u521D\\u59CB\\u5316\\u8FDE\\u63A5\\u4E2D...          \".concat(this.url));\n      }\n      if (this.socket && this.socket.readyState === WebSocket.OPEN) {\n        return;\n      }\n      this.socket = uni.connectSocket({\n        url: this.url,\n        complete: function complete() {}\n      });\n      this.socket.onOpen(function (event) {\n        __f__(\"log\", \"123\", \" at static/js/WebSocketClient.js:62\");\n        _this2.stopWs = false;\n        // 重置重连尝试成功连接\n        _this2.reconnectAttempts = 0;\n        // 在连接成功时停止当前的心跳检测并重新启动\n        _this2.startHeartbeat();\n        _this2.log('WebSocket', \"\\u8FDE\\u63A5\\u6210\\u529F,\\u7B49\\u5F85\\u670D\\u52A1\\u7AEF\\u6570\\u636E\\u63A8\\u9001[onopen]...     \".concat(_this2.url));\n        _this2.dispatchEvent('open', event);\n      });\n      // !websocket连接成功\n      // this.socket.onOpen = event => {\t\t\t\n      //     this.stopWs = false;\n      //     // 重置重连尝试成功连接\n      //     this.reconnectAttempts = 0;\n      //     // 在连接成功时停止当前的心跳检测并重新启动\n      //     this.startHeartbeat();\t\t\t\n      //     this.log('WebSocket', `连接成功,等待服务端数据推送[onopen]...     ${this.url}`);\n      //     this.dispatchEvent('open', event);\n      // };\n      this.socket.onMessage(function (event) {\n        _this2.dispatchEvent('message', event);\n        _this2.startHeartbeat();\n      });\n      //      this.socket.onMessage = event => {\n      // console.log(event)\n      // this.dispatchEvent('message', event);\n      // this.startHeartbeat();\n      //      };\n      this.socket.onClose(function (event) {\n        if (_this2.reconnectAttempts === 0) {\n          _this2.log('WebSocket', \"\\u8FDE\\u63A5\\u65AD\\u5F00[onclose]...    \".concat(_this2.url));\n        }\n        if (!_this2.stopWs) {\n          _this2.handleReconnect();\n        }\n        _this2.dispatchEvent('close', event);\n      });\n      // this.socket.onClose = event => {\n      //     if (this.reconnectAttempts === 0) {\n      //         this.log('WebSocket', `连接断开[onclose]...    ${this.url}`);\n      //     }\n      //     if (!this.stopWs) {\n      //         this.handleReconnect();\n      //     }\n      //     this.dispatchEvent('close', event);\n      // };\n      this.socket.onError(function (event) {\n        if (_this2.reconnectAttempts === 0) {\n          _this2.log('WebSocket', \"\\u8FDE\\u63A5\\u5F02\\u5E38[onerror]...    \".concat(_this2.url));\n        }\n        if (!_this2.stopWs) {\n          _this2.handleReconnect();\n        }\n        _this2.closeHeartbeat();\n        _this2.dispatchEvent('error', event);\n      });\n\n      // uni.onSocketError((event)=>{\n      // \tconsole.log(\"333\")\n      // \tif (this.reconnectAttempts === 0) {\n      // \t    this.log('WebSocket', `连接异常[onerror]...    ${this.url}`);\n      // \t}\n      // \tif (!this.stopWs) {\n      // \t    this.handleReconnect();\n      // \t}\n      // \tthis.closeHeartbeat();\n      // \tthis.dispatchEvent('error', event);\n      // })\n      // this.socket.onError = event => {\n      //     if (this.reconnectAttempts === 0) {\n      //         this.log('WebSocket', `连接异常[onerror]...    ${this.url}`);\n      //     }\n      //     this.closeHeartbeat();\n      //     this.dispatchEvent('error', event);\n      // };\n    }\n\n    // > 断网重连逻辑\n  }, {\n    key: \"handleReconnect\",\n    value: function handleReconnect() {\n      var _this3 = this;\n      if (this.reconnectAttempts < this.maxReconnectAttempts) {\n        this.reconnectAttempts++;\n        this.log('WebSocket', \"\\u5C1D\\u8BD5\\u91CD\\u8FDE... (\".concat(this.reconnectAttempts, \"/\").concat(this.maxReconnectAttempts, \")       \").concat(this.url));\n        setTimeout(function () {\n          _this3.connect();\n        }, this.reconnectInterval);\n      } else {\n        this.closeHeartbeat();\n        this.log('WebSocket', \"\\u6700\\u5927\\u91CD\\u8FDE\\u5931\\u8D25\\uFF0C\\u7EC8\\u6B62\\u91CD\\u8FDE: \".concat(this.url));\n      }\n    }\n\n    // >关闭连接\n  }, {\n    key: \"close\",\n    value: function close() {\n      if (this.socket) {\n        this.stopWs = true;\n        this.socket.close();\n        this.socket = null;\n        this.removeEventListener('open');\n        this.removeEventListener('message');\n        this.removeEventListener('close');\n        this.removeEventListener('error');\n      }\n      this.closeHeartbeat();\n    }\n\n    // >开始心跳检测 -> 定时发送心跳消息\n  }, {\n    key: \"startHeartbeat\",\n    value: function startHeartbeat() {\n      var _this4 = this;\n      if (this.stopWs) return;\n      if (this.heartbeatTimer) {\n        this.closeHeartbeat();\n      }\n      this.heartbeatTimer = setInterval(function () {\n        if (_this4.socket) {\n          _this4.socket.send({\n            data: JSON.stringify({\n              type: 'heartBeat',\n              data: {}\n            })\n          });\n          _this4.log('WebSocket', '送心跳数据...');\n        } else {\n          __f__(\"error\", '[WebSocket] 未连接', \" at static/js/WebSocketClient.js:181\");\n        }\n      }, this.heartbeatInterval);\n    }\n\n    // >关闭心跳\n  }, {\n    key: \"closeHeartbeat\",\n    value: function closeHeartbeat() {\n      clearInterval(this.heartbeatTimer);\n      this.heartbeatTimer = undefined;\n    }\n  }]);\n  return WebSocketClient;\n}(_dispatcher.EventDispatcher);\nexports.WebSocketClient = WebSocketClient;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RhdGljL2pzL1dlYlNvY2tldENsaWVudC5qcyJdLCJuYW1lcyI6WyJXZWJTb2NrZXRDbGllbnQiLCJ1cmwiLCJ1bmRlZmluZWQiLCJjYWxsQmFjayIsImFkZEV2ZW50TGlzdGVuZXIiLCJtZXNzYWdlIiwic29ja2V0IiwicmVhZHlTdGF0ZSIsIldlYlNvY2tldCIsIk9QRU4iLCJzZW5kIiwiZGF0YSIsInJlY29ubmVjdEF0dGVtcHRzIiwibG9nIiwidW5pIiwiY29ubmVjdFNvY2tldCIsImNvbXBsZXRlIiwib25PcGVuIiwiZXZlbnQiLCJzdG9wV3MiLCJzdGFydEhlYXJ0YmVhdCIsImRpc3BhdGNoRXZlbnQiLCJvbk1lc3NhZ2UiLCJvbkNsb3NlIiwiaGFuZGxlUmVjb25uZWN0Iiwib25FcnJvciIsImNsb3NlSGVhcnRiZWF0IiwibWF4UmVjb25uZWN0QXR0ZW1wdHMiLCJzZXRUaW1lb3V0IiwiY29ubmVjdCIsInJlY29ubmVjdEludGVydmFsIiwiY2xvc2UiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGVhcnRiZWF0VGltZXIiLCJzZXRJbnRlcnZhbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0eXBlIiwiaGVhcnRiZWF0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwiRXZlbnREaXNwYXRjaGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQStDO0FBQUE7QUFBQSxJQUVsQ0EsZUFBZTtFQUFBO0VBQUE7RUFDeEI7O0VBRUE7O0VBRUE7O0VBRUE7O0VBRUE7RUFDMkI7RUFDM0I7O0VBRUE7O0VBRUE7O0VBRUE7RUFDQSx5QkFBWUMsR0FBRyxFQUFFO0lBQUE7SUFBQTtJQUNiO0lBQVEsa0ZBakJOLEVBQUU7SUFBQSxxRkFFQyxJQUFJO0lBQUEsZ0dBRU8sQ0FBQztJQUFBLG1HQUVFLENBQUM7SUFBQSxnR0FFSixLQUFLO0lBQUEsZ0dBRUwsSUFBSSxHQUFHLEVBQUU7SUFBQSw2RkFFWkMsU0FBUztJQUFBLHFGQUVq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T0FDQSwwQkFBaUI7TUFDYkMsYUFBYSxDQUFDLElBQUksQ0FBQ04sY0FBYyxDQUFDO01BQ2xDLElBQUksQ0FBQ0EsY0FBYyxHQUFHL0IsU0FBUztJQUNuQztFQUFDO0VBQUE7QUFBQSxFQTNMZ0NzQywyQkFBZTtBQUFBLDBDIiwiZmlsZSI6IjEwNC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlciB9IGZyb20gJy4vZGlzcGF0Y2hlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0Q2xpZW50IGV4dGVuZHMgRXZlbnREaXNwYXRjaGVyIHtcclxuICAgIC8vICNzb2NrZXTpk77mjqVcclxuICAgIHVybCA9ICcnO1xyXG4gICAgLy8gI3NvY2tldOWunuS+i1xyXG4gICAgc29ja2V0ID0gbnVsbDtcclxuICAgIC8vICPph43ov57mrKHmlbBcclxuICAgIHJlY29ubmVjdEF0dGVtcHRzID0gMDtcclxuICAgIC8vICPmnIDlpKfph43ov57mlbBcclxuICAgIG1heFJlY29ubmVjdEF0dGVtcHRzID0gNTtcclxuICAgIC8vICPph43ov57pl7TpmpRcclxuICAgIHJlY29ubmVjdEludGVydmFsID0gMTAwMDA7IC8vIDEwIHNlY29uZHNcclxuICAgIC8vICPlj5HpgIHlv4Pot7PmlbDmja7pl7TpmpRcclxuICAgIGhlYXJ0YmVhdEludGVydmFsID0gMTAwMCAqIDMwO1xyXG4gICAgLy8gI+iuoeaXtuWZqGlkXHJcbiAgICBoZWFydGJlYXRUaW1lciA9IHVuZGVmaW5lZDtcclxuICAgIC8vICPlvbvlupXnu4jmraJ3c1xyXG4gICAgc3RvcFdzID0gZmFsc2U7XHJcbiAgICAvLyAq5p6E6YCg5Ye95pWwXHJcbiAgICBjb25zdHJ1Y3Rvcih1cmwpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMudXJsID0gdXJsO1xyXG4gICAgfVxyXG4gICAgLy8gPueUn+WRveWRqOacn+mSqeWtkFxyXG4gICAgb25vcGVuKGNhbGxCYWNrKSB7XHJcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdvcGVuJywgY2FsbEJhY2spO1xyXG4gICAgfVxyXG4gICAgb25tZXNzYWdlKGNhbGxCYWNrKSB7XHJcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgY2FsbEJhY2spO1xyXG4gICAgfVxyXG4gICAgb25jbG9zZShjYWxsQmFjaykge1xyXG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignY2xvc2UnLCBjYWxsQmFjayk7XHJcbiAgICB9XHJcbiAgICBvbmVycm9yKGNhbGxCYWNrKSB7XHJcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGNhbGxCYWNrKTtcclxuICAgIH1cclxuICAgIC8vID7mtojmga/lj5HpgIFcclxuICAgIHNlbmQobWVzc2FnZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnNvY2tldCAmJiB0aGlzLnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xyXG4gICAgICAgICAgICB0aGlzLnNvY2tldC5zZW5kKHtcclxuXHRcdFx0XHRkYXRhOm1lc3NhZ2UsXHRcdFx0XHRcclxuXHRcdFx0fSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1dlYlNvY2tldF0g5pyq6L+e5o6lJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vICHliJ3lp4vljJbov57mjqVcclxuICAgIGNvbm5lY3QoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVjb25uZWN0QXR0ZW1wdHMgPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5sb2coJ1dlYlNvY2tldCcsIGDliJ3lp4vljJbov57mjqXkuK0uLi4gICAgICAgICAgJHt0aGlzLnVybH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc29ja2V0ICYmIHRoaXMuc29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zb2NrZXQgPSB1bmkuY29ubmVjdFNvY2tldCh7XHJcblx0XHRcdHVybDogdGhpcy51cmwsXHJcblx0XHRcdGNvbXBsZXRlOiAoKT0+IHt9XHJcblx0XHR9KTtcclxuXHRcdHRoaXMuc29ja2V0Lm9uT3BlbigoZXZlbnQpPT57XHJcblx0XHRcdGNvbnNvbGUubG9nKFwiMTIzXCIpXHJcblx0XHRcdHRoaXMuc3RvcFdzID0gZmFsc2U7XHJcblx0XHRcdC8vIOmHjee9rumHjei/nuWwneivleaIkOWKn+i/nuaOpVxyXG5cdFx0XHR0aGlzLnJlY29ubmVjdEF0dGVtcHRzID0gMDtcclxuXHRcdFx0Ly8g5Zyo6L+e5o6l5oiQ5Yqf5pe25YGc5q2i5b2T5YmN55qE5b+D6Lez5qOA5rWL5bm26YeN5paw5ZCv5YqoXHJcblx0XHRcdHRoaXMuc3RhcnRIZWFydGJlYXQoKTtcdFx0XHRcclxuXHRcdFx0dGhpcy5sb2coJ1dlYlNvY2tldCcsIGDov57mjqXmiJDlip8s562J5b6F5pyN5Yqh56uv5pWw5o2u5o6o6YCBW29ub3Blbl0uLi4gICAgICR7dGhpcy51cmx9YCk7XHJcblx0XHRcdHRoaXMuZGlzcGF0Y2hFdmVudCgnb3BlbicsIGV2ZW50KTtcclxuXHRcdH0pXHJcbiAgICAgICAgLy8gIXdlYnNvY2tldOi/nuaOpeaIkOWKn1xyXG4gICAgICAgIC8vIHRoaXMuc29ja2V0Lm9uT3BlbiA9IGV2ZW50ID0+IHtcdFx0XHRcclxuICAgICAgICAvLyAgICAgdGhpcy5zdG9wV3MgPSBmYWxzZTtcclxuICAgICAgICAvLyAgICAgLy8g6YeN572u6YeN6L+e5bCd6K+V5oiQ5Yqf6L+e5o6lXHJcbiAgICAgICAgLy8gICAgIHRoaXMucmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xyXG4gICAgICAgIC8vICAgICAvLyDlnKjov57mjqXmiJDlip/ml7blgZzmraLlvZPliY3nmoTlv4Pot7Pmo4DmtYvlubbph43mlrDlkK/liqhcclxuICAgICAgICAvLyAgICAgdGhpcy5zdGFydEhlYXJ0YmVhdCgpO1x0XHRcdFxyXG4gICAgICAgIC8vICAgICB0aGlzLmxvZygnV2ViU29ja2V0JywgYOi/nuaOpeaIkOWKnyznrYnlvoXmnI3liqHnq6/mlbDmja7mjqjpgIFbb25vcGVuXS4uLiAgICAgJHt0aGlzLnVybH1gKTtcclxuICAgICAgICAvLyAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KCdvcGVuJywgZXZlbnQpO1xyXG4gICAgICAgIC8vIH07XHJcblx0XHR0aGlzLnNvY2tldC5vbk1lc3NhZ2UoKGV2ZW50KT0+e1xyXG5cdFx0XHR0aGlzLmRpc3BhdGNoRXZlbnQoJ21lc3NhZ2UnLCBldmVudCk7XHJcblx0XHRcdHRoaXMuc3RhcnRIZWFydGJlYXQoKTtcclxuXHRcdH0pXHJcbiAgIC8vICAgICAgdGhpcy5zb2NrZXQub25NZXNzYWdlID0gZXZlbnQgPT4ge1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhldmVudClcclxuICAgICAgICAgICAvLyB0aGlzLmRpc3BhdGNoRXZlbnQoJ21lc3NhZ2UnLCBldmVudCk7XHJcbiAgICAgICAgICAgLy8gdGhpcy5zdGFydEhlYXJ0YmVhdCgpO1xyXG4gICAvLyAgICAgIH07XHJcblx0XHR0aGlzLnNvY2tldC5vbkNsb3NlKChldmVudCk9PntcclxuXHRcdFx0aWYgKHRoaXMucmVjb25uZWN0QXR0ZW1wdHMgPT09IDApIHtcclxuXHRcdFx0ICAgIHRoaXMubG9nKCdXZWJTb2NrZXQnLCBg6L+e5o6l5pat5byAW29uY2xvc2VdLi4uICAgICR7dGhpcy51cmx9YCk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKCF0aGlzLnN0b3BXcykge1xyXG5cdFx0XHQgICAgdGhpcy5oYW5kbGVSZWNvbm5lY3QoKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmRpc3BhdGNoRXZlbnQoJ2Nsb3NlJywgZXZlbnQpO1xyXG5cdFx0fSlcclxuICAgICAgICAvLyB0aGlzLnNvY2tldC5vbkNsb3NlID0gZXZlbnQgPT4ge1xyXG4gICAgICAgIC8vICAgICBpZiAodGhpcy5yZWNvbm5lY3RBdHRlbXB0cyA9PT0gMCkge1xyXG4gICAgICAgIC8vICAgICAgICAgdGhpcy5sb2coJ1dlYlNvY2tldCcsIGDov57mjqXmlq3lvIBbb25jbG9zZV0uLi4gICAgJHt0aGlzLnVybH1gKTtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgICBpZiAoIXRoaXMuc3RvcFdzKSB7XHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLmhhbmRsZVJlY29ubmVjdCgpO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgnY2xvc2UnLCBldmVudCk7XHJcbiAgICAgICAgLy8gfTtcclxuXHRcdHRoaXMuc29ja2V0Lm9uRXJyb3IoKGV2ZW50KT0+e1xyXG5cdFx0XHRpZiAodGhpcy5yZWNvbm5lY3RBdHRlbXB0cyA9PT0gMCkge1xyXG5cdFx0XHQgICAgdGhpcy5sb2coJ1dlYlNvY2tldCcsIGDov57mjqXlvILluLhbb25lcnJvcl0uLi4gICAgJHt0aGlzLnVybH1gKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoIXRoaXMuc3RvcFdzKSB7XHJcblx0XHRcdCAgICB0aGlzLmhhbmRsZVJlY29ubmVjdCgpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuY2xvc2VIZWFydGJlYXQoKTtcclxuXHRcdFx0dGhpcy5kaXNwYXRjaEV2ZW50KCdlcnJvcicsIGV2ZW50KTtcclxuXHRcdH0pXHJcblx0XHRcclxuXHRcdC8vIHVuaS5vblNvY2tldEVycm9yKChldmVudCk9PntcclxuXHRcdC8vIFx0Y29uc29sZS5sb2coXCIzMzNcIilcclxuXHRcdC8vIFx0aWYgKHRoaXMucmVjb25uZWN0QXR0ZW1wdHMgPT09IDApIHtcclxuXHRcdC8vIFx0ICAgIHRoaXMubG9nKCdXZWJTb2NrZXQnLCBg6L+e5o6l5byC5bi4W29uZXJyb3JdLi4uICAgICR7dGhpcy51cmx9YCk7XHJcblx0XHQvLyBcdH1cclxuXHRcdC8vIFx0aWYgKCF0aGlzLnN0b3BXcykge1xyXG5cdFx0Ly8gXHQgICAgdGhpcy5oYW5kbGVSZWNvbm5lY3QoKTtcclxuXHRcdC8vIFx0fVxyXG5cdFx0Ly8gXHR0aGlzLmNsb3NlSGVhcnRiZWF0KCk7XHJcblx0XHQvLyBcdHRoaXMuZGlzcGF0Y2hFdmVudCgnZXJyb3InLCBldmVudCk7XHJcblx0XHQvLyB9KVxyXG4gICAgICAgIC8vIHRoaXMuc29ja2V0Lm9uRXJyb3IgPSBldmVudCA9PiB7XHJcbiAgICAgICAgLy8gICAgIGlmICh0aGlzLnJlY29ubmVjdEF0dGVtcHRzID09PSAwKSB7XHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLmxvZygnV2ViU29ja2V0JywgYOi/nuaOpeW8guW4uFtvbmVycm9yXS4uLiAgICAke3RoaXMudXJsfWApO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICAgIHRoaXMuY2xvc2VIZWFydGJlYXQoKTtcclxuICAgICAgICAvLyAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KCdlcnJvcicsIGV2ZW50KTtcclxuICAgICAgICAvLyB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vID4g5pat572R6YeN6L+e6YC76L6RXHJcbiAgICBoYW5kbGVSZWNvbm5lY3QoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVjb25uZWN0QXR0ZW1wdHMgPCB0aGlzLm1heFJlY29ubmVjdEF0dGVtcHRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25uZWN0QXR0ZW1wdHMrKztcclxuICAgICAgICAgICAgdGhpcy5sb2coJ1dlYlNvY2tldCcsIGDlsJ3or5Xph43ov54uLi4gKCR7dGhpcy5yZWNvbm5lY3RBdHRlbXB0c30vJHt0aGlzLm1heFJlY29ubmVjdEF0dGVtcHRzfSkgICAgICAgJHt0aGlzLnVybH1gKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3QoKTtcclxuICAgICAgICAgICAgfSwgdGhpcy5yZWNvbm5lY3RJbnRlcnZhbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZUhlYXJ0YmVhdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmxvZygnV2ViU29ja2V0JywgYOacgOWkp+mHjei/nuWksei0pe+8jOe7iOatoumHjei/njogJHt0aGlzLnVybH1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gPuWFs+mXrei/nuaOpVxyXG4gICAgY2xvc2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc29ja2V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcFdzID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zb2NrZXQuY2xvc2UoKTtcclxuICAgICAgICAgICAgdGhpcy5zb2NrZXQgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ29wZW4nKTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xvc2UnKTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNsb3NlSGVhcnRiZWF0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gPuW8gOWni+W/g+i3s+ajgOa1iyAtPiDlrprml7blj5HpgIHlv4Pot7Pmtojmga9cclxuICAgIHN0YXJ0SGVhcnRiZWF0KCkge1x0XHRcclxuICAgICAgICBpZiAodGhpcy5zdG9wV3MpIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5oZWFydGJlYXRUaW1lcikge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlSGVhcnRiZWF0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaGVhcnRiZWF0VGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNvY2tldCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zb2NrZXQuc2VuZCh7XHJcbiAgICAgICAgICAgICAgICBcdGRhdGE6IEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ2hlYXJ0QmVhdCcsIGRhdGE6IHt9IH0pLFxyXG4gICAgICAgICAgICAgICAgXHRcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coJ1dlYlNvY2tldCcsICfpgIHlv4Pot7PmlbDmja4uLi4nKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tXZWJTb2NrZXRdIOacqui/nuaOpScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgdGhpcy5oZWFydGJlYXRJbnRlcnZhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gPuWFs+mXreW/g+i3s1xyXG4gICAgY2xvc2VIZWFydGJlYXQoKSB7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmhlYXJ0YmVhdFRpbWVyKTtcclxuICAgICAgICB0aGlzLmhlYXJ0YmVhdFRpbWVyID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///104\n");
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.WebSocketClient = void 0;\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 23));\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 24));\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ 81));\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ 83));\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ 85));\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ 86));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\nvar _dispatcher = __webpack_require__(/*! ./dispatcher */ 105);\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar WebSocketClient = /*#__PURE__*/function (_EventDispatcher) {\n  (0, _inherits2.default)(WebSocketClient, _EventDispatcher);\n  var _super = _createSuper(WebSocketClient);\n  // #socket链接\n\n  // #socket实例\n\n  // #重连次数\n\n  // #最大重连数\n\n  // #重连间隔\n  // 10 seconds\n  // #发送心跳数据间隔\n\n  // #计时器id\n\n  // #彻底终止ws\n\n  // *构造函数\n  function WebSocketClient(url) {\n    var _this;\n    (0, _classCallCheck2.default)(this, WebSocketClient);\n    _this = _super.call(this);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"url\", '');\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"socket\", null);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"reconnectAttempts\", 0);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"maxReconnectAttempts\", 5);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"reconnectInterval\", 1000 * 10);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"heartbeatInterval\", 1000 * 30);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"heartbeatTimer\", undefined);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"stopWs\", false);\n    _this.url = url;\n    return _this;\n  }\n  // >生命周期钩子\n  (0, _createClass2.default)(WebSocketClient, [{\n    key: \"onopen\",\n    value: function onopen(callBack) {\n      this.addEventListener('open', callBack);\n    }\n  }, {\n    key: \"onmessage\",\n    value: function onmessage(callBack) {\n      this.addEventListener('message', callBack);\n    }\n  }, {\n    key: \"onclose\",\n    value: function onclose(callBack) {\n      this.addEventListener('close', callBack);\n    }\n  }, {\n    key: \"onerror\",\n    value: function onerror(callBack) {\n      this.addEventListener('error', callBack);\n    }\n    // >消息发送\n  }, {\n    key: \"send\",\n    value: function send(message) {\n      if (this.socket && this.socket.readyState === WebSocket.OPEN) {\n        this.socket.send({\n          data: message\n        });\n      } else {\n        __f__(\"error\", '[WebSocket] 未连接', \" at static/js/WebSocketClient.js:45\");\n      }\n    }\n\n    // !初始化连接\n  }, {\n    key: \"connect\",\n    value: function connect() {\n      var _this2 = this;\n      if (this.reconnectAttempts === 0) {\n        this.log('WebSocket', \"\\u521D\\u59CB\\u5316\\u8FDE\\u63A5\\u4E2D...          \".concat(this.url));\n      }\n      if (this.socket && this.socket.readyState === WebSocket.OPEN) {\n        return;\n      }\n      this.socket = uni.connectSocket({\n        url: this.url,\n        complete: function complete() {}\n      });\n      this.socket.onOpen(function (event) {\n        _this2.stopWs = false;\n        // 重置重连尝试成功连接\n        _this2.reconnectAttempts = 0;\n        // 在连接成功时停止当前的心跳检测并重新启动\n        _this2.startHeartbeat();\n        _this2.log('WebSocket', \"\\u8FDE\\u63A5\\u6210\\u529F,\\u7B49\\u5F85\\u670D\\u52A1\\u7AEF\\u6570\\u636E\\u63A8\\u9001[onopen]...     \".concat(_this2.url));\n        _this2.dispatchEvent('open', event);\n      });\n      // !websocket连接成功\n      // this.socket.onOpen = event => {\t\t\t\n      //     this.stopWs = false;\n      //     // 重置重连尝试成功连接\n      //     this.reconnectAttempts = 0;\n      //     // 在连接成功时停止当前的心跳检测并重新启动\n      //     this.startHeartbeat();\t\t\t\n      //     this.log('WebSocket', `连接成功,等待服务端数据推送[onopen]...     ${this.url}`);\n      //     this.dispatchEvent('open', event);\n      // };\n      this.socket.onMessage(function (event) {\n        _this2.dispatchEvent('message', event);\n        _this2.startHeartbeat();\n      });\n      //      this.socket.onMessage = event => {\n      // console.log(event)\n      // this.dispatchEvent('message', event);\n      // this.startHeartbeat();\n      //      };\n      this.socket.onClose(function (event) {\n        if (_this2.reconnectAttempts === 0) {\n          _this2.log('WebSocket', \"\\u8FDE\\u63A5\\u65AD\\u5F00[onclose]...    \".concat(_this2.url));\n        }\n        if (!_this2.stopWs) {\n          _this2.handleReconnect();\n        }\n        _this2.dispatchEvent('close', event);\n      });\n      // this.socket.onClose = event => {\n      //     if (this.reconnectAttempts === 0) {\n      //         this.log('WebSocket', `连接断开[onclose]...    ${this.url}`);\n      //     }\n      //     if (!this.stopWs) {\n      //         this.handleReconnect();\n      //     }\n      //     this.dispatchEvent('close', event);\n      // };\n      this.socket.onError(function (event) {\n        if (_this2.reconnectAttempts === 0) {\n          _this2.log('WebSocket', \"\\u8FDE\\u63A5\\u5F02\\u5E38[onerror]...    \".concat(_this2.url));\n        }\n        if (!_this2.stopWs) {\n          _this2.handleReconnect();\n        }\n        _this2.closeHeartbeat();\n        _this2.dispatchEvent('error', event);\n      });\n\n      // uni.onSocketError((event)=>{\n      // \tconsole.log(\"333\")\n      // \tif (this.reconnectAttempts === 0) {\n      // \t    this.log('WebSocket', `连接异常[onerror]...    ${this.url}`);\n      // \t}\n      // \tif (!this.stopWs) {\n      // \t    this.handleReconnect();\n      // \t}\n      // \tthis.closeHeartbeat();\n      // \tthis.dispatchEvent('error', event);\n      // })\n      // this.socket.onError = event => {\n      //     if (this.reconnectAttempts === 0) {\n      //         this.log('WebSocket', `连接异常[onerror]...    ${this.url}`);\n      //     }\n      //     this.closeHeartbeat();\n      //     this.dispatchEvent('error', event);\n      // };\n    }\n\n    // > 断网重连逻辑\n  }, {\n    key: \"handleReconnect\",\n    value: function handleReconnect() {\n      var _this3 = this;\n      if (this.reconnectAttempts < this.maxReconnectAttempts) {\n        this.reconnectAttempts++;\n        this.log('WebSocket', \"\\u5C1D\\u8BD5\\u91CD\\u8FDE... (\".concat(this.reconnectAttempts, \"/\").concat(this.maxReconnectAttempts, \")       \").concat(this.url));\n        setTimeout(function () {\n          _this3.connect();\n        }, this.reconnectInterval);\n      } else {\n        plus.runtime.restart();\n        // this.closeHeartbeat();\n        // this.log('WebSocket', `最大重连失败,终止重连: ${this.url}`);\n      }\n    }\n\n    // >关闭连接\n  }, {\n    key: \"close\",\n    value: function close() {\n      if (this.socket) {\n        this.stopWs = true;\n        this.socket.close();\n        this.socket = null;\n        this.removeEventListener('open');\n        this.removeEventListener('message');\n        this.removeEventListener('close');\n        this.removeEventListener('error');\n      }\n      this.closeHeartbeat();\n    }\n\n    // >开始心跳检测 -> 定时发送心跳消息\n  }, {\n    key: \"startHeartbeat\",\n    value: function startHeartbeat() {\n      var _this4 = this;\n      if (this.stopWs) return;\n      if (this.heartbeatTimer) {\n        this.closeHeartbeat();\n      }\n      this.heartbeatTimer = setInterval(function () {\n        if (_this4.socket) {\n          _this4.socket.send({\n            data: JSON.stringify({\n              type: 'heartBeat',\n              data: {}\n            })\n          });\n          _this4.log('WebSocket', '送心跳数据...');\n        } else {\n          __f__(\"error\", '[WebSocket] 未连接', \" at static/js/WebSocketClient.js:181\");\n        }\n      }, this.heartbeatInterval);\n    }\n\n    // >关闭心跳\n  }, {\n    key: \"closeHeartbeat\",\n    value: function closeHeartbeat() {\n      clearInterval(this.heartbeatTimer);\n      this.heartbeatTimer = undefined;\n    }\n  }]);\n  return WebSocketClient;\n}(_dispatcher.EventDispatcher);\nexports.WebSocketClient = WebSocketClient;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RhdGljL2pzL1dlYlNvY2tldENsaWVudC5qcyJdLCJuYW1lcyI6WyJXZWJTb2NrZXRDbGllbnQiLCJ1cmwiLCJ1bmRlZmluZWQiLCJjYWxsQmFjayIsImFkZEV2ZW50TGlzdGVuZXIiLCJtZXNzYWdlIiwic29ja2V0IiwicmVhZHlTdGF0ZSIsIldlYlNvY2tldCIsIk9QRU4iLCJzZW5kIiwiZGF0YSIsInJlY29ubmVjdEF0dGVtcHRzIiwibG9nIiwidW5pIiwiY29ubmVjdFNvY2tldCIsImNvbXBsZXRlIiwib25PcGVuIiwiZXZlbnQiLCJzdG9wV3MiLCJzdGFydEhlYXJ0YmVhdCIsImRpc3BhdGNoRXZlbnQiLCJvbk1lc3NhZ2UiLCJvbkNsb3NlIiwiaGFuZGxlUmVjb25uZWN0Iiwib25FcnJvciIsImNsb3NlSGVhcnRiZWF0IiwibWF4UmVjb25uZWN0QXR0ZW1wdHMiLCJzZXRUaW1lb3V0IiwiY29ubmVjdCIsInJlY29ubmVjdEludGVydmFsIiwicGx1cyIsInJ1bnRpbWUiLCJyZXN0YXJ0IiwiY2xvc2UiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGVhcnRiZWF0VGltZXIiLCJzZXRJbnRlcnZhbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0eXBlIiwiaGVhcnRiZWF0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwiRXZlbnREaXNwYXRjaGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQStDO0FBQUE7QUFBQSxJQUVsQ0EsZUFBZTtFQUFBO0VBQUE7RUFDeEI7O0VBRUE7O0VBRUE7O0VBRUE7O0VBRUE7RUFDNkI7RUFDN0I7O0VBRUE7O0VBRUE7O0VBRUE7RUFDQSx5QkFBWUMsR0FBRyxFQUFFO0lBQUE7SUFBQTtJQUNiO0lBQVEsa0ZBakJOLEVBQUU7SUFBQSxxRkFFQyxJQUFJO0lBQUEsZ0dBRU8sQ0FBQztJQUFBLG1HQUVFLENBQUM7SUFBQSxnR0FFSixJQUFJLEdBQUMsRUFBRTtJQUFBLGdHQUVQLElBQUks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QyxhQUFhLENBQUMsSUFBSSxDQUFDTixjQUFjLENBQUM7TUFDbEMsSUFBSSxDQUFDQSxjQUFjLEdBQUdsQyxTQUFTO0lBQ25DO0VBQUM7RUFBQTtBQUFBLEVBM0xnQ3lDLDJCQUFlO0FBQUEsMEMiLCJmaWxlIjoiMTA0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyIH0gZnJvbSAnLi9kaXNwYXRjaGVyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBXZWJTb2NrZXRDbGllbnQgZXh0ZW5kcyBFdmVudERpc3BhdGNoZXIge1xyXG4gICAgLy8gI3NvY2tldOmTvuaOpVxyXG4gICAgdXJsID0gJyc7XHJcbiAgICAvLyAjc29ja2V05a6e5L6LXHJcbiAgICBzb2NrZXQgPSBudWxsO1xyXG4gICAgLy8gI+mHjei/nuasoeaVsFxyXG4gICAgcmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xyXG4gICAgLy8gI+acgOWkp+mHjei/nuaVsFxyXG4gICAgbWF4UmVjb25uZWN0QXR0ZW1wdHMgPSA1O1xyXG4gICAgLy8gI+mHjei/numXtOmalFxyXG4gICAgcmVjb25uZWN0SW50ZXJ2YWwgPSAxMDAwKjEwOyAvLyAxMCBzZWNvbmRzXHJcbiAgICAvLyAj5Y+R6YCB5b+D6Lez5pWw5o2u6Ze06ZqUXHJcbiAgICBoZWFydGJlYXRJbnRlcnZhbCA9IDEwMDAgKiAzMDtcclxuICAgIC8vICPorqHml7blmahpZFxyXG4gICAgaGVhcnRiZWF0VGltZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAvLyAj5b275bqV57uI5q2id3NcclxuICAgIHN0b3BXcyA9IGZhbHNlO1xyXG4gICAgLy8gKuaehOmAoOWHveaVsFxyXG4gICAgY29uc3RydWN0b3IodXJsKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLnVybCA9IHVybDtcclxuICAgIH1cclxuICAgIC8vID7nlJ/lkb3lkajmnJ/pkqnlrZBcclxuICAgIG9ub3BlbihjYWxsQmFjaykge1xyXG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignb3BlbicsIGNhbGxCYWNrKTtcclxuICAgIH1cclxuICAgIG9ubWVzc2FnZShjYWxsQmFjaykge1xyXG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGNhbGxCYWNrKTtcclxuICAgIH1cclxuICAgIG9uY2xvc2UoY2FsbEJhY2spIHtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Nsb3NlJywgY2FsbEJhY2spO1xyXG4gICAgfVxyXG4gICAgb25lcnJvcihjYWxsQmFjaykge1xyXG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBjYWxsQmFjayk7XHJcbiAgICB9XHJcbiAgICAvLyA+5raI5oGv5Y+R6YCBXHJcbiAgICBzZW5kKG1lc3NhZ2UpIHtcclxuICAgICAgICBpZiAodGhpcy5zb2NrZXQgJiYgdGhpcy5zb2NrZXQucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcclxuICAgICAgICAgICAgdGhpcy5zb2NrZXQuc2VuZCh7XHJcblx0XHRcdFx0ZGF0YTptZXNzYWdlLFx0XHRcdFx0XHJcblx0XHRcdH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tXZWJTb2NrZXRdIOacqui/nuaOpScpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyAh5Yid5aeL5YyW6L+e5o6lXHJcbiAgICBjb25uZWN0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnJlY29ubmVjdEF0dGVtcHRzID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKCdXZWJTb2NrZXQnLCBg5Yid5aeL5YyW6L+e5o6l5LitLi4uICAgICAgICAgICR7dGhpcy51cmx9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnNvY2tldCAmJiB0aGlzLnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc29ja2V0ID0gdW5pLmNvbm5lY3RTb2NrZXQoe1xyXG5cdFx0XHR1cmw6IHRoaXMudXJsLFxyXG5cdFx0XHRjb21wbGV0ZTogKCk9PiB7fVxyXG5cdFx0fSk7XHJcblx0XHR0aGlzLnNvY2tldC5vbk9wZW4oKGV2ZW50KT0+e1x0XHRcdFxyXG5cdFx0XHR0aGlzLnN0b3BXcyA9IGZhbHNlO1xyXG5cdFx0XHQvLyDph43nva7ph43ov57lsJ3or5XmiJDlip/ov57mjqVcclxuXHRcdFx0dGhpcy5yZWNvbm5lY3RBdHRlbXB0cyA9IDA7XHJcblx0XHRcdC8vIOWcqOi/nuaOpeaIkOWKn+aXtuWBnOatouW9k+WJjeeahOW/g+i3s+ajgOa1i+W5tumHjeaWsOWQr+WKqFxyXG5cdFx0XHR0aGlzLnN0YXJ0SGVhcnRiZWF0KCk7XHRcdFx0XHJcblx0XHRcdHRoaXMubG9nKCdXZWJTb2NrZXQnLCBg6L+e5o6l5oiQ5YqfLOetieW+heacjeWKoeerr+aVsOaNruaOqOmAgVtvbm9wZW5dLi4uICAgICAke3RoaXMudXJsfWApO1xyXG5cdFx0XHR0aGlzLmRpc3BhdGNoRXZlbnQoJ29wZW4nLCBldmVudCk7XHJcblx0XHR9KVxyXG4gICAgICAgIC8vICF3ZWJzb2NrZXTov57mjqXmiJDlip9cclxuICAgICAgICAvLyB0aGlzLnNvY2tldC5vbk9wZW4gPSBldmVudCA9PiB7XHRcdFx0XHJcbiAgICAgICAgLy8gICAgIHRoaXMuc3RvcFdzID0gZmFsc2U7XHJcbiAgICAgICAgLy8gICAgIC8vIOmHjee9rumHjei/nuWwneivleaIkOWKn+i/nuaOpVxyXG4gICAgICAgIC8vICAgICB0aGlzLnJlY29ubmVjdEF0dGVtcHRzID0gMDtcclxuICAgICAgICAvLyAgICAgLy8g5Zyo6L+e5o6l5oiQ5Yqf5pe25YGc5q2i5b2T5YmN55qE5b+D6Lez5qOA5rWL5bm26YeN5paw5ZCv5YqoXHJcbiAgICAgICAgLy8gICAgIHRoaXMuc3RhcnRIZWFydGJlYXQoKTtcdFx0XHRcclxuICAgICAgICAvLyAgICAgdGhpcy5sb2coJ1dlYlNvY2tldCcsIGDov57mjqXmiJDlip8s562J5b6F5pyN5Yqh56uv5pWw5o2u5o6o6YCBW29ub3Blbl0uLi4gICAgICR7dGhpcy51cmx9YCk7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgnb3BlbicsIGV2ZW50KTtcclxuICAgICAgICAvLyB9O1xyXG5cdFx0dGhpcy5zb2NrZXQub25NZXNzYWdlKChldmVudCk9PntcclxuXHRcdFx0dGhpcy5kaXNwYXRjaEV2ZW50KCdtZXNzYWdlJywgZXZlbnQpO1xyXG5cdFx0XHR0aGlzLnN0YXJ0SGVhcnRiZWF0KCk7XHJcblx0XHR9KVxyXG4gICAvLyAgICAgIHRoaXMuc29ja2V0Lm9uTWVzc2FnZSA9IGV2ZW50ID0+IHtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXZlbnQpXHJcbiAgICAgICAgICAgLy8gdGhpcy5kaXNwYXRjaEV2ZW50KCdtZXNzYWdlJywgZXZlbnQpO1xyXG4gICAgICAgICAgIC8vIHRoaXMuc3RhcnRIZWFydGJlYXQoKTtcclxuICAgLy8gICAgICB9O1xyXG5cdFx0dGhpcy5zb2NrZXQub25DbG9zZSgoZXZlbnQpPT57XHJcblx0XHRcdGlmICh0aGlzLnJlY29ubmVjdEF0dGVtcHRzID09PSAwKSB7XHJcblx0XHRcdCAgICB0aGlzLmxvZygnV2ViU29ja2V0JywgYOi/nuaOpeaWreW8gFtvbmNsb3NlXS4uLiAgICAke3RoaXMudXJsfWApO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICghdGhpcy5zdG9wV3MpIHtcclxuXHRcdFx0ICAgIHRoaXMuaGFuZGxlUmVjb25uZWN0KCk7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5kaXNwYXRjaEV2ZW50KCdjbG9zZScsIGV2ZW50KTtcclxuXHRcdH0pXHJcbiAgICAgICAgLy8gdGhpcy5zb2NrZXQub25DbG9zZSA9IGV2ZW50ID0+IHtcclxuICAgICAgICAvLyAgICAgaWYgKHRoaXMucmVjb25uZWN0QXR0ZW1wdHMgPT09IDApIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMubG9nKCdXZWJTb2NrZXQnLCBg6L+e5o6l5pat5byAW29uY2xvc2VdLi4uICAgICR7dGhpcy51cmx9YCk7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgICAgaWYgKCF0aGlzLnN0b3BXcykge1xyXG4gICAgICAgIC8vICAgICAgICAgdGhpcy5oYW5kbGVSZWNvbm5lY3QoKTtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoJ2Nsb3NlJywgZXZlbnQpO1xyXG4gICAgICAgIC8vIH07XHJcblx0XHR0aGlzLnNvY2tldC5vbkVycm9yKChldmVudCk9PntcclxuXHRcdFx0aWYgKHRoaXMucmVjb25uZWN0QXR0ZW1wdHMgPT09IDApIHtcclxuXHRcdFx0ICAgIHRoaXMubG9nKCdXZWJTb2NrZXQnLCBg6L+e5o6l5byC5bi4W29uZXJyb3JdLi4uICAgICR7dGhpcy51cmx9YCk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKCF0aGlzLnN0b3BXcykge1xyXG5cdFx0XHQgICAgdGhpcy5oYW5kbGVSZWNvbm5lY3QoKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmNsb3NlSGVhcnRiZWF0KCk7XHJcblx0XHRcdHRoaXMuZGlzcGF0Y2hFdmVudCgnZXJyb3InLCBldmVudCk7XHJcblx0XHR9KVxyXG5cdFx0XHJcblx0XHQvLyB1bmkub25Tb2NrZXRFcnJvcigoZXZlbnQpPT57XHJcblx0XHQvLyBcdGNvbnNvbGUubG9nKFwiMzMzXCIpXHJcblx0XHQvLyBcdGlmICh0aGlzLnJlY29ubmVjdEF0dGVtcHRzID09PSAwKSB7XHJcblx0XHQvLyBcdCAgICB0aGlzLmxvZygnV2ViU29ja2V0JywgYOi/nuaOpeW8guW4uFtvbmVycm9yXS4uLiAgICAke3RoaXMudXJsfWApO1xyXG5cdFx0Ly8gXHR9XHJcblx0XHQvLyBcdGlmICghdGhpcy5zdG9wV3MpIHtcclxuXHRcdC8vIFx0ICAgIHRoaXMuaGFuZGxlUmVjb25uZWN0KCk7XHJcblx0XHQvLyBcdH1cclxuXHRcdC8vIFx0dGhpcy5jbG9zZUhlYXJ0YmVhdCgpO1xyXG5cdFx0Ly8gXHR0aGlzLmRpc3BhdGNoRXZlbnQoJ2Vycm9yJywgZXZlbnQpO1xyXG5cdFx0Ly8gfSlcclxuICAgICAgICAvLyB0aGlzLnNvY2tldC5vbkVycm9yID0gZXZlbnQgPT4ge1xyXG4gICAgICAgIC8vICAgICBpZiAodGhpcy5yZWNvbm5lY3RBdHRlbXB0cyA9PT0gMCkge1xyXG4gICAgICAgIC8vICAgICAgICAgdGhpcy5sb2coJ1dlYlNvY2tldCcsIGDov57mjqXlvILluLhbb25lcnJvcl0uLi4gICAgJHt0aGlzLnVybH1gKTtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgICB0aGlzLmNsb3NlSGVhcnRiZWF0KCk7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgnZXJyb3InLCBldmVudCk7XHJcbiAgICAgICAgLy8gfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyA+IOaWree9kemHjei/numAu+i+kVxyXG4gICAgaGFuZGxlUmVjb25uZWN0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnJlY29ubmVjdEF0dGVtcHRzIDwgdGhpcy5tYXhSZWNvbm5lY3RBdHRlbXB0cykge1xyXG4gICAgICAgICAgICB0aGlzLnJlY29ubmVjdEF0dGVtcHRzKys7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKCdXZWJTb2NrZXQnLCBg5bCd6K+V6YeN6L+eLi4uICgke3RoaXMucmVjb25uZWN0QXR0ZW1wdHN9LyR7dGhpcy5tYXhSZWNvbm5lY3RBdHRlbXB0c30pICAgICAgICR7dGhpcy51cmx9YCk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0KCk7XHJcbiAgICAgICAgICAgIH0sIHRoaXMucmVjb25uZWN0SW50ZXJ2YWwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblx0XHRcdHBsdXMucnVudGltZS5yZXN0YXJ0KCk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuY2xvc2VIZWFydGJlYXQoKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5sb2coJ1dlYlNvY2tldCcsIGDmnIDlpKfph43ov57lpLHotKXvvIznu4jmraLph43ov546ICR7dGhpcy51cmx9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vID7lhbPpl63ov57mjqVcclxuICAgIGNsb3NlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNvY2tldCkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3BXcyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc29ja2V0LmNsb3NlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc29ja2V0ID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdvcGVuJyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Nsb3NlJyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jbG9zZUhlYXJ0YmVhdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vID7lvIDlp4vlv4Pot7Pmo4DmtYsgLT4g5a6a5pe25Y+R6YCB5b+D6Lez5raI5oGvXHJcbiAgICBzdGFydEhlYXJ0YmVhdCgpIHtcdFx0XHJcbiAgICAgICAgaWYgKHRoaXMuc3RvcFdzKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMuaGVhcnRiZWF0VGltZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZUhlYXJ0YmVhdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhlYXJ0YmVhdFRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zb2NrZXQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc29ja2V0LnNlbmQoe1xyXG4gICAgICAgICAgICAgICAgXHRkYXRhOiBKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdoZWFydEJlYXQnLCBkYXRhOiB7fSB9KSxcclxuICAgICAgICAgICAgICAgIFx0XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nKCdXZWJTb2NrZXQnLCAn6YCB5b+D6Lez5pWw5o2uLi4uJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbV2ViU29ja2V0XSDmnKrov57mjqUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIHRoaXMuaGVhcnRiZWF0SW50ZXJ2YWwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vID7lhbPpl63lv4Pot7NcclxuICAgIGNsb3NlSGVhcnRiZWF0KCkge1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5oZWFydGJlYXRUaW1lcik7XHJcbiAgICAgICAgdGhpcy5oZWFydGJlYXRUaW1lciA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///104\n");
/***/ }),
/* 105 */
@@ -12618,7 +12591,7 @@
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.EventDispatcher = void 0;\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ 81));\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ 83));\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ 85));\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ 86));\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 23));\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 24));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar Log = /*#__PURE__*/function () {\n  function Log() {\n    (0, _classCallCheck2.default)(this, Log);\n  }\n  (0, _createClass2.default)(Log, [{\n    key: \"log\",\n    value: function log(title, text) {\n      // if (!Log.console) return;\n      // if (import.meta.env.MODE === 'production') return;\n      var color = '#ff4d4f';\n      __f__(\"log\", \"%c \".concat(title, \" %c \").concat(text, \" %c\"), \"background:\".concat(color, \";border:1px solid \").concat(color, \"; padding: 1px; border-radius: 2px 0 0 2px; color: #fff;\"), \"border:1px solid \".concat(color, \"; padding: 1px; border-radius: 0 2px 2px 0; color: \").concat(color, \";\"), 'background:transparent', \" at static/js/dispatcher.js:7\");\n    }\n  }, {\n    key: \"closeConsole\",\n    value: function closeConsole() {\n      Log.console = false;\n    }\n  }]);\n  return Log;\n}();\n(0, _defineProperty2.default)(Log, \"console\", true);\nvar EventDispatcher = /*#__PURE__*/function (_Log) {\n  (0, _inherits2.default)(EventDispatcher, _Log);\n  var _super = _createSuper(EventDispatcher);\n  function EventDispatcher() {\n    var _this;\n    (0, _classCallCheck2.default)(this, EventDispatcher);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"listeners\", {});\n    return _this;\n  }\n  (0, _createClass2.default)(EventDispatcher, [{\n    key: \"addEventListener\",\n    value: function addEventListener(type, listener) {\n      if (!this.listeners[type]) {\n        this.listeners[type] = [];\n      }\n      if (this.listeners[type].indexOf(listener) === -1) {\n        this.listeners[type].push(listener);\n      }\n    }\n  }, {\n    key: \"removeEventListener\",\n    value: function removeEventListener(type) {\n      this.listeners[type] = [];\n    }\n  }, {\n    key: \"dispatchEvent\",\n    value: function dispatchEvent(type, data) {\n      var _this2 = this;\n      var listenerArray = this.listeners[type] || [];\n      if (listenerArray.length === 0) return;\n      listenerArray.forEach(function (listener) {\n        listener.call(_this2, data);\n      });\n    }\n  }]);\n  return EventDispatcher;\n}(Log);\nexports.EventDispatcher = EventDispatcher;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RhdGljL2pzL2Rpc3BhdGNoZXIuanMiXSwibmFtZXMiOlsiTG9nIiwidGl0bGUiLCJ0ZXh0IiwiY29sb3IiLCJjb25zb2xlIiwiRXZlbnREaXNwYXRjaGVyIiwidHlwZSIsImxpc3RlbmVyIiwibGlzdGVuZXJzIiwiaW5kZXhPZiIsInB1c2giLCJkYXRhIiwibGlzdGVuZXJBcnJheSIsImxlbmd0aCIsImZvckVhY2giLCJjYWxsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0lBQU1BLEdBQUc7RUFBQTtJQUFBO0VBQUE7RUFBQTtJQUFBO0lBQUEsT0FFTCxhQUFJQyxLQUFLLEVBQUVDLElBQUksRUFBRTtNQUNiO01BQ0E7TUFDQSxJQUFNQyxLQUFLLEdBQUcsU0FBUztNQUN2QiwwQkFDVUYsS0FBSyxpQkFBT0MsSUFBSSwrQkFDUkMsS0FBSywrQkFBcUJBLEtBQUssMEZBQ3pCQSxLQUFLLGdFQUFzREEsS0FBSyxRQUNwRix3QkFBd0I7SUFFaEM7RUFBQztJQUFBO0lBQUEsT0FDRCx3QkFBZTtNQUNYSCxHQUFHLENBQUNJLE9BQU8sR0FBRyxLQUFLO0lBQ3ZCO0VBQUM7RUFBQTtBQUFBO0FBQUEsOEJBZkNKLEdBQUcsYUFDWSxJQUFJO0FBQUEsSUFnQlpLLGVBQWU7RUFBQTtFQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7TUFBQTtJQUFBO0lBQUE7SUFBQSx3RkFDWixDQUFDLENBQUM7SUFBQTtFQUFBO0VBQUE7SUFBQTtJQUFBLE9BRWQsMEJBQWlCQyxJQUFJLEVBQUVDLFFBQVEsRUFBRTtNQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDQyxTQUFTLENBQUNGLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLElBQUksQ0FBQ0UsU0FBUyxDQUFDRixJQUFJLENBQUMsR0FBRyxFQUFFO01BQzdCO01BQ0EsSUFBSSxJQUFJLENBQUNFLFNBQVMsQ0FBQ0YsSUFBSSxDQUFDLENBQUNHLE9BQU8sQ0FBQ0YsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDL0MsSUFBSSxDQUFDQyxTQUFTLENBQUNGLElBQUksQ0FBQyxDQUFDSSxJQUFJLENBQUNILFFBQVEsQ0FBQztNQUN2QztJQUNKO0VBQUM7SUFBQTtJQUFBLE9BRUQsNkJBQW9CRCxJQUFJLEVBQUU7TUFDdEIsSUFBSSxDQUFDRSxTQUFTLENBQUNGLElBQUksQ0FBQyxHQUFHLEVBQUU7SUFDN0I7RUFBQztJQUFBO0lBQUEsT0FFRCx1QkFBY0EsSUFBSSxFQUFFSyxJQUFJLEVBQUU7TUFBQTtNQUN0QixJQUFNQyxhQUFhLEdBQUcsSUFBSSxDQUFDSixTQUFTLENBQUNGLElBQUksQ0FBQyxJQUFJLEVBQUU7TUFDaEQsSUFBSU0sYUFBYSxDQUFDQyxNQUFNLEtBQUssQ0FBQyxFQUFFO01BQ2hDRCxhQUFhLENBQUNFLE9BQU8sQ0FBQyxVQUFBUCxRQUFRLEVBQUk7UUFDOUJBLFFBQVEsQ0FBQ1EsSUFBSSxDQUFDLE1BQUksRUFBRUosSUFBSSxDQUFDO01BQzdCLENBQUMsQ0FBQztJQUNOO0VBQUM7RUFBQTtBQUFBLEVBdEJnQ1gsR0FBRztBQUFBLDBDIiwiZmlsZSI6IjEwNS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNsYXNzIExvZyB7XG4gICAgc3RhdGljIGNvbnNvbGUgPSB0cnVlO1xuICAgIGxvZyh0aXRsZSwgdGV4dCkge1xuICAgICAgICAvLyBpZiAoIUxvZy5jb25zb2xlKSByZXR1cm47XG4gICAgICAgIC8vIGlmIChpbXBvcnQubWV0YS5lbnYuTU9ERSA9PT0gJ3Byb2R1Y3Rpb24nKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGNvbG9yID0gJyNmZjRkNGYnO1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGAlYyAke3RpdGxlfSAlYyAke3RleHR9ICVjYCxcbiAgICAgICAgICAgIGBiYWNrZ3JvdW5kOiR7Y29sb3J9O2JvcmRlcjoxcHggc29saWQgJHtjb2xvcn07IHBhZGRpbmc6IDFweDsgYm9yZGVyLXJhZGl1czogMnB4IDAgMCAycHg7IGNvbG9yOiAjZmZmO2AsXG4gICAgICAgICAgICBgYm9yZGVyOjFweCBzb2xpZCAke2NvbG9yfTsgcGFkZGluZzogMXB4OyBib3JkZXItcmFkaXVzOiAwIDJweCAycHggMDsgY29sb3I6ICR7Y29sb3J9O2AsXG4gICAgICAgICAgICAnYmFja2dyb3VuZDp0cmFuc3BhcmVudCdcbiAgICAgICAgKTtcbiAgICB9XG4gICAgY2xvc2VDb25zb2xlKCkge1xuICAgICAgICBMb2cuY29uc29sZSA9IGZhbHNlO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBFdmVudERpc3BhdGNoZXIgZXh0ZW5kcyBMb2cge1xuICAgIGxpc3RlbmVycyA9IHt9O1xuXG4gICAgYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgICBpZiAoIXRoaXMubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVyc1t0eXBlXSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmxpc3RlbmVyc1t0eXBlXS5pbmRleE9mKGxpc3RlbmVyKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzW3R5cGVdLnB1c2gobGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlKSB7XG4gICAgICAgIHRoaXMubGlzdGVuZXJzW3R5cGVdID0gW107XG4gICAgfVxuXG4gICAgZGlzcGF0Y2hFdmVudCh0eXBlLCBkYXRhKSB7XG4gICAgICAgIGNvbnN0IGxpc3RlbmVyQXJyYXkgPSB0aGlzLmxpc3RlbmVyc1t0eXBlXSB8fCBbXTtcbiAgICAgICAgaWYgKGxpc3RlbmVyQXJyYXkubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgICAgIGxpc3RlbmVyQXJyYXkuZm9yRWFjaChsaXN0ZW5lciA9PiB7XG4gICAgICAgICAgICBsaXN0ZW5lci5jYWxsKHRoaXMsIGRhdGEpO1xuICAgICAgICB9KTtcbiAgICB9XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///105\n");
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.EventDispatcher = void 0;\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ 81));\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ 83));\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ 85));\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ 86));\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 23));\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 24));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar Log = /*#__PURE__*/function () {\n  function Log() {\n    (0, _classCallCheck2.default)(this, Log);\n  }\n  (0, _createClass2.default)(Log, [{\n    key: \"log\",\n    value: function log(title, text) {\n      // if (!Log.console) return;\n      // if (import.meta.env.MODE === 'production') return;\n      var color = '#ff4d4f';\n      __f__(\"log\", \"%c \".concat(title, \" %c \").concat(text, \" %c\"), \"background:\".concat(color, \";border:1px solid \").concat(color, \"; padding: 1px; border-radius: 2px 0 0 2px; color: #fff;\"), \"border:1px solid \".concat(color, \"; padding: 1px; border-radius: 0 2px 2px 0; color: \").concat(color, \";\"), 'background:transparent', \" at static/js/dispatcher.js:7\");\n    }\n  }, {\n    key: \"closeConsole\",\n    value: function closeConsole() {\n      Log.console = false;\n    }\n  }]);\n  return Log;\n}();\n(0, _defineProperty2.default)(Log, \"console\", true);\nvar EventDispatcher = /*#__PURE__*/function (_Log) {\n  (0, _inherits2.default)(EventDispatcher, _Log);\n  var _super = _createSuper(EventDispatcher);\n  function EventDispatcher() {\n    var _this;\n    (0, _classCallCheck2.default)(this, EventDispatcher);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"listeners\", {});\n    return _this;\n  }\n  (0, _createClass2.default)(EventDispatcher, [{\n    key: \"addEventListener\",\n    value: function addEventListener(type, listener) {\n      if (!this.listeners[type]) {\n        this.listeners[type] = [];\n      }\n      if (this.listeners[type].indexOf(listener) === -1) {\n        this.listeners[type].push(listener);\n      }\n    }\n  }, {\n    key: \"removeEventListener\",\n    value: function removeEventListener(type) {\n      this.listeners[type] = [];\n    }\n  }, {\n    key: \"dispatchEvent\",\n    value: function dispatchEvent(type, data) {\n      var _this2 = this;\n      var listenerArray = this.listeners[type] || [];\n      if (listenerArray.length === 0) return;\n      listenerArray.forEach(function (listener) {\n        listener.call(_this2, data);\n      });\n    }\n  }]);\n  return EventDispatcher;\n}(Log);\nexports.EventDispatcher = EventDispatcher;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RhdGljL2pzL2Rpc3BhdGNoZXIuanMiXSwibmFtZXMiOlsiTG9nIiwidGl0bGUiLCJ0ZXh0IiwiY29sb3IiLCJjb25zb2xlIiwiRXZlbnREaXNwYXRjaGVyIiwidHlwZSIsImxpc3RlbmVyIiwibGlzdGVuZXJzIiwiaW5kZXhPZiIsInB1c2giLCJkYXRhIiwibGlzdGVuZXJBcnJheSIsImxlbmd0aCIsImZvckVhY2giLCJjYWxsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0lBQU1BLEdBQUc7RUFBQTtJQUFBO0VBQUE7RUFBQTtJQUFBO0lBQUEsT0FFTCxhQUFJQyxLQUFLLEVBQUVDLElBQUksRUFBRTtNQUNiO01BQ0E7TUFDQSxJQUFNQyxLQUFLLEdBQUcsU0FBUztNQUN2QiwwQkFDVUYsS0FBSyxpQkFBT0MsSUFBSSwrQkFDUkMsS0FBSywrQkFBcUJBLEtBQUssMEZBQ3pCQSxLQUFLLGdFQUFzREEsS0FBSyxRQUNwRix3QkFBd0I7SUFFaEM7RUFBQztJQUFBO0lBQUEsT0FDRCx3QkFBZTtNQUNYSCxHQUFHLENBQUNJLE9BQU8sR0FBRyxLQUFLO0lBQ3ZCO0VBQUM7RUFBQTtBQUFBO0FBQUEsOEJBZkNKLEdBQUcsYUFDWSxJQUFJO0FBQUEsSUFnQlpLLGVBQWU7RUFBQTtFQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7TUFBQTtJQUFBO0lBQUE7SUFBQSx3RkFDWixDQUFDLENBQUM7SUFBQTtFQUFBO0VBQUE7SUFBQTtJQUFBLE9BRWQsMEJBQWlCQyxJQUFJLEVBQUVDLFFBQVEsRUFBRTtNQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDQyxTQUFTLENBQUNGLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLElBQUksQ0FBQ0UsU0FBUyxDQUFDRixJQUFJLENBQUMsR0FBRyxFQUFFO01BQzdCO01BQ0EsSUFBSSxJQUFJLENBQUNFLFNBQVMsQ0FBQ0YsSUFBSSxDQUFDLENBQUNHLE9BQU8sQ0FBQ0YsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDL0MsSUFBSSxDQUFDQyxTQUFTLENBQUNGLElBQUksQ0FBQyxDQUFDSSxJQUFJLENBQUNILFFBQVEsQ0FBQztNQUN2QztJQUNKO0VBQUM7SUFBQTtJQUFBLE9BRUQsNkJBQW9CRCxJQUFJLEVBQUU7TUFDdEIsSUFBSSxDQUFDRSxTQUFTLENBQUNGLElBQUksQ0FBQyxHQUFHLEVBQUU7SUFDN0I7RUFBQztJQUFBO0lBQUEsT0FFRCx1QkFBY0EsSUFBSSxFQUFFSyxJQUFJLEVBQUU7TUFBQTtNQUN0QixJQUFNQyxhQUFhLEdBQUcsSUFBSSxDQUFDSixTQUFTLENBQUNGLElBQUksQ0FBQyxJQUFJLEVBQUU7TUFDaEQsSUFBSU0sYUFBYSxDQUFDQyxNQUFNLEtBQUssQ0FBQyxFQUFFO01BQ2hDRCxhQUFhLENBQUNFLE9BQU8sQ0FBQyxVQUFBUCxRQUFRLEVBQUk7UUFDOUJBLFFBQVEsQ0FBQ1EsSUFBSSxDQUFDLE1BQUksRUFBRUosSUFBSSxDQUFDO01BQzdCLENBQUMsQ0FBQztJQUNOO0VBQUM7RUFBQTtBQUFBLEVBdEJnQ1gsR0FBRztBQUFBLDBDIiwiZmlsZSI6IjEwNS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNsYXNzIExvZyB7XHJcbiAgICBzdGF0aWMgY29uc29sZSA9IHRydWU7XHJcbiAgICBsb2codGl0bGUsIHRleHQpIHtcclxuICAgICAgICAvLyBpZiAoIUxvZy5jb25zb2xlKSByZXR1cm47XHJcbiAgICAgICAgLy8gaWYgKGltcG9ydC5tZXRhLmVudi5NT0RFID09PSAncHJvZHVjdGlvbicpIHJldHVybjtcclxuICAgICAgICBjb25zdCBjb2xvciA9ICcjZmY0ZDRmJztcclxuICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgYCVjICR7dGl0bGV9ICVjICR7dGV4dH0gJWNgLFxyXG4gICAgICAgICAgICBgYmFja2dyb3VuZDoke2NvbG9yfTtib3JkZXI6MXB4IHNvbGlkICR7Y29sb3J9OyBwYWRkaW5nOiAxcHg7IGJvcmRlci1yYWRpdXM6IDJweCAwIDAgMnB4OyBjb2xvcjogI2ZmZjtgLFxyXG4gICAgICAgICAgICBgYm9yZGVyOjFweCBzb2xpZCAke2NvbG9yfTsgcGFkZGluZzogMXB4OyBib3JkZXItcmFkaXVzOiAwIDJweCAycHggMDsgY29sb3I6ICR7Y29sb3J9O2AsXHJcbiAgICAgICAgICAgICdiYWNrZ3JvdW5kOnRyYW5zcGFyZW50J1xyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBjbG9zZUNvbnNvbGUoKSB7XHJcbiAgICAgICAgTG9nLmNvbnNvbGUgPSBmYWxzZTtcclxuICAgIH1cclxufVxyXG5leHBvcnQgY2xhc3MgRXZlbnREaXNwYXRjaGVyIGV4dGVuZHMgTG9nIHtcclxuICAgIGxpc3RlbmVycyA9IHt9O1xyXG5cclxuICAgIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcclxuICAgICAgICBpZiAoIXRoaXMubGlzdGVuZXJzW3R5cGVdKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzW3R5cGVdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmxpc3RlbmVyc1t0eXBlXS5pbmRleE9mKGxpc3RlbmVyKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnNbdHlwZV0ucHVzaChsaXN0ZW5lcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSkge1xyXG4gICAgICAgIHRoaXMubGlzdGVuZXJzW3R5cGVdID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcGF0Y2hFdmVudCh0eXBlLCBkYXRhKSB7XHJcbiAgICAgICAgY29uc3QgbGlzdGVuZXJBcnJheSA9IHRoaXMubGlzdGVuZXJzW3R5cGVdIHx8IFtdO1xyXG4gICAgICAgIGlmIChsaXN0ZW5lckFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgICAgIGxpc3RlbmVyQXJyYXkuZm9yRWFjaChsaXN0ZW5lciA9PiB7XHJcbiAgICAgICAgICAgIGxpc3RlbmVyLmNhbGwodGhpcywgZGF0YSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///105\n");
/***/ }),
/* 106 */