| | |
| | | /***/ (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 _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 93));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\nvar _vuex = __webpack_require__(/*! vuex */ 12);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar _default = {\n data: function data() {\n return {\n tts: null,\n show: false,\n show1: false,\n showGrabModal: false,\n selectedGrabOrder: null,\n selectedCancelOrder: null,\n cancelRemain: 0,\n selectedPickupOrder: null,\n showPhotoDeliverPopup: false,\n routeInfo: null,\n statusBarHeight: 0,\n headerHeight: 0,\n tabbarHeight: 0,\n scrollHeight: 0,\n showFilterPopup: false,\n acceptingStatus: 0,\n showStatusPicker: false,\n statusOptions: [{\n text: '上线',\n value: 1\n }, {\n text: '下线',\n value: 0\n }],\n centerUserInfo: {},\n activeTab: 'hall',\n expandedGoodsIds: [],\n categoryList: [],\n filterSections: [{\n key: 'sort',\n title: '排序',\n options: ['综合排序', '距离最近']\n }, {\n key: 'level',\n title: '物品等级',\n options: ['不限']\n }, {\n key: 'distance',\n title: '位置范围',\n options: ['不限', '500m', '1km', '2km', '3km', '4km', '5km', '6km', '7km']\n }],\n selectedFilters: {\n sort: '综合排序',\n level: '不限',\n distance: '不限'\n },\n stats: [{\n value: '-',\n label: '服务分'\n }, {\n value: '-',\n label: '今日预计佣金'\n }, {\n value: '-',\n label: '今日接单'\n }],\n tabs: [{\n label: '抢单大厅',\n value: 'hall'\n }, {\n label: '待取货',\n value: 'pickup'\n }, {\n label: '配送中',\n value: 'delivering'\n }],\n orderList: [],\n pickupOrderList: [],\n deliveringOrderList: [],\n hallPage: 1,\n hallPageSize: 10,\n hallLoading: false,\n hallHasMore: true,\n pickupLoading: false,\n deliveringLoading: false,\n activeOrderCount: null\n };\n },\n watch: {\n activeTab: function activeTab(newVal) {\n this.loadOrdersByTab(newVal);\n }\n },\n onLoad: function onLoad() {\n var systemInfo = uni.getSystemInfoSync();\n var safeBottom = systemInfo.safeAreaInsets ? systemInfo.safeAreaInsets.bottom || 0 : 0;\n var windowHeight = systemInfo.windowHeight || 0;\n this.statusBarHeight = systemInfo.statusBarHeight || 0;\n this.headerHeight = this.statusBarHeight + uni.upx2px(308);\n this.tabbarHeight = uni.upx2px(100) + safeBottom;\n this.scrollHeight = Math.max(windowHeight - this.headerHeight, 0);\n if (this.userInfo.auditStatus === 99) return;\n this.acceptingStatus = this.userInfo.acceptingStatus || 0;\n this.loadOrdersByTab(this.activeTab);\n },\n onShow: function onShow() {\n this.getCenterInfo();\n this.getCategoryListData();\n this.getActiveOrderCount();\n },\n onReachBottom: function onReachBottom() {\n if (this.acceptingStatus === 0) return;\n if (this.activeTab === 'hall') {\n this.hallPage++;\n this.getHallOrders();\n }\n },\n computed: _objectSpread(_objectSpread({}, (0, _vuex.mapState)(['userInfo', 'token'])), {}, {\n displayTabs: function displayTabs() {\n var _this = this;\n return this.tabs.map(function (tab) {\n if (tab.value === 'pickup') {\n var _this$activeOrderCoun;\n return _objectSpread(_objectSpread({}, tab), {}, {\n count: (_this$activeOrderCoun = _this.activeOrderCount) === null || _this$activeOrderCoun === void 0 ? void 0 : _this$activeOrderCoun.grabbedCount\n });\n } else if (tab.value === 'delivering') {\n var _this$activeOrderCoun2;\n return _objectSpread(_objectSpread({}, tab), {}, {\n count: (_this$activeOrderCoun2 = _this.activeOrderCount) === null || _this$activeOrderCoun2 === void 0 ? void 0 : _this$activeOrderCoun2.deliveringCount\n });\n }\n return tab;\n });\n },\n currentOrderList: function currentOrderList() {\n var orderMap = {\n hall: this.orderList,\n pickup: this.pickupOrderList,\n delivering: this.deliveringOrderList\n };\n return orderMap[this.activeTab] || [];\n },\n bodyStyle: function bodyStyle() {\n return {\n marginTop: this.headerHeight + 'px',\n height: this.scrollHeight + 'px'\n };\n }\n }),\n onReady: function onReady() {\n this.initTTS(); // 页面渲染完成初始化语音\n },\n\n methods: {\n formatRemainTime: function formatRemainTime(minutes) {\n if (!minutes) return 0;\n if (minutes === 0) {\n return '配送已超时';\n }\n if (minutes >= 60) {\n return (minutes / 60).toFixed(2) + '小时内';\n }\n return minutes + '分钟内';\n },\n getGoodsText: function getGoodsText(items, itemId) {\n if (!items || items.length === 0) return '无';\n var text = items.map(function (i) {\n return \"\".concat(i.name, \"*\").concat(i.quantity);\n }).join('、');\n if (text.length > 20 && !this.expandedGoodsIds.includes(itemId)) {\n return text.substring(0, 20) + '...';\n }\n return text;\n },\n toggleGoodsExpand: function toggleGoodsExpand(id) {\n var index = this.expandedGoodsIds.indexOf(id);\n if (index > -1) {\n this.expandedGoodsIds.splice(index, 1);\n } else {\n this.expandedGoodsIds.push(id);\n }\n },\n formatDistanceParts: function formatDistanceParts(distance) {\n if (distance === null || distance === undefined || distance === '') {\n return {\n value: '--',\n unit: ''\n };\n }\n if (typeof distance === 'number') {\n if (distance >= 1000) {\n return {\n value: (distance / 1000).toFixed(1),\n unit: 'km'\n };\n }\n return {\n value: String(Math.round(distance)),\n unit: 'm'\n };\n }\n var text = String(distance).trim();\n var match = text.match(/^([\\d.]+)\\s*([a-zA-Z\\u4e00-\\u9fa5]*)$/);\n if (match) {\n return {\n value: match[1],\n unit: match[2] || ''\n };\n }\n return {\n value: text,\n unit: ''\n };\n },\n navigateToAddress: function navigateToAddress(item, type) {\n var latitude, longitude, name, address;\n if (type === 'deposit') {\n latitude = item.depositLat;\n longitude = item.depositLng;\n name = item.depositShopName;\n address = item.depositShopAddress;\n } else {\n latitude = item.takeLat;\n longitude = item.takeLng;\n name = item.takeName;\n address = item.takeAddress;\n }\n if (!latitude || !longitude) {\n uni.showToast({\n title: '地址坐标缺失',\n icon: 'none'\n });\n return;\n }\n uni.openLocation({\n latitude: latitude,\n longitude: longitude,\n name: name,\n address: address,\n success: function success() {},\n fail: function fail(err) {\n uni.showToast({\n title: '打开地图失败',\n icon: 'none'\n });\n __f__(\"error\", 'openLocation fail:', err, \" at pages/index/index.vue:473\");\n }\n });\n },\n handleUserClick: function handleUserClick() {\n uni.navigateTo({\n url: '/pages/test/test'\n });\n },\n getActiveOrderCount: function getActiveOrderCount() {\n var _this2 = this;\n this.$u.api.activeOrderCount().then(function (res) {\n if (res.code === 200) {\n _this2.activeOrderCount = res.data;\n }\n }).catch(function (err) {\n _this2.activeOrderCount = null;\n });\n },\n handleGrabOrder: function handleGrabOrder(item) {\n __f__(\"log\", item, \" at pages/index/index.vue:494\");\n this.selectedGrabOrder = item;\n this.showGrabModal = true;\n },\n confirmGrabOrder: function confirmGrabOrder() {\n var _this3 = this;\n if (!this.selectedGrabOrder) return;\n this.$u.api.grabOrder({\n orderId: this.selectedGrabOrder.id\n }).then(function (res) {\n _this3.showGrabModal = false;\n if (res.code === 200) {\n uni.showToast({\n title: '抢单成功',\n icon: 'success'\n });\n _this3.hallPage = 1;\n _this3.hallHasMore = true;\n _this3.orderList = [];\n _this3.getHallOrders();\n _this3.getActiveOrderCount();\n _this3.getCenterInfo();\n } else {\n uni.showToast({\n title: res.message || '抢单失败',\n icon: 'none'\n });\n }\n }).catch(function () {\n _this3.showGrabModal = false;\n });\n },\n handleCancelOrder: function handleCancelOrder(item) {\n var _this4 = this;\n this.selectedCancelOrder = item;\n this.$u.api.cancelLimit().then(function (res) {\n if (res.code === 200) {\n _this4.cancelRemain = res.data.remain;\n }\n }).finally(function () {\n _this4.show = true;\n });\n },\n confirmCancelOrder: function confirmCancelOrder() {\n var _this5 = this;\n if (!this.selectedCancelOrder) return;\n this.$u.api.cancelOrder({\n orderId: this.selectedCancelOrder.id\n }).then(function (res) {\n _this5.show = false;\n if (res.code === 200) {\n uni.showToast({\n title: '取消成功',\n icon: 'success'\n });\n _this5.getPickupOrders();\n _this5.getCenterInfo();\n _this5.getActiveOrderCount();\n } else {\n uni.showToast({\n title: res.message || '取消失败',\n icon: 'none'\n });\n }\n }).catch(function () {\n _this5.show = false;\n });\n },\n handleCall: function handleCall(item) {\n if (item.contactPhone) {\n uni.makePhoneCall({\n phoneNumber: item.contactPhone\n });\n }\n },\n handleShowPickupCode: function handleShowPickupCode(item) {\n this.selectedPickupOrder = item;\n this.show1 = true;\n },\n goToOrderDetail: function goToOrderDetail(item, index) {\n var url = \"/pages/order-detail/order-detail?id=\".concat(item.id);\n if (this.activeTab === 'pickup' || this.activeTab === 'delivering') {\n url += \"&index=\".concat(index + 1);\n }\n uni.navigateTo({\n url: url\n });\n },\n getCenterInfo: function getCenterInfo() {\n var _this6 = this;\n this.$u.api.centerInfo().then(function (res) {\n if (res.code === 200) {\n _this6.acceptingStatus = res.data.acceptingStatus;\n _this6.centerUserInfo = {\n fullImgUrl: res.data.fullImgUrl,\n name: res.data.name\n };\n _this6.stats = [{\n value: res.data.score,\n label: '服务分'\n }, {\n value: (res.data.todayCommission / 100 || 0).toFixed(2),\n label: '今日预计佣金'\n }, {\n value: res.data.todayOrderCount,\n label: '今日接单'\n }];\n }\n });\n },\n getCategoryListData: function getCategoryListData() {\n var _this7 = this;\n this.$u.api.getCategoryList({\n type: 3\n }).then(function (res) {\n if (res.code === 200) {\n _this7.categoryList = res.data || [];\n _this7.filterSections.forEach(function (section) {\n if (section.key === 'level') {\n section.options = ['不限'].concat((0, _toConsumableArray2.default)(_this7.categoryList.map(function (item) {\n return item.name;\n })));\n }\n });\n }\n });\n },\n loadOrdersByTab: function loadOrdersByTab(tab) {\n if (this.userInfo.auditStatus === 99) return;\n if (this.acceptingStatus === 0) return;\n if (tab === 'hall') {\n this.hallPage = 1;\n this.hallHasMore = true;\n this.orderList = [];\n this.getHallOrders();\n } else if (tab === 'pickup') {\n this.pickupOrderList = [];\n this.getPickupOrders();\n } else if (tab === 'delivering') {\n this.deliveringOrderList = [];\n this.getDeliveringOrders();\n }\n },\n getHallOrders: function getHallOrders() {\n var _this8 = this;\n if (this.acceptingStatus === 0) return;\n if (this.hallLoading || !this.hallHasMore) {\n return;\n }\n this.hallLoading = true;\n var distance = null;\n if (this.selectedFilters.distance !== '不限') {\n var distanceText = this.selectedFilters.distance;\n if (distanceText.includes('km')) {\n distance = parseInt(distanceText) * 1000;\n } else {\n distance = parseInt(distanceText);\n }\n }\n var sortTypeMap = {\n '综合排序': 1,\n '距离最近': 2\n };\n var sortType = this.selectedFilters.sort !== '不限' ? sortTypeMap[this.selectedFilters.sort] || null : null;\n var gradeId = null;\n if (this.selectedFilters.level !== '不限') {\n var selectedCategory = this.categoryList.find(function (item) {\n return item.name === _this8.selectedFilters.level;\n });\n if (selectedCategory) {\n gradeId = selectedCategory.id;\n }\n }\n __f__(\"log\", '接单大厅:', {\n distance: distance,\n gradeId: gradeId,\n sortType: sortType\n }, \" at pages/index/index.vue:646\");\n this.$u.api.grabOrderHall({\n capacity: this.hallPageSize,\n page: this.hallPage,\n model: {\n distance: distance,\n gradeId: gradeId,\n sortType: sortType\n }\n }).then(function (res) {\n __f__(\"log\", '接单大厅', res, \" at pages/index/index.vue:656\");\n _this8.hallLoading = false;\n if (res.code === 200) {\n var list = res.data.records || [];\n _this8.orderList = _this8.hallPage === 1 ? list : _this8.orderList.concat(list);\n _this8.hallHasMore = list.length >= _this8.hallPageSize;\n }\n }).catch(function (err) {\n _this8.hallLoading = false;\n });\n },\n getPickupOrders: function getPickupOrders() {\n var _this9 = this;\n if (this.acceptingStatus === 0) return;\n if (this.pickupLoading) return;\n this.pickupLoading = true;\n this.$u.api.activeOrders({\n status: 3\n }).then(function (res) {\n __f__(\"log\", '待取货:', res, \" at pages/index/index.vue:673\");\n _this9.pickupLoading = false;\n if (res.code === 200) {\n _this9.pickupOrderList = res.data.records || res.data || [];\n }\n }).catch(function (err) {\n _this9.pickupLoading = false;\n });\n },\n getDeliveringOrders: function getDeliveringOrders() {\n var _this10 = this;\n if (this.acceptingStatus === 0) return;\n if (this.deliveringLoading) return;\n this.deliveringLoading = true;\n this.$u.api.activeOrders({\n status: 4\n }).then(function (res) {\n __f__(\"log\", '配送中:', res, \" at pages/index/index.vue:688\");\n _this10.deliveringLoading = false;\n if (res.code === 200) {\n _this10.deliveringOrderList = res.data || [];\n }\n }).catch(function (err) {\n _this10.deliveringLoading = false;\n });\n },\n openStatusPicker: function openStatusPicker() {\n this.showStatusPicker = true;\n },\n confirmStatus: function confirmStatus(e) {\n var _this11 = this;\n this.showStatusPicker = false;\n var selectedValue = e.value[0];\n this.$u.api.updateAcceptingStatus({\n status: selectedValue.value\n }).then(function (res) {\n if (res.code === 200) {\n _this11.acceptingStatus = selectedValue.value;\n _this11.getCenterInfo();\n if (_this11.acceptingStatus === 0) {\n _this11.orderList = [];\n _this11.pickupOrderList = [];\n _this11.deliveringOrderList = [];\n } else {\n if (_this11.activeTab === 'pickup') {\n _this11.getPickupOrders();\n } else if (_this11.activeTab === 'delivering') {\n _this11.getDeliveringOrders();\n } else {\n _this11.hallPage = 1;\n _this11.hallHasMore = true;\n _this11.orderList = [];\n _this11.getHallOrders();\n }\n }\n }\n });\n },\n toDriverCertification: function toDriverCertification() {\n uni.navigateTo({\n url: '/pages/driver-certification/driver-certification'\n });\n },\n toggleFilterPopup: function toggleFilterPopup(show) {\n this.showFilterPopup = show;\n },\n selectFilter: function selectFilter(key, option) {\n this.selectedFilters = _objectSpread(_objectSpread({}, this.selectedFilters), {}, (0, _defineProperty2.default)({}, key, option));\n },\n resetFilters: function resetFilters() {\n this.showFilterPopup = false;\n if (this.userInfo.auditStatus === 99) return;\n this.selectedFilters = {\n sort: '综合排序',\n level: '不限',\n distance: '不限'\n };\n if (this.activeTab === 'hall') {\n this.hallPage = 1;\n this.hallHasMore = true;\n this.orderList = [];\n this.getHallOrders();\n }\n },\n confirmFilters: function confirmFilters() {\n this.showFilterPopup = false;\n if (this.userInfo.auditStatus === 99) {\n this.hallHasMore = true;\n return;\n }\n if (this.activeTab === 'hall') {\n this.hallPage = 1;\n this.hallHasMore = true;\n this.orderList = [];\n this.getHallOrders();\n }\n },\n initTTS: function initTTS() {\n var _this12 = this;\n if (uni.getSystemInfoSync().platform !== 'android') {\n __f__(\"log\", '仅支持安卓', \" at pages/index/index.vue:778\");\n return;\n }\n try {\n // 导入安卓原生类\n var TextToSpeech = plus.android.importClass('android.speech.tts.TextToSpeech');\n var Locale = plus.android.importClass('java.util.Locale');\n\n // 创建TTS\n this.tts = new TextToSpeech(plus.android.runtimeMainActivity(), {\n onInit: function onInit(status) {\n if (status == 0) {\n // 设置中文\n _this12.tts.setLanguage(Locale.CHINA);\n __f__(\"log\", '语音初始化成功', \" at pages/index/index.vue:793\");\n }\n }\n });\n } catch (e) {\n __f__(\"log\", '初始化失败', e, \" at pages/index/index.vue:798\");\n }\n },\n speak: function speak(text) {\n if (!this.tts) {\n uni.showToast({\n title: '语音未准备好',\n icon: 'none'\n });\n return;\n }\n try {\n // 安卓原生播报(QUEUE_FLUSH = 立即播报,打断上一条)\n this.tts.speak(text, 0, null);\n } catch (err) {\n __f__(\"log\", '播报失败', err, \" at pages/index/index.vue:815\");\n }\n },\n stopSpeak: function stopSpeak() {\n if (this.tts) this.tts.stop();\n }\n },\n onUnload: function onUnload() {\n if (this.tts) {\n this.tts.stop();\n this.tts.shutdown();\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 */ 92)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbImRhdGEiLCJ0dHMiLCJzaG93Iiwic2hvdzEiLCJzaG93R3JhYk1vZGFsIiwic2VsZWN0ZWRHcmFiT3JkZXIiLCJzZWxlY3RlZENhbmNlbE9yZGVyIiwiY2FuY2VsUmVtYWluIiwic2VsZWN0ZWRQaWNrdXBPcmRlciIsInNob3dQaG90b0RlbGl2ZXJQb3B1cCIsInJvdXRlSW5mbyIsInN0YXR1c0JhckhlaWdodCIsImhlYWRlckhlaWdodCIsInRhYmJhckhlaWdodCIsInNjcm9sbEhlaWdodCIsInNob3dGaWx0ZXJQb3B1cCIsImFjY2VwdGluZ1N0YXR1cyIsInNob3dTdGF0dXNQaWNrZXIiLCJzdGF0dXNPcHRpb25zIiwidGV4dCIsInZhbHVlIiwiY2VudGVyVXNlckluZm8iLCJhY3RpdmVUYWIiLCJleHBhbmRlZEdvb2RzSWRzIiwiY2F0ZWdvcnlMaXN0IiwiZmlsdGVyU2VjdGlvbnMiLCJrZXkiLCJ0aXRsZSIsIm9wdGlvbnMiLCJzZWxlY3RlZEZpbHRlcnMiLCJzb3J0IiwibGV2ZWwiLCJkaXN0YW5jZSIsInN0YXRzIiwibGFiZWwiLCJ0YWJzIiwib3JkZXJMaXN0IiwicGlja3VwT3JkZXJMaXN0IiwiZGVsaXZlcmluZ09yZGVyTGlzdCIsImhhbGxQYWdlIiwiaGFsbFBhZ2VTaXplIiwiaGFsbExvYWRpbmciLCJoYWxsSGFzTW9yZSIsInBpY2t1cExvYWRpbmciLCJkZWxpdmVyaW5nTG9hZGluZyIsImFjdGl2ZU9yZGVyQ291bnQiLCJ3YXRjaCIsIm9uTG9hZCIsIm9uU2hvdyIsIm9uUmVhY2hCb3R0b20iLCJjb21wdXRlZCIsImRpc3BsYXlUYWJzIiwiY291bnQiLCJjdXJyZW50T3JkZXJMaXN0IiwiaGFsbCIsInBpY2t1cCIsImRlbGl2ZXJpbmciLCJib2R5U3R5bGUiLCJtYXJnaW5Ub3AiLCJoZWlnaHQiLCJvblJlYWR5IiwibWV0aG9kcyIsImZvcm1hdFJlbWFpblRpbWUiLCJnZXRHb29kc1RleHQiLCJ0b2dnbGVHb29kc0V4cGFuZCIsImZvcm1hdERpc3RhbmNlUGFydHMiLCJ1bml0IiwibmF2aWdhdGVUb0FkZHJlc3MiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsIm5hbWUiLCJhZGRyZXNzIiwidW5pIiwiaWNvbiIsInN1Y2Nlc3MiLCJmYWlsIiwiaGFuZGxlVXNlckNsaWNrIiwidXJsIiwiZ2V0QWN0aXZlT3JkZXJDb3VudCIsImhhbmRsZUdyYWJPcmRlciIsImNvbmZpcm1HcmFiT3JkZXIiLCJvcmRlcklkIiwiaGFuZGxlQ2FuY2VsT3JkZXIiLCJjb25maXJtQ2FuY2VsT3JkZXIiLCJoYW5kbGVDYWxsIiwicGhvbmVOdW1iZXIiLCJoYW5kbGVTaG93UGlja3VwQ29kZSIsImdvVG9PcmRlckRldGFpbCIsImdldENlbnRlckluZm8iLCJmdWxsSW1nVXJsIiwiZ2V0Q2F0ZWdvcnlMaXN0RGF0YSIsInR5cGUiLCJzZWN0aW9uIiwibG9hZE9yZGVyc0J5VGFiIiwiZ2V0SGFsbE9yZGVycyIsImdyYWRlSWQiLCJzb3J0VHlwZSIsImNhcGFjaXR5IiwicGFnZSIsIm1vZGVsIiwiZ2V0UGlja3VwT3JkZXJzIiwic3RhdHVzIiwiZ2V0RGVsaXZlcmluZ09yZGVycyIsIm9wZW5TdGF0dXNQaWNrZXIiLCJjb25maXJtU3RhdHVzIiwidG9Ecml2ZXJDZXJ0aWZpY2F0aW9uIiwidG9nZ2xlRmlsdGVyUG9wdXAiLCJzZWxlY3RGaWx0ZXIiLCJyZXNldEZpbHRlcnMiLCJjb25maXJtRmlsdGVycyIsImluaXRUVFMiLCJvbkluaXQiLCJzcGVhayIsInN0b3BTcGVhayIsIm9uVW5sb2FkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFzUUE7QUFBQTtBQUFBO0FBQUEsZUFDQTtFQUNBQTtJQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDLGdCQUNBO1FBQUFDO1FBQUFDO01BQUEsR0FDQTtRQUFBRDtRQUFBQztNQUFBLEVBQ0E7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUMsaUJBQ0E7UUFBQUM7UUFBQUM7UUFBQUM7TUFBQSxHQUNBO1FBQUFGO1FBQUFDO1FBQUFDO01BQUEsR0FDQTtRQUFBRjtRQUFBQztRQUFBQztNQUFBLEVBQ0E7TUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7TUFDQTtNQUNBQyxRQUNBO1FBQUFiO1FBQUFjO01BQUEsR0FDQTtRQUFBZDtRQUFBYztNQUFBLEdBQ0E7UUFBQWQ7UUFBQWM7TUFBQSxFQUNBO01BQ0FDLE9BQ0E7UUFBQUQ7UUFBQWQ7TUFBQSxHQUNBO1FBQUFjO1FBQUFkO01BQUEsR0FDQTtRQUFBYztRQUFBZDtNQUFBLEVBQ0E7TUFDQWdCO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO0lBQ0E7RUFDQTtFQUVBQztJQUNBeEI7TUFDQTtJQUNBO0VBQ0E7RUFFQXlCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUFDQTtFQUVBQztJQUNBO0lBQ0E7SUFDQTtFQUNBO0VBRUFDO0lBQ0E7SUFDQTtNQUNBO01BQ0E7SUFDQTtFQUNBO0VBRUFDLDBDQUNBO0lBRUFDO01BQUE7TUFDQTtRQUNBO1VBQUE7VUFDQTtZQUFBQztVQUFBO1FBQ0E7VUFBQTtVQUNBO1lBQUFBO1VBQUE7UUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBQztNQUNBO1FBQ0FDO1FBQ0FDO1FBQ0FDO01BQ0E7TUFFQTtJQUNBO0lBRUFDO01BQ0E7UUFDQUM7UUFDQUM7TUFDQTtJQUNBO0VBQUEsRUFDQTtFQUVBQztJQUNBO0VBQ0E7O0VBRUFDO0lBQ0FDO01BQ0E7TUFDQTtRQUNBO01BQ0E7TUFDQTtRQUNBO01BQ0E7TUFDQTtJQUNBO0lBRUFDO01BQ0E7TUFDQTtRQUFBO01BQUE7TUFDQTtRQUNBO01BQ0E7TUFDQTtJQUNBO0lBRUFDO01BQ0E7TUFDQTtRQUNBO01BQ0E7UUFDQTtNQUNBO0lBQ0E7SUFFQUM7TUFDQTtRQUNBO1VBQUE3QztVQUFBOEM7UUFBQTtNQUNBO01BRUE7UUFDQTtVQUNBO1lBQUE5QztZQUFBOEM7VUFBQTtRQUNBO1FBQ0E7VUFBQTlDO1VBQUE4QztRQUFBO01BQ0E7TUFFQTtNQUNBO01BQ0E7UUFDQTtVQUNBOUM7VUFDQThDO1FBQ0E7TUFDQTtNQUVBO1FBQUE5QztRQUFBOEM7TUFBQTtJQUNBO0lBRUFDO01BQ0E7TUFDQTtRQUNBQztRQUNBQztRQUNBQztRQUNBQztNQUNBO1FBQ0FIO1FBQ0FDO1FBQ0FDO1FBQ0FDO01BQ0E7TUFDQTtRQUNBQztVQUFBN0M7VUFBQThDO1FBQUE7UUFDQTtNQUNBO01BQ0FEO1FBQ0FKO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FHO1FBQ0FDO1VBQ0FIO1lBQUE3QztZQUFBOEM7VUFBQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFHO01BQ0FKO1FBQ0FLO01BQ0E7SUFDQTtJQUNBQztNQUFBO01BQ0E7UUFDQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBQztNQUNBO01BQ0E7TUFDQTtJQUNBO0lBRUFDO01BQUE7TUFDQTtNQUNBO1FBQUFDO01BQUE7UUFDQTtRQUNBO1VBQ0FUO1lBQUE3QztZQUFBOEM7VUFBQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtRQUNBO1VBQ0FEO1lBQUE3QztZQUFBOEM7VUFBQTtRQUNBO01BQ0E7UUFDQTtNQUNBO0lBQ0E7SUFFQVM7TUFBQTtNQUNBO01BQ0E7UUFDQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBQztNQUFBO01BQ0E7TUFDQTtRQUFBRjtNQUFBO1FBQ0E7UUFDQTtVQUNBVDtZQUFBN0M7WUFBQThDO1VBQUE7VUFDQTtVQUNBO1VBQ0E7UUFDQTtVQUNBRDtZQUFBN0M7WUFBQThDO1VBQUE7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFXO01BQ0E7UUFDQVo7VUFDQWE7UUFDQTtNQUNBO0lBQ0E7SUFFQUM7TUFDQTtNQUNBO0lBQ0E7SUFFQUM7TUFDQTtNQUNBO1FBQ0FWO01BQ0E7TUFDQUw7UUFBQUs7TUFBQTtJQUNBO0lBRUFXO01BQUE7TUFDQTtRQUNBO1VBQ0E7VUFDQTtZQUNBQztZQUNBbkI7VUFDQTtVQUNBLGdCQUNBO1lBQUFsRDtZQUFBYztVQUFBLEdBQ0E7WUFBQWQ7WUFBQWM7VUFBQSxHQUNBO1lBQUFkO1lBQUFjO1VBQUEsRUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBd0Q7TUFBQTtNQUNBO1FBQUFDO01BQUE7UUFDQTtVQUNBO1VBQ0E7WUFDQTtjQUNBQztnQkFBQTtjQUFBO1lBQ0E7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBQztNQUNBO01BQ0E7TUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO01BQ0E7UUFDQTtRQUNBO01BQ0E7UUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBQztNQUFBO01BQ0E7TUFDQTtRQUNBO01BQ0E7TUFDQTtNQUVBO01BQ0E7UUFDQTtRQUNBO1VBQ0E5RDtRQUNBO1VBQ0FBO1FBQ0E7TUFDQTtNQUVBO1FBQ0E7UUFDQTtNQUNBO01BQ0E7TUFFQTtNQUNBO1FBQ0E7VUFBQTtRQUFBO1FBQ0E7VUFDQStEO1FBQ0E7TUFDQTtNQUVBO1FBQUEvRDtRQUFBK0Q7UUFBQUM7TUFBQTtNQUNBO1FBQ0FDO1FBQ0FDO1FBQ0FDO1VBQ0FuRTtVQUNBK0Q7VUFDQUM7UUFDQTtNQUNBO1FBQ0E7UUFDQTtRQUNBO1VBQ0E7VUFDQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBSTtNQUFBO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFBQUM7TUFBQTtRQUNBO1FBQ0E7UUFDQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBQztNQUFBO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFBQUQ7TUFBQTtRQUNBO1FBQ0E7UUFDQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBRTtNQUNBO0lBQ0E7SUFFQUM7TUFBQTtNQUNBO01BQ0E7TUFDQTtRQUFBSDtNQUFBO1FBQ0E7VUFDQTtVQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0E7VUFDQTtZQUNBO2NBQ0E7WUFDQTtjQUNBO1lBQ0E7Y0FDQTtjQUNBO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFFQUk7TUFDQWpDO1FBQ0FLO01BQ0E7SUFDQTtJQUVBNkI7TUFDQTtJQUNBO0lBRUFDO01BQ0EsdURBQ0EsNkRBQ0FqRixhQUNBO0lBQ0E7SUFFQWtGO01BQ0E7TUFDQTtNQUNBO1FBQ0E5RTtRQUNBQztRQUNBQztNQUNBO01BQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFFQTZFO01BQ0E7TUFDQTtRQUNBO1FBQ0E7TUFDQTtNQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFDO01BQUE7TUFDQTtRQUNBO1FBQ0E7TUFDQTtNQUVBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7VUFDQUM7WUFDQTtjQUNBO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFDO01BQ0E7UUFDQXhDO1VBQ0E3QztVQUNBOEM7UUFDQTtRQUNBO01BQ0E7TUFFQTtRQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBd0M7TUFDQTtJQUNBO0VBQ0E7RUFFQUM7SUFDQTtNQUNBO01BQ0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSwyQiIsImZpbGUiOiI5MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cblx0PHZpZXcgY2xhc3M9XCJoYWxsLXBhZ2VcIj5cblx0XHQ8dmlldyBjbGFzcz1cImhhbGwtcGFnZV9faGVhZGVyXCIgOnN0eWxlPVwieyBwYWRkaW5nVG9wOiBzdGF0dXNCYXJIZWlnaHQgKyAncHgnIH1cIj5cblx0XHRcdDx2aWV3IGNsYXNzPVwiaGFsbC1wYWdlX191c2VyLXJvd1wiIEBjbGljaz1cImhhbmRsZVVzZXJDbGlja1wiPlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImhhbGwtcGFnZV9fdXNlclwiPlxuXHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cImhhbGwtcGFnZV9fYXZhdGFyXCIgOnNyYz1cImNlbnRlclVzZXJJbmZvLmZ1bGxJbWdVcmwgfHwgJy9zdGF0aWMvaW1hZ2UvaWNfcGljQDJ4LnBuZydcIiBtb2RlPVwiYXNwZWN0RmlsbFwiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJoYWxsLXBhZ2VfX25hbWVcIj57eyBjZW50ZXJVc2VySW5mby5uYW1lIH19PC90ZXh0PlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaGFsbC1wYWdlX19zdGF0dXNcIiB2LWlmPVwidXNlckluZm8uYXVkaXRTdGF0dXMgPT09IDNcIiBAY2xpY2s9XCJvcGVuU3RhdHVzUGlja2VyXCI+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoYWxsLXBhZ2VfX3N0YXR1cy1kb3RcIiA6Y2xhc3M9XCJ7ICdoYWxsLXBhZ2VfX3N0YXR1cy1kb3QtLW9mZmxpbmUnOiBhY2NlcHRpbmdTdGF0dXMgPT09IDAgfVwiPjwvdmlldz5cblx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cImhhbGwtcGFnZV9fc3RhdHVzLXRleHRcIj57eyBhY2NlcHRpbmdTdGF0dXMgPT09IDEgPyAn5o6l5Y2V5LitJyA6ICflt7LkuIvnur8nIH19PC90ZXh0PlxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaGFsbC1wYWdlX19zdGF0dXMtYXJyb3dcIj7ilrw8L3RleHQ+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoYWxsLXBhZ2VfX3VzZXJcIiBzdHlsZT1cIm9wYWNpdHk6IDA7XCI+XG5cdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwiaGFsbC1wYWdlX19hdmF0YXJcIiA6c3JjPVwiY2VudGVyVXNlckluZm8uZnVsbEltZ1VybCB8fCAnL3N0YXRpYy9pbWFnZS9pY19waWNAMngucG5nJ1wiIG1vZGU9XCJhc3BlY3RGaWxsXCI+PC9pbWFnZT5cblx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cImhhbGwtcGFnZV9fbmFtZVwiPnt7IGNlbnRlclVzZXJJbmZvLm5hbWUgfX08L3RleHQ+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cblxuXHRcdFx0PHZpZXcgY2xhc3M9XCJoYWxsLXBhZ2VfX3N0YXRzXCI+XG5cdFx0XHRcdDx2aWV3IHYtZm9yPVwiaXRlbSBpbiBzdGF0c1wiIDprZXk9XCJpdGVtLmxhYmVsXCIgY2xhc3M9XCJoYWxsLXBhZ2VfX3N0YXQtaXRlbVwiPlxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaGFsbC1wYWdlX19zdGF0LXZhbHVlXCI+e3sgdXNlckluZm8uYXVkaXRTdGF0dXMgPT09IDMgPyBpdGVtLnZhbHVlIDogJy0nIH19PC90ZXh0PlxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaGFsbC1wYWdlX19zdGF0LWxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvdGV4dD5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXG5cdFx0XHQ8dmlldyBjbGFzcz1cImhhbGwtcGFnZV9fdGFic1wiPlxuXHRcdFx0XHQ8dmlldyB2LWZvcj1cInRhYiBpbiBkaXNwbGF5VGFic1wiIDprZXk9XCJ0YWIudmFsdWVcIiBjbGFzcz1cImhhbGwtcGFnZV9fdGFiXCIgOmNsYXNzPVwieyAnaGFsbC1wYWdlX190YWItLWFjdGl2ZSc6IGFjdGl2ZVRhYiA9PT0gdGFiLnZhbHVlIH1cIiBAY2xpY2s9XCJhY3RpdmVUYWIgPSB0YWIudmFsdWVcIj5cblx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cImhhbGwtcGFnZV9fdGFiLXRleHRcIj57eyB0YWIubGFiZWwgfX08L3RleHQ+XG5cdFx0XHRcdFx0PHRleHQgdi1pZj1cInRhYi5jb3VudFwiIGNsYXNzPVwiaGFsbC1wYWdlX190YWItY291bnRcIj57eyB1c2VySW5mby5hdWRpdFN0YXR1cyA9PT0gMyA/IHRhYi5jb3VudCA6ICcnIH19PC90ZXh0PlxuXHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJhY3RpdmVUYWIgPT09IHRhYi52YWx1ZVwiIGNsYXNzPVwiaGFsbC1wYWdlX190YWItbGluZVwiPjwvdmlldz5cblx0XHRcdFx0PC92aWV3Plx0XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaGFsbC1wYWdlX19maWx0ZXJcIiBAY2xpY2s9XCJ0b2dnbGVGaWx0ZXJQb3B1cCh0cnVlKVwiPlxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaGFsbC1wYWdlX19maWx0ZXItdGV4dFwiIDpjbGFzcz1cInsgJ2hhbGwtcGFnZV9fZmlsdGVyLXRleHQtLWFjdGl2ZSc6IHNob3dGaWx0ZXJQb3B1cCB9XCI+562b6YCJPC90ZXh0PlxuXHRcdFx0XHRcdDxpbWFnZSA6c3JjPVwic2hvd0ZpbHRlclBvcHVwID8gJy9zdGF0aWMvaW1hZ2UvaWNfc2hhaXh1YW5fc2VsQDJ4LnBuZycgOiAnL3N0YXRpYy9pbWFnZS9pY19zaGFpeHVhbkAyeC5wbmcnXCIgbW9kZT1cIndpZHRoRml4XCIgY2xhc3M9XCJoYWxsLXBhZ2VfX2ZpbHRlci1pY29uXCI+PC9pbWFnZT5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXHRcdDwvdmlldz5cblxuXHRcdDx2aWV3IHYtaWY9XCJzaG93RmlsdGVyUG9wdXBcIiBjbGFzcz1cImZpbHRlci1wb3B1cFwiIDpzdHlsZT1cInsgdG9wOiBoZWFkZXJIZWlnaHQgKyAncHgnLCBib3R0b206IHRhYmJhckhlaWdodCArICdweCcgfVwiIEBjbGljaz1cInRvZ2dsZUZpbHRlclBvcHVwKGZhbHNlKVwiPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJmaWx0ZXItcG9wdXBfX3BhbmVsXCIgQGNsaWNrLnN0b3A+XG5cdFx0XHRcdDxzY3JvbGwtdmlldyBjbGFzcz1cImZpbHRlci1wb3B1cF9fY29udGVudFwiIHNjcm9sbC15PlxuXHRcdFx0XHRcdDx2aWV3IHYtZm9yPVwic2VjdGlvbiBpbiBmaWx0ZXJTZWN0aW9uc1wiIDprZXk9XCJzZWN0aW9uLmtleVwiIGNsYXNzPVwiZmlsdGVyLXBvcHVwX19zZWN0aW9uXCI+XG5cdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cImZpbHRlci1wb3B1cF9fdGl0bGVcIj57eyBzZWN0aW9uLnRpdGxlIH19PC90ZXh0PlxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmaWx0ZXItcG9wdXBfX29wdGlvbnNcIj5cblx0XHRcdFx0XHRcdFx0PHZpZXdcblx0XHRcdFx0XHRcdFx0XHR2LWZvcj1cIm9wdGlvbiBpbiBzZWN0aW9uLm9wdGlvbnNcIlxuXHRcdFx0XHRcdFx0XHRcdDprZXk9XCJvcHRpb25cIlxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwiZmlsdGVyLXBvcHVwX19vcHRpb25cIlxuXHRcdFx0XHRcdFx0XHRcdDpjbGFzcz1cInsgJ2ZpbHRlci1wb3B1cF9fb3B0aW9uLS1hY3RpdmUnOiBzZWxlY3RlZEZpbHRlcnNbc2VjdGlvbi5rZXldID09PSBvcHRpb24gfVwiXG5cdFx0XHRcdFx0XHRcdFx0QGNsaWNrPVwic2VsZWN0RmlsdGVyKHNlY3Rpb24ua2V5LCBvcHRpb24pXCJcblx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiZmlsdGVyLXBvcHVwX19vcHRpb24tdGV4dFwiPnt7IG9wdGlvbiB9fTwvdGV4dD5cblx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PC9zY3JvbGwtdmlldz5cblxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImZpbHRlci1wb3B1cF9fYWN0aW9uc1wiPlxuXHRcdFx0XHRcdDxidXR0b24gY2xhc3M9XCJmaWx0ZXItcG9wdXBfX2J1dHRvbiBmaWx0ZXItcG9wdXBfX2J1dHRvbi0tcmVzZXRcIiBob3Zlci1jbGFzcz1cImZpbHRlci1wb3B1cF9fYnV0dG9uLS1ob3ZlclwiIEBjbGljaz1cInJlc2V0RmlsdGVyc1wiPumHjee9rjwvYnV0dG9uPlxuXHRcdFx0XHRcdDxidXR0b24gY2xhc3M9XCJmaWx0ZXItcG9wdXBfX2J1dHRvbiBmaWx0ZXItcG9wdXBfX2J1dHRvbi0tY29uZmlybVwiIGhvdmVyLWNsYXNzPVwiZmlsdGVyLXBvcHVwX19idXR0b24tLWhvdmVyXCIgQGNsaWNrPVwiY29uZmlybUZpbHRlcnNcIj7noa7orqQ8L2J1dHRvbj5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXHRcdDwvdmlldz5cblxuXHRcdDxzY3JvbGwtdmlldyBjbGFzcz1cImhhbGwtcGFnZV9fYm9keVwiIHNjcm9sbC15IDpzdHlsZT1cImJvZHlTdHlsZVwiPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJoYWxsLXBhZ2VfX3ZlcmlmaWVkXCIgdi1pZj1cInVzZXJJbmZvLmF1ZGl0U3RhdHVzICE9PSAzXCI+XG5cdFx0XHRcdDxpbWFnZSBzcmM9XCIvc3RhdGljL2ltYWdlL2RlZmF1bHRfdW52ZXJpZmllZEAyeC5wbmdcIiBtb2RlPVwid2lkdGhGaXhcIj48L2ltYWdlPlxuXHRcdFx0XHQ8YnV0dG9uIEBjbGljaz1cInRvRHJpdmVyQ2VydGlmaWNhdGlvblwiPuWOu+iupOivgTwvYnV0dG9uPlxuXHRcdFx0PC92aWV3PlxuXHRcdFx0PHZpZXcgdi1lbHNlLWlmPVwidXNlckluZm8uYXVkaXRTdGF0dXMgPT09IDMgJiYgYWNjZXB0aW5nU3RhdHVzID09PSAxICYmIGN1cnJlbnRPcmRlckxpc3QubGVuZ3RoXCIgY2xhc3M9XCJoYWxsLXBhZ2VfX2xpc3RcIj5cblx0XHRcdFx0PHZpZXcgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGN1cnJlbnRPcmRlckxpc3RcIiA6a2V5PVwiaXRlbS5pZFwiIGNsYXNzPVwib3JkZXItY2FyZFwiIEBjbGljaz1cImdvVG9PcmRlckRldGFpbChpdGVtLCBpbmRleClcIj5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX2hlYWRcIj5cblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9fdGltZVwiIHYtaWY9XCJpdGVtLnJlbWFpbk1pbnV0ZXMgPiAwXCI+XG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwib3JkZXItY2FyZF9fdGltZS1tYWluXCI+e3sgZm9ybWF0UmVtYWluVGltZShpdGVtLnJlbWFpbk1pbnV0ZXMpIH19PC90ZXh0PlxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX3RpbWUtc3ViXCI+6YCB6L6+PC90ZXh0PlxuXHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX190aW1lXCIgdi1lbHNlPlxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX3RpbWUtbWFpblwiPumFjemAgeW3sui2heaXtu+8jOivt+WwveW/q+mAgei+vjwvdGV4dD5cblx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJhY3RpdmVUYWIgPT09ICdoYWxsJ1wiIGNsYXNzPVwib3JkZXItY2FyZF9fcHJpY2Utd3JhcFwiPlxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX3ByaWNlXCI+wqV7eyBpdGVtLnBsYXRmb3JtUmV3YXJkQW1vdW50ID8gKGl0ZW0uZHJpdmVyRmVlICsgaXRlbS5wbGF0Zm9ybVJld2FyZEFtb3VudCkgLyAxMDAgOiAoaXRlbS5kcml2ZXJGZWUgLyAxMDApLnRvRml4ZWQoMikgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHQ8dmlldyB2LWVsc2UgY2xhc3M9XCJvcmRlci1jYXJkX19wcmljZS13cmFwIG9yZGVyLWNhcmRfX3ByaWNlLXdyYXAtLXNlcmlhbC1vbmx5XCI+XG5cdFx0XHRcdFx0XHRcdDx0ZXh0IHYtaWY9XCJpdGVtLmNvZGVcIiBjbGFzcz1cIm9yZGVyLWNhcmRfX3NlcmlhbFwiPiN7eyBpbmRleCArIDEgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0PC92aWV3PlxuXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19tZXRhXCI+XG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX3RhZ3NcIj5cblx0XHRcdFx0XHRcdFx0PGltYWdlIHYtaWY9XCJpdGVtLmlzVXJnZW50ID09PSAxXCIgY2xhc3M9XCJvcmRlci1jYXJkX190YWctaW1nXCIgc3JjPVwiL3N0YXRpYy9pbWFnZS9pY19qaXN1ZGFAMngucG5nXCIgbW9kZT1cIndpZHRoRml4XCI+PC9pbWFnZT5cblx0XHRcdFx0XHRcdFx0PGltYWdlIHYtZWxzZSBjbGFzcz1cIm9yZGVyLWNhcmRfX3RhZy1pbWdcIiBzcmM9XCIvc3RhdGljL2ltYWdlL2ljX2JpYW9zdWRhQDJ4LnBuZ1wiIG1vZGU9XCJ3aWR0aEZpeFwiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0XHRcdDx0ZXh0IHYtaWY9XCJpdGVtLmlzVmFsdWFibGUgPT09IHRydWVcIiBjbGFzcz1cIm9yZGVyLWNhcmRfX3RhZyBvcmRlci1jYXJkX190YWctLW9yYW5nZVwiPui0temHjeeJqeWTgTwvdGV4dD5cblx0XHRcdFx0XHRcdFx0PHRleHQgdi1lbHNlIGNsYXNzPVwib3JkZXItY2FyZF9fdGFnIG9yZGVyLWNhcmRfX3RhZy0tYmx1ZVwiPnt7IGl0ZW0uZ29vZExldmVsTmFtZSB9fTwvdGV4dD5cblx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdDx0ZXh0IHYtaWY9XCJhY3RpdmVUYWIgPT09ICdoYWxsJyAmJiBpdGVtLnBsYXRmb3JtUmV3YXJkQW1vdW50XCIgY2xhc3M9XCJvcmRlci1jYXJkX19leHRyYVwiPuWQq+WKoOaApcKle3sgKGl0ZW0ucGxhdGZvcm1SZXdhcmRBbW91bnQgLyAxMDApLnRvRml4ZWQoMikgfX08L3RleHQ+XG5cdFx0XHRcdFx0PC92aWV3PlxuXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19yb3V0ZVwiPlxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19yb3V0ZS1zaWRlXCI+XG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9fZGlzdGFuY2UtYmxvY2sgb3JkZXItY2FyZF9fZGlzdGFuY2UtYmxvY2stLXRvcFwiPlxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwib3JkZXItY2FyZF9fZGlzdGFuY2UtdmFsdWVcIj57eyBmb3JtYXREaXN0YW5jZVBhcnRzKGl0ZW0uZGVwb3NpdERpc3RhbmNlKS52YWx1ZSB9fTwvdGV4dD5cblx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX2Rpc3RhbmNlLXVuaXRcIj57eyBmb3JtYXREaXN0YW5jZVBhcnRzKGl0ZW0uZGVwb3NpdERpc3RhbmNlKS51bml0IH19PC90ZXh0PlxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9fbGluZVwiPjwvdmlldz5cblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19kaXN0YW5jZS1ibG9jayBvcmRlci1jYXJkX19kaXN0YW5jZS1ibG9jay0tYm90dG9tXCI+XG5cdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJvcmRlci1jYXJkX19kaXN0YW5jZS12YWx1ZVwiPnt7IGZvcm1hdERpc3RhbmNlUGFydHMoaXRlbS50YWtlRGlzdGFuY2UpLnZhbHVlIH19PC90ZXh0PlxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwib3JkZXItY2FyZF9fZGlzdGFuY2UtdW5pdFwiPnt7IGZvcm1hdERpc3RhbmNlUGFydHMoaXRlbS50YWtlRGlzdGFuY2UpLnVuaXQgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9fcm91dGUtbWFpblwiPlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX3JvdXRlLWl0ZW1cIj5cblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX3JvdXRlLXRleHRzXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX3JvdXRlLXRpdGxlXCI+e3sgaXRlbS5kZXBvc2l0U2hvcE5hbWUgfX3lpKfoi4/miZPmiZPnrpc8L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX3JvdXRlLWRlc2NcIj57eyBpdGVtLmRlcG9zaXRTaG9wQWRkcmVzcyB9fTwvdGV4dD5cblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIi9zdGF0aWMvaW1hZ2UvaWNfZGFvaGFuZ0AyeC5wbmdcIiBtb2RlPVwid2lkdGhGaXhcIiBjbGFzcz1cIm9yZGVyLWNhcmRfX25hdlwiIEBjbGljay5zdG9wPVwibmF2aWdhdGVUb0FkZHJlc3MoaXRlbSwgJ2RlcG9zaXQnKVwiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19yb3V0ZS1pdGVtIG9yZGVyLWNhcmRfX3JvdXRlLWl0ZW0tLWRlc3RpbmF0aW9uXCI+XG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19yb3V0ZS10ZXh0c1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHRlbXBsYXRlIHYtaWY9XCJpdGVtLnRha2VTaG9wSWRcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJvcmRlci1jYXJkX19yb3V0ZS10aXRsZVwiPnt7IGl0ZW0udGFrZU5hbWUgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwib3JkZXItY2FyZF9fcm91dGUtZGVzY1wiPnt7IGl0ZW0udGFrZUFkZHJlc3MgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3RlbXBsYXRlPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgdi1lbHNlIGNsYXNzPVwib3JkZXItY2FyZF9fcm91dGUtdGl0bGVcIj57eyBpdGVtLnRha2VBZGRyZXNzIH19PC90ZXh0PlxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiL3N0YXRpYy9pbWFnZS9pY19kYW9oYW5nQDJ4LnBuZ1wiIG1vZGU9XCJ3aWR0aEZpeFwiIGNsYXNzPVwib3JkZXItY2FyZF9fbmF2XCIgQGNsaWNrLnN0b3A9XCJuYXZpZ2F0ZVRvQWRkcmVzcyhpdGVtLCAndGFrZScpXCI+PC9pbWFnZT5cblx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdDwvdmlldz5cblxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9fZ29vZHNcIiB2LWlmPVwiaXRlbS5pdGVtcyAmJiBpdGVtLml0ZW1zLmxlbmd0aCA+IDBcIiBAY2xpY2suc3RvcD1cInRvZ2dsZUdvb2RzRXhwYW5kKGl0ZW0uaWQpXCI+XG5cdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX2dvb2RzLXRleHRcIj57eyBnZXRHb29kc1RleHQoaXRlbS5pdGVtcywgaXRlbS5pZCkgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHQ8dS1pY29uIHYtaWY9XCJnZXRHb29kc1RleHQoaXRlbS5pdGVtcywgaXRlbS5pZCkubGVuZ3RoID4gMjBcIiBuYW1lPVwiYXJyb3ctZG93blwiIDpjbGFzcz1cInsgJ29yZGVyLWNhcmRfX2dvb2RzLWFycm93LS1leHBhbmRlZCc6IGV4cGFuZGVkR29vZHNJZHMuaW5jbHVkZXMoaXRlbS5pZCkgfVwiIHNpemU9XCIxMlwiIGNvbG9yPVwiI2E0YTliMVwiPjwvdS1pY29uPlxuXHRcdFx0XHRcdDwvdmlldz5cblxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9fYWN0aW9uc1wiIDpjbGFzcz1cIidvcmRlci1jYXJkX19hY3Rpb25zLS0nICsgYWN0aXZlVGFiXCI+XG5cdFx0XHRcdFx0XHQ8dGVtcGxhdGUgdi1pZj1cImFjdGl2ZVRhYiA9PT0gJ3BpY2t1cCdcIj5cblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19pY29uLWFjdGlvbnNcIj5cblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX2ljb24tYWN0aW9uXCIgQGNsaWNrLnN0b3A9XCJoYW5kbGVDYW5jZWxPcmRlcihpdGVtKVwiPlxuXHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cIm9yZGVyLWNhcmRfX2FjdGlvbi1pY29uXCIgc3JjPVwiL3N0YXRpYy9pbWFnZS9pY19jYW5jbGVAMngucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX2FjdGlvbi10ZXh0XCI+5Y+W5raIPC90ZXh0PlxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX2ljb24tYWN0aW9uXCIgQGNsaWNrLnN0b3A9XCJoYW5kbGVDYWxsKGl0ZW0pXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJvcmRlci1jYXJkX19hY3Rpb24taWNvblwiIHNyYz1cIi9zdGF0aWMvaW1hZ2UvaWNfY2FsbEAyeC5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT5cblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwib3JkZXItY2FyZF9fYWN0aW9uLXRleHRcIj7ogZTns7s8L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdDxidXR0b24gY2xhc3M9XCJvcmRlci1jYXJkX19idXR0b24gb3JkZXItY2FyZF9fYnV0dG9uLS1jb2RlXCIgaG92ZXItY2xhc3M9XCJvcmRlci1jYXJkX19idXR0b24tLWhvdmVyXCIgQGNsaWNrLnN0b3A9XCJoYW5kbGVTaG93UGlja3VwQ29kZShpdGVtKVwiPuWPlui0p+eggTwvYnV0dG9uPlxuXHRcdFx0XHRcdFx0PC90ZW1wbGF0ZT5cblx0XHRcdFx0XHRcdDx0ZW1wbGF0ZSB2LWVsc2UtaWY9XCJhY3RpdmVUYWIgPT09ICdkZWxpdmVyaW5nJ1wiPlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX2ljb24tYWN0aW9ucyBvcmRlci1jYXJkX19pY29uLWFjdGlvbnMtLXNpbmdsZVwiPlxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9faWNvbi1hY3Rpb25cIiBAY2xpY2suc3RvcD1cImhhbmRsZUNhbGwoaXRlbSlcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cIm9yZGVyLWNhcmRfX2FjdGlvbi1pY29uXCIgc3JjPVwiL3N0YXRpYy9pbWFnZS9pY19jYWxsQDJ4LnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJvcmRlci1jYXJkX19hY3Rpb24tdGV4dFwiPuiBlOezuzwvdGV4dD5cblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0PGJ1dHRvbiBjbGFzcz1cIm9yZGVyLWNhcmRfX2J1dHRvbiBvcmRlci1jYXJkX19idXR0b24tLWNvZGVcIiBob3Zlci1jbGFzcz1cIm9yZGVyLWNhcmRfX2J1dHRvbi0taG92ZXJcIiBAY2xpY2suc3RvcD1cImhhbmRsZVNob3dQaWNrdXBDb2RlKGl0ZW0pXCI+5a2Y5Lu256CBPC9idXR0b24+XG5cdFx0XHRcdFx0XHQ8L3RlbXBsYXRlPlxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB2LWVsc2UgY2xhc3M9XCJvcmRlci1jYXJkX19idXR0b25cIiBob3Zlci1jbGFzcz1cIm9yZGVyLWNhcmRfX2J1dHRvbi0taG92ZXJcIiBAY2xpY2suc3RvcD1cImhhbmRsZUdyYWJPcmRlcihpdGVtKVwiPueri+WNs+aKouWNlTwvYnV0dG9uPlxuXHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXG5cdFx0XHQ8dmlldyB2LWVsc2UgY2xhc3M9XCJoYWxsLXBhZ2VfX2VtcHR5XCI+XG5cdFx0XHRcdDxpbWFnZSBjbGFzcz1cImhhbGwtcGFnZV9fZW1wdHktaWNvblwiIDpzcmM9XCJhY2NlcHRpbmdTdGF0dXMgPT09IDAgPyAnL3N0YXRpYy9pbWFnZS9kZWZhdWx0X25vZGF0YV9ncmV5QDJ4LnBuZycgOiAnL3N0YXRpYy9pbWFnZS9kZWZhdWx0X25vZGF0YUAyeC5wbmcnXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC9zY3JvbGwtdmlldz5cblx0XHRcblx0XHQ8IS0tIOWPlua2iOiuouWNlSAtLT5cblx0XHQ8dS1tb2RhbFxuXHRcdFx0OnNob3c9XCJzaG93XCJcblx0XHRcdHNob3dDYW5jZWxCdXR0b25cblx0XHRcdEBjYW5jZWw9XCJzaG93ID0gZmFsc2VcIlxuXHRcdFx0Y2FuY2VsQ29sb3I9XCIjNjY2NjY2XCJcblx0XHRcdGNvbmZpcm1Db2xvcj1cIiMwMDU1RkZcIlxuXHRcdFx0dGl0bGU9XCLlj5bmtojorqLljZXnoa7orqRcIlxuXHRcdFx0QGNvbmZpcm09XCJjb25maXJtQ2FuY2VsT3JkZXJcIj5cblx0XHRcdDx2aWV3IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO2NvbG9yOiAjMzMzMzMzO2ZvbnQtc2l6ZTogMjhycHg7Zm9udC13ZWlnaHQ6IDQwMDtcIj5cblx0XHRcdFx05oKo5LuK5pel6L+Y5Y+v5Y+W5raIIHt7IGNhbmNlbFJlbWFpbiB9fSDmrKHorqLljZXvvIzmrKHmlbDnlKjlsL3lkI7ku4rml6XlsIbml6Dms5XmjqXljZXvvIzmmK/lkKbnoa7orqTlj5bmtojvvJ9cblx0XHRcdDwvdmlldz5cblx0XHQ8L3UtbW9kYWw+XG5cblx0XHQ8IS0tIOeri+WNs+aKouWNlSAtLT5cblx0XHQ8dS1tb2RhbFxuXHRcdFx0OnNob3c9XCJzaG93R3JhYk1vZGFsXCJcblx0XHRcdHNob3dDYW5jZWxCdXR0b25cblx0XHRcdEBjYW5jZWw9XCJzaG93R3JhYk1vZGFsID0gZmFsc2VcIlxuXHRcdFx0Y2FuY2VsQ29sb3I9XCIjNjY2NjY2XCJcblx0XHRcdGNvbmZpcm1Db2xvcj1cIiMwMDU1RkZcIlxuXHRcdFx0dGl0bGU9XCLmuKnppqjmj5DnpLpcIlxuXHRcdFx0QGNvbmZpcm09XCJjb25maXJtR3JhYk9yZGVyXCI+XG5cdFx0XHQ8dmlldyBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtjb2xvcjogIzMzMzMzMztmb250LXNpemU6IDI4cnB4O2ZvbnQtd2VpZ2h0OiA0MDA7XCI+XG5cdFx0XHRcdHt7IHNlbGVjdGVkR3JhYk9yZGVyICYmIHNlbGVjdGVkR3JhYk9yZGVyLmhhc092ZXJzaXplZCA9PT0gMSA/ICfmnKzorqLljZXmnInnibnlpKfku7blsLrlr7jooYzmnY7vvIzor7fnoa7orqTmmK/lkKbnu6fnu63miqLljZXvvJ8nIDogJ+aYr+WQpuehruiupOaOpeWNle+8nycgfX1cblx0XHRcdDwvdmlldz5cblx0XHQ8L3UtbW9kYWw+XG5cdFx0XG5cdFx0PCEtLSDlj5botKfnoIEv5a2Y5Lu256CBIC0tPlxuXHRcdDx1LXBvcHVwIDpzaG93PVwic2hvdzFcIiByb3VuZD1cIjIwXCIgbW9kZT1cImJvdHRvbVwiPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJxcmNvZGVcIj5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJxcmNvZGUtdGl0bGVcIj5cblx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiL3N0YXRpYy9pbWFnZS9pY19jbG9zZUAyeC5wbmdcIiBtb2RlPVwid2lkdGhGaXhcIiBzdHlsZT1cIm9wYWNpdHk6IDA7XCI+PC9pbWFnZT5cblx0XHRcdFx0XHQ8dGV4dD57eyBhY3RpdmVUYWIgPT09ICdkZWxpdmVyaW5nJyA/ICflrZjku7bnoIEnIDogJ+WPlui0p+eggScgfX08L3RleHQ+XG5cdFx0XHRcdFx0PGltYWdlIHNyYz1cIi9zdGF0aWMvaW1hZ2UvaWNfY2xvc2VAMngucG5nXCIgbW9kZT1cIndpZHRoRml4XCIgQGNsaWNrPVwic2hvdzEgPSBmYWxzZVwiPjwvaW1hZ2U+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJxcmNvZGUtaW1hZ2VcIj5cblx0XHRcdFx0XHQ8aW1hZ2Ugdi1pZj1cInNlbGVjdGVkUGlja3VwT3JkZXIgJiYgc2VsZWN0ZWRQaWNrdXBPcmRlci5kcml2ZXJWZXJpZnlDb2RlXCIgOnNyYz1cIidodHRwczovL2FwaS5xcnNlcnZlci5jb20vdjEvY3JlYXRlLXFyLWNvZGUvP3NpemU9MjAweDIwMCZkYXRhPScgKyBzZWxlY3RlZFBpY2t1cE9yZGVyLmRyaXZlclZlcmlmeUNvZGVcIiBtb2RlPVwid2lkdGhGaXhcIj48L2ltYWdlPlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwicXJjb2RlLWJ0blwiIGhvdmVyLWNsYXNzPVwicXJjb2RlLWJ0bi0taG92ZXJcIiBAY2xpY2s9XCJzaG93MSA9IGZhbHNlXCI+5YWz6ZetPC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXHRcdDwvdS1wb3B1cD5cblxuXHRcdDx1LXBvcHVwIDpzaG93PVwic2hvd1Bob3RvRGVsaXZlclBvcHVwXCIgcm91bmQ9XCIyMFwiIG1vZGU9XCJib3R0b21cIj5cblx0XHRcdDx2aWV3IGNsYXNzPVwicGhvdG8tZGVsaXZlclwiPlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX2hlYWRlclwiPlxuXHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX2Nsb3NlLXBsYWNlaG9sZGVyXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJwaG90by1kZWxpdmVyX190aXRsZVwiPuaLjeeFp+mAgei+vjwvdGV4dD5cblx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJwaG90by1kZWxpdmVyX19jbG9zZVwiIG1vZGU9XCJhc3BlY3RGaXRcIiBAY2xpY2s9XCJzaG93UGhvdG9EZWxpdmVyUG9wdXAgPSBmYWxzZVwiPjwvaW1hZ2U+XG5cdFx0XHRcdDwvdmlldz5cblxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX3NlY3Rpb25cIj5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX2xhYmVsLXJvd1wiPlxuXHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJwaG90by1kZWxpdmVyX19sYWJlbFwiPuaLjeaRhOmAgei+vueFp+eJhzwvdGV4dD5cblx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwicGhvdG8tZGVsaXZlcl9fcmVxdWlyZWRcIj4qPC90ZXh0PlxuXHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJwaG90by1kZWxpdmVyX19oaW50XCI+5pyA5aSaM+W8oOeFp+eJhzwvdGV4dD5cblx0XHRcdFx0XHQ8L3ZpZXc+XG5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX3Bob3Rvc1wiPlxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwaG90by1kZWxpdmVyX191cGxvYWQtY2FyZFwiPlxuXHRcdFx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJwaG90by1kZWxpdmVyX191cGxvYWQtaWNvblwiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX3VwbG9hZC10ZXh0XCI+54K55Ye75ouN54WnPC90ZXh0PlxuXHRcdFx0XHRcdFx0PC92aWV3PlxuXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX3ByZXZpZXctY2FyZFwiPlxuXHRcdFx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJwaG90by1kZWxpdmVyX19wcmV2aWV3LWltYWdlXCIgbW9kZT1cImFzcGVjdEZpbGxcIj48L2ltYWdlPlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX3ByZXZpZXctbWFza1wiPlxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwicGhvdG8tZGVsaXZlcl9fcHJldmlldy1kZWxldGVcIj7liKDpmaQ8L3RleHQ+XG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDwvdmlldz5cblxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX3NlY3Rpb24gcGhvdG8tZGVsaXZlcl9fc2VjdGlvbi0tcmVtYXJrXCI+XG5cdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJwaG90by1kZWxpdmVyX19yZW1hcmstdGl0bGVcIj7lpIfms6jkv6Hmga88L3RleHQ+XG5cdFx0XHRcdFx0PHRleHRhcmVhIGNsYXNzPVwicGhvdG8tZGVsaXZlcl9fdGV4dGFyZWFcIiBtYXhsZW5ndGg9XCIyMDBcIiBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpVwiIHBsYWNlaG9sZGVyLXN0eWxlPVwiY29sb3I6ICNjN2NiZDM7XCIgLz5cblx0XHRcdFx0PC92aWV3PlxuXG5cdFx0XHRcdDxidXR0b24gY2xhc3M9XCJwaG90by1kZWxpdmVyX19zdWJtaXRcIiBob3Zlci1jbGFzcz1cInBob3RvLWRlbGl2ZXJfX3N1Ym1pdC0taG92ZXJcIiBAY2xpY2s9XCJzaG93UGhvdG9EZWxpdmVyUG9wdXAgPSBmYWxzZVwiPuehruiupOmAgei+vjwvYnV0dG9uPlxuXHRcdFx0PC92aWV3PlxuXHRcdDwvdS1wb3B1cD5cblxuXHRcdDx1LXBpY2tlclxuXHRcdFx0OnNob3c9XCJzaG93U3RhdHVzUGlja2VyXCJcblx0XHRcdGNvbmZpcm1Db2xvcj1cIiMxMEIyRkFcIlxuXHRcdFx0a2V5TmFtZT1cInRleHRcIlxuXHRcdFx0OmNvbHVtbnM9XCJbc3RhdHVzT3B0aW9uc11cIlxuXHRcdFx0QGNvbmZpcm09XCJjb25maXJtU3RhdHVzXCJcblx0XHRcdEBjYW5jZWw9XCJzaG93U3RhdHVzUGlja2VyID0gZmFsc2VcIiAvPlxuXHQ8L3ZpZXc+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuXHRpbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnXG5cdGV4cG9ydCBkZWZhdWx0IHtcblx0XHRkYXRhKCkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dHRzOiBudWxsLFxuXHRcdFx0XHRzaG93OiBmYWxzZSxcblx0XHRcdFx0c2hvdzE6IGZhbHNlLFxuXHRcdFx0XHRzaG93R3JhYk1vZGFsOiBmYWxzZSxcblx0XHRcdFx0c2VsZWN0ZWRHcmFiT3JkZXI6IG51bGwsXG5cdFx0XHRcdHNlbGVjdGVkQ2FuY2VsT3JkZXI6IG51bGwsXG5cdFx0XHRcdGNhbmNlbFJlbWFpbjogMCxcblx0XHRcdFx0c2VsZWN0ZWRQaWNrdXBPcmRlcjogbnVsbCxcblx0XHRcdFx0c2hvd1Bob3RvRGVsaXZlclBvcHVwOiBmYWxzZSxcblx0XHRcdFx0cm91dGVJbmZvOiBudWxsLFxuXHRcdFx0XHRzdGF0dXNCYXJIZWlnaHQ6IDAsXG5cdFx0XHRcdGhlYWRlckhlaWdodDogMCxcblx0XHRcdFx0dGFiYmFySGVpZ2h0OiAwLFxuXHRcdFx0XHRzY3JvbGxIZWlnaHQ6IDAsXG5cdFx0XHRcdHNob3dGaWx0ZXJQb3B1cDogZmFsc2UsXG5cdFx0XHRcdGFjY2VwdGluZ1N0YXR1czogMCxcblx0XHRcdFx0c2hvd1N0YXR1c1BpY2tlcjogZmFsc2UsXG5cdFx0XHRcdHN0YXR1c09wdGlvbnM6IFtcblx0XHRcdFx0XHR7IHRleHQ6ICfkuIrnur8nLCB2YWx1ZTogMSB9LFxuXHRcdFx0XHRcdHsgdGV4dDogJ+S4i+e6vycsIHZhbHVlOiAwIH1cblx0XHRcdFx0XSxcblx0XHRcdFx0Y2VudGVyVXNlckluZm86IHt9LFxuXHRcdFx0XHRhY3RpdmVUYWI6ICdoYWxsJyxcblx0XHRcdFx0ZXhwYW5kZWRHb29kc0lkczogW10sXG5cdFx0XHRcdGNhdGVnb3J5TGlzdDogW10sXG5cdFx0XHRcdGZpbHRlclNlY3Rpb25zOiBbXG5cdFx0XHRcdFx0eyBrZXk6ICdzb3J0JywgdGl0bGU6ICfmjpLluo8nLCBvcHRpb25zOiBbJ+e7vOWQiOaOkuW6jycsICfot53nprvmnIDov5EnXSB9LFxuXHRcdFx0XHRcdHsga2V5OiAnbGV2ZWwnLCB0aXRsZTogJ+eJqeWTgeetiee6pycsIG9wdGlvbnM6IFsn5LiN6ZmQJ10gfSxcblx0XHRcdFx0XHR7IGtleTogJ2Rpc3RhbmNlJywgdGl0bGU6ICfkvY3nva7ojIPlm7QnLCBvcHRpb25zOiBbJ+S4jemZkCcsICc1MDBtJywgJzFrbScsICcya20nLCAnM2ttJywgJzRrbScsICc1a20nLCAnNmttJywgJzdrbSddIH1cblx0XHRcdFx0XSxcblx0XHRcdFx0c2VsZWN0ZWRGaWx0ZXJzOiB7XG5cdFx0XHRcdFx0c29ydDogJ+e7vOWQiOaOkuW6jycsXG5cdFx0XHRcdFx0bGV2ZWw6ICfkuI3pmZAnLFxuXHRcdFx0XHRcdGRpc3RhbmNlOiAn5LiN6ZmQJ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRzdGF0czogW1xuXHRcdFx0XHRcdHsgdmFsdWU6ICctJywgbGFiZWw6ICfmnI3liqHliIYnIH0sXG5cdFx0XHRcdFx0eyB2YWx1ZTogJy0nLCBsYWJlbDogJ+S7iuaXpemihOiuoeS9o+mHkScgfSxcblx0XHRcdFx0XHR7IHZhbHVlOiAnLScsIGxhYmVsOiAn5LuK5pel5o6l5Y2VJyB9XG5cdFx0XHRcdF0sXG5cdFx0XHRcdHRhYnM6IFtcblx0XHRcdFx0XHR7IGxhYmVsOiAn5oqi5Y2V5aSn5Y6FJywgdmFsdWU6ICdoYWxsJyB9LFxuXHRcdFx0XHRcdHsgbGFiZWw6ICflvoXlj5botKcnLCB2YWx1ZTogJ3BpY2t1cCcgfSxcblx0XHRcdFx0XHR7IGxhYmVsOiAn6YWN6YCB5LitJywgdmFsdWU6ICdkZWxpdmVyaW5nJyB9XG5cdFx0XHRcdF0sXG5cdFx0XHRcdG9yZGVyTGlzdDogW10sXG5cdFx0XHRcdHBpY2t1cE9yZGVyTGlzdDogW10sXG5cdFx0XHRcdGRlbGl2ZXJpbmdPcmRlckxpc3Q6IFtdLFxuXHRcdFx0XHRoYWxsUGFnZTogMSxcblx0XHRcdFx0aGFsbFBhZ2VTaXplOiAxMCxcblx0XHRcdFx0aGFsbExvYWRpbmc6IGZhbHNlLFxuXHRcdFx0XHRoYWxsSGFzTW9yZTogdHJ1ZSxcblx0XHRcdFx0cGlja3VwTG9hZGluZzogZmFsc2UsXG5cdFx0XHRcdGRlbGl2ZXJpbmdMb2FkaW5nOiBmYWxzZSxcblx0XHRcdFx0YWN0aXZlT3JkZXJDb3VudDogbnVsbFxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHR3YXRjaDoge1xuXHRcdFx0YWN0aXZlVGFiKG5ld1ZhbCkge1xuXHRcdFx0XHR0aGlzLmxvYWRPcmRlcnNCeVRhYihuZXdWYWwpXG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdG9uTG9hZCgpIHtcblx0XHRcdGNvbnN0IHN5c3RlbUluZm8gPSB1bmkuZ2V0U3lzdGVtSW5mb1N5bmMoKVxuXHRcdFx0Y29uc3Qgc2FmZUJvdHRvbSA9IHN5c3RlbUluZm8uc2FmZUFyZWFJbnNldHMgPyBzeXN0ZW1JbmZvLnNhZmVBcmVhSW5zZXRzLmJvdHRvbSB8fCAwIDogMFxuXHRcdFx0Y29uc3Qgd2luZG93SGVpZ2h0ID0gc3lzdGVtSW5mby53aW5kb3dIZWlnaHQgfHwgMFxuXHRcdFx0dGhpcy5zdGF0dXNCYXJIZWlnaHQgPSBzeXN0ZW1JbmZvLnN0YXR1c0JhckhlaWdodCB8fCAwXG5cdFx0XHR0aGlzLmhlYWRlckhlaWdodCA9IHRoaXMuc3RhdHVzQmFySGVpZ2h0ICsgdW5pLnVweDJweCgzMDgpXG5cdFx0XHR0aGlzLnRhYmJhckhlaWdodCA9IHVuaS51cHgycHgoMTAwKSArIHNhZmVCb3R0b21cblx0XHRcdHRoaXMuc2Nyb2xsSGVpZ2h0ID0gTWF0aC5tYXgod2luZG93SGVpZ2h0IC0gdGhpcy5oZWFkZXJIZWlnaHQsIDApXG5cdFx0XHRpZiAodGhpcy51c2VySW5mby5hdWRpdFN0YXR1cyA9PT0gOTkpIHJldHVybjtcblx0XHRcdHRoaXMuYWNjZXB0aW5nU3RhdHVzID0gdGhpcy51c2VySW5mby5hY2NlcHRpbmdTdGF0dXMgfHwgMFxuXHRcdFx0dGhpcy5sb2FkT3JkZXJzQnlUYWIodGhpcy5hY3RpdmVUYWIpXG5cdFx0fSxcblxuXHRcdG9uU2hvdygpIHtcblx0XHRcdHRoaXMuZ2V0Q2VudGVySW5mbygpXG5cdFx0XHR0aGlzLmdldENhdGVnb3J5TGlzdERhdGEoKVxuXHRcdFx0dGhpcy5nZXRBY3RpdmVPcmRlckNvdW50KClcblx0XHR9LFxuXG5cdFx0b25SZWFjaEJvdHRvbSgpIHtcblx0XHRcdGlmICh0aGlzLmFjY2VwdGluZ1N0YXR1cyA9PT0gMCkgcmV0dXJuO1xuXHRcdFx0aWYgKHRoaXMuYWN0aXZlVGFiID09PSAnaGFsbCcpIHtcblx0XHRcdFx0dGhpcy5oYWxsUGFnZSsrXG5cdFx0XHRcdHRoaXMuZ2V0SGFsbE9yZGVycygpXG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGNvbXB1dGVkOiB7XG5cdFx0XHQuLi5tYXBTdGF0ZShbJ3VzZXJJbmZvJywgJ3Rva2VuJ10pLFxuXG5cdFx0XHRkaXNwbGF5VGFicygpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMudGFicy5tYXAodGFiID0+IHtcblx0XHRcdFx0XHRpZiAodGFiLnZhbHVlID09PSAncGlja3VwJykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHsgLi4udGFiLCBjb3VudDogdGhpcy5hY3RpdmVPcmRlckNvdW50Py5ncmFiYmVkQ291bnQgfVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGFiLnZhbHVlID09PSAnZGVsaXZlcmluZycpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7IC4uLnRhYiwgY291bnQ6IHRoaXMuYWN0aXZlT3JkZXJDb3VudD8uZGVsaXZlcmluZ0NvdW50IH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRhYlxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblx0XHRcdFxuXHRcdFx0Y3VycmVudE9yZGVyTGlzdCgpIHtcblx0XHRcdFx0Y29uc3Qgb3JkZXJNYXAgPSB7XG5cdFx0XHRcdFx0aGFsbDogdGhpcy5vcmRlckxpc3QsXG5cdFx0XHRcdFx0cGlja3VwOiB0aGlzLnBpY2t1cE9yZGVyTGlzdCxcblx0XHRcdFx0XHRkZWxpdmVyaW5nOiB0aGlzLmRlbGl2ZXJpbmdPcmRlckxpc3Rcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBvcmRlck1hcFt0aGlzLmFjdGl2ZVRhYl0gfHwgW11cblx0XHRcdH0sXG5cblx0XHRcdGJvZHlTdHlsZSgpIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRtYXJnaW5Ub3A6IHRoaXMuaGVhZGVySGVpZ2h0ICsgJ3B4Jyxcblx0XHRcdFx0XHRoZWlnaHQ6IHRoaXMuc2Nyb2xsSGVpZ2h0ICsgJ3B4J1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdG9uUmVhZHkoKSB7XG5cdFx0XHR0aGlzLmluaXRUVFMoKSAvLyDpobXpnaLmuLLmn5PlrozmiJDliJ3lp4vljJbor63pn7Ncblx0XHR9LFxuXG5cdFx0bWV0aG9kczoge1xuXHRcdFx0Zm9ybWF0UmVtYWluVGltZShtaW51dGVzKSB7XG5cdFx0XHRcdGlmICghbWludXRlcykgcmV0dXJuIDBcblx0XHRcdFx0aWYgKG1pbnV0ZXMgPT09IDApIHtcblx0XHRcdFx0XHRyZXR1cm4gJ+mFjemAgeW3sui2heaXtidcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAobWludXRlcyA+PSA2MCkge1xuXHRcdFx0XHRcdHJldHVybiAobWludXRlcyAvIDYwKS50b0ZpeGVkKDIpICsgJ+Wwj+aXtuWGhSdcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbWludXRlcyArICfliIbpkp/lhoUnXG5cdFx0XHR9LFxuXG5cdFx0XHRnZXRHb29kc1RleHQoaXRlbXMsIGl0ZW1JZCkge1xuXHRcdFx0XHRpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuICfml6AnXG5cdFx0XHRcdGNvbnN0IHRleHQgPSBpdGVtcy5tYXAoaSA9PiBgJHtpLm5hbWV9KiR7aS5xdWFudGl0eX1gKS5qb2luKCfjgIEnKVxuXHRcdFx0XHRpZiAodGV4dC5sZW5ndGggPiAyMCAmJiAhdGhpcy5leHBhbmRlZEdvb2RzSWRzLmluY2x1ZGVzKGl0ZW1JZCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gdGV4dC5zdWJzdHJpbmcoMCwgMjApICsgJy4uLidcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGV4dFxuXHRcdFx0fSxcblxuXHRcdFx0dG9nZ2xlR29vZHNFeHBhbmQoaWQpIHtcblx0XHRcdFx0Y29uc3QgaW5kZXggPSB0aGlzLmV4cGFuZGVkR29vZHNJZHMuaW5kZXhPZihpZClcblx0XHRcdFx0aWYgKGluZGV4ID4gLTEpIHtcblx0XHRcdFx0XHR0aGlzLmV4cGFuZGVkR29vZHNJZHMuc3BsaWNlKGluZGV4LCAxKVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuZXhwYW5kZWRHb29kc0lkcy5wdXNoKGlkKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRmb3JtYXREaXN0YW5jZVBhcnRzKGRpc3RhbmNlKSB7XG5cdFx0XHRcdGlmIChkaXN0YW5jZSA9PT0gbnVsbCB8fCBkaXN0YW5jZSA9PT0gdW5kZWZpbmVkIHx8IGRpc3RhbmNlID09PSAnJykge1xuXHRcdFx0XHRcdHJldHVybiB7IHZhbHVlOiAnLS0nLCB1bml0OiAnJyB9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodHlwZW9mIGRpc3RhbmNlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRcdGlmIChkaXN0YW5jZSA+PSAxMDAwKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4geyB2YWx1ZTogKGRpc3RhbmNlIC8gMTAwMCkudG9GaXhlZCgxKSwgdW5pdDogJ2ttJyB9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB7IHZhbHVlOiBTdHJpbmcoTWF0aC5yb3VuZChkaXN0YW5jZSkpLCB1bml0OiAnbScgfVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgdGV4dCA9IFN0cmluZyhkaXN0YW5jZSkudHJpbSgpXG5cdFx0XHRcdGNvbnN0IG1hdGNoID0gdGV4dC5tYXRjaCgvXihbXFxkLl0rKVxccyooW2EtekEtWlxcdTRlMDAtXFx1OWZhNV0qKSQvKVxuXHRcdFx0XHRpZiAobWF0Y2gpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0dmFsdWU6IG1hdGNoWzFdLFxuXHRcdFx0XHRcdFx0dW5pdDogbWF0Y2hbMl0gfHwgJydcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4geyB2YWx1ZTogdGV4dCwgdW5pdDogJycgfVxuXHRcdFx0fSxcblxuXHRcdFx0bmF2aWdhdGVUb0FkZHJlc3MoaXRlbSwgdHlwZSkge1xuXHRcdFx0XHRsZXQgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgbmFtZSwgYWRkcmVzc1xuXHRcdFx0XHRpZiAodHlwZSA9PT0gJ2RlcG9zaXQnKSB7XG5cdFx0XHRcdFx0bGF0aXR1ZGUgPSBpdGVtLmRlcG9zaXRMYXRcblx0XHRcdFx0XHRsb25naXR1ZGUgPSBpdGVtLmRlcG9zaXRMbmdcblx0XHRcdFx0XHRuYW1lID0gaXRlbS5kZXBvc2l0U2hvcE5hbWVcblx0XHRcdFx0XHRhZGRyZXNzID0gaXRlbS5kZXBvc2l0U2hvcEFkZHJlc3Ncblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsYXRpdHVkZSA9IGl0ZW0udGFrZUxhdFxuXHRcdFx0XHRcdGxvbmdpdHVkZSA9IGl0ZW0udGFrZUxuZ1xuXHRcdFx0XHRcdG5hbWUgPSBpdGVtLnRha2VOYW1lXG5cdFx0XHRcdFx0YWRkcmVzcyA9IGl0ZW0udGFrZUFkZHJlc3Ncblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWxhdGl0dWRlIHx8ICFsb25naXR1ZGUpIHtcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHsgdGl0bGU6ICflnLDlnYDlnZDmoIfnvLrlpLEnLCBpY29uOiAnbm9uZScgfSlcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0fVxuXHRcdFx0XHR1bmkub3BlbkxvY2F0aW9uKHtcblx0XHRcdFx0XHRsYXRpdHVkZSxcblx0XHRcdFx0XHRsb25naXR1ZGUsXG5cdFx0XHRcdFx0bmFtZSxcblx0XHRcdFx0XHRhZGRyZXNzLFxuXHRcdFx0XHRcdHN1Y2Nlc3M6ICgpID0+IHt9LFxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3QoeyB0aXRsZTogJ+aJk+W8gOWcsOWbvuWksei0pScsIGljb246ICdub25lJyB9KVxuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignb3BlbkxvY2F0aW9uIGZhaWw6JywgZXJyKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cblx0XHRcdGhhbmRsZVVzZXJDbGljaygpIHtcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdHVybDogJy9wYWdlcy90ZXN0L3Rlc3QnXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0Z2V0QWN0aXZlT3JkZXJDb3VudCgpIHtcblx0XHRcdFx0dGhpcy4kdS5hcGkuYWN0aXZlT3JkZXJDb3VudCgpLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0dGhpcy5hY3RpdmVPcmRlckNvdW50ID0gcmVzLmRhdGFcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLmNhdGNoKChlcnIpID0+IHtcblx0XHRcdFx0XHR0aGlzLmFjdGl2ZU9yZGVyQ291bnQgPSBudWxsXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRoYW5kbGVHcmFiT3JkZXIoaXRlbSkge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhpdGVtKVxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkR3JhYk9yZGVyID0gaXRlbVxuXHRcdFx0XHR0aGlzLnNob3dHcmFiTW9kYWwgPSB0cnVlXG5cdFx0XHR9LFxuXG5cdFx0XHRjb25maXJtR3JhYk9yZGVyKCkge1xuXHRcdFx0XHRpZiAoIXRoaXMuc2VsZWN0ZWRHcmFiT3JkZXIpIHJldHVyblxuXHRcdFx0XHR0aGlzLiR1LmFwaS5ncmFiT3JkZXIoeyBvcmRlcklkOiB0aGlzLnNlbGVjdGVkR3JhYk9yZGVyLmlkIH0pLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHR0aGlzLnNob3dHcmFiTW9kYWwgPSBmYWxzZVxuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHsgdGl0bGU6ICfmiqLljZXmiJDlip8nLCBpY29uOiAnc3VjY2VzcycgfSlcblx0XHRcdFx0XHRcdHRoaXMuaGFsbFBhZ2UgPSAxXG5cdFx0XHRcdFx0XHR0aGlzLmhhbGxIYXNNb3JlID0gdHJ1ZVxuXHRcdFx0XHRcdFx0dGhpcy5vcmRlckxpc3QgPSBbXVxuXHRcdFx0XHRcdFx0dGhpcy5nZXRIYWxsT3JkZXJzKClcblx0XHRcdFx0XHRcdHRoaXMuZ2V0QWN0aXZlT3JkZXJDb3VudCgpXG5cdFx0XHRcdFx0XHR0aGlzLmdldENlbnRlckluZm8oKVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHsgdGl0bGU6IHJlcy5tZXNzYWdlIHx8ICfmiqLljZXlpLHotKUnLCBpY29uOiAnbm9uZScgfSlcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLmNhdGNoKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLnNob3dHcmFiTW9kYWwgPSBmYWxzZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0aGFuZGxlQ2FuY2VsT3JkZXIoaXRlbSkge1xuXHRcdFx0XHR0aGlzLnNlbGVjdGVkQ2FuY2VsT3JkZXIgPSBpdGVtXG5cdFx0XHRcdHRoaXMuJHUuYXBpLmNhbmNlbExpbWl0KCkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmNhbmNlbFJlbWFpbiA9IHJlcy5kYXRhLnJlbWFpblxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5zaG93ID0gdHJ1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0Y29uZmlybUNhbmNlbE9yZGVyKCkge1xuXHRcdFx0XHRpZiAoIXRoaXMuc2VsZWN0ZWRDYW5jZWxPcmRlcikgcmV0dXJuXG5cdFx0XHRcdHRoaXMuJHUuYXBpLmNhbmNlbE9yZGVyKHsgb3JkZXJJZDogdGhpcy5zZWxlY3RlZENhbmNlbE9yZGVyLmlkIH0pLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHR0aGlzLnNob3cgPSBmYWxzZVxuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHsgdGl0bGU6ICflj5bmtojmiJDlip8nLCBpY29uOiAnc3VjY2VzcycgfSlcblx0XHRcdFx0XHRcdHRoaXMuZ2V0UGlja3VwT3JkZXJzKClcblx0XHRcdFx0XHRcdHRoaXMuZ2V0Q2VudGVySW5mbygpXG5cdFx0XHRcdFx0XHR0aGlzLmdldEFjdGl2ZU9yZGVyQ291bnQoKVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHsgdGl0bGU6IHJlcy5tZXNzYWdlIHx8ICflj5bmtojlpLHotKUnLCBpY29uOiAnbm9uZScgfSlcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLmNhdGNoKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLnNob3cgPSBmYWxzZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0aGFuZGxlQ2FsbChpdGVtKSB7XG5cdFx0XHRcdGlmIChpdGVtLmNvbnRhY3RQaG9uZSkge1xuXHRcdFx0XHRcdHVuaS5tYWtlUGhvbmVDYWxsKHtcblx0XHRcdFx0XHRcdHBob25lTnVtYmVyOiBpdGVtLmNvbnRhY3RQaG9uZVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdGhhbmRsZVNob3dQaWNrdXBDb2RlKGl0ZW0pIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFBpY2t1cE9yZGVyID0gaXRlbVxuXHRcdFx0XHR0aGlzLnNob3cxID0gdHJ1ZVxuXHRcdFx0fSxcblxuXHRcdFx0Z29Ub09yZGVyRGV0YWlsKGl0ZW0sIGluZGV4KSB7XG5cdFx0XHRcdGxldCB1cmwgPSBgL3BhZ2VzL29yZGVyLWRldGFpbC9vcmRlci1kZXRhaWw/aWQ9JHtpdGVtLmlkfWBcblx0XHRcdFx0aWYgKHRoaXMuYWN0aXZlVGFiID09PSAncGlja3VwJyB8fCB0aGlzLmFjdGl2ZVRhYiA9PT0gJ2RlbGl2ZXJpbmcnKSB7XG5cdFx0XHRcdFx0dXJsICs9IGAmaW5kZXg9JHtpbmRleCArIDF9YFxuXHRcdFx0XHR9XG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHsgdXJsIH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRnZXRDZW50ZXJJbmZvKCkge1xuXHRcdFx0XHR0aGlzLiR1LmFwaS5jZW50ZXJJbmZvKCkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmFjY2VwdGluZ1N0YXR1cyA9IHJlcy5kYXRhLmFjY2VwdGluZ1N0YXR1c1xuXHRcdFx0XHRcdFx0dGhpcy5jZW50ZXJVc2VySW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0ZnVsbEltZ1VybDogcmVzLmRhdGEuZnVsbEltZ1VybCxcblx0XHRcdFx0XHRcdFx0bmFtZTogcmVzLmRhdGEubmFtZVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpcy5zdGF0cyA9IFtcblx0XHRcdFx0XHRcdFx0eyB2YWx1ZTogcmVzLmRhdGEuc2NvcmUsIGxhYmVsOiAn5pyN5Yqh5YiGJyB9LFxuXHRcdFx0XHRcdFx0XHR7IHZhbHVlOiAoKHJlcy5kYXRhLnRvZGF5Q29tbWlzc2lvbiAvIDEwMCkgfHwgMCkudG9GaXhlZCgyKSwgbGFiZWw6ICfku4rml6XpooTorqHkvaPph5EnIH0sXG5cdFx0XHRcdFx0XHRcdHsgdmFsdWU6IHJlcy5kYXRhLnRvZGF5T3JkZXJDb3VudCwgbGFiZWw6ICfku4rml6XmjqXljZUnIH1cblx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRnZXRDYXRlZ29yeUxpc3REYXRhKCkge1xuXHRcdFx0XHR0aGlzLiR1LmFwaS5nZXRDYXRlZ29yeUxpc3QoeyB0eXBlOiAzIH0pLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0dGhpcy5jYXRlZ29yeUxpc3QgPSByZXMuZGF0YSB8fCBbXVxuXHRcdFx0XHRcdFx0dGhpcy5maWx0ZXJTZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoc2VjdGlvbi5rZXkgPT09ICdsZXZlbCcpIHtcblx0XHRcdFx0XHRcdFx0XHRzZWN0aW9uLm9wdGlvbnMgPSBbJ+S4jemZkCcsIC4uLnRoaXMuY2F0ZWdvcnlMaXN0Lm1hcChpdGVtID0+IGl0ZW0ubmFtZSldXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0bG9hZE9yZGVyc0J5VGFiKHRhYikge1xuXHRcdFx0XHRpZiAodGhpcy51c2VySW5mby5hdWRpdFN0YXR1cyA9PT0gOTkpIHJldHVybjtcblx0XHRcdFx0aWYgKHRoaXMuYWNjZXB0aW5nU3RhdHVzID09PSAwKSByZXR1cm47XG5cdFx0XHRcdGlmICh0YWIgPT09ICdoYWxsJykge1xuXHRcdFx0XHRcdHRoaXMuaGFsbFBhZ2UgPSAxXG5cdFx0XHRcdFx0dGhpcy5oYWxsSGFzTW9yZSA9IHRydWVcblx0XHRcdFx0XHR0aGlzLm9yZGVyTGlzdCA9IFtdXG5cdFx0XHRcdFx0dGhpcy5nZXRIYWxsT3JkZXJzKClcblx0XHRcdFx0fSBlbHNlIGlmICh0YWIgPT09ICdwaWNrdXAnKSB7XG5cdFx0XHRcdFx0dGhpcy5waWNrdXBPcmRlckxpc3QgPSBbXVxuXHRcdFx0XHRcdHRoaXMuZ2V0UGlja3VwT3JkZXJzKClcblx0XHRcdFx0fSBlbHNlIGlmICh0YWIgPT09ICdkZWxpdmVyaW5nJykge1xuXHRcdFx0XHRcdHRoaXMuZGVsaXZlcmluZ09yZGVyTGlzdCA9IFtdXG5cdFx0XHRcdFx0dGhpcy5nZXREZWxpdmVyaW5nT3JkZXJzKClcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0Z2V0SGFsbE9yZGVycygpIHtcblx0XHRcdFx0aWYgKHRoaXMuYWNjZXB0aW5nU3RhdHVzID09PSAwKSByZXR1cm47XG5cdFx0XHRcdGlmICh0aGlzLmhhbGxMb2FkaW5nIHx8ICF0aGlzLmhhbGxIYXNNb3JlKSB7XG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5oYWxsTG9hZGluZyA9IHRydWVcblxuXHRcdFx0XHRsZXQgZGlzdGFuY2UgPSBudWxsXG5cdFx0XHRcdGlmICh0aGlzLnNlbGVjdGVkRmlsdGVycy5kaXN0YW5jZSAhPT0gJ+S4jemZkCcpIHtcblx0XHRcdFx0XHRjb25zdCBkaXN0YW5jZVRleHQgPSB0aGlzLnNlbGVjdGVkRmlsdGVycy5kaXN0YW5jZVxuXHRcdFx0XHRcdGlmIChkaXN0YW5jZVRleHQuaW5jbHVkZXMoJ2ttJykpIHtcblx0XHRcdFx0XHRcdGRpc3RhbmNlID0gcGFyc2VJbnQoZGlzdGFuY2VUZXh0KSAqIDEwMDBcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0ZGlzdGFuY2UgPSBwYXJzZUludChkaXN0YW5jZVRleHQpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qgc29ydFR5cGVNYXAgPSB7XG5cdFx0XHRcdFx0J+e7vOWQiOaOkuW6jyc6IDEsXG5cdFx0XHRcdFx0J+i3neemu+acgOi/kSc6IDJcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBzb3J0VHlwZSA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnNvcnQgIT09ICfkuI3pmZAnID8gKHNvcnRUeXBlTWFwW3RoaXMuc2VsZWN0ZWRGaWx0ZXJzLnNvcnRdIHx8IG51bGwpIDogbnVsbFxuXG5cdFx0XHRcdGxldCBncmFkZUlkID0gbnVsbFxuXHRcdFx0XHRpZiAodGhpcy5zZWxlY3RlZEZpbHRlcnMubGV2ZWwgIT09ICfkuI3pmZAnKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc2VsZWN0ZWRDYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcnlMaXN0LmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT09IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxldmVsKVxuXHRcdFx0XHRcdGlmIChzZWxlY3RlZENhdGVnb3J5KSB7XG5cdFx0XHRcdFx0XHRncmFkZUlkID0gc2VsZWN0ZWRDYXRlZ29yeS5pZFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKCfmjqXljZXlpKfljoU6JywgeyBkaXN0YW5jZSwgZ3JhZGVJZCwgc29ydFR5cGUgfSlcblx0XHRcdFx0dGhpcy4kdS5hcGkuZ3JhYk9yZGVySGFsbCh7XG5cdFx0XHRcdFx0Y2FwYWNpdHk6IHRoaXMuaGFsbFBhZ2VTaXplLFxuXHRcdFx0XHRcdHBhZ2U6IHRoaXMuaGFsbFBhZ2UsXG5cdFx0XHRcdFx0bW9kZWw6IHtcblx0XHRcdFx0XHRcdGRpc3RhbmNlOiBkaXN0YW5jZSxcblx0XHRcdFx0XHRcdGdyYWRlSWQ6IGdyYWRlSWQsXG5cdFx0XHRcdFx0XHRzb3J0VHlwZTogc29ydFR5cGVcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygn5o6l5Y2V5aSn5Y6FJywgcmVzKVxuXHRcdFx0XHRcdHRoaXMuaGFsbExvYWRpbmcgPSBmYWxzZVxuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBsaXN0ID0gcmVzLmRhdGEucmVjb3JkcyB8fCBbXVxuXHRcdFx0XHRcdFx0dGhpcy5vcmRlckxpc3QgPSB0aGlzLmhhbGxQYWdlID09PSAxID8gbGlzdCA6IHRoaXMub3JkZXJMaXN0LmNvbmNhdChsaXN0KVxuXHRcdFx0XHRcdFx0dGhpcy5oYWxsSGFzTW9yZSA9IGxpc3QubGVuZ3RoID49IHRoaXMuaGFsbFBhZ2VTaXplXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KS5jYXRjaCgoZXJyKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5oYWxsTG9hZGluZyA9IGZhbHNlXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRnZXRQaWNrdXBPcmRlcnMoKSB7XG5cdFx0XHRcdGlmICh0aGlzLmFjY2VwdGluZ1N0YXR1cyA9PT0gMCkgcmV0dXJuO1xuXHRcdFx0XHRpZiAodGhpcy5waWNrdXBMb2FkaW5nKSByZXR1cm5cblx0XHRcdFx0dGhpcy5waWNrdXBMb2FkaW5nID0gdHJ1ZVxuXHRcdFx0XHR0aGlzLiR1LmFwaS5hY3RpdmVPcmRlcnMoeyBzdGF0dXM6IDMgfSkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCflvoXlj5botKc6JywgcmVzKVxuXHRcdFx0XHRcdHRoaXMucGlja3VwTG9hZGluZyA9IGZhbHNlXG5cdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdHRoaXMucGlja3VwT3JkZXJMaXN0ID0gcmVzLmRhdGEucmVjb3JkcyB8fCByZXMuZGF0YSB8fCBbXVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkuY2F0Y2goKGVycikgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGlja3VwTG9hZGluZyA9IGZhbHNlXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRnZXREZWxpdmVyaW5nT3JkZXJzKCkge1xuXHRcdFx0XHRpZiAodGhpcy5hY2NlcHRpbmdTdGF0dXMgPT09IDApIHJldHVybjtcblx0XHRcdFx0aWYgKHRoaXMuZGVsaXZlcmluZ0xvYWRpbmcpIHJldHVyblxuXHRcdFx0XHR0aGlzLmRlbGl2ZXJpbmdMb2FkaW5nID0gdHJ1ZVxuXHRcdFx0XHR0aGlzLiR1LmFwaS5hY3RpdmVPcmRlcnMoeyBzdGF0dXM6IDQgfSkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfphY3pgIHkuK06JywgcmVzKVxuXHRcdFx0XHRcdHRoaXMuZGVsaXZlcmluZ0xvYWRpbmcgPSBmYWxzZVxuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmRlbGl2ZXJpbmdPcmRlckxpc3QgPSByZXMuZGF0YSB8fCBbXVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkuY2F0Y2goKGVycikgPT4ge1xuXHRcdFx0XHRcdHRoaXMuZGVsaXZlcmluZ0xvYWRpbmcgPSBmYWxzZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0b3BlblN0YXR1c1BpY2tlcigpIHtcblx0XHRcdFx0dGhpcy5zaG93U3RhdHVzUGlja2VyID0gdHJ1ZVxuXHRcdFx0fSxcblxuXHRcdFx0Y29uZmlybVN0YXR1cyhlKSB7XG5cdFx0XHRcdHRoaXMuc2hvd1N0YXR1c1BpY2tlciA9IGZhbHNlXG5cdFx0XHRcdGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBlLnZhbHVlWzBdXG5cdFx0XHRcdHRoaXMuJHUuYXBpLnVwZGF0ZUFjY2VwdGluZ1N0YXR1cyh7IHN0YXR1czogc2VsZWN0ZWRWYWx1ZS52YWx1ZSB9KS50aGVuKHJlcyA9PiB7XG5cdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdHRoaXMuYWNjZXB0aW5nU3RhdHVzID0gc2VsZWN0ZWRWYWx1ZS52YWx1ZVxuXHRcdFx0XHRcdFx0dGhpcy5nZXRDZW50ZXJJbmZvKClcblx0XHRcdFx0XHRcdGlmICh0aGlzLmFjY2VwdGluZ1N0YXR1cyA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9yZGVyTGlzdCA9IFtdXG5cdFx0XHRcdFx0XHRcdHRoaXMucGlja3VwT3JkZXJMaXN0ID0gW11cblx0XHRcdFx0XHRcdFx0dGhpcy5kZWxpdmVyaW5nT3JkZXJMaXN0ID0gW11cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLmFjdGl2ZVRhYiA9PT0gJ3BpY2t1cCcpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldFBpY2t1cE9yZGVycygpXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5hY3RpdmVUYWIgPT09ICdkZWxpdmVyaW5nJykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0RGVsaXZlcmluZ09yZGVycygpXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5oYWxsUGFnZSA9IDFcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmhhbGxIYXNNb3JlID0gdHJ1ZVxuXHRcdFx0XHRcdFx0XHRcdHRoaXMub3JkZXJMaXN0ID0gW11cblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldEhhbGxPcmRlcnMoKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0dG9Ecml2ZXJDZXJ0aWZpY2F0aW9uKCkge1xuXHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0dXJsOiAnL3BhZ2VzL2RyaXZlci1jZXJ0aWZpY2F0aW9uL2RyaXZlci1jZXJ0aWZpY2F0aW9uJ1xuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0dG9nZ2xlRmlsdGVyUG9wdXAoc2hvdykge1xuXHRcdFx0XHR0aGlzLnNob3dGaWx0ZXJQb3B1cCA9IHNob3dcblx0XHRcdH0sXG5cblx0XHRcdHNlbGVjdEZpbHRlcihrZXksIG9wdGlvbikge1xuXHRcdFx0XHR0aGlzLnNlbGVjdGVkRmlsdGVycyA9IHtcblx0XHRcdFx0XHQuLi50aGlzLnNlbGVjdGVkRmlsdGVycyxcblx0XHRcdFx0XHRba2V5XTogb3B0aW9uXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdHJlc2V0RmlsdGVycygpIHtcblx0XHRcdFx0dGhpcy5zaG93RmlsdGVyUG9wdXAgPSBmYWxzZVxuXHRcdFx0XHRpZiAodGhpcy51c2VySW5mby5hdWRpdFN0YXR1cyA9PT0gOTkpIHJldHVybjtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEZpbHRlcnMgPSB7XG5cdFx0XHRcdFx0c29ydDogJ+e7vOWQiOaOkuW6jycsXG5cdFx0XHRcdFx0bGV2ZWw6ICfkuI3pmZAnLFxuXHRcdFx0XHRcdGRpc3RhbmNlOiAn5LiN6ZmQJ1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLmFjdGl2ZVRhYiA9PT0gJ2hhbGwnKSB7XG5cdFx0XHRcdFx0dGhpcy5oYWxsUGFnZSA9IDFcblx0XHRcdFx0XHR0aGlzLmhhbGxIYXNNb3JlID0gdHJ1ZVxuXHRcdFx0XHRcdHRoaXMub3JkZXJMaXN0ID0gW11cblx0XHRcdFx0XHR0aGlzLmdldEhhbGxPcmRlcnMoKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRjb25maXJtRmlsdGVycygpIHtcblx0XHRcdFx0dGhpcy5zaG93RmlsdGVyUG9wdXAgPSBmYWxzZVxuXHRcdFx0XHRpZiAodGhpcy51c2VySW5mby5hdWRpdFN0YXR1cyA9PT0gOTkpIHtcblx0XHRcdFx0XHR0aGlzLmhhbGxIYXNNb3JlID0gdHJ1ZVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLmFjdGl2ZVRhYiA9PT0gJ2hhbGwnKSB7XG5cdFx0XHRcdFx0dGhpcy5oYWxsUGFnZSA9IDFcblx0XHRcdFx0XHR0aGlzLmhhbGxIYXNNb3JlID0gdHJ1ZVxuXHRcdFx0XHRcdHRoaXMub3JkZXJMaXN0ID0gW11cblx0XHRcdFx0XHR0aGlzLmdldEhhbGxPcmRlcnMoKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRpbml0VFRTKCkge1xuXHRcdFx0XHRpZiAodW5pLmdldFN5c3RlbUluZm9TeW5jKCkucGxhdGZvcm0gIT09ICdhbmRyb2lkJykge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfku4XmlK/mjIHlronljZMnKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHQvLyDlr7zlhaXlronljZPljp/nlJ/nsbtcblx0XHRcdFx0XHRjb25zdCBUZXh0VG9TcGVlY2ggPSBwbHVzLmFuZHJvaWQuaW1wb3J0Q2xhc3MoJ2FuZHJvaWQuc3BlZWNoLnR0cy5UZXh0VG9TcGVlY2gnKVxuXHRcdFx0XHRcdGNvbnN0IExvY2FsZSA9IHBsdXMuYW5kcm9pZC5pbXBvcnRDbGFzcygnamF2YS51dGlsLkxvY2FsZScpXG5cblx0XHRcdFx0XHQvLyDliJvlu7pUVFNcblx0XHRcdFx0XHR0aGlzLnR0cyA9IG5ldyBUZXh0VG9TcGVlY2gocGx1cy5hbmRyb2lkLnJ1bnRpbWVNYWluQWN0aXZpdHkoKSwge1xuXHRcdFx0XHRcdFx0b25Jbml0OiAoc3RhdHVzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChzdGF0dXMgPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIOiuvue9ruS4reaWh1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMudHRzLnNldExhbmd1YWdlKExvY2FsZS5DSElOQSlcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn6K+t6Z+z5Yid5aeL5YyW5oiQ5YqfJylcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygn5Yid5aeL5YyW5aSx6LSlJywgZSlcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0c3BlYWsodGV4dCkge1xuXHRcdFx0XHRpZiAoIXRoaXMudHRzKSB7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogJ+ivremfs+acquWHhuWkh+WlvScsXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHQvLyDlronljZPljp/nlJ/mkq3miqXvvIhRVUVVRV9GTFVTSCA9IOeri+WNs+aSreaKpe+8jOaJk+aWreS4iuS4gOadoe+8iVxuXHRcdFx0XHRcdHRoaXMudHRzLnNwZWFrKHRleHQsIDAsIG51bGwpXG5cdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfmkq3miqXlpLHotKUnLCBlcnIpXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdHN0b3BTcGVhaygpIHtcblx0XHRcdFx0aWYgKHRoaXMudHRzKSB0aGlzLnR0cy5zdG9wKClcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0b25VbmxvYWQoKSB7XG5cdFx0XHRpZiAodGhpcy50dHMpIHtcblx0XHRcdFx0dGhpcy50dHMuc3RvcCgpXG5cdFx0XHRcdHRoaXMudHRzLnNodXRkb3duKClcblx0XHRcdH1cblx0XHR9XG5cdH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+XG5cdC5oYWxsLXBhZ2Uge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRoZWlnaHQ6IDEwMHZoO1xuXHRcdGJhY2tncm91bmQ6ICNmNWY2Zjg7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHRcdC5xcmNvZGUge1xuXHRcdFx0cGFkZGluZzogMzZycHggMzBycHg7XG5cdFx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdFx0LnFyY29kZS10aXRsZSB7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0XHRcdGltYWdlIHtcblx0XHRcdFx0XHR3aWR0aDogMjhycHg7XG5cdFx0XHRcdFx0aGVpZ2h0OiAyOHJweDtcblx0XHRcdFx0fVxuXHRcdFx0XHR0ZXh0IHtcblx0XHRcdFx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMzJycHg7XG5cdFx0XHRcdFx0Y29sb3I6ICMxMTExMTE7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC5xcmNvZGUtaW1hZ2Uge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDYwcnB4O1xuXHRcdFx0XHRpbWFnZSB7XG5cdFx0XHRcdFx0d2lkdGg6IDQwMHJweDtcblx0XHRcdFx0XHRoZWlnaHQ6IDQwMHJweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0LnFyY29kZS1idG4ge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0aGVpZ2h0OiA4OHJweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDg4cnB4O1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICMxMDZFRkE7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwcnB4O1xuXHRcdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRcdFx0Zm9udC1zaXplOiAzMnJweDtcblx0XHRcdFx0Y29sb3I6ICNGRkZGRkY7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDY4cnB4O1xuXG5cdFx0XHRcdCYtLWhvdmVyIHtcblx0XHRcdFx0XHRvcGFjaXR5OiAwLjkyO1xuXHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgycnB4KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5waG90by1kZWxpdmVyIHtcblx0XHRcdHBhZGRpbmc6IDMycnB4IDI4cnB4IGNhbGMoZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pICsgMjhycHgpO1xuXHRcdFx0YmFja2dyb3VuZDogI2ZmZmZmZjtcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAyMHJweDtcblx0XHRcdGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAyMHJweDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cblx0XHRcdCZfX2hlYWRlciB7XG5cdFx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdH1cblxuXHRcdFx0Jl9fdGl0bGUge1xuXHRcdFx0XHRmb250LXNpemU6IDM0cnB4O1xuXHRcdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0XHRjb2xvcjogIzExMTExMTtcblx0XHRcdH1cblxuXHRcdFx0Jl9fY2xvc2UsXG5cdFx0XHQmX19jbG9zZS1wbGFjZWhvbGRlciB7XG5cdFx0XHRcdHdpZHRoOiAzNnJweDtcblx0XHRcdFx0aGVpZ2h0OiAzNnJweDtcblx0XHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHR9XG5cblx0XHRcdCZfX2Nsb3NlLXBsYWNlaG9sZGVyIHtcblx0XHRcdFx0b3BhY2l0eTogMDtcblx0XHRcdH1cblxuXHRcdFx0Jl9fc2VjdGlvbiB7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDU2cnB4O1xuXG5cdFx0XHRcdCYtLXJlbWFyayB7XG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogNDZycHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Jl9fbGFiZWwtcm93IHtcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0fVxuXG5cdFx0XHQmX19sYWJlbCxcblx0XHRcdCZfX3JlbWFyay10aXRsZSB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMjhycHg7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0XHRcdGNvbG9yOiAjMjMyNjJkO1xuXHRcdFx0fVxuXG5cdFx0XHQmX19yZXF1aXJlZCB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiA0cnB4O1xuXHRcdFx0XHRmb250LXNpemU6IDI4cnB4O1xuXHRcdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0XHRjb2xvcjogI2ZmM2IzMDtcblx0XHRcdH1cblxuXHRcdFx0Jl9faGludCB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAxMnJweDtcblx0XHRcdFx0Zm9udC1zaXplOiAyNHJweDtcblx0XHRcdFx0Y29sb3I6ICNhOGFkYjc7XG5cdFx0XHR9XG5cblx0XHRcdCZfX3Bob3RvcyB7XG5cdFx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdGdhcDogMThycHg7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDMwcnB4O1xuXHRcdFx0fVxuXG5cdFx0XHQmX191cGxvYWQtY2FyZCxcblx0XHRcdCZfX3ByZXZpZXctY2FyZCB7XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0d2lkdGg6IDE2MHJweDtcblx0XHRcdFx0aGVpZ2h0OiAxNjBycHg7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDhycHg7XG5cdFx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR9XG5cblx0XHRcdCZfX3VwbG9hZC1jYXJkIHtcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRcdGJvcmRlcjogMnJweCBkYXNoZWQgI2M5Y2VkNjtcblx0XHRcdFx0YmFja2dyb3VuZDogI2ZmZmZmZjtcblx0XHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRcdH1cblxuXHRcdFx0Jl9fdXBsb2FkLWljb24ge1xuXHRcdFx0XHR3aWR0aDogNTJycHg7XG5cdFx0XHRcdGhlaWdodDogNTJycHg7XG5cdFx0XHR9XG5cblx0XHRcdCZfX3VwbG9hZC10ZXh0IHtcblx0XHRcdFx0bWFyZ2luLXRvcDogMTRycHg7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMjZycHg7XG5cdFx0XHRcdGNvbG9yOiAjOWRhM2FlO1xuXHRcdFx0fVxuXG5cdFx0XHQmX19wcmV2aWV3LWNhcmQge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAjZWVmMWY1O1xuXHRcdFx0fVxuXG5cdFx0XHQmX19wcmV2aWV3LWltYWdlIHtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdH1cblxuXHRcdFx0Jl9fcHJldmlldy1tYXNrIHtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHRyaWdodDogMDtcblx0XHRcdFx0Ym90dG9tOiAwO1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0aGVpZ2h0OiA0OHJweDtcblx0XHRcdFx0YmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjQ2KTtcblx0XHRcdH1cblxuXHRcdFx0Jl9fcHJldmlldy1kZWxldGUge1xuXHRcdFx0XHRmb250LXNpemU6IDI2cnB4O1xuXHRcdFx0XHRjb2xvcjogI2ZmZmZmZjtcblx0XHRcdH1cblxuXHRcdFx0Jl9fdGV4dGFyZWEge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0aGVpZ2h0OiAxMTBycHg7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDI0cnB4O1xuXHRcdFx0XHRwYWRkaW5nOiAyOHJweCAyNHJweDtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMTJycHg7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICNmN2Y4ZmE7XG5cdFx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMzBycHg7XG5cdFx0XHRcdGNvbG9yOiAjMmMzMTM5O1xuXHRcdFx0fVxuXG5cdFx0XHQmX19zdWJtaXQge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0aGVpZ2h0OiA4OHJweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDg4cnB4O1xuXHRcdFx0XHRtYXJnaW4tdG9wOiA4NnJweDtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNTBycHg7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICMxMDZlZmE7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMzJycHg7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0XHRcdGNvbG9yOiAjZmZmZmZmO1xuXHRcdFx0XHRib3JkZXI6IDA7XG5cdFx0XHRcdHBhZGRpbmc6IDA7XG5cblx0XHRcdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0XHRcdGJvcmRlcjogMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYtLWhvdmVyIHtcblx0XHRcdFx0XHRvcGFjaXR5OiAwLjkyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9faGVhZGVyIHtcblx0XHRcdHBvc2l0aW9uOiBmaXhlZDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRyaWdodDogMDtcblx0XHRcdHotaW5kZXg6IDEwO1xuXHRcdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgIzI0NzNmNSAwJSwgIzFlNmZlZiAxMDAlKTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMTJycHggMjRycHggcmdiYSgzNiwgMTE1LCAyNDUsIDAuMDgpO1xuXHRcdH1cblxuXHRcdCZfX3VzZXItcm93IHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0cGFkZGluZzogMjBycHggMjRycHggMDtcblx0XHR9XG5cblx0XHQmX191c2VyIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiAxNHJweDtcblx0XHR9XG5cblx0XHQmX19hdmF0YXIge1xuXHRcdFx0d2lkdGg6IDQycnB4O1xuXHRcdFx0aGVpZ2h0OiA0MnJweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdGJvcmRlcjogMnJweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG5cdFx0fVxuXG5cdFx0Jl9fbmFtZSB7XG5cdFx0XHRmb250LXNpemU6IDI4cnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0XHRcdGNvbG9yOiAjZmZmZmZmO1xuXHRcdH1cblxuXHRcdCZfX3N0YXR1cyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdHBhZGRpbmc6IDEwcnB4IDE2cnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogOTk5cnB4O1xuXHRcdFx0YmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KTtcblx0XHRcdGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHJweCk7XG5cdFx0fVxuXG5cdFx0Jl9fc3RhdHVzLWRvdCB7XG5cdFx0XHR3aWR0aDogMTRycHg7XG5cdFx0XHRoZWlnaHQ6IDE0cnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdFx0YmFja2dyb3VuZDogIzMyZDc0Yjtcblx0XHRcdG1hcmdpbi1yaWdodDogMTBycHg7XG5cblx0XHRcdCYtLW9mZmxpbmUge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAjZmYzYjMwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX3N0YXR1cy10ZXh0LFxuXHRcdCZfX3N0YXR1cy1hcnJvdyB7XG5cdFx0XHRmb250LXNpemU6IDI0cnB4O1xuXHRcdFx0Y29sb3I6ICNmZmZmZmY7XG5cdFx0fVxuXG5cdFx0Jl9fc3RhdHVzLWFycm93IHtcblx0XHRcdGZvbnQtc2l6ZTogMThycHg7XG5cdFx0XHRtYXJnaW4tbGVmdDogOHJweDtcblx0XHR9XG5cblx0XHQmX19zdGF0cyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdFx0cGFkZGluZzogMzRycHggMzZycHggMjhycHg7XG5cdFx0fVxuXG5cdFx0Jl9fc3RhdC1pdGVtIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdG1pbi13aWR0aDogMTYwcnB4O1xuXHRcdH1cblxuXHRcdCZfX3N0YXQtdmFsdWUge1xuXHRcdFx0Zm9udC1zaXplOiA1MnJweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRcdGNvbG9yOiAjZmZmZmZmO1xuXHRcdH1cblxuXHRcdCZfX3N0YXQtbGFiZWwge1xuXHRcdFx0bWFyZ2luLXRvcDogMTJycHg7XG5cdFx0XHRmb250LXNpemU6IDI2cnB4O1xuXHRcdFx0Y29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44Nik7XG5cdFx0fVxuXG5cdFx0Jl9fdGFicyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGhlaWdodDogODhycHg7XG5cdFx0XHRwYWRkaW5nOiAwIDE4cnB4O1xuXHRcdFx0YmFja2dyb3VuZDogI2ZmZmZmZjtcblx0XHR9XG5cblx0XHQmX190YWIge1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdHBhZGRpbmc6IDAgMThycHg7XG5cdFx0XHRmb250LXNpemU6IDMycnB4O1xuXHRcdFx0Y29sb3I6ICM4YjkwOTk7XG5cdFx0fVxuXG5cdFx0Jl9fdGFiLS1hY3RpdmUge1xuXHRcdFx0Y29sb3I6ICMyNDI5MzM7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdH1cblxuXHRcdCZfX3RhYi10ZXh0IHtcblx0XHRcdGZvbnQtc2l6ZTogaW5oZXJpdDtcblx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdH1cblxuXHRcdCZfX3RhYi1jb3VudCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogNnJweDtcblx0XHRcdGZvbnQtc2l6ZTogMjhycHg7XG5cdFx0XHRjb2xvcjogIzhiOTA5OTtcblx0XHR9XG5cblx0XHQmX190YWItbGluZSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiAxOHJweDtcblx0XHRcdHJpZ2h0OiAxOHJweDtcblx0XHRcdGJvdHRvbTogMDtcblx0XHRcdGhlaWdodDogNXJweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDk5OXJweDtcblx0XHRcdGJhY2tncm91bmQ6ICMyNDczZjU7XG5cdFx0fVxuXG5cdFx0Jl9fZmlsdGVyIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDZycHg7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAxMHJweDtcblx0XHR9XG5cblx0XHQmX19maWx0ZXItdGV4dCB7XG5cdFx0XHRmb250LXNpemU6IDI4cnB4O1xuXHRcdFx0Y29sb3I6ICM5YWExYWI7XG5cblx0XHRcdCYtLWFjdGl2ZSB7XG5cdFx0XHRcdGNvbG9yOiAjMTA2ZWZhO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQmX19maWx0ZXItaWNvbiB7XG5cdFx0XHR3aWR0aDogMjhycHg7XG5cdFx0XHRoZWlnaHQ6IDI4cnB4O1xuXHRcdH1cblxuXHRcdCZfX2JvZHkge1xuXHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNGNkY5RkY7XG5cdFx0fVxuXG5cdFx0Jl9fbGlzdCB7XG5cdFx0XHRwYWRkaW5nOiAzMHJweDtcblx0XHR9XG5cblx0XHQmX192ZXJpZmllZCB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0aW1hZ2Uge1xuXHRcdFx0XHR3aWR0aDogMzIwcnB4O1xuXHRcdFx0XHRoZWlnaHQ6IDMyMHJweDtcblx0XHRcdH1cblx0XHRcdGJ1dHRvbiB7XG5cdFx0XHRcdHdpZHRoOiAxNjBycHg7XG5cdFx0XHRcdGhlaWdodDogNjRycHg7XG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiA2NHJweDtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cdFx0XHRcdGJvcmRlcjogMCAhaW1wb3J0YW50O1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAjMTA2RUZBO1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MHJweDtcblx0XHRcdFx0bWFyZ2luLXRvcDogNDBycHg7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMjhycHg7XG5cdFx0XHRcdGNvbG9yOiAjRkZGRkZGO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX2VtcHR5IHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO1xuXHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHR9XG5cblx0XHQmX19lbXB0eS1pY29uIHtcblx0XHRcdHdpZHRoOiAzMjBycHg7XG5cdFx0XHRoZWlnaHQ6IDMyMHJweDtcblx0XHR9XG5cdH1cblxuXHQuZmlsdGVyLXBvcHVwIHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0bGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0XHR6LWluZGV4OiAyMDtcblxuXHRcdCZfX3BhbmVsIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0YmFja2dyb3VuZDogI2ZmZmZmZjtcblx0XHRcdGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDI4cnB4O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDI4cnB4O1xuXHRcdH1cblxuXHRcdCZfX2NvbnRlbnQge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0XHRwYWRkaW5nOiAyMnJweCAxOHJweCAwO1xuXHRcdH1cblxuXHRcdCZfX3NlY3Rpb24ge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMjhycHg7XG5cdFx0fVxuXG5cdFx0Jl9fdGl0bGUge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAyMHJweDtcblx0XHRcdGZvbnQtc2l6ZTogMjhycHg7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Y29sb3I6ICMyNTJiMzM7XG5cdFx0fVxuXG5cdFx0Jl9fb3B0aW9ucyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0Z2FwOiAxOHJweCAyMHJweDtcblx0XHR9XG5cblx0XHQmX19vcHRpb24ge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdHdpZHRoOiAyMjZycHg7XG5cdFx0XHRoZWlnaHQ6IDc0cnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMTBycHg7XG5cdFx0XHRiYWNrZ3JvdW5kOiAjZjVmNWY1O1xuXHRcdFx0Ym9yZGVyOiAycnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblxuXHRcdFx0Ji0tYWN0aXZlIHtcblx0XHRcdFx0YmFja2dyb3VuZDogI2VkZjVmZjtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAjM2Q4Y2ZmO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX29wdGlvbi10ZXh0IHtcblx0XHRcdGZvbnQtc2l6ZTogMjhycHg7XG5cdFx0XHRjb2xvcjogIzRiNTE1YTtcblxuXHRcdFx0LmZpbHRlci1wb3B1cF9fb3B0aW9uLS1hY3RpdmUgJiB7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0XHRcdGNvbG9yOiAjMjY3OGZmO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX2FjdGlvbnMge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0Z2FwOiAyNHJweDtcblx0XHRcdHBhZGRpbmc6IDhycHggMThycHggMjZycHg7XG5cdFx0fVxuXG5cdFx0Jl9fYnV0dG9uIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRoZWlnaHQ6IDkycnB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDkycnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogOTk5cnB4O1xuXHRcdFx0Zm9udC1zaXplOiAzNHJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0XHRib3JkZXI6IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXG5cdFx0XHQmOjphZnRlciB7XG5cdFx0XHRcdGJvcmRlcjogMDtcblx0XHRcdH1cblxuXHRcdFx0Ji0tcmVzZXQge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAjZWJlYmViO1xuXHRcdFx0XHRjb2xvcjogIzc3N2Q4Njtcblx0XHRcdH1cblxuXHRcdFx0Ji0tY29uZmlybSB7XG5cdFx0XHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsICMyZDgyZmYgMCUsICMyMDZlZjYgMTAwJSk7XG5cdFx0XHRcdGNvbG9yOiAjZmZmZmZmO1xuXHRcdFx0fVxuXG5cdFx0XHQmLS1ob3ZlciB7XG5cdFx0XHRcdG9wYWNpdHk6IDAuOTI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Lm9yZGVyLWNhcmQge1xuXHRcdG1hcmdpbi1ib3R0b206IDIwcnB4O1xuXHRcdHBhZGRpbmc6IDIwcnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDI0cnB4O1xuXHRcdGJhY2tncm91bmQ6ICNmZmZmZmY7XG5cdFx0Ym94LXNoYWRvdzogMCAxMHJweCAyNHJweCByZ2JhKDI2LCA0NCwgODEsIDAuMDQpO1xuXG5cdFx0Jl9faGVhZCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0fVxuXG5cdFx0Jl9fdGltZS1tYWluIHtcblx0XHRcdGZvbnQtc2l6ZTogNDJycHg7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Y29sb3I6ICNmZjhkMjc7XG5cdFx0fVxuXG5cdFx0Jl9fdGltZS1zdWIge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDhycHg7XG5cdFx0XHRmb250LXNpemU6IDI4cnB4O1xuXHRcdFx0Y29sb3I6ICNhM2E4YjI7XG5cdFx0fVxuXG5cdFx0Jl9fcHJpY2Utd3JhcCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDhycHg7XG5cblx0XHRcdCYtLXNlcmlhbC1vbmx5IHtcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHRcdFx0XHRtaW4td2lkdGg6IDU0cnB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX3NlcmlhbCB7XG5cdFx0XHRmb250LXNpemU6IDM4cnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdFx0Y29sb3I6ICMyYzMxMzk7XG5cdFx0fVxuXG5cdFx0Jl9fcHJpY2Uge1xuXHRcdFx0Zm9udC1zaXplOiA0NHJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0XHRjb2xvcjogI2ZmM2IzMDtcblx0XHR9XG5cblx0XHQmX19tZXRhIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiAxNnJweDtcblx0XHRcdG1hcmdpbi10b3A6IDEycnB4O1xuXHRcdH1cblxuXHRcdCZfX2V4dHJhIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAyNHJweDtcblx0XHRcdGNvbG9yOiAjYTBhNWFmO1xuXHRcdH1cblxuXHRcdCZfX3RhZ3Mge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0XHRnYXA6IDEwcnB4O1xuXHRcdH1cblxuXHRcdCZfX3RhZy13cmFwIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdH1cblxuXHRcdCZfX3RhZy1pY29uIHtcblx0XHRcdHdpZHRoOiAxMDhycHg7XG5cdFx0XHRoZWlnaHQ6IDQwcnB4O1xuXHRcdH1cblxuXHRcdCZfX3RhZy1pbWcge1xuXHRcdFx0d2lkdGg6IDEwOHJweDtcblx0XHRcdGhlaWdodDogNDBycHg7XG5cdFx0fVxuXG5cdFx0Jl9fdGFnIHtcblx0XHRcdHBhZGRpbmc6IDRycHggMTBycHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA4cnB4O1xuXHRcdFx0Zm9udC1zaXplOiAyMnJweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjI7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0Ym9yZGVyOiAxcnB4IHNvbGlkICMyNDczZjU7XG5cdFx0XHRjb2xvcjogIzI0NzNmNTtcblxuXHRcdFx0Ji0tb3JhbmdlIHtcblx0XHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMzE5ZGVnLCAjRUU5RDBFIDAlLCAjRkY0RTRFIDEwMCUpO1xuXHRcdFx0XHRjb2xvcjogI2ZmZmZmZjtcblx0XHRcdH1cblxuXHRcdFx0Ji0tcmVkIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAjZmY2YzU3O1xuXHRcdFx0XHRjb2xvcjogI2ZmNmM1Nztcblx0XHRcdH1cblxuXHRcdFx0Ji0tYmx1ZS1saWdodCB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogIzc0YTlmZjtcblx0XHRcdFx0Y29sb3I6ICM3NGE5ZmY7XG5cdFx0XHR9XG5cblx0XHRcdCYtLWJsdWUge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiByZ2JhKDE2LDE3OCwyNTAsMC4wOCk7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDE1cnB4O1xuXHRcdFx0XHRib3JkZXI6IDJycHggc29saWQgIzEwNkVGQTtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHRcdFx0Zm9udC1zaXplOiAyMnJweDtcblx0XHRcdFx0Y29sb3I6ICMxMDZFRkE7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9fcm91dGUge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdG1hcmdpbi10b3A6IDIwcnB4O1xuXHRcdH1cblxuXHRcdCZfX3JvdXRlLXNpZGUge1xuXHRcdFx0d2lkdGg6IDcwcnB4O1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRwYWRkaW5nOiAxNHJweCAwIDhycHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyNnJweDtcblx0XHRcdGJhY2tncm91bmQ6ICNmNmY3Zjk7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDIwcnB4O1xuXHRcdH1cblxuXHRcdCZfX2Rpc3RhbmNlLWJsb2NrIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxO1xuXG5cdFx0XHQmLS10b3Age1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiA2cnB4O1xuXHRcdFx0fVxuXG5cdFx0XHQmLS1ib3R0b20ge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiA2cnB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX2Rpc3RhbmNlLXZhbHVlIHtcblx0XHRcdGZvbnQtc2l6ZTogMjZycHg7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Y29sb3I6ICMzMzMzMzM7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0fVxuXG5cdFx0Jl9fZGlzdGFuY2UtdW5pdCB7XG5cdFx0XHRtYXJnaW4tdG9wOiA2cnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxOHJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0XHRjb2xvcjogIzhjOTM5Zjtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7XG5cdFx0fVxuXG5cdFx0Jl9fbGluZSB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4taGVpZ2h0OiA2MnJweDtcblx0XHRcdG1hcmdpbjogOHJweCAwO1xuXHRcdFx0YmFja2dyb3VuZDogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyMCcgaGVpZ2h0PScyNicgdmlld0JveD0nMCAwIDIwIDI2JyUzRSUzQ3BhdGggZmlsbD0nJTIzOEM5MzlGJyBkPSdNMTAgMEM1LjAzIDAgMSAzLjk5IDEgOC45MmMwIDYuMzEgNy4yOCAxMi44NyA4LjA3IDEzLjU3YTEuNCAxLjQgMCAwIDAgMS44NiAwQzExLjcyIDIxLjc5IDE5IDE1LjIzIDE5IDguOTIgMTkgMy45OSAxNC45NyAwIDEwIDBabTAgMTIuMjRhMy4zMiAzLjMyIDAgMSAxIDAtNi42NCAzLjMyIDMuMzIgMCAwIDEgMCA2LjY0WicvJTNFJTNDL3N2ZyUzRVwiKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDtcblx0XHRcdGJhY2tncm91bmQtc2l6ZTogMjBycHggMjZycHg7XG5cblx0XHRcdCY6OmJlZm9yZSxcblx0XHRcdCY6OmFmdGVyIHtcblx0XHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0bGVmdDogNTAlO1xuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG5cdFx0XHRcdHdpZHRoOiAycnB4O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA5OTlycHg7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICNjZmQ0ZGM7XG5cdFx0XHR9XG5cblx0XHRcdCY6OmJlZm9yZSB7XG5cdFx0XHRcdHRvcDogMDtcblx0XHRcdFx0aGVpZ2h0OiAxOHJweDtcblx0XHRcdH1cblxuXHRcdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0XHRib3R0b206IDA7XG5cdFx0XHRcdGhlaWdodDogMjRycHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9fcm91dGUtbWFpbiB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdH1cblxuXHRcdCZfX3JvdXRlLWl0ZW0ge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdFx0Z2FwOiAxNnJweDtcblxuXHRcdFx0Ji0tZGVzdGluYXRpb24ge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAyMHJweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmX19yb3V0ZS10ZXh0cyB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdH1cblxuXHRcdCZfX3JvdXRlLXRpdGxlIHtcblx0XHRcdHdpZHRoOiA1MDBycHg7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtc2l6ZTogNDBycHg7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Y29sb3I6ICMyZDMxMzk7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQmX19yb3V0ZS1kZXNjIHtcblx0XHRcdHdpZHRoOiA1MDBycHg7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbi10b3A6IDhycHg7XG5cdFx0XHRmb250LXNpemU6IDI4cnB4O1xuXHRcdFx0Y29sb3I6ICM5ZWE0YWU7XG5cdFx0XHRsaW5lLWhlaWdodDogMS40O1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQmX19uYXYge1xuXHRcdFx0d2lkdGg6IDQ4cnB4O1xuXHRcdFx0aGVpZ2h0OiA0OHJweDtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdH1cblxuXHRcdCZfX2dvb2RzIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0aGVpZ2h0OiA3MHJweDtcblx0XHRcdHBhZGRpbmc6IDAgMjBycHg7XG5cdFx0XHRtYXJnaW4tdG9wOiAyMHJweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDE2cnB4O1xuXHRcdFx0YmFja2dyb3VuZDogI2Y0ZjVmNztcblx0XHR9XG5cblx0XHQmX19nb29kcy10ZXh0IHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRmb250LXNpemU6IDI4cnB4O1xuXHRcdFx0Y29sb3I6ICM3YTgxOGQ7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdH1cblxuXHRcdCZfX2dvb2RzLWFycm93IHtcblx0XHRcdG1hcmdpbi1sZWZ0OiAxMnJweDtcblx0XHRcdGZvbnQtc2l6ZTogMjRycHg7XG5cdFx0XHRjb2xvcjogI2E0YTliMTtcblx0XHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzO1xuXG5cdFx0XHQmLS1leHBhbmRlZCB7XG5cdFx0XHRcdHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9fYnV0dG9uIHtcblx0XHRcdG1hcmdpbi10b3A6IDI0cnB4O1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRoZWlnaHQ6IDg4cnB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDg4cnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogOTk5cnB4O1xuXHRcdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgIzJiN2ZmZiAwJSwgIzFmNmZmMyAxMDAlKTtcblx0XHRcdGZvbnQtc2l6ZTogMzRycHg7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Y29sb3I6ICNmZmZmZmY7XG5cdFx0XHRib3JkZXI6IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXG5cdFx0XHQmOjphZnRlciB7XG5cdFx0XHRcdGJvcmRlcjogMDtcblx0XHRcdH1cblxuXHRcdFx0Ji0taG92ZXIge1xuXHRcdFx0XHRvcGFjaXR5OiAwLjkyO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX2FjdGlvbnMge1xuXHRcdFx0bWFyZ2luLXRvcDogMjRycHg7XG5cblx0XHRcdCYtLXBpY2t1cCxcblx0XHRcdCYtLWRlbGl2ZXJpbmcge1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRnYXA6IDIycnB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX2ljb24tYWN0aW9ucyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogMjBycHg7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblxuXHRcdFx0Ji0tc2luZ2xlIHtcblx0XHRcdFx0Z2FwOiAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX2ljb24tYWN0aW9uIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0d2lkdGg6IDc0cnB4O1xuXHRcdH1cblxuXHRcdCZfX2FjdGlvbi1pY29uIHtcblx0XHRcdHdpZHRoOiA0MHJweDtcblx0XHRcdGhlaWdodDogNDBycHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA4cnB4O1xuXHRcdFx0YmFja2dyb3VuZDogI2Y3ZjhmYTtcblx0XHR9XG5cblx0XHQmX19hY3Rpb24tdGV4dCB7XG5cdFx0XHRtYXJnaW4tdG9wOiA4cnB4O1xuXHRcdFx0Zm9udC1zaXplOiAyNnJweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdFx0Y29sb3I6ICM1YjYxNmI7XG5cdFx0fVxuXG5cdFx0Jl9fYnV0dG9uLS1jb2RlIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdH1cblx0fVxuPC9zdHlsZT5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///91\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 _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 93));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\nvar _vuex = __webpack_require__(/*! vuex */ 12);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar _default = {\n data: function data() {\n return {\n tts: null,\n show: false,\n show1: false,\n showGrabModal: false,\n selectedGrabOrder: null,\n selectedCancelOrder: null,\n cancelRemain: 0,\n selectedPickupOrder: null,\n showPhotoDeliverPopup: false,\n routeInfo: null,\n statusBarHeight: 0,\n headerHeight: 0,\n tabbarHeight: 0,\n scrollHeight: 0,\n showFilterPopup: false,\n acceptingStatus: 0,\n showStatusPicker: false,\n statusOptions: [{\n text: '上线',\n value: 1\n }, {\n text: '下线',\n value: 0\n }],\n centerUserInfo: {},\n activeTab: 'hall',\n expandedGoodsIds: [],\n categoryList: [],\n filterSections: [{\n key: 'sort',\n title: '排序',\n options: ['综合排序', '距离最近']\n }, {\n key: 'level',\n title: '物品等级',\n options: ['不限']\n }, {\n key: 'distance',\n title: '位置范围',\n options: ['不限', '500m', '1km', '2km', '3km', '4km', '5km', '6km', '7km']\n }],\n selectedFilters: {\n sort: '综合排序',\n level: '不限',\n distance: '不限'\n },\n stats: [{\n value: '-',\n label: '服务分'\n }, {\n value: '-',\n label: '今日预计佣金'\n }, {\n value: '-',\n label: '今日接单'\n }],\n tabs: [{\n label: '抢单大厅',\n value: 'hall'\n }, {\n label: '待取货',\n value: 'pickup'\n }, {\n label: '配送中',\n value: 'delivering'\n }],\n orderList: [],\n pickupOrderList: [],\n deliveringOrderList: [],\n hallPage: 1,\n hallPageSize: 10,\n hallLoading: false,\n hallHasMore: true,\n pickupLoading: false,\n deliveringLoading: false,\n activeOrderCount: null\n };\n },\n watch: {\n activeTab: function activeTab(newVal) {\n this.loadOrdersByTab(newVal);\n }\n },\n onLoad: function onLoad() {\n var systemInfo = uni.getSystemInfoSync();\n var safeBottom = systemInfo.safeAreaInsets ? systemInfo.safeAreaInsets.bottom || 0 : 0;\n var windowHeight = systemInfo.windowHeight || 0;\n this.statusBarHeight = systemInfo.statusBarHeight || 0;\n this.headerHeight = this.statusBarHeight + uni.upx2px(308);\n this.tabbarHeight = uni.upx2px(100) + safeBottom;\n this.scrollHeight = Math.max(windowHeight - this.headerHeight, 0);\n if (this.userInfo.auditStatus === 99) return;\n this.acceptingStatus = this.userInfo.acceptingStatus || 0;\n this.loadOrdersByTab(this.activeTab);\n },\n onShow: function onShow() {\n this.getCenterInfo();\n this.getCategoryListData();\n this.getActiveOrderCount();\n },\n onReachBottom: function onReachBottom() {\n if (this.acceptingStatus === 0) return;\n if (this.activeTab === 'hall') {\n this.hallPage++;\n this.getHallOrders();\n }\n },\n computed: _objectSpread(_objectSpread({}, (0, _vuex.mapState)(['userInfo', 'token'])), {}, {\n displayTabs: function displayTabs() {\n var _this = this;\n return this.tabs.map(function (tab) {\n if (tab.value === 'pickup') {\n var _this$activeOrderCoun;\n return _objectSpread(_objectSpread({}, tab), {}, {\n count: (_this$activeOrderCoun = _this.activeOrderCount) === null || _this$activeOrderCoun === void 0 ? void 0 : _this$activeOrderCoun.grabbedCount\n });\n } else if (tab.value === 'delivering') {\n var _this$activeOrderCoun2;\n return _objectSpread(_objectSpread({}, tab), {}, {\n count: (_this$activeOrderCoun2 = _this.activeOrderCount) === null || _this$activeOrderCoun2 === void 0 ? void 0 : _this$activeOrderCoun2.deliveringCount\n });\n }\n return tab;\n });\n },\n currentOrderList: function currentOrderList() {\n var orderMap = {\n hall: this.orderList,\n pickup: this.pickupOrderList,\n delivering: this.deliveringOrderList\n };\n return orderMap[this.activeTab] || [];\n },\n bodyStyle: function bodyStyle() {\n return {\n marginTop: this.headerHeight + 'px',\n height: this.scrollHeight + 'px'\n };\n }\n }),\n onReady: function onReady() {\n this.initTTS(); // 页面渲染完成初始化语音\n },\n\n methods: {\n formatRemainTime: function formatRemainTime(minutes) {\n if (!minutes) return 0;\n if (minutes === 0) {\n return '配送已超时';\n }\n if (minutes >= 60) {\n return (minutes / 60).toFixed(2) + '小时内';\n }\n return minutes + '分钟内';\n },\n getGoodsText: function getGoodsText(items, itemId) {\n if (!items || items.length === 0) return '无';\n var text = items.map(function (i) {\n return \"\".concat(i.name, \"*\").concat(i.quantity);\n }).join('、');\n if (text.length > 20 && !this.expandedGoodsIds.includes(itemId)) {\n return text.substring(0, 20) + '...';\n }\n return text;\n },\n toggleGoodsExpand: function toggleGoodsExpand(id) {\n var index = this.expandedGoodsIds.indexOf(id);\n if (index > -1) {\n this.expandedGoodsIds.splice(index, 1);\n } else {\n this.expandedGoodsIds.push(id);\n }\n },\n formatDistanceParts: function formatDistanceParts(distance) {\n if (distance === null || distance === undefined || distance === '') {\n return {\n value: '--',\n unit: ''\n };\n }\n if (typeof distance === 'number') {\n if (distance >= 1000) {\n return {\n value: (distance / 1000).toFixed(1),\n unit: 'km'\n };\n }\n return {\n value: String(Math.round(distance)),\n unit: 'm'\n };\n }\n var text = String(distance).trim();\n var match = text.match(/^([\\d.]+)\\s*([a-zA-Z\\u4e00-\\u9fa5]*)$/);\n if (match) {\n return {\n value: match[1],\n unit: match[2] || ''\n };\n }\n return {\n value: text,\n unit: ''\n };\n },\n navigateToAddress: function navigateToAddress(item, type) {\n var latitude, longitude, name, address;\n if (type === 'deposit') {\n latitude = item.depositLat;\n longitude = item.depositLng;\n name = item.depositShopName;\n address = item.depositShopAddress;\n } else {\n latitude = item.takeLat;\n longitude = item.takeLng;\n name = item.takeName;\n address = item.takeAddress;\n }\n if (!latitude || !longitude) {\n uni.showToast({\n title: '地址坐标缺失',\n icon: 'none'\n });\n return;\n }\n uni.openLocation({\n latitude: latitude,\n longitude: longitude,\n name: name,\n address: address,\n success: function success() {},\n fail: function fail(err) {\n uni.showToast({\n title: '打开地图失败',\n icon: 'none'\n });\n __f__(\"error\", 'openLocation fail:', err, \" at pages/index/index.vue:473\");\n }\n });\n },\n handleUserClick: function handleUserClick() {\n uni.navigateTo({\n url: '/pages/test/test'\n });\n },\n getActiveOrderCount: function getActiveOrderCount() {\n var _this2 = this;\n this.$u.api.activeOrderCount().then(function (res) {\n if (res.code === 200) {\n _this2.activeOrderCount = res.data;\n }\n }).catch(function (err) {\n _this2.activeOrderCount = null;\n });\n },\n handleGrabOrder: function handleGrabOrder(item) {\n __f__(\"log\", item, \" at pages/index/index.vue:494\");\n this.selectedGrabOrder = item;\n this.showGrabModal = true;\n },\n confirmGrabOrder: function confirmGrabOrder() {\n var _this3 = this;\n if (!this.selectedGrabOrder) return;\n this.$u.api.grabOrder({\n orderId: this.selectedGrabOrder.id\n }).then(function (res) {\n _this3.showGrabModal = false;\n if (res.code === 200) {\n uni.showToast({\n title: '抢单成功',\n icon: 'success'\n });\n _this3.hallPage = 1;\n _this3.hallHasMore = true;\n _this3.orderList = [];\n _this3.getHallOrders();\n _this3.getActiveOrderCount();\n _this3.getCenterInfo();\n } else {\n uni.showToast({\n title: res.message || '抢单失败',\n icon: 'none'\n });\n }\n }).catch(function () {\n _this3.showGrabModal = false;\n });\n },\n handleCancelOrder: function handleCancelOrder(item) {\n var _this4 = this;\n this.selectedCancelOrder = item;\n this.$u.api.cancelLimit().then(function (res) {\n if (res.code === 200) {\n _this4.cancelRemain = res.data.remain;\n }\n }).finally(function () {\n _this4.show = true;\n });\n },\n confirmCancelOrder: function confirmCancelOrder() {\n var _this5 = this;\n if (!this.selectedCancelOrder) return;\n this.$u.api.cancelOrder({\n orderId: this.selectedCancelOrder.id\n }).then(function (res) {\n _this5.show = false;\n if (res.code === 200) {\n uni.showToast({\n title: '取消成功',\n icon: 'success'\n });\n _this5.getPickupOrders();\n _this5.getCenterInfo();\n _this5.getActiveOrderCount();\n } else {\n uni.showToast({\n title: res.message || '取消失败',\n icon: 'none'\n });\n }\n }).catch(function () {\n _this5.show = false;\n });\n },\n handleCall: function handleCall(item) {\n if (item.contactPhone) {\n uni.makePhoneCall({\n phoneNumber: item.contactPhone\n });\n }\n },\n handleShowPickupCode: function handleShowPickupCode(item) {\n this.selectedPickupOrder = item;\n this.show1 = true;\n },\n goToOrderDetail: function goToOrderDetail(item, index) {\n var url = \"/pages/order-detail/order-detail?id=\".concat(item.id);\n if (this.activeTab === 'pickup' || this.activeTab === 'delivering') {\n url += \"&index=\".concat(index + 1);\n }\n uni.navigateTo({\n url: url\n });\n },\n getCenterInfo: function getCenterInfo() {\n var _this6 = this;\n this.$u.api.centerInfo().then(function (res) {\n if (res.code === 200) {\n _this6.acceptingStatus = res.data.acceptingStatus;\n _this6.centerUserInfo = {\n fullImgUrl: res.data.fullImgUrl,\n name: res.data.name\n };\n _this6.stats = [{\n value: res.data.score,\n label: '服务分'\n }, {\n value: (res.data.todayCommission / 100 || 0).toFixed(2),\n label: '今日预计佣金'\n }, {\n value: res.data.todayOrderCount,\n label: '今日接单'\n }];\n }\n });\n },\n getCategoryListData: function getCategoryListData() {\n var _this7 = this;\n this.$u.api.getCategoryList({\n type: 3\n }).then(function (res) {\n if (res.code === 200) {\n _this7.categoryList = res.data || [];\n _this7.filterSections.forEach(function (section) {\n if (section.key === 'level') {\n section.options = ['不限'].concat((0, _toConsumableArray2.default)(_this7.categoryList.map(function (item) {\n return item.name;\n })));\n }\n });\n }\n });\n },\n loadOrdersByTab: function loadOrdersByTab(tab) {\n if (this.userInfo.auditStatus === 99) return;\n if (this.acceptingStatus === 0) return;\n if (tab === 'hall') {\n this.hallPage = 1;\n this.hallHasMore = true;\n this.orderList = [];\n this.getHallOrders();\n } else if (tab === 'pickup') {\n this.pickupOrderList = [];\n this.getPickupOrders();\n } else if (tab === 'delivering') {\n this.deliveringOrderList = [];\n this.getDeliveringOrders();\n }\n },\n getHallOrders: function getHallOrders() {\n var _this8 = this;\n if (this.acceptingStatus === 0) return;\n if (this.hallLoading || !this.hallHasMore) {\n return;\n }\n this.hallLoading = true;\n var distance = null;\n if (this.selectedFilters.distance !== '不限') {\n var distanceText = this.selectedFilters.distance;\n if (distanceText.includes('km')) {\n distance = parseInt(distanceText) * 1000;\n } else {\n distance = parseInt(distanceText);\n }\n }\n var sortTypeMap = {\n '综合排序': 1,\n '距离最近': 2\n };\n var sortType = this.selectedFilters.sort !== '不限' ? sortTypeMap[this.selectedFilters.sort] || null : null;\n var gradeId = null;\n if (this.selectedFilters.level !== '不限') {\n var selectedCategory = this.categoryList.find(function (item) {\n return item.name === _this8.selectedFilters.level;\n });\n if (selectedCategory) {\n gradeId = selectedCategory.id;\n }\n }\n __f__(\"log\", '接单大厅:', {\n distance: distance,\n gradeId: gradeId,\n sortType: sortType\n }, \" at pages/index/index.vue:646\");\n this.$u.api.grabOrderHall({\n capacity: this.hallPageSize,\n page: this.hallPage,\n model: {\n distance: distance,\n gradeId: gradeId,\n sortType: sortType\n }\n }).then(function (res) {\n __f__(\"log\", '接单大厅', res, \" at pages/index/index.vue:656\");\n _this8.hallLoading = false;\n if (res.code === 200) {\n var list = res.data.records || [];\n _this8.orderList = _this8.hallPage === 1 ? list : _this8.orderList.concat(list);\n _this8.hallHasMore = list.length >= _this8.hallPageSize;\n }\n }).catch(function (err) {\n _this8.hallLoading = false;\n });\n },\n getPickupOrders: function getPickupOrders() {\n var _this9 = this;\n if (this.acceptingStatus === 0) return;\n if (this.pickupLoading) return;\n this.pickupLoading = true;\n this.$u.api.activeOrders({\n status: 3\n }).then(function (res) {\n __f__(\"log\", '待取货:', res, \" at pages/index/index.vue:673\");\n _this9.pickupLoading = false;\n if (res.code === 200) {\n _this9.pickupOrderList = res.data.records || res.data || [];\n }\n }).catch(function (err) {\n _this9.pickupLoading = false;\n });\n },\n getDeliveringOrders: function getDeliveringOrders() {\n var _this10 = this;\n if (this.acceptingStatus === 0) return;\n if (this.deliveringLoading) return;\n this.deliveringLoading = true;\n this.$u.api.activeOrders({\n status: 4\n }).then(function (res) {\n __f__(\"log\", '配送中:', res, \" at pages/index/index.vue:688\");\n _this10.deliveringLoading = false;\n if (res.code === 200) {\n _this10.deliveringOrderList = res.data || [];\n }\n }).catch(function (err) {\n _this10.deliveringLoading = false;\n });\n },\n openStatusPicker: function openStatusPicker() {\n this.showStatusPicker = true;\n },\n confirmStatus: function confirmStatus(e) {\n var _this11 = this;\n this.showStatusPicker = false;\n var selectedValue = e.value[0];\n this.$u.api.updateAcceptingStatus({\n status: selectedValue.value\n }).then(function (res) {\n if (res.code === 200) {\n _this11.acceptingStatus = selectedValue.value;\n _this11.getCenterInfo();\n if (_this11.acceptingStatus === 0) {\n _this11.orderList = [];\n _this11.pickupOrderList = [];\n _this11.deliveringOrderList = [];\n } else {\n if (_this11.activeTab === 'pickup') {\n _this11.getPickupOrders();\n } else if (_this11.activeTab === 'delivering') {\n _this11.getDeliveringOrders();\n } else {\n _this11.hallPage = 1;\n _this11.hallHasMore = true;\n _this11.orderList = [];\n _this11.getHallOrders();\n }\n }\n }\n });\n },\n toDriverCertification: function toDriverCertification() {\n uni.navigateTo({\n url: '/pages/driver-certification/driver-certification'\n });\n },\n toggleFilterPopup: function toggleFilterPopup(show) {\n this.showFilterPopup = show;\n },\n selectFilter: function selectFilter(key, option) {\n this.selectedFilters = _objectSpread(_objectSpread({}, this.selectedFilters), {}, (0, _defineProperty2.default)({}, key, option));\n },\n resetFilters: function resetFilters() {\n this.showFilterPopup = false;\n if (this.userInfo.auditStatus === 99) return;\n this.selectedFilters = {\n sort: '综合排序',\n level: '不限',\n distance: '不限'\n };\n if (this.activeTab === 'hall') {\n this.hallPage = 1;\n this.hallHasMore = true;\n this.orderList = [];\n this.getHallOrders();\n }\n },\n confirmFilters: function confirmFilters() {\n this.showFilterPopup = false;\n if (this.userInfo.auditStatus === 99) {\n this.hallHasMore = true;\n return;\n }\n if (this.activeTab === 'hall') {\n this.hallPage = 1;\n this.hallHasMore = true;\n this.orderList = [];\n this.getHallOrders();\n }\n },\n initTTS: function initTTS() {\n var _this12 = this;\n if (uni.getSystemInfoSync().platform !== 'android') {\n __f__(\"log\", '仅支持安卓', \" at pages/index/index.vue:778\");\n return;\n }\n try {\n // 导入安卓原生类\n var TextToSpeech = plus.android.importClass('android.speech.tts.TextToSpeech');\n var Locale = plus.android.importClass('java.util.Locale');\n\n // 创建TTS\n this.tts = new TextToSpeech(plus.android.runtimeMainActivity(), {\n onInit: function onInit(status) {\n if (status == 0) {\n // 设置中文\n _this12.tts.setLanguage(Locale.CHINA);\n __f__(\"log\", '语音初始化成功', \" at pages/index/index.vue:793\");\n }\n }\n });\n } catch (e) {\n __f__(\"log\", '初始化失败', e, \" at pages/index/index.vue:798\");\n }\n },\n speak: function speak(text) {\n if (!this.tts) {\n uni.showToast({\n title: '语音未准备好',\n icon: 'none'\n });\n return;\n }\n try {\n // 安卓原生播报(QUEUE_FLUSH = 立即播报,打断上一条)\n this.tts.speak(text, 0, null);\n } catch (err) {\n __f__(\"log\", '播报失败', err, \" at pages/index/index.vue:815\");\n }\n },\n stopSpeak: function stopSpeak() {\n if (this.tts) this.tts.stop();\n }\n },\n onUnload: function onUnload() {\n if (this.tts) {\n this.tts.stop();\n this.tts.shutdown();\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 */ 92)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbImRhdGEiLCJ0dHMiLCJzaG93Iiwic2hvdzEiLCJzaG93R3JhYk1vZGFsIiwic2VsZWN0ZWRHcmFiT3JkZXIiLCJzZWxlY3RlZENhbmNlbE9yZGVyIiwiY2FuY2VsUmVtYWluIiwic2VsZWN0ZWRQaWNrdXBPcmRlciIsInNob3dQaG90b0RlbGl2ZXJQb3B1cCIsInJvdXRlSW5mbyIsInN0YXR1c0JhckhlaWdodCIsImhlYWRlckhlaWdodCIsInRhYmJhckhlaWdodCIsInNjcm9sbEhlaWdodCIsInNob3dGaWx0ZXJQb3B1cCIsImFjY2VwdGluZ1N0YXR1cyIsInNob3dTdGF0dXNQaWNrZXIiLCJzdGF0dXNPcHRpb25zIiwidGV4dCIsInZhbHVlIiwiY2VudGVyVXNlckluZm8iLCJhY3RpdmVUYWIiLCJleHBhbmRlZEdvb2RzSWRzIiwiY2F0ZWdvcnlMaXN0IiwiZmlsdGVyU2VjdGlvbnMiLCJrZXkiLCJ0aXRsZSIsIm9wdGlvbnMiLCJzZWxlY3RlZEZpbHRlcnMiLCJzb3J0IiwibGV2ZWwiLCJkaXN0YW5jZSIsInN0YXRzIiwibGFiZWwiLCJ0YWJzIiwib3JkZXJMaXN0IiwicGlja3VwT3JkZXJMaXN0IiwiZGVsaXZlcmluZ09yZGVyTGlzdCIsImhhbGxQYWdlIiwiaGFsbFBhZ2VTaXplIiwiaGFsbExvYWRpbmciLCJoYWxsSGFzTW9yZSIsInBpY2t1cExvYWRpbmciLCJkZWxpdmVyaW5nTG9hZGluZyIsImFjdGl2ZU9yZGVyQ291bnQiLCJ3YXRjaCIsIm9uTG9hZCIsIm9uU2hvdyIsIm9uUmVhY2hCb3R0b20iLCJjb21wdXRlZCIsImRpc3BsYXlUYWJzIiwiY291bnQiLCJjdXJyZW50T3JkZXJMaXN0IiwiaGFsbCIsInBpY2t1cCIsImRlbGl2ZXJpbmciLCJib2R5U3R5bGUiLCJtYXJnaW5Ub3AiLCJoZWlnaHQiLCJvblJlYWR5IiwibWV0aG9kcyIsImZvcm1hdFJlbWFpblRpbWUiLCJnZXRHb29kc1RleHQiLCJ0b2dnbGVHb29kc0V4cGFuZCIsImZvcm1hdERpc3RhbmNlUGFydHMiLCJ1bml0IiwibmF2aWdhdGVUb0FkZHJlc3MiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsIm5hbWUiLCJhZGRyZXNzIiwidW5pIiwiaWNvbiIsInN1Y2Nlc3MiLCJmYWlsIiwiaGFuZGxlVXNlckNsaWNrIiwidXJsIiwiZ2V0QWN0aXZlT3JkZXJDb3VudCIsImhhbmRsZUdyYWJPcmRlciIsImNvbmZpcm1HcmFiT3JkZXIiLCJvcmRlcklkIiwiaGFuZGxlQ2FuY2VsT3JkZXIiLCJjb25maXJtQ2FuY2VsT3JkZXIiLCJoYW5kbGVDYWxsIiwicGhvbmVOdW1iZXIiLCJoYW5kbGVTaG93UGlja3VwQ29kZSIsImdvVG9PcmRlckRldGFpbCIsImdldENlbnRlckluZm8iLCJmdWxsSW1nVXJsIiwiZ2V0Q2F0ZWdvcnlMaXN0RGF0YSIsInR5cGUiLCJzZWN0aW9uIiwibG9hZE9yZGVyc0J5VGFiIiwiZ2V0SGFsbE9yZGVycyIsImdyYWRlSWQiLCJzb3J0VHlwZSIsImNhcGFjaXR5IiwicGFnZSIsIm1vZGVsIiwiZ2V0UGlja3VwT3JkZXJzIiwic3RhdHVzIiwiZ2V0RGVsaXZlcmluZ09yZGVycyIsIm9wZW5TdGF0dXNQaWNrZXIiLCJjb25maXJtU3RhdHVzIiwidG9Ecml2ZXJDZXJ0aWZpY2F0aW9uIiwidG9nZ2xlRmlsdGVyUG9wdXAiLCJzZWxlY3RGaWx0ZXIiLCJyZXNldEZpbHRlcnMiLCJjb25maXJtRmlsdGVycyIsImluaXRUVFMiLCJvbkluaXQiLCJzcGVhayIsInN0b3BTcGVhayIsIm9uVW5sb2FkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFzUUE7QUFBQTtBQUFBO0FBQUEsZUFDQTtFQUNBQTtJQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDLGdCQUNBO1FBQUFDO1FBQUFDO01BQUEsR0FDQTtRQUFBRDtRQUFBQztNQUFBLEVBQ0E7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUMsaUJBQ0E7UUFBQUM7UUFBQUM7UUFBQUM7TUFBQSxHQUNBO1FBQUFGO1FBQUFDO1FBQUFDO01BQUEsR0FDQTtRQUFBRjtRQUFBQztRQUFBQztNQUFBLEVBQ0E7TUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7TUFDQTtNQUNBQyxRQUNBO1FBQUFiO1FBQUFjO01BQUEsR0FDQTtRQUFBZDtRQUFBYztNQUFBLEdBQ0E7UUFBQWQ7UUFBQWM7TUFBQSxFQUNBO01BQ0FDLE9BQ0E7UUFBQUQ7UUFBQWQ7TUFBQSxHQUNBO1FBQUFjO1FBQUFkO01BQUEsR0FDQTtRQUFBYztRQUFBZDtNQUFBLEVBQ0E7TUFDQWdCO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO0lBQ0E7RUFDQTtFQUVBQztJQUNBeEI7TUFDQTtJQUNBO0VBQ0E7RUFFQXlCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUFDQTtFQUVBQztJQUNBO0lBQ0E7SUFDQTtFQUNBO0VBRUFDO0lBQ0E7SUFDQTtNQUNBO01BQ0E7SUFDQTtFQUNBO0VBRUFDLDBDQUNBO0lBRUFDO01BQUE7TUFDQTtRQUNBO1VBQUE7VUFDQTtZQUFBQztVQUFBO1FBQ0E7VUFBQTtVQUNBO1lBQUFBO1VBQUE7UUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBQztNQUNBO1FBQ0FDO1FBQ0FDO1FBQ0FDO01BQ0E7TUFFQTtJQUNBO0lBRUFDO01BQ0E7UUFDQUM7UUFDQUM7TUFDQTtJQUNBO0VBQUEsRUFDQTtFQUVBQztJQUNBO0VBQ0E7O0VBRUFDO0lBQ0FDO01BQ0E7TUFDQTtRQUNBO01BQ0E7TUFDQTtRQUNBO01BQ0E7TUFDQTtJQUNBO0lBRUFDO01BQ0E7TUFDQTtRQUFBO01BQUE7TUFDQTtRQUNBO01BQ0E7TUFDQTtJQUNBO0lBRUFDO01BQ0E7TUFDQTtRQUNBO01BQ0E7UUFDQTtNQUNBO0lBQ0E7SUFFQUM7TUFDQTtRQUNBO1VBQUE3QztVQUFBOEM7UUFBQTtNQUNBO01BRUE7UUFDQTtVQUNBO1lBQUE5QztZQUFBOEM7VUFBQTtRQUNBO1FBQ0E7VUFBQTlDO1VBQUE4QztRQUFBO01BQ0E7TUFFQTtNQUNBO01BQ0E7UUFDQTtVQUNBOUM7VUFDQThDO1FBQ0E7TUFDQTtNQUVBO1FBQUE5QztRQUFBOEM7TUFBQTtJQUNBO0lBRUFDO01BQ0E7TUFDQTtRQUNBQztRQUNBQztRQUNBQztRQUNBQztNQUNBO1FBQ0FIO1FBQ0FDO1FBQ0FDO1FBQ0FDO01BQ0E7TUFDQTtRQUNBQztVQUFBN0M7VUFBQThDO1FBQUE7UUFDQTtNQUNBO01BQ0FEO1FBQ0FKO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FHO1FBQ0FDO1VBQ0FIO1lBQUE3QztZQUFBOEM7VUFBQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFHO01BQ0FKO1FBQ0FLO01BQ0E7SUFDQTtJQUNBQztNQUFBO01BQ0E7UUFDQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBQztNQUNBO01BQ0E7TUFDQTtJQUNBO0lBRUFDO01BQUE7TUFDQTtNQUNBO1FBQUFDO01BQUE7UUFDQTtRQUNBO1VBQ0FUO1lBQUE3QztZQUFBOEM7VUFBQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtRQUNBO1VBQ0FEO1lBQUE3QztZQUFBOEM7VUFBQTtRQUNBO01BQ0E7UUFDQTtNQUNBO0lBQ0E7SUFFQVM7TUFBQTtNQUNBO01BQ0E7UUFDQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBQztNQUFBO01BQ0E7TUFDQTtRQUFBRjtNQUFBO1FBQ0E7UUFDQTtVQUNBVDtZQUFBN0M7WUFBQThDO1VBQUE7VUFDQTtVQUNBO1VBQ0E7UUFDQTtVQUNBRDtZQUFBN0M7WUFBQThDO1VBQUE7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFXO01BQ0E7UUFDQVo7VUFDQWE7UUFDQTtNQUNBO0lBQ0E7SUFFQUM7TUFDQTtNQUNBO0lBQ0E7SUFFQUM7TUFDQTtNQUNBO1FBQ0FWO01BQ0E7TUFDQUw7UUFBQUs7TUFBQTtJQUNBO0lBRUFXO01BQUE7TUFDQTtRQUNBO1VBQ0E7VUFDQTtZQUNBQztZQUNBbkI7VUFDQTtVQUNBLGdCQUNBO1lBQUFsRDtZQUFBYztVQUFBLEdBQ0E7WUFBQWQ7WUFBQWM7VUFBQSxHQUNBO1lBQUFkO1lBQUFjO1VBQUEsRUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBd0Q7TUFBQTtNQUNBO1FBQUFDO01BQUE7UUFDQTtVQUNBO1VBQ0E7WUFDQTtjQUNBQztnQkFBQTtjQUFBO1lBQ0E7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBQztNQUNBO01BQ0E7TUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO01BQ0E7UUFDQTtRQUNBO01BQ0E7UUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBQztNQUFBO01BQ0E7TUFDQTtRQUNBO01BQ0E7TUFDQTtNQUVBO01BQ0E7UUFDQTtRQUNBO1VBQ0E5RDtRQUNBO1VBQ0FBO1FBQ0E7TUFDQTtNQUVBO1FBQ0E7UUFDQTtNQUNBO01BQ0E7TUFFQTtNQUNBO1FBQ0E7VUFBQTtRQUFBO1FBQ0E7VUFDQStEO1FBQ0E7TUFDQTtNQUVBO1FBQUEvRDtRQUFBK0Q7UUFBQUM7TUFBQTtNQUNBO1FBQ0FDO1FBQ0FDO1FBQ0FDO1VBQ0FuRTtVQUNBK0Q7VUFDQUM7UUFDQTtNQUNBO1FBQ0E7UUFDQTtRQUNBO1VBQ0E7VUFDQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBSTtNQUFBO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFBQUM7TUFBQTtRQUNBO1FBQ0E7UUFDQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBQztNQUFBO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFBQUQ7TUFBQTtRQUNBO1FBQ0E7UUFDQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBRTtNQUNBO0lBQ0E7SUFFQUM7TUFBQTtNQUNBO01BQ0E7TUFDQTtRQUFBSDtNQUFBO1FBQ0E7VUFDQTtVQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0E7VUFDQTtZQUNBO2NBQ0E7WUFDQTtjQUNBO1lBQ0E7Y0FDQTtjQUNBO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFFQUk7TUFDQWpDO1FBQ0FLO01BQ0E7SUFDQTtJQUVBNkI7TUFDQTtJQUNBO0lBRUFDO01BQ0EsdURBQ0EsNkRBQ0FqRixhQUNBO0lBQ0E7SUFFQWtGO01BQ0E7TUFDQTtNQUNBO1FBQ0E5RTtRQUNBQztRQUNBQztNQUNBO01BQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFFQTZFO01BQ0E7TUFDQTtRQUNBO1FBQ0E7TUFDQTtNQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFDO01BQUE7TUFDQTtRQUNBO1FBQ0E7TUFDQTtNQUVBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7VUFDQUM7WUFDQTtjQUNBO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFDO01BQ0E7UUFDQXhDO1VBQ0E3QztVQUNBOEM7UUFDQTtRQUNBO01BQ0E7TUFFQTtRQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBd0M7TUFDQTtJQUNBO0VBQ0E7RUFFQUM7SUFDQTtNQUNBO01BQ0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSwyQiIsImZpbGUiOiI5MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cblx0PHZpZXcgY2xhc3M9XCJoYWxsLXBhZ2VcIj5cblx0XHQ8dmlldyBjbGFzcz1cImhhbGwtcGFnZV9faGVhZGVyXCIgOnN0eWxlPVwieyBwYWRkaW5nVG9wOiBzdGF0dXNCYXJIZWlnaHQgKyAncHgnIH1cIj5cblx0XHRcdDx2aWV3IGNsYXNzPVwiaGFsbC1wYWdlX191c2VyLXJvd1wiIEBjbGljaz1cImhhbmRsZVVzZXJDbGlja1wiPlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImhhbGwtcGFnZV9fdXNlclwiPlxuXHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cImhhbGwtcGFnZV9fYXZhdGFyXCIgOnNyYz1cImNlbnRlclVzZXJJbmZvLmZ1bGxJbWdVcmwgfHwgJy9zdGF0aWMvaW1hZ2UvaWNfcGljQDJ4LnBuZydcIiBtb2RlPVwiYXNwZWN0RmlsbFwiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJoYWxsLXBhZ2VfX25hbWVcIj57eyBjZW50ZXJVc2VySW5mby5uYW1lIH19PC90ZXh0PlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaGFsbC1wYWdlX19zdGF0dXNcIiB2LWlmPVwidXNlckluZm8uYXVkaXRTdGF0dXMgPT09IDNcIiBAY2xpY2s9XCJvcGVuU3RhdHVzUGlja2VyXCI+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoYWxsLXBhZ2VfX3N0YXR1cy1kb3RcIiA6Y2xhc3M9XCJ7ICdoYWxsLXBhZ2VfX3N0YXR1cy1kb3QtLW9mZmxpbmUnOiBhY2NlcHRpbmdTdGF0dXMgPT09IDAgfVwiPjwvdmlldz5cblx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cImhhbGwtcGFnZV9fc3RhdHVzLXRleHRcIj57eyBhY2NlcHRpbmdTdGF0dXMgPT09IDEgPyAn5o6l5Y2V5LitJyA6ICflt7LkuIvnur8nIH19PC90ZXh0PlxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaGFsbC1wYWdlX19zdGF0dXMtYXJyb3dcIj7ilrw8L3RleHQ+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoYWxsLXBhZ2VfX3VzZXJcIiBzdHlsZT1cIm9wYWNpdHk6IDA7XCI+XG5cdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwiaGFsbC1wYWdlX19hdmF0YXJcIiA6c3JjPVwiY2VudGVyVXNlckluZm8uZnVsbEltZ1VybCB8fCAnL3N0YXRpYy9pbWFnZS9pY19waWNAMngucG5nJ1wiIG1vZGU9XCJhc3BlY3RGaWxsXCI+PC9pbWFnZT5cblx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cImhhbGwtcGFnZV9fbmFtZVwiPnt7IGNlbnRlclVzZXJJbmZvLm5hbWUgfX08L3RleHQ+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cblxuXHRcdFx0PHZpZXcgY2xhc3M9XCJoYWxsLXBhZ2VfX3N0YXRzXCI+XG5cdFx0XHRcdDx2aWV3IHYtZm9yPVwiaXRlbSBpbiBzdGF0c1wiIDprZXk9XCJpdGVtLmxhYmVsXCIgY2xhc3M9XCJoYWxsLXBhZ2VfX3N0YXQtaXRlbVwiPlxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaGFsbC1wYWdlX19zdGF0LXZhbHVlXCI+e3sgdXNlckluZm8uYXVkaXRTdGF0dXMgPT09IDMgPyBpdGVtLnZhbHVlIDogJy0nIH19PC90ZXh0PlxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaGFsbC1wYWdlX19zdGF0LWxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvdGV4dD5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXG5cdFx0XHQ8dmlldyBjbGFzcz1cImhhbGwtcGFnZV9fdGFic1wiPlxuXHRcdFx0XHQ8dmlldyB2LWZvcj1cInRhYiBpbiBkaXNwbGF5VGFic1wiIDprZXk9XCJ0YWIudmFsdWVcIiBjbGFzcz1cImhhbGwtcGFnZV9fdGFiXCIgOmNsYXNzPVwieyAnaGFsbC1wYWdlX190YWItLWFjdGl2ZSc6IGFjdGl2ZVRhYiA9PT0gdGFiLnZhbHVlIH1cIiBAY2xpY2s9XCJhY3RpdmVUYWIgPSB0YWIudmFsdWVcIj5cblx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cImhhbGwtcGFnZV9fdGFiLXRleHRcIj57eyB0YWIubGFiZWwgfX08L3RleHQ+XG5cdFx0XHRcdFx0PHRleHQgdi1pZj1cInRhYi5jb3VudFwiIGNsYXNzPVwiaGFsbC1wYWdlX190YWItY291bnRcIj57eyB1c2VySW5mby5hdWRpdFN0YXR1cyA9PT0gMyA/IHRhYi5jb3VudCA6ICcnIH19PC90ZXh0PlxuXHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJhY3RpdmVUYWIgPT09IHRhYi52YWx1ZVwiIGNsYXNzPVwiaGFsbC1wYWdlX190YWItbGluZVwiPjwvdmlldz5cblx0XHRcdFx0PC92aWV3Plx0XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaGFsbC1wYWdlX19maWx0ZXJcIiBAY2xpY2s9XCJ0b2dnbGVGaWx0ZXJQb3B1cCh0cnVlKVwiPlxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaGFsbC1wYWdlX19maWx0ZXItdGV4dFwiIDpjbGFzcz1cInsgJ2hhbGwtcGFnZV9fZmlsdGVyLXRleHQtLWFjdGl2ZSc6IHNob3dGaWx0ZXJQb3B1cCB9XCI+562b6YCJPC90ZXh0PlxuXHRcdFx0XHRcdDxpbWFnZSA6c3JjPVwic2hvd0ZpbHRlclBvcHVwID8gJy9zdGF0aWMvaW1hZ2UvaWNfc2hhaXh1YW5fc2VsQDJ4LnBuZycgOiAnL3N0YXRpYy9pbWFnZS9pY19zaGFpeHVhbkAyeC5wbmcnXCIgbW9kZT1cIndpZHRoRml4XCIgY2xhc3M9XCJoYWxsLXBhZ2VfX2ZpbHRlci1pY29uXCI+PC9pbWFnZT5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXHRcdDwvdmlldz5cblxuXHRcdDx2aWV3IHYtaWY9XCJzaG93RmlsdGVyUG9wdXBcIiBjbGFzcz1cImZpbHRlci1wb3B1cFwiIDpzdHlsZT1cInsgdG9wOiBoZWFkZXJIZWlnaHQgKyAncHgnLCBib3R0b206IHRhYmJhckhlaWdodCArICdweCcgfVwiIEBjbGljaz1cInRvZ2dsZUZpbHRlclBvcHVwKGZhbHNlKVwiPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJmaWx0ZXItcG9wdXBfX3BhbmVsXCIgQGNsaWNrLnN0b3A+XG5cdFx0XHRcdDxzY3JvbGwtdmlldyBjbGFzcz1cImZpbHRlci1wb3B1cF9fY29udGVudFwiIHNjcm9sbC15PlxuXHRcdFx0XHRcdDx2aWV3IHYtZm9yPVwic2VjdGlvbiBpbiBmaWx0ZXJTZWN0aW9uc1wiIDprZXk9XCJzZWN0aW9uLmtleVwiIGNsYXNzPVwiZmlsdGVyLXBvcHVwX19zZWN0aW9uXCI+XG5cdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cImZpbHRlci1wb3B1cF9fdGl0bGVcIj57eyBzZWN0aW9uLnRpdGxlIH19PC90ZXh0PlxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmaWx0ZXItcG9wdXBfX29wdGlvbnNcIj5cblx0XHRcdFx0XHRcdFx0PHZpZXdcblx0XHRcdFx0XHRcdFx0XHR2LWZvcj1cIm9wdGlvbiBpbiBzZWN0aW9uLm9wdGlvbnNcIlxuXHRcdFx0XHRcdFx0XHRcdDprZXk9XCJvcHRpb25cIlxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwiZmlsdGVyLXBvcHVwX19vcHRpb25cIlxuXHRcdFx0XHRcdFx0XHRcdDpjbGFzcz1cInsgJ2ZpbHRlci1wb3B1cF9fb3B0aW9uLS1hY3RpdmUnOiBzZWxlY3RlZEZpbHRlcnNbc2VjdGlvbi5rZXldID09PSBvcHRpb24gfVwiXG5cdFx0XHRcdFx0XHRcdFx0QGNsaWNrPVwic2VsZWN0RmlsdGVyKHNlY3Rpb24ua2V5LCBvcHRpb24pXCJcblx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiZmlsdGVyLXBvcHVwX19vcHRpb24tdGV4dFwiPnt7IG9wdGlvbiB9fTwvdGV4dD5cblx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PC9zY3JvbGwtdmlldz5cblxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImZpbHRlci1wb3B1cF9fYWN0aW9uc1wiPlxuXHRcdFx0XHRcdDxidXR0b24gY2xhc3M9XCJmaWx0ZXItcG9wdXBfX2J1dHRvbiBmaWx0ZXItcG9wdXBfX2J1dHRvbi0tcmVzZXRcIiBob3Zlci1jbGFzcz1cImZpbHRlci1wb3B1cF9fYnV0dG9uLS1ob3ZlclwiIEBjbGljaz1cInJlc2V0RmlsdGVyc1wiPumHjee9rjwvYnV0dG9uPlxuXHRcdFx0XHRcdDxidXR0b24gY2xhc3M9XCJmaWx0ZXItcG9wdXBfX2J1dHRvbiBmaWx0ZXItcG9wdXBfX2J1dHRvbi0tY29uZmlybVwiIGhvdmVyLWNsYXNzPVwiZmlsdGVyLXBvcHVwX19idXR0b24tLWhvdmVyXCIgQGNsaWNrPVwiY29uZmlybUZpbHRlcnNcIj7noa7orqQ8L2J1dHRvbj5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXHRcdDwvdmlldz5cblxuXHRcdDxzY3JvbGwtdmlldyBjbGFzcz1cImhhbGwtcGFnZV9fYm9keVwiIHNjcm9sbC15IDpzdHlsZT1cImJvZHlTdHlsZVwiPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJoYWxsLXBhZ2VfX3ZlcmlmaWVkXCIgdi1pZj1cInVzZXJJbmZvLmF1ZGl0U3RhdHVzICE9PSAzXCI+XG5cdFx0XHRcdDxpbWFnZSBzcmM9XCIvc3RhdGljL2ltYWdlL2RlZmF1bHRfdW52ZXJpZmllZEAyeC5wbmdcIiBtb2RlPVwid2lkdGhGaXhcIj48L2ltYWdlPlxuXHRcdFx0XHQ8YnV0dG9uIEBjbGljaz1cInRvRHJpdmVyQ2VydGlmaWNhdGlvblwiPuWOu+iupOivgTwvYnV0dG9uPlxuXHRcdFx0PC92aWV3PlxuXHRcdFx0PHZpZXcgdi1lbHNlLWlmPVwidXNlckluZm8uYXVkaXRTdGF0dXMgPT09IDMgJiYgYWNjZXB0aW5nU3RhdHVzID09PSAxICYmIGN1cnJlbnRPcmRlckxpc3QubGVuZ3RoXCIgY2xhc3M9XCJoYWxsLXBhZ2VfX2xpc3RcIj5cblx0XHRcdFx0PHZpZXcgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGN1cnJlbnRPcmRlckxpc3RcIiA6a2V5PVwiaXRlbS5pZFwiIGNsYXNzPVwib3JkZXItY2FyZFwiIEBjbGljaz1cImdvVG9PcmRlckRldGFpbChpdGVtLCBpbmRleClcIj5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX2hlYWRcIj5cblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9fdGltZVwiIHYtaWY9XCJpdGVtLnJlbWFpbk1pbnV0ZXMgPiAwXCI+XG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwib3JkZXItY2FyZF9fdGltZS1tYWluXCI+e3sgZm9ybWF0UmVtYWluVGltZShpdGVtLnJlbWFpbk1pbnV0ZXMpIH19PC90ZXh0PlxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX3RpbWUtc3ViXCI+6YCB6L6+PC90ZXh0PlxuXHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX190aW1lXCIgdi1lbHNlPlxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX3RpbWUtbWFpblwiPumFjemAgeW3sui2heaXtu+8jOivt+WwveW/q+mAgei+vjwvdGV4dD5cblx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJhY3RpdmVUYWIgPT09ICdoYWxsJ1wiIGNsYXNzPVwib3JkZXItY2FyZF9fcHJpY2Utd3JhcFwiPlxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX3ByaWNlXCI+wqV7eyBpdGVtLnBsYXRmb3JtUmV3YXJkQW1vdW50ID8gKGl0ZW0uZHJpdmVyRmVlICsgaXRlbS5wbGF0Zm9ybVJld2FyZEFtb3VudCkgLyAxMDAgOiAoaXRlbS5kcml2ZXJGZWUgLyAxMDApLnRvRml4ZWQoMikgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHQ8dmlldyB2LWVsc2UgY2xhc3M9XCJvcmRlci1jYXJkX19wcmljZS13cmFwIG9yZGVyLWNhcmRfX3ByaWNlLXdyYXAtLXNlcmlhbC1vbmx5XCI+XG5cdFx0XHRcdFx0XHRcdDx0ZXh0IHYtaWY9XCJpdGVtLmNvZGVcIiBjbGFzcz1cIm9yZGVyLWNhcmRfX3NlcmlhbFwiPiN7eyBpbmRleCArIDEgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0PC92aWV3PlxuXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19tZXRhXCI+XG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX3RhZ3NcIj5cblx0XHRcdFx0XHRcdFx0PGltYWdlIHYtaWY9XCJpdGVtLmlzVXJnZW50ID09PSAxXCIgY2xhc3M9XCJvcmRlci1jYXJkX190YWctaW1nXCIgc3JjPVwiL3N0YXRpYy9pbWFnZS9pY19qaXN1ZGFAMngucG5nXCIgbW9kZT1cIndpZHRoRml4XCI+PC9pbWFnZT5cblx0XHRcdFx0XHRcdFx0PGltYWdlIHYtZWxzZSBjbGFzcz1cIm9yZGVyLWNhcmRfX3RhZy1pbWdcIiBzcmM9XCIvc3RhdGljL2ltYWdlL2ljX2JpYW9zdWRhQDJ4LnBuZ1wiIG1vZGU9XCJ3aWR0aEZpeFwiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0XHRcdDx0ZXh0IHYtaWY9XCJpdGVtLmlzVmFsdWFibGUgPT09IHRydWVcIiBjbGFzcz1cIm9yZGVyLWNhcmRfX3RhZyBvcmRlci1jYXJkX190YWctLW9yYW5nZVwiPui0temHjeeJqeWTgTwvdGV4dD5cblx0XHRcdFx0XHRcdFx0PHRleHQgdi1lbHNlIGNsYXNzPVwib3JkZXItY2FyZF9fdGFnIG9yZGVyLWNhcmRfX3RhZy0tYmx1ZVwiPnt7IGl0ZW0uZ29vZExldmVsTmFtZSB9fTwvdGV4dD5cblx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdDx0ZXh0IHYtaWY9XCJhY3RpdmVUYWIgPT09ICdoYWxsJyAmJiBpdGVtLnBsYXRmb3JtUmV3YXJkQW1vdW50XCIgY2xhc3M9XCJvcmRlci1jYXJkX19leHRyYVwiPuWQq+WKoOaApcKle3sgKGl0ZW0ucGxhdGZvcm1SZXdhcmRBbW91bnQgLyAxMDApLnRvRml4ZWQoMikgfX08L3RleHQ+XG5cdFx0XHRcdFx0PC92aWV3PlxuXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19yb3V0ZVwiPlxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19yb3V0ZS1zaWRlXCI+XG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9fZGlzdGFuY2UtYmxvY2sgb3JkZXItY2FyZF9fZGlzdGFuY2UtYmxvY2stLXRvcFwiPlxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwib3JkZXItY2FyZF9fZGlzdGFuY2UtdmFsdWVcIj57eyBmb3JtYXREaXN0YW5jZVBhcnRzKGl0ZW0uZGVwb3NpdERpc3RhbmNlKS52YWx1ZSB9fTwvdGV4dD5cblx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX2Rpc3RhbmNlLXVuaXRcIj57eyBmb3JtYXREaXN0YW5jZVBhcnRzKGl0ZW0uZGVwb3NpdERpc3RhbmNlKS51bml0IH19PC90ZXh0PlxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9fbGluZVwiPjwvdmlldz5cblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19kaXN0YW5jZS1ibG9jayBvcmRlci1jYXJkX19kaXN0YW5jZS1ibG9jay0tYm90dG9tXCI+XG5cdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJvcmRlci1jYXJkX19kaXN0YW5jZS12YWx1ZVwiPnt7IGZvcm1hdERpc3RhbmNlUGFydHMoaXRlbS50YWtlRGlzdGFuY2UpLnZhbHVlIH19PC90ZXh0PlxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwib3JkZXItY2FyZF9fZGlzdGFuY2UtdW5pdFwiPnt7IGZvcm1hdERpc3RhbmNlUGFydHMoaXRlbS50YWtlRGlzdGFuY2UpLnVuaXQgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9fcm91dGUtbWFpblwiPlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX3JvdXRlLWl0ZW1cIj5cblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX3JvdXRlLXRleHRzXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX3JvdXRlLXRpdGxlXCI+e3sgaXRlbS5kZXBvc2l0U2hvcE5hbWUgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX3JvdXRlLWRlc2NcIj57eyBpdGVtLmRlcG9zaXRTaG9wQWRkcmVzcyB9fTwvdGV4dD5cblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIi9zdGF0aWMvaW1hZ2UvaWNfZGFvaGFuZ0AyeC5wbmdcIiBtb2RlPVwid2lkdGhGaXhcIiBjbGFzcz1cIm9yZGVyLWNhcmRfX25hdlwiIEBjbGljay5zdG9wPVwibmF2aWdhdGVUb0FkZHJlc3MoaXRlbSwgJ2RlcG9zaXQnKVwiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19yb3V0ZS1pdGVtIG9yZGVyLWNhcmRfX3JvdXRlLWl0ZW0tLWRlc3RpbmF0aW9uXCI+XG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19yb3V0ZS10ZXh0c1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHRlbXBsYXRlIHYtaWY9XCJpdGVtLnRha2VTaG9wSWRcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJvcmRlci1jYXJkX19yb3V0ZS10aXRsZVwiPnt7IGl0ZW0udGFrZU5hbWUgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwib3JkZXItY2FyZF9fcm91dGUtZGVzY1wiPnt7IGl0ZW0udGFrZUFkZHJlc3MgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3RlbXBsYXRlPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgdi1lbHNlIGNsYXNzPVwib3JkZXItY2FyZF9fcm91dGUtdGl0bGVcIj57eyBpdGVtLnRha2VBZGRyZXNzIH19PC90ZXh0PlxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiL3N0YXRpYy9pbWFnZS9pY19kYW9oYW5nQDJ4LnBuZ1wiIG1vZGU9XCJ3aWR0aEZpeFwiIGNsYXNzPVwib3JkZXItY2FyZF9fbmF2XCIgQGNsaWNrLnN0b3A9XCJuYXZpZ2F0ZVRvQWRkcmVzcyhpdGVtLCAndGFrZScpXCI+PC9pbWFnZT5cblx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdDwvdmlldz5cblxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9fZ29vZHNcIiB2LWlmPVwiaXRlbS5pdGVtcyAmJiBpdGVtLml0ZW1zLmxlbmd0aCA+IDBcIiBAY2xpY2suc3RvcD1cInRvZ2dsZUdvb2RzRXhwYW5kKGl0ZW0uaWQpXCI+XG5cdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX2dvb2RzLXRleHRcIj57eyBnZXRHb29kc1RleHQoaXRlbS5pdGVtcywgaXRlbS5pZCkgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHQ8dS1pY29uIHYtaWY9XCJnZXRHb29kc1RleHQoaXRlbS5pdGVtcywgaXRlbS5pZCkubGVuZ3RoID4gMjBcIiBuYW1lPVwiYXJyb3ctZG93blwiIDpjbGFzcz1cInsgJ29yZGVyLWNhcmRfX2dvb2RzLWFycm93LS1leHBhbmRlZCc6IGV4cGFuZGVkR29vZHNJZHMuaW5jbHVkZXMoaXRlbS5pZCkgfVwiIHNpemU9XCIxMlwiIGNvbG9yPVwiI2E0YTliMVwiPjwvdS1pY29uPlxuXHRcdFx0XHRcdDwvdmlldz5cblxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9fYWN0aW9uc1wiIDpjbGFzcz1cIidvcmRlci1jYXJkX19hY3Rpb25zLS0nICsgYWN0aXZlVGFiXCI+XG5cdFx0XHRcdFx0XHQ8dGVtcGxhdGUgdi1pZj1cImFjdGl2ZVRhYiA9PT0gJ3BpY2t1cCdcIj5cblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcmRlci1jYXJkX19pY29uLWFjdGlvbnNcIj5cblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX2ljb24tYWN0aW9uXCIgQGNsaWNrLnN0b3A9XCJoYW5kbGVDYW5jZWxPcmRlcihpdGVtKVwiPlxuXHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cIm9yZGVyLWNhcmRfX2FjdGlvbi1pY29uXCIgc3JjPVwiL3N0YXRpYy9pbWFnZS9pY19jYW5jbGVAMngucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm9yZGVyLWNhcmRfX2FjdGlvbi10ZXh0XCI+5Y+W5raIPC90ZXh0PlxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX2ljb24tYWN0aW9uXCIgQGNsaWNrLnN0b3A9XCJoYW5kbGVDYWxsKGl0ZW0pXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJvcmRlci1jYXJkX19hY3Rpb24taWNvblwiIHNyYz1cIi9zdGF0aWMvaW1hZ2UvaWNfY2FsbEAyeC5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT5cblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwib3JkZXItY2FyZF9fYWN0aW9uLXRleHRcIj7ogZTns7s8L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdDxidXR0b24gY2xhc3M9XCJvcmRlci1jYXJkX19idXR0b24gb3JkZXItY2FyZF9fYnV0dG9uLS1jb2RlXCIgaG92ZXItY2xhc3M9XCJvcmRlci1jYXJkX19idXR0b24tLWhvdmVyXCIgQGNsaWNrLnN0b3A9XCJoYW5kbGVTaG93UGlja3VwQ29kZShpdGVtKVwiPuWPlui0p+eggTwvYnV0dG9uPlxuXHRcdFx0XHRcdFx0PC90ZW1wbGF0ZT5cblx0XHRcdFx0XHRcdDx0ZW1wbGF0ZSB2LWVsc2UtaWY9XCJhY3RpdmVUYWIgPT09ICdkZWxpdmVyaW5nJ1wiPlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9yZGVyLWNhcmRfX2ljb24tYWN0aW9ucyBvcmRlci1jYXJkX19pY29uLWFjdGlvbnMtLXNpbmdsZVwiPlxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3JkZXItY2FyZF9faWNvbi1hY3Rpb25cIiBAY2xpY2suc3RvcD1cImhhbmRsZUNhbGwoaXRlbSlcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cIm9yZGVyLWNhcmRfX2FjdGlvbi1pY29uXCIgc3JjPVwiL3N0YXRpYy9pbWFnZS9pY19jYWxsQDJ4LnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJvcmRlci1jYXJkX19hY3Rpb24tdGV4dFwiPuiBlOezuzwvdGV4dD5cblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0PGJ1dHRvbiBjbGFzcz1cIm9yZGVyLWNhcmRfX2J1dHRvbiBvcmRlci1jYXJkX19idXR0b24tLWNvZGVcIiBob3Zlci1jbGFzcz1cIm9yZGVyLWNhcmRfX2J1dHRvbi0taG92ZXJcIiBAY2xpY2suc3RvcD1cImhhbmRsZVNob3dQaWNrdXBDb2RlKGl0ZW0pXCI+5a2Y5Lu256CBPC9idXR0b24+XG5cdFx0XHRcdFx0XHQ8L3RlbXBsYXRlPlxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB2LWVsc2UgY2xhc3M9XCJvcmRlci1jYXJkX19idXR0b25cIiBob3Zlci1jbGFzcz1cIm9yZGVyLWNhcmRfX2J1dHRvbi0taG92ZXJcIiBAY2xpY2suc3RvcD1cImhhbmRsZUdyYWJPcmRlcihpdGVtKVwiPueri+WNs+aKouWNlTwvYnV0dG9uPlxuXHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXG5cdFx0XHQ8dmlldyB2LWVsc2UgY2xhc3M9XCJoYWxsLXBhZ2VfX2VtcHR5XCI+XG5cdFx0XHRcdDxpbWFnZSBjbGFzcz1cImhhbGwtcGFnZV9fZW1wdHktaWNvblwiIDpzcmM9XCJhY2NlcHRpbmdTdGF0dXMgPT09IDAgPyAnL3N0YXRpYy9pbWFnZS9kZWZhdWx0X25vZGF0YV9ncmV5QDJ4LnBuZycgOiAnL3N0YXRpYy9pbWFnZS9kZWZhdWx0X25vZGF0YUAyeC5wbmcnXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC9zY3JvbGwtdmlldz5cblx0XHRcblx0XHQ8IS0tIOWPlua2iOiuouWNlSAtLT5cblx0XHQ8dS1tb2RhbFxuXHRcdFx0OnNob3c9XCJzaG93XCJcblx0XHRcdHNob3dDYW5jZWxCdXR0b25cblx0XHRcdEBjYW5jZWw9XCJzaG93ID0gZmFsc2VcIlxuXHRcdFx0Y2FuY2VsQ29sb3I9XCIjNjY2NjY2XCJcblx0XHRcdGNvbmZpcm1Db2xvcj1cIiMwMDU1RkZcIlxuXHRcdFx0dGl0bGU9XCLlj5bmtojorqLljZXnoa7orqRcIlxuXHRcdFx0QGNvbmZpcm09XCJjb25maXJtQ2FuY2VsT3JkZXJcIj5cblx0XHRcdDx2aWV3IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO2NvbG9yOiAjMzMzMzMzO2ZvbnQtc2l6ZTogMjhycHg7Zm9udC13ZWlnaHQ6IDQwMDtcIj5cblx0XHRcdFx05oKo5LuK5pel6L+Y5Y+v5Y+W5raIIHt7IGNhbmNlbFJlbWFpbiB9fSDmrKHorqLljZXvvIzmrKHmlbDnlKjlsL3lkI7ku4rml6XlsIbml6Dms5XmjqXljZXvvIzmmK/lkKbnoa7orqTlj5bmtojvvJ9cblx0XHRcdDwvdmlldz5cblx0XHQ8L3UtbW9kYWw+XG5cblx0XHQ8IS0tIOeri+WNs+aKouWNlSAtLT5cblx0XHQ8dS1tb2RhbFxuXHRcdFx0OnNob3c9XCJzaG93R3JhYk1vZGFsXCJcblx0XHRcdHNob3dDYW5jZWxCdXR0b25cblx0XHRcdEBjYW5jZWw9XCJzaG93R3JhYk1vZGFsID0gZmFsc2VcIlxuXHRcdFx0Y2FuY2VsQ29sb3I9XCIjNjY2NjY2XCJcblx0XHRcdGNvbmZpcm1Db2xvcj1cIiMwMDU1RkZcIlxuXHRcdFx0dGl0bGU9XCLmuKnppqjmj5DnpLpcIlxuXHRcdFx0QGNvbmZpcm09XCJjb25maXJtR3JhYk9yZGVyXCI+XG5cdFx0XHQ8dmlldyBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtjb2xvcjogIzMzMzMzMztmb250LXNpemU6IDI4cnB4O2ZvbnQtd2VpZ2h0OiA0MDA7XCI+XG5cdFx0XHRcdHt7IHNlbGVjdGVkR3JhYk9yZGVyICYmIHNlbGVjdGVkR3JhYk9yZGVyLmhhc092ZXJzaXplZCA9PT0gMSA/ICfmnKzorqLljZXmnInnibnlpKfku7blsLrlr7jooYzmnY7vvIzor7fnoa7orqTmmK/lkKbnu6fnu63miqLljZXvvJ8nIDogJ+aYr+WQpuehruiupOaOpeWNle+8nycgfX1cblx0XHRcdDwvdmlldz5cblx0XHQ8L3UtbW9kYWw+XG5cdFx0XG5cdFx0PCEtLSDlj5botKfnoIEv5a2Y5Lu256CBIC0tPlxuXHRcdDx1LXBvcHVwIDpzaG93PVwic2hvdzFcIiByb3VuZD1cIjIwXCIgbW9kZT1cImJvdHRvbVwiPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJxcmNvZGVcIj5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJxcmNvZGUtdGl0bGVcIj5cblx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiL3N0YXRpYy9pbWFnZS9pY19jbG9zZUAyeC5wbmdcIiBtb2RlPVwid2lkdGhGaXhcIiBzdHlsZT1cIm9wYWNpdHk6IDA7XCI+PC9pbWFnZT5cblx0XHRcdFx0XHQ8dGV4dD57eyBhY3RpdmVUYWIgPT09ICdkZWxpdmVyaW5nJyA/ICflrZjku7bnoIEnIDogJ+WPlui0p+eggScgfX08L3RleHQ+XG5cdFx0XHRcdFx0PGltYWdlIHNyYz1cIi9zdGF0aWMvaW1hZ2UvaWNfY2xvc2VAMngucG5nXCIgbW9kZT1cIndpZHRoRml4XCIgQGNsaWNrPVwic2hvdzEgPSBmYWxzZVwiPjwvaW1hZ2U+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJxcmNvZGUtaW1hZ2VcIj5cblx0XHRcdFx0XHQ8aW1hZ2Ugdi1pZj1cInNlbGVjdGVkUGlja3VwT3JkZXIgJiYgc2VsZWN0ZWRQaWNrdXBPcmRlci5kcml2ZXJWZXJpZnlDb2RlXCIgOnNyYz1cIidodHRwczovL2FwaS5xcnNlcnZlci5jb20vdjEvY3JlYXRlLXFyLWNvZGUvP3NpemU9MjAweDIwMCZkYXRhPScgKyBzZWxlY3RlZFBpY2t1cE9yZGVyLmRyaXZlclZlcmlmeUNvZGVcIiBtb2RlPVwid2lkdGhGaXhcIj48L2ltYWdlPlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwicXJjb2RlLWJ0blwiIGhvdmVyLWNsYXNzPVwicXJjb2RlLWJ0bi0taG92ZXJcIiBAY2xpY2s9XCJzaG93MSA9IGZhbHNlXCI+5YWz6ZetPC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXHRcdDwvdS1wb3B1cD5cblxuXHRcdDx1LXBvcHVwIDpzaG93PVwic2hvd1Bob3RvRGVsaXZlclBvcHVwXCIgcm91bmQ9XCIyMFwiIG1vZGU9XCJib3R0b21cIj5cblx0XHRcdDx2aWV3IGNsYXNzPVwicGhvdG8tZGVsaXZlclwiPlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX2hlYWRlclwiPlxuXHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX2Nsb3NlLXBsYWNlaG9sZGVyXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJwaG90by1kZWxpdmVyX190aXRsZVwiPuaLjeeFp+mAgei+vjwvdGV4dD5cblx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJwaG90by1kZWxpdmVyX19jbG9zZVwiIG1vZGU9XCJhc3BlY3RGaXRcIiBAY2xpY2s9XCJzaG93UGhvdG9EZWxpdmVyUG9wdXAgPSBmYWxzZVwiPjwvaW1hZ2U+XG5cdFx0XHRcdDwvdmlldz5cblxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX3NlY3Rpb25cIj5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX2xhYmVsLXJvd1wiPlxuXHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJwaG90by1kZWxpdmVyX19sYWJlbFwiPuaLjeaRhOmAgei+vueFp+eJhzwvdGV4dD5cblx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwicGhvdG8tZGVsaXZlcl9fcmVxdWlyZWRcIj4qPC90ZXh0PlxuXHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJwaG90by1kZWxpdmVyX19oaW50XCI+5pyA5aSaM+W8oOeFp+eJhzwvdGV4dD5cblx0XHRcdFx0XHQ8L3ZpZXc+XG5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX3Bob3Rvc1wiPlxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwaG90by1kZWxpdmVyX191cGxvYWQtY2FyZFwiPlxuXHRcdFx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJwaG90by1kZWxpdmVyX191cGxvYWQtaWNvblwiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxuXHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX3VwbG9hZC10ZXh0XCI+54K55Ye75ouN54WnPC90ZXh0PlxuXHRcdFx0XHRcdFx0PC92aWV3PlxuXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX3ByZXZpZXctY2FyZFwiPlxuXHRcdFx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJwaG90by1kZWxpdmVyX19wcmV2aWV3LWltYWdlXCIgbW9kZT1cImFzcGVjdEZpbGxcIj48L2ltYWdlPlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX3ByZXZpZXctbWFza1wiPlxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwicGhvdG8tZGVsaXZlcl9fcHJldmlldy1kZWxldGVcIj7liKDpmaQ8L3RleHQ+XG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDwvdmlldz5cblxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInBob3RvLWRlbGl2ZXJfX3NlY3Rpb24gcGhvdG8tZGVsaXZlcl9fc2VjdGlvbi0tcmVtYXJrXCI+XG5cdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJwaG90by1kZWxpdmVyX19yZW1hcmstdGl0bGVcIj7lpIfms6jkv6Hmga88L3RleHQ+XG5cdFx0XHRcdFx0PHRleHRhcmVhIGNsYXNzPVwicGhvdG8tZGVsaXZlcl9fdGV4dGFyZWFcIiBtYXhsZW5ndGg9XCIyMDBcIiBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpVwiIHBsYWNlaG9sZGVyLXN0eWxlPVwiY29sb3I6ICNjN2NiZDM7XCIgLz5cblx0XHRcdFx0PC92aWV3PlxuXG5cdFx0XHRcdDxidXR0b24gY2xhc3M9XCJwaG90by1kZWxpdmVyX19zdWJtaXRcIiBob3Zlci1jbGFzcz1cInBob3RvLWRlbGl2ZXJfX3N1Ym1pdC0taG92ZXJcIiBAY2xpY2s9XCJzaG93UGhvdG9EZWxpdmVyUG9wdXAgPSBmYWxzZVwiPuehruiupOmAgei+vjwvYnV0dG9uPlxuXHRcdFx0PC92aWV3PlxuXHRcdDwvdS1wb3B1cD5cblxuXHRcdDx1LXBpY2tlclxuXHRcdFx0OnNob3c9XCJzaG93U3RhdHVzUGlja2VyXCJcblx0XHRcdGNvbmZpcm1Db2xvcj1cIiMxMEIyRkFcIlxuXHRcdFx0a2V5TmFtZT1cInRleHRcIlxuXHRcdFx0OmNvbHVtbnM9XCJbc3RhdHVzT3B0aW9uc11cIlxuXHRcdFx0QGNvbmZpcm09XCJjb25maXJtU3RhdHVzXCJcblx0XHRcdEBjYW5jZWw9XCJzaG93U3RhdHVzUGlja2VyID0gZmFsc2VcIiAvPlxuXHQ8L3ZpZXc+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuXHRpbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnXG5cdGV4cG9ydCBkZWZhdWx0IHtcblx0XHRkYXRhKCkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dHRzOiBudWxsLFxuXHRcdFx0XHRzaG93OiBmYWxzZSxcblx0XHRcdFx0c2hvdzE6IGZhbHNlLFxuXHRcdFx0XHRzaG93R3JhYk1vZGFsOiBmYWxzZSxcblx0XHRcdFx0c2VsZWN0ZWRHcmFiT3JkZXI6IG51bGwsXG5cdFx0XHRcdHNlbGVjdGVkQ2FuY2VsT3JkZXI6IG51bGwsXG5cdFx0XHRcdGNhbmNlbFJlbWFpbjogMCxcblx0XHRcdFx0c2VsZWN0ZWRQaWNrdXBPcmRlcjogbnVsbCxcblx0XHRcdFx0c2hvd1Bob3RvRGVsaXZlclBvcHVwOiBmYWxzZSxcblx0XHRcdFx0cm91dGVJbmZvOiBudWxsLFxuXHRcdFx0XHRzdGF0dXNCYXJIZWlnaHQ6IDAsXG5cdFx0XHRcdGhlYWRlckhlaWdodDogMCxcblx0XHRcdFx0dGFiYmFySGVpZ2h0OiAwLFxuXHRcdFx0XHRzY3JvbGxIZWlnaHQ6IDAsXG5cdFx0XHRcdHNob3dGaWx0ZXJQb3B1cDogZmFsc2UsXG5cdFx0XHRcdGFjY2VwdGluZ1N0YXR1czogMCxcblx0XHRcdFx0c2hvd1N0YXR1c1BpY2tlcjogZmFsc2UsXG5cdFx0XHRcdHN0YXR1c09wdGlvbnM6IFtcblx0XHRcdFx0XHR7IHRleHQ6ICfkuIrnur8nLCB2YWx1ZTogMSB9LFxuXHRcdFx0XHRcdHsgdGV4dDogJ+S4i+e6vycsIHZhbHVlOiAwIH1cblx0XHRcdFx0XSxcblx0XHRcdFx0Y2VudGVyVXNlckluZm86IHt9LFxuXHRcdFx0XHRhY3RpdmVUYWI6ICdoYWxsJyxcblx0XHRcdFx0ZXhwYW5kZWRHb29kc0lkczogW10sXG5cdFx0XHRcdGNhdGVnb3J5TGlzdDogW10sXG5cdFx0XHRcdGZpbHRlclNlY3Rpb25zOiBbXG5cdFx0XHRcdFx0eyBrZXk6ICdzb3J0JywgdGl0bGU6ICfmjpLluo8nLCBvcHRpb25zOiBbJ+e7vOWQiOaOkuW6jycsICfot53nprvmnIDov5EnXSB9LFxuXHRcdFx0XHRcdHsga2V5OiAnbGV2ZWwnLCB0aXRsZTogJ+eJqeWTgeetiee6pycsIG9wdGlvbnM6IFsn5LiN6ZmQJ10gfSxcblx0XHRcdFx0XHR7IGtleTogJ2Rpc3RhbmNlJywgdGl0bGU6ICfkvY3nva7ojIPlm7QnLCBvcHRpb25zOiBbJ+S4jemZkCcsICc1MDBtJywgJzFrbScsICcya20nLCAnM2ttJywgJzRrbScsICc1a20nLCAnNmttJywgJzdrbSddIH1cblx0XHRcdFx0XSxcblx0XHRcdFx0c2VsZWN0ZWRGaWx0ZXJzOiB7XG5cdFx0XHRcdFx0c29ydDogJ+e7vOWQiOaOkuW6jycsXG5cdFx0XHRcdFx0bGV2ZWw6ICfkuI3pmZAnLFxuXHRcdFx0XHRcdGRpc3RhbmNlOiAn5LiN6ZmQJ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRzdGF0czogW1xuXHRcdFx0XHRcdHsgdmFsdWU6ICctJywgbGFiZWw6ICfmnI3liqHliIYnIH0sXG5cdFx0XHRcdFx0eyB2YWx1ZTogJy0nLCBsYWJlbDogJ+S7iuaXpemihOiuoeS9o+mHkScgfSxcblx0XHRcdFx0XHR7IHZhbHVlOiAnLScsIGxhYmVsOiAn5LuK5pel5o6l5Y2VJyB9XG5cdFx0XHRcdF0sXG5cdFx0XHRcdHRhYnM6IFtcblx0XHRcdFx0XHR7IGxhYmVsOiAn5oqi5Y2V5aSn5Y6FJywgdmFsdWU6ICdoYWxsJyB9LFxuXHRcdFx0XHRcdHsgbGFiZWw6ICflvoXlj5botKcnLCB2YWx1ZTogJ3BpY2t1cCcgfSxcblx0XHRcdFx0XHR7IGxhYmVsOiAn6YWN6YCB5LitJywgdmFsdWU6ICdkZWxpdmVyaW5nJyB9XG5cdFx0XHRcdF0sXG5cdFx0XHRcdG9yZGVyTGlzdDogW10sXG5cdFx0XHRcdHBpY2t1cE9yZGVyTGlzdDogW10sXG5cdFx0XHRcdGRlbGl2ZXJpbmdPcmRlckxpc3Q6IFtdLFxuXHRcdFx0XHRoYWxsUGFnZTogMSxcblx0XHRcdFx0aGFsbFBhZ2VTaXplOiAxMCxcblx0XHRcdFx0aGFsbExvYWRpbmc6IGZhbHNlLFxuXHRcdFx0XHRoYWxsSGFzTW9yZTogdHJ1ZSxcblx0XHRcdFx0cGlja3VwTG9hZGluZzogZmFsc2UsXG5cdFx0XHRcdGRlbGl2ZXJpbmdMb2FkaW5nOiBmYWxzZSxcblx0XHRcdFx0YWN0aXZlT3JkZXJDb3VudDogbnVsbFxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHR3YXRjaDoge1xuXHRcdFx0YWN0aXZlVGFiKG5ld1ZhbCkge1xuXHRcdFx0XHR0aGlzLmxvYWRPcmRlcnNCeVRhYihuZXdWYWwpXG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdG9uTG9hZCgpIHtcblx0XHRcdGNvbnN0IHN5c3RlbUluZm8gPSB1bmkuZ2V0U3lzdGVtSW5mb1N5bmMoKVxuXHRcdFx0Y29uc3Qgc2FmZUJvdHRvbSA9IHN5c3RlbUluZm8uc2FmZUFyZWFJbnNldHMgPyBzeXN0ZW1JbmZvLnNhZmVBcmVhSW5zZXRzLmJvdHRvbSB8fCAwIDogMFxuXHRcdFx0Y29uc3Qgd2luZG93SGVpZ2h0ID0gc3lzdGVtSW5mby53aW5kb3dIZWlnaHQgfHwgMFxuXHRcdFx0dGhpcy5zdGF0dXNCYXJIZWlnaHQgPSBzeXN0ZW1JbmZvLnN0YXR1c0JhckhlaWdodCB8fCAwXG5cdFx0XHR0aGlzLmhlYWRlckhlaWdodCA9IHRoaXMuc3RhdHVzQmFySGVpZ2h0ICsgdW5pLnVweDJweCgzMDgpXG5cdFx0XHR0aGlzLnRhYmJhckhlaWdodCA9IHVuaS51cHgycHgoMTAwKSArIHNhZmVCb3R0b21cblx0XHRcdHRoaXMuc2Nyb2xsSGVpZ2h0ID0gTWF0aC5tYXgod2luZG93SGVpZ2h0IC0gdGhpcy5oZWFkZXJIZWlnaHQsIDApXG5cdFx0XHRpZiAodGhpcy51c2VySW5mby5hdWRpdFN0YXR1cyA9PT0gOTkpIHJldHVybjtcblx0XHRcdHRoaXMuYWNjZXB0aW5nU3RhdHVzID0gdGhpcy51c2VySW5mby5hY2NlcHRpbmdTdGF0dXMgfHwgMFxuXHRcdFx0dGhpcy5sb2FkT3JkZXJzQnlUYWIodGhpcy5hY3RpdmVUYWIpXG5cdFx0fSxcblxuXHRcdG9uU2hvdygpIHtcblx0XHRcdHRoaXMuZ2V0Q2VudGVySW5mbygpXG5cdFx0XHR0aGlzLmdldENhdGVnb3J5TGlzdERhdGEoKVxuXHRcdFx0dGhpcy5nZXRBY3RpdmVPcmRlckNvdW50KClcblx0XHR9LFxuXG5cdFx0b25SZWFjaEJvdHRvbSgpIHtcblx0XHRcdGlmICh0aGlzLmFjY2VwdGluZ1N0YXR1cyA9PT0gMCkgcmV0dXJuO1xuXHRcdFx0aWYgKHRoaXMuYWN0aXZlVGFiID09PSAnaGFsbCcpIHtcblx0XHRcdFx0dGhpcy5oYWxsUGFnZSsrXG5cdFx0XHRcdHRoaXMuZ2V0SGFsbE9yZGVycygpXG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGNvbXB1dGVkOiB7XG5cdFx0XHQuLi5tYXBTdGF0ZShbJ3VzZXJJbmZvJywgJ3Rva2VuJ10pLFxuXG5cdFx0XHRkaXNwbGF5VGFicygpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMudGFicy5tYXAodGFiID0+IHtcblx0XHRcdFx0XHRpZiAodGFiLnZhbHVlID09PSAncGlja3VwJykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHsgLi4udGFiLCBjb3VudDogdGhpcy5hY3RpdmVPcmRlckNvdW50Py5ncmFiYmVkQ291bnQgfVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGFiLnZhbHVlID09PSAnZGVsaXZlcmluZycpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7IC4uLnRhYiwgY291bnQ6IHRoaXMuYWN0aXZlT3JkZXJDb3VudD8uZGVsaXZlcmluZ0NvdW50IH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRhYlxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblx0XHRcdFxuXHRcdFx0Y3VycmVudE9yZGVyTGlzdCgpIHtcblx0XHRcdFx0Y29uc3Qgb3JkZXJNYXAgPSB7XG5cdFx0XHRcdFx0aGFsbDogdGhpcy5vcmRlckxpc3QsXG5cdFx0XHRcdFx0cGlja3VwOiB0aGlzLnBpY2t1cE9yZGVyTGlzdCxcblx0XHRcdFx0XHRkZWxpdmVyaW5nOiB0aGlzLmRlbGl2ZXJpbmdPcmRlckxpc3Rcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBvcmRlck1hcFt0aGlzLmFjdGl2ZVRhYl0gfHwgW11cblx0XHRcdH0sXG5cblx0XHRcdGJvZHlTdHlsZSgpIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRtYXJnaW5Ub3A6IHRoaXMuaGVhZGVySGVpZ2h0ICsgJ3B4Jyxcblx0XHRcdFx0XHRoZWlnaHQ6IHRoaXMuc2Nyb2xsSGVpZ2h0ICsgJ3B4J1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdG9uUmVhZHkoKSB7XG5cdFx0XHR0aGlzLmluaXRUVFMoKSAvLyDpobXpnaLmuLLmn5PlrozmiJDliJ3lp4vljJbor63pn7Ncblx0XHR9LFxuXG5cdFx0bWV0aG9kczoge1xuXHRcdFx0Zm9ybWF0UmVtYWluVGltZShtaW51dGVzKSB7XG5cdFx0XHRcdGlmICghbWludXRlcykgcmV0dXJuIDBcblx0XHRcdFx0aWYgKG1pbnV0ZXMgPT09IDApIHtcblx0XHRcdFx0XHRyZXR1cm4gJ+mFjemAgeW3sui2heaXtidcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAobWludXRlcyA+PSA2MCkge1xuXHRcdFx0XHRcdHJldHVybiAobWludXRlcyAvIDYwKS50b0ZpeGVkKDIpICsgJ+Wwj+aXtuWGhSdcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbWludXRlcyArICfliIbpkp/lhoUnXG5cdFx0XHR9LFxuXG5cdFx0XHRnZXRHb29kc1RleHQoaXRlbXMsIGl0ZW1JZCkge1xuXHRcdFx0XHRpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuICfml6AnXG5cdFx0XHRcdGNvbnN0IHRleHQgPSBpdGVtcy5tYXAoaSA9PiBgJHtpLm5hbWV9KiR7aS5xdWFudGl0eX1gKS5qb2luKCfjgIEnKVxuXHRcdFx0XHRpZiAodGV4dC5sZW5ndGggPiAyMCAmJiAhdGhpcy5leHBhbmRlZEdvb2RzSWRzLmluY2x1ZGVzKGl0ZW1JZCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gdGV4dC5zdWJzdHJpbmcoMCwgMjApICsgJy4uLidcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGV4dFxuXHRcdFx0fSxcblxuXHRcdFx0dG9nZ2xlR29vZHNFeHBhbmQoaWQpIHtcblx0XHRcdFx0Y29uc3QgaW5kZXggPSB0aGlzLmV4cGFuZGVkR29vZHNJZHMuaW5kZXhPZihpZClcblx0XHRcdFx0aWYgKGluZGV4ID4gLTEpIHtcblx0XHRcdFx0XHR0aGlzLmV4cGFuZGVkR29vZHNJZHMuc3BsaWNlKGluZGV4LCAxKVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuZXhwYW5kZWRHb29kc0lkcy5wdXNoKGlkKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRmb3JtYXREaXN0YW5jZVBhcnRzKGRpc3RhbmNlKSB7XG5cdFx0XHRcdGlmIChkaXN0YW5jZSA9PT0gbnVsbCB8fCBkaXN0YW5jZSA9PT0gdW5kZWZpbmVkIHx8IGRpc3RhbmNlID09PSAnJykge1xuXHRcdFx0XHRcdHJldHVybiB7IHZhbHVlOiAnLS0nLCB1bml0OiAnJyB9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodHlwZW9mIGRpc3RhbmNlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRcdGlmIChkaXN0YW5jZSA+PSAxMDAwKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4geyB2YWx1ZTogKGRpc3RhbmNlIC8gMTAwMCkudG9GaXhlZCgxKSwgdW5pdDogJ2ttJyB9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB7IHZhbHVlOiBTdHJpbmcoTWF0aC5yb3VuZChkaXN0YW5jZSkpLCB1bml0OiAnbScgfVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgdGV4dCA9IFN0cmluZyhkaXN0YW5jZSkudHJpbSgpXG5cdFx0XHRcdGNvbnN0IG1hdGNoID0gdGV4dC5tYXRjaCgvXihbXFxkLl0rKVxccyooW2EtekEtWlxcdTRlMDAtXFx1OWZhNV0qKSQvKVxuXHRcdFx0XHRpZiAobWF0Y2gpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0dmFsdWU6IG1hdGNoWzFdLFxuXHRcdFx0XHRcdFx0dW5pdDogbWF0Y2hbMl0gfHwgJydcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4geyB2YWx1ZTogdGV4dCwgdW5pdDogJycgfVxuXHRcdFx0fSxcblxuXHRcdFx0bmF2aWdhdGVUb0FkZHJlc3MoaXRlbSwgdHlwZSkge1xuXHRcdFx0XHRsZXQgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgbmFtZSwgYWRkcmVzc1xuXHRcdFx0XHRpZiAodHlwZSA9PT0gJ2RlcG9zaXQnKSB7XG5cdFx0XHRcdFx0bGF0aXR1ZGUgPSBpdGVtLmRlcG9zaXRMYXRcblx0XHRcdFx0XHRsb25naXR1ZGUgPSBpdGVtLmRlcG9zaXRMbmdcblx0XHRcdFx0XHRuYW1lID0gaXRlbS5kZXBvc2l0U2hvcE5hbWVcblx0XHRcdFx0XHRhZGRyZXNzID0gaXRlbS5kZXBvc2l0U2hvcEFkZHJlc3Ncblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsYXRpdHVkZSA9IGl0ZW0udGFrZUxhdFxuXHRcdFx0XHRcdGxvbmdpdHVkZSA9IGl0ZW0udGFrZUxuZ1xuXHRcdFx0XHRcdG5hbWUgPSBpdGVtLnRha2VOYW1lXG5cdFx0XHRcdFx0YWRkcmVzcyA9IGl0ZW0udGFrZUFkZHJlc3Ncblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWxhdGl0dWRlIHx8ICFsb25naXR1ZGUpIHtcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHsgdGl0bGU6ICflnLDlnYDlnZDmoIfnvLrlpLEnLCBpY29uOiAnbm9uZScgfSlcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0fVxuXHRcdFx0XHR1bmkub3BlbkxvY2F0aW9uKHtcblx0XHRcdFx0XHRsYXRpdHVkZSxcblx0XHRcdFx0XHRsb25naXR1ZGUsXG5cdFx0XHRcdFx0bmFtZSxcblx0XHRcdFx0XHRhZGRyZXNzLFxuXHRcdFx0XHRcdHN1Y2Nlc3M6ICgpID0+IHt9LFxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3QoeyB0aXRsZTogJ+aJk+W8gOWcsOWbvuWksei0pScsIGljb246ICdub25lJyB9KVxuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignb3BlbkxvY2F0aW9uIGZhaWw6JywgZXJyKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cblx0XHRcdGhhbmRsZVVzZXJDbGljaygpIHtcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdHVybDogJy9wYWdlcy90ZXN0L3Rlc3QnXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0Z2V0QWN0aXZlT3JkZXJDb3VudCgpIHtcblx0XHRcdFx0dGhpcy4kdS5hcGkuYWN0aXZlT3JkZXJDb3VudCgpLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0dGhpcy5hY3RpdmVPcmRlckNvdW50ID0gcmVzLmRhdGFcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLmNhdGNoKChlcnIpID0+IHtcblx0XHRcdFx0XHR0aGlzLmFjdGl2ZU9yZGVyQ291bnQgPSBudWxsXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRoYW5kbGVHcmFiT3JkZXIoaXRlbSkge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhpdGVtKVxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkR3JhYk9yZGVyID0gaXRlbVxuXHRcdFx0XHR0aGlzLnNob3dHcmFiTW9kYWwgPSB0cnVlXG5cdFx0XHR9LFxuXG5cdFx0XHRjb25maXJtR3JhYk9yZGVyKCkge1xuXHRcdFx0XHRpZiAoIXRoaXMuc2VsZWN0ZWRHcmFiT3JkZXIpIHJldHVyblxuXHRcdFx0XHR0aGlzLiR1LmFwaS5ncmFiT3JkZXIoeyBvcmRlcklkOiB0aGlzLnNlbGVjdGVkR3JhYk9yZGVyLmlkIH0pLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHR0aGlzLnNob3dHcmFiTW9kYWwgPSBmYWxzZVxuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHsgdGl0bGU6ICfmiqLljZXmiJDlip8nLCBpY29uOiAnc3VjY2VzcycgfSlcblx0XHRcdFx0XHRcdHRoaXMuaGFsbFBhZ2UgPSAxXG5cdFx0XHRcdFx0XHR0aGlzLmhhbGxIYXNNb3JlID0gdHJ1ZVxuXHRcdFx0XHRcdFx0dGhpcy5vcmRlckxpc3QgPSBbXVxuXHRcdFx0XHRcdFx0dGhpcy5nZXRIYWxsT3JkZXJzKClcblx0XHRcdFx0XHRcdHRoaXMuZ2V0QWN0aXZlT3JkZXJDb3VudCgpXG5cdFx0XHRcdFx0XHR0aGlzLmdldENlbnRlckluZm8oKVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHsgdGl0bGU6IHJlcy5tZXNzYWdlIHx8ICfmiqLljZXlpLHotKUnLCBpY29uOiAnbm9uZScgfSlcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLmNhdGNoKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLnNob3dHcmFiTW9kYWwgPSBmYWxzZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0aGFuZGxlQ2FuY2VsT3JkZXIoaXRlbSkge1xuXHRcdFx0XHR0aGlzLnNlbGVjdGVkQ2FuY2VsT3JkZXIgPSBpdGVtXG5cdFx0XHRcdHRoaXMuJHUuYXBpLmNhbmNlbExpbWl0KCkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmNhbmNlbFJlbWFpbiA9IHJlcy5kYXRhLnJlbWFpblxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5zaG93ID0gdHJ1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0Y29uZmlybUNhbmNlbE9yZGVyKCkge1xuXHRcdFx0XHRpZiAoIXRoaXMuc2VsZWN0ZWRDYW5jZWxPcmRlcikgcmV0dXJuXG5cdFx0XHRcdHRoaXMuJHUuYXBpLmNhbmNlbE9yZGVyKHsgb3JkZXJJZDogdGhpcy5zZWxlY3RlZENhbmNlbE9yZGVyLmlkIH0pLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHR0aGlzLnNob3cgPSBmYWxzZVxuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHsgdGl0bGU6ICflj5bmtojmiJDlip8nLCBpY29uOiAnc3VjY2VzcycgfSlcblx0XHRcdFx0XHRcdHRoaXMuZ2V0UGlja3VwT3JkZXJzKClcblx0XHRcdFx0XHRcdHRoaXMuZ2V0Q2VudGVySW5mbygpXG5cdFx0XHRcdFx0XHR0aGlzLmdldEFjdGl2ZU9yZGVyQ291bnQoKVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHsgdGl0bGU6IHJlcy5tZXNzYWdlIHx8ICflj5bmtojlpLHotKUnLCBpY29uOiAnbm9uZScgfSlcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLmNhdGNoKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLnNob3cgPSBmYWxzZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0aGFuZGxlQ2FsbChpdGVtKSB7XG5cdFx0XHRcdGlmIChpdGVtLmNvbnRhY3RQaG9uZSkge1xuXHRcdFx0XHRcdHVuaS5tYWtlUGhvbmVDYWxsKHtcblx0XHRcdFx0XHRcdHBob25lTnVtYmVyOiBpdGVtLmNvbnRhY3RQaG9uZVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdGhhbmRsZVNob3dQaWNrdXBDb2RlKGl0ZW0pIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFBpY2t1cE9yZGVyID0gaXRlbVxuXHRcdFx0XHR0aGlzLnNob3cxID0gdHJ1ZVxuXHRcdFx0fSxcblxuXHRcdFx0Z29Ub09yZGVyRGV0YWlsKGl0ZW0sIGluZGV4KSB7XG5cdFx0XHRcdGxldCB1cmwgPSBgL3BhZ2VzL29yZGVyLWRldGFpbC9vcmRlci1kZXRhaWw/aWQ9JHtpdGVtLmlkfWBcblx0XHRcdFx0aWYgKHRoaXMuYWN0aXZlVGFiID09PSAncGlja3VwJyB8fCB0aGlzLmFjdGl2ZVRhYiA9PT0gJ2RlbGl2ZXJpbmcnKSB7XG5cdFx0XHRcdFx0dXJsICs9IGAmaW5kZXg9JHtpbmRleCArIDF9YFxuXHRcdFx0XHR9XG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHsgdXJsIH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRnZXRDZW50ZXJJbmZvKCkge1xuXHRcdFx0XHR0aGlzLiR1LmFwaS5jZW50ZXJJbmZvKCkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmFjY2VwdGluZ1N0YXR1cyA9IHJlcy5kYXRhLmFjY2VwdGluZ1N0YXR1c1xuXHRcdFx0XHRcdFx0dGhpcy5jZW50ZXJVc2VySW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0ZnVsbEltZ1VybDogcmVzLmRhdGEuZnVsbEltZ1VybCxcblx0XHRcdFx0XHRcdFx0bmFtZTogcmVzLmRhdGEubmFtZVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpcy5zdGF0cyA9IFtcblx0XHRcdFx0XHRcdFx0eyB2YWx1ZTogcmVzLmRhdGEuc2NvcmUsIGxhYmVsOiAn5pyN5Yqh5YiGJyB9LFxuXHRcdFx0XHRcdFx0XHR7IHZhbHVlOiAoKHJlcy5kYXRhLnRvZGF5Q29tbWlzc2lvbiAvIDEwMCkgfHwgMCkudG9GaXhlZCgyKSwgbGFiZWw6ICfku4rml6XpooTorqHkvaPph5EnIH0sXG5cdFx0XHRcdFx0XHRcdHsgdmFsdWU6IHJlcy5kYXRhLnRvZGF5T3JkZXJDb3VudCwgbGFiZWw6ICfku4rml6XmjqXljZUnIH1cblx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRnZXRDYXRlZ29yeUxpc3REYXRhKCkge1xuXHRcdFx0XHR0aGlzLiR1LmFwaS5nZXRDYXRlZ29yeUxpc3QoeyB0eXBlOiAzIH0pLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0dGhpcy5jYXRlZ29yeUxpc3QgPSByZXMuZGF0YSB8fCBbXVxuXHRcdFx0XHRcdFx0dGhpcy5maWx0ZXJTZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoc2VjdGlvbi5rZXkgPT09ICdsZXZlbCcpIHtcblx0XHRcdFx0XHRcdFx0XHRzZWN0aW9uLm9wdGlvbnMgPSBbJ+S4jemZkCcsIC4uLnRoaXMuY2F0ZWdvcnlMaXN0Lm1hcChpdGVtID0+IGl0ZW0ubmFtZSldXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0bG9hZE9yZGVyc0J5VGFiKHRhYikge1xuXHRcdFx0XHRpZiAodGhpcy51c2VySW5mby5hdWRpdFN0YXR1cyA9PT0gOTkpIHJldHVybjtcblx0XHRcdFx0aWYgKHRoaXMuYWNjZXB0aW5nU3RhdHVzID09PSAwKSByZXR1cm47XG5cdFx0XHRcdGlmICh0YWIgPT09ICdoYWxsJykge1xuXHRcdFx0XHRcdHRoaXMuaGFsbFBhZ2UgPSAxXG5cdFx0XHRcdFx0dGhpcy5oYWxsSGFzTW9yZSA9IHRydWVcblx0XHRcdFx0XHR0aGlzLm9yZGVyTGlzdCA9IFtdXG5cdFx0XHRcdFx0dGhpcy5nZXRIYWxsT3JkZXJzKClcblx0XHRcdFx0fSBlbHNlIGlmICh0YWIgPT09ICdwaWNrdXAnKSB7XG5cdFx0XHRcdFx0dGhpcy5waWNrdXBPcmRlckxpc3QgPSBbXVxuXHRcdFx0XHRcdHRoaXMuZ2V0UGlja3VwT3JkZXJzKClcblx0XHRcdFx0fSBlbHNlIGlmICh0YWIgPT09ICdkZWxpdmVyaW5nJykge1xuXHRcdFx0XHRcdHRoaXMuZGVsaXZlcmluZ09yZGVyTGlzdCA9IFtdXG5cdFx0XHRcdFx0dGhpcy5nZXREZWxpdmVyaW5nT3JkZXJzKClcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0Z2V0SGFsbE9yZGVycygpIHtcblx0XHRcdFx0aWYgKHRoaXMuYWNjZXB0aW5nU3RhdHVzID09PSAwKSByZXR1cm47XG5cdFx0XHRcdGlmICh0aGlzLmhhbGxMb2FkaW5nIHx8ICF0aGlzLmhhbGxIYXNNb3JlKSB7XG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5oYWxsTG9hZGluZyA9IHRydWVcblxuXHRcdFx0XHRsZXQgZGlzdGFuY2UgPSBudWxsXG5cdFx0XHRcdGlmICh0aGlzLnNlbGVjdGVkRmlsdGVycy5kaXN0YW5jZSAhPT0gJ+S4jemZkCcpIHtcblx0XHRcdFx0XHRjb25zdCBkaXN0YW5jZVRleHQgPSB0aGlzLnNlbGVjdGVkRmlsdGVycy5kaXN0YW5jZVxuXHRcdFx0XHRcdGlmIChkaXN0YW5jZVRleHQuaW5jbHVkZXMoJ2ttJykpIHtcblx0XHRcdFx0XHRcdGRpc3RhbmNlID0gcGFyc2VJbnQoZGlzdGFuY2VUZXh0KSAqIDEwMDBcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0ZGlzdGFuY2UgPSBwYXJzZUludChkaXN0YW5jZVRleHQpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qgc29ydFR5cGVNYXAgPSB7XG5cdFx0XHRcdFx0J+e7vOWQiOaOkuW6jyc6IDEsXG5cdFx0XHRcdFx0J+i3neemu+acgOi/kSc6IDJcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBzb3J0VHlwZSA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnNvcnQgIT09ICfkuI3pmZAnID8gKHNvcnRUeXBlTWFwW3RoaXMuc2VsZWN0ZWRGaWx0ZXJzLnNvcnRdIHx8IG51bGwpIDogbnVsbFxuXG5cdFx0XHRcdGxldCBncmFkZUlkID0gbnVsbFxuXHRcdFx0XHRpZiAodGhpcy5zZWxlY3RlZEZpbHRlcnMubGV2ZWwgIT09ICfkuI3pmZAnKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc2VsZWN0ZWRDYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcnlMaXN0LmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT09IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxldmVsKVxuXHRcdFx0XHRcdGlmIChzZWxlY3RlZENhdGVnb3J5KSB7XG5cdFx0XHRcdFx0XHRncmFkZUlkID0gc2VsZWN0ZWRDYXRlZ29yeS5pZFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKCfmjqXljZXlpKfljoU6JywgeyBkaXN0YW5jZSwgZ3JhZGVJZCwgc29ydFR5cGUgfSlcblx0XHRcdFx0dGhpcy4kdS5hcGkuZ3JhYk9yZGVySGFsbCh7XG5cdFx0XHRcdFx0Y2FwYWNpdHk6IHRoaXMuaGFsbFBhZ2VTaXplLFxuXHRcdFx0XHRcdHBhZ2U6IHRoaXMuaGFsbFBhZ2UsXG5cdFx0XHRcdFx0bW9kZWw6IHtcblx0XHRcdFx0XHRcdGRpc3RhbmNlOiBkaXN0YW5jZSxcblx0XHRcdFx0XHRcdGdyYWRlSWQ6IGdyYWRlSWQsXG5cdFx0XHRcdFx0XHRzb3J0VHlwZTogc29ydFR5cGVcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygn5o6l5Y2V5aSn5Y6FJywgcmVzKVxuXHRcdFx0XHRcdHRoaXMuaGFsbExvYWRpbmcgPSBmYWxzZVxuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBsaXN0ID0gcmVzLmRhdGEucmVjb3JkcyB8fCBbXVxuXHRcdFx0XHRcdFx0dGhpcy5vcmRlckxpc3QgPSB0aGlzLmhhbGxQYWdlID09PSAxID8gbGlzdCA6IHRoaXMub3JkZXJMaXN0LmNvbmNhdChsaXN0KVxuXHRcdFx0XHRcdFx0dGhpcy5oYWxsSGFzTW9yZSA9IGxpc3QubGVuZ3RoID49IHRoaXMuaGFsbFBhZ2VTaXplXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KS5jYXRjaCgoZXJyKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5oYWxsTG9hZGluZyA9IGZhbHNlXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRnZXRQaWNrdXBPcmRlcnMoKSB7XG5cdFx0XHRcdGlmICh0aGlzLmFjY2VwdGluZ1N0YXR1cyA9PT0gMCkgcmV0dXJuO1xuXHRcdFx0XHRpZiAodGhpcy5waWNrdXBMb2FkaW5nKSByZXR1cm5cblx0XHRcdFx0dGhpcy5waWNrdXBMb2FkaW5nID0gdHJ1ZVxuXHRcdFx0XHR0aGlzLiR1LmFwaS5hY3RpdmVPcmRlcnMoeyBzdGF0dXM6IDMgfSkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCflvoXlj5botKc6JywgcmVzKVxuXHRcdFx0XHRcdHRoaXMucGlja3VwTG9hZGluZyA9IGZhbHNlXG5cdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdHRoaXMucGlja3VwT3JkZXJMaXN0ID0gcmVzLmRhdGEucmVjb3JkcyB8fCByZXMuZGF0YSB8fCBbXVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkuY2F0Y2goKGVycikgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGlja3VwTG9hZGluZyA9IGZhbHNlXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRnZXREZWxpdmVyaW5nT3JkZXJzKCkge1xuXHRcdFx0XHRpZiAodGhpcy5hY2NlcHRpbmdTdGF0dXMgPT09IDApIHJldHVybjtcblx0XHRcdFx0aWYgKHRoaXMuZGVsaXZlcmluZ0xvYWRpbmcpIHJldHVyblxuXHRcdFx0XHR0aGlzLmRlbGl2ZXJpbmdMb2FkaW5nID0gdHJ1ZVxuXHRcdFx0XHR0aGlzLiR1LmFwaS5hY3RpdmVPcmRlcnMoeyBzdGF0dXM6IDQgfSkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfphY3pgIHkuK06JywgcmVzKVxuXHRcdFx0XHRcdHRoaXMuZGVsaXZlcmluZ0xvYWRpbmcgPSBmYWxzZVxuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmRlbGl2ZXJpbmdPcmRlckxpc3QgPSByZXMuZGF0YSB8fCBbXVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkuY2F0Y2goKGVycikgPT4ge1xuXHRcdFx0XHRcdHRoaXMuZGVsaXZlcmluZ0xvYWRpbmcgPSBmYWxzZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0b3BlblN0YXR1c1BpY2tlcigpIHtcblx0XHRcdFx0dGhpcy5zaG93U3RhdHVzUGlja2VyID0gdHJ1ZVxuXHRcdFx0fSxcblxuXHRcdFx0Y29uZmlybVN0YXR1cyhlKSB7XG5cdFx0XHRcdHRoaXMuc2hvd1N0YXR1c1BpY2tlciA9IGZhbHNlXG5cdFx0XHRcdGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBlLnZhbHVlWzBdXG5cdFx0XHRcdHRoaXMuJHUuYXBpLnVwZGF0ZUFjY2VwdGluZ1N0YXR1cyh7IHN0YXR1czogc2VsZWN0ZWRWYWx1ZS52YWx1ZSB9KS50aGVuKHJlcyA9PiB7XG5cdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdHRoaXMuYWNjZXB0aW5nU3RhdHVzID0gc2VsZWN0ZWRWYWx1ZS52YWx1ZVxuXHRcdFx0XHRcdFx0dGhpcy5nZXRDZW50ZXJJbmZvKClcblx0XHRcdFx0XHRcdGlmICh0aGlzLmFjY2VwdGluZ1N0YXR1cyA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9yZGVyTGlzdCA9IFtdXG5cdFx0XHRcdFx0XHRcdHRoaXMucGlja3VwT3JkZXJMaXN0ID0gW11cblx0XHRcdFx0XHRcdFx0dGhpcy5kZWxpdmVyaW5nT3JkZXJMaXN0ID0gW11cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLmFjdGl2ZVRhYiA9PT0gJ3BpY2t1cCcpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldFBpY2t1cE9yZGVycygpXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5hY3RpdmVUYWIgPT09ICdkZWxpdmVyaW5nJykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0RGVsaXZlcmluZ09yZGVycygpXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5oYWxsUGFnZSA9IDFcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmhhbGxIYXNNb3JlID0gdHJ1ZVxuXHRcdFx0XHRcdFx0XHRcdHRoaXMub3JkZXJMaXN0ID0gW11cblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldEhhbGxPcmRlcnMoKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0dG9Ecml2ZXJDZXJ0aWZpY2F0aW9uKCkge1xuXHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0dXJsOiAnL3BhZ2VzL2RyaXZlci1jZXJ0aWZpY2F0aW9uL2RyaXZlci1jZXJ0aWZpY2F0aW9uJ1xuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0dG9nZ2xlRmlsdGVyUG9wdXAoc2hvdykge1xuXHRcdFx0XHR0aGlzLnNob3dGaWx0ZXJQb3B1cCA9IHNob3dcblx0XHRcdH0sXG5cblx0XHRcdHNlbGVjdEZpbHRlcihrZXksIG9wdGlvbikge1xuXHRcdFx0XHR0aGlzLnNlbGVjdGVkRmlsdGVycyA9IHtcblx0XHRcdFx0XHQuLi50aGlzLnNlbGVjdGVkRmlsdGVycyxcblx0XHRcdFx0XHRba2V5XTogb3B0aW9uXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdHJlc2V0RmlsdGVycygpIHtcblx0XHRcdFx0dGhpcy5zaG93RmlsdGVyUG9wdXAgPSBmYWxzZVxuXHRcdFx0XHRpZiAodGhpcy51c2VySW5mby5hdWRpdFN0YXR1cyA9PT0gOTkpIHJldHVybjtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEZpbHRlcnMgPSB7XG5cdFx0XHRcdFx0c29ydDogJ+e7vOWQiOaOkuW6jycsXG5cdFx0XHRcdFx0bGV2ZWw6ICfkuI3pmZAnLFxuXHRcdFx0XHRcdGRpc3RhbmNlOiAn5LiN6ZmQJ1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLmFjdGl2ZVRhYiA9PT0gJ2hhbGwnKSB7XG5cdFx0XHRcdFx0dGhpcy5oYWxsUGFnZSA9IDFcblx0XHRcdFx0XHR0aGlzLmhhbGxIYXNNb3JlID0gdHJ1ZVxuXHRcdFx0XHRcdHRoaXMub3JkZXJMaXN0ID0gW11cblx0XHRcdFx0XHR0aGlzLmdldEhhbGxPcmRlcnMoKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRjb25maXJtRmlsdGVycygpIHtcblx0XHRcdFx0dGhpcy5zaG93RmlsdGVyUG9wdXAgPSBmYWxzZVxuXHRcdFx0XHRpZiAodGhpcy51c2VySW5mby5hdWRpdFN0YXR1cyA9PT0gOTkpIHtcblx0XHRcdFx0XHR0aGlzLmhhbGxIYXNNb3JlID0gdHJ1ZVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLmFjdGl2ZVRhYiA9PT0gJ2hhbGwnKSB7XG5cdFx0XHRcdFx0dGhpcy5oYWxsUGFnZSA9IDFcblx0XHRcdFx0XHR0aGlzLmhhbGxIYXNNb3JlID0gdHJ1ZVxuXHRcdFx0XHRcdHRoaXMub3JkZXJMaXN0ID0gW11cblx0XHRcdFx0XHR0aGlzLmdldEhhbGxPcmRlcnMoKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRpbml0VFRTKCkge1xuXHRcdFx0XHRpZiAodW5pLmdldFN5c3RlbUluZm9TeW5jKCkucGxhdGZvcm0gIT09ICdhbmRyb2lkJykge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfku4XmlK/mjIHlronljZMnKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHQvLyDlr7zlhaXlronljZPljp/nlJ/nsbtcblx0XHRcdFx0XHRjb25zdCBUZXh0VG9TcGVlY2ggPSBwbHVzLmFuZHJvaWQuaW1wb3J0Q2xhc3MoJ2FuZHJvaWQuc3BlZWNoLnR0cy5UZXh0VG9TcGVlY2gnKVxuXHRcdFx0XHRcdGNvbnN0IExvY2FsZSA9IHBsdXMuYW5kcm9pZC5pbXBvcnRDbGFzcygnamF2YS51dGlsLkxvY2FsZScpXG5cblx0XHRcdFx0XHQvLyDliJvlu7pUVFNcblx0XHRcdFx0XHR0aGlzLnR0cyA9IG5ldyBUZXh0VG9TcGVlY2gocGx1cy5hbmRyb2lkLnJ1bnRpbWVNYWluQWN0aXZpdHkoKSwge1xuXHRcdFx0XHRcdFx0b25Jbml0OiAoc3RhdHVzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChzdGF0dXMgPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIOiuvue9ruS4reaWh1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMudHRzLnNldExhbmd1YWdlKExvY2FsZS5DSElOQSlcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn6K+t6Z+z5Yid5aeL5YyW5oiQ5YqfJylcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygn5Yid5aeL5YyW5aSx6LSlJywgZSlcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0c3BlYWsodGV4dCkge1xuXHRcdFx0XHRpZiAoIXRoaXMudHRzKSB7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogJ+ivremfs+acquWHhuWkh+WlvScsXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHQvLyDlronljZPljp/nlJ/mkq3miqXvvIhRVUVVRV9GTFVTSCA9IOeri+WNs+aSreaKpe+8jOaJk+aWreS4iuS4gOadoe+8iVxuXHRcdFx0XHRcdHRoaXMudHRzLnNwZWFrKHRleHQsIDAsIG51bGwpXG5cdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfmkq3miqXlpLHotKUnLCBlcnIpXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdHN0b3BTcGVhaygpIHtcblx0XHRcdFx0aWYgKHRoaXMudHRzKSB0aGlzLnR0cy5zdG9wKClcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0b25VbmxvYWQoKSB7XG5cdFx0XHRpZiAodGhpcy50dHMpIHtcblx0XHRcdFx0dGhpcy50dHMuc3RvcCgpXG5cdFx0XHRcdHRoaXMudHRzLnNodXRkb3duKClcblx0XHRcdH1cblx0XHR9XG5cdH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+XG5cdC5oYWxsLXBhZ2Uge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRoZWlnaHQ6IDEwMHZoO1xuXHRcdGJhY2tncm91bmQ6ICNmNWY2Zjg7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHRcdC5xcmNvZGUge1xuXHRcdFx0cGFkZGluZzogMzZycHggMzBycHg7XG5cdFx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdFx0LnFyY29kZS10aXRsZSB7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0XHRcdGltYWdlIHtcblx0XHRcdFx0XHR3aWR0aDogMjhycHg7XG5cdFx0XHRcdFx0aGVpZ2h0OiAyOHJweDtcblx0XHRcdFx0fVxuXHRcdFx0XHR0ZXh0IHtcblx0XHRcdFx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMzJycHg7XG5cdFx0XHRcdFx0Y29sb3I6ICMxMTExMTE7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC5xcmNvZGUtaW1hZ2Uge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDYwcnB4O1xuXHRcdFx0XHRpbWFnZSB7XG5cdFx0XHRcdFx0d2lkdGg6IDQwMHJweDtcblx0XHRcdFx0XHRoZWlnaHQ6IDQwMHJweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0LnFyY29kZS1idG4ge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0aGVpZ2h0OiA4OHJweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDg4cnB4O1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICMxMDZFRkE7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwcnB4O1xuXHRcdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRcdFx0Zm9udC1zaXplOiAzMnJweDtcblx0XHRcdFx0Y29sb3I6ICNGRkZGRkY7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDY4cnB4O1xuXG5cdFx0XHRcdCYtLWhvdmVyIHtcblx0XHRcdFx0XHRvcGFjaXR5OiAwLjkyO1xuXHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgycnB4KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5waG90by1kZWxpdmVyIHtcblx0XHRcdHBhZGRpbmc6IDMycnB4IDI4cnB4IGNhbGMoZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pICsgMjhycHgpO1xuXHRcdFx0YmFja2dyb3VuZDogI2ZmZmZmZjtcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAyMHJweDtcblx0XHRcdGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAyMHJweDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cblx0XHRcdCZfX2hlYWRlciB7XG5cdFx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdH1cblxuXHRcdFx0Jl9fdGl0bGUge1xuXHRcdFx0XHRmb250LXNpemU6IDM0cnB4O1xuXHRcdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0XHRjb2xvcjogIzExMTExMTtcblx0XHRcdH1cblxuXHRcdFx0Jl9fY2xvc2UsXG5cdFx0XHQmX19jbG9zZS1wbGFjZWhvbGRlciB7XG5cdFx0XHRcdHdpZHRoOiAzNnJweDtcblx0XHRcdFx0aGVpZ2h0OiAzNnJweDtcblx0XHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHR9XG5cblx0XHRcdCZfX2Nsb3NlLXBsYWNlaG9sZGVyIHtcblx0XHRcdFx0b3BhY2l0eTogMDtcblx0XHRcdH1cblxuXHRcdFx0Jl9fc2VjdGlvbiB7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDU2cnB4O1xuXG5cdFx0XHRcdCYtLXJlbWFyayB7XG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogNDZycHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Jl9fbGFiZWwtcm93IHtcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0fVxuXG5cdFx0XHQmX19sYWJlbCxcblx0XHRcdCZfX3JlbWFyay10aXRsZSB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMjhycHg7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0XHRcdGNvbG9yOiAjMjMyNjJkO1xuXHRcdFx0fVxuXG5cdFx0XHQmX19yZXF1aXJlZCB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiA0cnB4O1xuXHRcdFx0XHRmb250LXNpemU6IDI4cnB4O1xuXHRcdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0XHRjb2xvcjogI2ZmM2IzMDtcblx0XHRcdH1cblxuXHRcdFx0Jl9faGludCB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAxMnJweDtcblx0XHRcdFx0Zm9udC1zaXplOiAyNHJweDtcblx0XHRcdFx0Y29sb3I6ICNhOGFkYjc7XG5cdFx0XHR9XG5cblx0XHRcdCZfX3Bob3RvcyB7XG5cdFx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdGdhcDogMThycHg7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDMwcnB4O1xuXHRcdFx0fVxuXG5cdFx0XHQmX191cGxvYWQtY2FyZCxcblx0XHRcdCZfX3ByZXZpZXctY2FyZCB7XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0d2lkdGg6IDE2MHJweDtcblx0XHRcdFx0aGVpZ2h0OiAxNjBycHg7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDhycHg7XG5cdFx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR9XG5cblx0XHRcdCZfX3VwbG9hZC1jYXJkIHtcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRcdGJvcmRlcjogMnJweCBkYXNoZWQgI2M5Y2VkNjtcblx0XHRcdFx0YmFja2dyb3VuZDogI2ZmZmZmZjtcblx0XHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRcdH1cblxuXHRcdFx0Jl9fdXBsb2FkLWljb24ge1xuXHRcdFx0XHR3aWR0aDogNTJycHg7XG5cdFx0XHRcdGhlaWdodDogNTJycHg7XG5cdFx0XHR9XG5cblx0XHRcdCZfX3VwbG9hZC10ZXh0IHtcblx0XHRcdFx0bWFyZ2luLXRvcDogMTRycHg7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMjZycHg7XG5cdFx0XHRcdGNvbG9yOiAjOWRhM2FlO1xuXHRcdFx0fVxuXG5cdFx0XHQmX19wcmV2aWV3LWNhcmQge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAjZWVmMWY1O1xuXHRcdFx0fVxuXG5cdFx0XHQmX19wcmV2aWV3LWltYWdlIHtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdH1cblxuXHRcdFx0Jl9fcHJldmlldy1tYXNrIHtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHRyaWdodDogMDtcblx0XHRcdFx0Ym90dG9tOiAwO1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0aGVpZ2h0OiA0OHJweDtcblx0XHRcdFx0YmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjQ2KTtcblx0XHRcdH1cblxuXHRcdFx0Jl9fcHJldmlldy1kZWxldGUge1xuXHRcdFx0XHRmb250LXNpemU6IDI2cnB4O1xuXHRcdFx0XHRjb2xvcjogI2ZmZmZmZjtcblx0XHRcdH1cblxuXHRcdFx0Jl9fdGV4dGFyZWEge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0aGVpZ2h0OiAxMTBycHg7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDI0cnB4O1xuXHRcdFx0XHRwYWRkaW5nOiAyOHJweCAyNHJweDtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMTJycHg7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICNmN2Y4ZmE7XG5cdFx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMzBycHg7XG5cdFx0XHRcdGNvbG9yOiAjMmMzMTM5O1xuXHRcdFx0fVxuXG5cdFx0XHQmX19zdWJtaXQge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0aGVpZ2h0OiA4OHJweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDg4cnB4O1xuXHRcdFx0XHRtYXJnaW4tdG9wOiA4NnJweDtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNTBycHg7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICMxMDZlZmE7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMzJycHg7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0XHRcdGNvbG9yOiAjZmZmZmZmO1xuXHRcdFx0XHRib3JkZXI6IDA7XG5cdFx0XHRcdHBhZGRpbmc6IDA7XG5cblx0XHRcdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0XHRcdGJvcmRlcjogMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYtLWhvdmVyIHtcblx0XHRcdFx0XHRvcGFjaXR5OiAwLjkyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9faGVhZGVyIHtcblx0XHRcdHBvc2l0aW9uOiBmaXhlZDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRyaWdodDogMDtcblx0XHRcdHotaW5kZXg6IDEwO1xuXHRcdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgIzI0NzNmNSAwJSwgIzFlNmZlZiAxMDAlKTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMTJycHggMjRycHggcmdiYSgzNiwgMTE1LCAyNDUsIDAuMDgpO1xuXHRcdH1cblxuXHRcdCZfX3VzZXItcm93IHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0cGFkZGluZzogMjBycHggMjRycHggMDtcblx0XHR9XG5cblx0XHQmX191c2VyIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiAxNHJweDtcblx0XHR9XG5cblx0XHQmX19hdmF0YXIge1xuXHRcdFx0d2lkdGg6IDQycnB4O1xuXHRcdFx0aGVpZ2h0OiA0MnJweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdGJvcmRlcjogMnJweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG5cdFx0fVxuXG5cdFx0Jl9fbmFtZSB7XG5cdFx0XHRmb250LXNpemU6IDI4cnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0XHRcdGNvbG9yOiAjZmZmZmZmO1xuXHRcdH1cblxuXHRcdCZfX3N0YXR1cyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdHBhZGRpbmc6IDEwcnB4IDE2cnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogOTk5cnB4O1xuXHRcdFx0YmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KTtcblx0XHRcdGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHJweCk7XG5cdFx0fVxuXG5cdFx0Jl9fc3RhdHVzLWRvdCB7XG5cdFx0XHR3aWR0aDogMTRycHg7XG5cdFx0XHRoZWlnaHQ6IDE0cnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdFx0YmFja2dyb3VuZDogIzMyZDc0Yjtcblx0XHRcdG1hcmdpbi1yaWdodDogMTBycHg7XG5cblx0XHRcdCYtLW9mZmxpbmUge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAjZmYzYjMwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX3N0YXR1cy10ZXh0LFxuXHRcdCZfX3N0YXR1cy1hcnJvdyB7XG5cdFx0XHRmb250LXNpemU6IDI0cnB4O1xuXHRcdFx0Y29sb3I6ICNmZmZmZmY7XG5cdFx0fVxuXG5cdFx0Jl9fc3RhdHVzLWFycm93IHtcblx0XHRcdGZvbnQtc2l6ZTogMThycHg7XG5cdFx0XHRtYXJnaW4tbGVmdDogOHJweDtcblx0XHR9XG5cblx0XHQmX19zdGF0cyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdFx0cGFkZGluZzogMzRycHggMzZycHggMjhycHg7XG5cdFx0fVxuXG5cdFx0Jl9fc3RhdC1pdGVtIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdG1pbi13aWR0aDogMTYwcnB4O1xuXHRcdH1cblxuXHRcdCZfX3N0YXQtdmFsdWUge1xuXHRcdFx0Zm9udC1zaXplOiA1MnJweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRcdGNvbG9yOiAjZmZmZmZmO1xuXHRcdH1cblxuXHRcdCZfX3N0YXQtbGFiZWwge1xuXHRcdFx0bWFyZ2luLXRvcDogMTJycHg7XG5cdFx0XHRmb250LXNpemU6IDI2cnB4O1xuXHRcdFx0Y29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44Nik7XG5cdFx0fVxuXG5cdFx0Jl9fdGFicyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGhlaWdodDogODhycHg7XG5cdFx0XHRwYWRkaW5nOiAwIDE4cnB4O1xuXHRcdFx0YmFja2dyb3VuZDogI2ZmZmZmZjtcblx0XHR9XG5cblx0XHQmX190YWIge1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdHBhZGRpbmc6IDAgMThycHg7XG5cdFx0XHRmb250LXNpemU6IDMycnB4O1xuXHRcdFx0Y29sb3I6ICM4YjkwOTk7XG5cdFx0fVxuXG5cdFx0Jl9fdGFiLS1hY3RpdmUge1xuXHRcdFx0Y29sb3I6ICMyNDI5MzM7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdH1cblxuXHRcdCZfX3RhYi10ZXh0IHtcblx0XHRcdGZvbnQtc2l6ZTogaW5oZXJpdDtcblx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdH1cblxuXHRcdCZfX3RhYi1jb3VudCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogNnJweDtcblx0XHRcdGZvbnQtc2l6ZTogMjhycHg7XG5cdFx0XHRjb2xvcjogIzhiOTA5OTtcblx0XHR9XG5cblx0XHQmX190YWItbGluZSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiAxOHJweDtcblx0XHRcdHJpZ2h0OiAxOHJweDtcblx0XHRcdGJvdHRvbTogMDtcblx0XHRcdGhlaWdodDogNXJweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDk5OXJweDtcblx0XHRcdGJhY2tncm91bmQ6ICMyNDczZjU7XG5cdFx0fVxuXG5cdFx0Jl9fZmlsdGVyIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDZycHg7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAxMHJweDtcblx0XHR9XG5cblx0XHQmX19maWx0ZXItdGV4dCB7XG5cdFx0XHRmb250LXNpemU6IDI4cnB4O1xuXHRcdFx0Y29sb3I6ICM5YWExYWI7XG5cblx0XHRcdCYtLWFjdGl2ZSB7XG5cdFx0XHRcdGNvbG9yOiAjMTA2ZWZhO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQmX19maWx0ZXItaWNvbiB7XG5cdFx0XHR3aWR0aDogMjhycHg7XG5cdFx0XHRoZWlnaHQ6IDI4cnB4O1xuXHRcdH1cblxuXHRcdCZfX2JvZHkge1xuXHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNGNkY5RkY7XG5cdFx0fVxuXG5cdFx0Jl9fbGlzdCB7XG5cdFx0XHRwYWRkaW5nOiAzMHJweDtcblx0XHR9XG5cblx0XHQmX192ZXJpZmllZCB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0aW1hZ2Uge1xuXHRcdFx0XHR3aWR0aDogMzIwcnB4O1xuXHRcdFx0XHRoZWlnaHQ6IDMyMHJweDtcblx0XHRcdH1cblx0XHRcdGJ1dHRvbiB7XG5cdFx0XHRcdHdpZHRoOiAxNjBycHg7XG5cdFx0XHRcdGhlaWdodDogNjRycHg7XG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiA2NHJweDtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cdFx0XHRcdGJvcmRlcjogMCAhaW1wb3J0YW50O1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAjMTA2RUZBO1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MHJweDtcblx0XHRcdFx0bWFyZ2luLXRvcDogNDBycHg7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMjhycHg7XG5cdFx0XHRcdGNvbG9yOiAjRkZGRkZGO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX2VtcHR5IHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO1xuXHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHR9XG5cblx0XHQmX19lbXB0eS1pY29uIHtcblx0XHRcdHdpZHRoOiAzMjBycHg7XG5cdFx0XHRoZWlnaHQ6IDMyMHJweDtcblx0XHR9XG5cdH1cblxuXHQuZmlsdGVyLXBvcHVwIHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0bGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0XHR6LWluZGV4OiAyMDtcblxuXHRcdCZfX3BhbmVsIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0YmFja2dyb3VuZDogI2ZmZmZmZjtcblx0XHRcdGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDI4cnB4O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDI4cnB4O1xuXHRcdH1cblxuXHRcdCZfX2NvbnRlbnQge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0XHRwYWRkaW5nOiAyMnJweCAxOHJweCAwO1xuXHRcdH1cblxuXHRcdCZfX3NlY3Rpb24ge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMjhycHg7XG5cdFx0fVxuXG5cdFx0Jl9fdGl0bGUge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAyMHJweDtcblx0XHRcdGZvbnQtc2l6ZTogMjhycHg7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Y29sb3I6ICMyNTJiMzM7XG5cdFx0fVxuXG5cdFx0Jl9fb3B0aW9ucyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0Z2FwOiAxOHJweCAyMHJweDtcblx0XHR9XG5cblx0XHQmX19vcHRpb24ge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdHdpZHRoOiAyMjZycHg7XG5cdFx0XHRoZWlnaHQ6IDc0cnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMTBycHg7XG5cdFx0XHRiYWNrZ3JvdW5kOiAjZjVmNWY1O1xuXHRcdFx0Ym9yZGVyOiAycnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblxuXHRcdFx0Ji0tYWN0aXZlIHtcblx0XHRcdFx0YmFja2dyb3VuZDogI2VkZjVmZjtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAjM2Q4Y2ZmO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX29wdGlvbi10ZXh0IHtcblx0XHRcdGZvbnQtc2l6ZTogMjhycHg7XG5cdFx0XHRjb2xvcjogIzRiNTE1YTtcblxuXHRcdFx0LmZpbHRlci1wb3B1cF9fb3B0aW9uLS1hY3RpdmUgJiB7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0XHRcdGNvbG9yOiAjMjY3OGZmO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX2FjdGlvbnMge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0Z2FwOiAyNHJweDtcblx0XHRcdHBhZGRpbmc6IDhycHggMThycHggMjZycHg7XG5cdFx0fVxuXG5cdFx0Jl9fYnV0dG9uIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRoZWlnaHQ6IDkycnB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDkycnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogOTk5cnB4O1xuXHRcdFx0Zm9udC1zaXplOiAzNHJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0XHRib3JkZXI6IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXG5cdFx0XHQmOjphZnRlciB7XG5cdFx0XHRcdGJvcmRlcjogMDtcblx0XHRcdH1cblxuXHRcdFx0Ji0tcmVzZXQge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAjZWJlYmViO1xuXHRcdFx0XHRjb2xvcjogIzc3N2Q4Njtcblx0XHRcdH1cblxuXHRcdFx0Ji0tY29uZmlybSB7XG5cdFx0XHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsICMyZDgyZmYgMCUsICMyMDZlZjYgMTAwJSk7XG5cdFx0XHRcdGNvbG9yOiAjZmZmZmZmO1xuXHRcdFx0fVxuXG5cdFx0XHQmLS1ob3ZlciB7XG5cdFx0XHRcdG9wYWNpdHk6IDAuOTI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Lm9yZGVyLWNhcmQge1xuXHRcdG1hcmdpbi1ib3R0b206IDIwcnB4O1xuXHRcdHBhZGRpbmc6IDIwcnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDI0cnB4O1xuXHRcdGJhY2tncm91bmQ6ICNmZmZmZmY7XG5cdFx0Ym94LXNoYWRvdzogMCAxMHJweCAyNHJweCByZ2JhKDI2LCA0NCwgODEsIDAuMDQpO1xuXG5cdFx0Jl9faGVhZCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0fVxuXG5cdFx0Jl9fdGltZS1tYWluIHtcblx0XHRcdGZvbnQtc2l6ZTogNDJycHg7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Y29sb3I6ICNmZjhkMjc7XG5cdFx0fVxuXG5cdFx0Jl9fdGltZS1zdWIge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDhycHg7XG5cdFx0XHRmb250LXNpemU6IDI4cnB4O1xuXHRcdFx0Y29sb3I6ICNhM2E4YjI7XG5cdFx0fVxuXG5cdFx0Jl9fcHJpY2Utd3JhcCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDhycHg7XG5cblx0XHRcdCYtLXNlcmlhbC1vbmx5IHtcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHRcdFx0XHRtaW4td2lkdGg6IDU0cnB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX3NlcmlhbCB7XG5cdFx0XHRmb250LXNpemU6IDM4cnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdFx0Y29sb3I6ICMyYzMxMzk7XG5cdFx0fVxuXG5cdFx0Jl9fcHJpY2Uge1xuXHRcdFx0Zm9udC1zaXplOiA0NHJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0XHRjb2xvcjogI2ZmM2IzMDtcblx0XHR9XG5cblx0XHQmX19tZXRhIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiAxNnJweDtcblx0XHRcdG1hcmdpbi10b3A6IDEycnB4O1xuXHRcdH1cblxuXHRcdCZfX2V4dHJhIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAyNHJweDtcblx0XHRcdGNvbG9yOiAjYTBhNWFmO1xuXHRcdH1cblxuXHRcdCZfX3RhZ3Mge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0XHRnYXA6IDEwcnB4O1xuXHRcdH1cblxuXHRcdCZfX3RhZy13cmFwIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdH1cblxuXHRcdCZfX3RhZy1pY29uIHtcblx0XHRcdHdpZHRoOiAxMDhycHg7XG5cdFx0XHRoZWlnaHQ6IDQwcnB4O1xuXHRcdH1cblxuXHRcdCZfX3RhZy1pbWcge1xuXHRcdFx0d2lkdGg6IDEwOHJweDtcblx0XHRcdGhlaWdodDogNDBycHg7XG5cdFx0fVxuXG5cdFx0Jl9fdGFnIHtcblx0XHRcdHBhZGRpbmc6IDRycHggMTBycHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA4cnB4O1xuXHRcdFx0Zm9udC1zaXplOiAyMnJweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjI7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0Ym9yZGVyOiAxcnB4IHNvbGlkICMyNDczZjU7XG5cdFx0XHRjb2xvcjogIzI0NzNmNTtcblxuXHRcdFx0Ji0tb3JhbmdlIHtcblx0XHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMzE5ZGVnLCAjRUU5RDBFIDAlLCAjRkY0RTRFIDEwMCUpO1xuXHRcdFx0XHRjb2xvcjogI2ZmZmZmZjtcblx0XHRcdH1cblxuXHRcdFx0Ji0tcmVkIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAjZmY2YzU3O1xuXHRcdFx0XHRjb2xvcjogI2ZmNmM1Nztcblx0XHRcdH1cblxuXHRcdFx0Ji0tYmx1ZS1saWdodCB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogIzc0YTlmZjtcblx0XHRcdFx0Y29sb3I6ICM3NGE5ZmY7XG5cdFx0XHR9XG5cblx0XHRcdCYtLWJsdWUge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiByZ2JhKDE2LDE3OCwyNTAsMC4wOCk7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDE1cnB4O1xuXHRcdFx0XHRib3JkZXI6IDJycHggc29saWQgIzEwNkVGQTtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHRcdFx0Zm9udC1zaXplOiAyMnJweDtcblx0XHRcdFx0Y29sb3I6ICMxMDZFRkE7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9fcm91dGUge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdG1hcmdpbi10b3A6IDIwcnB4O1xuXHRcdH1cblxuXHRcdCZfX3JvdXRlLXNpZGUge1xuXHRcdFx0d2lkdGg6IDcwcnB4O1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRwYWRkaW5nOiAxNHJweCAwIDhycHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyNnJweDtcblx0XHRcdGJhY2tncm91bmQ6ICNmNmY3Zjk7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDIwcnB4O1xuXHRcdH1cblxuXHRcdCZfX2Rpc3RhbmNlLWJsb2NrIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxO1xuXG5cdFx0XHQmLS10b3Age1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiA2cnB4O1xuXHRcdFx0fVxuXG5cdFx0XHQmLS1ib3R0b20ge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiA2cnB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX2Rpc3RhbmNlLXZhbHVlIHtcblx0XHRcdGZvbnQtc2l6ZTogMjZycHg7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Y29sb3I6ICMzMzMzMzM7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0fVxuXG5cdFx0Jl9fZGlzdGFuY2UtdW5pdCB7XG5cdFx0XHRtYXJnaW4tdG9wOiA2cnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxOHJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0XHRjb2xvcjogIzhjOTM5Zjtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7XG5cdFx0fVxuXG5cdFx0Jl9fbGluZSB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4taGVpZ2h0OiA2MnJweDtcblx0XHRcdG1hcmdpbjogOHJweCAwO1xuXHRcdFx0YmFja2dyb3VuZDogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyMCcgaGVpZ2h0PScyNicgdmlld0JveD0nMCAwIDIwIDI2JyUzRSUzQ3BhdGggZmlsbD0nJTIzOEM5MzlGJyBkPSdNMTAgMEM1LjAzIDAgMSAzLjk5IDEgOC45MmMwIDYuMzEgNy4yOCAxMi44NyA4LjA3IDEzLjU3YTEuNCAxLjQgMCAwIDAgMS44NiAwQzExLjcyIDIxLjc5IDE5IDE1LjIzIDE5IDguOTIgMTkgMy45OSAxNC45NyAwIDEwIDBabTAgMTIuMjRhMy4zMiAzLjMyIDAgMSAxIDAtNi42NCAzLjMyIDMuMzIgMCAwIDEgMCA2LjY0WicvJTNFJTNDL3N2ZyUzRVwiKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDtcblx0XHRcdGJhY2tncm91bmQtc2l6ZTogMjBycHggMjZycHg7XG5cblx0XHRcdCY6OmJlZm9yZSxcblx0XHRcdCY6OmFmdGVyIHtcblx0XHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0bGVmdDogNTAlO1xuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG5cdFx0XHRcdHdpZHRoOiAycnB4O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA5OTlycHg7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICNjZmQ0ZGM7XG5cdFx0XHR9XG5cblx0XHRcdCY6OmJlZm9yZSB7XG5cdFx0XHRcdHRvcDogMDtcblx0XHRcdFx0aGVpZ2h0OiAxOHJweDtcblx0XHRcdH1cblxuXHRcdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0XHRib3R0b206IDA7XG5cdFx0XHRcdGhlaWdodDogMjRycHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9fcm91dGUtbWFpbiB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdH1cblxuXHRcdCZfX3JvdXRlLWl0ZW0ge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdFx0Z2FwOiAxNnJweDtcblxuXHRcdFx0Ji0tZGVzdGluYXRpb24ge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAyMHJweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmX19yb3V0ZS10ZXh0cyB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdH1cblxuXHRcdCZfX3JvdXRlLXRpdGxlIHtcblx0XHRcdHdpZHRoOiA1MDBycHg7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtc2l6ZTogNDBycHg7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Y29sb3I6ICMyZDMxMzk7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQmX19yb3V0ZS1kZXNjIHtcblx0XHRcdHdpZHRoOiA1MDBycHg7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbi10b3A6IDhycHg7XG5cdFx0XHRmb250LXNpemU6IDI4cnB4O1xuXHRcdFx0Y29sb3I6ICM5ZWE0YWU7XG5cdFx0XHRsaW5lLWhlaWdodDogMS40O1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQmX19uYXYge1xuXHRcdFx0d2lkdGg6IDQ4cnB4O1xuXHRcdFx0aGVpZ2h0OiA0OHJweDtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdH1cblxuXHRcdCZfX2dvb2RzIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0aGVpZ2h0OiA3MHJweDtcblx0XHRcdHBhZGRpbmc6IDAgMjBycHg7XG5cdFx0XHRtYXJnaW4tdG9wOiAyMHJweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDE2cnB4O1xuXHRcdFx0YmFja2dyb3VuZDogI2Y0ZjVmNztcblx0XHR9XG5cblx0XHQmX19nb29kcy10ZXh0IHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRmb250LXNpemU6IDI4cnB4O1xuXHRcdFx0Y29sb3I6ICM3YTgxOGQ7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdH1cblxuXHRcdCZfX2dvb2RzLWFycm93IHtcblx0XHRcdG1hcmdpbi1sZWZ0OiAxMnJweDtcblx0XHRcdGZvbnQtc2l6ZTogMjRycHg7XG5cdFx0XHRjb2xvcjogI2E0YTliMTtcblx0XHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzO1xuXG5cdFx0XHQmLS1leHBhbmRlZCB7XG5cdFx0XHRcdHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9fYnV0dG9uIHtcblx0XHRcdG1hcmdpbi10b3A6IDI0cnB4O1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRoZWlnaHQ6IDg4cnB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDg4cnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogOTk5cnB4O1xuXHRcdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgIzJiN2ZmZiAwJSwgIzFmNmZmMyAxMDAlKTtcblx0XHRcdGZvbnQtc2l6ZTogMzRycHg7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Y29sb3I6ICNmZmZmZmY7XG5cdFx0XHRib3JkZXI6IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXG5cdFx0XHQmOjphZnRlciB7XG5cdFx0XHRcdGJvcmRlcjogMDtcblx0XHRcdH1cblxuXHRcdFx0Ji0taG92ZXIge1xuXHRcdFx0XHRvcGFjaXR5OiAwLjkyO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX2FjdGlvbnMge1xuXHRcdFx0bWFyZ2luLXRvcDogMjRycHg7XG5cblx0XHRcdCYtLXBpY2t1cCxcblx0XHRcdCYtLWRlbGl2ZXJpbmcge1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRnYXA6IDIycnB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX2ljb24tYWN0aW9ucyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogMjBycHg7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblxuXHRcdFx0Ji0tc2luZ2xlIHtcblx0XHRcdFx0Z2FwOiAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCZfX2ljb24tYWN0aW9uIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0d2lkdGg6IDc0cnB4O1xuXHRcdH1cblxuXHRcdCZfX2FjdGlvbi1pY29uIHtcblx0XHRcdHdpZHRoOiA0MHJweDtcblx0XHRcdGhlaWdodDogNDBycHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA4cnB4O1xuXHRcdFx0YmFja2dyb3VuZDogI2Y3ZjhmYTtcblx0XHR9XG5cblx0XHQmX19hY3Rpb24tdGV4dCB7XG5cdFx0XHRtYXJnaW4tdG9wOiA4cnB4O1xuXHRcdFx0Zm9udC1zaXplOiAyNnJweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdFx0Y29sb3I6ICM1YjYxNmI7XG5cdFx0fVxuXG5cdFx0Jl9fYnV0dG9uLS1jb2RlIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdH1cblx0fVxuPC9zdHlsZT5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///91\n"); |
| | | |
| | | /***/ }), |
| | | /* 92 */ |
| | |
| | | /***/ (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 _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\nvar _vuex = __webpack_require__(/*! vuex */ 12);\nvar _jsMd = _interopRequireDefault(__webpack_require__(/*! js-md5 */ 178));\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar _default = {\n data: function data() {\n return {\n locationTimer: null,\n jpushModule: null,\n tts: null\n };\n },\n computed: _objectSpread({}, (0, _vuex.mapState)(['userInfo', 'token'])),\n watch: {\n token: function token(newVal) {\n if (newVal) {\n this.checkAndStartLocationPolling();\n this.bindJPushAlias();\n } else {\n this.stopLocationPolling();\n this.deleteJPushAlias();\n }\n }\n },\n onLaunch: function onLaunch() {\n this.initTTS();\n this.initJPush();\n this.checkAndStartLocationPolling();\n this.checkAppUpdate();\n },\n onShow: function onShow() {\n __f__(\"log\", 'App Show', \" at App.vue:33\");\n // this.checkAndStartLocationPolling()\n },\n\n onHide: function onHide() {\n __f__(\"log\", 'App Hide', \" at App.vue:37\");\n // this.stopLocationPolling()\n },\n onUnload: function onUnload() {\n if (this.tts) {\n this.tts.stop();\n this.tts.shutdown();\n }\n this.stopLocationPolling();\n },\n methods: {\n initTTS: function initTTS() {\n var _this = this;\n if (uni.getSystemInfoSync().platform !== 'android') {\n __f__(\"log\", '仅支持安卓', \" at App.vue:50\");\n return;\n }\n try {\n // 导入安卓原生类\n var TextToSpeech = plus.android.importClass('android.speech.tts.TextToSpeech');\n var Locale = plus.android.importClass('java.util.Locale');\n\n // 创建TTS\n this.tts = new TextToSpeech(plus.android.runtimeMainActivity(), {\n onInit: function onInit(status) {\n if (status == 0) {\n // 设置中文\n _this.tts.setLanguage(Locale.CHINA);\n __f__(\"log\", '语音初始化成功', \" at App.vue:65\");\n }\n }\n });\n } catch (e) {\n __f__(\"log\", '初始化失败', e, \" at App.vue:70\");\n }\n },\n speak: function speak(text) {\n if (!this.tts) {\n uni.showToast({\n title: '语音未准备好',\n icon: 'none'\n });\n return;\n }\n try {\n // 安卓原生播报(QUEUE_FLUSH = 立即播报,打断上一条)\n this.tts.speak(text, 0, null);\n } catch (err) {\n __f__(\"log\", '播报失败', err, \" at App.vue:86\");\n }\n },\n initJPush: function initJPush() {\n __f__(\"log\", '开始初始化极光推送...', \" at App.vue:90\");\n var jpushModule = null;\n try {\n jpushModule = uni.requireNativePlugin('JG-JPush');\n } catch (e) {\n __f__(\"error\", '加载极光推送插件失败:', e, \" at App.vue:96\");\n return;\n }\n if (!jpushModule) {\n __f__(\"error\", '极光推送插件未找到', \" at App.vue:100\");\n return;\n }\n this.jpushModule = jpushModule;\n __f__(\"log\", '极光推送插件加载成功,模块:', (0, _typeof2.default)(jpushModule), \" at App.vue:104\");\n __f__(\"log\", '模块方法:', Object.keys(jpushModule), \" at App.vue:105\");\n if (typeof jpushModule.initJPushService === 'function') {\n jpushModule.initJPushService();\n __f__(\"log\", '极光推送initJPushService调用成功', \" at App.vue:109\");\n } else {\n __f__(\"error\", 'jpushModule.initJPushService 不是函数,当前方法:', (0, _typeof2.default)(jpushModule.initJPushService), \" at App.vue:111\");\n return;\n }\n if (typeof jpushModule.setLoggerEnable === 'function') {\n jpushModule.setLoggerEnable(true);\n }\n __f__(\"log\", '极光推送初始化完成,设置监听器...', \" at App.vue:118\");\n this.setupJPushListeners();\n this.getRegistrationID();\n },\n setupJPushListeners: function setupJPushListeners() {\n var that = this;\n if (!this.jpushModule) return;\n\n // 监听连接状态\n this.jpushModule.addConnectEventListener(function (result) {\n __f__(\"log\", '极光连接状态:', result.connectEnable, \" at App.vue:130\");\n });\n\n // 监听通知\n this.jpushModule.addNotificationListener(function (result) {\n __f__(\"log\", '收到通知:', JSON.stringify(result), \" at App.vue:135\");\n that.speak(result.content || '');\n var notificationEventType = result.notificationEventType;\n // notificationOpened = 点击通知\n if (notificationEventType === 'notificationOpened') {\n __f__(\"log\", '通知被点击', result.extras, \" at App.vue:140\");\n var extras = result.extras ? result.extras : {};\n if (extras.type === 'new_order' && extras.orderId) {\n uni.navigateTo({\n url: '/pages/order-detail/order-detail?id=' + extras.orderId\n });\n } else {\n uni.switchTab({\n url: '/pages/index/index'\n });\n }\n }\n });\n },\n getRegistrationID: function getRegistrationID() {\n var _this2 = this;\n if (!this.jpushModule) {\n __f__(\"log\", 'JPush模块未初始化,无法获取RegistrationID', \" at App.vue:157\");\n return;\n }\n __f__(\"log\", '开始获取JPush RegistrationID...', \" at App.vue:160\");\n this.jpushModule.getRegistrationID(function (result) {\n __f__(\"log\", 'JPush getRegistrationID result:', JSON.stringify(result), \" at App.vue:162\");\n if (result && result.registerID) {\n __f__(\"log\", 'JPush RegistrationID获取成功:', result.registerID, \" at App.vue:164\");\n uni.setStorageSync('jpush_registration_id', result.registerID);\n } else {\n __f__(\"log\", 'JPush RegistrationID获取失败,尝试重新获取', \" at App.vue:167\");\n setTimeout(function () {\n _this2.getRegistrationID();\n }, 2000);\n }\n });\n },\n bindJPushAlias: function bindJPushAlias() {\n var _this3 = this,\n _this$$store$state$us;\n if (!this.token) return;\n if (!this.jpushModule) {\n __f__(\"log\", 'JPush未初始化,延迟设置别名', \" at App.vue:178\");\n setTimeout(function () {\n _this3.bindJPushAlias();\n }, 1000);\n return;\n }\n // 优先从store获取,如果为空则从本地存储获取\n var telephone = ((_this$$store$state$us = this.$store.state.userInfo) === null || _this$$store$state$us === void 0 ? void 0 : _this$$store$state$us.telephone) || '';\n if (!telephone) {\n var _uni$getStorageSync;\n telephone = ((_uni$getStorageSync = uni.getStorageSync('userInfo')) === null || _uni$getStorageSync === void 0 ? void 0 : _uni$getStorageSync.telephone) || '';\n }\n if (!telephone) {\n __f__(\"log\", '用户手机号为空,延迟获取...', \" at App.vue:190\");\n setTimeout(function () {\n _this3.bindJPushAlias();\n }, 2000);\n return;\n }\n var alias = (0, _jsMd.default)(telephone);\n __f__(\"log\", '设置极光别名:', alias, \" at App.vue:197\");\n this.jpushModule.setAlias({\n alias: alias,\n sequence: Date.now()\n }, function (result) {\n __f__(\"log\", '设置别名结果:', JSON.stringify(result), \" at App.vue:202\");\n if (result && (result.code === 0 || result.errCode === 0)) {\n __f__(\"log\", '设置极光别名成功', \" at App.vue:204\");\n } else {\n __f__(\"log\", '设置极光别名失败', \" at App.vue:206\");\n }\n });\n },\n deleteJPushAlias: function deleteJPushAlias() {\n if (!this.jpushModule) return;\n this.jpushModule.deleteAlias({\n sequence: Date.now()\n }, function (result) {\n __f__(\"log\", '删除极光别名:', JSON.stringify(result), \" at App.vue:216\");\n });\n },\n checkAndStartLocationPolling: function checkAndStartLocationPolling() {\n var _this4 = this;\n if (!this.token) return;\n uni.getLocation({\n type: 'gcj02',\n success: function success(res) {\n __f__(\"log\", '获取定位权限成功,开始定时更新位置', \" at App.vue:225\");\n _this4.startLocationPolling();\n },\n fail: function fail(err) {\n __f__(\"log\", '获取定位权限失败:', err.errMsg, \" at App.vue:229\");\n uni.showToast({\n title: '需要定位权限才能更新位置',\n icon: 'none'\n });\n }\n });\n },\n startLocationPolling: function startLocationPolling() {\n var _this5 = this;\n this.stopLocationPolling();\n this.updateLocation();\n this.locationTimer = setInterval(function () {\n _this5.updateLocation();\n }, 60000);\n },\n stopLocationPolling: function stopLocationPolling() {\n if (this.locationTimer) {\n clearInterval(this.locationTimer);\n this.locationTimer = null;\n }\n },\n updateLocation: function updateLocation() {\n if (!this.token) return;\n var that = this;\n uni.getLocation({\n type: 'gcj02',\n success: function success(res) {\n __f__(\"log\", '定时更新位置:', res.latitude, res.longitude, \" at App.vue:259\");\n that.$u.api.updateLocation({\n latitude: res.latitude,\n longitude: res.longitude\n }).then(function (res) {\n if (res.code === 200) {\n __f__(\"log\", '更新位置成功', \" at App.vue:265\");\n } else {\n __f__(\"log\", '更新位置失败', \" at App.vue:267\");\n }\n }).catch(function (err) {\n __f__(\"log\", '更新位置请求失败:', err, \" at App.vue:270\");\n });\n },\n fail: function fail(err) {\n __f__(\"log\", '获取位置失败:', err.errMsg, \" at App.vue:274\");\n }\n });\n },\n checkAppUpdate: function checkAppUpdate() {\n var _this6 = this;\n plus.runtime.getProperty(plus.runtime.appid, function (inf) {\n var currentVersion = inf.versionCode;\n _this6.$u.api.getApiVersion({\n type: 0\n }).then(function (res) {\n if (res.code === 200 && res.data) {\n var latestVersion = res.data.versionNum;\n if (latestVersion > currentVersion) {\n if (res.data.isForce === 1) {\n _this6.showForceUpdateDialog(res.data.fileUrl, res.data.versionNum);\n } else {\n _this6.showOptionalUpdateDialog(res.data.fileUrl, res.data.versionNum);\n }\n }\n }\n });\n });\n },\n showForceUpdateDialog: function showForceUpdateDialog(fileUrl, version) {\n uni.showModal({\n title: '版本更新',\n content: \"\\u68C0\\u6D4B\\u5230\\u65B0\\u7248\\u672C\".concat(version, \"\\uFF0C\\u8BF7\\u66F4\\u65B0\\u540E\\u7EE7\\u7EED\\u4F7F\\u7528\"),\n showCancel: false,\n confirmText: '立即更新',\n success: function success() {\n plus.runtime.openURL(fileUrl);\n }\n });\n },\n showOptionalUpdateDialog: function showOptionalUpdateDialog(fileUrl, version) {\n uni.showModal({\n title: '版本更新',\n content: \"\\u68C0\\u6D4B\\u5230\\u65B0\\u7248\\u672C\".concat(version, \"\\uFF0C\\u662F\\u5426\\u66F4\\u65B0\\uFF1F\"),\n confirmText: '更新',\n cancelText: '稍后',\n success: function success(res) {\n if (res.confirm) {\n plus.runtime.openURL(fileUrl);\n }\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 */ 92)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vQXBwLnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwibG9jYXRpb25UaW1lciIsImpwdXNoTW9kdWxlIiwidHRzIiwiY29tcHV0ZWQiLCJ3YXRjaCIsInRva2VuIiwib25MYXVuY2giLCJvblNob3ciLCJvbkhpZGUiLCJvblVubG9hZCIsIm1ldGhvZHMiLCJpbml0VFRTIiwib25Jbml0Iiwic3BlYWsiLCJ1bmkiLCJ0aXRsZSIsImljb24iLCJpbml0SlB1c2giLCJzZXR1cEpQdXNoTGlzdGVuZXJzIiwidGhhdCIsInVybCIsImdldFJlZ2lzdHJhdGlvbklEIiwic2V0VGltZW91dCIsImJpbmRKUHVzaEFsaWFzIiwidGVsZXBob25lIiwiYWxpYXMiLCJzZXF1ZW5jZSIsImRlbGV0ZUpQdXNoQWxpYXMiLCJjaGVja0FuZFN0YXJ0TG9jYXRpb25Qb2xsaW5nIiwidHlwZSIsInN1Y2Nlc3MiLCJmYWlsIiwic3RhcnRMb2NhdGlvblBvbGxpbmciLCJzdG9wTG9jYXRpb25Qb2xsaW5nIiwiY2xlYXJJbnRlcnZhbCIsInVwZGF0ZUxvY2F0aW9uIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJjaGVja0FwcFVwZGF0ZSIsInBsdXMiLCJzaG93Rm9yY2VVcGRhdGVEaWFsb2ciLCJjb250ZW50Iiwic2hvd0NhbmNlbCIsImNvbmZpcm1UZXh0Iiwic2hvd09wdGlvbmFsVXBkYXRlRGlhbG9nIiwiY2FuY2VsVGV4dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQSxlQUNBO0VBQ0FBO0lBQ0E7TUFDQUM7TUFDQUM7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDLDRCQUNBLDJDQUNBO0VBQ0FDO0lBQ0FDO01BQ0E7UUFDQTtRQUNBO01BQ0E7UUFDQTtRQUNBO01BQ0E7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0E7RUFDQTs7RUFDQUM7SUFDQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQUM7TUFBQTtNQUNBO1FBQ0E7UUFDQTtNQUNBO01BRUE7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTtVQUNBQztZQUNBO2NBQ0E7Y0FDQTtjQUNBO1lBQ0E7VUFDQTtRQUNBO01BQ0E7UUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtRQUNBQztVQUNBQztVQUNBQztRQUNBO1FBQ0E7TUFDQTtNQUVBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFFQTtNQUNBO1FBQ0FoQjtNQUNBO1FBQ0E7UUFDQTtNQUNBO01BQ0E7UUFDQTtRQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFFQTtRQUNBQTtRQUNBO01BQ0E7UUFDQTtRQUNBO01BQ0E7TUFFQTtRQUNBQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBRUE7SUFFQWlCO01BQ0E7TUFDQTs7TUFFQTtNQUNBO1FBQ0E7TUFDQTs7TUFFQTtNQUNBO1FBQ0E7UUFDQUM7UUFDQTtRQUNBO1FBQ0E7VUFDQTtVQUNBO1VBQ0E7WUFDQUw7Y0FDQU07WUFDQTtVQUNBO1lBQ0FOO2NBQ0FNO1lBQ0E7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBQztNQUFBO01BQ0E7UUFDQTtRQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7UUFDQTtVQUNBO1VBQ0FQO1FBQ0E7VUFDQTtVQUNBUTtZQUNBO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFFQUM7TUFBQTtRQUFBO01BQ0E7TUFDQTtRQUNBO1FBQ0FEO1VBQ0E7UUFDQTtRQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFBQTtRQUNBRTtNQUNBO01BQ0E7UUFDQTtRQUNBRjtVQUNBO1FBQ0E7UUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0FHO1FBQ0FDO01BQ0E7UUFDQTtRQUNBO1VBQ0E7UUFDQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFDO01BQ0E7TUFDQTtRQUNBRDtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFFO01BQUE7TUFDQTtNQUNBZDtRQUNBZTtRQUNBQztVQUNBO1VBQ0E7UUFDQTtRQUNBQztVQUNBO1VBQ0FqQjtZQUNBQztZQUNBQztVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFnQjtNQUFBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFDO01BQ0E7UUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFFQUM7TUFDQTtNQUNBO01BQ0FyQjtRQUNBZTtRQUNBQztVQUNBO1VBQ0FYO1lBQ0FpQjtZQUNBQztVQUNBO1lBQ0E7Y0FDQTtZQUNBO2NBQ0E7WUFDQTtVQUNBO1lBQ0E7VUFDQTtRQUNBO1FBQ0FOO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFFQU87TUFBQTtNQUNBQztRQUNBO1FBQ0E7VUFBQVY7UUFBQTtVQUNBO1lBQ0E7WUFDQTtjQUNBO2dCQUNBO2NBQ0E7Z0JBQ0E7Y0FDQTtZQUNBO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFFQVc7TUFDQTFCO1FBQ0FDO1FBQ0EwQjtRQUNBQztRQUNBQztRQUNBYjtVQUNBUztRQUNBO01BQ0E7SUFDQTtJQUVBSztNQUNBOUI7UUFDQUM7UUFDQTBCO1FBQ0FFO1FBQ0FFO1FBQ0FmO1VBQ0E7WUFDQVM7VUFDQTtRQUNBO01BQ0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSwyQiIsImZpbGUiOiIxNzcuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8c2NyaXB0PlxuXHRpbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnXG5cdGltcG9ydCBtZDUgZnJvbSAnanMtbWQ1Jztcblx0ZXhwb3J0IGRlZmF1bHQge1xuXHRcdGRhdGEoKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRsb2NhdGlvblRpbWVyOiBudWxsLFxuXHRcdFx0XHRqcHVzaE1vZHVsZTogbnVsbCxcblx0XHRcdFx0dHRzOiBudWxsXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRjb21wdXRlZDoge1xuXHRcdFx0Li4ubWFwU3RhdGUoWyd1c2VySW5mbycsICd0b2tlbiddKVxuXHRcdH0sXG5cdFx0d2F0Y2g6IHtcblx0XHRcdHRva2VuKG5ld1ZhbCkge1xuXHRcdFx0XHRpZiAobmV3VmFsKSB7XG5cdFx0XHRcdFx0dGhpcy5jaGVja0FuZFN0YXJ0TG9jYXRpb25Qb2xsaW5nKClcblx0XHRcdFx0XHR0aGlzLmJpbmRKUHVzaEFsaWFzKClcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLnN0b3BMb2NhdGlvblBvbGxpbmcoKVxuXHRcdFx0XHRcdHRoaXMuZGVsZXRlSlB1c2hBbGlhcygpXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHRcdG9uTGF1bmNoOiBmdW5jdGlvbigpIHtcblx0XHRcdHRoaXMuaW5pdFRUUygpXG5cdFx0XHR0aGlzLmluaXRKUHVzaCgpXG5cdFx0XHR0aGlzLmNoZWNrQW5kU3RhcnRMb2NhdGlvblBvbGxpbmcoKVxuXHRcdFx0dGhpcy5jaGVja0FwcFVwZGF0ZSgpXG5cdFx0fSxcblx0XHRvblNob3c6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29uc29sZS5sb2coJ0FwcCBTaG93Jylcblx0XHRcdC8vIHRoaXMuY2hlY2tBbmRTdGFydExvY2F0aW9uUG9sbGluZygpXG5cdFx0fSxcblx0XHRvbkhpZGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29uc29sZS5sb2coJ0FwcCBIaWRlJylcblx0XHRcdC8vIHRoaXMuc3RvcExvY2F0aW9uUG9sbGluZygpXG5cdFx0fSxcblx0XHRvblVubG9hZCgpIHtcblx0XHRcdGlmICh0aGlzLnR0cykge1xuXHRcdFx0XHR0aGlzLnR0cy5zdG9wKClcblx0XHRcdFx0dGhpcy50dHMuc2h1dGRvd24oKVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5zdG9wTG9jYXRpb25Qb2xsaW5nKClcblx0XHR9LFxuXHRcdG1ldGhvZHM6IHtcblx0XHRcdGluaXRUVFMoKSB7XG5cdFx0XHRcdGlmICh1bmkuZ2V0U3lzdGVtSW5mb1N5bmMoKS5wbGF0Zm9ybSAhPT0gJ2FuZHJvaWQnKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ+S7heaUr+aMgeWuieWNkycpXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdC8vIOWvvOWFpeWuieWNk+WOn+eUn+exu1xuXHRcdFx0XHRcdGNvbnN0IFRleHRUb1NwZWVjaCA9IHBsdXMuYW5kcm9pZC5pbXBvcnRDbGFzcygnYW5kcm9pZC5zcGVlY2gudHRzLlRleHRUb1NwZWVjaCcpXG5cdFx0XHRcdFx0Y29uc3QgTG9jYWxlID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKCdqYXZhLnV0aWwuTG9jYWxlJylcblxuXHRcdFx0XHRcdC8vIOWIm+W7ulRUU1xuXHRcdFx0XHRcdHRoaXMudHRzID0gbmV3IFRleHRUb1NwZWVjaChwbHVzLmFuZHJvaWQucnVudGltZU1haW5BY3Rpdml0eSgpLCB7XG5cdFx0XHRcdFx0XHRvbkluaXQ6IChzdGF0dXMpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKHN0YXR1cyA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8g6K6+572u5Lit5paHXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy50dHMuc2V0TGFuZ3VhZ2UoTG9jYWxlLkNISU5BKVxuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCfor63pn7PliJ3lp4vljJbmiJDlip8nKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfliJ3lp4vljJblpLHotKUnLCBlKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0c3BlYWsodGV4dCkge1xuXHRcdFx0XHRpZiAoIXRoaXMudHRzKSB7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogJ+ivremfs+acquWHhuWkh+WlvScsXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHQvLyDlronljZPljp/nlJ/mkq3miqXvvIhRVUVVRV9GTFVTSCA9IOeri+WNs+aSreaKpe+8jOaJk+aWreS4iuS4gOadoe+8iVxuXHRcdFx0XHRcdHRoaXMudHRzLnNwZWFrKHRleHQsIDAsIG51bGwpXG5cdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfmkq3miqXlpLHotKUnLCBlcnIpXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRpbml0SlB1c2goKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKCflvIDlp4vliJ3lp4vljJbmnoHlhYnmjqjpgIEuLi4nKVxuXHRcdFx0XHQvLyAjaWZkZWYgQVBQLVBMVVNcblx0XHRcdFx0bGV0IGpwdXNoTW9kdWxlID0gbnVsbFxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGpwdXNoTW9kdWxlID0gdW5pLnJlcXVpcmVOYXRpdmVQbHVnaW4oJ0pHLUpQdXNoJylcblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ+WKoOi9veaegeWFieaOqOmAgeaPkuS7tuWksei0pTonLCBlKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghanB1c2hNb2R1bGUpIHtcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCfmnoHlhYnmjqjpgIHmj5Lku7bmnKrmib7liLAnKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuanB1c2hNb2R1bGUgPSBqcHVzaE1vZHVsZVxuXHRcdFx0XHRjb25zb2xlLmxvZygn5p6B5YWJ5o6o6YCB5o+S5Lu25Yqg6L295oiQ5Yqf77yM5qih5Z2XOicsIHR5cGVvZiBqcHVzaE1vZHVsZSlcblx0XHRcdFx0Y29uc29sZS5sb2coJ+aooeWdl+aWueazlTonLCBPYmplY3Qua2V5cyhqcHVzaE1vZHVsZSkpXG5cblx0XHRcdFx0aWYgKHR5cGVvZiBqcHVzaE1vZHVsZS5pbml0SlB1c2hTZXJ2aWNlID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0anB1c2hNb2R1bGUuaW5pdEpQdXNoU2VydmljZSgpXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ+aegeWFieaOqOmAgWluaXRKUHVzaFNlcnZpY2XosIPnlKjmiJDlip8nKVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ2pwdXNoTW9kdWxlLmluaXRKUHVzaFNlcnZpY2Ug5LiN5piv5Ye95pWw77yM5b2T5YmN5pa55rOVOicsIHR5cGVvZiBqcHVzaE1vZHVsZS5pbml0SlB1c2hTZXJ2aWNlKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHR5cGVvZiBqcHVzaE1vZHVsZS5zZXRMb2dnZXJFbmFibGUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRqcHVzaE1vZHVsZS5zZXRMb2dnZXJFbmFibGUodHJ1ZSlcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zb2xlLmxvZygn5p6B5YWJ5o6o6YCB5Yid5aeL5YyW5a6M5oiQ77yM6K6+572u55uR5ZCs5ZmoLi4uJylcblx0XHRcdFx0dGhpcy5zZXR1cEpQdXNoTGlzdGVuZXJzKClcblx0XHRcdFx0dGhpcy5nZXRSZWdpc3RyYXRpb25JRCgpXG5cdFx0XHRcdC8vICNlbmRpZlxuXHRcdFx0fSxcblxuXHRcdFx0c2V0dXBKUHVzaExpc3RlbmVycygpIHtcblx0XHRcdFx0dmFyIHRoYXQgPSB0aGlzXG5cdFx0XHRcdGlmICghdGhpcy5qcHVzaE1vZHVsZSkgcmV0dXJuXG5cblx0XHRcdFx0Ly8g55uR5ZCs6L+e5o6l54q25oCBXG5cdFx0XHRcdHRoaXMuanB1c2hNb2R1bGUuYWRkQ29ubmVjdEV2ZW50TGlzdGVuZXIoKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfmnoHlhYnov57mjqXnirbmgIE6JywgcmVzdWx0LmNvbm5lY3RFbmFibGUpXG5cdFx0XHRcdH0pXG5cblx0XHRcdFx0Ly8g55uR5ZCs6YCa55+lXG5cdFx0XHRcdHRoaXMuanB1c2hNb2R1bGUuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfmlLbliLDpgJrnn6U6JywgSlNPTi5zdHJpbmdpZnkocmVzdWx0KSlcblx0XHRcdFx0XHR0aGF0LnNwZWFrKHJlc3VsdC5jb250ZW50IHx8ICcnKVxuXHRcdFx0XHRcdGNvbnN0IG5vdGlmaWNhdGlvbkV2ZW50VHlwZSA9IHJlc3VsdC5ub3RpZmljYXRpb25FdmVudFR5cGVcblx0XHRcdFx0XHQvLyBub3RpZmljYXRpb25PcGVuZWQgPSDngrnlh7vpgJrnn6Vcblx0XHRcdFx0XHRpZiAobm90aWZpY2F0aW9uRXZlbnRUeXBlID09PSAnbm90aWZpY2F0aW9uT3BlbmVkJykge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ+mAmuefpeiiq+eCueWHuycsIHJlc3VsdC5leHRyYXMpXG5cdFx0XHRcdFx0XHRjb25zdCBleHRyYXMgPSByZXN1bHQuZXh0cmFzID8gcmVzdWx0LmV4dHJhcyA6IHt9XG5cdFx0XHRcdFx0XHRpZiAoZXh0cmFzLnR5cGUgPT09ICduZXdfb3JkZXInICYmIGV4dHJhcy5vcmRlcklkKSB7XG5cdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdFx0XHR1cmw6ICcvcGFnZXMvb3JkZXItZGV0YWlsL29yZGVyLWRldGFpbD9pZD0nICsgZXh0cmFzLm9yZGVySWRcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHVuaS5zd2l0Y2hUYWIoe1xuXHRcdFx0XHRcdFx0XHRcdHVybDogJy9wYWdlcy9pbmRleC9pbmRleCdcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRnZXRSZWdpc3RyYXRpb25JRCgpIHtcblx0XHRcdFx0aWYgKCF0aGlzLmpwdXNoTW9kdWxlKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0pQdXNo5qih5Z2X5pyq5Yid5aeL5YyW77yM5peg5rOV6I635Y+WUmVnaXN0cmF0aW9uSUQnKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnNvbGUubG9nKCflvIDlp4vojrflj5ZKUHVzaCBSZWdpc3RyYXRpb25JRC4uLicpXG5cdFx0XHRcdHRoaXMuanB1c2hNb2R1bGUuZ2V0UmVnaXN0cmF0aW9uSUQoKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdKUHVzaCBnZXRSZWdpc3RyYXRpb25JRCByZXN1bHQ6JywgSlNPTi5zdHJpbmdpZnkocmVzdWx0KSlcblx0XHRcdFx0XHRpZiAocmVzdWx0ICYmIHJlc3VsdC5yZWdpc3RlcklEKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnSlB1c2ggUmVnaXN0cmF0aW9uSUTojrflj5bmiJDlip86JywgcmVzdWx0LnJlZ2lzdGVySUQpXG5cdFx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ2pwdXNoX3JlZ2lzdHJhdGlvbl9pZCcsIHJlc3VsdC5yZWdpc3RlcklEKVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnSlB1c2ggUmVnaXN0cmF0aW9uSUTojrflj5blpLHotKXvvIzlsJ3or5Xph43mlrDojrflj5YnKVxuXHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZ2V0UmVnaXN0cmF0aW9uSUQoKVxuXHRcdFx0XHRcdFx0fSwgMjAwMClcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRiaW5kSlB1c2hBbGlhcygpIHtcblx0XHRcdFx0aWYgKCF0aGlzLnRva2VuKSByZXR1cm5cblx0XHRcdFx0aWYgKCF0aGlzLmpwdXNoTW9kdWxlKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0pQdXNo5pyq5Yid5aeL5YyW77yM5bu26L+f6K6+572u5Yir5ZCNJylcblx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuYmluZEpQdXNoQWxpYXMoKVxuXHRcdFx0XHRcdH0sIDEwMDApXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8g5LyY5YWI5LuOc3RvcmXojrflj5bvvIzlpoLmnpzkuLrnqbrliJnku47mnKzlnLDlrZjlgqjojrflj5Zcblx0XHRcdFx0bGV0IHRlbGVwaG9uZSA9IHRoaXMuJHN0b3JlLnN0YXRlLnVzZXJJbmZvPy50ZWxlcGhvbmUgfHwgJydcblx0XHRcdFx0aWYgKCF0ZWxlcGhvbmUpIHtcblx0XHRcdFx0XHR0ZWxlcGhvbmUgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3VzZXJJbmZvJyk/LnRlbGVwaG9uZSB8fCAnJ1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghdGVsZXBob25lKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ+eUqOaIt+aJi+acuuWPt+S4uuepuu+8jOW7tui/n+iOt+WPli4uLicpXG5cdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLmJpbmRKUHVzaEFsaWFzKClcblx0XHRcdFx0XHR9LCAyMDAwKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGFsaWFzID0gbWQ1KHRlbGVwaG9uZSlcblx0XHRcdFx0Y29uc29sZS5sb2coJ+iuvue9ruaegeWFieWIq+WQjTonLCBhbGlhcylcblx0XHRcdFx0dGhpcy5qcHVzaE1vZHVsZS5zZXRBbGlhcyh7XG5cdFx0XHRcdFx0YWxpYXM6IGFsaWFzLFxuXHRcdFx0XHRcdHNlcXVlbmNlOiBEYXRlLm5vdygpXG5cdFx0XHRcdH0sIChyZXN1bHQpID0+IHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygn6K6+572u5Yir5ZCN57uT5p6cOicsIEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpXG5cdFx0XHRcdFx0aWYgKHJlc3VsdCAmJiAocmVzdWx0LmNvZGUgPT09IDAgfHwgcmVzdWx0LmVyckNvZGUgPT09IDApKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn6K6+572u5p6B5YWJ5Yir5ZCN5oiQ5YqfJylcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ+iuvue9ruaegeWFieWIq+WQjeWksei0pScpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblxuXHRcdFx0ZGVsZXRlSlB1c2hBbGlhcygpIHtcblx0XHRcdFx0aWYgKCF0aGlzLmpwdXNoTW9kdWxlKSByZXR1cm5cblx0XHRcdFx0dGhpcy5qcHVzaE1vZHVsZS5kZWxldGVBbGlhcyh7XG5cdFx0XHRcdFx0c2VxdWVuY2U6IERhdGUubm93KClcblx0XHRcdFx0fSwgKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfliKDpmaTmnoHlhYnliKvlkI06JywgSlNPTi5zdHJpbmdpZnkocmVzdWx0KSlcblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cblx0XHRcdGNoZWNrQW5kU3RhcnRMb2NhdGlvblBvbGxpbmcoKSB7XG5cdFx0XHRcdGlmICghdGhpcy50b2tlbikgcmV0dXJuXG5cdFx0XHRcdHVuaS5nZXRMb2NhdGlvbih7XG5cdFx0XHRcdFx0dHlwZTogJ2djajAyJyxcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn6I635Y+W5a6a5L2N5p2D6ZmQ5oiQ5Yqf77yM5byA5aeL5a6a5pe25pu05paw5L2N572uJylcblx0XHRcdFx0XHRcdHRoaXMuc3RhcnRMb2NhdGlvblBvbGxpbmcoKVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ+iOt+WPluWumuS9jeadg+mZkOWksei0pTonLCBlcnIuZXJyTXNnKVxuXHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiAn6ZyA6KaB5a6a5L2N5p2D6ZmQ5omN6IO95pu05paw5L2N572uJyxcblx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cblx0XHRcdHN0YXJ0TG9jYXRpb25Qb2xsaW5nKCkge1xuXHRcdFx0XHR0aGlzLnN0b3BMb2NhdGlvblBvbGxpbmcoKVxuXHRcdFx0XHR0aGlzLnVwZGF0ZUxvY2F0aW9uKClcblx0XHRcdFx0dGhpcy5sb2NhdGlvblRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlTG9jYXRpb24oKVxuXHRcdFx0XHR9LCA2MDAwMClcblx0XHRcdH0sXG5cblx0XHRcdHN0b3BMb2NhdGlvblBvbGxpbmcoKSB7XG5cdFx0XHRcdGlmICh0aGlzLmxvY2F0aW9uVGltZXIpIHtcblx0XHRcdFx0XHRjbGVhckludGVydmFsKHRoaXMubG9jYXRpb25UaW1lcilcblx0XHRcdFx0XHR0aGlzLmxvY2F0aW9uVGltZXIgPSBudWxsXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdHVwZGF0ZUxvY2F0aW9uKCkge1xuXHRcdFx0XHRpZiAoIXRoaXMudG9rZW4pIHJldHVyblxuXHRcdFx0XHR2YXIgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdHVuaS5nZXRMb2NhdGlvbih7XG5cdFx0XHRcdFx0dHlwZTogJ2djajAyJyxcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn5a6a5pe25pu05paw5L2N572uOicsIHJlcy5sYXRpdHVkZSwgcmVzLmxvbmdpdHVkZSlcblx0XHRcdFx0XHRcdHRoYXQuJHUuYXBpLnVwZGF0ZUxvY2F0aW9uKHtcblx0XHRcdFx0XHRcdFx0bGF0aXR1ZGU6IHJlcy5sYXRpdHVkZSxcblx0XHRcdFx0XHRcdFx0bG9uZ2l0dWRlOiByZXMubG9uZ2l0dWRlXG5cdFx0XHRcdFx0XHR9KS50aGVuKHJlcyA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ+abtOaWsOS9jee9ruaIkOWKnycpXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ+abtOaWsOS9jee9ruWksei0pScpXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pLmNhdGNoKGVyciA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCfmm7TmlrDkvY3nva7or7fmsYLlpLHotKU6JywgZXJyKVxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCfojrflj5bkvY3nva7lpLHotKU6JywgZXJyLmVyck1zZylcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRjaGVja0FwcFVwZGF0ZSgpIHtcblx0XHRcdFx0cGx1cy5ydW50aW1lLmdldFByb3BlcnR5KHBsdXMucnVudGltZS5hcHBpZCwgKGluZikgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRWZXJzaW9uID0gaW5mLnZlcnNpb25Db2RlXG5cdFx0XHRcdFx0dGhpcy4kdS5hcGkuZ2V0QXBpVmVyc2lvbih7IHR5cGU6IDAgfSkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDAgJiYgcmVzLmRhdGEpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbGF0ZXN0VmVyc2lvbiA9IHJlcy5kYXRhLnZlcnNpb25OdW1cblx0XHRcdFx0XHRcdFx0aWYgKGxhdGVzdFZlcnNpb24gPiBjdXJyZW50VmVyc2lvbikge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YS5pc0ZvcmNlID09PSAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNob3dGb3JjZVVwZGF0ZURpYWxvZyhyZXMuZGF0YS5maWxlVXJsLCByZXMuZGF0YS52ZXJzaW9uTnVtKVxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNob3dPcHRpb25hbFVwZGF0ZURpYWxvZyhyZXMuZGF0YS5maWxlVXJsLCByZXMuZGF0YS52ZXJzaW9uTnVtKVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXG5cdFx0XHRzaG93Rm9yY2VVcGRhdGVEaWFsb2coZmlsZVVybCwgdmVyc2lvbikge1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogJ+eJiOacrOabtOaWsCcsXG5cdFx0XHRcdFx0Y29udGVudDogYOajgOa1i+WIsOaWsOeJiOacrCR7dmVyc2lvbn3vvIzor7fmm7TmlrDlkI7nu6fnu63kvb/nlKhgLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiAn56uL5Y2z5pu05pawJyxcblx0XHRcdFx0XHRzdWNjZXNzOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRwbHVzLnJ1bnRpbWUub3BlblVSTChmaWxlVXJsKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cblx0XHRcdHNob3dPcHRpb25hbFVwZGF0ZURpYWxvZyhmaWxlVXJsLCB2ZXJzaW9uKSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiAn54mI5pys5pu05pawJyxcblx0XHRcdFx0XHRjb250ZW50OiBg5qOA5rWL5Yiw5paw54mI5pysJHt2ZXJzaW9ufe+8jOaYr+WQpuabtOaWsO+8n2AsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6ICfmm7TmlrAnLFxuXHRcdFx0XHRcdGNhbmNlbFRleHQ6ICfnqI3lkI4nLFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMuY29uZmlybSkge1xuXHRcdFx0XHRcdFx0XHRwbHVzLnJ1bnRpbWUub3BlblVSTChmaWxlVXJsKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH1cblx0XHR9XG5cdH1cbjwvc2NyaXB0PlxuXG48c3R5bGU+XG5cdHBhZ2Uge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmNmY4ZmM7XG5cdH1cblx0dW5pLW1wLXNoYXJlIHtcblx0XHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG5cdH1cbjwvc3R5bGU+Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///177\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 _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\nvar _vuex = __webpack_require__(/*! vuex */ 12);\nvar _jsMd = _interopRequireDefault(__webpack_require__(/*! js-md5 */ 178));\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar _default = {\n data: function data() {\n return {\n locationTimer: null,\n jpushModule: null,\n tts: null\n };\n },\n computed: _objectSpread({}, (0, _vuex.mapState)(['userInfo', 'token'])),\n watch: {\n token: function token(newVal) {\n if (newVal) {\n this.checkAndStartLocationPolling();\n this.bindJPushAlias();\n } else {\n this.stopLocationPolling();\n this.deleteJPushAlias();\n }\n }\n },\n onLaunch: function onLaunch() {\n this.initTTS();\n this.initJPush();\n this.checkAndStartLocationPolling();\n this.checkAppUpdate();\n },\n onShow: function onShow() {\n __f__(\"log\", 'App Show', \" at App.vue:33\");\n // this.checkAndStartLocationPolling()\n },\n\n onHide: function onHide() {\n __f__(\"log\", 'App Hide', \" at App.vue:37\");\n // this.stopLocationPolling()\n },\n onUnload: function onUnload() {\n if (this.tts) {\n this.tts.stop();\n this.tts.shutdown();\n }\n this.stopLocationPolling();\n },\n methods: {\n initTTS: function initTTS() {\n var _this = this;\n if (uni.getSystemInfoSync().platform !== 'android') {\n __f__(\"log\", '仅支持安卓', \" at App.vue:50\");\n return;\n }\n try {\n // 导入安卓原生类\n var TextToSpeech = plus.android.importClass('android.speech.tts.TextToSpeech');\n var Locale = plus.android.importClass('java.util.Locale');\n\n // 创建TTS\n this.tts = new TextToSpeech(plus.android.runtimeMainActivity(), {\n onInit: function onInit(status) {\n if (status == 0) {\n // 设置中文\n _this.tts.setLanguage(Locale.CHINA);\n __f__(\"log\", '语音初始化成功', \" at App.vue:65\");\n }\n }\n });\n } catch (e) {\n __f__(\"log\", '初始化失败', e, \" at App.vue:70\");\n }\n },\n speak: function speak(text) {\n if (!this.tts) {\n uni.showToast({\n title: '语音未准备好',\n icon: 'none'\n });\n return;\n }\n try {\n // 安卓原生播报(QUEUE_FLUSH = 立即播报,打断上一条)\n this.tts.speak(text, 0, null);\n } catch (err) {\n __f__(\"log\", '播报失败', err, \" at App.vue:86\");\n }\n },\n initJPush: function initJPush() {\n __f__(\"log\", '开始初始化极光推送...', \" at App.vue:90\");\n var jpushModule = null;\n try {\n jpushModule = uni.requireNativePlugin('JG-JPush');\n } catch (e) {\n __f__(\"error\", '加载极光推送插件失败:', e, \" at App.vue:96\");\n return;\n }\n if (!jpushModule) {\n __f__(\"error\", '极光推送插件未找到', \" at App.vue:100\");\n return;\n }\n this.jpushModule = jpushModule;\n __f__(\"log\", '极光推送插件加载成功,模块:', (0, _typeof2.default)(jpushModule), \" at App.vue:104\");\n __f__(\"log\", '模块方法:', Object.keys(jpushModule), \" at App.vue:105\");\n if (typeof jpushModule.initJPushService === 'function') {\n jpushModule.initJPushService();\n __f__(\"log\", '极光推送initJPushService调用成功', \" at App.vue:109\");\n } else {\n __f__(\"error\", 'jpushModule.initJPushService 不是函数,当前方法:', (0, _typeof2.default)(jpushModule.initJPushService), \" at App.vue:111\");\n return;\n }\n if (typeof jpushModule.setLoggerEnable === 'function') {\n jpushModule.setLoggerEnable(true);\n }\n __f__(\"log\", '极光推送初始化完成,设置监听器...', \" at App.vue:118\");\n this.setupJPushListeners();\n this.getRegistrationID();\n },\n setupJPushListeners: function setupJPushListeners() {\n var that = this;\n if (!this.jpushModule) return;\n\n // 监听连接状态\n this.jpushModule.addConnectEventListener(function (result) {\n __f__(\"log\", '极光连接状态:', result.connectEnable, \" at App.vue:130\");\n });\n\n // 监听通知\n this.jpushModule.addNotificationListener(function (result) {\n __f__(\"log\", '收到通知:', JSON.stringify(result), \" at App.vue:135\");\n that.speak(result.content || '');\n var notificationEventType = result.notificationEventType;\n // notificationOpened = 点击通知\n if (notificationEventType === 'notificationOpened') {\n __f__(\"log\", '通知被点击', result.extras, \" at App.vue:140\");\n var extras = result.extras ? result.extras : {};\n if (extras.type === 'new_order' && extras.orderId) {\n uni.navigateTo({\n url: '/pages/order-detail/order-detail?id=' + extras.orderId\n });\n } else {\n uni.switchTab({\n url: '/pages/index/index'\n });\n }\n }\n });\n },\n getRegistrationID: function getRegistrationID() {\n var _this2 = this;\n if (!this.jpushModule) {\n __f__(\"log\", 'JPush模块未初始化,无法获取RegistrationID', \" at App.vue:157\");\n return;\n }\n __f__(\"log\", '开始获取JPush RegistrationID...', \" at App.vue:160\");\n this.jpushModule.getRegistrationID(function (result) {\n __f__(\"log\", 'JPush getRegistrationID result:', JSON.stringify(result), \" at App.vue:162\");\n if (result && result.registerID) {\n __f__(\"log\", 'JPush RegistrationID获取成功:', result.registerID, \" at App.vue:164\");\n uni.setStorageSync('jpush_registration_id', result.registerID);\n } else {\n __f__(\"log\", 'JPush RegistrationID获取失败,尝试重新获取', \" at App.vue:167\");\n setTimeout(function () {\n _this2.getRegistrationID();\n }, 2000);\n }\n });\n },\n bindJPushAlias: function bindJPushAlias() {\n var _this3 = this,\n _this$$store$state$us;\n if (!this.token) return;\n if (!this.jpushModule) {\n __f__(\"log\", 'JPush未初始化,延迟设置别名', \" at App.vue:178\");\n setTimeout(function () {\n _this3.bindJPushAlias();\n }, 1000);\n return;\n }\n // 优先从store获取,如果为空则从本地存储获取\n var telephone = ((_this$$store$state$us = this.$store.state.userInfo) === null || _this$$store$state$us === void 0 ? void 0 : _this$$store$state$us.telephone) || '';\n if (!telephone) {\n var _uni$getStorageSync;\n telephone = ((_uni$getStorageSync = uni.getStorageSync('userInfo')) === null || _uni$getStorageSync === void 0 ? void 0 : _uni$getStorageSync.telephone) || '';\n }\n if (!telephone) {\n __f__(\"log\", '用户手机号为空,延迟获取...', \" at App.vue:190\");\n setTimeout(function () {\n _this3.bindJPushAlias();\n }, 2000);\n return;\n }\n var alias = (0, _jsMd.default)(telephone);\n __f__(\"log\", '设置极光别名:', alias, \" at App.vue:197\");\n this.jpushModule.setAlias({\n alias: alias,\n sequence: Date.now()\n }, function (result) {\n __f__(\"log\", '设置别名结果:', JSON.stringify(result), \" at App.vue:202\");\n if (result && (result.code === 0 || result.errCode === 0)) {\n __f__(\"log\", '设置极光别名成功', \" at App.vue:204\");\n } else {\n __f__(\"log\", '设置极光别名失败', \" at App.vue:206\");\n }\n });\n },\n deleteJPushAlias: function deleteJPushAlias() {\n if (!this.jpushModule) return;\n this.jpushModule.deleteAlias({\n sequence: Date.now()\n }, function (result) {\n __f__(\"log\", '删除极光别名:', JSON.stringify(result), \" at App.vue:216\");\n });\n },\n checkAndStartLocationPolling: function checkAndStartLocationPolling() {\n var _this4 = this;\n if (!this.token) return;\n uni.getLocation({\n type: 'gcj02',\n success: function success(res) {\n __f__(\"log\", '获取定位权限成功,开始定时更新位置', \" at App.vue:225\");\n _this4.startLocationPolling();\n },\n fail: function fail(err) {\n __f__(\"log\", '获取定位权限失败:', err.errMsg, \" at App.vue:229\");\n uni.showToast({\n title: '需要定位权限才能更新位置',\n icon: 'none'\n });\n }\n });\n },\n startLocationPolling: function startLocationPolling() {\n var _this5 = this;\n this.stopLocationPolling();\n this.updateLocation();\n this.locationTimer = setInterval(function () {\n _this5.updateLocation();\n }, 60000);\n },\n stopLocationPolling: function stopLocationPolling() {\n if (this.locationTimer) {\n clearInterval(this.locationTimer);\n this.locationTimer = null;\n }\n },\n updateLocation: function updateLocation() {\n if (!this.token) return;\n var that = this;\n uni.getLocation({\n type: 'gcj02',\n success: function success(res) {\n __f__(\"log\", '定时更新位置:', res.latitude, res.longitude, \" at App.vue:259\");\n that.$u.api.updateLocation({\n latitude: res.latitude,\n longitude: res.longitude\n }).then(function (res) {\n if (res.code === 200) {\n __f__(\"log\", '更新位置成功', \" at App.vue:265\");\n } else {\n __f__(\"log\", '更新位置失败', \" at App.vue:267\");\n }\n }).catch(function (err) {\n __f__(\"log\", '更新位置请求失败:', err, \" at App.vue:270\");\n });\n },\n fail: function fail(err) {\n __f__(\"log\", '获取位置失败:', err.errMsg, \" at App.vue:274\");\n }\n });\n },\n checkAppUpdate: function checkAppUpdate() {\n var _this6 = this;\n plus.runtime.getProperty(plus.runtime.appid, function (inf) {\n var currentVersion = inf.versionCode;\n _this6.$u.api.getApiVersion({\n type: 0\n }).then(function (res) {\n if (res.code === 200 && res.data) {\n var latestVersion = res.data.versionNum;\n if (latestVersion > currentVersion) {\n if (res.data.isForce === 1) {\n _this6.showForceUpdateDialog(res.data.fileUrl, res.data.versionNum);\n } else {\n _this6.showOptionalUpdateDialog(res.data.fileUrl, res.data.versionNum);\n }\n }\n }\n });\n });\n },\n showForceUpdateDialog: function showForceUpdateDialog(fileUrl, version) {\n uni.showModal({\n title: '版本更新',\n content: \"\\u68C0\\u6D4B\\u5230\\u65B0\\u7248\\u672C\".concat(version, \"\\uFF0C\\u8BF7\\u66F4\\u65B0\\u540E\\u7EE7\\u7EED\\u4F7F\\u7528\"),\n showCancel: false,\n confirmText: '立即更新',\n success: function success() {\n plus.runtime.openURL(fileUrl);\n }\n });\n },\n showOptionalUpdateDialog: function showOptionalUpdateDialog(fileUrl, version) {\n uni.showModal({\n title: '版本更新',\n content: \"\\u68C0\\u6D4B\\u5230\\u65B0\\u7248\\u672C\".concat(version, \"\\uFF0C\\u662F\\u5426\\u66F4\\u65B0\\uFF1F\"),\n confirmText: '更新',\n cancelText: '稍后',\n success: function success(res) {\n if (res.confirm) {\n plus.runtime.openURL(fileUrl);\n }\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 */ 92)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vQXBwLnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwibG9jYXRpb25UaW1lciIsImpwdXNoTW9kdWxlIiwidHRzIiwiY29tcHV0ZWQiLCJtYXBTdGF0ZSIsIndhdGNoIiwidG9rZW4iLCJuZXdWYWwiLCJjaGVja0FuZFN0YXJ0TG9jYXRpb25Qb2xsaW5nIiwiYmluZEpQdXNoQWxpYXMiLCJzdG9wTG9jYXRpb25Qb2xsaW5nIiwiZGVsZXRlSlB1c2hBbGlhcyIsIm9uTGF1bmNoIiwiaW5pdFRUUyIsImluaXRKUHVzaCIsImNoZWNrQXBwVXBkYXRlIiwib25TaG93Iiwib25IaWRlIiwib25VbmxvYWQiLCJzdG9wIiwic2h1dGRvd24iLCJtZXRob2RzIiwidW5pIiwiZ2V0U3lzdGVtSW5mb1N5bmMiLCJwbGF0Zm9ybSIsIlRleHRUb1NwZWVjaCIsInBsdXMiLCJhbmRyb2lkIiwiaW1wb3J0Q2xhc3MiLCJMb2NhbGUiLCJydW50aW1lTWFpbkFjdGl2aXR5Iiwib25Jbml0Iiwic3RhdHVzIiwic2V0TGFuZ3VhZ2UiLCJDSElOQSIsImUiLCJzcGVhayIsInRleHQiLCJzaG93VG9hc3QiLCJ0aXRsZSIsImljb24iLCJlcnIiLCJyZXF1aXJlTmF0aXZlUGx1Z2luIiwiT2JqZWN0Iiwia2V5cyIsImluaXRKUHVzaFNlcnZpY2UiLCJzZXRMb2dnZXJFbmFibGUiLCJzZXR1cEpQdXNoTGlzdGVuZXJzIiwiZ2V0UmVnaXN0cmF0aW9uSUQiLCJ0aGF0IiwiYWRkQ29ubmVjdEV2ZW50TGlzdGVuZXIiLCJyZXN1bHQiLCJjb25uZWN0RW5hYmxlIiwiYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIiLCJKU09OIiwic3RyaW5naWZ5IiwiY29udGVudCIsIm5vdGlmaWNhdGlvbkV2ZW50VHlwZSIsImV4dHJhcyIsInR5cGUiLCJvcmRlcklkIiwibmF2aWdhdGVUbyIsInVybCIsInN3aXRjaFRhYiIsInJlZ2lzdGVySUQiLCJzZXRTdG9yYWdlU3luYyIsInNldFRpbWVvdXQiLCJ0ZWxlcGhvbmUiLCIkc3RvcmUiLCJzdGF0ZSIsInVzZXJJbmZvIiwiZ2V0U3RvcmFnZVN5bmMiLCJhbGlhcyIsIm1kNSIsInNldEFsaWFzIiwic2VxdWVuY2UiLCJEYXRlIiwibm93IiwiY29kZSIsImVyckNvZGUiLCJkZWxldGVBbGlhcyIsImdldExvY2F0aW9uIiwic3VjY2VzcyIsInJlcyIsInN0YXJ0TG9jYXRpb25Qb2xsaW5nIiwiZmFpbCIsImVyck1zZyIsInVwZGF0ZUxvY2F0aW9uIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCIkdSIsImFwaSIsInRoZW4iLCJjYXRjaCIsInJ1bnRpbWUiLCJnZXRQcm9wZXJ0eSIsImFwcGlkIiwiaW5mIiwiY3VycmVudFZlcnNpb24iLCJ2ZXJzaW9uQ29kZSIsImdldEFwaVZlcnNpb24iLCJsYXRlc3RWZXJzaW9uIiwidmVyc2lvbk51bSIsImlzRm9yY2UiLCJzaG93Rm9yY2VVcGRhdGVEaWFsb2ciLCJmaWxlVXJsIiwic2hvd09wdGlvbmFsVXBkYXRlRGlhbG9nIiwidmVyc2lvbiIsInNob3dNb2RhbCIsInNob3dDYW5jZWwiLCJjb25maXJtVGV4dCIsIm9wZW5VUkwiLCJjYW5jZWxUZXh0IiwiY29uZmlybSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQUF5QjtBQUFBO0FBQUEsZUFDVjtFQUNkQSxJQUFJLGtCQUFHO0lBQ04sT0FBTztNQUNOQyxhQUFhLEVBQUUsSUFBSTtNQUNuQkMsV0FBVyxFQUFFLElBQUk7TUFDakJDLEdBQUcsRUFBRTtJQUNOLENBQUM7RUFDRixDQUFDO0VBQ0RDLFFBQVEsb0JBQ0osSUFBQUMsY0FBUSxFQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQ2xDO0VBQ0RDLEtBQUssRUFBRTtJQUNOQyxLQUFLLGlCQUFDQyxNQUFNLEVBQUU7TUFDYixJQUFJQSxNQUFNLEVBQUU7UUFDWCxJQUFJLENBQUNDLDRCQUE0QixFQUFFO1FBQ25DLElBQUksQ0FBQ0MsY0FBYyxFQUFFO01BQ3RCLENBQUMsTUFBTTtRQUNOLElBQUksQ0FBQ0MsbUJBQW1CLEVBQUU7UUFDMUIsSUFBSSxDQUFDQyxnQkFBZ0IsRUFBRTtNQUN4QjtJQUNEO0VBQ0QsQ0FBQztFQUNEQyxRQUFRLEVBQUUsb0JBQVc7SUFDcEIsSUFBSSxDQUFDQyxPQUFPLEVBQUU7SUFDZCxJQUFJLENBQUNDLFNBQVMsRUFBRTtJQUNoQixJQUFJLENBQUNOLDRCQUE0QixFQUFFO0lBQ25DLElBQUksQ0FBQ08sY0FBYyxFQUFFO0VBQ3RCLENBQUM7RUFDREMsTUFBTSxFQUFFLGtCQUFXO0lBQ2xCLGFBQVksVUFBVTtJQUN0QjtFQUNELENBQUM7O0VBQ0RDLE1BQU0sRUFBRSxrQkFBVztJQUNsQixhQUFZLFVBQVU7SUFDdEI7RUFDRCxDQUFDO0VBQ0RDLFFBQVEsc0JBQUc7SUFDVixJQUFJLElBQUksQ0FBQ2hCLEdBQUcsRUFBRTtNQUNiLElBQUksQ0FBQ0EsR0FBRyxDQUFDaUIsSUFBSSxFQUFFO01BQ2YsSUFBSSxDQUFDakIsR0FBRyxDQUFDa0IsUUFBUSxFQUFFO0lBQ3BCO0lBQ0EsSUFBSSxDQUFDVixtQkFBbUIsRUFBRTtFQUMzQixDQUFDO0VBQ0RXLE9BQU8sRUFBRTtJQUNSUixPQUFPLHFCQUFHO01BQUE7TUFDVCxJQUFJUyxHQUFHLENBQUNDLGlCQUFpQixFQUFFLENBQUNDLFFBQVEsS0FBSyxTQUFTLEVBQUU7UUFDbkQsYUFBWSxPQUFPO1FBQ25CO01BQ0Q7TUFFQSxJQUFJO1FBQ0g7UUFDQSxJQUFNQyxZQUFZLEdBQUdDLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxXQUFXLENBQUMsaUNBQWlDLENBQUM7UUFDaEYsSUFBTUMsTUFBTSxHQUFHSCxJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsV0FBVyxDQUFDLGtCQUFrQixDQUFDOztRQUUzRDtRQUNBLElBQUksQ0FBQzFCLEdBQUcsR0FBRyxJQUFJdUIsWUFBWSxDQUFDQyxJQUFJLENBQUNDLE9BQU8sQ0FBQ0csbUJBQW1CLEVBQUUsRUFBRTtVQUMvREMsTUFBTSxFQUFFLGdCQUFDQyxNQUFNLEVBQUs7WUFDbkIsSUFBSUEsTUFBTSxJQUFJLENBQUMsRUFBRTtjQUNoQjtjQUNBLEtBQUksQ0FBQzlCLEdBQUcsQ0FBQytCLFdBQVcsQ0FBQ0osTUFBTSxDQUFDSyxLQUFLLENBQUM7Y0FDbEMsYUFBWSxTQUFTO1lBQ3RCO1VBQ0Q7UUFDRCxDQUFDLENBQUM7TUFDSCxDQUFDLENBQUMsT0FBT0MsQ0FBQyxFQUFFO1FBQ1gsYUFBWSxPQUFPLEVBQUVBLENBQUM7TUFDdkI7SUFDRCxDQUFDO0lBQ0RDLEtBQUssaUJBQUNDLElBQUksRUFBRTtNQUNYLElBQUksQ0FBQyxJQUFJLENBQUNuQyxHQUFHLEVBQUU7UUFDZG9CLEdBQUcsQ0FBQ2dCLFNBQVMsQ0FBQztVQUNiQyxLQUFLLEVBQUUsUUFBUTtVQUNmQyxJQUFJLEVBQUU7UUFDUCxDQUFDLENBQUM7UUFDRjtNQUNEO01BRUEsSUFBSTtRQUNIO1FBQ0EsSUFBSSxDQUFDdEMsR0FBRyxDQUFDa0MsS0FBSyxDQUFDQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQztNQUM5QixDQUFDLENBQUMsT0FBT0ksR0FBRyxFQUFFO1FBQ2IsYUFBWSxNQUFNLEVBQUVBLEdBQUc7TUFDeEI7SUFDRCxDQUFDO0lBQ0QzQixTQUFTLHVCQUFHO01BQ1gsYUFBWSxjQUFjO01BRTFCLElBQUliLFdBQVcsR0FBRyxJQUFJO01BQ3RCLElBQUk7UUFDSEEsV0FBVyxHQUFHcUIsR0FBRyxDQUFDb0IsbUJBQW1CLENBQUMsVUFBVSxDQUFDO01BQ2xELENBQUMsQ0FBQyxPQUFPUCxDQUFDLEVBQUU7UUFDWCxlQUFjLGFBQWEsRUFBRUEsQ0FBQztRQUM5QjtNQUNEO01BQ0EsSUFBSSxDQUFDbEMsV0FBVyxFQUFFO1FBQ2pCLGVBQWMsV0FBVztRQUN6QjtNQUNEO01BQ0EsSUFBSSxDQUFDQSxXQUFXLEdBQUdBLFdBQVc7TUFDOUIsYUFBWSxnQkFBZ0Isd0JBQVNBLFdBQVc7TUFDaEQsYUFBWSxPQUFPLEVBQUUwQyxNQUFNLENBQUNDLElBQUksQ0FBQzNDLFdBQVcsQ0FBQztNQUU3QyxJQUFJLE9BQU9BLFdBQVcsQ0FBQzRDLGdCQUFnQixLQUFLLFVBQVUsRUFBRTtRQUN2RDVDLFdBQVcsQ0FBQzRDLGdCQUFnQixFQUFFO1FBQzlCLGFBQVksMEJBQTBCO01BQ3ZDLENBQUMsTUFBTTtRQUNOLGVBQWMseUNBQXlDLHdCQUFTNUMsV0FBVyxDQUFDNEMsZ0JBQWdCO1FBQzVGO01BQ0Q7TUFFQSxJQUFJLE9BQU81QyxXQUFXLENBQUM2QyxlQUFlLEtBQUssVUFBVSxFQUFFO1FBQ3REN0MsV0FBVyxDQUFDNkMsZUFBZSxDQUFDLElBQUksQ0FBQztNQUNsQztNQUNBLGFBQVksb0JBQW9CO01BQ2hDLElBQUksQ0FBQ0MsbUJBQW1CLEVBQUU7TUFDMUIsSUFBSSxDQUFDQyxpQkFBaUIsRUFBRTtJQUV6QixDQUFDO0lBRURELG1CQUFtQixpQ0FBRztNQUNyQixJQUFJRSxJQUFJLEdBQUcsSUFBSTtNQUNmLElBQUksQ0FBQyxJQUFJLENBQUNoRCxXQUFXLEVBQUU7O01BRXZCO01BQ0EsSUFBSSxDQUFDQSxXQUFXLENBQUNpRCx1QkFBdUIsQ0FBQyxVQUFDQyxNQUFNLEVBQUs7UUFDcEQsYUFBWSxTQUFTLEVBQUVBLE1BQU0sQ0FBQ0MsYUFBYTtNQUM1QyxDQUFDLENBQUM7O01BRUY7TUFDQSxJQUFJLENBQUNuRCxXQUFXLENBQUNvRCx1QkFBdUIsQ0FBQyxVQUFDRixNQUFNLEVBQUs7UUFDcEQsYUFBWSxPQUFPLEVBQUVHLElBQUksQ0FBQ0MsU0FBUyxDQUFDSixNQUFNLENBQUM7UUFDM0NGLElBQUksQ0FBQ2IsS0FBSyxDQUFDZSxNQUFNLENBQUNLLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBTUMscUJBQXFCLEdBQUdOLE1BQU0sQ0FBQ00scUJBQXFCO1FBQzFEO1FBQ0EsSUFBSUEscUJBQXFCLEtBQUssb0JBQW9CLEVBQUU7VUFDbkQsYUFBWSxPQUFPLEVBQUVOLE1BQU0sQ0FBQ08sTUFBTTtVQUNsQyxJQUFNQSxNQUFNLEdBQUdQLE1BQU0sQ0FBQ08sTUFBTSxHQUFHUCxNQUFNLENBQUNPLE1BQU0sR0FBRyxDQUFDLENBQUM7VUFDakQsSUFBSUEsTUFBTSxDQUFDQyxJQUFJLEtBQUssV0FBVyxJQUFJRCxNQUFNLENBQUNFLE9BQU8sRUFBRTtZQUNsRHRDLEdBQUcsQ0FBQ3VDLFVBQVUsQ0FBQztjQUNkQyxHQUFHLEVBQUUsc0NBQXNDLEdBQUdKLE1BQU0sQ0FBQ0U7WUFDdEQsQ0FBQyxDQUFDO1VBQ0gsQ0FBQyxNQUFNO1lBQ050QyxHQUFHLENBQUN5QyxTQUFTLENBQUM7Y0FDYkQsR0FBRyxFQUFFO1lBQ04sQ0FBQyxDQUFDO1VBQ0g7UUFDRDtNQUNELENBQUMsQ0FBQztJQUNILENBQUM7SUFFRGQsaUJBQWlCLCtCQUFHO01BQUE7TUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQy9DLFdBQVcsRUFBRTtRQUN0QixhQUFZLGdDQUFnQztRQUM1QztNQUNEO01BQ0EsYUFBWSw2QkFBNkI7TUFDekMsSUFBSSxDQUFDQSxXQUFXLENBQUMrQyxpQkFBaUIsQ0FBQyxVQUFDRyxNQUFNLEVBQUs7UUFDOUMsYUFBWSxpQ0FBaUMsRUFBRUcsSUFBSSxDQUFDQyxTQUFTLENBQUNKLE1BQU0sQ0FBQztRQUNyRSxJQUFJQSxNQUFNLElBQUlBLE1BQU0sQ0FBQ2EsVUFBVSxFQUFFO1VBQ2hDLGFBQVksMkJBQTJCLEVBQUViLE1BQU0sQ0FBQ2EsVUFBVTtVQUMxRDFDLEdBQUcsQ0FBQzJDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRWQsTUFBTSxDQUFDYSxVQUFVLENBQUM7UUFDL0QsQ0FBQyxNQUFNO1VBQ04sYUFBWSxpQ0FBaUM7VUFDN0NFLFVBQVUsQ0FBQyxZQUFNO1lBQ2hCLE1BQUksQ0FBQ2xCLGlCQUFpQixFQUFFO1VBQ3pCLENBQUMsRUFBRSxJQUFJLENBQUM7UUFDVDtNQUNELENBQUMsQ0FBQztJQUNILENBQUM7SUFFRHZDLGNBQWMsNEJBQUc7TUFBQTtRQUFBO01BQ2hCLElBQUksQ0FBQyxJQUFJLENBQUNILEtBQUssRUFBRTtNQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDTCxXQUFXLEVBQUU7UUFDdEIsYUFBWSxrQkFBa0I7UUFDOUJpRSxVQUFVLENBQUMsWUFBTTtVQUNoQixNQUFJLENBQUN6RCxjQUFjLEVBQUU7UUFDdEIsQ0FBQyxFQUFFLElBQUksQ0FBQztRQUNSO01BQ0Q7TUFDQTtNQUNBLElBQUkwRCxTQUFTLEdBQUcsOEJBQUksQ0FBQ0MsTUFBTSxDQUFDQyxLQUFLLENBQUNDLFFBQVEsMERBQTFCLHNCQUE0QkgsU0FBUyxLQUFJLEVBQUU7TUFDM0QsSUFBSSxDQUFDQSxTQUFTLEVBQUU7UUFBQTtRQUNmQSxTQUFTLEdBQUcsd0JBQUE3QyxHQUFHLENBQUNpRCxjQUFjLENBQUMsVUFBVSxDQUFDLHdEQUE5QixvQkFBZ0NKLFNBQVMsS0FBSSxFQUFFO01BQzVEO01BQ0EsSUFBSSxDQUFDQSxTQUFTLEVBQUU7UUFDZixhQUFZLGlCQUFpQjtRQUM3QkQsVUFBVSxDQUFDLFlBQU07VUFDaEIsTUFBSSxDQUFDekQsY0FBYyxFQUFFO1FBQ3RCLENBQUMsRUFBRSxJQUFJLENBQUM7UUFDUjtNQUNEO01BQ0EsSUFBTStELEtBQUssR0FBRyxJQUFBQyxhQUFHLEVBQUNOLFNBQVMsQ0FBQztNQUM1QixhQUFZLFNBQVMsRUFBRUssS0FBSztNQUM1QixJQUFJLENBQUN2RSxXQUFXLENBQUN5RSxRQUFRLENBQUM7UUFDekJGLEtBQUssRUFBRUEsS0FBSztRQUNaRyxRQUFRLEVBQUVDLElBQUksQ0FBQ0MsR0FBRztNQUNuQixDQUFDLEVBQUUsVUFBQzFCLE1BQU0sRUFBSztRQUNkLGFBQVksU0FBUyxFQUFFRyxJQUFJLENBQUNDLFNBQVMsQ0FBQ0osTUFBTSxDQUFDO1FBQzdDLElBQUlBLE1BQU0sS0FBS0EsTUFBTSxDQUFDMkIsSUFBSSxLQUFLLENBQUMsSUFBSTNCLE1BQU0sQ0FBQzRCLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRTtVQUMxRCxhQUFZLFVBQVU7UUFDdkIsQ0FBQyxNQUFNO1VBQ04sYUFBWSxVQUFVO1FBQ3ZCO01BQ0QsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQUVEcEUsZ0JBQWdCLDhCQUFHO01BQ2xCLElBQUksQ0FBQyxJQUFJLENBQUNWLFdBQVcsRUFBRTtNQUN2QixJQUFJLENBQUNBLFdBQVcsQ0FBQytFLFdBQVcsQ0FBQztRQUM1QkwsUUFBUSxFQUFFQyxJQUFJLENBQUNDLEdBQUc7TUFDbkIsQ0FBQyxFQUFFLFVBQUMxQixNQUFNLEVBQUs7UUFDZCxhQUFZLFNBQVMsRUFBRUcsSUFBSSxDQUFDQyxTQUFTLENBQUNKLE1BQU0sQ0FBQztNQUM5QyxDQUFDLENBQUM7SUFDSCxDQUFDO0lBRUQzQyw0QkFBNEIsMENBQUc7TUFBQTtNQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDRixLQUFLLEVBQUU7TUFDakJnQixHQUFHLENBQUMyRCxXQUFXLENBQUM7UUFDZnRCLElBQUksRUFBRSxPQUFPO1FBQ2J1QixPQUFPLEVBQUUsaUJBQUNDLEdBQUcsRUFBSztVQUNqQixhQUFZLG1CQUFtQjtVQUMvQixNQUFJLENBQUNDLG9CQUFvQixFQUFFO1FBQzVCLENBQUM7UUFDREMsSUFBSSxFQUFFLGNBQUM1QyxHQUFHLEVBQUs7VUFDZCxhQUFZLFdBQVcsRUFBRUEsR0FBRyxDQUFDNkMsTUFBTTtVQUNuQ2hFLEdBQUcsQ0FBQ2dCLFNBQVMsQ0FBQztZQUNiQyxLQUFLLEVBQUUsY0FBYztZQUNyQkMsSUFBSSxFQUFFO1VBQ1AsQ0FBQyxDQUFDO1FBQ0g7TUFDRCxDQUFDLENBQUM7SUFDSCxDQUFDO0lBRUQ0QyxvQkFBb0Isa0NBQUc7TUFBQTtNQUN0QixJQUFJLENBQUMxRSxtQkFBbUIsRUFBRTtNQUMxQixJQUFJLENBQUM2RSxjQUFjLEVBQUU7TUFDckIsSUFBSSxDQUFDdkYsYUFBYSxHQUFHd0YsV0FBVyxDQUFDLFlBQU07UUFDdEMsTUFBSSxDQUFDRCxjQUFjLEVBQUU7TUFDdEIsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNWLENBQUM7SUFFRDdFLG1CQUFtQixpQ0FBRztNQUNyQixJQUFJLElBQUksQ0FBQ1YsYUFBYSxFQUFFO1FBQ3ZCeUYsYUFBYSxDQUFDLElBQUksQ0FBQ3pGLGFBQWEsQ0FBQztRQUNqQyxJQUFJLENBQUNBLGFBQWEsR0FBRyxJQUFJO01BQzFCO0lBQ0QsQ0FBQztJQUVEdUYsY0FBYyw0QkFBRztNQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDakYsS0FBSyxFQUFFO01BQ2pCLElBQUkyQyxJQUFJLEdBQUcsSUFBSTtNQUNmM0IsR0FBRyxDQUFDMkQsV0FBVyxDQUFDO1FBQ2Z0QixJQUFJLEVBQUUsT0FBTztRQUNidUIsT0FBTyxFQUFFLGlCQUFDQyxHQUFHLEVBQUs7VUFDakIsYUFBWSxTQUFTLEVBQUVBLEdBQUcsQ0FBQ08sUUFBUSxFQUFFUCxHQUFHLENBQUNRLFNBQVM7VUFDbEQxQyxJQUFJLENBQUMyQyxFQUFFLENBQUNDLEdBQUcsQ0FBQ04sY0FBYyxDQUFDO1lBQzFCRyxRQUFRLEVBQUVQLEdBQUcsQ0FBQ08sUUFBUTtZQUN0QkMsU0FBUyxFQUFFUixHQUFHLENBQUNRO1VBQ2hCLENBQUMsQ0FBQyxDQUFDRyxJQUFJLENBQUMsVUFBQVgsR0FBRyxFQUFJO1lBQ2QsSUFBSUEsR0FBRyxDQUFDTCxJQUFJLEtBQUssR0FBRyxFQUFFO2NBQ3JCLGFBQVksUUFBUTtZQUNyQixDQUFDLE1BQU07Y0FDTixhQUFZLFFBQVE7WUFDckI7VUFDRCxDQUFDLENBQUMsQ0FBQ2lCLEtBQUssQ0FBQyxVQUFBdEQsR0FBRyxFQUFJO1lBQ2YsYUFBWSxXQUFXLEVBQUVBLEdBQUc7VUFDN0IsQ0FBQyxDQUFDO1FBQ0gsQ0FBQztRQUNENEMsSUFBSSxFQUFFLGNBQUM1QyxHQUFHLEVBQUs7VUFDZCxhQUFZLFNBQVMsRUFBRUEsR0FBRyxDQUFDNkMsTUFBTTtRQUNsQztNQUNELENBQUMsQ0FBQztJQUNILENBQUM7SUFFRHZFLGNBQWMsNEJBQUc7TUFBQTtNQUNoQlcsSUFBSSxDQUFDc0UsT0FBTyxDQUFDQyxXQUFXLENBQUN2RSxJQUFJLENBQUNzRSxPQUFPLENBQUNFLEtBQUssRUFBRSxVQUFDQyxHQUFHLEVBQUs7UUFDckQsSUFBTUMsY0FBYyxHQUFHRCxHQUFHLENBQUNFLFdBQVc7UUFDdEMsTUFBSSxDQUFDVCxFQUFFLENBQUNDLEdBQUcsQ0FBQ1MsYUFBYSxDQUFDO1VBQUUzQyxJQUFJLEVBQUU7UUFBRSxDQUFDLENBQUMsQ0FBQ21DLElBQUksQ0FBQyxVQUFBWCxHQUFHLEVBQUk7VUFDbEQsSUFBSUEsR0FBRyxDQUFDTCxJQUFJLEtBQUssR0FBRyxJQUFJSyxHQUFHLENBQUNwRixJQUFJLEVBQUU7WUFDakMsSUFBTXdHLGFBQWEsR0FBR3BCLEdBQUcsQ0FBQ3BGLElBQUksQ0FBQ3lHLFVBQVU7WUFDekMsSUFBSUQsYUFBYSxHQUFHSCxjQUFjLEVBQUU7Y0FDbkMsSUFBSWpCLEdBQUcsQ0FBQ3BGLElBQUksQ0FBQzBHLE9BQU8sS0FBSyxDQUFDLEVBQUU7Z0JBQzNCLE1BQUksQ0FBQ0MscUJBQXFCLENBQUN2QixHQUFHLENBQUNwRixJQUFJLENBQUM0RyxPQUFPLEVBQUV4QixHQUFHLENBQUNwRixJQUFJLENBQUN5RyxVQUFVLENBQUM7Y0FDbEUsQ0FBQyxNQUFNO2dCQUNOLE1BQUksQ0FBQ0ksd0JBQXdCLENBQUN6QixHQUFHLENBQUNwRixJQUFJLENBQUM0RyxPQUFPLEVBQUV4QixHQUFHLENBQUNwRixJQUFJLENBQUN5RyxVQUFVLENBQUM7Y0FDckU7WUFDRDtVQUNEO1FBQ0QsQ0FBQyxDQUFDO01BQ0gsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQUVERSxxQkFBcUIsaUNBQUNDLE9BQU8sRUFBRUUsT0FBTyxFQUFFO01BQ3ZDdkYsR0FBRyxDQUFDd0YsU0FBUyxDQUFDO1FBQ2J2RSxLQUFLLEVBQUUsTUFBTTtRQUNiaUIsT0FBTyxnREFBV3FELE9BQU8sMkRBQVc7UUFDcENFLFVBQVUsRUFBRSxLQUFLO1FBQ2pCQyxXQUFXLEVBQUUsTUFBTTtRQUNuQjlCLE9BQU8sRUFBRSxtQkFBTTtVQUNkeEQsSUFBSSxDQUFDc0UsT0FBTyxDQUFDaUIsT0FBTyxDQUFDTixPQUFPLENBQUM7UUFDOUI7TUFDRCxDQUFDLENBQUM7SUFDSCxDQUFDO0lBRURDLHdCQUF3QixvQ0FBQ0QsT0FBTyxFQUFFRSxPQUFPLEVBQUU7TUFDMUN2RixHQUFHLENBQUN3RixTQUFTLENBQUM7UUFDYnZFLEtBQUssRUFBRSxNQUFNO1FBQ2JpQixPQUFPLGdEQUFXcUQsT0FBTyx5Q0FBUTtRQUNqQ0csV0FBVyxFQUFFLElBQUk7UUFDakJFLFVBQVUsRUFBRSxJQUFJO1FBQ2hCaEMsT0FBTyxFQUFFLGlCQUFDQyxHQUFHLEVBQUs7VUFDakIsSUFBSUEsR0FBRyxDQUFDZ0MsT0FBTyxFQUFFO1lBQ2hCekYsSUFBSSxDQUFDc0UsT0FBTyxDQUFDaUIsT0FBTyxDQUFDTixPQUFPLENBQUM7VUFDOUI7UUFDRDtNQUNELENBQUMsQ0FBQztJQUNIO0VBQ0Q7QUFDRCxDQUFDO0FBQUEsMkIiLCJmaWxlIjoiMTc3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnXG5pbXBvcnQgbWQ1IGZyb20gJ2pzLW1kNSc7XG5leHBvcnQgZGVmYXVsdCB7XG5cdGRhdGEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGxvY2F0aW9uVGltZXI6IG51bGwsXG5cdFx0XHRqcHVzaE1vZHVsZTogbnVsbCxcblx0XHRcdHR0czogbnVsbFxuXHRcdH1cblx0fSxcblx0Y29tcHV0ZWQ6IHtcblx0XHQuLi5tYXBTdGF0ZShbJ3VzZXJJbmZvJywgJ3Rva2VuJ10pXG5cdH0sXG5cdHdhdGNoOiB7XG5cdFx0dG9rZW4obmV3VmFsKSB7XG5cdFx0XHRpZiAobmV3VmFsKSB7XG5cdFx0XHRcdHRoaXMuY2hlY2tBbmRTdGFydExvY2F0aW9uUG9sbGluZygpXG5cdFx0XHRcdHRoaXMuYmluZEpQdXNoQWxpYXMoKVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5zdG9wTG9jYXRpb25Qb2xsaW5nKClcblx0XHRcdFx0dGhpcy5kZWxldGVKUHVzaEFsaWFzKClcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdG9uTGF1bmNoOiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLmluaXRUVFMoKVxuXHRcdHRoaXMuaW5pdEpQdXNoKClcblx0XHR0aGlzLmNoZWNrQW5kU3RhcnRMb2NhdGlvblBvbGxpbmcoKVxuXHRcdHRoaXMuY2hlY2tBcHBVcGRhdGUoKVxuXHR9LFxuXHRvblNob3c6IGZ1bmN0aW9uKCkge1xuXHRcdGNvbnNvbGUubG9nKCdBcHAgU2hvdycpXG5cdFx0Ly8gdGhpcy5jaGVja0FuZFN0YXJ0TG9jYXRpb25Qb2xsaW5nKClcblx0fSxcblx0b25IaWRlOiBmdW5jdGlvbigpIHtcblx0XHRjb25zb2xlLmxvZygnQXBwIEhpZGUnKVxuXHRcdC8vIHRoaXMuc3RvcExvY2F0aW9uUG9sbGluZygpXG5cdH0sXG5cdG9uVW5sb2FkKCkge1xuXHRcdGlmICh0aGlzLnR0cykge1xuXHRcdFx0dGhpcy50dHMuc3RvcCgpXG5cdFx0XHR0aGlzLnR0cy5zaHV0ZG93bigpXG5cdFx0fVxuXHRcdHRoaXMuc3RvcExvY2F0aW9uUG9sbGluZygpXG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHRpbml0VFRTKCkge1xuXHRcdFx0aWYgKHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtICE9PSAnYW5kcm9pZCcpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ+S7heaUr+aMgeWuieWNkycpXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHQvLyDlr7zlhaXlronljZPljp/nlJ/nsbtcblx0XHRcdFx0Y29uc3QgVGV4dFRvU3BlZWNoID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKCdhbmRyb2lkLnNwZWVjaC50dHMuVGV4dFRvU3BlZWNoJylcblx0XHRcdFx0Y29uc3QgTG9jYWxlID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKCdqYXZhLnV0aWwuTG9jYWxlJylcblxuXHRcdFx0XHQvLyDliJvlu7pUVFNcblx0XHRcdFx0dGhpcy50dHMgPSBuZXcgVGV4dFRvU3BlZWNoKHBsdXMuYW5kcm9pZC5ydW50aW1lTWFpbkFjdGl2aXR5KCksIHtcblx0XHRcdFx0XHRvbkluaXQ6IChzdGF0dXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChzdGF0dXMgPT0gMCkge1xuXHRcdFx0XHRcdFx0XHQvLyDorr7nva7kuK3mlodcblx0XHRcdFx0XHRcdFx0dGhpcy50dHMuc2V0TGFuZ3VhZ2UoTG9jYWxlLkNISU5BKVxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn6K+t6Z+z5Yid5aeL5YyW5oiQ5YqfJylcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKCfliJ3lp4vljJblpLHotKUnLCBlKVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0c3BlYWsodGV4dCkge1xuXHRcdFx0aWYgKCF0aGlzLnR0cykge1xuXHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHR0aXRsZTogJ+ivremfs+acquWHhuWkh+WlvScsXG5cdFx0XHRcdFx0aWNvbjogJ25vbmUnXG5cdFx0XHRcdH0pXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHQvLyDlronljZPljp/nlJ/mkq3miqXvvIhRVUVVRV9GTFVTSCA9IOeri+WNs+aSreaKpe+8jOaJk+aWreS4iuS4gOadoe+8iVxuXHRcdFx0XHR0aGlzLnR0cy5zcGVhayh0ZXh0LCAwLCBudWxsKVxuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKCfmkq3miqXlpLHotKUnLCBlcnIpXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRpbml0SlB1c2goKSB7XG5cdFx0XHRjb25zb2xlLmxvZygn5byA5aeL5Yid5aeL5YyW5p6B5YWJ5o6o6YCBLi4uJylcblxuXHRcdFx0bGV0IGpwdXNoTW9kdWxlID0gbnVsbFxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0anB1c2hNb2R1bGUgPSB1bmkucmVxdWlyZU5hdGl2ZVBsdWdpbignSkctSlB1c2gnKVxuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKCfliqDovb3mnoHlhYnmjqjpgIHmj5Lku7blpLHotKU6JywgZSlcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHR9XG5cdFx0XHRpZiAoIWpwdXNoTW9kdWxlKSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ+aegeWFieaOqOmAgeaPkuS7tuacquaJvuWIsCcpXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0fVxuXHRcdFx0dGhpcy5qcHVzaE1vZHVsZSA9IGpwdXNoTW9kdWxlXG5cdFx0XHRjb25zb2xlLmxvZygn5p6B5YWJ5o6o6YCB5o+S5Lu25Yqg6L295oiQ5Yqf77yM5qih5Z2XOicsIHR5cGVvZiBqcHVzaE1vZHVsZSlcblx0XHRcdGNvbnNvbGUubG9nKCfmqKHlnZfmlrnms5U6JywgT2JqZWN0LmtleXMoanB1c2hNb2R1bGUpKVxuXG5cdFx0XHRpZiAodHlwZW9mIGpwdXNoTW9kdWxlLmluaXRKUHVzaFNlcnZpY2UgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0anB1c2hNb2R1bGUuaW5pdEpQdXNoU2VydmljZSgpXG5cdFx0XHRcdGNvbnNvbGUubG9nKCfmnoHlhYnmjqjpgIFpbml0SlB1c2hTZXJ2aWNl6LCD55So5oiQ5YqfJylcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ2pwdXNoTW9kdWxlLmluaXRKUHVzaFNlcnZpY2Ug5LiN5piv5Ye95pWw77yM5b2T5YmN5pa55rOVOicsIHR5cGVvZiBqcHVzaE1vZHVsZS5pbml0SlB1c2hTZXJ2aWNlKVxuXHRcdFx0XHRyZXR1cm5cblx0XHRcdH1cblxuXHRcdFx0aWYgKHR5cGVvZiBqcHVzaE1vZHVsZS5zZXRMb2dnZXJFbmFibGUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0anB1c2hNb2R1bGUuc2V0TG9nZ2VyRW5hYmxlKHRydWUpXG5cdFx0XHR9XG5cdFx0XHRjb25zb2xlLmxvZygn5p6B5YWJ5o6o6YCB5Yid5aeL5YyW5a6M5oiQ77yM6K6+572u55uR5ZCs5ZmoLi4uJylcblx0XHRcdHRoaXMuc2V0dXBKUHVzaExpc3RlbmVycygpXG5cdFx0XHR0aGlzLmdldFJlZ2lzdHJhdGlvbklEKClcblxuXHRcdH0sXG5cblx0XHRzZXR1cEpQdXNoTGlzdGVuZXJzKCkge1xuXHRcdFx0dmFyIHRoYXQgPSB0aGlzXG5cdFx0XHRpZiAoIXRoaXMuanB1c2hNb2R1bGUpIHJldHVyblxuXG5cdFx0XHQvLyDnm5HlkKzov57mjqXnirbmgIFcblx0XHRcdHRoaXMuanB1c2hNb2R1bGUuYWRkQ29ubmVjdEV2ZW50TGlzdGVuZXIoKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZygn5p6B5YWJ6L+e5o6l54q25oCBOicsIHJlc3VsdC5jb25uZWN0RW5hYmxlKVxuXHRcdFx0fSlcblxuXHRcdFx0Ly8g55uR5ZCs6YCa55+lXG5cdFx0XHR0aGlzLmpwdXNoTW9kdWxlLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKChyZXN1bHQpID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ+aUtuWIsOmAmuefpTonLCBKU09OLnN0cmluZ2lmeShyZXN1bHQpKVxuXHRcdFx0XHR0aGF0LnNwZWFrKHJlc3VsdC5jb250ZW50IHx8ICcnKVxuXHRcdFx0XHRjb25zdCBub3RpZmljYXRpb25FdmVudFR5cGUgPSByZXN1bHQubm90aWZpY2F0aW9uRXZlbnRUeXBlXG5cdFx0XHRcdC8vIG5vdGlmaWNhdGlvbk9wZW5lZCA9IOeCueWHu+mAmuefpVxuXHRcdFx0XHRpZiAobm90aWZpY2F0aW9uRXZlbnRUeXBlID09PSAnbm90aWZpY2F0aW9uT3BlbmVkJykge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfpgJrnn6Xooqvngrnlh7snLCByZXN1bHQuZXh0cmFzKVxuXHRcdFx0XHRcdGNvbnN0IGV4dHJhcyA9IHJlc3VsdC5leHRyYXMgPyByZXN1bHQuZXh0cmFzIDoge31cblx0XHRcdFx0XHRpZiAoZXh0cmFzLnR5cGUgPT09ICduZXdfb3JkZXInICYmIGV4dHJhcy5vcmRlcklkKSB7XG5cdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0XHRcdHVybDogJy9wYWdlcy9vcmRlci1kZXRhaWwvb3JkZXItZGV0YWlsP2lkPScgKyBleHRyYXMub3JkZXJJZFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dW5pLnN3aXRjaFRhYih7XG5cdFx0XHRcdFx0XHRcdHVybDogJy9wYWdlcy9pbmRleC9pbmRleCdcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0sXG5cblx0XHRnZXRSZWdpc3RyYXRpb25JRCgpIHtcblx0XHRcdGlmICghdGhpcy5qcHVzaE1vZHVsZSkge1xuXHRcdFx0XHRjb25zb2xlLmxvZygnSlB1c2jmqKHlnZfmnKrliJ3lp4vljJbvvIzml6Dms5Xojrflj5ZSZWdpc3RyYXRpb25JRCcpXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0fVxuXHRcdFx0Y29uc29sZS5sb2coJ+W8gOWni+iOt+WPlkpQdXNoIFJlZ2lzdHJhdGlvbklELi4uJylcblx0XHRcdHRoaXMuanB1c2hNb2R1bGUuZ2V0UmVnaXN0cmF0aW9uSUQoKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZygnSlB1c2ggZ2V0UmVnaXN0cmF0aW9uSUQgcmVzdWx0OicsIEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpXG5cdFx0XHRcdGlmIChyZXN1bHQgJiYgcmVzdWx0LnJlZ2lzdGVySUQpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnSlB1c2ggUmVnaXN0cmF0aW9uSUTojrflj5bmiJDlip86JywgcmVzdWx0LnJlZ2lzdGVySUQpXG5cdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdqcHVzaF9yZWdpc3RyYXRpb25faWQnLCByZXN1bHQucmVnaXN0ZXJJRClcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnSlB1c2ggUmVnaXN0cmF0aW9uSUTojrflj5blpLHotKXvvIzlsJ3or5Xph43mlrDojrflj5YnKVxuXHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5nZXRSZWdpc3RyYXRpb25JRCgpXG5cdFx0XHRcdFx0fSwgMjAwMClcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9LFxuXG5cdFx0YmluZEpQdXNoQWxpYXMoKSB7XG5cdFx0XHRpZiAoIXRoaXMudG9rZW4pIHJldHVyblxuXHRcdFx0aWYgKCF0aGlzLmpwdXNoTW9kdWxlKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKCdKUHVzaOacquWIneWni+WMlu+8jOW7tui/n+iuvue9ruWIq+WQjScpXG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuYmluZEpQdXNoQWxpYXMoKVxuXHRcdFx0XHR9LCAxMDAwKVxuXHRcdFx0XHRyZXR1cm5cblx0XHRcdH1cblx0XHRcdC8vIOS8mOWFiOS7jnN0b3Jl6I635Y+W77yM5aaC5p6c5Li656m65YiZ5LuO5pys5Zyw5a2Y5YKo6I635Y+WXG5cdFx0XHRsZXQgdGVsZXBob25lID0gdGhpcy4kc3RvcmUuc3RhdGUudXNlckluZm8/LnRlbGVwaG9uZSB8fCAnJ1xuXHRcdFx0aWYgKCF0ZWxlcGhvbmUpIHtcblx0XHRcdFx0dGVsZXBob25lID0gdW5pLmdldFN0b3JhZ2VTeW5jKCd1c2VySW5mbycpPy50ZWxlcGhvbmUgfHwgJydcblx0XHRcdH1cblx0XHRcdGlmICghdGVsZXBob25lKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKCfnlKjmiLfmiYvmnLrlj7fkuLrnqbrvvIzlu7bov5/ojrflj5YuLi4nKVxuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmJpbmRKUHVzaEFsaWFzKClcblx0XHRcdFx0fSwgMjAwMClcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHR9XG5cdFx0XHRjb25zdCBhbGlhcyA9IG1kNSh0ZWxlcGhvbmUpXG5cdFx0XHRjb25zb2xlLmxvZygn6K6+572u5p6B5YWJ5Yir5ZCNOicsIGFsaWFzKVxuXHRcdFx0dGhpcy5qcHVzaE1vZHVsZS5zZXRBbGlhcyh7XG5cdFx0XHRcdGFsaWFzOiBhbGlhcyxcblx0XHRcdFx0c2VxdWVuY2U6IERhdGUubm93KClcblx0XHRcdH0sIChyZXN1bHQpID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ+iuvue9ruWIq+WQjee7k+aenDonLCBKU09OLnN0cmluZ2lmeShyZXN1bHQpKVxuXHRcdFx0XHRpZiAocmVzdWx0ICYmIChyZXN1bHQuY29kZSA9PT0gMCB8fCByZXN1bHQuZXJyQ29kZSA9PT0gMCkpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygn6K6+572u5p6B5YWJ5Yir5ZCN5oiQ5YqfJylcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygn6K6+572u5p6B5YWJ5Yir5ZCN5aSx6LSlJylcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9LFxuXG5cdFx0ZGVsZXRlSlB1c2hBbGlhcygpIHtcblx0XHRcdGlmICghdGhpcy5qcHVzaE1vZHVsZSkgcmV0dXJuXG5cdFx0XHR0aGlzLmpwdXNoTW9kdWxlLmRlbGV0ZUFsaWFzKHtcblx0XHRcdFx0c2VxdWVuY2U6IERhdGUubm93KClcblx0XHRcdH0sIChyZXN1bHQpID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ+WIoOmZpOaegeWFieWIq+WQjTonLCBKU09OLnN0cmluZ2lmeShyZXN1bHQpKVxuXHRcdFx0fSlcblx0XHR9LFxuXG5cdFx0Y2hlY2tBbmRTdGFydExvY2F0aW9uUG9sbGluZygpIHtcblx0XHRcdGlmICghdGhpcy50b2tlbikgcmV0dXJuXG5cdFx0XHR1bmkuZ2V0TG9jYXRpb24oe1xuXHRcdFx0XHR0eXBlOiAnZ2NqMDInLFxuXHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ+iOt+WPluWumuS9jeadg+mZkOaIkOWKn++8jOW8gOWni+WumuaXtuabtOaWsOS9jee9ricpXG5cdFx0XHRcdFx0dGhpcy5zdGFydExvY2F0aW9uUG9sbGluZygpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygn6I635Y+W5a6a5L2N5p2D6ZmQ5aSx6LSlOicsIGVyci5lcnJNc2cpXG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogJ+mcgOimgeWumuS9jeadg+mZkOaJjeiDveabtOaWsOS9jee9ricsXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0sXG5cblx0XHRzdGFydExvY2F0aW9uUG9sbGluZygpIHtcblx0XHRcdHRoaXMuc3RvcExvY2F0aW9uUG9sbGluZygpXG5cdFx0XHR0aGlzLnVwZGF0ZUxvY2F0aW9uKClcblx0XHRcdHRoaXMubG9jYXRpb25UaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcblx0XHRcdFx0dGhpcy51cGRhdGVMb2NhdGlvbigpXG5cdFx0XHR9LCA2MDAwMClcblx0XHR9LFxuXG5cdFx0c3RvcExvY2F0aW9uUG9sbGluZygpIHtcblx0XHRcdGlmICh0aGlzLmxvY2F0aW9uVGltZXIpIHtcblx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLmxvY2F0aW9uVGltZXIpXG5cdFx0XHRcdHRoaXMubG9jYXRpb25UaW1lciA9IG51bGxcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0dXBkYXRlTG9jYXRpb24oKSB7XG5cdFx0XHRpZiAoIXRoaXMudG9rZW4pIHJldHVyblxuXHRcdFx0dmFyIHRoYXQgPSB0aGlzO1xuXHRcdFx0dW5pLmdldExvY2F0aW9uKHtcblx0XHRcdFx0dHlwZTogJ2djajAyJyxcblx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCflrprml7bmm7TmlrDkvY3nva46JywgcmVzLmxhdGl0dWRlLCByZXMubG9uZ2l0dWRlKVxuXHRcdFx0XHRcdHRoYXQuJHUuYXBpLnVwZGF0ZUxvY2F0aW9uKHtcblx0XHRcdFx0XHRcdGxhdGl0dWRlOiByZXMubGF0aXR1ZGUsXG5cdFx0XHRcdFx0XHRsb25naXR1ZGU6IHJlcy5sb25naXR1ZGVcblx0XHRcdFx0XHR9KS50aGVuKHJlcyA9PiB7XG5cdFx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn5pu05paw5L2N572u5oiQ5YqfJylcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCfmm7TmlrDkvY3nva7lpLHotKUnKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmNhdGNoKGVyciA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn5pu05paw5L2N572u6K+35rGC5aSx6LSlOicsIGVycilcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ+iOt+WPluS9jee9ruWksei0pTonLCBlcnIuZXJyTXNnKVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0sXG5cblx0XHRjaGVja0FwcFVwZGF0ZSgpIHtcblx0XHRcdHBsdXMucnVudGltZS5nZXRQcm9wZXJ0eShwbHVzLnJ1bnRpbWUuYXBwaWQsIChpbmYpID0+IHtcblx0XHRcdFx0Y29uc3QgY3VycmVudFZlcnNpb24gPSBpbmYudmVyc2lvbkNvZGVcblx0XHRcdFx0dGhpcy4kdS5hcGkuZ2V0QXBpVmVyc2lvbih7IHR5cGU6IDAgfSkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwICYmIHJlcy5kYXRhKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBsYXRlc3RWZXJzaW9uID0gcmVzLmRhdGEudmVyc2lvbk51bVxuXHRcdFx0XHRcdFx0aWYgKGxhdGVzdFZlcnNpb24gPiBjdXJyZW50VmVyc2lvbikge1xuXHRcdFx0XHRcdFx0XHRpZiAocmVzLmRhdGEuaXNGb3JjZSA9PT0gMSkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc2hvd0ZvcmNlVXBkYXRlRGlhbG9nKHJlcy5kYXRhLmZpbGVVcmwsIHJlcy5kYXRhLnZlcnNpb25OdW0pXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zaG93T3B0aW9uYWxVcGRhdGVEaWFsb2cocmVzLmRhdGEuZmlsZVVybCwgcmVzLmRhdGEudmVyc2lvbk51bSlcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0fSxcblxuXHRcdHNob3dGb3JjZVVwZGF0ZURpYWxvZyhmaWxlVXJsLCB2ZXJzaW9uKSB7XG5cdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0dGl0bGU6ICfniYjmnKzmm7TmlrAnLFxuXHRcdFx0XHRjb250ZW50OiBg5qOA5rWL5Yiw5paw54mI5pysJHt2ZXJzaW9ufe+8jOivt+abtOaWsOWQjue7p+e7reS9v+eUqGAsXG5cdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRjb25maXJtVGV4dDogJ+eri+WNs+abtOaWsCcsXG5cdFx0XHRcdHN1Y2Nlc3M6ICgpID0+IHtcblx0XHRcdFx0XHRwbHVzLnJ1bnRpbWUub3BlblVSTChmaWxlVXJsKVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0sXG5cblx0XHRzaG93T3B0aW9uYWxVcGRhdGVEaWFsb2coZmlsZVVybCwgdmVyc2lvbikge1xuXHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdHRpdGxlOiAn54mI5pys5pu05pawJyxcblx0XHRcdFx0Y29udGVudDogYOajgOa1i+WIsOaWsOeJiOacrCR7dmVyc2lvbn3vvIzmmK/lkKbmm7TmlrDvvJ9gLFxuXHRcdFx0XHRjb25maXJtVGV4dDogJ+abtOaWsCcsXG5cdFx0XHRcdGNhbmNlbFRleHQ6ICfnqI3lkI4nLFxuXHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHJlcy5jb25maXJtKSB7XG5cdFx0XHRcdFx0XHRwbHVzLnJ1bnRpbWUub3BlblVSTChmaWxlVXJsKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9XG5cdH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///177\n"); |
| | | |
| | | /***/ }), |
| | | /* 178 */ |